From 2b8671fba63ed5e4d6266c7a6c1a7b89ed914341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Loloum?= Date: Mon, 8 Jul 2024 10:14:42 +0200 Subject: [PATCH 01/86] oacc : d_vect + i_vect + d_csr --- openacc/Makefile | 48 ++ openacc/impl/psb_d_oacc_csr_vect_mv.F90 | 61 ++ openacc/psb_d_oacc_csr_mat_mod.F90 | 185 +++++ openacc/psb_d_oacc_vect_mod.F90 | 966 ++++++++++++++++++++++++ openacc/psb_i_oacc_vect_mod.F90 | 455 +++++++++++ openacc/psb_oacc_mod.F90 | 7 + test/openacc/Makefile | 53 ++ test/openacc/test.F90 | 617 +++++++++++++++ test/openacc/timers.c | 97 +++ test/openacc/vectoacc.F90 | 85 +++ 10 files changed, 2574 insertions(+) create mode 100644 openacc/Makefile create mode 100644 openacc/impl/psb_d_oacc_csr_vect_mv.F90 create mode 100644 openacc/psb_d_oacc_csr_mat_mod.F90 create mode 100644 openacc/psb_d_oacc_vect_mod.F90 create mode 100644 openacc/psb_i_oacc_vect_mod.F90 create mode 100644 openacc/psb_oacc_mod.F90 create mode 100644 test/openacc/Makefile create mode 100644 test/openacc/test.F90 create mode 100644 test/openacc/timers.c create mode 100644 test/openacc/vectoacc.F90 diff --git a/openacc/Makefile b/openacc/Makefile new file mode 100644 index 00000000..3590249c --- /dev/null +++ b/openacc/Makefile @@ -0,0 +1,48 @@ +.SUFFIXES: +.SUFFIXES: .F90 .f90 .o .s .c + +# Compilers and flags +CC=mpicc +FC=mpif90 +FCOPT=-O0 -march=native +OFFLOAD=-fopenacc -foffload=nvptx-none="-march=sm_70" + +# Directories +LIBDIR=../lib +INCDIR=../include +MODDIR=../modules +IMPLDIR=./impl # Adding the impl directory + +# Include and library paths +INCLUDES=-I$(LIBDIR) -I$(INCDIR) -I$(MODDIR) -I$(IMPLDIR) +LIBS=-L$(LIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lopenblas -lmetis + +# Source files +FOBJS= psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ + psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o \ + impl/psb_d_oacc_csr_vect_mv.o + +# Library name +LIBNAME=libpsb_openacc.a + +# Rules +all: $(LIBNAME) + +$(LIBNAME): $(FOBJS) + ar cr $(LIBNAME) $(FOBJS) + /bin/cp -p $(LIBNAME) $(LIBDIR) + +clean: + /bin/rm -fr *.o $(LIBNAME) *.mod impl/*.o + +.f90.o: + $(FC) $(FCOPT) $(OFFLOAD) $(INCLUDES) -c $< -o $@ + +.c.o: + $(CC) -c $< -o $@ + +.F90.o: + $(FC) $(FCOPT) $(OFFLOAD) $(INCLUDES) -c $< -o $@ + +.F90.s: + $(FC) $(FCOPT) $(INCLUDES) -c -S $< -o $@ diff --git a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..f0394591 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 @@ -0,0 +1,61 @@ +subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_vect_mv + implicit none + + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n /= size(x%v)) .or. (n /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + +contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + +end subroutine psb_d_oacc_csr_vect_mv diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..c6b7e3d0 --- /dev/null +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -0,0 +1,185 @@ +module psb_d_oacc_csr_mat_mod + + use iso_c_binding + use psb_d_mat_mod + use psb_d_oacc_vect_mod + use oaccsparse_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_csr_sparse_mat) :: psb_d_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, pass(a) :: all => d_oacc_csr_all + procedure, pass(a) :: is_host => d_oacc_csr_is_host + procedure, pass(a) :: is_sync => d_oacc_csr_is_sync + procedure, pass(a) :: is_dev => d_oacc_csr_is_dev + procedure, pass(a) :: set_host => d_oacc_csr_set_host + procedure, pass(a) :: set_sync => d_oacc_csr_set_sync + procedure, pass(a) :: set_dev => d_oacc_csr_set_dev + procedure, pass(a) :: sync_space => d_oacc_csr_sync_space + procedure, pass(a) :: sync => d_oacc_csr_sync + procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv + end type psb_d_oacc_csr_sparse_mat + + interface + subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_vect_mv + end interface + +contains + + subroutine d_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_d_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(a%val)) then + !$acc exit data delete(a%val) finalize + deallocate(a%val, stat=info) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) finalize + deallocate(a%ja, stat=info) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) finalize + deallocate(a%irp, stat=info) + end if + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_space() + end subroutine d_oacc_csr_all + + function d_oacc_csr_is_host(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_csr_is_host + + function d_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_csr_is_sync + + function d_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_csr_is_dev + + subroutine d_oacc_csr_set_host(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_csr_set_host + + subroutine d_oacc_csr_set_sync(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_csr_set_sync + + subroutine d_oacc_csr_set_dev(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_csr_set_dev + + subroutine d_oacc_csr_sync_space(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + if (allocated(a%val)) then + call d_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irp)) then + call i_oacc_create_dev(a%irp) + end if + contains + subroutine d_oacc_create_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine d_oacc_create_dev + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + end subroutine d_oacc_csr_sync_space + + subroutine d_oacc_csr_sync(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call d_oacc_csr_to_host(a%val) + call i_oacc_csr_to_host(a%ja) + call i_oacc_csr_to_host(a%irp) + else if (a%is_host()) then + call d_oacc_csr_to_dev(a%val) + call i_oacc_csr_to_dev(a%ja) + call i_oacc_csr_to_dev(a%irp) + end if + call tmpa%set_sync() + end subroutine d_oacc_csr_sync + + subroutine d_oacc_csr_to_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine d_oacc_csr_to_dev + + subroutine d_oacc_csr_to_host(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine d_oacc_csr_to_host + + subroutine i_oacc_csr_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_csr_to_dev + + subroutine i_oacc_csr_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_csr_to_host + + +end module psb_d_oacc_csr_mat_mod + diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 new file mode 100644 index 00000000..ac5428f3 --- /dev/null +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -0,0 +1,966 @@ +module psb_d_oacc_vect_mod + use iso_c_binding + use psb_const_mod + use psb_error_mod + use psb_d_vect_mod + use psb_i_oacc_vect_mod + use psb_i_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_base_vect_type) :: psb_d_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => d_oacc_get_nrows + procedure, nopass :: get_fmt => d_oacc_get_fmt + + procedure, pass(x) :: all => d_oacc_vect_all + procedure, pass(x) :: zero => d_oacc_zero + procedure, pass(x) :: asb_m => d_oacc_asb_m + procedure, pass(x) :: sync => d_oacc_sync + procedure, pass(x) :: sync_space => d_oacc_sync_space + procedure, pass(x) :: bld_x => d_oacc_bld_x + procedure, pass(x) :: bld_mn => d_oacc_bld_mn + procedure, pass(x) :: free => d_oacc_vect_free + procedure, pass(x) :: ins_a => d_oacc_ins_a + procedure, pass(x) :: ins_v => d_oacc_ins_v + procedure, pass(x) :: is_host => d_oacc_is_host + procedure, pass(x) :: is_dev => d_oacc_is_dev + procedure, pass(x) :: is_sync => d_oacc_is_sync + procedure, pass(x) :: set_host => d_oacc_set_host + procedure, pass(x) :: set_dev => d_oacc_set_dev + procedure, pass(x) :: set_sync => d_oacc_set_sync + procedure, pass(x) :: set_scal => d_oacc_set_scal + + procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf + procedure, pass(y) :: sctb => d_oacc_sctb + procedure, pass(y) :: sctb_x => d_oacc_sctb_x + procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf + + procedure, pass(x) :: get_size => oacc_get_size + procedure, pass(x) :: dot_v => d_oacc_vect_dot + procedure, pass(x) :: dot_a => d_oacc_dot_a + procedure, pass(y) :: axpby_v => d_oacc_axpby_v + procedure, pass(y) :: axpby_a => d_oacc_axpby_a + procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz + procedure, pass(y) :: mlt_v => d_oacc_mlt_v + procedure, pass(y) :: mlt_a => d_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 + procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 + procedure, pass(x) :: scal => d_oacc_scal + procedure, pass(x) :: nrm2 => d_oacc_nrm2 + procedure, pass(x) :: amax => d_oacc_amax + procedure, pass(x) :: asum => d_oacc_asum + procedure, pass(x) :: absval1 => d_oacc_absval1 + procedure, pass(x) :: absval2 => d_oacc_absval2 + + end type psb_d_vect_oacc + + real(psb_dpk_), allocatable :: v1(:),v2(:),p(:) + +contains + + subroutine d_oacc_absval1(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n, i + + if (x%is_host()) call x%sync_space() + n = size(x%v) + !$acc parallel loop + do i = 1, n + x%v(i) = abs(x%v(i)) + end do + call x%set_dev() + end subroutine d_oacc_absval1 + + subroutine d_oacc_absval2(x, y) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_d_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + !$acc parallel loop + do i = 1, n + yy%v(i) = abs(x%v(i)) + end do + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_d_base_vect_type%absval(y) + end select + end subroutine d_oacc_absval2 + + + + subroutine d_oacc_scal(alpha, x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: alpha + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, size(x%v) + x%v(i) = alpha * x%v(i) + end do + call x%set_dev() + end subroutine d_oacc_scal + + function d_oacc_nrm2(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + x%v(i) * x%v(i) + end do + res = sqrt(sum) + end function d_oacc_nrm2 + + function d_oacc_amax(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: max_val + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (x%v(i) > max_val) max_val = x%v(i) + end do + res = max_val + end function d_oacc_amax + + function d_oacc_asum(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i)) + end do + res = sum + end function d_oacc_asum + + + subroutine d_oacc_mlt_v(x, y, info) + use psi_serial_mod + implicit none + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + type is (psb_d_base_vect_type) + if (y%is_dev()) call y%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select + end subroutine d_oacc_mlt_v + + subroutine d_oacc_mlt_a(x, y, info) + use psi_serial_mod + implicit none + real(psb_dpk_), intent(in) :: x(:) + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync_space() + !$acc parallel loop + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine d_oacc_mlt_a + + subroutine d_oacc_mlt_a_2(alpha, x, y, beta, z, info) + use psi_serial_mod + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(in) :: y(:) + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync_space() + !$acc parallel loop + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine d_oacc_mlt_a_2 + + subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psi_serial_mod + use psb_string_mod + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ + + conjgx_ = .false. + conjgy_ = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + + info = 0 + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync_space() + if (yy%is_host()) call yy%sync_space() + if ((beta /= dzero) .and. (z%is_host())) call z%sync_space() + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + end do + call z%set_dev() + class default + if (xx%is_dev()) call xx%sync_space() + if (yy%is_dev()) call yy%sync() + if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + end do + call z%set_host() + end select + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) + end do + call z%set_host() + end select + end subroutine d_oacc_mlt_v_2 + + + subroutine d_oacc_axpby_v(m, alpha, x, beta, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_d_vect_oacc) + if ((beta /= dzero) .and. y%is_host()) call y%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * xx%v(i) + beta * y%v(i) + end do + end if + call y%set_dev() + class default + if ((alpha /= dzero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + end subroutine d_oacc_axpby_v + + subroutine d_oacc_axpby_a(m, alpha, x, beta, y, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_dpk_), intent(in) :: x(:) + class(psb_d_vect_oacc), intent(inout) :: y + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= dzero) .and. (y%is_dev())) call y%sync_space() + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine d_oacc_axpby_a + + subroutine d_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + real(psb_dpk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_d_vect_oacc) + select type(yy => y) + class is (psb_d_vect_oacc) + select type(zz => z) + class is (psb_d_vect_oacc) + if ((beta /= dzero) .and. yy%is_host()) call yy%sync_space() + if ((delta /= dzero) .and. zz%is_host()) call zz%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine d_oacc_abgdxyz + + + subroutine d_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + real(psb_dpk_) :: beta + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info + + if (.not.allocated(y%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + end do + + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + end do + end select + end subroutine d_oacc_sctb_buf + + subroutine d_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + real(psb_dpk_) :: beta, x(:) + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info, ni + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'd_oacc_sctb_x') + return + end select + + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + + call y%set_dev() + end subroutine d_oacc_sctb_x + + + + subroutine d_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + real(psb_dpk_) :: beta, x(:) + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine d_oacc_sctb + + + subroutine d_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_d_vect_oacc) :: x + integer(psb_ipk_) :: info + + info = 0 + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'd_oacc_gthzbuf') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine d_oacc_gthzbuf + + subroutine d_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + real(psb_dpk_) :: y(:) + class(psb_d_vect_oacc):: x + integer(psb_ipk_) :: info + + info = 0 + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'd_oacc_gthzv_x') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine d_oacc_gthzv_x + + subroutine d_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_d_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_d_vect_oacc) + if (vval%is_host()) call vval%sync_space() + if (virl%is_host()) call virl%sync_space(info) + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync_space(info) + end select + select type(vval => val) + type is (psb_d_vect_oacc) + if (vval%is_dev()) call vval%sync_space() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine d_oacc_ins_v + + + + subroutine d_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + real(psb_dpk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync_space() + call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + !$acc update device(x%v) + + end subroutine d_oacc_ins_a + + + + subroutine d_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + !$acc update device(x%v) + + end subroutine d_oacc_bld_mn + + + subroutine d_oacc_bld_x(x, this) + use psb_base_mod + implicit none + real(psb_dpk_), intent(in) :: this(:) + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'd_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + + x%v(:) = this(:) + call x%set_host() + !$acc update device(x%v) + + end subroutine d_oacc_bld_x + + + subroutine d_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_d_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_d_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + end if + end subroutine d_oacc_asb_m + + + + subroutine d_oacc_set_scal(x, val, first, last) + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine d_oacc_set_scal + + + + subroutine d_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(dzero) + end subroutine d_oacc_zero + + function d_oacc_get_nrows(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function d_oacc_get_nrows + + function d_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "dOACC" + + end function d_oacc_get_fmt + + function d_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + real(psb_dpk_), external :: ddot + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + res = dzero + + select type(yy => y) + type is (psb_d_base_vect_type) + if (x%is_dev()) call x%sync() + res = ddot(n, x%v, 1, yy%v, 1) + type is (psb_d_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + + !$acc parallel loop reduction(+:res) present(x%v, yy%v) + do i = 1, n + res = res + x%v(i) * yy%v(i) + end do + !$acc end parallel loop + + class default + call x%sync() + res = y%dot(n, x%v) + end select + + end function d_oacc_vect_dot + + + + + function d_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + real(psb_dpk_), external :: ddot + + if (x%is_dev()) call x%sync() + res = ddot(n, y, 1, x%v, 1) + + end function d_oacc_dot_a + + ! subroutine d_oacc_set_vect(x,y) + ! implicit none + ! class(psb_d_vect_oacc), intent(inout) :: x + ! real(psb_dpk_), intent(in) :: y(:) + ! integer(psb_ipk_) :: info + + ! if (size(x%v) /= size(y)) then + ! call x%free(info) + ! call x%all(size(y),info) + ! end if + ! x%v(:) = y(:) + ! call x%set_host() + ! end subroutine d_oacc_set_vect + + subroutine d_oacc_to_dev(v) + implicit none + real(psb_dpk_) :: v(:) + !$acc update device(v) + end subroutine d_oacc_to_dev + + subroutine d_oacc_to_host(v) + implicit none + real(psb_dpk_) :: v(:) + !$acc update self(v) + end subroutine d_oacc_to_host + + subroutine d_oacc_sync_space(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + if (allocated(x%v)) then + call d_oacc_create_dev(x%v) + end if + contains + subroutine d_oacc_create_dev(v) + implicit none + real(psb_dpk_) :: v(:) + !$acc enter data copyin(v) + end subroutine d_oacc_create_dev + end subroutine d_oacc_sync_space + + subroutine d_oacc_sync(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + call d_oacc_to_host(x%v) + end if + if (x%is_host()) then + call d_oacc_to_dev(x%v) + end if + call x%set_sync() + end subroutine d_oacc_sync + + subroutine d_oacc_set_host(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine d_oacc_set_host + + subroutine d_oacc_set_dev(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine d_oacc_set_dev + + subroutine d_oacc_set_sync(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine d_oacc_set_sync + + function d_oacc_is_dev(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function d_oacc_is_dev + + function d_oacc_is_host(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function d_oacc_is_host + + function d_oacc_is_sync(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function d_oacc_is_sync + + subroutine d_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_d_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) then + call x%set_host() + !$acc enter data create(x%v) + call x%sync_space() + end if + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'd_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + end subroutine d_oacc_vect_all + + + subroutine d_oacc_vect_free(x, info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 + if (allocated(x%v)) then + !$acc exit data delete(x%v) finalize + deallocate(x%v, stat=info) + end if + + end subroutine d_oacc_vect_free + + function oacc_get_size(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + if (x%is_dev()) call x%sync() + res = size(x%v) + end function oacc_get_size + + + subroutine initialize(N) + integer(psb_ipk_) :: N + integer(psb_ipk_) :: i + allocate(v1(N),v2(N),p(N)) + !$acc enter data create(v1,v2,p) + !$acc parallel + !$acc loop + do i=1,n + v1(i) = i + v2(i) = n+i + end do + !$acc end parallel + end subroutine initialize + subroutine finalize_dev() + !$acc exit data delete(v1,v2,p) + end subroutine finalize_dev + subroutine finalize_host() + deallocate(v1,v2,p) + end subroutine finalize_host + subroutine to_dev() + !$acc update device(v1,v2) + end subroutine to_dev + subroutine to_host() + !$acc update self(v1,v2) + end subroutine to_host + function d_dot(N) result(res) + real(kind(1.d0)) :: res + integer(psb_ipk_) :: i,N + real(kind(1.d0)) :: t1,t2,t3 + res = 0.0d0 + !$acc parallel + !$acc loop reduction(+:res) + do i=1,N + res = res + v1(i) * v2(i) + end do + !$acc end parallel + + end function d_dot + function h_dot(N) result(res) + integer(psb_ipk_) :: i,N + real(kind(1.d0)) :: t1,t2,t3,res + res = 0.0d0 + do i=1,N + res = res + v1(i) * v2(i) + end do + end function h_dot + +end module psb_d_oacc_vect_mod \ No newline at end of file diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 new file mode 100644 index 00000000..70fc325e --- /dev/null +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -0,0 +1,455 @@ +module psb_i_oacc_vect_mod + use iso_c_binding + use psb_const_mod + use psb_error_mod + use psb_i_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_i_base_vect_type) :: psb_i_vect_oacc + integer :: state = is_host + contains + procedure, pass(x) :: get_nrows => i_oacc_get_nrows + procedure, nopass :: get_fmt => i_oacc_get_fmt + + procedure, pass(x) :: all => i_oacc_all + procedure, pass(x) :: zero => i_oacc_zero + procedure, pass(x) :: asb_m => i_oacc_asb_m + procedure, pass(x) :: sync => i_oacc_sync + procedure, pass(x) :: sync_space => i_oacc_sync_space + procedure, pass(x) :: bld_x => i_oacc_bld_x + procedure, pass(x) :: bld_mn => i_oacc_bld_mn + procedure, pass(x) :: free => i_oacc_free + procedure, pass(x) :: ins_a => i_oacc_ins_a + procedure, pass(x) :: ins_v => i_oacc_ins_v + procedure, pass(x) :: is_host => i_oacc_is_host + procedure, pass(x) :: is_dev => i_oacc_is_dev + procedure, pass(x) :: is_sync => i_oacc_is_sync + procedure, pass(x) :: set_host => i_oacc_set_host + procedure, pass(x) :: set_dev => i_oacc_set_dev + procedure, pass(x) :: set_sync => i_oacc_set_sync + procedure, pass(x) :: set_scal => i_oacc_set_scal + procedure, pass(x) :: gthzv_x => i_oacc_gthzv_x + procedure, pass(y) :: sctb => i_oacc_sctb + procedure, pass(y) :: sctb_x => i_oacc_sctb_x + procedure, pass(x) :: gthzbuf => i_oacc_gthzbuf + procedure, pass(y) :: sctb_buf => i_oacc_sctb_buf + + final :: i_oacc_vect_finalize + end type psb_i_vect_oacc + + public :: psb_i_vect_oacc_ + private :: constructor + interface psb_i_vect_oacc_ + module procedure constructor + end interface psb_i_vect_oacc_ + +contains + + function constructor(x) result(this) + integer(psb_ipk_) :: x(:) + type(psb_i_vect_oacc) :: this + integer(psb_ipk_) :: info + + this%v = x + call this%asb(size(x), info) + end function constructor + + + subroutine i_oacc_gthzv_x(i, n, idx, x, y) + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_ipk_) :: y(:) + class(psb_i_vect_oacc) :: x + integer :: info + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine i_oacc_gthzv_x + + subroutine i_oacc_gthzbuf(i, n, idx, x) + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_i_vect_oacc) :: x + integer :: info + + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine i_oacc_gthzbuf + + subroutine i_oacc_sctb(n, idx, x, beta, y) + implicit none + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: beta, x(:) + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info + integer :: i + + if (n == 0) return + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + end subroutine i_oacc_sctb + + subroutine i_oacc_sctb_x(i, n, idx, x, beta, y) + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_ipk_) :: beta, x(:) + class(psb_i_vect_oacc) :: y + integer :: info + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + if (y%is_host()) call y%sync_space(info) + + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + x(i) + end do + + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + end select + end subroutine i_oacc_sctb_x + + subroutine i_oacc_sctb_buf(i, n, idx, beta, y) + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_ipk_) :: beta + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info + + if (.not.allocated(y%v)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%v(i) + end do + end subroutine i_oacc_sctb_buf + + subroutine i_oacc_set_host(x) + class(psb_i_vect_oacc), intent(inout) :: x + x%state = is_host + end subroutine i_oacc_set_host + + subroutine i_oacc_set_sync(x) + class(psb_i_vect_oacc), intent(inout) :: x + x%state = is_sync + end subroutine i_oacc_set_sync + + subroutine i_oacc_set_dev(x) + class(psb_i_vect_oacc), intent(inout) :: x + x%state = is_dev + end subroutine i_oacc_set_dev + + subroutine i_oacc_set_scal(x, val, first, last) + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + + first_ = 1 + last_ = size(x%v) + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(size(x%v), last) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + call x%set_dev() + end subroutine i_oacc_set_scal + + function i_oacc_is_host(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function i_oacc_is_host + + function i_oacc_is_dev(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function i_oacc_is_dev + + function i_oacc_is_sync(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function i_oacc_is_sync + + subroutine i_oacc_free(x, info) + use psb_error_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(x%v)) deallocate(x%v, stat=info) + if (info /= 0) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, 'i_oacc_free') + end if + call x%set_sync() + end subroutine i_oacc_free + + subroutine i_oacc_ins_a(n, irl, val, dupl, x, info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + integer(psb_ipk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync() + call x%psb_i_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + end subroutine i_oacc_ins_a + + subroutine i_oacc_ins_v(n, irl, val, dupl, x, info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_i_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + class is (psb_i_vect_oacc) + select type(vval => val) + class is (psb_i_vect_oacc) + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() + ! Add the OpenACC kernel call here if needed + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + if (irl%is_dev()) call irl%sync() + if (val%is_dev()) call val%sync() + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info,'i_oacc_ins_v') + return + end if + end subroutine i_oacc_ins_v + + subroutine i_oacc_bld_x(x, this) + use psb_error_mod + implicit none + integer(psb_ipk_), intent(in) :: this(:) + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'i_oacc_bld_x', i_err = (/size(this), izero, izero, izero, izero/)) + end if + x%v(:) = this(:) + call x%set_host() + call x%sync() + end subroutine i_oacc_bld_x + + subroutine i_oacc_bld_mn(x, n) + use psb_error_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'i_oacc_bld_mn', i_err = (/n, n, n, n, n/)) + end if + end subroutine i_oacc_bld_mn + + subroutine i_oacc_sync(x) + use psb_error_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n, info + + info = 0 + if (x%is_host()) then + n = size(x%v) + if (.not.allocated(x%v)) then + write(*, *) 'Incoherent situation : x%v not allocated' + call psb_realloc(n, x%v, info) + end if + if ((n > size(x%v)) .or. (n > x%get_nrows())) then + write(*, *) 'Incoherent situation : sizes', n, size(x%v), x%get_nrows() + call psb_realloc(n, x%v, info) + end if + !$acc update device(x%v) + else if (x%is_dev()) then + n = size(x%v) + if (.not.allocated(x%v)) then + write(*, *) 'Incoherent situation : x%v not allocated' + call psb_realloc(n, x%v, info) + end if + !$acc update self(x%v) + end if + if (info == 0) call x%set_sync() + if (info /= 0) then + info = psb_err_internal_error_ + call psb_errpush(info, 'i_oacc_sync') + end if + end subroutine i_oacc_sync + + subroutine i_oacc_sync_space(x, info) + use psb_error_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nh, nd + + info = 0 + if (x%is_dev()) then + nh = size(x%v) + nd = nh + if (nh < nd) then + call psb_realloc(nd, x%v, info) + end if + else + nh = size(x%v) + nd = nh + if (nh < nd) then + call psb_realloc(nd, x%v, info) + end if + end if + end subroutine i_oacc_sync_space + + function i_oacc_get_nrows(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + res = 0 + if (allocated(x%v)) res = size(x%v) + end function i_oacc_get_nrows + + function i_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'iOACC' + end function i_oacc_get_fmt + + subroutine i_oacc_all(n, x, info) + use psb_error_mod + implicit none + class(psb_i_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) call x%set_host() + if (info == 0) call x%sync_space(info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'i_oacc_all', i_err=(/n, n, n, n, n/)) + end if + end subroutine i_oacc_all + + subroutine i_oacc_zero(x) + use psb_error_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + ! Ensure zeroing on the GPU side + call x%set_dev() + x%v = 0 + !$acc update device(x%v) + end subroutine i_oacc_zero + + subroutine i_oacc_asb_m(n, x, info) + use psb_error_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nh, nd + + info = 0 + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_i_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space(info) + call x%set_host() + end if + else + nh = size(x%v) + if (nh < n) then + call x%psb_i_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space(info) + call x%set_host() + end if + end if + end subroutine i_oacc_asb_m + + subroutine i_oacc_vect_finalize(x) + use psi_serial_mod + use psb_realloc_mod + implicit none + type(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + info = 0 + call x%free(info) + end subroutine i_oacc_vect_finalize + +end module psb_i_oacc_vect_mod + + + + + + \ No newline at end of file diff --git a/openacc/psb_oacc_mod.F90 b/openacc/psb_oacc_mod.F90 new file mode 100644 index 00000000..ce5e85f9 --- /dev/null +++ b/openacc/psb_oacc_mod.F90 @@ -0,0 +1,7 @@ +module psb_oacc_mod + use psb_const_mod + + use psb_d_oacc_vect_mod + use psb_d_oacc_csr_mat_mod + +end module psb_oacc_mod \ No newline at end of file diff --git a/test/openacc/Makefile b/test/openacc/Makefile new file mode 100644 index 00000000..6df14d42 --- /dev/null +++ b/test/openacc/Makefile @@ -0,0 +1,53 @@ +TOPDIR=../.. +include $(TOPDIR)/Make.inc + +# Directories +LIBDIR=$(TOPDIR)/lib/ +PSBLIBDIR=$(TOPDIR)/lib/ +PSBINCDIR=$(TOPDIR)/include +PSBMODDIR=$(TOPDIR)/modules +INCDIR=$(TOPDIR)/include +MODDIR=$(TOPDIR)/modules +EXEDIR=./runs + +# Libraries +PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lpsb_openacc -lopenblas -lmetis +LDLIBS=$(PSBGPULDLIBS) + +# Includes +FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) $(FMFLAG)$(PSBINCDIR) $(LIBRSB_DEFINES) + +# Compiler flags +FFLAGS=-O0 -march=native -fopenacc -foffload=nvptx-none="-march=sm_70" +CFLAGS=-O0 -march=native + +# Source files +SRCS=test.F90 vectoacc.F90 +CSRC=timers.c + +# Object files +OBJS=$(SRCS:.F90=.o) $(CSRC:.c=.o) + +# Default rule +all: dir + +dir: + @if test ! -d $(EXEDIR); then mkdir $(EXEDIR); fi + +# Pattern rule for creating executables +%: %.o timers.o + $(FC) $(FFLAGS) $^ -o $@ $(FINCLUDES) $(PSBLAS_LIB) $(LDLIBS) + /bin/mv $@ $(EXEDIR) + +# Compilation rules +%.o: %.F90 + $(FC) $(FFLAGS) $(FINCLUDES) -c $< -o $@ + +%.o: %.c + $(CC) $(CFLAGS) $(FINCLUDES) -c $< -o $@ + +clean: + /bin/rm -fr *.o *.mod $(EXEDIR)/* + +# Phony targets +.PHONY: all dir clean diff --git a/test/openacc/test.F90 b/test/openacc/test.F90 new file mode 100644 index 00000000..0d0b756f --- /dev/null +++ b/test/openacc/test.F90 @@ -0,0 +1,617 @@ +module psb_d_pde3d_mod + + + use psb_base_mod, only : psb_dpk_, psb_ipk_, psb_lpk_, psb_desc_type,& + & psb_dspmat_type, psb_d_vect_type, dzero,& + & psb_d_base_sparse_mat, psb_d_base_vect_type, & + & psb_i_base_vect_type, psb_l_base_vect_type + + interface + function d_func_3d(x,y,z) result(val) + import :: psb_dpk_ + real(psb_dpk_), intent(in) :: x,y,z + real(psb_dpk_) :: val + end function d_func_3d + end interface + + interface psb_gen_pde3d + module procedure psb_d_gen_pde3d + end interface psb_gen_pde3d + + contains + + function d_null_func_3d(x,y,z) result(val) + + real(psb_dpk_), intent(in) :: x,y,z + real(psb_dpk_) :: val + + val = dzero + + end function d_null_func_3d + ! + ! functions parametrizing the differential equation + ! + + ! + ! Note: b1, b2 and b3 are the coefficients of the first + ! derivative of the unknown function. The default + ! we apply here is to have them zero, so that the resulting + ! matrix is symmetric/hermitian and suitable for + ! testing with CG and FCG. + ! When testing methods for non-hermitian matrices you can + ! change the B1/B2/B3 functions to e.g. done/sqrt((3*done)) + ! + function b1(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b1 + real(psb_dpk_), intent(in) :: x,y,z + b1=done/sqrt((3*done)) + end function b1 + function b2(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b2 + real(psb_dpk_), intent(in) :: x,y,z + b2=done/sqrt((3*done)) + end function b2 + function b3(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b3 + real(psb_dpk_), intent(in) :: x,y,z + b3=done/sqrt((3*done)) + end function b3 + function c(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: c + real(psb_dpk_), intent(in) :: x,y,z + c=dzero + end function c + function a1(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a1 + real(psb_dpk_), intent(in) :: x,y,z + a1=done/80 + end function a1 + function a2(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a2 + real(psb_dpk_), intent(in) :: x,y,z + a2=done/80 + end function a2 + function a3(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a3 + real(psb_dpk_), intent(in) :: x,y,z + a3=done/80 + end function a3 + function g(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: g + real(psb_dpk_), intent(in) :: x,y,z + g = dzero + if (x == done) then + g = done + else if (x == dzero) then + g = exp(y**2-z**2) + end if + end function g + + + ! + ! subroutine to allocate and fill in the coefficient matrix and + ! the rhs. + ! + subroutine psb_d_gen_pde3d(ctxt,idim,a,bv,xv,desc_a,afmt,info,& + & f,amold,vmold,imold,partition,nrl,iv,tnd) + use psb_base_mod + use psb_util_mod + ! + ! Discretizes the partial differential equation + ! + ! a1 dd(u) a2 dd(u) a3 dd(u) b1 d(u) b2 d(u) b3 d(u) + ! - ------ - ------ - ------ + ----- + ------ + ------ + c u = f + ! dxdx dydy dzdz dx dy dz + ! + ! with Dirichlet boundary conditions + ! u = g + ! + ! on the unit cube 0<=x,y,z<=1. + ! + ! + ! Note that if b1=b2=b3=c=0., the PDE is the Laplace equation. + ! + implicit none + integer(psb_ipk_) :: idim + type(psb_dspmat_type) :: a + type(psb_d_vect_type) :: xv,bv + type(psb_desc_type) :: desc_a + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: info + character(len=*) :: afmt + procedure(d_func_3d), optional :: f + class(psb_d_base_sparse_mat), optional :: amold + class(psb_d_base_vect_type), optional :: vmold + class(psb_i_base_vect_type), optional :: imold + integer(psb_ipk_), optional :: partition, nrl,iv(:) + logical, optional :: tnd + ! Local variables. + + integer(psb_ipk_), parameter :: nb=20 + type(psb_d_csc_sparse_mat) :: acsc + type(psb_d_coo_sparse_mat) :: acoo + type(psb_d_csr_sparse_mat) :: acsr + real(psb_dpk_) :: zt(nb),x,y,z + integer(psb_ipk_) :: nnz,nr,nlr,i,j,ii,ib,k, partition_ + integer(psb_lpk_) :: m,n,glob_row,nt + integer(psb_ipk_) :: ix,iy,iz,ia,indx_owner + ! For 3D partition + ! Note: integer control variables going directly into an MPI call + ! must be 4 bytes, i.e. psb_mpk_ + integer(psb_mpk_) :: npdims(3), npp, minfo + integer(psb_ipk_) :: npx,npy,npz, iamx,iamy,iamz,mynx,myny,mynz + integer(psb_ipk_), allocatable :: bndx(:),bndy(:),bndz(:) + ! Process grid + integer(psb_ipk_) :: np, iam + integer(psb_ipk_) :: icoeff + integer(psb_lpk_), allocatable :: irow(:),icol(:),myidx(:) + real(psb_dpk_), allocatable :: val(:) + ! deltah dimension of each grid cell + ! deltat discretization time + real(psb_dpk_) :: deltah, sqdeltah, deltah2 + real(psb_dpk_), parameter :: rhs=dzero,one=done,zero=dzero + real(psb_dpk_) :: t0, t1, t2, t3, tasb, talc, ttot, tgen, tcdasb + integer(psb_ipk_) :: err_act + procedure(d_func_3d), pointer :: f_ + logical :: tnd_ + character(len=20) :: name, ch_err,tmpfmt + + info = psb_success_ + name = 'create_matrix' + call psb_erractionsave(err_act) + + call psb_info(ctxt, iam, np) + + + if (present(f)) then + f_ => f + else + f_ => d_null_func_3d + end if + + deltah = done/(idim+2) + sqdeltah = deltah*deltah + deltah2 = (2*done)* deltah + + if (present(partition)) then + if ((1<= partition).and.(partition <= 3)) then + partition_ = partition + else + write(*,*) 'Invalid partition choice ',partition,' defaulting to 3' + partition_ = 3 + end if + else + partition_ = 3 + end if + + ! initialize array descriptor and sparse matrix storage. provide an + ! estimate of the number of non zeroes + + m = (1_psb_lpk_*idim)*idim*idim + n = m + nnz = ((n*7)/(np)) + if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n + t0 = psb_wtime() + select case(partition_) + case(1) + ! A BLOCK partition + if (present(nrl)) then + nr = nrl + else + ! + ! Using a simple BLOCK distribution. + ! + nt = (m+np-1)/np + nr = max(0,min(nt,m-(iam*nt))) + end if + + nt = nr + call psb_sum(ctxt,nt) + if (nt /= m) then + write(psb_err_unit,*) iam, 'Initialization error ',nr,nt,m + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + + ! + ! First example of use of CDALL: specify for each process a number of + ! contiguous rows + ! + call psb_cdall(ctxt,desc_a,info,nl=nr) + myidx = desc_a%get_global_indices() + nlr = size(myidx) + + case(2) + ! A partition defined by the user through IV + + if (present(iv)) then + if (size(iv) /= m) then + write(psb_err_unit,*) iam, 'Initialization error: wrong IV size',size(iv),m + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + else + write(psb_err_unit,*) iam, 'Initialization error: IV not present' + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + + ! + ! Second example of use of CDALL: specify for each row the + ! process that owns it + ! + call psb_cdall(ctxt,desc_a,info,vg=iv) + myidx = desc_a%get_global_indices() + nlr = size(myidx) + + case(3) + ! A 3-dimensional partition + + ! A nifty MPI function will split the process list + npdims = 0 + call mpi_dims_create(np,3,npdims,info) + npx = npdims(1) + npy = npdims(2) + npz = npdims(3) + + allocate(bndx(0:npx),bndy(0:npy),bndz(0:npz)) + ! We can reuse idx2ijk for process indices as well. + call idx2ijk(iamx,iamy,iamz,iam,npx,npy,npz,base=0) + ! Now let's split the 3D cube in hexahedra + call dist1Didx(bndx,idim,npx) + mynx = bndx(iamx+1)-bndx(iamx) + call dist1Didx(bndy,idim,npy) + myny = bndy(iamy+1)-bndy(iamy) + call dist1Didx(bndz,idim,npz) + mynz = bndz(iamz+1)-bndz(iamz) + + ! How many indices do I own? + nlr = mynx*myny*mynz + allocate(myidx(nlr)) + ! Now, let's generate the list of indices I own + nr = 0 + do i=bndx(iamx),bndx(iamx+1)-1 + do j=bndy(iamy),bndy(iamy+1)-1 + do k=bndz(iamz),bndz(iamz+1)-1 + nr = nr + 1 + call ijk2idx(myidx(nr),i,j,k,idim,idim,idim) + end do + end do + end do + if (nr /= nlr) then + write(psb_err_unit,*) iam,iamx,iamy,iamz, 'Initialization error: NR vs NLR ',& + & nr,nlr,mynx,myny,mynz + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + end if + + ! + ! Third example of use of CDALL: specify for each process + ! the set of global indices it owns. + ! + call psb_cdall(ctxt,desc_a,info,vl=myidx) + + case default + write(psb_err_unit,*) iam, 'Initialization error: should not get here' + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end select + + + if (info == psb_success_) call psb_spall(a,desc_a,info,nnz=nnz,& + & dupl=psb_dupl_err_) + ! define rhs from boundary conditions; also build initial guess + if (info == psb_success_) call psb_geall(xv,desc_a,info) + if (info == psb_success_) call psb_geall(bv,desc_a,info) + + call psb_barrier(ctxt) + talc = psb_wtime()-t0 + + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='allocation rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + + ! we build an auxiliary matrix consisting of one row at a + ! time; just a small matrix. might be extended to generate + ! a bunch of rows per call. + ! + allocate(val(20*nb),irow(20*nb),& + &icol(20*nb),stat=info) + if (info /= psb_success_ ) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + goto 9999 + endif + + + ! loop over rows belonging to current process in a block + ! distribution. + + call psb_barrier(ctxt) + t1 = psb_wtime() + do ii=1, nlr,nb + ib = min(nb,nlr-ii+1) + icoeff = 1 + do k=1,ib + i=ii+k-1 + ! local matrix pointer + glob_row=myidx(i) + ! compute gridpoint coordinates + call idx2ijk(ix,iy,iz,glob_row,idim,idim,idim) + ! x, y, z coordinates + x = (ix-1)*deltah + y = (iy-1)*deltah + z = (iz-1)*deltah + zt(k) = f_(x,y,z) + ! internal point: build discretization + ! + ! term depending on (x-1,y,z) + ! + val(icoeff) = -a1(x,y,z)/sqdeltah-b1(x,y,z)/deltah2 + if (ix == 1) then + zt(k) = g(dzero,y,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix-1,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y-1,z) + val(icoeff) = -a2(x,y,z)/sqdeltah-b2(x,y,z)/deltah2 + if (iy == 1) then + zt(k) = g(x,dzero,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy-1,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y,z-1) + val(icoeff)=-a3(x,y,z)/sqdeltah-b3(x,y,z)/deltah2 + if (iz == 1) then + zt(k) = g(x,y,dzero)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy,iz-1,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + + ! term depending on (x,y,z) + val(icoeff)=(2*done)*(a1(x,y,z)+a2(x,y,z)+a3(x,y,z))/sqdeltah & + & + c(x,y,z) + call ijk2idx(icol(icoeff),ix,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + ! term depending on (x,y,z+1) + val(icoeff)=-a3(x,y,z)/sqdeltah+b3(x,y,z)/deltah2 + if (iz == idim) then + zt(k) = g(x,y,done)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy,iz+1,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y+1,z) + val(icoeff)=-a2(x,y,z)/sqdeltah+b2(x,y,z)/deltah2 + if (iy == idim) then + zt(k) = g(x,done,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy+1,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x+1,y,z) + val(icoeff)=-a1(x,y,z)/sqdeltah+b1(x,y,z)/deltah2 + if (ix==idim) then + zt(k) = g(done,y,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix+1,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + + end do + call psb_spins(icoeff-1,irow,icol,val,a,desc_a,info) + if(info /= psb_success_) exit + call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),bv,desc_a,info) + if(info /= psb_success_) exit + zt(:)=dzero + call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),xv,desc_a,info) + if(info /= psb_success_) exit + end do + + tgen = psb_wtime()-t1 + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='insert rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + + deallocate(val,irow,icol) + + call psb_barrier(ctxt) + t1 = psb_wtime() + call psb_cdasb(desc_a,info,mold=imold) + tcdasb = psb_wtime()-t1 + call psb_barrier(ctxt) + t1 = psb_wtime() + if (info == psb_success_) then + if (present(amold)) then + call psb_spasb(a,desc_a,info,mold=amold,bld_and=tnd) + else + call psb_spasb(a,desc_a,info,afmt=afmt,bld_and=tnd) + end if + end if + call psb_barrier(ctxt) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='asb rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + if (info == psb_success_) call psb_geasb(xv,desc_a,info,mold=vmold) + if (info == psb_success_) call psb_geasb(bv,desc_a,info,mold=vmold) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='asb rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + tasb = psb_wtime()-t1 + call psb_barrier(ctxt) + ttot = psb_wtime() - t0 + + call psb_amx(ctxt,talc) + call psb_amx(ctxt,tgen) + call psb_amx(ctxt,tasb) + call psb_amx(ctxt,ttot) + if(iam == psb_root_) then + tmpfmt = a%get_fmt() + write(psb_out_unit,'("The matrix has been generated and assembled in ",a3," format.")')& + & tmpfmt + write(psb_out_unit,'("-allocation time : ",es12.5)') talc + write(psb_out_unit,'("-coeff. gen. time : ",es12.5)') tgen + write(psb_out_unit,'("-desc asbly time : ",es12.5)') tcdasb + write(psb_out_unit,'("- mat asbly time : ",es12.5)') tasb + write(psb_out_unit,'("-total time : ",es12.5)') ttot + + end if + call psb_erractionrestore(err_act) + return + + 9999 call psb_error_handler(ctxt,err_act) + + return + end subroutine psb_d_gen_pde3d + + +end module psb_d_pde3d_mod + + + +program test + use psb_base_mod + use psb_ext_mod + use psb_oacc_mod + use psb_d_pde3d_mod + + implicit none + integer(psb_ipk_) :: n, i, info, m, nrm, nz + integer(psb_ipk_), parameter :: ntests=80, ngpu=20 + real(psb_dpk_) :: dot_dev, dot_host + type(psb_d_vect_oacc) :: tx, ty + type(psb_d_oacc_csr_sparse_mat) :: aacsr + real(psb_dpk_) :: t0, t1, t2, t3, csflp, elflp + double precision, external :: etime + + type(psb_dspmat_type) :: a + type(psb_desc_type) :: desc_a + type(psb_d_vect_type) :: xxv, bv + type(psb_d_csr_sparse_mat) :: acsr + character(len=5) :: afmt='csr' + real(psb_dpk_), allocatable :: vv(:), ydev(:), yhost(:) + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: iam, np, nth, idim + integer(psb_epk_) :: neq + + call psb_init(ctxt) + call psb_info(ctxt, iam, np) + + write(*,*) 'Enter size :' + read(*,*) idim + idim = max(1, idim) + + n = idim**3 + call psb_gen_pde3d(ctxt, idim, a, bv, xxv, desc_a, afmt, info) + call a%cp_to(acsr) + m = acsr%get_nrows() + n = acsr%get_ncols() + nz = acsr%get_nzeros() + call aacsr%all(m, n, nz, info) + aacsr%val = (acsr%val) + aacsr%ja = (acsr%ja) + aacsr%irp = (acsr%irp) + call aacsr%set_host() + call aacsr%sync() + + call initialize(n) + + call to_host() + t2 = etime() + do i = 1, ntests + dot_host = h_dot(n) + end do + t3 = etime() + + call tx%all(n, info) + call ty%all(n, info) + vv = bv%get_vect() + call bv%set_vect(v1) + call tx%set_vect(v1) + call ty%set_vect(v2) + t0 = etime() + do i = 1, ntests * ngpu + dot_dev = tx%dot_v(n, ty) + end do + !$acc wait + t1 = etime() + write(*,*) ' Dot Results : dev:', dot_dev, ' host:', dot_host + write(*,*) ' Timing : dev:', t1 - t0, (t1 - t0) / (ntests * ngpu), & + ' host:', t3 - t2, (t3 - t2) / ntests + + call a%mv_from(acsr) + t2 = etime() + do i = 1, ntests + call a%spmm(done, bv, dzero, xxv, info) + end do + t3 = etime() + yhost = xxv%get_vect() + t0 = etime() + do i = 1, ntests * ngpu + call aacsr%vect_mv(done, tx, dzero, ty, info) + end do + !$acc wait + t1 = etime() + ydev = ty%get_vect() + write(*,*) 'Correctness check: ', maxval(abs(ydev(:) - yhost(:))) + write(*,*) ' CSR PROD ' + write(*, '(2(a,f12.3,2x))') ' Timing (ms): ' + csflp = 2.d0 * nz / ((t1 - t0) / (ntests * ngpu)) + write(*, '(2(a,f12.3,2x))') ' dev:', 1e3 * (t1 - t0) / (ntests * ngpu), ' :', csflp / 1.d6 + csflp = 2.d0 * nz / ((t3 - t2) / (ntests)) + write(*, '(2(a,f12.3,2x))') ' host:', 1e3 * (t3 - t2) / ntests, ' :', csflp / 1.d6 + write(*,*) 'Done' + + call tx%free(info) + call ty%free(info) + call finalize_dev() + call finalize_host() + call psb_exit(ctxt) +end program test diff --git a/test/openacc/timers.c b/test/openacc/timers.c new file mode 100644 index 00000000..12fa4f56 --- /dev/null +++ b/test/openacc/timers.c @@ -0,0 +1,97 @@ +#include +#include +#include + +double wtime() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec)*1.0e3 + ((double)tt.tv_usec)*1.0e-3; + return(temp); +} + +double timef_() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec)*1.0e3 + ((double)tt.tv_usec)*1.0e-3; + return(temp); +} + +double timef() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec)*1.0e3 + ((double)tt.tv_usec)*1.0e-3; + return(temp); +} + +double etime() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + +double etime_() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + +double etimef() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + +double etimef_() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + + + diff --git a/test/openacc/vectoacc.F90 b/test/openacc/vectoacc.F90 new file mode 100644 index 00000000..b50fa317 --- /dev/null +++ b/test/openacc/vectoacc.F90 @@ -0,0 +1,85 @@ +program vectoacc + use psb_base_mod + use psb_oacc_mod + implicit none + + type(psb_d_vect_oacc) :: v3, v4, v5 + integer(psb_ipk_) :: info, n, i + real(psb_dpk_) :: alpha, beta, result + double precision, external :: etime + + real(psb_dpk_) :: dot_host, dot_dev, t_host, t_dev + double precision :: time_start, time_end + integer(psb_ipk_), parameter :: ntests=80, ngpu=20 + + write(*, *) 'Test of the vector operations with OpenACC' + + write(*, *) 'Enter the size of the vectors' + read(*, *) n + alpha = 2.0 + beta = 0.5 + + call v3%all(n, info) + call v4%all(n, info) + call v5%all(n, info) + + do i = 1, n + v3%v(i) = real(i, psb_dpk_) + v4%v(i) = real(n - i, psb_dpk_) + end do + + call v3%set_dev() + call v4%set_dev() + + call v3%scal(alpha) + call v3%sync() + + do i = 1, n + if (v3%v(i) /= alpha * real(i, psb_dpk_)) then + write(*, *) 'Scal error : index', i + end if + end do + write(*, *) 'Scal test passed' + + result = v3%dot_v(n, v4) + call v3%sync() + call v4%sync() + if (result /= sum(v3%v * v4%v)) then + write(*, *) 'Dot_v error, expected result:', sum(v3%v * v4%v), 'instead of :', result + end if + write(*, *) 'Dot_v test passed' + + result = v3%nrm2(n) + call v3%sync() + if (result /= sqrt(sum(v3%v ** 2))) then + write(*, *) 'nrm2 error, expected result:', sqrt(sum(v3%v ** 2)), 'instead of :', result + end if + write(*, *) 'nrm2 test passed' + + call v3%set_host() + call v4%set_host() + + time_start = etime() + do i = 1, ntests + dot_host = sum(v3%v * v4%v) + end do + time_end = etime() + t_host = (time_end - time_start) / real(ntests) + write(*, *) 'Performance host: ', t_host, ' sec' + + call v3%set_dev() + call v4%set_dev() + time_start = etime() + do i = 1, ntests + dot_dev = v3%dot_v(n, v4) + end do + !$acc wait + time_end = etime() + t_dev = (time_end - time_start) / real(ntests) + write(*, *) 'Performance device: ', t_dev, ' sec' + + call v3%free(info) + call v4%free(info) + call v5%free(info) + +end program vectoacc From e3a3e39caf31e8c28b0bf4267a06b6d4e9963d93 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 9 Jul 2024 10:03:30 +0200 Subject: [PATCH 02/86] Modify configure --enable-openacc --with-fcopenacc=..... --- Make.inc.in | 7 +++ Makefile | 11 ++++- config/pac.m4 | 44 ++++++++++++++++++ configure | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 21 +++++++++ 5 files changed, 204 insertions(+), 2 deletions(-) diff --git a/Make.inc.in b/Make.inc.in index 858ad336..38c8ef86 100755 --- a/Make.inc.in +++ b/Make.inc.in @@ -67,6 +67,12 @@ UTILMODNAME=@UTILMODNAME@ CBINDLIBNAME=libpsb_cbind.a +OACCD=@OACCD@ +OACCLD=@OACCLD@ +FCOPENACC=@FCOPENACC@ +CCOPENACC=@CCOPENACC@ +CXXOPENACC=@CXXOPENACC@ + CUDAD=@CUDAD@ CUDALD=@CUDALD@ LCUDA=@LCUDA@ @@ -82,6 +88,7 @@ CUDA_SHORT_VERSION=@CUDA_SHORT_VERSION@ NVCC=@CUDA_NVCC@ CUDEFINES=@CUDEFINES@ + .SUFFIXES: .cu .cu.o: $(NVCC) $(CINCLUDES) $(CDEFINES) $(CUDEFINES) -c $< diff --git a/Makefile b/Makefile index 95f4cb17..972fd3c6 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ include Make.inc -all: dirs based precd kryld utild cbindd extd $(CUDAD) libd +all: dirs based precd kryld utild cbindd extd $(CUDAD) $(OACCD) libd @echo "=====================================" @echo "PSBLAS libraries Compilation Successful." @@ -14,9 +14,10 @@ utild: based kryld: precd extd: based cudad: extd +oaccd: extd cbindd: based precd kryld utild -libd: based precd kryld utild cbindd extd $(CUDALD) +libd: based precd kryld utild cbindd extd $(CUDALD) $(OACCLD) $(MAKE) -C base lib $(MAKE) -C prec lib $(MAKE) -C krylov lib @@ -25,6 +26,8 @@ libd: based precd kryld utild cbindd extd $(CUDALD) $(MAKE) -C ext lib cudald: cudad $(MAKE) -C cuda lib +oaccld: oaccd + $(MAKE) -C openacc lib based: @@ -41,6 +44,8 @@ extd: based $(MAKE) -C ext objs cudad: based extd $(MAKE) -C cuda objs +oaccd: based extd + $(MAKE) -C openacc objs install: all @@ -67,6 +72,7 @@ clean: $(MAKE) -C cbind clean $(MAKE) -C ext clean $(MAKE) -C cuda clean + $(MAKE) -C openacc clean check: all make check -C test/serial @@ -84,6 +90,7 @@ veryclean: cleanlib cd cbind && $(MAKE) veryclean cd ext && $(MAKE) veryclean cd cuda && $(MAKE) veryclean + cd openacc && $(MAKE) veryclean cd test/fileread && $(MAKE) clean cd test/pargen && $(MAKE) clean cd test/util && $(MAKE) clean diff --git a/config/pac.m4 b/config/pac.m4 index 0d22392f..d74a6f24 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -2267,3 +2267,47 @@ CPPFLAGS="$SAVE_CPPFLAGS" ])dnl + +dnl @synopsis PAC_ARG_OPENACC +dnl +dnl Test for --enable-openacc +dnl +dnl +dnl +dnl Example use: +dnl +dnl +dnl @author Salvatore Filippone +dnl +AC_DEFUN([PAC_ARG_OPENACC], +[AC_MSG_CHECKING([whether we want openacc ]) +AC_ARG_ENABLE(openacc, +AS_HELP_STRING([--enable-openacc], +[Specify whether to enable openacc. ]), +[ +pac_cv_openacc="yes"; +] +dnl , +dnl [pac_cv_openacc="no";] + ) +if test x"$pac_cv_openacc" == x"yes" ; then + AC_MSG_RESULT([yes.]) +# AC_LANG_PUSH([Fortran]) +# AC_OPENACC() +# pac_cv_openacc_fcopt="$OPENACC_FCFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C]) +# AC_OPENACC() +# pac_cv_openacc_ccopt="$OPENACC_CFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C++]) +# AC_OPENACC() +# pac_cv_openacc_cxxopt="$OPENACC_CXXFLAGS"; +# AC_LANG_POP() +else + pac_cv_openacc="no"; + AC_MSG_RESULT([no.]) +fi +] +) + diff --git a/configure b/configure index b7e5f329..15e3670d 100755 --- a/configure +++ b/configure @@ -667,6 +667,11 @@ CUDA_DIR EXTRALDLIBS SPGPU_LIBS SPGPU_FLAGS +CXXOPENACC +CCOPENACC +FCOPENACC +OACCLD +OACCD METISINCFILE UTILLIBNAME METHDLIBNAME @@ -840,6 +845,10 @@ with_amdincdir with_amdlibdir with_cuda with_cudacc +enable_openacc +with_ccopenacc +with_cxxopenacc +with_fcopenacc ' ac_precious_vars='build_alias host_alias @@ -1490,6 +1499,7 @@ Optional Features: --disable-silent-rules verbose build output (undo: "make V=0") --enable-openmp Specify whether to enable openmp. --disable-openmp do not use OpenMP + --enable-openacc Specify whether to enable openacc. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1535,6 +1545,12 @@ Optional Packages: --with-cuda=DIR Specify the CUDA install directory. --with-cudacc A comma-separated list of CCs to compile to, for example, --with-cudacc=50,60,70,75 + --with-ccopenacc additional [CCOPENACC] flags to be added: will + prepend to [CCOPENACC] + --with-cxxopenacc additional [CXXOPENACC] flags to be added: will + prepend to [CXXOPENACC] + --with-fcopenacc additional [FCOPENACC] flags to be added: will + prepend to [FCOPENACC] Some influential environment variables: FC Fortran compiler command @@ -10867,6 +10883,106 @@ printf "%s\n" "$as_me: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ CUDA_LIBS=""; fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we want openacc " >&5 +printf %s "checking whether we want openacc ... " >&6; } +# Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +pac_cv_openacc="yes"; + + +fi + +if test x"$pac_cv_openacc" == x"yes" ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes." >&5 +printf "%s\n" "yes." >&6; } +# AC_LANG_PUSH([Fortran]) +# AC_OPENACC() +# pac_cv_openacc_fcopt="$OPENACC_FCFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C]) +# AC_OPENACC() +# pac_cv_openacc_ccopt="$OPENACC_CFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C++]) +# AC_OPENACC() +# pac_cv_openacc_cxxopt="$OPENACC_CXXFLAGS"; +# AC_LANG_POP() +else + pac_cv_openacc="no"; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no." >&5 +printf "%s\n" "no." >&6; } +fi + + +if test x"$pac_cv_openacc" == x"yes" ; then + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional CCOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional CCOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-ccopenacc was given. +if test ${with_ccopenacc+y} +then : + withval=$with_ccopenacc; +CCOPENACC="${withval} ${CCOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: CCOPENACC = ${CCOPENACC}" >&5 +printf "%s\n" "CCOPENACC = ${CCOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional CXXOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional CXXOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-cxxopenacc was given. +if test ${with_cxxopenacc+y} +then : + withval=$with_cxxopenacc; +CXXOPENACC="${withval} ${CXXOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: CXXOPENACC = ${CXXOPENACC}" >&5 +printf "%s\n" "CXXOPENACC = ${CXXOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional FCOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional FCOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-fcopenacc was given. +if test ${with_fcopenacc+y} +then : + withval=$with_fcopenacc; +FCOPENACC="${withval} ${FCOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: FCOPENACC = ${FCOPENACC}" >&5 +printf "%s\n" "FCOPENACC = ${FCOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + + OACCD=oaccd; + OACCLD=oaccld; + + #FCOPT="$FCOPT $FCOPENACC"; + #CCOPT="$CCOPT $CCOPENACC" + #CXXOPT="$CXXOPT $CXXOPENACC" + #FLINK="$FLINK $FCOPENACC"; +fi @@ -10957,6 +11073,13 @@ FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) + + + + + + + diff --git a/configure.ac b/configure.ac index 10f9e2f4..ed4f4acc 100755 --- a/configure.ac +++ b/configure.ac @@ -843,6 +843,20 @@ if test "x$pac_cv_ipk_size" != "x4"; then CUDA_LIBS=""; fi +PAC_ARG_OPENACC() +if test x"$pac_cv_openacc" == x"yes" ; then + PAC_ARG_WITH_FLAGS(ccopenacc,CCOPENACC) + PAC_ARG_WITH_FLAGS(cxxopenacc,CXXOPENACC) + PAC_ARG_WITH_FLAGS(fcopenacc,FCOPENACC) + + OACCD=oaccd; + OACCLD=oaccld; + + #FCOPT="$FCOPT $FCOPENACC"; + #CCOPT="$CCOPT $CCOPENACC" + #CXXOPT="$CXXOPT $CXXOPENACC" + #FLINK="$FLINK $FCOPENACC"; +fi @@ -927,6 +941,12 @@ AC_SUBST(PRECLIBNAME) AC_SUBST(METHDLIBNAME) AC_SUBST(UTILLIBNAME) AC_SUBST(METISINCFILE) +AC_SUBST(OACCD) +AC_SUBST(OACCLD) +AC_SUBST(FCOPENACC) +AC_SUBST(CCOPENACC) +AC_SUBST(CXXOPENACC) + AC_SUBST(SPGPU_FLAGS) AC_SUBST(SPGPU_LIBS) dnl AC_SUBST(SPGPU_DIR) @@ -944,6 +964,7 @@ AC_SUBST(CUDEFINES) AC_SUBST(CUDAD) AC_SUBST(CUDALD) AC_SUBST(LCUDA) + ############################################################################### # the following files will be created by Automake From 93c9df0277619a4a3d8d56d4acfd99cb717a79a4 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 9 Jul 2024 10:03:57 +0200 Subject: [PATCH 03/86] Adjust Makefiles & source --- openacc/Makefile | 61 +- openacc/psb_d_oacc_csr_mat_mod.F90 | 2 +- openacc/psb_d_oacc_vect_mod.F90 | 1702 ++++++++++++++-------------- 3 files changed, 888 insertions(+), 877 deletions(-) diff --git a/openacc/Makefile b/openacc/Makefile index 3590249c..3327610f 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -1,11 +1,10 @@ -.SUFFIXES: -.SUFFIXES: .F90 .f90 .o .s .c +include ../Make.inc # Compilers and flags -CC=mpicc -FC=mpif90 -FCOPT=-O0 -march=native -OFFLOAD=-fopenacc -foffload=nvptx-none="-march=sm_70" +#CC=mpicc +#FC=mpif90 +#FCOPT=-O0 -march=native +#OFFLOAD=-fopenacc -foffload=nvptx-none="-march=sm_70" # Directories LIBDIR=../lib @@ -14,35 +13,49 @@ MODDIR=../modules IMPLDIR=./impl # Adding the impl directory # Include and library paths -INCLUDES=-I$(LIBDIR) -I$(INCDIR) -I$(MODDIR) -I$(IMPLDIR) -LIBS=-L$(LIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lopenblas -lmetis +INCLUDES=-I$(LIBDIR) -I$(INCDIR) -I$(MODDIR) +FINCLUDES=$(FMFLAG). $(FMFLAG)$(INCDIR) $(FMFLAG)$(MODDIR) $(FIFLAG). +CINCLUDES= +#LIBS=-L$(LIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lopenblas -lmetis # Source files FOBJS= psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ - psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o \ - impl/psb_d_oacc_csr_vect_mv.o + psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o # Library name LIBNAME=libpsb_openacc.a -# Rules -all: $(LIBNAME) +OBJS=$(COBJS) $(FOBJS) -$(LIBNAME): $(FOBJS) - ar cr $(LIBNAME) $(FOBJS) +# Rules +lib: objs ilib + ar cur $(LIBNAME) $(OBJS) /bin/cp -p $(LIBNAME) $(LIBDIR) -clean: - /bin/rm -fr *.o $(LIBNAME) *.mod impl/*.o +objs: $(OBJS) iobjs + /bin/cp -p *$(.mod) $(MODDIR) -.f90.o: - $(FC) $(FCOPT) $(OFFLOAD) $(INCLUDES) -c $< -o $@ +iobjs: $(OBJS) + $(MAKE) -C impl objs -.c.o: - $(CC) -c $< -o $@ +ilib: $(OBJS) + $(MAKE) -C impl lib -.F90.o: - $(FC) $(FCOPT) $(OFFLOAD) $(INCLUDES) -c $< -o $@ +psb_oacc_mod.o : psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ + psb_d_oacc_csr_mat_mod.o +clean: cclean iclean + /bin/rm -f $(FOBJS) *$(.mod) *.a +veryclean: clean +cclean: + /bin/rm -f $(COBJS) +iclean: + $(MAKE) -C impl clean -.F90.s: - $(FC) $(FCOPT) $(INCLUDES) -c -S $< -o $@ +.c.o: + $(CC) $(CCOPT) $(CCOPENACC) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXOPENACC) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index c6b7e3d0..d9c8a2a6 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -3,7 +3,7 @@ module psb_d_oacc_csr_mat_mod use iso_c_binding use psb_d_mat_mod use psb_d_oacc_vect_mod - use oaccsparse_mod + !use oaccsparse_mod integer(psb_ipk_), parameter, private :: is_host = -1 integer(psb_ipk_), parameter, private :: is_sync = 0 diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index ac5428f3..eda804ce 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -3,9 +3,9 @@ module psb_d_oacc_vect_mod use psb_const_mod use psb_error_mod use psb_d_vect_mod - use psb_i_oacc_vect_mod use psb_i_vect_mod - + use psb_i_oacc_vect_mod + integer(psb_ipk_), parameter, private :: is_host = -1 integer(psb_ipk_), parameter, private :: is_sync = 0 integer(psb_ipk_), parameter, private :: is_dev = 1 @@ -14,49 +14,49 @@ module psb_d_oacc_vect_mod integer :: state = is_host contains - procedure, pass(x) :: get_nrows => d_oacc_get_nrows - procedure, nopass :: get_fmt => d_oacc_get_fmt - - procedure, pass(x) :: all => d_oacc_vect_all - procedure, pass(x) :: zero => d_oacc_zero - procedure, pass(x) :: asb_m => d_oacc_asb_m +!!$ procedure, pass(x) :: get_nrows => d_oacc_get_nrows +!!$ procedure, nopass :: get_fmt => d_oacc_get_fmt +!!$ +!!$ procedure, pass(x) :: all => d_oacc_vect_all +!!$ procedure, pass(x) :: zero => d_oacc_zero +!!$ procedure, pass(x) :: asb_m => d_oacc_asb_m procedure, pass(x) :: sync => d_oacc_sync procedure, pass(x) :: sync_space => d_oacc_sync_space - procedure, pass(x) :: bld_x => d_oacc_bld_x - procedure, pass(x) :: bld_mn => d_oacc_bld_mn - procedure, pass(x) :: free => d_oacc_vect_free - procedure, pass(x) :: ins_a => d_oacc_ins_a - procedure, pass(x) :: ins_v => d_oacc_ins_v +!!$ procedure, pass(x) :: bld_x => d_oacc_bld_x +!!$ procedure, pass(x) :: bld_mn => d_oacc_bld_mn +!!$ procedure, pass(x) :: free => d_oacc_vect_free +!!$ procedure, pass(x) :: ins_a => d_oacc_ins_a +!!$ procedure, pass(x) :: ins_v => d_oacc_ins_v procedure, pass(x) :: is_host => d_oacc_is_host procedure, pass(x) :: is_dev => d_oacc_is_dev procedure, pass(x) :: is_sync => d_oacc_is_sync procedure, pass(x) :: set_host => d_oacc_set_host procedure, pass(x) :: set_dev => d_oacc_set_dev procedure, pass(x) :: set_sync => d_oacc_set_sync - procedure, pass(x) :: set_scal => d_oacc_set_scal - - procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf - procedure, pass(y) :: sctb => d_oacc_sctb - procedure, pass(y) :: sctb_x => d_oacc_sctb_x - procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf - - procedure, pass(x) :: get_size => oacc_get_size - procedure, pass(x) :: dot_v => d_oacc_vect_dot - procedure, pass(x) :: dot_a => d_oacc_dot_a - procedure, pass(y) :: axpby_v => d_oacc_axpby_v - procedure, pass(y) :: axpby_a => d_oacc_axpby_a - procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz - procedure, pass(y) :: mlt_v => d_oacc_mlt_v - procedure, pass(y) :: mlt_a => d_oacc_mlt_a - procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 - procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 - procedure, pass(x) :: scal => d_oacc_scal - procedure, pass(x) :: nrm2 => d_oacc_nrm2 - procedure, pass(x) :: amax => d_oacc_amax - procedure, pass(x) :: asum => d_oacc_asum +!!$ procedure, pass(x) :: set_scal => d_oacc_set_scal +!!$ +!!$ procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x +!!$ procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf +!!$ procedure, pass(y) :: sctb => d_oacc_sctb +!!$ procedure, pass(y) :: sctb_x => d_oacc_sctb_x +!!$ procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf +!!$ +!!$ procedure, pass(x) :: get_size => oacc_get_size +!!$ procedure, pass(x) :: dot_v => d_oacc_vect_dot +!!$ procedure, pass(x) :: dot_a => d_oacc_dot_a +!!$ procedure, pass(y) :: axpby_v => d_oacc_axpby_v +!!$ procedure, pass(y) :: axpby_a => d_oacc_axpby_a +!!$ procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz +!!$ procedure, pass(y) :: mlt_v => d_oacc_mlt_v +!!$ procedure, pass(y) :: mlt_a => d_oacc_mlt_a +!!$ procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 +!!$ procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 +!!$ procedure, pass(x) :: scal => d_oacc_scal +!!$ procedure, pass(x) :: nrm2 => d_oacc_nrm2 +!!$ procedure, pass(x) :: amax => d_oacc_amax +!!$ procedure, pass(x) :: asum => d_oacc_asum procedure, pass(x) :: absval1 => d_oacc_absval1 - procedure, pass(x) :: absval2 => d_oacc_absval2 +!!$ procedure, pass(x) :: absval2 => d_oacc_absval2 end type psb_d_vect_oacc @@ -78,729 +78,727 @@ contains call x%set_dev() end subroutine d_oacc_absval1 - subroutine d_oacc_absval2(x, y) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - class(psb_d_base_vect_type), intent(inout) :: y - integer(psb_ipk_) :: n - integer(psb_ipk_) :: i - - n = min(size(x%v), size(y%v)) - select type (yy => y) - class is (psb_d_vect_oacc) - if (x%is_host()) call x%sync() - if (yy%is_host()) call yy%sync() - !$acc parallel loop - do i = 1, n - yy%v(i) = abs(x%v(i)) - end do - class default - if (x%is_dev()) call x%sync() - if (y%is_dev()) call y%sync() - call x%psb_d_base_vect_type%absval(y) - end select - end subroutine d_oacc_absval2 - - - - subroutine d_oacc_scal(alpha, x) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - real(psb_dpk_), intent(in) :: alpha - integer(psb_ipk_) :: info - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - !$acc parallel loop - do i = 1, size(x%v) - x%v(i) = alpha * x%v(i) - end do - call x%set_dev() - end subroutine d_oacc_scal - - function d_oacc_nrm2(n, x) result(res) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res - integer(psb_ipk_) :: info - real(psb_dpk_) :: sum - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + x%v(i) * x%v(i) - end do - res = sqrt(sum) - end function d_oacc_nrm2 - - function d_oacc_amax(n, x) result(res) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res - integer(psb_ipk_) :: info - real(psb_dpk_) :: max_val - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - max_val = -huge(0.0) - !$acc parallel loop reduction(max:max_val) - do i = 1, n - if (x%v(i) > max_val) max_val = x%v(i) - end do - res = max_val - end function d_oacc_amax - - function d_oacc_asum(n, x) result(res) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res - integer(psb_ipk_) :: info - real(psb_dpk_) :: sum - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i)) - end do - res = sum - end function d_oacc_asum - - - subroutine d_oacc_mlt_v(x, y, info) - use psi_serial_mod - implicit none - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_vect_oacc), intent(inout) :: y - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: i, n - - info = 0 - n = min(x%get_nrows(), y%get_nrows()) - select type(xx => x) - type is (psb_d_base_vect_type) - if (y%is_dev()) call y%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do - call y%set_host() - class default - if (xx%is_dev()) call xx%sync() - if (y%is_dev()) call y%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do - call y%set_host() - end select - end subroutine d_oacc_mlt_v - - subroutine d_oacc_mlt_a(x, y, info) - use psi_serial_mod - implicit none - real(psb_dpk_), intent(in) :: x(:) - class(psb_d_vect_oacc), intent(inout) :: y - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, n - - info = 0 - if (y%is_dev()) call y%sync_space() - !$acc parallel loop - do i = 1, size(x) - y%v(i) = y%v(i) * x(i) - end do - call y%set_host() - end subroutine d_oacc_mlt_a - - subroutine d_oacc_mlt_a_2(alpha, x, y, beta, z, info) - use psi_serial_mod - implicit none - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_), intent(in) :: x(:) - real(psb_dpk_), intent(in) :: y(:) - class(psb_d_vect_oacc), intent(inout) :: z - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, n - - info = 0 - if (z%is_dev()) call z%sync_space() - !$acc parallel loop - do i = 1, size(x) - z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) - end do - call z%set_host() - end subroutine d_oacc_mlt_a_2 - - subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psi_serial_mod - use psb_string_mod - implicit none - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_base_vect_type), intent(inout) :: y - class(psb_d_vect_oacc), intent(inout) :: z - integer(psb_ipk_), intent(out) :: info - character(len=1), intent(in), optional :: conjgx, conjgy - integer(psb_ipk_) :: i, n - logical :: conjgx_, conjgy_ - - conjgx_ = .false. - conjgy_ = .false. - if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') - if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') - - n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) - - info = 0 - select type(xx => x) - class is (psb_d_vect_oacc) - select type (yy => y) - class is (psb_d_vect_oacc) - if (xx%is_host()) call xx%sync_space() - if (yy%is_host()) call yy%sync_space() - if ((beta /= dzero) .and. (z%is_host())) call z%sync_space() - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) - end do - call z%set_dev() - class default - if (xx%is_dev()) call xx%sync_space() - if (yy%is_dev()) call yy%sync() - if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) - end do - call z%set_host() - end select - class default - if (x%is_dev()) call x%sync() - if (y%is_dev()) call y%sync() - if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) - end do - call z%set_host() - end select - end subroutine d_oacc_mlt_v_2 - - - subroutine d_oacc_axpby_v(m, alpha, x, beta, y, info) - use psi_serial_mod - implicit none - integer(psb_ipk_), intent(in) :: m - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_vect_oacc), intent(inout) :: y - real(psb_dpk_), intent(in) :: alpha, beta - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: nx, ny, i - - info = psb_success_ - - select type(xx => x) - type is (psb_d_vect_oacc) - if ((beta /= dzero) .and. y%is_host()) call y%sync_space() - if (xx%is_host()) call xx%sync_space() - nx = size(xx%v) - ny = size(y%v) - if ((nx < m) .or. (ny < m)) then - info = psb_err_internal_error_ - else - !$acc parallel loop - do i = 1, m - y%v(i) = alpha * xx%v(i) + beta * y%v(i) - end do - end if - call y%set_dev() - class default - if ((alpha /= dzero) .and. (x%is_dev())) call x%sync() - call y%axpby(m, alpha, x%v, beta, info) - end select - end subroutine d_oacc_axpby_v - - subroutine d_oacc_axpby_a(m, alpha, x, beta, y, info) - use psi_serial_mod - implicit none - integer(psb_ipk_), intent(in) :: m - real(psb_dpk_), intent(in) :: x(:) - class(psb_d_vect_oacc), intent(inout) :: y - real(psb_dpk_), intent(in) :: alpha, beta - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i - - if ((beta /= dzero) .and. (y%is_dev())) call y%sync_space() - !$acc parallel loop - do i = 1, m - y%v(i) = alpha * x(i) + beta * y%v(i) - end do - call y%set_host() - end subroutine d_oacc_axpby_a - - subroutine d_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) - use psi_serial_mod - implicit none - integer(psb_ipk_), intent(in) :: m - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_base_vect_type), intent(inout) :: y - class(psb_d_vect_oacc), intent(inout) :: z - real(psb_dpk_), intent(in) :: alpha, beta, gamma, delta - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: nx, ny, nz, i - logical :: gpu_done - - info = psb_success_ - gpu_done = .false. - - select type(xx => x) - class is (psb_d_vect_oacc) - select type(yy => y) - class is (psb_d_vect_oacc) - select type(zz => z) - class is (psb_d_vect_oacc) - if ((beta /= dzero) .and. yy%is_host()) call yy%sync_space() - if ((delta /= dzero) .and. zz%is_host()) call zz%sync_space() - if (xx%is_host()) call xx%sync_space() - nx = size(xx%v) - ny = size(yy%v) - nz = size(zz%v) - if ((nx < m) .or. (ny < m) .or. (nz < m)) then - info = psb_err_internal_error_ - else - !$acc parallel loop - do i = 1, m - yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) - zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) - end do - end if - call yy%set_dev() - call zz%set_dev() - gpu_done = .true. - end select - end select - end select - - if (.not. gpu_done) then - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - if (z%is_host()) call z%sync() - call y%axpby(m, alpha, x, beta, info) - call z%axpby(m, gamma, y, delta, info) - end if - end subroutine d_oacc_abgdxyz - - - subroutine d_oacc_sctb_buf(i, n, idx, beta, y) - use psb_base_mod - implicit none - integer(psb_ipk_) :: i, n - class(psb_i_base_vect_type) :: idx - real(psb_dpk_) :: beta - class(psb_d_vect_oacc) :: y - integer(psb_ipk_) :: info - - if (.not.allocated(y%combuf)) then - call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') - return - end if - - select type(ii => idx) - class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) - if (y%is_host()) call y%sync_space() - - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) - end do - - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) - end do - end select - end subroutine d_oacc_sctb_buf - - subroutine d_oacc_sctb_x(i, n, idx, x, beta, y) - use psb_base_mod - implicit none - integer(psb_ipk_):: i, n - class(psb_i_base_vect_type) :: idx - real(psb_dpk_) :: beta, x(:) - class(psb_d_vect_oacc) :: y - integer(psb_ipk_) :: info, ni - - select type(ii => idx) - class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) - class default - call psb_errpush(info, 'd_oacc_sctb_x') - return - end select - - if (y%is_host()) call y%sync_space() - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - - call y%set_dev() - end subroutine d_oacc_sctb_x - - - - subroutine d_oacc_sctb(n, idx, x, beta, y) - use psb_base_mod - implicit none - integer(psb_ipk_) :: n - integer(psb_ipk_) :: idx(:) - real(psb_dpk_) :: beta, x(:) - class(psb_d_vect_oacc) :: y - integer(psb_ipk_) :: info - integer(psb_ipk_) :: i - - if (n == 0) return - if (y%is_dev()) call y%sync_space() - - !$acc parallel loop - do i = 1, n - y%v(idx(i)) = beta * y%v(idx(i)) + x(i) - end do - - call y%set_host() - end subroutine d_oacc_sctb - - - subroutine d_oacc_gthzbuf(i, n, idx, x) - use psb_base_mod - implicit none - integer(psb_ipk_) :: i, n - class(psb_i_base_vect_type) :: idx - class(psb_d_vect_oacc) :: x - integer(psb_ipk_) :: info - - info = 0 - if (.not.allocated(x%combuf)) then - call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') - return - end if - - select type(ii => idx) - class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) - class default - call psb_errpush(info, 'd_oacc_gthzbuf') - return - end select - - if (x%is_host()) call x%sync_space() - - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do - end subroutine d_oacc_gthzbuf - - subroutine d_oacc_gthzv_x(i, n, idx, x, y) - use psb_base_mod - implicit none - integer(psb_ipk_) :: i, n - class(psb_i_base_vect_type):: idx - real(psb_dpk_) :: y(:) - class(psb_d_vect_oacc):: x - integer(psb_ipk_) :: info - - info = 0 - - select type(ii => idx) - class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) - class default - call psb_errpush(info, 'd_oacc_gthzv_x') - return - end select - - if (x%is_host()) call x%sync_space() - - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do - end subroutine d_oacc_gthzv_x - - subroutine d_oacc_ins_v(n, irl, val, dupl, x, info) - use psi_serial_mod - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: n, dupl - class(psb_i_base_vect_type), intent(inout) :: irl - class(psb_d_base_vect_type), intent(inout) :: val - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: i, isz - logical :: done_oacc - - info = 0 - if (psb_errstatus_fatal()) return - - done_oacc = .false. - select type(virl => irl) - type is (psb_i_vect_oacc) - select type(vval => val) - type is (psb_d_vect_oacc) - if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space(info) - if (x%is_host()) call x%sync_space() - !$acc parallel loop - do i = 1, n - x%v(virl%v(i)) = vval%v(i) - end do - call x%set_dev() - done_oacc = .true. - end select - end select - - if (.not.done_oacc) then - select type(virl => irl) - type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space(info) - end select - select type(vval => val) - type is (psb_d_vect_oacc) - if (vval%is_dev()) call vval%sync_space() - end select - call x%ins(n, irl%v, val%v, dupl, info) - end if - - if (info /= 0) then - call psb_errpush(info, 'oacc_vect_ins') - return - end if - - end subroutine d_oacc_ins_v - - - - subroutine d_oacc_ins_a(n, irl, val, dupl, x, info) - use psi_serial_mod - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: n, dupl - integer(psb_ipk_), intent(in) :: irl(:) - real(psb_dpk_), intent(in) :: val(:) - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: i - - info = 0 - if (x%is_dev()) call x%sync_space() - call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) - call x%set_host() - !$acc update device(x%v) - - end subroutine d_oacc_ins_a - - - - subroutine d_oacc_bld_mn(x, n) - use psb_base_mod - implicit none - integer(psb_mpk_), intent(in) :: n - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: info - - call x%all(n, info) - if (info /= 0) then - call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) - end if - call x%set_host() - !$acc update device(x%v) - - end subroutine d_oacc_bld_mn - - - subroutine d_oacc_bld_x(x, this) - use psb_base_mod - implicit none - real(psb_dpk_), intent(in) :: this(:) - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: info - - call psb_realloc(size(this), x%v, info) - if (info /= 0) then - info = psb_err_alloc_request_ - call psb_errpush(info, 'd_oacc_bld_x', & - i_err=(/size(this), izero, izero, izero, izero/)) - return - end if - - x%v(:) = this(:) - call x%set_host() - !$acc update device(x%v) - - end subroutine d_oacc_bld_x - - - subroutine d_oacc_asb_m(n, x, info) - use psb_base_mod - implicit none - integer(psb_mpk_), intent(in) :: n - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(out) :: info - integer(psb_mpk_) :: nd - - info = psb_success_ - - if (x%is_dev()) then - nd = size(x%v) - if (nd < n) then - call x%sync() - call x%psb_d_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() - call x%set_host() - end if - else - if (size(x%v) < n) then - call x%psb_d_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() - call x%set_host() - end if - end if - end subroutine d_oacc_asb_m - - - - subroutine d_oacc_set_scal(x, val, first, last) - class(psb_d_vect_oacc), intent(inout) :: x - real(psb_dpk_), intent(in) :: val - integer(psb_ipk_), optional :: first, last - - integer(psb_ipk_) :: first_, last_ - first_ = 1 - last_ = x%get_nrows() - if (present(first)) first_ = max(1, first) - if (present(last)) last_ = min(last, last_) - - !$acc parallel loop - do i = first_, last_ - x%v(i) = val - end do - !$acc end parallel loop - - call x%set_dev() - end subroutine d_oacc_set_scal - - - - subroutine d_oacc_zero(x) - use psi_serial_mod - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - call x%set_dev() - call x%set_scal(dzero) - end subroutine d_oacc_zero - - function d_oacc_get_nrows(x) result(res) - implicit none - class(psb_d_vect_oacc), intent(in) :: x - integer(psb_ipk_) :: res - - if (allocated(x%v)) res = size(x%v) - end function d_oacc_get_nrows - - function d_oacc_get_fmt() result(res) - implicit none - character(len=5) :: res - res = "dOACC" - - end function d_oacc_get_fmt - - function d_oacc_vect_dot(n, x, y) result(res) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - class(psb_d_base_vect_type), intent(inout) :: y - integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res - real(psb_dpk_), external :: ddot - integer(psb_ipk_) :: info - integer(psb_ipk_) :: i - - res = dzero - - select type(yy => y) - type is (psb_d_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n, x%v, 1, yy%v, 1) - type is (psb_d_vect_oacc) - if (x%is_host()) call x%sync() - if (yy%is_host()) call yy%sync() - - !$acc parallel loop reduction(+:res) present(x%v, yy%v) - do i = 1, n - res = res + x%v(i) * yy%v(i) - end do - !$acc end parallel loop - - class default - call x%sync() - res = y%dot(n, x%v) - end select - - end function d_oacc_vect_dot - - - - - function d_oacc_dot_a(n, x, y) result(res) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - real(psb_dpk_), intent(in) :: y(:) - integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res - real(psb_dpk_), external :: ddot - - if (x%is_dev()) call x%sync() - res = ddot(n, y, 1, x%v, 1) - - end function d_oacc_dot_a - - ! subroutine d_oacc_set_vect(x,y) - ! implicit none - ! class(psb_d_vect_oacc), intent(inout) :: x - ! real(psb_dpk_), intent(in) :: y(:) - ! integer(psb_ipk_) :: info - - ! if (size(x%v) /= size(y)) then - ! call x%free(info) - ! call x%all(size(y),info) - ! end if - ! x%v(:) = y(:) - ! call x%set_host() - ! end subroutine d_oacc_set_vect - - subroutine d_oacc_to_dev(v) - implicit none - real(psb_dpk_) :: v(:) - !$acc update device(v) - end subroutine d_oacc_to_dev - - subroutine d_oacc_to_host(v) - implicit none - real(psb_dpk_) :: v(:) - !$acc update self(v) - end subroutine d_oacc_to_host - +!!$ subroutine d_oacc_absval2(x, y) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ class(psb_d_base_vect_type), intent(inout) :: y +!!$ integer(psb_ipk_) :: n +!!$ integer(psb_ipk_) :: i +!!$ +!!$ n = min(size(x%v), size(y%v)) +!!$ select type (yy => y) +!!$ class is (psb_d_vect_oacc) +!!$ if (x%is_host()) call x%sync() +!!$ if (yy%is_host()) call yy%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ yy%v(i) = abs(x%v(i)) +!!$ end do +!!$ class default +!!$ if (x%is_dev()) call x%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ call x%psb_d_base_vect_type%absval(y) +!!$ end select +!!$ end subroutine d_oacc_absval2 +!!$ +!!$ subroutine d_oacc_scal(alpha, x) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ real(psb_dpk_), intent(in) :: alpha +!!$ integer(psb_ipk_) :: info +!!$ integer(psb_ipk_) :: i +!!$ +!!$ if (x%is_host()) call x%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, size(x%v) +!!$ x%v(i) = alpha * x%v(i) +!!$ end do +!!$ call x%set_dev() +!!$ end subroutine d_oacc_scal +!!$ +!!$ function d_oacc_nrm2(n, x) result(res) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_), intent(in) :: n +!!$ real(psb_dpk_) :: res +!!$ integer(psb_ipk_) :: info +!!$ real(psb_dpk_) :: sum +!!$ integer(psb_ipk_) :: i +!!$ +!!$ if (x%is_host()) call x%sync_space() +!!$ sum = 0.0 +!!$ !$acc parallel loop reduction(+:sum) +!!$ do i = 1, n +!!$ sum = sum + x%v(i) * x%v(i) +!!$ end do +!!$ res = sqrt(sum) +!!$ end function d_oacc_nrm2 +!!$ +!!$ function d_oacc_amax(n, x) result(res) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_), intent(in) :: n +!!$ real(psb_dpk_) :: res +!!$ integer(psb_ipk_) :: info +!!$ real(psb_dpk_) :: max_val +!!$ integer(psb_ipk_) :: i +!!$ +!!$ if (x%is_host()) call x%sync_space() +!!$ max_val = -huge(0.0) +!!$ !$acc parallel loop reduction(max:max_val) +!!$ do i = 1, n +!!$ if (x%v(i) > max_val) max_val = x%v(i) +!!$ end do +!!$ res = max_val +!!$ end function d_oacc_amax +!!$ +!!$ function d_oacc_asum(n, x) result(res) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_), intent(in) :: n +!!$ real(psb_dpk_) :: res +!!$ integer(psb_ipk_) :: info +!!$ real(psb_dpk_) :: sum +!!$ integer(psb_ipk_) :: i +!!$ +!!$ if (x%is_host()) call x%sync_space() +!!$ sum = 0.0 +!!$ !$acc parallel loop reduction(+:sum) +!!$ do i = 1, n +!!$ sum = sum + abs(x%v(i)) +!!$ end do +!!$ res = sum +!!$ end function d_oacc_asum +!!$ +!!$ +!!$ subroutine d_oacc_mlt_v(x, y, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ class(psb_d_base_vect_type), intent(inout) :: x +!!$ class(psb_d_vect_oacc), intent(inout) :: y +!!$ integer(psb_ipk_), intent(out) :: info +!!$ +!!$ integer(psb_ipk_) :: i, n +!!$ +!!$ info = 0 +!!$ n = min(x%get_nrows(), y%get_nrows()) +!!$ select type(xx => x) +!!$ type is (psb_d_base_vect_type) +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ end select +!!$ end subroutine d_oacc_mlt_v +!!$ +!!$ subroutine d_oacc_mlt_a(x, y, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ real(psb_dpk_), intent(in) :: x(:) +!!$ class(psb_d_vect_oacc), intent(inout) :: y +!!$ integer(psb_ipk_), intent(out) :: info +!!$ integer(psb_ipk_) :: i, n +!!$ +!!$ info = 0 +!!$ if (y%is_dev()) call y%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, size(x) +!!$ y%v(i) = y%v(i) * x(i) +!!$ end do +!!$ call y%set_host() +!!$ end subroutine d_oacc_mlt_a +!!$ +!!$ subroutine d_oacc_mlt_a_2(alpha, x, y, beta, z, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ real(psb_dpk_), intent(in) :: alpha, beta +!!$ real(psb_dpk_), intent(in) :: x(:) +!!$ real(psb_dpk_), intent(in) :: y(:) +!!$ class(psb_d_vect_oacc), intent(inout) :: z +!!$ integer(psb_ipk_), intent(out) :: info +!!$ integer(psb_ipk_) :: i, n +!!$ +!!$ info = 0 +!!$ if (z%is_dev()) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, size(x) +!!$ z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end subroutine d_oacc_mlt_a_2 +!!$ +!!$ subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) +!!$ use psi_serial_mod +!!$ use psb_string_mod +!!$ implicit none +!!$ real(psb_dpk_), intent(in) :: alpha, beta +!!$ class(psb_d_base_vect_type), intent(inout) :: x +!!$ class(psb_d_base_vect_type), intent(inout) :: y +!!$ class(psb_d_vect_oacc), intent(inout) :: z +!!$ integer(psb_ipk_), intent(out) :: info +!!$ character(len=1), intent(in), optional :: conjgx, conjgy +!!$ integer(psb_ipk_) :: i, n +!!$ logical :: conjgx_, conjgy_ +!!$ +!!$ conjgx_ = .false. +!!$ conjgy_ = .false. +!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') +!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') +!!$ +!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) +!!$ +!!$ info = 0 +!!$ select type(xx => x) +!!$ class is (psb_d_vect_oacc) +!!$ select type (yy => y) +!!$ class is (psb_d_vect_oacc) +!!$ if (xx%is_host()) call xx%sync_space() +!!$ if (yy%is_host()) call yy%sync_space() +!!$ if ((beta /= dzero) .and. (z%is_host())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_dev() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (yy%is_dev()) call yy%sync() +!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ class default +!!$ if (x%is_dev()) call x%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ end subroutine d_oacc_mlt_v_2 +!!$ +!!$ +!!$ subroutine d_oacc_axpby_v(m, alpha, x, beta, y, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ integer(psb_ipk_), intent(in) :: m +!!$ class(psb_d_base_vect_type), intent(inout) :: x +!!$ class(psb_d_vect_oacc), intent(inout) :: y +!!$ real(psb_dpk_), intent(in) :: alpha, beta +!!$ integer(psb_ipk_), intent(out) :: info +!!$ integer(psb_ipk_) :: nx, ny, i +!!$ +!!$ info = psb_success_ +!!$ +!!$ select type(xx => x) +!!$ type is (psb_d_vect_oacc) +!!$ if ((beta /= dzero) .and. y%is_host()) call y%sync_space() +!!$ if (xx%is_host()) call xx%sync_space() +!!$ nx = size(xx%v) +!!$ ny = size(y%v) +!!$ if ((nx < m) .or. (ny < m)) then +!!$ info = psb_err_internal_error_ +!!$ else +!!$ !$acc parallel loop +!!$ do i = 1, m +!!$ y%v(i) = alpha * xx%v(i) + beta * y%v(i) +!!$ end do +!!$ end if +!!$ call y%set_dev() +!!$ class default +!!$ if ((alpha /= dzero) .and. (x%is_dev())) call x%sync() +!!$ call y%axpby(m, alpha, x%v, beta, info) +!!$ end select +!!$ end subroutine d_oacc_axpby_v +!!$ +!!$ subroutine d_oacc_axpby_a(m, alpha, x, beta, y, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ integer(psb_ipk_), intent(in) :: m +!!$ real(psb_dpk_), intent(in) :: x(:) +!!$ class(psb_d_vect_oacc), intent(inout) :: y +!!$ real(psb_dpk_), intent(in) :: alpha, beta +!!$ integer(psb_ipk_), intent(out) :: info +!!$ integer(psb_ipk_) :: i +!!$ +!!$ if ((beta /= dzero) .and. (y%is_dev())) call y%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, m +!!$ y%v(i) = alpha * x(i) + beta * y%v(i) +!!$ end do +!!$ call y%set_host() +!!$ end subroutine d_oacc_axpby_a +!!$ +!!$ subroutine d_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ integer(psb_ipk_), intent(in) :: m +!!$ class(psb_d_base_vect_type), intent(inout) :: x +!!$ class(psb_d_base_vect_type), intent(inout) :: y +!!$ class(psb_d_vect_oacc), intent(inout) :: z +!!$ real(psb_dpk_), intent(in) :: alpha, beta, gamma, delta +!!$ integer(psb_ipk_), intent(out) :: info +!!$ integer(psb_ipk_) :: nx, ny, nz, i +!!$ logical :: gpu_done +!!$ +!!$ info = psb_success_ +!!$ gpu_done = .false. +!!$ +!!$ select type(xx => x) +!!$ class is (psb_d_vect_oacc) +!!$ select type(yy => y) +!!$ class is (psb_d_vect_oacc) +!!$ select type(zz => z) +!!$ class is (psb_d_vect_oacc) +!!$ if ((beta /= dzero) .and. yy%is_host()) call yy%sync_space() +!!$ if ((delta /= dzero) .and. zz%is_host()) call zz%sync_space() +!!$ if (xx%is_host()) call xx%sync_space() +!!$ nx = size(xx%v) +!!$ ny = size(yy%v) +!!$ nz = size(zz%v) +!!$ if ((nx < m) .or. (ny < m) .or. (nz < m)) then +!!$ info = psb_err_internal_error_ +!!$ else +!!$ !$acc parallel loop +!!$ do i = 1, m +!!$ yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) +!!$ zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) +!!$ end do +!!$ end if +!!$ call yy%set_dev() +!!$ call zz%set_dev() +!!$ gpu_done = .true. +!!$ end select +!!$ end select +!!$ end select +!!$ +!!$ if (.not. gpu_done) then +!!$ if (x%is_host()) call x%sync() +!!$ if (y%is_host()) call y%sync() +!!$ if (z%is_host()) call z%sync() +!!$ call y%axpby(m, alpha, x, beta, info) +!!$ call z%axpby(m, gamma, y, delta, info) +!!$ end if +!!$ end subroutine d_oacc_abgdxyz +!!$ +!!$ +!!$ subroutine d_oacc_sctb_buf(i, n, idx, beta, y) +!!$ use psb_base_mod +!!$ implicit none +!!$ integer(psb_ipk_) :: i, n +!!$ class(psb_i_base_vect_type) :: idx +!!$ real(psb_dpk_) :: beta +!!$ class(psb_d_vect_oacc) :: y +!!$ integer(psb_ipk_) :: info +!!$ +!!$ if (.not.allocated(y%combuf)) then +!!$ call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') +!!$ return +!!$ end if +!!$ +!!$ select type(ii => idx) +!!$ class is (psb_i_vect_oacc) +!!$ if (ii%is_host()) call ii%sync_space(info) +!!$ if (y%is_host()) call y%sync_space() +!!$ +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) +!!$ end do +!!$ +!!$ class default +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) +!!$ end do +!!$ end select +!!$ end subroutine d_oacc_sctb_buf +!!$ +!!$ subroutine d_oacc_sctb_x(i, n, idx, x, beta, y) +!!$ use psb_base_mod +!!$ implicit none +!!$ integer(psb_ipk_):: i, n +!!$ class(psb_i_base_vect_type) :: idx +!!$ real(psb_dpk_) :: beta, x(:) +!!$ class(psb_d_vect_oacc) :: y +!!$ integer(psb_ipk_) :: info, ni +!!$ +!!$ select type(ii => idx) +!!$ class is (psb_i_vect_oacc) +!!$ if (ii%is_host()) call ii%sync_space(info) +!!$ class default +!!$ call psb_errpush(info, 'd_oacc_sctb_x') +!!$ return +!!$ end select +!!$ +!!$ if (y%is_host()) call y%sync_space() +!!$ +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) +!!$ end do +!!$ +!!$ call y%set_dev() +!!$ end subroutine d_oacc_sctb_x +!!$ +!!$ +!!$ +!!$ subroutine d_oacc_sctb(n, idx, x, beta, y) +!!$ use psb_base_mod +!!$ implicit none +!!$ integer(psb_ipk_) :: n +!!$ integer(psb_ipk_) :: idx(:) +!!$ real(psb_dpk_) :: beta, x(:) +!!$ class(psb_d_vect_oacc) :: y +!!$ integer(psb_ipk_) :: info +!!$ integer(psb_ipk_) :: i +!!$ +!!$ if (n == 0) return +!!$ if (y%is_dev()) call y%sync_space() +!!$ +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(idx(i)) = beta * y%v(idx(i)) + x(i) +!!$ end do +!!$ +!!$ call y%set_host() +!!$ end subroutine d_oacc_sctb +!!$ +!!$ +!!$ subroutine d_oacc_gthzbuf(i, n, idx, x) +!!$ use psb_base_mod +!!$ implicit none +!!$ integer(psb_ipk_) :: i, n +!!$ class(psb_i_base_vect_type) :: idx +!!$ class(psb_d_vect_oacc) :: x +!!$ integer(psb_ipk_) :: info +!!$ +!!$ info = 0 +!!$ if (.not.allocated(x%combuf)) then +!!$ call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') +!!$ return +!!$ end if +!!$ +!!$ select type(ii => idx) +!!$ class is (psb_i_vect_oacc) +!!$ if (ii%is_host()) call ii%sync_space(info) +!!$ class default +!!$ call psb_errpush(info, 'd_oacc_gthzbuf') +!!$ return +!!$ end select +!!$ +!!$ if (x%is_host()) call x%sync_space() +!!$ +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ x%combuf(i) = x%v(idx%v(i)) +!!$ end do +!!$ end subroutine d_oacc_gthzbuf +!!$ +!!$ subroutine d_oacc_gthzv_x(i, n, idx, x, y) +!!$ use psb_base_mod +!!$ implicit none +!!$ integer(psb_ipk_) :: i, n +!!$ class(psb_i_base_vect_type):: idx +!!$ real(psb_dpk_) :: y(:) +!!$ class(psb_d_vect_oacc):: x +!!$ integer(psb_ipk_) :: info +!!$ +!!$ info = 0 +!!$ +!!$ select type(ii => idx) +!!$ class is (psb_i_vect_oacc) +!!$ if (ii%is_host()) call ii%sync_space(info) +!!$ class default +!!$ call psb_errpush(info, 'd_oacc_gthzv_x') +!!$ return +!!$ end select +!!$ +!!$ if (x%is_host()) call x%sync_space() +!!$ +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y(i) = x%v(idx%v(i)) +!!$ end do +!!$ end subroutine d_oacc_gthzv_x +!!$ +!!$ subroutine d_oacc_ins_v(n, irl, val, dupl, x, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_), intent(in) :: n, dupl +!!$ class(psb_i_base_vect_type), intent(inout) :: irl +!!$ class(psb_d_base_vect_type), intent(inout) :: val +!!$ integer(psb_ipk_), intent(out) :: info +!!$ +!!$ integer(psb_ipk_) :: i, isz +!!$ logical :: done_oacc +!!$ +!!$ info = 0 +!!$ if (psb_errstatus_fatal()) return +!!$ +!!$ done_oacc = .false. +!!$ select type(virl => irl) +!!$ type is (psb_i_vect_oacc) +!!$ select type(vval => val) +!!$ type is (psb_d_vect_oacc) +!!$ if (vval%is_host()) call vval%sync_space() +!!$ if (virl%is_host()) call virl%sync_space(info) +!!$ if (x%is_host()) call x%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ x%v(virl%v(i)) = vval%v(i) +!!$ end do +!!$ call x%set_dev() +!!$ done_oacc = .true. +!!$ end select +!!$ end select +!!$ +!!$ if (.not.done_oacc) then +!!$ select type(virl => irl) +!!$ type is (psb_i_vect_oacc) +!!$ if (virl%is_dev()) call virl%sync_space(info) +!!$ end select +!!$ select type(vval => val) +!!$ type is (psb_d_vect_oacc) +!!$ if (vval%is_dev()) call vval%sync_space() +!!$ end select +!!$ call x%ins(n, irl%v, val%v, dupl, info) +!!$ end if +!!$ +!!$ if (info /= 0) then +!!$ call psb_errpush(info, 'oacc_vect_ins') +!!$ return +!!$ end if +!!$ +!!$ end subroutine d_oacc_ins_v +!!$ +!!$ +!!$ +!!$ subroutine d_oacc_ins_a(n, irl, val, dupl, x, info) +!!$ use psi_serial_mod +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_), intent(in) :: n, dupl +!!$ integer(psb_ipk_), intent(in) :: irl(:) +!!$ real(psb_dpk_), intent(in) :: val(:) +!!$ integer(psb_ipk_), intent(out) :: info +!!$ +!!$ integer(psb_ipk_) :: i +!!$ +!!$ info = 0 +!!$ if (x%is_dev()) call x%sync_space() +!!$ call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) +!!$ call x%set_host() +!!$ !$acc update device(x%v) +!!$ +!!$ end subroutine d_oacc_ins_a +!!$ +!!$ +!!$ +!!$ subroutine d_oacc_bld_mn(x, n) +!!$ use psb_base_mod +!!$ implicit none +!!$ integer(psb_mpk_), intent(in) :: n +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_) :: info +!!$ +!!$ call x%all(n, info) +!!$ if (info /= 0) then +!!$ call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) +!!$ end if +!!$ call x%set_host() +!!$ !$acc update device(x%v) +!!$ +!!$ end subroutine d_oacc_bld_mn +!!$ +!!$ +!!$ subroutine d_oacc_bld_x(x, this) +!!$ use psb_base_mod +!!$ implicit none +!!$ real(psb_dpk_), intent(in) :: this(:) +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_) :: info +!!$ +!!$ call psb_realloc(size(this), x%v, info) +!!$ if (info /= 0) then +!!$ info = psb_err_alloc_request_ +!!$ call psb_errpush(info, 'd_oacc_bld_x', & +!!$ i_err=(/size(this), izero, izero, izero, izero/)) +!!$ return +!!$ end if +!!$ +!!$ x%v(:) = this(:) +!!$ call x%set_host() +!!$ !$acc update device(x%v) +!!$ +!!$ end subroutine d_oacc_bld_x +!!$ +!!$ +!!$ subroutine d_oacc_asb_m(n, x, info) +!!$ use psb_base_mod +!!$ implicit none +!!$ integer(psb_mpk_), intent(in) :: n +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_), intent(out) :: info +!!$ integer(psb_mpk_) :: nd +!!$ +!!$ info = psb_success_ +!!$ +!!$ if (x%is_dev()) then +!!$ nd = size(x%v) +!!$ if (nd < n) then +!!$ call x%sync() +!!$ call x%psb_d_base_vect_type%asb(n, info) +!!$ if (info == psb_success_) call x%sync_space() +!!$ call x%set_host() +!!$ end if +!!$ else +!!$ if (size(x%v) < n) then +!!$ call x%psb_d_base_vect_type%asb(n, info) +!!$ if (info == psb_success_) call x%sync_space() +!!$ call x%set_host() +!!$ end if +!!$ end if +!!$ end subroutine d_oacc_asb_m +!!$ +!!$ +!!$ +!!$ subroutine d_oacc_set_scal(x, val, first, last) +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ real(psb_dpk_), intent(in) :: val +!!$ integer(psb_ipk_), optional :: first, last +!!$ +!!$ integer(psb_ipk_) :: first_, last_ +!!$ first_ = 1 +!!$ last_ = x%get_nrows() +!!$ if (present(first)) first_ = max(1, first) +!!$ if (present(last)) last_ = min(last, last_) +!!$ +!!$ !$acc parallel loop +!!$ do i = first_, last_ +!!$ x%v(i) = val +!!$ end do +!!$ !$acc end parallel loop +!!$ +!!$ call x%set_dev() +!!$ end subroutine d_oacc_set_scal +!!$ +!!$ +!!$ +!!$ subroutine d_oacc_zero(x) +!!$ use psi_serial_mod +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ call x%set_dev() +!!$ call x%set_scal(dzero) +!!$ end subroutine d_oacc_zero +!!$ +!!$ function d_oacc_get_nrows(x) result(res) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(in) :: x +!!$ integer(psb_ipk_) :: res +!!$ +!!$ if (allocated(x%v)) res = size(x%v) +!!$ end function d_oacc_get_nrows +!!$ +!!$ function d_oacc_get_fmt() result(res) +!!$ implicit none +!!$ character(len=5) :: res +!!$ res = "dOACC" +!!$ +!!$ end function d_oacc_get_fmt +!!$ +!!$ function d_oacc_vect_dot(n, x, y) result(res) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ class(psb_d_base_vect_type), intent(inout) :: y +!!$ integer(psb_ipk_), intent(in) :: n +!!$ real(psb_dpk_) :: res +!!$ real(psb_dpk_), external :: ddot +!!$ integer(psb_ipk_) :: info +!!$ integer(psb_ipk_) :: i +!!$ +!!$ res = dzero +!!$ +!!$ select type(yy => y) +!!$ type is (psb_d_base_vect_type) +!!$ if (x%is_dev()) call x%sync() +!!$ res = ddot(n, x%v, 1, yy%v, 1) +!!$ type is (psb_d_vect_oacc) +!!$ if (x%is_host()) call x%sync() +!!$ if (yy%is_host()) call yy%sync() +!!$ +!!$ !$acc parallel loop reduction(+:res) present(x%v, yy%v) +!!$ do i = 1, n +!!$ res = res + x%v(i) * yy%v(i) +!!$ end do +!!$ !$acc end parallel loop +!!$ +!!$ class default +!!$ call x%sync() +!!$ res = y%dot(n, x%v) +!!$ end select +!!$ +!!$ end function d_oacc_vect_dot +!!$ +!!$ +!!$ +!!$ +!!$ function d_oacc_dot_a(n, x, y) result(res) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ real(psb_dpk_), intent(in) :: y(:) +!!$ integer(psb_ipk_), intent(in) :: n +!!$ real(psb_dpk_) :: res +!!$ real(psb_dpk_), external :: ddot +!!$ +!!$ if (x%is_dev()) call x%sync() +!!$ res = ddot(n, y, 1, x%v, 1) +!!$ +!!$ end function d_oacc_dot_a +!!$ +!!$ ! subroutine d_oacc_set_vect(x,y) +!!$ ! implicit none +!!$ ! class(psb_d_vect_oacc), intent(inout) :: x +!!$ ! real(psb_dpk_), intent(in) :: y(:) +!!$ ! integer(psb_ipk_) :: info +!!$ +!!$ ! if (size(x%v) /= size(y)) then +!!$ ! call x%free(info) +!!$ ! call x%all(size(y),info) +!!$ ! end if +!!$ ! x%v(:) = y(:) +!!$ ! call x%set_host() +!!$ ! end subroutine d_oacc_set_vect +!!$ +!!$ subroutine d_oacc_to_dev(v) +!!$ implicit none +!!$ real(psb_dpk_) :: v(:) +!!$ !$acc update device(v) +!!$ end subroutine d_oacc_to_dev +!!$ +!!$ subroutine d_oacc_to_host(v) +!!$ implicit none +!!$ real(psb_dpk_) :: v(:) +!!$ !$acc update self(v) +!!$ end subroutine d_oacc_to_host +!!$ subroutine d_oacc_sync_space(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x @@ -871,96 +869,96 @@ contains res = (x%state == is_sync) end function d_oacc_is_sync - - subroutine d_oacc_vect_all(n, x, info) - use psi_serial_mod - use psb_realloc_mod - implicit none - integer(psb_ipk_), intent(in) :: n - class(psb_d_vect_oacc), intent(out) :: x - integer(psb_ipk_), intent(out) :: info - - call psb_realloc(n, x%v, info) - if (info == 0) then - call x%set_host() - !$acc enter data create(x%v) - call x%sync_space() - end if - if (info /= 0) then - info = psb_err_alloc_request_ - call psb_errpush(info, 'd_oacc_all', & - i_err=(/n, n, n, n, n/)) - end if - end subroutine d_oacc_vect_all - - - subroutine d_oacc_vect_free(x, info) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(out) :: info - info = 0 - if (allocated(x%v)) then - !$acc exit data delete(x%v) finalize - deallocate(x%v, stat=info) - end if - - end subroutine d_oacc_vect_free - - function oacc_get_size(x) result(res) - implicit none - class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: res - - if (x%is_dev()) call x%sync() - res = size(x%v) - end function oacc_get_size - - - subroutine initialize(N) - integer(psb_ipk_) :: N - integer(psb_ipk_) :: i - allocate(v1(N),v2(N),p(N)) - !$acc enter data create(v1,v2,p) - !$acc parallel - !$acc loop - do i=1,n - v1(i) = i - v2(i) = n+i - end do - !$acc end parallel - end subroutine initialize - subroutine finalize_dev() - !$acc exit data delete(v1,v2,p) - end subroutine finalize_dev - subroutine finalize_host() - deallocate(v1,v2,p) - end subroutine finalize_host - subroutine to_dev() - !$acc update device(v1,v2) - end subroutine to_dev - subroutine to_host() - !$acc update self(v1,v2) - end subroutine to_host - function d_dot(N) result(res) - real(kind(1.d0)) :: res - integer(psb_ipk_) :: i,N - real(kind(1.d0)) :: t1,t2,t3 - res = 0.0d0 - !$acc parallel - !$acc loop reduction(+:res) - do i=1,N - res = res + v1(i) * v2(i) - end do - !$acc end parallel - - end function d_dot - function h_dot(N) result(res) - integer(psb_ipk_) :: i,N - real(kind(1.d0)) :: t1,t2,t3,res - res = 0.0d0 - do i=1,N - res = res + v1(i) * v2(i) - end do - end function h_dot - -end module psb_d_oacc_vect_mod \ No newline at end of file +!!$ +!!$ subroutine d_oacc_vect_all(n, x, info) +!!$ use psi_serial_mod +!!$ use psb_realloc_mod +!!$ implicit none +!!$ integer(psb_ipk_), intent(in) :: n +!!$ class(psb_d_vect_oacc), intent(out) :: x +!!$ integer(psb_ipk_), intent(out) :: info +!!$ +!!$ call psb_realloc(n, x%v, info) +!!$ if (info == 0) then +!!$ call x%set_host() +!!$ !$acc enter data create(x%v) +!!$ call x%sync_space() +!!$ end if +!!$ if (info /= 0) then +!!$ info = psb_err_alloc_request_ +!!$ call psb_errpush(info, 'd_oacc_all', & +!!$ i_err=(/n, n, n, n, n/)) +!!$ end if +!!$ end subroutine d_oacc_vect_all +!!$ +!!$ +!!$ subroutine d_oacc_vect_free(x, info) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_), intent(out) :: info +!!$ info = 0 +!!$ if (allocated(x%v)) then +!!$ !$acc exit data delete(x%v) finalize +!!$ deallocate(x%v, stat=info) +!!$ end if +!!$ +!!$ end subroutine d_oacc_vect_free +!!$ +!!$ function oacc_get_size(x) result(res) +!!$ implicit none +!!$ class(psb_d_vect_oacc), intent(inout) :: x +!!$ integer(psb_ipk_) :: res +!!$ +!!$ if (x%is_dev()) call x%sync() +!!$ res = size(x%v) +!!$ end function oacc_get_size +!!$ +!!$ +!!$ subroutine initialize(N) +!!$ integer(psb_ipk_) :: N +!!$ integer(psb_ipk_) :: i +!!$ allocate(v1(N),v2(N),p(N)) +!!$ !$acc enter data create(v1,v2,p) +!!$ !$acc parallel +!!$ !$acc loop +!!$ do i=1,n +!!$ v1(i) = i +!!$ v2(i) = n+i +!!$ end do +!!$ !$acc end parallel +!!$ end subroutine initialize +!!$ subroutine finalize_dev() +!!$ !$acc exit data delete(v1,v2,p) +!!$ end subroutine finalize_dev +!!$ subroutine finalize_host() +!!$ deallocate(v1,v2,p) +!!$ end subroutine finalize_host +!!$ subroutine to_dev() +!!$ !$acc update device(v1,v2) +!!$ end subroutine to_dev +!!$ subroutine to_host() +!!$ !$acc update self(v1,v2) +!!$ end subroutine to_host +!!$ function d_dot(N) result(res) +!!$ real(kind(1.d0)) :: res +!!$ integer(psb_ipk_) :: i,N +!!$ real(kind(1.d0)) :: t1,t2,t3 +!!$ res = 0.0d0 +!!$ !$acc parallel +!!$ !$acc loop reduction(+:res) +!!$ do i=1,N +!!$ res = res + v1(i) * v2(i) +!!$ end do +!!$ !$acc end parallel +!!$ +!!$ end function d_dot +!!$ function h_dot(N) result(res) +!!$ integer(psb_ipk_) :: i,N +!!$ real(kind(1.d0)) :: t1,t2,t3,res +!!$ res = 0.0d0 +!!$ do i=1,N +!!$ res = res + v1(i) * v2(i) +!!$ end do +!!$ end function h_dot +!!$ +end module psb_d_oacc_vect_mod From e0d7091ecc81f3727ae4f75e170dea82d1948e13 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 9 Jul 2024 10:04:32 +0200 Subject: [PATCH 04/86] Makefile in openacc/impl --- openacc/impl/Makefile | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 openacc/impl/Makefile diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile new file mode 100755 index 00000000..fff48657 --- /dev/null +++ b/openacc/impl/Makefile @@ -0,0 +1,29 @@ +include ../../Make.inc +LIBDIR=../../lib +INCDIR=../../include +MODDIR=../../modules +# +# Compilers and such +# +#CCOPT= -g +FINCLUDES=$(FMFLAG).. $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FIFLAG).. +LIBNAME=libpsb_openacc.a + +OBJS= psb_d_oacc_csr_vect_mv.o + +objs: $(OBJS) + +lib: objs + ar cur ../$(LIBNAME) $(OBJS) + +clean: + /bin/rm -f $(OBJS) + +.c.o: + $(CC) $(CCOPT) $(CCOPENACC) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXOPENACC) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ From 6be998ac66c5a0869f10e58ace3ee2f2aec5cb8e Mon Sep 17 00:00:00 2001 From: tloloum Date: Tue, 9 Jul 2024 11:22:28 +0200 Subject: [PATCH 05/86] oacc_env_mod --- openacc/Makefile | 3 ++- openacc/psb_oacc_env_mod.F90 | 18 ++++++++++++++++++ openacc/psb_oacc_mod.F90 | 2 ++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 openacc/psb_oacc_env_mod.F90 diff --git a/openacc/Makefile b/openacc/Makefile index 3590249c..aae571ad 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -11,7 +11,7 @@ OFFLOAD=-fopenacc -foffload=nvptx-none="-march=sm_70" LIBDIR=../lib INCDIR=../include MODDIR=../modules -IMPLDIR=./impl # Adding the impl directory +IMPLDIR=./impl # Include and library paths INCLUDES=-I$(LIBDIR) -I$(INCDIR) -I$(MODDIR) -I$(IMPLDIR) @@ -20,6 +20,7 @@ LIBS=-L$(LIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lopenblas -lmetis # Source files FOBJS= psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o \ + psb_oacc_env_mod.o \ impl/psb_d_oacc_csr_vect_mv.o # Library name diff --git a/openacc/psb_oacc_env_mod.F90 b/openacc/psb_oacc_env_mod.F90 new file mode 100644 index 00000000..83c9426d --- /dev/null +++ b/openacc/psb_oacc_env_mod.F90 @@ -0,0 +1,18 @@ +module psb_oacc_env_mod +contains + + subroutine psb_oacc_init(ctxt, dev) + use psb_penv_mod + use psb_const_mod + use psb_error_mod + type(psb_ctxt_type), intent(in) :: ctxt + integer, intent(in), optional :: dev + + end subroutine psb_oacc_init + + subroutine psb_oacc_exit() + integer :: res + + end subroutine psb_oacc_exit + +end module psb_oacc_env_mod diff --git a/openacc/psb_oacc_mod.F90 b/openacc/psb_oacc_mod.F90 index ce5e85f9..fe827db8 100644 --- a/openacc/psb_oacc_mod.F90 +++ b/openacc/psb_oacc_mod.F90 @@ -1,6 +1,8 @@ module psb_oacc_mod use psb_const_mod + use psb_oacc_env_mod + use psb_d_oacc_vect_mod use psb_d_oacc_csr_mat_mod From 1f0e5918270e22d1f3dcf0f4bea0e299192ee2c5 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 9 Jul 2024 13:16:36 +0200 Subject: [PATCH 06/86] Reworked oacc_vect_mod. oacc_mlt_v_X generates ICE, to be fixed --- openacc/impl/Makefile | 2 +- openacc/impl/psb_d_oacc_mlt_v.f90 | 31 + openacc/impl/psb_d_oacc_mlt_v_2.f90 | 55 + openacc/psb_d_oacc_vect_mod.F90 | 1487 ++++++++++++++------------- 4 files changed, 831 insertions(+), 744 deletions(-) create mode 100644 openacc/impl/psb_d_oacc_mlt_v.f90 create mode 100644 openacc/impl/psb_d_oacc_mlt_v_2.f90 diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index fff48657..7bab6654 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -9,7 +9,7 @@ MODDIR=../../modules FINCLUDES=$(FMFLAG).. $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FIFLAG).. LIBNAME=libpsb_openacc.a -OBJS= psb_d_oacc_csr_vect_mv.o +OBJS= psb_d_oacc_csr_vect_mv.o psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o objs: $(OBJS) diff --git a/openacc/impl/psb_d_oacc_mlt_v.f90 b/openacc/impl/psb_d_oacc_mlt_v.f90 new file mode 100644 index 00000000..a4eb6660 --- /dev/null +++ b/openacc/impl/psb_d_oacc_mlt_v.f90 @@ -0,0 +1,31 @@ + +subroutine d_oacc_mlt_v(x, y, info) + use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v + + implicit none + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 +!!$ n = min(x%get_nrows(), y%get_nrows()) +!!$ select type(xx => x) +!!$ type is (psb_d_base_vect_type) +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ end select +end subroutine d_oacc_mlt_v diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..b59b4f56 --- /dev/null +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -0,0 +1,55 @@ +subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v_2 + use psb_string_mod + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ + + conjgx_ = .false. + conjgy_ = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + + info = 0 +!!$ select type(xx => x) +!!$ class is (psb_d_vect_oacc) +!!$ select type (yy => y) +!!$ class is (psb_d_vect_oacc) +!!$ if (xx%is_host()) call xx%sync_space() +!!$ if (yy%is_host()) call yy%sync_space() +!!$ if ((beta /= dzero) .and. (z%is_host())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_dev() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (yy%is_dev()) call yy%sync() +!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ class default +!!$ if (x%is_dev()) call x%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +end subroutine d_oacc_mlt_v_2 + diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index eda804ce..3139f9b8 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -5,63 +5,87 @@ module psb_d_oacc_vect_mod use psb_d_vect_mod use psb_i_vect_mod use psb_i_oacc_vect_mod - + integer(psb_ipk_), parameter, private :: is_host = -1 integer(psb_ipk_), parameter, private :: is_sync = 0 integer(psb_ipk_), parameter, private :: is_dev = 1 - + type, extends(psb_d_base_vect_type) :: psb_d_vect_oacc integer :: state = is_host contains -!!$ procedure, pass(x) :: get_nrows => d_oacc_get_nrows -!!$ procedure, nopass :: get_fmt => d_oacc_get_fmt -!!$ -!!$ procedure, pass(x) :: all => d_oacc_vect_all -!!$ procedure, pass(x) :: zero => d_oacc_zero -!!$ procedure, pass(x) :: asb_m => d_oacc_asb_m + procedure, pass(x) :: get_nrows => d_oacc_get_nrows + procedure, nopass :: get_fmt => d_oacc_get_fmt + + procedure, pass(x) :: all => d_oacc_vect_all + procedure, pass(x) :: zero => d_oacc_zero + procedure, pass(x) :: asb_m => d_oacc_asb_m procedure, pass(x) :: sync => d_oacc_sync procedure, pass(x) :: sync_space => d_oacc_sync_space -!!$ procedure, pass(x) :: bld_x => d_oacc_bld_x -!!$ procedure, pass(x) :: bld_mn => d_oacc_bld_mn -!!$ procedure, pass(x) :: free => d_oacc_vect_free -!!$ procedure, pass(x) :: ins_a => d_oacc_ins_a -!!$ procedure, pass(x) :: ins_v => d_oacc_ins_v + procedure, pass(x) :: bld_x => d_oacc_bld_x + procedure, pass(x) :: bld_mn => d_oacc_bld_mn + procedure, pass(x) :: free => d_oacc_vect_free + procedure, pass(x) :: ins_a => d_oacc_ins_a + procedure, pass(x) :: ins_v => d_oacc_ins_v procedure, pass(x) :: is_host => d_oacc_is_host procedure, pass(x) :: is_dev => d_oacc_is_dev procedure, pass(x) :: is_sync => d_oacc_is_sync procedure, pass(x) :: set_host => d_oacc_set_host procedure, pass(x) :: set_dev => d_oacc_set_dev procedure, pass(x) :: set_sync => d_oacc_set_sync -!!$ procedure, pass(x) :: set_scal => d_oacc_set_scal -!!$ -!!$ procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x -!!$ procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf -!!$ procedure, pass(y) :: sctb => d_oacc_sctb -!!$ procedure, pass(y) :: sctb_x => d_oacc_sctb_x -!!$ procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf -!!$ -!!$ procedure, pass(x) :: get_size => oacc_get_size -!!$ procedure, pass(x) :: dot_v => d_oacc_vect_dot -!!$ procedure, pass(x) :: dot_a => d_oacc_dot_a -!!$ procedure, pass(y) :: axpby_v => d_oacc_axpby_v -!!$ procedure, pass(y) :: axpby_a => d_oacc_axpby_a -!!$ procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz -!!$ procedure, pass(y) :: mlt_v => d_oacc_mlt_v -!!$ procedure, pass(y) :: mlt_a => d_oacc_mlt_a -!!$ procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 -!!$ procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 -!!$ procedure, pass(x) :: scal => d_oacc_scal -!!$ procedure, pass(x) :: nrm2 => d_oacc_nrm2 -!!$ procedure, pass(x) :: amax => d_oacc_amax -!!$ procedure, pass(x) :: asum => d_oacc_asum + procedure, pass(x) :: set_scal => d_oacc_set_scal + + procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf + procedure, pass(y) :: sctb => d_oacc_sctb + procedure, pass(y) :: sctb_x => d_oacc_sctb_x + procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf + + procedure, pass(x) :: get_size => oacc_get_size + procedure, pass(x) :: dot_v => d_oacc_vect_dot + procedure, pass(x) :: dot_a => d_oacc_dot_a + procedure, pass(y) :: axpby_v => d_oacc_axpby_v + procedure, pass(y) :: axpby_a => d_oacc_axpby_a + procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz + procedure, pass(y) :: mlt_a => d_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => d_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 + procedure, pass(x) :: scal => d_oacc_scal + procedure, pass(x) :: nrm2 => d_oacc_nrm2 + procedure, pass(x) :: amax => d_oacc_amax + procedure, pass(x) :: asum => d_oacc_asum procedure, pass(x) :: absval1 => d_oacc_absval1 -!!$ procedure, pass(x) :: absval2 => d_oacc_absval2 + procedure, pass(x) :: absval2 => d_oacc_absval2 end type psb_d_vect_oacc real(psb_dpk_), allocatable :: v1(:),v2(:),p(:) + interface + subroutine d_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine d_oacc_mlt_v + end interface + + + interface + subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine d_oacc_mlt_v_2 + end interface + contains subroutine d_oacc_absval1(x) @@ -73,106 +97,140 @@ contains n = size(x%v) !$acc parallel loop do i = 1, n - x%v(i) = abs(x%v(i)) + x%v(i) = abs(x%v(i)) end do call x%set_dev() end subroutine d_oacc_absval1 -!!$ subroutine d_oacc_absval2(x, y) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ class(psb_d_base_vect_type), intent(inout) :: y -!!$ integer(psb_ipk_) :: n -!!$ integer(psb_ipk_) :: i -!!$ -!!$ n = min(size(x%v), size(y%v)) -!!$ select type (yy => y) -!!$ class is (psb_d_vect_oacc) -!!$ if (x%is_host()) call x%sync() -!!$ if (yy%is_host()) call yy%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ yy%v(i) = abs(x%v(i)) -!!$ end do -!!$ class default -!!$ if (x%is_dev()) call x%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ call x%psb_d_base_vect_type%absval(y) -!!$ end select -!!$ end subroutine d_oacc_absval2 -!!$ -!!$ subroutine d_oacc_scal(alpha, x) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ real(psb_dpk_), intent(in) :: alpha -!!$ integer(psb_ipk_) :: info -!!$ integer(psb_ipk_) :: i -!!$ -!!$ if (x%is_host()) call x%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, size(x%v) -!!$ x%v(i) = alpha * x%v(i) -!!$ end do -!!$ call x%set_dev() -!!$ end subroutine d_oacc_scal -!!$ -!!$ function d_oacc_nrm2(n, x) result(res) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_), intent(in) :: n -!!$ real(psb_dpk_) :: res -!!$ integer(psb_ipk_) :: info -!!$ real(psb_dpk_) :: sum -!!$ integer(psb_ipk_) :: i -!!$ -!!$ if (x%is_host()) call x%sync_space() -!!$ sum = 0.0 -!!$ !$acc parallel loop reduction(+:sum) -!!$ do i = 1, n -!!$ sum = sum + x%v(i) * x%v(i) -!!$ end do -!!$ res = sqrt(sum) -!!$ end function d_oacc_nrm2 -!!$ -!!$ function d_oacc_amax(n, x) result(res) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_), intent(in) :: n -!!$ real(psb_dpk_) :: res -!!$ integer(psb_ipk_) :: info -!!$ real(psb_dpk_) :: max_val -!!$ integer(psb_ipk_) :: i -!!$ -!!$ if (x%is_host()) call x%sync_space() -!!$ max_val = -huge(0.0) -!!$ !$acc parallel loop reduction(max:max_val) -!!$ do i = 1, n -!!$ if (x%v(i) > max_val) max_val = x%v(i) -!!$ end do -!!$ res = max_val -!!$ end function d_oacc_amax -!!$ -!!$ function d_oacc_asum(n, x) result(res) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_), intent(in) :: n -!!$ real(psb_dpk_) :: res -!!$ integer(psb_ipk_) :: info -!!$ real(psb_dpk_) :: sum -!!$ integer(psb_ipk_) :: i -!!$ -!!$ if (x%is_host()) call x%sync_space() -!!$ sum = 0.0 -!!$ !$acc parallel loop reduction(+:sum) -!!$ do i = 1, n -!!$ sum = sum + abs(x%v(i)) -!!$ end do -!!$ res = sum -!!$ end function d_oacc_asum -!!$ -!!$ + subroutine d_oacc_absval2(x, y) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_d_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + !$acc parallel loop + do i = 1, n + yy%v(i) = abs(x%v(i)) + end do + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_d_base_vect_type%absval(y) + end select + end subroutine d_oacc_absval2 + + subroutine d_oacc_scal(alpha, x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: alpha + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, size(x%v) + x%v(i) = alpha * x%v(i) + end do + call x%set_dev() + end subroutine d_oacc_scal + + function d_oacc_nrm2(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + x%v(i) * x%v(i) + end do + res = sqrt(sum) + end function d_oacc_nrm2 + + function d_oacc_amax(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: max_val + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (x%v(i) > max_val) max_val = x%v(i) + end do + res = max_val + end function d_oacc_amax + + function d_oacc_asum(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i)) + end do + res = sum + end function d_oacc_asum + + + subroutine d_oacc_mlt_a(x, y, info) + implicit none + real(psb_dpk_), intent(in) :: x(:) + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync_space() + !$acc parallel loop + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine d_oacc_mlt_a + + subroutine d_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(in) :: y(:) + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync_space() + !$acc parallel loop + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine d_oacc_mlt_a_2 + + !!$ subroutine d_oacc_mlt_v(x, y, info) -!!$ use psi_serial_mod !!$ implicit none !!$ class(psb_d_base_vect_type), intent(inout) :: x !!$ class(psb_d_vect_oacc), intent(inout) :: y @@ -201,42 +259,6 @@ contains !!$ end select !!$ end subroutine d_oacc_mlt_v !!$ -!!$ subroutine d_oacc_mlt_a(x, y, info) -!!$ use psi_serial_mod -!!$ implicit none -!!$ real(psb_dpk_), intent(in) :: x(:) -!!$ class(psb_d_vect_oacc), intent(inout) :: y -!!$ integer(psb_ipk_), intent(out) :: info -!!$ integer(psb_ipk_) :: i, n -!!$ -!!$ info = 0 -!!$ if (y%is_dev()) call y%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, size(x) -!!$ y%v(i) = y%v(i) * x(i) -!!$ end do -!!$ call y%set_host() -!!$ end subroutine d_oacc_mlt_a -!!$ -!!$ subroutine d_oacc_mlt_a_2(alpha, x, y, beta, z, info) -!!$ use psi_serial_mod -!!$ implicit none -!!$ real(psb_dpk_), intent(in) :: alpha, beta -!!$ real(psb_dpk_), intent(in) :: x(:) -!!$ real(psb_dpk_), intent(in) :: y(:) -!!$ class(psb_d_vect_oacc), intent(inout) :: z -!!$ integer(psb_ipk_), intent(out) :: info -!!$ integer(psb_ipk_) :: i, n -!!$ -!!$ info = 0 -!!$ if (z%is_dev()) call z%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, size(x) -!!$ z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end subroutine d_oacc_mlt_a_2 -!!$ !!$ subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) !!$ use psi_serial_mod !!$ use psb_string_mod @@ -291,514 +313,513 @@ contains !!$ call z%set_host() !!$ end select !!$ end subroutine d_oacc_mlt_v_2 -!!$ -!!$ -!!$ subroutine d_oacc_axpby_v(m, alpha, x, beta, y, info) -!!$ use psi_serial_mod -!!$ implicit none -!!$ integer(psb_ipk_), intent(in) :: m -!!$ class(psb_d_base_vect_type), intent(inout) :: x -!!$ class(psb_d_vect_oacc), intent(inout) :: y -!!$ real(psb_dpk_), intent(in) :: alpha, beta -!!$ integer(psb_ipk_), intent(out) :: info -!!$ integer(psb_ipk_) :: nx, ny, i -!!$ -!!$ info = psb_success_ -!!$ -!!$ select type(xx => x) -!!$ type is (psb_d_vect_oacc) -!!$ if ((beta /= dzero) .and. y%is_host()) call y%sync_space() -!!$ if (xx%is_host()) call xx%sync_space() -!!$ nx = size(xx%v) -!!$ ny = size(y%v) -!!$ if ((nx < m) .or. (ny < m)) then -!!$ info = psb_err_internal_error_ -!!$ else -!!$ !$acc parallel loop -!!$ do i = 1, m -!!$ y%v(i) = alpha * xx%v(i) + beta * y%v(i) -!!$ end do -!!$ end if -!!$ call y%set_dev() -!!$ class default -!!$ if ((alpha /= dzero) .and. (x%is_dev())) call x%sync() -!!$ call y%axpby(m, alpha, x%v, beta, info) -!!$ end select -!!$ end subroutine d_oacc_axpby_v -!!$ -!!$ subroutine d_oacc_axpby_a(m, alpha, x, beta, y, info) -!!$ use psi_serial_mod -!!$ implicit none -!!$ integer(psb_ipk_), intent(in) :: m -!!$ real(psb_dpk_), intent(in) :: x(:) -!!$ class(psb_d_vect_oacc), intent(inout) :: y -!!$ real(psb_dpk_), intent(in) :: alpha, beta -!!$ integer(psb_ipk_), intent(out) :: info -!!$ integer(psb_ipk_) :: i -!!$ -!!$ if ((beta /= dzero) .and. (y%is_dev())) call y%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, m -!!$ y%v(i) = alpha * x(i) + beta * y%v(i) -!!$ end do -!!$ call y%set_host() -!!$ end subroutine d_oacc_axpby_a -!!$ -!!$ subroutine d_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) -!!$ use psi_serial_mod -!!$ implicit none -!!$ integer(psb_ipk_), intent(in) :: m -!!$ class(psb_d_base_vect_type), intent(inout) :: x -!!$ class(psb_d_base_vect_type), intent(inout) :: y -!!$ class(psb_d_vect_oacc), intent(inout) :: z -!!$ real(psb_dpk_), intent(in) :: alpha, beta, gamma, delta -!!$ integer(psb_ipk_), intent(out) :: info -!!$ integer(psb_ipk_) :: nx, ny, nz, i -!!$ logical :: gpu_done -!!$ -!!$ info = psb_success_ -!!$ gpu_done = .false. -!!$ -!!$ select type(xx => x) -!!$ class is (psb_d_vect_oacc) -!!$ select type(yy => y) -!!$ class is (psb_d_vect_oacc) -!!$ select type(zz => z) -!!$ class is (psb_d_vect_oacc) -!!$ if ((beta /= dzero) .and. yy%is_host()) call yy%sync_space() -!!$ if ((delta /= dzero) .and. zz%is_host()) call zz%sync_space() -!!$ if (xx%is_host()) call xx%sync_space() -!!$ nx = size(xx%v) -!!$ ny = size(yy%v) -!!$ nz = size(zz%v) -!!$ if ((nx < m) .or. (ny < m) .or. (nz < m)) then -!!$ info = psb_err_internal_error_ -!!$ else -!!$ !$acc parallel loop -!!$ do i = 1, m -!!$ yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) -!!$ zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) -!!$ end do -!!$ end if -!!$ call yy%set_dev() -!!$ call zz%set_dev() -!!$ gpu_done = .true. -!!$ end select -!!$ end select -!!$ end select -!!$ -!!$ if (.not. gpu_done) then -!!$ if (x%is_host()) call x%sync() -!!$ if (y%is_host()) call y%sync() -!!$ if (z%is_host()) call z%sync() -!!$ call y%axpby(m, alpha, x, beta, info) -!!$ call z%axpby(m, gamma, y, delta, info) -!!$ end if -!!$ end subroutine d_oacc_abgdxyz -!!$ -!!$ -!!$ subroutine d_oacc_sctb_buf(i, n, idx, beta, y) -!!$ use psb_base_mod -!!$ implicit none -!!$ integer(psb_ipk_) :: i, n -!!$ class(psb_i_base_vect_type) :: idx -!!$ real(psb_dpk_) :: beta -!!$ class(psb_d_vect_oacc) :: y -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (.not.allocated(y%combuf)) then -!!$ call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') -!!$ return -!!$ end if -!!$ -!!$ select type(ii => idx) -!!$ class is (psb_i_vect_oacc) -!!$ if (ii%is_host()) call ii%sync_space(info) -!!$ if (y%is_host()) call y%sync_space() -!!$ -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) -!!$ end do -!!$ -!!$ class default -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) -!!$ end do -!!$ end select -!!$ end subroutine d_oacc_sctb_buf -!!$ -!!$ subroutine d_oacc_sctb_x(i, n, idx, x, beta, y) -!!$ use psb_base_mod -!!$ implicit none -!!$ integer(psb_ipk_):: i, n -!!$ class(psb_i_base_vect_type) :: idx -!!$ real(psb_dpk_) :: beta, x(:) -!!$ class(psb_d_vect_oacc) :: y -!!$ integer(psb_ipk_) :: info, ni -!!$ -!!$ select type(ii => idx) -!!$ class is (psb_i_vect_oacc) -!!$ if (ii%is_host()) call ii%sync_space(info) -!!$ class default -!!$ call psb_errpush(info, 'd_oacc_sctb_x') -!!$ return -!!$ end select -!!$ -!!$ if (y%is_host()) call y%sync_space() -!!$ -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) -!!$ end do -!!$ -!!$ call y%set_dev() -!!$ end subroutine d_oacc_sctb_x -!!$ -!!$ -!!$ -!!$ subroutine d_oacc_sctb(n, idx, x, beta, y) -!!$ use psb_base_mod -!!$ implicit none -!!$ integer(psb_ipk_) :: n -!!$ integer(psb_ipk_) :: idx(:) -!!$ real(psb_dpk_) :: beta, x(:) -!!$ class(psb_d_vect_oacc) :: y -!!$ integer(psb_ipk_) :: info -!!$ integer(psb_ipk_) :: i -!!$ -!!$ if (n == 0) return -!!$ if (y%is_dev()) call y%sync_space() -!!$ -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(idx(i)) = beta * y%v(idx(i)) + x(i) -!!$ end do -!!$ -!!$ call y%set_host() -!!$ end subroutine d_oacc_sctb -!!$ -!!$ -!!$ subroutine d_oacc_gthzbuf(i, n, idx, x) -!!$ use psb_base_mod -!!$ implicit none -!!$ integer(psb_ipk_) :: i, n -!!$ class(psb_i_base_vect_type) :: idx -!!$ class(psb_d_vect_oacc) :: x -!!$ integer(psb_ipk_) :: info -!!$ -!!$ info = 0 -!!$ if (.not.allocated(x%combuf)) then -!!$ call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') -!!$ return -!!$ end if -!!$ -!!$ select type(ii => idx) -!!$ class is (psb_i_vect_oacc) -!!$ if (ii%is_host()) call ii%sync_space(info) -!!$ class default -!!$ call psb_errpush(info, 'd_oacc_gthzbuf') -!!$ return -!!$ end select -!!$ -!!$ if (x%is_host()) call x%sync_space() -!!$ -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ x%combuf(i) = x%v(idx%v(i)) -!!$ end do -!!$ end subroutine d_oacc_gthzbuf -!!$ -!!$ subroutine d_oacc_gthzv_x(i, n, idx, x, y) -!!$ use psb_base_mod -!!$ implicit none -!!$ integer(psb_ipk_) :: i, n -!!$ class(psb_i_base_vect_type):: idx -!!$ real(psb_dpk_) :: y(:) -!!$ class(psb_d_vect_oacc):: x -!!$ integer(psb_ipk_) :: info -!!$ -!!$ info = 0 -!!$ -!!$ select type(ii => idx) -!!$ class is (psb_i_vect_oacc) -!!$ if (ii%is_host()) call ii%sync_space(info) -!!$ class default -!!$ call psb_errpush(info, 'd_oacc_gthzv_x') -!!$ return -!!$ end select -!!$ -!!$ if (x%is_host()) call x%sync_space() -!!$ -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y(i) = x%v(idx%v(i)) -!!$ end do -!!$ end subroutine d_oacc_gthzv_x -!!$ -!!$ subroutine d_oacc_ins_v(n, irl, val, dupl, x, info) -!!$ use psi_serial_mod -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_), intent(in) :: n, dupl -!!$ class(psb_i_base_vect_type), intent(inout) :: irl -!!$ class(psb_d_base_vect_type), intent(inout) :: val -!!$ integer(psb_ipk_), intent(out) :: info -!!$ -!!$ integer(psb_ipk_) :: i, isz -!!$ logical :: done_oacc -!!$ -!!$ info = 0 -!!$ if (psb_errstatus_fatal()) return -!!$ -!!$ done_oacc = .false. -!!$ select type(virl => irl) -!!$ type is (psb_i_vect_oacc) -!!$ select type(vval => val) -!!$ type is (psb_d_vect_oacc) -!!$ if (vval%is_host()) call vval%sync_space() -!!$ if (virl%is_host()) call virl%sync_space(info) -!!$ if (x%is_host()) call x%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ x%v(virl%v(i)) = vval%v(i) -!!$ end do -!!$ call x%set_dev() -!!$ done_oacc = .true. -!!$ end select -!!$ end select -!!$ -!!$ if (.not.done_oacc) then -!!$ select type(virl => irl) -!!$ type is (psb_i_vect_oacc) -!!$ if (virl%is_dev()) call virl%sync_space(info) -!!$ end select -!!$ select type(vval => val) -!!$ type is (psb_d_vect_oacc) -!!$ if (vval%is_dev()) call vval%sync_space() -!!$ end select -!!$ call x%ins(n, irl%v, val%v, dupl, info) -!!$ end if -!!$ -!!$ if (info /= 0) then -!!$ call psb_errpush(info, 'oacc_vect_ins') -!!$ return -!!$ end if -!!$ -!!$ end subroutine d_oacc_ins_v -!!$ -!!$ -!!$ -!!$ subroutine d_oacc_ins_a(n, irl, val, dupl, x, info) -!!$ use psi_serial_mod -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_), intent(in) :: n, dupl -!!$ integer(psb_ipk_), intent(in) :: irl(:) -!!$ real(psb_dpk_), intent(in) :: val(:) -!!$ integer(psb_ipk_), intent(out) :: info -!!$ -!!$ integer(psb_ipk_) :: i -!!$ -!!$ info = 0 -!!$ if (x%is_dev()) call x%sync_space() -!!$ call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) -!!$ call x%set_host() -!!$ !$acc update device(x%v) -!!$ -!!$ end subroutine d_oacc_ins_a -!!$ -!!$ -!!$ -!!$ subroutine d_oacc_bld_mn(x, n) -!!$ use psb_base_mod -!!$ implicit none -!!$ integer(psb_mpk_), intent(in) :: n -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_) :: info -!!$ -!!$ call x%all(n, info) -!!$ if (info /= 0) then -!!$ call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) -!!$ end if -!!$ call x%set_host() -!!$ !$acc update device(x%v) -!!$ -!!$ end subroutine d_oacc_bld_mn -!!$ -!!$ -!!$ subroutine d_oacc_bld_x(x, this) -!!$ use psb_base_mod -!!$ implicit none -!!$ real(psb_dpk_), intent(in) :: this(:) -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_) :: info -!!$ -!!$ call psb_realloc(size(this), x%v, info) -!!$ if (info /= 0) then -!!$ info = psb_err_alloc_request_ -!!$ call psb_errpush(info, 'd_oacc_bld_x', & -!!$ i_err=(/size(this), izero, izero, izero, izero/)) -!!$ return -!!$ end if -!!$ -!!$ x%v(:) = this(:) -!!$ call x%set_host() -!!$ !$acc update device(x%v) -!!$ -!!$ end subroutine d_oacc_bld_x -!!$ -!!$ -!!$ subroutine d_oacc_asb_m(n, x, info) -!!$ use psb_base_mod -!!$ implicit none -!!$ integer(psb_mpk_), intent(in) :: n -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_), intent(out) :: info -!!$ integer(psb_mpk_) :: nd -!!$ -!!$ info = psb_success_ -!!$ -!!$ if (x%is_dev()) then -!!$ nd = size(x%v) -!!$ if (nd < n) then -!!$ call x%sync() -!!$ call x%psb_d_base_vect_type%asb(n, info) -!!$ if (info == psb_success_) call x%sync_space() -!!$ call x%set_host() -!!$ end if -!!$ else -!!$ if (size(x%v) < n) then -!!$ call x%psb_d_base_vect_type%asb(n, info) -!!$ if (info == psb_success_) call x%sync_space() -!!$ call x%set_host() -!!$ end if -!!$ end if -!!$ end subroutine d_oacc_asb_m -!!$ -!!$ -!!$ -!!$ subroutine d_oacc_set_scal(x, val, first, last) -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ real(psb_dpk_), intent(in) :: val -!!$ integer(psb_ipk_), optional :: first, last -!!$ -!!$ integer(psb_ipk_) :: first_, last_ -!!$ first_ = 1 -!!$ last_ = x%get_nrows() -!!$ if (present(first)) first_ = max(1, first) -!!$ if (present(last)) last_ = min(last, last_) -!!$ -!!$ !$acc parallel loop -!!$ do i = first_, last_ -!!$ x%v(i) = val -!!$ end do -!!$ !$acc end parallel loop -!!$ -!!$ call x%set_dev() -!!$ end subroutine d_oacc_set_scal -!!$ -!!$ -!!$ -!!$ subroutine d_oacc_zero(x) -!!$ use psi_serial_mod -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ call x%set_dev() -!!$ call x%set_scal(dzero) -!!$ end subroutine d_oacc_zero -!!$ -!!$ function d_oacc_get_nrows(x) result(res) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(in) :: x -!!$ integer(psb_ipk_) :: res -!!$ -!!$ if (allocated(x%v)) res = size(x%v) -!!$ end function d_oacc_get_nrows -!!$ -!!$ function d_oacc_get_fmt() result(res) -!!$ implicit none -!!$ character(len=5) :: res -!!$ res = "dOACC" -!!$ -!!$ end function d_oacc_get_fmt -!!$ -!!$ function d_oacc_vect_dot(n, x, y) result(res) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ class(psb_d_base_vect_type), intent(inout) :: y -!!$ integer(psb_ipk_), intent(in) :: n -!!$ real(psb_dpk_) :: res -!!$ real(psb_dpk_), external :: ddot -!!$ integer(psb_ipk_) :: info -!!$ integer(psb_ipk_) :: i -!!$ -!!$ res = dzero -!!$ -!!$ select type(yy => y) -!!$ type is (psb_d_base_vect_type) -!!$ if (x%is_dev()) call x%sync() -!!$ res = ddot(n, x%v, 1, yy%v, 1) -!!$ type is (psb_d_vect_oacc) -!!$ if (x%is_host()) call x%sync() -!!$ if (yy%is_host()) call yy%sync() -!!$ -!!$ !$acc parallel loop reduction(+:res) present(x%v, yy%v) -!!$ do i = 1, n -!!$ res = res + x%v(i) * yy%v(i) -!!$ end do -!!$ !$acc end parallel loop -!!$ -!!$ class default -!!$ call x%sync() -!!$ res = y%dot(n, x%v) -!!$ end select -!!$ -!!$ end function d_oacc_vect_dot -!!$ -!!$ -!!$ -!!$ -!!$ function d_oacc_dot_a(n, x, y) result(res) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ real(psb_dpk_), intent(in) :: y(:) -!!$ integer(psb_ipk_), intent(in) :: n -!!$ real(psb_dpk_) :: res -!!$ real(psb_dpk_), external :: ddot -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ res = ddot(n, y, 1, x%v, 1) -!!$ -!!$ end function d_oacc_dot_a -!!$ -!!$ ! subroutine d_oacc_set_vect(x,y) -!!$ ! implicit none -!!$ ! class(psb_d_vect_oacc), intent(inout) :: x -!!$ ! real(psb_dpk_), intent(in) :: y(:) -!!$ ! integer(psb_ipk_) :: info -!!$ -!!$ ! if (size(x%v) /= size(y)) then -!!$ ! call x%free(info) -!!$ ! call x%all(size(y),info) -!!$ ! end if -!!$ ! x%v(:) = y(:) -!!$ ! call x%set_host() -!!$ ! end subroutine d_oacc_set_vect -!!$ -!!$ subroutine d_oacc_to_dev(v) -!!$ implicit none -!!$ real(psb_dpk_) :: v(:) -!!$ !$acc update device(v) -!!$ end subroutine d_oacc_to_dev -!!$ -!!$ subroutine d_oacc_to_host(v) -!!$ implicit none -!!$ real(psb_dpk_) :: v(:) -!!$ !$acc update self(v) -!!$ end subroutine d_oacc_to_host -!!$ + + + subroutine d_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_d_vect_oacc) + if ((beta /= dzero) .and. y%is_host()) call y%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * xx%v(i) + beta * y%v(i) + end do + end if + call y%set_dev() + class default + if ((alpha /= dzero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + end subroutine d_oacc_axpby_v + + subroutine d_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_dpk_), intent(in) :: x(:) + class(psb_d_vect_oacc), intent(inout) :: y + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= dzero) .and. (y%is_dev())) call y%sync_space() + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine d_oacc_axpby_a + + subroutine d_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + real(psb_dpk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_d_vect_oacc) + select type(yy => y) + class is (psb_d_vect_oacc) + select type(zz => z) + class is (psb_d_vect_oacc) + if ((beta /= dzero) .and. yy%is_host()) call yy%sync_space() + if ((delta /= dzero) .and. zz%is_host()) call zz%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine d_oacc_abgdxyz + + subroutine d_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + real(psb_dpk_) :: beta + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info + + if (.not.allocated(y%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + end do + + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + end do + end select + end subroutine d_oacc_sctb_buf + + subroutine d_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + real(psb_dpk_) :: beta, x(:) + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info, ni + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'd_oacc_sctb_x') + return + end select + + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + + call y%set_dev() + end subroutine d_oacc_sctb_x + + + + subroutine d_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + real(psb_dpk_) :: beta, x(:) + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine d_oacc_sctb + + + subroutine d_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_d_vect_oacc) :: x + integer(psb_ipk_) :: info + + info = 0 + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'd_oacc_gthzbuf') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine d_oacc_gthzbuf + + subroutine d_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + real(psb_dpk_) :: y(:) + class(psb_d_vect_oacc):: x + integer(psb_ipk_) :: info + + info = 0 + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'd_oacc_gthzv_x') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine d_oacc_gthzv_x + + subroutine d_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_d_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_d_vect_oacc) + if (vval%is_host()) call vval%sync_space() + if (virl%is_host()) call virl%sync_space(info) + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync_space(info) + end select + select type(vval => val) + type is (psb_d_vect_oacc) + if (vval%is_dev()) call vval%sync_space() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine d_oacc_ins_v + + + + subroutine d_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + real(psb_dpk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync_space() + call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + !$acc update device(x%v) + + end subroutine d_oacc_ins_a + + + + subroutine d_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + !$acc update device(x%v) + + end subroutine d_oacc_bld_mn + + + subroutine d_oacc_bld_x(x, this) + use psb_base_mod + implicit none + real(psb_dpk_), intent(in) :: this(:) + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'd_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + + x%v(:) = this(:) + call x%set_host() + !$acc update device(x%v) + + end subroutine d_oacc_bld_x + + + subroutine d_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_d_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_d_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + end if + end subroutine d_oacc_asb_m + + + + subroutine d_oacc_set_scal(x, val, first, last) + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine d_oacc_set_scal + + + + subroutine d_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(dzero) + end subroutine d_oacc_zero + + function d_oacc_get_nrows(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function d_oacc_get_nrows + + function d_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "dOACC" + + end function d_oacc_get_fmt + + function d_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + real(psb_dpk_), external :: ddot + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + res = dzero + + select type(yy => y) + type is (psb_d_base_vect_type) + if (x%is_dev()) call x%sync() + res = ddot(n, x%v, 1, yy%v, 1) + type is (psb_d_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + + !$acc parallel loop reduction(+:res) present(x%v, yy%v) + do i = 1, n + res = res + x%v(i) * yy%v(i) + end do + !$acc end parallel loop + + class default + call x%sync() + res = y%dot(n, x%v) + end select + + end function d_oacc_vect_dot + + + + + function d_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + real(psb_dpk_), external :: ddot + + if (x%is_dev()) call x%sync() + res = ddot(n, y, 1, x%v, 1) + + end function d_oacc_dot_a + + ! subroutine d_oacc_set_vect(x,y) + ! implicit none + ! class(psb_d_vect_oacc), intent(inout) :: x + ! real(psb_dpk_), intent(in) :: y(:) + ! integer(psb_ipk_) :: info + + ! if (size(x%v) /= size(y)) then + ! call x%free(info) + ! call x%all(size(y),info) + ! end if + ! x%v(:) = y(:) + ! call x%set_host() + ! end subroutine d_oacc_set_vect + + subroutine d_oacc_to_dev(v) + implicit none + real(psb_dpk_) :: v(:) + !$acc update device(v) + end subroutine d_oacc_to_dev + + subroutine d_oacc_to_host(v) + implicit none + real(psb_dpk_) :: v(:) + !$acc update self(v) + end subroutine d_oacc_to_host + subroutine d_oacc_sync_space(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x @@ -828,21 +849,21 @@ contains subroutine d_oacc_set_host(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x - + x%state = is_host end subroutine d_oacc_set_host subroutine d_oacc_set_dev(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x - + x%state = is_dev end subroutine d_oacc_set_dev subroutine d_oacc_set_sync(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x - + x%state = is_sync end subroutine d_oacc_set_sync @@ -869,50 +890,50 @@ contains res = (x%state == is_sync) end function d_oacc_is_sync -!!$ -!!$ subroutine d_oacc_vect_all(n, x, info) -!!$ use psi_serial_mod -!!$ use psb_realloc_mod -!!$ implicit none -!!$ integer(psb_ipk_), intent(in) :: n -!!$ class(psb_d_vect_oacc), intent(out) :: x -!!$ integer(psb_ipk_), intent(out) :: info -!!$ -!!$ call psb_realloc(n, x%v, info) -!!$ if (info == 0) then -!!$ call x%set_host() -!!$ !$acc enter data create(x%v) -!!$ call x%sync_space() -!!$ end if -!!$ if (info /= 0) then -!!$ info = psb_err_alloc_request_ -!!$ call psb_errpush(info, 'd_oacc_all', & -!!$ i_err=(/n, n, n, n, n/)) -!!$ end if -!!$ end subroutine d_oacc_vect_all -!!$ -!!$ -!!$ subroutine d_oacc_vect_free(x, info) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_), intent(out) :: info -!!$ info = 0 -!!$ if (allocated(x%v)) then -!!$ !$acc exit data delete(x%v) finalize -!!$ deallocate(x%v, stat=info) -!!$ end if -!!$ -!!$ end subroutine d_oacc_vect_free -!!$ -!!$ function oacc_get_size(x) result(res) -!!$ implicit none -!!$ class(psb_d_vect_oacc), intent(inout) :: x -!!$ integer(psb_ipk_) :: res -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ res = size(x%v) -!!$ end function oacc_get_size -!!$ + + subroutine d_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_d_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) then + call x%set_host() + !$acc enter data create(x%v) + call x%sync_space() + end if + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'd_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + end subroutine d_oacc_vect_all + + + subroutine d_oacc_vect_free(x, info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 + if (allocated(x%v)) then + !$acc exit data delete(x%v) finalize + deallocate(x%v, stat=info) + end if + + end subroutine d_oacc_vect_free + + function oacc_get_size(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + if (x%is_dev()) call x%sync() + res = size(x%v) + end function oacc_get_size + !!$ !!$ subroutine initialize(N) !!$ integer(psb_ipk_) :: N @@ -939,26 +960,6 @@ contains !!$ subroutine to_host() !!$ !$acc update self(v1,v2) !!$ end subroutine to_host -!!$ function d_dot(N) result(res) -!!$ real(kind(1.d0)) :: res -!!$ integer(psb_ipk_) :: i,N -!!$ real(kind(1.d0)) :: t1,t2,t3 -!!$ res = 0.0d0 -!!$ !$acc parallel -!!$ !$acc loop reduction(+:res) -!!$ do i=1,N -!!$ res = res + v1(i) * v2(i) -!!$ end do -!!$ !$acc end parallel -!!$ -!!$ end function d_dot -!!$ function h_dot(N) result(res) -!!$ integer(psb_ipk_) :: i,N -!!$ real(kind(1.d0)) :: t1,t2,t3,res -!!$ res = 0.0d0 -!!$ do i=1,N -!!$ res = res + v1(i) * v2(i) -!!$ end do -!!$ end function h_dot !!$ + end module psb_d_oacc_vect_mod From a81d1d9b68481161c0102dcce390cf514978c063 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 9 Jul 2024 13:45:16 +0200 Subject: [PATCH 07/86] Now oacc_vect compiles cleanly --- openacc/Makefile | 4 +- openacc/impl/psb_d_oacc_mlt_v.f90 | 36 ++++++++--------- openacc/impl/psb_d_oacc_mlt_v_2.f90 | 62 ++++++++++++++--------------- 3 files changed, 50 insertions(+), 52 deletions(-) diff --git a/openacc/Makefile b/openacc/Makefile index c82a9281..aa6ea23d 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -20,7 +20,7 @@ CINCLUDES= # Source files FOBJS= psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ - psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o + psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o \ psb_oacc_env_mod.o # Library name @@ -43,7 +43,7 @@ ilib: $(OBJS) $(MAKE) -C impl lib psb_oacc_mod.o : psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ - psb_d_oacc_csr_mat_mod.o + psb_d_oacc_csr_mat_mod.o psb_oacc_env_mod.o clean: cclean iclean /bin/rm -f $(FOBJS) *$(.mod) *.a diff --git a/openacc/impl/psb_d_oacc_mlt_v.f90 b/openacc/impl/psb_d_oacc_mlt_v.f90 index a4eb6660..bedd0247 100644 --- a/openacc/impl/psb_d_oacc_mlt_v.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v.f90 @@ -10,22 +10,22 @@ subroutine d_oacc_mlt_v(x, y, info) integer(psb_ipk_) :: i, n info = 0 -!!$ n = min(x%get_nrows(), y%get_nrows()) -!!$ select type(xx => x) -!!$ type is (psb_d_base_vect_type) -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ end select + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_d_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select end subroutine d_oacc_mlt_v diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 index b59b4f56..7e46495f 100644 --- a/openacc/impl/psb_d_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -19,37 +19,35 @@ subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) info = 0 -!!$ select type(xx => x) -!!$ class is (psb_d_vect_oacc) -!!$ select type (yy => y) -!!$ class is (psb_d_vect_oacc) -!!$ if (xx%is_host()) call xx%sync_space() -!!$ if (yy%is_host()) call yy%sync_space() -!!$ if ((beta /= dzero) .and. (z%is_host())) call z%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_dev() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync_space() -!!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ class default -!!$ if (x%is_dev()) call x%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= dzero) .and. (z%is_host())) call z%sync() + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + end do + call z%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (yy%is_dev()) call yy%sync() + if ((beta /= dzero) .and. (z%is_dev())) call z%sync() + do i = 1, n + z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + end do + call z%set_host() + end select + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= dzero) .and. (z%is_dev())) call z%sync() + do i = 1, n + z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) + end do + call z%set_host() + end select end subroutine d_oacc_mlt_v_2 From c7bbfb8b680b8bfc25e3448e03de4d2ab57e8d0a Mon Sep 17 00:00:00 2001 From: tloloum Date: Wed, 10 Jul 2024 10:06:27 +0200 Subject: [PATCH 08/86] new Makefile, test compile well + data vect --- test/openacc/Makefile | 20 ++--- test/openacc/datavect.F90 | 84 ++++++++++++++++++ test/openacc/vectoacc.F90 | 180 ++++++++++++++++++++------------------ 3 files changed, 187 insertions(+), 97 deletions(-) create mode 100644 test/openacc/datavect.F90 diff --git a/test/openacc/Makefile b/test/openacc/Makefile index 6df14d42..65bed1ad 100644 --- a/test/openacc/Makefile +++ b/test/openacc/Makefile @@ -1,7 +1,6 @@ TOPDIR=../.. include $(TOPDIR)/Make.inc -# Directories LIBDIR=$(TOPDIR)/lib/ PSBLIBDIR=$(TOPDIR)/lib/ PSBINCDIR=$(TOPDIR)/include @@ -10,36 +9,30 @@ INCDIR=$(TOPDIR)/include MODDIR=$(TOPDIR)/modules EXEDIR=./runs -# Libraries -PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lpsb_openacc -lopenblas -lmetis +PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_base -lpsb_ext -lpsb_util -lopenblas -lmetis LDLIBS=$(PSBGPULDLIBS) -# Includes FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) $(FMFLAG)$(PSBINCDIR) $(LIBRSB_DEFINES) -# Compiler flags FFLAGS=-O0 -march=native -fopenacc -foffload=nvptx-none="-march=sm_70" CFLAGS=-O0 -march=native -# Source files -SRCS=test.F90 vectoacc.F90 +SRCS=test.F90 vectoacc.F90 datavect.F90 CSRC=timers.c -# Object files OBJS=$(SRCS:.F90=.o) $(CSRC:.c=.o) -# Default rule -all: dir +all: dir $(OBJS) + $(FC) $(FFLAGS) $(OBJS) -o datavect $(FINCLUDES) $(PSBLAS_LIB) $(LDLIBS) + /bin/mv datavect $(EXEDIR) dir: @if test ! -d $(EXEDIR); then mkdir $(EXEDIR); fi -# Pattern rule for creating executables %: %.o timers.o $(FC) $(FFLAGS) $^ -o $@ $(FINCLUDES) $(PSBLAS_LIB) $(LDLIBS) /bin/mv $@ $(EXEDIR) -# Compilation rules %.o: %.F90 $(FC) $(FFLAGS) $(FINCLUDES) -c $< -o $@ @@ -47,7 +40,6 @@ dir: $(CC) $(CFLAGS) $(FINCLUDES) -c $< -o $@ clean: - /bin/rm -fr *.o *.mod $(EXEDIR)/* + /bin/rm -fr *.o *.mod $(EXEDIR)/* -# Phony targets .PHONY: all dir clean diff --git a/test/openacc/datavect.F90 b/test/openacc/datavect.F90 new file mode 100644 index 00000000..b78a65d9 --- /dev/null +++ b/test/openacc/datavect.F90 @@ -0,0 +1,84 @@ +program datavect + use psb_base_mod + use psb_oacc_mod + implicit none + + type(psb_d_vect_oacc) :: v3, v4, v5 + integer(psb_ipk_) :: info, n, i, old_percentage, percentage + real(psb_dpk_) :: alpha, dot_dev, dot_host, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev + double precision, external :: etime + double precision :: time_start, time_end + integer, parameter :: min_size = 1000, max_size = 100000000, step_size = 1000000 + integer, parameter :: ntests = 80, ngpu = 20 + integer :: size + character(len=20) :: filename + + open(unit=10, file='performance_data.csv', status='unknown') + write(10, '(A, A, A, A, A)') 'Size,Alloc_Host,Alloc_Dev,Calc_Host,Calc_Dev' + + write(*, *) 'Test of the vector operations with OpenACC' + + alpha = 2.0 + old_percentage = 0 + + do size = min_size, max_size, step_size + n = size + percentage = int(real(size - min_size) / real(max_size - min_size) * 100.0) + if (percentage /= old_percentage) then + write(*, '(A,I3,A)', advance='no') 'Progress: ', percentage, '%' + write(*,'(A)', advance='no') char(13) + old_percentage = percentage + end if + + time_start = etime() + call v3%all(n, info) + call v4%all(n, info) + call v5%all(n, info) + time_end = etime() + t_alloc_host = (time_end - time_start) + + do i = 1, n + v3%v(i) = real(i, psb_dpk_) + v4%v(i) = real(n - i, psb_dpk_) + end do + + call v3%scal(alpha) + + call v3%set_host() + call v4%set_host() + + time_start = etime() + do i = 1, ntests + dot_host = sum(v3%v * v4%v) + end do + time_end = etime() + t_calc_host = (time_end - time_start) / real(ntests) + + time_start = etime() + call v3%set_dev() + call v4%set_dev() + call v3%sync_space() + call v4%sync_space() + time_end = etime() + t_alloc_dev = (time_end - time_start) + + time_start = etime() + do i = 1, ntests + dot_dev = v3%dot_v(n, v4) + end do + !$acc wait + time_end = etime() + t_calc_dev = (time_end - time_start) / real(ntests) + + write(10, '(I10, 1X, ES12.5, 1X, ES12.5, 1X, ES12.5, 1X, ES12.5)') size, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev + + call v3%free(info) + call v4%free(info) + call v5%free(info) + end do + + close(10) + write(*, *) 'Performance data written to performance_data.csv' + + +end program datavect diff --git a/test/openacc/vectoacc.F90 b/test/openacc/vectoacc.F90 index b50fa317..639a2a67 100644 --- a/test/openacc/vectoacc.F90 +++ b/test/openacc/vectoacc.F90 @@ -1,85 +1,99 @@ program vectoacc - use psb_base_mod - use psb_oacc_mod - implicit none - - type(psb_d_vect_oacc) :: v3, v4, v5 - integer(psb_ipk_) :: info, n, i - real(psb_dpk_) :: alpha, beta, result - double precision, external :: etime - - real(psb_dpk_) :: dot_host, dot_dev, t_host, t_dev - double precision :: time_start, time_end - integer(psb_ipk_), parameter :: ntests=80, ngpu=20 - - write(*, *) 'Test of the vector operations with OpenACC' - - write(*, *) 'Enter the size of the vectors' - read(*, *) n - alpha = 2.0 - beta = 0.5 - - call v3%all(n, info) - call v4%all(n, info) - call v5%all(n, info) - - do i = 1, n - v3%v(i) = real(i, psb_dpk_) - v4%v(i) = real(n - i, psb_dpk_) - end do - - call v3%set_dev() - call v4%set_dev() - - call v3%scal(alpha) - call v3%sync() - - do i = 1, n - if (v3%v(i) /= alpha * real(i, psb_dpk_)) then - write(*, *) 'Scal error : index', i - end if - end do - write(*, *) 'Scal test passed' - - result = v3%dot_v(n, v4) - call v3%sync() - call v4%sync() - if (result /= sum(v3%v * v4%v)) then - write(*, *) 'Dot_v error, expected result:', sum(v3%v * v4%v), 'instead of :', result - end if - write(*, *) 'Dot_v test passed' - - result = v3%nrm2(n) - call v3%sync() - if (result /= sqrt(sum(v3%v ** 2))) then - write(*, *) 'nrm2 error, expected result:', sqrt(sum(v3%v ** 2)), 'instead of :', result - end if - write(*, *) 'nrm2 test passed' - - call v3%set_host() - call v4%set_host() - - time_start = etime() - do i = 1, ntests - dot_host = sum(v3%v * v4%v) - end do - time_end = etime() - t_host = (time_end - time_start) / real(ntests) - write(*, *) 'Performance host: ', t_host, ' sec' - - call v3%set_dev() - call v4%set_dev() - time_start = etime() - do i = 1, ntests - dot_dev = v3%dot_v(n, v4) - end do - !$acc wait - time_end = etime() - t_dev = (time_end - time_start) / real(ntests) - write(*, *) 'Performance device: ', t_dev, ' sec' - - call v3%free(info) - call v4%free(info) - call v5%free(info) - + use psb_base_mod + use psb_oacc_mod + implicit none + + type(psb_d_vect_oacc) :: v3, v4, v5 + integer(psb_ipk_) :: info, n, i + real(psb_dpk_) :: alpha, beta, result + double precision, external :: etime + + real(psb_dpk_) :: dot_host, dot_dev, t_host, t_dev, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev + double precision :: time_start, time_end + integer(psb_ipk_), parameter :: ntests=80, ngpu=20 + + write(*, *) 'Test of the vector operations with OpenACC' + + write(*, *) 'Enter the size of the vectors' + read(*, *) n + alpha = 2.0 + beta = 0.5 + + time_start = etime() + call v3%all(n, info) + call v4%all(n, info) + call v5%all(n, info) + time_end = etime() + t_alloc_host = time_end - time_start + write(*, *) 'Allocation time on host: ', t_alloc_host, ' sec' + + do i = 1, n + v3%v(i) = real(i, psb_dpk_) + v4%v(i) = real(n - i, psb_dpk_) + end do + + call v3%set_dev() + call v4%set_dev() + + call v3%scal(alpha) + call v3%sync() + + do i = 1, n + if (v3%v(i) /= alpha * real(i, psb_dpk_)) then + write(*, *) 'Scal error : index', i + end if + end do + write(*, *) 'Scal test passed' + + result = v3%dot_v(n, v4) + call v3%sync() + call v4%sync() + if (result /= sum(v3%v * v4%v)) then + write(*, *) 'Dot_v error, expected result:', sum(v3%v * v4%v), 'instead of :', result + end if + write(*, *) 'Dot_v test passed' + + result = v3%nrm2(n) + call v3%sync() + if (result /= sqrt(sum(v3%v ** 2))) then + write(*, *) 'nrm2 error, expected result:', sqrt(sum(v3%v ** 2)), 'instead of :', result + end if + write(*, *) 'nrm2 test passed' + + call v3%set_host() + call v4%set_host() + + time_start = etime() + do i = 1, ntests + dot_host = sum(v3%v * v4%v) + end do + time_end = etime() + t_calc_host = (time_end - time_start) / real(ntests) + write(*, *) 'Host calculation time: ', t_calc_host, ' sec' + + call v3%set_dev() + call v4%set_dev() + + time_start = etime() + call v3%sync_space() + call v4%sync_space() + time_end = etime() + t_alloc_dev = time_end - time_start + write(*, *) 'Allocation time on device: ', t_alloc_dev, ' sec' + + time_start = etime() + do i = 1, ntests + dot_dev = v3%dot_v(n, v4) + end do + !$acc wait + time_end = etime() + t_calc_dev = (time_end - time_start) / real(ntests) + write(*, *) 'Device calculation time: ', t_calc_dev, ' sec' + + + call v3%free(info) + call v4%free(info) + call v5%free(info) + end program vectoacc + \ No newline at end of file From 0aa5c9409b7de32fdd3a1e7d4ca4b3a090b33ad3 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 11 Jul 2024 12:12:42 +0200 Subject: [PATCH 09/86] Remove spurious pdf file. --- docs/src/userguide.pdf | 1 - 1 file changed, 1 deletion(-) delete mode 120000 docs/src/userguide.pdf diff --git a/docs/src/userguide.pdf b/docs/src/userguide.pdf deleted file mode 120000 index 7b032aa3..00000000 --- a/docs/src/userguide.pdf +++ /dev/null @@ -1 +0,0 @@ -tmp/userguide.pdf \ No newline at end of file From 2b5f09ddf9f746267c2e88530bbb708b89a532dd Mon Sep 17 00:00:00 2001 From: tloloum Date: Fri, 12 Jul 2024 09:26:06 +0200 Subject: [PATCH 10/86] all methods implementations for psb_d_oacc_csr_sparse_mat --- openacc/Makefile | 10 +- openacc/impl/Makefile | 8 +- openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 | 34 +++ openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 | 25 +++ openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 | 23 +++ openacc/impl/psb_d_oacc_csr_csmm.F90 | 86 ++++++++ openacc/impl/psb_d_oacc_csr_csmv.F90 | 81 ++++++++ openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 | 84 ++++++++ openacc/impl/psb_d_oacc_csr_mold.F90 | 33 +++ openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 | 24 +++ openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 | 23 +++ openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 | 27 +++ openacc/impl/psb_d_oacc_csr_scal.F90 | 52 +++++ openacc/impl/psb_d_oacc_csr_scals.F90 | 32 +++ openacc/psb_d_oacc_csr_mat_mod.F90 | 194 +++++++++++++++++- 15 files changed, 719 insertions(+), 17 deletions(-) create mode 100644 openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_csmm.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_csmv.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_mold.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_scal.F90 create mode 100644 openacc/impl/psb_d_oacc_csr_scals.F90 diff --git a/openacc/Makefile b/openacc/Makefile index aa6ea23d..d1311fe2 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -1,34 +1,32 @@ include ../Make.inc -# Compilers and flags + #CC=mpicc #FC=mpif90 #FCOPT=-O0 -march=native #OFFLOAD=-fopenacc -foffload=nvptx-none="-march=sm_70" -# Directories LIBDIR=../lib INCDIR=../include MODDIR=../modules IMPLDIR=./impl -# Include and library paths INCLUDES=-I$(LIBDIR) -I$(INCDIR) -I$(MODDIR) FINCLUDES=$(FMFLAG). $(FMFLAG)$(INCDIR) $(FMFLAG)$(MODDIR) $(FIFLAG). CINCLUDES= #LIBS=-L$(LIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lopenblas -lmetis -# Source files + FOBJS= psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o \ psb_oacc_env_mod.o -# Library name + LIBNAME=libpsb_openacc.a OBJS=$(COBJS) $(FOBJS) -# Rules + lib: objs ilib ar cur $(LIBNAME) $(OBJS) /bin/cp -p $(LIBNAME) $(LIBDIR) diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index 7bab6654..ff0e8251 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -9,7 +9,13 @@ MODDIR=../../modules FINCLUDES=$(FMFLAG).. $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FIFLAG).. LIBNAME=libpsb_openacc.a -OBJS= psb_d_oacc_csr_vect_mv.o psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o +OBJS= psb_d_oacc_csr_vect_mv.o psb_d_oacc_csr_inner_vect_sv.o \ + psb_d_oacc_csr_csmm.o psb_d_oacc_csr_csmv.o psb_d_oacc_csr_scals.o \ + psb_d_oacc_csr_scal.o psb_d_oacc_csr_allocate_mnnz.o \ + psb_d_oacc_csr_reallocate_nz.o psb_d_oacc_csr_cp_from_coo.o \ + psb_d_oacc_csr_cp_from_fmt.o psb_d_oacc_csr_mv_from_coo \ + psb_d_oacc_csr_mv_from_fmt psb_d_oacc_csr_mold.o \ + psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o objs: $(OBJS) diff --git a/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..a0b8abe0 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,34 @@ +subroutine psb_d_oacc_csr_allocate_mnnz(m, n, a, nz) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_allocate_mnnz + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_csr_sparse_mat%allocate(m, n, nz) + + if (.not.allocated(a%val)) then + allocate(a%val(nz)) + allocate(a%ja(nz)) + allocate(a%irp(m+1)) + end if + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + + 9999 call psb_error_handler(err_act) + return + +end subroutine psb_d_oacc_csr_allocate_mnnz + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..c84c5876 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,25 @@ +subroutine psb_d_oacc_csr_cp_from_coo(a, b, info) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_cp_from_coo + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_d_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + + call a%set_dev() + if (info /= 0) goto 9999 + + return + + 9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_csr_cp_from_coo + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..2eae41d7 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,23 @@ +subroutine psb_d_oacc_csr_cp_from_fmt(a, b, info) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_cp_from_fmt + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_d_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + +end subroutine psb_d_oacc_csr_cp_from_fmt + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_csmm.F90 b/openacc/impl/psb_d_oacc_csr_csmm.F90 new file mode 100644 index 00000000..e7224764 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_csmm.F90 @@ -0,0 +1,86 @@ +subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + use psb_base_mod + use elldev_mod + use psb_vectordev_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_csmm + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n,k, nxy + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_d_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, n + do k = a%irp(i), a%irp(i+1) - 1 + y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + + 9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_csmm + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_csmv.F90 b/openacc/impl/psb_d_oacc_csr_csmv.F90 new file mode 100644 index 00000000..c3291acf --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_csmv.F90 @@ -0,0 +1,81 @@ +subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + use psb_base_mod + use elldev_mod + use psb_vectordev_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_csmv + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_d_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop present(a, x, y) + do i = 1, n + do j = a%irp(i), a%irp(i+1) - 1 + y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + + 9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_csmv + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..c0461c82 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,84 @@ +subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + use psb_base_mod + use elldev_mod + use psb_vectordev_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_inner_vect_sv + use psb_d_oacc_vect_mod + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_d_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_d_vect_oacc) + select type(yy => y) + type is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_d_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_d_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + + 9999 call psb_error_handler(err_act) + return + end subroutine psb_d_oacc_csr_inner_vect_sv + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_mold.F90 b/openacc/impl/psb_d_oacc_csr_mold.F90 new file mode 100644 index 00000000..08598cb6 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_mold.F90 @@ -0,0 +1,33 @@ +subroutine psb_d_oacc_csr_mold(a, b, info) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_mold + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_d_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + + 9999 call psb_error_handler(err_act) + + return + + end subroutine psb_d_oacc_csr_mold + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..5f4a6b41 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,24 @@ +subroutine psb_d_oacc_csr_mv_from_coo(a, b, info) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_mv_from_coo + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_d_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irp) + + return + + 9999 continue + info = psb_err_alloc_dealloc_ + return + +end subroutine psb_d_oacc_csr_mv_from_coo + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..16a4636b --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,23 @@ +subroutine psb_d_oacc_csr_mv_from_fmt(a, b, info) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_mv_from_fmt + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_d_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + +end subroutine psb_d_oacc_csr_mv_from_fmt + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..7a6723d0 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,27 @@ +subroutine psb_d_oacc_csr_reallocate_nz(nz, a) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_reallocate_nz + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='d_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_csr_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + + 9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_reallocate_nz + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_scal.F90 b/openacc/impl/psb_d_oacc_csr_scal.F90 new file mode 100644 index 00000000..b2bf12e8 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_scal.F90 @@ -0,0 +1,52 @@ +subroutine psb_d_oacc_csr_scal(d, a, info, side) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_scal + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + + 9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_scal + \ No newline at end of file diff --git a/openacc/impl/psb_d_oacc_csr_scals.F90 b/openacc/impl/psb_d_oacc_csr_scals.F90 new file mode 100644 index 00000000..8c77f647 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_scals.F90 @@ -0,0 +1,32 @@ +subroutine psb_d_oacc_csr_scals(d, a, info) + use psb_base_mod + use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_scals + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + +end subroutine psb_d_oacc_csr_scals diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index d9c8a2a6..b8eb1be9 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -12,18 +12,69 @@ module psb_d_oacc_csr_mat_mod type, extends(psb_d_csr_sparse_mat) :: psb_d_oacc_csr_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, pass(a) :: all => d_oacc_csr_all - procedure, pass(a) :: is_host => d_oacc_csr_is_host - procedure, pass(a) :: is_sync => d_oacc_csr_is_sync - procedure, pass(a) :: is_dev => d_oacc_csr_is_dev - procedure, pass(a) :: set_host => d_oacc_csr_set_host - procedure, pass(a) :: set_sync => d_oacc_csr_set_sync - procedure, pass(a) :: set_dev => d_oacc_csr_set_dev - procedure, pass(a) :: sync_space => d_oacc_csr_sync_space - procedure, pass(a) :: sync => d_oacc_csr_sync - procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv + procedure, nopass :: get_fmt => d_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => d_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_d_oacc_csr_csmv + procedure, pass(a) :: scals => psb_d_oacc_csr_scals + procedure, pass(a) :: scalv => psb_d_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => d_oacc_csr_free + procedure, pass(a) :: mold => psb_d_oacc_csr_mold + procedure, pass(a) :: all => d_oacc_csr_all + procedure, pass(a) :: is_host => d_oacc_csr_is_host + procedure, pass(a) :: is_sync => d_oacc_csr_is_sync + procedure, pass(a) :: is_dev => d_oacc_csr_is_dev + procedure, pass(a) :: set_host => d_oacc_csr_set_host + procedure, pass(a) :: set_sync => d_oacc_csr_set_sync + procedure, pass(a) :: set_dev => d_oacc_csr_set_dev + procedure, pass(a) :: sync_space => d_oacc_csr_sync_space + procedure, pass(a) :: sync => d_oacc_csr_sync end type psb_d_oacc_csr_sparse_mat + interface + subroutine psb_d_oacc_csr_mold(a,b,info) + import :: psb_d_oacc_csr_sparse_mat, psb_d_base_sparse_mat, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mold + end interface + + interface + subroutine psb_d_oacc_csr_cp_from_fmt(a,b,info) + import :: psb_d_oacc_csr_sparse_mat, psb_d_base_sparse_mat, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_cp_from_fmt + end interface + + interface + subroutine psb_d_oacc_csr_mv_from_coo(a,b,info) + import :: psb_d_oacc_csr_sparse_mat, psb_d_coo_sparse_mat, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mv_from_coo + end interface + + interface + subroutine psb_d_oacc_csr_mv_from_fmt(a,b,info) + import :: psb_d_oacc_csr_sparse_mat, psb_d_base_sparse_mat, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mv_from_fmt + end interface + interface subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ @@ -35,7 +86,130 @@ module psb_d_oacc_csr_mat_mod end subroutine psb_d_oacc_csr_vect_mv end interface + interface + subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_inner_vect_sv + end interface + + interface + subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_csmm + end interface + + interface + subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_csmv + end interface + + interface + subroutine psb_d_oacc_csr_scals(d, a, info) + import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_scals + end interface + + interface + subroutine psb_d_oacc_csr_scal(d,a,info,side) + import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_csr_scal + end interface + + interface + subroutine psb_d_oacc_csr_reallocate_nz(nz,a) + import :: psb_d_oacc_csr_sparse_mat, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_csr_reallocate_nz + end interface + + interface + subroutine psb_d_oacc_csr_allocate_mnnz(m,n,a,nz) + import :: psb_d_oacc_csr_sparse_mat, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_csr_allocate_mnnz + end interface + + interface + subroutine psb_d_oacc_csr_cp_from_coo(a,b,info) + import :: psb_d_oacc_csr_sparse_mat, psb_d_coo_sparse_mat, psb_ipk_ + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_cp_from_coo + end interface + contains + + + subroutine d_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) + end if + + call a%psb_d_csr_sparse_mat%free() + + return + end subroutine d_oacc_csr_free + + + + function d_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function d_oacc_csr_sizeof + + + function d_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSR_oacc' + end function d_oacc_csr_get_fmt subroutine d_oacc_csr_all(m, n, nz, a, info) implicit none From 9e8294066d885c3fd7fa5e846b476b29c7e25418 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 12 Jul 2024 13:01:22 +0200 Subject: [PATCH 11/86] Fix Makefile --- openacc/impl/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index ff0e8251..64879eb6 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -13,8 +13,8 @@ OBJS= psb_d_oacc_csr_vect_mv.o psb_d_oacc_csr_inner_vect_sv.o \ psb_d_oacc_csr_csmm.o psb_d_oacc_csr_csmv.o psb_d_oacc_csr_scals.o \ psb_d_oacc_csr_scal.o psb_d_oacc_csr_allocate_mnnz.o \ psb_d_oacc_csr_reallocate_nz.o psb_d_oacc_csr_cp_from_coo.o \ - psb_d_oacc_csr_cp_from_fmt.o psb_d_oacc_csr_mv_from_coo \ - psb_d_oacc_csr_mv_from_fmt psb_d_oacc_csr_mold.o \ + psb_d_oacc_csr_cp_from_fmt.o psb_d_oacc_csr_mv_from_coo.o \ + psb_d_oacc_csr_mv_from_fmt.o psb_d_oacc_csr_mold.o \ psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o objs: $(OBJS) From 0707cc0a72fcb6d3282f8d3e353e21887eb46494 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 12 Jul 2024 13:01:32 +0200 Subject: [PATCH 12/86] Take out reference to elldev_mod --- openacc/impl/psb_d_oacc_csr_csmm.F90 | 6 +++--- openacc/impl/psb_d_oacc_csr_csmv.F90 | 6 +++--- openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/openacc/impl/psb_d_oacc_csr_csmm.F90 b/openacc/impl/psb_d_oacc_csr_csmm.F90 index e7224764..4b404ad1 100644 --- a/openacc/impl/psb_d_oacc_csr_csmm.F90 +++ b/openacc/impl/psb_d_oacc_csr_csmm.F90 @@ -1,7 +1,7 @@ subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) use psb_base_mod - use elldev_mod - use psb_vectordev_mod + !use elldev_mod + !use psb_vectordev_mod use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_csmm implicit none class(psb_d_oacc_csr_sparse_mat), intent(in) :: a @@ -83,4 +83,4 @@ subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) return end subroutine psb_d_oacc_csr_csmm - \ No newline at end of file + diff --git a/openacc/impl/psb_d_oacc_csr_csmv.F90 b/openacc/impl/psb_d_oacc_csr_csmv.F90 index c3291acf..65acc8e4 100644 --- a/openacc/impl/psb_d_oacc_csr_csmv.F90 +++ b/openacc/impl/psb_d_oacc_csr_csmv.F90 @@ -1,7 +1,7 @@ subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) use psb_base_mod - use elldev_mod - use psb_vectordev_mod + !use elldev_mod + !use psb_vectordev_mod use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_csmv implicit none class(psb_d_oacc_csr_sparse_mat), intent(in) :: a @@ -78,4 +78,4 @@ subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) return end subroutine psb_d_oacc_csr_csmv - \ No newline at end of file + diff --git a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 index c0461c82..a15a710e 100644 --- a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 @@ -1,7 +1,7 @@ subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) use psb_base_mod - use elldev_mod - use psb_vectordev_mod + ! use elldev_mod + ! use psb_vectordev_mod use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_inner_vect_sv use psb_d_oacc_vect_mod implicit none @@ -81,4 +81,4 @@ subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) 9999 call psb_error_handler(err_act) return end subroutine psb_d_oacc_csr_inner_vect_sv - \ No newline at end of file + From 7006665d823f9ca3efcbd929e933fe0cc956adc0 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 12 Jul 2024 16:34:48 +0200 Subject: [PATCH 13/86] Introduce submodules, adjust Makefile --- openacc/impl/Makefile | 12 + openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 | 27 +- openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 | 25 +- openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 | 21 +- openacc/impl/psb_d_oacc_csr_csmm.F90 | 40 +- openacc/impl/psb_d_oacc_csr_csmv.F90 | 40 +- openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 | 33 +- openacc/impl/psb_d_oacc_csr_mold.F90 | 24 +- openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 | 27 +- openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 | 21 +- openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 | 23 +- openacc/impl/psb_d_oacc_csr_scal.F90 | 27 +- openacc/impl/psb_d_oacc_csr_scals.F90 | 46 +- openacc/impl/psb_d_oacc_csr_vect_mv.F90 | 66 +- openacc/impl/psb_d_oacc_mlt_v.f90 | 57 +- openacc/impl/psb_d_oacc_mlt_v_2.f90 | 84 +-- openacc/psb_d_oacc_csr_mat_mod.F90 | 689 +++++++++--------- openacc/psb_d_oacc_vect_mod.F90 | 14 +- 18 files changed, 645 insertions(+), 631 deletions(-) diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index 64879eb6..56df9402 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -2,6 +2,7 @@ include ../../Make.inc LIBDIR=../../lib INCDIR=../../include MODDIR=../../modules +UP=.. # # Compilers and such # @@ -22,6 +23,17 @@ objs: $(OBJS) lib: objs ar cur ../$(LIBNAME) $(OBJS) + +psb_d_oacc_csr_vect_mv.o psb_d_oacc_csr_inner_vect_sv.o \ + psb_d_oacc_csr_csmm.o psb_d_oacc_csr_csmv.o psb_d_oacc_csr_scals.o \ + psb_d_oacc_csr_scal.o psb_d_oacc_csr_allocate_mnnz.o \ + psb_d_oacc_csr_reallocate_nz.o psb_d_oacc_csr_cp_from_coo.o \ + psb_d_oacc_csr_cp_from_fmt.o psb_d_oacc_csr_mv_from_coo.o \ + psb_d_oacc_csr_mv_from_fmt.o psb_d_oacc_csr_mold.o: $(UP)/psb_d_oacc_csr_mat_mod.o + +psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o: $(UP)/psb_d_oacc_vect_mod.o + + clean: /bin/rm -f $(OBJS) diff --git a/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 index a0b8abe0..5281edee 100644 --- a/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 +++ b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 @@ -1,6 +1,7 @@ -subroutine psb_d_oacc_csr_allocate_mnnz(m, n, a, nz) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_allocate_mnnz +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_allocate_mnnz(m, n, a, nz) implicit none integer(psb_ipk_), intent(in) :: m, n class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a @@ -9,26 +10,26 @@ subroutine psb_d_oacc_csr_allocate_mnnz(m, n, a, nz) integer(psb_ipk_) :: err_act, nz_ character(len=20) :: name='allocate_mnz' logical, parameter :: debug=.false. - + call psb_erractionsave(err_act) info = psb_success_ - + call a%psb_d_csr_sparse_mat%allocate(m, n, nz) - + if (.not.allocated(a%val)) then allocate(a%val(nz)) allocate(a%ja(nz)) allocate(a%irp(m+1)) end if - + call a%set_dev() if (info /= 0) goto 9999 - + call psb_erractionrestore(err_act) return - - 9999 call psb_error_handler(err_act) + +9999 call psb_error_handler(err_act) return - -end subroutine psb_d_oacc_csr_allocate_mnnz - \ No newline at end of file + + end subroutine psb_d_oacc_csr_allocate_mnnz +end submodule psb_d_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 index c84c5876..ec92f618 100644 --- a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 @@ -1,25 +1,26 @@ -subroutine psb_d_oacc_csr_cp_from_coo(a, b, info) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_cp_from_coo +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_cp_from_coo(a, b, info) implicit none - + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - + info = psb_success_ - + call a%psb_d_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - + call a%set_dev() if (info /= 0) goto 9999 - + return - - 9999 continue + +9999 continue info = psb_err_alloc_dealloc_ return - + end subroutine psb_d_oacc_csr_cp_from_coo - \ No newline at end of file +end submodule psb_d_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 index 2eae41d7..37541ea9 100644 --- a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 @@ -1,23 +1,24 @@ -subroutine psb_d_oacc_csr_cp_from_fmt(a, b, info) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_cp_from_fmt +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_cp_from_fmt(a, b, info) implicit none - + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - + info = psb_success_ - + select type(b) type is (psb_d_coo_sparse_mat) call a%cp_from_coo(b, info) class default call a%psb_d_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - + !$acc update device(a%val, a%ja, a%irp) end select - -end subroutine psb_d_oacc_csr_cp_from_fmt - \ No newline at end of file + + end subroutine psb_d_oacc_csr_cp_from_fmt +end submodule psb_d_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_csr_csmm.F90 b/openacc/impl/psb_d_oacc_csr_csmm.F90 index 4b404ad1..6ab87175 100644 --- a/openacc/impl/psb_d_oacc_csr_csmm.F90 +++ b/openacc/impl/psb_d_oacc_csr_csmm.F90 @@ -1,8 +1,7 @@ -subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - use psb_base_mod - !use elldev_mod - !use psb_vectordev_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_csmm +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_csmm_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) implicit none class(psb_d_oacc_csr_sparse_mat), intent(in) :: a real(psb_dpk_), intent(in) :: alpha, beta @@ -10,30 +9,30 @@ subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) real(psb_dpk_), intent(inout) :: y(:,:) integer(psb_ipk_), intent(out) :: info character, optional, intent(in) :: trans - + character :: trans_ integer(psb_ipk_) :: i, j, m, n,k, nxy logical :: tra integer(psb_ipk_) :: err_act character(len=20) :: name = 'd_oacc_csmm' logical, parameter :: debug = .false. - + info = psb_success_ call psb_erractionsave(err_act) - + if (present(trans)) then trans_ = trans else trans_ = 'N' end if - + if (.not.a%is_asb()) then info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - + if (tra) then m = a%get_ncols() n = a%get_nrows() @@ -41,31 +40,31 @@ subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) n = a%get_ncols() m = a%get_nrows() end if - + if (size(x,1) < n) then info = 36 call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) goto 9999 end if - + if (size(y,1) < m) then info = 36 call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) goto 9999 end if - + if (tra) then call a%psb_d_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) else nxy = min(size(x,2), size(y,2)) - + !$acc parallel loop collapse(2) present(a, x, y) do j = 1, nxy do i = 1, m y(i,j) = beta * y(i,j) end do end do - + !$acc parallel loop collapse(2) present(a, x, y) do j = 1, nxy do i = 1, n @@ -75,12 +74,13 @@ subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) end do end do endif - + call psb_erractionrestore(err_act) return - - 9999 call psb_error_handler(err_act) + +9999 call psb_error_handler(err_act) return - + end subroutine psb_d_oacc_csr_csmm - +end submodule psb_d_oacc_csr_csmm_impl + diff --git a/openacc/impl/psb_d_oacc_csr_csmv.F90 b/openacc/impl/psb_d_oacc_csr_csmv.F90 index 65acc8e4..205a7a59 100644 --- a/openacc/impl/psb_d_oacc_csr_csmv.F90 +++ b/openacc/impl/psb_d_oacc_csr_csmv.F90 @@ -1,8 +1,7 @@ -subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - use psb_base_mod - !use elldev_mod - !use psb_vectordev_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_csmv +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_csmv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) implicit none class(psb_d_oacc_csr_sparse_mat), intent(in) :: a real(psb_dpk_), intent(in) :: alpha, beta @@ -10,31 +9,31 @@ subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) real(psb_dpk_), intent(inout) :: y(:) integer(psb_ipk_), intent(out) :: info character, optional, intent(in) :: trans - + character :: trans_ integer(psb_ipk_) :: i, j, m, n logical :: tra integer(psb_ipk_) :: err_act character(len=20) :: name = 'd_oacc_csmv' logical, parameter :: debug = .false. - + call psb_erractionsave(err_act) info = psb_success_ - + if (present(trans)) then trans_ = trans else trans_ = 'N' end if - + if (.not.a%is_asb()) then info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif - + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - + if (tra) then m = a%get_ncols() n = a%get_nrows() @@ -42,19 +41,19 @@ subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) n = a%get_ncols() m = a%get_nrows() end if - + if (size(x,1) < n) then info = 36 call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) goto 9999 end if - + if (size(y,1) < m) then info = 36 call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) goto 9999 end if - + if (tra) then call a%psb_d_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) else @@ -62,7 +61,7 @@ subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) do i = 1, m y(i) = beta * y(i) end do - + !$acc parallel loop present(a, x, y) do i = 1, n do j = a%irp(i), a%irp(i+1) - 1 @@ -70,12 +69,13 @@ subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) end do end do endif - + call psb_erractionrestore(err_act) return - - 9999 call psb_error_handler(err_act) + +9999 call psb_error_handler(err_act) return - + end subroutine psb_d_oacc_csr_csmv - +end submodule psb_d_oacc_csr_csmv_impl + diff --git a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 index a15a710e..5f0ef4a0 100644 --- a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 @@ -1,16 +1,14 @@ -subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) - use psb_base_mod - ! use elldev_mod - ! use psb_vectordev_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_inner_vect_sv - use psb_d_oacc_vect_mod +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) implicit none class(psb_d_oacc_csr_sparse_mat), intent(in) :: a real(psb_dpk_), intent(in) :: alpha, beta class(psb_d_base_vect_type), intent(inout) :: x, y integer(psb_ipk_), intent(out) :: info character, optional, intent(in) :: trans - + real(psb_dpk_), allocatable :: rx(:), ry(:) logical :: tra character :: trans_ @@ -18,24 +16,24 @@ subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) character(len=20) :: name = 'd_oacc_csr_inner_vect_sv' logical, parameter :: debug = .false. integer(psb_ipk_) :: i - + call psb_get_erraction(err_act) info = psb_success_ - + if (present(trans)) then trans_ = trans else trans_ = 'N' end if - + if (.not.a%is_asb()) then info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif - + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - + if (tra .or. (beta /= dzero)) then call x%sync() call y%sync() @@ -68,17 +66,18 @@ subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) call y%bld(ry) end select endif - + if (info /= psb_success_) then info = psb_err_from_subroutine_ call psb_errpush(info, name, a_err = 'csrg_vect_sv') goto 9999 endif - + call psb_erractionrestore(err_act) return - - 9999 call psb_error_handler(err_act) + +9999 call psb_error_handler(err_act) return end subroutine psb_d_oacc_csr_inner_vect_sv - +end submodule psb_d_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_d_oacc_csr_mold.F90 b/openacc/impl/psb_d_oacc_csr_mold.F90 index 08598cb6..dc9ff711 100644 --- a/openacc/impl/psb_d_oacc_csr_mold.F90 +++ b/openacc/impl/psb_d_oacc_csr_mold.F90 @@ -1,6 +1,7 @@ -subroutine psb_d_oacc_csr_mold(a, b, info) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_mold +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_mold(a, b, info) implicit none class(psb_d_oacc_csr_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(inout), allocatable :: b @@ -8,26 +9,27 @@ subroutine psb_d_oacc_csr_mold(a, b, info) integer(psb_ipk_) :: err_act character(len=20) :: name='csr_mold' logical, parameter :: debug=.false. - + call psb_get_erraction(err_act) - + info = 0 if (allocated(b)) then call b%free() deallocate(b, stat=info) end if if (info == 0) allocate(psb_d_oacc_csr_sparse_mat :: b, stat=info) - + if (info /= psb_success_) then info = psb_err_alloc_dealloc_ call psb_errpush(info, name) goto 9999 end if return - - 9999 call psb_error_handler(err_act) - + +9999 call psb_error_handler(err_act) + return - + end subroutine psb_d_oacc_csr_mold - \ No newline at end of file +end submodule psb_d_oacc_csr_mold_impl + diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 index 5f4a6b41..2ed9b032 100644 --- a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 @@ -1,24 +1,25 @@ -subroutine psb_d_oacc_csr_mv_from_coo(a, b, info) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_mv_from_coo +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_mv_from_coo(a, b, info) implicit none - + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: b integer(psb_ipk_), intent(out) :: info - + info = psb_success_ - + call a%psb_d_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - + !$acc update device(a%val, a%ja, a%irp) - + return - - 9999 continue + +9999 continue info = psb_err_alloc_dealloc_ return - -end subroutine psb_d_oacc_csr_mv_from_coo - \ No newline at end of file + + end subroutine psb_d_oacc_csr_mv_from_coo +end submodule psb_d_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 index 16a4636b..197ed911 100644 --- a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 @@ -1,23 +1,24 @@ -subroutine psb_d_oacc_csr_mv_from_fmt(a, b, info) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_mv_from_fmt +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_mv_from_fmt(a, b, info) implicit none - + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: b integer(psb_ipk_), intent(out) :: info - + info = psb_success_ - + select type(b) type is (psb_d_coo_sparse_mat) call a%mv_from_coo(b, info) class default call a%psb_d_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - + !$acc update device(a%val, a%ja, a%irp) end select - -end subroutine psb_d_oacc_csr_mv_from_fmt - \ No newline at end of file + + end subroutine psb_d_oacc_csr_mv_from_fmt +end submodule psb_d_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 index 7a6723d0..c345f681 100644 --- a/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 +++ b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 @@ -1,6 +1,7 @@ -subroutine psb_d_oacc_csr_reallocate_nz(nz, a) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_reallocate_nz +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_reallocate_nz(nz, a) implicit none integer(psb_ipk_), intent(in) :: nz class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a @@ -8,20 +9,20 @@ subroutine psb_d_oacc_csr_reallocate_nz(nz, a) integer(psb_ipk_) :: err_act character(len=20) :: name='d_oacc_csr_reallocate_nz' logical, parameter :: debug=.false. - + call psb_erractionsave(err_act) info = psb_success_ - + call a%psb_d_csr_sparse_mat%reallocate(nz) - + call a%set_dev() if (info /= 0) goto 9999 - + call psb_erractionrestore(err_act) return - - 9999 call psb_error_handler(err_act) + +9999 call psb_error_handler(err_act) return - + end subroutine psb_d_oacc_csr_reallocate_nz - \ No newline at end of file +end submodule psb_d_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_d_oacc_csr_scal.F90 b/openacc/impl/psb_d_oacc_csr_scal.F90 index b2bf12e8..cc693fa2 100644 --- a/openacc/impl/psb_d_oacc_csr_scal.F90 +++ b/openacc/impl/psb_d_oacc_csr_scal.F90 @@ -1,22 +1,23 @@ -subroutine psb_d_oacc_csr_scal(d, a, info, side) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_scal +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_scal(d, a, info, side) implicit none class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a real(psb_dpk_), intent(in) :: d(:) integer(psb_ipk_), intent(out) :: info character, intent(in), optional :: side - + integer(psb_ipk_) :: err_act character(len=20) :: name='scal' logical, parameter :: debug=.false. integer(psb_ipk_) :: i, j - + info = psb_success_ call psb_erractionsave(err_act) - + if (a%is_host()) call a%sync() - + if (present(side)) then if (side == 'L') then !$acc parallel loop present(a, d) @@ -39,14 +40,14 @@ subroutine psb_d_oacc_csr_scal(d, a, info, side) a%val(i) = a%val(i) * d(i) end do end if - + call a%set_dev() - + call psb_erractionrestore(err_act) return - - 9999 call psb_error_handler(err_act) + +9999 call psb_error_handler(err_act) return - + end subroutine psb_d_oacc_csr_scal - \ No newline at end of file +end submodule psb_d_oacc_csr_scal_impl diff --git a/openacc/impl/psb_d_oacc_csr_scals.F90 b/openacc/impl/psb_d_oacc_csr_scals.F90 index 8c77f647..157355d8 100644 --- a/openacc/impl/psb_d_oacc_csr_scals.F90 +++ b/openacc/impl/psb_d_oacc_csr_scals.F90 @@ -1,32 +1,34 @@ -subroutine psb_d_oacc_csr_scals(d, a, info) +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_scals_impl use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_scals - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d - integer(psb_ipk_), intent(out) :: info +contains + module subroutine psb_d_oacc_csr_scals(d, a, info) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: err_act - character(len=20) :: name='scal' - logical, parameter :: debug=.false. - integer(psb_ipk_) :: i + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i - info = psb_success_ - call psb_erractionsave(err_act) + info = psb_success_ + call psb_erractionsave(err_act) - if (a%is_host()) call a%sync() + if (a%is_host()) call a%sync() - !$acc parallel loop present(a) - do i = 1, size(a%val) - a%val(i) = a%val(i) * d - end do + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do - call a%set_dev() + call a%set_dev() - call psb_erractionrestore(err_act) - return + call psb_erractionrestore(err_act) + return 9999 call psb_error_handler(err_act) - return + return -end subroutine psb_d_oacc_csr_scals + end subroutine psb_d_oacc_csr_scals +end submodule psb_d_oacc_csr_scals_impl diff --git a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 index f0394591..1dca2ba2 100644 --- a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 @@ -1,6 +1,7 @@ -subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) - use psb_base_mod - use psb_d_oacc_csr_mat_mod, psb_protect_name => psb_d_oacc_csr_vect_mv +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) implicit none real(psb_dpk_), intent(in) :: alpha, beta @@ -16,9 +17,9 @@ subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) n = a%get_ncols() if ((n /= size(x%v)) .or. (n /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) - info = psb_err_invalid_mat_state_ - return + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return end if if (a%is_host()) call a%sync() @@ -28,34 +29,35 @@ subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) call y%set_dev() -contains + contains subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) - implicit none - integer(psb_ipk_) :: m, n - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_) :: val(:), x(:), y(:) - integer(psb_ipk_) :: ja(:), irp(:) - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, ii, isz - real(psb_dpk_) :: tmp - integer(psb_ipk_), parameter :: vsz = 256 - - info = 0 - - !$acc parallel loop vector_length(vsz) private(isz) - do ii = 1, m, vsz - isz = min(vsz, m - ii + 1) - !$acc loop independent private(tmp) - do i = ii, ii + isz - 1 - tmp = 0.0_psb_dpk_ - !$acc loop seq - do j = irp(i), irp(i + 1) - 1 - tmp = tmp + val(j) * x(ja(j)) - end do - y(i) = alpha * tmp + beta * y(i) - end do + implicit none + integer(psb_ipk_) :: m, n + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) end do + end do end subroutine inner_spmv -end subroutine psb_d_oacc_csr_vect_mv + end subroutine psb_d_oacc_csr_vect_mv +end submodule psb_d_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_d_oacc_mlt_v.f90 b/openacc/impl/psb_d_oacc_mlt_v.f90 index bedd0247..ab242b57 100644 --- a/openacc/impl/psb_d_oacc_mlt_v.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v.f90 @@ -1,31 +1,34 @@ +submodule (psb_d_oacc_vect_mod) psb_d_oacc_mlt_v_impl + use psb_string_mod +contains -subroutine d_oacc_mlt_v(x, y, info) - use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v + module subroutine psb_d_oacc_mlt_v(x, y, info) - implicit none - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_vect_oacc), intent(inout) :: y - integer(psb_ipk_), intent(out) :: info + implicit none + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, n + integer(psb_ipk_) :: i, n - info = 0 - n = min(x%get_nrows(), y%get_nrows()) - select type(xx => x) - class is (psb_d_vect_oacc) - if (y%is_host()) call y%sync() - if (xx%is_host()) call xx%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do - call y%set_dev() - class default - if (xx%is_dev()) call xx%sync() - if (y%is_dev()) call y%sync() - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do - call y%set_host() - end select -end subroutine d_oacc_mlt_v + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_d_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select + end subroutine psb_d_oacc_mlt_v +end submodule psb_d_oacc_mlt_v_impl diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 index 7e46495f..4ca2bdab 100644 --- a/openacc/impl/psb_d_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -1,53 +1,55 @@ -subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v_2 +submodule (psb_d_oacc_vect_mod) d_oacc_mlt_v_2_impl use psb_string_mod - implicit none - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_base_vect_type), intent(inout) :: y - class(psb_d_vect_oacc), intent(inout) :: z - integer(psb_ipk_), intent(out) :: info - character(len=1), intent(in), optional :: conjgx, conjgy - integer(psb_ipk_) :: i, n - logical :: conjgx_, conjgy_ +contains + module subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ - conjgx_ = .false. - conjgy_ = .false. - if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') - if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + conjgx_ = .false. + conjgy_ = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') - n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) - info = 0 - select type(xx => x) - class is (psb_d_vect_oacc) - select type (yy => y) + info = 0 + select type(xx => x) class is (psb_d_vect_oacc) - if (xx%is_host()) call xx%sync() - if (yy%is_host()) call yy%sync() - if ((beta /= dzero) .and. (z%is_host())) call z%sync() - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) - end do - call z%set_dev() + select type (yy => y) + class is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= dzero) .and. (z%is_host())) call z%sync() + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + end do + call z%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (yy%is_dev()) call yy%sync() + if ((beta /= dzero) .and. (z%is_dev())) call z%sync() + do i = 1, n + z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + end do + call z%set_host() + end select class default - if (xx%is_dev()) call xx%sync() - if (yy%is_dev()) call yy%sync() + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() if ((beta /= dzero) .and. (z%is_dev())) call z%sync() do i = 1, n - z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) end do call z%set_host() end select - class default - if (x%is_dev()) call x%sync() - if (y%is_dev()) call y%sync() - if ((beta /= dzero) .and. (z%is_dev())) call z%sync() - do i = 1, n - z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) - end do - call z%set_host() - end select -end subroutine d_oacc_mlt_v_2 + end subroutine d_oacc_mlt_v_2 +end submodule d_oacc_mlt_v_2_impl diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index b8eb1be9..ca4199a8 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -1,359 +1,346 @@ module psb_d_oacc_csr_mat_mod - use iso_c_binding - use psb_d_mat_mod - use psb_d_oacc_vect_mod - !use oaccsparse_mod - - integer(psb_ipk_), parameter, private :: is_host = -1 - integer(psb_ipk_), parameter, private :: is_sync = 0 - integer(psb_ipk_), parameter, private :: is_dev = 1 - - type, extends(psb_d_csr_sparse_mat) :: psb_d_oacc_csr_sparse_mat - integer(psb_ipk_) :: devstate = is_host - contains - procedure, nopass :: get_fmt => d_oacc_csr_get_fmt - procedure, pass(a) :: sizeof => d_oacc_csr_sizeof - procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv - procedure, pass(a) :: in_vect_sv => psb_d_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_d_oacc_csr_csmv - procedure, pass(a) :: scals => psb_d_oacc_csr_scals - procedure, pass(a) :: scalv => psb_d_oacc_csr_scal - procedure, pass(a) :: reallocate_nz => psb_d_oacc_csr_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_d_oacc_csr_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_d_oacc_csr_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_d_oacc_csr_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_d_oacc_csr_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_d_oacc_csr_mv_from_fmt - procedure, pass(a) :: free => d_oacc_csr_free - procedure, pass(a) :: mold => psb_d_oacc_csr_mold - procedure, pass(a) :: all => d_oacc_csr_all - procedure, pass(a) :: is_host => d_oacc_csr_is_host - procedure, pass(a) :: is_sync => d_oacc_csr_is_sync - procedure, pass(a) :: is_dev => d_oacc_csr_is_dev - procedure, pass(a) :: set_host => d_oacc_csr_set_host - procedure, pass(a) :: set_sync => d_oacc_csr_set_sync - procedure, pass(a) :: set_dev => d_oacc_csr_set_dev - procedure, pass(a) :: sync_space => d_oacc_csr_sync_space - procedure, pass(a) :: sync => d_oacc_csr_sync - end type psb_d_oacc_csr_sparse_mat - - interface - subroutine psb_d_oacc_csr_mold(a,b,info) - import :: psb_d_oacc_csr_sparse_mat, psb_d_base_sparse_mat, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - class(psb_d_base_sparse_mat), intent(inout), allocatable :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_csr_mold - end interface - - interface - subroutine psb_d_oacc_csr_cp_from_fmt(a,b,info) - import :: psb_d_oacc_csr_sparse_mat, psb_d_base_sparse_mat, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_csr_cp_from_fmt - end interface - - interface - subroutine psb_d_oacc_csr_mv_from_coo(a,b,info) - import :: psb_d_oacc_csr_sparse_mat, psb_d_coo_sparse_mat, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_csr_mv_from_coo - end interface - - interface - subroutine psb_d_oacc_csr_mv_from_fmt(a,b,info) - import :: psb_d_oacc_csr_sparse_mat, psb_d_base_sparse_mat, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_csr_mv_from_fmt - end interface - - interface - subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) - import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x, y - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_csr_vect_mv - end interface - - interface - subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) - import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x,y - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_csr_inner_vect_sv - end interface - - interface - subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_csr_csmm - end interface - - interface - subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_d_base_vect_type, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_csr_csmv - end interface - - interface - subroutine psb_d_oacc_csr_scals(d, a, info) - import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_csr_scals - end interface - - interface - subroutine psb_d_oacc_csr_scal(d,a,info,side) - import :: psb_d_oacc_csr_sparse_mat, psb_dpk_, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: side - end subroutine psb_d_oacc_csr_scal - end interface - - interface - subroutine psb_d_oacc_csr_reallocate_nz(nz,a) - import :: psb_d_oacc_csr_sparse_mat, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in) :: nz - end subroutine psb_d_oacc_csr_reallocate_nz - end interface - - interface - subroutine psb_d_oacc_csr_allocate_mnnz(m,n,a,nz) - import :: psb_d_oacc_csr_sparse_mat, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in) :: m,n - integer(psb_ipk_), intent(in), optional :: nz - end subroutine psb_d_oacc_csr_allocate_mnnz - end interface - - interface - subroutine psb_d_oacc_csr_cp_from_coo(a,b,info) - import :: psb_d_oacc_csr_sparse_mat, psb_d_coo_sparse_mat, psb_ipk_ - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_csr_cp_from_coo - end interface + use iso_c_binding + use psb_d_mat_mod + use psb_d_oacc_vect_mod + !use oaccsparse_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_csr_sparse_mat) :: psb_d_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => d_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_d_oacc_csr_csmv + procedure, pass(a) :: scals => psb_d_oacc_csr_scals + procedure, pass(a) :: scalv => psb_d_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => d_oacc_csr_free + procedure, pass(a) :: mold => psb_d_oacc_csr_mold + procedure, pass(a) :: all => d_oacc_csr_all + procedure, pass(a) :: is_host => d_oacc_csr_is_host + procedure, pass(a) :: is_sync => d_oacc_csr_is_sync + procedure, pass(a) :: is_dev => d_oacc_csr_is_dev + procedure, pass(a) :: set_host => d_oacc_csr_set_host + procedure, pass(a) :: set_sync => d_oacc_csr_set_sync + procedure, pass(a) :: set_dev => d_oacc_csr_set_dev + procedure, pass(a) :: sync_space => d_oacc_csr_sync_space + procedure, pass(a) :: sync => d_oacc_csr_sync + end type psb_d_oacc_csr_sparse_mat + + interface + module subroutine psb_d_oacc_csr_mold(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mold + end interface + + interface + module subroutine psb_d_oacc_csr_cp_from_fmt(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_csr_mv_from_coo(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_csr_mv_from_fmt(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_csmm + end interface + + interface + module subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_csmv + end interface + + interface + module subroutine psb_d_oacc_csr_scals(d, a, info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_scals + end interface + + interface + module subroutine psb_d_oacc_csr_scal(d,a,info,side) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_csr_scal + end interface + + interface + module subroutine psb_d_oacc_csr_reallocate_nz(nz,a) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_csr_cp_from_coo(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_cp_from_coo + end interface contains - - - subroutine d_oacc_csr_free(a) - use psb_base_mod - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - integer(psb_ipk_) :: info - - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) - end if - - call a%psb_d_csr_sparse_mat%free() - - return - end subroutine d_oacc_csr_free - - - function d_oacc_csr_sizeof(a) result(res) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - integer(psb_epk_) :: res - if (a%is_dev()) call a%sync() - - res = 8 - res = res + psb_sizeof_dp * size(a%val) - res = res + psb_sizeof_ip * size(a%irp) - res = res + psb_sizeof_ip * size(a%ja) - - end function d_oacc_csr_sizeof - - - function d_oacc_csr_get_fmt() result(res) - implicit none - character(len=5) :: res - res = 'CSR_oacc' - end function d_oacc_csr_get_fmt - - subroutine d_oacc_csr_all(m, n, nz, a, info) - implicit none - integer(psb_ipk_), intent(in) :: m, n, nz - class(psb_d_oacc_csr_sparse_mat), intent(out) :: a - integer(psb_ipk_), intent(out) :: info - - info = 0 - if (allocated(a%val)) then - !$acc exit data delete(a%val) finalize - deallocate(a%val, stat=info) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) finalize - deallocate(a%ja, stat=info) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) finalize - deallocate(a%irp, stat=info) - end if - - call a%set_nrows(m) - call a%set_ncols(n) - - allocate(a%val(nz),stat=info) - allocate(a%ja(nz),stat=info) - allocate(a%irp(m+1),stat=info) - if (info == 0) call a%set_host() - if (info == 0) call a%sync_space() - end subroutine d_oacc_csr_all - - function d_oacc_csr_is_host(a) result(res) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_host) - end function d_oacc_csr_is_host - - function d_oacc_csr_is_sync(a) result(res) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_sync) - end function d_oacc_csr_is_sync - - function d_oacc_csr_is_dev(a) result(res) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_dev) - end function d_oacc_csr_is_dev - - subroutine d_oacc_csr_set_host(a) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - - a%devstate = is_host - end subroutine d_oacc_csr_set_host - - subroutine d_oacc_csr_set_sync(a) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - - a%devstate = is_sync - end subroutine d_oacc_csr_set_sync - - subroutine d_oacc_csr_set_dev(a) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - - a%devstate = is_dev - end subroutine d_oacc_csr_set_dev - - subroutine d_oacc_csr_sync_space(a) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call d_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irp)) then - call i_oacc_create_dev(a%irp) - end if - contains - subroutine d_oacc_create_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine d_oacc_create_dev - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - end subroutine d_oacc_csr_sync_space - - subroutine d_oacc_csr_sync(a) - implicit none - class(psb_d_oacc_csr_sparse_mat), target, intent(in) :: a - class(psb_d_oacc_csr_sparse_mat), pointer :: tmpa - integer(psb_ipk_) :: info - - tmpa => a - if (a%is_dev()) then - call d_oacc_csr_to_host(a%val) - call i_oacc_csr_to_host(a%ja) - call i_oacc_csr_to_host(a%irp) - else if (a%is_host()) then - call d_oacc_csr_to_dev(a%val) - call i_oacc_csr_to_dev(a%ja) - call i_oacc_csr_to_dev(a%irp) - end if - call tmpa%set_sync() - end subroutine d_oacc_csr_sync - - subroutine d_oacc_csr_to_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine d_oacc_csr_to_dev - - subroutine d_oacc_csr_to_host(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine d_oacc_csr_to_host - - subroutine i_oacc_csr_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_csr_to_dev - - subroutine i_oacc_csr_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_csr_to_host - - + subroutine d_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) + end if + + call a%psb_d_csr_sparse_mat%free() + + return + end subroutine d_oacc_csr_free + + + + function d_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function d_oacc_csr_sizeof + + + function d_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSR_oacc' + end function d_oacc_csr_get_fmt + + subroutine d_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_d_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(a%val)) then + !$acc exit data delete(a%val) finalize + deallocate(a%val, stat=info) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) finalize + deallocate(a%ja, stat=info) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) finalize + deallocate(a%irp, stat=info) + end if + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_space() + end subroutine d_oacc_csr_all + + function d_oacc_csr_is_host(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_csr_is_host + + function d_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_csr_is_sync + + function d_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_csr_is_dev + + subroutine d_oacc_csr_set_host(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_csr_set_host + + subroutine d_oacc_csr_set_sync(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_csr_set_sync + + subroutine d_oacc_csr_set_dev(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_csr_set_dev + + subroutine d_oacc_csr_sync_space(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + if (allocated(a%val)) then + call d_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irp)) then + call i_oacc_create_dev(a%irp) + end if + contains + subroutine d_oacc_create_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine d_oacc_create_dev + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + end subroutine d_oacc_csr_sync_space + + subroutine d_oacc_csr_sync(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call d_oacc_csr_to_host(a%val) + call i_oacc_csr_to_host(a%ja) + call i_oacc_csr_to_host(a%irp) + else if (a%is_host()) then + call d_oacc_csr_to_dev(a%val) + call i_oacc_csr_to_dev(a%ja) + call i_oacc_csr_to_dev(a%irp) + end if + call tmpa%set_sync() + end subroutine d_oacc_csr_sync + + subroutine d_oacc_csr_to_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine d_oacc_csr_to_dev + + subroutine d_oacc_csr_to_host(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine d_oacc_csr_to_host + + subroutine i_oacc_csr_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_csr_to_dev + + subroutine i_oacc_csr_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_csr_to_host + + end module psb_d_oacc_csr_mat_mod diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 3139f9b8..3385f1ec 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -49,8 +49,8 @@ module psb_d_oacc_vect_mod procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz procedure, pass(y) :: mlt_a => d_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => d_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 + procedure, pass(y) :: mlt_v => psb_d_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_d_oacc_mlt_v_2 procedure, pass(x) :: scal => d_oacc_scal procedure, pass(x) :: nrm2 => d_oacc_nrm2 procedure, pass(x) :: amax => d_oacc_amax @@ -63,19 +63,17 @@ module psb_d_oacc_vect_mod real(psb_dpk_), allocatable :: v1(:),v2(:),p(:) interface - subroutine d_oacc_mlt_v(x, y, info) - import + module subroutine psb_d_oacc_mlt_v(x, y, info) implicit none class(psb_d_base_vect_type), intent(inout) :: x class(psb_d_vect_oacc), intent(inout) :: y integer(psb_ipk_), intent(out) :: info - end subroutine d_oacc_mlt_v + end subroutine psb_d_oacc_mlt_v end interface interface - subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - import + module subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) implicit none real(psb_dpk_), intent(in) :: alpha, beta class(psb_d_base_vect_type), intent(inout) :: x @@ -83,7 +81,7 @@ module psb_d_oacc_vect_mod class(psb_d_vect_oacc), intent(inout) :: z integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy - end subroutine d_oacc_mlt_v_2 + end subroutine psb_d_oacc_mlt_v_2 end interface contains From b6fe0f3344727bfdad1c44d85d511d8796fcd70e Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 17 Jul 2024 08:52:43 +0200 Subject: [PATCH 14/86] New version for modules and methods --- openacc/Makefile | 28 +- openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 | 35 + openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 | 26 + openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 | 24 + openacc/impl/psb_c_oacc_csr_csmm.F90 | 86 ++ openacc/impl/psb_c_oacc_csr_csmv.F90 | 81 ++ openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 | 83 ++ openacc/impl/psb_c_oacc_csr_mold.F90 | 35 + openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 | 25 + openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 | 24 + openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 | 28 + openacc/impl/psb_c_oacc_csr_scal.F90 | 53 + openacc/impl/psb_c_oacc_csr_scals.F90 | 34 + openacc/impl/psb_c_oacc_csr_vect_mv.F90 | 63 ++ openacc/impl/psb_c_oacc_mlt_v.f90 | 31 + openacc/impl/psb_c_oacc_mlt_v_2.f90 | 98 ++ openacc/impl/psb_d_oacc_mlt_v.f90 | 57 +- openacc/impl/psb_d_oacc_mlt_v_2.f90 | 125 ++- openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 | 35 + openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 | 26 + openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 | 24 + openacc/impl/psb_s_oacc_csr_csmm.F90 | 86 ++ openacc/impl/psb_s_oacc_csr_csmv.F90 | 81 ++ openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 | 83 ++ openacc/impl/psb_s_oacc_csr_mold.F90 | 35 + openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 | 25 + openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 | 24 + openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 | 28 + openacc/impl/psb_s_oacc_csr_scal.F90 | 53 + openacc/impl/psb_s_oacc_csr_scals.F90 | 34 + openacc/impl/psb_s_oacc_csr_vect_mv.F90 | 63 ++ openacc/impl/psb_s_oacc_mlt_v.f90 | 31 + openacc/impl/psb_s_oacc_mlt_v_2.f90 | 98 ++ openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 | 35 + openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 | 26 + openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 | 24 + openacc/impl/psb_z_oacc_csr_csmm.F90 | 86 ++ openacc/impl/psb_z_oacc_csr_csmv.F90 | 81 ++ openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 | 83 ++ openacc/impl/psb_z_oacc_csr_mold.F90 | 35 + openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 | 25 + openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 | 24 + openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 | 28 + openacc/impl/psb_z_oacc_csr_scal.F90 | 53 + openacc/impl/psb_z_oacc_csr_scals.F90 | 34 + openacc/impl/psb_z_oacc_csr_vect_mv.F90 | 63 ++ openacc/impl/psb_z_oacc_mlt_v.f90 | 31 + openacc/impl/psb_z_oacc_mlt_v_2.f90 | 98 ++ openacc/psb_c_oacc_csr_mat_mod.F90 | 343 +++++++ openacc/psb_c_oacc_vect_mod.F90 | 935 ++++++++++++++++++ openacc/psb_d_oacc_csr_mat_mod.F90 | 3 - openacc/psb_d_oacc_vect_mod.F90 | 54 +- openacc/psb_s_oacc_csr_mat_mod.F90 | 343 +++++++ openacc/psb_s_oacc_vect_mod.F90 | 935 ++++++++++++++++++ openacc/psb_z_oacc_csr_mat_mod.F90 | 343 +++++++ openacc/psb_z_oacc_vect_mod.F90 | 935 ++++++++++++++++++ 56 files changed, 6159 insertions(+), 120 deletions(-) create mode 100644 openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_csmm.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_csmv.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_mold.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_scal.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_scals.F90 create mode 100644 openacc/impl/psb_c_oacc_csr_vect_mv.F90 create mode 100644 openacc/impl/psb_c_oacc_mlt_v.f90 create mode 100644 openacc/impl/psb_c_oacc_mlt_v_2.f90 create mode 100644 openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_csmm.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_csmv.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_mold.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_scal.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_scals.F90 create mode 100644 openacc/impl/psb_s_oacc_csr_vect_mv.F90 create mode 100644 openacc/impl/psb_s_oacc_mlt_v.f90 create mode 100644 openacc/impl/psb_s_oacc_mlt_v_2.f90 create mode 100644 openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_csmm.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_csmv.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_mold.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_scal.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_scals.F90 create mode 100644 openacc/impl/psb_z_oacc_csr_vect_mv.F90 create mode 100644 openacc/impl/psb_z_oacc_mlt_v.f90 create mode 100644 openacc/impl/psb_z_oacc_mlt_v_2.f90 create mode 100644 openacc/psb_c_oacc_csr_mat_mod.F90 create mode 100644 openacc/psb_c_oacc_vect_mod.F90 create mode 100644 openacc/psb_s_oacc_csr_mat_mod.F90 create mode 100644 openacc/psb_s_oacc_vect_mod.F90 create mode 100644 openacc/psb_z_oacc_csr_mat_mod.F90 create mode 100644 openacc/psb_z_oacc_vect_mod.F90 diff --git a/openacc/Makefile b/openacc/Makefile index d1311fe2..3a752ac7 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -17,9 +17,12 @@ CINCLUDES= #LIBS=-L$(LIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lopenblas -lmetis -FOBJS= psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ - psb_oacc_mod.o psb_d_oacc_csr_mat_mod.o \ - psb_oacc_env_mod.o +FOBJS= psb_i_oacc_vect_mod.o \ + psb_s_oacc_vect_mod.o psb_s_oacc_csr_mat_mod.o \ + psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ + psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ + psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ + psb_oacc_mod.o psb_oacc_env_mod.o LIBNAME=libpsb_openacc.a @@ -40,8 +43,23 @@ iobjs: $(OBJS) ilib: $(OBJS) $(MAKE) -C impl lib -psb_oacc_mod.o : psb_i_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ - psb_d_oacc_csr_mat_mod.o psb_oacc_env_mod.o +psb_oacc_mod.o : psb_i_oacc_vect_mod.o \ + psb_s_oacc_vect_mod.o psb_s_oacc_csr_mat_mod.o \ + psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ + psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ + psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ + psb_oacc_env_mod.o + +psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ + psb_c_oacc_vect_mod.o psb_z_oacc_vect_mod.o : psb_i_oacc_vect_mod.o + + +psb_s_oacc_csr_mat_mod.o: psb_s_oacc_vect_mod.o +psb_d_oacc_csr_mat_mod.o: psb_d_oacc_vect_mod.o +psb_c_oacc_csr_mat_mod.o: psb_c_oacc_vect_mod.o +psb_z_oacc_csr_mat_mod.o: psb_z_oacc_vect_mod.o + + clean: cclean iclean /bin/rm -f $(FOBJS) *$(.mod) *.a diff --git a/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..09cdc228 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,35 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_csr_sparse_mat%allocate(m, n, nz) + + if (.not.allocated(a%val)) then + allocate(a%val(nz)) + allocate(a%ja(nz)) + allocate(a%irp(m+1)) + end if + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_allocate_mnnz +end submodule psb_c_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..70380c95 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,26 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_cp_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_c_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_csr_cp_from_coo +end submodule psb_c_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..7e664791 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_cp_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_c_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + + end subroutine psb_c_oacc_csr_cp_from_fmt +end submodule psb_c_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_csr_csmm.F90 b/openacc/impl/psb_c_oacc_csr_csmm.F90 new file mode 100644 index 00000000..c26df410 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_csmm_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(in) :: x(:,:) + complex(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n,k, nxy + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalic_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_c_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, n + do k = a%irp(i), a%irp(i+1) - 1 + y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_csmm +end submodule psb_c_oacc_csr_csmm_impl + diff --git a/openacc/impl/psb_c_oacc_csr_csmv.F90 b/openacc/impl/psb_c_oacc_csr_csmv.F90 new file mode 100644 index 00000000..8f37efb3 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_csmv.F90 @@ -0,0 +1,81 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_csmv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(in) :: x(:) + complex(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalic_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_c_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop present(a, x, y) + do i = 1, n + do j = a%irp(i), a%irp(i+1) - 1 + y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_csmv +end submodule psb_c_oacc_csr_csmv_impl + diff --git a/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..2d733f48 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,83 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalic_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_c_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_c_vect_oacc) + select type(yy => y) + type is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_c_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_c_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_c_oacc_csr_inner_vect_sv +end submodule psb_c_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_c_oacc_csr_mold.F90 b/openacc/impl/psb_c_oacc_csr_mold.F90 new file mode 100644 index 00000000..6ee36985 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_mold.F90 @@ -0,0 +1,35 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_mold(a, b, info) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_c_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_c_oacc_csr_mold +end submodule psb_c_oacc_csr_molc_impl + diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..f8c5c39d --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_mv_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_c_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irp) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_csr_mv_from_coo +end submodule psb_c_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..7ba971b4 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_mv_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_c_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + + end subroutine psb_c_oacc_csr_mv_from_fmt +end submodule psb_c_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..92a53116 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='c_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_csr_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_reallocate_nz +end submodule psb_c_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_c_oacc_csr_scal.F90 b/openacc/impl/psb_c_oacc_csr_scal.F90 new file mode 100644 index 00000000..5dece48b --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_scal.F90 @@ -0,0 +1,53 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_scal(d, a, info, side) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_scal +end submodule psb_c_oacc_csr_scal_impl diff --git a/openacc/impl/psb_c_oacc_csr_scals.F90 b/openacc/impl/psb_c_oacc_csr_scals.F90 new file mode 100644 index 00000000..aba22d43 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_scals.F90 @@ -0,0 +1,34 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_scals_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_scals(d, a, info) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_scals +end submodule psb_c_oacc_csr_scals_impl diff --git a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..b4b79d56 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 @@ -0,0 +1,63 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n /= size(x%v)) .or. (n /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalic_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_c_oacc_csr_vect_mv +end submodule psb_c_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_c_oacc_mlt_v.f90 b/openacc/impl/psb_c_oacc_mlt_v.f90 new file mode 100644 index 00000000..66c4e865 --- /dev/null +++ b/openacc/impl/psb_c_oacc_mlt_v.f90 @@ -0,0 +1,31 @@ + +subroutine c_oacc_mlt_v(x, y, info) + use psb_c_oacc_vect_mod, psb_protect_name => c_oacc_mlt_v + + implicit none + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_c_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +end subroutine c_oacc_mlt_v diff --git a/openacc/impl/psb_c_oacc_mlt_v_2.f90 b/openacc/impl/psb_c_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..a6bb6cc5 --- /dev/null +++ b/openacc/impl/psb_c_oacc_mlt_v_2.f90 @@ -0,0 +1,98 @@ +subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_c_oacc_vect_mod, psb_protect_name => c_oacc_mlt_v_2 + use psb_string_mod + implicit none + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + class(psb_c_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ + + conjgx_ = .false. + conjgy_ = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= czero) .and. (z%is_host())) call z%sync() + if (conjgx_.and.conjgy_) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + + end if + call z%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (yy%is_dev()) call yy%sync() + if ((beta /= czero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end select + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= czero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end select +end subroutine c_oacc_mlt_v_2 + diff --git a/openacc/impl/psb_d_oacc_mlt_v.f90 b/openacc/impl/psb_d_oacc_mlt_v.f90 index ab242b57..bedd0247 100644 --- a/openacc/impl/psb_d_oacc_mlt_v.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v.f90 @@ -1,34 +1,31 @@ -submodule (psb_d_oacc_vect_mod) psb_d_oacc_mlt_v_impl - use psb_string_mod -contains - module subroutine psb_d_oacc_mlt_v(x, y, info) +subroutine d_oacc_mlt_v(x, y, info) + use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v - implicit none - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_vect_oacc), intent(inout) :: y - integer(psb_ipk_), intent(out) :: info + implicit none + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, n + integer(psb_ipk_) :: i, n - info = 0 - n = min(x%get_nrows(), y%get_nrows()) - select type(xx => x) - class is (psb_d_vect_oacc) - if (y%is_host()) call y%sync() - if (xx%is_host()) call xx%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do - call y%set_dev() - class default - if (xx%is_dev()) call xx%sync() - if (y%is_dev()) call y%sync() - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do - call y%set_host() - end select - end subroutine psb_d_oacc_mlt_v -end submodule psb_d_oacc_mlt_v_impl + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_d_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +end subroutine d_oacc_mlt_v diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 index 4ca2bdab..e7dd604f 100644 --- a/openacc/impl/psb_d_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -1,55 +1,98 @@ -submodule (psb_d_oacc_vect_mod) d_oacc_mlt_v_2_impl +subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v_2 use psb_string_mod -contains - module subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - implicit none - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x - class(psb_d_base_vect_type), intent(inout) :: y - class(psb_d_vect_oacc), intent(inout) :: z - integer(psb_ipk_), intent(out) :: info - character(len=1), intent(in), optional :: conjgx, conjgy - integer(psb_ipk_) :: i, n - logical :: conjgx_, conjgy_ + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ - conjgx_ = .false. - conjgy_ = .false. - if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') - if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + conjgx_ = .false. + conjgy_ = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') - n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) - - info = 0 - select type(xx => x) + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) class is (psb_d_vect_oacc) - select type (yy => y) - class is (psb_d_vect_oacc) - if (xx%is_host()) call xx%sync() - if (yy%is_host()) call yy%sync() - if ((beta /= dzero) .and. (z%is_host())) call z%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= dzero) .and. (z%is_host())) call z%sync() + if (conjgx_.and.conjgy_) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then !$acc parallel loop do i = 1, n - z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) end do - call z%set_dev() - class default - if (xx%is_dev()) call xx%sync() - if (yy%is_dev()) call yy%sync() - if ((beta /= dzero) .and. (z%is_dev())) call z%sync() + else if ((.not.conjgx_).and.(conjgy_)) then + !$acc parallel loop do i = 1, n - z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) end do - call z%set_host() - end select + else + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + + end if + call z%set_dev() class default - if (x%is_dev()) call x%sync() - if (y%is_dev()) call y%sync() + if (xx%is_dev()) call xx%sync() + if (yy%is_dev()) call yy%sync() if ((beta /= dzero) .and. (z%is_dev())) call z%sync() - do i = 1, n - z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) - end do + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + end if call z%set_host() end select - end subroutine d_oacc_mlt_v_2 -end submodule d_oacc_mlt_v_2_impl + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= dzero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end select +end subroutine d_oacc_mlt_v_2 diff --git a/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..08c51bce --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,35 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_csr_sparse_mat%allocate(m, n, nz) + + if (.not.allocated(a%val)) then + allocate(a%val(nz)) + allocate(a%ja(nz)) + allocate(a%irp(m+1)) + end if + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_allocate_mnnz +end submodule psb_s_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..94ef67b3 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,26 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_cp_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_s_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_csr_cp_from_coo +end submodule psb_s_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..2c64b5fe --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_cp_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_s_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + + end subroutine psb_s_oacc_csr_cp_from_fmt +end submodule psb_s_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_csr_csmm.F90 b/openacc/impl/psb_s_oacc_csr_csmm.F90 new file mode 100644 index 00000000..2e7def53 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_csmm_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:,:) + real(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n,k, nxy + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalis_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_s_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, n + do k = a%irp(i), a%irp(i+1) - 1 + y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_csmm +end submodule psb_s_oacc_csr_csmm_impl + diff --git a/openacc/impl/psb_s_oacc_csr_csmv.F90 b/openacc/impl/psb_s_oacc_csr_csmv.F90 new file mode 100644 index 00000000..ba673941 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_csmv.F90 @@ -0,0 +1,81 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_csmv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:) + real(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalis_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_s_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop present(a, x, y) + do i = 1, n + do j = a%irp(i), a%irp(i+1) - 1 + y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_csmv +end submodule psb_s_oacc_csr_csmv_impl + diff --git a/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..7af897a7 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,83 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalis_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_s_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_s_vect_oacc) + select type(yy => y) + type is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_s_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_s_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_s_oacc_csr_inner_vect_sv +end submodule psb_s_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_s_oacc_csr_mold.F90 b/openacc/impl/psb_s_oacc_csr_mold.F90 new file mode 100644 index 00000000..a85471e5 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_mold.F90 @@ -0,0 +1,35 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_mold(a, b, info) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_s_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_s_oacc_csr_mold +end submodule psb_s_oacc_csr_mols_impl + diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..e531d309 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_mv_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_s_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irp) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_csr_mv_from_coo +end submodule psb_s_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..a9dc0c70 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_mv_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_s_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + + end subroutine psb_s_oacc_csr_mv_from_fmt +end submodule psb_s_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..77c17120 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='s_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_csr_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_reallocate_nz +end submodule psb_s_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_s_oacc_csr_scal.F90 b/openacc/impl/psb_s_oacc_csr_scal.F90 new file mode 100644 index 00000000..b9c8a986 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_scal.F90 @@ -0,0 +1,53 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_scal(d, a, info, side) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_scal +end submodule psb_s_oacc_csr_scal_impl diff --git a/openacc/impl/psb_s_oacc_csr_scals.F90 b/openacc/impl/psb_s_oacc_csr_scals.F90 new file mode 100644 index 00000000..76ad7cf2 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_scals.F90 @@ -0,0 +1,34 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_scals_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_scals(d, a, info) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_scals +end submodule psb_s_oacc_csr_scals_impl diff --git a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..9b15da3b --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 @@ -0,0 +1,63 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n /= size(x%v)) .or. (n /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalis_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_s_oacc_csr_vect_mv +end submodule psb_s_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_s_oacc_mlt_v.f90 b/openacc/impl/psb_s_oacc_mlt_v.f90 new file mode 100644 index 00000000..fb043cf2 --- /dev/null +++ b/openacc/impl/psb_s_oacc_mlt_v.f90 @@ -0,0 +1,31 @@ + +subroutine s_oacc_mlt_v(x, y, info) + use psb_s_oacc_vect_mod, psb_protect_name => s_oacc_mlt_v + + implicit none + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_s_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +end subroutine s_oacc_mlt_v diff --git a/openacc/impl/psb_s_oacc_mlt_v_2.f90 b/openacc/impl/psb_s_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..04ee8e09 --- /dev/null +++ b/openacc/impl/psb_s_oacc_mlt_v_2.f90 @@ -0,0 +1,98 @@ +subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_s_oacc_vect_mod, psb_protect_name => s_oacc_mlt_v_2 + use psb_string_mod + implicit none + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + class(psb_s_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ + + conjgx_ = .false. + conjgy_ = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= szero) .and. (z%is_host())) call z%sync() + if (conjgx_.and.conjgy_) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + + end if + call z%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (yy%is_dev()) call yy%sync() + if ((beta /= szero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end select + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= szero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end select +end subroutine s_oacc_mlt_v_2 + diff --git a/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..fd19d6f9 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,35 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_csr_sparse_mat%allocate(m, n, nz) + + if (.not.allocated(a%val)) then + allocate(a%val(nz)) + allocate(a%ja(nz)) + allocate(a%irp(m+1)) + end if + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_allocate_mnnz +end submodule psb_z_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..0485c9ca --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,26 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_cp_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_z_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_csr_cp_from_coo +end submodule psb_z_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..f2c68816 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_cp_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_z_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + + end subroutine psb_z_oacc_csr_cp_from_fmt +end submodule psb_z_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_csr_csmm.F90 b/openacc/impl/psb_z_oacc_csr_csmm.F90 new file mode 100644 index 00000000..aeaaab33 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_csmm_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:,:) + complex(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n,k, nxy + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invaliz_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_z_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, n + do k = a%irp(i), a%irp(i+1) - 1 + y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_csmm +end submodule psb_z_oacc_csr_csmm_impl + diff --git a/openacc/impl/psb_z_oacc_csr_csmv.F90 b/openacc/impl/psb_z_oacc_csr_csmv.F90 new file mode 100644 index 00000000..f5501b21 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_csmv.F90 @@ -0,0 +1,81 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_csmv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:) + complex(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invaliz_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_z_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop present(a, x, y) + do i = 1, n + do j = a%irp(i), a%irp(i+1) - 1 + y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_csmv +end submodule psb_z_oacc_csr_csmv_impl + diff --git a/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..b5d552d3 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,83 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invaliz_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_z_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_z_vect_oacc) + select type(yy => y) + type is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_z_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_z_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_z_oacc_csr_inner_vect_sv +end submodule psb_z_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_z_oacc_csr_mold.F90 b/openacc/impl/psb_z_oacc_csr_mold.F90 new file mode 100644 index 00000000..e7e9e8b9 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_mold.F90 @@ -0,0 +1,35 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_mold(a, b, info) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_z_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_z_oacc_csr_mold +end submodule psb_z_oacc_csr_molz_impl + diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..44b01b68 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_mv_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_z_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irp) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_csr_mv_from_coo +end submodule psb_z_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..bf777e85 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_mv_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_z_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irp) + end select + + end subroutine psb_z_oacc_csr_mv_from_fmt +end submodule psb_z_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..bdfb88d6 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='z_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_csr_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_reallocate_nz +end submodule psb_z_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_z_oacc_csr_scal.F90 b/openacc/impl/psb_z_oacc_csr_scal.F90 new file mode 100644 index 00000000..f09ff595 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_scal.F90 @@ -0,0 +1,53 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_scal(d, a, info, side) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_scal +end submodule psb_z_oacc_csr_scal_impl diff --git a/openacc/impl/psb_z_oacc_csr_scals.F90 b/openacc/impl/psb_z_oacc_csr_scals.F90 new file mode 100644 index 00000000..1fe64951 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_scals.F90 @@ -0,0 +1,34 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_scals_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_scals(d, a, info) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_scals +end submodule psb_z_oacc_csr_scals_impl diff --git a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..437dd70a --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 @@ -0,0 +1,63 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n /= size(x%v)) .or. (n /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invaliz_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_z_oacc_csr_vect_mv +end submodule psb_z_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_z_oacc_mlt_v.f90 b/openacc/impl/psb_z_oacc_mlt_v.f90 new file mode 100644 index 00000000..7018f009 --- /dev/null +++ b/openacc/impl/psb_z_oacc_mlt_v.f90 @@ -0,0 +1,31 @@ + +subroutine z_oacc_mlt_v(x, y, info) + use psb_z_oacc_vect_mod, psb_protect_name => z_oacc_mlt_v + + implicit none + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_z_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + !$acc parallel loop + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +end subroutine z_oacc_mlt_v diff --git a/openacc/impl/psb_z_oacc_mlt_v_2.f90 b/openacc/impl/psb_z_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..dbc0929c --- /dev/null +++ b/openacc/impl/psb_z_oacc_mlt_v_2.f90 @@ -0,0 +1,98 @@ +subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_z_oacc_vect_mod, psb_protect_name => z_oacc_mlt_v_2 + use psb_string_mod + implicit none + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + class(psb_z_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_ + + conjgx_ = .false. + conjgy_ = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= zzero) .and. (z%is_host())) call z%sync() + if (conjgx_.and.conjgy_) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else + !$acc parallel loop + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + + end if + call z%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (yy%is_dev()) call yy%sync() + if ((beta /= zzero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end select + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= zzero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end select +end subroutine z_oacc_mlt_v_2 + diff --git a/openacc/psb_c_oacc_csr_mat_mod.F90 b/openacc/psb_c_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..00e79570 --- /dev/null +++ b/openacc/psb_c_oacc_csr_mat_mod.F90 @@ -0,0 +1,343 @@ +module psb_c_oacc_csr_mat_mod + + use iso_c_binding + use psb_c_mat_mod + use psb_c_oacc_vect_mod + !use oaccsparse_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_csr_sparse_mat) :: psb_c_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => c_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => c_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_c_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_c_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_c_oacc_csr_csmv + procedure, pass(a) :: scals => psb_c_oacc_csr_scals + procedure, pass(a) :: scalv => psb_c_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => c_oacc_csr_free + procedure, pass(a) :: mold => psb_c_oacc_csr_mold + procedure, pass(a) :: all => c_oacc_csr_all + procedure, pass(a) :: is_host => c_oacc_csr_is_host + procedure, pass(a) :: is_sync => c_oacc_csr_is_sync + procedure, pass(a) :: is_dev => c_oacc_csr_is_dev + procedure, pass(a) :: set_host => c_oacc_csr_set_host + procedure, pass(a) :: set_sync => c_oacc_csr_set_sync + procedure, pass(a) :: set_dev => c_oacc_csr_set_dev + procedure, pass(a) :: sync_space => c_oacc_csr_sync_space + procedure, pass(a) :: sync => c_oacc_csr_sync + end type psb_c_oacc_csr_sparse_mat + + interface + module subroutine psb_c_oacc_csr_mold(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_mold + end interface + + interface + module subroutine psb_c_oacc_csr_cp_from_fmt(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_c_oacc_csr_mv_from_coo(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_c_oacc_csr_mv_from_fmt(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_c_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_c_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_c_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta, x(:,:) + complex(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_csr_csmm + end interface + + interface + module subroutine psb_c_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta, x(:) + complex(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_csr_csmv + end interface + + interface + module subroutine psb_c_oacc_csr_scals(d, a, info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_scals + end interface + + interface + module subroutine psb_c_oacc_csr_scal(d,a,info,side) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_c_oacc_csr_scal + end interface + + interface + module subroutine psb_c_oacc_csr_reallocate_nz(nz,a) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_c_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_c_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_c_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_c_oacc_csr_cp_from_coo(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_cp_from_coo + end interface + +contains + + + subroutine c_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) + end if + + call a%psb_c_csr_sparse_mat%free() + + return + end subroutine c_oacc_csr_free + + function c_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + (2*psb_sizeof_sp) * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function c_oacc_csr_sizeof + + + function c_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSR_oacc' + end function c_oacc_csr_get_fmt + + subroutine c_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_c_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(a%val)) then + !$acc exit data delete(a%val) finalize + deallocate(a%val, stat=info) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) finalize + deallocate(a%ja, stat=info) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) finalize + deallocate(a%irp, stat=info) + end if + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_space() + end subroutine c_oacc_csr_all + + function c_oacc_csr_is_host(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function c_oacc_csr_is_host + + function c_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function c_oacc_csr_is_sync + + function c_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function c_oacc_csr_is_dev + + subroutine c_oacc_csr_set_host(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine c_oacc_csr_set_host + + subroutine c_oacc_csr_set_sync(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine c_oacc_csr_set_sync + + subroutine c_oacc_csr_set_dev(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine c_oacc_csr_set_dev + + subroutine c_oacc_csr_sync_space(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + if (allocated(a%val)) then + call c_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irp)) then + call i_oacc_create_dev(a%irp) + end if + contains + subroutine c_oacc_create_dev(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine c_oacc_create_dev + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + end subroutine c_oacc_csr_sync_space + + subroutine c_oacc_csr_sync(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_c_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call c_oacc_csr_to_host(a%val) + call i_oacc_csr_to_host(a%ja) + call i_oacc_csr_to_host(a%irp) + else if (a%is_host()) then + call c_oacc_csr_to_dev(a%val) + call i_oacc_csr_to_dev(a%ja) + call i_oacc_csr_to_dev(a%irp) + end if + call tmpa%set_sync() + end subroutine c_oacc_csr_sync + + subroutine c_oacc_csr_to_dev(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine c_oacc_csr_to_dev + + subroutine c_oacc_csr_to_host(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine c_oacc_csr_to_host + + subroutine i_oacc_csr_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_csr_to_dev + + subroutine i_oacc_csr_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_csr_to_host + +end module psb_c_oacc_csr_mat_mod + diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 new file mode 100644 index 00000000..6f9545ea --- /dev/null +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -0,0 +1,935 @@ +module psb_c_oacc_vect_mod + use iso_c_binding + use psb_const_mod + use psb_error_mod + use psb_c_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_base_vect_type) :: psb_c_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => c_oacc_get_nrows + procedure, nopass :: get_fmt => c_oacc_get_fmt + + procedure, pass(x) :: all => c_oacc_vect_all + procedure, pass(x) :: zero => c_oacc_zero + procedure, pass(x) :: asb_m => c_oacc_asb_m + procedure, pass(x) :: sync => c_oacc_sync + procedure, pass(x) :: sync_space => c_oacc_sync_space + procedure, pass(x) :: bld_x => c_oacc_bld_x + procedure, pass(x) :: bld_mn => c_oacc_bld_mn + procedure, pass(x) :: free => c_oacc_vect_free + procedure, pass(x) :: ins_a => c_oacc_ins_a + procedure, pass(x) :: ins_v => c_oacc_ins_v + procedure, pass(x) :: is_host => c_oacc_is_host + procedure, pass(x) :: is_dev => c_oacc_is_dev + procedure, pass(x) :: is_sync => c_oacc_is_sync + procedure, pass(x) :: set_host => c_oacc_set_host + procedure, pass(x) :: set_dev => c_oacc_set_dev + procedure, pass(x) :: set_sync => c_oacc_set_sync + procedure, pass(x) :: set_scal => c_oacc_set_scal + + procedure, pass(x) :: gthzv_x => c_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => c_oacc_gthzbuf + procedure, pass(y) :: sctb => c_oacc_sctb + procedure, pass(y) :: sctb_x => c_oacc_sctb_x + procedure, pass(y) :: sctb_buf => c_oacc_sctb_buf + + procedure, pass(x) :: get_size => c_oacc_get_size + procedure, pass(x) :: dot_v => c_oacc_vect_dot + procedure, pass(x) :: dot_a => c_oacc_dot_a + procedure, pass(y) :: axpby_v => c_oacc_axpby_v + procedure, pass(y) :: axpby_a => c_oacc_axpby_a + procedure, pass(z) :: abgdxyz => c_oacc_abgdxyz + procedure, pass(y) :: mlt_a => c_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => c_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => c_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => c_oacc_mlt_v_2 + procedure, pass(x) :: scal => c_oacc_scal + procedure, pass(x) :: nrm2 => c_oacc_nrm2 + procedure, pass(x) :: amax => c_oacc_amax + procedure, pass(x) :: asum => c_oacc_asum + procedure, pass(x) :: absval1 => c_oacc_absval1 + procedure, pass(x) :: absval2 => c_oacc_absval2 + + end type psb_c_vect_oacc + + interface + subroutine c_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine c_oacc_mlt_v + end interface + + + interface + subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + class(psb_c_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine c_oacc_mlt_v_2 + end interface + +contains + + subroutine c_oacc_absval1(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n, i + + if (x%is_host()) call x%sync_space() + n = size(x%v) + !$acc parallel loop + do i = 1, n + x%v(i) = abs(x%v(i)) + end do + call x%set_dev() + end subroutine c_oacc_absval1 + + subroutine c_oacc_absval2(x, y) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_c_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + !$acc parallel loop + do i = 1, n + yy%v(i) = abs(x%v(i)) + end do + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_c_base_vect_type%absval(y) + end select + end subroutine c_oacc_absval2 + + subroutine c_oacc_scal(alpha, x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + complex(psb_spk_), intent(in) :: alpha + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, size(x%v) + x%v(i) = alpha * x%v(i) + end do + call x%set_dev() + end subroutine c_oacc_scal + + function c_oacc_nrm2(n, x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + real(psb_spk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i))**2 + end do + res = sqrt(sum) + end function c_oacc_nrm2 + + function c_oacc_amax(n, x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + real(psb_spk_) :: max_val + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) + end do + res = max_val + end function c_oacc_amax + + function c_oacc_asum(n, x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + complex(psb_spk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i)) + end do + res = sum + end function c_oacc_asum + + + subroutine c_oacc_mlt_a(x, y, info) + implicit none + complex(psb_spk_), intent(in) :: x(:) + class(psb_c_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync_space() + !$acc parallel loop + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine c_oacc_mlt_a + + subroutine c_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(in) :: x(:) + complex(psb_spk_), intent(in) :: y(:) + class(psb_c_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync_space() + !$acc parallel loop + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine c_oacc_mlt_a_2 + + +!!$ subroutine c_oacc_mlt_v(x, y, info) +!!$ implicit none +!!$ class(psb_c_base_vect_type), intent(inout) :: x +!!$ class(psb_c_vect_oacc), intent(inout) :: y +!!$ integer(psb_ipk_), intent(out) :: info +!!$ +!!$ integer(psb_ipk_) :: i, n +!!$ +!!$ info = 0 +!!$ n = min(x%get_nrows(), y%get_nrows()) +!!$ select type(xx => x) +!!$ type is (psb_c_base_vect_type) +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ end select +!!$ end subroutine c_oacc_mlt_v +!!$ +!!$ subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) +!!$ use psi_serial_mod +!!$ use psb_string_mod +!!$ implicit none +!!$ complex(psb_spk_), intent(in) :: alpha, beta +!!$ class(psb_c_base_vect_type), intent(inout) :: x +!!$ class(psb_c_base_vect_type), intent(inout) :: y +!!$ class(psb_c_vect_oacc), intent(inout) :: z +!!$ integer(psb_ipk_), intent(out) :: info +!!$ character(len=1), intent(in), optional :: conjgx, conjgy +!!$ integer(psb_ipk_) :: i, n +!!$ logical :: conjgx_, conjgy_ +!!$ +!!$ conjgx_ = .false. +!!$ conjgy_ = .false. +!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') +!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') +!!$ +!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) +!!$ +!!$ info = 0 +!!$ select type(xx => x) +!!$ class is (psb_c_vect_oacc) +!!$ select type (yy => y) +!!$ class is (psb_c_vect_oacc) +!!$ if (xx%is_host()) call xx%sync_space() +!!$ if (yy%is_host()) call yy%sync_space() +!!$ if ((beta /= czero) .and. (z%is_host())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_dev() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (yy%is_dev()) call yy%sync() +!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ class default +!!$ if (x%is_dev()) call x%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ end subroutine c_oacc_mlt_v_2 + + + subroutine c_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_vect_oacc), intent(inout) :: y + complex(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_c_vect_oacc) + if ((beta /= czero) .and. y%is_host()) call y%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * xx%v(i) + beta * y%v(i) + end do + end if + call y%set_dev() + class default + if ((alpha /= czero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + end subroutine c_oacc_axpby_v + + subroutine c_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_spk_), intent(in) :: x(:) + class(psb_c_vect_oacc), intent(inout) :: y + complex(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= czero) .and. (y%is_dev())) call y%sync_space() + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine c_oacc_axpby_a + + subroutine c_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + class(psb_c_vect_oacc), intent(inout) :: z + complex(psb_spk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_c_vect_oacc) + select type(yy => y) + class is (psb_c_vect_oacc) + select type(zz => z) + class is (psb_c_vect_oacc) + if ((beta /= czero) .and. yy%is_host()) call yy%sync_space() + if ((delta /= czero) .and. zz%is_host()) call zz%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine c_oacc_abgdxyz + + subroutine c_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_spk_) :: beta + class(psb_c_vect_oacc) :: y + integer(psb_ipk_) :: info + + if (.not.allocated(y%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + end do + + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + end do + end select + end subroutine c_oacc_sctb_buf + + subroutine c_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_spk_) :: beta, x(:) + class(psb_c_vect_oacc) :: y + integer(psb_ipk_) :: info, ni + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'c_oacc_sctb_x') + return + end select + + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + + call y%set_dev() + end subroutine c_oacc_sctb_x + + + + subroutine c_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + complex(psb_spk_) :: beta, x(:) + class(psb_c_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine c_oacc_sctb + + + subroutine c_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_c_vect_oacc) :: x + integer(psb_ipk_) :: info + + info = 0 + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'c_oacc_gthzbuf') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine c_oacc_gthzbuf + + subroutine c_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + complex(psb_spk_) :: y(:) + class(psb_c_vect_oacc):: x + integer(psb_ipk_) :: info + + info = 0 + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'c_oacc_gthzv_x') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine c_oacc_gthzv_x + + subroutine c_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_c_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_c_vect_oacc) + if (vval%is_host()) call vval%sync_space() + if (virl%is_host()) call virl%sync_space(info) + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync_space(info) + end select + select type(vval => val) + type is (psb_c_vect_oacc) + if (vval%is_dev()) call vval%sync_space() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine c_oacc_ins_v + + + + subroutine c_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + complex(psb_spk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync_space() + call x%psb_c_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + !$acc update device(x%v) + + end subroutine c_oacc_ins_a + + + + subroutine c_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'c_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + !$acc update device(x%v) + + end subroutine c_oacc_bld_mn + + + subroutine c_oacc_bld_x(x, this) + use psb_base_mod + implicit none + complex(psb_spk_), intent(in) :: this(:) + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'c_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + + x%v(:) = this(:) + call x%set_host() + !$acc update device(x%v) + + end subroutine c_oacc_bld_x + + + subroutine c_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_c_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_c_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + end if + end subroutine c_oacc_asb_m + + + + subroutine c_oacc_set_scal(x, val, first, last) + class(psb_c_vect_oacc), intent(inout) :: x + complex(psb_spk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine c_oacc_set_scal + + + + subroutine c_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(czero) + end subroutine c_oacc_zero + + function c_oacc_get_nrows(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function c_oacc_get_nrows + + function c_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "cOACC" + + end function c_oacc_get_fmt + + function c_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_) :: res + complex(psb_spk_), external :: ddot + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + res = czero + + select type(yy => y) + type is (psb_c_base_vect_type) + if (x%is_dev()) call x%sync() + res = ddot(n, x%v, 1, yy%v, 1) + type is (psb_c_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + + !$acc parallel loop reduction(+:res) present(x%v, yy%v) + do i = 1, n + res = res + x%v(i) * yy%v(i) + end do + !$acc end parallel loop + + class default + call x%sync() + res = y%dot(n, x%v) + end select + + end function c_oacc_vect_dot + + + + + function c_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + complex(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_) :: res + complex(psb_spk_), external :: ddot + + if (x%is_dev()) call x%sync() + res = ddot(n, y, 1, x%v, 1) + + end function c_oacc_dot_a + + ! subroutine c_oacc_set_vect(x,y) + ! implicit none + ! class(psb_c_vect_oacc), intent(inout) :: x + ! complex(psb_spk_), intent(in) :: y(:) + ! integer(psb_ipk_) :: info + + ! if (size(x%v) /= size(y)) then + ! call x%free(info) + ! call x%all(size(y),info) + ! end if + ! x%v(:) = y(:) + ! call x%set_host() + ! end subroutine c_oacc_set_vect + + subroutine c_oacc_to_dev(v) + implicit none + complex(psb_spk_) :: v(:) + !$acc update device(v) + end subroutine c_oacc_to_dev + + subroutine c_oacc_to_host(v) + implicit none + complex(psb_spk_) :: v(:) + !$acc update self(v) + end subroutine c_oacc_to_host + + subroutine c_oacc_sync_space(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + if (allocated(x%v)) then + call c_oacc_create_dev(x%v) + end if + contains + subroutine c_oacc_create_dev(v) + implicit none + complex(psb_spk_) :: v(:) + !$acc enter data copyin(v) + end subroutine c_oacc_create_dev + end subroutine c_oacc_sync_space + + subroutine c_oacc_sync(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + call c_oacc_to_host(x%v) + end if + if (x%is_host()) then + call c_oacc_to_dev(x%v) + end if + call x%set_sync() + end subroutine c_oacc_sync + + subroutine c_oacc_set_host(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine c_oacc_set_host + + subroutine c_oacc_set_dev(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine c_oacc_set_dev + + subroutine c_oacc_set_sync(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine c_oacc_set_sync + + function c_oacc_is_dev(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function c_oacc_is_dev + + function c_oacc_is_host(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function c_oacc_is_host + + function c_oacc_is_sync(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function c_oacc_is_sync + + subroutine c_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_c_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) then + call x%set_host() + !$acc enter data create(x%v) + call x%sync_space() + end if + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'c_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + end subroutine c_oacc_vect_all + + + subroutine c_oacc_vect_free(x, info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 + if (allocated(x%v)) then + !$acc exit data delete(x%v) finalize + deallocate(x%v, stat=info) + end if + + end subroutine c_oacc_vect_free + + function c_oacc_get_size(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + if (x%is_dev()) call x%sync() + res = size(x%v) + end function c_oacc_get_size + +end module psb_c_oacc_vect_mod diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index ca4199a8..8b7e111e 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -175,8 +175,6 @@ contains return end subroutine d_oacc_csr_free - - function d_oacc_csr_sizeof(a) result(res) implicit none class(psb_d_oacc_csr_sparse_mat), intent(in) :: a @@ -341,6 +339,5 @@ contains !$acc update self(v) end subroutine i_oacc_csr_to_host - end module psb_d_oacc_csr_mat_mod diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 3385f1ec..7d51766d 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -41,7 +41,7 @@ module psb_d_oacc_vect_mod procedure, pass(y) :: sctb_x => d_oacc_sctb_x procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf - procedure, pass(x) :: get_size => oacc_get_size + procedure, pass(x) :: get_size => d_oacc_get_size procedure, pass(x) :: dot_v => d_oacc_vect_dot procedure, pass(x) :: dot_a => d_oacc_dot_a procedure, pass(y) :: axpby_v => d_oacc_axpby_v @@ -49,8 +49,8 @@ module psb_d_oacc_vect_mod procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz procedure, pass(y) :: mlt_a => d_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => psb_d_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => psb_d_oacc_mlt_v_2 + procedure, pass(y) :: mlt_v => d_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 procedure, pass(x) :: scal => d_oacc_scal procedure, pass(x) :: nrm2 => d_oacc_nrm2 procedure, pass(x) :: amax => d_oacc_amax @@ -60,20 +60,20 @@ module psb_d_oacc_vect_mod end type psb_d_vect_oacc - real(psb_dpk_), allocatable :: v1(:),v2(:),p(:) - interface - module subroutine psb_d_oacc_mlt_v(x, y, info) + subroutine d_oacc_mlt_v(x, y, info) + import implicit none class(psb_d_base_vect_type), intent(inout) :: x class(psb_d_vect_oacc), intent(inout) :: y integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_mlt_v + end subroutine d_oacc_mlt_v end interface interface - module subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import implicit none real(psb_dpk_), intent(in) :: alpha, beta class(psb_d_base_vect_type), intent(inout) :: x @@ -81,7 +81,7 @@ module psb_d_oacc_vect_mod class(psb_d_vect_oacc), intent(inout) :: z integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy - end subroutine psb_d_oacc_mlt_v_2 + end subroutine d_oacc_mlt_v_2 end interface contains @@ -151,7 +151,7 @@ contains sum = 0.0 !$acc parallel loop reduction(+:sum) do i = 1, n - sum = sum + x%v(i) * x%v(i) + sum = sum + abs(x%v(i))**2 end do res = sqrt(sum) end function d_oacc_nrm2 @@ -169,7 +169,7 @@ contains max_val = -huge(0.0) !$acc parallel loop reduction(max:max_val) do i = 1, n - if (x%v(i) > max_val) max_val = x%v(i) + if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) end do res = max_val end function d_oacc_amax @@ -923,41 +923,13 @@ contains end subroutine d_oacc_vect_free - function oacc_get_size(x) result(res) + function d_oacc_get_size(x) result(res) implicit none class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res if (x%is_dev()) call x%sync() res = size(x%v) - end function oacc_get_size - -!!$ -!!$ subroutine initialize(N) -!!$ integer(psb_ipk_) :: N -!!$ integer(psb_ipk_) :: i -!!$ allocate(v1(N),v2(N),p(N)) -!!$ !$acc enter data create(v1,v2,p) -!!$ !$acc parallel -!!$ !$acc loop -!!$ do i=1,n -!!$ v1(i) = i -!!$ v2(i) = n+i -!!$ end do -!!$ !$acc end parallel -!!$ end subroutine initialize -!!$ subroutine finalize_dev() -!!$ !$acc exit data delete(v1,v2,p) -!!$ end subroutine finalize_dev -!!$ subroutine finalize_host() -!!$ deallocate(v1,v2,p) -!!$ end subroutine finalize_host -!!$ subroutine to_dev() -!!$ !$acc update device(v1,v2) -!!$ end subroutine to_dev -!!$ subroutine to_host() -!!$ !$acc update self(v1,v2) -!!$ end subroutine to_host -!!$ + end function d_oacc_get_size end module psb_d_oacc_vect_mod diff --git a/openacc/psb_s_oacc_csr_mat_mod.F90 b/openacc/psb_s_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..89b10d08 --- /dev/null +++ b/openacc/psb_s_oacc_csr_mat_mod.F90 @@ -0,0 +1,343 @@ +module psb_s_oacc_csr_mat_mod + + use iso_c_binding + use psb_s_mat_mod + use psb_s_oacc_vect_mod + !use oaccsparse_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_csr_sparse_mat) :: psb_s_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => s_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => s_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_s_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_s_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_s_oacc_csr_csmv + procedure, pass(a) :: scals => psb_s_oacc_csr_scals + procedure, pass(a) :: scalv => psb_s_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => s_oacc_csr_free + procedure, pass(a) :: mold => psb_s_oacc_csr_mold + procedure, pass(a) :: all => s_oacc_csr_all + procedure, pass(a) :: is_host => s_oacc_csr_is_host + procedure, pass(a) :: is_sync => s_oacc_csr_is_sync + procedure, pass(a) :: is_dev => s_oacc_csr_is_dev + procedure, pass(a) :: set_host => s_oacc_csr_set_host + procedure, pass(a) :: set_sync => s_oacc_csr_set_sync + procedure, pass(a) :: set_dev => s_oacc_csr_set_dev + procedure, pass(a) :: sync_space => s_oacc_csr_sync_space + procedure, pass(a) :: sync => s_oacc_csr_sync + end type psb_s_oacc_csr_sparse_mat + + interface + module subroutine psb_s_oacc_csr_mold(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_mold + end interface + + interface + module subroutine psb_s_oacc_csr_cp_from_fmt(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_s_oacc_csr_mv_from_coo(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_s_oacc_csr_mv_from_fmt(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_s_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_s_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_s_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta, x(:,:) + real(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_csr_csmm + end interface + + interface + module subroutine psb_s_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta, x(:) + real(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_csr_csmv + end interface + + interface + module subroutine psb_s_oacc_csr_scals(d, a, info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_scals + end interface + + interface + module subroutine psb_s_oacc_csr_scal(d,a,info,side) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_s_oacc_csr_scal + end interface + + interface + module subroutine psb_s_oacc_csr_reallocate_nz(nz,a) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_s_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_s_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_s_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_s_oacc_csr_cp_from_coo(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_cp_from_coo + end interface + +contains + + + subroutine s_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) + end if + + call a%psb_s_csr_sparse_mat%free() + + return + end subroutine s_oacc_csr_free + + function s_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_sp * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function s_oacc_csr_sizeof + + + function s_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSR_oacc' + end function s_oacc_csr_get_fmt + + subroutine s_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_s_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(a%val)) then + !$acc exit data delete(a%val) finalize + deallocate(a%val, stat=info) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) finalize + deallocate(a%ja, stat=info) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) finalize + deallocate(a%irp, stat=info) + end if + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_space() + end subroutine s_oacc_csr_all + + function s_oacc_csr_is_host(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function s_oacc_csr_is_host + + function s_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function s_oacc_csr_is_sync + + function s_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function s_oacc_csr_is_dev + + subroutine s_oacc_csr_set_host(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine s_oacc_csr_set_host + + subroutine s_oacc_csr_set_sync(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine s_oacc_csr_set_sync + + subroutine s_oacc_csr_set_dev(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine s_oacc_csr_set_dev + + subroutine s_oacc_csr_sync_space(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + if (allocated(a%val)) then + call s_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irp)) then + call i_oacc_create_dev(a%irp) + end if + contains + subroutine s_oacc_create_dev(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine s_oacc_create_dev + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + end subroutine s_oacc_csr_sync_space + + subroutine s_oacc_csr_sync(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_s_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call s_oacc_csr_to_host(a%val) + call i_oacc_csr_to_host(a%ja) + call i_oacc_csr_to_host(a%irp) + else if (a%is_host()) then + call s_oacc_csr_to_dev(a%val) + call i_oacc_csr_to_dev(a%ja) + call i_oacc_csr_to_dev(a%irp) + end if + call tmpa%set_sync() + end subroutine s_oacc_csr_sync + + subroutine s_oacc_csr_to_dev(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine s_oacc_csr_to_dev + + subroutine s_oacc_csr_to_host(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine s_oacc_csr_to_host + + subroutine i_oacc_csr_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_csr_to_dev + + subroutine i_oacc_csr_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_csr_to_host + +end module psb_s_oacc_csr_mat_mod + diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 new file mode 100644 index 00000000..36ae7da8 --- /dev/null +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -0,0 +1,935 @@ +module psb_s_oacc_vect_mod + use iso_c_binding + use psb_const_mod + use psb_error_mod + use psb_s_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_base_vect_type) :: psb_s_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => s_oacc_get_nrows + procedure, nopass :: get_fmt => s_oacc_get_fmt + + procedure, pass(x) :: all => s_oacc_vect_all + procedure, pass(x) :: zero => s_oacc_zero + procedure, pass(x) :: asb_m => s_oacc_asb_m + procedure, pass(x) :: sync => s_oacc_sync + procedure, pass(x) :: sync_space => s_oacc_sync_space + procedure, pass(x) :: bld_x => s_oacc_bld_x + procedure, pass(x) :: bld_mn => s_oacc_bld_mn + procedure, pass(x) :: free => s_oacc_vect_free + procedure, pass(x) :: ins_a => s_oacc_ins_a + procedure, pass(x) :: ins_v => s_oacc_ins_v + procedure, pass(x) :: is_host => s_oacc_is_host + procedure, pass(x) :: is_dev => s_oacc_is_dev + procedure, pass(x) :: is_sync => s_oacc_is_sync + procedure, pass(x) :: set_host => s_oacc_set_host + procedure, pass(x) :: set_dev => s_oacc_set_dev + procedure, pass(x) :: set_sync => s_oacc_set_sync + procedure, pass(x) :: set_scal => s_oacc_set_scal + + procedure, pass(x) :: gthzv_x => s_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => s_oacc_gthzbuf + procedure, pass(y) :: sctb => s_oacc_sctb + procedure, pass(y) :: sctb_x => s_oacc_sctb_x + procedure, pass(y) :: sctb_buf => s_oacc_sctb_buf + + procedure, pass(x) :: get_size => s_oacc_get_size + procedure, pass(x) :: dot_v => s_oacc_vect_dot + procedure, pass(x) :: dot_a => s_oacc_dot_a + procedure, pass(y) :: axpby_v => s_oacc_axpby_v + procedure, pass(y) :: axpby_a => s_oacc_axpby_a + procedure, pass(z) :: abgdxyz => s_oacc_abgdxyz + procedure, pass(y) :: mlt_a => s_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => s_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => s_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => s_oacc_mlt_v_2 + procedure, pass(x) :: scal => s_oacc_scal + procedure, pass(x) :: nrm2 => s_oacc_nrm2 + procedure, pass(x) :: amax => s_oacc_amax + procedure, pass(x) :: asum => s_oacc_asum + procedure, pass(x) :: absval1 => s_oacc_absval1 + procedure, pass(x) :: absval2 => s_oacc_absval2 + + end type psb_s_vect_oacc + + interface + subroutine s_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine s_oacc_mlt_v + end interface + + + interface + subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + class(psb_s_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine s_oacc_mlt_v_2 + end interface + +contains + + subroutine s_oacc_absval1(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n, i + + if (x%is_host()) call x%sync_space() + n = size(x%v) + !$acc parallel loop + do i = 1, n + x%v(i) = abs(x%v(i)) + end do + call x%set_dev() + end subroutine s_oacc_absval1 + + subroutine s_oacc_absval2(x, y) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_s_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + !$acc parallel loop + do i = 1, n + yy%v(i) = abs(x%v(i)) + end do + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_s_base_vect_type%absval(y) + end select + end subroutine s_oacc_absval2 + + subroutine s_oacc_scal(alpha, x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + real(psb_spk_), intent(in) :: alpha + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, size(x%v) + x%v(i) = alpha * x%v(i) + end do + call x%set_dev() + end subroutine s_oacc_scal + + function s_oacc_nrm2(n, x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + real(psb_spk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i))**2 + end do + res = sqrt(sum) + end function s_oacc_nrm2 + + function s_oacc_amax(n, x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + real(psb_spk_) :: max_val + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) + end do + res = max_val + end function s_oacc_amax + + function s_oacc_asum(n, x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + real(psb_spk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i)) + end do + res = sum + end function s_oacc_asum + + + subroutine s_oacc_mlt_a(x, y, info) + implicit none + real(psb_spk_), intent(in) :: x(:) + class(psb_s_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync_space() + !$acc parallel loop + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine s_oacc_mlt_a + + subroutine s_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:) + real(psb_spk_), intent(in) :: y(:) + class(psb_s_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync_space() + !$acc parallel loop + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine s_oacc_mlt_a_2 + + +!!$ subroutine s_oacc_mlt_v(x, y, info) +!!$ implicit none +!!$ class(psb_s_base_vect_type), intent(inout) :: x +!!$ class(psb_s_vect_oacc), intent(inout) :: y +!!$ integer(psb_ipk_), intent(out) :: info +!!$ +!!$ integer(psb_ipk_) :: i, n +!!$ +!!$ info = 0 +!!$ n = min(x%get_nrows(), y%get_nrows()) +!!$ select type(xx => x) +!!$ type is (psb_s_base_vect_type) +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ end select +!!$ end subroutine s_oacc_mlt_v +!!$ +!!$ subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) +!!$ use psi_serial_mod +!!$ use psb_string_mod +!!$ implicit none +!!$ real(psb_spk_), intent(in) :: alpha, beta +!!$ class(psb_s_base_vect_type), intent(inout) :: x +!!$ class(psb_s_base_vect_type), intent(inout) :: y +!!$ class(psb_s_vect_oacc), intent(inout) :: z +!!$ integer(psb_ipk_), intent(out) :: info +!!$ character(len=1), intent(in), optional :: conjgx, conjgy +!!$ integer(psb_ipk_) :: i, n +!!$ logical :: conjgx_, conjgy_ +!!$ +!!$ conjgx_ = .false. +!!$ conjgy_ = .false. +!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') +!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') +!!$ +!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) +!!$ +!!$ info = 0 +!!$ select type(xx => x) +!!$ class is (psb_s_vect_oacc) +!!$ select type (yy => y) +!!$ class is (psb_s_vect_oacc) +!!$ if (xx%is_host()) call xx%sync_space() +!!$ if (yy%is_host()) call yy%sync_space() +!!$ if ((beta /= szero) .and. (z%is_host())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_dev() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (yy%is_dev()) call yy%sync() +!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ class default +!!$ if (x%is_dev()) call x%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ end subroutine s_oacc_mlt_v_2 + + + subroutine s_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_vect_oacc), intent(inout) :: y + real(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_s_vect_oacc) + if ((beta /= szero) .and. y%is_host()) call y%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * xx%v(i) + beta * y%v(i) + end do + end if + call y%set_dev() + class default + if ((alpha /= szero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + end subroutine s_oacc_axpby_v + + subroutine s_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_spk_), intent(in) :: x(:) + class(psb_s_vect_oacc), intent(inout) :: y + real(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= szero) .and. (y%is_dev())) call y%sync_space() + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine s_oacc_axpby_a + + subroutine s_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + class(psb_s_vect_oacc), intent(inout) :: z + real(psb_spk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_s_vect_oacc) + select type(yy => y) + class is (psb_s_vect_oacc) + select type(zz => z) + class is (psb_s_vect_oacc) + if ((beta /= szero) .and. yy%is_host()) call yy%sync_space() + if ((delta /= szero) .and. zz%is_host()) call zz%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine s_oacc_abgdxyz + + subroutine s_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + real(psb_spk_) :: beta + class(psb_s_vect_oacc) :: y + integer(psb_ipk_) :: info + + if (.not.allocated(y%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + end do + + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + end do + end select + end subroutine s_oacc_sctb_buf + + subroutine s_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + real(psb_spk_) :: beta, x(:) + class(psb_s_vect_oacc) :: y + integer(psb_ipk_) :: info, ni + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 's_oacc_sctb_x') + return + end select + + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + + call y%set_dev() + end subroutine s_oacc_sctb_x + + + + subroutine s_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + real(psb_spk_) :: beta, x(:) + class(psb_s_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine s_oacc_sctb + + + subroutine s_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_s_vect_oacc) :: x + integer(psb_ipk_) :: info + + info = 0 + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 's_oacc_gthzbuf') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine s_oacc_gthzbuf + + subroutine s_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + real(psb_spk_) :: y(:) + class(psb_s_vect_oacc):: x + integer(psb_ipk_) :: info + + info = 0 + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 's_oacc_gthzv_x') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine s_oacc_gthzv_x + + subroutine s_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_s_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_s_vect_oacc) + if (vval%is_host()) call vval%sync_space() + if (virl%is_host()) call virl%sync_space(info) + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync_space(info) + end select + select type(vval => val) + type is (psb_s_vect_oacc) + if (vval%is_dev()) call vval%sync_space() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine s_oacc_ins_v + + + + subroutine s_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + real(psb_spk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync_space() + call x%psb_s_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + !$acc update device(x%v) + + end subroutine s_oacc_ins_a + + + + subroutine s_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 's_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + !$acc update device(x%v) + + end subroutine s_oacc_bld_mn + + + subroutine s_oacc_bld_x(x, this) + use psb_base_mod + implicit none + real(psb_spk_), intent(in) :: this(:) + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 's_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + + x%v(:) = this(:) + call x%set_host() + !$acc update device(x%v) + + end subroutine s_oacc_bld_x + + + subroutine s_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_s_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_s_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + end if + end subroutine s_oacc_asb_m + + + + subroutine s_oacc_set_scal(x, val, first, last) + class(psb_s_vect_oacc), intent(inout) :: x + real(psb_spk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine s_oacc_set_scal + + + + subroutine s_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(szero) + end subroutine s_oacc_zero + + function s_oacc_get_nrows(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function s_oacc_get_nrows + + function s_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "sOACC" + + end function s_oacc_get_fmt + + function s_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + real(psb_spk_), external :: ddot + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + res = szero + + select type(yy => y) + type is (psb_s_base_vect_type) + if (x%is_dev()) call x%sync() + res = ddot(n, x%v, 1, yy%v, 1) + type is (psb_s_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + + !$acc parallel loop reduction(+:res) present(x%v, yy%v) + do i = 1, n + res = res + x%v(i) * yy%v(i) + end do + !$acc end parallel loop + + class default + call x%sync() + res = y%dot(n, x%v) + end select + + end function s_oacc_vect_dot + + + + + function s_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + real(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + real(psb_spk_), external :: ddot + + if (x%is_dev()) call x%sync() + res = ddot(n, y, 1, x%v, 1) + + end function s_oacc_dot_a + + ! subroutine s_oacc_set_vect(x,y) + ! implicit none + ! class(psb_s_vect_oacc), intent(inout) :: x + ! real(psb_spk_), intent(in) :: y(:) + ! integer(psb_ipk_) :: info + + ! if (size(x%v) /= size(y)) then + ! call x%free(info) + ! call x%all(size(y),info) + ! end if + ! x%v(:) = y(:) + ! call x%set_host() + ! end subroutine s_oacc_set_vect + + subroutine s_oacc_to_dev(v) + implicit none + real(psb_spk_) :: v(:) + !$acc update device(v) + end subroutine s_oacc_to_dev + + subroutine s_oacc_to_host(v) + implicit none + real(psb_spk_) :: v(:) + !$acc update self(v) + end subroutine s_oacc_to_host + + subroutine s_oacc_sync_space(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + if (allocated(x%v)) then + call s_oacc_create_dev(x%v) + end if + contains + subroutine s_oacc_create_dev(v) + implicit none + real(psb_spk_) :: v(:) + !$acc enter data copyin(v) + end subroutine s_oacc_create_dev + end subroutine s_oacc_sync_space + + subroutine s_oacc_sync(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + call s_oacc_to_host(x%v) + end if + if (x%is_host()) then + call s_oacc_to_dev(x%v) + end if + call x%set_sync() + end subroutine s_oacc_sync + + subroutine s_oacc_set_host(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine s_oacc_set_host + + subroutine s_oacc_set_dev(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine s_oacc_set_dev + + subroutine s_oacc_set_sync(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine s_oacc_set_sync + + function s_oacc_is_dev(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function s_oacc_is_dev + + function s_oacc_is_host(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function s_oacc_is_host + + function s_oacc_is_sync(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function s_oacc_is_sync + + subroutine s_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_s_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) then + call x%set_host() + !$acc enter data create(x%v) + call x%sync_space() + end if + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 's_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + end subroutine s_oacc_vect_all + + + subroutine s_oacc_vect_free(x, info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 + if (allocated(x%v)) then + !$acc exit data delete(x%v) finalize + deallocate(x%v, stat=info) + end if + + end subroutine s_oacc_vect_free + + function s_oacc_get_size(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + if (x%is_dev()) call x%sync() + res = size(x%v) + end function s_oacc_get_size + +end module psb_s_oacc_vect_mod diff --git a/openacc/psb_z_oacc_csr_mat_mod.F90 b/openacc/psb_z_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..7842d96c --- /dev/null +++ b/openacc/psb_z_oacc_csr_mat_mod.F90 @@ -0,0 +1,343 @@ +module psb_z_oacc_csr_mat_mod + + use iso_c_binding + use psb_z_mat_mod + use psb_z_oacc_vect_mod + !use oaccsparse_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_csr_sparse_mat) :: psb_z_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => z_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => z_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_z_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_z_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_z_oacc_csr_csmv + procedure, pass(a) :: scals => psb_z_oacc_csr_scals + procedure, pass(a) :: scalv => psb_z_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => z_oacc_csr_free + procedure, pass(a) :: mold => psb_z_oacc_csr_mold + procedure, pass(a) :: all => z_oacc_csr_all + procedure, pass(a) :: is_host => z_oacc_csr_is_host + procedure, pass(a) :: is_sync => z_oacc_csr_is_sync + procedure, pass(a) :: is_dev => z_oacc_csr_is_dev + procedure, pass(a) :: set_host => z_oacc_csr_set_host + procedure, pass(a) :: set_sync => z_oacc_csr_set_sync + procedure, pass(a) :: set_dev => z_oacc_csr_set_dev + procedure, pass(a) :: sync_space => z_oacc_csr_sync_space + procedure, pass(a) :: sync => z_oacc_csr_sync + end type psb_z_oacc_csr_sparse_mat + + interface + module subroutine psb_z_oacc_csr_mold(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_mold + end interface + + interface + module subroutine psb_z_oacc_csr_cp_from_fmt(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_z_oacc_csr_mv_from_coo(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_z_oacc_csr_mv_from_fmt(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_z_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_z_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_z_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + complex(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_csr_csmm + end interface + + interface + module subroutine psb_z_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta, x(:) + complex(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_csr_csmv + end interface + + interface + module subroutine psb_z_oacc_csr_scals(d, a, info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_scals + end interface + + interface + module subroutine psb_z_oacc_csr_scal(d,a,info,side) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_z_oacc_csr_scal + end interface + + interface + module subroutine psb_z_oacc_csr_reallocate_nz(nz,a) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_z_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_z_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_z_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_z_oacc_csr_cp_from_coo(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_cp_from_coo + end interface + +contains + + + subroutine z_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) + end if + + call a%psb_z_csr_sparse_mat%free() + + return + end subroutine z_oacc_csr_free + + function z_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + (2*psb_sizeof_dp) * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function z_oacc_csr_sizeof + + + function z_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSR_oacc' + end function z_oacc_csr_get_fmt + + subroutine z_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_z_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (allocated(a%val)) then + !$acc exit data delete(a%val) finalize + deallocate(a%val, stat=info) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) finalize + deallocate(a%ja, stat=info) + end if + if (allocated(a%irp)) then + !$acc exit data delete(a%irp) finalize + deallocate(a%irp, stat=info) + end if + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_space() + end subroutine z_oacc_csr_all + + function z_oacc_csr_is_host(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function z_oacc_csr_is_host + + function z_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function z_oacc_csr_is_sync + + function z_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function z_oacc_csr_is_dev + + subroutine z_oacc_csr_set_host(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine z_oacc_csr_set_host + + subroutine z_oacc_csr_set_sync(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine z_oacc_csr_set_sync + + subroutine z_oacc_csr_set_dev(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine z_oacc_csr_set_dev + + subroutine z_oacc_csr_sync_space(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + if (allocated(a%val)) then + call z_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irp)) then + call i_oacc_create_dev(a%irp) + end if + contains + subroutine z_oacc_create_dev(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine z_oacc_create_dev + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + end subroutine z_oacc_csr_sync_space + + subroutine z_oacc_csr_sync(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_z_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call z_oacc_csr_to_host(a%val) + call i_oacc_csr_to_host(a%ja) + call i_oacc_csr_to_host(a%irp) + else if (a%is_host()) then + call z_oacc_csr_to_dev(a%val) + call i_oacc_csr_to_dev(a%ja) + call i_oacc_csr_to_dev(a%irp) + end if + call tmpa%set_sync() + end subroutine z_oacc_csr_sync + + subroutine z_oacc_csr_to_dev(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine z_oacc_csr_to_dev + + subroutine z_oacc_csr_to_host(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine z_oacc_csr_to_host + + subroutine i_oacc_csr_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_csr_to_dev + + subroutine i_oacc_csr_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_csr_to_host + +end module psb_z_oacc_csr_mat_mod + diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 new file mode 100644 index 00000000..5d03b49d --- /dev/null +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -0,0 +1,935 @@ +module psb_z_oacc_vect_mod + use iso_c_binding + use psb_const_mod + use psb_error_mod + use psb_z_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_base_vect_type) :: psb_z_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => z_oacc_get_nrows + procedure, nopass :: get_fmt => z_oacc_get_fmt + + procedure, pass(x) :: all => z_oacc_vect_all + procedure, pass(x) :: zero => z_oacc_zero + procedure, pass(x) :: asb_m => z_oacc_asb_m + procedure, pass(x) :: sync => z_oacc_sync + procedure, pass(x) :: sync_space => z_oacc_sync_space + procedure, pass(x) :: bld_x => z_oacc_bld_x + procedure, pass(x) :: bld_mn => z_oacc_bld_mn + procedure, pass(x) :: free => z_oacc_vect_free + procedure, pass(x) :: ins_a => z_oacc_ins_a + procedure, pass(x) :: ins_v => z_oacc_ins_v + procedure, pass(x) :: is_host => z_oacc_is_host + procedure, pass(x) :: is_dev => z_oacc_is_dev + procedure, pass(x) :: is_sync => z_oacc_is_sync + procedure, pass(x) :: set_host => z_oacc_set_host + procedure, pass(x) :: set_dev => z_oacc_set_dev + procedure, pass(x) :: set_sync => z_oacc_set_sync + procedure, pass(x) :: set_scal => z_oacc_set_scal + + procedure, pass(x) :: gthzv_x => z_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => z_oacc_gthzbuf + procedure, pass(y) :: sctb => z_oacc_sctb + procedure, pass(y) :: sctb_x => z_oacc_sctb_x + procedure, pass(y) :: sctb_buf => z_oacc_sctb_buf + + procedure, pass(x) :: get_size => z_oacc_get_size + procedure, pass(x) :: dot_v => z_oacc_vect_dot + procedure, pass(x) :: dot_a => z_oacc_dot_a + procedure, pass(y) :: axpby_v => z_oacc_axpby_v + procedure, pass(y) :: axpby_a => z_oacc_axpby_a + procedure, pass(z) :: abgdxyz => z_oacc_abgdxyz + procedure, pass(y) :: mlt_a => z_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => z_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => z_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => z_oacc_mlt_v_2 + procedure, pass(x) :: scal => z_oacc_scal + procedure, pass(x) :: nrm2 => z_oacc_nrm2 + procedure, pass(x) :: amax => z_oacc_amax + procedure, pass(x) :: asum => z_oacc_asum + procedure, pass(x) :: absval1 => z_oacc_absval1 + procedure, pass(x) :: absval2 => z_oacc_absval2 + + end type psb_z_vect_oacc + + interface + subroutine z_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine z_oacc_mlt_v + end interface + + + interface + subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + class(psb_z_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine z_oacc_mlt_v_2 + end interface + +contains + + subroutine z_oacc_absval1(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n, i + + if (x%is_host()) call x%sync_space() + n = size(x%v) + !$acc parallel loop + do i = 1, n + x%v(i) = abs(x%v(i)) + end do + call x%set_dev() + end subroutine z_oacc_absval1 + + subroutine z_oacc_absval2(x, y) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_z_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + !$acc parallel loop + do i = 1, n + yy%v(i) = abs(x%v(i)) + end do + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_z_base_vect_type%absval(y) + end select + end subroutine z_oacc_absval2 + + subroutine z_oacc_scal(alpha, x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + complex(psb_dpk_), intent(in) :: alpha + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, size(x%v) + x%v(i) = alpha * x%v(i) + end do + call x%set_dev() + end subroutine z_oacc_scal + + function z_oacc_nrm2(n, x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i))**2 + end do + res = sqrt(sum) + end function z_oacc_nrm2 + + function z_oacc_amax(n, x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: max_val + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) + end do + res = max_val + end function z_oacc_amax + + function z_oacc_asum(n, x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + complex(psb_dpk_) :: sum + integer(psb_ipk_) :: i + + if (x%is_host()) call x%sync_space() + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x%v(i)) + end do + res = sum + end function z_oacc_asum + + + subroutine z_oacc_mlt_a(x, y, info) + implicit none + complex(psb_dpk_), intent(in) :: x(:) + class(psb_z_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync_space() + !$acc parallel loop + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine z_oacc_mlt_a + + subroutine z_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:) + complex(psb_dpk_), intent(in) :: y(:) + class(psb_z_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync_space() + !$acc parallel loop + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine z_oacc_mlt_a_2 + + +!!$ subroutine z_oacc_mlt_v(x, y, info) +!!$ implicit none +!!$ class(psb_z_base_vect_type), intent(inout) :: x +!!$ class(psb_z_vect_oacc), intent(inout) :: y +!!$ integer(psb_ipk_), intent(out) :: info +!!$ +!!$ integer(psb_ipk_) :: i, n +!!$ +!!$ info = 0 +!!$ n = min(x%get_nrows(), y%get_nrows()) +!!$ select type(xx => x) +!!$ type is (psb_z_base_vect_type) +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do +!!$ call y%set_host() +!!$ end select +!!$ end subroutine z_oacc_mlt_v +!!$ +!!$ subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) +!!$ use psi_serial_mod +!!$ use psb_string_mod +!!$ implicit none +!!$ complex(psb_dpk_), intent(in) :: alpha, beta +!!$ class(psb_z_base_vect_type), intent(inout) :: x +!!$ class(psb_z_base_vect_type), intent(inout) :: y +!!$ class(psb_z_vect_oacc), intent(inout) :: z +!!$ integer(psb_ipk_), intent(out) :: info +!!$ character(len=1), intent(in), optional :: conjgx, conjgy +!!$ integer(psb_ipk_) :: i, n +!!$ logical :: conjgx_, conjgy_ +!!$ +!!$ conjgx_ = .false. +!!$ conjgy_ = .false. +!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') +!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') +!!$ +!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) +!!$ +!!$ info = 0 +!!$ select type(xx => x) +!!$ class is (psb_z_vect_oacc) +!!$ select type (yy => y) +!!$ class is (psb_z_vect_oacc) +!!$ if (xx%is_host()) call xx%sync_space() +!!$ if (yy%is_host()) call yy%sync_space() +!!$ if ((beta /= zzero) .and. (z%is_host())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_dev() +!!$ class default +!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (yy%is_dev()) call yy%sync() +!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ class default +!!$ if (x%is_dev()) call x%sync() +!!$ if (y%is_dev()) call y%sync() +!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync_space() +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) +!!$ end do +!!$ call z%set_host() +!!$ end select +!!$ end subroutine z_oacc_mlt_v_2 + + + subroutine z_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_vect_oacc), intent(inout) :: y + complex(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_z_vect_oacc) + if ((beta /= zzero) .and. y%is_host()) call y%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * xx%v(i) + beta * y%v(i) + end do + end if + call y%set_dev() + class default + if ((alpha /= zzero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + end subroutine z_oacc_axpby_v + + subroutine z_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_dpk_), intent(in) :: x(:) + class(psb_z_vect_oacc), intent(inout) :: y + complex(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= zzero) .and. (y%is_dev())) call y%sync_space() + !$acc parallel loop + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine z_oacc_axpby_a + + subroutine z_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + class(psb_z_vect_oacc), intent(inout) :: z + complex(psb_dpk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_z_vect_oacc) + select type(yy => y) + class is (psb_z_vect_oacc) + select type(zz => z) + class is (psb_z_vect_oacc) + if ((beta /= zzero) .and. yy%is_host()) call yy%sync_space() + if ((delta /= zzero) .and. zz%is_host()) call zz%sync_space() + if (xx%is_host()) call xx%sync_space() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine z_oacc_abgdxyz + + subroutine z_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_dpk_) :: beta + class(psb_z_vect_oacc) :: y + integer(psb_ipk_) :: info + + if (.not.allocated(y%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + end do + + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + end do + end select + end subroutine z_oacc_sctb_buf + + subroutine z_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_dpk_) :: beta, x(:) + class(psb_z_vect_oacc) :: y + integer(psb_ipk_) :: info, ni + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'z_oacc_sctb_x') + return + end select + + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + + call y%set_dev() + end subroutine z_oacc_sctb_x + + + + subroutine z_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + complex(psb_dpk_) :: beta, x(:) + class(psb_z_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine z_oacc_sctb + + + subroutine z_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_z_vect_oacc) :: x + integer(psb_ipk_) :: info + + info = 0 + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'z_oacc_gthzbuf') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine z_oacc_gthzbuf + + subroutine z_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + complex(psb_dpk_) :: y(:) + class(psb_z_vect_oacc):: x + integer(psb_ipk_) :: info + + info = 0 + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space(info) + class default + call psb_errpush(info, 'z_oacc_gthzv_x') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine z_oacc_gthzv_x + + subroutine z_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_z_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_z_vect_oacc) + if (vval%is_host()) call vval%sync_space() + if (virl%is_host()) call virl%sync_space(info) + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync_space(info) + end select + select type(vval => val) + type is (psb_z_vect_oacc) + if (vval%is_dev()) call vval%sync_space() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine z_oacc_ins_v + + + + subroutine z_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + complex(psb_dpk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync_space() + call x%psb_z_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + !$acc update device(x%v) + + end subroutine z_oacc_ins_a + + + + subroutine z_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'z_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + !$acc update device(x%v) + + end subroutine z_oacc_bld_mn + + + subroutine z_oacc_bld_x(x, this) + use psb_base_mod + implicit none + complex(psb_dpk_), intent(in) :: this(:) + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'z_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + + x%v(:) = this(:) + call x%set_host() + !$acc update device(x%v) + + end subroutine z_oacc_bld_x + + + subroutine z_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_z_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_z_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + end if + end subroutine z_oacc_asb_m + + + + subroutine z_oacc_set_scal(x, val, first, last) + class(psb_z_vect_oacc), intent(inout) :: x + complex(psb_dpk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine z_oacc_set_scal + + + + subroutine z_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(zzero) + end subroutine z_oacc_zero + + function z_oacc_get_nrows(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function z_oacc_get_nrows + + function z_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "zOACC" + + end function z_oacc_get_fmt + + function z_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_) :: res + complex(psb_dpk_), external :: ddot + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + res = zzero + + select type(yy => y) + type is (psb_z_base_vect_type) + if (x%is_dev()) call x%sync() + res = ddot(n, x%v, 1, yy%v, 1) + type is (psb_z_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + + !$acc parallel loop reduction(+:res) present(x%v, yy%v) + do i = 1, n + res = res + x%v(i) * yy%v(i) + end do + !$acc end parallel loop + + class default + call x%sync() + res = y%dot(n, x%v) + end select + + end function z_oacc_vect_dot + + + + + function z_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + complex(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_) :: res + complex(psb_dpk_), external :: ddot + + if (x%is_dev()) call x%sync() + res = ddot(n, y, 1, x%v, 1) + + end function z_oacc_dot_a + + ! subroutine z_oacc_set_vect(x,y) + ! implicit none + ! class(psb_z_vect_oacc), intent(inout) :: x + ! complex(psb_dpk_), intent(in) :: y(:) + ! integer(psb_ipk_) :: info + + ! if (size(x%v) /= size(y)) then + ! call x%free(info) + ! call x%all(size(y),info) + ! end if + ! x%v(:) = y(:) + ! call x%set_host() + ! end subroutine z_oacc_set_vect + + subroutine z_oacc_to_dev(v) + implicit none + complex(psb_dpk_) :: v(:) + !$acc update device(v) + end subroutine z_oacc_to_dev + + subroutine z_oacc_to_host(v) + implicit none + complex(psb_dpk_) :: v(:) + !$acc update self(v) + end subroutine z_oacc_to_host + + subroutine z_oacc_sync_space(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + if (allocated(x%v)) then + call z_oacc_create_dev(x%v) + end if + contains + subroutine z_oacc_create_dev(v) + implicit none + complex(psb_dpk_) :: v(:) + !$acc enter data copyin(v) + end subroutine z_oacc_create_dev + end subroutine z_oacc_sync_space + + subroutine z_oacc_sync(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + call z_oacc_to_host(x%v) + end if + if (x%is_host()) then + call z_oacc_to_dev(x%v) + end if + call x%set_sync() + end subroutine z_oacc_sync + + subroutine z_oacc_set_host(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine z_oacc_set_host + + subroutine z_oacc_set_dev(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine z_oacc_set_dev + + subroutine z_oacc_set_sync(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine z_oacc_set_sync + + function z_oacc_is_dev(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function z_oacc_is_dev + + function z_oacc_is_host(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function z_oacc_is_host + + function z_oacc_is_sync(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function z_oacc_is_sync + + subroutine z_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_z_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) then + call x%set_host() + !$acc enter data create(x%v) + call x%sync_space() + end if + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'z_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + end subroutine z_oacc_vect_all + + + subroutine z_oacc_vect_free(x, info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 + if (allocated(x%v)) then + !$acc exit data delete(x%v) finalize + deallocate(x%v, stat=info) + end if + + end subroutine z_oacc_vect_free + + function z_oacc_get_size(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + if (x%is_dev()) call x%sync() + res = size(x%v) + end function z_oacc_get_size + +end module psb_z_oacc_vect_mod From 686bac42249fa58fc56c42dccc6b2b1b0e5a069c Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 17 Jul 2024 13:03:46 +0200 Subject: [PATCH 15/86] Account for S/D/C/Z variants --- openacc/impl/Makefile | 68 +++++++++++++++++++++++++++++++++++----- openacc/psb_oacc_mod.F90 | 12 +++++-- 2 files changed, 71 insertions(+), 9 deletions(-) diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index 56df9402..32f104dd 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -10,13 +10,67 @@ UP=.. FINCLUDES=$(FMFLAG).. $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FIFLAG).. LIBNAME=libpsb_openacc.a -OBJS= psb_d_oacc_csr_vect_mv.o psb_d_oacc_csr_inner_vect_sv.o \ - psb_d_oacc_csr_csmm.o psb_d_oacc_csr_csmv.o psb_d_oacc_csr_scals.o \ - psb_d_oacc_csr_scal.o psb_d_oacc_csr_allocate_mnnz.o \ - psb_d_oacc_csr_reallocate_nz.o psb_d_oacc_csr_cp_from_coo.o \ - psb_d_oacc_csr_cp_from_fmt.o psb_d_oacc_csr_mv_from_coo.o \ - psb_d_oacc_csr_mv_from_fmt.o psb_d_oacc_csr_mold.o \ - psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o +OBJS= \ +psb_s_oacc_csr_vect_mv.o \ +psb_s_oacc_csr_inner_vect_sv.o \ +psb_s_oacc_csr_csmm.o \ +psb_s_oacc_csr_csmv.o \ +psb_s_oacc_csr_scals.o \ +psb_s_oacc_csr_scal.o \ +psb_s_oacc_csr_allocate_mnnz.o \ +psb_s_oacc_csr_reallocate_nz.o \ +psb_s_oacc_csr_cp_from_coo.o \ +psb_s_oacc_csr_cp_from_fmt.o \ +psb_s_oacc_csr_mv_from_coo.o \ +psb_s_oacc_csr_mv_from_fmt.o \ +psb_s_oacc_csr_mold.o \ +psb_s_oacc_mlt_v_2.o \ +psb_s_oacc_mlt_v.o \ +psb_d_oacc_csr_vect_mv.o \ +psb_d_oacc_csr_inner_vect_sv.o \ +psb_d_oacc_csr_csmm.o \ +psb_d_oacc_csr_csmv.o \ +psb_d_oacc_csr_scals.o \ +psb_d_oacc_csr_scal.o \ +psb_d_oacc_csr_allocate_mnnz.o \ +psb_d_oacc_csr_reallocate_nz.o \ +psb_d_oacc_csr_cp_from_coo.o \ +psb_d_oacc_csr_cp_from_fmt.o \ +psb_d_oacc_csr_mv_from_coo.o \ +psb_d_oacc_csr_mv_from_fmt.o \ +psb_d_oacc_csr_mold.o \ +psb_d_oacc_mlt_v_2.o \ +psb_d_oacc_mlt_v.o \ +psb_c_oacc_csr_vect_mv.o \ +psb_c_oacc_csr_inner_vect_sv.o \ +psb_c_oacc_csr_csmm.o \ +psb_c_oacc_csr_csmv.o \ +psb_c_oacc_csr_scals.o \ +psb_c_oacc_csr_scal.o \ +psb_c_oacc_csr_allocate_mnnz.o \ +psb_c_oacc_csr_reallocate_nz.o \ +psb_c_oacc_csr_cp_from_coo.o \ +psb_c_oacc_csr_cp_from_fmt.o \ +psb_c_oacc_csr_mv_from_coo.o \ +psb_c_oacc_csr_mv_from_fmt.o \ +psb_c_oacc_csr_mold.o \ +psb_c_oacc_mlt_v_2.o \ +psb_c_oacc_mlt_v.o \ +psb_z_oacc_csr_vect_mv.o \ +psb_z_oacc_csr_inner_vect_sv.o \ +psb_z_oacc_csr_csmm.o \ +psb_z_oacc_csr_csmv.o \ +psb_z_oacc_csr_scals.o \ +psb_z_oacc_csr_scal.o \ +psb_z_oacc_csr_allocate_mnnz.o \ +psb_z_oacc_csr_reallocate_nz.o \ +psb_z_oacc_csr_cp_from_coo.o \ +psb_z_oacc_csr_cp_from_fmt.o \ +psb_z_oacc_csr_mv_from_coo.o \ +psb_z_oacc_csr_mv_from_fmt.o \ +psb_z_oacc_csr_mold.o \ +psb_z_oacc_mlt_v_2.o \ +psb_z_oacc_mlt_v.o objs: $(OBJS) diff --git a/openacc/psb_oacc_mod.F90 b/openacc/psb_oacc_mod.F90 index fe827db8..2d8e8b40 100644 --- a/openacc/psb_oacc_mod.F90 +++ b/openacc/psb_oacc_mod.F90 @@ -3,7 +3,15 @@ module psb_oacc_mod use psb_oacc_env_mod + use psb_i_oacc_vect_mod + use psb_s_oacc_vect_mod use psb_d_oacc_vect_mod - use psb_d_oacc_csr_mat_mod + use psb_c_oacc_vect_mod + use psb_z_oacc_vect_mod -end module psb_oacc_mod \ No newline at end of file + use psb_s_oacc_csr_mat_mod + use psb_d_oacc_csr_mat_mod + use psb_c_oacc_csr_mat_mod + use psb_z_oacc_csr_mat_mod + +end module psb_oacc_mod From 9e18545151c8a2d4f944ffbd01bd4848c6b36c2e Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 17 Jul 2024 13:04:07 +0200 Subject: [PATCH 16/86] Fix typos --- openacc/impl/psb_c_oacc_csr_csmm.F90 | 2 +- openacc/impl/psb_c_oacc_csr_csmv.F90 | 2 +- openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 | 2 +- openacc/impl/psb_c_oacc_csr_mold.F90 | 2 +- openacc/impl/psb_c_oacc_csr_vect_mv.F90 | 2 +- openacc/impl/psb_s_oacc_csr_csmm.F90 | 2 +- openacc/impl/psb_s_oacc_csr_csmv.F90 | 2 +- openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 | 2 +- openacc/impl/psb_s_oacc_csr_mold.F90 | 2 +- openacc/impl/psb_s_oacc_csr_vect_mv.F90 | 2 +- openacc/impl/psb_z_oacc_csr_csmm.F90 | 2 +- openacc/impl/psb_z_oacc_csr_csmv.F90 | 2 +- openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 | 2 +- openacc/impl/psb_z_oacc_csr_mold.F90 | 2 +- openacc/impl/psb_z_oacc_csr_vect_mv.F90 | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/openacc/impl/psb_c_oacc_csr_csmm.F90 b/openacc/impl/psb_c_oacc_csr_csmm.F90 index c26df410..5bf0bad4 100644 --- a/openacc/impl/psb_c_oacc_csr_csmm.F90 +++ b/openacc/impl/psb_c_oacc_csr_csmm.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invalic_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_c_oacc_csr_csmv.F90 b/openacc/impl/psb_c_oacc_csr_csmv.F90 index 8f37efb3..e5d5f24e 100644 --- a/openacc/impl/psb_c_oacc_csr_csmv.F90 +++ b/openacc/impl/psb_c_oacc_csr_csmv.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invalic_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 index 2d733f48..1dee9f2e 100644 --- a/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invalic_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_c_oacc_csr_mold.F90 b/openacc/impl/psb_c_oacc_csr_mold.F90 index 6ee36985..cf32ea94 100644 --- a/openacc/impl/psb_c_oacc_csr_mold.F90 +++ b/openacc/impl/psb_c_oacc_csr_mold.F90 @@ -31,5 +31,5 @@ contains return end subroutine psb_c_oacc_csr_mold -end submodule psb_c_oacc_csr_molc_impl +end submodule psb_c_oacc_csr_mold_impl diff --git a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 index b4b79d56..0fd1ed35 100644 --- a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 @@ -18,7 +18,7 @@ contains if ((n /= size(x%v)) .or. (n /= size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) - info = psb_err_invalic_mat_state_ + info = psb_err_invalid_mat_state_ return end if diff --git a/openacc/impl/psb_s_oacc_csr_csmm.F90 b/openacc/impl/psb_s_oacc_csr_csmm.F90 index 2e7def53..bb8283bf 100644 --- a/openacc/impl/psb_s_oacc_csr_csmm.F90 +++ b/openacc/impl/psb_s_oacc_csr_csmm.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invalis_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_s_oacc_csr_csmv.F90 b/openacc/impl/psb_s_oacc_csr_csmv.F90 index ba673941..c224dc0e 100644 --- a/openacc/impl/psb_s_oacc_csr_csmv.F90 +++ b/openacc/impl/psb_s_oacc_csr_csmv.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invalis_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 index 7af897a7..ec7f4bad 100644 --- a/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invalis_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_s_oacc_csr_mold.F90 b/openacc/impl/psb_s_oacc_csr_mold.F90 index a85471e5..95bddde8 100644 --- a/openacc/impl/psb_s_oacc_csr_mold.F90 +++ b/openacc/impl/psb_s_oacc_csr_mold.F90 @@ -31,5 +31,5 @@ contains return end subroutine psb_s_oacc_csr_mold -end submodule psb_s_oacc_csr_mols_impl +end submodule psb_s_oacc_csr_mold_impl diff --git a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 index 9b15da3b..c2bbd6b1 100644 --- a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 @@ -18,7 +18,7 @@ contains if ((n /= size(x%v)) .or. (n /= size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) - info = psb_err_invalis_mat_state_ + info = psb_err_invalid_mat_state_ return end if diff --git a/openacc/impl/psb_z_oacc_csr_csmm.F90 b/openacc/impl/psb_z_oacc_csr_csmm.F90 index aeaaab33..97a38deb 100644 --- a/openacc/impl/psb_z_oacc_csr_csmm.F90 +++ b/openacc/impl/psb_z_oacc_csr_csmm.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invaliz_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_z_oacc_csr_csmv.F90 b/openacc/impl/psb_z_oacc_csr_csmv.F90 index f5501b21..8def3c76 100644 --- a/openacc/impl/psb_z_oacc_csr_csmv.F90 +++ b/openacc/impl/psb_z_oacc_csr_csmv.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invaliz_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 index b5d552d3..4975b276 100644 --- a/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 @@ -27,7 +27,7 @@ contains end if if (.not.a%is_asb()) then - info = psb_err_invaliz_mat_state_ + info = psb_err_invalid_mat_state_ call psb_errpush(info, name) goto 9999 endif diff --git a/openacc/impl/psb_z_oacc_csr_mold.F90 b/openacc/impl/psb_z_oacc_csr_mold.F90 index e7e9e8b9..93b6bb17 100644 --- a/openacc/impl/psb_z_oacc_csr_mold.F90 +++ b/openacc/impl/psb_z_oacc_csr_mold.F90 @@ -31,5 +31,5 @@ contains return end subroutine psb_z_oacc_csr_mold -end submodule psb_z_oacc_csr_molz_impl +end submodule psb_z_oacc_csr_mold_impl diff --git a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 index 437dd70a..b8da5c8f 100644 --- a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 @@ -18,7 +18,7 @@ contains if ((n /= size(x%v)) .or. (n /= size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) - info = psb_err_invaliz_mat_state_ + info = psb_err_invalid_mat_state_ return end if From b5a8c549dd7f78775c12db811aae243b6658167a Mon Sep 17 00:00:00 2001 From: tloloum Date: Fri, 19 Jul 2024 11:35:11 +0200 Subject: [PATCH 17/86] psb_d_oacc_pde3d draft --- test/openacc/Makefile | 4 +- test/openacc/test.F90 | 617 ----------------- test/pargen/Makefile | 8 +- test/pargen/psb_d_oacc_pde3d.F90 | 1073 ++++++++++++++++++++++++++++++ 4 files changed, 1081 insertions(+), 621 deletions(-) delete mode 100644 test/openacc/test.F90 create mode 100644 test/pargen/psb_d_oacc_pde3d.F90 diff --git a/test/openacc/Makefile b/test/openacc/Makefile index 65bed1ad..9d62f3cd 100644 --- a/test/openacc/Makefile +++ b/test/openacc/Makefile @@ -9,7 +9,7 @@ INCDIR=$(TOPDIR)/include MODDIR=$(TOPDIR)/modules EXEDIR=./runs -PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_base -lpsb_ext -lpsb_util -lopenblas -lmetis +PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_base -lpsb_ext -lpsb_util -lpsb_krylov -lpsb_prec -lopenblas -lmetis LDLIBS=$(PSBGPULDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) $(FMFLAG)$(PSBINCDIR) $(LIBRSB_DEFINES) @@ -17,7 +17,7 @@ FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) FFLAGS=-O0 -march=native -fopenacc -foffload=nvptx-none="-march=sm_70" CFLAGS=-O0 -march=native -SRCS=test.F90 vectoacc.F90 datavect.F90 +SRCS=vectoacc.F90 datavect.F90 CSRC=timers.c OBJS=$(SRCS:.F90=.o) $(CSRC:.c=.o) diff --git a/test/openacc/test.F90 b/test/openacc/test.F90 deleted file mode 100644 index 0d0b756f..00000000 --- a/test/openacc/test.F90 +++ /dev/null @@ -1,617 +0,0 @@ -module psb_d_pde3d_mod - - - use psb_base_mod, only : psb_dpk_, psb_ipk_, psb_lpk_, psb_desc_type,& - & psb_dspmat_type, psb_d_vect_type, dzero,& - & psb_d_base_sparse_mat, psb_d_base_vect_type, & - & psb_i_base_vect_type, psb_l_base_vect_type - - interface - function d_func_3d(x,y,z) result(val) - import :: psb_dpk_ - real(psb_dpk_), intent(in) :: x,y,z - real(psb_dpk_) :: val - end function d_func_3d - end interface - - interface psb_gen_pde3d - module procedure psb_d_gen_pde3d - end interface psb_gen_pde3d - - contains - - function d_null_func_3d(x,y,z) result(val) - - real(psb_dpk_), intent(in) :: x,y,z - real(psb_dpk_) :: val - - val = dzero - - end function d_null_func_3d - ! - ! functions parametrizing the differential equation - ! - - ! - ! Note: b1, b2 and b3 are the coefficients of the first - ! derivative of the unknown function. The default - ! we apply here is to have them zero, so that the resulting - ! matrix is symmetric/hermitian and suitable for - ! testing with CG and FCG. - ! When testing methods for non-hermitian matrices you can - ! change the B1/B2/B3 functions to e.g. done/sqrt((3*done)) - ! - function b1(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: b1 - real(psb_dpk_), intent(in) :: x,y,z - b1=done/sqrt((3*done)) - end function b1 - function b2(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: b2 - real(psb_dpk_), intent(in) :: x,y,z - b2=done/sqrt((3*done)) - end function b2 - function b3(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: b3 - real(psb_dpk_), intent(in) :: x,y,z - b3=done/sqrt((3*done)) - end function b3 - function c(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: c - real(psb_dpk_), intent(in) :: x,y,z - c=dzero - end function c - function a1(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: a1 - real(psb_dpk_), intent(in) :: x,y,z - a1=done/80 - end function a1 - function a2(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: a2 - real(psb_dpk_), intent(in) :: x,y,z - a2=done/80 - end function a2 - function a3(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: a3 - real(psb_dpk_), intent(in) :: x,y,z - a3=done/80 - end function a3 - function g(x,y,z) - use psb_base_mod, only : psb_dpk_, done, dzero - implicit none - real(psb_dpk_) :: g - real(psb_dpk_), intent(in) :: x,y,z - g = dzero - if (x == done) then - g = done - else if (x == dzero) then - g = exp(y**2-z**2) - end if - end function g - - - ! - ! subroutine to allocate and fill in the coefficient matrix and - ! the rhs. - ! - subroutine psb_d_gen_pde3d(ctxt,idim,a,bv,xv,desc_a,afmt,info,& - & f,amold,vmold,imold,partition,nrl,iv,tnd) - use psb_base_mod - use psb_util_mod - ! - ! Discretizes the partial differential equation - ! - ! a1 dd(u) a2 dd(u) a3 dd(u) b1 d(u) b2 d(u) b3 d(u) - ! - ------ - ------ - ------ + ----- + ------ + ------ + c u = f - ! dxdx dydy dzdz dx dy dz - ! - ! with Dirichlet boundary conditions - ! u = g - ! - ! on the unit cube 0<=x,y,z<=1. - ! - ! - ! Note that if b1=b2=b3=c=0., the PDE is the Laplace equation. - ! - implicit none - integer(psb_ipk_) :: idim - type(psb_dspmat_type) :: a - type(psb_d_vect_type) :: xv,bv - type(psb_desc_type) :: desc_a - type(psb_ctxt_type) :: ctxt - integer(psb_ipk_) :: info - character(len=*) :: afmt - procedure(d_func_3d), optional :: f - class(psb_d_base_sparse_mat), optional :: amold - class(psb_d_base_vect_type), optional :: vmold - class(psb_i_base_vect_type), optional :: imold - integer(psb_ipk_), optional :: partition, nrl,iv(:) - logical, optional :: tnd - ! Local variables. - - integer(psb_ipk_), parameter :: nb=20 - type(psb_d_csc_sparse_mat) :: acsc - type(psb_d_coo_sparse_mat) :: acoo - type(psb_d_csr_sparse_mat) :: acsr - real(psb_dpk_) :: zt(nb),x,y,z - integer(psb_ipk_) :: nnz,nr,nlr,i,j,ii,ib,k, partition_ - integer(psb_lpk_) :: m,n,glob_row,nt - integer(psb_ipk_) :: ix,iy,iz,ia,indx_owner - ! For 3D partition - ! Note: integer control variables going directly into an MPI call - ! must be 4 bytes, i.e. psb_mpk_ - integer(psb_mpk_) :: npdims(3), npp, minfo - integer(psb_ipk_) :: npx,npy,npz, iamx,iamy,iamz,mynx,myny,mynz - integer(psb_ipk_), allocatable :: bndx(:),bndy(:),bndz(:) - ! Process grid - integer(psb_ipk_) :: np, iam - integer(psb_ipk_) :: icoeff - integer(psb_lpk_), allocatable :: irow(:),icol(:),myidx(:) - real(psb_dpk_), allocatable :: val(:) - ! deltah dimension of each grid cell - ! deltat discretization time - real(psb_dpk_) :: deltah, sqdeltah, deltah2 - real(psb_dpk_), parameter :: rhs=dzero,one=done,zero=dzero - real(psb_dpk_) :: t0, t1, t2, t3, tasb, talc, ttot, tgen, tcdasb - integer(psb_ipk_) :: err_act - procedure(d_func_3d), pointer :: f_ - logical :: tnd_ - character(len=20) :: name, ch_err,tmpfmt - - info = psb_success_ - name = 'create_matrix' - call psb_erractionsave(err_act) - - call psb_info(ctxt, iam, np) - - - if (present(f)) then - f_ => f - else - f_ => d_null_func_3d - end if - - deltah = done/(idim+2) - sqdeltah = deltah*deltah - deltah2 = (2*done)* deltah - - if (present(partition)) then - if ((1<= partition).and.(partition <= 3)) then - partition_ = partition - else - write(*,*) 'Invalid partition choice ',partition,' defaulting to 3' - partition_ = 3 - end if - else - partition_ = 3 - end if - - ! initialize array descriptor and sparse matrix storage. provide an - ! estimate of the number of non zeroes - - m = (1_psb_lpk_*idim)*idim*idim - n = m - nnz = ((n*7)/(np)) - if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n - t0 = psb_wtime() - select case(partition_) - case(1) - ! A BLOCK partition - if (present(nrl)) then - nr = nrl - else - ! - ! Using a simple BLOCK distribution. - ! - nt = (m+np-1)/np - nr = max(0,min(nt,m-(iam*nt))) - end if - - nt = nr - call psb_sum(ctxt,nt) - if (nt /= m) then - write(psb_err_unit,*) iam, 'Initialization error ',nr,nt,m - info = -1 - call psb_barrier(ctxt) - call psb_abort(ctxt) - return - end if - - ! - ! First example of use of CDALL: specify for each process a number of - ! contiguous rows - ! - call psb_cdall(ctxt,desc_a,info,nl=nr) - myidx = desc_a%get_global_indices() - nlr = size(myidx) - - case(2) - ! A partition defined by the user through IV - - if (present(iv)) then - if (size(iv) /= m) then - write(psb_err_unit,*) iam, 'Initialization error: wrong IV size',size(iv),m - info = -1 - call psb_barrier(ctxt) - call psb_abort(ctxt) - return - end if - else - write(psb_err_unit,*) iam, 'Initialization error: IV not present' - info = -1 - call psb_barrier(ctxt) - call psb_abort(ctxt) - return - end if - - ! - ! Second example of use of CDALL: specify for each row the - ! process that owns it - ! - call psb_cdall(ctxt,desc_a,info,vg=iv) - myidx = desc_a%get_global_indices() - nlr = size(myidx) - - case(3) - ! A 3-dimensional partition - - ! A nifty MPI function will split the process list - npdims = 0 - call mpi_dims_create(np,3,npdims,info) - npx = npdims(1) - npy = npdims(2) - npz = npdims(3) - - allocate(bndx(0:npx),bndy(0:npy),bndz(0:npz)) - ! We can reuse idx2ijk for process indices as well. - call idx2ijk(iamx,iamy,iamz,iam,npx,npy,npz,base=0) - ! Now let's split the 3D cube in hexahedra - call dist1Didx(bndx,idim,npx) - mynx = bndx(iamx+1)-bndx(iamx) - call dist1Didx(bndy,idim,npy) - myny = bndy(iamy+1)-bndy(iamy) - call dist1Didx(bndz,idim,npz) - mynz = bndz(iamz+1)-bndz(iamz) - - ! How many indices do I own? - nlr = mynx*myny*mynz - allocate(myidx(nlr)) - ! Now, let's generate the list of indices I own - nr = 0 - do i=bndx(iamx),bndx(iamx+1)-1 - do j=bndy(iamy),bndy(iamy+1)-1 - do k=bndz(iamz),bndz(iamz+1)-1 - nr = nr + 1 - call ijk2idx(myidx(nr),i,j,k,idim,idim,idim) - end do - end do - end do - if (nr /= nlr) then - write(psb_err_unit,*) iam,iamx,iamy,iamz, 'Initialization error: NR vs NLR ',& - & nr,nlr,mynx,myny,mynz - info = -1 - call psb_barrier(ctxt) - call psb_abort(ctxt) - end if - - ! - ! Third example of use of CDALL: specify for each process - ! the set of global indices it owns. - ! - call psb_cdall(ctxt,desc_a,info,vl=myidx) - - case default - write(psb_err_unit,*) iam, 'Initialization error: should not get here' - info = -1 - call psb_barrier(ctxt) - call psb_abort(ctxt) - return - end select - - - if (info == psb_success_) call psb_spall(a,desc_a,info,nnz=nnz,& - & dupl=psb_dupl_err_) - ! define rhs from boundary conditions; also build initial guess - if (info == psb_success_) call psb_geall(xv,desc_a,info) - if (info == psb_success_) call psb_geall(bv,desc_a,info) - - call psb_barrier(ctxt) - talc = psb_wtime()-t0 - - if (info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='allocation rout.' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - - ! we build an auxiliary matrix consisting of one row at a - ! time; just a small matrix. might be extended to generate - ! a bunch of rows per call. - ! - allocate(val(20*nb),irow(20*nb),& - &icol(20*nb),stat=info) - if (info /= psb_success_ ) then - info=psb_err_alloc_dealloc_ - call psb_errpush(info,name) - goto 9999 - endif - - - ! loop over rows belonging to current process in a block - ! distribution. - - call psb_barrier(ctxt) - t1 = psb_wtime() - do ii=1, nlr,nb - ib = min(nb,nlr-ii+1) - icoeff = 1 - do k=1,ib - i=ii+k-1 - ! local matrix pointer - glob_row=myidx(i) - ! compute gridpoint coordinates - call idx2ijk(ix,iy,iz,glob_row,idim,idim,idim) - ! x, y, z coordinates - x = (ix-1)*deltah - y = (iy-1)*deltah - z = (iz-1)*deltah - zt(k) = f_(x,y,z) - ! internal point: build discretization - ! - ! term depending on (x-1,y,z) - ! - val(icoeff) = -a1(x,y,z)/sqdeltah-b1(x,y,z)/deltah2 - if (ix == 1) then - zt(k) = g(dzero,y,z)*(-val(icoeff)) + zt(k) - else - call ijk2idx(icol(icoeff),ix-1,iy,iz,idim,idim,idim) - irow(icoeff) = glob_row - icoeff = icoeff+1 - endif - ! term depending on (x,y-1,z) - val(icoeff) = -a2(x,y,z)/sqdeltah-b2(x,y,z)/deltah2 - if (iy == 1) then - zt(k) = g(x,dzero,z)*(-val(icoeff)) + zt(k) - else - call ijk2idx(icol(icoeff),ix,iy-1,iz,idim,idim,idim) - irow(icoeff) = glob_row - icoeff = icoeff+1 - endif - ! term depending on (x,y,z-1) - val(icoeff)=-a3(x,y,z)/sqdeltah-b3(x,y,z)/deltah2 - if (iz == 1) then - zt(k) = g(x,y,dzero)*(-val(icoeff)) + zt(k) - else - call ijk2idx(icol(icoeff),ix,iy,iz-1,idim,idim,idim) - irow(icoeff) = glob_row - icoeff = icoeff+1 - endif - - ! term depending on (x,y,z) - val(icoeff)=(2*done)*(a1(x,y,z)+a2(x,y,z)+a3(x,y,z))/sqdeltah & - & + c(x,y,z) - call ijk2idx(icol(icoeff),ix,iy,iz,idim,idim,idim) - irow(icoeff) = glob_row - icoeff = icoeff+1 - ! term depending on (x,y,z+1) - val(icoeff)=-a3(x,y,z)/sqdeltah+b3(x,y,z)/deltah2 - if (iz == idim) then - zt(k) = g(x,y,done)*(-val(icoeff)) + zt(k) - else - call ijk2idx(icol(icoeff),ix,iy,iz+1,idim,idim,idim) - irow(icoeff) = glob_row - icoeff = icoeff+1 - endif - ! term depending on (x,y+1,z) - val(icoeff)=-a2(x,y,z)/sqdeltah+b2(x,y,z)/deltah2 - if (iy == idim) then - zt(k) = g(x,done,z)*(-val(icoeff)) + zt(k) - else - call ijk2idx(icol(icoeff),ix,iy+1,iz,idim,idim,idim) - irow(icoeff) = glob_row - icoeff = icoeff+1 - endif - ! term depending on (x+1,y,z) - val(icoeff)=-a1(x,y,z)/sqdeltah+b1(x,y,z)/deltah2 - if (ix==idim) then - zt(k) = g(done,y,z)*(-val(icoeff)) + zt(k) - else - call ijk2idx(icol(icoeff),ix+1,iy,iz,idim,idim,idim) - irow(icoeff) = glob_row - icoeff = icoeff+1 - endif - - end do - call psb_spins(icoeff-1,irow,icol,val,a,desc_a,info) - if(info /= psb_success_) exit - call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),bv,desc_a,info) - if(info /= psb_success_) exit - zt(:)=dzero - call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),xv,desc_a,info) - if(info /= psb_success_) exit - end do - - tgen = psb_wtime()-t1 - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='insert rout.' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - - deallocate(val,irow,icol) - - call psb_barrier(ctxt) - t1 = psb_wtime() - call psb_cdasb(desc_a,info,mold=imold) - tcdasb = psb_wtime()-t1 - call psb_barrier(ctxt) - t1 = psb_wtime() - if (info == psb_success_) then - if (present(amold)) then - call psb_spasb(a,desc_a,info,mold=amold,bld_and=tnd) - else - call psb_spasb(a,desc_a,info,afmt=afmt,bld_and=tnd) - end if - end if - call psb_barrier(ctxt) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='asb rout.' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - if (info == psb_success_) call psb_geasb(xv,desc_a,info,mold=vmold) - if (info == psb_success_) call psb_geasb(bv,desc_a,info,mold=vmold) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='asb rout.' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - tasb = psb_wtime()-t1 - call psb_barrier(ctxt) - ttot = psb_wtime() - t0 - - call psb_amx(ctxt,talc) - call psb_amx(ctxt,tgen) - call psb_amx(ctxt,tasb) - call psb_amx(ctxt,ttot) - if(iam == psb_root_) then - tmpfmt = a%get_fmt() - write(psb_out_unit,'("The matrix has been generated and assembled in ",a3," format.")')& - & tmpfmt - write(psb_out_unit,'("-allocation time : ",es12.5)') talc - write(psb_out_unit,'("-coeff. gen. time : ",es12.5)') tgen - write(psb_out_unit,'("-desc asbly time : ",es12.5)') tcdasb - write(psb_out_unit,'("- mat asbly time : ",es12.5)') tasb - write(psb_out_unit,'("-total time : ",es12.5)') ttot - - end if - call psb_erractionrestore(err_act) - return - - 9999 call psb_error_handler(ctxt,err_act) - - return - end subroutine psb_d_gen_pde3d - - -end module psb_d_pde3d_mod - - - -program test - use psb_base_mod - use psb_ext_mod - use psb_oacc_mod - use psb_d_pde3d_mod - - implicit none - integer(psb_ipk_) :: n, i, info, m, nrm, nz - integer(psb_ipk_), parameter :: ntests=80, ngpu=20 - real(psb_dpk_) :: dot_dev, dot_host - type(psb_d_vect_oacc) :: tx, ty - type(psb_d_oacc_csr_sparse_mat) :: aacsr - real(psb_dpk_) :: t0, t1, t2, t3, csflp, elflp - double precision, external :: etime - - type(psb_dspmat_type) :: a - type(psb_desc_type) :: desc_a - type(psb_d_vect_type) :: xxv, bv - type(psb_d_csr_sparse_mat) :: acsr - character(len=5) :: afmt='csr' - real(psb_dpk_), allocatable :: vv(:), ydev(:), yhost(:) - type(psb_ctxt_type) :: ctxt - integer(psb_ipk_) :: iam, np, nth, idim - integer(psb_epk_) :: neq - - call psb_init(ctxt) - call psb_info(ctxt, iam, np) - - write(*,*) 'Enter size :' - read(*,*) idim - idim = max(1, idim) - - n = idim**3 - call psb_gen_pde3d(ctxt, idim, a, bv, xxv, desc_a, afmt, info) - call a%cp_to(acsr) - m = acsr%get_nrows() - n = acsr%get_ncols() - nz = acsr%get_nzeros() - call aacsr%all(m, n, nz, info) - aacsr%val = (acsr%val) - aacsr%ja = (acsr%ja) - aacsr%irp = (acsr%irp) - call aacsr%set_host() - call aacsr%sync() - - call initialize(n) - - call to_host() - t2 = etime() - do i = 1, ntests - dot_host = h_dot(n) - end do - t3 = etime() - - call tx%all(n, info) - call ty%all(n, info) - vv = bv%get_vect() - call bv%set_vect(v1) - call tx%set_vect(v1) - call ty%set_vect(v2) - t0 = etime() - do i = 1, ntests * ngpu - dot_dev = tx%dot_v(n, ty) - end do - !$acc wait - t1 = etime() - write(*,*) ' Dot Results : dev:', dot_dev, ' host:', dot_host - write(*,*) ' Timing : dev:', t1 - t0, (t1 - t0) / (ntests * ngpu), & - ' host:', t3 - t2, (t3 - t2) / ntests - - call a%mv_from(acsr) - t2 = etime() - do i = 1, ntests - call a%spmm(done, bv, dzero, xxv, info) - end do - t3 = etime() - yhost = xxv%get_vect() - t0 = etime() - do i = 1, ntests * ngpu - call aacsr%vect_mv(done, tx, dzero, ty, info) - end do - !$acc wait - t1 = etime() - ydev = ty%get_vect() - write(*,*) 'Correctness check: ', maxval(abs(ydev(:) - yhost(:))) - write(*,*) ' CSR PROD ' - write(*, '(2(a,f12.3,2x))') ' Timing (ms): ' - csflp = 2.d0 * nz / ((t1 - t0) / (ntests * ngpu)) - write(*, '(2(a,f12.3,2x))') ' dev:', 1e3 * (t1 - t0) / (ntests * ngpu), ' :', csflp / 1.d6 - csflp = 2.d0 * nz / ((t3 - t2) / (ntests)) - write(*, '(2(a,f12.3,2x))') ' host:', 1e3 * (t3 - t2) / ntests, ' :', csflp / 1.d6 - write(*,*) 'Done' - - call tx%free(info) - call ty%free(info) - call finalize_dev() - call finalize_host() - call psb_exit(ctxt) -end program test diff --git a/test/pargen/Makefile b/test/pargen/Makefile index 20a95c0b..9b720ac2 100644 --- a/test/pargen/Makefile +++ b/test/pargen/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(INSTALLDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_openacc -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such @@ -25,6 +25,10 @@ psb_d_pde3d: psb_d_pde3d.o $(FLINK) psb_d_pde3d.o -o psb_d_pde3d $(PSBLAS_LIB) $(LDLIBS) /bin/mv psb_d_pde3d $(EXEDIR) +psb_d_oacc_pde3d: + mpifort -fallow-argument-mismatch -frecursive -g -O3 -frecursive -I../../modules/ -I. -DOPENACC -DHAVE_LAPACK -DHAVE_FLUSH_STMT -DLPK8 -DIPK4 -DMPI_MOD -c psb_d_oacc_pde3d.F90 -o psb_d_oacc_pde3d.o + $(FLINK) -fopenacc -DOPENACC psb_d_oacc_pde3d.o -o psb_d_oacc_pde3d $(PSBLAS_LIB) $(LDLIBS) + /bin/mv psb_d_oacc_pde3d $(EXEDIR) psb_s_pde3d: psb_s_pde3d.o $(FLINK) psb_s_pde3d.o -o psb_s_pde3d $(PSBLAS_LIB) $(LDLIBS) @@ -41,7 +45,7 @@ psb_s_pde2d: psb_s_pde2d.o clean: - /bin/rm -f psb_d_pde3d.o psb_s_pde3d.o psb_d_pde2d.o psb_s_pde2d.o *$(.mod) \ + /bin/rm -f psb_d_pde3d.o psb_d_oacc_pde3d.o psb_s_pde3d.o psb_d_pde2d.o psb_s_pde2d.o *$(.mod) \ $(EXEDIR)/psb_d_pde3d $(EXEDIR)/psb_s_pde3d $(EXEDIR)/psb_d_pde2d $(EXEDIR)/psb_s_pde2d verycleanlib: (cd ../..; make veryclean) diff --git a/test/pargen/psb_d_oacc_pde3d.F90 b/test/pargen/psb_d_oacc_pde3d.F90 new file mode 100644 index 00000000..ac992884 --- /dev/null +++ b/test/pargen/psb_d_oacc_pde3d.F90 @@ -0,0 +1,1073 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! File: psb_d_pde3d.f90 +! +! Program: psb_d_pde3d +! This sample program solves a linear system obtained by discretizing a +! PDE with Dirichlet BCs. +! +! +! The PDE is a general second order equation in 3d +! +! a1 dd(u) a2 dd(u) a3 dd(u) b1 d(u) b2 d(u) b3 d(u) +! - ------ - ------ - ------ + ----- + ------ + ------ + c u = f +! dxdx dydy dzdz dx dy dz +! +! with Dirichlet boundary conditions +! u = g +! +! on the unit cube 0<=x,y,z<=1. +! +! +! Note that if b1=b2=b3=c=0., the PDE is the Laplace equation. +! +! There are three choices available for data distribution: +! 1. A simple BLOCK distribution +! 2. A ditribution based on arbitrary assignment of indices to processes, +! typically from a graph partitioner +! 3. A 3D distribution in which the unit cube is partitioned +! into subcubes, each one assigned to a process. +! +! +module psb_d_pde3d_mod + + + use psb_base_mod, only : psb_dpk_, psb_ipk_, psb_lpk_, psb_desc_type,& + & psb_dspmat_type, psb_d_vect_type, dzero,& + & psb_d_base_sparse_mat, psb_d_base_vect_type, & + & psb_i_base_vect_type, psb_l_base_vect_type + + interface + function d_func_3d(x,y,z) result(val) + import :: psb_dpk_ + real(psb_dpk_), intent(in) :: x,y,z + real(psb_dpk_) :: val + end function d_func_3d + end interface + + interface psb_gen_pde3d + module procedure psb_d_gen_pde3d + end interface psb_gen_pde3d + +contains + + function d_null_func_3d(x,y,z) result(val) + + real(psb_dpk_), intent(in) :: x,y,z + real(psb_dpk_) :: val + + val = dzero + + end function d_null_func_3d + ! + ! functions parametrizing the differential equation + ! + + ! + ! Note: b1, b2 and b3 are the coefficients of the first + ! derivative of the unknown function. The default + ! we apply here is to have them zero, so that the resulting + ! matrix is symmetric/hermitian and suitable for + ! testing with CG and FCG. + ! When testing methods for non-hermitian matrices you can + ! change the B1/B2/B3 functions to e.g. done/sqrt((3*done)) + ! + function b1(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b1 + real(psb_dpk_), intent(in) :: x,y,z + b1=dzero + end function b1 + function b2(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b2 + real(psb_dpk_), intent(in) :: x,y,z + b2=dzero + end function b2 + function b3(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b3 + real(psb_dpk_), intent(in) :: x,y,z + b3=dzero + end function b3 + function c(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: c + real(psb_dpk_), intent(in) :: x,y,z + c=dzero + end function c + function a1(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a1 + real(psb_dpk_), intent(in) :: x,y,z + a1=done/80 + end function a1 + function a2(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a2 + real(psb_dpk_), intent(in) :: x,y,z + a2=done/80 + end function a2 + function a3(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a3 + real(psb_dpk_), intent(in) :: x,y,z + a3=done/80 + end function a3 + function g(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: g + real(psb_dpk_), intent(in) :: x,y,z + g = dzero + if (x == done) then + g = done + else if (x == dzero) then + g = exp(y**2-z**2) + end if + end function g + + + ! + ! subroutine to allocate and fill in the coefficient matrix and + ! the rhs. + ! + subroutine psb_d_gen_pde3d(ctxt,idim,a,bv,xv,desc_a,afmt,info,& + & f,amold,vmold,imold,partition,nrl,iv) + use psb_base_mod + use psb_util_mod +#if defined(OPENMP) + use omp_lib +#endif + ! + ! Discretizes the partial differential equation + ! + ! a1 dd(u) a2 dd(u) a3 dd(u) b1 d(u) b2 d(u) b3 d(u) + ! - ------ - ------ - ------ + ----- + ------ + ------ + c u = f + ! dxdx dydy dzdz dx dy dz + ! + ! with Dirichlet boundary conditions + ! u = g + ! + ! on the unit cube 0<=x,y,z<=1. + ! + ! + ! Note that if b1=b2=b3=c=0., the PDE is the Laplace equation. + ! + implicit none + integer(psb_ipk_) :: idim + type(psb_dspmat_type) :: a + type(psb_d_vect_type) :: xv,bv + type(psb_desc_type) :: desc_a + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: info + character(len=*) :: afmt + procedure(d_func_3d), optional :: f + class(psb_d_base_sparse_mat), optional :: amold + class(psb_d_base_vect_type), optional :: vmold + class(psb_i_base_vect_type), optional :: imold + integer(psb_ipk_), optional :: partition, nrl,iv(:) + + ! Local variables. + + integer(psb_ipk_), parameter :: nb=20 + type(psb_d_csc_sparse_mat) :: acsc + type(psb_d_coo_sparse_mat) :: acoo + type(psb_d_csr_sparse_mat) :: acsr + real(psb_dpk_) :: zt(nb),x,y,z + integer(psb_ipk_) :: nnz,nr,nlr,i,j,ii,ib,k, partition_, mysz + integer(psb_lpk_) :: m,n,glob_row,nt + integer(psb_ipk_) :: ix,iy,iz,ia,indx_owner + ! For 3D partition + ! Note: integer control variables going directly into an MPI call + ! must be 4 bytes, i.e. psb_mpk_ + integer(psb_mpk_) :: npdims(3), npp, minfo + integer(psb_ipk_) :: npx,npy,npz, iamx,iamy,iamz,mynx,myny,mynz + integer(psb_ipk_), allocatable :: bndx(:),bndy(:),bndz(:) + ! Process grid + integer(psb_ipk_) :: np, iam + integer(psb_ipk_) :: icoeff + integer(psb_lpk_), allocatable :: myidx(:) + ! deltah dimension of each grid cell + ! deltat discretization time + real(psb_dpk_) :: deltah, sqdeltah, deltah2 + real(psb_dpk_), parameter :: rhs=dzero,one=done,zero=dzero + real(psb_dpk_) :: t0, t1, t2, t3, tasb, talc, ttot, tgen, tcdasb + integer(psb_ipk_) :: err_act + procedure(d_func_3d), pointer :: f_ + character(len=20) :: name, ch_err,tmpfmt + + info = psb_success_ + name = 'create_matrix' + call psb_erractionsave(err_act) + + call psb_info(ctxt, iam, np) + + + if (present(f)) then + f_ => f + else + f_ => d_null_func_3d + end if + + deltah = done/(idim+1) + sqdeltah = deltah*deltah + deltah2 = (2*done)* deltah + + if (present(partition)) then + if ((1<= partition).and.(partition <= 3)) then + partition_ = partition + else + write(*,*) 'Invalid partition choice ',partition,' defaulting to 3' + partition_ = 3 + end if + else + partition_ = 3 + end if + + ! initialize array descriptor and sparse matrix storage. provide an + ! estimate of the number of non zeroes + + m = (1_psb_lpk_*idim)*idim*idim + n = m + nnz = ((n*7)/(np)) + if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n + t0 = psb_wtime() + select case(partition_) + case(1) + ! A BLOCK partition + if (present(nrl)) then + nr = nrl + else + ! + ! Using a simple BLOCK distribution. + ! + nt = (m+np-1)/np + nr = max(0,min(nt,m-(iam*nt))) + end if + + nt = nr + call psb_sum(ctxt,nt) + if (nt /= m) then + write(psb_err_unit,*) iam, 'Initialization error ',nr,nt,m + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + + ! + ! First example of use of CDALL: specify for each process a number of + ! contiguous rows + ! + call psb_cdall(ctxt,desc_a,info,nl=nr) + myidx = desc_a%get_global_indices() + nlr = size(myidx) + + case(2) + ! A partition defined by the user through IV + + if (present(iv)) then + if (size(iv) /= m) then + write(psb_err_unit,*) iam, 'Initialization error: wrong IV size',size(iv),m + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + else + write(psb_err_unit,*) iam, 'Initialization error: IV not present' + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + + ! + ! Second example of use of CDALL: specify for each row the + ! process that owns it + ! + call psb_cdall(ctxt,desc_a,info,vg=iv) + myidx = desc_a%get_global_indices() + nlr = size(myidx) + + case(3) + ! A 3-dimensional partition + + ! A nifty MPI function will split the process list + npdims = 0 +#if defined(SERIAL_MPI) + npdims = 1 +#else + call mpi_dims_create(np,3,npdims,info) +#endif + npx = npdims(1) + npy = npdims(2) + npz = npdims(3) + + allocate(bndx(0:npx),bndy(0:npy),bndz(0:npz)) + ! We can reuse idx2ijk for process indices as well. + call idx2ijk(iamx,iamy,iamz,iam,npx,npy,npz,base=0) + ! Now let's split the 3D cube in hexahedra + call dist1Didx(bndx,idim,npx) + mynx = bndx(iamx+1)-bndx(iamx) + call dist1Didx(bndy,idim,npy) + myny = bndy(iamy+1)-bndy(iamy) + call dist1Didx(bndz,idim,npz) + mynz = bndz(iamz+1)-bndz(iamz) + + ! How many indices do I own? + nlr = mynx*myny*mynz + allocate(myidx(nlr)) + ! Now, let's generate the list of indices I own + nr = 0 + do i=bndx(iamx),bndx(iamx+1)-1 + do j=bndy(iamy),bndy(iamy+1)-1 + do k=bndz(iamz),bndz(iamz+1)-1 + nr = nr + 1 + call ijk2idx(myidx(nr),i,j,k,idim,idim,idim) + end do + end do + end do + if (nr /= nlr) then + write(psb_err_unit,*) iam,iamx,iamy,iamz, 'Initialization error: NR vs NLR ',& + & nr,nlr,mynx,myny,mynz + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + end if + + ! + ! Third example of use of CDALL: specify for each process + ! the set of global indices it owns. + ! + call psb_cdall(ctxt,desc_a,info,vl=myidx) + + ! + ! Specify process topology + ! + block + ! + ! Use adjcncy methods + ! + integer(psb_mpk_), allocatable :: neighbours(:) + integer(psb_mpk_) :: cnt + logical, parameter :: debug_adj=.true. + if (debug_adj.and.(np > 1)) then + cnt = 0 + allocate(neighbours(np)) + if (iamx < npx-1) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx+1,iamy,iamz,npx,npy,npz,base=0) + end if + if (iamy < npy-1) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy+1,iamz,npx,npy,npz,base=0) + end if + if (iamz < npz-1) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy,iamz+1,npx,npy,npz,base=0) + end if + if (iamx >0) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx-1,iamy,iamz,npx,npy,npz,base=0) + end if + if (iamy >0) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy-1,iamz,npx,npy,npz,base=0) + end if + if (iamz >0) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy,iamz-1,npx,npy,npz,base=0) + end if + call psb_realloc(cnt, neighbours,info) + call desc_a%set_p_adjcncy(neighbours) + !write(0,*) iam,' Check on neighbours: ',desc_a%get_p_adjcncy() + end if + end block + + case default + write(psb_err_unit,*) iam, 'Initialization error: should not get here' + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end select + + + if (info == psb_success_) call psb_spall(a,desc_a,info,nnz=nnz, & + & bldmode=psb_matbld_remote_,dupl=psb_dupl_add_) + ! define rhs from boundary conditions; also build initial guess + if (info == psb_success_) call psb_geall(xv,desc_a,info) + if (info == psb_success_) call psb_geall(bv,desc_a,info,& + & bldmode=psb_matbld_remote_,dupl=psb_dupl_add_) + + call psb_barrier(ctxt) + talc = psb_wtime()-t0 + + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='allocation rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + + call psb_barrier(ctxt) + t1 = psb_wtime() + !$omp parallel shared(deltah,myidx,a,desc_a) + ! + block + integer(psb_ipk_) :: i,j,k,ii,ib,icoeff, ix,iy,iz, ith,nth + integer(psb_lpk_) :: glob_row + integer(psb_lpk_), allocatable :: irow(:),icol(:) + real(psb_dpk_), allocatable :: val(:) + real(psb_dpk_) :: x,y,z, zt(nb) +#if defined(OPENMP) + nth = omp_get_num_threads() + ith = omp_get_thread_num() +#else + nth = 1 + ith = 0 +#endif + allocate(val(20*nb),irow(20*nb),& + &icol(20*nb),stat=info) + if (info /= psb_success_ ) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + !goto 9999 + endif + + !$omp do schedule(dynamic) + ! + do ii=1, nlr, nb + if(info /= psb_success_) cycle + ib = min(nb,nlr-ii+1) + !ib = min(nb,mysz-ii+1) + icoeff = 1 + do k=1,ib + i=ii+k-1 + ! local matrix pointer + glob_row=myidx(i) + ! compute gridpoint coordinates + call idx2ijk(ix,iy,iz,glob_row,idim,idim,idim) + ! x, y, z coordinates + x = (ix-1)*deltah + y = (iy-1)*deltah + z = (iz-1)*deltah + zt(k) = f_(x,y,z) + ! internal point: build discretization + ! + ! term depending on (x-1,y,z) + ! + val(icoeff) = -a1(x,y,z)/sqdeltah-b1(x,y,z)/deltah2 + if (ix == 1) then + zt(k) = g(dzero,y,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix-1,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y-1,z) + val(icoeff) = -a2(x,y,z)/sqdeltah-b2(x,y,z)/deltah2 + if (iy == 1) then + zt(k) = g(x,dzero,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy-1,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y,z-1) + val(icoeff)=-a3(x,y,z)/sqdeltah-b3(x,y,z)/deltah2 + if (iz == 1) then + zt(k) = g(x,y,dzero)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy,iz-1,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + + ! term depending on (x,y,z) + val(icoeff)=(2*done)*(a1(x,y,z)+a2(x,y,z)+a3(x,y,z))/sqdeltah & + & + c(x,y,z) + call ijk2idx(icol(icoeff),ix,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + ! term depending on (x,y,z+1) + val(icoeff)=-a3(x,y,z)/sqdeltah+b3(x,y,z)/deltah2 + if (iz == idim) then + zt(k) = g(x,y,done)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy,iz+1,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y+1,z) + val(icoeff)=-a2(x,y,z)/sqdeltah+b2(x,y,z)/deltah2 + if (iy == idim) then + zt(k) = g(x,done,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy+1,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x+1,y,z) + val(icoeff)=-a1(x,y,z)/sqdeltah+b1(x,y,z)/deltah2 + if (ix==idim) then + zt(k) = g(done,y,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix+1,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + + end do +#if defined(OPENMP) +!!$ write(0,*) omp_get_thread_num(),' Check insertion ',& +!!$ & irow(1:icoeff-1),':',icol(1:icoeff-1) +#endif + call psb_spins(icoeff-1,irow,icol,val,a,desc_a,info) + if(info /= psb_success_) cycle + call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),bv,desc_a,info) + if(info /= psb_success_) cycle + zt(:)=dzero + call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),xv,desc_a,info) + if(info /= psb_success_) cycle + end do + !$omp end do + deallocate(val,irow,icol) + end block + !$omp end parallel + + tgen = psb_wtime()-t1 + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='insert rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + + + call psb_barrier(ctxt) + t1 = psb_wtime() + call psb_cdasb(desc_a,info,mold=imold) + tcdasb = psb_wtime()-t1 + + call psb_barrier(ctxt) + t1 = psb_wtime() + if (info == psb_success_) then + if (present(amold)) then + call psb_spasb(a,desc_a,info,mold=amold) + else + call psb_spasb(a,desc_a,info,afmt=afmt) + end if + end if + call psb_barrier(ctxt) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='asb rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + if (info == psb_success_) call psb_geasb(xv,desc_a,info,mold=vmold) + if (info == psb_success_) call psb_geasb(bv,desc_a,info,mold=vmold) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='asb rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + tasb = psb_wtime()-t1 + call psb_barrier(ctxt) + ttot = psb_wtime() - t0 + + call psb_amx(ctxt,talc) + call psb_amx(ctxt,tgen) + call psb_amx(ctxt,tasb) + call psb_amx(ctxt,ttot) + if(iam == psb_root_) then + tmpfmt = a%get_fmt() + write(psb_out_unit,'("The matrix has been generated and assembled in ",a3," format.")')& + & tmpfmt + write(psb_out_unit,'("-allocation time : ",es12.5)') talc + write(psb_out_unit,'("-coeff. gen. time : ",es12.5)') tgen + write(psb_out_unit,'("-desc asbly time : ",es12.5)') tcdasb + write(psb_out_unit,'("- mat asbly time : ",es12.5)') tasb + write(psb_out_unit,'("-total time : ",es12.5)') ttot + + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + end subroutine psb_d_gen_pde3d + function outside(i,j,k,bndx,bndy,bndz,iamx,iamy,iamz) result(res) + logical :: res + integer(psb_ipk_), intent(in) :: i,j,k,iamx,iamy,iamz + integer(psb_ipk_), intent(in) :: bndx(0:),bndy(0:),bndz(0:) + + res = (i=bndx(iamx+1)) & + & .or.(j=bndy(iamy+1)) & + & .or.(k=bndz(iamz+1)) + end function outside +end module psb_d_pde3d_mod + +program psb_d_oacc_pde3d + use psb_base_mod + use psb_prec_mod + use psb_krylov_mod + use psb_util_mod + use psb_d_pde3d_mod +#if defined(OPENACC) + use psb_oacc_mod +#endif + implicit none + + ! input parameters + character(len=20) :: kmethd, ptype + character(len=5) :: afmt, agfmt + integer(psb_ipk_) :: idim + integer(psb_epk_) :: system_size + + ! miscellaneous + real(psb_dpk_), parameter :: one = done + real(psb_dpk_) :: t1, t2, tprec + + ! sparse matrix and preconditioner + type(psb_dspmat_type) :: a, agpu + type(psb_dprec_type) :: prec + ! descriptor + type(psb_desc_type) :: desc_a + ! dense vectors + type(psb_d_vect_type), target :: xxv, bv, xg, bg +#ifdef OPENACC + type(psb_d_vect_oacc) :: vmold + type(psb_i_vect_oacc) :: imold + type(psb_d_oacc_csr_sparse_mat) :: acsrg +#endif + real(psb_dpk_), allocatable :: x0(:) + ! parallel environment + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: iam, np, nth + + ! solver parameters + integer(psb_ipk_) :: iter, itmax, itrace, istopc, irst, ipart + integer(psb_epk_) :: amatsize, precsize, descsize, d2size + real(psb_dpk_) :: err, eps + + ! Parameters for solvers in Block-Jacobi preconditioner + type ainvparms + character(len=12) :: alg, orth_alg, ilu_alg, ilut_scale + integer(psb_ipk_) :: fill, inv_fill + real(psb_dpk_) :: thresh, inv_thresh + end type ainvparms + type(ainvparms) :: parms + + ! other variables + integer(psb_ipk_) :: info, i + character(len=20) :: name, ch_err + character(len=40) :: fname + + info = psb_success_ + + call psb_init(ctxt) + call psb_info(ctxt, iam, np) + +#if defined(OPENACC) + call psb_oacc_init(ctxt) +#endif + + nth = 1 + + if (iam < 0) then + ! This should not happen, but just in case + call psb_exit(ctxt) + stop + endif + if (psb_errstatus_fatal()) goto 9999 + name = 'pde3d90_oacc' + call psb_set_errverbosity(itwo) + + ! Hello world + if (iam == psb_root_) then + write(*,*) 'Welcome to PSBLAS version: ', psb_version_string_ + write(*,*) 'This is the ', trim(name), ' sample program' + end if + + ! get parameters + call get_parms(ctxt, kmethd, ptype, afmt, agfmt, idim, istopc, itmax, itrace, irst, ipart, parms) + + ! allocate and fill in the coefficient matrix, rhs and initial guess + call psb_barrier(ctxt) + t1 = psb_wtime() + call psb_gen_pde3d(ctxt, idim, a, bv, xxv, desc_a, afmt, info, partition = ipart) + call psb_barrier(ctxt) + t2 = psb_wtime() - t1 + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'psb_gen_pde3d' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + if (iam == psb_root_) write(psb_out_unit, '("Overall matrix creation time : ", es12.5)') t2 + if (iam == psb_root_) write(psb_out_unit, '(" ")') + +#ifdef OPENACC + ! Convert matrix to GPU format + call a%cscnv(agpu, info, mold = acsrg) + if ((info /= 0) .or. (psb_get_errstatus() /= 0)) then + write(0,*) 'From cscnv ', info + call psb_error() + stop + end if + call desc_a%cnv(mold = imold) + call psb_geasb(bg, desc_a, info, scratch = .true., mold = vmold) + call psb_geasb(xg, desc_a, info, scratch = .true., mold = vmold) +#endif + + ! prepare the preconditioner. + if (iam == psb_root_) write(psb_out_unit, '("Setting preconditioner to : ", a)') ptype + call prec%init(ctxt, ptype, info) + + ! Set the options for the BJAC preconditioner + if (psb_toupper(ptype) == "BJAC") then + call prec%set('sub_solve', parms%alg, info) + select case (psb_toupper(parms%alg)) + case ("ILU") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('ilu_alg', parms%ilu_alg, info) + case ("ILUT") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('sub_iluthrs', parms%thresh, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + case ("AINV") + call prec%set('inv_thresh', parms%inv_thresh, info) + call prec%set('inv_fillin', parms%inv_fill, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + call prec%set('ainv_alg', parms%orth_alg, info) + case ("INVK") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('inv_fillin', parms%inv_fill, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + case ("INVT") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('inv_fillin', parms%inv_fill, info) + call prec%set('sub_iluthrs', parms%thresh, info) + call prec%set('inv_thresh', parms%inv_thresh, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + case default + ! Do nothing, use default setting in the init routine + end select + else + ! nothing to set for NONE or DIAG preconditioner + end if + + call psb_barrier(ctxt) + t1 = psb_wtime() + call prec%build(a, desc_a, info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'psb_precbld' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + + tprec = psb_wtime() - t1 + + call psb_amx(ctxt, tprec) + + if (iam == psb_root_) write(psb_out_unit, '("Preconditioner time : ", es12.5)') tprec + if (iam == psb_root_) write(psb_out_unit, '(" ")') + call prec%descr(info) + + ! iterative method parameters + if (iam == psb_root_) write(psb_out_unit, '("Calling iterative method ", a)') kmethd + call psb_barrier(ctxt) + t1 = psb_wtime() + eps = 1.d-6 + +#ifdef OPENACC + call psb_krylov(kmethd, agpu, prec, bv, xxv, eps, desc_a, info, & + itmax = itmax, iter = iter, err = err, itrace = itrace, istop = istopc, irst = irst) +#else + call psb_krylov(kmethd, a, prec, bv, xxv, eps, desc_a, info, & + itmax = itmax, iter = iter, err = err, itrace = itrace, istop = istopc, irst = irst) +#endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'solver routine' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + + call psb_barrier(ctxt) + t2 = psb_wtime() - t1 + call psb_amx(ctxt, t2) + amatsize = a%sizeof() + descsize = desc_a%sizeof() + precsize = prec%sizeof() + system_size = desc_a%get_global_rows() + call psb_sum(ctxt, amatsize) + call psb_sum(ctxt, descsize) + call psb_sum(ctxt, precsize) + + if (iam == psb_root_) then + write(psb_out_unit, '(" ")') + write(psb_out_unit, '("Number of processes : ", i12)') np + write(psb_out_unit, '("Number of threads : ", i12)') nth + write(psb_out_unit, '("Total number of tasks : ", i12)') nth * np + write(psb_out_unit, '("Linear system size : ", i12)') system_size + write(psb_out_unit, '("Time to solve system : ", es12.5)') t2 + write(psb_out_unit, '("Time per iteration : ", es12.5)') t2 / iter + write(psb_out_unit, '("Number of iterations : ", i12)') iter + write(psb_out_unit, '("Convergence indicator on exit : ", es12.5)') err + write(psb_out_unit, '("Info on exit : ", i12)') info + write(psb_out_unit, '("Total memory occupation for A: ", i12)') amatsize + write(psb_out_unit, '("Total memory occupation for PREC: ", i12)') precsize + write(psb_out_unit, '("Total memory occupation for DESC_A: ", i12)') descsize + write(psb_out_unit, '("Storage format for A: ", a)') a%get_fmt() + write(psb_out_unit, '("Storage format for DESC_A: ", a)') desc_a%get_fmt() + end if + + ! cleanup storage and exit + call psb_gefree(bv, desc_a, info) + call psb_gefree(xxv, desc_a, info) + call psb_spfree(a, desc_a, info) + call prec%free(info) + call psb_cdfree(desc_a, info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'free routine' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + +#ifdef OPENACC + call psb_oacc_exit() +#endif + call psb_exit(ctxt) + stop + +9999 call psb_error(ctxt) + + stop + +contains + ! get iteration parameters from standard input + subroutine get_parms(ctxt, kmethd, ptype, afmt, agfmt, idim, istopc, itmax, itrace, irst, ipart, parms) + type(psb_ctxt_type) :: ctxt + character(len = *) :: kmethd, ptype, afmt, agfmt + integer(psb_ipk_) :: idim, istopc, itmax, itrace, irst, ipart + integer(psb_ipk_) :: np, iam + integer(psb_ipk_) :: ip, inp_unit + character(len = 1024) :: filename + type(ainvparms) :: parms + + call psb_info(ctxt, iam, np) + + if (iam == 0) then + if (command_argument_count() > 0) then + call get_command_argument(1, filename) + inp_unit = 30 + open(inp_unit, file = filename, action = 'read', iostat = info) + if (info /= 0) then + write(psb_err_unit, *) 'Could not open file ', filename, ' for input' + call psb_abort(ctxt) + stop + else + write(psb_err_unit, *) 'Opened file ', trim(filename), ' for input' + end if + else + inp_unit = psb_inp_unit + end if + read(inp_unit, *) ip + if (ip >= 3) then + read(inp_unit, *) kmethd + read(inp_unit, *) ptype + read(inp_unit, *) afmt + read(inp_unit, *) agfmt + read(inp_unit, *) idim + if (ip >= 4) then + read(inp_unit, *) ipart + else + ipart = 3 + endif + if (ip >= 5) then + read(inp_unit, *) istopc + else + istopc = 1 + endif + if (ip >= 6) then + read(inp_unit, *) itmax + else + itmax = 500 + endif + if (ip >= 7) then + read(inp_unit, *) itrace + else + itrace = -1 + endif + if (ip >= 8) then + read(inp_unit, *) irst + else + irst = 1 + endif + if (ip >= 9) then + read(inp_unit, *) parms%alg + read(inp_unit, *) parms%ilu_alg + read(inp_unit, *) parms%ilut_scale + read(inp_unit, *) parms%fill + read(inp_unit, *) parms%inv_fill + read(inp_unit, *) parms%thresh + read(inp_unit, *) parms%inv_thresh + read(inp_unit, *) parms%orth_alg + else + parms%alg = 'ILU' ! Block Solver ILU, ILUT, INVK, AINVT, AORTH + parms%ilu_alg = 'NONE' ! If ILU : MILU or NONE otherwise ignored + parms%ilut_scale = 'NONE' ! If ILUT: NONE, MAXVAL, DIAG, ARWSUM, ACLSUM, ARCSUM + parms%fill = 0 ! Level of fill for forward factorization + parms%inv_fill = 1 ! Level of fill for inverse factorization (only INVK) + parms%thresh = 1E-1_psb_dpk_ ! Threshold for forward factorization + parms%inv_thresh = 1E-1_psb_dpk_ ! Threshold for inverse factorization + parms%orth_alg = 'LLK' ! What orthogonalization algorithm? + endif + + write(psb_out_unit, '("Solving matrix : ell1")') + write(psb_out_unit, & + '("Grid dimensions : ", i4, " x ", i4, " x ", i4)') & + idim, idim, idim + write(psb_out_unit, '("Number of processors : ", i0)') np + select case (ipart) + case (1) + write(psb_out_unit, '("Data distribution : BLOCK")') + case (3) + write(psb_out_unit, '("Data distribution : 3D")') + case default + ipart = 3 + write(psb_out_unit, '("Unknown data distrbution, defaulting to 3D")') + end select + write(psb_out_unit, '("Preconditioner : ", a)') ptype + if (psb_toupper(ptype) == "BJAC") then + write(psb_out_unit, '("Block subsolver : ", a)') parms%alg + select case (psb_toupper(parms%alg)) + case ('ILU') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("MILU : ", a)') parms%ilu_alg + case ('ILUT') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("Threshold : ", es12.5)') parms%thresh + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case ('INVK') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("Invese Fill in : ", i0)') parms%inv_fill + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case ('INVT') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("Threshold : ", es12.5)') parms%thresh + write(psb_out_unit, '("Invese Fill in : ", i0)') parms%inv_fill + write(psb_out_unit, '("Inverse Threshold : ", es12.5)') parms%inv_thresh + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case ('AINV', 'AORTH') + write(psb_out_unit, '("Inverse Threshold : ", es12.5)') parms%inv_thresh + write(psb_out_unit, '("Invese Fill in : ", i0)') parms%inv_fill + write(psb_out_unit, '("Orthogonalization : ", a)') parms%orth_alg + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case default + write(psb_out_unit, '("Unknown diagonal solver")') + end select + end if + write(psb_out_unit, '("Iterative method : ", a)') kmethd + write(psb_out_unit, '(" ")') + else + ! wrong number of parameter, print an error message and exit + call pr_usage(izero) + call psb_abort(ctxt) + stop 1 + endif + if (inp_unit /= psb_inp_unit) then + close(inp_unit) + end if + end if + ! broadcast parameters to all processors + call psb_bcast(ctxt, kmethd) + call psb_bcast(ctxt, afmt) + call psb_bcast(ctxt, agfmt) + call psb_bcast(ctxt, ptype) + call psb_bcast(ctxt, idim) + call psb_bcast(ctxt, ipart) + call psb_bcast(ctxt, istopc) + call psb_bcast(ctxt, itmax) + call psb_bcast(ctxt, itrace) + call psb_bcast(ctxt, irst) + call psb_bcast(ctxt, parms%alg) + call psb_bcast(ctxt, parms%fill) + call psb_bcast(ctxt, parms%inv_fill) + call psb_bcast(ctxt, parms%thresh) + call psb_bcast(ctxt, parms%inv_thresh) + call psb_bcast(ctxt, parms%orth_alg) + call psb_bcast(ctxt, parms%ilut_scale) + + return + + end subroutine get_parms + + ! print an error message + subroutine pr_usage(iout) + integer(psb_ipk_) :: iout + write(iout, *) 'incorrect parameter(s) found' + write(iout, *) ' usage: pde3d90 methd prec dim &' + write(iout, *) '[istop itmax itrace]' + write(iout, *) ' where:' + write(iout, *) ' methd: cgstab cgs rgmres bicgstabl' + write(iout, *) ' prec : bjac diag none' + write(iout, *) ' dim number of points along each axis' + write(iout, *) ' the size of the resulting linear ' + write(iout, *) ' system is dim**3' + write(iout, *) ' ipart data partition 1 3 ' + write(iout, *) ' istop stopping criterion 1, 2 ' + write(iout, *) ' itmax maximum number of iterations [500] ' + write(iout, *) ' itrace <=0 (no tracing, default) or ' + write(iout, *) ' >= 1 do tracing every itrace' + write(iout, *) ' iterations ' + end subroutine pr_usage + +end program psb_d_oacc_pde3d From 08a9744413475b756341bbd9cd47e3b28aefd069 Mon Sep 17 00:00:00 2001 From: tloloum Date: Fri, 19 Jul 2024 13:01:07 +0200 Subject: [PATCH 18/86] moving test --- test/openacc/Makefile | 7 ++++++- test/{pargen => openacc}/psb_d_oacc_pde3d.F90 | 0 test/pargen/Makefile | 7 +------ 3 files changed, 7 insertions(+), 7 deletions(-) rename test/{pargen => openacc}/psb_d_oacc_pde3d.F90 (100%) diff --git a/test/openacc/Makefile b/test/openacc/Makefile index 9d62f3cd..a2827b30 100644 --- a/test/openacc/Makefile +++ b/test/openacc/Makefile @@ -9,7 +9,7 @@ INCDIR=$(TOPDIR)/include MODDIR=$(TOPDIR)/modules EXEDIR=./runs -PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_base -lpsb_ext -lpsb_util -lpsb_krylov -lpsb_prec -lopenblas -lmetis +PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base LDLIBS=$(PSBGPULDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) $(FMFLAG)$(PSBINCDIR) $(LIBRSB_DEFINES) @@ -39,6 +39,11 @@ dir: %.o: %.c $(CC) $(CFLAGS) $(FINCLUDES) -c $< -o $@ +psb_d_oacc_pde3d: + mpifort -fallow-argument-mismatch -frecursive -g -O3 -frecursive -I../../modules/ -I. -DOPENACC -DHAVE_LAPACK -DHAVE_FLUSH_STMT -DLPK8 -DIPK4 -DMPI_MOD -c psb_d_oacc_pde3d.F90 -o psb_d_oacc_pde3d.o + $(FLINK) -fopenacc -DOPENACC psb_d_oacc_pde3d.o -o psb_d_oacc_pde3d $(PSBLAS_LIB) $(LDLIBS) + /bin/mv psb_d_oacc_pde3d $(EXEDIR) + clean: /bin/rm -fr *.o *.mod $(EXEDIR)/* diff --git a/test/pargen/psb_d_oacc_pde3d.F90 b/test/openacc/psb_d_oacc_pde3d.F90 similarity index 100% rename from test/pargen/psb_d_oacc_pde3d.F90 rename to test/openacc/psb_d_oacc_pde3d.F90 diff --git a/test/pargen/Makefile b/test/pargen/Makefile index 9b720ac2..c0a1c375 100644 --- a/test/pargen/Makefile +++ b/test/pargen/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(INSTALLDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_openacc -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such @@ -25,11 +25,6 @@ psb_d_pde3d: psb_d_pde3d.o $(FLINK) psb_d_pde3d.o -o psb_d_pde3d $(PSBLAS_LIB) $(LDLIBS) /bin/mv psb_d_pde3d $(EXEDIR) -psb_d_oacc_pde3d: - mpifort -fallow-argument-mismatch -frecursive -g -O3 -frecursive -I../../modules/ -I. -DOPENACC -DHAVE_LAPACK -DHAVE_FLUSH_STMT -DLPK8 -DIPK4 -DMPI_MOD -c psb_d_oacc_pde3d.F90 -o psb_d_oacc_pde3d.o - $(FLINK) -fopenacc -DOPENACC psb_d_oacc_pde3d.o -o psb_d_oacc_pde3d $(PSBLAS_LIB) $(LDLIBS) - /bin/mv psb_d_oacc_pde3d $(EXEDIR) - psb_s_pde3d: psb_s_pde3d.o $(FLINK) psb_s_pde3d.o -o psb_s_pde3d $(PSBLAS_LIB) $(LDLIBS) /bin/mv psb_s_pde3d $(EXEDIR) From 162b2fc78fee4bf3596d5098af69ea10e5a3f760 Mon Sep 17 00:00:00 2001 From: tloloum Date: Mon, 22 Jul 2024 15:27:33 +0200 Subject: [PATCH 19/86] beginning of oacc_ell --- openacc/Makefile | 4 +- openacc/psb_d_oacc_ell_mat_mod.F90 | 218 +++++++++++++++++++++++++++++ 2 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 openacc/psb_d_oacc_ell_mat_mod.F90 diff --git a/openacc/Makefile b/openacc/Makefile index 3a752ac7..cba6b1f7 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -22,6 +22,7 @@ FOBJS= psb_i_oacc_vect_mod.o \ psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ + psb_d_oacc_ell_mat_mod.o \ psb_oacc_mod.o psb_oacc_env_mod.o @@ -48,6 +49,7 @@ psb_oacc_mod.o : psb_i_oacc_vect_mod.o \ psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ + psb_d_oacc_ell_mat_mod.o \ psb_oacc_env_mod.o psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ @@ -58,7 +60,7 @@ psb_s_oacc_csr_mat_mod.o: psb_s_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o: psb_d_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o: psb_c_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o: psb_z_oacc_vect_mod.o - +psb_d_oacc_ell_mat_mod.o: psb_d_oacc_vect_mod.o clean: cclean iclean diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..846707af --- /dev/null +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -0,0 +1,218 @@ +module psb_d_oacc_ell_mat_mod + use iso_c_binding + use psb_d_mat_mod + use psb_d_ell_mat_mod + use psb_d_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_ell_sparse_mat) :: psb_d_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => d_oacc_ell_sizeof + procedure, pass(a) :: is_host => d_oacc_ell_is_host + procedure, pass(a) :: is_sync => d_oacc_ell_is_sync + procedure, pass(a) :: is_dev => d_oacc_ell_is_dev + procedure, pass(a) :: set_host => d_oacc_ell_set_host + procedure, pass(a) :: set_sync => d_oacc_ell_set_sync + procedure, pass(a) :: set_dev => d_oacc_ell_set_dev + procedure, pass(a) :: sync_space => d_oacc_ell_sync_space + procedure, pass(a) :: sync => d_oacc_ell_sync + procedure, pass(a) :: free => d_oacc_ell_free + + end type psb_d_oacc_ell_sparse_mat + + contains + + subroutine d_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + + call a%psb_d_ell_sparse_mat%free() + + return + end subroutine d_oacc_ell_free + + + function d_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function d_oacc_ell_sizeof + + subroutine d_oacc_ell_sync_space(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call d_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + + contains + subroutine d_oacc_create_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine d_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + end subroutine d_oacc_ell_sync_space + + + + function d_oacc_ell_is_host(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_ell_is_host + + function d_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_ell_is_sync + + function d_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_ell_is_dev + + subroutine d_oacc_ell_set_host(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_ell_set_host + + subroutine d_oacc_ell_set_sync(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_ell_set_sync + + subroutine d_oacc_ell_set_dev(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_ell_set_dev + + function d_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELL_oacc' + end function d_oacc_ell_get_fmt + + subroutine d_oacc_ell_sync(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call d_oacc_ell_to_host(a%val) + call i_oacc_ell_to_host(a%ja) + call i_oacc_ell_to_host_scalar(a%irn) + call i_oacc_ell_to_host_scalar(a%idiag) + else if (a%is_host()) then + call d_oacc_ell_to_dev(a%val) + call i_oacc_ell_to_dev(a%ja) + call i_oacc_ell_to_dev_scalar(a%irn) + call i_oacc_ell_to_dev_scalar(a%idiag) + end if + call tmpa%set_sync() + end subroutine d_oacc_ell_sync + + subroutine d_oacc_ell_to_host(v) + implicit none + real(psb_dpk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine d_oacc_ell_to_host + + subroutine d_oacc_ell_to_host_scalar(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine d_oacc_ell_to_host_scalar + + subroutine i_oacc_ell_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev + + subroutine i_oacc_ell_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev_scalar + + subroutine i_oacc_ell_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host + + subroutine i_oacc_ell_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host_scalar + + +end module psb_d_oacc_ell_mat_mod \ No newline at end of file From 10ec5eafabe405d9ee2ebb1c0be5a9bdca13f9c8 Mon Sep 17 00:00:00 2001 From: tloloum Date: Fri, 26 Jul 2024 09:56:32 +0200 Subject: [PATCH 20/86] ELL oacc impl --- openacc/impl/Makefile | 15 ++- openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 | 47 +++++++ openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 | 78 +++++++++++ openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 | 24 ++++ openacc/impl/psb_d_oacc_ell_csmm.F90 | 86 ++++++++++++ openacc/impl/psb_d_oacc_ell_csmv.F90 | 82 ++++++++++++ openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 | 85 ++++++++++++ openacc/impl/psb_d_oacc_ell_mold.F90 | 34 +++++ openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 | 25 ++++ openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 | 24 ++++ openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 | 28 ++++ openacc/impl/psb_d_oacc_ell_scal.F90 | 58 ++++++++ openacc/impl/psb_d_oacc_ell_scals.F90 | 39 ++++++ openacc/impl/psb_d_oacc_ell_vect_mv.F90 | 66 +++++++++ openacc/psb_d_oacc_ell_mat_mod.F90 | 125 ++++++++++++++++++ 15 files changed, 815 insertions(+), 1 deletion(-) create mode 100644 openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_csmm.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_csmv.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_mold.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_scal.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_scals.F90 create mode 100644 openacc/impl/psb_d_oacc_ell_vect_mv.F90 diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index 32f104dd..a38c703d 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -70,7 +70,20 @@ psb_z_oacc_csr_mv_from_coo.o \ psb_z_oacc_csr_mv_from_fmt.o \ psb_z_oacc_csr_mold.o \ psb_z_oacc_mlt_v_2.o \ -psb_z_oacc_mlt_v.o +psb_z_oacc_mlt_v.o \ +psb_d_oacc_ell_vect_mv.o \ +psb_d_oacc_ell_inner_vect_sv.o \ +psb_d_oacc_ell_csmm.o \ +psb_d_oacc_ell_csmv.o \ +psb_d_oacc_ell_scals.o \ +psb_d_oacc_ell_scal.o \ +psb_d_oacc_ell_reallocate_nz.o \ +psb_d_oacc_ell_allocate_mnnz.o \ +psb_d_oacc_ell_cp_from_coo.o \ +psb_d_oacc_ell_cp_from_fmt.o \ +psb_d_oacc_ell_mv_from_coo.o \ +psb_d_oacc_ell_mv_from_fmt.o \ +psb_d_oacc_ell_mold.o \ objs: $(OBJS) diff --git a/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 new file mode 100644 index 00000000..4923e12c --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 @@ -0,0 +1,47 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_d_ell_sparse_mat%allocate(m, n, nz_) + + if (.not.allocated(a%val)) then + allocate(a%val(m, nz_)) + allocate(a%ja(m, nz_)) + allocate(a%irn(m)) + allocate(a%idiag(m)) + end if + + a%val = 0.0_psb_dpk_ + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_allocate_mnnz +end submodule psb_d_oacc_ell_allocate_mnnz_impl diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 new file mode 100644 index 00000000..560d3451 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 @@ -0,0 +1,78 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_cp_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, j, k, row, col, nz_per_row + real(psb_dpk_) :: value + integer(psb_ipk_), allocatable :: row_counts(:) + integer(psb_ipk_) :: hacksize, nza + + info = psb_success_ + hacksize = 1 + + call a%set_nrows(b%get_nrows()) + call a%set_ncols(b%get_ncols()) + nz_per_row = a%nzt + + if (.not.allocated(a%val)) then + allocate(a%val(a%get_nrows(), nz_per_row)) + allocate(a%ja(a%get_nrows(), nz_per_row)) + allocate(a%irn(a%get_nrows())) + allocate(a%idiag(a%get_nrows())) + end if + a%val = 0.0_psb_dpk_ + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + allocate(row_counts(a%get_nrows())) + row_counts = 0 + + nza = b%get_nzeros() + + !$acc parallel loop present(b, a, row_counts) + do k = 1, nza + row = b%ia(k) + col = b%ja(k) + value = b%val(k) + if (row_counts(row) < nz_per_row) then + a%val(row, row_counts(row) + 1) = value + a%ja(row, row_counts(row) + 1) = col + row_counts(row) = row_counts(row) + 1 + else + info = psb_err_invalid_mat_state_ + goto 9999 + end if + end do + + a%irn = row_counts + + !$acc parallel loop present(a) + do i = 1, a%get_nrows() + do j = 1, nz_per_row + if (a%ja(i, j) == i) then + a%idiag(i) = j + exit + end if + end do + end do + + deallocate(row_counts) + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_ell_cp_from_coo +end submodule psb_d_oacc_ell_cp_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 new file mode 100644 index 00000000..b62a40d5 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_cp_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_d_ell_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + end select + + end subroutine psb_d_oacc_ell_cp_from_fmt +end submodule psb_d_oacc_ell_cp_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_ell_csmm.F90 b/openacc/impl/psb_d_oacc_ell_csmm.F90 new file mode 100644 index 00000000..6515a306 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_csmm_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, k, nxy, nzt + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_ell_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_d_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, n + do k = 1, nzt + y(i, j) = y(i, j) + alpha * a%val(i, k) * x(a%ja(i, k), j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_csmm +end submodule psb_d_oacc_ell_csmm_impl diff --git a/openacc/impl/psb_d_oacc_ell_csmv.F90 b/openacc/impl/psb_d_oacc_ell_csmv.F90 new file mode 100644 index 00000000..8d5e2aaa --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_csmv.F90 @@ -0,0 +1,82 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_csmv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, nzt + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_ell_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_d_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nzt = a%nzt + + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop present(a, x, y) + do i = 1, m + do j = 1, nzt + y(i) = y(i) + alpha * a%val(i, j) * x(a%ja(i, j)) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_csmv +end submodule psb_d_oacc_ell_csmv_impl diff --git a/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 new file mode 100644 index 00000000..2c5563ce --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 @@ -0,0 +1,85 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_ell_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nzt + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_d_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_d_vect_oacc) + select type(yy => y) + type is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_d_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_d_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_d_oacc_ell_inner_vect_sv +end submodule psb_d_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_d_oacc_ell_mold.F90 b/openacc/impl/psb_d_oacc_ell_mold.F90 new file mode 100644 index 00000000..767e7f13 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_mold(a, b, info) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_d_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_d_oacc_ell_mold +end submodule psb_d_oacc_ell_mold_impl diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..688d182b --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_d_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_ell_mv_from_coo +end submodule psb_d_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..8bda6e6e --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_d_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + end select + + end subroutine psb_d_oacc_ell_mv_from_fmt +end submodule psb_d_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..11332472 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='d_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_ell_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_reallocate_nz +end submodule psb_d_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_d_oacc_ell_scal.F90 b/openacc/impl/psb_d_oacc_ell_scal.F90 new file mode 100644 index 00000000..39948d5f --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_scal +end submodule psb_d_oacc_ell_scal_impl diff --git a/openacc/impl/psb_d_oacc_ell_scals.F90 b/openacc/impl/psb_d_oacc_ell_scals.F90 new file mode 100644 index 00000000..a6292b72 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_scals(d, a, info) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_scals +end submodule psb_d_oacc_ell_scals_impl diff --git a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..ebcdb405 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 @@ -0,0 +1,66 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nzt + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nzt + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_d_oacc_ell_vect_mv +end submodule psb_d_oacc_ell_vect_mv_impl diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 846707af..8c5946ba 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -22,9 +22,134 @@ module psb_d_oacc_ell_mat_mod procedure, pass(a) :: sync_space => d_oacc_ell_sync_space procedure, pass(a) :: sync => d_oacc_ell_sync procedure, pass(a) :: free => d_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_d_oacc_ell_csmv + procedure, pass(a) :: scals => psb_d_oacc_ell_scals + procedure, pass(a) :: scalv => psb_d_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_ell_mold end type psb_d_oacc_ell_sparse_mat + interface + module subroutine psb_d_oacc_ell_mold(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mold + end interface + + interface + module subroutine psb_d_oacc_ell_cp_from_fmt(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_ell_mv_from_coo(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_ell_mv_from_fmt(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_d_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_csmm + end interface + + interface + module subroutine psb_d_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_csmv + end interface + + interface + module subroutine psb_d_oacc_ell_scals(d, a, info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_scals + end interface + + interface + module subroutine psb_d_oacc_ell_scal(d,a,info,side) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_ell_scal + end interface + + interface + module subroutine psb_d_oacc_ell_reallocate_nz(nz,a) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_ell_cp_from_coo(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_cp_from_coo + end interface + contains subroutine d_oacc_ell_free(a) From e6fa1d17a2f134b792f7968d2a95bb61a4a95e84 Mon Sep 17 00:00:00 2001 From: tloloum Date: Tue, 30 Jul 2024 14:25:01 +0200 Subject: [PATCH 21/86] oacc hll --- openacc/Makefile | 7 +- openacc/impl/Makefile | 13 + openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 | 53 +++ openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 | 85 +++++ openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 | 24 ++ openacc/impl/psb_d_oacc_hll_csmm.F90 | 86 +++++ openacc/impl/psb_d_oacc_hll_csmv.F90 | 83 +++++ openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 | 86 +++++ openacc/impl/psb_d_oacc_hll_mold.F90 | 34 ++ openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 | 25 ++ openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 | 24 ++ openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 | 29 ++ openacc/impl/psb_d_oacc_hll_scal.F90 | 59 +++ openacc/impl/psb_d_oacc_hll_scals.F90 | 39 ++ openacc/impl/psb_d_oacc_hll_vect_mv.F90 | 67 ++++ openacc/psb_d_oacc_hll_mat_mod.F90 | 352 ++++++++++++++++++ 16 files changed, 1063 insertions(+), 3 deletions(-) create mode 100644 openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_csmm.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_csmv.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_mold.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_scal.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_scals.F90 create mode 100644 openacc/impl/psb_d_oacc_hll_vect_mv.F90 create mode 100644 openacc/psb_d_oacc_hll_mat_mod.F90 diff --git a/openacc/Makefile b/openacc/Makefile index cba6b1f7..e7e99072 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -22,7 +22,7 @@ FOBJS= psb_i_oacc_vect_mod.o \ psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ - psb_d_oacc_ell_mat_mod.o \ + psb_d_oacc_ell_mat_mod.o psb_d_oacc_hll_mat_mod.o\ psb_oacc_mod.o psb_oacc_env_mod.o @@ -49,7 +49,7 @@ psb_oacc_mod.o : psb_i_oacc_vect_mod.o \ psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ - psb_d_oacc_ell_mat_mod.o \ + psb_d_oacc_ell_mat_mod.o psb_d_oacc_hll_mat_mod.o \ psb_oacc_env_mod.o psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ @@ -61,10 +61,11 @@ psb_d_oacc_csr_mat_mod.o: psb_d_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o: psb_c_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o: psb_z_oacc_vect_mod.o psb_d_oacc_ell_mat_mod.o: psb_d_oacc_vect_mod.o +psb_d_oacc_hll_mat_mod.o: psb_d_oacc_vect_mod.o clean: cclean iclean - /bin/rm -f $(FOBJS) *$(.mod) *.a + /bin/rm -f $(FOBJS) *$(.mod) *.a *.smod veryclean: clean cclean: /bin/rm -f $(COBJS) diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index a38c703d..c0a157e8 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -84,6 +84,19 @@ psb_d_oacc_ell_cp_from_fmt.o \ psb_d_oacc_ell_mv_from_coo.o \ psb_d_oacc_ell_mv_from_fmt.o \ psb_d_oacc_ell_mold.o \ +psb_d_oacc_hll_mold.o \ +psb_d_oacc_hll_mv_from_fmt.o \ +psb_d_oacc_hll_mv_from_coo.o \ +psb_d_oacc_hll_cp_from_fmt.o \ +psb_d_oacc_hll_cp_from_coo.o \ +psb_d_oacc_hll_allocate_mnnz.o \ +psb_d_oacc_hll_reallocate_nz.o \ +psb_d_oacc_hll_scal.o \ +psb_d_oacc_hll_scals.o \ +psb_d_oacc_hll_csmv.o \ +psb_d_oacc_hll_csmm.o \ +psb_d_oacc_hll_inner_vect_sv.o \ +psb_d_oacc_hll_vect_mv.o \ objs: $(OBJS) diff --git a/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..909ee90b --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,53 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_d_hll_sparse_mat%allocate(m, n, nz_) + + hksz = a%hksz + nhacks = (m + hksz - 1) / hksz + + if (.not.allocated(a%val)) then + allocate(a%val(nz_ * m)) + allocate(a%ja(nz_ * m)) + allocate(a%irn(m)) + allocate(a%idiag(m)) + allocate(a%hkoffs(nhacks)) + end if + + a%val = 0.0_psb_dpk_ + a%ja = -1 + a%irn = 0 + a%idiag = 0 + a%hkoffs = 0 + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_allocate_mnnz +end submodule psb_d_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..fbe793d5 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,85 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, j, k, row, col, nz_per_row + real(psb_dpk_) :: value + integer(psb_ipk_), allocatable :: row_counts(:) + integer(psb_ipk_) :: hacksize, nza + + info = psb_success_ + hacksize = 32 ! Assuming a default hack size of 32 + + call a%set_nrows(b%get_nrows()) + call a%set_ncols(b%get_ncols()) + nz_per_row = a%nzt + + if (.not.allocated(a%val)) then + allocate(a%val(nz_per_row * a%get_nrows())) + allocate(a%ja(nz_per_row * a%get_nrows())) + allocate(a%irn(a%get_nrows())) + allocate(a%idiag(a%get_nrows())) + allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) + end if + a%val = 0.0_psb_dpk_ + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + allocate(row_counts(a%get_nrows())) + row_counts = 0 + + nza = b%get_nzeros() + + !$acc parallel loop present(b, a, row_counts) + do k = 1, nza + row = b%ia(k) + col = b%ja(k) + value = b%val(k) + if (row_counts(row) < nz_per_row) then + a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value + a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col + row_counts(row) = row_counts(row) + 1 + else + info = psb_err_invalid_mat_state_ + goto 9999 + end if + end do + + a%irn = row_counts + + !$acc parallel loop present(a) + do i = 1, a%get_nrows() + do j = 1, nz_per_row + if (a%ja(j + (i - 1) * nz_per_row) == i) then + a%idiag(i) = j + exit + end if + end do + end do + + ! Calculate hkoffs for HLL format + !$acc parallel loop present(a) + do i = 1, size(a%hkoffs) + a%hkoffs(i) = (i - 1) * hacksize + end do + + deallocate(row_counts) + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_hll_cp_from_coo +end submodule psb_d_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..fb99737c --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_d_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_d_oacc_hll_cp_from_fmt +end submodule psb_d_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_hll_csmm.F90 b/openacc/impl/psb_d_oacc_hll_csmm.F90 new file mode 100644 index 00000000..2dd6b53b --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_csmm_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_hll_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_d_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop present(a, x, y) + do j = 1, nxy + do k = 1, nhacks + do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 + y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_csmm +end submodule psb_d_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_d_oacc_hll_csmv.F90 b/openacc/impl/psb_d_oacc_hll_csmv.F90 new file mode 100644 index 00000000..504cad19 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_csmv.F90 @@ -0,0 +1,83 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_csmv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, hksz, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_hll_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_d_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_csmv +end submodule psb_d_oacc_hll_csmv_impl diff --git a/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..ae1c3c94 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_d_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_d_vect_oacc) + select type(yy => y) + type is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_d_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_d_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_d_oacc_hll_inner_vect_sv +end submodule psb_d_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_d_oacc_hll_mold.F90 b/openacc/impl/psb_d_oacc_hll_mold.F90 new file mode 100644 index 00000000..89ead65b --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_mold(a, b, info) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_d_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_d_oacc_hll_mold +end submodule psb_d_oacc_hll_mold_impl diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..7bf22c13 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_d_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_hll_mv_from_coo +end submodule psb_d_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..e6615365 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_d_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_d_oacc_hll_mv_from_fmt +end submodule psb_d_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..412409d1 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='d_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_hll_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_reallocate_nz +end submodule psb_d_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_d_oacc_hll_scal.F90 b/openacc/impl/psb_d_oacc_hll_scal.F90 new file mode 100644 index 00000000..50210f4b --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_scal.F90 @@ -0,0 +1,59 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_scal +end submodule psb_d_oacc_hll_scal_impl diff --git a/openacc/impl/psb_d_oacc_hll_scals.F90 b/openacc/impl/psb_d_oacc_hll_scals.F90 new file mode 100644 index 00000000..ccb6b1b8 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_scals(d, a, info) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_scals +end submodule psb_d_oacc_hll_scals_impl diff --git a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..875b646f --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 @@ -0,0 +1,67 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k + real(psb_dpk_) :: tmp + + info = 0 + + !$acc parallel loop present(val, ja, hkoffs, x, y) + do i = 1, nhacks + do k = 0, hksz - 1 + idx = hkoffs(i) + k + if (idx <= hkoffs(i + 1) - 1) then + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz + if (ja(j) > 0) then + tmp = tmp + val(j) * x(ja(j)) + end if + end do + y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) + end if + end do + end do + end subroutine inner_spmv + + end subroutine psb_d_oacc_hll_vect_mv +end submodule psb_d_oacc_hll_vect_mv_impl diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..530af94a --- /dev/null +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -0,0 +1,352 @@ +module psb_d_oacc_hll_mat_mod + use iso_c_binding + use psb_d_mat_mod + use psb_d_hll_mat_mod + use psb_d_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_hll_sparse_mat) :: psb_d_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => d_oacc_hll_sizeof + procedure, pass(a) :: is_host => d_oacc_hll_is_host + procedure, pass(a) :: is_sync => d_oacc_hll_is_sync + procedure, pass(a) :: is_dev => d_oacc_hll_is_dev + procedure, pass(a) :: set_host => d_oacc_hll_set_host + procedure, pass(a) :: set_sync => d_oacc_hll_set_sync + procedure, pass(a) :: set_dev => d_oacc_hll_set_dev + procedure, pass(a) :: sync_space => d_oacc_hll_sync_space + procedure, pass(a) :: sync => d_oacc_hll_sync + procedure, pass(a) :: free => d_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_d_oacc_hll_csmv + procedure, pass(a) :: scals => psb_d_oacc_hll_scals + procedure, pass(a) :: scalv => psb_d_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_hll_mold + + end type psb_d_oacc_hll_sparse_mat + + interface + module subroutine psb_d_oacc_hll_mold(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mold + end interface + + interface + module subroutine psb_d_oacc_hll_cp_from_fmt(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_hll_mv_from_coo(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_hll_mv_from_fmt(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_d_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_csmm + end interface + + interface + module subroutine psb_d_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_csmv + end interface + + interface + module subroutine psb_d_oacc_hll_scals(d, a, info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_scals + end interface + + interface + module subroutine psb_d_oacc_hll_scal(d,a,info,side) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_hll_scal + end interface + + interface + module subroutine psb_d_oacc_hll_reallocate_nz(nz,a) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_hll_cp_from_coo(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_cp_from_coo + end interface + + contains + + subroutine d_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + if (allocated(a%hkoffs)) then + !$acc exit data delete(a%hkoffs) + end if + + call a%psb_d_hll_sparse_mat%free() + + return + end subroutine d_oacc_hll_free + + function d_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function d_oacc_hll_sizeof + + + + function d_oacc_hll_is_host(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_hll_is_host + + function d_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_hll_is_sync + + function d_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_hll_is_dev + + subroutine d_oacc_hll_set_host(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_hll_set_host + + subroutine d_oacc_hll_set_sync(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_hll_set_sync + + subroutine d_oacc_hll_set_dev(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_hll_set_dev + + function d_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLL_oacc' + end function d_oacc_hll_get_fmt + + subroutine d_oacc_hll_sync_space(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call d_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + if (allocated(a%hkoffs)) then + call i_oacc_create_dev_scalar(a%hkoffs) + end if + + contains + subroutine d_oacc_create_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine d_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + + end subroutine d_oacc_hll_sync_space + + + subroutine d_oacc_hll_sync(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call d_oacc_hll_to_host(a%val) + call i_oacc_hll_to_host(a%ja) + call i_oacc_hll_to_host_scalar(a%irn) + call i_oacc_hll_to_host_scalar(a%idiag) + call i_oacc_hll_to_host_scalar(a%hkoffs) + else if (a%is_host()) then + call d_oacc_hll_to_dev(a%val) + call i_oacc_hll_to_dev(a%ja) + call i_oacc_hll_to_dev_scalar(a%irn) + call i_oacc_hll_to_dev_scalar(a%idiag) + call i_oacc_hll_to_dev_scalar(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine d_oacc_hll_sync + + subroutine d_oacc_hll_to_host(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine d_oacc_hll_to_host + + subroutine d_oacc_hll_to_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine d_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host + + subroutine i_oacc_hll_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host_scalar + + subroutine i_oacc_hll_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev_scalar + + +end module psb_d_oacc_hll_mat_mod \ No newline at end of file From 55d1067ec2bed450305073a174b4364ce590129e Mon Sep 17 00:00:00 2001 From: tloloum Date: Tue, 6 Aug 2024 11:42:52 +0200 Subject: [PATCH 22/86] collapse loop --- openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 | 2 +- openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 | 2 +- openacc/impl/psb_d_oacc_hll_csmv.F90 | 5 ++++- openacc/impl/psb_d_oacc_hll_scal.F90 | 9 ++++++--- openacc/impl/psb_d_oacc_hll_scals.F90 | 3 ++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 index 560d3451..4e8402e7 100644 --- a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 @@ -47,7 +47,7 @@ contains row_counts(row) = row_counts(row) + 1 else info = psb_err_invalid_mat_state_ - goto 9999 + !goto 9999 end if end do diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 index fbe793d5..4a258c74 100644 --- a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 @@ -48,7 +48,7 @@ contains row_counts(row) = row_counts(row) + 1 else info = psb_err_invalid_mat_state_ - goto 9999 + !goto 9999 end if end do diff --git a/openacc/impl/psb_d_oacc_hll_csmv.F90 b/openacc/impl/psb_d_oacc_hll_csmv.F90 index 504cad19..bccd3d6d 100644 --- a/openacc/impl/psb_d_oacc_hll_csmv.F90 +++ b/openacc/impl/psb_d_oacc_hll_csmv.F90 @@ -64,8 +64,11 @@ contains do i = 1, m y(i) = beta * y(i) end do - +#if (__GNUC__ <= 13) + !$acc parallel loop present(a, x, y) +#else !$acc parallel loop collapse(2) present(a, x, y) +#endif do i = 1, nhacks do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) diff --git a/openacc/impl/psb_d_oacc_hll_scal.F90 b/openacc/impl/psb_d_oacc_hll_scal.F90 index 50210f4b..c0c284ef 100644 --- a/openacc/impl/psb_d_oacc_hll_scal.F90 +++ b/openacc/impl/psb_d_oacc_hll_scal.F90 @@ -23,7 +23,8 @@ contains if (present(side)) then if (side == 'L') then - !$acc parallel loop collapse(2) present(a, d) + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) do i = 1, nhacks do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 @@ -31,7 +32,8 @@ contains end do end do else if (side == 'R') then - !$acc parallel loop collapse(2) present(a, d) + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) do i = 1, nhacks do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 a%val(j) = a%val(j) * d(a%ja(j)) @@ -39,7 +41,8 @@ contains end do end if else - !$acc parallel loop collapse(2) present(a, d) + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) do i = 1, nhacks do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) diff --git a/openacc/impl/psb_d_oacc_hll_scals.F90 b/openacc/impl/psb_d_oacc_hll_scals.F90 index ccb6b1b8..1e3457b5 100644 --- a/openacc/impl/psb_d_oacc_hll_scals.F90 +++ b/openacc/impl/psb_d_oacc_hll_scals.F90 @@ -20,7 +20,8 @@ contains nhacks = (a%get_nrows() + hksz - 1) / hksz nzt = a%nzt - !$acc parallel loop collapse(2) present(a) + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) do i = 1, nhacks do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 a%val(j) = a%val(j) * d From a28d3b048b38248729dd9d59388553138cb71fb3 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 7 Aug 2024 10:30:11 +0200 Subject: [PATCH 23/86] Fix configure for OpenACC (added warning message) --- config/pac.m4 | 50 -------------------------------------------------- configure | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- configure.ac | 12 +++++++++++- 3 files changed, 61 insertions(+), 52 deletions(-) diff --git a/config/pac.m4 b/config/pac.m4 index c23de4fb..83356540 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -2234,56 +2234,6 @@ AC_HELP_STRING([--with-cudacc], [A comma-separated list of CCs to compile to, fo [pac_cv_cudacc='']) ]) -AC_DEFUN(PAC_ARG_WITH_LIBRSB, - [SAVE_LIBS="$LIBS" - SAVE_CPPFLAGS="$CPPFLAGS" - - AC_ARG_WITH(librsb, - AC_HELP_STRING([--with-librsb], [The directory for LIBRSB, for example, - --with-librsb=/opt/packages/librsb]), - [pac_cv_librsb_dir=$withval], - [pac_cv_librsb_dir='']) - - if test "x$pac_cv_librsb_dir" != "x"; then - LIBS="-L$pac_cv_librsb_dir $LIBS" - RSB_INCLUDES="-I$pac_cv_librsb_dir" - # CPPFLAGS="$GPU_INCLUDES $CUDA_INCLUDES $CPPFLAGS" - RSB_LIBDIR="-L$pac_cv_librsb_dir" - fi - #AC_MSG_CHECKING([librsb dir $pac_cv_librsb_dir]) - AC_CHECK_HEADER([$pac_cv_librsb_dir/rsb.h], - [pac_rsb_header_ok=yes], - [pac_rsb_header_ok=no; RSB_INCLUDES=""]) - - if test "x$pac_rsb_header_ok" == "xyes" ; then - RSB_LIBS="-lrsb $RSB_LIBDIR" - # LIBS="$GPU_LIBS $CUDA_LIBS -lm $LIBS"; - # AC_MSG_CHECKING([for spgpuCreate in $GPU_LIBS]) - # AC_TRY_LINK_FUNC(spgpuCreate, - # [pac_cv_have_spgpu=yes;pac_gpu_lib_ok=yes; ], - # [pac_cv_have_spgpu=no;pac_gpu_lib_ok=no; GPU_LIBS=""]) - # AC_MSG_RESULT($pac_gpu_lib_ok) - # if test "x$pac_cv_have_spgpu" == "xyes" ; then - # AC_MSG_NOTICE([Have found SPGPU]) - RSBLIBNAME="librsb.a"; - LIBRSB_DIR="$pac_cv_librsb_dir"; - # SPGPU_DEFINES="-DHAVE_SPGPU"; - LIBRSB_INCDIR="$LIBRSB_DIR"; - LIBRSB_INCLUDES="-I$LIBRSB_INCDIR"; - LIBRSB_LIBS="-lrsb -L$LIBRSB_DIR"; - # CUDA_DIR="$pac_cv_cuda_dir"; - LIBRSB_DEFINES="-DHAVE_RSB"; - LRSB=-lpsb_rsb - # CUDA_INCLUDES="-I$pac_cv_cuda_dir/include" - # CUDA_LIBDIR="-L$pac_cv_cuda_dir/lib64 -L$pac_cv_cuda_dir/lib" - FDEFINES="$LIBRSB_DEFINES $psblas_cv_define_prepend $FDEFINES"; - CDEFINES="$LIBRSB_DEFINES $CDEFINES";#CDEFINES="-DHAVE_SPGPU -DHAVE_CUDA $CDEFINES"; - fi -# fi -LIBS="$SAVE_LIBS" -CPPFLAGS="$SAVE_CPPFLAGS" -]) -dnl dnl @synopsis PAC_CHECK_CUDA_VERSION dnl diff --git a/configure b/configure index 1c3c80c6..04408e2a 100755 --- a/configure +++ b/configure @@ -653,6 +653,12 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +LRSB +LIBRSB_DEFINES +LIBRSB_DIR +LIBRSB_INCDIR +LIBRSB_INCLUDES +LIBRSB_LIBS LCUDA CUDALD CUDAD @@ -5841,7 +5847,7 @@ fi # we just gave the user the chance to append values to these variables -############################################################################### + if test -n "$ac_tool_prefix"; then @@ -10985,6 +10991,27 @@ fi #FLINK="$FLINK $FCOPENACC"; fi +############################################################################### +LIBRSB_DIR="$pac_cv_librsb_dir"; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBRSB install dir" >&5 +printf %s "checking for LIBRSB install dir... " >&6; } +case $LIBRSB_DIR in + /*) ;; + *) esac +pac_cv_status_file="$LIBRSB_DIR/librsb.a" +if test ! -f "$pac_cv_status_file" ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + #AC_MSG_ERROR([Could not find an installation in $LIBRSB_DIR.]) +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBRSB_DIR" >&5 +printf "%s\n" "$LIBRSB_DIR" >&6; } + RSBTARGETLIB=rsbd; + RSBTARGETOBJ=rsbobj; +fi + + + ############################################################################### @@ -11082,6 +11109,12 @@ FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) + + + + + + @@ -12422,6 +12455,9 @@ fi CUDA : ${HAVE_CUDA} CUDA_CC : ${pac_cv_cudacc} + OPENACC : ${pac_cv_openacc} + FCOPENACC : ${FCOPENACC} + BLAS : ${BLAS_LIBS} METIS usable : ${psblas_cv_have_metis} @@ -12455,6 +12491,9 @@ printf "%s\n" "$as_me: CUDA : ${HAVE_CUDA} CUDA_CC : ${pac_cv_cudacc} + OPENACC : ${pac_cv_openacc} + FCOPENACC : ${FCOPENACC} + BLAS : ${BLAS_LIBS} METIS usable : ${psblas_cv_have_metis} @@ -12471,6 +12510,16 @@ printf "%s\n" "$as_me: If you are satisfied, run 'make' to build ${PACKAGE_NAME} and its documentation; otherwise type ./configure --help=short for a complete list of configure options specific to ${PACKAGE_NAME}. " >&6;} +if test x"${pac_cv_openacc}" == x"yes" ; then + if test x"${FCOPENACC}" == x ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: + WARNING: OpenACC enabled, but no choice for FCOPENACC compile flag. + You may want to rerun configure with --with-fcopenacc= " >&5 +printf "%s\n" "$as_me: + WARNING: OpenACC enabled, but no choice for FCOPENACC compile flag. + You may want to rerun configure with --with-fcopenacc= " >&6;} + fi +fi ############################################################################### diff --git a/configure.ac b/configure.ac index c5a19006..47b41406 100755 --- a/configure.ac +++ b/configure.ac @@ -860,7 +860,7 @@ if test x"$pac_cv_openacc" == x"yes" ; then fi ############################################################################### -PAC_ARG_WITH_LIBRSB +dnl PAC_ARG_WITH_LIBRSB() LIBRSB_DIR="$pac_cv_librsb_dir"; AC_MSG_CHECKING([for LIBRSB install dir]) case $LIBRSB_DIR in @@ -1023,6 +1023,9 @@ AC_MSG_NOTICE([ CUDA : ${HAVE_CUDA} CUDA_CC : ${pac_cv_cudacc} + OPENACC : ${pac_cv_openacc} + FCOPENACC : ${FCOPENACC} + BLAS : ${BLAS_LIBS} METIS usable : ${psblas_cv_have_metis} @@ -1042,6 +1045,13 @@ dnl Note : we should use LDLIBS sooner or later! dnl To install the program and its documentation, run 'make install' if you are root, dnl or run 'su -c "make install"' if you are not root. ]) +if test x"${pac_cv_openacc}" == x"yes" ; then + if test x"${FCOPENACC}" == x ; then + AC_MSG_NOTICE([ + WARNING: OpenACC enabled, but no choice for FCOPENACC compile flag. + You may want to rerun configure with --with-fcopenacc= ]) + fi +fi ############################################################################### From 464baceb139735f2e28289f5ecabfa6400762ebd Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 7 Aug 2024 10:54:19 +0200 Subject: [PATCH 24/86] HLL loop nest cannot run with collapse --- openacc/impl/psb_d_oacc_hll_csmv.F90 | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/openacc/impl/psb_d_oacc_hll_csmv.F90 b/openacc/impl/psb_d_oacc_hll_csmv.F90 index bccd3d6d..d38fca61 100644 --- a/openacc/impl/psb_d_oacc_hll_csmv.F90 +++ b/openacc/impl/psb_d_oacc_hll_csmv.F90 @@ -64,11 +64,9 @@ contains do i = 1, m y(i) = beta * y(i) end do -#if (__GNUC__ <= 13) + ! This loop nest cannot be run with collapse, since + ! the inner loop extent varies. !$acc parallel loop present(a, x, y) -#else - !$acc parallel loop collapse(2) present(a, x, y) -#endif do i = 1, nhacks do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) From 03aaa090db31ada5478a0a8bd4af07f339bab657 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 7 Aug 2024 17:04:04 +0200 Subject: [PATCH 25/86] New AX_OPENACC macro and supporting flags --- config/ax_c_openacc.m4 | 104 +++++++++++ config/ax_cxx_openacc.m4 | 104 +++++++++++ config/ax_fc_openacc.m4 | 108 +++++++++++ configure | 286 +++++++++++++++++++++++++++++- configure.ac | 32 +++- test/openacc/Makefile | 11 +- test/openacc/psb_d_oacc_pde3d.F90 | 3 +- 7 files changed, 639 insertions(+), 9 deletions(-) create mode 100644 config/ax_c_openacc.m4 create mode 100644 config/ax_cxx_openacc.m4 create mode 100644 config/ax_fc_openacc.m4 diff --git a/config/ax_c_openacc.m4 b/config/ax_c_openacc.m4 new file mode 100644 index 00000000..52f645a9 --- /dev/null +++ b/config/ax_c_openacc.m4 @@ -0,0 +1,104 @@ +# AC_OPENACC +# --------- +# Check which options need to be passed to the C compiler to support Openacc. +# Set the OPENACC_CFLAGS / OPENACC_CXXFLAGS / OPENACC_FFLAGS variable to these +# options. +# The options are necessary at compile time (so the #pragmas are understood) +# and at link time (so the appropriate library is linked with). +# This macro takes care to not produce redundant options if $CC $CFLAGS already +# supports Openacc. +# +# For each candidate option, we do a compile test first, then a link test; +# if the compile test succeeds but the link test fails, that means we have +# found the correct option but it doesn't work because the libraries are +# broken. (This can happen, for instance, with SunPRO C and a bad combination +# of operating system patches.) +# +# Several of the options in our candidate list can be misinterpreted by +# compilers that don't use them to activate Openacc support; for example, +# many compilers understand "-openacc" to mean "write output to a file +# named 'penmp'" rather than "enable Openacc". We can't completely avoid +# the possibility of clobbering files named 'penmp' or 'mp' in configure's +# working directory; therefore, this macro will bomb out if any such file +# already exists when it's invoked. +AC_DEFUN([AX_C_OPENACC], +[AC_REQUIRE([_AX_OPENACC_SAFE_WD])]dnl +[AC_ARG_ENABLE([openacc], + [AS_HELP_STRING([--disable-openacc], [do not use Openacc])])]dnl +[ + OPENACC_[]_AC_LANG_PREFIX[]FLAGS= + if test "$enable_openacc" != no; then + AC_LANG_PUSH([C]) + AC_CACHE_CHECK([for $[]_AC_CC[] option to support Openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='not found' + dnl Try these flags: + dnl (on by default) '' + dnl GCC >= 4.2 -fopenacc + dnl SunPRO C -xopenacc + dnl Intel C -openacc + dnl SGI C, PGI C -mp + dnl Tru64 Compaq C -omp + dnl IBM XL C (AIX, Linux) -qsmp=omp + dnl Cray CCE -homp + dnl NEC SX -Popenacc + dnl Lahey Fortran (Linux) --openacc + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option" + AC_COMPILE_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} +], + [AC_LINK_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} +], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc=$ac_option], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported'])]) + _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS + + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = 'not found'; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported' + elif test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = ''; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='none needed' + fi + dnl _AX_OPENACC_SAFE_WD checked that these files did not exist before we + dnl started probing for Openacc support, so if they exist now, they were + dnl created by the probe loop and it's safe to delete them. + rm -f penmp mp]) + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported' && \ + test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'none needed'; then + OPENACC_[]_AC_LANG_PREFIX[]FLAGS="$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" + fi + AC_LANG_POP([C]) + fi +]) + +# _AC_OPENACC_SAFE_WD +# ------------------ +# AC_REQUIREd by AC_OPENACC. Checks both at autoconf time and at +# configure time for files that AC_OPENACC clobbers. +AC_DEFUN([_AX_OPENACC_SAFE_WD], +[m4_syscmd([test ! -e penmp && test ! -e mp])]dnl +[m4_if(sysval, [0], [], [m4_fatal(m4_normalize( + [AX_OPENACC clobbers files named 'mp' and 'penmp'. + To use AX_OPENACC you must not have either of these files + at the top level of your source tree.]))])]dnl +[if test -e penmp || test -e mp; then + AC_MSG_ERROR(m4_normalize( + [AX@&t@_OPENACC clobbers files named 'mp' and 'penmp'. + Aborting configure because one of these files already exists.])) +fi]) + diff --git a/config/ax_cxx_openacc.m4 b/config/ax_cxx_openacc.m4 new file mode 100644 index 00000000..5a2ad278 --- /dev/null +++ b/config/ax_cxx_openacc.m4 @@ -0,0 +1,104 @@ +# AC_OPENACC +# --------- +# Check which options need to be passed to the C compiler to support Openacc. +# Set the OPENACC_CFLAGS / OPENACC_CXXFLAGS / OPENACC_FFLAGS variable to these +# options. +# The options are necessary at compile time (so the #pragmas are understood) +# and at link time (so the appropriate library is linked with). +# This macro takes care to not produce redundant options if $CC $CFLAGS already +# supports Openacc. +# +# For each candidate option, we do a compile test first, then a link test; +# if the compile test succeeds but the link test fails, that means we have +# found the correct option but it doesn't work because the libraries are +# broken. (This can happen, for instance, with SunPRO C and a bad combination +# of operating system patches.) +# +# Several of the options in our candidate list can be misinterpreted by +# compilers that don't use them to activate Openacc support; for example, +# many compilers understand "-openacc" to mean "write output to a file +# named 'penmp'" rather than "enable Openacc". We can't completely avoid +# the possibility of clobbering files named 'penmp' or 'mp' in configure's +# working directory; therefore, this macro will bomb out if any such file +# already exists when it's invoked. +AC_DEFUN([AX_CXX_OPENACC], +[AC_REQUIRE([_AX_OPENACC_SAFE_WD])]dnl +[AC_ARG_ENABLE([openacc], + [AS_HELP_STRING([--disable-openacc], [do not use Openacc])])]dnl +[ + OPENACC_[]_AC_LANG_PREFIX[]FLAGS= + if test "$enable_openacc" != no; then + AC_LANG_PUSH([C++]) + AC_CACHE_CHECK([for $[]_AC_CC[] option to support Openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='not found' + dnl Try these flags: + dnl (on by default) '' + dnl GCC >= 4.2 -fopenacc + dnl SunPRO C -xopenacc + dnl Intel C -openacc + dnl SGI C, PGI C -mp + dnl Tru64 Compaq C -omp + dnl IBM XL C (AIX, Linux) -qsmp=omp + dnl Cray CCE -homp + dnl NEC SX -Popenacc + dnl Lahey Fortran (Linux) --openacc + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option" + AC_COMPILE_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} +], + [AC_LINK_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} +], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc=$ac_option], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported'])]) + _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS + + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = 'not found'; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported' + elif test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = ''; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='none needed' + fi + dnl _AX_OPENACC_SAFE_WD checked that these files did not exist before we + dnl started probing for Openacc support, so if they exist now, they were + dnl created by the probe loop and it's safe to delete them. + rm -f penmp mp]) + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported' && \ + test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'none needed'; then + OPENACC_[]_AC_LANG_PREFIX[]FLAGS="$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" + fi + AC_LANG_POP([C++]) + fi +]) + +dnl _AC_OPENACC_SAFE_WD +dnl ------------------ +dnl AC_REQUIREd by AC_OPENACC. Checks both at autoconf time and at +dnl configure time for files that AC_OPENACC clobbers. +dnl AC_DEFUN([_AX_OPENACC_SAFE_WD], +dnl [m4_syscmd([test ! -e penmp && test ! -e mp])]dnl +dnl [m4_if(sysval, [0], [], [m4_fatal(m4_normalize( +dnl [AX_OPENACC clobbers files named 'mp' and 'penmp'. +dnl To use AX_OPENACC you must not have either of these files +dnl at the top level of your source tree.]))])]dnl +dnl [if test -e penmp || test -e mp; then +dnl AC_MSG_ERROR(m4_normalize( +dnl [AX@&t@_OPENACC clobbers files named 'mp' and 'penmp'. +dnl Aborting configure because one of these files already exists.])) +dnl fi]) + diff --git a/config/ax_fc_openacc.m4 b/config/ax_fc_openacc.m4 new file mode 100644 index 00000000..59775b2b --- /dev/null +++ b/config/ax_fc_openacc.m4 @@ -0,0 +1,108 @@ +# AC_OPENACC +# --------- +# Check which options need to be passed to the C compiler to support Openacc. +# Set the OPENACC_CFLAGS / OPENACC_CXXFLAGS / OPENACC_FFLAGS variable to these +# options. +# The options are necessary at compile time (so the #pragmas are understood) +# and at link time (so the appropriate library is linked with). +# This macro takes care to not produce redundant options if $CC $CFLAGS already +# supports Openacc. +# +# For each candidate option, we do a compile test first, then a link test; +# if the compile test succeeds but the link test fails, that means we have +# found the correct option but it doesn't work because the libraries are +# broken. (This can happen, for instance, with SunPRO C and a bad combination +# of operating system patches.) +# +# Several of the options in our candidate list can be misinterpreted by +# compilers that don't use them to activate Openacc support; for example, +# many compilers understand "-openacc" to mean "write output to a file +# named 'penmp'" rather than "enable Openacc". We can't completely avoid +# the possibility of clobbering files named 'penmp' or 'mp' in configure's +# working directory; therefore, this macro will bomb out if any such file +# already exists when it's invoked. +AC_DEFUN([AX_FC_OPENACC], +[AC_REQUIRE([_AX_OPENACC_SAFE_WD])]dnl +[AC_ARG_ENABLE([openacc], + [AS_HELP_STRING([--disable-openacc], [do not use Openacc])])]dnl +[ + OPENACC_[]_AC_LANG_PREFIX[]FLAGS= + if test "$enable_openacc" != no; then + AC_LANG_PUSH([Fortran]) + AC_CACHE_CHECK([for $[]_AC_CC[] option to support Openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='not found' + dnl Try these flags: + dnl (on by default) '' + dnl GCC >= 4.2 -fopenacc + dnl SunPRO C -xopenacc + dnl Intel C -openacc + dnl SGI C, PGI C -mp + dnl Tru64 Compaq C -omp + dnl IBM XL C (AIX, Linux) -qsmp=omp + dnl Cray CCE -homp + dnl NEC SX -Popenacc + dnl Lahey Fortran (Linux) --openacc + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option" + AC_COMPILE_IFELSE([ + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end +], + [AC_LINK_IFELSE([ + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end +], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc=$ac_option], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported'])]) + _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS + + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported'; then + break + fi + done + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = 'not found'; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported' + elif test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = ''; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='none needed' + fi + dnl _AX_OPENACC_SAFE_WD checked that these files did not exist before we + dnl started probing for Openacc support, so if they exist now, they were + dnl created by the probe loop and it's safe to delete them. + rm -f penmp mp]) + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported' && \ + test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'none needed'; then + OPENACC_[]_AC_LANG_PREFIX[]FLAGS="$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" + fi + AC_LANG_POP([Fortran]) + fi +]) + +# _AC_OPENACC_SAFE_WD +# ------------------ +# AC_REQUIREd by AC_OPENACC. Checks both at autoconf time and at +# configure time for files that AC_OPENACC clobbers. +AC_DEFUN([_AX_OPENACC_SAFE_WD], +[m4_syscmd([test ! -e penmp && test ! -e mp])]dnl +[m4_if(sysval, [0], [], [m4_fatal(m4_normalize( + [AX_OPENACC clobbers files named 'mp' and 'penmp'. + To use AX_OPENACC you must not have either of these files + at the top level of your source tree.]))])]dnl +[if test -e penmp || test -e mp; then + AC_MSG_ERROR(m4_normalize( + [AX@&t@_OPENACC clobbers files named 'mp' and 'penmp'. + Aborting configure because one of these files already exists.])) +fi]) + diff --git a/configure b/configure index 04408e2a..3022ff53 100755 --- a/configure +++ b/configure @@ -852,6 +852,7 @@ with_amdlibdir with_cuda with_cudacc enable_openacc +with_extraopenacc with_ccopenacc with_cxxopenacc with_fcopenacc @@ -1506,6 +1507,7 @@ Optional Features: --enable-openmp Specify whether to enable openmp. --disable-openmp do not use OpenMP --enable-openacc Specify whether to enable openacc. + --disable-openacc do not use Openacc Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1551,6 +1553,8 @@ Optional Packages: --with-cuda=DIR Specify the CUDA install directory. --with-cudacc A comma-separated list of CCs to compile to, for example, --with-cudacc=50,60,70,75 + --with-extraopenacc additional [EXTRAOPENACC] flags to be added: will + prepend to [EXTRAOPENACC] --with-ccopenacc additional [CCOPENACC] flags to be added: will prepend to [CCOPENACC] --with-cxxopenacc additional [CXXOPENACC] flags to be added: will @@ -10925,6 +10929,284 @@ fi if test x"$pac_cv_openacc" == x"yes" ; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional EXTRAOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional EXTRAOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-extraopenacc was given. +if test ${with_extraopenacc+y} +then : + withval=$with_extraopenacc; +EXTRAOPENACC="${withval} ${EXTRAOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: EXTRAOPENACC = ${EXTRAOPENACC}" >&5 +printf "%s\n" "EXTRAOPENACC = ${EXTRAOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + if test -e penmp || test -e mp; then + as_fn_error $? "AX_OPENACC clobbers files named 'mp' and 'penmp'. Aborting configure because one of these files already exists." "$LINENO" 5 +fi +# Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +fi + + OPENACC_CFLAGS= + if test "$enable_openacc" != no; then + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to support Openacc" >&5 +printf %s "checking for $CC option to support Openacc... " >&6; } +if test ${ax_cv_prog_c_openacc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_prog_c_openacc='not found' + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_prog_c_openacc=$ac_option +else $as_nop + ax_cv_prog_c_openacc='unsupported' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ac_save_CFLAGS + + if test "$ax_cv_prog_c_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_c_openacc" = 'not found'; then + ac_cv_prog_c_openacc='unsupported' + elif test "$ax_cv_prog_c_openacc" = ''; then + ac_cv_prog_c_openacc='none needed' + fi + rm -f penmp mp +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_prog_c_openacc" >&5 +printf "%s\n" "$ax_cv_prog_c_openacc" >&6; } + if test "$ax_cv_prog_c_openacc" != 'unsupported' && \ + test "$ax_cv_prog_c_openacc" != 'none needed'; then + OPENACC_CFLAGS="$ax_cv_prog_c_openacc" + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi + + CCOPENACC="$ax_cv_prog_c_openacc"; + # Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +fi + + OPENACC_CFLAGS= + if test "$enable_openacc" != no; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to support Openacc" >&5 +printf %s "checking for $CXX option to support Openacc... " >&6; } +if test ${ax_cv_prog_cxx_openacc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_prog_cxx_openacc='not found' + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} + +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + ax_cv_prog_cxx_openacc=$ac_option +else $as_nop + ax_cv_prog_cxx_openacc='unsupported' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ac_save_CXXFLAGS + + if test "$ax_cv_prog_cxx_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_cxx_openacc" = 'not found'; then + ac_cv_prog_cxx_openacc='unsupported' + elif test "$ax_cv_prog_cxx_openacc" = ''; then + ac_cv_prog_cxx_openacc='none needed' + fi + rm -f penmp mp +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_prog_cxx_openacc" >&5 +printf "%s\n" "$ax_cv_prog_cxx_openacc" >&6; } + if test "$ax_cv_prog_cxx_openacc" != 'unsupported' && \ + test "$ax_cv_prog_cxx_openacc" != 'none needed'; then + OPENACC_CXXFLAGS="$ax_cv_prog_cxx_openacc" + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi + + CXXOPENACC="$ax_cv_prog_cxx_openacc"; + # Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +fi + + OPENACC_CFLAGS= + if test "$enable_openacc" != no; then + ac_ext=${ac_fc_srcext-f} +ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $FC option to support Openacc" >&5 +printf %s "checking for $FC option to support Openacc... " >&6; } +if test ${ax_cv_prog_fc_openacc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_prog_fc_openacc='not found' + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_FCFLAGS=$FCFLAGS + FCFLAGS="$FCFLAGS $ac_option" + cat > conftest.$ac_ext <<_ACEOF + + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end + +_ACEOF +if ac_fn_fc_try_compile "$LINENO" +then : + cat > conftest.$ac_ext <<_ACEOF + + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end + +_ACEOF +if ac_fn_fc_try_link "$LINENO" +then : + ax_cv_prog_fc_openacc=$ac_option +else $as_nop + ax_cv_prog_fc_openacc='unsupported' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + FCFLAGS=$ac_save_FCFLAGS + + if test "$ax_cv_prog_fc_openacc" != 'unsupported'; then + break + fi + done + if test "$ax_cv_prog_fc_openacc" = 'not found'; then + ac_cv_prog_fc_openacc='unsupported' + elif test "$ax_cv_prog_fc_openacc" = ''; then + ac_cv_prog_fc_openacc='none needed' + fi + rm -f penmp mp +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_prog_fc_openacc" >&5 +printf "%s\n" "$ax_cv_prog_fc_openacc" >&6; } + if test "$ax_cv_prog_fc_openacc" != 'unsupported' && \ + test "$ax_cv_prog_fc_openacc" != 'none needed'; then + OPENACC_FCFLAGS="$ax_cv_prog_fc_openacc" + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi + + FCOPENACC="$ax_cv_prog_fc_openacc"; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional CCOPENACC flags should be added (should be invoked only once)" >&5 printf %s "checking whether additional CCOPENACC flags should be added (should be invoked only once)... " >&6; } @@ -10981,7 +11263,9 @@ printf "%s\n" "no" >&6; } fi - + CCOPENACC="$CCOPENACC $EXTRAOPENACC"; + CXXOPENACC="$CXXOPENACC $EXTRAOPENACC"; + FCOPENACC="$FCOPENACC $EXTRAOPENACC"; OACCD=oaccd; OACCLD=oaccld; diff --git a/configure.ac b/configure.ac index 47b41406..c702d4b1 100755 --- a/configure.ac +++ b/configure.ac @@ -845,11 +845,35 @@ if test "x$pac_cv_ipk_size" != "x4"; then fi PAC_ARG_OPENACC() +dnl AC_ARG_ENABLE([openacc], +dnl [AS_HELP_STRING([--disable-openacc], [do not use Openacc])]) if test x"$pac_cv_openacc" == x"yes" ; then - PAC_ARG_WITH_FLAGS(ccopenacc,CCOPENACC) + PAC_ARG_WITH_FLAGS(extraopenacc,EXTRAOPENACC) + dnl if test false; then + AX_C_OPENACC() + CCOPENACC="$ax_cv_prog_c_openacc"; + AX_CXX_OPENACC() + CXXOPENACC="$ax_cv_prog_cxx_openacc"; + AX_FC_OPENACC() + FCOPENACC="$ax_cv_prog_fc_openacc"; + dnl AX_OPENACC() + dnl + dnl CXXOPENACC="$ax_cv_prog_cxx_openacc"; + dnl FCOPENACC="$ax_cv_prog_fc_openacc"; + dnl else +dnl AC_MSG_NOTICE([OpenACC 1 flags CC $CCOPENACC CXX $CXXOPENACC FC $FCOPENACC]) + PAC_ARG_WITH_FLAGS(ccopenacc,CCOPENACC) PAC_ARG_WITH_FLAGS(cxxopenacc,CXXOPENACC) PAC_ARG_WITH_FLAGS(fcopenacc,FCOPENACC) - +dnl AC_MSG_NOTICE([OpenACC 2 flags CC $CCOPENACC CXX $CXXOPENACC FC $FCOPENACC]) +dnl CCOPENACC="$ax_cv_prog_c_openacc"; +dnl CXXOPENACC="$ax_cv_prog_cxx_openacc"; +dnl FCOPENACC="$ax_cv_prog_fc_openacc"; +dnl fi + CCOPENACC="$CCOPENACC $EXTRAOPENACC"; + CXXOPENACC="$CXXOPENACC $EXTRAOPENACC"; + FCOPENACC="$FCOPENACC $EXTRAOPENACC"; +dnl AC_MSG_NOTICE([OpenACC 3 flags CC $CCOPENACC CXX $CXXOPENACC FC $FCOPENACC]) OACCD=oaccd; OACCLD=oaccld; @@ -1025,7 +1049,9 @@ AC_MSG_NOTICE([ OPENACC : ${pac_cv_openacc} FCOPENACC : ${FCOPENACC} - + OACCD : ${OACCD} + OACCLD : ${OACCLD} + BLAS : ${BLAS_LIBS} METIS usable : ${psblas_cv_have_metis} diff --git a/test/openacc/Makefile b/test/openacc/Makefile index a2827b30..d0bd4880 100644 --- a/test/openacc/Makefile +++ b/test/openacc/Makefile @@ -17,14 +17,17 @@ FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) FFLAGS=-O0 -march=native -fopenacc -foffload=nvptx-none="-march=sm_70" CFLAGS=-O0 -march=native -SRCS=vectoacc.F90 datavect.F90 +VTC=vectoacc.o +DVT=datavect.o CSRC=timers.c OBJS=$(SRCS:.F90=.o) $(CSRC:.c=.o) -all: dir $(OBJS) - $(FC) $(FFLAGS) $(OBJS) -o datavect $(FINCLUDES) $(PSBLAS_LIB) $(LDLIBS) - /bin/mv datavect $(EXEDIR) +all: dir psb_d_oacc_pde3d + +#$(OBJS) +# $(FC) $(FFLAGS) $(OBJS) -o datavect $(FINCLUDES) $(PSBLAS_LIB) $(LDLIBS) +# /bin/mv datavect $(EXEDIR) dir: @if test ! -d $(EXEDIR); then mkdir $(EXEDIR); fi diff --git a/test/openacc/psb_d_oacc_pde3d.F90 b/test/openacc/psb_d_oacc_pde3d.F90 index ac992884..7c0cb4ef 100644 --- a/test/openacc/psb_d_oacc_pde3d.F90 +++ b/test/openacc/psb_d_oacc_pde3d.F90 @@ -733,7 +733,8 @@ program psb_d_oacc_pde3d end if ! get parameters - call get_parms(ctxt, kmethd, ptype, afmt, agfmt, idim, istopc, itmax, itrace, irst, ipart, parms) + call get_parms(ctxt, kmethd, ptype, afmt, agfmt, idim, istopc,& + & itmax, itrace, irst, ipart, parms) ! allocate and fill in the coefficient matrix, rhs and initial guess call psb_barrier(ctxt) From ff8513b4c60985649da87f4ffeb8d214a5e18ca7 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 7 Aug 2024 17:04:29 +0200 Subject: [PATCH 26/86] Ignore .smod files in git --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7227f784..d190e4c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.a *.o *.mod +*.smod *~ # header files generated From 2982aaee27b501e18b6a8125a263a19f03b65897 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 8 Aug 2024 11:07:28 +0200 Subject: [PATCH 27/86] Implementation in OpenACC for ELL and HLL into templates. Merge from development --- base/modules/auxil/psi_c_serial_mod.f90 | 8 +- base/modules/auxil/psi_d_serial_mod.f90 | 8 +- base/modules/auxil/psi_e_serial_mod.f90 | 8 +- base/modules/auxil/psi_i2_serial_mod.f90 | 8 +- base/modules/auxil/psi_m_serial_mod.f90 | 8 +- base/modules/auxil/psi_s_serial_mod.f90 | 8 +- base/modules/auxil/psi_z_serial_mod.f90 | 8 +- base/modules/psblas/psb_c_psblas_mod.F90 | 8 +- base/modules/psblas/psb_d_psblas_mod.F90 | 8 +- base/modules/psblas/psb_s_psblas_mod.F90 | 8 +- base/modules/psblas/psb_z_psblas_mod.F90 | 8 +- base/modules/serial/psb_c_base_vect_mod.F90 | 14 +- base/modules/serial/psb_c_vect_mod.F90 | 8 +- base/modules/serial/psb_d_base_vect_mod.F90 | 14 +- base/modules/serial/psb_d_vect_mod.F90 | 8 +- base/modules/serial/psb_s_base_vect_mod.F90 | 14 +- base/modules/serial/psb_s_vect_mod.F90 | 8 +- base/modules/serial/psb_z_base_vect_mod.F90 | 14 +- base/modules/serial/psb_z_vect_mod.F90 | 8 +- base/psblas/psb_caxpby.f90 | 8 +- base/psblas/psb_daxpby.f90 | 8 +- base/psblas/psb_saxpby.f90 | 8 +- base/psblas/psb_zaxpby.f90 | 8 +- base/serial/psi_c_serial_impl.F90 | 8 +- base/serial/psi_d_serial_impl.F90 | 8 +- base/serial/psi_e_serial_impl.F90 | 8 +- base/serial/psi_i2_serial_impl.F90 | 8 +- base/serial/psi_m_serial_impl.F90 | 8 +- base/serial/psi_s_serial_impl.F90 | 8 +- base/serial/psi_z_serial_impl.F90 | 8 +- cuda/psb_c_cuda_vect_mod.F90 | 8 +- cuda/psb_c_vectordev_mod.F90 | 8 +- cuda/psb_d_cuda_vect_mod.F90 | 8 +- cuda/psb_d_vectordev_mod.F90 | 8 +- cuda/psb_s_cuda_vect_mod.F90 | 8 +- cuda/psb_s_vectordev_mod.F90 | 8 +- cuda/psb_z_cuda_vect_mod.F90 | 8 +- cuda/psb_z_vectordev_mod.F90 | 8 +- openacc/Makefile | 27 +- openacc/impl/Makefile | 84 +- openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 | 47 + openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 | 78 ++ openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 | 24 + openacc/impl/psb_c_oacc_ell_csmm.F90 | 86 ++ openacc/impl/psb_c_oacc_ell_csmv.F90 | 82 ++ openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 | 85 ++ openacc/impl/psb_c_oacc_ell_mold.F90 | 34 + openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 | 25 + openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 | 24 + openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 | 28 + openacc/impl/psb_c_oacc_ell_scal.F90 | 58 ++ openacc/impl/psb_c_oacc_ell_scals.F90 | 39 + openacc/impl/psb_c_oacc_ell_vect_mv.F90 | 66 ++ openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 | 53 + openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 | 85 ++ openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 | 24 + openacc/impl/psb_c_oacc_hll_csmm.F90 | 86 ++ openacc/impl/psb_c_oacc_hll_csmv.F90 | 84 ++ openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 | 86 ++ openacc/impl/psb_c_oacc_hll_mold.F90 | 34 + openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 | 25 + openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 | 24 + openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 | 29 + openacc/impl/psb_c_oacc_hll_scal.F90 | 62 ++ openacc/impl/psb_c_oacc_hll_scals.F90 | 40 + openacc/impl/psb_c_oacc_hll_vect_mv.F90 | 67 ++ openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 | 2 +- openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 | 2 +- openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 | 2 +- openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 | 2 +- openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 | 47 + openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 | 78 ++ openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 | 24 + openacc/impl/psb_s_oacc_ell_csmm.F90 | 86 ++ openacc/impl/psb_s_oacc_ell_csmv.F90 | 82 ++ openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 | 85 ++ openacc/impl/psb_s_oacc_ell_mold.F90 | 34 + openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 | 25 + openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 | 24 + openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 | 28 + openacc/impl/psb_s_oacc_ell_scal.F90 | 58 ++ openacc/impl/psb_s_oacc_ell_scals.F90 | 39 + openacc/impl/psb_s_oacc_ell_vect_mv.F90 | 66 ++ openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 | 53 + openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 | 85 ++ openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 | 24 + openacc/impl/psb_s_oacc_hll_csmm.F90 | 86 ++ openacc/impl/psb_s_oacc_hll_csmv.F90 | 84 ++ openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 | 86 ++ openacc/impl/psb_s_oacc_hll_mold.F90 | 34 + openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 | 25 + openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 | 24 + openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 | 29 + openacc/impl/psb_s_oacc_hll_scal.F90 | 62 ++ openacc/impl/psb_s_oacc_hll_scals.F90 | 40 + openacc/impl/psb_s_oacc_hll_vect_mv.F90 | 67 ++ openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 | 47 + openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 | 78 ++ openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 | 24 + openacc/impl/psb_z_oacc_ell_csmm.F90 | 86 ++ openacc/impl/psb_z_oacc_ell_csmv.F90 | 82 ++ openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 | 85 ++ openacc/impl/psb_z_oacc_ell_mold.F90 | 34 + openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 | 25 + openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 | 24 + openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 | 28 + openacc/impl/psb_z_oacc_ell_scal.F90 | 58 ++ openacc/impl/psb_z_oacc_ell_scals.F90 | 39 + openacc/impl/psb_z_oacc_ell_vect_mv.F90 | 66 ++ openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 | 53 + openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 | 85 ++ openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 | 24 + openacc/impl/psb_z_oacc_hll_csmm.F90 | 86 ++ openacc/impl/psb_z_oacc_hll_csmv.F90 | 84 ++ openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 | 86 ++ openacc/impl/psb_z_oacc_hll_mold.F90 | 34 + openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 | 25 + openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 | 24 + openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 | 29 + openacc/impl/psb_z_oacc_hll_scal.F90 | 62 ++ openacc/impl/psb_z_oacc_hll_scals.F90 | 40 + openacc/impl/psb_z_oacc_hll_vect_mv.F90 | 67 ++ openacc/psb_c_oacc_ell_mat_mod.F90 | 341 +++++++ openacc/psb_c_oacc_hll_mat_mod.F90 | 352 +++++++ openacc/psb_c_oacc_vect_mod.F90 | 33 +- openacc/psb_d_oacc_ell_mat_mod.F90 | 682 +++++++------ openacc/psb_d_oacc_hll_mat_mod.F90 | 702 +++++++------- openacc/psb_d_oacc_vect_mod.F90 | 33 +- openacc/psb_i_oacc_vect_mod.F90 | 916 +++++++++--------- openacc/psb_l_oacc_vect_mod.F90 | 507 ++++++++++ openacc/psb_oacc_mod.F90 | 9 + openacc/psb_s_oacc_ell_mat_mod.F90 | 341 +++++++ openacc/psb_s_oacc_hll_mat_mod.F90 | 352 +++++++ openacc/psb_s_oacc_vect_mod.F90 | 33 +- openacc/psb_z_oacc_ell_mat_mod.F90 | 341 +++++++ openacc/psb_z_oacc_hll_mat_mod.F90 | 352 +++++++ openacc/psb_z_oacc_vect_mod.F90 | 33 +- 137 files changed, 8195 insertions(+), 1404 deletions(-) create mode 100644 openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_csmm.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_csmv.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_mold.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_scal.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_scals.F90 create mode 100644 openacc/impl/psb_c_oacc_ell_vect_mv.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_csmm.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_csmv.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_mold.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_scal.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_scals.F90 create mode 100644 openacc/impl/psb_c_oacc_hll_vect_mv.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_csmm.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_csmv.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_mold.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_scal.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_scals.F90 create mode 100644 openacc/impl/psb_s_oacc_ell_vect_mv.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_csmm.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_csmv.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_mold.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_scal.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_scals.F90 create mode 100644 openacc/impl/psb_s_oacc_hll_vect_mv.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_csmm.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_csmv.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_mold.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_scal.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_scals.F90 create mode 100644 openacc/impl/psb_z_oacc_ell_vect_mv.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_csmm.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_csmv.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_mold.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_scal.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_scals.F90 create mode 100644 openacc/impl/psb_z_oacc_hll_vect_mv.F90 create mode 100644 openacc/psb_c_oacc_ell_mat_mod.F90 create mode 100644 openacc/psb_c_oacc_hll_mat_mod.F90 create mode 100644 openacc/psb_l_oacc_vect_mod.F90 create mode 100644 openacc/psb_s_oacc_ell_mat_mod.F90 create mode 100644 openacc/psb_s_oacc_hll_mat_mod.F90 create mode 100644 openacc/psb_z_oacc_ell_mat_mod.F90 create mode 100644 openacc/psb_z_oacc_hll_mat_mod.F90 diff --git a/base/modules/auxil/psi_c_serial_mod.f90 b/base/modules/auxil/psi_c_serial_mod.f90 index 3fe001c8..38b740a7 100644 --- a/base/modules/auxil/psi_c_serial_mod.f90 +++ b/base/modules/auxil/psi_c_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_c_serial_mod end subroutine psi_caxpbyv2 end interface psb_geaxpby - interface psi_upd_xyz - subroutine psi_c_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_abgdxyz + subroutine psi_cabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_spk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_c_serial_mod complex(psb_spk_), intent (inout) :: z(:) complex(psb_spk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_c_upd_xyz - end interface psi_upd_xyz + end subroutine psi_cabgdxyz + end interface psi_abgdxyz interface psi_xyzw subroutine psi_cxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_d_serial_mod.f90 b/base/modules/auxil/psi_d_serial_mod.f90 index a08263df..1d65c5f6 100644 --- a/base/modules/auxil/psi_d_serial_mod.f90 +++ b/base/modules/auxil/psi_d_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_d_serial_mod end subroutine psi_daxpbyv2 end interface psb_geaxpby - interface psi_upd_xyz - subroutine psi_d_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_abgdxyz + subroutine psi_dabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_dpk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_d_serial_mod real(psb_dpk_), intent (inout) :: z(:) real(psb_dpk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_d_upd_xyz - end interface psi_upd_xyz + end subroutine psi_dabgdxyz + end interface psi_abgdxyz interface psi_xyzw subroutine psi_dxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_e_serial_mod.f90 b/base/modules/auxil/psi_e_serial_mod.f90 index 1f1bebd7..6f4e8c06 100644 --- a/base/modules/auxil/psi_e_serial_mod.f90 +++ b/base/modules/auxil/psi_e_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_e_serial_mod end subroutine psi_eaxpbyv2 end interface psb_geaxpby - interface psi_upd_xyz - subroutine psi_e_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_abgdxyz + subroutine psi_eabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_lpk_,psb_mpk_, psb_epk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_e_serial_mod integer(psb_epk_), intent (inout) :: z(:) integer(psb_epk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_e_upd_xyz - end interface psi_upd_xyz + end subroutine psi_eabgdxyz + end interface psi_abgdxyz interface psi_xyzw subroutine psi_exyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_i2_serial_mod.f90 b/base/modules/auxil/psi_i2_serial_mod.f90 index 770d3256..ffa14059 100644 --- a/base/modules/auxil/psi_i2_serial_mod.f90 +++ b/base/modules/auxil/psi_i2_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_i2_serial_mod end subroutine psi_i2axpbyv2 end interface psb_geaxpby - interface psi_upd_xyz - subroutine psi_i2_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_abgdxyz + subroutine psi_i2abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_lpk_,psb_mpk_, psb_epk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_i2_serial_mod integer(psb_i2pk_), intent (inout) :: z(:) integer(psb_i2pk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_i2_upd_xyz - end interface psi_upd_xyz + end subroutine psi_i2abgdxyz + end interface psi_abgdxyz interface psi_xyzw subroutine psi_i2xyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_m_serial_mod.f90 b/base/modules/auxil/psi_m_serial_mod.f90 index 3583cccc..5661fdbf 100644 --- a/base/modules/auxil/psi_m_serial_mod.f90 +++ b/base/modules/auxil/psi_m_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_m_serial_mod end subroutine psi_maxpbyv2 end interface psb_geaxpby - interface psi_upd_xyz - subroutine psi_m_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_abgdxyz + subroutine psi_mabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_lpk_,psb_mpk_, psb_epk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_m_serial_mod integer(psb_mpk_), intent (inout) :: z(:) integer(psb_mpk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_m_upd_xyz - end interface psi_upd_xyz + end subroutine psi_mabgdxyz + end interface psi_abgdxyz interface psi_xyzw subroutine psi_mxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_s_serial_mod.f90 b/base/modules/auxil/psi_s_serial_mod.f90 index 3e0c6d91..5cc17d58 100644 --- a/base/modules/auxil/psi_s_serial_mod.f90 +++ b/base/modules/auxil/psi_s_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_s_serial_mod end subroutine psi_saxpbyv2 end interface psb_geaxpby - interface psi_upd_xyz - subroutine psi_s_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_abgdxyz + subroutine psi_sabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_spk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_s_serial_mod real(psb_spk_), intent (inout) :: z(:) real(psb_spk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_s_upd_xyz - end interface psi_upd_xyz + end subroutine psi_sabgdxyz + end interface psi_abgdxyz interface psi_xyzw subroutine psi_sxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_z_serial_mod.f90 b/base/modules/auxil/psi_z_serial_mod.f90 index a8ea734e..8a3f053d 100644 --- a/base/modules/auxil/psi_z_serial_mod.f90 +++ b/base/modules/auxil/psi_z_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_z_serial_mod end subroutine psi_zaxpbyv2 end interface psb_geaxpby - interface psi_upd_xyz - subroutine psi_z_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_abgdxyz + subroutine psi_zabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_dpk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_z_serial_mod complex(psb_dpk_), intent (inout) :: z(:) complex(psb_dpk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_z_upd_xyz - end interface psi_upd_xyz + end subroutine psi_zabgdxyz + end interface psi_abgdxyz interface psi_xyzw subroutine psi_zxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/psblas/psb_c_psblas_mod.F90 b/base/modules/psblas/psb_c_psblas_mod.F90 index 591dec09..7f7f937c 100644 --- a/base/modules/psblas/psb_c_psblas_mod.F90 +++ b/base/modules/psblas/psb_c_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_c_psblas_mod end subroutine psb_caxpby end interface - interface psb_upd_xyz - subroutine psb_c_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_abgdxyz + subroutine psb_cabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_vect_type, psb_cspmat_type @@ -154,8 +154,8 @@ module psb_c_psblas_mod complex(psb_spk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_c_upd_xyz_vect - end interface psb_upd_xyz + end subroutine psb_cabgdxyz_vect + end interface psb_abgdxyz interface psb_geamax function psb_camax(x, desc_a, info, jx,global) diff --git a/base/modules/psblas/psb_d_psblas_mod.F90 b/base/modules/psblas/psb_d_psblas_mod.F90 index b200bc8a..12090956 100644 --- a/base/modules/psblas/psb_d_psblas_mod.F90 +++ b/base/modules/psblas/psb_d_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_d_psblas_mod end subroutine psb_daxpby end interface - interface psb_upd_xyz - subroutine psb_d_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_abgdxyz + subroutine psb_dabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_vect_type, psb_dspmat_type @@ -154,8 +154,8 @@ module psb_d_psblas_mod real(psb_dpk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_upd_xyz_vect - end interface psb_upd_xyz + end subroutine psb_dabgdxyz_vect + end interface psb_abgdxyz interface psb_geamax function psb_damax(x, desc_a, info, jx,global) diff --git a/base/modules/psblas/psb_s_psblas_mod.F90 b/base/modules/psblas/psb_s_psblas_mod.F90 index a60da025..7a7ce783 100644 --- a/base/modules/psblas/psb_s_psblas_mod.F90 +++ b/base/modules/psblas/psb_s_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_s_psblas_mod end subroutine psb_saxpby end interface - interface psb_upd_xyz - subroutine psb_s_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_abgdxyz + subroutine psb_sabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_vect_type, psb_sspmat_type @@ -154,8 +154,8 @@ module psb_s_psblas_mod real(psb_spk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_s_upd_xyz_vect - end interface psb_upd_xyz + end subroutine psb_sabgdxyz_vect + end interface psb_abgdxyz interface psb_geamax function psb_samax(x, desc_a, info, jx,global) diff --git a/base/modules/psblas/psb_z_psblas_mod.F90 b/base/modules/psblas/psb_z_psblas_mod.F90 index 241df2b9..bcfe9caa 100644 --- a/base/modules/psblas/psb_z_psblas_mod.F90 +++ b/base/modules/psblas/psb_z_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_z_psblas_mod end subroutine psb_zaxpby end interface - interface psb_upd_xyz - subroutine psb_z_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_abgdxyz + subroutine psb_zabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_vect_type, psb_zspmat_type @@ -154,8 +154,8 @@ module psb_z_psblas_mod complex(psb_dpk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_z_upd_xyz_vect - end interface psb_upd_xyz + end subroutine psb_zabgdxyz_vect + end interface psb_abgdxyz interface psb_geamax function psb_zamax(x, desc_a, info, jx,global) diff --git a/base/modules/serial/psb_c_base_vect_mod.F90 b/base/modules/serial/psb_c_base_vect_mod.F90 index 4dac86d6..41bab5ab 100644 --- a/base/modules/serial/psb_c_base_vect_mod.F90 +++ b/base/modules/serial/psb_c_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_c_base_vect_mod procedure, pass(z) :: axpby_v2 => c_base_axpby_v2 procedure, pass(z) :: axpby_a2 => c_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => c_base_upd_xyz + procedure, pass(z) :: abgdxyz => c_base_abgdxyz procedure, pass(w) :: xyzw => c_base_xyzw ! @@ -1130,12 +1130,12 @@ contains end subroutine c_base_axpby_a2 ! - ! UPD_XYZ is invoked via Z, hence the structure below. + ! ABGDXYZ is invoked via Z, hence the structure below. ! ! - !> Function base_upd_xyz + !> Function base_abgdxyz !! \memberof psb_c_base_vect_type - !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1146,7 +1146,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine c_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine c_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1159,11 +1159,11 @@ contains if (x%is_dev().and.(alpha/=czero)) call x%sync() if (y%is_dev().and.(beta/=czero)) call y%sync() if (z%is_dev().and.(delta/=czero)) call z%sync() - call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine c_base_upd_xyz + end subroutine c_base_abgdxyz subroutine c_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_c_vect_mod.F90 b/base/modules/serial/psb_c_vect_mod.F90 index 1e9510f2..865f9456 100644 --- a/base/modules/serial/psb_c_vect_mod.F90 +++ b/base/modules/serial/psb_c_vect_mod.F90 @@ -102,7 +102,7 @@ module psb_c_vect_mod procedure, pass(z) :: axpby_v2 => c_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => c_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => c_vect_upd_xyz + procedure, pass(z) :: abgdxyz => c_vect_abgdxyz procedure, pass(z) :: xyzw => c_vect_xyzw procedure, pass(y) :: mlt_v => c_vect_mlt_v @@ -774,7 +774,7 @@ contains end subroutine c_vect_axpby_a2 - subroutine c_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine c_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -785,9 +785,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine c_vect_upd_xyz + end subroutine c_vect_abgdxyz subroutine c_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/modules/serial/psb_d_base_vect_mod.F90 b/base/modules/serial/psb_d_base_vect_mod.F90 index f07b5aed..1ad1ffa5 100644 --- a/base/modules/serial/psb_d_base_vect_mod.F90 +++ b/base/modules/serial/psb_d_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_d_base_vect_mod procedure, pass(z) :: axpby_v2 => d_base_axpby_v2 procedure, pass(z) :: axpby_a2 => d_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => d_base_upd_xyz + procedure, pass(z) :: abgdxyz => d_base_abgdxyz procedure, pass(w) :: xyzw => d_base_xyzw ! @@ -1137,12 +1137,12 @@ contains end subroutine d_base_axpby_a2 ! - ! UPD_XYZ is invoked via Z, hence the structure below. + ! ABGDXYZ is invoked via Z, hence the structure below. ! ! - !> Function base_upd_xyz + !> Function base_abgdxyz !! \memberof psb_d_base_vect_type - !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1153,7 +1153,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine d_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine d_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1166,11 +1166,11 @@ contains if (x%is_dev().and.(alpha/=dzero)) call x%sync() if (y%is_dev().and.(beta/=dzero)) call y%sync() if (z%is_dev().and.(delta/=dzero)) call z%sync() - call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine d_base_upd_xyz + end subroutine d_base_abgdxyz subroutine d_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_d_vect_mod.F90 b/base/modules/serial/psb_d_vect_mod.F90 index ae3062dd..55dd8230 100644 --- a/base/modules/serial/psb_d_vect_mod.F90 +++ b/base/modules/serial/psb_d_vect_mod.F90 @@ -102,7 +102,7 @@ module psb_d_vect_mod procedure, pass(z) :: axpby_v2 => d_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => d_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => d_vect_upd_xyz + procedure, pass(z) :: abgdxyz => d_vect_abgdxyz procedure, pass(z) :: xyzw => d_vect_xyzw procedure, pass(y) :: mlt_v => d_vect_mlt_v @@ -781,7 +781,7 @@ contains end subroutine d_vect_axpby_a2 - subroutine d_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine d_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -792,9 +792,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine d_vect_upd_xyz + end subroutine d_vect_abgdxyz subroutine d_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/modules/serial/psb_s_base_vect_mod.F90 b/base/modules/serial/psb_s_base_vect_mod.F90 index 596cd634..26b82c31 100644 --- a/base/modules/serial/psb_s_base_vect_mod.F90 +++ b/base/modules/serial/psb_s_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_s_base_vect_mod procedure, pass(z) :: axpby_v2 => s_base_axpby_v2 procedure, pass(z) :: axpby_a2 => s_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => s_base_upd_xyz + procedure, pass(z) :: abgdxyz => s_base_abgdxyz procedure, pass(w) :: xyzw => s_base_xyzw ! @@ -1137,12 +1137,12 @@ contains end subroutine s_base_axpby_a2 ! - ! UPD_XYZ is invoked via Z, hence the structure below. + ! ABGDXYZ is invoked via Z, hence the structure below. ! ! - !> Function base_upd_xyz + !> Function base_abgdxyz !! \memberof psb_s_base_vect_type - !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1153,7 +1153,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine s_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine s_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1166,11 +1166,11 @@ contains if (x%is_dev().and.(alpha/=szero)) call x%sync() if (y%is_dev().and.(beta/=szero)) call y%sync() if (z%is_dev().and.(delta/=szero)) call z%sync() - call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine s_base_upd_xyz + end subroutine s_base_abgdxyz subroutine s_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_s_vect_mod.F90 b/base/modules/serial/psb_s_vect_mod.F90 index cad4659c..a50b2a0a 100644 --- a/base/modules/serial/psb_s_vect_mod.F90 +++ b/base/modules/serial/psb_s_vect_mod.F90 @@ -102,7 +102,7 @@ module psb_s_vect_mod procedure, pass(z) :: axpby_v2 => s_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => s_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => s_vect_upd_xyz + procedure, pass(z) :: abgdxyz => s_vect_abgdxyz procedure, pass(z) :: xyzw => s_vect_xyzw procedure, pass(y) :: mlt_v => s_vect_mlt_v @@ -781,7 +781,7 @@ contains end subroutine s_vect_axpby_a2 - subroutine s_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine s_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -792,9 +792,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine s_vect_upd_xyz + end subroutine s_vect_abgdxyz subroutine s_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/modules/serial/psb_z_base_vect_mod.F90 b/base/modules/serial/psb_z_base_vect_mod.F90 index 1bbdfba1..a3afc9c1 100644 --- a/base/modules/serial/psb_z_base_vect_mod.F90 +++ b/base/modules/serial/psb_z_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_z_base_vect_mod procedure, pass(z) :: axpby_v2 => z_base_axpby_v2 procedure, pass(z) :: axpby_a2 => z_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => z_base_upd_xyz + procedure, pass(z) :: abgdxyz => z_base_abgdxyz procedure, pass(w) :: xyzw => z_base_xyzw ! @@ -1130,12 +1130,12 @@ contains end subroutine z_base_axpby_a2 ! - ! UPD_XYZ is invoked via Z, hence the structure below. + ! ABGDXYZ is invoked via Z, hence the structure below. ! ! - !> Function base_upd_xyz + !> Function base_abgdxyz !! \memberof psb_z_base_vect_type - !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1146,7 +1146,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine z_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine z_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1159,11 +1159,11 @@ contains if (x%is_dev().and.(alpha/=zzero)) call x%sync() if (y%is_dev().and.(beta/=zzero)) call y%sync() if (z%is_dev().and.(delta/=zzero)) call z%sync() - call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine z_base_upd_xyz + end subroutine z_base_abgdxyz subroutine z_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_z_vect_mod.F90 b/base/modules/serial/psb_z_vect_mod.F90 index 48f2e947..21e0c546 100644 --- a/base/modules/serial/psb_z_vect_mod.F90 +++ b/base/modules/serial/psb_z_vect_mod.F90 @@ -102,7 +102,7 @@ module psb_z_vect_mod procedure, pass(z) :: axpby_v2 => z_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => z_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: upd_xyz => z_vect_upd_xyz + procedure, pass(z) :: abgdxyz => z_vect_abgdxyz procedure, pass(z) :: xyzw => z_vect_xyzw procedure, pass(y) :: mlt_v => z_vect_mlt_v @@ -774,7 +774,7 @@ contains end subroutine z_vect_axpby_a2 - subroutine z_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine z_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -785,9 +785,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine z_vect_upd_xyz + end subroutine z_vect_abgdxyz subroutine z_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/psblas/psb_caxpby.f90 b/base/psblas/psb_caxpby.f90 index 5d80ef00..7c22bb06 100644 --- a/base/psblas/psb_caxpby.f90 +++ b/base/psblas/psb_caxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_caddconst_vect(x,b,z,desc_a,info) end subroutine psb_caddconst_vect -subroutine psb_c_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_cabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_c_upd_xyz_vect + use psb_base_mod, psb_protect_name => psb_cabgdxyz_vect implicit none type(psb_c_vect_type), intent (inout) :: x type(psb_c_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_c_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_c_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_c_upd_xyz_vect +end subroutine psb_cabgdxyz_vect diff --git a/base/psblas/psb_daxpby.f90 b/base/psblas/psb_daxpby.f90 index 38ebe465..1de77647 100644 --- a/base/psblas/psb_daxpby.f90 +++ b/base/psblas/psb_daxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_daddconst_vect(x,b,z,desc_a,info) end subroutine psb_daddconst_vect -subroutine psb_d_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_dabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_d_upd_xyz_vect + use psb_base_mod, psb_protect_name => psb_dabgdxyz_vect implicit none type(psb_d_vect_type), intent (inout) :: x type(psb_d_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_d_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_d_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_d_upd_xyz_vect +end subroutine psb_dabgdxyz_vect diff --git a/base/psblas/psb_saxpby.f90 b/base/psblas/psb_saxpby.f90 index 0055fdbe..1b1f24e6 100644 --- a/base/psblas/psb_saxpby.f90 +++ b/base/psblas/psb_saxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_saddconst_vect(x,b,z,desc_a,info) end subroutine psb_saddconst_vect -subroutine psb_s_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_sabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_s_upd_xyz_vect + use psb_base_mod, psb_protect_name => psb_sabgdxyz_vect implicit none type(psb_s_vect_type), intent (inout) :: x type(psb_s_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_s_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_s_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_s_upd_xyz_vect +end subroutine psb_sabgdxyz_vect diff --git a/base/psblas/psb_zaxpby.f90 b/base/psblas/psb_zaxpby.f90 index e93488e3..0f37a1f4 100644 --- a/base/psblas/psb_zaxpby.f90 +++ b/base/psblas/psb_zaxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_zaddconst_vect(x,b,z,desc_a,info) end subroutine psb_zaddconst_vect -subroutine psb_z_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_zabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_z_upd_xyz_vect + use psb_base_mod, psb_protect_name => psb_zabgdxyz_vect implicit none type(psb_z_vect_type), intent (inout) :: x type(psb_z_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_z_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_z_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_z_upd_xyz_vect +end subroutine psb_zabgdxyz_vect diff --git a/base/serial/psi_c_serial_impl.F90 b/base/serial/psi_c_serial_impl.F90 index e3f1d9a3..e230a1e0 100644 --- a/base/serial/psi_c_serial_impl.F90 +++ b/base/serial/psi_c_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine caxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine caxpbyv2 -subroutine psi_c_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_cabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_c_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='c_upd_xyz' + name='cabgdxyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_c_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_c_upd_xyz +end subroutine psi_cabgdxyz subroutine psi_cxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_cxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='c_xyzw' + name='cabgdxyz' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_d_serial_impl.F90 b/base/serial/psi_d_serial_impl.F90 index d6a9a31d..bf1b2917 100644 --- a/base/serial/psi_d_serial_impl.F90 +++ b/base/serial/psi_d_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine daxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine daxpbyv2 -subroutine psi_d_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_dabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_d_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='d_upd_xyz' + name='dabgdxyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_d_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_d_upd_xyz +end subroutine psi_dabgdxyz subroutine psi_dxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_dxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='d_xyzw' + name='dabgdxyz' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_e_serial_impl.F90 b/base/serial/psi_e_serial_impl.F90 index 37b11a94..911ab4ec 100644 --- a/base/serial/psi_e_serial_impl.F90 +++ b/base/serial/psi_e_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine eaxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine eaxpbyv2 -subroutine psi_e_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_eabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_e_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='e_upd_xyz' + name='eabgdxyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_e_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_e_upd_xyz +end subroutine psi_eabgdxyz subroutine psi_exyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_exyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='e_xyzw' + name='eabgdxyz' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_i2_serial_impl.F90 b/base/serial/psi_i2_serial_impl.F90 index c20cd60b..fb42dfcd 100644 --- a/base/serial/psi_i2_serial_impl.F90 +++ b/base/serial/psi_i2_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine i2axpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine i2axpbyv2 -subroutine psi_i2_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_i2abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_i2_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='i2_upd_xyz' + name='i2abgdxyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_i2_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_i2_upd_xyz +end subroutine psi_i2abgdxyz subroutine psi_i2xyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_i2xyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='i2_xyzw' + name='i2abgdxyz' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_m_serial_impl.F90 b/base/serial/psi_m_serial_impl.F90 index 55913a16..346fd897 100644 --- a/base/serial/psi_m_serial_impl.F90 +++ b/base/serial/psi_m_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine maxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine maxpbyv2 -subroutine psi_m_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_mabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_m_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='m_upd_xyz' + name='mabgdxyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_m_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_m_upd_xyz +end subroutine psi_mabgdxyz subroutine psi_mxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_mxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='m_xyzw' + name='mabgdxyz' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_s_serial_impl.F90 b/base/serial/psi_s_serial_impl.F90 index c3846c8e..52f86bcd 100644 --- a/base/serial/psi_s_serial_impl.F90 +++ b/base/serial/psi_s_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine saxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine saxpbyv2 -subroutine psi_s_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_sabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_s_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='s_upd_xyz' + name='sabgdxyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_s_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_s_upd_xyz +end subroutine psi_sabgdxyz subroutine psi_sxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_sxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='s_xyzw' + name='sabgdxyz' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_z_serial_impl.F90 b/base/serial/psi_z_serial_impl.F90 index 763eae22..7e680273 100644 --- a/base/serial/psi_z_serial_impl.F90 +++ b/base/serial/psi_z_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine zaxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine zaxpbyv2 -subroutine psi_z_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_zabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_z_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='z_upd_xyz' + name='zabgdxyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_z_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_z_upd_xyz +end subroutine psi_zabgdxyz subroutine psi_zxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_zxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='z_xyzw' + name='zabgdxyz' info = psb_success_ if (m.lt.0) then diff --git a/cuda/psb_c_cuda_vect_mod.F90 b/cuda/psb_c_cuda_vect_mod.F90 index 45fafe0a..2c2a4f61 100644 --- a/cuda/psb_c_cuda_vect_mod.F90 +++ b/cuda/psb_c_cuda_vect_mod.F90 @@ -90,7 +90,7 @@ module psb_c_cuda_vect_mod procedure, pass(x) :: dot_a => c_cuda_dot_a procedure, pass(y) :: axpby_v => c_cuda_axpby_v procedure, pass(y) :: axpby_a => c_cuda_axpby_a - procedure, pass(z) :: upd_xyz => c_cuda_upd_xyz + procedure, pass(z) :: abgdxyz => c_cuda_abgdxyz procedure, pass(y) :: mlt_v => c_cuda_mlt_v procedure, pass(y) :: mlt_a => c_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => c_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine c_cuda_axpby_v - subroutine c_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine c_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx d_cuda_dot_a procedure, pass(y) :: axpby_v => d_cuda_axpby_v procedure, pass(y) :: axpby_a => d_cuda_axpby_a - procedure, pass(z) :: upd_xyz => d_cuda_upd_xyz + procedure, pass(z) :: abgdxyz => d_cuda_abgdxyz procedure, pass(y) :: mlt_v => d_cuda_mlt_v procedure, pass(y) :: mlt_a => d_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => d_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine d_cuda_axpby_v - subroutine d_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine d_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx s_cuda_dot_a procedure, pass(y) :: axpby_v => s_cuda_axpby_v procedure, pass(y) :: axpby_a => s_cuda_axpby_a - procedure, pass(z) :: upd_xyz => s_cuda_upd_xyz + procedure, pass(z) :: abgdxyz => s_cuda_abgdxyz procedure, pass(y) :: mlt_v => s_cuda_mlt_v procedure, pass(y) :: mlt_a => s_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => s_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine s_cuda_axpby_v - subroutine s_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine s_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx z_cuda_dot_a procedure, pass(y) :: axpby_v => z_cuda_axpby_v procedure, pass(y) :: axpby_a => z_cuda_axpby_a - procedure, pass(z) :: upd_xyz => z_cuda_upd_xyz + procedure, pass(z) :: abgdxyz => z_cuda_abgdxyz procedure, pass(y) :: mlt_v => z_cuda_mlt_v procedure, pass(y) :: mlt_a => z_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => z_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine z_cuda_axpby_v - subroutine z_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine z_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx x) + type is (psb_c_vect_oacc) + select type(yy => y) + type is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_c_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_c_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_c_oacc_ell_inner_vect_sv +end submodule psb_c_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_c_oacc_ell_mold.F90 b/openacc/impl/psb_c_oacc_ell_mold.F90 new file mode 100644 index 00000000..88331d1d --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_mold(a, b, info) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_c_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_c_oacc_ell_mold +end submodule psb_c_oacc_ell_mold_impl diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..7e703aa2 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_c_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_ell_mv_from_coo +end submodule psb_c_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..7d1f790d --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_c_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + end select + + end subroutine psb_c_oacc_ell_mv_from_fmt +end submodule psb_c_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..9f21c5df --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='c_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_ell_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_ell_reallocate_nz +end submodule psb_c_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_c_oacc_ell_scal.F90 b/openacc/impl/psb_c_oacc_ell_scal.F90 new file mode 100644 index 00000000..b3ea90fb --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_ell_scal +end submodule psb_c_oacc_ell_scal_impl diff --git a/openacc/impl/psb_c_oacc_ell_scals.F90 b/openacc/impl/psb_c_oacc_ell_scals.F90 new file mode 100644 index 00000000..f067f253 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_scals(d, a, info) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_ell_scals +end submodule psb_c_oacc_ell_scals_impl diff --git a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..e65d00ba --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 @@ -0,0 +1,66 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nzt + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nzt + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_c_oacc_ell_vect_mv +end submodule psb_c_oacc_ell_vect_mv_impl diff --git a/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..0840d0d6 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,53 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_c_hll_sparse_mat%allocate(m, n, nz_) + + hksz = a%hksz + nhacks = (m + hksz - 1) / hksz + + if (.not.allocated(a%val)) then + allocate(a%val(nz_ * m)) + allocate(a%ja(nz_ * m)) + allocate(a%irn(m)) + allocate(a%idiag(m)) + allocate(a%hkoffs(nhacks)) + end if + + a%val = czero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + a%hkoffs = 0 + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_allocate_mnnz +end submodule psb_c_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..4c12cdf8 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,85 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, j, k, row, col, nz_per_row + complex(psb_spk_) :: value + integer(psb_ipk_), allocatable :: row_counts(:) + integer(psb_ipk_) :: hacksize, nza + + info = psb_success_ + hacksize = 32 ! Assuming a default hack size of 32 + + call a%set_nrows(b%get_nrows()) + call a%set_ncols(b%get_ncols()) + nz_per_row = a%nzt + + if (.not.allocated(a%val)) then + allocate(a%val(nz_per_row * a%get_nrows())) + allocate(a%ja(nz_per_row * a%get_nrows())) + allocate(a%irn(a%get_nrows())) + allocate(a%idiag(a%get_nrows())) + allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) + end if + a%val = czero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + allocate(row_counts(a%get_nrows())) + row_counts = 0 + + nza = b%get_nzeros() + + !$acc parallel loop present(b, a, row_counts) + do k = 1, nza + row = b%ia(k) + col = b%ja(k) + value = b%val(k) + if (row_counts(row) < nz_per_row) then + a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value + a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col + row_counts(row) = row_counts(row) + 1 + else + info = psb_err_invalid_mat_state_ + !goto 9999 + end if + end do + + a%irn = row_counts + + !$acc parallel loop present(a) + do i = 1, a%get_nrows() + do j = 1, nz_per_row + if (a%ja(j + (i - 1) * nz_per_row) == i) then + a%idiag(i) = j + exit + end if + end do + end do + + ! Calculate hkoffs for HLL format + !$acc parallel loop present(a) + do i = 1, size(a%hkoffs) + a%hkoffs(i) = (i - 1) * hacksize + end do + + deallocate(row_counts) + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_hll_cp_from_coo +end submodule psb_c_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..af6cc1d5 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_c_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_c_oacc_hll_cp_from_fmt +end submodule psb_c_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_hll_csmm.F90 b/openacc/impl/psb_c_oacc_hll_csmm.F90 new file mode 100644 index 00000000..6b0fc637 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_csmm_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(in) :: x(:,:) + complex(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_hll_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_c_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop present(a, x, y) + do j = 1, nxy + do k = 1, nhacks + do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 + y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_csmm +end submodule psb_c_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_c_oacc_hll_csmv.F90 b/openacc/impl/psb_c_oacc_hll_csmv.F90 new file mode 100644 index 00000000..f32e37b7 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_csmv.F90 @@ -0,0 +1,84 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_csmv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(in) :: x(:) + complex(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, hksz, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_hll_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_c_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + ! This loop nest cannot be run with collapse, since + ! the inner loop extent varies. + !$acc parallel loop present(a, x, y) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_csmv +end submodule psb_c_oacc_hll_csmv_impl diff --git a/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..a8d486b2 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_c_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_c_vect_oacc) + select type(yy => y) + type is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_c_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_c_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_c_oacc_hll_inner_vect_sv +end submodule psb_c_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_c_oacc_hll_mold.F90 b/openacc/impl/psb_c_oacc_hll_mold.F90 new file mode 100644 index 00000000..f480f3ab --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_mold(a, b, info) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_c_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_c_oacc_hll_mold +end submodule psb_c_oacc_hll_mold_impl diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..dec52d40 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_c_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_hll_mv_from_coo +end submodule psb_c_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..f2a064cb --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_c_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_c_oacc_hll_mv_from_fmt +end submodule psb_c_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..52983d4e --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='c_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_hll_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_reallocate_nz +end submodule psb_c_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_c_oacc_hll_scal.F90 b/openacc/impl/psb_c_oacc_hll_scal.F90 new file mode 100644 index 00000000..527a0ec1 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_scal.F90 @@ -0,0 +1,62 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_scal +end submodule psb_c_oacc_hll_scal_impl diff --git a/openacc/impl/psb_c_oacc_hll_scals.F90 b/openacc/impl/psb_c_oacc_hll_scals.F90 new file mode 100644 index 00000000..00f24721 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_scals.F90 @@ -0,0 +1,40 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_scals(d, a, info) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_scals +end submodule psb_c_oacc_hll_scals_impl diff --git a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..3b74d11a --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 @@ -0,0 +1,67 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k + complex(psb_spk_) :: tmp + + info = 0 + + !$acc parallel loop present(val, ja, hkoffs, x, y) + do i = 1, nhacks + do k = 0, hksz - 1 + idx = hkoffs(i) + k + if (idx <= hkoffs(i + 1) - 1) then + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz + if (ja(j) > 0) then + tmp = tmp + val(j) * x(ja(j)) + end if + end do + y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) + end if + end do + end do + end subroutine inner_spmv + + end subroutine psb_c_oacc_hll_vect_mv +end submodule psb_c_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 index 4923e12c..b46c5454 100644 --- a/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 +++ b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 @@ -29,7 +29,7 @@ contains allocate(a%idiag(m)) end if - a%val = 0.0_psb_dpk_ + a%val = dzero a%ja = -1 a%irn = 0 a%idiag = 0 diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 index 4e8402e7..c13d1edd 100644 --- a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 @@ -26,7 +26,7 @@ contains allocate(a%irn(a%get_nrows())) allocate(a%idiag(a%get_nrows())) end if - a%val = 0.0_psb_dpk_ + a%val = dzero a%ja = -1 a%irn = 0 a%idiag = 0 diff --git a/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 index 909ee90b..47a6933b 100644 --- a/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 +++ b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 @@ -34,7 +34,7 @@ contains allocate(a%hkoffs(nhacks)) end if - a%val = 0.0_psb_dpk_ + a%val = dzero a%ja = -1 a%irn = 0 a%idiag = 0 diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 index 4a258c74..18bd768b 100644 --- a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 @@ -27,7 +27,7 @@ contains allocate(a%idiag(a%get_nrows())) allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) end if - a%val = 0.0_psb_dpk_ + a%val = dzero a%ja = -1 a%irn = 0 a%idiag = 0 diff --git a/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 new file mode 100644 index 00000000..38c19b78 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 @@ -0,0 +1,47 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_s_ell_sparse_mat%allocate(m, n, nz_) + + if (.not.allocated(a%val)) then + allocate(a%val(m, nz_)) + allocate(a%ja(m, nz_)) + allocate(a%irn(m)) + allocate(a%idiag(m)) + end if + + a%val = szero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_allocate_mnnz +end submodule psb_s_oacc_ell_allocate_mnnz_impl diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 new file mode 100644 index 00000000..9aaaff73 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 @@ -0,0 +1,78 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_cp_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, j, k, row, col, nz_per_row + real(psb_spk_) :: value + integer(psb_ipk_), allocatable :: row_counts(:) + integer(psb_ipk_) :: hacksize, nza + + info = psb_success_ + hacksize = 1 + + call a%set_nrows(b%get_nrows()) + call a%set_ncols(b%get_ncols()) + nz_per_row = a%nzt + + if (.not.allocated(a%val)) then + allocate(a%val(a%get_nrows(), nz_per_row)) + allocate(a%ja(a%get_nrows(), nz_per_row)) + allocate(a%irn(a%get_nrows())) + allocate(a%idiag(a%get_nrows())) + end if + a%val = szero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + allocate(row_counts(a%get_nrows())) + row_counts = 0 + + nza = b%get_nzeros() + + !$acc parallel loop present(b, a, row_counts) + do k = 1, nza + row = b%ia(k) + col = b%ja(k) + value = b%val(k) + if (row_counts(row) < nz_per_row) then + a%val(row, row_counts(row) + 1) = value + a%ja(row, row_counts(row) + 1) = col + row_counts(row) = row_counts(row) + 1 + else + info = psb_err_invalid_mat_state_ + !goto 9999 + end if + end do + + a%irn = row_counts + + !$acc parallel loop present(a) + do i = 1, a%get_nrows() + do j = 1, nz_per_row + if (a%ja(i, j) == i) then + a%idiag(i) = j + exit + end if + end do + end do + + deallocate(row_counts) + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_ell_cp_from_coo +end submodule psb_s_oacc_ell_cp_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 new file mode 100644 index 00000000..d4c1a233 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_cp_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_s_ell_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + end select + + end subroutine psb_s_oacc_ell_cp_from_fmt +end submodule psb_s_oacc_ell_cp_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_ell_csmm.F90 b/openacc/impl/psb_s_oacc_ell_csmm.F90 new file mode 100644 index 00000000..63219384 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_csmm_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:,:) + real(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, k, nxy, nzt + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_ell_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_s_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, n + do k = 1, nzt + y(i, j) = y(i, j) + alpha * a%val(i, k) * x(a%ja(i, k), j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_csmm +end submodule psb_s_oacc_ell_csmm_impl diff --git a/openacc/impl/psb_s_oacc_ell_csmv.F90 b/openacc/impl/psb_s_oacc_ell_csmv.F90 new file mode 100644 index 00000000..d4aaa9d4 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_csmv.F90 @@ -0,0 +1,82 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_csmv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:) + real(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, nzt + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_ell_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_s_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nzt = a%nzt + + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop present(a, x, y) + do i = 1, m + do j = 1, nzt + y(i) = y(i) + alpha * a%val(i, j) * x(a%ja(i, j)) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_csmv +end submodule psb_s_oacc_ell_csmv_impl diff --git a/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 new file mode 100644 index 00000000..ba42af12 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 @@ -0,0 +1,85 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_ell_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nzt + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_s_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_s_vect_oacc) + select type(yy => y) + type is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_s_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_s_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_s_oacc_ell_inner_vect_sv +end submodule psb_s_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_s_oacc_ell_mold.F90 b/openacc/impl/psb_s_oacc_ell_mold.F90 new file mode 100644 index 00000000..92f18f25 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_mold(a, b, info) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_s_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_s_oacc_ell_mold +end submodule psb_s_oacc_ell_mold_impl diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..d6bbec13 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_s_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_ell_mv_from_coo +end submodule psb_s_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..ebb82901 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_s_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + end select + + end subroutine psb_s_oacc_ell_mv_from_fmt +end submodule psb_s_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..373c2b67 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='s_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_ell_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_reallocate_nz +end submodule psb_s_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_s_oacc_ell_scal.F90 b/openacc/impl/psb_s_oacc_ell_scal.F90 new file mode 100644 index 00000000..180d8f9a --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_scal +end submodule psb_s_oacc_ell_scal_impl diff --git a/openacc/impl/psb_s_oacc_ell_scals.F90 b/openacc/impl/psb_s_oacc_ell_scals.F90 new file mode 100644 index 00000000..c1c305af --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_scals(d, a, info) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_scals +end submodule psb_s_oacc_ell_scals_impl diff --git a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..f48ba041 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 @@ -0,0 +1,66 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nzt + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nzt + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_s_oacc_ell_vect_mv +end submodule psb_s_oacc_ell_vect_mv_impl diff --git a/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..c67ea621 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,53 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_s_hll_sparse_mat%allocate(m, n, nz_) + + hksz = a%hksz + nhacks = (m + hksz - 1) / hksz + + if (.not.allocated(a%val)) then + allocate(a%val(nz_ * m)) + allocate(a%ja(nz_ * m)) + allocate(a%irn(m)) + allocate(a%idiag(m)) + allocate(a%hkoffs(nhacks)) + end if + + a%val = szero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + a%hkoffs = 0 + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_allocate_mnnz +end submodule psb_s_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..34a0b5d5 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,85 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, j, k, row, col, nz_per_row + real(psb_spk_) :: value + integer(psb_ipk_), allocatable :: row_counts(:) + integer(psb_ipk_) :: hacksize, nza + + info = psb_success_ + hacksize = 32 ! Assuming a default hack size of 32 + + call a%set_nrows(b%get_nrows()) + call a%set_ncols(b%get_ncols()) + nz_per_row = a%nzt + + if (.not.allocated(a%val)) then + allocate(a%val(nz_per_row * a%get_nrows())) + allocate(a%ja(nz_per_row * a%get_nrows())) + allocate(a%irn(a%get_nrows())) + allocate(a%idiag(a%get_nrows())) + allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) + end if + a%val = szero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + allocate(row_counts(a%get_nrows())) + row_counts = 0 + + nza = b%get_nzeros() + + !$acc parallel loop present(b, a, row_counts) + do k = 1, nza + row = b%ia(k) + col = b%ja(k) + value = b%val(k) + if (row_counts(row) < nz_per_row) then + a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value + a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col + row_counts(row) = row_counts(row) + 1 + else + info = psb_err_invalid_mat_state_ + !goto 9999 + end if + end do + + a%irn = row_counts + + !$acc parallel loop present(a) + do i = 1, a%get_nrows() + do j = 1, nz_per_row + if (a%ja(j + (i - 1) * nz_per_row) == i) then + a%idiag(i) = j + exit + end if + end do + end do + + ! Calculate hkoffs for HLL format + !$acc parallel loop present(a) + do i = 1, size(a%hkoffs) + a%hkoffs(i) = (i - 1) * hacksize + end do + + deallocate(row_counts) + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_hll_cp_from_coo +end submodule psb_s_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..4d023f8b --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_s_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_s_oacc_hll_cp_from_fmt +end submodule psb_s_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_hll_csmm.F90 b/openacc/impl/psb_s_oacc_hll_csmm.F90 new file mode 100644 index 00000000..803071eb --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_csmm_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:,:) + real(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_hll_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_s_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop present(a, x, y) + do j = 1, nxy + do k = 1, nhacks + do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 + y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_csmm +end submodule psb_s_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_s_oacc_hll_csmv.F90 b/openacc/impl/psb_s_oacc_hll_csmv.F90 new file mode 100644 index 00000000..b3c0cae8 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_csmv.F90 @@ -0,0 +1,84 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_csmv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:) + real(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, hksz, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_hll_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_s_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + ! This loop nest cannot be run with collapse, since + ! the inner loop extent varies. + !$acc parallel loop present(a, x, y) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_csmv +end submodule psb_s_oacc_hll_csmv_impl diff --git a/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..900b8982 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_s_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_s_vect_oacc) + select type(yy => y) + type is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_s_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_s_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_s_oacc_hll_inner_vect_sv +end submodule psb_s_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_s_oacc_hll_mold.F90 b/openacc/impl/psb_s_oacc_hll_mold.F90 new file mode 100644 index 00000000..1e43b65b --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_mold(a, b, info) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_s_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_s_oacc_hll_mold +end submodule psb_s_oacc_hll_mold_impl diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..08b553b7 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_s_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_hll_mv_from_coo +end submodule psb_s_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..d5867289 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_s_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_s_oacc_hll_mv_from_fmt +end submodule psb_s_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..7768d1ed --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='s_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_hll_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_reallocate_nz +end submodule psb_s_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_s_oacc_hll_scal.F90 b/openacc/impl/psb_s_oacc_hll_scal.F90 new file mode 100644 index 00000000..ae36465e --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_scal.F90 @@ -0,0 +1,62 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_scal +end submodule psb_s_oacc_hll_scal_impl diff --git a/openacc/impl/psb_s_oacc_hll_scals.F90 b/openacc/impl/psb_s_oacc_hll_scals.F90 new file mode 100644 index 00000000..360ea84d --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_scals.F90 @@ -0,0 +1,40 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_scals(d, a, info) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_scals +end submodule psb_s_oacc_hll_scals_impl diff --git a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..9d9e9197 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 @@ -0,0 +1,67 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k + real(psb_spk_) :: tmp + + info = 0 + + !$acc parallel loop present(val, ja, hkoffs, x, y) + do i = 1, nhacks + do k = 0, hksz - 1 + idx = hkoffs(i) + k + if (idx <= hkoffs(i + 1) - 1) then + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz + if (ja(j) > 0) then + tmp = tmp + val(j) * x(ja(j)) + end if + end do + y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) + end if + end do + end do + end subroutine inner_spmv + + end subroutine psb_s_oacc_hll_vect_mv +end submodule psb_s_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 new file mode 100644 index 00000000..48a5e202 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 @@ -0,0 +1,47 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_z_ell_sparse_mat%allocate(m, n, nz_) + + if (.not.allocated(a%val)) then + allocate(a%val(m, nz_)) + allocate(a%ja(m, nz_)) + allocate(a%irn(m)) + allocate(a%idiag(m)) + end if + + a%val = zzero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_allocate_mnnz +end submodule psb_z_oacc_ell_allocate_mnnz_impl diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 new file mode 100644 index 00000000..e4d3b731 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 @@ -0,0 +1,78 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_cp_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, j, k, row, col, nz_per_row + complex(psb_dpk_) :: value + integer(psb_ipk_), allocatable :: row_counts(:) + integer(psb_ipk_) :: hacksize, nza + + info = psb_success_ + hacksize = 1 + + call a%set_nrows(b%get_nrows()) + call a%set_ncols(b%get_ncols()) + nz_per_row = a%nzt + + if (.not.allocated(a%val)) then + allocate(a%val(a%get_nrows(), nz_per_row)) + allocate(a%ja(a%get_nrows(), nz_per_row)) + allocate(a%irn(a%get_nrows())) + allocate(a%idiag(a%get_nrows())) + end if + a%val = zzero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + allocate(row_counts(a%get_nrows())) + row_counts = 0 + + nza = b%get_nzeros() + + !$acc parallel loop present(b, a, row_counts) + do k = 1, nza + row = b%ia(k) + col = b%ja(k) + value = b%val(k) + if (row_counts(row) < nz_per_row) then + a%val(row, row_counts(row) + 1) = value + a%ja(row, row_counts(row) + 1) = col + row_counts(row) = row_counts(row) + 1 + else + info = psb_err_invalid_mat_state_ + !goto 9999 + end if + end do + + a%irn = row_counts + + !$acc parallel loop present(a) + do i = 1, a%get_nrows() + do j = 1, nz_per_row + if (a%ja(i, j) == i) then + a%idiag(i) = j + exit + end if + end do + end do + + deallocate(row_counts) + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_ell_cp_from_coo +end submodule psb_z_oacc_ell_cp_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 new file mode 100644 index 00000000..98404ae2 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_cp_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_z_ell_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + end select + + end subroutine psb_z_oacc_ell_cp_from_fmt +end submodule psb_z_oacc_ell_cp_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_ell_csmm.F90 b/openacc/impl/psb_z_oacc_ell_csmm.F90 new file mode 100644 index 00000000..406ca8c5 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_csmm_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:,:) + complex(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, k, nxy, nzt + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_ell_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_z_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, n + do k = 1, nzt + y(i, j) = y(i, j) + alpha * a%val(i, k) * x(a%ja(i, k), j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_csmm +end submodule psb_z_oacc_ell_csmm_impl diff --git a/openacc/impl/psb_z_oacc_ell_csmv.F90 b/openacc/impl/psb_z_oacc_ell_csmv.F90 new file mode 100644 index 00000000..502dd4f1 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_csmv.F90 @@ -0,0 +1,82 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_csmv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:) + complex(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, nzt + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_ell_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_z_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nzt = a%nzt + + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + + !$acc parallel loop present(a, x, y) + do i = 1, m + do j = 1, nzt + y(i) = y(i) + alpha * a%val(i, j) * x(a%ja(i, j)) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_csmv +end submodule psb_z_oacc_ell_csmv_impl diff --git a/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 new file mode 100644 index 00000000..f445a6b4 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 @@ -0,0 +1,85 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_ell_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nzt + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_z_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_z_vect_oacc) + select type(yy => y) + type is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_z_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_z_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_z_oacc_ell_inner_vect_sv +end submodule psb_z_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_z_oacc_ell_mold.F90 b/openacc/impl/psb_z_oacc_ell_mold.F90 new file mode 100644 index 00000000..fcc222de --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_mold(a, b, info) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_z_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_z_oacc_ell_mold +end submodule psb_z_oacc_ell_mold_impl diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..26388e5e --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_z_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_ell_mv_from_coo +end submodule psb_z_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..e0f75828 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_z_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag) + end select + + end subroutine psb_z_oacc_ell_mv_from_fmt +end submodule psb_z_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..8fd3ad77 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='z_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_ell_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_reallocate_nz +end submodule psb_z_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_z_oacc_ell_scal.F90 b/openacc/impl/psb_z_oacc_ell_scal.F90 new file mode 100644 index 00000000..e3d25ccb --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_scal +end submodule psb_z_oacc_ell_scal_impl diff --git a/openacc/impl/psb_z_oacc_ell_scals.F90 b/openacc/impl/psb_z_oacc_ell_scals.F90 new file mode 100644 index 00000000..c382627a --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_scals(d, a, info) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_scals +end submodule psb_z_oacc_ell_scals_impl diff --git a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..ecb61adf --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 @@ -0,0 +1,66 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nzt + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nzt + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_z_oacc_ell_vect_mv +end submodule psb_z_oacc_ell_vect_mv_impl diff --git a/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..c398d259 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,53 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_z_hll_sparse_mat%allocate(m, n, nz_) + + hksz = a%hksz + nhacks = (m + hksz - 1) / hksz + + if (.not.allocated(a%val)) then + allocate(a%val(nz_ * m)) + allocate(a%ja(nz_ * m)) + allocate(a%irn(m)) + allocate(a%idiag(m)) + allocate(a%hkoffs(nhacks)) + end if + + a%val = zzero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + a%hkoffs = 0 + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_allocate_mnnz +end submodule psb_z_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..62be2252 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,85 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, j, k, row, col, nz_per_row + complex(psb_dpk_) :: value + integer(psb_ipk_), allocatable :: row_counts(:) + integer(psb_ipk_) :: hacksize, nza + + info = psb_success_ + hacksize = 32 ! Assuming a default hack size of 32 + + call a%set_nrows(b%get_nrows()) + call a%set_ncols(b%get_ncols()) + nz_per_row = a%nzt + + if (.not.allocated(a%val)) then + allocate(a%val(nz_per_row * a%get_nrows())) + allocate(a%ja(nz_per_row * a%get_nrows())) + allocate(a%irn(a%get_nrows())) + allocate(a%idiag(a%get_nrows())) + allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) + end if + a%val = zzero + a%ja = -1 + a%irn = 0 + a%idiag = 0 + + allocate(row_counts(a%get_nrows())) + row_counts = 0 + + nza = b%get_nzeros() + + !$acc parallel loop present(b, a, row_counts) + do k = 1, nza + row = b%ia(k) + col = b%ja(k) + value = b%val(k) + if (row_counts(row) < nz_per_row) then + a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value + a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col + row_counts(row) = row_counts(row) + 1 + else + info = psb_err_invalid_mat_state_ + !goto 9999 + end if + end do + + a%irn = row_counts + + !$acc parallel loop present(a) + do i = 1, a%get_nrows() + do j = 1, nz_per_row + if (a%ja(j + (i - 1) * nz_per_row) == i) then + a%idiag(i) = j + exit + end if + end do + end do + + ! Calculate hkoffs for HLL format + !$acc parallel loop present(a) + do i = 1, size(a%hkoffs) + a%hkoffs(i) = (i - 1) * hacksize + end do + + deallocate(row_counts) + + call a%set_dev() + if (info /= 0) goto 9999 + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_hll_cp_from_coo +end submodule psb_z_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..f267e1c6 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%psb_z_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_z_oacc_hll_cp_from_fmt +end submodule psb_z_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_hll_csmm.F90 b/openacc/impl/psb_z_oacc_hll_csmm.F90 new file mode 100644 index 00000000..3cfe5b32 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_csmm.F90 @@ -0,0 +1,86 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_csmm_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:,:) + complex(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_hll_csmm' + logical, parameter :: debug = .false. + + info = psb_success_ + call psb_erractionsave(err_act) + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_z_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + nxy = min(size(x,2), size(y,2)) + nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz + + !$acc parallel loop collapse(2) present(a, x, y) + do j = 1, nxy + do i = 1, m + y(i,j) = beta * y(i,j) + end do + end do + + !$acc parallel loop present(a, x, y) + do j = 1, nxy + do k = 1, nhacks + do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 + y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) + end do + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_csmm +end submodule psb_z_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_z_oacc_hll_csmv.F90 b/openacc/impl/psb_z_oacc_hll_csmv.F90 new file mode 100644 index 00000000..923bc061 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_csmv.F90 @@ -0,0 +1,84 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_csmv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:) + complex(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + character :: trans_ + integer(psb_ipk_) :: i, j, m, n, hksz, nhacks + logical :: tra + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_hll_csmv' + logical, parameter :: debug = .false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra) then + m = a%get_ncols() + n = a%get_nrows() + else + n = a%get_ncols() + m = a%get_nrows() + end if + + if (size(x,1) < n) then + info = 36 + call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) + goto 9999 + end if + + if (size(y,1) < m) then + info = 36 + call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) + goto 9999 + end if + + if (tra) then + call a%psb_z_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) + else + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + + !$acc parallel loop present(a, x, y) + do i = 1, m + y(i) = beta * y(i) + end do + ! This loop nest cannot be run with collapse, since + ! the inner loop extent varies. + !$acc parallel loop present(a, x, y) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) + end do + end do + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_csmv +end submodule psb_z_oacc_hll_csmv_impl diff --git a/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..1d068542 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_z_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_z_vect_oacc) + select type(yy => y) + type is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_z_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_z_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_z_oacc_hll_inner_vect_sv +end submodule psb_z_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_z_oacc_hll_mold.F90 b/openacc/impl/psb_z_oacc_hll_mold.F90 new file mode 100644 index 00000000..f614ad89 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_mold(a, b, info) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_z_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_z_oacc_hll_mold +end submodule psb_z_oacc_hll_mold_impl diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..2ff574d3 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,25 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%psb_z_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_hll_mv_from_coo +end submodule psb_z_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..5fa00e38 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,24 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%psb_z_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + + !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + end select + + end subroutine psb_z_oacc_hll_mv_from_fmt +end submodule psb_z_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..5b49efe5 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='z_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_hll_sparse_mat%reallocate(nz) + + call a%set_dev() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_reallocate_nz +end submodule psb_z_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_z_oacc_hll_scal.F90 b/openacc/impl/psb_z_oacc_hll_scal.F90 new file mode 100644 index 00000000..a2f9aee7 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_scal.F90 @@ -0,0 +1,62 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_scal +end submodule psb_z_oacc_hll_scal_impl diff --git a/openacc/impl/psb_z_oacc_hll_scals.F90 b/openacc/impl/psb_z_oacc_hll_scals.F90 new file mode 100644 index 00000000..888115cd --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_scals.F90 @@ -0,0 +1,40 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_scals(d, a, info) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_scals +end submodule psb_z_oacc_hll_scals_impl diff --git a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..89d970c0 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 @@ -0,0 +1,67 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + + if (a%is_host()) call a%sync() + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k + complex(psb_dpk_) :: tmp + + info = 0 + + !$acc parallel loop present(val, ja, hkoffs, x, y) + do i = 1, nhacks + do k = 0, hksz - 1 + idx = hkoffs(i) + k + if (idx <= hkoffs(i + 1) - 1) then + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz + if (ja(j) > 0) then + tmp = tmp + val(j) * x(ja(j)) + end if + end do + y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) + end if + end do + end do + end subroutine inner_spmv + + end subroutine psb_z_oacc_hll_vect_mv +end submodule psb_z_oacc_hll_vect_mv_impl diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..102d41c5 --- /dev/null +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -0,0 +1,341 @@ +module psb_c_oacc_ell_mat_mod + use iso_c_binding + use psb_c_mat_mod + use psb_c_ell_mat_mod + use psb_c_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_ell_sparse_mat) :: psb_c_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => c_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => c_oacc_ell_sizeof + procedure, pass(a) :: is_host => c_oacc_ell_is_host + procedure, pass(a) :: is_sync => c_oacc_ell_is_sync + procedure, pass(a) :: is_dev => c_oacc_ell_is_dev + procedure, pass(a) :: set_host => c_oacc_ell_set_host + procedure, pass(a) :: set_sync => c_oacc_ell_set_sync + procedure, pass(a) :: set_dev => c_oacc_ell_set_dev + procedure, pass(a) :: sync_space => c_oacc_ell_sync_space + procedure, pass(a) :: sync => c_oacc_ell_sync + procedure, pass(a) :: free => c_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_c_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_c_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_c_oacc_ell_csmv + procedure, pass(a) :: scals => psb_c_oacc_ell_scals + procedure, pass(a) :: scalv => psb_c_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_c_oacc_ell_mold + + end type psb_c_oacc_ell_sparse_mat + + interface + module subroutine psb_c_oacc_ell_mold(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_mold + end interface + + interface + module subroutine psb_c_oacc_ell_cp_from_fmt(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_c_oacc_ell_mv_from_coo(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_c_oacc_ell_mv_from_fmt(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_c_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_c_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_c_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta, x(:,:) + complex(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_ell_csmm + end interface + + interface + module subroutine psb_c_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta, x(:) + complex(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_ell_csmv + end interface + + interface + module subroutine psb_c_oacc_ell_scals(d, a, info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_scals + end interface + + interface + module subroutine psb_c_oacc_ell_scal(d,a,info,side) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_c_oacc_ell_scal + end interface + + interface + module subroutine psb_c_oacc_ell_reallocate_nz(nz,a) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_c_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_c_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_c_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_c_oacc_ell_cp_from_coo(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_cp_from_coo + end interface + +contains + + subroutine c_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + + call a%psb_c_ell_sparse_mat%free() + + return + end subroutine c_oacc_ell_free + + + function c_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function c_oacc_ell_sizeof + + subroutine c_oacc_ell_sync_space(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call c_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + + contains + subroutine c_oacc_create_dev(v) + implicit none + complex(psb_spk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine c_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + end subroutine c_oacc_ell_sync_space + + + + function c_oacc_ell_is_host(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function c_oacc_ell_is_host + + function c_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function c_oacc_ell_is_sync + + function c_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function c_oacc_ell_is_dev + + subroutine c_oacc_ell_set_host(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine c_oacc_ell_set_host + + subroutine c_oacc_ell_set_sync(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine c_oacc_ell_set_sync + + subroutine c_oacc_ell_set_dev(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine c_oacc_ell_set_dev + + function c_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELL_oacc' + end function c_oacc_ell_get_fmt + + subroutine c_oacc_ell_sync(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_c_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call c_oacc_ell_to_host(a%val) + call i_oacc_ell_to_host(a%ja) + call i_oacc_ell_to_host_scalar(a%irn) + call i_oacc_ell_to_host_scalar(a%idiag) + else if (a%is_host()) then + call c_oacc_ell_to_dev(a%val) + call i_oacc_ell_to_dev(a%ja) + call i_oacc_ell_to_dev_scalar(a%irn) + call i_oacc_ell_to_dev_scalar(a%idiag) + end if + call tmpa%set_sync() + end subroutine c_oacc_ell_sync + + subroutine c_oacc_ell_to_host(v) + implicit none + complex(psb_spk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine c_oacc_ell_to_host + + subroutine c_oacc_ell_to_host_scalar(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine c_oacc_ell_to_host_scalar + + subroutine i_oacc_ell_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev + + subroutine i_oacc_ell_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev_scalar + + subroutine i_oacc_ell_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host + + subroutine i_oacc_ell_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host_scalar +end module psb_c_oacc_ell_mat_mod diff --git a/openacc/psb_c_oacc_hll_mat_mod.F90 b/openacc/psb_c_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..faad0a1b --- /dev/null +++ b/openacc/psb_c_oacc_hll_mat_mod.F90 @@ -0,0 +1,352 @@ +module psb_c_oacc_hll_mat_mod + use iso_c_binding + use psb_c_mat_mod + use psb_c_hll_mat_mod + use psb_c_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_hll_sparse_mat) :: psb_c_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => c_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => c_oacc_hll_sizeof + procedure, pass(a) :: is_host => c_oacc_hll_is_host + procedure, pass(a) :: is_sync => c_oacc_hll_is_sync + procedure, pass(a) :: is_dev => c_oacc_hll_is_dev + procedure, pass(a) :: set_host => c_oacc_hll_set_host + procedure, pass(a) :: set_sync => c_oacc_hll_set_sync + procedure, pass(a) :: set_dev => c_oacc_hll_set_dev + procedure, pass(a) :: sync_space => c_oacc_hll_sync_space + procedure, pass(a) :: sync => c_oacc_hll_sync + procedure, pass(a) :: free => c_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_c_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_c_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_c_oacc_hll_csmv + procedure, pass(a) :: scals => psb_c_oacc_hll_scals + procedure, pass(a) :: scalv => psb_c_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_c_oacc_hll_mold + + end type psb_c_oacc_hll_sparse_mat + + interface + module subroutine psb_c_oacc_hll_mold(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_mold + end interface + + interface + module subroutine psb_c_oacc_hll_cp_from_fmt(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_c_oacc_hll_mv_from_coo(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_c_oacc_hll_mv_from_fmt(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_c_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_c_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_c_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta, x(:,:) + complex(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_hll_csmm + end interface + + interface + module subroutine psb_c_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta, x(:) + complex(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_hll_csmv + end interface + + interface + module subroutine psb_c_oacc_hll_scals(d, a, info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_scals + end interface + + interface + module subroutine psb_c_oacc_hll_scal(d,a,info,side) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_c_oacc_hll_scal + end interface + + interface + module subroutine psb_c_oacc_hll_reallocate_nz(nz,a) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_c_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_c_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_c_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_c_oacc_hll_cp_from_coo(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_cp_from_coo + end interface + +contains + + subroutine c_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + if (allocated(a%hkoffs)) then + !$acc exit data delete(a%hkoffs) + end if + + call a%psb_c_hll_sparse_mat%free() + + return + end subroutine c_oacc_hll_free + + function c_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function c_oacc_hll_sizeof + + + + function c_oacc_hll_is_host(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function c_oacc_hll_is_host + + function c_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function c_oacc_hll_is_sync + + function c_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function c_oacc_hll_is_dev + + subroutine c_oacc_hll_set_host(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine c_oacc_hll_set_host + + subroutine c_oacc_hll_set_sync(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine c_oacc_hll_set_sync + + subroutine c_oacc_hll_set_dev(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine c_oacc_hll_set_dev + + function c_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLL_oacc' + end function c_oacc_hll_get_fmt + + subroutine c_oacc_hll_sync_space(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call c_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + if (allocated(a%hkoffs)) then + call i_oacc_create_dev_scalar(a%hkoffs) + end if + + contains + subroutine c_oacc_create_dev(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine c_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + + end subroutine c_oacc_hll_sync_space + + + subroutine c_oacc_hll_sync(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_c_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call c_oacc_hll_to_host(a%val) + call i_oacc_hll_to_host(a%ja) + call i_oacc_hll_to_host_scalar(a%irn) + call i_oacc_hll_to_host_scalar(a%idiag) + call i_oacc_hll_to_host_scalar(a%hkoffs) + else if (a%is_host()) then + call c_oacc_hll_to_dev(a%val) + call i_oacc_hll_to_dev(a%ja) + call i_oacc_hll_to_dev_scalar(a%irn) + call i_oacc_hll_to_dev_scalar(a%idiag) + call i_oacc_hll_to_dev_scalar(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine c_oacc_hll_sync + + subroutine c_oacc_hll_to_host(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine c_oacc_hll_to_host + + subroutine c_oacc_hll_to_dev(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine c_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host + + subroutine i_oacc_hll_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host_scalar + + subroutine i_oacc_hll_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev_scalar + + +end module psb_c_oacc_hll_mat_mod diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index 6f9545ea..9225f159 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -42,6 +42,7 @@ module psb_c_oacc_vect_mod procedure, pass(y) :: sctb_buf => c_oacc_sctb_buf procedure, pass(x) :: get_size => c_oacc_get_size + procedure, pass(x) :: dot_v => c_oacc_vect_dot procedure, pass(x) :: dot_a => c_oacc_dot_a procedure, pass(y) :: axpby_v => c_oacc_axpby_v @@ -70,7 +71,6 @@ module psb_c_oacc_vect_mod end subroutine c_oacc_mlt_v end interface - interface subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import @@ -83,7 +83,7 @@ module psb_c_oacc_vect_mod character(len=1), intent(in), optional :: conjgx, conjgy end subroutine c_oacc_mlt_v_2 end interface - + contains subroutine c_oacc_absval1(x) @@ -432,7 +432,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() if (y%is_host()) call y%sync_space() !$acc parallel loop @@ -459,7 +459,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'c_oacc_sctb_x') return @@ -475,8 +475,6 @@ contains call y%set_dev() end subroutine c_oacc_sctb_x - - subroutine c_oacc_sctb(n, idx, x, beta, y) use psb_base_mod implicit none @@ -498,7 +496,6 @@ contains call y%set_host() end subroutine c_oacc_sctb - subroutine c_oacc_gthzbuf(i, n, idx, x) use psb_base_mod implicit none @@ -515,7 +512,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'c_oacc_gthzbuf') return @@ -542,7 +539,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'c_oacc_gthzv_x') return @@ -577,7 +574,7 @@ contains select type(vval => val) type is (psb_c_vect_oacc) if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space(info) + if (virl%is_host()) call virl%sync_space() if (x%is_host()) call x%sync_space() !$acc parallel loop do i = 1, n @@ -591,7 +588,7 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space(info) + if (virl%is_dev()) call virl%sync_space() end select select type(vval => val) type is (psb_c_vect_oacc) @@ -607,8 +604,6 @@ contains end subroutine c_oacc_ins_v - - subroutine c_oacc_ins_a(n, irl, val, dupl, x, info) use psi_serial_mod implicit none @@ -628,8 +623,6 @@ contains end subroutine c_oacc_ins_a - - subroutine c_oacc_bld_mn(x, n) use psb_base_mod implicit none @@ -668,7 +661,6 @@ contains end subroutine c_oacc_bld_x - subroutine c_oacc_asb_m(n, x, info) use psb_base_mod implicit none @@ -696,8 +688,6 @@ contains end if end subroutine c_oacc_asb_m - - subroutine c_oacc_set_scal(x, val, first, last) class(psb_c_vect_oacc), intent(inout) :: x complex(psb_spk_), intent(in) :: val @@ -718,8 +708,6 @@ contains call x%set_dev() end subroutine c_oacc_set_scal - - subroutine c_oacc_zero(x) use psi_serial_mod implicit none @@ -743,6 +731,7 @@ contains end function c_oacc_get_fmt + function c_oacc_vect_dot(n, x, y) result(res) implicit none class(psb_c_vect_oacc), intent(inout) :: x @@ -776,9 +765,6 @@ contains end function c_oacc_vect_dot - - - function c_oacc_dot_a(n, x, y) result(res) implicit none class(psb_c_vect_oacc), intent(inout) :: x @@ -910,7 +896,6 @@ contains end if end subroutine c_oacc_vect_all - subroutine c_oacc_vect_free(x, info) implicit none class(psb_c_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 8c5946ba..042c0ff3 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -1,343 +1,341 @@ module psb_d_oacc_ell_mat_mod - use iso_c_binding - use psb_d_mat_mod - use psb_d_ell_mat_mod - use psb_d_oacc_vect_mod - - integer(psb_ipk_), parameter, private :: is_host = -1 - integer(psb_ipk_), parameter, private :: is_sync = 0 - integer(psb_ipk_), parameter, private :: is_dev = 1 - - type, extends(psb_d_ell_sparse_mat) :: psb_d_oacc_ell_sparse_mat - integer(psb_ipk_) :: devstate = is_host - contains - procedure, nopass :: get_fmt => d_oacc_ell_get_fmt - procedure, pass(a) :: sizeof => d_oacc_ell_sizeof - procedure, pass(a) :: is_host => d_oacc_ell_is_host - procedure, pass(a) :: is_sync => d_oacc_ell_is_sync - procedure, pass(a) :: is_dev => d_oacc_ell_is_dev - procedure, pass(a) :: set_host => d_oacc_ell_set_host - procedure, pass(a) :: set_sync => d_oacc_ell_set_sync - procedure, pass(a) :: set_dev => d_oacc_ell_set_dev - procedure, pass(a) :: sync_space => d_oacc_ell_sync_space - procedure, pass(a) :: sync => d_oacc_ell_sync - procedure, pass(a) :: free => d_oacc_ell_free - procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv - procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_d_oacc_ell_csmv - procedure, pass(a) :: scals => psb_d_oacc_ell_scals - procedure, pass(a) :: scalv => psb_d_oacc_ell_scal - procedure, pass(a) :: reallocate_nz => psb_d_oacc_ell_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_d_oacc_ell_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_d_oacc_ell_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_d_oacc_ell_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_d_oacc_ell_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_d_oacc_ell_mv_from_fmt - procedure, pass(a) :: mold => psb_d_oacc_ell_mold - - end type psb_d_oacc_ell_sparse_mat - - interface - module subroutine psb_d_oacc_ell_mold(a,b,info) - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - class(psb_d_base_sparse_mat), intent(inout), allocatable :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_ell_mold - end interface - - interface - module subroutine psb_d_oacc_ell_cp_from_fmt(a,b,info) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_ell_cp_from_fmt - end interface - - interface - module subroutine psb_d_oacc_ell_mv_from_coo(a,b,info) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_ell_mv_from_coo - end interface - - interface - module subroutine psb_d_oacc_ell_mv_from_fmt(a,b,info) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_ell_mv_from_fmt - end interface - - interface - module subroutine psb_d_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x, y - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_ell_vect_mv - end interface - - interface - module subroutine psb_d_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x,y - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_ell_inner_vect_sv - end interface - - interface - module subroutine psb_d_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_ell_csmm - end interface - - interface - module subroutine psb_d_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_ell_csmv - end interface - - interface - module subroutine psb_d_oacc_ell_scals(d, a, info) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_ell_scals - end interface - - interface - module subroutine psb_d_oacc_ell_scal(d,a,info,side) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: side - end subroutine psb_d_oacc_ell_scal - end interface - - interface - module subroutine psb_d_oacc_ell_reallocate_nz(nz,a) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in) :: nz - end subroutine psb_d_oacc_ell_reallocate_nz - end interface - - interface - module subroutine psb_d_oacc_ell_allocate_mnnz(m,n,a,nz) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in) :: m,n - integer(psb_ipk_), intent(in), optional :: nz - end subroutine psb_d_oacc_ell_allocate_mnnz - end interface - - interface - module subroutine psb_d_oacc_ell_cp_from_coo(a,b,info) - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_ell_cp_from_coo - end interface - - contains - - subroutine d_oacc_ell_free(a) - use psb_base_mod - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - integer(psb_ipk_) :: info - - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if - - call a%psb_d_ell_sparse_mat%free() - - return - end subroutine d_oacc_ell_free - - - function d_oacc_ell_sizeof(a) result(res) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - integer(psb_epk_) :: res - - if (a%is_dev()) call a%sync() - - res = 8 - res = res + psb_sizeof_dp * size(a%val) - res = res + psb_sizeof_ip * size(a%ja) - res = res + psb_sizeof_ip * size(a%irn) - res = res + psb_sizeof_ip * size(a%idiag) - - end function d_oacc_ell_sizeof - - subroutine d_oacc_ell_sync_space(a) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - - if (allocated(a%val)) then - call d_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - - contains - subroutine d_oacc_create_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine d_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar - end subroutine d_oacc_ell_sync_space - - - - function d_oacc_ell_is_host(a) result(res) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_host) - end function d_oacc_ell_is_host - - function d_oacc_ell_is_sync(a) result(res) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_sync) - end function d_oacc_ell_is_sync - - function d_oacc_ell_is_dev(a) result(res) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_dev) - end function d_oacc_ell_is_dev - - subroutine d_oacc_ell_set_host(a) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - - a%devstate = is_host - end subroutine d_oacc_ell_set_host - - subroutine d_oacc_ell_set_sync(a) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - - a%devstate = is_sync - end subroutine d_oacc_ell_set_sync - - subroutine d_oacc_ell_set_dev(a) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - - a%devstate = is_dev - end subroutine d_oacc_ell_set_dev - - function d_oacc_ell_get_fmt() result(res) - implicit none - character(len=5) :: res - res = 'ELL_oacc' - end function d_oacc_ell_get_fmt - - subroutine d_oacc_ell_sync(a) - implicit none - class(psb_d_oacc_ell_sparse_mat), target, intent(in) :: a - class(psb_d_oacc_ell_sparse_mat), pointer :: tmpa - integer(psb_ipk_) :: info - - tmpa => a - if (a%is_dev()) then - call d_oacc_ell_to_host(a%val) - call i_oacc_ell_to_host(a%ja) - call i_oacc_ell_to_host_scalar(a%irn) - call i_oacc_ell_to_host_scalar(a%idiag) - else if (a%is_host()) then - call d_oacc_ell_to_dev(a%val) - call i_oacc_ell_to_dev(a%ja) - call i_oacc_ell_to_dev_scalar(a%irn) - call i_oacc_ell_to_dev_scalar(a%idiag) - end if - call tmpa%set_sync() - end subroutine d_oacc_ell_sync - - subroutine d_oacc_ell_to_host(v) - implicit none - real(psb_dpk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine d_oacc_ell_to_host - - subroutine d_oacc_ell_to_host_scalar(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine d_oacc_ell_to_host_scalar - - subroutine i_oacc_ell_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev - - subroutine i_oacc_ell_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev_scalar - - subroutine i_oacc_ell_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host - - subroutine i_oacc_ell_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host_scalar - - -end module psb_d_oacc_ell_mat_mod \ No newline at end of file + use iso_c_binding + use psb_d_mat_mod + use psb_d_ell_mat_mod + use psb_d_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_ell_sparse_mat) :: psb_d_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => d_oacc_ell_sizeof + procedure, pass(a) :: is_host => d_oacc_ell_is_host + procedure, pass(a) :: is_sync => d_oacc_ell_is_sync + procedure, pass(a) :: is_dev => d_oacc_ell_is_dev + procedure, pass(a) :: set_host => d_oacc_ell_set_host + procedure, pass(a) :: set_sync => d_oacc_ell_set_sync + procedure, pass(a) :: set_dev => d_oacc_ell_set_dev + procedure, pass(a) :: sync_space => d_oacc_ell_sync_space + procedure, pass(a) :: sync => d_oacc_ell_sync + procedure, pass(a) :: free => d_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_d_oacc_ell_csmv + procedure, pass(a) :: scals => psb_d_oacc_ell_scals + procedure, pass(a) :: scalv => psb_d_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_ell_mold + + end type psb_d_oacc_ell_sparse_mat + + interface + module subroutine psb_d_oacc_ell_mold(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mold + end interface + + interface + module subroutine psb_d_oacc_ell_cp_from_fmt(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_ell_mv_from_coo(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_ell_mv_from_fmt(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_d_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_csmm + end interface + + interface + module subroutine psb_d_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_csmv + end interface + + interface + module subroutine psb_d_oacc_ell_scals(d, a, info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_scals + end interface + + interface + module subroutine psb_d_oacc_ell_scal(d,a,info,side) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_ell_scal + end interface + + interface + module subroutine psb_d_oacc_ell_reallocate_nz(nz,a) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_ell_cp_from_coo(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_cp_from_coo + end interface + +contains + + subroutine d_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + + call a%psb_d_ell_sparse_mat%free() + + return + end subroutine d_oacc_ell_free + + + function d_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function d_oacc_ell_sizeof + + subroutine d_oacc_ell_sync_space(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call d_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + + contains + subroutine d_oacc_create_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine d_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + end subroutine d_oacc_ell_sync_space + + + + function d_oacc_ell_is_host(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_ell_is_host + + function d_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_ell_is_sync + + function d_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_ell_is_dev + + subroutine d_oacc_ell_set_host(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_ell_set_host + + subroutine d_oacc_ell_set_sync(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_ell_set_sync + + subroutine d_oacc_ell_set_dev(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_ell_set_dev + + function d_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELL_oacc' + end function d_oacc_ell_get_fmt + + subroutine d_oacc_ell_sync(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call d_oacc_ell_to_host(a%val) + call i_oacc_ell_to_host(a%ja) + call i_oacc_ell_to_host_scalar(a%irn) + call i_oacc_ell_to_host_scalar(a%idiag) + else if (a%is_host()) then + call d_oacc_ell_to_dev(a%val) + call i_oacc_ell_to_dev(a%ja) + call i_oacc_ell_to_dev_scalar(a%irn) + call i_oacc_ell_to_dev_scalar(a%idiag) + end if + call tmpa%set_sync() + end subroutine d_oacc_ell_sync + + subroutine d_oacc_ell_to_host(v) + implicit none + real(psb_dpk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine d_oacc_ell_to_host + + subroutine d_oacc_ell_to_host_scalar(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine d_oacc_ell_to_host_scalar + + subroutine i_oacc_ell_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev + + subroutine i_oacc_ell_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev_scalar + + subroutine i_oacc_ell_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host + + subroutine i_oacc_ell_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host_scalar +end module psb_d_oacc_ell_mat_mod diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 index 530af94a..b1c36a65 100644 --- a/openacc/psb_d_oacc_hll_mat_mod.F90 +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -1,352 +1,352 @@ module psb_d_oacc_hll_mat_mod - use iso_c_binding - use psb_d_mat_mod - use psb_d_hll_mat_mod - use psb_d_oacc_vect_mod - - integer(psb_ipk_), parameter, private :: is_host = -1 - integer(psb_ipk_), parameter, private :: is_sync = 0 - integer(psb_ipk_), parameter, private :: is_dev = 1 - - type, extends(psb_d_hll_sparse_mat) :: psb_d_oacc_hll_sparse_mat - integer(psb_ipk_) :: devstate = is_host - contains - procedure, nopass :: get_fmt => d_oacc_hll_get_fmt - procedure, pass(a) :: sizeof => d_oacc_hll_sizeof - procedure, pass(a) :: is_host => d_oacc_hll_is_host - procedure, pass(a) :: is_sync => d_oacc_hll_is_sync - procedure, pass(a) :: is_dev => d_oacc_hll_is_dev - procedure, pass(a) :: set_host => d_oacc_hll_set_host - procedure, pass(a) :: set_sync => d_oacc_hll_set_sync - procedure, pass(a) :: set_dev => d_oacc_hll_set_dev - procedure, pass(a) :: sync_space => d_oacc_hll_sync_space - procedure, pass(a) :: sync => d_oacc_hll_sync - procedure, pass(a) :: free => d_oacc_hll_free - procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv - procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_d_oacc_hll_csmv - procedure, pass(a) :: scals => psb_d_oacc_hll_scals - procedure, pass(a) :: scalv => psb_d_oacc_hll_scal - procedure, pass(a) :: reallocate_nz => psb_d_oacc_hll_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_d_oacc_hll_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_d_oacc_hll_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_d_oacc_hll_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_d_oacc_hll_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_d_oacc_hll_mv_from_fmt - procedure, pass(a) :: mold => psb_d_oacc_hll_mold - - end type psb_d_oacc_hll_sparse_mat - - interface - module subroutine psb_d_oacc_hll_mold(a,b,info) - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - class(psb_d_base_sparse_mat), intent(inout), allocatable :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_hll_mold - end interface - - interface - module subroutine psb_d_oacc_hll_cp_from_fmt(a,b,info) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_hll_cp_from_fmt - end interface - - interface - module subroutine psb_d_oacc_hll_mv_from_coo(a,b,info) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_hll_mv_from_coo - end interface - - interface - module subroutine psb_d_oacc_hll_mv_from_fmt(a,b,info) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_d_base_sparse_mat), intent(inout) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_hll_mv_from_fmt - end interface - - interface - module subroutine psb_d_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x, y - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_hll_vect_mv - end interface - - interface - module subroutine psb_d_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - class(psb_d_base_vect_type), intent(inout) :: x,y - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_hll_inner_vect_sv - end interface - - interface - module subroutine psb_d_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_hll_csmm - end interface - - interface - module subroutine psb_d_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_hll_csmv - end interface - - interface - module subroutine psb_d_oacc_hll_scals(d, a, info) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_hll_scals - end interface - - interface - module subroutine psb_d_oacc_hll_scal(d,a,info,side) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - real(psb_dpk_), intent(in) :: d(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: side - end subroutine psb_d_oacc_hll_scal - end interface - - interface - module subroutine psb_d_oacc_hll_reallocate_nz(nz,a) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in) :: nz - end subroutine psb_d_oacc_hll_reallocate_nz - end interface - - interface - module subroutine psb_d_oacc_hll_allocate_mnnz(m,n,a,nz) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - integer(psb_ipk_), intent(in) :: m,n - integer(psb_ipk_), intent(in), optional :: nz - end subroutine psb_d_oacc_hll_allocate_mnnz - end interface - - interface - module subroutine psb_d_oacc_hll_cp_from_coo(a,b,info) - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(in) :: b - integer(psb_ipk_), intent(out) :: info - end subroutine psb_d_oacc_hll_cp_from_coo - end interface - - contains - - subroutine d_oacc_hll_free(a) - use psb_base_mod - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - integer(psb_ipk_) :: info - - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if - if (allocated(a%hkoffs)) then - !$acc exit data delete(a%hkoffs) - end if - - call a%psb_d_hll_sparse_mat%free() - - return - end subroutine d_oacc_hll_free - - function d_oacc_hll_sizeof(a) result(res) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - integer(psb_epk_) :: res - - if (a%is_dev()) call a%sync() - - res = 8 - res = res + psb_sizeof_dp * size(a%val) - res = res + psb_sizeof_ip * size(a%ja) - res = res + psb_sizeof_ip * size(a%irn) - res = res + psb_sizeof_ip * size(a%idiag) - res = res + psb_sizeof_ip * size(a%hkoffs) - end function d_oacc_hll_sizeof - - - - function d_oacc_hll_is_host(a) result(res) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_host) - end function d_oacc_hll_is_host - - function d_oacc_hll_is_sync(a) result(res) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_sync) - end function d_oacc_hll_is_sync - - function d_oacc_hll_is_dev(a) result(res) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - logical :: res - - res = (a%devstate == is_dev) - end function d_oacc_hll_is_dev - - subroutine d_oacc_hll_set_host(a) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - - a%devstate = is_host - end subroutine d_oacc_hll_set_host - - subroutine d_oacc_hll_set_sync(a) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - - a%devstate = is_sync - end subroutine d_oacc_hll_set_sync - - subroutine d_oacc_hll_set_dev(a) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - - a%devstate = is_dev - end subroutine d_oacc_hll_set_dev - - function d_oacc_hll_get_fmt() result(res) - implicit none - character(len=5) :: res - res = 'HLL_oacc' - end function d_oacc_hll_get_fmt - - subroutine d_oacc_hll_sync_space(a) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - - if (allocated(a%val)) then - call d_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - if (allocated(a%hkoffs)) then - call i_oacc_create_dev_scalar(a%hkoffs) - end if - - contains - subroutine d_oacc_create_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine d_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar - - end subroutine d_oacc_hll_sync_space - - - subroutine d_oacc_hll_sync(a) - implicit none - class(psb_d_oacc_hll_sparse_mat), target, intent(in) :: a - class(psb_d_oacc_hll_sparse_mat), pointer :: tmpa - integer(psb_ipk_) :: info - - tmpa => a - if (a%is_dev()) then - call d_oacc_hll_to_host(a%val) - call i_oacc_hll_to_host(a%ja) - call i_oacc_hll_to_host_scalar(a%irn) - call i_oacc_hll_to_host_scalar(a%idiag) - call i_oacc_hll_to_host_scalar(a%hkoffs) - else if (a%is_host()) then - call d_oacc_hll_to_dev(a%val) - call i_oacc_hll_to_dev(a%ja) - call i_oacc_hll_to_dev_scalar(a%irn) - call i_oacc_hll_to_dev_scalar(a%idiag) - call i_oacc_hll_to_dev_scalar(a%hkoffs) - end if - call tmpa%set_sync() - end subroutine d_oacc_hll_sync - - subroutine d_oacc_hll_to_host(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine d_oacc_hll_to_host - - subroutine d_oacc_hll_to_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine d_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host - - subroutine i_oacc_hll_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host_scalar - - subroutine i_oacc_hll_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev_scalar - - -end module psb_d_oacc_hll_mat_mod \ No newline at end of file + use iso_c_binding + use psb_d_mat_mod + use psb_d_hll_mat_mod + use psb_d_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_hll_sparse_mat) :: psb_d_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => d_oacc_hll_sizeof + procedure, pass(a) :: is_host => d_oacc_hll_is_host + procedure, pass(a) :: is_sync => d_oacc_hll_is_sync + procedure, pass(a) :: is_dev => d_oacc_hll_is_dev + procedure, pass(a) :: set_host => d_oacc_hll_set_host + procedure, pass(a) :: set_sync => d_oacc_hll_set_sync + procedure, pass(a) :: set_dev => d_oacc_hll_set_dev + procedure, pass(a) :: sync_space => d_oacc_hll_sync_space + procedure, pass(a) :: sync => d_oacc_hll_sync + procedure, pass(a) :: free => d_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_d_oacc_hll_csmv + procedure, pass(a) :: scals => psb_d_oacc_hll_scals + procedure, pass(a) :: scalv => psb_d_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_hll_mold + + end type psb_d_oacc_hll_sparse_mat + + interface + module subroutine psb_d_oacc_hll_mold(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mold + end interface + + interface + module subroutine psb_d_oacc_hll_cp_from_fmt(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_hll_mv_from_coo(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_hll_mv_from_fmt(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_d_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + real(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_csmm + end interface + + interface + module subroutine psb_d_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta, x(:) + real(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_csmv + end interface + + interface + module subroutine psb_d_oacc_hll_scals(d, a, info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_scals + end interface + + interface + module subroutine psb_d_oacc_hll_scal(d,a,info,side) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_hll_scal + end interface + + interface + module subroutine psb_d_oacc_hll_reallocate_nz(nz,a) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_hll_cp_from_coo(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_cp_from_coo + end interface + +contains + + subroutine d_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + if (allocated(a%hkoffs)) then + !$acc exit data delete(a%hkoffs) + end if + + call a%psb_d_hll_sparse_mat%free() + + return + end subroutine d_oacc_hll_free + + function d_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function d_oacc_hll_sizeof + + + + function d_oacc_hll_is_host(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_hll_is_host + + function d_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_hll_is_sync + + function d_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_hll_is_dev + + subroutine d_oacc_hll_set_host(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_hll_set_host + + subroutine d_oacc_hll_set_sync(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_hll_set_sync + + subroutine d_oacc_hll_set_dev(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_hll_set_dev + + function d_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLL_oacc' + end function d_oacc_hll_get_fmt + + subroutine d_oacc_hll_sync_space(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call d_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + if (allocated(a%hkoffs)) then + call i_oacc_create_dev_scalar(a%hkoffs) + end if + + contains + subroutine d_oacc_create_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine d_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + + end subroutine d_oacc_hll_sync_space + + + subroutine d_oacc_hll_sync(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call d_oacc_hll_to_host(a%val) + call i_oacc_hll_to_host(a%ja) + call i_oacc_hll_to_host_scalar(a%irn) + call i_oacc_hll_to_host_scalar(a%idiag) + call i_oacc_hll_to_host_scalar(a%hkoffs) + else if (a%is_host()) then + call d_oacc_hll_to_dev(a%val) + call i_oacc_hll_to_dev(a%ja) + call i_oacc_hll_to_dev_scalar(a%irn) + call i_oacc_hll_to_dev_scalar(a%idiag) + call i_oacc_hll_to_dev_scalar(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine d_oacc_hll_sync + + subroutine d_oacc_hll_to_host(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine d_oacc_hll_to_host + + subroutine d_oacc_hll_to_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine d_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host + + subroutine i_oacc_hll_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host_scalar + + subroutine i_oacc_hll_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev_scalar + + +end module psb_d_oacc_hll_mat_mod diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 7d51766d..0dff0f27 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -42,6 +42,7 @@ module psb_d_oacc_vect_mod procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf procedure, pass(x) :: get_size => d_oacc_get_size + procedure, pass(x) :: dot_v => d_oacc_vect_dot procedure, pass(x) :: dot_a => d_oacc_dot_a procedure, pass(y) :: axpby_v => d_oacc_axpby_v @@ -70,7 +71,6 @@ module psb_d_oacc_vect_mod end subroutine d_oacc_mlt_v end interface - interface subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import @@ -83,7 +83,7 @@ module psb_d_oacc_vect_mod character(len=1), intent(in), optional :: conjgx, conjgy end subroutine d_oacc_mlt_v_2 end interface - + contains subroutine d_oacc_absval1(x) @@ -432,7 +432,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() if (y%is_host()) call y%sync_space() !$acc parallel loop @@ -459,7 +459,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'd_oacc_sctb_x') return @@ -475,8 +475,6 @@ contains call y%set_dev() end subroutine d_oacc_sctb_x - - subroutine d_oacc_sctb(n, idx, x, beta, y) use psb_base_mod implicit none @@ -498,7 +496,6 @@ contains call y%set_host() end subroutine d_oacc_sctb - subroutine d_oacc_gthzbuf(i, n, idx, x) use psb_base_mod implicit none @@ -515,7 +512,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'd_oacc_gthzbuf') return @@ -542,7 +539,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'd_oacc_gthzv_x') return @@ -577,7 +574,7 @@ contains select type(vval => val) type is (psb_d_vect_oacc) if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space(info) + if (virl%is_host()) call virl%sync_space() if (x%is_host()) call x%sync_space() !$acc parallel loop do i = 1, n @@ -591,7 +588,7 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space(info) + if (virl%is_dev()) call virl%sync_space() end select select type(vval => val) type is (psb_d_vect_oacc) @@ -607,8 +604,6 @@ contains end subroutine d_oacc_ins_v - - subroutine d_oacc_ins_a(n, irl, val, dupl, x, info) use psi_serial_mod implicit none @@ -628,8 +623,6 @@ contains end subroutine d_oacc_ins_a - - subroutine d_oacc_bld_mn(x, n) use psb_base_mod implicit none @@ -668,7 +661,6 @@ contains end subroutine d_oacc_bld_x - subroutine d_oacc_asb_m(n, x, info) use psb_base_mod implicit none @@ -696,8 +688,6 @@ contains end if end subroutine d_oacc_asb_m - - subroutine d_oacc_set_scal(x, val, first, last) class(psb_d_vect_oacc), intent(inout) :: x real(psb_dpk_), intent(in) :: val @@ -718,8 +708,6 @@ contains call x%set_dev() end subroutine d_oacc_set_scal - - subroutine d_oacc_zero(x) use psi_serial_mod implicit none @@ -743,6 +731,7 @@ contains end function d_oacc_get_fmt + function d_oacc_vect_dot(n, x, y) result(res) implicit none class(psb_d_vect_oacc), intent(inout) :: x @@ -776,9 +765,6 @@ contains end function d_oacc_vect_dot - - - function d_oacc_dot_a(n, x, y) result(res) implicit none class(psb_d_vect_oacc), intent(inout) :: x @@ -910,7 +896,6 @@ contains end if end subroutine d_oacc_vect_all - subroutine d_oacc_vect_free(x, info) implicit none class(psb_d_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index 70fc325e..72e9ada2 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -1,455 +1,505 @@ module psb_i_oacc_vect_mod - use iso_c_binding - use psb_const_mod - use psb_error_mod - use psb_i_vect_mod - - integer(psb_ipk_), parameter, private :: is_host = -1 - integer(psb_ipk_), parameter, private :: is_sync = 0 - integer(psb_ipk_), parameter, private :: is_dev = 1 - - type, extends(psb_i_base_vect_type) :: psb_i_vect_oacc - integer :: state = is_host - contains - procedure, pass(x) :: get_nrows => i_oacc_get_nrows - procedure, nopass :: get_fmt => i_oacc_get_fmt - - procedure, pass(x) :: all => i_oacc_all - procedure, pass(x) :: zero => i_oacc_zero - procedure, pass(x) :: asb_m => i_oacc_asb_m - procedure, pass(x) :: sync => i_oacc_sync - procedure, pass(x) :: sync_space => i_oacc_sync_space - procedure, pass(x) :: bld_x => i_oacc_bld_x - procedure, pass(x) :: bld_mn => i_oacc_bld_mn - procedure, pass(x) :: free => i_oacc_free - procedure, pass(x) :: ins_a => i_oacc_ins_a - procedure, pass(x) :: ins_v => i_oacc_ins_v - procedure, pass(x) :: is_host => i_oacc_is_host - procedure, pass(x) :: is_dev => i_oacc_is_dev - procedure, pass(x) :: is_sync => i_oacc_is_sync - procedure, pass(x) :: set_host => i_oacc_set_host - procedure, pass(x) :: set_dev => i_oacc_set_dev - procedure, pass(x) :: set_sync => i_oacc_set_sync - procedure, pass(x) :: set_scal => i_oacc_set_scal - procedure, pass(x) :: gthzv_x => i_oacc_gthzv_x - procedure, pass(y) :: sctb => i_oacc_sctb - procedure, pass(y) :: sctb_x => i_oacc_sctb_x - procedure, pass(x) :: gthzbuf => i_oacc_gthzbuf - procedure, pass(y) :: sctb_buf => i_oacc_sctb_buf - - final :: i_oacc_vect_finalize - end type psb_i_vect_oacc - - public :: psb_i_vect_oacc_ - private :: constructor - interface psb_i_vect_oacc_ - module procedure constructor - end interface psb_i_vect_oacc_ + use iso_c_binding + use psb_const_mod + use psb_error_mod + use psb_i_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_i_base_vect_type) :: psb_i_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => i_oacc_get_nrows + procedure, nopass :: get_fmt => i_oacc_get_fmt + + procedure, pass(x) :: all => i_oacc_vect_all + procedure, pass(x) :: zero => i_oacc_zero + procedure, pass(x) :: asb_m => i_oacc_asb_m + procedure, pass(x) :: sync => i_oacc_sync + procedure, pass(x) :: sync_space => i_oacc_sync_space + procedure, pass(x) :: bld_x => i_oacc_bld_x + procedure, pass(x) :: bld_mn => i_oacc_bld_mn + procedure, pass(x) :: free => i_oacc_vect_free + procedure, pass(x) :: ins_a => i_oacc_ins_a + procedure, pass(x) :: ins_v => i_oacc_ins_v + procedure, pass(x) :: is_host => i_oacc_is_host + procedure, pass(x) :: is_dev => i_oacc_is_dev + procedure, pass(x) :: is_sync => i_oacc_is_sync + procedure, pass(x) :: set_host => i_oacc_set_host + procedure, pass(x) :: set_dev => i_oacc_set_dev + procedure, pass(x) :: set_sync => i_oacc_set_sync + procedure, pass(x) :: set_scal => i_oacc_set_scal + + procedure, pass(x) :: gthzv_x => i_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => i_oacc_gthzbuf + procedure, pass(y) :: sctb => i_oacc_sctb + procedure, pass(y) :: sctb_x => i_oacc_sctb_x + procedure, pass(y) :: sctb_buf => i_oacc_sctb_buf + + procedure, pass(x) :: get_size => i_oacc_get_size + + + end type psb_i_vect_oacc + contains - function constructor(x) result(this) - integer(psb_ipk_) :: x(:) - type(psb_i_vect_oacc) :: this - integer(psb_ipk_) :: info - this%v = x - call this%asb(size(x), info) - end function constructor + subroutine i_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_ipk_) :: beta + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info + if (.not.allocated(y%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if - subroutine i_oacc_gthzv_x(i, n, idx, x, y) - implicit none - integer(psb_ipk_) :: i, n - class(psb_i_base_vect_type) :: idx - integer(psb_ipk_) :: y(:) - class(psb_i_vect_oacc) :: x - integer :: info + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + if (y%is_host()) call y%sync_space() - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do - end subroutine i_oacc_gthzv_x + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + end do - subroutine i_oacc_gthzbuf(i, n, idx, x) - implicit none - integer(psb_ipk_) :: i, n - class(psb_i_base_vect_type) :: idx - class(psb_i_vect_oacc) :: x - integer :: info + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + end do + end select + end subroutine i_oacc_sctb_buf - if (.not.allocated(x%combuf)) then - call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') - return - end if + subroutine i_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_ipk_) :: beta, x(:) + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info, ni - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do - end subroutine i_oacc_gthzbuf + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + class default + call psb_errpush(info, 'i_oacc_sctb_x') + return + end select - subroutine i_oacc_sctb(n, idx, x, beta, y) - implicit none - integer(psb_ipk_) :: n, idx(:) - integer(psb_ipk_) :: beta, x(:) - class(psb_i_vect_oacc) :: y - integer(psb_ipk_) :: info - integer :: i + if (y%is_host()) call y%sync_space() - if (n == 0) return + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + call y%set_dev() + end subroutine i_oacc_sctb_x + + subroutine i_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + integer(psb_ipk_) :: beta, x(:) + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine i_oacc_sctb + + subroutine i_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_i_vect_oacc) :: x + integer(psb_ipk_) :: info + + info = 0 + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + class default + call psb_errpush(info, 'i_oacc_gthzbuf') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine i_oacc_gthzbuf + + subroutine i_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + integer(psb_ipk_) :: y(:) + class(psb_i_vect_oacc):: x + integer(psb_ipk_) :: info + + info = 0 + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + class default + call psb_errpush(info, 'i_oacc_gthzv_x') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine i_oacc_gthzv_x + + subroutine i_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_i_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_i_vect_oacc) + if (vval%is_host()) call vval%sync_space() + if (virl%is_host()) call virl%sync_space() + if (x%is_host()) call x%sync_space() !$acc parallel loop do i = 1, n - y%v(idx(i)) = beta * y%v(idx(i)) + x(i) - end do - end subroutine i_oacc_sctb - - subroutine i_oacc_sctb_x(i, n, idx, x, beta, y) - implicit none - integer(psb_ipk_) :: i, n - class(psb_i_base_vect_type) :: idx - integer(psb_ipk_) :: beta, x(:) - class(psb_i_vect_oacc) :: y - integer :: info - - select type(ii => idx) - class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) - if (y%is_host()) call y%sync_space(info) - - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + x(i) - end do - - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - end select - end subroutine i_oacc_sctb_x - - subroutine i_oacc_sctb_buf(i, n, idx, beta, y) - implicit none - integer(psb_ipk_) :: i, n - class(psb_i_base_vect_type) :: idx - integer(psb_ipk_) :: beta - class(psb_i_vect_oacc) :: y - integer(psb_ipk_) :: info - - if (.not.allocated(y%v)) then - call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') - return - end if - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%v(i) - end do - end subroutine i_oacc_sctb_buf - - subroutine i_oacc_set_host(x) - class(psb_i_vect_oacc), intent(inout) :: x - x%state = is_host - end subroutine i_oacc_set_host - - subroutine i_oacc_set_sync(x) - class(psb_i_vect_oacc), intent(inout) :: x - x%state = is_sync - end subroutine i_oacc_set_sync - - subroutine i_oacc_set_dev(x) - class(psb_i_vect_oacc), intent(inout) :: x - x%state = is_dev - end subroutine i_oacc_set_dev - - subroutine i_oacc_set_scal(x, val, first, last) - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: val - integer(psb_ipk_), optional :: first, last - - integer(psb_ipk_) :: first_, last_ - - first_ = 1 - last_ = size(x%v) - if (present(first)) first_ = max(1, first) - if (present(last)) last_ = min(size(x%v), last) - - !$acc parallel loop - do i = first_, last_ - x%v(i) = val + x%v(virl%v(i)) = vval%v(i) end do call x%set_dev() - end subroutine i_oacc_set_scal - - function i_oacc_is_host(x) result(res) - implicit none - class(psb_i_vect_oacc), intent(in) :: x - logical :: res - - res = (x%state == is_host) - end function i_oacc_is_host - - function i_oacc_is_dev(x) result(res) - implicit none - class(psb_i_vect_oacc), intent(in) :: x - logical :: res - - res = (x%state == is_dev) - end function i_oacc_is_dev - - function i_oacc_is_sync(x) result(res) - implicit none - class(psb_i_vect_oacc), intent(in) :: x - logical :: res - - res = (x%state == is_sync) - end function i_oacc_is_sync - - subroutine i_oacc_free(x, info) - use psb_error_mod - implicit none - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(out) :: info - - info = 0 - if (allocated(x%v)) deallocate(x%v, stat=info) - if (info /= 0) then - info = psb_err_alloc_dealloc_ - call psb_errpush(info, 'i_oacc_free') - end if - call x%set_sync() - end subroutine i_oacc_free - - subroutine i_oacc_ins_a(n, irl, val, dupl, x, info) - implicit none - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: n, dupl - integer(psb_ipk_), intent(in) :: irl(:) - integer(psb_ipk_), intent(in) :: val(:) - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: i - - info = 0 - if (x%is_dev()) call x%sync() - call x%psb_i_base_vect_type%ins(n, irl, val, dupl, info) + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync_space() + end select + select type(vval => val) + type is (psb_i_vect_oacc) + if (vval%is_dev()) call vval%sync_space() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine i_oacc_ins_v + + subroutine i_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + integer(psb_ipk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync_space() + call x%psb_i_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + !$acc update device(x%v) + + end subroutine i_oacc_ins_a + + subroutine i_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'i_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + !$acc update device(x%v) + + end subroutine i_oacc_bld_mn + + + subroutine i_oacc_bld_x(x, this) + use psb_base_mod + implicit none + integer(psb_ipk_), intent(in) :: this(:) + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'i_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + + x%v(:) = this(:) + call x%set_host() + !$acc update device(x%v) + + end subroutine i_oacc_bld_x + + subroutine i_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_i_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() call x%set_host() - end subroutine i_oacc_ins_a - - subroutine i_oacc_ins_v(n, irl, val, dupl, x, info) - implicit none - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(in) :: n, dupl - class(psb_i_base_vect_type), intent(inout) :: irl - class(psb_i_base_vect_type), intent(inout) :: val - integer(psb_ipk_), intent(out) :: info - - integer(psb_ipk_) :: i, isz - logical :: done_oacc - - info = 0 - if (psb_errstatus_fatal()) return - - done_oacc = .false. - select type(virl => irl) - class is (psb_i_vect_oacc) - select type(vval => val) - class is (psb_i_vect_oacc) - if (vval%is_host()) call vval%sync() - if (virl%is_host()) call virl%sync() - if (x%is_host()) call x%sync() - ! Add the OpenACC kernel call here if needed - call x%set_dev() - done_oacc = .true. - end select - end select - - if (.not.done_oacc) then - if (irl%is_dev()) call irl%sync() - if (val%is_dev()) call val%sync() - call x%ins(n, irl%v, val%v, dupl, info) - end if - - if (info /= 0) then - call psb_errpush(info,'i_oacc_ins_v') - return - end if - end subroutine i_oacc_ins_v - - subroutine i_oacc_bld_x(x, this) - use psb_error_mod - implicit none - integer(psb_ipk_), intent(in) :: this(:) - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: info - - call psb_realloc(size(this), x%v, info) - if (info /= 0) then - info = psb_err_alloc_request_ - call psb_errpush(info, 'i_oacc_bld_x', i_err = (/size(this), izero, izero, izero, izero/)) - end if - x%v(:) = this(:) + end if + else + if (size(x%v) < n) then + call x%psb_i_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() call x%set_host() - call x%sync() - end subroutine i_oacc_bld_x - - subroutine i_oacc_bld_mn(x, n) - use psb_error_mod - implicit none - integer(psb_mpk_), intent(in) :: n - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: info - - call x%all(n, info) - if (info /= 0) then - call psb_errpush(info, 'i_oacc_bld_mn', i_err = (/n, n, n, n, n/)) - end if - end subroutine i_oacc_bld_mn - - subroutine i_oacc_sync(x) - use psb_error_mod - implicit none - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: n, info - - info = 0 - if (x%is_host()) then - n = size(x%v) - if (.not.allocated(x%v)) then - write(*, *) 'Incoherent situation : x%v not allocated' - call psb_realloc(n, x%v, info) - end if - if ((n > size(x%v)) .or. (n > x%get_nrows())) then - write(*, *) 'Incoherent situation : sizes', n, size(x%v), x%get_nrows() - call psb_realloc(n, x%v, info) - end if - !$acc update device(x%v) - else if (x%is_dev()) then - n = size(x%v) - if (.not.allocated(x%v)) then - write(*, *) 'Incoherent situation : x%v not allocated' - call psb_realloc(n, x%v, info) - end if - !$acc update self(x%v) - end if - if (info == 0) call x%set_sync() - if (info /= 0) then - info = psb_err_internal_error_ - call psb_errpush(info, 'i_oacc_sync') - end if - end subroutine i_oacc_sync - - subroutine i_oacc_sync_space(x, info) - use psb_error_mod - implicit none - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: nh, nd - - info = 0 - if (x%is_dev()) then - nh = size(x%v) - nd = nh - if (nh < nd) then - call psb_realloc(nd, x%v, info) - end if - else - nh = size(x%v) - nd = nh - if (nh < nd) then - call psb_realloc(nd, x%v, info) - end if - end if - end subroutine i_oacc_sync_space - - function i_oacc_get_nrows(x) result(res) - implicit none - class(psb_i_vect_oacc), intent(in) :: x - integer(psb_ipk_) :: res - - res = 0 - if (allocated(x%v)) res = size(x%v) - end function i_oacc_get_nrows - - function i_oacc_get_fmt() result(res) - implicit none - character(len=5) :: res - res = 'iOACC' - end function i_oacc_get_fmt - - subroutine i_oacc_all(n, x, info) - use psb_error_mod - implicit none - class(psb_i_vect_oacc), intent(out) :: x - integer(psb_ipk_), intent(in) :: n - integer(psb_ipk_), intent(out) :: info - - call psb_realloc(n, x%v, info) - if (info == 0) call x%set_host() - if (info == 0) call x%sync_space(info) - if (info /= 0) then - info = psb_err_alloc_request_ - call psb_errpush(info, 'i_oacc_all', i_err=(/n, n, n, n, n/)) - end if - end subroutine i_oacc_all - - subroutine i_oacc_zero(x) - use psb_error_mod - implicit none - class(psb_i_vect_oacc), intent(inout) :: x - ! Ensure zeroing on the GPU side - call x%set_dev() - x%v = 0 - !$acc update device(x%v) - end subroutine i_oacc_zero - - subroutine i_oacc_asb_m(n, x, info) - use psb_error_mod - use psb_realloc_mod - implicit none - integer(psb_ipk_), intent(in) :: n - class(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: nh, nd - - info = 0 - if (x%is_dev()) then - nd = size(x%v) - if (nd < n) then - call x%sync() - call x%psb_i_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space(info) - call x%set_host() - end if - else - nh = size(x%v) - if (nh < n) then - call x%psb_i_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space(info) - call x%set_host() - end if - end if - end subroutine i_oacc_asb_m - - subroutine i_oacc_vect_finalize(x) - use psi_serial_mod - use psb_realloc_mod - implicit none - type(psb_i_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: info - - info = 0 - call x%free(info) - end subroutine i_oacc_vect_finalize + end if + end if + end subroutine i_oacc_asb_m -end module psb_i_oacc_vect_mod + subroutine i_oacc_set_scal(x, val, first, last) + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine i_oacc_set_scal + + subroutine i_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(izero) + end subroutine i_oacc_zero + + function i_oacc_get_nrows(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function i_oacc_get_nrows + + function i_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "iOACC" + + end function i_oacc_get_fmt + + ! subroutine i_oacc_set_vect(x,y) + ! implicit none + ! class(psb_i_vect_oacc), intent(inout) :: x + ! integer(psb_ipk_), intent(in) :: y(:) + ! integer(psb_ipk_) :: info + + ! if (size(x%v) /= size(y)) then + ! call x%free(info) + ! call x%all(size(y),info) + ! end if + ! x%v(:) = y(:) + ! call x%set_host() + ! end subroutine i_oacc_set_vect - - - - - \ No newline at end of file + subroutine i_oacc_to_dev(v) + implicit none + integer(psb_ipk_) :: v(:) + !$acc update device(v) + end subroutine i_oacc_to_dev + + subroutine i_oacc_to_host(v) + implicit none + integer(psb_ipk_) :: v(:) + !$acc update self(v) + end subroutine i_oacc_to_host + + subroutine i_oacc_sync_space(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + if (allocated(x%v)) then + call i_oacc_create_dev(x%v) + end if + contains + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + end subroutine i_oacc_sync_space + + subroutine i_oacc_sync(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + call i_oacc_to_host(x%v) + end if + if (x%is_host()) then + call i_oacc_to_dev(x%v) + end if + call x%set_sync() + end subroutine i_oacc_sync + + subroutine i_oacc_set_host(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine i_oacc_set_host + + subroutine i_oacc_set_dev(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine i_oacc_set_dev + + subroutine i_oacc_set_sync(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine i_oacc_set_sync + + function i_oacc_is_dev(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function i_oacc_is_dev + + function i_oacc_is_host(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function i_oacc_is_host + + function i_oacc_is_sync(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function i_oacc_is_sync + + subroutine i_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_i_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) then + call x%set_host() + !$acc enter data create(x%v) + call x%sync_space() + end if + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'i_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + end subroutine i_oacc_vect_all + + subroutine i_oacc_vect_free(x, info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 + if (allocated(x%v)) then + !$acc exit data delete(x%v) finalize + deallocate(x%v, stat=info) + end if + + end subroutine i_oacc_vect_free + + function i_oacc_get_size(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + if (x%is_dev()) call x%sync() + res = size(x%v) + end function i_oacc_get_size + +end module psb_i_oacc_vect_mod diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 new file mode 100644 index 00000000..aeba4537 --- /dev/null +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -0,0 +1,507 @@ +module psb_l_oacc_vect_mod + use iso_c_binding + use psb_const_mod + use psb_error_mod + use psb_l_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_l_base_vect_type) :: psb_l_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => l_oacc_get_nrows + procedure, nopass :: get_fmt => l_oacc_get_fmt + + procedure, pass(x) :: all => l_oacc_vect_all + procedure, pass(x) :: zero => l_oacc_zero + procedure, pass(x) :: asb_m => l_oacc_asb_m + procedure, pass(x) :: sync => l_oacc_sync + procedure, pass(x) :: sync_space => l_oacc_sync_space + procedure, pass(x) :: bld_x => l_oacc_bld_x + procedure, pass(x) :: bld_mn => l_oacc_bld_mn + procedure, pass(x) :: free => l_oacc_vect_free + procedure, pass(x) :: ins_a => l_oacc_ins_a + procedure, pass(x) :: ins_v => l_oacc_ins_v + procedure, pass(x) :: is_host => l_oacc_is_host + procedure, pass(x) :: is_dev => l_oacc_is_dev + procedure, pass(x) :: is_sync => l_oacc_is_sync + procedure, pass(x) :: set_host => l_oacc_set_host + procedure, pass(x) :: set_dev => l_oacc_set_dev + procedure, pass(x) :: set_sync => l_oacc_set_sync + procedure, pass(x) :: set_scal => l_oacc_set_scal + + procedure, pass(x) :: gthzv_x => l_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => l_oacc_gthzbuf + procedure, pass(y) :: sctb => l_oacc_sctb + procedure, pass(y) :: sctb_x => l_oacc_sctb_x + procedure, pass(y) :: sctb_buf => l_oacc_sctb_buf + + procedure, pass(x) :: get_size => l_oacc_get_size + + + end type psb_l_vect_oacc + + +contains + + + subroutine l_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_lpk_) :: beta + class(psb_l_vect_oacc) :: y + integer(psb_ipk_) :: info + + if (.not.allocated(y%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + end do + + class default + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + end do + end select + end subroutine l_oacc_sctb_buf + + subroutine l_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_lpk_) :: beta, x(:) + class(psb_l_vect_oacc) :: y + integer(psb_ipk_) :: info, ni + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + class default + call psb_errpush(info, 'l_oacc_sctb_x') + return + end select + + if (y%is_host()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) + end do + + call y%set_dev() + end subroutine l_oacc_sctb_x + + subroutine l_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + integer(psb_lpk_) :: beta, x(:) + class(psb_l_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync_space() + + !$acc parallel loop + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine l_oacc_sctb + + subroutine l_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_l_vect_oacc) :: x + integer(psb_ipk_) :: info + + info = 0 + if (.not.allocated(x%combuf)) then + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + class default + call psb_errpush(info, 'l_oacc_gthzbuf') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + x%combuf(i) = x%v(idx%v(i)) + end do + end subroutine l_oacc_gthzbuf + + subroutine l_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + integer(psb_lpk_) :: y(:) + class(psb_l_vect_oacc):: x + integer(psb_ipk_) :: info + + info = 0 + + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync_space() + class default + call psb_errpush(info, 'l_oacc_gthzv_x') + return + end select + + if (x%is_host()) call x%sync_space() + + !$acc parallel loop + do i = 1, n + y(i) = x%v(idx%v(i)) + end do + end subroutine l_oacc_gthzv_x + + subroutine l_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_l_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_l_vect_oacc) + if (vval%is_host()) call vval%sync_space() + if (virl%is_host()) call virl%sync_space() + if (x%is_host()) call x%sync_space() + !$acc parallel loop + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync_space() + end select + select type(vval => val) + type is (psb_l_vect_oacc) + if (vval%is_dev()) call vval%sync_space() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine l_oacc_ins_v + + subroutine l_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + integer(psb_lpk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync_space() + call x%psb_l_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + !$acc update device(x%v) + + end subroutine l_oacc_ins_a + + subroutine l_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'l_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + !$acc update device(x%v) + + end subroutine l_oacc_bld_mn + + + subroutine l_oacc_bld_x(x, this) + use psb_base_mod + implicit none + integer(psb_lpk_), intent(in) :: this(:) + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'l_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + + x%v(:) = this(:) + call x%set_host() + !$acc update device(x%v) + + end subroutine l_oacc_bld_x + + subroutine l_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_l_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_l_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync_space() + call x%set_host() + end if + end if + end subroutine l_oacc_asb_m + + subroutine l_oacc_set_scal(x, val, first, last) + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_lpk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine l_oacc_set_scal + + subroutine l_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(lzero) + end subroutine l_oacc_zero + + function l_oacc_get_nrows(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function l_oacc_get_nrows + + function l_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "lOACC" + + end function l_oacc_get_fmt + + ! subroutine l_oacc_set_vect(x,y) + ! implicit none + ! class(psb_l_vect_oacc), intent(inout) :: x + ! integer(psb_lpk_), intent(in) :: y(:) + ! integer(psb_ipk_) :: info + + ! if (size(x%v) /= size(y)) then + ! call x%free(info) + ! call x%all(size(y),info) + ! end if + ! x%v(:) = y(:) + ! call x%set_host() + ! end subroutine l_oacc_set_vect + + subroutine l_oacc_to_dev(v) + implicit none + integer(psb_lpk_) :: v(:) + !$acc update device(v) + end subroutine l_oacc_to_dev + + subroutine l_oacc_to_host(v) + implicit none + integer(psb_lpk_) :: v(:) + !$acc update self(v) + end subroutine l_oacc_to_host + + subroutine l_oacc_sync_space(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + if (allocated(x%v)) then + call l_oacc_create_dev(x%v) + end if + contains + subroutine l_oacc_create_dev(v) + implicit none + integer(psb_lpk_) :: v(:) + !$acc enter data copyin(v) + end subroutine l_oacc_create_dev + end subroutine l_oacc_sync_space + + subroutine l_oacc_sync(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + call l_oacc_to_host(x%v) + end if + if (x%is_host()) then + call l_oacc_to_dev(x%v) + end if + call x%set_sync() + end subroutine l_oacc_sync + + subroutine l_oacc_set_host(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine l_oacc_set_host + + subroutine l_oacc_set_dev(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine l_oacc_set_dev + + subroutine l_oacc_set_sync(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine l_oacc_set_sync + + function l_oacc_is_dev(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function l_oacc_is_dev + + function l_oacc_is_host(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function l_oacc_is_host + + function l_oacc_is_sync(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function l_oacc_is_sync + + subroutine l_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_l_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info == 0) then + call x%set_host() + !$acc enter data create(x%v) + call x%sync_space() + end if + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'l_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + end subroutine l_oacc_vect_all + + subroutine l_oacc_vect_free(x, info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 + if (allocated(x%v)) then + !$acc exit data delete(x%v) finalize + deallocate(x%v, stat=info) + end if + + end subroutine l_oacc_vect_free + + function l_oacc_get_size(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + if (x%is_dev()) call x%sync() + res = size(x%v) + end function l_oacc_get_size + +end module psb_l_oacc_vect_mod diff --git a/openacc/psb_oacc_mod.F90 b/openacc/psb_oacc_mod.F90 index 2d8e8b40..7d3f9406 100644 --- a/openacc/psb_oacc_mod.F90 +++ b/openacc/psb_oacc_mod.F90 @@ -4,6 +4,7 @@ module psb_oacc_mod use psb_oacc_env_mod use psb_i_oacc_vect_mod + use psb_l_oacc_vect_mod use psb_s_oacc_vect_mod use psb_d_oacc_vect_mod use psb_c_oacc_vect_mod @@ -13,5 +14,13 @@ module psb_oacc_mod use psb_d_oacc_csr_mat_mod use psb_c_oacc_csr_mat_mod use psb_z_oacc_csr_mat_mod + use psb_s_oacc_ell_mat_mod + use psb_d_oacc_ell_mat_mod + use psb_c_oacc_ell_mat_mod + use psb_z_oacc_ell_mat_mod + use psb_s_oacc_hll_mat_mod + use psb_d_oacc_hll_mat_mod + use psb_c_oacc_hll_mat_mod + use psb_z_oacc_hll_mat_mod end module psb_oacc_mod diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..541fdf9a --- /dev/null +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -0,0 +1,341 @@ +module psb_s_oacc_ell_mat_mod + use iso_c_binding + use psb_s_mat_mod + use psb_s_ell_mat_mod + use psb_s_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_ell_sparse_mat) :: psb_s_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => s_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => s_oacc_ell_sizeof + procedure, pass(a) :: is_host => s_oacc_ell_is_host + procedure, pass(a) :: is_sync => s_oacc_ell_is_sync + procedure, pass(a) :: is_dev => s_oacc_ell_is_dev + procedure, pass(a) :: set_host => s_oacc_ell_set_host + procedure, pass(a) :: set_sync => s_oacc_ell_set_sync + procedure, pass(a) :: set_dev => s_oacc_ell_set_dev + procedure, pass(a) :: sync_space => s_oacc_ell_sync_space + procedure, pass(a) :: sync => s_oacc_ell_sync + procedure, pass(a) :: free => s_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_s_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_s_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_s_oacc_ell_csmv + procedure, pass(a) :: scals => psb_s_oacc_ell_scals + procedure, pass(a) :: scalv => psb_s_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_s_oacc_ell_mold + + end type psb_s_oacc_ell_sparse_mat + + interface + module subroutine psb_s_oacc_ell_mold(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_mold + end interface + + interface + module subroutine psb_s_oacc_ell_cp_from_fmt(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_s_oacc_ell_mv_from_coo(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_s_oacc_ell_mv_from_fmt(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_s_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_s_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_s_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta, x(:,:) + real(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_ell_csmm + end interface + + interface + module subroutine psb_s_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta, x(:) + real(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_ell_csmv + end interface + + interface + module subroutine psb_s_oacc_ell_scals(d, a, info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_scals + end interface + + interface + module subroutine psb_s_oacc_ell_scal(d,a,info,side) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_s_oacc_ell_scal + end interface + + interface + module subroutine psb_s_oacc_ell_reallocate_nz(nz,a) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_s_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_s_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_s_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_s_oacc_ell_cp_from_coo(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_cp_from_coo + end interface + +contains + + subroutine s_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + + call a%psb_s_ell_sparse_mat%free() + + return + end subroutine s_oacc_ell_free + + + function s_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function s_oacc_ell_sizeof + + subroutine s_oacc_ell_sync_space(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call s_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + + contains + subroutine s_oacc_create_dev(v) + implicit none + real(psb_spk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine s_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + end subroutine s_oacc_ell_sync_space + + + + function s_oacc_ell_is_host(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function s_oacc_ell_is_host + + function s_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function s_oacc_ell_is_sync + + function s_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function s_oacc_ell_is_dev + + subroutine s_oacc_ell_set_host(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine s_oacc_ell_set_host + + subroutine s_oacc_ell_set_sync(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine s_oacc_ell_set_sync + + subroutine s_oacc_ell_set_dev(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine s_oacc_ell_set_dev + + function s_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELL_oacc' + end function s_oacc_ell_get_fmt + + subroutine s_oacc_ell_sync(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_s_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call s_oacc_ell_to_host(a%val) + call i_oacc_ell_to_host(a%ja) + call i_oacc_ell_to_host_scalar(a%irn) + call i_oacc_ell_to_host_scalar(a%idiag) + else if (a%is_host()) then + call s_oacc_ell_to_dev(a%val) + call i_oacc_ell_to_dev(a%ja) + call i_oacc_ell_to_dev_scalar(a%irn) + call i_oacc_ell_to_dev_scalar(a%idiag) + end if + call tmpa%set_sync() + end subroutine s_oacc_ell_sync + + subroutine s_oacc_ell_to_host(v) + implicit none + real(psb_spk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine s_oacc_ell_to_host + + subroutine s_oacc_ell_to_host_scalar(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine s_oacc_ell_to_host_scalar + + subroutine i_oacc_ell_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev + + subroutine i_oacc_ell_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev_scalar + + subroutine i_oacc_ell_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host + + subroutine i_oacc_ell_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host_scalar +end module psb_s_oacc_ell_mat_mod diff --git a/openacc/psb_s_oacc_hll_mat_mod.F90 b/openacc/psb_s_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..bf8949a1 --- /dev/null +++ b/openacc/psb_s_oacc_hll_mat_mod.F90 @@ -0,0 +1,352 @@ +module psb_s_oacc_hll_mat_mod + use iso_c_binding + use psb_s_mat_mod + use psb_s_hll_mat_mod + use psb_s_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_hll_sparse_mat) :: psb_s_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => s_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => s_oacc_hll_sizeof + procedure, pass(a) :: is_host => s_oacc_hll_is_host + procedure, pass(a) :: is_sync => s_oacc_hll_is_sync + procedure, pass(a) :: is_dev => s_oacc_hll_is_dev + procedure, pass(a) :: set_host => s_oacc_hll_set_host + procedure, pass(a) :: set_sync => s_oacc_hll_set_sync + procedure, pass(a) :: set_dev => s_oacc_hll_set_dev + procedure, pass(a) :: sync_space => s_oacc_hll_sync_space + procedure, pass(a) :: sync => s_oacc_hll_sync + procedure, pass(a) :: free => s_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_s_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_s_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_s_oacc_hll_csmv + procedure, pass(a) :: scals => psb_s_oacc_hll_scals + procedure, pass(a) :: scalv => psb_s_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_s_oacc_hll_mold + + end type psb_s_oacc_hll_sparse_mat + + interface + module subroutine psb_s_oacc_hll_mold(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_mold + end interface + + interface + module subroutine psb_s_oacc_hll_cp_from_fmt(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_s_oacc_hll_mv_from_coo(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_s_oacc_hll_mv_from_fmt(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_s_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_s_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_s_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta, x(:,:) + real(psb_spk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_hll_csmm + end interface + + interface + module subroutine psb_s_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta, x(:) + real(psb_spk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_hll_csmv + end interface + + interface + module subroutine psb_s_oacc_hll_scals(d, a, info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_scals + end interface + + interface + module subroutine psb_s_oacc_hll_scal(d,a,info,side) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_s_oacc_hll_scal + end interface + + interface + module subroutine psb_s_oacc_hll_reallocate_nz(nz,a) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_s_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_s_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_s_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_s_oacc_hll_cp_from_coo(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_cp_from_coo + end interface + +contains + + subroutine s_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + if (allocated(a%hkoffs)) then + !$acc exit data delete(a%hkoffs) + end if + + call a%psb_s_hll_sparse_mat%free() + + return + end subroutine s_oacc_hll_free + + function s_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function s_oacc_hll_sizeof + + + + function s_oacc_hll_is_host(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function s_oacc_hll_is_host + + function s_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function s_oacc_hll_is_sync + + function s_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function s_oacc_hll_is_dev + + subroutine s_oacc_hll_set_host(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine s_oacc_hll_set_host + + subroutine s_oacc_hll_set_sync(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine s_oacc_hll_set_sync + + subroutine s_oacc_hll_set_dev(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine s_oacc_hll_set_dev + + function s_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLL_oacc' + end function s_oacc_hll_get_fmt + + subroutine s_oacc_hll_sync_space(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call s_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + if (allocated(a%hkoffs)) then + call i_oacc_create_dev_scalar(a%hkoffs) + end if + + contains + subroutine s_oacc_create_dev(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine s_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + + end subroutine s_oacc_hll_sync_space + + + subroutine s_oacc_hll_sync(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_s_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call s_oacc_hll_to_host(a%val) + call i_oacc_hll_to_host(a%ja) + call i_oacc_hll_to_host_scalar(a%irn) + call i_oacc_hll_to_host_scalar(a%idiag) + call i_oacc_hll_to_host_scalar(a%hkoffs) + else if (a%is_host()) then + call s_oacc_hll_to_dev(a%val) + call i_oacc_hll_to_dev(a%ja) + call i_oacc_hll_to_dev_scalar(a%irn) + call i_oacc_hll_to_dev_scalar(a%idiag) + call i_oacc_hll_to_dev_scalar(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine s_oacc_hll_sync + + subroutine s_oacc_hll_to_host(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine s_oacc_hll_to_host + + subroutine s_oacc_hll_to_dev(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine s_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host + + subroutine i_oacc_hll_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host_scalar + + subroutine i_oacc_hll_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev_scalar + + +end module psb_s_oacc_hll_mat_mod diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 36ae7da8..5c34827d 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -42,6 +42,7 @@ module psb_s_oacc_vect_mod procedure, pass(y) :: sctb_buf => s_oacc_sctb_buf procedure, pass(x) :: get_size => s_oacc_get_size + procedure, pass(x) :: dot_v => s_oacc_vect_dot procedure, pass(x) :: dot_a => s_oacc_dot_a procedure, pass(y) :: axpby_v => s_oacc_axpby_v @@ -70,7 +71,6 @@ module psb_s_oacc_vect_mod end subroutine s_oacc_mlt_v end interface - interface subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import @@ -83,7 +83,7 @@ module psb_s_oacc_vect_mod character(len=1), intent(in), optional :: conjgx, conjgy end subroutine s_oacc_mlt_v_2 end interface - + contains subroutine s_oacc_absval1(x) @@ -432,7 +432,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() if (y%is_host()) call y%sync_space() !$acc parallel loop @@ -459,7 +459,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 's_oacc_sctb_x') return @@ -475,8 +475,6 @@ contains call y%set_dev() end subroutine s_oacc_sctb_x - - subroutine s_oacc_sctb(n, idx, x, beta, y) use psb_base_mod implicit none @@ -498,7 +496,6 @@ contains call y%set_host() end subroutine s_oacc_sctb - subroutine s_oacc_gthzbuf(i, n, idx, x) use psb_base_mod implicit none @@ -515,7 +512,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 's_oacc_gthzbuf') return @@ -542,7 +539,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 's_oacc_gthzv_x') return @@ -577,7 +574,7 @@ contains select type(vval => val) type is (psb_s_vect_oacc) if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space(info) + if (virl%is_host()) call virl%sync_space() if (x%is_host()) call x%sync_space() !$acc parallel loop do i = 1, n @@ -591,7 +588,7 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space(info) + if (virl%is_dev()) call virl%sync_space() end select select type(vval => val) type is (psb_s_vect_oacc) @@ -607,8 +604,6 @@ contains end subroutine s_oacc_ins_v - - subroutine s_oacc_ins_a(n, irl, val, dupl, x, info) use psi_serial_mod implicit none @@ -628,8 +623,6 @@ contains end subroutine s_oacc_ins_a - - subroutine s_oacc_bld_mn(x, n) use psb_base_mod implicit none @@ -668,7 +661,6 @@ contains end subroutine s_oacc_bld_x - subroutine s_oacc_asb_m(n, x, info) use psb_base_mod implicit none @@ -696,8 +688,6 @@ contains end if end subroutine s_oacc_asb_m - - subroutine s_oacc_set_scal(x, val, first, last) class(psb_s_vect_oacc), intent(inout) :: x real(psb_spk_), intent(in) :: val @@ -718,8 +708,6 @@ contains call x%set_dev() end subroutine s_oacc_set_scal - - subroutine s_oacc_zero(x) use psi_serial_mod implicit none @@ -743,6 +731,7 @@ contains end function s_oacc_get_fmt + function s_oacc_vect_dot(n, x, y) result(res) implicit none class(psb_s_vect_oacc), intent(inout) :: x @@ -776,9 +765,6 @@ contains end function s_oacc_vect_dot - - - function s_oacc_dot_a(n, x, y) result(res) implicit none class(psb_s_vect_oacc), intent(inout) :: x @@ -910,7 +896,6 @@ contains end if end subroutine s_oacc_vect_all - subroutine s_oacc_vect_free(x, info) implicit none class(psb_s_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..8bf8c9fa --- /dev/null +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -0,0 +1,341 @@ +module psb_z_oacc_ell_mat_mod + use iso_c_binding + use psb_z_mat_mod + use psb_z_ell_mat_mod + use psb_z_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_ell_sparse_mat) :: psb_z_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => z_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => z_oacc_ell_sizeof + procedure, pass(a) :: is_host => z_oacc_ell_is_host + procedure, pass(a) :: is_sync => z_oacc_ell_is_sync + procedure, pass(a) :: is_dev => z_oacc_ell_is_dev + procedure, pass(a) :: set_host => z_oacc_ell_set_host + procedure, pass(a) :: set_sync => z_oacc_ell_set_sync + procedure, pass(a) :: set_dev => z_oacc_ell_set_dev + procedure, pass(a) :: sync_space => z_oacc_ell_sync_space + procedure, pass(a) :: sync => z_oacc_ell_sync + procedure, pass(a) :: free => z_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_z_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_z_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_z_oacc_ell_csmv + procedure, pass(a) :: scals => psb_z_oacc_ell_scals + procedure, pass(a) :: scalv => psb_z_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_z_oacc_ell_mold + + end type psb_z_oacc_ell_sparse_mat + + interface + module subroutine psb_z_oacc_ell_mold(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_mold + end interface + + interface + module subroutine psb_z_oacc_ell_cp_from_fmt(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_z_oacc_ell_mv_from_coo(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_z_oacc_ell_mv_from_fmt(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_z_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_z_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_z_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + complex(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_ell_csmm + end interface + + interface + module subroutine psb_z_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta, x(:) + complex(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_ell_csmv + end interface + + interface + module subroutine psb_z_oacc_ell_scals(d, a, info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_scals + end interface + + interface + module subroutine psb_z_oacc_ell_scal(d,a,info,side) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_z_oacc_ell_scal + end interface + + interface + module subroutine psb_z_oacc_ell_reallocate_nz(nz,a) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_z_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_z_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_z_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_z_oacc_ell_cp_from_coo(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_cp_from_coo + end interface + +contains + + subroutine z_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + + call a%psb_z_ell_sparse_mat%free() + + return + end subroutine z_oacc_ell_free + + + function z_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function z_oacc_ell_sizeof + + subroutine z_oacc_ell_sync_space(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call z_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + + contains + subroutine z_oacc_create_dev(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine z_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + end subroutine z_oacc_ell_sync_space + + + + function z_oacc_ell_is_host(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function z_oacc_ell_is_host + + function z_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function z_oacc_ell_is_sync + + function z_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function z_oacc_ell_is_dev + + subroutine z_oacc_ell_set_host(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine z_oacc_ell_set_host + + subroutine z_oacc_ell_set_sync(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine z_oacc_ell_set_sync + + subroutine z_oacc_ell_set_dev(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine z_oacc_ell_set_dev + + function z_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELL_oacc' + end function z_oacc_ell_get_fmt + + subroutine z_oacc_ell_sync(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_z_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call z_oacc_ell_to_host(a%val) + call i_oacc_ell_to_host(a%ja) + call i_oacc_ell_to_host_scalar(a%irn) + call i_oacc_ell_to_host_scalar(a%idiag) + else if (a%is_host()) then + call z_oacc_ell_to_dev(a%val) + call i_oacc_ell_to_dev(a%ja) + call i_oacc_ell_to_dev_scalar(a%irn) + call i_oacc_ell_to_dev_scalar(a%idiag) + end if + call tmpa%set_sync() + end subroutine z_oacc_ell_sync + + subroutine z_oacc_ell_to_host(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine z_oacc_ell_to_host + + subroutine z_oacc_ell_to_host_scalar(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine z_oacc_ell_to_host_scalar + + subroutine i_oacc_ell_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev + + subroutine i_oacc_ell_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_ell_to_dev_scalar + + subroutine i_oacc_ell_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:,:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host + + subroutine i_oacc_ell_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_ell_to_host_scalar +end module psb_z_oacc_ell_mat_mod diff --git a/openacc/psb_z_oacc_hll_mat_mod.F90 b/openacc/psb_z_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..e6a4929a --- /dev/null +++ b/openacc/psb_z_oacc_hll_mat_mod.F90 @@ -0,0 +1,352 @@ +module psb_z_oacc_hll_mat_mod + use iso_c_binding + use psb_z_mat_mod + use psb_z_hll_mat_mod + use psb_z_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_hll_sparse_mat) :: psb_z_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => z_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => z_oacc_hll_sizeof + procedure, pass(a) :: is_host => z_oacc_hll_is_host + procedure, pass(a) :: is_sync => z_oacc_hll_is_sync + procedure, pass(a) :: is_dev => z_oacc_hll_is_dev + procedure, pass(a) :: set_host => z_oacc_hll_set_host + procedure, pass(a) :: set_sync => z_oacc_hll_set_sync + procedure, pass(a) :: set_dev => z_oacc_hll_set_dev + procedure, pass(a) :: sync_space => z_oacc_hll_sync_space + procedure, pass(a) :: sync => z_oacc_hll_sync + procedure, pass(a) :: free => z_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_z_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_z_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_z_oacc_hll_csmv + procedure, pass(a) :: scals => psb_z_oacc_hll_scals + procedure, pass(a) :: scalv => psb_z_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_z_oacc_hll_mold + + end type psb_z_oacc_hll_sparse_mat + + interface + module subroutine psb_z_oacc_hll_mold(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_mold + end interface + + interface + module subroutine psb_z_oacc_hll_cp_from_fmt(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_z_oacc_hll_mv_from_coo(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_z_oacc_hll_mv_from_fmt(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_z_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_z_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_z_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:) + complex(psb_dpk_), intent(inout) :: y(:,:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_hll_csmm + end interface + + interface + module subroutine psb_z_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta, x(:) + complex(psb_dpk_), intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_hll_csmv + end interface + + interface + module subroutine psb_z_oacc_hll_scals(d, a, info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_scals + end interface + + interface + module subroutine psb_z_oacc_hll_scal(d,a,info,side) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_z_oacc_hll_scal + end interface + + interface + module subroutine psb_z_oacc_hll_reallocate_nz(nz,a) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_z_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_z_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_z_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_z_oacc_hll_cp_from_coo(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_cp_from_coo + end interface + +contains + + subroutine z_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + if (allocated(a%val)) then + !$acc exit data delete(a%val) + end if + if (allocated(a%ja)) then + !$acc exit data delete(a%ja) + end if + if (allocated(a%irn)) then + !$acc exit data delete(a%irn) + end if + if (allocated(a%idiag)) then + !$acc exit data delete(a%idiag) + end if + if (allocated(a%hkoffs)) then + !$acc exit data delete(a%hkoffs) + end if + + call a%psb_z_hll_sparse_mat%free() + + return + end subroutine z_oacc_hll_free + + function z_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function z_oacc_hll_sizeof + + + + function z_oacc_hll_is_host(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function z_oacc_hll_is_host + + function z_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function z_oacc_hll_is_sync + + function z_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function z_oacc_hll_is_dev + + subroutine z_oacc_hll_set_host(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine z_oacc_hll_set_host + + subroutine z_oacc_hll_set_sync(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine z_oacc_hll_set_sync + + subroutine z_oacc_hll_set_dev(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine z_oacc_hll_set_dev + + function z_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLL_oacc' + end function z_oacc_hll_get_fmt + + subroutine z_oacc_hll_sync_space(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + if (allocated(a%val)) then + call z_oacc_create_dev(a%val) + end if + if (allocated(a%ja)) then + call i_oacc_create_dev(a%ja) + end if + if (allocated(a%irn)) then + call i_oacc_create_dev_scalar(a%irn) + end if + if (allocated(a%idiag)) then + call i_oacc_create_dev_scalar(a%idiag) + end if + if (allocated(a%hkoffs)) then + call i_oacc_create_dev_scalar(a%hkoffs) + end if + + contains + subroutine z_oacc_create_dev(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine z_oacc_create_dev + + subroutine i_oacc_create_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev + + subroutine i_oacc_create_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc enter data copyin(v) + end subroutine i_oacc_create_dev_scalar + + end subroutine z_oacc_hll_sync_space + + + subroutine z_oacc_hll_sync(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_z_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + if (a%is_dev()) then + call z_oacc_hll_to_host(a%val) + call i_oacc_hll_to_host(a%ja) + call i_oacc_hll_to_host_scalar(a%irn) + call i_oacc_hll_to_host_scalar(a%idiag) + call i_oacc_hll_to_host_scalar(a%hkoffs) + else if (a%is_host()) then + call z_oacc_hll_to_dev(a%val) + call i_oacc_hll_to_dev(a%ja) + call i_oacc_hll_to_dev_scalar(a%irn) + call i_oacc_hll_to_dev_scalar(a%idiag) + call i_oacc_hll_to_dev_scalar(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine z_oacc_hll_sync + + subroutine z_oacc_hll_to_host(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine z_oacc_hll_to_host + + subroutine z_oacc_hll_to_dev(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine z_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host + + subroutine i_oacc_hll_to_dev(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev + + subroutine i_oacc_hll_to_host_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update self(v) + end subroutine i_oacc_hll_to_host_scalar + + subroutine i_oacc_hll_to_dev_scalar(v) + implicit none + integer(psb_ipk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine i_oacc_hll_to_dev_scalar + + +end module psb_z_oacc_hll_mat_mod diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 5d03b49d..0bac854a 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -42,6 +42,7 @@ module psb_z_oacc_vect_mod procedure, pass(y) :: sctb_buf => z_oacc_sctb_buf procedure, pass(x) :: get_size => z_oacc_get_size + procedure, pass(x) :: dot_v => z_oacc_vect_dot procedure, pass(x) :: dot_a => z_oacc_dot_a procedure, pass(y) :: axpby_v => z_oacc_axpby_v @@ -70,7 +71,6 @@ module psb_z_oacc_vect_mod end subroutine z_oacc_mlt_v end interface - interface subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import @@ -83,7 +83,7 @@ module psb_z_oacc_vect_mod character(len=1), intent(in), optional :: conjgx, conjgy end subroutine z_oacc_mlt_v_2 end interface - + contains subroutine z_oacc_absval1(x) @@ -432,7 +432,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() if (y%is_host()) call y%sync_space() !$acc parallel loop @@ -459,7 +459,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'z_oacc_sctb_x') return @@ -475,8 +475,6 @@ contains call y%set_dev() end subroutine z_oacc_sctb_x - - subroutine z_oacc_sctb(n, idx, x, beta, y) use psb_base_mod implicit none @@ -498,7 +496,6 @@ contains call y%set_host() end subroutine z_oacc_sctb - subroutine z_oacc_gthzbuf(i, n, idx, x) use psb_base_mod implicit none @@ -515,7 +512,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'z_oacc_gthzbuf') return @@ -542,7 +539,7 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space(info) + if (ii%is_host()) call ii%sync_space() class default call psb_errpush(info, 'z_oacc_gthzv_x') return @@ -577,7 +574,7 @@ contains select type(vval => val) type is (psb_z_vect_oacc) if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space(info) + if (virl%is_host()) call virl%sync_space() if (x%is_host()) call x%sync_space() !$acc parallel loop do i = 1, n @@ -591,7 +588,7 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space(info) + if (virl%is_dev()) call virl%sync_space() end select select type(vval => val) type is (psb_z_vect_oacc) @@ -607,8 +604,6 @@ contains end subroutine z_oacc_ins_v - - subroutine z_oacc_ins_a(n, irl, val, dupl, x, info) use psi_serial_mod implicit none @@ -628,8 +623,6 @@ contains end subroutine z_oacc_ins_a - - subroutine z_oacc_bld_mn(x, n) use psb_base_mod implicit none @@ -668,7 +661,6 @@ contains end subroutine z_oacc_bld_x - subroutine z_oacc_asb_m(n, x, info) use psb_base_mod implicit none @@ -696,8 +688,6 @@ contains end if end subroutine z_oacc_asb_m - - subroutine z_oacc_set_scal(x, val, first, last) class(psb_z_vect_oacc), intent(inout) :: x complex(psb_dpk_), intent(in) :: val @@ -718,8 +708,6 @@ contains call x%set_dev() end subroutine z_oacc_set_scal - - subroutine z_oacc_zero(x) use psi_serial_mod implicit none @@ -743,6 +731,7 @@ contains end function z_oacc_get_fmt + function z_oacc_vect_dot(n, x, y) result(res) implicit none class(psb_z_vect_oacc), intent(inout) :: x @@ -776,9 +765,6 @@ contains end function z_oacc_vect_dot - - - function z_oacc_dot_a(n, x, y) result(res) implicit none class(psb_z_vect_oacc), intent(inout) :: x @@ -910,7 +896,6 @@ contains end if end subroutine z_oacc_vect_all - subroutine z_oacc_vect_free(x, info) implicit none class(psb_z_vect_oacc), intent(inout) :: x From 2709aa9f16b6b1614ecea1a3516d7d7a91651c80 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 8 Aug 2024 11:10:04 +0200 Subject: [PATCH 28/86] Fix upd_xyz name --- openacc/psb_c_oacc_vect_mod.F90 | 6 +++--- openacc/psb_d_oacc_vect_mod.F90 | 6 +++--- openacc/psb_s_oacc_vect_mod.F90 | 6 +++--- openacc/psb_z_oacc_vect_mod.F90 | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index 9225f159..fc501e04 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -47,7 +47,7 @@ module psb_c_oacc_vect_mod procedure, pass(x) :: dot_a => c_oacc_dot_a procedure, pass(y) :: axpby_v => c_oacc_axpby_v procedure, pass(y) :: axpby_a => c_oacc_axpby_a - procedure, pass(z) :: abgdxyz => c_oacc_abgdxyz + procedure, pass(z) :: upd_xyz => c_oacc_upd_xyz procedure, pass(y) :: mlt_a => c_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => c_oacc_mlt_a_2 procedure, pass(y) :: mlt_v => c_oacc_mlt_v @@ -364,7 +364,7 @@ contains call y%set_host() end subroutine c_oacc_axpby_a - subroutine c_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + subroutine c_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -414,7 +414,7 @@ contains call y%axpby(m, alpha, x, beta, info) call z%axpby(m, gamma, y, delta, info) end if - end subroutine c_oacc_abgdxyz + end subroutine c_oacc_upd_xyz subroutine c_oacc_sctb_buf(i, n, idx, beta, y) use psb_base_mod diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 0dff0f27..bfb97b5c 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -47,7 +47,7 @@ module psb_d_oacc_vect_mod procedure, pass(x) :: dot_a => d_oacc_dot_a procedure, pass(y) :: axpby_v => d_oacc_axpby_v procedure, pass(y) :: axpby_a => d_oacc_axpby_a - procedure, pass(z) :: abgdxyz => d_oacc_abgdxyz + procedure, pass(z) :: upd_xyz => d_oacc_upd_xyz procedure, pass(y) :: mlt_a => d_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 procedure, pass(y) :: mlt_v => d_oacc_mlt_v @@ -364,7 +364,7 @@ contains call y%set_host() end subroutine d_oacc_axpby_a - subroutine d_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + subroutine d_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -414,7 +414,7 @@ contains call y%axpby(m, alpha, x, beta, info) call z%axpby(m, gamma, y, delta, info) end if - end subroutine d_oacc_abgdxyz + end subroutine d_oacc_upd_xyz subroutine d_oacc_sctb_buf(i, n, idx, beta, y) use psb_base_mod diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 5c34827d..47922d6a 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -47,7 +47,7 @@ module psb_s_oacc_vect_mod procedure, pass(x) :: dot_a => s_oacc_dot_a procedure, pass(y) :: axpby_v => s_oacc_axpby_v procedure, pass(y) :: axpby_a => s_oacc_axpby_a - procedure, pass(z) :: abgdxyz => s_oacc_abgdxyz + procedure, pass(z) :: upd_xyz => s_oacc_upd_xyz procedure, pass(y) :: mlt_a => s_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => s_oacc_mlt_a_2 procedure, pass(y) :: mlt_v => s_oacc_mlt_v @@ -364,7 +364,7 @@ contains call y%set_host() end subroutine s_oacc_axpby_a - subroutine s_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + subroutine s_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -414,7 +414,7 @@ contains call y%axpby(m, alpha, x, beta, info) call z%axpby(m, gamma, y, delta, info) end if - end subroutine s_oacc_abgdxyz + end subroutine s_oacc_upd_xyz subroutine s_oacc_sctb_buf(i, n, idx, beta, y) use psb_base_mod diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 0bac854a..be03b1cd 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -47,7 +47,7 @@ module psb_z_oacc_vect_mod procedure, pass(x) :: dot_a => z_oacc_dot_a procedure, pass(y) :: axpby_v => z_oacc_axpby_v procedure, pass(y) :: axpby_a => z_oacc_axpby_a - procedure, pass(z) :: abgdxyz => z_oacc_abgdxyz + procedure, pass(z) :: upd_xyz => z_oacc_upd_xyz procedure, pass(y) :: mlt_a => z_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => z_oacc_mlt_a_2 procedure, pass(y) :: mlt_v => z_oacc_mlt_v @@ -364,7 +364,7 @@ contains call y%set_host() end subroutine z_oacc_axpby_a - subroutine z_oacc_abgdxyz(m, alpha, beta, gamma, delta, x, y, z, info) + subroutine z_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -414,7 +414,7 @@ contains call y%axpby(m, alpha, x, beta, info) call z%axpby(m, gamma, y, delta, info) end if - end subroutine z_oacc_abgdxyz + end subroutine z_oacc_upd_xyz subroutine z_oacc_sctb_buf(i, n, idx, beta, y) use psb_base_mod From cf2cc6cab9af7178ba4da7d30a7ee47a3adc7044 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 8 Aug 2024 14:34:28 +0200 Subject: [PATCH 29/86] Precedence of oacc_vect modules --- openacc/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openacc/Makefile b/openacc/Makefile index 035244d9..cdcc9f71 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -58,8 +58,9 @@ psb_oacc_mod.o : psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o \ psb_z_oacc_ell_mat_mod.o psb_z_oacc_hll_mat_mod.o \ psb_oacc_env_mod.o -psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ - psb_c_oacc_vect_mod.o psb_z_oacc_vect_mod.o : psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o +psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o\ + psb_c_oacc_vect_mod.o psb_z_oacc_vect_mod.o: psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o +psb_l_oacc_vect_mod.o: psb_i_oacc_vect_mod.o psb_s_oacc_csr_mat_mod.o psb_s_oacc_ell_mat_mod.o psb_s_oacc_hll_mat_mod.o: psb_s_oacc_vect_mod.o From 82201407290cdbd35af47cbaae9f9ca7bf8d3a09 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 8 Aug 2024 14:59:09 +0200 Subject: [PATCH 30/86] Merged recent changes from development --- base/modules/auxil/psi_c_serial_mod.f90 | 8 ++++---- base/modules/auxil/psi_d_serial_mod.f90 | 8 ++++---- base/modules/auxil/psi_e_serial_mod.f90 | 8 ++++---- base/modules/auxil/psi_i2_serial_mod.f90 | 8 ++++---- base/modules/auxil/psi_m_serial_mod.f90 | 8 ++++---- base/modules/auxil/psi_s_serial_mod.f90 | 8 ++++---- base/modules/auxil/psi_z_serial_mod.f90 | 8 ++++---- base/modules/psblas/psb_c_psblas_mod.F90 | 8 ++++---- base/modules/psblas/psb_d_psblas_mod.F90 | 8 ++++---- base/modules/psblas/psb_s_psblas_mod.F90 | 8 ++++---- base/modules/psblas/psb_z_psblas_mod.F90 | 8 ++++---- base/modules/serial/psb_c_base_vect_mod.F90 | 14 +++++++------- base/modules/serial/psb_c_vect_mod.F90 | 9 +++++---- base/modules/serial/psb_d_base_vect_mod.F90 | 14 +++++++------- base/modules/serial/psb_d_vect_mod.F90 | 9 +++++---- base/modules/serial/psb_s_base_vect_mod.F90 | 14 +++++++------- base/modules/serial/psb_s_vect_mod.F90 | 9 +++++---- base/modules/serial/psb_z_base_vect_mod.F90 | 14 +++++++------- base/modules/serial/psb_z_vect_mod.F90 | 9 +++++---- base/psblas/psb_caxpby.f90 | 8 ++++---- base/psblas/psb_daxpby.f90 | 8 ++++---- base/psblas/psb_saxpby.f90 | 8 ++++---- base/psblas/psb_zaxpby.f90 | 8 ++++---- base/serial/psi_c_serial_impl.F90 | 8 ++++---- base/serial/psi_d_serial_impl.F90 | 8 ++++---- base/serial/psi_e_serial_impl.F90 | 8 ++++---- base/serial/psi_i2_serial_impl.F90 | 8 ++++---- base/serial/psi_m_serial_impl.F90 | 8 ++++---- base/serial/psi_s_serial_impl.F90 | 8 ++++---- base/serial/psi_z_serial_impl.F90 | 8 ++++---- cuda/psb_c_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_c_vectordev_mod.F90 | 8 ++++---- cuda/psb_d_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_d_vectordev_mod.F90 | 8 ++++---- cuda/psb_s_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_s_vectordev_mod.F90 | 8 ++++---- cuda/psb_z_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_z_vectordev_mod.F90 | 8 ++++---- 38 files changed, 168 insertions(+), 164 deletions(-) diff --git a/base/modules/auxil/psi_c_serial_mod.f90 b/base/modules/auxil/psi_c_serial_mod.f90 index 38b740a7..3fe001c8 100644 --- a/base/modules/auxil/psi_c_serial_mod.f90 +++ b/base/modules/auxil/psi_c_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_c_serial_mod end subroutine psi_caxpbyv2 end interface psb_geaxpby - interface psi_abgdxyz - subroutine psi_cabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_upd_xyz + subroutine psi_c_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_spk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_c_serial_mod complex(psb_spk_), intent (inout) :: z(:) complex(psb_spk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_cabgdxyz - end interface psi_abgdxyz + end subroutine psi_c_upd_xyz + end interface psi_upd_xyz interface psi_xyzw subroutine psi_cxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_d_serial_mod.f90 b/base/modules/auxil/psi_d_serial_mod.f90 index 1d65c5f6..a08263df 100644 --- a/base/modules/auxil/psi_d_serial_mod.f90 +++ b/base/modules/auxil/psi_d_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_d_serial_mod end subroutine psi_daxpbyv2 end interface psb_geaxpby - interface psi_abgdxyz - subroutine psi_dabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_upd_xyz + subroutine psi_d_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_dpk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_d_serial_mod real(psb_dpk_), intent (inout) :: z(:) real(psb_dpk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_dabgdxyz - end interface psi_abgdxyz + end subroutine psi_d_upd_xyz + end interface psi_upd_xyz interface psi_xyzw subroutine psi_dxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_e_serial_mod.f90 b/base/modules/auxil/psi_e_serial_mod.f90 index 6f4e8c06..1f1bebd7 100644 --- a/base/modules/auxil/psi_e_serial_mod.f90 +++ b/base/modules/auxil/psi_e_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_e_serial_mod end subroutine psi_eaxpbyv2 end interface psb_geaxpby - interface psi_abgdxyz - subroutine psi_eabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_upd_xyz + subroutine psi_e_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_lpk_,psb_mpk_, psb_epk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_e_serial_mod integer(psb_epk_), intent (inout) :: z(:) integer(psb_epk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_eabgdxyz - end interface psi_abgdxyz + end subroutine psi_e_upd_xyz + end interface psi_upd_xyz interface psi_xyzw subroutine psi_exyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_i2_serial_mod.f90 b/base/modules/auxil/psi_i2_serial_mod.f90 index ffa14059..770d3256 100644 --- a/base/modules/auxil/psi_i2_serial_mod.f90 +++ b/base/modules/auxil/psi_i2_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_i2_serial_mod end subroutine psi_i2axpbyv2 end interface psb_geaxpby - interface psi_abgdxyz - subroutine psi_i2abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_upd_xyz + subroutine psi_i2_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_lpk_,psb_mpk_, psb_epk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_i2_serial_mod integer(psb_i2pk_), intent (inout) :: z(:) integer(psb_i2pk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_i2abgdxyz - end interface psi_abgdxyz + end subroutine psi_i2_upd_xyz + end interface psi_upd_xyz interface psi_xyzw subroutine psi_i2xyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_m_serial_mod.f90 b/base/modules/auxil/psi_m_serial_mod.f90 index 5661fdbf..3583cccc 100644 --- a/base/modules/auxil/psi_m_serial_mod.f90 +++ b/base/modules/auxil/psi_m_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_m_serial_mod end subroutine psi_maxpbyv2 end interface psb_geaxpby - interface psi_abgdxyz - subroutine psi_mabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_upd_xyz + subroutine psi_m_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_lpk_,psb_mpk_, psb_epk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_m_serial_mod integer(psb_mpk_), intent (inout) :: z(:) integer(psb_mpk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_mabgdxyz - end interface psi_abgdxyz + end subroutine psi_m_upd_xyz + end interface psi_upd_xyz interface psi_xyzw subroutine psi_mxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_s_serial_mod.f90 b/base/modules/auxil/psi_s_serial_mod.f90 index 5cc17d58..3e0c6d91 100644 --- a/base/modules/auxil/psi_s_serial_mod.f90 +++ b/base/modules/auxil/psi_s_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_s_serial_mod end subroutine psi_saxpbyv2 end interface psb_geaxpby - interface psi_abgdxyz - subroutine psi_sabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_upd_xyz + subroutine psi_s_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_spk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_s_serial_mod real(psb_spk_), intent (inout) :: z(:) real(psb_spk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_sabgdxyz - end interface psi_abgdxyz + end subroutine psi_s_upd_xyz + end interface psi_upd_xyz interface psi_xyzw subroutine psi_sxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/auxil/psi_z_serial_mod.f90 b/base/modules/auxil/psi_z_serial_mod.f90 index 8a3f053d..a8ea734e 100644 --- a/base/modules/auxil/psi_z_serial_mod.f90 +++ b/base/modules/auxil/psi_z_serial_mod.f90 @@ -99,8 +99,8 @@ module psi_z_serial_mod end subroutine psi_zaxpbyv2 end interface psb_geaxpby - interface psi_abgdxyz - subroutine psi_zabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + interface psi_upd_xyz + subroutine psi_z_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) import :: psb_ipk_, psb_dpk_ implicit none integer(psb_ipk_), intent(in) :: m @@ -109,8 +109,8 @@ module psi_z_serial_mod complex(psb_dpk_), intent (inout) :: z(:) complex(psb_dpk_), intent (in) :: alpha, beta,gamma,delta integer(psb_ipk_), intent(out) :: info - end subroutine psi_zabgdxyz - end interface psi_abgdxyz + end subroutine psi_z_upd_xyz + end interface psi_upd_xyz interface psi_xyzw subroutine psi_zxyzw(m,a,b,c,d,e,f,x, y, z,w, info) diff --git a/base/modules/psblas/psb_c_psblas_mod.F90 b/base/modules/psblas/psb_c_psblas_mod.F90 index 7f7f937c..591dec09 100644 --- a/base/modules/psblas/psb_c_psblas_mod.F90 +++ b/base/modules/psblas/psb_c_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_c_psblas_mod end subroutine psb_caxpby end interface - interface psb_abgdxyz - subroutine psb_cabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_upd_xyz + subroutine psb_c_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_vect_type, psb_cspmat_type @@ -154,8 +154,8 @@ module psb_c_psblas_mod complex(psb_spk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_cabgdxyz_vect - end interface psb_abgdxyz + end subroutine psb_c_upd_xyz_vect + end interface psb_upd_xyz interface psb_geamax function psb_camax(x, desc_a, info, jx,global) diff --git a/base/modules/psblas/psb_d_psblas_mod.F90 b/base/modules/psblas/psb_d_psblas_mod.F90 index 12090956..b200bc8a 100644 --- a/base/modules/psblas/psb_d_psblas_mod.F90 +++ b/base/modules/psblas/psb_d_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_d_psblas_mod end subroutine psb_daxpby end interface - interface psb_abgdxyz - subroutine psb_dabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_upd_xyz + subroutine psb_d_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_vect_type, psb_dspmat_type @@ -154,8 +154,8 @@ module psb_d_psblas_mod real(psb_dpk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_dabgdxyz_vect - end interface psb_abgdxyz + end subroutine psb_d_upd_xyz_vect + end interface psb_upd_xyz interface psb_geamax function psb_damax(x, desc_a, info, jx,global) diff --git a/base/modules/psblas/psb_s_psblas_mod.F90 b/base/modules/psblas/psb_s_psblas_mod.F90 index 7a7ce783..a60da025 100644 --- a/base/modules/psblas/psb_s_psblas_mod.F90 +++ b/base/modules/psblas/psb_s_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_s_psblas_mod end subroutine psb_saxpby end interface - interface psb_abgdxyz - subroutine psb_sabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_upd_xyz + subroutine psb_s_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_vect_type, psb_sspmat_type @@ -154,8 +154,8 @@ module psb_s_psblas_mod real(psb_spk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_sabgdxyz_vect - end interface psb_abgdxyz + end subroutine psb_s_upd_xyz_vect + end interface psb_upd_xyz interface psb_geamax function psb_samax(x, desc_a, info, jx,global) diff --git a/base/modules/psblas/psb_z_psblas_mod.F90 b/base/modules/psblas/psb_z_psblas_mod.F90 index bcfe9caa..241df2b9 100644 --- a/base/modules/psblas/psb_z_psblas_mod.F90 +++ b/base/modules/psblas/psb_z_psblas_mod.F90 @@ -143,8 +143,8 @@ module psb_z_psblas_mod end subroutine psb_zaxpby end interface - interface psb_abgdxyz - subroutine psb_zabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& + interface psb_upd_xyz + subroutine psb_z_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_vect_type, psb_zspmat_type @@ -154,8 +154,8 @@ module psb_z_psblas_mod complex(psb_dpk_), intent (in) :: alpha, beta, gamma, delta type(psb_desc_type), intent (in) :: desc_a integer(psb_ipk_), intent(out) :: info - end subroutine psb_zabgdxyz_vect - end interface psb_abgdxyz + end subroutine psb_z_upd_xyz_vect + end interface psb_upd_xyz interface psb_geamax function psb_zamax(x, desc_a, info, jx,global) diff --git a/base/modules/serial/psb_c_base_vect_mod.F90 b/base/modules/serial/psb_c_base_vect_mod.F90 index 41bab5ab..4dac86d6 100644 --- a/base/modules/serial/psb_c_base_vect_mod.F90 +++ b/base/modules/serial/psb_c_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_c_base_vect_mod procedure, pass(z) :: axpby_v2 => c_base_axpby_v2 procedure, pass(z) :: axpby_a2 => c_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => c_base_abgdxyz + procedure, pass(z) :: upd_xyz => c_base_upd_xyz procedure, pass(w) :: xyzw => c_base_xyzw ! @@ -1130,12 +1130,12 @@ contains end subroutine c_base_axpby_a2 ! - ! ABGDXYZ is invoked via Z, hence the structure below. + ! UPD_XYZ is invoked via Z, hence the structure below. ! ! - !> Function base_abgdxyz + !> Function base_upd_xyz !! \memberof psb_c_base_vect_type - !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1146,7 +1146,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine c_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine c_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1159,11 +1159,11 @@ contains if (x%is_dev().and.(alpha/=czero)) call x%sync() if (y%is_dev().and.(beta/=czero)) call y%sync() if (z%is_dev().and.(delta/=czero)) call z%sync() - call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine c_base_abgdxyz + end subroutine c_base_upd_xyz subroutine c_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_c_vect_mod.F90 b/base/modules/serial/psb_c_vect_mod.F90 index faf1733f..1e9510f2 100644 --- a/base/modules/serial/psb_c_vect_mod.F90 +++ b/base/modules/serial/psb_c_vect_mod.F90 @@ -102,8 +102,9 @@ module psb_c_vect_mod procedure, pass(z) :: axpby_v2 => c_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => c_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => c_vect_abgdxyz + procedure, pass(z) :: upd_xyz => c_vect_upd_xyz procedure, pass(z) :: xyzw => c_vect_xyzw + procedure, pass(y) :: mlt_v => c_vect_mlt_v procedure, pass(y) :: mlt_a => c_vect_mlt_a procedure, pass(z) :: mlt_a_2 => c_vect_mlt_a_2 @@ -773,7 +774,7 @@ contains end subroutine c_vect_axpby_a2 - subroutine c_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine c_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -784,9 +785,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine c_vect_abgdxyz + end subroutine c_vect_upd_xyz subroutine c_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/modules/serial/psb_d_base_vect_mod.F90 b/base/modules/serial/psb_d_base_vect_mod.F90 index 1ad1ffa5..f07b5aed 100644 --- a/base/modules/serial/psb_d_base_vect_mod.F90 +++ b/base/modules/serial/psb_d_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_d_base_vect_mod procedure, pass(z) :: axpby_v2 => d_base_axpby_v2 procedure, pass(z) :: axpby_a2 => d_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => d_base_abgdxyz + procedure, pass(z) :: upd_xyz => d_base_upd_xyz procedure, pass(w) :: xyzw => d_base_xyzw ! @@ -1137,12 +1137,12 @@ contains end subroutine d_base_axpby_a2 ! - ! ABGDXYZ is invoked via Z, hence the structure below. + ! UPD_XYZ is invoked via Z, hence the structure below. ! ! - !> Function base_abgdxyz + !> Function base_upd_xyz !! \memberof psb_d_base_vect_type - !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1153,7 +1153,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine d_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine d_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1166,11 +1166,11 @@ contains if (x%is_dev().and.(alpha/=dzero)) call x%sync() if (y%is_dev().and.(beta/=dzero)) call y%sync() if (z%is_dev().and.(delta/=dzero)) call z%sync() - call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine d_base_abgdxyz + end subroutine d_base_upd_xyz subroutine d_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_d_vect_mod.F90 b/base/modules/serial/psb_d_vect_mod.F90 index a54ddfdb..ae3062dd 100644 --- a/base/modules/serial/psb_d_vect_mod.F90 +++ b/base/modules/serial/psb_d_vect_mod.F90 @@ -102,8 +102,9 @@ module psb_d_vect_mod procedure, pass(z) :: axpby_v2 => d_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => d_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => d_vect_abgdxyz + procedure, pass(z) :: upd_xyz => d_vect_upd_xyz procedure, pass(z) :: xyzw => d_vect_xyzw + procedure, pass(y) :: mlt_v => d_vect_mlt_v procedure, pass(y) :: mlt_a => d_vect_mlt_a procedure, pass(z) :: mlt_a_2 => d_vect_mlt_a_2 @@ -780,7 +781,7 @@ contains end subroutine d_vect_axpby_a2 - subroutine d_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine d_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -791,9 +792,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine d_vect_abgdxyz + end subroutine d_vect_upd_xyz subroutine d_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/modules/serial/psb_s_base_vect_mod.F90 b/base/modules/serial/psb_s_base_vect_mod.F90 index 26b82c31..596cd634 100644 --- a/base/modules/serial/psb_s_base_vect_mod.F90 +++ b/base/modules/serial/psb_s_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_s_base_vect_mod procedure, pass(z) :: axpby_v2 => s_base_axpby_v2 procedure, pass(z) :: axpby_a2 => s_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => s_base_abgdxyz + procedure, pass(z) :: upd_xyz => s_base_upd_xyz procedure, pass(w) :: xyzw => s_base_xyzw ! @@ -1137,12 +1137,12 @@ contains end subroutine s_base_axpby_a2 ! - ! ABGDXYZ is invoked via Z, hence the structure below. + ! UPD_XYZ is invoked via Z, hence the structure below. ! ! - !> Function base_abgdxyz + !> Function base_upd_xyz !! \memberof psb_s_base_vect_type - !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1153,7 +1153,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine s_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine s_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1166,11 +1166,11 @@ contains if (x%is_dev().and.(alpha/=szero)) call x%sync() if (y%is_dev().and.(beta/=szero)) call y%sync() if (z%is_dev().and.(delta/=szero)) call z%sync() - call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine s_base_abgdxyz + end subroutine s_base_upd_xyz subroutine s_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_s_vect_mod.F90 b/base/modules/serial/psb_s_vect_mod.F90 index 901c6103..cad4659c 100644 --- a/base/modules/serial/psb_s_vect_mod.F90 +++ b/base/modules/serial/psb_s_vect_mod.F90 @@ -102,8 +102,9 @@ module psb_s_vect_mod procedure, pass(z) :: axpby_v2 => s_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => s_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => s_vect_abgdxyz + procedure, pass(z) :: upd_xyz => s_vect_upd_xyz procedure, pass(z) :: xyzw => s_vect_xyzw + procedure, pass(y) :: mlt_v => s_vect_mlt_v procedure, pass(y) :: mlt_a => s_vect_mlt_a procedure, pass(z) :: mlt_a_2 => s_vect_mlt_a_2 @@ -780,7 +781,7 @@ contains end subroutine s_vect_axpby_a2 - subroutine s_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine s_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -791,9 +792,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine s_vect_abgdxyz + end subroutine s_vect_upd_xyz subroutine s_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/modules/serial/psb_z_base_vect_mod.F90 b/base/modules/serial/psb_z_base_vect_mod.F90 index a3afc9c1..1bbdfba1 100644 --- a/base/modules/serial/psb_z_base_vect_mod.F90 +++ b/base/modules/serial/psb_z_base_vect_mod.F90 @@ -155,7 +155,7 @@ module psb_z_base_vect_mod procedure, pass(z) :: axpby_v2 => z_base_axpby_v2 procedure, pass(z) :: axpby_a2 => z_base_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => z_base_abgdxyz + procedure, pass(z) :: upd_xyz => z_base_upd_xyz procedure, pass(w) :: xyzw => z_base_xyzw ! @@ -1130,12 +1130,12 @@ contains end subroutine z_base_axpby_a2 ! - ! ABGDXYZ is invoked via Z, hence the structure below. + ! UPD_XYZ is invoked via Z, hence the structure below. ! ! - !> Function base_abgdxyz + !> Function base_upd_xyz !! \memberof psb_z_base_vect_type - !! \brief ABGDXYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta + !! \brief UPD_XYZ combines two AXPBYS y=alpha*x+beta*y, z=gamma*y+delta*zeta !! \param m Number of entries to be considered !! \param alpha scalar alpha !! \param beta scalar beta @@ -1146,7 +1146,7 @@ contains !! \param z The class(base_vect) to be added !! \param info return code !! - subroutine z_base_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine z_base_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -1159,11 +1159,11 @@ contains if (x%is_dev().and.(alpha/=zzero)) call x%sync() if (y%is_dev().and.(beta/=zzero)) call y%sync() if (z%is_dev().and.(delta/=zzero)) call z%sync() - call psi_abgdxyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) + call psi_upd_xyz(m,alpha, beta, gamma,delta,x%v, y%v, z%v, info) call y%set_host() call z%set_host() - end subroutine z_base_abgdxyz + end subroutine z_base_upd_xyz subroutine z_base_xyzw(m,a,b,c,d,e,f,x, y, z, w,info) use psi_serial_mod diff --git a/base/modules/serial/psb_z_vect_mod.F90 b/base/modules/serial/psb_z_vect_mod.F90 index 8235d1d4..48f2e947 100644 --- a/base/modules/serial/psb_z_vect_mod.F90 +++ b/base/modules/serial/psb_z_vect_mod.F90 @@ -102,8 +102,9 @@ module psb_z_vect_mod procedure, pass(z) :: axpby_v2 => z_vect_axpby_v2 procedure, pass(z) :: axpby_a2 => z_vect_axpby_a2 generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 - procedure, pass(z) :: abgdxyz => z_vect_abgdxyz + procedure, pass(z) :: upd_xyz => z_vect_upd_xyz procedure, pass(z) :: xyzw => z_vect_xyzw + procedure, pass(y) :: mlt_v => z_vect_mlt_v procedure, pass(y) :: mlt_a => z_vect_mlt_a procedure, pass(z) :: mlt_a_2 => z_vect_mlt_a_2 @@ -773,7 +774,7 @@ contains end subroutine z_vect_axpby_a2 - subroutine z_vect_abgdxyz(m,alpha,beta,gamma,delta,x, y, z, info) + subroutine z_vect_upd_xyz(m,alpha,beta,gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -784,9 +785,9 @@ contains integer(psb_ipk_), intent(out) :: info if (allocated(z%v)) & - call z%v%abgdxyz(m,alpha,beta,gamma,delta,x%v,y%v,info) + call z%v%upd_xyz(m,alpha,beta,gamma,delta,x%v,y%v,info) - end subroutine z_vect_abgdxyz + end subroutine z_vect_upd_xyz subroutine z_vect_xyzw(m,a,b,c,d,e,f,x, y, z, w, info) use psi_serial_mod diff --git a/base/psblas/psb_caxpby.f90 b/base/psblas/psb_caxpby.f90 index 7c22bb06..5d80ef00 100644 --- a/base/psblas/psb_caxpby.f90 +++ b/base/psblas/psb_caxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_caddconst_vect(x,b,z,desc_a,info) end subroutine psb_caddconst_vect -subroutine psb_cabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_c_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_cabgdxyz_vect + use psb_base_mod, psb_protect_name => psb_c_upd_xyz_vect implicit none type(psb_c_vect_type), intent (inout) :: x type(psb_c_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_cabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_cabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_cabgdxyz_vect +end subroutine psb_c_upd_xyz_vect diff --git a/base/psblas/psb_daxpby.f90 b/base/psblas/psb_daxpby.f90 index 1de77647..38ebe465 100644 --- a/base/psblas/psb_daxpby.f90 +++ b/base/psblas/psb_daxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_daddconst_vect(x,b,z,desc_a,info) end subroutine psb_daddconst_vect -subroutine psb_dabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_d_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_dabgdxyz_vect + use psb_base_mod, psb_protect_name => psb_d_upd_xyz_vect implicit none type(psb_d_vect_type), intent (inout) :: x type(psb_d_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_dabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_dabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_dabgdxyz_vect +end subroutine psb_d_upd_xyz_vect diff --git a/base/psblas/psb_saxpby.f90 b/base/psblas/psb_saxpby.f90 index 1b1f24e6..0055fdbe 100644 --- a/base/psblas/psb_saxpby.f90 +++ b/base/psblas/psb_saxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_saddconst_vect(x,b,z,desc_a,info) end subroutine psb_saddconst_vect -subroutine psb_sabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_s_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_sabgdxyz_vect + use psb_base_mod, psb_protect_name => psb_s_upd_xyz_vect implicit none type(psb_s_vect_type), intent (inout) :: x type(psb_s_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_sabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_sabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_sabgdxyz_vect +end subroutine psb_s_upd_xyz_vect diff --git a/base/psblas/psb_zaxpby.f90 b/base/psblas/psb_zaxpby.f90 index 0f37a1f4..e93488e3 100644 --- a/base/psblas/psb_zaxpby.f90 +++ b/base/psblas/psb_zaxpby.f90 @@ -743,9 +743,9 @@ subroutine psb_zaddconst_vect(x,b,z,desc_a,info) end subroutine psb_zaddconst_vect -subroutine psb_zabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& +subroutine psb_z_upd_xyz_vect(alpha, beta, gamma, delta, x, y, z,& & desc_a, info) - use psb_base_mod, psb_protect_name => psb_zabgdxyz_vect + use psb_base_mod, psb_protect_name => psb_z_upd_xyz_vect implicit none type(psb_z_vect_type), intent (inout) :: x type(psb_z_vect_type), intent (inout) :: y @@ -812,7 +812,7 @@ subroutine psb_zabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& end if if(desc_a%get_local_rows() > 0) then - call z%abgdxyz(nr,alpha,beta,gamma,delta,x,y,info) + call z%upd_xyz(nr,alpha,beta,gamma,delta,x,y,info) end if call psb_erractionrestore(err_act) @@ -822,5 +822,5 @@ subroutine psb_zabgdxyz_vect(alpha, beta, gamma, delta, x, y, z,& return -end subroutine psb_zabgdxyz_vect +end subroutine psb_z_upd_xyz_vect diff --git a/base/serial/psi_c_serial_impl.F90 b/base/serial/psi_c_serial_impl.F90 index e230a1e0..e3f1d9a3 100644 --- a/base/serial/psi_c_serial_impl.F90 +++ b/base/serial/psi_c_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine caxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine caxpbyv2 -subroutine psi_cabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_c_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_cabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='cabgdxyz' + name='c_upd_xyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_cabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_cabgdxyz +end subroutine psi_c_upd_xyz subroutine psi_cxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_cxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='cabgdxyz' + name='c_xyzw' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_d_serial_impl.F90 b/base/serial/psi_d_serial_impl.F90 index bf1b2917..d6a9a31d 100644 --- a/base/serial/psi_d_serial_impl.F90 +++ b/base/serial/psi_d_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine daxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine daxpbyv2 -subroutine psi_dabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_d_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_dabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='dabgdxyz' + name='d_upd_xyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_dabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_dabgdxyz +end subroutine psi_d_upd_xyz subroutine psi_dxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_dxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='dabgdxyz' + name='d_xyzw' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_e_serial_impl.F90 b/base/serial/psi_e_serial_impl.F90 index 911ab4ec..37b11a94 100644 --- a/base/serial/psi_e_serial_impl.F90 +++ b/base/serial/psi_e_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine eaxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine eaxpbyv2 -subroutine psi_eabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_e_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_eabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='eabgdxyz' + name='e_upd_xyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_eabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_eabgdxyz +end subroutine psi_e_upd_xyz subroutine psi_exyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_exyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='eabgdxyz' + name='e_xyzw' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_i2_serial_impl.F90 b/base/serial/psi_i2_serial_impl.F90 index fb42dfcd..c20cd60b 100644 --- a/base/serial/psi_i2_serial_impl.F90 +++ b/base/serial/psi_i2_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine i2axpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine i2axpbyv2 -subroutine psi_i2abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_i2_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_i2abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='i2abgdxyz' + name='i2_upd_xyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_i2abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_i2abgdxyz +end subroutine psi_i2_upd_xyz subroutine psi_i2xyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_i2xyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='i2abgdxyz' + name='i2_xyzw' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_m_serial_impl.F90 b/base/serial/psi_m_serial_impl.F90 index 346fd897..55913a16 100644 --- a/base/serial/psi_m_serial_impl.F90 +++ b/base/serial/psi_m_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine maxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine maxpbyv2 -subroutine psi_mabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_m_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_mabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='mabgdxyz' + name='m_upd_xyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_mabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_mabgdxyz +end subroutine psi_m_upd_xyz subroutine psi_mxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_mxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='mabgdxyz' + name='m_xyzw' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_s_serial_impl.F90 b/base/serial/psi_s_serial_impl.F90 index 52f86bcd..c3846c8e 100644 --- a/base/serial/psi_s_serial_impl.F90 +++ b/base/serial/psi_s_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine saxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine saxpbyv2 -subroutine psi_sabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_s_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_sabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='sabgdxyz' + name='s_upd_xyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_sabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_sabgdxyz +end subroutine psi_s_upd_xyz subroutine psi_sxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_sxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='sabgdxyz' + name='s_xyzw' info = psb_success_ if (m.lt.0) then diff --git a/base/serial/psi_z_serial_impl.F90 b/base/serial/psi_z_serial_impl.F90 index 7e680273..763eae22 100644 --- a/base/serial/psi_z_serial_impl.F90 +++ b/base/serial/psi_z_serial_impl.F90 @@ -1568,7 +1568,7 @@ subroutine zaxpbyv2(m, n, alpha, X, lldx, beta, Y, lldy, Z, lldz, info) end subroutine zaxpbyv2 -subroutine psi_zabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) +subroutine psi_z_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psb_const_mod use psb_error_mod implicit none @@ -1582,7 +1582,7 @@ subroutine psi_zabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='zabgdxyz' + name='z_upd_xyz' info = psb_success_ if (m.lt.0) then @@ -1791,7 +1791,7 @@ subroutine psi_zabgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) call fcpsb_serror() return -end subroutine psi_zabgdxyz +end subroutine psi_z_upd_xyz subroutine psi_zxyzw(m,a,b,c,d,e,f,x, y, z,w, info) use psb_const_mod @@ -1808,7 +1808,7 @@ subroutine psi_zxyzw(m,a,b,c,d,e,f,x, y, z,w, info) integer(psb_ipk_) :: i integer(psb_ipk_) :: int_err(5) character name*20 - name='zabgdxyz' + name='z_xyzw' info = psb_success_ if (m.lt.0) then diff --git a/cuda/psb_c_cuda_vect_mod.F90 b/cuda/psb_c_cuda_vect_mod.F90 index 2c2a4f61..45fafe0a 100644 --- a/cuda/psb_c_cuda_vect_mod.F90 +++ b/cuda/psb_c_cuda_vect_mod.F90 @@ -90,7 +90,7 @@ module psb_c_cuda_vect_mod procedure, pass(x) :: dot_a => c_cuda_dot_a procedure, pass(y) :: axpby_v => c_cuda_axpby_v procedure, pass(y) :: axpby_a => c_cuda_axpby_a - procedure, pass(z) :: abgdxyz => c_cuda_abgdxyz + procedure, pass(z) :: upd_xyz => c_cuda_upd_xyz procedure, pass(y) :: mlt_v => c_cuda_mlt_v procedure, pass(y) :: mlt_a => c_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => c_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine c_cuda_axpby_v - subroutine c_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine c_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx d_cuda_dot_a procedure, pass(y) :: axpby_v => d_cuda_axpby_v procedure, pass(y) :: axpby_a => d_cuda_axpby_a - procedure, pass(z) :: abgdxyz => d_cuda_abgdxyz + procedure, pass(z) :: upd_xyz => d_cuda_upd_xyz procedure, pass(y) :: mlt_v => d_cuda_mlt_v procedure, pass(y) :: mlt_a => d_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => d_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine d_cuda_axpby_v - subroutine d_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine d_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx s_cuda_dot_a procedure, pass(y) :: axpby_v => s_cuda_axpby_v procedure, pass(y) :: axpby_a => s_cuda_axpby_a - procedure, pass(z) :: abgdxyz => s_cuda_abgdxyz + procedure, pass(z) :: upd_xyz => s_cuda_upd_xyz procedure, pass(y) :: mlt_v => s_cuda_mlt_v procedure, pass(y) :: mlt_a => s_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => s_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine s_cuda_axpby_v - subroutine s_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine s_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx z_cuda_dot_a procedure, pass(y) :: axpby_v => z_cuda_axpby_v procedure, pass(y) :: axpby_a => z_cuda_axpby_a - procedure, pass(z) :: abgdxyz => z_cuda_abgdxyz + procedure, pass(z) :: upd_xyz => z_cuda_upd_xyz procedure, pass(y) :: mlt_v => z_cuda_mlt_v procedure, pass(y) :: mlt_a => z_cuda_mlt_a procedure, pass(z) :: mlt_a_2 => z_cuda_mlt_a_2 @@ -912,7 +912,7 @@ contains end subroutine z_cuda_axpby_v - subroutine z_cuda_abgdxyz(m,alpha, beta, gamma,delta,x, y, z, info) + subroutine z_cuda_upd_xyz(m,alpha, beta, gamma,delta,x, y, z, info) use psi_serial_mod implicit none integer(psb_ipk_), intent(in) :: m @@ -946,7 +946,7 @@ contains if ((nx Date: Thu, 8 Aug 2024 15:08:45 +0200 Subject: [PATCH 31/86] Fix missing method in oacc_ell --- openacc/psb_c_oacc_ell_mat_mod.F90 | 12 ++++++++++++ openacc/psb_d_oacc_ell_mat_mod.F90 | 12 ++++++++++++ openacc/psb_s_oacc_ell_mat_mod.F90 | 12 ++++++++++++ openacc/psb_z_oacc_ell_mat_mod.F90 | 12 ++++++++++++ 4 files changed, 48 insertions(+) diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 index 102d41c5..5e5dc302 100644 --- a/openacc/psb_c_oacc_ell_mat_mod.F90 +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -303,6 +303,18 @@ contains call tmpa%set_sync() end subroutine c_oacc_ell_sync + subroutine c_oacc_ell_to_dev_scalar(v) + implicit none + complex(psb_spk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine c_oacc_ell_to_dev_scalar + + subroutine c_oacc_ell_to_dev(v) + implicit none + complex(psb_spk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine c_oacc_ell_to_dev + subroutine c_oacc_ell_to_host(v) implicit none complex(psb_spk_), intent(in) :: v(:,:) diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 042c0ff3..962ad2db 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -303,6 +303,18 @@ contains call tmpa%set_sync() end subroutine d_oacc_ell_sync + subroutine d_oacc_ell_to_dev_scalar(v) + implicit none + real(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine d_oacc_ell_to_dev_scalar + + subroutine d_oacc_ell_to_dev(v) + implicit none + real(psb_dpk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine d_oacc_ell_to_dev + subroutine d_oacc_ell_to_host(v) implicit none real(psb_dpk_), intent(in) :: v(:,:) diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 index 541fdf9a..9924ba77 100644 --- a/openacc/psb_s_oacc_ell_mat_mod.F90 +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -303,6 +303,18 @@ contains call tmpa%set_sync() end subroutine s_oacc_ell_sync + subroutine s_oacc_ell_to_dev_scalar(v) + implicit none + real(psb_spk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine s_oacc_ell_to_dev_scalar + + subroutine s_oacc_ell_to_dev(v) + implicit none + real(psb_spk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine s_oacc_ell_to_dev + subroutine s_oacc_ell_to_host(v) implicit none real(psb_spk_), intent(in) :: v(:,:) diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 index 8bf8c9fa..eb8884d6 100644 --- a/openacc/psb_z_oacc_ell_mat_mod.F90 +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -303,6 +303,18 @@ contains call tmpa%set_sync() end subroutine z_oacc_ell_sync + subroutine z_oacc_ell_to_dev_scalar(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:) + !$acc update device(v) + end subroutine z_oacc_ell_to_dev_scalar + + subroutine z_oacc_ell_to_dev(v) + implicit none + complex(psb_dpk_), intent(in) :: v(:,:) + !$acc update device(v) + end subroutine z_oacc_ell_to_dev + subroutine z_oacc_ell_to_host(v) implicit none complex(psb_dpk_), intent(in) :: v(:,:) From fa5e7ff9455730ec6e5a07ad5fa6a9018eeac6a3 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 20 Aug 2024 19:38:34 +0200 Subject: [PATCH 32/86] Fixes for vector methods and sync() --- openacc/impl/psb_c_oacc_mlt_v.f90 | 29 ++- openacc/impl/psb_c_oacc_mlt_v_2.f90 | 98 +++++----- openacc/impl/psb_d_oacc_mlt_v.f90 | 29 ++- openacc/impl/psb_d_oacc_mlt_v_2.f90 | 98 +++++----- openacc/impl/psb_s_oacc_mlt_v.f90 | 29 ++- openacc/impl/psb_s_oacc_mlt_v_2.f90 | 98 +++++----- openacc/impl/psb_z_oacc_mlt_v.f90 | 29 ++- openacc/impl/psb_z_oacc_mlt_v_2.f90 | 98 +++++----- openacc/psb_c_oacc_vect_mod.F90 | 279 ++++++++++++++++++---------- openacc/psb_d_oacc_vect_mod.F90 | 279 ++++++++++++++++++---------- openacc/psb_i_oacc_vect_mod.F90 | 54 +++--- openacc/psb_l_oacc_vect_mod.F90 | 54 +++--- openacc/psb_s_oacc_vect_mod.F90 | 279 ++++++++++++++++++---------- openacc/psb_z_oacc_vect_mod.F90 | 279 ++++++++++++++++++---------- 14 files changed, 1082 insertions(+), 650 deletions(-) diff --git a/openacc/impl/psb_c_oacc_mlt_v.f90 b/openacc/impl/psb_c_oacc_mlt_v.f90 index 66c4e865..a366543a 100644 --- a/openacc/impl/psb_c_oacc_mlt_v.f90 +++ b/openacc/impl/psb_c_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ -subroutine c_oacc_mlt_v(x, y, info) - use psb_c_oacc_vect_mod, psb_protect_name => c_oacc_mlt_v +subroutine psb_c_oacc_mlt_v(x, y, info) + use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v implicit none class(psb_c_base_vect_type), intent(inout) :: x @@ -9,16 +9,19 @@ subroutine c_oacc_mlt_v(x, y, info) integer(psb_ipk_) :: i, n + info = 0 + n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) select type(xx => x) class is (psb_c_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do + call c_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do call y%set_dev() class default if (xx%is_dev()) call xx%sync() @@ -28,4 +31,16 @@ subroutine c_oacc_mlt_v(x, y, info) end do call y%set_host() end select -end subroutine c_oacc_mlt_v +contains + subroutine c_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine c_inner_oacc_mlt_v +end subroutine psb_c_oacc_mlt_v diff --git a/openacc/impl/psb_c_oacc_mlt_v_2.f90 b/openacc/impl/psb_c_oacc_mlt_v_2.f90 index a6bb6cc5..f7bceae7 100644 --- a/openacc/impl/psb_c_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_c_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ -subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_c_oacc_vect_mod, psb_protect_name => c_oacc_mlt_v_2 +subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v_2 use psb_string_mod implicit none complex(psb_spk_), intent(in) :: alpha, beta @@ -25,33 +25,13 @@ subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() if ((beta /= czero) .and. (z%is_host())) call z%sync() - if (conjgx_.and.conjgy_) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - - end if + call c_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() class default if (xx%is_dev()) call xx%sync() if (yy%is_dev()) call yy%sync() if ((beta /= czero) .and. (z%is_dev())) call z%sync() + !call c_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) if (conjgx_.and.conjgy_) then do i = 1, n z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) @@ -67,7 +47,7 @@ subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) else do i = 1, n z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do + end do end if call z%set_host() end select @@ -75,24 +55,56 @@ subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= czero) .and. (z%is_dev())) call z%sync() - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - end if + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if call z%set_host() end select -end subroutine c_oacc_mlt_v_2 +contains + subroutine c_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n +complex(psb_spk_), intent(in) :: alpha, beta +complex(psb_spk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * conjg(y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * conjg(y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine c_inner_oacc_mlt_v_2 +end subroutine psb_c_oacc_mlt_v_2 diff --git a/openacc/impl/psb_d_oacc_mlt_v.f90 b/openacc/impl/psb_d_oacc_mlt_v.f90 index bedd0247..dac62a65 100644 --- a/openacc/impl/psb_d_oacc_mlt_v.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ -subroutine d_oacc_mlt_v(x, y, info) - use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v +subroutine psb_d_oacc_mlt_v(x, y, info) + use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v implicit none class(psb_d_base_vect_type), intent(inout) :: x @@ -9,16 +9,19 @@ subroutine d_oacc_mlt_v(x, y, info) integer(psb_ipk_) :: i, n + info = 0 + n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) select type(xx => x) class is (psb_d_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do + call d_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do call y%set_dev() class default if (xx%is_dev()) call xx%sync() @@ -28,4 +31,16 @@ subroutine d_oacc_mlt_v(x, y, info) end do call y%set_host() end select -end subroutine d_oacc_mlt_v +contains + subroutine d_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine d_inner_oacc_mlt_v +end subroutine psb_d_oacc_mlt_v diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 index e7dd604f..3f3a457d 100644 --- a/openacc/impl/psb_d_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ -subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_d_oacc_vect_mod, psb_protect_name => d_oacc_mlt_v_2 +subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v_2 use psb_string_mod implicit none real(psb_dpk_), intent(in) :: alpha, beta @@ -25,33 +25,13 @@ subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() if ((beta /= dzero) .and. (z%is_host())) call z%sync() - if (conjgx_.and.conjgy_) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - - end if + call d_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() class default if (xx%is_dev()) call xx%sync() if (yy%is_dev()) call yy%sync() if ((beta /= dzero) .and. (z%is_dev())) call z%sync() + !call d_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) if (conjgx_.and.conjgy_) then do i = 1, n z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) @@ -67,7 +47,7 @@ subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) else do i = 1, n z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do + end do end if call z%set_host() end select @@ -75,24 +55,56 @@ subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= dzero) .and. (z%is_dev())) call z%sync() - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - end if + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if call z%set_host() end select -end subroutine d_oacc_mlt_v_2 +contains + subroutine d_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n +real(psb_dpk_), intent(in) :: alpha, beta +real(psb_dpk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine d_inner_oacc_mlt_v_2 +end subroutine psb_d_oacc_mlt_v_2 diff --git a/openacc/impl/psb_s_oacc_mlt_v.f90 b/openacc/impl/psb_s_oacc_mlt_v.f90 index fb043cf2..61a1d152 100644 --- a/openacc/impl/psb_s_oacc_mlt_v.f90 +++ b/openacc/impl/psb_s_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ -subroutine s_oacc_mlt_v(x, y, info) - use psb_s_oacc_vect_mod, psb_protect_name => s_oacc_mlt_v +subroutine psb_s_oacc_mlt_v(x, y, info) + use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v implicit none class(psb_s_base_vect_type), intent(inout) :: x @@ -9,16 +9,19 @@ subroutine s_oacc_mlt_v(x, y, info) integer(psb_ipk_) :: i, n + info = 0 + n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) select type(xx => x) class is (psb_s_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do + call s_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do call y%set_dev() class default if (xx%is_dev()) call xx%sync() @@ -28,4 +31,16 @@ subroutine s_oacc_mlt_v(x, y, info) end do call y%set_host() end select -end subroutine s_oacc_mlt_v +contains + subroutine s_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + real(psb_spk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine s_inner_oacc_mlt_v +end subroutine psb_s_oacc_mlt_v diff --git a/openacc/impl/psb_s_oacc_mlt_v_2.f90 b/openacc/impl/psb_s_oacc_mlt_v_2.f90 index 04ee8e09..bcaebfbe 100644 --- a/openacc/impl/psb_s_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_s_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ -subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_s_oacc_vect_mod, psb_protect_name => s_oacc_mlt_v_2 +subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v_2 use psb_string_mod implicit none real(psb_spk_), intent(in) :: alpha, beta @@ -25,33 +25,13 @@ subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() if ((beta /= szero) .and. (z%is_host())) call z%sync() - if (conjgx_.and.conjgy_) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - - end if + call s_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() class default if (xx%is_dev()) call xx%sync() if (yy%is_dev()) call yy%sync() if ((beta /= szero) .and. (z%is_dev())) call z%sync() + !call s_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) if (conjgx_.and.conjgy_) then do i = 1, n z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) @@ -67,7 +47,7 @@ subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) else do i = 1, n z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do + end do end if call z%set_host() end select @@ -75,24 +55,56 @@ subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= szero) .and. (z%is_dev())) call z%sync() - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - end if + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if call z%set_host() end select -end subroutine s_oacc_mlt_v_2 +contains + subroutine s_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n +real(psb_spk_), intent(in) :: alpha, beta +real(psb_spk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine s_inner_oacc_mlt_v_2 +end subroutine psb_s_oacc_mlt_v_2 diff --git a/openacc/impl/psb_z_oacc_mlt_v.f90 b/openacc/impl/psb_z_oacc_mlt_v.f90 index 7018f009..4bc582d2 100644 --- a/openacc/impl/psb_z_oacc_mlt_v.f90 +++ b/openacc/impl/psb_z_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ -subroutine z_oacc_mlt_v(x, y, info) - use psb_z_oacc_vect_mod, psb_protect_name => z_oacc_mlt_v +subroutine psb_z_oacc_mlt_v(x, y, info) + use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v implicit none class(psb_z_base_vect_type), intent(inout) :: x @@ -9,16 +9,19 @@ subroutine z_oacc_mlt_v(x, y, info) integer(psb_ipk_) :: i, n + info = 0 + n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) select type(xx => x) class is (psb_z_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() - !$acc parallel loop - do i = 1, n - y%v(i) = y%v(i) * xx%v(i) - end do + call z_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do call y%set_dev() class default if (xx%is_dev()) call xx%sync() @@ -28,4 +31,16 @@ subroutine z_oacc_mlt_v(x, y, info) end do call y%set_host() end select -end subroutine z_oacc_mlt_v +contains + subroutine z_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine z_inner_oacc_mlt_v +end subroutine psb_z_oacc_mlt_v diff --git a/openacc/impl/psb_z_oacc_mlt_v_2.f90 b/openacc/impl/psb_z_oacc_mlt_v_2.f90 index dbc0929c..337a0a96 100644 --- a/openacc/impl/psb_z_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_z_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ -subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_z_oacc_vect_mod, psb_protect_name => z_oacc_mlt_v_2 +subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v_2 use psb_string_mod implicit none complex(psb_dpk_), intent(in) :: alpha, beta @@ -25,33 +25,13 @@ subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() if ((beta /= zzero) .and. (z%is_host())) call z%sync() - if (conjgx_.and.conjgy_) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else - !$acc parallel loop - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - - end if + call z_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() class default if (xx%is_dev()) call xx%sync() if (yy%is_dev()) call yy%sync() if ((beta /= zzero) .and. (z%is_dev())) call z%sync() + !call z_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) if (conjgx_.and.conjgy_) then do i = 1, n z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) @@ -67,7 +47,7 @@ subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) else do i = 1, n z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do + end do end if call z%set_host() end select @@ -75,24 +55,56 @@ subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= zzero) .and. (z%is_dev())) call z%sync() - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) - end do - end if + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if call z%set_host() end select -end subroutine z_oacc_mlt_v_2 +contains + subroutine z_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n +complex(psb_dpk_), intent(in) :: alpha, beta +complex(psb_dpk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * conjg(y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * conjg(y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine z_inner_oacc_mlt_v_2 +end subroutine psb_z_oacc_mlt_v_2 diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index fc501e04..7362ba0e 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -1,5 +1,6 @@ module psb_c_oacc_vect_mod use iso_c_binding + use openacc use psb_const_mod use psb_error_mod use psb_c_vect_mod @@ -50,8 +51,8 @@ module psb_c_oacc_vect_mod procedure, pass(z) :: upd_xyz => c_oacc_upd_xyz procedure, pass(y) :: mlt_a => c_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => c_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => c_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => c_oacc_mlt_v_2 + procedure, pass(y) :: mlt_v => psb_c_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_c_oacc_mlt_v_2 procedure, pass(x) :: scal => c_oacc_scal procedure, pass(x) :: nrm2 => c_oacc_nrm2 procedure, pass(x) :: amax => c_oacc_amax @@ -62,17 +63,17 @@ module psb_c_oacc_vect_mod end type psb_c_vect_oacc interface - subroutine c_oacc_mlt_v(x, y, info) + subroutine psb_c_oacc_mlt_v(x, y, info) import implicit none class(psb_c_base_vect_type), intent(inout) :: x class(psb_c_vect_oacc), intent(inout) :: y integer(psb_ipk_), intent(out) :: info - end subroutine c_oacc_mlt_v + end subroutine psb_c_oacc_mlt_v end interface interface - subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import implicit none complex(psb_spk_), intent(in) :: alpha, beta @@ -81,7 +82,7 @@ module psb_c_oacc_vect_mod class(psb_c_vect_oacc), intent(inout) :: z integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy - end subroutine c_oacc_mlt_v_2 + end subroutine psb_c_oacc_mlt_v_2 end interface contains @@ -89,15 +90,23 @@ contains subroutine c_oacc_absval1(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: n, i + integer(psb_ipk_) :: n - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() n = size(x%v) - !$acc parallel loop - do i = 1, n - x%v(i) = abs(x%v(i)) - end do + call c_inner_oacc_absval1(n,x%v) call x%set_dev() + contains + subroutine c_inner_oacc_absval1(n,x) + implicit none + complex(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine c_inner_oacc_absval1 end subroutine c_oacc_absval1 subroutine c_oacc_absval2(x, y) @@ -112,15 +121,23 @@ contains class is (psb_c_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - !$acc parallel loop - do i = 1, n - yy%v(i) = abs(x%v(i)) - end do + call c_inner_oacc_absval2(n,x%v,yy%v) class default if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() call x%psb_c_base_vect_type%absval(y) end select + contains + subroutine c_inner_oacc_absval2(n,x,y) + implicit none + complex(psb_spk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine c_inner_oacc_absval2 end subroutine c_oacc_absval2 subroutine c_oacc_scal(alpha, x) @@ -128,32 +145,46 @@ contains class(psb_c_vect_oacc), intent(inout) :: x complex(psb_spk_), intent(in) :: alpha integer(psb_ipk_) :: info - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - !$acc parallel loop - do i = 1, size(x%v) - x%v(i) = alpha * x%v(i) - end do + if (x%is_host()) call x%sync() + call c_inner_oacc_scal(alpha, x%v) call x%set_dev() + contains + subroutine c_inner_oacc_scal(alpha, x) + complex(psb_spk_), intent(in) :: alpha + complex(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine c_inner_oacc_scal end subroutine c_oacc_scal function c_oacc_nrm2(n, x) result(res) implicit none class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_spk_) :: res + real(psb_spk_) :: res + real(psb_spk_) :: mx integer(psb_ipk_) :: info - real(psb_spk_) :: sum - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i))**2 - end do - res = sqrt(sum) + if (x%is_host()) call x%sync() + mx = c_oacc_amax(n,x) + res = c_inner_oacc_nrm2(n, mx, x%v) + contains + function c_inner_oacc_nrm2(n, mx,x) result(res) + integer(psb_ipk_) :: n + complex(psb_spk_) :: x(:) + real(psb_spk_) :: mx, res + real(psb_spk_) :: sum + integer(psb_ipk_) :: i + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end function c_inner_oacc_nrm2 end function c_oacc_nrm2 function c_oacc_amax(n, x) result(res) @@ -162,18 +193,25 @@ contains integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res integer(psb_ipk_) :: info - real(psb_spk_) :: max_val - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - max_val = -huge(0.0) - !$acc parallel loop reduction(max:max_val) - do i = 1, n - if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) - end do - res = max_val + if (x%is_host()) call x%sync() + res = c_inner_oacc_amax(n, x%v) + contains + function c_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_spk_) :: x(:) + real(psb_spk_) :: res + real(psb_spk_) :: max_val + integer(psb_ipk_) :: i + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function c_inner_oacc_amax end function c_oacc_amax - + function c_oacc_asum(n, x) result(res) implicit none class(psb_c_vect_oacc), intent(inout) :: x @@ -182,14 +220,20 @@ contains integer(psb_ipk_) :: info complex(psb_spk_) :: sum integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i)) - end do - res = sum + if (x%is_host()) call x%sync() + res = c_inner_oacc_asum(n, x%v) + contains + function c_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_spk_) :: x(:) + real(psb_spk_) :: res + integer(psb_ipk_) :: i + res = 0.0 + !$acc parallel loop reduction(+:res) + do i = 1, n + res = res + abs(x(i)) + end do + end function c_inner_oacc_asum end function c_oacc_asum @@ -201,7 +245,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, size(x) y%v(i) = y%v(i) * x(i) @@ -219,7 +263,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (z%is_dev()) call z%sync_space() + if (z%is_dev()) call z%sync() !$acc parallel loop do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) @@ -282,18 +326,18 @@ contains !!$ class is (psb_c_vect_oacc) !!$ select type (yy => y) !!$ class is (psb_c_vect_oacc) -!!$ if (xx%is_host()) call xx%sync_space() -!!$ if (yy%is_host()) call yy%sync_space() -!!$ if ((beta /= czero) .and. (z%is_host())) call z%sync_space() +!!$ if (xx%is_host()) call xx%sync() +!!$ if (yy%is_host()) call yy%sync() +!!$ if ((beta /= czero) .and. (z%is_host())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) !!$ end do !!$ call z%set_dev() !!$ class default -!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (xx%is_dev()) call xx%sync() !!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) @@ -303,7 +347,7 @@ contains !!$ class default !!$ if (x%is_dev()) call x%sync() !!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) @@ -327,23 +371,36 @@ contains select type(xx => x) type is (psb_c_vect_oacc) - if ((beta /= czero) .and. y%is_host()) call y%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= czero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(y%v) if ((nx < m) .or. (ny < m)) then info = psb_err_internal_error_ else - !$acc parallel loop - do i = 1, m - y%v(i) = alpha * xx%v(i) + beta * y%v(i) - end do + call c_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) end if call y%set_dev() class default if ((alpha /= czero) .and. (x%is_dev())) call x%sync() call y%axpby(m, alpha, x%v, beta, info) - end select + end select + contains + subroutine c_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_spk_), intent(inout) :: x(:) + complex(psb_spk_), intent(inout) :: y(:) + complex(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine c_inner_oacc_axpby end subroutine c_oacc_axpby_v subroutine c_oacc_axpby_a(m, alpha, x, beta, y, info) @@ -356,7 +413,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: i - if ((beta /= czero) .and. (y%is_dev())) call y%sync_space() + if ((beta /= czero) .and. (y%is_dev())) call y%sync() !$acc parallel loop do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) @@ -375,7 +432,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - + write(0,*)'upd_xyz' info = psb_success_ gpu_done = .false. @@ -385,9 +442,9 @@ contains class is (psb_c_vect_oacc) select type(zz => z) class is (psb_c_vect_oacc) - if ((beta /= czero) .and. yy%is_host()) call yy%sync_space() - if ((delta /= czero) .and. zz%is_host()) call zz%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= czero) .and. yy%is_host()) call yy%sync() + if ((delta /= czero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(yy%v) nz = size(zz%v) @@ -432,8 +489,8 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() - if (y%is_host()) call y%sync_space() + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -459,13 +516,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'c_oacc_sctb_x') return end select - if (y%is_host()) call y%sync_space() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -486,7 +543,7 @@ contains integer(psb_ipk_) :: i if (n == 0) return - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, n @@ -512,13 +569,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'c_oacc_gthzbuf') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -539,13 +596,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'c_oacc_gthzv_x') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -573,9 +630,9 @@ contains type is (psb_i_vect_oacc) select type(vval => val) type is (psb_c_vect_oacc) - if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space() - if (x%is_host()) call x%sync_space() + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n x%v(virl%v(i)) = vval%v(i) @@ -588,11 +645,11 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space() + if (virl%is_dev()) call virl%sync() end select select type(vval => val) type is (psb_c_vect_oacc) - if (vval%is_dev()) call vval%sync_space() + if (vval%is_dev()) call vval%sync() end select call x%ins(n, irl%v, val%v, dupl, info) end if @@ -616,7 +673,7 @@ contains integer(psb_ipk_) :: i info = 0 - if (x%is_dev()) call x%sync_space() + if (x%is_dev()) call x%sync() call x%psb_c_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() !$acc update device(x%v) @@ -635,7 +692,10 @@ contains call psb_errpush(info, 'c_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine c_oacc_bld_mn @@ -657,7 +717,10 @@ contains x%v(:) = this(:) call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine c_oacc_bld_x @@ -676,13 +739,13 @@ contains if (nd < n) then call x%sync() call x%psb_c_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if else if (size(x%v) < n) then call x%psb_c_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if end if @@ -740,10 +803,9 @@ contains complex(psb_spk_) :: res complex(psb_spk_), external :: ddot integer(psb_ipk_) :: info - integer(psb_ipk_) :: i res = czero - + !write(0,*) 'dot_v' select type(yy => y) type is (psb_c_base_vect_type) if (x%is_dev()) call x%sync() @@ -751,18 +813,26 @@ contains type is (psb_c_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - - !$acc parallel loop reduction(+:res) present(x%v, yy%v) - do i = 1, n - res = res + x%v(i) * yy%v(i) - end do - !$acc end parallel loop - + res = c_inner_oacc_dot(n, x%v, yy%v) class default call x%sync() res = y%dot(n, x%v) end select - + contains + function c_inner_oacc_dot(n, x, y) result(res) + implicit none + complex(psb_spk_), intent(in) :: x(:) + complex(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function c_inner_oacc_dot end function c_oacc_vect_dot function c_oacc_dot_a(n, x, y) result(res) @@ -808,7 +878,7 @@ contains implicit none class(psb_c_vect_oacc), intent(inout) :: x if (allocated(x%v)) then - call c_oacc_create_dev(x%v) + if (.not.acc_is_present(x%v)) call c_oacc_create_dev(x%v) end if contains subroutine c_oacc_create_dev(v) @@ -886,6 +956,9 @@ contains call psb_realloc(n, x%v, info) if (info == 0) then call x%set_host() + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if !$acc enter data create(x%v) call x%sync_space() end if @@ -902,7 +975,9 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - !$acc exit data delete(x%v) finalize + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if deallocate(x%v, stat=info) end if diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index bfb97b5c..9ecbccb4 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -1,5 +1,6 @@ module psb_d_oacc_vect_mod use iso_c_binding + use openacc use psb_const_mod use psb_error_mod use psb_d_vect_mod @@ -50,8 +51,8 @@ module psb_d_oacc_vect_mod procedure, pass(z) :: upd_xyz => d_oacc_upd_xyz procedure, pass(y) :: mlt_a => d_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => d_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => d_oacc_mlt_v_2 + procedure, pass(y) :: mlt_v => psb_d_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_d_oacc_mlt_v_2 procedure, pass(x) :: scal => d_oacc_scal procedure, pass(x) :: nrm2 => d_oacc_nrm2 procedure, pass(x) :: amax => d_oacc_amax @@ -62,17 +63,17 @@ module psb_d_oacc_vect_mod end type psb_d_vect_oacc interface - subroutine d_oacc_mlt_v(x, y, info) + subroutine psb_d_oacc_mlt_v(x, y, info) import implicit none class(psb_d_base_vect_type), intent(inout) :: x class(psb_d_vect_oacc), intent(inout) :: y integer(psb_ipk_), intent(out) :: info - end subroutine d_oacc_mlt_v + end subroutine psb_d_oacc_mlt_v end interface interface - subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import implicit none real(psb_dpk_), intent(in) :: alpha, beta @@ -81,7 +82,7 @@ module psb_d_oacc_vect_mod class(psb_d_vect_oacc), intent(inout) :: z integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy - end subroutine d_oacc_mlt_v_2 + end subroutine psb_d_oacc_mlt_v_2 end interface contains @@ -89,15 +90,23 @@ contains subroutine d_oacc_absval1(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: n, i + integer(psb_ipk_) :: n - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() n = size(x%v) - !$acc parallel loop - do i = 1, n - x%v(i) = abs(x%v(i)) - end do + call d_inner_oacc_absval1(n,x%v) call x%set_dev() + contains + subroutine d_inner_oacc_absval1(n,x) + implicit none + real(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine d_inner_oacc_absval1 end subroutine d_oacc_absval1 subroutine d_oacc_absval2(x, y) @@ -112,15 +121,23 @@ contains class is (psb_d_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - !$acc parallel loop - do i = 1, n - yy%v(i) = abs(x%v(i)) - end do + call d_inner_oacc_absval2(n,x%v,yy%v) class default if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() call x%psb_d_base_vect_type%absval(y) end select + contains + subroutine d_inner_oacc_absval2(n,x,y) + implicit none + real(psb_dpk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine d_inner_oacc_absval2 end subroutine d_oacc_absval2 subroutine d_oacc_scal(alpha, x) @@ -128,32 +145,46 @@ contains class(psb_d_vect_oacc), intent(inout) :: x real(psb_dpk_), intent(in) :: alpha integer(psb_ipk_) :: info - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - !$acc parallel loop - do i = 1, size(x%v) - x%v(i) = alpha * x%v(i) - end do + if (x%is_host()) call x%sync() + call d_inner_oacc_scal(alpha, x%v) call x%set_dev() + contains + subroutine d_inner_oacc_scal(alpha, x) + real(psb_dpk_), intent(in) :: alpha + real(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine d_inner_oacc_scal end subroutine d_oacc_scal function d_oacc_nrm2(n, x) result(res) implicit none class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res + real(psb_dpk_) :: res + real(psb_dpk_) :: mx integer(psb_ipk_) :: info - real(psb_dpk_) :: sum - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i))**2 - end do - res = sqrt(sum) + if (x%is_host()) call x%sync() + mx = d_oacc_amax(n,x) + res = d_inner_oacc_nrm2(n, mx, x%v) + contains + function d_inner_oacc_nrm2(n, mx,x) result(res) + integer(psb_ipk_) :: n + real(psb_dpk_) :: x(:) + real(psb_dpk_) :: mx, res + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end function d_inner_oacc_nrm2 end function d_oacc_nrm2 function d_oacc_amax(n, x) result(res) @@ -162,18 +193,25 @@ contains integer(psb_ipk_), intent(in) :: n real(psb_dpk_) :: res integer(psb_ipk_) :: info - real(psb_dpk_) :: max_val - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - max_val = -huge(0.0) - !$acc parallel loop reduction(max:max_val) - do i = 1, n - if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) - end do - res = max_val + if (x%is_host()) call x%sync() + res = d_inner_oacc_amax(n, x%v) + contains + function d_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + real(psb_dpk_) :: max_val + integer(psb_ipk_) :: i + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function d_inner_oacc_amax end function d_oacc_amax - + function d_oacc_asum(n, x) result(res) implicit none class(psb_d_vect_oacc), intent(inout) :: x @@ -182,14 +220,20 @@ contains integer(psb_ipk_) :: info real(psb_dpk_) :: sum integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i)) - end do - res = sum + if (x%is_host()) call x%sync() + res = d_inner_oacc_asum(n, x%v) + contains + function d_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + integer(psb_ipk_) :: i + res = 0.0 + !$acc parallel loop reduction(+:res) + do i = 1, n + res = res + abs(x(i)) + end do + end function d_inner_oacc_asum end function d_oacc_asum @@ -201,7 +245,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, size(x) y%v(i) = y%v(i) * x(i) @@ -219,7 +263,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (z%is_dev()) call z%sync_space() + if (z%is_dev()) call z%sync() !$acc parallel loop do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) @@ -282,18 +326,18 @@ contains !!$ class is (psb_d_vect_oacc) !!$ select type (yy => y) !!$ class is (psb_d_vect_oacc) -!!$ if (xx%is_host()) call xx%sync_space() -!!$ if (yy%is_host()) call yy%sync_space() -!!$ if ((beta /= dzero) .and. (z%is_host())) call z%sync_space() +!!$ if (xx%is_host()) call xx%sync() +!!$ if (yy%is_host()) call yy%sync() +!!$ if ((beta /= dzero) .and. (z%is_host())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) !!$ end do !!$ call z%set_dev() !!$ class default -!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (xx%is_dev()) call xx%sync() !!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) @@ -303,7 +347,7 @@ contains !!$ class default !!$ if (x%is_dev()) call x%sync() !!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) @@ -327,23 +371,36 @@ contains select type(xx => x) type is (psb_d_vect_oacc) - if ((beta /= dzero) .and. y%is_host()) call y%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= dzero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(y%v) if ((nx < m) .or. (ny < m)) then info = psb_err_internal_error_ else - !$acc parallel loop - do i = 1, m - y%v(i) = alpha * xx%v(i) + beta * y%v(i) - end do + call d_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) end if call y%set_dev() class default if ((alpha /= dzero) .and. (x%is_dev())) call x%sync() call y%axpby(m, alpha, x%v, beta, info) - end select + end select + contains + subroutine d_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_dpk_), intent(inout) :: x(:) + real(psb_dpk_), intent(inout) :: y(:) + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine d_inner_oacc_axpby end subroutine d_oacc_axpby_v subroutine d_oacc_axpby_a(m, alpha, x, beta, y, info) @@ -356,7 +413,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: i - if ((beta /= dzero) .and. (y%is_dev())) call y%sync_space() + if ((beta /= dzero) .and. (y%is_dev())) call y%sync() !$acc parallel loop do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) @@ -375,7 +432,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - + write(0,*)'upd_xyz' info = psb_success_ gpu_done = .false. @@ -385,9 +442,9 @@ contains class is (psb_d_vect_oacc) select type(zz => z) class is (psb_d_vect_oacc) - if ((beta /= dzero) .and. yy%is_host()) call yy%sync_space() - if ((delta /= dzero) .and. zz%is_host()) call zz%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= dzero) .and. yy%is_host()) call yy%sync() + if ((delta /= dzero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(yy%v) nz = size(zz%v) @@ -432,8 +489,8 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() - if (y%is_host()) call y%sync_space() + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -459,13 +516,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'd_oacc_sctb_x') return end select - if (y%is_host()) call y%sync_space() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -486,7 +543,7 @@ contains integer(psb_ipk_) :: i if (n == 0) return - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, n @@ -512,13 +569,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'd_oacc_gthzbuf') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -539,13 +596,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'd_oacc_gthzv_x') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -573,9 +630,9 @@ contains type is (psb_i_vect_oacc) select type(vval => val) type is (psb_d_vect_oacc) - if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space() - if (x%is_host()) call x%sync_space() + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n x%v(virl%v(i)) = vval%v(i) @@ -588,11 +645,11 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space() + if (virl%is_dev()) call virl%sync() end select select type(vval => val) type is (psb_d_vect_oacc) - if (vval%is_dev()) call vval%sync_space() + if (vval%is_dev()) call vval%sync() end select call x%ins(n, irl%v, val%v, dupl, info) end if @@ -616,7 +673,7 @@ contains integer(psb_ipk_) :: i info = 0 - if (x%is_dev()) call x%sync_space() + if (x%is_dev()) call x%sync() call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() !$acc update device(x%v) @@ -635,7 +692,10 @@ contains call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine d_oacc_bld_mn @@ -657,7 +717,10 @@ contains x%v(:) = this(:) call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine d_oacc_bld_x @@ -676,13 +739,13 @@ contains if (nd < n) then call x%sync() call x%psb_d_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if else if (size(x%v) < n) then call x%psb_d_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if end if @@ -740,10 +803,9 @@ contains real(psb_dpk_) :: res real(psb_dpk_), external :: ddot integer(psb_ipk_) :: info - integer(psb_ipk_) :: i res = dzero - + !write(0,*) 'dot_v' select type(yy => y) type is (psb_d_base_vect_type) if (x%is_dev()) call x%sync() @@ -751,18 +813,26 @@ contains type is (psb_d_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - - !$acc parallel loop reduction(+:res) present(x%v, yy%v) - do i = 1, n - res = res + x%v(i) * yy%v(i) - end do - !$acc end parallel loop - + res = d_inner_oacc_dot(n, x%v, yy%v) class default call x%sync() res = y%dot(n, x%v) end select - + contains + function d_inner_oacc_dot(n, x, y) result(res) + implicit none + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function d_inner_oacc_dot end function d_oacc_vect_dot function d_oacc_dot_a(n, x, y) result(res) @@ -808,7 +878,7 @@ contains implicit none class(psb_d_vect_oacc), intent(inout) :: x if (allocated(x%v)) then - call d_oacc_create_dev(x%v) + if (.not.acc_is_present(x%v)) call d_oacc_create_dev(x%v) end if contains subroutine d_oacc_create_dev(v) @@ -886,6 +956,9 @@ contains call psb_realloc(n, x%v, info) if (info == 0) then call x%set_host() + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if !$acc enter data create(x%v) call x%sync_space() end if @@ -902,7 +975,9 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - !$acc exit data delete(x%v) finalize + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if deallocate(x%v, stat=info) end if diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index 72e9ada2..3dbc48f1 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -1,5 +1,6 @@ module psb_i_oacc_vect_mod use iso_c_binding + use openacc use psb_const_mod use psb_error_mod use psb_i_vect_mod @@ -64,8 +65,8 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() - if (y%is_host()) call y%sync_space() + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -91,13 +92,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'i_oacc_sctb_x') return end select - if (y%is_host()) call y%sync_space() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -118,7 +119,7 @@ contains integer(psb_ipk_) :: i if (n == 0) return - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, n @@ -144,13 +145,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'i_oacc_gthzbuf') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -171,13 +172,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'i_oacc_gthzv_x') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -205,9 +206,9 @@ contains type is (psb_i_vect_oacc) select type(vval => val) type is (psb_i_vect_oacc) - if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space() - if (x%is_host()) call x%sync_space() + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n x%v(virl%v(i)) = vval%v(i) @@ -220,11 +221,11 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space() + if (virl%is_dev()) call virl%sync() end select select type(vval => val) type is (psb_i_vect_oacc) - if (vval%is_dev()) call vval%sync_space() + if (vval%is_dev()) call vval%sync() end select call x%ins(n, irl%v, val%v, dupl, info) end if @@ -248,7 +249,7 @@ contains integer(psb_ipk_) :: i info = 0 - if (x%is_dev()) call x%sync_space() + if (x%is_dev()) call x%sync() call x%psb_i_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() !$acc update device(x%v) @@ -267,7 +268,10 @@ contains call psb_errpush(info, 'i_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine i_oacc_bld_mn @@ -289,7 +293,10 @@ contains x%v(:) = this(:) call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine i_oacc_bld_x @@ -308,13 +315,13 @@ contains if (nd < n) then call x%sync() call x%psb_i_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if else if (size(x%v) < n) then call x%psb_i_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if end if @@ -393,7 +400,7 @@ contains implicit none class(psb_i_vect_oacc), intent(inout) :: x if (allocated(x%v)) then - call i_oacc_create_dev(x%v) + if (.not.acc_is_present(x%v)) call i_oacc_create_dev(x%v) end if contains subroutine i_oacc_create_dev(v) @@ -471,6 +478,9 @@ contains call psb_realloc(n, x%v, info) if (info == 0) then call x%set_host() + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if !$acc enter data create(x%v) call x%sync_space() end if @@ -487,7 +497,9 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - !$acc exit data delete(x%v) finalize + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if deallocate(x%v, stat=info) end if diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 index aeba4537..cdf28366 100644 --- a/openacc/psb_l_oacc_vect_mod.F90 +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -1,5 +1,6 @@ module psb_l_oacc_vect_mod use iso_c_binding + use openacc use psb_const_mod use psb_error_mod use psb_l_vect_mod @@ -66,8 +67,8 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() - if (y%is_host()) call y%sync_space() + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -93,13 +94,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'l_oacc_sctb_x') return end select - if (y%is_host()) call y%sync_space() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -120,7 +121,7 @@ contains integer(psb_ipk_) :: i if (n == 0) return - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, n @@ -146,13 +147,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'l_oacc_gthzbuf') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -173,13 +174,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'l_oacc_gthzv_x') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -207,9 +208,9 @@ contains type is (psb_i_vect_oacc) select type(vval => val) type is (psb_l_vect_oacc) - if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space() - if (x%is_host()) call x%sync_space() + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n x%v(virl%v(i)) = vval%v(i) @@ -222,11 +223,11 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space() + if (virl%is_dev()) call virl%sync() end select select type(vval => val) type is (psb_l_vect_oacc) - if (vval%is_dev()) call vval%sync_space() + if (vval%is_dev()) call vval%sync() end select call x%ins(n, irl%v, val%v, dupl, info) end if @@ -250,7 +251,7 @@ contains integer(psb_ipk_) :: i info = 0 - if (x%is_dev()) call x%sync_space() + if (x%is_dev()) call x%sync() call x%psb_l_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() !$acc update device(x%v) @@ -269,7 +270,10 @@ contains call psb_errpush(info, 'l_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine l_oacc_bld_mn @@ -291,7 +295,10 @@ contains x%v(:) = this(:) call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine l_oacc_bld_x @@ -310,13 +317,13 @@ contains if (nd < n) then call x%sync() call x%psb_l_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if else if (size(x%v) < n) then call x%psb_l_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if end if @@ -395,7 +402,7 @@ contains implicit none class(psb_l_vect_oacc), intent(inout) :: x if (allocated(x%v)) then - call l_oacc_create_dev(x%v) + if (.not.acc_is_present(x%v)) call l_oacc_create_dev(x%v) end if contains subroutine l_oacc_create_dev(v) @@ -473,6 +480,9 @@ contains call psb_realloc(n, x%v, info) if (info == 0) then call x%set_host() + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if !$acc enter data create(x%v) call x%sync_space() end if @@ -489,7 +499,9 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - !$acc exit data delete(x%v) finalize + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if deallocate(x%v, stat=info) end if diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 47922d6a..c3b31af7 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -1,5 +1,6 @@ module psb_s_oacc_vect_mod use iso_c_binding + use openacc use psb_const_mod use psb_error_mod use psb_s_vect_mod @@ -50,8 +51,8 @@ module psb_s_oacc_vect_mod procedure, pass(z) :: upd_xyz => s_oacc_upd_xyz procedure, pass(y) :: mlt_a => s_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => s_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => s_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => s_oacc_mlt_v_2 + procedure, pass(y) :: mlt_v => psb_s_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_s_oacc_mlt_v_2 procedure, pass(x) :: scal => s_oacc_scal procedure, pass(x) :: nrm2 => s_oacc_nrm2 procedure, pass(x) :: amax => s_oacc_amax @@ -62,17 +63,17 @@ module psb_s_oacc_vect_mod end type psb_s_vect_oacc interface - subroutine s_oacc_mlt_v(x, y, info) + subroutine psb_s_oacc_mlt_v(x, y, info) import implicit none class(psb_s_base_vect_type), intent(inout) :: x class(psb_s_vect_oacc), intent(inout) :: y integer(psb_ipk_), intent(out) :: info - end subroutine s_oacc_mlt_v + end subroutine psb_s_oacc_mlt_v end interface interface - subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import implicit none real(psb_spk_), intent(in) :: alpha, beta @@ -81,7 +82,7 @@ module psb_s_oacc_vect_mod class(psb_s_vect_oacc), intent(inout) :: z integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy - end subroutine s_oacc_mlt_v_2 + end subroutine psb_s_oacc_mlt_v_2 end interface contains @@ -89,15 +90,23 @@ contains subroutine s_oacc_absval1(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: n, i + integer(psb_ipk_) :: n - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() n = size(x%v) - !$acc parallel loop - do i = 1, n - x%v(i) = abs(x%v(i)) - end do + call s_inner_oacc_absval1(n,x%v) call x%set_dev() + contains + subroutine s_inner_oacc_absval1(n,x) + implicit none + real(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine s_inner_oacc_absval1 end subroutine s_oacc_absval1 subroutine s_oacc_absval2(x, y) @@ -112,15 +121,23 @@ contains class is (psb_s_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - !$acc parallel loop - do i = 1, n - yy%v(i) = abs(x%v(i)) - end do + call s_inner_oacc_absval2(n,x%v,yy%v) class default if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() call x%psb_s_base_vect_type%absval(y) end select + contains + subroutine s_inner_oacc_absval2(n,x,y) + implicit none + real(psb_spk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine s_inner_oacc_absval2 end subroutine s_oacc_absval2 subroutine s_oacc_scal(alpha, x) @@ -128,32 +145,46 @@ contains class(psb_s_vect_oacc), intent(inout) :: x real(psb_spk_), intent(in) :: alpha integer(psb_ipk_) :: info - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - !$acc parallel loop - do i = 1, size(x%v) - x%v(i) = alpha * x%v(i) - end do + if (x%is_host()) call x%sync() + call s_inner_oacc_scal(alpha, x%v) call x%set_dev() + contains + subroutine s_inner_oacc_scal(alpha, x) + real(psb_spk_), intent(in) :: alpha + real(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine s_inner_oacc_scal end subroutine s_oacc_scal function s_oacc_nrm2(n, x) result(res) implicit none class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_spk_) :: res + real(psb_spk_) :: res + real(psb_spk_) :: mx integer(psb_ipk_) :: info - real(psb_spk_) :: sum - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i))**2 - end do - res = sqrt(sum) + if (x%is_host()) call x%sync() + mx = s_oacc_amax(n,x) + res = s_inner_oacc_nrm2(n, mx, x%v) + contains + function s_inner_oacc_nrm2(n, mx,x) result(res) + integer(psb_ipk_) :: n + real(psb_spk_) :: x(:) + real(psb_spk_) :: mx, res + real(psb_spk_) :: sum + integer(psb_ipk_) :: i + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end function s_inner_oacc_nrm2 end function s_oacc_nrm2 function s_oacc_amax(n, x) result(res) @@ -162,18 +193,25 @@ contains integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res integer(psb_ipk_) :: info - real(psb_spk_) :: max_val - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - max_val = -huge(0.0) - !$acc parallel loop reduction(max:max_val) - do i = 1, n - if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) - end do - res = max_val + if (x%is_host()) call x%sync() + res = s_inner_oacc_amax(n, x%v) + contains + function s_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_spk_) :: x(:) + real(psb_spk_) :: res + real(psb_spk_) :: max_val + integer(psb_ipk_) :: i + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function s_inner_oacc_amax end function s_oacc_amax - + function s_oacc_asum(n, x) result(res) implicit none class(psb_s_vect_oacc), intent(inout) :: x @@ -182,14 +220,20 @@ contains integer(psb_ipk_) :: info real(psb_spk_) :: sum integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i)) - end do - res = sum + if (x%is_host()) call x%sync() + res = s_inner_oacc_asum(n, x%v) + contains + function s_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_spk_) :: x(:) + real(psb_spk_) :: res + integer(psb_ipk_) :: i + res = 0.0 + !$acc parallel loop reduction(+:res) + do i = 1, n + res = res + abs(x(i)) + end do + end function s_inner_oacc_asum end function s_oacc_asum @@ -201,7 +245,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, size(x) y%v(i) = y%v(i) * x(i) @@ -219,7 +263,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (z%is_dev()) call z%sync_space() + if (z%is_dev()) call z%sync() !$acc parallel loop do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) @@ -282,18 +326,18 @@ contains !!$ class is (psb_s_vect_oacc) !!$ select type (yy => y) !!$ class is (psb_s_vect_oacc) -!!$ if (xx%is_host()) call xx%sync_space() -!!$ if (yy%is_host()) call yy%sync_space() -!!$ if ((beta /= szero) .and. (z%is_host())) call z%sync_space() +!!$ if (xx%is_host()) call xx%sync() +!!$ if (yy%is_host()) call yy%sync() +!!$ if ((beta /= szero) .and. (z%is_host())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) !!$ end do !!$ call z%set_dev() !!$ class default -!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (xx%is_dev()) call xx%sync() !!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) @@ -303,7 +347,7 @@ contains !!$ class default !!$ if (x%is_dev()) call x%sync() !!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) @@ -327,23 +371,36 @@ contains select type(xx => x) type is (psb_s_vect_oacc) - if ((beta /= szero) .and. y%is_host()) call y%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= szero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(y%v) if ((nx < m) .or. (ny < m)) then info = psb_err_internal_error_ else - !$acc parallel loop - do i = 1, m - y%v(i) = alpha * xx%v(i) + beta * y%v(i) - end do + call s_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) end if call y%set_dev() class default if ((alpha /= szero) .and. (x%is_dev())) call x%sync() call y%axpby(m, alpha, x%v, beta, info) - end select + end select + contains + subroutine s_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_spk_), intent(inout) :: x(:) + real(psb_spk_), intent(inout) :: y(:) + real(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine s_inner_oacc_axpby end subroutine s_oacc_axpby_v subroutine s_oacc_axpby_a(m, alpha, x, beta, y, info) @@ -356,7 +413,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: i - if ((beta /= szero) .and. (y%is_dev())) call y%sync_space() + if ((beta /= szero) .and. (y%is_dev())) call y%sync() !$acc parallel loop do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) @@ -375,7 +432,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - + write(0,*)'upd_xyz' info = psb_success_ gpu_done = .false. @@ -385,9 +442,9 @@ contains class is (psb_s_vect_oacc) select type(zz => z) class is (psb_s_vect_oacc) - if ((beta /= szero) .and. yy%is_host()) call yy%sync_space() - if ((delta /= szero) .and. zz%is_host()) call zz%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= szero) .and. yy%is_host()) call yy%sync() + if ((delta /= szero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(yy%v) nz = size(zz%v) @@ -432,8 +489,8 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() - if (y%is_host()) call y%sync_space() + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -459,13 +516,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 's_oacc_sctb_x') return end select - if (y%is_host()) call y%sync_space() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -486,7 +543,7 @@ contains integer(psb_ipk_) :: i if (n == 0) return - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, n @@ -512,13 +569,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 's_oacc_gthzbuf') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -539,13 +596,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 's_oacc_gthzv_x') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -573,9 +630,9 @@ contains type is (psb_i_vect_oacc) select type(vval => val) type is (psb_s_vect_oacc) - if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space() - if (x%is_host()) call x%sync_space() + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n x%v(virl%v(i)) = vval%v(i) @@ -588,11 +645,11 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space() + if (virl%is_dev()) call virl%sync() end select select type(vval => val) type is (psb_s_vect_oacc) - if (vval%is_dev()) call vval%sync_space() + if (vval%is_dev()) call vval%sync() end select call x%ins(n, irl%v, val%v, dupl, info) end if @@ -616,7 +673,7 @@ contains integer(psb_ipk_) :: i info = 0 - if (x%is_dev()) call x%sync_space() + if (x%is_dev()) call x%sync() call x%psb_s_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() !$acc update device(x%v) @@ -635,7 +692,10 @@ contains call psb_errpush(info, 's_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine s_oacc_bld_mn @@ -657,7 +717,10 @@ contains x%v(:) = this(:) call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine s_oacc_bld_x @@ -676,13 +739,13 @@ contains if (nd < n) then call x%sync() call x%psb_s_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if else if (size(x%v) < n) then call x%psb_s_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if end if @@ -740,10 +803,9 @@ contains real(psb_spk_) :: res real(psb_spk_), external :: ddot integer(psb_ipk_) :: info - integer(psb_ipk_) :: i res = szero - + !write(0,*) 'dot_v' select type(yy => y) type is (psb_s_base_vect_type) if (x%is_dev()) call x%sync() @@ -751,18 +813,26 @@ contains type is (psb_s_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - - !$acc parallel loop reduction(+:res) present(x%v, yy%v) - do i = 1, n - res = res + x%v(i) * yy%v(i) - end do - !$acc end parallel loop - + res = s_inner_oacc_dot(n, x%v, yy%v) class default call x%sync() res = y%dot(n, x%v) end select - + contains + function s_inner_oacc_dot(n, x, y) result(res) + implicit none + real(psb_spk_), intent(in) :: x(:) + real(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function s_inner_oacc_dot end function s_oacc_vect_dot function s_oacc_dot_a(n, x, y) result(res) @@ -808,7 +878,7 @@ contains implicit none class(psb_s_vect_oacc), intent(inout) :: x if (allocated(x%v)) then - call s_oacc_create_dev(x%v) + if (.not.acc_is_present(x%v)) call s_oacc_create_dev(x%v) end if contains subroutine s_oacc_create_dev(v) @@ -886,6 +956,9 @@ contains call psb_realloc(n, x%v, info) if (info == 0) then call x%set_host() + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if !$acc enter data create(x%v) call x%sync_space() end if @@ -902,7 +975,9 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - !$acc exit data delete(x%v) finalize + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if deallocate(x%v, stat=info) end if diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index be03b1cd..bab1a0a0 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -1,5 +1,6 @@ module psb_z_oacc_vect_mod use iso_c_binding + use openacc use psb_const_mod use psb_error_mod use psb_z_vect_mod @@ -50,8 +51,8 @@ module psb_z_oacc_vect_mod procedure, pass(z) :: upd_xyz => z_oacc_upd_xyz procedure, pass(y) :: mlt_a => z_oacc_mlt_a procedure, pass(z) :: mlt_a_2 => z_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => z_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => z_oacc_mlt_v_2 + procedure, pass(y) :: mlt_v => psb_z_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_z_oacc_mlt_v_2 procedure, pass(x) :: scal => z_oacc_scal procedure, pass(x) :: nrm2 => z_oacc_nrm2 procedure, pass(x) :: amax => z_oacc_amax @@ -62,17 +63,17 @@ module psb_z_oacc_vect_mod end type psb_z_vect_oacc interface - subroutine z_oacc_mlt_v(x, y, info) + subroutine psb_z_oacc_mlt_v(x, y, info) import implicit none class(psb_z_base_vect_type), intent(inout) :: x class(psb_z_vect_oacc), intent(inout) :: y integer(psb_ipk_), intent(out) :: info - end subroutine z_oacc_mlt_v + end subroutine psb_z_oacc_mlt_v end interface interface - subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) import implicit none complex(psb_dpk_), intent(in) :: alpha, beta @@ -81,7 +82,7 @@ module psb_z_oacc_vect_mod class(psb_z_vect_oacc), intent(inout) :: z integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy - end subroutine z_oacc_mlt_v_2 + end subroutine psb_z_oacc_mlt_v_2 end interface contains @@ -89,15 +90,23 @@ contains subroutine z_oacc_absval1(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x - integer(psb_ipk_) :: n, i + integer(psb_ipk_) :: n - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() n = size(x%v) - !$acc parallel loop - do i = 1, n - x%v(i) = abs(x%v(i)) - end do + call z_inner_oacc_absval1(n,x%v) call x%set_dev() + contains + subroutine z_inner_oacc_absval1(n,x) + implicit none + complex(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine z_inner_oacc_absval1 end subroutine z_oacc_absval1 subroutine z_oacc_absval2(x, y) @@ -112,15 +121,23 @@ contains class is (psb_z_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - !$acc parallel loop - do i = 1, n - yy%v(i) = abs(x%v(i)) - end do + call z_inner_oacc_absval2(n,x%v,yy%v) class default if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() call x%psb_z_base_vect_type%absval(y) end select + contains + subroutine z_inner_oacc_absval2(n,x,y) + implicit none + complex(psb_dpk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine z_inner_oacc_absval2 end subroutine z_oacc_absval2 subroutine z_oacc_scal(alpha, x) @@ -128,32 +145,46 @@ contains class(psb_z_vect_oacc), intent(inout) :: x complex(psb_dpk_), intent(in) :: alpha integer(psb_ipk_) :: info - integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - !$acc parallel loop - do i = 1, size(x%v) - x%v(i) = alpha * x%v(i) - end do + if (x%is_host()) call x%sync() + call z_inner_oacc_scal(alpha, x%v) call x%set_dev() + contains + subroutine z_inner_oacc_scal(alpha, x) + complex(psb_dpk_), intent(in) :: alpha + complex(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine z_inner_oacc_scal end subroutine z_oacc_scal function z_oacc_nrm2(n, x) result(res) implicit none class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res + real(psb_dpk_) :: res + real(psb_dpk_) :: mx integer(psb_ipk_) :: info - real(psb_dpk_) :: sum - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i))**2 - end do - res = sqrt(sum) + if (x%is_host()) call x%sync() + mx = z_oacc_amax(n,x) + res = z_inner_oacc_nrm2(n, mx, x%v) + contains + function z_inner_oacc_nrm2(n, mx,x) result(res) + integer(psb_ipk_) :: n + complex(psb_dpk_) :: x(:) + real(psb_dpk_) :: mx, res + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + sum = 0.0 + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end function z_inner_oacc_nrm2 end function z_oacc_nrm2 function z_oacc_amax(n, x) result(res) @@ -162,18 +193,25 @@ contains integer(psb_ipk_), intent(in) :: n real(psb_dpk_) :: res integer(psb_ipk_) :: info - real(psb_dpk_) :: max_val - integer(psb_ipk_) :: i - if (x%is_host()) call x%sync_space() - max_val = -huge(0.0) - !$acc parallel loop reduction(max:max_val) - do i = 1, n - if (abs(x%v(i)) > max_val) max_val = abs(x%v(i)) - end do - res = max_val + if (x%is_host()) call x%sync() + res = z_inner_oacc_amax(n, x%v) + contains + function z_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + real(psb_dpk_) :: max_val + integer(psb_ipk_) :: i + max_val = -huge(0.0) + !$acc parallel loop reduction(max:max_val) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function z_inner_oacc_amax end function z_oacc_amax - + function z_oacc_asum(n, x) result(res) implicit none class(psb_z_vect_oacc), intent(inout) :: x @@ -182,14 +220,20 @@ contains integer(psb_ipk_) :: info complex(psb_dpk_) :: sum integer(psb_ipk_) :: i - - if (x%is_host()) call x%sync_space() - sum = 0.0 - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x%v(i)) - end do - res = sum + if (x%is_host()) call x%sync() + res = z_inner_oacc_asum(n, x%v) + contains + function z_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + integer(psb_ipk_) :: i + res = 0.0 + !$acc parallel loop reduction(+:res) + do i = 1, n + res = res + abs(x(i)) + end do + end function z_inner_oacc_asum end function z_oacc_asum @@ -201,7 +245,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, size(x) y%v(i) = y%v(i) * x(i) @@ -219,7 +263,7 @@ contains integer(psb_ipk_) :: i, n info = 0 - if (z%is_dev()) call z%sync_space() + if (z%is_dev()) call z%sync() !$acc parallel loop do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) @@ -282,18 +326,18 @@ contains !!$ class is (psb_z_vect_oacc) !!$ select type (yy => y) !!$ class is (psb_z_vect_oacc) -!!$ if (xx%is_host()) call xx%sync_space() -!!$ if (yy%is_host()) call yy%sync_space() -!!$ if ((beta /= zzero) .and. (z%is_host())) call z%sync_space() +!!$ if (xx%is_host()) call xx%sync() +!!$ if (yy%is_host()) call yy%sync() +!!$ if ((beta /= zzero) .and. (z%is_host())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) !!$ end do !!$ call z%set_dev() !!$ class default -!!$ if (xx%is_dev()) call xx%sync_space() +!!$ if (xx%is_dev()) call xx%sync() !!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) @@ -303,7 +347,7 @@ contains !!$ class default !!$ if (x%is_dev()) call x%sync() !!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync_space() +!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync() !!$ !$acc parallel loop !!$ do i = 1, n !!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) @@ -327,23 +371,36 @@ contains select type(xx => x) type is (psb_z_vect_oacc) - if ((beta /= zzero) .and. y%is_host()) call y%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= zzero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(y%v) if ((nx < m) .or. (ny < m)) then info = psb_err_internal_error_ else - !$acc parallel loop - do i = 1, m - y%v(i) = alpha * xx%v(i) + beta * y%v(i) - end do + call z_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) end if call y%set_dev() class default if ((alpha /= zzero) .and. (x%is_dev())) call x%sync() call y%axpby(m, alpha, x%v, beta, info) - end select + end select + contains + subroutine z_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_dpk_), intent(inout) :: x(:) + complex(psb_dpk_), intent(inout) :: y(:) + complex(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine z_inner_oacc_axpby end subroutine z_oacc_axpby_v subroutine z_oacc_axpby_a(m, alpha, x, beta, y, info) @@ -356,7 +413,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: i - if ((beta /= zzero) .and. (y%is_dev())) call y%sync_space() + if ((beta /= zzero) .and. (y%is_dev())) call y%sync() !$acc parallel loop do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) @@ -375,7 +432,7 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - + write(0,*)'upd_xyz' info = psb_success_ gpu_done = .false. @@ -385,9 +442,9 @@ contains class is (psb_z_vect_oacc) select type(zz => z) class is (psb_z_vect_oacc) - if ((beta /= zzero) .and. yy%is_host()) call yy%sync_space() - if ((delta /= zzero) .and. zz%is_host()) call zz%sync_space() - if (xx%is_host()) call xx%sync_space() + if ((beta /= zzero) .and. yy%is_host()) call yy%sync() + if ((delta /= zzero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() nx = size(xx%v) ny = size(yy%v) nz = size(zz%v) @@ -432,8 +489,8 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() - if (y%is_host()) call y%sync_space() + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -459,13 +516,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'z_oacc_sctb_x') return end select - if (y%is_host()) call y%sync_space() + if (y%is_host()) call y%sync() !$acc parallel loop do i = 1, n @@ -486,7 +543,7 @@ contains integer(psb_ipk_) :: i if (n == 0) return - if (y%is_dev()) call y%sync_space() + if (y%is_dev()) call y%sync() !$acc parallel loop do i = 1, n @@ -512,13 +569,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'z_oacc_gthzbuf') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -539,13 +596,13 @@ contains select type(ii => idx) class is (psb_i_vect_oacc) - if (ii%is_host()) call ii%sync_space() + if (ii%is_host()) call ii%sync() class default call psb_errpush(info, 'z_oacc_gthzv_x') return end select - if (x%is_host()) call x%sync_space() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n @@ -573,9 +630,9 @@ contains type is (psb_i_vect_oacc) select type(vval => val) type is (psb_z_vect_oacc) - if (vval%is_host()) call vval%sync_space() - if (virl%is_host()) call virl%sync_space() - if (x%is_host()) call x%sync_space() + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() !$acc parallel loop do i = 1, n x%v(virl%v(i)) = vval%v(i) @@ -588,11 +645,11 @@ contains if (.not.done_oacc) then select type(virl => irl) type is (psb_i_vect_oacc) - if (virl%is_dev()) call virl%sync_space() + if (virl%is_dev()) call virl%sync() end select select type(vval => val) type is (psb_z_vect_oacc) - if (vval%is_dev()) call vval%sync_space() + if (vval%is_dev()) call vval%sync() end select call x%ins(n, irl%v, val%v, dupl, info) end if @@ -616,7 +673,7 @@ contains integer(psb_ipk_) :: i info = 0 - if (x%is_dev()) call x%sync_space() + if (x%is_dev()) call x%sync() call x%psb_z_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() !$acc update device(x%v) @@ -635,7 +692,10 @@ contains call psb_errpush(info, 'z_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine z_oacc_bld_mn @@ -657,7 +717,10 @@ contains x%v(:) = this(:) call x%set_host() - !$acc update device(x%v) + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if + !$acc enter data copyin(x%v) end subroutine z_oacc_bld_x @@ -676,13 +739,13 @@ contains if (nd < n) then call x%sync() call x%psb_z_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if else if (size(x%v) < n) then call x%psb_z_base_vect_type%asb(n, info) - if (info == psb_success_) call x%sync_space() + if (info == psb_success_) call x%sync() call x%set_host() end if end if @@ -740,10 +803,9 @@ contains complex(psb_dpk_) :: res complex(psb_dpk_), external :: ddot integer(psb_ipk_) :: info - integer(psb_ipk_) :: i res = zzero - + !write(0,*) 'dot_v' select type(yy => y) type is (psb_z_base_vect_type) if (x%is_dev()) call x%sync() @@ -751,18 +813,26 @@ contains type is (psb_z_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() - - !$acc parallel loop reduction(+:res) present(x%v, yy%v) - do i = 1, n - res = res + x%v(i) * yy%v(i) - end do - !$acc end parallel loop - + res = z_inner_oacc_dot(n, x%v, yy%v) class default call x%sync() res = y%dot(n, x%v) end select - + contains + function z_inner_oacc_dot(n, x, y) result(res) + implicit none + complex(psb_dpk_), intent(in) :: x(:) + complex(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function z_inner_oacc_dot end function z_oacc_vect_dot function z_oacc_dot_a(n, x, y) result(res) @@ -808,7 +878,7 @@ contains implicit none class(psb_z_vect_oacc), intent(inout) :: x if (allocated(x%v)) then - call z_oacc_create_dev(x%v) + if (.not.acc_is_present(x%v)) call z_oacc_create_dev(x%v) end if contains subroutine z_oacc_create_dev(v) @@ -886,6 +956,9 @@ contains call psb_realloc(n, x%v, info) if (info == 0) then call x%set_host() + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if !$acc enter data create(x%v) call x%sync_space() end if @@ -902,7 +975,9 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - !$acc exit data delete(x%v) finalize + if (acc_is_present(x%v)) then + !$acc exit data delete(x%v) finalize + end if deallocate(x%v, stat=info) end if From 95c546aaddeb4280de1b768d7de4f12accc1c336 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 26 Aug 2024 08:22:35 +0200 Subject: [PATCH 33/86] Fix OpenACC version of ELL vect_mv --- openacc/impl/psb_c_oacc_ell_vect_mv.F90 | 13 +++++++------ openacc/impl/psb_d_oacc_ell_vect_mv.F90 | 13 +++++++------ openacc/impl/psb_s_oacc_ell_vect_mv.F90 | 13 +++++++------ openacc/impl/psb_z_oacc_ell_vect_mv.F90 | 13 +++++++------ 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 index e65d00ba..f3e78d98 100644 --- a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 @@ -10,13 +10,13 @@ contains integer(psb_ipk_), intent(out) :: info character, optional, intent(in) :: trans - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nzt, nc info = psb_success_ m = a%get_nrows() n = a%get_ncols() nzt = a%nzt - + nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ @@ -27,14 +27,15 @@ contains if (x%is_host()) call x%sync() if (y%is_host()) call y%sync() - call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() contains - subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) implicit none - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nc complex(psb_spk_), intent(in) :: alpha, beta complex(psb_spk_) :: val(:,:), x(:), y(:) integer(psb_ipk_) :: ja(:,:) @@ -52,7 +53,7 @@ contains do i = ii, ii + isz - 1 tmp = 0.0_psb_dpk_ !$acc loop seq - do j = 1, nzt + do j = 1, nc if (ja(i,j) > 0) then tmp = tmp + val(i,j) * x(ja(i,j)) end if diff --git a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 index ebcdb405..4239d049 100644 --- a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 @@ -10,13 +10,13 @@ contains integer(psb_ipk_), intent(out) :: info character, optional, intent(in) :: trans - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nzt, nc info = psb_success_ m = a%get_nrows() n = a%get_ncols() nzt = a%nzt - + nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ @@ -27,14 +27,15 @@ contains if (x%is_host()) call x%sync() if (y%is_host()) call y%sync() - call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() contains - subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) implicit none - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nc real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_) :: val(:,:), x(:), y(:) integer(psb_ipk_) :: ja(:,:) @@ -52,7 +53,7 @@ contains do i = ii, ii + isz - 1 tmp = 0.0_psb_dpk_ !$acc loop seq - do j = 1, nzt + do j = 1, nc if (ja(i,j) > 0) then tmp = tmp + val(i,j) * x(ja(i,j)) end if diff --git a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 index f48ba041..bbbdd6a3 100644 --- a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 @@ -10,13 +10,13 @@ contains integer(psb_ipk_), intent(out) :: info character, optional, intent(in) :: trans - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nzt, nc info = psb_success_ m = a%get_nrows() n = a%get_ncols() nzt = a%nzt - + nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ @@ -27,14 +27,15 @@ contains if (x%is_host()) call x%sync() if (y%is_host()) call y%sync() - call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() contains - subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) implicit none - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nc real(psb_spk_), intent(in) :: alpha, beta real(psb_spk_) :: val(:,:), x(:), y(:) integer(psb_ipk_) :: ja(:,:) @@ -52,7 +53,7 @@ contains do i = ii, ii + isz - 1 tmp = 0.0_psb_dpk_ !$acc loop seq - do j = 1, nzt + do j = 1, nc if (ja(i,j) > 0) then tmp = tmp + val(i,j) * x(ja(i,j)) end if diff --git a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 index ecb61adf..ad8460b8 100644 --- a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 @@ -10,13 +10,13 @@ contains integer(psb_ipk_), intent(out) :: info character, optional, intent(in) :: trans - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nzt, nc info = psb_success_ m = a%get_nrows() n = a%get_ncols() nzt = a%nzt - + nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ @@ -27,14 +27,15 @@ contains if (x%is_host()) call x%sync() if (y%is_host()) call y%sync() - call inner_spmv(m, n, nzt, alpha, a%val, a%ja, x%v, beta, y%v, info) + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() contains - subroutine inner_spmv(m, n, nzt, alpha, val, ja, x, beta, y, info) + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) implicit none - integer(psb_ipk_) :: m, n, nzt + integer(psb_ipk_) :: m, n, nc complex(psb_dpk_), intent(in) :: alpha, beta complex(psb_dpk_) :: val(:,:), x(:), y(:) integer(psb_ipk_) :: ja(:,:) @@ -52,7 +53,7 @@ contains do i = ii, ii + isz - 1 tmp = 0.0_psb_dpk_ !$acc loop seq - do j = 1, nzt + do j = 1, nc if (ja(i,j) > 0) then tmp = tmp + val(i,j) * x(ja(i,j)) end if From 479135c62d99319b3c6c1123b45302976f4cceb2 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 29 Aug 2024 16:36:24 +0200 Subject: [PATCH 34/86] Merge some changes from V4 --- openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 | 7 +- openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 | 6 +- openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 | 6 +- openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 | 6 +- openacc/impl/psb_c_oacc_csr_vect_mv.F90 | 4 +- openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 | 61 +---- openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 | 6 +- openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 | 8 +- openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 | 6 +- openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 | 72 +----- openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 | 6 +- openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 | 6 +- openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 | 7 +- openacc/impl/psb_c_oacc_hll_vect_mv.F90 | 32 +-- openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 | 7 +- openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 | 6 +- openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 | 6 +- openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 | 6 +- openacc/impl/psb_d_oacc_csr_vect_mv.F90 | 4 +- openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 | 61 +---- openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 | 6 +- openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 | 8 +- openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 | 6 +- openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 | 72 +----- openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 | 6 +- openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 | 6 +- openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 | 7 +- openacc/impl/psb_d_oacc_hll_vect_mv.F90 | 32 +-- openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 | 7 +- openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 | 6 +- openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 | 6 +- openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 | 6 +- openacc/impl/psb_s_oacc_csr_vect_mv.F90 | 4 +- openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 | 61 +---- openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 | 6 +- openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 | 8 +- openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 | 6 +- openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 | 72 +----- openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 | 6 +- openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 | 6 +- openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 | 7 +- openacc/impl/psb_s_oacc_hll_vect_mv.F90 | 32 +-- openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 | 7 +- openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 | 6 +- openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 | 6 +- openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 | 6 +- openacc/impl/psb_z_oacc_csr_vect_mv.F90 | 4 +- openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 | 61 +---- openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 | 6 +- openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 | 8 +- openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 | 6 +- openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 | 72 +----- openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 | 6 +- openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 | 6 +- openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 | 7 +- openacc/impl/psb_z_oacc_hll_vect_mv.F90 | 32 +-- openacc/psb_c_oacc_csr_mat_mod.F90 | 102 +++----- openacc/psb_c_oacc_ell_mat_mod.F90 | 133 +++------- openacc/psb_c_oacc_hll_mat_mod.F90 | 133 +++------- openacc/psb_c_oacc_vect_mod.F90 | 253 ++++++-------------- openacc/psb_d_oacc_csr_mat_mod.F90 | 102 +++----- openacc/psb_d_oacc_ell_mat_mod.F90 | 133 +++------- openacc/psb_d_oacc_hll_mat_mod.F90 | 133 +++------- openacc/psb_d_oacc_vect_mod.F90 | 253 ++++++-------------- openacc/psb_i_oacc_vect_mod.F90 | 85 ++----- openacc/psb_l_oacc_vect_mod.F90 | 85 ++----- openacc/psb_s_oacc_csr_mat_mod.F90 | 102 +++----- openacc/psb_s_oacc_ell_mat_mod.F90 | 133 +++------- openacc/psb_s_oacc_hll_mat_mod.F90 | 133 +++------- openacc/psb_s_oacc_vect_mod.F90 | 253 ++++++-------------- openacc/psb_z_oacc_csr_mat_mod.F90 | 102 +++----- openacc/psb_z_oacc_ell_mat_mod.F90 | 133 +++------- openacc/psb_z_oacc_hll_mat_mod.F90 | 133 +++------- openacc/psb_z_oacc_vect_mod.F90 | 253 ++++++-------------- 74 files changed, 974 insertions(+), 2612 deletions(-) diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 index 70380c95..a411cc6a 100644 --- a/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 @@ -10,11 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_c_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - - call a%set_dev() - if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 index 7e664791..a8cd93a0 100644 --- a/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_c_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_c_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_c_oacc_csr_cp_from_fmt diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 index f8c5c39d..30691030 100644 --- a/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_c_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 index 7ba971b4..b37011c0 100644 --- a/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_c_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_c_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_c_oacc_csr_mv_from_fmt diff --git a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 index 0fd1ed35..db56d9fc 100644 --- a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 @@ -16,8 +16,8 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (n /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if diff --git a/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 index 7bd17478..836874fe 100644 --- a/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 @@ -8,65 +8,14 @@ contains class(psb_c_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - complex(psb_spk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza info = psb_success_ - hacksize = 1 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(a%get_nrows(), nz_per_row)) - allocate(a%ja(a%get_nrows(), nz_per_row)) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - end if - a%val = czero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row, row_counts(row) + 1) = value - a%ja(row, row_counts(row) + 1) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(i, j) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - deallocate(row_counts) - - call a%set_dev() + call a%free_space() + call a%psb_c_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 index 7ee231c5..31d6c4b4 100644 --- a/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_c_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_c_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_c_oacc_ell_cp_from_fmt diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 index 7e703aa2..1ca43435 100644 --- a/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 @@ -9,11 +9,13 @@ contains integer(psb_ipk_), intent(out) :: info info = psb_success_ - + + call a%free_space() call a%psb_c_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 index 7d1f790d..95798429 100644 --- a/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_c_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_c_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_c_oacc_ell_mv_from_fmt diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 index 4c12cdf8..32391cc8 100644 --- a/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 @@ -2,78 +2,20 @@ submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_cp_from_coo_impl use psb_base_mod contains module subroutine psb_c_oacc_hll_cp_from_coo(a, b, info) - implicit none + implicit none class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_c_coo_sparse_mat), intent(in) :: b + class(psb_c_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - complex(psb_spk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza - info = psb_success_ - hacksize = 32 ! Assuming a default hack size of 32 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(nz_per_row * a%get_nrows())) - allocate(a%ja(nz_per_row * a%get_nrows())) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) - end if - a%val = czero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value - a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(j + (i - 1) * nz_per_row) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - ! Calculate hkoffs for HLL format - !$acc parallel loop present(a) - do i = 1, size(a%hkoffs) - a%hkoffs(i) = (i - 1) * hacksize - end do - - deallocate(row_counts) - call a%set_dev() + call a%free_space() + call a%psb_c_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 index af6cc1d5..e442b668 100644 --- a/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_c_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_c_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_c_oacc_hll_cp_from_fmt diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 index dec52d40..30d723fe 100644 --- a/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_c_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 index f2a064cb..0ac69af8 100644 --- a/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 @@ -14,11 +14,12 @@ contains type is (psb_c_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_c_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select - end subroutine psb_c_oacc_hll_mv_from_fmt end submodule psb_c_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 index 3b74d11a..68141e42 100644 --- a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 @@ -40,28 +40,28 @@ contains complex(psb_spk_) :: val(:), x(:), y(:) integer(psb_ipk_) :: ja(:), hkoffs(:) integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, idx, k + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii complex(psb_spk_) :: tmp info = 0 - - !$acc parallel loop present(val, ja, hkoffs, x, y) + !$acc parallel loop private(nlc, isz,ir,nr) do i = 1, nhacks - do k = 0, hksz - 1 - idx = hkoffs(i) + k - if (idx <= hkoffs(i + 1) - 1) then - tmp = 0.0_psb_dpk_ - !$acc loop seq - do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz - if (ja(j) > 0) then - tmp = tmp + val(j) * x(ja(j)) - end if - end do - y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) - end if + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = czero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) end do end do end subroutine inner_spmv - end subroutine psb_c_oacc_hll_vect_mv end submodule psb_c_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 index ec92f618..50da7692 100644 --- a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 @@ -10,11 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_d_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - - call a%set_dev() - if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 index 37541ea9..0d35e247 100644 --- a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_d_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_d_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_d_oacc_csr_cp_from_fmt diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 index 2ed9b032..97fa07d1 100644 --- a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_d_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 index 197ed911..e992f41a 100644 --- a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_d_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_d_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_d_oacc_csr_mv_from_fmt diff --git a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 index 1dca2ba2..0001cc76 100644 --- a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 @@ -16,8 +16,8 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (n /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 index c13d1edd..6c24098e 100644 --- a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 @@ -8,65 +8,14 @@ contains class(psb_d_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - real(psb_dpk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza info = psb_success_ - hacksize = 1 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(a%get_nrows(), nz_per_row)) - allocate(a%ja(a%get_nrows(), nz_per_row)) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - end if - a%val = dzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row, row_counts(row) + 1) = value - a%ja(row, row_counts(row) + 1) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(i, j) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - deallocate(row_counts) - - call a%set_dev() + call a%free_space() + call a%psb_d_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 index b62a40d5..991681e9 100644 --- a/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_d_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_d_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_d_oacc_ell_cp_from_fmt diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 index 688d182b..9214ba3f 100644 --- a/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 @@ -9,11 +9,13 @@ contains integer(psb_ipk_), intent(out) :: info info = psb_success_ - + + call a%free_space() call a%psb_d_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 index 8bda6e6e..292165fc 100644 --- a/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_d_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_d_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_d_oacc_ell_mv_from_fmt diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 index 18bd768b..e39a29b7 100644 --- a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 @@ -2,78 +2,20 @@ submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_cp_from_coo_impl use psb_base_mod contains module subroutine psb_d_oacc_hll_cp_from_coo(a, b, info) - implicit none + implicit none class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_d_coo_sparse_mat), intent(in) :: b + class(psb_d_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - real(psb_dpk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza - info = psb_success_ - hacksize = 32 ! Assuming a default hack size of 32 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(nz_per_row * a%get_nrows())) - allocate(a%ja(nz_per_row * a%get_nrows())) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) - end if - a%val = dzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value - a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(j + (i - 1) * nz_per_row) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - ! Calculate hkoffs for HLL format - !$acc parallel loop present(a) - do i = 1, size(a%hkoffs) - a%hkoffs(i) = (i - 1) * hacksize - end do - - deallocate(row_counts) - call a%set_dev() + call a%free_space() + call a%psb_d_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 index fb99737c..a838e31e 100644 --- a/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_d_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_d_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_d_oacc_hll_cp_from_fmt diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 index 7bf22c13..29494a39 100644 --- a/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_d_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 index e6615365..e03e2f30 100644 --- a/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 @@ -14,11 +14,12 @@ contains type is (psb_d_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_d_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select - end subroutine psb_d_oacc_hll_mv_from_fmt end submodule psb_d_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 index 875b646f..e7c47b7a 100644 --- a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 @@ -40,28 +40,28 @@ contains real(psb_dpk_) :: val(:), x(:), y(:) integer(psb_ipk_) :: ja(:), hkoffs(:) integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, idx, k + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii real(psb_dpk_) :: tmp info = 0 - - !$acc parallel loop present(val, ja, hkoffs, x, y) + !$acc parallel loop private(nlc, isz,ir,nr) do i = 1, nhacks - do k = 0, hksz - 1 - idx = hkoffs(i) + k - if (idx <= hkoffs(i + 1) - 1) then - tmp = 0.0_psb_dpk_ - !$acc loop seq - do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz - if (ja(j) > 0) then - tmp = tmp + val(j) * x(ja(j)) - end if - end do - y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) - end if + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = dzero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) end do end do end subroutine inner_spmv - end subroutine psb_d_oacc_hll_vect_mv end submodule psb_d_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 index 94ef67b3..3c2fb1cb 100644 --- a/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 @@ -10,11 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_s_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - - call a%set_dev() - if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 index 2c64b5fe..e47959f8 100644 --- a/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_s_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_s_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_s_oacc_csr_cp_from_fmt diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 index e531d309..fdbf3a0c 100644 --- a/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_s_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 index a9dc0c70..a7a581b8 100644 --- a/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_s_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_s_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_s_oacc_csr_mv_from_fmt diff --git a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 index c2bbd6b1..13ee1651 100644 --- a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 @@ -16,8 +16,8 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (n /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 index 9aaaff73..0f6fbc48 100644 --- a/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 @@ -8,65 +8,14 @@ contains class(psb_s_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - real(psb_spk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza info = psb_success_ - hacksize = 1 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(a%get_nrows(), nz_per_row)) - allocate(a%ja(a%get_nrows(), nz_per_row)) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - end if - a%val = szero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row, row_counts(row) + 1) = value - a%ja(row, row_counts(row) + 1) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(i, j) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - deallocate(row_counts) - - call a%set_dev() + call a%free_space() + call a%psb_s_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 index d4c1a233..793c2779 100644 --- a/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_s_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_s_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_s_oacc_ell_cp_from_fmt diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 index d6bbec13..ba82049f 100644 --- a/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 @@ -9,11 +9,13 @@ contains integer(psb_ipk_), intent(out) :: info info = psb_success_ - + + call a%free_space() call a%psb_s_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 index ebb82901..df789664 100644 --- a/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_s_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_s_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_s_oacc_ell_mv_from_fmt diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 index 34a0b5d5..dfba3c6c 100644 --- a/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 @@ -2,78 +2,20 @@ submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_cp_from_coo_impl use psb_base_mod contains module subroutine psb_s_oacc_hll_cp_from_coo(a, b, info) - implicit none + implicit none class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_s_coo_sparse_mat), intent(in) :: b + class(psb_s_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - real(psb_spk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza - info = psb_success_ - hacksize = 32 ! Assuming a default hack size of 32 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(nz_per_row * a%get_nrows())) - allocate(a%ja(nz_per_row * a%get_nrows())) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) - end if - a%val = szero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value - a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(j + (i - 1) * nz_per_row) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - ! Calculate hkoffs for HLL format - !$acc parallel loop present(a) - do i = 1, size(a%hkoffs) - a%hkoffs(i) = (i - 1) * hacksize - end do - - deallocate(row_counts) - call a%set_dev() + call a%free_space() + call a%psb_s_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 index 4d023f8b..849e03b7 100644 --- a/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_s_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_s_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_s_oacc_hll_cp_from_fmt diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 index 08b553b7..c22818fa 100644 --- a/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_s_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 index d5867289..992b1c7b 100644 --- a/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 @@ -14,11 +14,12 @@ contains type is (psb_s_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_s_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select - end subroutine psb_s_oacc_hll_mv_from_fmt end submodule psb_s_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 index 9d9e9197..efe9a9ca 100644 --- a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 @@ -40,28 +40,28 @@ contains real(psb_spk_) :: val(:), x(:), y(:) integer(psb_ipk_) :: ja(:), hkoffs(:) integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, idx, k + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii real(psb_spk_) :: tmp info = 0 - - !$acc parallel loop present(val, ja, hkoffs, x, y) + !$acc parallel loop private(nlc, isz,ir,nr) do i = 1, nhacks - do k = 0, hksz - 1 - idx = hkoffs(i) + k - if (idx <= hkoffs(i + 1) - 1) then - tmp = 0.0_psb_dpk_ - !$acc loop seq - do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz - if (ja(j) > 0) then - tmp = tmp + val(j) * x(ja(j)) - end if - end do - y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) - end if + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = szero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) end do end do end subroutine inner_spmv - end subroutine psb_s_oacc_hll_vect_mv end submodule psb_s_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 index 0485c9ca..6c40d0d2 100644 --- a/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 @@ -10,11 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_z_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - - call a%set_dev() - if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 index f2c68816..3025fde2 100644 --- a/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_z_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_z_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_z_oacc_csr_cp_from_fmt diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 index 44b01b68..6dae625a 100644 --- a/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_z_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 index bf777e85..1d7dd723 100644 --- a/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_z_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_z_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irp) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_z_oacc_csr_mv_from_fmt diff --git a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 index b8da5c8f..cb34dce1 100644 --- a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 @@ -16,8 +16,8 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (n /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + if ((n /= size(x%v)) .or. (m /= size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 index e4d3b731..6dd60bd7 100644 --- a/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 @@ -8,65 +8,14 @@ contains class(psb_z_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - complex(psb_dpk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza info = psb_success_ - hacksize = 1 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(a%get_nrows(), nz_per_row)) - allocate(a%ja(a%get_nrows(), nz_per_row)) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - end if - a%val = zzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row, row_counts(row) + 1) = value - a%ja(row, row_counts(row) + 1) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(i, j) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - deallocate(row_counts) - - call a%set_dev() + call a%free_space() + call a%psb_z_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 index 98404ae2..60d94bb2 100644 --- a/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_z_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_z_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_z_oacc_ell_cp_from_fmt diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 index 26388e5e..db70b944 100644 --- a/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 @@ -9,11 +9,13 @@ contains integer(psb_ipk_), intent(out) :: info info = psb_success_ - + + call a%free_space() call a%psb_z_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 index e0f75828..f99b3817 100644 --- a/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_z_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_z_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_z_oacc_ell_mv_from_fmt diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 index 62be2252..e018e762 100644 --- a/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 @@ -2,78 +2,20 @@ submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_cp_from_coo_impl use psb_base_mod contains module subroutine psb_z_oacc_hll_cp_from_coo(a, b, info) - implicit none + implicit none class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a - class(psb_z_coo_sparse_mat), intent(in) :: b + class(psb_z_coo_sparse_mat), intent(in) :: b integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, k, row, col, nz_per_row - complex(psb_dpk_) :: value - integer(psb_ipk_), allocatable :: row_counts(:) - integer(psb_ipk_) :: hacksize, nza - info = psb_success_ - hacksize = 32 ! Assuming a default hack size of 32 - - call a%set_nrows(b%get_nrows()) - call a%set_ncols(b%get_ncols()) - nz_per_row = a%nzt - - if (.not.allocated(a%val)) then - allocate(a%val(nz_per_row * a%get_nrows())) - allocate(a%ja(nz_per_row * a%get_nrows())) - allocate(a%irn(a%get_nrows())) - allocate(a%idiag(a%get_nrows())) - allocate(a%hkoffs((a%get_nrows() + hacksize - 1) / hacksize)) - end if - a%val = zzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - allocate(row_counts(a%get_nrows())) - row_counts = 0 - - nza = b%get_nzeros() - - !$acc parallel loop present(b, a, row_counts) - do k = 1, nza - row = b%ia(k) - col = b%ja(k) - value = b%val(k) - if (row_counts(row) < nz_per_row) then - a%val(row_counts(row) + 1 + (row - 1) * nz_per_row) = value - a%ja(row_counts(row) + 1 + (row - 1) * nz_per_row) = col - row_counts(row) = row_counts(row) + 1 - else - info = psb_err_invalid_mat_state_ - !goto 9999 - end if - end do - - a%irn = row_counts - - !$acc parallel loop present(a) - do i = 1, a%get_nrows() - do j = 1, nz_per_row - if (a%ja(j + (i - 1) * nz_per_row) == i) then - a%idiag(i) = j - exit - end if - end do - end do - - ! Calculate hkoffs for HLL format - !$acc parallel loop present(a) - do i = 1, size(a%hkoffs) - a%hkoffs(i) = (i - 1) * hacksize - end do - - deallocate(row_counts) - call a%set_dev() + call a%free_space() + call a%psb_z_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 index f267e1c6..7b18b255 100644 --- a/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,12 @@ contains type is (psb_z_coo_sparse_mat) call a%cp_from_coo(b, info) class default + call a%free_space() call a%psb_z_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select end subroutine psb_z_oacc_hll_cp_from_fmt diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 index 2ff574d3..267f13f3 100644 --- a/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,12 @@ contains info = psb_success_ + call a%free_space() call a%psb_z_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() return diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 index 5fa00e38..151dc6ce 100644 --- a/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 @@ -14,11 +14,12 @@ contains type is (psb_z_coo_sparse_mat) call a%mv_from_coo(b, info) class default + call a%free_space() call a%psb_z_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - - !$acc update device(a%val, a%ja, a%irn, a%idiag, a%hkoffs) + call a%sync_space() + call a%set_host() + call a%sync() end select - end subroutine psb_z_oacc_hll_mv_from_fmt end submodule psb_z_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 index 89d970c0..dbadf034 100644 --- a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 @@ -40,28 +40,28 @@ contains complex(psb_dpk_) :: val(:), x(:), y(:) integer(psb_ipk_) :: ja(:), hkoffs(:) integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_) :: i, j, idx, k + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii complex(psb_dpk_) :: tmp info = 0 - - !$acc parallel loop present(val, ja, hkoffs, x, y) + !$acc parallel loop private(nlc, isz,ir,nr) do i = 1, nhacks - do k = 0, hksz - 1 - idx = hkoffs(i) + k - if (idx <= hkoffs(i + 1) - 1) then - tmp = 0.0_psb_dpk_ - !$acc loop seq - do j = hkoffs(i) + k, hkoffs(i + 1) - 1, hksz - if (ja(j) > 0) then - tmp = tmp + val(j) * x(ja(j)) - end if - end do - y(k + 1 + (i - 1) * hksz) = alpha * tmp + beta * y(k + 1 + (i - 1) * hksz) - end if + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = zzero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) end do end do end subroutine inner_spmv - end subroutine psb_z_oacc_hll_vect_mv end submodule psb_z_oacc_hll_vect_mv_impl diff --git a/openacc/psb_c_oacc_csr_mat_mod.F90 b/openacc/psb_c_oacc_csr_mat_mod.F90 index 00e79570..07734762 100644 --- a/openacc/psb_c_oacc_csr_mat_mod.F90 +++ b/openacc/psb_c_oacc_csr_mat_mod.F90 @@ -1,6 +1,7 @@ module psb_c_oacc_csr_mat_mod use iso_c_binding + use openacc use psb_c_mat_mod use psb_c_oacc_vect_mod !use oaccsparse_mod @@ -35,6 +36,7 @@ module psb_c_oacc_csr_mat_mod procedure, pass(a) :: set_host => c_oacc_csr_set_host procedure, pass(a) :: set_sync => c_oacc_csr_set_sync procedure, pass(a) :: set_dev => c_oacc_csr_set_dev + procedure, pass(a) :: free_space => c_oacc_csr_free_space procedure, pass(a) :: sync_space => c_oacc_csr_sync_space procedure, pass(a) :: sync => c_oacc_csr_sync end type psb_c_oacc_csr_sparse_mat @@ -154,22 +156,26 @@ module psb_c_oacc_csr_mat_mod contains - subroutine c_oacc_csr_free(a) + subroutine c_oacc_csr_free_space(a) use psb_base_mod implicit none class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irp)) call acc_delete_finalize(a%irp) + + return + end subroutine c_oacc_csr_free_space + + subroutine c_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_c_csr_sparse_mat%free() return @@ -193,7 +199,7 @@ contains function c_oacc_csr_get_fmt() result(res) implicit none character(len=5) :: res - res = 'CSR_oacc' + res = 'CSROA' end function c_oacc_csr_get_fmt subroutine c_oacc_csr_all(m, n, nz, a, info) @@ -202,19 +208,8 @@ contains class(psb_c_oacc_csr_sparse_mat), intent(out) :: a integer(psb_ipk_), intent(out) :: info - info = 0 - if (allocated(a%val)) then - !$acc exit data delete(a%val) finalize - deallocate(a%val, stat=info) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) finalize - deallocate(a%ja, stat=info) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) finalize - deallocate(a%irp, stat=info) - end if + info = 0 + call a%free() call a%set_nrows(m) call a%set_ncols(n) @@ -274,26 +269,9 @@ contains subroutine c_oacc_csr_sync_space(a) implicit none class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call c_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irp)) then - call i_oacc_create_dev(a%irp) - end if - contains - subroutine c_oacc_create_dev(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine c_oacc_create_dev - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irp)) call acc_create(a%irp) end subroutine c_oacc_csr_sync_space subroutine c_oacc_csr_sync(a) @@ -304,40 +282,16 @@ contains tmpa => a if (a%is_dev()) then - call c_oacc_csr_to_host(a%val) - call i_oacc_csr_to_host(a%ja) - call i_oacc_csr_to_host(a%irp) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irp) else if (a%is_host()) then - call c_oacc_csr_to_dev(a%val) - call i_oacc_csr_to_dev(a%ja) - call i_oacc_csr_to_dev(a%irp) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine c_oacc_csr_sync - subroutine c_oacc_csr_to_dev(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine c_oacc_csr_to_dev - - subroutine c_oacc_csr_to_host(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine c_oacc_csr_to_host - - subroutine i_oacc_csr_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_csr_to_dev - - subroutine i_oacc_csr_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_csr_to_host - end module psb_c_oacc_csr_mat_mod diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 index 5e5dc302..d23d4d0a 100644 --- a/openacc/psb_c_oacc_ell_mat_mod.F90 +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_c_oacc_ell_mat_mod use iso_c_binding + use openacc use psb_c_mat_mod use psb_c_ell_mat_mod use psb_c_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_c_oacc_ell_mat_mod procedure, pass(a) :: set_dev => c_oacc_ell_set_dev procedure, pass(a) :: sync_space => c_oacc_ell_sync_space procedure, pass(a) :: sync => c_oacc_ell_sync + procedure, pass(a) :: free_space => c_oacc_ell_free_space procedure, pass(a) :: free => c_oacc_ell_free procedure, pass(a) :: vect_mv => psb_c_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_c_oacc_ell_inner_vect_sv @@ -152,31 +154,32 @@ module psb_c_oacc_ell_mat_mod contains - subroutine c_oacc_ell_free(a) + subroutine c_oacc_ell_free_space(a) use psb_base_mod implicit none class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + + return + end subroutine c_oacc_ell_free_space + + subroutine c_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_c_ell_sparse_mat%free() return end subroutine c_oacc_ell_free - function c_oacc_ell_sizeof(a) result(res) implicit none class(psb_c_oacc_ell_sparse_mat), intent(in) :: a @@ -196,41 +199,12 @@ contains implicit none class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call c_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - - contains - subroutine c_oacc_create_dev(v) - implicit none - complex(psb_spk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine c_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) end subroutine c_oacc_ell_sync_space - - function c_oacc_ell_is_host(a) result(res) implicit none class(psb_c_oacc_ell_sparse_mat), intent(in) :: a @@ -279,7 +253,7 @@ contains function c_oacc_ell_get_fmt() result(res) implicit none character(len=5) :: res - res = 'ELL_oacc' + res = 'ELLOA' end function c_oacc_ell_get_fmt subroutine c_oacc_ell_sync(a) @@ -290,64 +264,17 @@ contains tmpa => a if (a%is_dev()) then - call c_oacc_ell_to_host(a%val) - call i_oacc_ell_to_host(a%ja) - call i_oacc_ell_to_host_scalar(a%irn) - call i_oacc_ell_to_host_scalar(a%idiag) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) else if (a%is_host()) then - call c_oacc_ell_to_dev(a%val) - call i_oacc_ell_to_dev(a%ja) - call i_oacc_ell_to_dev_scalar(a%irn) - call i_oacc_ell_to_dev_scalar(a%idiag) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine c_oacc_ell_sync - subroutine c_oacc_ell_to_dev_scalar(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine c_oacc_ell_to_dev_scalar - - subroutine c_oacc_ell_to_dev(v) - implicit none - complex(psb_spk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine c_oacc_ell_to_dev - - subroutine c_oacc_ell_to_host(v) - implicit none - complex(psb_spk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine c_oacc_ell_to_host - - subroutine c_oacc_ell_to_host_scalar(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine c_oacc_ell_to_host_scalar - - subroutine i_oacc_ell_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev - - subroutine i_oacc_ell_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev_scalar - - subroutine i_oacc_ell_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host - - subroutine i_oacc_ell_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host_scalar end module psb_c_oacc_ell_mat_mod diff --git a/openacc/psb_c_oacc_hll_mat_mod.F90 b/openacc/psb_c_oacc_hll_mat_mod.F90 index faad0a1b..2d2095bf 100644 --- a/openacc/psb_c_oacc_hll_mat_mod.F90 +++ b/openacc/psb_c_oacc_hll_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_c_oacc_hll_mat_mod use iso_c_binding + use openacc use psb_c_mat_mod use psb_c_hll_mat_mod use psb_c_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_c_oacc_hll_mat_mod procedure, pass(a) :: set_dev => c_oacc_hll_set_dev procedure, pass(a) :: sync_space => c_oacc_hll_sync_space procedure, pass(a) :: sync => c_oacc_hll_sync + procedure, pass(a) :: free_space => c_oacc_hll_free_space procedure, pass(a) :: free => c_oacc_hll_free procedure, pass(a) :: vect_mv => psb_c_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_c_oacc_hll_inner_vect_sv @@ -152,28 +154,28 @@ module psb_c_oacc_hll_mat_mod contains - subroutine c_oacc_hll_free(a) + subroutine c_oacc_hll_free_space(a) use psb_base_mod implicit none class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if - if (allocated(a%hkoffs)) then - !$acc exit data delete(a%hkoffs) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) + + return + end subroutine c_oacc_hll_free_space + + subroutine c_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_c_hll_sparse_mat%free() return @@ -244,48 +246,18 @@ contains function c_oacc_hll_get_fmt() result(res) implicit none character(len=5) :: res - res = 'HLL_oacc' + res = 'HLLOA' end function c_oacc_hll_get_fmt subroutine c_oacc_hll_sync_space(a) implicit none class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call c_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - if (allocated(a%hkoffs)) then - call i_oacc_create_dev_scalar(a%hkoffs) - end if - - contains - subroutine c_oacc_create_dev(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine c_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar - + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) + if (allocated(a%hkoffs)) call acc_create(a%hkoffs) end subroutine c_oacc_hll_sync_space @@ -297,56 +269,19 @@ contains tmpa => a if (a%is_dev()) then - call c_oacc_hll_to_host(a%val) - call i_oacc_hll_to_host(a%ja) - call i_oacc_hll_to_host_scalar(a%irn) - call i_oacc_hll_to_host_scalar(a%idiag) - call i_oacc_hll_to_host_scalar(a%hkoffs) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) + call acc_update_self(a%hkoffs) else if (a%is_host()) then - call c_oacc_hll_to_dev(a%val) - call i_oacc_hll_to_dev(a%ja) - call i_oacc_hll_to_dev_scalar(a%irn) - call i_oacc_hll_to_dev_scalar(a%idiag) - call i_oacc_hll_to_dev_scalar(a%hkoffs) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) + call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine c_oacc_hll_sync - subroutine c_oacc_hll_to_host(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine c_oacc_hll_to_host - - subroutine c_oacc_hll_to_dev(v) - implicit none - complex(psb_spk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine c_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host - - subroutine i_oacc_hll_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host_scalar - - subroutine i_oacc_hll_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev_scalar - - end module psb_c_oacc_hll_mat_mod diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index 7362ba0e..79ff0ca3 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -59,7 +59,7 @@ module psb_c_oacc_vect_mod procedure, pass(x) :: asum => c_oacc_asum procedure, pass(x) :: absval1 => c_oacc_absval1 procedure, pass(x) :: absval2 => c_oacc_absval2 - + final :: c_oacc_final_vect_free end type psb_c_vect_oacc interface @@ -164,21 +164,25 @@ contains implicit none class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_spk_) :: res - real(psb_spk_) :: mx + real(psb_spk_) :: res integer(psb_ipk_) :: info if (x%is_host()) call x%sync() - mx = c_oacc_amax(n,x) - res = c_inner_oacc_nrm2(n, mx, x%v) +!!$ write(0,*)'oacc_nrm2' + res = c_inner_oacc_nrm2(n, x%v) contains - function c_inner_oacc_nrm2(n, mx,x) result(res) + function c_inner_oacc_nrm2(n, x) result(res) integer(psb_ipk_) :: n complex(psb_spk_) :: x(:) - real(psb_spk_) :: mx, res - real(psb_spk_) :: sum + real(psb_spk_) :: res + real(psb_spk_) :: sum, mx integer(psb_ipk_) :: i - sum = 0.0 + mx = szero + !$acc parallel loop reduction(max:mx) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + sum = szero !$acc parallel loop reduction(+:sum) do i = 1, n sum = sum + abs(x(i)/mx)**2 @@ -203,7 +207,7 @@ contains real(psb_spk_) :: res real(psb_spk_) :: max_val integer(psb_ipk_) :: i - max_val = -huge(0.0) + max_val = szero !$acc parallel loop reduction(max:max_val) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) @@ -228,7 +232,7 @@ contains complex(psb_spk_) :: x(:) real(psb_spk_) :: res integer(psb_ipk_) :: i - res = 0.0 + res = szero !$acc parallel loop reduction(+:res) do i = 1, n res = res + abs(x(i)) @@ -271,92 +275,6 @@ contains call z%set_host() end subroutine c_oacc_mlt_a_2 - -!!$ subroutine c_oacc_mlt_v(x, y, info) -!!$ implicit none -!!$ class(psb_c_base_vect_type), intent(inout) :: x -!!$ class(psb_c_vect_oacc), intent(inout) :: y -!!$ integer(psb_ipk_), intent(out) :: info -!!$ -!!$ integer(psb_ipk_) :: i, n -!!$ -!!$ info = 0 -!!$ n = min(x%get_nrows(), y%get_nrows()) -!!$ select type(xx => x) -!!$ type is (psb_c_base_vect_type) -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ end select -!!$ end subroutine c_oacc_mlt_v -!!$ -!!$ subroutine c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) -!!$ use psi_serial_mod -!!$ use psb_string_mod -!!$ implicit none -!!$ complex(psb_spk_), intent(in) :: alpha, beta -!!$ class(psb_c_base_vect_type), intent(inout) :: x -!!$ class(psb_c_base_vect_type), intent(inout) :: y -!!$ class(psb_c_vect_oacc), intent(inout) :: z -!!$ integer(psb_ipk_), intent(out) :: info -!!$ character(len=1), intent(in), optional :: conjgx, conjgy -!!$ integer(psb_ipk_) :: i, n -!!$ logical :: conjgx_, conjgy_ -!!$ -!!$ conjgx_ = .false. -!!$ conjgy_ = .false. -!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') -!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') -!!$ -!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) -!!$ -!!$ info = 0 -!!$ select type(xx => x) -!!$ class is (psb_c_vect_oacc) -!!$ select type (yy => y) -!!$ class is (psb_c_vect_oacc) -!!$ if (xx%is_host()) call xx%sync() -!!$ if (yy%is_host()) call yy%sync() -!!$ if ((beta /= czero) .and. (z%is_host())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_dev() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ class default -!!$ if (x%is_dev()) call x%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= czero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ end subroutine c_oacc_mlt_v_2 - - subroutine c_oacc_axpby_v(m, alpha, x, beta, y, info) !use psi_serial_mod implicit none @@ -414,7 +332,7 @@ contains integer(psb_ipk_) :: i if ((beta /= czero) .and. (y%is_dev())) call y%sync() - !$acc parallel loop + do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) end do @@ -432,44 +350,44 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - write(0,*)'upd_xyz' + info = psb_success_ gpu_done = .false. select type(xx => x) class is (psb_c_vect_oacc) - select type(yy => y) + select type(yy => y) + class is (psb_c_vect_oacc) + select type(zz => z) class is (psb_c_vect_oacc) - select type(zz => z) - class is (psb_c_vect_oacc) - if ((beta /= czero) .and. yy%is_host()) call yy%sync() - if ((delta /= czero) .and. zz%is_host()) call zz%sync() - if (xx%is_host()) call xx%sync() - nx = size(xx%v) - ny = size(yy%v) - nz = size(zz%v) - if ((nx < m) .or. (ny < m) .or. (nz < m)) then - info = psb_err_internal_error_ - else - !$acc parallel loop - do i = 1, m - yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) - zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) - end do - end if - call yy%set_dev() - call zz%set_dev() - gpu_done = .true. - end select + if ((beta /= czero) .and. yy%is_host()) call yy%sync() + if ((delta /= czero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. end select + end select end select if (.not. gpu_done) then - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - if (z%is_host()) call z%sync() - call y%axpby(m, alpha, x, beta, info) - call z%axpby(m, gamma, y, delta, info) + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) end if end subroutine c_oacc_upd_xyz @@ -676,7 +594,7 @@ contains if (x%is_dev()) call x%sync() call x%psb_c_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() - !$acc update device(x%v) + end subroutine c_oacc_ins_a @@ -687,16 +605,14 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call x%all(n, info) if (info /= 0) then call psb_errpush(info, 'c_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) - + call x%sync_space() + end subroutine c_oacc_bld_mn @@ -707,6 +623,7 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call psb_realloc(size(this), x%v, info) if (info /= 0) then info = psb_err_alloc_request_ @@ -714,13 +631,9 @@ contains i_err=(/size(this), izero, izero, izero, izero/)) return end if - x%v(:) = this(:) call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) + call x%sync_space() end subroutine c_oacc_bld_x @@ -848,54 +761,21 @@ contains end function c_oacc_dot_a - ! subroutine c_oacc_set_vect(x,y) - ! implicit none - ! class(psb_c_vect_oacc), intent(inout) :: x - ! complex(psb_spk_), intent(in) :: y(:) - ! integer(psb_ipk_) :: info - - ! if (size(x%v) /= size(y)) then - ! call x%free(info) - ! call x%all(size(y),info) - ! end if - ! x%v(:) = y(:) - ! call x%set_host() - ! end subroutine c_oacc_set_vect - - subroutine c_oacc_to_dev(v) - implicit none - complex(psb_spk_) :: v(:) - !$acc update device(v) - end subroutine c_oacc_to_dev - - subroutine c_oacc_to_host(v) - implicit none - complex(psb_spk_) :: v(:) - !$acc update self(v) - end subroutine c_oacc_to_host subroutine c_oacc_sync_space(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x - if (allocated(x%v)) then - if (.not.acc_is_present(x%v)) call c_oacc_create_dev(x%v) - end if - contains - subroutine c_oacc_create_dev(v) - implicit none - complex(psb_spk_) :: v(:) - !$acc enter data copyin(v) - end subroutine c_oacc_create_dev + if (allocated(x%v)) call acc_create(x%v) end subroutine c_oacc_sync_space subroutine c_oacc_sync(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call c_oacc_to_host(x%v) + call acc_update_self(x%v) end if if (x%is_host()) then - call c_oacc_to_dev(x%v) + call acc_update_device(x%v) end if call x%set_sync() end subroutine c_oacc_sync @@ -954,33 +834,36 @@ contains integer(psb_ipk_), intent(out) :: info call psb_realloc(n, x%v, info) - if (info == 0) then - call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data create(x%v) - call x%sync_space() - end if if (info /= 0) then info = psb_err_alloc_request_ call psb_errpush(info, 'c_oacc_all', & i_err=(/n, n, n, n, n/)) end if + call x%set_host() + call x%sync_space() end subroutine c_oacc_vect_all + subroutine c_oacc_final_vect_free(x) + implicit none + type(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine c_oacc_final_vect_free + subroutine c_oacc_vect_free(x, info) implicit none class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) end if - end subroutine c_oacc_vect_free function c_oacc_get_size(x) result(res) diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index 8b7e111e..74031e89 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -1,6 +1,7 @@ module psb_d_oacc_csr_mat_mod use iso_c_binding + use openacc use psb_d_mat_mod use psb_d_oacc_vect_mod !use oaccsparse_mod @@ -35,6 +36,7 @@ module psb_d_oacc_csr_mat_mod procedure, pass(a) :: set_host => d_oacc_csr_set_host procedure, pass(a) :: set_sync => d_oacc_csr_set_sync procedure, pass(a) :: set_dev => d_oacc_csr_set_dev + procedure, pass(a) :: free_space => d_oacc_csr_free_space procedure, pass(a) :: sync_space => d_oacc_csr_sync_space procedure, pass(a) :: sync => d_oacc_csr_sync end type psb_d_oacc_csr_sparse_mat @@ -154,22 +156,26 @@ module psb_d_oacc_csr_mat_mod contains - subroutine d_oacc_csr_free(a) + subroutine d_oacc_csr_free_space(a) use psb_base_mod implicit none class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irp)) call acc_delete_finalize(a%irp) + + return + end subroutine d_oacc_csr_free_space + + subroutine d_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_d_csr_sparse_mat%free() return @@ -193,7 +199,7 @@ contains function d_oacc_csr_get_fmt() result(res) implicit none character(len=5) :: res - res = 'CSR_oacc' + res = 'CSROA' end function d_oacc_csr_get_fmt subroutine d_oacc_csr_all(m, n, nz, a, info) @@ -202,19 +208,8 @@ contains class(psb_d_oacc_csr_sparse_mat), intent(out) :: a integer(psb_ipk_), intent(out) :: info - info = 0 - if (allocated(a%val)) then - !$acc exit data delete(a%val) finalize - deallocate(a%val, stat=info) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) finalize - deallocate(a%ja, stat=info) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) finalize - deallocate(a%irp, stat=info) - end if + info = 0 + call a%free() call a%set_nrows(m) call a%set_ncols(n) @@ -274,26 +269,9 @@ contains subroutine d_oacc_csr_sync_space(a) implicit none class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call d_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irp)) then - call i_oacc_create_dev(a%irp) - end if - contains - subroutine d_oacc_create_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine d_oacc_create_dev - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irp)) call acc_create(a%irp) end subroutine d_oacc_csr_sync_space subroutine d_oacc_csr_sync(a) @@ -304,40 +282,16 @@ contains tmpa => a if (a%is_dev()) then - call d_oacc_csr_to_host(a%val) - call i_oacc_csr_to_host(a%ja) - call i_oacc_csr_to_host(a%irp) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irp) else if (a%is_host()) then - call d_oacc_csr_to_dev(a%val) - call i_oacc_csr_to_dev(a%ja) - call i_oacc_csr_to_dev(a%irp) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine d_oacc_csr_sync - subroutine d_oacc_csr_to_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine d_oacc_csr_to_dev - - subroutine d_oacc_csr_to_host(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine d_oacc_csr_to_host - - subroutine i_oacc_csr_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_csr_to_dev - - subroutine i_oacc_csr_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_csr_to_host - end module psb_d_oacc_csr_mat_mod diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 962ad2db..45ffc92d 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_d_oacc_ell_mat_mod use iso_c_binding + use openacc use psb_d_mat_mod use psb_d_ell_mat_mod use psb_d_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_d_oacc_ell_mat_mod procedure, pass(a) :: set_dev => d_oacc_ell_set_dev procedure, pass(a) :: sync_space => d_oacc_ell_sync_space procedure, pass(a) :: sync => d_oacc_ell_sync + procedure, pass(a) :: free_space => d_oacc_ell_free_space procedure, pass(a) :: free => d_oacc_ell_free procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv @@ -152,31 +154,32 @@ module psb_d_oacc_ell_mat_mod contains - subroutine d_oacc_ell_free(a) + subroutine d_oacc_ell_free_space(a) use psb_base_mod implicit none class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + + return + end subroutine d_oacc_ell_free_space + + subroutine d_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_d_ell_sparse_mat%free() return end subroutine d_oacc_ell_free - function d_oacc_ell_sizeof(a) result(res) implicit none class(psb_d_oacc_ell_sparse_mat), intent(in) :: a @@ -196,41 +199,12 @@ contains implicit none class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call d_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - - contains - subroutine d_oacc_create_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine d_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) end subroutine d_oacc_ell_sync_space - - function d_oacc_ell_is_host(a) result(res) implicit none class(psb_d_oacc_ell_sparse_mat), intent(in) :: a @@ -279,7 +253,7 @@ contains function d_oacc_ell_get_fmt() result(res) implicit none character(len=5) :: res - res = 'ELL_oacc' + res = 'ELLOA' end function d_oacc_ell_get_fmt subroutine d_oacc_ell_sync(a) @@ -290,64 +264,17 @@ contains tmpa => a if (a%is_dev()) then - call d_oacc_ell_to_host(a%val) - call i_oacc_ell_to_host(a%ja) - call i_oacc_ell_to_host_scalar(a%irn) - call i_oacc_ell_to_host_scalar(a%idiag) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) else if (a%is_host()) then - call d_oacc_ell_to_dev(a%val) - call i_oacc_ell_to_dev(a%ja) - call i_oacc_ell_to_dev_scalar(a%irn) - call i_oacc_ell_to_dev_scalar(a%idiag) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine d_oacc_ell_sync - subroutine d_oacc_ell_to_dev_scalar(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine d_oacc_ell_to_dev_scalar - - subroutine d_oacc_ell_to_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine d_oacc_ell_to_dev - - subroutine d_oacc_ell_to_host(v) - implicit none - real(psb_dpk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine d_oacc_ell_to_host - - subroutine d_oacc_ell_to_host_scalar(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine d_oacc_ell_to_host_scalar - - subroutine i_oacc_ell_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev - - subroutine i_oacc_ell_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev_scalar - - subroutine i_oacc_ell_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host - - subroutine i_oacc_ell_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host_scalar end module psb_d_oacc_ell_mat_mod diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 index b1c36a65..8009f085 100644 --- a/openacc/psb_d_oacc_hll_mat_mod.F90 +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_d_oacc_hll_mat_mod use iso_c_binding + use openacc use psb_d_mat_mod use psb_d_hll_mat_mod use psb_d_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_d_oacc_hll_mat_mod procedure, pass(a) :: set_dev => d_oacc_hll_set_dev procedure, pass(a) :: sync_space => d_oacc_hll_sync_space procedure, pass(a) :: sync => d_oacc_hll_sync + procedure, pass(a) :: free_space => d_oacc_hll_free_space procedure, pass(a) :: free => d_oacc_hll_free procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv @@ -152,28 +154,28 @@ module psb_d_oacc_hll_mat_mod contains - subroutine d_oacc_hll_free(a) + subroutine d_oacc_hll_free_space(a) use psb_base_mod implicit none class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if - if (allocated(a%hkoffs)) then - !$acc exit data delete(a%hkoffs) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) + + return + end subroutine d_oacc_hll_free_space + + subroutine d_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_d_hll_sparse_mat%free() return @@ -244,48 +246,18 @@ contains function d_oacc_hll_get_fmt() result(res) implicit none character(len=5) :: res - res = 'HLL_oacc' + res = 'HLLOA' end function d_oacc_hll_get_fmt subroutine d_oacc_hll_sync_space(a) implicit none class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call d_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - if (allocated(a%hkoffs)) then - call i_oacc_create_dev_scalar(a%hkoffs) - end if - - contains - subroutine d_oacc_create_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine d_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar - + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) + if (allocated(a%hkoffs)) call acc_create(a%hkoffs) end subroutine d_oacc_hll_sync_space @@ -297,56 +269,19 @@ contains tmpa => a if (a%is_dev()) then - call d_oacc_hll_to_host(a%val) - call i_oacc_hll_to_host(a%ja) - call i_oacc_hll_to_host_scalar(a%irn) - call i_oacc_hll_to_host_scalar(a%idiag) - call i_oacc_hll_to_host_scalar(a%hkoffs) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) + call acc_update_self(a%hkoffs) else if (a%is_host()) then - call d_oacc_hll_to_dev(a%val) - call i_oacc_hll_to_dev(a%ja) - call i_oacc_hll_to_dev_scalar(a%irn) - call i_oacc_hll_to_dev_scalar(a%idiag) - call i_oacc_hll_to_dev_scalar(a%hkoffs) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) + call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine d_oacc_hll_sync - subroutine d_oacc_hll_to_host(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine d_oacc_hll_to_host - - subroutine d_oacc_hll_to_dev(v) - implicit none - real(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine d_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host - - subroutine i_oacc_hll_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host_scalar - - subroutine i_oacc_hll_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev_scalar - - end module psb_d_oacc_hll_mat_mod diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 9ecbccb4..c7804bc1 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -59,7 +59,7 @@ module psb_d_oacc_vect_mod procedure, pass(x) :: asum => d_oacc_asum procedure, pass(x) :: absval1 => d_oacc_absval1 procedure, pass(x) :: absval2 => d_oacc_absval2 - + final :: d_oacc_final_vect_free end type psb_d_vect_oacc interface @@ -164,21 +164,25 @@ contains implicit none class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res - real(psb_dpk_) :: mx + real(psb_dpk_) :: res integer(psb_ipk_) :: info if (x%is_host()) call x%sync() - mx = d_oacc_amax(n,x) - res = d_inner_oacc_nrm2(n, mx, x%v) +!!$ write(0,*)'oacc_nrm2' + res = d_inner_oacc_nrm2(n, x%v) contains - function d_inner_oacc_nrm2(n, mx,x) result(res) + function d_inner_oacc_nrm2(n, x) result(res) integer(psb_ipk_) :: n real(psb_dpk_) :: x(:) - real(psb_dpk_) :: mx, res - real(psb_dpk_) :: sum + real(psb_dpk_) :: res + real(psb_dpk_) :: sum, mx integer(psb_ipk_) :: i - sum = 0.0 + mx = dzero + !$acc parallel loop reduction(max:mx) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + sum = dzero !$acc parallel loop reduction(+:sum) do i = 1, n sum = sum + abs(x(i)/mx)**2 @@ -203,7 +207,7 @@ contains real(psb_dpk_) :: res real(psb_dpk_) :: max_val integer(psb_ipk_) :: i - max_val = -huge(0.0) + max_val = dzero !$acc parallel loop reduction(max:max_val) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) @@ -228,7 +232,7 @@ contains real(psb_dpk_) :: x(:) real(psb_dpk_) :: res integer(psb_ipk_) :: i - res = 0.0 + res = dzero !$acc parallel loop reduction(+:res) do i = 1, n res = res + abs(x(i)) @@ -271,92 +275,6 @@ contains call z%set_host() end subroutine d_oacc_mlt_a_2 - -!!$ subroutine d_oacc_mlt_v(x, y, info) -!!$ implicit none -!!$ class(psb_d_base_vect_type), intent(inout) :: x -!!$ class(psb_d_vect_oacc), intent(inout) :: y -!!$ integer(psb_ipk_), intent(out) :: info -!!$ -!!$ integer(psb_ipk_) :: i, n -!!$ -!!$ info = 0 -!!$ n = min(x%get_nrows(), y%get_nrows()) -!!$ select type(xx => x) -!!$ type is (psb_d_base_vect_type) -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ end select -!!$ end subroutine d_oacc_mlt_v -!!$ -!!$ subroutine d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) -!!$ use psi_serial_mod -!!$ use psb_string_mod -!!$ implicit none -!!$ real(psb_dpk_), intent(in) :: alpha, beta -!!$ class(psb_d_base_vect_type), intent(inout) :: x -!!$ class(psb_d_base_vect_type), intent(inout) :: y -!!$ class(psb_d_vect_oacc), intent(inout) :: z -!!$ integer(psb_ipk_), intent(out) :: info -!!$ character(len=1), intent(in), optional :: conjgx, conjgy -!!$ integer(psb_ipk_) :: i, n -!!$ logical :: conjgx_, conjgy_ -!!$ -!!$ conjgx_ = .false. -!!$ conjgy_ = .false. -!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') -!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') -!!$ -!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) -!!$ -!!$ info = 0 -!!$ select type(xx => x) -!!$ class is (psb_d_vect_oacc) -!!$ select type (yy => y) -!!$ class is (psb_d_vect_oacc) -!!$ if (xx%is_host()) call xx%sync() -!!$ if (yy%is_host()) call yy%sync() -!!$ if ((beta /= dzero) .and. (z%is_host())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_dev() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ class default -!!$ if (x%is_dev()) call x%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= dzero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ end subroutine d_oacc_mlt_v_2 - - subroutine d_oacc_axpby_v(m, alpha, x, beta, y, info) !use psi_serial_mod implicit none @@ -414,7 +332,7 @@ contains integer(psb_ipk_) :: i if ((beta /= dzero) .and. (y%is_dev())) call y%sync() - !$acc parallel loop + do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) end do @@ -432,44 +350,44 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - write(0,*)'upd_xyz' + info = psb_success_ gpu_done = .false. select type(xx => x) class is (psb_d_vect_oacc) - select type(yy => y) + select type(yy => y) + class is (psb_d_vect_oacc) + select type(zz => z) class is (psb_d_vect_oacc) - select type(zz => z) - class is (psb_d_vect_oacc) - if ((beta /= dzero) .and. yy%is_host()) call yy%sync() - if ((delta /= dzero) .and. zz%is_host()) call zz%sync() - if (xx%is_host()) call xx%sync() - nx = size(xx%v) - ny = size(yy%v) - nz = size(zz%v) - if ((nx < m) .or. (ny < m) .or. (nz < m)) then - info = psb_err_internal_error_ - else - !$acc parallel loop - do i = 1, m - yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) - zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) - end do - end if - call yy%set_dev() - call zz%set_dev() - gpu_done = .true. - end select + if ((beta /= dzero) .and. yy%is_host()) call yy%sync() + if ((delta /= dzero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. end select + end select end select if (.not. gpu_done) then - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - if (z%is_host()) call z%sync() - call y%axpby(m, alpha, x, beta, info) - call z%axpby(m, gamma, y, delta, info) + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) end if end subroutine d_oacc_upd_xyz @@ -676,7 +594,7 @@ contains if (x%is_dev()) call x%sync() call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() - !$acc update device(x%v) + end subroutine d_oacc_ins_a @@ -687,16 +605,14 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call x%all(n, info) if (info /= 0) then call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) - + call x%sync_space() + end subroutine d_oacc_bld_mn @@ -707,6 +623,7 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call psb_realloc(size(this), x%v, info) if (info /= 0) then info = psb_err_alloc_request_ @@ -714,13 +631,9 @@ contains i_err=(/size(this), izero, izero, izero, izero/)) return end if - x%v(:) = this(:) call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) + call x%sync_space() end subroutine d_oacc_bld_x @@ -848,54 +761,21 @@ contains end function d_oacc_dot_a - ! subroutine d_oacc_set_vect(x,y) - ! implicit none - ! class(psb_d_vect_oacc), intent(inout) :: x - ! real(psb_dpk_), intent(in) :: y(:) - ! integer(psb_ipk_) :: info - - ! if (size(x%v) /= size(y)) then - ! call x%free(info) - ! call x%all(size(y),info) - ! end if - ! x%v(:) = y(:) - ! call x%set_host() - ! end subroutine d_oacc_set_vect - - subroutine d_oacc_to_dev(v) - implicit none - real(psb_dpk_) :: v(:) - !$acc update device(v) - end subroutine d_oacc_to_dev - - subroutine d_oacc_to_host(v) - implicit none - real(psb_dpk_) :: v(:) - !$acc update self(v) - end subroutine d_oacc_to_host subroutine d_oacc_sync_space(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x - if (allocated(x%v)) then - if (.not.acc_is_present(x%v)) call d_oacc_create_dev(x%v) - end if - contains - subroutine d_oacc_create_dev(v) - implicit none - real(psb_dpk_) :: v(:) - !$acc enter data copyin(v) - end subroutine d_oacc_create_dev + if (allocated(x%v)) call acc_create(x%v) end subroutine d_oacc_sync_space subroutine d_oacc_sync(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call d_oacc_to_host(x%v) + call acc_update_self(x%v) end if if (x%is_host()) then - call d_oacc_to_dev(x%v) + call acc_update_device(x%v) end if call x%set_sync() end subroutine d_oacc_sync @@ -954,33 +834,36 @@ contains integer(psb_ipk_), intent(out) :: info call psb_realloc(n, x%v, info) - if (info == 0) then - call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data create(x%v) - call x%sync_space() - end if if (info /= 0) then info = psb_err_alloc_request_ call psb_errpush(info, 'd_oacc_all', & i_err=(/n, n, n, n, n/)) end if + call x%set_host() + call x%sync_space() end subroutine d_oacc_vect_all + subroutine d_oacc_final_vect_free(x) + implicit none + type(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine d_oacc_final_vect_free + subroutine d_oacc_vect_free(x, info) implicit none class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) end if - end subroutine d_oacc_vect_free function d_oacc_get_size(x) result(res) diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index 3dbc48f1..8c813134 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -42,7 +42,7 @@ module psb_i_oacc_vect_mod procedure, pass(x) :: get_size => i_oacc_get_size - + final :: i_oacc_final_vect_free end type psb_i_vect_oacc @@ -252,7 +252,7 @@ contains if (x%is_dev()) call x%sync() call x%psb_i_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() - !$acc update device(x%v) + end subroutine i_oacc_ins_a @@ -263,16 +263,14 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call x%all(n, info) if (info /= 0) then call psb_errpush(info, 'i_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) - + call x%sync_space() + end subroutine i_oacc_bld_mn @@ -283,6 +281,7 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call psb_realloc(size(this), x%v, info) if (info /= 0) then info = psb_err_alloc_request_ @@ -290,13 +289,9 @@ contains i_err=(/size(this), izero, izero, izero, izero/)) return end if - x%v(:) = this(:) call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) + call x%sync_space() end subroutine i_oacc_bld_x @@ -370,54 +365,21 @@ contains end function i_oacc_get_fmt - ! subroutine i_oacc_set_vect(x,y) - ! implicit none - ! class(psb_i_vect_oacc), intent(inout) :: x - ! integer(psb_ipk_), intent(in) :: y(:) - ! integer(psb_ipk_) :: info - - ! if (size(x%v) /= size(y)) then - ! call x%free(info) - ! call x%all(size(y),info) - ! end if - ! x%v(:) = y(:) - ! call x%set_host() - ! end subroutine i_oacc_set_vect - - subroutine i_oacc_to_dev(v) - implicit none - integer(psb_ipk_) :: v(:) - !$acc update device(v) - end subroutine i_oacc_to_dev - - subroutine i_oacc_to_host(v) - implicit none - integer(psb_ipk_) :: v(:) - !$acc update self(v) - end subroutine i_oacc_to_host subroutine i_oacc_sync_space(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x - if (allocated(x%v)) then - if (.not.acc_is_present(x%v)) call i_oacc_create_dev(x%v) - end if - contains - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev + if (allocated(x%v)) call acc_create(x%v) end subroutine i_oacc_sync_space subroutine i_oacc_sync(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call i_oacc_to_host(x%v) + call acc_update_self(x%v) end if if (x%is_host()) then - call i_oacc_to_dev(x%v) + call acc_update_device(x%v) end if call x%set_sync() end subroutine i_oacc_sync @@ -476,33 +438,36 @@ contains integer(psb_ipk_), intent(out) :: info call psb_realloc(n, x%v, info) - if (info == 0) then - call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data create(x%v) - call x%sync_space() - end if if (info /= 0) then info = psb_err_alloc_request_ call psb_errpush(info, 'i_oacc_all', & i_err=(/n, n, n, n, n/)) end if + call x%set_host() + call x%sync_space() end subroutine i_oacc_vect_all + subroutine i_oacc_final_vect_free(x) + implicit none + type(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine i_oacc_final_vect_free + subroutine i_oacc_vect_free(x, info) implicit none class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) end if - end subroutine i_oacc_vect_free function i_oacc_get_size(x) result(res) diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 index cdf28366..9ff100bc 100644 --- a/openacc/psb_l_oacc_vect_mod.F90 +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -44,7 +44,7 @@ module psb_l_oacc_vect_mod procedure, pass(x) :: get_size => l_oacc_get_size - + final :: l_oacc_final_vect_free end type psb_l_vect_oacc @@ -254,7 +254,7 @@ contains if (x%is_dev()) call x%sync() call x%psb_l_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() - !$acc update device(x%v) + end subroutine l_oacc_ins_a @@ -265,16 +265,14 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call x%all(n, info) if (info /= 0) then call psb_errpush(info, 'l_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) - + call x%sync_space() + end subroutine l_oacc_bld_mn @@ -285,6 +283,7 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call psb_realloc(size(this), x%v, info) if (info /= 0) then info = psb_err_alloc_request_ @@ -292,13 +291,9 @@ contains i_err=(/size(this), izero, izero, izero, izero/)) return end if - x%v(:) = this(:) call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) + call x%sync_space() end subroutine l_oacc_bld_x @@ -372,54 +367,21 @@ contains end function l_oacc_get_fmt - ! subroutine l_oacc_set_vect(x,y) - ! implicit none - ! class(psb_l_vect_oacc), intent(inout) :: x - ! integer(psb_lpk_), intent(in) :: y(:) - ! integer(psb_ipk_) :: info - - ! if (size(x%v) /= size(y)) then - ! call x%free(info) - ! call x%all(size(y),info) - ! end if - ! x%v(:) = y(:) - ! call x%set_host() - ! end subroutine l_oacc_set_vect - - subroutine l_oacc_to_dev(v) - implicit none - integer(psb_lpk_) :: v(:) - !$acc update device(v) - end subroutine l_oacc_to_dev - - subroutine l_oacc_to_host(v) - implicit none - integer(psb_lpk_) :: v(:) - !$acc update self(v) - end subroutine l_oacc_to_host subroutine l_oacc_sync_space(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x - if (allocated(x%v)) then - if (.not.acc_is_present(x%v)) call l_oacc_create_dev(x%v) - end if - contains - subroutine l_oacc_create_dev(v) - implicit none - integer(psb_lpk_) :: v(:) - !$acc enter data copyin(v) - end subroutine l_oacc_create_dev + if (allocated(x%v)) call acc_create(x%v) end subroutine l_oacc_sync_space subroutine l_oacc_sync(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call l_oacc_to_host(x%v) + call acc_update_self(x%v) end if if (x%is_host()) then - call l_oacc_to_dev(x%v) + call acc_update_device(x%v) end if call x%set_sync() end subroutine l_oacc_sync @@ -478,33 +440,36 @@ contains integer(psb_ipk_), intent(out) :: info call psb_realloc(n, x%v, info) - if (info == 0) then - call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data create(x%v) - call x%sync_space() - end if if (info /= 0) then info = psb_err_alloc_request_ call psb_errpush(info, 'l_oacc_all', & i_err=(/n, n, n, n, n/)) end if + call x%set_host() + call x%sync_space() end subroutine l_oacc_vect_all + subroutine l_oacc_final_vect_free(x) + implicit none + type(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine l_oacc_final_vect_free + subroutine l_oacc_vect_free(x, info) implicit none class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) end if - end subroutine l_oacc_vect_free function l_oacc_get_size(x) result(res) diff --git a/openacc/psb_s_oacc_csr_mat_mod.F90 b/openacc/psb_s_oacc_csr_mat_mod.F90 index 89b10d08..b577daac 100644 --- a/openacc/psb_s_oacc_csr_mat_mod.F90 +++ b/openacc/psb_s_oacc_csr_mat_mod.F90 @@ -1,6 +1,7 @@ module psb_s_oacc_csr_mat_mod use iso_c_binding + use openacc use psb_s_mat_mod use psb_s_oacc_vect_mod !use oaccsparse_mod @@ -35,6 +36,7 @@ module psb_s_oacc_csr_mat_mod procedure, pass(a) :: set_host => s_oacc_csr_set_host procedure, pass(a) :: set_sync => s_oacc_csr_set_sync procedure, pass(a) :: set_dev => s_oacc_csr_set_dev + procedure, pass(a) :: free_space => s_oacc_csr_free_space procedure, pass(a) :: sync_space => s_oacc_csr_sync_space procedure, pass(a) :: sync => s_oacc_csr_sync end type psb_s_oacc_csr_sparse_mat @@ -154,22 +156,26 @@ module psb_s_oacc_csr_mat_mod contains - subroutine s_oacc_csr_free(a) + subroutine s_oacc_csr_free_space(a) use psb_base_mod implicit none class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irp)) call acc_delete_finalize(a%irp) + + return + end subroutine s_oacc_csr_free_space + + subroutine s_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_s_csr_sparse_mat%free() return @@ -193,7 +199,7 @@ contains function s_oacc_csr_get_fmt() result(res) implicit none character(len=5) :: res - res = 'CSR_oacc' + res = 'CSROA' end function s_oacc_csr_get_fmt subroutine s_oacc_csr_all(m, n, nz, a, info) @@ -202,19 +208,8 @@ contains class(psb_s_oacc_csr_sparse_mat), intent(out) :: a integer(psb_ipk_), intent(out) :: info - info = 0 - if (allocated(a%val)) then - !$acc exit data delete(a%val) finalize - deallocate(a%val, stat=info) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) finalize - deallocate(a%ja, stat=info) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) finalize - deallocate(a%irp, stat=info) - end if + info = 0 + call a%free() call a%set_nrows(m) call a%set_ncols(n) @@ -274,26 +269,9 @@ contains subroutine s_oacc_csr_sync_space(a) implicit none class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call s_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irp)) then - call i_oacc_create_dev(a%irp) - end if - contains - subroutine s_oacc_create_dev(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine s_oacc_create_dev - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irp)) call acc_create(a%irp) end subroutine s_oacc_csr_sync_space subroutine s_oacc_csr_sync(a) @@ -304,40 +282,16 @@ contains tmpa => a if (a%is_dev()) then - call s_oacc_csr_to_host(a%val) - call i_oacc_csr_to_host(a%ja) - call i_oacc_csr_to_host(a%irp) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irp) else if (a%is_host()) then - call s_oacc_csr_to_dev(a%val) - call i_oacc_csr_to_dev(a%ja) - call i_oacc_csr_to_dev(a%irp) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine s_oacc_csr_sync - subroutine s_oacc_csr_to_dev(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine s_oacc_csr_to_dev - - subroutine s_oacc_csr_to_host(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine s_oacc_csr_to_host - - subroutine i_oacc_csr_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_csr_to_dev - - subroutine i_oacc_csr_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_csr_to_host - end module psb_s_oacc_csr_mat_mod diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 index 9924ba77..793bf353 100644 --- a/openacc/psb_s_oacc_ell_mat_mod.F90 +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_s_oacc_ell_mat_mod use iso_c_binding + use openacc use psb_s_mat_mod use psb_s_ell_mat_mod use psb_s_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_s_oacc_ell_mat_mod procedure, pass(a) :: set_dev => s_oacc_ell_set_dev procedure, pass(a) :: sync_space => s_oacc_ell_sync_space procedure, pass(a) :: sync => s_oacc_ell_sync + procedure, pass(a) :: free_space => s_oacc_ell_free_space procedure, pass(a) :: free => s_oacc_ell_free procedure, pass(a) :: vect_mv => psb_s_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_s_oacc_ell_inner_vect_sv @@ -152,31 +154,32 @@ module psb_s_oacc_ell_mat_mod contains - subroutine s_oacc_ell_free(a) + subroutine s_oacc_ell_free_space(a) use psb_base_mod implicit none class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + + return + end subroutine s_oacc_ell_free_space + + subroutine s_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_s_ell_sparse_mat%free() return end subroutine s_oacc_ell_free - function s_oacc_ell_sizeof(a) result(res) implicit none class(psb_s_oacc_ell_sparse_mat), intent(in) :: a @@ -196,41 +199,12 @@ contains implicit none class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call s_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - - contains - subroutine s_oacc_create_dev(v) - implicit none - real(psb_spk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine s_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) end subroutine s_oacc_ell_sync_space - - function s_oacc_ell_is_host(a) result(res) implicit none class(psb_s_oacc_ell_sparse_mat), intent(in) :: a @@ -279,7 +253,7 @@ contains function s_oacc_ell_get_fmt() result(res) implicit none character(len=5) :: res - res = 'ELL_oacc' + res = 'ELLOA' end function s_oacc_ell_get_fmt subroutine s_oacc_ell_sync(a) @@ -290,64 +264,17 @@ contains tmpa => a if (a%is_dev()) then - call s_oacc_ell_to_host(a%val) - call i_oacc_ell_to_host(a%ja) - call i_oacc_ell_to_host_scalar(a%irn) - call i_oacc_ell_to_host_scalar(a%idiag) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) else if (a%is_host()) then - call s_oacc_ell_to_dev(a%val) - call i_oacc_ell_to_dev(a%ja) - call i_oacc_ell_to_dev_scalar(a%irn) - call i_oacc_ell_to_dev_scalar(a%idiag) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine s_oacc_ell_sync - subroutine s_oacc_ell_to_dev_scalar(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine s_oacc_ell_to_dev_scalar - - subroutine s_oacc_ell_to_dev(v) - implicit none - real(psb_spk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine s_oacc_ell_to_dev - - subroutine s_oacc_ell_to_host(v) - implicit none - real(psb_spk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine s_oacc_ell_to_host - - subroutine s_oacc_ell_to_host_scalar(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine s_oacc_ell_to_host_scalar - - subroutine i_oacc_ell_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev - - subroutine i_oacc_ell_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev_scalar - - subroutine i_oacc_ell_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host - - subroutine i_oacc_ell_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host_scalar end module psb_s_oacc_ell_mat_mod diff --git a/openacc/psb_s_oacc_hll_mat_mod.F90 b/openacc/psb_s_oacc_hll_mat_mod.F90 index bf8949a1..508591e4 100644 --- a/openacc/psb_s_oacc_hll_mat_mod.F90 +++ b/openacc/psb_s_oacc_hll_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_s_oacc_hll_mat_mod use iso_c_binding + use openacc use psb_s_mat_mod use psb_s_hll_mat_mod use psb_s_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_s_oacc_hll_mat_mod procedure, pass(a) :: set_dev => s_oacc_hll_set_dev procedure, pass(a) :: sync_space => s_oacc_hll_sync_space procedure, pass(a) :: sync => s_oacc_hll_sync + procedure, pass(a) :: free_space => s_oacc_hll_free_space procedure, pass(a) :: free => s_oacc_hll_free procedure, pass(a) :: vect_mv => psb_s_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_s_oacc_hll_inner_vect_sv @@ -152,28 +154,28 @@ module psb_s_oacc_hll_mat_mod contains - subroutine s_oacc_hll_free(a) + subroutine s_oacc_hll_free_space(a) use psb_base_mod implicit none class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if - if (allocated(a%hkoffs)) then - !$acc exit data delete(a%hkoffs) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) + + return + end subroutine s_oacc_hll_free_space + + subroutine s_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_s_hll_sparse_mat%free() return @@ -244,48 +246,18 @@ contains function s_oacc_hll_get_fmt() result(res) implicit none character(len=5) :: res - res = 'HLL_oacc' + res = 'HLLOA' end function s_oacc_hll_get_fmt subroutine s_oacc_hll_sync_space(a) implicit none class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call s_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - if (allocated(a%hkoffs)) then - call i_oacc_create_dev_scalar(a%hkoffs) - end if - - contains - subroutine s_oacc_create_dev(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine s_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar - + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) + if (allocated(a%hkoffs)) call acc_create(a%hkoffs) end subroutine s_oacc_hll_sync_space @@ -297,56 +269,19 @@ contains tmpa => a if (a%is_dev()) then - call s_oacc_hll_to_host(a%val) - call i_oacc_hll_to_host(a%ja) - call i_oacc_hll_to_host_scalar(a%irn) - call i_oacc_hll_to_host_scalar(a%idiag) - call i_oacc_hll_to_host_scalar(a%hkoffs) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) + call acc_update_self(a%hkoffs) else if (a%is_host()) then - call s_oacc_hll_to_dev(a%val) - call i_oacc_hll_to_dev(a%ja) - call i_oacc_hll_to_dev_scalar(a%irn) - call i_oacc_hll_to_dev_scalar(a%idiag) - call i_oacc_hll_to_dev_scalar(a%hkoffs) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) + call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine s_oacc_hll_sync - subroutine s_oacc_hll_to_host(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine s_oacc_hll_to_host - - subroutine s_oacc_hll_to_dev(v) - implicit none - real(psb_spk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine s_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host - - subroutine i_oacc_hll_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host_scalar - - subroutine i_oacc_hll_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev_scalar - - end module psb_s_oacc_hll_mat_mod diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index c3b31af7..7ce4292f 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -59,7 +59,7 @@ module psb_s_oacc_vect_mod procedure, pass(x) :: asum => s_oacc_asum procedure, pass(x) :: absval1 => s_oacc_absval1 procedure, pass(x) :: absval2 => s_oacc_absval2 - + final :: s_oacc_final_vect_free end type psb_s_vect_oacc interface @@ -164,21 +164,25 @@ contains implicit none class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_spk_) :: res - real(psb_spk_) :: mx + real(psb_spk_) :: res integer(psb_ipk_) :: info if (x%is_host()) call x%sync() - mx = s_oacc_amax(n,x) - res = s_inner_oacc_nrm2(n, mx, x%v) +!!$ write(0,*)'oacc_nrm2' + res = s_inner_oacc_nrm2(n, x%v) contains - function s_inner_oacc_nrm2(n, mx,x) result(res) + function s_inner_oacc_nrm2(n, x) result(res) integer(psb_ipk_) :: n real(psb_spk_) :: x(:) - real(psb_spk_) :: mx, res - real(psb_spk_) :: sum + real(psb_spk_) :: res + real(psb_spk_) :: sum, mx integer(psb_ipk_) :: i - sum = 0.0 + mx = szero + !$acc parallel loop reduction(max:mx) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + sum = szero !$acc parallel loop reduction(+:sum) do i = 1, n sum = sum + abs(x(i)/mx)**2 @@ -203,7 +207,7 @@ contains real(psb_spk_) :: res real(psb_spk_) :: max_val integer(psb_ipk_) :: i - max_val = -huge(0.0) + max_val = szero !$acc parallel loop reduction(max:max_val) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) @@ -228,7 +232,7 @@ contains real(psb_spk_) :: x(:) real(psb_spk_) :: res integer(psb_ipk_) :: i - res = 0.0 + res = szero !$acc parallel loop reduction(+:res) do i = 1, n res = res + abs(x(i)) @@ -271,92 +275,6 @@ contains call z%set_host() end subroutine s_oacc_mlt_a_2 - -!!$ subroutine s_oacc_mlt_v(x, y, info) -!!$ implicit none -!!$ class(psb_s_base_vect_type), intent(inout) :: x -!!$ class(psb_s_vect_oacc), intent(inout) :: y -!!$ integer(psb_ipk_), intent(out) :: info -!!$ -!!$ integer(psb_ipk_) :: i, n -!!$ -!!$ info = 0 -!!$ n = min(x%get_nrows(), y%get_nrows()) -!!$ select type(xx => x) -!!$ type is (psb_s_base_vect_type) -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ end select -!!$ end subroutine s_oacc_mlt_v -!!$ -!!$ subroutine s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) -!!$ use psi_serial_mod -!!$ use psb_string_mod -!!$ implicit none -!!$ real(psb_spk_), intent(in) :: alpha, beta -!!$ class(psb_s_base_vect_type), intent(inout) :: x -!!$ class(psb_s_base_vect_type), intent(inout) :: y -!!$ class(psb_s_vect_oacc), intent(inout) :: z -!!$ integer(psb_ipk_), intent(out) :: info -!!$ character(len=1), intent(in), optional :: conjgx, conjgy -!!$ integer(psb_ipk_) :: i, n -!!$ logical :: conjgx_, conjgy_ -!!$ -!!$ conjgx_ = .false. -!!$ conjgy_ = .false. -!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') -!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') -!!$ -!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) -!!$ -!!$ info = 0 -!!$ select type(xx => x) -!!$ class is (psb_s_vect_oacc) -!!$ select type (yy => y) -!!$ class is (psb_s_vect_oacc) -!!$ if (xx%is_host()) call xx%sync() -!!$ if (yy%is_host()) call yy%sync() -!!$ if ((beta /= szero) .and. (z%is_host())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_dev() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ class default -!!$ if (x%is_dev()) call x%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= szero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ end subroutine s_oacc_mlt_v_2 - - subroutine s_oacc_axpby_v(m, alpha, x, beta, y, info) !use psi_serial_mod implicit none @@ -414,7 +332,7 @@ contains integer(psb_ipk_) :: i if ((beta /= szero) .and. (y%is_dev())) call y%sync() - !$acc parallel loop + do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) end do @@ -432,44 +350,44 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - write(0,*)'upd_xyz' + info = psb_success_ gpu_done = .false. select type(xx => x) class is (psb_s_vect_oacc) - select type(yy => y) + select type(yy => y) + class is (psb_s_vect_oacc) + select type(zz => z) class is (psb_s_vect_oacc) - select type(zz => z) - class is (psb_s_vect_oacc) - if ((beta /= szero) .and. yy%is_host()) call yy%sync() - if ((delta /= szero) .and. zz%is_host()) call zz%sync() - if (xx%is_host()) call xx%sync() - nx = size(xx%v) - ny = size(yy%v) - nz = size(zz%v) - if ((nx < m) .or. (ny < m) .or. (nz < m)) then - info = psb_err_internal_error_ - else - !$acc parallel loop - do i = 1, m - yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) - zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) - end do - end if - call yy%set_dev() - call zz%set_dev() - gpu_done = .true. - end select + if ((beta /= szero) .and. yy%is_host()) call yy%sync() + if ((delta /= szero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. end select + end select end select if (.not. gpu_done) then - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - if (z%is_host()) call z%sync() - call y%axpby(m, alpha, x, beta, info) - call z%axpby(m, gamma, y, delta, info) + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) end if end subroutine s_oacc_upd_xyz @@ -676,7 +594,7 @@ contains if (x%is_dev()) call x%sync() call x%psb_s_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() - !$acc update device(x%v) + end subroutine s_oacc_ins_a @@ -687,16 +605,14 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call x%all(n, info) if (info /= 0) then call psb_errpush(info, 's_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) - + call x%sync_space() + end subroutine s_oacc_bld_mn @@ -707,6 +623,7 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call psb_realloc(size(this), x%v, info) if (info /= 0) then info = psb_err_alloc_request_ @@ -714,13 +631,9 @@ contains i_err=(/size(this), izero, izero, izero, izero/)) return end if - x%v(:) = this(:) call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) + call x%sync_space() end subroutine s_oacc_bld_x @@ -848,54 +761,21 @@ contains end function s_oacc_dot_a - ! subroutine s_oacc_set_vect(x,y) - ! implicit none - ! class(psb_s_vect_oacc), intent(inout) :: x - ! real(psb_spk_), intent(in) :: y(:) - ! integer(psb_ipk_) :: info - - ! if (size(x%v) /= size(y)) then - ! call x%free(info) - ! call x%all(size(y),info) - ! end if - ! x%v(:) = y(:) - ! call x%set_host() - ! end subroutine s_oacc_set_vect - - subroutine s_oacc_to_dev(v) - implicit none - real(psb_spk_) :: v(:) - !$acc update device(v) - end subroutine s_oacc_to_dev - - subroutine s_oacc_to_host(v) - implicit none - real(psb_spk_) :: v(:) - !$acc update self(v) - end subroutine s_oacc_to_host subroutine s_oacc_sync_space(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x - if (allocated(x%v)) then - if (.not.acc_is_present(x%v)) call s_oacc_create_dev(x%v) - end if - contains - subroutine s_oacc_create_dev(v) - implicit none - real(psb_spk_) :: v(:) - !$acc enter data copyin(v) - end subroutine s_oacc_create_dev + if (allocated(x%v)) call acc_create(x%v) end subroutine s_oacc_sync_space subroutine s_oacc_sync(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call s_oacc_to_host(x%v) + call acc_update_self(x%v) end if if (x%is_host()) then - call s_oacc_to_dev(x%v) + call acc_update_device(x%v) end if call x%set_sync() end subroutine s_oacc_sync @@ -954,33 +834,36 @@ contains integer(psb_ipk_), intent(out) :: info call psb_realloc(n, x%v, info) - if (info == 0) then - call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data create(x%v) - call x%sync_space() - end if if (info /= 0) then info = psb_err_alloc_request_ call psb_errpush(info, 's_oacc_all', & i_err=(/n, n, n, n, n/)) end if + call x%set_host() + call x%sync_space() end subroutine s_oacc_vect_all + subroutine s_oacc_final_vect_free(x) + implicit none + type(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine s_oacc_final_vect_free + subroutine s_oacc_vect_free(x, info) implicit none class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) end if - end subroutine s_oacc_vect_free function s_oacc_get_size(x) result(res) diff --git a/openacc/psb_z_oacc_csr_mat_mod.F90 b/openacc/psb_z_oacc_csr_mat_mod.F90 index 7842d96c..dbafb391 100644 --- a/openacc/psb_z_oacc_csr_mat_mod.F90 +++ b/openacc/psb_z_oacc_csr_mat_mod.F90 @@ -1,6 +1,7 @@ module psb_z_oacc_csr_mat_mod use iso_c_binding + use openacc use psb_z_mat_mod use psb_z_oacc_vect_mod !use oaccsparse_mod @@ -35,6 +36,7 @@ module psb_z_oacc_csr_mat_mod procedure, pass(a) :: set_host => z_oacc_csr_set_host procedure, pass(a) :: set_sync => z_oacc_csr_set_sync procedure, pass(a) :: set_dev => z_oacc_csr_set_dev + procedure, pass(a) :: free_space => z_oacc_csr_free_space procedure, pass(a) :: sync_space => z_oacc_csr_sync_space procedure, pass(a) :: sync => z_oacc_csr_sync end type psb_z_oacc_csr_sparse_mat @@ -154,22 +156,26 @@ module psb_z_oacc_csr_mat_mod contains - subroutine z_oacc_csr_free(a) + subroutine z_oacc_csr_free_space(a) use psb_base_mod implicit none class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irp)) call acc_delete_finalize(a%irp) + + return + end subroutine z_oacc_csr_free_space + + subroutine z_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_z_csr_sparse_mat%free() return @@ -193,7 +199,7 @@ contains function z_oacc_csr_get_fmt() result(res) implicit none character(len=5) :: res - res = 'CSR_oacc' + res = 'CSROA' end function z_oacc_csr_get_fmt subroutine z_oacc_csr_all(m, n, nz, a, info) @@ -202,19 +208,8 @@ contains class(psb_z_oacc_csr_sparse_mat), intent(out) :: a integer(psb_ipk_), intent(out) :: info - info = 0 - if (allocated(a%val)) then - !$acc exit data delete(a%val) finalize - deallocate(a%val, stat=info) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) finalize - deallocate(a%ja, stat=info) - end if - if (allocated(a%irp)) then - !$acc exit data delete(a%irp) finalize - deallocate(a%irp, stat=info) - end if + info = 0 + call a%free() call a%set_nrows(m) call a%set_ncols(n) @@ -274,26 +269,9 @@ contains subroutine z_oacc_csr_sync_space(a) implicit none class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call z_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irp)) then - call i_oacc_create_dev(a%irp) - end if - contains - subroutine z_oacc_create_dev(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine z_oacc_create_dev - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irp)) call acc_create(a%irp) end subroutine z_oacc_csr_sync_space subroutine z_oacc_csr_sync(a) @@ -304,40 +282,16 @@ contains tmpa => a if (a%is_dev()) then - call z_oacc_csr_to_host(a%val) - call i_oacc_csr_to_host(a%ja) - call i_oacc_csr_to_host(a%irp) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irp) else if (a%is_host()) then - call z_oacc_csr_to_dev(a%val) - call i_oacc_csr_to_dev(a%ja) - call i_oacc_csr_to_dev(a%irp) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine z_oacc_csr_sync - subroutine z_oacc_csr_to_dev(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine z_oacc_csr_to_dev - - subroutine z_oacc_csr_to_host(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine z_oacc_csr_to_host - - subroutine i_oacc_csr_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_csr_to_dev - - subroutine i_oacc_csr_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_csr_to_host - end module psb_z_oacc_csr_mat_mod diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 index eb8884d6..76b0182d 100644 --- a/openacc/psb_z_oacc_ell_mat_mod.F90 +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_z_oacc_ell_mat_mod use iso_c_binding + use openacc use psb_z_mat_mod use psb_z_ell_mat_mod use psb_z_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_z_oacc_ell_mat_mod procedure, pass(a) :: set_dev => z_oacc_ell_set_dev procedure, pass(a) :: sync_space => z_oacc_ell_sync_space procedure, pass(a) :: sync => z_oacc_ell_sync + procedure, pass(a) :: free_space => z_oacc_ell_free_space procedure, pass(a) :: free => z_oacc_ell_free procedure, pass(a) :: vect_mv => psb_z_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_z_oacc_ell_inner_vect_sv @@ -152,31 +154,32 @@ module psb_z_oacc_ell_mat_mod contains - subroutine z_oacc_ell_free(a) + subroutine z_oacc_ell_free_space(a) use psb_base_mod implicit none class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + + return + end subroutine z_oacc_ell_free_space + + subroutine z_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_z_ell_sparse_mat%free() return end subroutine z_oacc_ell_free - function z_oacc_ell_sizeof(a) result(res) implicit none class(psb_z_oacc_ell_sparse_mat), intent(in) :: a @@ -196,41 +199,12 @@ contains implicit none class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call z_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - - contains - subroutine z_oacc_create_dev(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine z_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) end subroutine z_oacc_ell_sync_space - - function z_oacc_ell_is_host(a) result(res) implicit none class(psb_z_oacc_ell_sparse_mat), intent(in) :: a @@ -279,7 +253,7 @@ contains function z_oacc_ell_get_fmt() result(res) implicit none character(len=5) :: res - res = 'ELL_oacc' + res = 'ELLOA' end function z_oacc_ell_get_fmt subroutine z_oacc_ell_sync(a) @@ -290,64 +264,17 @@ contains tmpa => a if (a%is_dev()) then - call z_oacc_ell_to_host(a%val) - call i_oacc_ell_to_host(a%ja) - call i_oacc_ell_to_host_scalar(a%irn) - call i_oacc_ell_to_host_scalar(a%idiag) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) else if (a%is_host()) then - call z_oacc_ell_to_dev(a%val) - call i_oacc_ell_to_dev(a%ja) - call i_oacc_ell_to_dev_scalar(a%irn) - call i_oacc_ell_to_dev_scalar(a%idiag) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine z_oacc_ell_sync - subroutine z_oacc_ell_to_dev_scalar(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine z_oacc_ell_to_dev_scalar - - subroutine z_oacc_ell_to_dev(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine z_oacc_ell_to_dev - - subroutine z_oacc_ell_to_host(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine z_oacc_ell_to_host - - subroutine z_oacc_ell_to_host_scalar(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine z_oacc_ell_to_host_scalar - - subroutine i_oacc_ell_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev - - subroutine i_oacc_ell_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_ell_to_dev_scalar - - subroutine i_oacc_ell_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:,:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host - - subroutine i_oacc_ell_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_ell_to_host_scalar end module psb_z_oacc_ell_mat_mod diff --git a/openacc/psb_z_oacc_hll_mat_mod.F90 b/openacc/psb_z_oacc_hll_mat_mod.F90 index e6a4929a..4a657fd1 100644 --- a/openacc/psb_z_oacc_hll_mat_mod.F90 +++ b/openacc/psb_z_oacc_hll_mat_mod.F90 @@ -1,5 +1,6 @@ module psb_z_oacc_hll_mat_mod use iso_c_binding + use openacc use psb_z_mat_mod use psb_z_hll_mat_mod use psb_z_oacc_vect_mod @@ -21,6 +22,7 @@ module psb_z_oacc_hll_mat_mod procedure, pass(a) :: set_dev => z_oacc_hll_set_dev procedure, pass(a) :: sync_space => z_oacc_hll_sync_space procedure, pass(a) :: sync => z_oacc_hll_sync + procedure, pass(a) :: free_space => z_oacc_hll_free_space procedure, pass(a) :: free => z_oacc_hll_free procedure, pass(a) :: vect_mv => psb_z_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_z_oacc_hll_inner_vect_sv @@ -152,28 +154,28 @@ module psb_z_oacc_hll_mat_mod contains - subroutine z_oacc_hll_free(a) + subroutine z_oacc_hll_free_space(a) use psb_base_mod implicit none class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) then - !$acc exit data delete(a%val) - end if - if (allocated(a%ja)) then - !$acc exit data delete(a%ja) - end if - if (allocated(a%irn)) then - !$acc exit data delete(a%irn) - end if - if (allocated(a%idiag)) then - !$acc exit data delete(a%idiag) - end if - if (allocated(a%hkoffs)) then - !$acc exit data delete(a%hkoffs) - end if + if (allocated(a%val)) call acc_delete_finalize(a%val) + if (allocated(a%ja)) call acc_delete_finalize(a%ja) + if (allocated(a%irn)) call acc_delete_finalize(a%irn) + if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) + if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) + + return + end subroutine z_oacc_hll_free_space + + subroutine z_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + call a%free_space() call a%psb_z_hll_sparse_mat%free() return @@ -244,48 +246,18 @@ contains function z_oacc_hll_get_fmt() result(res) implicit none character(len=5) :: res - res = 'HLL_oacc' + res = 'HLLOA' end function z_oacc_hll_get_fmt subroutine z_oacc_hll_sync_space(a) implicit none class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) then - call z_oacc_create_dev(a%val) - end if - if (allocated(a%ja)) then - call i_oacc_create_dev(a%ja) - end if - if (allocated(a%irn)) then - call i_oacc_create_dev_scalar(a%irn) - end if - if (allocated(a%idiag)) then - call i_oacc_create_dev_scalar(a%idiag) - end if - if (allocated(a%hkoffs)) then - call i_oacc_create_dev_scalar(a%hkoffs) - end if - - contains - subroutine z_oacc_create_dev(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine z_oacc_create_dev - - subroutine i_oacc_create_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev - - subroutine i_oacc_create_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc enter data copyin(v) - end subroutine i_oacc_create_dev_scalar - + if (allocated(a%val)) call acc_create(a%val) + if (allocated(a%ja)) call acc_create(a%ja) + if (allocated(a%irn)) call acc_create(a%irn) + if (allocated(a%idiag)) call acc_create(a%idiag) + if (allocated(a%hkoffs)) call acc_create(a%hkoffs) end subroutine z_oacc_hll_sync_space @@ -297,56 +269,19 @@ contains tmpa => a if (a%is_dev()) then - call z_oacc_hll_to_host(a%val) - call i_oacc_hll_to_host(a%ja) - call i_oacc_hll_to_host_scalar(a%irn) - call i_oacc_hll_to_host_scalar(a%idiag) - call i_oacc_hll_to_host_scalar(a%hkoffs) + call acc_update_self(a%val) + call acc_update_self(a%ja) + call acc_update_self(a%irn) + call acc_update_self(a%idiag) + call acc_update_self(a%hkoffs) else if (a%is_host()) then - call z_oacc_hll_to_dev(a%val) - call i_oacc_hll_to_dev(a%ja) - call i_oacc_hll_to_dev_scalar(a%irn) - call i_oacc_hll_to_dev_scalar(a%idiag) - call i_oacc_hll_to_dev_scalar(a%hkoffs) + call acc_update_device(a%val) + call acc_update_device(a%ja) + call acc_update_device(a%irn) + call acc_update_device(a%idiag) + call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine z_oacc_hll_sync - subroutine z_oacc_hll_to_host(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine z_oacc_hll_to_host - - subroutine z_oacc_hll_to_dev(v) - implicit none - complex(psb_dpk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine z_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host - - subroutine i_oacc_hll_to_dev(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev - - subroutine i_oacc_hll_to_host_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update self(v) - end subroutine i_oacc_hll_to_host_scalar - - subroutine i_oacc_hll_to_dev_scalar(v) - implicit none - integer(psb_ipk_), intent(in) :: v(:) - !$acc update device(v) - end subroutine i_oacc_hll_to_dev_scalar - - end module psb_z_oacc_hll_mat_mod diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index bab1a0a0..5d6f07be 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -59,7 +59,7 @@ module psb_z_oacc_vect_mod procedure, pass(x) :: asum => z_oacc_asum procedure, pass(x) :: absval1 => z_oacc_absval1 procedure, pass(x) :: absval2 => z_oacc_absval2 - + final :: z_oacc_final_vect_free end type psb_z_vect_oacc interface @@ -164,21 +164,25 @@ contains implicit none class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n - real(psb_dpk_) :: res - real(psb_dpk_) :: mx + real(psb_dpk_) :: res integer(psb_ipk_) :: info if (x%is_host()) call x%sync() - mx = z_oacc_amax(n,x) - res = z_inner_oacc_nrm2(n, mx, x%v) +!!$ write(0,*)'oacc_nrm2' + res = z_inner_oacc_nrm2(n, x%v) contains - function z_inner_oacc_nrm2(n, mx,x) result(res) + function z_inner_oacc_nrm2(n, x) result(res) integer(psb_ipk_) :: n complex(psb_dpk_) :: x(:) - real(psb_dpk_) :: mx, res - real(psb_dpk_) :: sum + real(psb_dpk_) :: res + real(psb_dpk_) :: sum, mx integer(psb_ipk_) :: i - sum = 0.0 + mx = dzero + !$acc parallel loop reduction(max:mx) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + sum = dzero !$acc parallel loop reduction(+:sum) do i = 1, n sum = sum + abs(x(i)/mx)**2 @@ -203,7 +207,7 @@ contains real(psb_dpk_) :: res real(psb_dpk_) :: max_val integer(psb_ipk_) :: i - max_val = -huge(0.0) + max_val = dzero !$acc parallel loop reduction(max:max_val) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) @@ -228,7 +232,7 @@ contains complex(psb_dpk_) :: x(:) real(psb_dpk_) :: res integer(psb_ipk_) :: i - res = 0.0 + res = dzero !$acc parallel loop reduction(+:res) do i = 1, n res = res + abs(x(i)) @@ -271,92 +275,6 @@ contains call z%set_host() end subroutine z_oacc_mlt_a_2 - -!!$ subroutine z_oacc_mlt_v(x, y, info) -!!$ implicit none -!!$ class(psb_z_base_vect_type), intent(inout) :: x -!!$ class(psb_z_vect_oacc), intent(inout) :: y -!!$ integer(psb_ipk_), intent(out) :: info -!!$ -!!$ integer(psb_ipk_) :: i, n -!!$ -!!$ info = 0 -!!$ n = min(x%get_nrows(), y%get_nrows()) -!!$ select type(xx => x) -!!$ type is (psb_z_base_vect_type) -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ y%v(i) = y%v(i) * xx%v(i) -!!$ end do -!!$ call y%set_host() -!!$ end select -!!$ end subroutine z_oacc_mlt_v -!!$ -!!$ subroutine z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) -!!$ use psi_serial_mod -!!$ use psb_string_mod -!!$ implicit none -!!$ complex(psb_dpk_), intent(in) :: alpha, beta -!!$ class(psb_z_base_vect_type), intent(inout) :: x -!!$ class(psb_z_base_vect_type), intent(inout) :: y -!!$ class(psb_z_vect_oacc), intent(inout) :: z -!!$ integer(psb_ipk_), intent(out) :: info -!!$ character(len=1), intent(in), optional :: conjgx, conjgy -!!$ integer(psb_ipk_) :: i, n -!!$ logical :: conjgx_, conjgy_ -!!$ -!!$ conjgx_ = .false. -!!$ conjgy_ = .false. -!!$ if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') -!!$ if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') -!!$ -!!$ n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) -!!$ -!!$ info = 0 -!!$ select type(xx => x) -!!$ class is (psb_z_vect_oacc) -!!$ select type (yy => y) -!!$ class is (psb_z_vect_oacc) -!!$ if (xx%is_host()) call xx%sync() -!!$ if (yy%is_host()) call yy%sync() -!!$ if ((beta /= zzero) .and. (z%is_host())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_dev() -!!$ class default -!!$ if (xx%is_dev()) call xx%sync() -!!$ if (yy%is_dev()) call yy%sync() -!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * xx%v(i) * yy%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ class default -!!$ if (x%is_dev()) call x%sync() -!!$ if (y%is_dev()) call y%sync() -!!$ if ((beta /= zzero) .and. (z%is_dev())) call z%sync() -!!$ !$acc parallel loop -!!$ do i = 1, n -!!$ z%v(i) = alpha * x%v(i) * y%v(i) + beta * z%v(i) -!!$ end do -!!$ call z%set_host() -!!$ end select -!!$ end subroutine z_oacc_mlt_v_2 - - subroutine z_oacc_axpby_v(m, alpha, x, beta, y, info) !use psi_serial_mod implicit none @@ -414,7 +332,7 @@ contains integer(psb_ipk_) :: i if ((beta /= zzero) .and. (y%is_dev())) call y%sync() - !$acc parallel loop + do i = 1, m y%v(i) = alpha * x(i) + beta * y%v(i) end do @@ -432,44 +350,44 @@ contains integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: nx, ny, nz, i logical :: gpu_done - write(0,*)'upd_xyz' + info = psb_success_ gpu_done = .false. select type(xx => x) class is (psb_z_vect_oacc) - select type(yy => y) + select type(yy => y) + class is (psb_z_vect_oacc) + select type(zz => z) class is (psb_z_vect_oacc) - select type(zz => z) - class is (psb_z_vect_oacc) - if ((beta /= zzero) .and. yy%is_host()) call yy%sync() - if ((delta /= zzero) .and. zz%is_host()) call zz%sync() - if (xx%is_host()) call xx%sync() - nx = size(xx%v) - ny = size(yy%v) - nz = size(zz%v) - if ((nx < m) .or. (ny < m) .or. (nz < m)) then - info = psb_err_internal_error_ - else - !$acc parallel loop - do i = 1, m - yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) - zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) - end do - end if - call yy%set_dev() - call zz%set_dev() - gpu_done = .true. - end select + if ((beta /= zzero) .and. yy%is_host()) call yy%sync() + if ((delta /= zzero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. end select + end select end select if (.not. gpu_done) then - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - if (z%is_host()) call z%sync() - call y%axpby(m, alpha, x, beta, info) - call z%axpby(m, gamma, y, delta, info) + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) end if end subroutine z_oacc_upd_xyz @@ -676,7 +594,7 @@ contains if (x%is_dev()) call x%sync() call x%psb_z_base_vect_type%ins(n, irl, val, dupl, info) call x%set_host() - !$acc update device(x%v) + end subroutine z_oacc_ins_a @@ -687,16 +605,14 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call x%all(n, info) if (info /= 0) then call psb_errpush(info, 'z_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) - + call x%sync_space() + end subroutine z_oacc_bld_mn @@ -707,6 +623,7 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info + call x%free(info) call psb_realloc(size(this), x%v, info) if (info /= 0) then info = psb_err_alloc_request_ @@ -714,13 +631,9 @@ contains i_err=(/size(this), izero, izero, izero, izero/)) return end if - x%v(:) = this(:) call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data copyin(x%v) + call x%sync_space() end subroutine z_oacc_bld_x @@ -848,54 +761,21 @@ contains end function z_oacc_dot_a - ! subroutine z_oacc_set_vect(x,y) - ! implicit none - ! class(psb_z_vect_oacc), intent(inout) :: x - ! complex(psb_dpk_), intent(in) :: y(:) - ! integer(psb_ipk_) :: info - - ! if (size(x%v) /= size(y)) then - ! call x%free(info) - ! call x%all(size(y),info) - ! end if - ! x%v(:) = y(:) - ! call x%set_host() - ! end subroutine z_oacc_set_vect - - subroutine z_oacc_to_dev(v) - implicit none - complex(psb_dpk_) :: v(:) - !$acc update device(v) - end subroutine z_oacc_to_dev - - subroutine z_oacc_to_host(v) - implicit none - complex(psb_dpk_) :: v(:) - !$acc update self(v) - end subroutine z_oacc_to_host subroutine z_oacc_sync_space(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x - if (allocated(x%v)) then - if (.not.acc_is_present(x%v)) call z_oacc_create_dev(x%v) - end if - contains - subroutine z_oacc_create_dev(v) - implicit none - complex(psb_dpk_) :: v(:) - !$acc enter data copyin(v) - end subroutine z_oacc_create_dev + if (allocated(x%v)) call acc_create(x%v) end subroutine z_oacc_sync_space subroutine z_oacc_sync(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call z_oacc_to_host(x%v) + call acc_update_self(x%v) end if if (x%is_host()) then - call z_oacc_to_dev(x%v) + call acc_update_device(x%v) end if call x%set_sync() end subroutine z_oacc_sync @@ -954,33 +834,36 @@ contains integer(psb_ipk_), intent(out) :: info call psb_realloc(n, x%v, info) - if (info == 0) then - call x%set_host() - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if - !$acc enter data create(x%v) - call x%sync_space() - end if if (info /= 0) then info = psb_err_alloc_request_ call psb_errpush(info, 'z_oacc_all', & i_err=(/n, n, n, n, n/)) end if + call x%set_host() + call x%sync_space() end subroutine z_oacc_vect_all + subroutine z_oacc_final_vect_free(x) + implicit none + type(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine z_oacc_final_vect_free + subroutine z_oacc_vect_free(x, info) implicit none class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 if (allocated(x%v)) then - if (acc_is_present(x%v)) then - !$acc exit data delete(x%v) finalize - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) end if - end subroutine z_oacc_vect_free function z_oacc_get_size(x) result(res) From fbb974fb8b6e71cd7970e2101b0adf6cca32a724 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 30 Aug 2024 10:20:58 +0200 Subject: [PATCH 35/86] Change name sync|free space, unify allocate impl --- openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 | 10 +- openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 | 4 +- openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 | 4 +- openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 | 4 +- openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 | 4 +- openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 | 4 +- openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 | 4 +- openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 | 16 +-- openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 | 4 +- openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 | 4 +- openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 | 4 +- openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 | 4 +- openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 | 4 +- openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 | 4 +- openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 | 21 +-- openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 | 4 +- openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 | 4 +- openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 | 4 +- openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 | 4 +- openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 | 4 +- openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 | 4 +- openacc/impl/psb_c_oacc_mlt_v.f90 | 4 +- openacc/impl/psb_c_oacc_mlt_v_2.f90 | 6 +- openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 | 10 +- openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 | 4 +- openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 | 4 +- openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 | 4 +- openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 | 4 +- openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 | 4 +- openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 | 4 +- openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 | 16 +-- openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 | 4 +- openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 | 4 +- openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 | 4 +- openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 | 4 +- openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 | 4 +- openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 | 4 +- openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 | 21 +-- openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 | 4 +- openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 | 4 +- openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 | 4 +- openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 | 4 +- openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 | 4 +- openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 | 4 +- openacc/impl/psb_d_oacc_mlt_v.f90 | 4 +- openacc/impl/psb_d_oacc_mlt_v_2.f90 | 6 +- openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 | 10 +- openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 | 4 +- openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 | 4 +- openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 | 4 +- openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 | 4 +- openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 | 4 +- openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 | 4 +- openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 | 16 +-- openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 | 4 +- openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 | 4 +- openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 | 4 +- openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 | 4 +- openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 | 4 +- openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 | 4 +- openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 | 21 +-- openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 | 4 +- openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 | 4 +- openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 | 4 +- openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 | 4 +- openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 | 4 +- openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 | 4 +- openacc/impl/psb_s_oacc_mlt_v.f90 | 4 +- openacc/impl/psb_s_oacc_mlt_v_2.f90 | 6 +- openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 | 10 +- openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 | 4 +- openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 | 4 +- openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 | 4 +- openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 | 4 +- openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 | 4 +- openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 | 4 +- openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 | 16 +-- openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 | 4 +- openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 | 4 +- openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 | 4 +- openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 | 4 +- openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 | 4 +- openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 | 4 +- openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 | 21 +-- openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 | 4 +- openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 | 4 +- openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 | 4 +- openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 | 4 +- openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 | 4 +- openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 | 4 +- openacc/impl/psb_z_oacc_mlt_v.f90 | 4 +- openacc/impl/psb_z_oacc_mlt_v_2.f90 | 6 +- openacc/psb_c_oacc_csr_mat_mod.F90 | 66 ++++----- openacc/psb_c_oacc_ell_mat_mod.F90 | 62 ++++----- openacc/psb_c_oacc_hll_mat_mod.F90 | 62 ++++----- openacc/psb_c_oacc_vect_mod.F90 | 126 +++++++++--------- openacc/psb_d_oacc_csr_mat_mod.F90 | 66 ++++----- openacc/psb_d_oacc_ell_mat_mod.F90 | 62 ++++----- openacc/psb_d_oacc_hll_mat_mod.F90 | 62 ++++----- openacc/psb_d_oacc_vect_mod.F90 | 126 +++++++++--------- openacc/psb_i_oacc_vect_mod.F90 | 82 ++++++------ openacc/psb_l_oacc_vect_mod.F90 | 82 ++++++------ openacc/psb_s_oacc_csr_mat_mod.F90 | 66 ++++----- openacc/psb_s_oacc_ell_mat_mod.F90 | 62 ++++----- openacc/psb_s_oacc_hll_mat_mod.F90 | 62 ++++----- openacc/psb_s_oacc_vect_mod.F90 | 126 +++++++++--------- openacc/psb_z_oacc_csr_mat_mod.F90 | 66 ++++----- openacc/psb_z_oacc_ell_mat_mod.F90 | 62 ++++----- openacc/psb_z_oacc_hll_mat_mod.F90 | 62 ++++----- openacc/psb_z_oacc_vect_mod.F90 | 126 +++++++++--------- 110 files changed, 902 insertions(+), 1042 deletions(-) diff --git a/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 index 09cdc228..a6fe9b9c 100644 --- a/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 +++ b/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 @@ -15,14 +15,8 @@ contains info = psb_success_ call a%psb_c_csr_sparse_mat%allocate(m, n, nz) - - if (.not.allocated(a%val)) then - allocate(a%val(nz)) - allocate(a%ja(nz)) - allocate(a%irp(m+1)) - end if - - call a%set_dev() + call a%set_host() + call a%sync_dev_space() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 index a411cc6a..ab5f514b 100644 --- a/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_c_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 index a8cd93a0..c6287cbb 100644 --- a/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_c_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_c_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 index 1dee9f2e..833140f4 100644 --- a/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_c_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_c_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_c_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 index 30691030..73f02b84 100644 --- a/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_c_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 index b37011c0..853a3269 100644 --- a/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_c_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_c_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 index 92a53116..e7dc970a 100644 --- a/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 +++ b/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_c_csr_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 index 594f3e88..5a363434 100644 --- a/openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 +++ b/openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 @@ -21,20 +21,8 @@ contains end if call a%psb_c_ell_sparse_mat%allocate(m, n, nz_) - - if (.not.allocated(a%val)) then - allocate(a%val(m, nz_)) - allocate(a%ja(m, nz_)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - end if - - a%val = czero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 index 836874fe..47118e48 100644 --- a/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_c_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 index 31d6c4b4..559cb65c 100644 --- a/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_c_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_c_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 index df642ee8..cfabcb78 100644 --- a/openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 +++ b/openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_c_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_c_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_c_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 index 1ca43435..183be9a5 100644 --- a/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_c_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 index 95798429..d1bd6330 100644 --- a/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_c_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_c_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 index 9f21c5df..24d153f6 100644 --- a/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 +++ b/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_c_ell_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 index 0840d0d6..c90fc652 100644 --- a/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 +++ b/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 @@ -22,25 +22,8 @@ contains end if call a%psb_c_hll_sparse_mat%allocate(m, n, nz_) - - hksz = a%hksz - nhacks = (m + hksz - 1) / hksz - - if (.not.allocated(a%val)) then - allocate(a%val(nz_ * m)) - allocate(a%ja(nz_ * m)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - allocate(a%hkoffs(nhacks)) - end if - - a%val = czero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - a%hkoffs = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 index 32391cc8..0eaebf9d 100644 --- a/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_c_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 index e442b668..29b18470 100644 --- a/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_c_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_c_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 index a8d486b2..4b45f518 100644 --- a/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 +++ b/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_c_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_c_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_c_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 index 30d723fe..193f9753 100644 --- a/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_c_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 index 0ac69af8..1c928067 100644 --- a/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_c_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_c_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 index 52983d4e..9290c381 100644 --- a/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 +++ b/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 @@ -15,8 +15,8 @@ contains info = psb_success_ call a%psb_c_hll_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_c_oacc_mlt_v.f90 b/openacc/impl/psb_c_oacc_mlt_v.f90 index a366543a..e5f215be 100644 --- a/openacc/impl/psb_c_oacc_mlt_v.f90 +++ b/openacc/impl/psb_c_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ subroutine psb_c_oacc_mlt_v(x, y, info) - use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v + use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v implicit none class(psb_c_base_vect_type), intent(inout) :: x @@ -13,7 +13,7 @@ subroutine psb_c_oacc_mlt_v(x, y, info) n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) - select type(xx => x) + select type(xx => x) class is (psb_c_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() diff --git a/openacc/impl/psb_c_oacc_mlt_v_2.f90 b/openacc/impl/psb_c_oacc_mlt_v_2.f90 index f7bceae7..b47cd1ae 100644 --- a/openacc/impl/psb_c_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_c_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v_2 + use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v_2 use psb_string_mod implicit none complex(psb_spk_), intent(in) :: alpha, beta @@ -18,9 +18,9 @@ subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) info = 0 - select type(xx => x) + select type(xx => x) class is (psb_c_vect_oacc) - select type (yy => y) + select type (yy => y) class is (psb_c_vect_oacc) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() diff --git a/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 index 5281edee..1f210a09 100644 --- a/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 +++ b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 @@ -15,14 +15,8 @@ contains info = psb_success_ call a%psb_d_csr_sparse_mat%allocate(m, n, nz) - - if (.not.allocated(a%val)) then - allocate(a%val(nz)) - allocate(a%ja(nz)) - allocate(a%irp(m+1)) - end if - - call a%set_dev() + call a%set_host() + call a%sync_dev_space() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 index 50da7692..92770e0f 100644 --- a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_d_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 index 0d35e247..9da6d861 100644 --- a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_d_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_d_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 index 5f0ef4a0..c9a875bc 100644 --- a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_d_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_d_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_d_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 index 97fa07d1..0f020e06 100644 --- a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_d_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 index e992f41a..cfd7d7dd 100644 --- a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_d_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_d_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 index c345f681..8f746105 100644 --- a/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 +++ b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_d_csr_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 index b46c5454..ca0a0f84 100644 --- a/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 +++ b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 @@ -21,20 +21,8 @@ contains end if call a%psb_d_ell_sparse_mat%allocate(m, n, nz_) - - if (.not.allocated(a%val)) then - allocate(a%val(m, nz_)) - allocate(a%ja(m, nz_)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - end if - - a%val = dzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 index 6c24098e..384701ce 100644 --- a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_d_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 index 991681e9..6622a642 100644 --- a/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_d_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_d_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 index 2c5563ce..466594fb 100644 --- a/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 +++ b/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_d_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_d_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_d_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 index 9214ba3f..7bddced9 100644 --- a/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_d_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 index 292165fc..53e45b98 100644 --- a/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_d_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_d_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 index 11332472..130a931e 100644 --- a/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 +++ b/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_d_ell_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 index 47a6933b..a30a0b00 100644 --- a/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 +++ b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 @@ -22,25 +22,8 @@ contains end if call a%psb_d_hll_sparse_mat%allocate(m, n, nz_) - - hksz = a%hksz - nhacks = (m + hksz - 1) / hksz - - if (.not.allocated(a%val)) then - allocate(a%val(nz_ * m)) - allocate(a%ja(nz_ * m)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - allocate(a%hkoffs(nhacks)) - end if - - a%val = dzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - a%hkoffs = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 index e39a29b7..34a31b0b 100644 --- a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_d_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 index a838e31e..7d14f65c 100644 --- a/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_d_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_d_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 index ae1c3c94..ff6a4580 100644 --- a/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 +++ b/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_d_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_d_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_d_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 index 29494a39..0f0ce6f1 100644 --- a/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_d_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 index e03e2f30..1fcfa4f6 100644 --- a/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_d_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_d_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 index 412409d1..21f5c48a 100644 --- a/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 +++ b/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 @@ -15,8 +15,8 @@ contains info = psb_success_ call a%psb_d_hll_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_d_oacc_mlt_v.f90 b/openacc/impl/psb_d_oacc_mlt_v.f90 index dac62a65..8b3a05b1 100644 --- a/openacc/impl/psb_d_oacc_mlt_v.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ subroutine psb_d_oacc_mlt_v(x, y, info) - use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v + use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v implicit none class(psb_d_base_vect_type), intent(inout) :: x @@ -13,7 +13,7 @@ subroutine psb_d_oacc_mlt_v(x, y, info) n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) - select type(xx => x) + select type(xx => x) class is (psb_d_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 index 3f3a457d..ce460924 100644 --- a/openacc/impl/psb_d_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v_2 + use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v_2 use psb_string_mod implicit none real(psb_dpk_), intent(in) :: alpha, beta @@ -18,9 +18,9 @@ subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) info = 0 - select type(xx => x) + select type(xx => x) class is (psb_d_vect_oacc) - select type (yy => y) + select type (yy => y) class is (psb_d_vect_oacc) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() diff --git a/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 index 08c51bce..0d531129 100644 --- a/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 +++ b/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 @@ -15,14 +15,8 @@ contains info = psb_success_ call a%psb_s_csr_sparse_mat%allocate(m, n, nz) - - if (.not.allocated(a%val)) then - allocate(a%val(nz)) - allocate(a%ja(nz)) - allocate(a%irp(m+1)) - end if - - call a%set_dev() + call a%set_host() + call a%sync_dev_space() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 index 3c2fb1cb..f740cf18 100644 --- a/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_s_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 index e47959f8..fc495668 100644 --- a/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_s_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_s_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 index ec7f4bad..b1785b49 100644 --- a/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_s_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_s_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_s_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 index fdbf3a0c..0c92e476 100644 --- a/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_s_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 index a7a581b8..1c61eb3b 100644 --- a/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_s_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_s_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 index 77c17120..e49bf2c8 100644 --- a/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 +++ b/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_s_csr_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 index 38c19b78..b9c25654 100644 --- a/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 +++ b/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 @@ -21,20 +21,8 @@ contains end if call a%psb_s_ell_sparse_mat%allocate(m, n, nz_) - - if (.not.allocated(a%val)) then - allocate(a%val(m, nz_)) - allocate(a%ja(m, nz_)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - end if - - a%val = szero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 index 0f6fbc48..5a607370 100644 --- a/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_s_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 index 793c2779..47ce5241 100644 --- a/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_s_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_s_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 index ba42af12..5fc672d0 100644 --- a/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 +++ b/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_s_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_s_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_s_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 index ba82049f..736d4253 100644 --- a/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_s_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 index df789664..d8d13aa2 100644 --- a/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_s_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_s_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 index 373c2b67..34036cdb 100644 --- a/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 +++ b/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_s_ell_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 index c67ea621..1db3e55d 100644 --- a/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 +++ b/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 @@ -22,25 +22,8 @@ contains end if call a%psb_s_hll_sparse_mat%allocate(m, n, nz_) - - hksz = a%hksz - nhacks = (m + hksz - 1) / hksz - - if (.not.allocated(a%val)) then - allocate(a%val(nz_ * m)) - allocate(a%ja(nz_ * m)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - allocate(a%hkoffs(nhacks)) - end if - - a%val = szero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - a%hkoffs = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 index dfba3c6c..ca4afeb7 100644 --- a/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_s_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 index 849e03b7..47a41b8d 100644 --- a/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_s_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_s_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 index 900b8982..ea81574b 100644 --- a/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 +++ b/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_s_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_s_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_s_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 index c22818fa..c26c5018 100644 --- a/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_s_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 index 992b1c7b..dd04bbab 100644 --- a/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_s_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_s_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 index 7768d1ed..242ffe0d 100644 --- a/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 +++ b/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 @@ -15,8 +15,8 @@ contains info = psb_success_ call a%psb_s_hll_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_s_oacc_mlt_v.f90 b/openacc/impl/psb_s_oacc_mlt_v.f90 index 61a1d152..11dcac6c 100644 --- a/openacc/impl/psb_s_oacc_mlt_v.f90 +++ b/openacc/impl/psb_s_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ subroutine psb_s_oacc_mlt_v(x, y, info) - use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v + use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v implicit none class(psb_s_base_vect_type), intent(inout) :: x @@ -13,7 +13,7 @@ subroutine psb_s_oacc_mlt_v(x, y, info) n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) - select type(xx => x) + select type(xx => x) class is (psb_s_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() diff --git a/openacc/impl/psb_s_oacc_mlt_v_2.f90 b/openacc/impl/psb_s_oacc_mlt_v_2.f90 index bcaebfbe..2ce7fe53 100644 --- a/openacc/impl/psb_s_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_s_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v_2 + use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v_2 use psb_string_mod implicit none real(psb_spk_), intent(in) :: alpha, beta @@ -18,9 +18,9 @@ subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) info = 0 - select type(xx => x) + select type(xx => x) class is (psb_s_vect_oacc) - select type (yy => y) + select type (yy => y) class is (psb_s_vect_oacc) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() diff --git a/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 index fd19d6f9..b7ba4bad 100644 --- a/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 +++ b/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 @@ -15,14 +15,8 @@ contains info = psb_success_ call a%psb_z_csr_sparse_mat%allocate(m, n, nz) - - if (.not.allocated(a%val)) then - allocate(a%val(nz)) - allocate(a%ja(nz)) - allocate(a%irp(m+1)) - end if - - call a%set_dev() + call a%set_host() + call a%sync_dev_space() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 index 6c40d0d2..ef1b5b73 100644 --- a/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_z_csr_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 index 3025fde2..7c3470a2 100644 --- a/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_z_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_z_csr_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 index 4975b276..25715903 100644 --- a/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 +++ b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_z_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_z_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_z_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 index 6dae625a..d2b9ee48 100644 --- a/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_z_csr_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 index 1d7dd723..af7fb1da 100644 --- a/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_z_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_z_csr_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 index bdfb88d6..4cfea07c 100644 --- a/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 +++ b/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_z_csr_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 index 48a5e202..aa8a03cd 100644 --- a/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 +++ b/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 @@ -21,20 +21,8 @@ contains end if call a%psb_z_ell_sparse_mat%allocate(m, n, nz_) - - if (.not.allocated(a%val)) then - allocate(a%val(m, nz_)) - allocate(a%ja(m, nz_)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - end if - - a%val = zzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 index 6dd60bd7..a3129ff6 100644 --- a/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_z_ell_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 index 60d94bb2..f9a52d62 100644 --- a/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_z_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_z_ell_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 index f445a6b4..1cbe249c 100644 --- a/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 +++ b/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_z_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_z_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_z_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 index db70b944..9abb1a74 100644 --- a/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_z_ell_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 index f99b3817..eb49b21a 100644 --- a/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_z_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_z_ell_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 index 8fd3ad77..c7c88c65 100644 --- a/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 +++ b/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 @@ -14,8 +14,8 @@ contains info = psb_success_ call a%psb_z_ell_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 index c398d259..fb84dfb7 100644 --- a/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 +++ b/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 @@ -22,25 +22,8 @@ contains end if call a%psb_z_hll_sparse_mat%allocate(m, n, nz_) - - hksz = a%hksz - nhacks = (m + hksz - 1) / hksz - - if (.not.allocated(a%val)) then - allocate(a%val(nz_ * m)) - allocate(a%ja(nz_ * m)) - allocate(a%irn(m)) - allocate(a%idiag(m)) - allocate(a%hkoffs(nhacks)) - end if - - a%val = zzero - a%ja = -1 - a%irn = 0 - a%idiag = 0 - a%hkoffs = 0 - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 index e018e762..9fb903ca 100644 --- a/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_z_hll_sparse_mat%cp_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 index 7b18b255..3a77865d 100644 --- a/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_z_coo_sparse_mat) call a%cp_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_z_hll_sparse_mat%cp_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 index 1d068542..a5bd54ad 100644 --- a/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 +++ b/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 @@ -40,9 +40,9 @@ contains call a%psb_z_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) call y%set_host() else - select type (xx => x) + select type (xx => x) type is (psb_z_vect_oacc) - select type(yy => y) + select type(yy => y) type is (psb_z_vect_oacc) if (xx%is_host()) call xx%sync() if (beta /= dzero) then diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 index 267f13f3..46d4d6bd 100644 --- a/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 +++ b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 @@ -10,10 +10,10 @@ contains info = psb_success_ - call a%free_space() + call a%free_dev_space() call a%psb_z_hll_sparse_mat%mv_from_coo(b, info) if (info /= 0) goto 9999 - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 index 151dc6ce..45e9846a 100644 --- a/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 +++ b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 @@ -14,10 +14,10 @@ contains type is (psb_z_coo_sparse_mat) call a%mv_from_coo(b, info) class default - call a%free_space() + call a%free_dev_space() call a%psb_z_hll_sparse_mat%mv_from_fmt(b, info) if (info /= 0) return - call a%sync_space() + call a%sync_dev_space() call a%set_host() call a%sync() end select diff --git a/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 index 5b49efe5..7d9589cb 100644 --- a/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 +++ b/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 @@ -15,8 +15,8 @@ contains info = psb_success_ call a%psb_z_hll_sparse_mat%reallocate(nz) - - call a%set_dev() + call a%sync_dev_space() + call a%set_host() if (info /= 0) goto 9999 call psb_erractionrestore(err_act) diff --git a/openacc/impl/psb_z_oacc_mlt_v.f90 b/openacc/impl/psb_z_oacc_mlt_v.f90 index 4bc582d2..3e8f6030 100644 --- a/openacc/impl/psb_z_oacc_mlt_v.f90 +++ b/openacc/impl/psb_z_oacc_mlt_v.f90 @@ -1,6 +1,6 @@ subroutine psb_z_oacc_mlt_v(x, y, info) - use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v + use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v implicit none class(psb_z_base_vect_type), intent(inout) :: x @@ -13,7 +13,7 @@ subroutine psb_z_oacc_mlt_v(x, y, info) n = min(x%get_nrows(), y%get_nrows()) info = 0 n = min(x%get_nrows(), y%get_nrows()) - select type(xx => x) + select type(xx => x) class is (psb_z_vect_oacc) if (y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() diff --git a/openacc/impl/psb_z_oacc_mlt_v_2.f90 b/openacc/impl/psb_z_oacc_mlt_v_2.f90 index 337a0a96..f69d863c 100644 --- a/openacc/impl/psb_z_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_z_oacc_mlt_v_2.f90 @@ -1,5 +1,5 @@ subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) - use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v_2 + use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v_2 use psb_string_mod implicit none complex(psb_dpk_), intent(in) :: alpha, beta @@ -18,9 +18,9 @@ subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) info = 0 - select type(xx => x) + select type(xx => x) class is (psb_z_vect_oacc) - select type (yy => y) + select type (yy => y) class is (psb_z_vect_oacc) if (xx%is_host()) call xx%sync() if (yy%is_host()) call yy%sync() diff --git a/openacc/psb_c_oacc_csr_mat_mod.F90 b/openacc/psb_c_oacc_csr_mat_mod.F90 index 07734762..a1f6e2c3 100644 --- a/openacc/psb_c_oacc_csr_mat_mod.F90 +++ b/openacc/psb_c_oacc_csr_mat_mod.F90 @@ -13,32 +13,32 @@ module psb_c_oacc_csr_mat_mod type, extends(psb_c_csr_sparse_mat) :: psb_c_oacc_csr_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => c_oacc_csr_get_fmt - procedure, pass(a) :: sizeof => c_oacc_csr_sizeof - procedure, pass(a) :: vect_mv => psb_c_oacc_csr_vect_mv - procedure, pass(a) :: in_vect_sv => psb_c_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_c_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_c_oacc_csr_csmv - procedure, pass(a) :: scals => psb_c_oacc_csr_scals - procedure, pass(a) :: scalv => psb_c_oacc_csr_scal - procedure, pass(a) :: reallocate_nz => psb_c_oacc_csr_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_c_oacc_csr_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_c_oacc_csr_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_c_oacc_csr_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_c_oacc_csr_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_c_oacc_csr_mv_from_fmt - procedure, pass(a) :: free => c_oacc_csr_free - procedure, pass(a) :: mold => psb_c_oacc_csr_mold - procedure, pass(a) :: all => c_oacc_csr_all - procedure, pass(a) :: is_host => c_oacc_csr_is_host - procedure, pass(a) :: is_sync => c_oacc_csr_is_sync - procedure, pass(a) :: is_dev => c_oacc_csr_is_dev - procedure, pass(a) :: set_host => c_oacc_csr_set_host - procedure, pass(a) :: set_sync => c_oacc_csr_set_sync - procedure, pass(a) :: set_dev => c_oacc_csr_set_dev - procedure, pass(a) :: free_space => c_oacc_csr_free_space - procedure, pass(a) :: sync_space => c_oacc_csr_sync_space - procedure, pass(a) :: sync => c_oacc_csr_sync + procedure, nopass :: get_fmt => c_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => c_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_c_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_c_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_c_oacc_csr_csmv + procedure, pass(a) :: scals => psb_c_oacc_csr_scals + procedure, pass(a) :: scalv => psb_c_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => c_oacc_csr_free + procedure, pass(a) :: mold => psb_c_oacc_csr_mold + procedure, pass(a) :: all => c_oacc_csr_all + procedure, pass(a) :: is_host => c_oacc_csr_is_host + procedure, pass(a) :: is_sync => c_oacc_csr_is_sync + procedure, pass(a) :: is_dev => c_oacc_csr_is_dev + procedure, pass(a) :: set_host => c_oacc_csr_set_host + procedure, pass(a) :: set_sync => c_oacc_csr_set_sync + procedure, pass(a) :: set_dev => c_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => c_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => c_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => c_oacc_csr_sync end type psb_c_oacc_csr_sparse_mat interface @@ -156,7 +156,7 @@ module psb_c_oacc_csr_mat_mod contains - subroutine c_oacc_csr_free_space(a) + subroutine c_oacc_csr_free_dev_space(a) use psb_base_mod implicit none class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%irp)) call acc_delete_finalize(a%irp) return - end subroutine c_oacc_csr_free_space + end subroutine c_oacc_csr_free_dev_space subroutine c_oacc_csr_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_c_csr_sparse_mat%free() return @@ -218,7 +218,7 @@ contains allocate(a%ja(nz),stat=info) allocate(a%irp(m+1),stat=info) if (info == 0) call a%set_host() - if (info == 0) call a%sync_space() + if (info == 0) call a%sync_dev_space() end subroutine c_oacc_csr_all function c_oacc_csr_is_host(a) result(res) @@ -266,13 +266,13 @@ contains a%devstate = is_dev end subroutine c_oacc_csr_set_dev - subroutine c_oacc_csr_sync_space(a) + subroutine c_oacc_csr_sync_dev_space(a) implicit none class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a if (allocated(a%val)) call acc_create(a%val) if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irp)) call acc_create(a%irp) - end subroutine c_oacc_csr_sync_space + end subroutine c_oacc_csr_sync_dev_space subroutine c_oacc_csr_sync(a) implicit none @@ -280,7 +280,7 @@ contains class(psb_c_oacc_csr_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 index d23d4d0a..996d4628 100644 --- a/openacc/psb_c_oacc_ell_mat_mod.F90 +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_c_oacc_ell_mat_mod type, extends(psb_c_ell_sparse_mat) :: psb_c_oacc_ell_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => c_oacc_ell_get_fmt - procedure, pass(a) :: sizeof => c_oacc_ell_sizeof - procedure, pass(a) :: is_host => c_oacc_ell_is_host - procedure, pass(a) :: is_sync => c_oacc_ell_is_sync - procedure, pass(a) :: is_dev => c_oacc_ell_is_dev - procedure, pass(a) :: set_host => c_oacc_ell_set_host - procedure, pass(a) :: set_sync => c_oacc_ell_set_sync - procedure, pass(a) :: set_dev => c_oacc_ell_set_dev - procedure, pass(a) :: sync_space => c_oacc_ell_sync_space - procedure, pass(a) :: sync => c_oacc_ell_sync - procedure, pass(a) :: free_space => c_oacc_ell_free_space - procedure, pass(a) :: free => c_oacc_ell_free - procedure, pass(a) :: vect_mv => psb_c_oacc_ell_vect_mv - procedure, pass(a) :: in_vect_sv => psb_c_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_c_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_c_oacc_ell_csmv - procedure, pass(a) :: scals => psb_c_oacc_ell_scals - procedure, pass(a) :: scalv => psb_c_oacc_ell_scal - procedure, pass(a) :: reallocate_nz => psb_c_oacc_ell_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_c_oacc_ell_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_c_oacc_ell_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_c_oacc_ell_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_c_oacc_ell_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_c_oacc_ell_mv_from_fmt - procedure, pass(a) :: mold => psb_c_oacc_ell_mold + procedure, nopass :: get_fmt => c_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => c_oacc_ell_sizeof + procedure, pass(a) :: is_host => c_oacc_ell_is_host + procedure, pass(a) :: is_sync => c_oacc_ell_is_sync + procedure, pass(a) :: is_dev => c_oacc_ell_is_dev + procedure, pass(a) :: set_host => c_oacc_ell_set_host + procedure, pass(a) :: set_sync => c_oacc_ell_set_sync + procedure, pass(a) :: set_dev => c_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => c_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => c_oacc_ell_sync + procedure, pass(a) :: free_dev_space => c_oacc_ell_free_dev_space + procedure, pass(a) :: free => c_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_c_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_c_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_c_oacc_ell_csmv + procedure, pass(a) :: scals => psb_c_oacc_ell_scals + procedure, pass(a) :: scalv => psb_c_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_c_oacc_ell_mold end type psb_c_oacc_ell_sparse_mat @@ -154,7 +154,7 @@ module psb_c_oacc_ell_mat_mod contains - subroutine c_oacc_ell_free_space(a) + subroutine c_oacc_ell_free_dev_space(a) use psb_base_mod implicit none class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a @@ -166,7 +166,7 @@ contains if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) return - end subroutine c_oacc_ell_free_space + end subroutine c_oacc_ell_free_dev_space subroutine c_oacc_ell_free(a) use psb_base_mod @@ -174,7 +174,7 @@ contains class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_c_ell_sparse_mat%free() return @@ -195,7 +195,7 @@ contains end function c_oacc_ell_sizeof - subroutine c_oacc_ell_sync_space(a) + subroutine c_oacc_ell_sync_dev_space(a) implicit none class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a @@ -203,7 +203,7 @@ contains if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) - end subroutine c_oacc_ell_sync_space + end subroutine c_oacc_ell_sync_dev_space function c_oacc_ell_is_host(a) result(res) implicit none @@ -262,7 +262,7 @@ contains class(psb_c_oacc_ell_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_c_oacc_hll_mat_mod.F90 b/openacc/psb_c_oacc_hll_mat_mod.F90 index 2d2095bf..ebcbf29e 100644 --- a/openacc/psb_c_oacc_hll_mat_mod.F90 +++ b/openacc/psb_c_oacc_hll_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_c_oacc_hll_mat_mod type, extends(psb_c_hll_sparse_mat) :: psb_c_oacc_hll_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => c_oacc_hll_get_fmt - procedure, pass(a) :: sizeof => c_oacc_hll_sizeof - procedure, pass(a) :: is_host => c_oacc_hll_is_host - procedure, pass(a) :: is_sync => c_oacc_hll_is_sync - procedure, pass(a) :: is_dev => c_oacc_hll_is_dev - procedure, pass(a) :: set_host => c_oacc_hll_set_host - procedure, pass(a) :: set_sync => c_oacc_hll_set_sync - procedure, pass(a) :: set_dev => c_oacc_hll_set_dev - procedure, pass(a) :: sync_space => c_oacc_hll_sync_space - procedure, pass(a) :: sync => c_oacc_hll_sync - procedure, pass(a) :: free_space => c_oacc_hll_free_space - procedure, pass(a) :: free => c_oacc_hll_free - procedure, pass(a) :: vect_mv => psb_c_oacc_hll_vect_mv - procedure, pass(a) :: in_vect_sv => psb_c_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_c_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_c_oacc_hll_csmv - procedure, pass(a) :: scals => psb_c_oacc_hll_scals - procedure, pass(a) :: scalv => psb_c_oacc_hll_scal - procedure, pass(a) :: reallocate_nz => psb_c_oacc_hll_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_c_oacc_hll_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_c_oacc_hll_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_c_oacc_hll_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_c_oacc_hll_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_c_oacc_hll_mv_from_fmt - procedure, pass(a) :: mold => psb_c_oacc_hll_mold + procedure, nopass :: get_fmt => c_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => c_oacc_hll_sizeof + procedure, pass(a) :: is_host => c_oacc_hll_is_host + procedure, pass(a) :: is_sync => c_oacc_hll_is_sync + procedure, pass(a) :: is_dev => c_oacc_hll_is_dev + procedure, pass(a) :: set_host => c_oacc_hll_set_host + procedure, pass(a) :: set_sync => c_oacc_hll_set_sync + procedure, pass(a) :: set_dev => c_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => c_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => c_oacc_hll_sync + procedure, pass(a) :: free_dev_space => c_oacc_hll_free_dev_space + procedure, pass(a) :: free => c_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_c_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_c_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_c_oacc_hll_csmv + procedure, pass(a) :: scals => psb_c_oacc_hll_scals + procedure, pass(a) :: scalv => psb_c_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_c_oacc_hll_mold end type psb_c_oacc_hll_sparse_mat @@ -154,7 +154,7 @@ module psb_c_oacc_hll_mat_mod contains - subroutine c_oacc_hll_free_space(a) + subroutine c_oacc_hll_free_dev_space(a) use psb_base_mod implicit none class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) return - end subroutine c_oacc_hll_free_space + end subroutine c_oacc_hll_free_dev_space subroutine c_oacc_hll_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_c_hll_sparse_mat%free() return @@ -249,7 +249,7 @@ contains res = 'HLLOA' end function c_oacc_hll_get_fmt - subroutine c_oacc_hll_sync_space(a) + subroutine c_oacc_hll_sync_dev_space(a) implicit none class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a @@ -258,7 +258,7 @@ contains if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) if (allocated(a%hkoffs)) call acc_create(a%hkoffs) - end subroutine c_oacc_hll_sync_space + end subroutine c_oacc_hll_sync_dev_space subroutine c_oacc_hll_sync(a) @@ -267,7 +267,7 @@ contains class(psb_c_oacc_hll_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index 79ff0ca3..95c45646 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -15,50 +15,50 @@ module psb_c_oacc_vect_mod integer :: state = is_host contains - procedure, pass(x) :: get_nrows => c_oacc_get_nrows - procedure, nopass :: get_fmt => c_oacc_get_fmt - - procedure, pass(x) :: all => c_oacc_vect_all - procedure, pass(x) :: zero => c_oacc_zero - procedure, pass(x) :: asb_m => c_oacc_asb_m - procedure, pass(x) :: sync => c_oacc_sync - procedure, pass(x) :: sync_space => c_oacc_sync_space - procedure, pass(x) :: bld_x => c_oacc_bld_x - procedure, pass(x) :: bld_mn => c_oacc_bld_mn - procedure, pass(x) :: free => c_oacc_vect_free - procedure, pass(x) :: ins_a => c_oacc_ins_a - procedure, pass(x) :: ins_v => c_oacc_ins_v - procedure, pass(x) :: is_host => c_oacc_is_host - procedure, pass(x) :: is_dev => c_oacc_is_dev - procedure, pass(x) :: is_sync => c_oacc_is_sync - procedure, pass(x) :: set_host => c_oacc_set_host - procedure, pass(x) :: set_dev => c_oacc_set_dev - procedure, pass(x) :: set_sync => c_oacc_set_sync - procedure, pass(x) :: set_scal => c_oacc_set_scal - - procedure, pass(x) :: gthzv_x => c_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => c_oacc_gthzbuf - procedure, pass(y) :: sctb => c_oacc_sctb - procedure, pass(y) :: sctb_x => c_oacc_sctb_x - procedure, pass(y) :: sctb_buf => c_oacc_sctb_buf - - procedure, pass(x) :: get_size => c_oacc_get_size - - procedure, pass(x) :: dot_v => c_oacc_vect_dot - procedure, pass(x) :: dot_a => c_oacc_dot_a - procedure, pass(y) :: axpby_v => c_oacc_axpby_v - procedure, pass(y) :: axpby_a => c_oacc_axpby_a - procedure, pass(z) :: upd_xyz => c_oacc_upd_xyz - procedure, pass(y) :: mlt_a => c_oacc_mlt_a - procedure, pass(z) :: mlt_a_2 => c_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => psb_c_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => psb_c_oacc_mlt_v_2 - procedure, pass(x) :: scal => c_oacc_scal - procedure, pass(x) :: nrm2 => c_oacc_nrm2 - procedure, pass(x) :: amax => c_oacc_amax - procedure, pass(x) :: asum => c_oacc_asum - procedure, pass(x) :: absval1 => c_oacc_absval1 - procedure, pass(x) :: absval2 => c_oacc_absval2 + procedure, pass(x) :: get_nrows => c_oacc_get_nrows + procedure, nopass :: get_fmt => c_oacc_get_fmt + + procedure, pass(x) :: all => c_oacc_vect_all + procedure, pass(x) :: zero => c_oacc_zero + procedure, pass(x) :: asb_m => c_oacc_asb_m + procedure, pass(x) :: sync => c_oacc_sync + procedure, pass(x) :: sync_dev_space => c_oacc_sync_dev_space + procedure, pass(x) :: bld_x => c_oacc_bld_x + procedure, pass(x) :: bld_mn => c_oacc_bld_mn + procedure, pass(x) :: free => c_oacc_vect_free + procedure, pass(x) :: ins_a => c_oacc_ins_a + procedure, pass(x) :: ins_v => c_oacc_ins_v + procedure, pass(x) :: is_host => c_oacc_is_host + procedure, pass(x) :: is_dev => c_oacc_is_dev + procedure, pass(x) :: is_sync => c_oacc_is_sync + procedure, pass(x) :: set_host => c_oacc_set_host + procedure, pass(x) :: set_dev => c_oacc_set_dev + procedure, pass(x) :: set_sync => c_oacc_set_sync + procedure, pass(x) :: set_scal => c_oacc_set_scal + + procedure, pass(x) :: gthzv_x => c_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => c_oacc_gthzbuf + procedure, pass(y) :: sctb => c_oacc_sctb + procedure, pass(y) :: sctb_x => c_oacc_sctb_x + procedure, pass(y) :: sctb_buf => c_oacc_sctb_buf + + procedure, pass(x) :: get_size => c_oacc_get_size + + procedure, pass(x) :: dot_v => c_oacc_vect_dot + procedure, pass(x) :: dot_a => c_oacc_dot_a + procedure, pass(y) :: axpby_v => c_oacc_axpby_v + procedure, pass(y) :: axpby_a => c_oacc_axpby_a + procedure, pass(z) :: upd_xyz => c_oacc_upd_xyz + procedure, pass(y) :: mlt_a => c_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => c_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_c_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_c_oacc_mlt_v_2 + procedure, pass(x) :: scal => c_oacc_scal + procedure, pass(x) :: nrm2 => c_oacc_nrm2 + procedure, pass(x) :: amax => c_oacc_amax + procedure, pass(x) :: asum => c_oacc_asum + procedure, pass(x) :: absval1 => c_oacc_absval1 + procedure, pass(x) :: absval2 => c_oacc_absval2 final :: c_oacc_final_vect_free end type psb_c_vect_oacc @@ -117,7 +117,7 @@ contains integer(psb_ipk_) :: i n = min(size(x%v), size(y%v)) - select type (yy => y) + select type (yy => y) class is (psb_c_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -287,7 +287,7 @@ contains info = psb_success_ - select type(xx => x) + select type(xx => x) type is (psb_c_vect_oacc) if ((beta /= czero) .and. y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() @@ -354,11 +354,11 @@ contains info = psb_success_ gpu_done = .false. - select type(xx => x) + select type(xx => x) class is (psb_c_vect_oacc) - select type(yy => y) + select type(yy => y) class is (psb_c_vect_oacc) - select type(zz => z) + select type(zz => z) class is (psb_c_vect_oacc) if ((beta /= czero) .and. yy%is_host()) call yy%sync() if ((delta /= czero) .and. zz%is_host()) call zz%sync() @@ -405,7 +405,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() @@ -432,7 +432,7 @@ contains class(psb_c_vect_oacc) :: y integer(psb_ipk_) :: info, ni - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -485,7 +485,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -512,7 +512,7 @@ contains info = 0 - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -544,9 +544,9 @@ contains if (psb_errstatus_fatal()) return done_oacc = .false. - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) - select type(vval => val) + select type(vval => val) type is (psb_c_vect_oacc) if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() @@ -561,11 +561,11 @@ contains end select if (.not.done_oacc) then - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) if (virl%is_dev()) call virl%sync() end select - select type(vval => val) + select type(vval => val) type is (psb_c_vect_oacc) if (vval%is_dev()) call vval%sync() end select @@ -611,7 +611,7 @@ contains call psb_errpush(info, 'c_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine c_oacc_bld_mn @@ -633,7 +633,7 @@ contains end if x%v(:) = this(:) call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine c_oacc_bld_x @@ -719,7 +719,7 @@ contains res = czero !write(0,*) 'dot_v' - select type(yy => y) + select type(yy => y) type is (psb_c_base_vect_type) if (x%is_dev()) call x%sync() res = ddot(n, x%v, 1, yy%v, 1) @@ -762,11 +762,11 @@ contains end function c_oacc_dot_a - subroutine c_oacc_sync_space(x) + subroutine c_oacc_sync_dev_space(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x if (allocated(x%v)) call acc_create(x%v) - end subroutine c_oacc_sync_space + end subroutine c_oacc_sync_dev_space subroutine c_oacc_sync(x) implicit none @@ -840,7 +840,7 @@ contains i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine c_oacc_vect_all subroutine c_oacc_final_vect_free(x) diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index 74031e89..a9d72eae 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -13,32 +13,32 @@ module psb_d_oacc_csr_mat_mod type, extends(psb_d_csr_sparse_mat) :: psb_d_oacc_csr_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => d_oacc_csr_get_fmt - procedure, pass(a) :: sizeof => d_oacc_csr_sizeof - procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv - procedure, pass(a) :: in_vect_sv => psb_d_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_d_oacc_csr_csmv - procedure, pass(a) :: scals => psb_d_oacc_csr_scals - procedure, pass(a) :: scalv => psb_d_oacc_csr_scal - procedure, pass(a) :: reallocate_nz => psb_d_oacc_csr_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_d_oacc_csr_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_d_oacc_csr_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_d_oacc_csr_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_d_oacc_csr_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_d_oacc_csr_mv_from_fmt - procedure, pass(a) :: free => d_oacc_csr_free - procedure, pass(a) :: mold => psb_d_oacc_csr_mold - procedure, pass(a) :: all => d_oacc_csr_all - procedure, pass(a) :: is_host => d_oacc_csr_is_host - procedure, pass(a) :: is_sync => d_oacc_csr_is_sync - procedure, pass(a) :: is_dev => d_oacc_csr_is_dev - procedure, pass(a) :: set_host => d_oacc_csr_set_host - procedure, pass(a) :: set_sync => d_oacc_csr_set_sync - procedure, pass(a) :: set_dev => d_oacc_csr_set_dev - procedure, pass(a) :: free_space => d_oacc_csr_free_space - procedure, pass(a) :: sync_space => d_oacc_csr_sync_space - procedure, pass(a) :: sync => d_oacc_csr_sync + procedure, nopass :: get_fmt => d_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => d_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_d_oacc_csr_csmv + procedure, pass(a) :: scals => psb_d_oacc_csr_scals + procedure, pass(a) :: scalv => psb_d_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => d_oacc_csr_free + procedure, pass(a) :: mold => psb_d_oacc_csr_mold + procedure, pass(a) :: all => d_oacc_csr_all + procedure, pass(a) :: is_host => d_oacc_csr_is_host + procedure, pass(a) :: is_sync => d_oacc_csr_is_sync + procedure, pass(a) :: is_dev => d_oacc_csr_is_dev + procedure, pass(a) :: set_host => d_oacc_csr_set_host + procedure, pass(a) :: set_sync => d_oacc_csr_set_sync + procedure, pass(a) :: set_dev => d_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => d_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => d_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => d_oacc_csr_sync end type psb_d_oacc_csr_sparse_mat interface @@ -156,7 +156,7 @@ module psb_d_oacc_csr_mat_mod contains - subroutine d_oacc_csr_free_space(a) + subroutine d_oacc_csr_free_dev_space(a) use psb_base_mod implicit none class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%irp)) call acc_delete_finalize(a%irp) return - end subroutine d_oacc_csr_free_space + end subroutine d_oacc_csr_free_dev_space subroutine d_oacc_csr_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_d_csr_sparse_mat%free() return @@ -218,7 +218,7 @@ contains allocate(a%ja(nz),stat=info) allocate(a%irp(m+1),stat=info) if (info == 0) call a%set_host() - if (info == 0) call a%sync_space() + if (info == 0) call a%sync_dev_space() end subroutine d_oacc_csr_all function d_oacc_csr_is_host(a) result(res) @@ -266,13 +266,13 @@ contains a%devstate = is_dev end subroutine d_oacc_csr_set_dev - subroutine d_oacc_csr_sync_space(a) + subroutine d_oacc_csr_sync_dev_space(a) implicit none class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a if (allocated(a%val)) call acc_create(a%val) if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irp)) call acc_create(a%irp) - end subroutine d_oacc_csr_sync_space + end subroutine d_oacc_csr_sync_dev_space subroutine d_oacc_csr_sync(a) implicit none @@ -280,7 +280,7 @@ contains class(psb_d_oacc_csr_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 45ffc92d..1409a1d6 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_d_oacc_ell_mat_mod type, extends(psb_d_ell_sparse_mat) :: psb_d_oacc_ell_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => d_oacc_ell_get_fmt - procedure, pass(a) :: sizeof => d_oacc_ell_sizeof - procedure, pass(a) :: is_host => d_oacc_ell_is_host - procedure, pass(a) :: is_sync => d_oacc_ell_is_sync - procedure, pass(a) :: is_dev => d_oacc_ell_is_dev - procedure, pass(a) :: set_host => d_oacc_ell_set_host - procedure, pass(a) :: set_sync => d_oacc_ell_set_sync - procedure, pass(a) :: set_dev => d_oacc_ell_set_dev - procedure, pass(a) :: sync_space => d_oacc_ell_sync_space - procedure, pass(a) :: sync => d_oacc_ell_sync - procedure, pass(a) :: free_space => d_oacc_ell_free_space - procedure, pass(a) :: free => d_oacc_ell_free - procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv - procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_d_oacc_ell_csmv - procedure, pass(a) :: scals => psb_d_oacc_ell_scals - procedure, pass(a) :: scalv => psb_d_oacc_ell_scal - procedure, pass(a) :: reallocate_nz => psb_d_oacc_ell_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_d_oacc_ell_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_d_oacc_ell_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_d_oacc_ell_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_d_oacc_ell_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_d_oacc_ell_mv_from_fmt - procedure, pass(a) :: mold => psb_d_oacc_ell_mold + procedure, nopass :: get_fmt => d_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => d_oacc_ell_sizeof + procedure, pass(a) :: is_host => d_oacc_ell_is_host + procedure, pass(a) :: is_sync => d_oacc_ell_is_sync + procedure, pass(a) :: is_dev => d_oacc_ell_is_dev + procedure, pass(a) :: set_host => d_oacc_ell_set_host + procedure, pass(a) :: set_sync => d_oacc_ell_set_sync + procedure, pass(a) :: set_dev => d_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => d_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => d_oacc_ell_sync + procedure, pass(a) :: free_dev_space => d_oacc_ell_free_dev_space + procedure, pass(a) :: free => d_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_d_oacc_ell_csmv + procedure, pass(a) :: scals => psb_d_oacc_ell_scals + procedure, pass(a) :: scalv => psb_d_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_ell_mold end type psb_d_oacc_ell_sparse_mat @@ -154,7 +154,7 @@ module psb_d_oacc_ell_mat_mod contains - subroutine d_oacc_ell_free_space(a) + subroutine d_oacc_ell_free_dev_space(a) use psb_base_mod implicit none class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a @@ -166,7 +166,7 @@ contains if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) return - end subroutine d_oacc_ell_free_space + end subroutine d_oacc_ell_free_dev_space subroutine d_oacc_ell_free(a) use psb_base_mod @@ -174,7 +174,7 @@ contains class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_d_ell_sparse_mat%free() return @@ -195,7 +195,7 @@ contains end function d_oacc_ell_sizeof - subroutine d_oacc_ell_sync_space(a) + subroutine d_oacc_ell_sync_dev_space(a) implicit none class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a @@ -203,7 +203,7 @@ contains if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) - end subroutine d_oacc_ell_sync_space + end subroutine d_oacc_ell_sync_dev_space function d_oacc_ell_is_host(a) result(res) implicit none @@ -262,7 +262,7 @@ contains class(psb_d_oacc_ell_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 index 8009f085..15ae055e 100644 --- a/openacc/psb_d_oacc_hll_mat_mod.F90 +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_d_oacc_hll_mat_mod type, extends(psb_d_hll_sparse_mat) :: psb_d_oacc_hll_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => d_oacc_hll_get_fmt - procedure, pass(a) :: sizeof => d_oacc_hll_sizeof - procedure, pass(a) :: is_host => d_oacc_hll_is_host - procedure, pass(a) :: is_sync => d_oacc_hll_is_sync - procedure, pass(a) :: is_dev => d_oacc_hll_is_dev - procedure, pass(a) :: set_host => d_oacc_hll_set_host - procedure, pass(a) :: set_sync => d_oacc_hll_set_sync - procedure, pass(a) :: set_dev => d_oacc_hll_set_dev - procedure, pass(a) :: sync_space => d_oacc_hll_sync_space - procedure, pass(a) :: sync => d_oacc_hll_sync - procedure, pass(a) :: free_space => d_oacc_hll_free_space - procedure, pass(a) :: free => d_oacc_hll_free - procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv - procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_d_oacc_hll_csmv - procedure, pass(a) :: scals => psb_d_oacc_hll_scals - procedure, pass(a) :: scalv => psb_d_oacc_hll_scal - procedure, pass(a) :: reallocate_nz => psb_d_oacc_hll_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_d_oacc_hll_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_d_oacc_hll_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_d_oacc_hll_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_d_oacc_hll_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_d_oacc_hll_mv_from_fmt - procedure, pass(a) :: mold => psb_d_oacc_hll_mold + procedure, nopass :: get_fmt => d_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => d_oacc_hll_sizeof + procedure, pass(a) :: is_host => d_oacc_hll_is_host + procedure, pass(a) :: is_sync => d_oacc_hll_is_sync + procedure, pass(a) :: is_dev => d_oacc_hll_is_dev + procedure, pass(a) :: set_host => d_oacc_hll_set_host + procedure, pass(a) :: set_sync => d_oacc_hll_set_sync + procedure, pass(a) :: set_dev => d_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => d_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => d_oacc_hll_sync + procedure, pass(a) :: free_dev_space => d_oacc_hll_free_dev_space + procedure, pass(a) :: free => d_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_d_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_d_oacc_hll_csmv + procedure, pass(a) :: scals => psb_d_oacc_hll_scals + procedure, pass(a) :: scalv => psb_d_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_hll_mold end type psb_d_oacc_hll_sparse_mat @@ -154,7 +154,7 @@ module psb_d_oacc_hll_mat_mod contains - subroutine d_oacc_hll_free_space(a) + subroutine d_oacc_hll_free_dev_space(a) use psb_base_mod implicit none class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) return - end subroutine d_oacc_hll_free_space + end subroutine d_oacc_hll_free_dev_space subroutine d_oacc_hll_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_d_hll_sparse_mat%free() return @@ -249,7 +249,7 @@ contains res = 'HLLOA' end function d_oacc_hll_get_fmt - subroutine d_oacc_hll_sync_space(a) + subroutine d_oacc_hll_sync_dev_space(a) implicit none class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a @@ -258,7 +258,7 @@ contains if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) if (allocated(a%hkoffs)) call acc_create(a%hkoffs) - end subroutine d_oacc_hll_sync_space + end subroutine d_oacc_hll_sync_dev_space subroutine d_oacc_hll_sync(a) @@ -267,7 +267,7 @@ contains class(psb_d_oacc_hll_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index c7804bc1..3d71e54c 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -15,50 +15,50 @@ module psb_d_oacc_vect_mod integer :: state = is_host contains - procedure, pass(x) :: get_nrows => d_oacc_get_nrows - procedure, nopass :: get_fmt => d_oacc_get_fmt - - procedure, pass(x) :: all => d_oacc_vect_all - procedure, pass(x) :: zero => d_oacc_zero - procedure, pass(x) :: asb_m => d_oacc_asb_m - procedure, pass(x) :: sync => d_oacc_sync - procedure, pass(x) :: sync_space => d_oacc_sync_space - procedure, pass(x) :: bld_x => d_oacc_bld_x - procedure, pass(x) :: bld_mn => d_oacc_bld_mn - procedure, pass(x) :: free => d_oacc_vect_free - procedure, pass(x) :: ins_a => d_oacc_ins_a - procedure, pass(x) :: ins_v => d_oacc_ins_v - procedure, pass(x) :: is_host => d_oacc_is_host - procedure, pass(x) :: is_dev => d_oacc_is_dev - procedure, pass(x) :: is_sync => d_oacc_is_sync - procedure, pass(x) :: set_host => d_oacc_set_host - procedure, pass(x) :: set_dev => d_oacc_set_dev - procedure, pass(x) :: set_sync => d_oacc_set_sync - procedure, pass(x) :: set_scal => d_oacc_set_scal - - procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf - procedure, pass(y) :: sctb => d_oacc_sctb - procedure, pass(y) :: sctb_x => d_oacc_sctb_x - procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf - - procedure, pass(x) :: get_size => d_oacc_get_size - - procedure, pass(x) :: dot_v => d_oacc_vect_dot - procedure, pass(x) :: dot_a => d_oacc_dot_a - procedure, pass(y) :: axpby_v => d_oacc_axpby_v - procedure, pass(y) :: axpby_a => d_oacc_axpby_a - procedure, pass(z) :: upd_xyz => d_oacc_upd_xyz - procedure, pass(y) :: mlt_a => d_oacc_mlt_a - procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => psb_d_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => psb_d_oacc_mlt_v_2 - procedure, pass(x) :: scal => d_oacc_scal - procedure, pass(x) :: nrm2 => d_oacc_nrm2 - procedure, pass(x) :: amax => d_oacc_amax - procedure, pass(x) :: asum => d_oacc_asum - procedure, pass(x) :: absval1 => d_oacc_absval1 - procedure, pass(x) :: absval2 => d_oacc_absval2 + procedure, pass(x) :: get_nrows => d_oacc_get_nrows + procedure, nopass :: get_fmt => d_oacc_get_fmt + + procedure, pass(x) :: all => d_oacc_vect_all + procedure, pass(x) :: zero => d_oacc_zero + procedure, pass(x) :: asb_m => d_oacc_asb_m + procedure, pass(x) :: sync => d_oacc_sync + procedure, pass(x) :: sync_dev_space => d_oacc_sync_dev_space + procedure, pass(x) :: bld_x => d_oacc_bld_x + procedure, pass(x) :: bld_mn => d_oacc_bld_mn + procedure, pass(x) :: free => d_oacc_vect_free + procedure, pass(x) :: ins_a => d_oacc_ins_a + procedure, pass(x) :: ins_v => d_oacc_ins_v + procedure, pass(x) :: is_host => d_oacc_is_host + procedure, pass(x) :: is_dev => d_oacc_is_dev + procedure, pass(x) :: is_sync => d_oacc_is_sync + procedure, pass(x) :: set_host => d_oacc_set_host + procedure, pass(x) :: set_dev => d_oacc_set_dev + procedure, pass(x) :: set_sync => d_oacc_set_sync + procedure, pass(x) :: set_scal => d_oacc_set_scal + + procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf + procedure, pass(y) :: sctb => d_oacc_sctb + procedure, pass(y) :: sctb_x => d_oacc_sctb_x + procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf + + procedure, pass(x) :: get_size => d_oacc_get_size + + procedure, pass(x) :: dot_v => d_oacc_vect_dot + procedure, pass(x) :: dot_a => d_oacc_dot_a + procedure, pass(y) :: axpby_v => d_oacc_axpby_v + procedure, pass(y) :: axpby_a => d_oacc_axpby_a + procedure, pass(z) :: upd_xyz => d_oacc_upd_xyz + procedure, pass(y) :: mlt_a => d_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_d_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_d_oacc_mlt_v_2 + procedure, pass(x) :: scal => d_oacc_scal + procedure, pass(x) :: nrm2 => d_oacc_nrm2 + procedure, pass(x) :: amax => d_oacc_amax + procedure, pass(x) :: asum => d_oacc_asum + procedure, pass(x) :: absval1 => d_oacc_absval1 + procedure, pass(x) :: absval2 => d_oacc_absval2 final :: d_oacc_final_vect_free end type psb_d_vect_oacc @@ -117,7 +117,7 @@ contains integer(psb_ipk_) :: i n = min(size(x%v), size(y%v)) - select type (yy => y) + select type (yy => y) class is (psb_d_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -287,7 +287,7 @@ contains info = psb_success_ - select type(xx => x) + select type(xx => x) type is (psb_d_vect_oacc) if ((beta /= dzero) .and. y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() @@ -354,11 +354,11 @@ contains info = psb_success_ gpu_done = .false. - select type(xx => x) + select type(xx => x) class is (psb_d_vect_oacc) - select type(yy => y) + select type(yy => y) class is (psb_d_vect_oacc) - select type(zz => z) + select type(zz => z) class is (psb_d_vect_oacc) if ((beta /= dzero) .and. yy%is_host()) call yy%sync() if ((delta /= dzero) .and. zz%is_host()) call zz%sync() @@ -405,7 +405,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() @@ -432,7 +432,7 @@ contains class(psb_d_vect_oacc) :: y integer(psb_ipk_) :: info, ni - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -485,7 +485,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -512,7 +512,7 @@ contains info = 0 - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -544,9 +544,9 @@ contains if (psb_errstatus_fatal()) return done_oacc = .false. - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) - select type(vval => val) + select type(vval => val) type is (psb_d_vect_oacc) if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() @@ -561,11 +561,11 @@ contains end select if (.not.done_oacc) then - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) if (virl%is_dev()) call virl%sync() end select - select type(vval => val) + select type(vval => val) type is (psb_d_vect_oacc) if (vval%is_dev()) call vval%sync() end select @@ -611,7 +611,7 @@ contains call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine d_oacc_bld_mn @@ -633,7 +633,7 @@ contains end if x%v(:) = this(:) call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine d_oacc_bld_x @@ -719,7 +719,7 @@ contains res = dzero !write(0,*) 'dot_v' - select type(yy => y) + select type(yy => y) type is (psb_d_base_vect_type) if (x%is_dev()) call x%sync() res = ddot(n, x%v, 1, yy%v, 1) @@ -762,11 +762,11 @@ contains end function d_oacc_dot_a - subroutine d_oacc_sync_space(x) + subroutine d_oacc_sync_dev_space(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x if (allocated(x%v)) call acc_create(x%v) - end subroutine d_oacc_sync_space + end subroutine d_oacc_sync_dev_space subroutine d_oacc_sync(x) implicit none @@ -840,7 +840,7 @@ contains i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine d_oacc_vect_all subroutine d_oacc_final_vect_free(x) diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index 8c813134..42226f0c 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -13,34 +13,34 @@ module psb_i_oacc_vect_mod integer :: state = is_host contains - procedure, pass(x) :: get_nrows => i_oacc_get_nrows - procedure, nopass :: get_fmt => i_oacc_get_fmt - - procedure, pass(x) :: all => i_oacc_vect_all - procedure, pass(x) :: zero => i_oacc_zero - procedure, pass(x) :: asb_m => i_oacc_asb_m - procedure, pass(x) :: sync => i_oacc_sync - procedure, pass(x) :: sync_space => i_oacc_sync_space - procedure, pass(x) :: bld_x => i_oacc_bld_x - procedure, pass(x) :: bld_mn => i_oacc_bld_mn - procedure, pass(x) :: free => i_oacc_vect_free - procedure, pass(x) :: ins_a => i_oacc_ins_a - procedure, pass(x) :: ins_v => i_oacc_ins_v - procedure, pass(x) :: is_host => i_oacc_is_host - procedure, pass(x) :: is_dev => i_oacc_is_dev - procedure, pass(x) :: is_sync => i_oacc_is_sync - procedure, pass(x) :: set_host => i_oacc_set_host - procedure, pass(x) :: set_dev => i_oacc_set_dev - procedure, pass(x) :: set_sync => i_oacc_set_sync - procedure, pass(x) :: set_scal => i_oacc_set_scal - - procedure, pass(x) :: gthzv_x => i_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => i_oacc_gthzbuf - procedure, pass(y) :: sctb => i_oacc_sctb - procedure, pass(y) :: sctb_x => i_oacc_sctb_x - procedure, pass(y) :: sctb_buf => i_oacc_sctb_buf - - procedure, pass(x) :: get_size => i_oacc_get_size + procedure, pass(x) :: get_nrows => i_oacc_get_nrows + procedure, nopass :: get_fmt => i_oacc_get_fmt + + procedure, pass(x) :: all => i_oacc_vect_all + procedure, pass(x) :: zero => i_oacc_zero + procedure, pass(x) :: asb_m => i_oacc_asb_m + procedure, pass(x) :: sync => i_oacc_sync + procedure, pass(x) :: sync_dev_space => i_oacc_sync_dev_space + procedure, pass(x) :: bld_x => i_oacc_bld_x + procedure, pass(x) :: bld_mn => i_oacc_bld_mn + procedure, pass(x) :: free => i_oacc_vect_free + procedure, pass(x) :: ins_a => i_oacc_ins_a + procedure, pass(x) :: ins_v => i_oacc_ins_v + procedure, pass(x) :: is_host => i_oacc_is_host + procedure, pass(x) :: is_dev => i_oacc_is_dev + procedure, pass(x) :: is_sync => i_oacc_is_sync + procedure, pass(x) :: set_host => i_oacc_set_host + procedure, pass(x) :: set_dev => i_oacc_set_dev + procedure, pass(x) :: set_sync => i_oacc_set_sync + procedure, pass(x) :: set_scal => i_oacc_set_scal + + procedure, pass(x) :: gthzv_x => i_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => i_oacc_gthzbuf + procedure, pass(y) :: sctb => i_oacc_sctb + procedure, pass(y) :: sctb_x => i_oacc_sctb_x + procedure, pass(y) :: sctb_buf => i_oacc_sctb_buf + + procedure, pass(x) :: get_size => i_oacc_get_size final :: i_oacc_final_vect_free end type psb_i_vect_oacc @@ -63,7 +63,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() @@ -90,7 +90,7 @@ contains class(psb_i_vect_oacc) :: y integer(psb_ipk_) :: info, ni - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -143,7 +143,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -170,7 +170,7 @@ contains info = 0 - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -202,9 +202,9 @@ contains if (psb_errstatus_fatal()) return done_oacc = .false. - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) - select type(vval => val) + select type(vval => val) type is (psb_i_vect_oacc) if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() @@ -219,11 +219,11 @@ contains end select if (.not.done_oacc) then - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) if (virl%is_dev()) call virl%sync() end select - select type(vval => val) + select type(vval => val) type is (psb_i_vect_oacc) if (vval%is_dev()) call vval%sync() end select @@ -269,7 +269,7 @@ contains call psb_errpush(info, 'i_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine i_oacc_bld_mn @@ -291,7 +291,7 @@ contains end if x%v(:) = this(:) call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine i_oacc_bld_x @@ -366,11 +366,11 @@ contains end function i_oacc_get_fmt - subroutine i_oacc_sync_space(x) + subroutine i_oacc_sync_dev_space(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x if (allocated(x%v)) call acc_create(x%v) - end subroutine i_oacc_sync_space + end subroutine i_oacc_sync_dev_space subroutine i_oacc_sync(x) implicit none @@ -444,7 +444,7 @@ contains i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine i_oacc_vect_all subroutine i_oacc_final_vect_free(x) diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 index 9ff100bc..eb9b2b9a 100644 --- a/openacc/psb_l_oacc_vect_mod.F90 +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -15,34 +15,34 @@ module psb_l_oacc_vect_mod integer :: state = is_host contains - procedure, pass(x) :: get_nrows => l_oacc_get_nrows - procedure, nopass :: get_fmt => l_oacc_get_fmt - - procedure, pass(x) :: all => l_oacc_vect_all - procedure, pass(x) :: zero => l_oacc_zero - procedure, pass(x) :: asb_m => l_oacc_asb_m - procedure, pass(x) :: sync => l_oacc_sync - procedure, pass(x) :: sync_space => l_oacc_sync_space - procedure, pass(x) :: bld_x => l_oacc_bld_x - procedure, pass(x) :: bld_mn => l_oacc_bld_mn - procedure, pass(x) :: free => l_oacc_vect_free - procedure, pass(x) :: ins_a => l_oacc_ins_a - procedure, pass(x) :: ins_v => l_oacc_ins_v - procedure, pass(x) :: is_host => l_oacc_is_host - procedure, pass(x) :: is_dev => l_oacc_is_dev - procedure, pass(x) :: is_sync => l_oacc_is_sync - procedure, pass(x) :: set_host => l_oacc_set_host - procedure, pass(x) :: set_dev => l_oacc_set_dev - procedure, pass(x) :: set_sync => l_oacc_set_sync - procedure, pass(x) :: set_scal => l_oacc_set_scal - - procedure, pass(x) :: gthzv_x => l_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => l_oacc_gthzbuf - procedure, pass(y) :: sctb => l_oacc_sctb - procedure, pass(y) :: sctb_x => l_oacc_sctb_x - procedure, pass(y) :: sctb_buf => l_oacc_sctb_buf - - procedure, pass(x) :: get_size => l_oacc_get_size + procedure, pass(x) :: get_nrows => l_oacc_get_nrows + procedure, nopass :: get_fmt => l_oacc_get_fmt + + procedure, pass(x) :: all => l_oacc_vect_all + procedure, pass(x) :: zero => l_oacc_zero + procedure, pass(x) :: asb_m => l_oacc_asb_m + procedure, pass(x) :: sync => l_oacc_sync + procedure, pass(x) :: sync_dev_space => l_oacc_sync_dev_space + procedure, pass(x) :: bld_x => l_oacc_bld_x + procedure, pass(x) :: bld_mn => l_oacc_bld_mn + procedure, pass(x) :: free => l_oacc_vect_free + procedure, pass(x) :: ins_a => l_oacc_ins_a + procedure, pass(x) :: ins_v => l_oacc_ins_v + procedure, pass(x) :: is_host => l_oacc_is_host + procedure, pass(x) :: is_dev => l_oacc_is_dev + procedure, pass(x) :: is_sync => l_oacc_is_sync + procedure, pass(x) :: set_host => l_oacc_set_host + procedure, pass(x) :: set_dev => l_oacc_set_dev + procedure, pass(x) :: set_sync => l_oacc_set_sync + procedure, pass(x) :: set_scal => l_oacc_set_scal + + procedure, pass(x) :: gthzv_x => l_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => l_oacc_gthzbuf + procedure, pass(y) :: sctb => l_oacc_sctb + procedure, pass(y) :: sctb_x => l_oacc_sctb_x + procedure, pass(y) :: sctb_buf => l_oacc_sctb_buf + + procedure, pass(x) :: get_size => l_oacc_get_size final :: l_oacc_final_vect_free end type psb_l_vect_oacc @@ -65,7 +65,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() @@ -92,7 +92,7 @@ contains class(psb_l_vect_oacc) :: y integer(psb_ipk_) :: info, ni - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -145,7 +145,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -172,7 +172,7 @@ contains info = 0 - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -204,9 +204,9 @@ contains if (psb_errstatus_fatal()) return done_oacc = .false. - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) - select type(vval => val) + select type(vval => val) type is (psb_l_vect_oacc) if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() @@ -221,11 +221,11 @@ contains end select if (.not.done_oacc) then - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) if (virl%is_dev()) call virl%sync() end select - select type(vval => val) + select type(vval => val) type is (psb_l_vect_oacc) if (vval%is_dev()) call vval%sync() end select @@ -271,7 +271,7 @@ contains call psb_errpush(info, 'l_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine l_oacc_bld_mn @@ -293,7 +293,7 @@ contains end if x%v(:) = this(:) call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine l_oacc_bld_x @@ -368,11 +368,11 @@ contains end function l_oacc_get_fmt - subroutine l_oacc_sync_space(x) + subroutine l_oacc_sync_dev_space(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x if (allocated(x%v)) call acc_create(x%v) - end subroutine l_oacc_sync_space + end subroutine l_oacc_sync_dev_space subroutine l_oacc_sync(x) implicit none @@ -446,7 +446,7 @@ contains i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine l_oacc_vect_all subroutine l_oacc_final_vect_free(x) diff --git a/openacc/psb_s_oacc_csr_mat_mod.F90 b/openacc/psb_s_oacc_csr_mat_mod.F90 index b577daac..64a5f9a1 100644 --- a/openacc/psb_s_oacc_csr_mat_mod.F90 +++ b/openacc/psb_s_oacc_csr_mat_mod.F90 @@ -13,32 +13,32 @@ module psb_s_oacc_csr_mat_mod type, extends(psb_s_csr_sparse_mat) :: psb_s_oacc_csr_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => s_oacc_csr_get_fmt - procedure, pass(a) :: sizeof => s_oacc_csr_sizeof - procedure, pass(a) :: vect_mv => psb_s_oacc_csr_vect_mv - procedure, pass(a) :: in_vect_sv => psb_s_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_s_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_s_oacc_csr_csmv - procedure, pass(a) :: scals => psb_s_oacc_csr_scals - procedure, pass(a) :: scalv => psb_s_oacc_csr_scal - procedure, pass(a) :: reallocate_nz => psb_s_oacc_csr_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_s_oacc_csr_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_s_oacc_csr_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_s_oacc_csr_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_s_oacc_csr_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_s_oacc_csr_mv_from_fmt - procedure, pass(a) :: free => s_oacc_csr_free - procedure, pass(a) :: mold => psb_s_oacc_csr_mold - procedure, pass(a) :: all => s_oacc_csr_all - procedure, pass(a) :: is_host => s_oacc_csr_is_host - procedure, pass(a) :: is_sync => s_oacc_csr_is_sync - procedure, pass(a) :: is_dev => s_oacc_csr_is_dev - procedure, pass(a) :: set_host => s_oacc_csr_set_host - procedure, pass(a) :: set_sync => s_oacc_csr_set_sync - procedure, pass(a) :: set_dev => s_oacc_csr_set_dev - procedure, pass(a) :: free_space => s_oacc_csr_free_space - procedure, pass(a) :: sync_space => s_oacc_csr_sync_space - procedure, pass(a) :: sync => s_oacc_csr_sync + procedure, nopass :: get_fmt => s_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => s_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_s_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_s_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_s_oacc_csr_csmv + procedure, pass(a) :: scals => psb_s_oacc_csr_scals + procedure, pass(a) :: scalv => psb_s_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => s_oacc_csr_free + procedure, pass(a) :: mold => psb_s_oacc_csr_mold + procedure, pass(a) :: all => s_oacc_csr_all + procedure, pass(a) :: is_host => s_oacc_csr_is_host + procedure, pass(a) :: is_sync => s_oacc_csr_is_sync + procedure, pass(a) :: is_dev => s_oacc_csr_is_dev + procedure, pass(a) :: set_host => s_oacc_csr_set_host + procedure, pass(a) :: set_sync => s_oacc_csr_set_sync + procedure, pass(a) :: set_dev => s_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => s_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => s_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => s_oacc_csr_sync end type psb_s_oacc_csr_sparse_mat interface @@ -156,7 +156,7 @@ module psb_s_oacc_csr_mat_mod contains - subroutine s_oacc_csr_free_space(a) + subroutine s_oacc_csr_free_dev_space(a) use psb_base_mod implicit none class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%irp)) call acc_delete_finalize(a%irp) return - end subroutine s_oacc_csr_free_space + end subroutine s_oacc_csr_free_dev_space subroutine s_oacc_csr_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_s_csr_sparse_mat%free() return @@ -218,7 +218,7 @@ contains allocate(a%ja(nz),stat=info) allocate(a%irp(m+1),stat=info) if (info == 0) call a%set_host() - if (info == 0) call a%sync_space() + if (info == 0) call a%sync_dev_space() end subroutine s_oacc_csr_all function s_oacc_csr_is_host(a) result(res) @@ -266,13 +266,13 @@ contains a%devstate = is_dev end subroutine s_oacc_csr_set_dev - subroutine s_oacc_csr_sync_space(a) + subroutine s_oacc_csr_sync_dev_space(a) implicit none class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a if (allocated(a%val)) call acc_create(a%val) if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irp)) call acc_create(a%irp) - end subroutine s_oacc_csr_sync_space + end subroutine s_oacc_csr_sync_dev_space subroutine s_oacc_csr_sync(a) implicit none @@ -280,7 +280,7 @@ contains class(psb_s_oacc_csr_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 index 793bf353..2893c3e5 100644 --- a/openacc/psb_s_oacc_ell_mat_mod.F90 +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_s_oacc_ell_mat_mod type, extends(psb_s_ell_sparse_mat) :: psb_s_oacc_ell_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => s_oacc_ell_get_fmt - procedure, pass(a) :: sizeof => s_oacc_ell_sizeof - procedure, pass(a) :: is_host => s_oacc_ell_is_host - procedure, pass(a) :: is_sync => s_oacc_ell_is_sync - procedure, pass(a) :: is_dev => s_oacc_ell_is_dev - procedure, pass(a) :: set_host => s_oacc_ell_set_host - procedure, pass(a) :: set_sync => s_oacc_ell_set_sync - procedure, pass(a) :: set_dev => s_oacc_ell_set_dev - procedure, pass(a) :: sync_space => s_oacc_ell_sync_space - procedure, pass(a) :: sync => s_oacc_ell_sync - procedure, pass(a) :: free_space => s_oacc_ell_free_space - procedure, pass(a) :: free => s_oacc_ell_free - procedure, pass(a) :: vect_mv => psb_s_oacc_ell_vect_mv - procedure, pass(a) :: in_vect_sv => psb_s_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_s_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_s_oacc_ell_csmv - procedure, pass(a) :: scals => psb_s_oacc_ell_scals - procedure, pass(a) :: scalv => psb_s_oacc_ell_scal - procedure, pass(a) :: reallocate_nz => psb_s_oacc_ell_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_s_oacc_ell_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_s_oacc_ell_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_s_oacc_ell_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_s_oacc_ell_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_s_oacc_ell_mv_from_fmt - procedure, pass(a) :: mold => psb_s_oacc_ell_mold + procedure, nopass :: get_fmt => s_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => s_oacc_ell_sizeof + procedure, pass(a) :: is_host => s_oacc_ell_is_host + procedure, pass(a) :: is_sync => s_oacc_ell_is_sync + procedure, pass(a) :: is_dev => s_oacc_ell_is_dev + procedure, pass(a) :: set_host => s_oacc_ell_set_host + procedure, pass(a) :: set_sync => s_oacc_ell_set_sync + procedure, pass(a) :: set_dev => s_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => s_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => s_oacc_ell_sync + procedure, pass(a) :: free_dev_space => s_oacc_ell_free_dev_space + procedure, pass(a) :: free => s_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_s_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_s_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_s_oacc_ell_csmv + procedure, pass(a) :: scals => psb_s_oacc_ell_scals + procedure, pass(a) :: scalv => psb_s_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_s_oacc_ell_mold end type psb_s_oacc_ell_sparse_mat @@ -154,7 +154,7 @@ module psb_s_oacc_ell_mat_mod contains - subroutine s_oacc_ell_free_space(a) + subroutine s_oacc_ell_free_dev_space(a) use psb_base_mod implicit none class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a @@ -166,7 +166,7 @@ contains if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) return - end subroutine s_oacc_ell_free_space + end subroutine s_oacc_ell_free_dev_space subroutine s_oacc_ell_free(a) use psb_base_mod @@ -174,7 +174,7 @@ contains class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_s_ell_sparse_mat%free() return @@ -195,7 +195,7 @@ contains end function s_oacc_ell_sizeof - subroutine s_oacc_ell_sync_space(a) + subroutine s_oacc_ell_sync_dev_space(a) implicit none class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a @@ -203,7 +203,7 @@ contains if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) - end subroutine s_oacc_ell_sync_space + end subroutine s_oacc_ell_sync_dev_space function s_oacc_ell_is_host(a) result(res) implicit none @@ -262,7 +262,7 @@ contains class(psb_s_oacc_ell_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_s_oacc_hll_mat_mod.F90 b/openacc/psb_s_oacc_hll_mat_mod.F90 index 508591e4..583a281e 100644 --- a/openacc/psb_s_oacc_hll_mat_mod.F90 +++ b/openacc/psb_s_oacc_hll_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_s_oacc_hll_mat_mod type, extends(psb_s_hll_sparse_mat) :: psb_s_oacc_hll_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => s_oacc_hll_get_fmt - procedure, pass(a) :: sizeof => s_oacc_hll_sizeof - procedure, pass(a) :: is_host => s_oacc_hll_is_host - procedure, pass(a) :: is_sync => s_oacc_hll_is_sync - procedure, pass(a) :: is_dev => s_oacc_hll_is_dev - procedure, pass(a) :: set_host => s_oacc_hll_set_host - procedure, pass(a) :: set_sync => s_oacc_hll_set_sync - procedure, pass(a) :: set_dev => s_oacc_hll_set_dev - procedure, pass(a) :: sync_space => s_oacc_hll_sync_space - procedure, pass(a) :: sync => s_oacc_hll_sync - procedure, pass(a) :: free_space => s_oacc_hll_free_space - procedure, pass(a) :: free => s_oacc_hll_free - procedure, pass(a) :: vect_mv => psb_s_oacc_hll_vect_mv - procedure, pass(a) :: in_vect_sv => psb_s_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_s_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_s_oacc_hll_csmv - procedure, pass(a) :: scals => psb_s_oacc_hll_scals - procedure, pass(a) :: scalv => psb_s_oacc_hll_scal - procedure, pass(a) :: reallocate_nz => psb_s_oacc_hll_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_s_oacc_hll_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_s_oacc_hll_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_s_oacc_hll_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_s_oacc_hll_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_s_oacc_hll_mv_from_fmt - procedure, pass(a) :: mold => psb_s_oacc_hll_mold + procedure, nopass :: get_fmt => s_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => s_oacc_hll_sizeof + procedure, pass(a) :: is_host => s_oacc_hll_is_host + procedure, pass(a) :: is_sync => s_oacc_hll_is_sync + procedure, pass(a) :: is_dev => s_oacc_hll_is_dev + procedure, pass(a) :: set_host => s_oacc_hll_set_host + procedure, pass(a) :: set_sync => s_oacc_hll_set_sync + procedure, pass(a) :: set_dev => s_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => s_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => s_oacc_hll_sync + procedure, pass(a) :: free_dev_space => s_oacc_hll_free_dev_space + procedure, pass(a) :: free => s_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_s_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_s_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_s_oacc_hll_csmv + procedure, pass(a) :: scals => psb_s_oacc_hll_scals + procedure, pass(a) :: scalv => psb_s_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_s_oacc_hll_mold end type psb_s_oacc_hll_sparse_mat @@ -154,7 +154,7 @@ module psb_s_oacc_hll_mat_mod contains - subroutine s_oacc_hll_free_space(a) + subroutine s_oacc_hll_free_dev_space(a) use psb_base_mod implicit none class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) return - end subroutine s_oacc_hll_free_space + end subroutine s_oacc_hll_free_dev_space subroutine s_oacc_hll_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_s_hll_sparse_mat%free() return @@ -249,7 +249,7 @@ contains res = 'HLLOA' end function s_oacc_hll_get_fmt - subroutine s_oacc_hll_sync_space(a) + subroutine s_oacc_hll_sync_dev_space(a) implicit none class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a @@ -258,7 +258,7 @@ contains if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) if (allocated(a%hkoffs)) call acc_create(a%hkoffs) - end subroutine s_oacc_hll_sync_space + end subroutine s_oacc_hll_sync_dev_space subroutine s_oacc_hll_sync(a) @@ -267,7 +267,7 @@ contains class(psb_s_oacc_hll_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 7ce4292f..16b45461 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -15,50 +15,50 @@ module psb_s_oacc_vect_mod integer :: state = is_host contains - procedure, pass(x) :: get_nrows => s_oacc_get_nrows - procedure, nopass :: get_fmt => s_oacc_get_fmt - - procedure, pass(x) :: all => s_oacc_vect_all - procedure, pass(x) :: zero => s_oacc_zero - procedure, pass(x) :: asb_m => s_oacc_asb_m - procedure, pass(x) :: sync => s_oacc_sync - procedure, pass(x) :: sync_space => s_oacc_sync_space - procedure, pass(x) :: bld_x => s_oacc_bld_x - procedure, pass(x) :: bld_mn => s_oacc_bld_mn - procedure, pass(x) :: free => s_oacc_vect_free - procedure, pass(x) :: ins_a => s_oacc_ins_a - procedure, pass(x) :: ins_v => s_oacc_ins_v - procedure, pass(x) :: is_host => s_oacc_is_host - procedure, pass(x) :: is_dev => s_oacc_is_dev - procedure, pass(x) :: is_sync => s_oacc_is_sync - procedure, pass(x) :: set_host => s_oacc_set_host - procedure, pass(x) :: set_dev => s_oacc_set_dev - procedure, pass(x) :: set_sync => s_oacc_set_sync - procedure, pass(x) :: set_scal => s_oacc_set_scal - - procedure, pass(x) :: gthzv_x => s_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => s_oacc_gthzbuf - procedure, pass(y) :: sctb => s_oacc_sctb - procedure, pass(y) :: sctb_x => s_oacc_sctb_x - procedure, pass(y) :: sctb_buf => s_oacc_sctb_buf - - procedure, pass(x) :: get_size => s_oacc_get_size - - procedure, pass(x) :: dot_v => s_oacc_vect_dot - procedure, pass(x) :: dot_a => s_oacc_dot_a - procedure, pass(y) :: axpby_v => s_oacc_axpby_v - procedure, pass(y) :: axpby_a => s_oacc_axpby_a - procedure, pass(z) :: upd_xyz => s_oacc_upd_xyz - procedure, pass(y) :: mlt_a => s_oacc_mlt_a - procedure, pass(z) :: mlt_a_2 => s_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => psb_s_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => psb_s_oacc_mlt_v_2 - procedure, pass(x) :: scal => s_oacc_scal - procedure, pass(x) :: nrm2 => s_oacc_nrm2 - procedure, pass(x) :: amax => s_oacc_amax - procedure, pass(x) :: asum => s_oacc_asum - procedure, pass(x) :: absval1 => s_oacc_absval1 - procedure, pass(x) :: absval2 => s_oacc_absval2 + procedure, pass(x) :: get_nrows => s_oacc_get_nrows + procedure, nopass :: get_fmt => s_oacc_get_fmt + + procedure, pass(x) :: all => s_oacc_vect_all + procedure, pass(x) :: zero => s_oacc_zero + procedure, pass(x) :: asb_m => s_oacc_asb_m + procedure, pass(x) :: sync => s_oacc_sync + procedure, pass(x) :: sync_dev_space => s_oacc_sync_dev_space + procedure, pass(x) :: bld_x => s_oacc_bld_x + procedure, pass(x) :: bld_mn => s_oacc_bld_mn + procedure, pass(x) :: free => s_oacc_vect_free + procedure, pass(x) :: ins_a => s_oacc_ins_a + procedure, pass(x) :: ins_v => s_oacc_ins_v + procedure, pass(x) :: is_host => s_oacc_is_host + procedure, pass(x) :: is_dev => s_oacc_is_dev + procedure, pass(x) :: is_sync => s_oacc_is_sync + procedure, pass(x) :: set_host => s_oacc_set_host + procedure, pass(x) :: set_dev => s_oacc_set_dev + procedure, pass(x) :: set_sync => s_oacc_set_sync + procedure, pass(x) :: set_scal => s_oacc_set_scal + + procedure, pass(x) :: gthzv_x => s_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => s_oacc_gthzbuf + procedure, pass(y) :: sctb => s_oacc_sctb + procedure, pass(y) :: sctb_x => s_oacc_sctb_x + procedure, pass(y) :: sctb_buf => s_oacc_sctb_buf + + procedure, pass(x) :: get_size => s_oacc_get_size + + procedure, pass(x) :: dot_v => s_oacc_vect_dot + procedure, pass(x) :: dot_a => s_oacc_dot_a + procedure, pass(y) :: axpby_v => s_oacc_axpby_v + procedure, pass(y) :: axpby_a => s_oacc_axpby_a + procedure, pass(z) :: upd_xyz => s_oacc_upd_xyz + procedure, pass(y) :: mlt_a => s_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => s_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_s_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_s_oacc_mlt_v_2 + procedure, pass(x) :: scal => s_oacc_scal + procedure, pass(x) :: nrm2 => s_oacc_nrm2 + procedure, pass(x) :: amax => s_oacc_amax + procedure, pass(x) :: asum => s_oacc_asum + procedure, pass(x) :: absval1 => s_oacc_absval1 + procedure, pass(x) :: absval2 => s_oacc_absval2 final :: s_oacc_final_vect_free end type psb_s_vect_oacc @@ -117,7 +117,7 @@ contains integer(psb_ipk_) :: i n = min(size(x%v), size(y%v)) - select type (yy => y) + select type (yy => y) class is (psb_s_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -287,7 +287,7 @@ contains info = psb_success_ - select type(xx => x) + select type(xx => x) type is (psb_s_vect_oacc) if ((beta /= szero) .and. y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() @@ -354,11 +354,11 @@ contains info = psb_success_ gpu_done = .false. - select type(xx => x) + select type(xx => x) class is (psb_s_vect_oacc) - select type(yy => y) + select type(yy => y) class is (psb_s_vect_oacc) - select type(zz => z) + select type(zz => z) class is (psb_s_vect_oacc) if ((beta /= szero) .and. yy%is_host()) call yy%sync() if ((delta /= szero) .and. zz%is_host()) call zz%sync() @@ -405,7 +405,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() @@ -432,7 +432,7 @@ contains class(psb_s_vect_oacc) :: y integer(psb_ipk_) :: info, ni - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -485,7 +485,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -512,7 +512,7 @@ contains info = 0 - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -544,9 +544,9 @@ contains if (psb_errstatus_fatal()) return done_oacc = .false. - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) - select type(vval => val) + select type(vval => val) type is (psb_s_vect_oacc) if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() @@ -561,11 +561,11 @@ contains end select if (.not.done_oacc) then - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) if (virl%is_dev()) call virl%sync() end select - select type(vval => val) + select type(vval => val) type is (psb_s_vect_oacc) if (vval%is_dev()) call vval%sync() end select @@ -611,7 +611,7 @@ contains call psb_errpush(info, 's_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine s_oacc_bld_mn @@ -633,7 +633,7 @@ contains end if x%v(:) = this(:) call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine s_oacc_bld_x @@ -719,7 +719,7 @@ contains res = szero !write(0,*) 'dot_v' - select type(yy => y) + select type(yy => y) type is (psb_s_base_vect_type) if (x%is_dev()) call x%sync() res = ddot(n, x%v, 1, yy%v, 1) @@ -762,11 +762,11 @@ contains end function s_oacc_dot_a - subroutine s_oacc_sync_space(x) + subroutine s_oacc_sync_dev_space(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x if (allocated(x%v)) call acc_create(x%v) - end subroutine s_oacc_sync_space + end subroutine s_oacc_sync_dev_space subroutine s_oacc_sync(x) implicit none @@ -840,7 +840,7 @@ contains i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine s_oacc_vect_all subroutine s_oacc_final_vect_free(x) diff --git a/openacc/psb_z_oacc_csr_mat_mod.F90 b/openacc/psb_z_oacc_csr_mat_mod.F90 index dbafb391..47973825 100644 --- a/openacc/psb_z_oacc_csr_mat_mod.F90 +++ b/openacc/psb_z_oacc_csr_mat_mod.F90 @@ -13,32 +13,32 @@ module psb_z_oacc_csr_mat_mod type, extends(psb_z_csr_sparse_mat) :: psb_z_oacc_csr_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => z_oacc_csr_get_fmt - procedure, pass(a) :: sizeof => z_oacc_csr_sizeof - procedure, pass(a) :: vect_mv => psb_z_oacc_csr_vect_mv - procedure, pass(a) :: in_vect_sv => psb_z_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_z_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_z_oacc_csr_csmv - procedure, pass(a) :: scals => psb_z_oacc_csr_scals - procedure, pass(a) :: scalv => psb_z_oacc_csr_scal - procedure, pass(a) :: reallocate_nz => psb_z_oacc_csr_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_z_oacc_csr_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_z_oacc_csr_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_z_oacc_csr_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_z_oacc_csr_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_z_oacc_csr_mv_from_fmt - procedure, pass(a) :: free => z_oacc_csr_free - procedure, pass(a) :: mold => psb_z_oacc_csr_mold - procedure, pass(a) :: all => z_oacc_csr_all - procedure, pass(a) :: is_host => z_oacc_csr_is_host - procedure, pass(a) :: is_sync => z_oacc_csr_is_sync - procedure, pass(a) :: is_dev => z_oacc_csr_is_dev - procedure, pass(a) :: set_host => z_oacc_csr_set_host - procedure, pass(a) :: set_sync => z_oacc_csr_set_sync - procedure, pass(a) :: set_dev => z_oacc_csr_set_dev - procedure, pass(a) :: free_space => z_oacc_csr_free_space - procedure, pass(a) :: sync_space => z_oacc_csr_sync_space - procedure, pass(a) :: sync => z_oacc_csr_sync + procedure, nopass :: get_fmt => z_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => z_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_z_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_csr_inner_vect_sv + procedure, pass(a) :: csmm => psb_z_oacc_csr_csmm + procedure, pass(a) :: csmv => psb_z_oacc_csr_csmv + procedure, pass(a) :: scals => psb_z_oacc_csr_scals + procedure, pass(a) :: scalv => psb_z_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => z_oacc_csr_free + procedure, pass(a) :: mold => psb_z_oacc_csr_mold + procedure, pass(a) :: all => z_oacc_csr_all + procedure, pass(a) :: is_host => z_oacc_csr_is_host + procedure, pass(a) :: is_sync => z_oacc_csr_is_sync + procedure, pass(a) :: is_dev => z_oacc_csr_is_dev + procedure, pass(a) :: set_host => z_oacc_csr_set_host + procedure, pass(a) :: set_sync => z_oacc_csr_set_sync + procedure, pass(a) :: set_dev => z_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => z_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => z_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => z_oacc_csr_sync end type psb_z_oacc_csr_sparse_mat interface @@ -156,7 +156,7 @@ module psb_z_oacc_csr_mat_mod contains - subroutine z_oacc_csr_free_space(a) + subroutine z_oacc_csr_free_dev_space(a) use psb_base_mod implicit none class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%irp)) call acc_delete_finalize(a%irp) return - end subroutine z_oacc_csr_free_space + end subroutine z_oacc_csr_free_dev_space subroutine z_oacc_csr_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_z_csr_sparse_mat%free() return @@ -218,7 +218,7 @@ contains allocate(a%ja(nz),stat=info) allocate(a%irp(m+1),stat=info) if (info == 0) call a%set_host() - if (info == 0) call a%sync_space() + if (info == 0) call a%sync_dev_space() end subroutine z_oacc_csr_all function z_oacc_csr_is_host(a) result(res) @@ -266,13 +266,13 @@ contains a%devstate = is_dev end subroutine z_oacc_csr_set_dev - subroutine z_oacc_csr_sync_space(a) + subroutine z_oacc_csr_sync_dev_space(a) implicit none class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a if (allocated(a%val)) call acc_create(a%val) if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irp)) call acc_create(a%irp) - end subroutine z_oacc_csr_sync_space + end subroutine z_oacc_csr_sync_dev_space subroutine z_oacc_csr_sync(a) implicit none @@ -280,7 +280,7 @@ contains class(psb_z_oacc_csr_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 index 76b0182d..4013ee9d 100644 --- a/openacc/psb_z_oacc_ell_mat_mod.F90 +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_z_oacc_ell_mat_mod type, extends(psb_z_ell_sparse_mat) :: psb_z_oacc_ell_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => z_oacc_ell_get_fmt - procedure, pass(a) :: sizeof => z_oacc_ell_sizeof - procedure, pass(a) :: is_host => z_oacc_ell_is_host - procedure, pass(a) :: is_sync => z_oacc_ell_is_sync - procedure, pass(a) :: is_dev => z_oacc_ell_is_dev - procedure, pass(a) :: set_host => z_oacc_ell_set_host - procedure, pass(a) :: set_sync => z_oacc_ell_set_sync - procedure, pass(a) :: set_dev => z_oacc_ell_set_dev - procedure, pass(a) :: sync_space => z_oacc_ell_sync_space - procedure, pass(a) :: sync => z_oacc_ell_sync - procedure, pass(a) :: free_space => z_oacc_ell_free_space - procedure, pass(a) :: free => z_oacc_ell_free - procedure, pass(a) :: vect_mv => psb_z_oacc_ell_vect_mv - procedure, pass(a) :: in_vect_sv => psb_z_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_z_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_z_oacc_ell_csmv - procedure, pass(a) :: scals => psb_z_oacc_ell_scals - procedure, pass(a) :: scalv => psb_z_oacc_ell_scal - procedure, pass(a) :: reallocate_nz => psb_z_oacc_ell_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_z_oacc_ell_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_z_oacc_ell_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_z_oacc_ell_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_z_oacc_ell_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_z_oacc_ell_mv_from_fmt - procedure, pass(a) :: mold => psb_z_oacc_ell_mold + procedure, nopass :: get_fmt => z_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => z_oacc_ell_sizeof + procedure, pass(a) :: is_host => z_oacc_ell_is_host + procedure, pass(a) :: is_sync => z_oacc_ell_is_sync + procedure, pass(a) :: is_dev => z_oacc_ell_is_dev + procedure, pass(a) :: set_host => z_oacc_ell_set_host + procedure, pass(a) :: set_sync => z_oacc_ell_set_sync + procedure, pass(a) :: set_dev => z_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => z_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => z_oacc_ell_sync + procedure, pass(a) :: free_dev_space => z_oacc_ell_free_dev_space + procedure, pass(a) :: free => z_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_z_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_ell_inner_vect_sv + procedure, pass(a) :: csmm => psb_z_oacc_ell_csmm + procedure, pass(a) :: csmv => psb_z_oacc_ell_csmv + procedure, pass(a) :: scals => psb_z_oacc_ell_scals + procedure, pass(a) :: scalv => psb_z_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_z_oacc_ell_mold end type psb_z_oacc_ell_sparse_mat @@ -154,7 +154,7 @@ module psb_z_oacc_ell_mat_mod contains - subroutine z_oacc_ell_free_space(a) + subroutine z_oacc_ell_free_dev_space(a) use psb_base_mod implicit none class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a @@ -166,7 +166,7 @@ contains if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) return - end subroutine z_oacc_ell_free_space + end subroutine z_oacc_ell_free_dev_space subroutine z_oacc_ell_free(a) use psb_base_mod @@ -174,7 +174,7 @@ contains class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_z_ell_sparse_mat%free() return @@ -195,7 +195,7 @@ contains end function z_oacc_ell_sizeof - subroutine z_oacc_ell_sync_space(a) + subroutine z_oacc_ell_sync_dev_space(a) implicit none class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a @@ -203,7 +203,7 @@ contains if (allocated(a%ja)) call acc_create(a%ja) if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) - end subroutine z_oacc_ell_sync_space + end subroutine z_oacc_ell_sync_dev_space function z_oacc_ell_is_host(a) result(res) implicit none @@ -262,7 +262,7 @@ contains class(psb_z_oacc_ell_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_z_oacc_hll_mat_mod.F90 b/openacc/psb_z_oacc_hll_mat_mod.F90 index 4a657fd1..289b78ac 100644 --- a/openacc/psb_z_oacc_hll_mat_mod.F90 +++ b/openacc/psb_z_oacc_hll_mat_mod.F90 @@ -12,31 +12,31 @@ module psb_z_oacc_hll_mat_mod type, extends(psb_z_hll_sparse_mat) :: psb_z_oacc_hll_sparse_mat integer(psb_ipk_) :: devstate = is_host contains - procedure, nopass :: get_fmt => z_oacc_hll_get_fmt - procedure, pass(a) :: sizeof => z_oacc_hll_sizeof - procedure, pass(a) :: is_host => z_oacc_hll_is_host - procedure, pass(a) :: is_sync => z_oacc_hll_is_sync - procedure, pass(a) :: is_dev => z_oacc_hll_is_dev - procedure, pass(a) :: set_host => z_oacc_hll_set_host - procedure, pass(a) :: set_sync => z_oacc_hll_set_sync - procedure, pass(a) :: set_dev => z_oacc_hll_set_dev - procedure, pass(a) :: sync_space => z_oacc_hll_sync_space - procedure, pass(a) :: sync => z_oacc_hll_sync - procedure, pass(a) :: free_space => z_oacc_hll_free_space - procedure, pass(a) :: free => z_oacc_hll_free - procedure, pass(a) :: vect_mv => psb_z_oacc_hll_vect_mv - procedure, pass(a) :: in_vect_sv => psb_z_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_z_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_z_oacc_hll_csmv - procedure, pass(a) :: scals => psb_z_oacc_hll_scals - procedure, pass(a) :: scalv => psb_z_oacc_hll_scal - procedure, pass(a) :: reallocate_nz => psb_z_oacc_hll_reallocate_nz - procedure, pass(a) :: allocate_mnnz => psb_z_oacc_hll_allocate_mnnz - procedure, pass(a) :: cp_from_coo => psb_z_oacc_hll_cp_from_coo - procedure, pass(a) :: cp_from_fmt => psb_z_oacc_hll_cp_from_fmt - procedure, pass(a) :: mv_from_coo => psb_z_oacc_hll_mv_from_coo - procedure, pass(a) :: mv_from_fmt => psb_z_oacc_hll_mv_from_fmt - procedure, pass(a) :: mold => psb_z_oacc_hll_mold + procedure, nopass :: get_fmt => z_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => z_oacc_hll_sizeof + procedure, pass(a) :: is_host => z_oacc_hll_is_host + procedure, pass(a) :: is_sync => z_oacc_hll_is_sync + procedure, pass(a) :: is_dev => z_oacc_hll_is_dev + procedure, pass(a) :: set_host => z_oacc_hll_set_host + procedure, pass(a) :: set_sync => z_oacc_hll_set_sync + procedure, pass(a) :: set_dev => z_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => z_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => z_oacc_hll_sync + procedure, pass(a) :: free_dev_space => z_oacc_hll_free_dev_space + procedure, pass(a) :: free => z_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_z_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_hll_inner_vect_sv + procedure, pass(a) :: csmm => psb_z_oacc_hll_csmm + procedure, pass(a) :: csmv => psb_z_oacc_hll_csmv + procedure, pass(a) :: scals => psb_z_oacc_hll_scals + procedure, pass(a) :: scalv => psb_z_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_z_oacc_hll_mold end type psb_z_oacc_hll_sparse_mat @@ -154,7 +154,7 @@ module psb_z_oacc_hll_mat_mod contains - subroutine z_oacc_hll_free_space(a) + subroutine z_oacc_hll_free_dev_space(a) use psb_base_mod implicit none class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a @@ -167,7 +167,7 @@ contains if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) return - end subroutine z_oacc_hll_free_space + end subroutine z_oacc_hll_free_dev_space subroutine z_oacc_hll_free(a) use psb_base_mod @@ -175,7 +175,7 @@ contains class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - call a%free_space() + call a%free_dev_space() call a%psb_z_hll_sparse_mat%free() return @@ -249,7 +249,7 @@ contains res = 'HLLOA' end function z_oacc_hll_get_fmt - subroutine z_oacc_hll_sync_space(a) + subroutine z_oacc_hll_sync_dev_space(a) implicit none class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a @@ -258,7 +258,7 @@ contains if (allocated(a%irn)) call acc_create(a%irn) if (allocated(a%idiag)) call acc_create(a%idiag) if (allocated(a%hkoffs)) call acc_create(a%hkoffs) - end subroutine z_oacc_hll_sync_space + end subroutine z_oacc_hll_sync_dev_space subroutine z_oacc_hll_sync(a) @@ -267,7 +267,7 @@ contains class(psb_z_oacc_hll_sparse_mat), pointer :: tmpa integer(psb_ipk_) :: info - tmpa => a + tmpa => a if (a%is_dev()) then call acc_update_self(a%val) call acc_update_self(a%ja) diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 5d6f07be..9e6bbb2d 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -15,50 +15,50 @@ module psb_z_oacc_vect_mod integer :: state = is_host contains - procedure, pass(x) :: get_nrows => z_oacc_get_nrows - procedure, nopass :: get_fmt => z_oacc_get_fmt - - procedure, pass(x) :: all => z_oacc_vect_all - procedure, pass(x) :: zero => z_oacc_zero - procedure, pass(x) :: asb_m => z_oacc_asb_m - procedure, pass(x) :: sync => z_oacc_sync - procedure, pass(x) :: sync_space => z_oacc_sync_space - procedure, pass(x) :: bld_x => z_oacc_bld_x - procedure, pass(x) :: bld_mn => z_oacc_bld_mn - procedure, pass(x) :: free => z_oacc_vect_free - procedure, pass(x) :: ins_a => z_oacc_ins_a - procedure, pass(x) :: ins_v => z_oacc_ins_v - procedure, pass(x) :: is_host => z_oacc_is_host - procedure, pass(x) :: is_dev => z_oacc_is_dev - procedure, pass(x) :: is_sync => z_oacc_is_sync - procedure, pass(x) :: set_host => z_oacc_set_host - procedure, pass(x) :: set_dev => z_oacc_set_dev - procedure, pass(x) :: set_sync => z_oacc_set_sync - procedure, pass(x) :: set_scal => z_oacc_set_scal - - procedure, pass(x) :: gthzv_x => z_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => z_oacc_gthzbuf - procedure, pass(y) :: sctb => z_oacc_sctb - procedure, pass(y) :: sctb_x => z_oacc_sctb_x - procedure, pass(y) :: sctb_buf => z_oacc_sctb_buf - - procedure, pass(x) :: get_size => z_oacc_get_size - - procedure, pass(x) :: dot_v => z_oacc_vect_dot - procedure, pass(x) :: dot_a => z_oacc_dot_a - procedure, pass(y) :: axpby_v => z_oacc_axpby_v - procedure, pass(y) :: axpby_a => z_oacc_axpby_a - procedure, pass(z) :: upd_xyz => z_oacc_upd_xyz - procedure, pass(y) :: mlt_a => z_oacc_mlt_a - procedure, pass(z) :: mlt_a_2 => z_oacc_mlt_a_2 - procedure, pass(y) :: mlt_v => psb_z_oacc_mlt_v - procedure, pass(z) :: mlt_v_2 => psb_z_oacc_mlt_v_2 - procedure, pass(x) :: scal => z_oacc_scal - procedure, pass(x) :: nrm2 => z_oacc_nrm2 - procedure, pass(x) :: amax => z_oacc_amax - procedure, pass(x) :: asum => z_oacc_asum - procedure, pass(x) :: absval1 => z_oacc_absval1 - procedure, pass(x) :: absval2 => z_oacc_absval2 + procedure, pass(x) :: get_nrows => z_oacc_get_nrows + procedure, nopass :: get_fmt => z_oacc_get_fmt + + procedure, pass(x) :: all => z_oacc_vect_all + procedure, pass(x) :: zero => z_oacc_zero + procedure, pass(x) :: asb_m => z_oacc_asb_m + procedure, pass(x) :: sync => z_oacc_sync + procedure, pass(x) :: sync_dev_space => z_oacc_sync_dev_space + procedure, pass(x) :: bld_x => z_oacc_bld_x + procedure, pass(x) :: bld_mn => z_oacc_bld_mn + procedure, pass(x) :: free => z_oacc_vect_free + procedure, pass(x) :: ins_a => z_oacc_ins_a + procedure, pass(x) :: ins_v => z_oacc_ins_v + procedure, pass(x) :: is_host => z_oacc_is_host + procedure, pass(x) :: is_dev => z_oacc_is_dev + procedure, pass(x) :: is_sync => z_oacc_is_sync + procedure, pass(x) :: set_host => z_oacc_set_host + procedure, pass(x) :: set_dev => z_oacc_set_dev + procedure, pass(x) :: set_sync => z_oacc_set_sync + procedure, pass(x) :: set_scal => z_oacc_set_scal + + procedure, pass(x) :: gthzv_x => z_oacc_gthzv_x + procedure, pass(x) :: gthzbuf_x => z_oacc_gthzbuf + procedure, pass(y) :: sctb => z_oacc_sctb + procedure, pass(y) :: sctb_x => z_oacc_sctb_x + procedure, pass(y) :: sctb_buf => z_oacc_sctb_buf + + procedure, pass(x) :: get_size => z_oacc_get_size + + procedure, pass(x) :: dot_v => z_oacc_vect_dot + procedure, pass(x) :: dot_a => z_oacc_dot_a + procedure, pass(y) :: axpby_v => z_oacc_axpby_v + procedure, pass(y) :: axpby_a => z_oacc_axpby_a + procedure, pass(z) :: upd_xyz => z_oacc_upd_xyz + procedure, pass(y) :: mlt_a => z_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => z_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_z_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_z_oacc_mlt_v_2 + procedure, pass(x) :: scal => z_oacc_scal + procedure, pass(x) :: nrm2 => z_oacc_nrm2 + procedure, pass(x) :: amax => z_oacc_amax + procedure, pass(x) :: asum => z_oacc_asum + procedure, pass(x) :: absval1 => z_oacc_absval1 + procedure, pass(x) :: absval2 => z_oacc_absval2 final :: z_oacc_final_vect_free end type psb_z_vect_oacc @@ -117,7 +117,7 @@ contains integer(psb_ipk_) :: i n = min(size(x%v), size(y%v)) - select type (yy => y) + select type (yy => y) class is (psb_z_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -287,7 +287,7 @@ contains info = psb_success_ - select type(xx => x) + select type(xx => x) type is (psb_z_vect_oacc) if ((beta /= zzero) .and. y%is_host()) call y%sync() if (xx%is_host()) call xx%sync() @@ -354,11 +354,11 @@ contains info = psb_success_ gpu_done = .false. - select type(xx => x) + select type(xx => x) class is (psb_z_vect_oacc) - select type(yy => y) + select type(yy => y) class is (psb_z_vect_oacc) - select type(zz => z) + select type(zz => z) class is (psb_z_vect_oacc) if ((beta /= zzero) .and. yy%is_host()) call yy%sync() if ((delta /= zzero) .and. zz%is_host()) call zz%sync() @@ -405,7 +405,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() @@ -432,7 +432,7 @@ contains class(psb_z_vect_oacc) :: y integer(psb_ipk_) :: info, ni - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -485,7 +485,7 @@ contains return end if - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -512,7 +512,7 @@ contains info = 0 - select type(ii => idx) + select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() class default @@ -544,9 +544,9 @@ contains if (psb_errstatus_fatal()) return done_oacc = .false. - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) - select type(vval => val) + select type(vval => val) type is (psb_z_vect_oacc) if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() @@ -561,11 +561,11 @@ contains end select if (.not.done_oacc) then - select type(virl => irl) + select type(virl => irl) type is (psb_i_vect_oacc) if (virl%is_dev()) call virl%sync() end select - select type(vval => val) + select type(vval => val) type is (psb_z_vect_oacc) if (vval%is_dev()) call vval%sync() end select @@ -611,7 +611,7 @@ contains call psb_errpush(info, 'z_oacc_bld_mn', i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine z_oacc_bld_mn @@ -633,7 +633,7 @@ contains end if x%v(:) = this(:) call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine z_oacc_bld_x @@ -719,7 +719,7 @@ contains res = zzero !write(0,*) 'dot_v' - select type(yy => y) + select type(yy => y) type is (psb_z_base_vect_type) if (x%is_dev()) call x%sync() res = ddot(n, x%v, 1, yy%v, 1) @@ -762,11 +762,11 @@ contains end function z_oacc_dot_a - subroutine z_oacc_sync_space(x) + subroutine z_oacc_sync_dev_space(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x if (allocated(x%v)) call acc_create(x%v) - end subroutine z_oacc_sync_space + end subroutine z_oacc_sync_dev_space subroutine z_oacc_sync(x) implicit none @@ -840,7 +840,7 @@ contains i_err=(/n, n, n, n, n/)) end if call x%set_host() - call x%sync_space() + call x%sync_dev_space() end subroutine z_oacc_vect_all subroutine z_oacc_final_vect_free(x) From f783478df3a7d5398515cc30c52bef42743f9296 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 30 Aug 2024 16:03:04 +0200 Subject: [PATCH 36/86] Merge updates from V4 --- openacc/impl/Makefile | 136 +++++++++++++++++++----- openacc/impl/psb_c_oacc_csr_vect_mv.F90 | 37 +++++-- openacc/impl/psb_c_oacc_ell_vect_mv.F90 | 41 +++++-- openacc/impl/psb_c_oacc_hll_vect_mv.F90 | 37 +++++-- openacc/impl/psb_c_oacc_mlt_v_2.f90 | 37 ++----- openacc/impl/psb_d_oacc_csr_vect_mv.F90 | 37 +++++-- openacc/impl/psb_d_oacc_ell_vect_mv.F90 | 41 +++++-- openacc/impl/psb_d_oacc_hll_vect_mv.F90 | 37 +++++-- openacc/impl/psb_d_oacc_mlt_v_2.f90 | 37 ++----- openacc/impl/psb_s_oacc_csr_vect_mv.F90 | 37 +++++-- openacc/impl/psb_s_oacc_ell_vect_mv.F90 | 41 +++++-- openacc/impl/psb_s_oacc_hll_vect_mv.F90 | 37 +++++-- openacc/impl/psb_s_oacc_mlt_v_2.f90 | 37 ++----- openacc/impl/psb_z_oacc_csr_vect_mv.F90 | 37 +++++-- openacc/impl/psb_z_oacc_ell_vect_mv.F90 | 41 +++++-- openacc/impl/psb_z_oacc_hll_vect_mv.F90 | 37 +++++-- openacc/impl/psb_z_oacc_mlt_v_2.f90 | 37 ++----- openacc/psb_c_oacc_csr_mat_mod.F90 | 23 ---- openacc/psb_c_oacc_ell_mat_mod.F90 | 22 ---- openacc/psb_c_oacc_hll_mat_mod.F90 | 22 ---- openacc/psb_d_oacc_csr_mat_mod.F90 | 23 ---- openacc/psb_d_oacc_ell_mat_mod.F90 | 22 ---- openacc/psb_d_oacc_hll_mat_mod.F90 | 22 ---- openacc/psb_s_oacc_csr_mat_mod.F90 | 23 ---- openacc/psb_s_oacc_ell_mat_mod.F90 | 22 ---- openacc/psb_s_oacc_hll_mat_mod.F90 | 22 ---- openacc/psb_z_oacc_csr_mat_mod.F90 | 23 ---- openacc/psb_z_oacc_ell_mat_mod.F90 | 22 ---- openacc/psb_z_oacc_hll_mat_mod.F90 | 22 ---- 29 files changed, 512 insertions(+), 500 deletions(-) diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile index 244f23b1..e460598b 100755 --- a/openacc/impl/Makefile +++ b/openacc/impl/Makefile @@ -13,8 +13,6 @@ LIBNAME=libpsb_openacc.a OBJS= \ psb_s_oacc_csr_vect_mv.o \ psb_s_oacc_csr_inner_vect_sv.o \ -psb_s_oacc_csr_csmm.o \ -psb_s_oacc_csr_csmv.o \ psb_s_oacc_csr_scals.o \ psb_s_oacc_csr_scal.o \ psb_s_oacc_csr_allocate_mnnz.o \ @@ -28,8 +26,6 @@ psb_s_oacc_mlt_v_2.o \ psb_s_oacc_mlt_v.o \ psb_d_oacc_csr_vect_mv.o \ psb_d_oacc_csr_inner_vect_sv.o \ -psb_d_oacc_csr_csmm.o \ -psb_d_oacc_csr_csmv.o \ psb_d_oacc_csr_scals.o \ psb_d_oacc_csr_scal.o \ psb_d_oacc_csr_allocate_mnnz.o \ @@ -43,8 +39,6 @@ psb_d_oacc_mlt_v_2.o \ psb_d_oacc_mlt_v.o \ psb_c_oacc_csr_vect_mv.o \ psb_c_oacc_csr_inner_vect_sv.o \ -psb_c_oacc_csr_csmm.o \ -psb_c_oacc_csr_csmv.o \ psb_c_oacc_csr_scals.o \ psb_c_oacc_csr_scal.o \ psb_c_oacc_csr_allocate_mnnz.o \ @@ -58,8 +52,6 @@ psb_c_oacc_mlt_v_2.o \ psb_c_oacc_mlt_v.o \ psb_z_oacc_csr_vect_mv.o \ psb_z_oacc_csr_inner_vect_sv.o \ -psb_z_oacc_csr_csmm.o \ -psb_z_oacc_csr_csmv.o \ psb_z_oacc_csr_scals.o \ psb_z_oacc_csr_scal.o \ psb_z_oacc_csr_allocate_mnnz.o \ @@ -73,8 +65,6 @@ psb_z_oacc_mlt_v_2.o \ psb_z_oacc_mlt_v.o \ psb_s_oacc_ell_vect_mv.o \ psb_s_oacc_ell_inner_vect_sv.o \ -psb_s_oacc_ell_csmm.o \ -psb_s_oacc_ell_csmv.o \ psb_s_oacc_ell_scals.o \ psb_s_oacc_ell_scal.o \ psb_s_oacc_ell_reallocate_nz.o \ @@ -93,14 +83,10 @@ psb_s_oacc_hll_allocate_mnnz.o \ psb_s_oacc_hll_reallocate_nz.o \ psb_s_oacc_hll_scal.o \ psb_s_oacc_hll_scals.o \ -psb_s_oacc_hll_csmv.o \ -psb_s_oacc_hll_csmm.o \ psb_s_oacc_hll_inner_vect_sv.o \ psb_s_oacc_hll_vect_mv.o \ psb_d_oacc_ell_vect_mv.o \ psb_d_oacc_ell_inner_vect_sv.o \ -psb_d_oacc_ell_csmm.o \ -psb_d_oacc_ell_csmv.o \ psb_d_oacc_ell_scals.o \ psb_d_oacc_ell_scal.o \ psb_d_oacc_ell_reallocate_nz.o \ @@ -119,14 +105,10 @@ psb_d_oacc_hll_allocate_mnnz.o \ psb_d_oacc_hll_reallocate_nz.o \ psb_d_oacc_hll_scal.o \ psb_d_oacc_hll_scals.o \ -psb_d_oacc_hll_csmv.o \ -psb_d_oacc_hll_csmm.o \ psb_d_oacc_hll_inner_vect_sv.o \ psb_d_oacc_hll_vect_mv.o \ psb_c_oacc_ell_vect_mv.o \ psb_c_oacc_ell_inner_vect_sv.o \ -psb_c_oacc_ell_csmm.o \ -psb_c_oacc_ell_csmv.o \ psb_c_oacc_ell_scals.o \ psb_c_oacc_ell_scal.o \ psb_c_oacc_ell_reallocate_nz.o \ @@ -145,14 +127,10 @@ psb_c_oacc_hll_allocate_mnnz.o \ psb_c_oacc_hll_reallocate_nz.o \ psb_c_oacc_hll_scal.o \ psb_c_oacc_hll_scals.o \ -psb_c_oacc_hll_csmv.o \ -psb_c_oacc_hll_csmm.o \ psb_c_oacc_hll_inner_vect_sv.o \ psb_c_oacc_hll_vect_mv.o \ psb_z_oacc_ell_vect_mv.o \ psb_z_oacc_ell_inner_vect_sv.o \ -psb_z_oacc_ell_csmm.o \ -psb_z_oacc_ell_csmv.o \ psb_z_oacc_ell_scals.o \ psb_z_oacc_ell_scal.o \ psb_z_oacc_ell_reallocate_nz.o \ @@ -171,25 +149,127 @@ psb_z_oacc_hll_allocate_mnnz.o \ psb_z_oacc_hll_reallocate_nz.o \ psb_z_oacc_hll_scal.o \ psb_z_oacc_hll_scals.o \ -psb_z_oacc_hll_csmv.o \ -psb_z_oacc_hll_csmm.o \ +psb_z_oacc_hll_inner_vect_sv.o \ +psb_z_oacc_hll_vect_mv.o \ +psb_z_oacc_ell_vect_mv.o \ +psb_z_oacc_ell_inner_vect_sv.o \ +psb_z_oacc_ell_scals.o \ +psb_z_oacc_ell_scal.o \ +psb_z_oacc_ell_reallocate_nz.o \ +psb_z_oacc_ell_allocate_mnnz.o \ +psb_z_oacc_ell_cp_from_coo.o \ +psb_z_oacc_ell_cp_from_fmt.o \ +psb_z_oacc_ell_mv_from_coo.o \ +psb_z_oacc_ell_mv_from_fmt.o \ +psb_z_oacc_ell_mold.o \ +psb_z_oacc_hll_mold.o \ +psb_z_oacc_hll_mv_from_fmt.o \ +psb_z_oacc_hll_mv_from_coo.o \ +psb_z_oacc_hll_cp_from_fmt.o \ +psb_z_oacc_hll_cp_from_coo.o \ +psb_z_oacc_hll_allocate_mnnz.o \ +psb_z_oacc_hll_reallocate_nz.o \ +psb_z_oacc_hll_scal.o \ +psb_z_oacc_hll_scals.o \ psb_z_oacc_hll_inner_vect_sv.o \ psb_z_oacc_hll_vect_mv.o + objs: $(OBJS) lib: objs ar cur ../$(LIBNAME) $(OBJS) +psb_s_oacc_csr_vect_mv.o psb_s_oacc_csr_inner_vect_sv.o \ + psb_s_oacc_csr_scals.o \ + psb_s_oacc_csr_scal.o psb_s_oacc_csr_allocate_mnnz.o \ + psb_s_oacc_csr_reallocate_nz.o psb_s_oacc_csr_cp_from_coo.o \ + psb_s_oacc_csr_cp_from_fmt.o psb_s_oacc_csr_mv_from_coo.o \ + psb_s_oacc_csr_mv_from_fmt.o psb_s_oacc_csr_mold.o: $(UP)/psb_s_oacc_csr_mat_mod.o $(UP)/psb_s_oacc_vect_mod.o -#psb_d_oacc_csr_vect_mv.o psb_d_oacc_csr_inner_vect_sv.o \ - psb_d_oacc_csr_csmm.o psb_d_oacc_csr_csmv.o psb_d_oacc_csr_scals.o \ +psb_s_oacc_ell_vect_mv.o psb_s_oacc_ell_inner_vect_sv.o \ + psb_s_oacc_ell_scals.o \ + psb_s_oacc_ell_scal.o psb_s_oacc_ell_allocate_mnnz.o \ + psb_s_oacc_ell_reallocate_nz.o psb_s_oacc_ell_cp_from_coo.o \ + psb_s_oacc_ell_cp_from_fmt.o psb_s_oacc_ell_mv_from_coo.o \ + psb_s_oacc_ell_mv_from_fmt.o psb_s_oacc_ell_mold.o: $(UP)/psb_s_oacc_ell_mat_mod.o $(UP)/psb_s_oacc_vect_mod.o + +psb_s_oacc_hll_vect_mv.o psb_s_oacc_hll_inner_vect_sv.o \ + psb_s_oacc_hll_scals.o \ + psb_s_oacc_hll_scal.o psb_s_oacc_hll_allocate_mnnz.o \ + psb_s_oacc_hll_reallocate_nz.o psb_s_oacc_hll_cp_from_coo.o \ + psb_s_oacc_hll_cp_from_fmt.o psb_s_oacc_hll_mv_from_coo.o \ + psb_s_oacc_hll_mv_from_fmt.o psb_s_oacc_hll_mold.o: $(UP)/psb_s_oacc_hll_mat_mod.o $(UP)/psb_s_oacc_vect_mod.o + + +psb_d_oacc_csr_vect_mv.o psb_d_oacc_csr_inner_vect_sv.o \ + psb_d_oacc_csr_scals.o \ psb_d_oacc_csr_scal.o psb_d_oacc_csr_allocate_mnnz.o \ psb_d_oacc_csr_reallocate_nz.o psb_d_oacc_csr_cp_from_coo.o \ psb_d_oacc_csr_cp_from_fmt.o psb_d_oacc_csr_mv_from_coo.o \ - psb_d_oacc_csr_mv_from_fmt.o psb_d_oacc_csr_mold.o: $(UP)/psb_d_oacc_csr_mat_mod.o + psb_d_oacc_csr_mv_from_fmt.o psb_d_oacc_csr_mold.o: $(UP)/psb_d_oacc_csr_mat_mod.o $(UP)/psb_d_oacc_vect_mod.o + +psb_d_oacc_ell_vect_mv.o psb_d_oacc_ell_inner_vect_sv.o \ + psb_d_oacc_ell_scals.o \ + psb_d_oacc_ell_scal.o psb_d_oacc_ell_allocate_mnnz.o \ + psb_d_oacc_ell_reallocate_nz.o psb_d_oacc_ell_cp_from_coo.o \ + psb_d_oacc_ell_cp_from_fmt.o psb_d_oacc_ell_mv_from_coo.o \ + psb_d_oacc_ell_mv_from_fmt.o psb_d_oacc_ell_mold.o: $(UP)/psb_d_oacc_ell_mat_mod.o $(UP)/psb_d_oacc_vect_mod.o + +psb_d_oacc_hll_vect_mv.o psb_d_oacc_hll_inner_vect_sv.o \ + psb_d_oacc_hll_scals.o \ + psb_d_oacc_hll_scal.o psb_d_oacc_hll_allocate_mnnz.o \ + psb_d_oacc_hll_reallocate_nz.o psb_d_oacc_hll_cp_from_coo.o \ + psb_d_oacc_hll_cp_from_fmt.o psb_d_oacc_hll_mv_from_coo.o \ + psb_d_oacc_hll_mv_from_fmt.o psb_d_oacc_hll_mold.o: $(UP)/psb_d_oacc_hll_mat_mod.o $(UP)/psb_d_oacc_vect_mod.o + +psb_c_oacc_csr_vect_mv.o psb_c_oacc_csr_inner_vect_sv.o \ + psb_c_oacc_csr_scals.o \ + psb_c_oacc_csr_scal.o psb_c_oacc_csr_allocate_mnnz.o \ + psb_c_oacc_csr_reallocate_nz.o psb_c_oacc_csr_cp_from_coo.o \ + psb_c_oacc_csr_cp_from_fmt.o psb_c_oacc_csr_mv_from_coo.o \ + psb_c_oacc_csr_mv_from_fmt.o psb_c_oacc_csr_mold.o: $(UP)/psb_c_oacc_csr_mat_mod.o $(UP)/psb_c_oacc_vect_mod.o + +psb_c_oacc_ell_vect_mv.o psb_c_oacc_ell_inner_vect_sv.o \ + psb_c_oacc_ell_scals.o \ + psb_c_oacc_ell_scal.o psb_c_oacc_ell_allocate_mnnz.o \ + psb_c_oacc_ell_reallocate_nz.o psb_c_oacc_ell_cp_from_coo.o \ + psb_c_oacc_ell_cp_from_fmt.o psb_c_oacc_ell_mv_from_coo.o \ + psb_c_oacc_ell_mv_from_fmt.o psb_c_oacc_ell_mold.o: $(UP)/psb_c_oacc_ell_mat_mod.o $(UP)/psb_c_oacc_vect_mod.o + +psb_c_oacc_hll_vect_mv.o psb_c_oacc_hll_inner_vect_sv.o \ + psb_c_oacc_hll_scals.o \ + psb_c_oacc_hll_scal.o psb_c_oacc_hll_allocate_mnnz.o \ + psb_c_oacc_hll_reallocate_nz.o psb_c_oacc_hll_cp_from_coo.o \ + psb_c_oacc_hll_cp_from_fmt.o psb_c_oacc_hll_mv_from_coo.o \ + psb_c_oacc_hll_mv_from_fmt.o psb_c_oacc_hll_mold.o: $(UP)/psb_c_oacc_hll_mat_mod.o $(UP)/psb_c_oacc_vect_mod.o + + +psb_z_oacc_csr_vect_mv.o psb_z_oacc_csr_inner_vect_sv.o \ + psb_z_oacc_csr_scals.o \ + psb_z_oacc_csr_scal.o psb_z_oacc_csr_allocate_mnnz.o \ + psb_z_oacc_csr_reallocate_nz.o psb_z_oacc_csr_cp_from_coo.o \ + psb_z_oacc_csr_cp_from_fmt.o psb_z_oacc_csr_mv_from_coo.o \ + psb_z_oacc_csr_mv_from_fmt.o psb_z_oacc_csr_mold.o: $(UP)/psb_z_oacc_csr_mat_mod.o $(UP)/psb_z_oacc_vect_mod.o + +psb_z_oacc_ell_vect_mv.o psb_z_oacc_ell_inner_vect_sv.o \ + psb_z_oacc_ell_scals.o \ + psb_z_oacc_ell_scal.o psb_z_oacc_ell_allocate_mnnz.o \ + psb_z_oacc_ell_reallocate_nz.o psb_z_oacc_ell_cp_from_coo.o \ + psb_z_oacc_ell_cp_from_fmt.o psb_z_oacc_ell_mv_from_coo.o \ + psb_z_oacc_ell_mv_from_fmt.o psb_z_oacc_ell_mold.o: $(UP)/psb_z_oacc_ell_mat_mod.o $(UP)/psb_z_oacc_vect_mod.o + +psb_z_oacc_hll_vect_mv.o psb_z_oacc_hll_inner_vect_sv.o \ + psb_z_oacc_hll_scals.o \ + psb_z_oacc_hll_scal.o psb_z_oacc_hll_allocate_mnnz.o \ + psb_z_oacc_hll_reallocate_nz.o psb_z_oacc_hll_cp_from_coo.o \ + psb_z_oacc_hll_cp_from_fmt.o psb_z_oacc_hll_mv_from_coo.o \ + psb_z_oacc_hll_mv_from_fmt.o psb_z_oacc_hll_mold.o: $(UP)/psb_z_oacc_hll_mat_mod.o $(UP)/psb_z_oacc_vect_mod.o -#psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o: $(UP)/psb_d_oacc_vect_mod.o +psb_s_oacc_mlt_v_2.o psb_s_oacc_mlt_v.o: $(UP)/psb_s_oacc_vect_mod.o +psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o: $(UP)/psb_d_oacc_vect_mod.o +psb_c_oacc_mlt_v_2.o psb_c_oacc_mlt_v.o: $(UP)/psb_c_oacc_vect_mod.o +psb_z_oacc_mlt_v_2.o psb_z_oacc_mlt_v.o: $(UP)/psb_z_oacc_vect_mod.o clean: diff --git a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 index db56d9fc..3c6f6494 100644 --- a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -21,14 +23,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_c_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) diff --git a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 index f3e78d98..8113297b 100644 --- a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -18,19 +20,40 @@ contains nzt = a%nzt nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) - - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_c_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) diff --git a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 index 68141e42..551b1a29 100644 --- a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -23,14 +25,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_c_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) diff --git a/openacc/impl/psb_c_oacc_mlt_v_2.f90 b/openacc/impl/psb_c_oacc_mlt_v_2.f90 index b47cd1ae..ed0fc88e 100644 --- a/openacc/impl/psb_c_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_c_oacc_mlt_v_2.f90 @@ -9,10 +9,11 @@ subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy integer(psb_ipk_) :: i, n - logical :: conjgx_, conjgy_ + logical :: conjgx_, conjgy_, device_done conjgx_ = .false. conjgy_ = .false. + device_done = .false. if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') @@ -27,31 +28,10 @@ subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if ((beta /= czero) .and. (z%is_host())) call z%sync() call c_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() - class default - if (xx%is_dev()) call xx%sync() - if (yy%is_dev()) call yy%sync() - if ((beta /= czero) .and. (z%is_dev())) call z%sync() - !call c_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - end if - call z%set_host() + device_done = .true. end select - class default + end select + if (.not.device_done) then if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= czero) .and. (z%is_dev())) call z%sync() @@ -73,13 +53,14 @@ subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) end do end if call z%set_host() - end select + end if + contains subroutine c_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) implicit none integer(psb_ipk_), intent(in) :: n -complex(psb_spk_), intent(in) :: alpha, beta -complex(psb_spk_), intent(inout) :: x(:), y(:), z(:) + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(inout) :: x(:), y(:), z(:) integer(psb_ipk_), intent(out) :: info logical, intent(in) :: conjgx, conjgy diff --git a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 index 0001cc76..596f2b17 100644 --- a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -21,14 +23,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_d_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) diff --git a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 index 4239d049..ddd4bfc8 100644 --- a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -18,19 +20,40 @@ contains nzt = a%nzt nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) - - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_d_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) diff --git a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 index e7c47b7a..f971d61a 100644 --- a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -23,14 +25,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_d_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 index ce460924..7850329a 100644 --- a/openacc/impl/psb_d_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -9,10 +9,11 @@ subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy integer(psb_ipk_) :: i, n - logical :: conjgx_, conjgy_ + logical :: conjgx_, conjgy_, device_done conjgx_ = .false. conjgy_ = .false. + device_done = .false. if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') @@ -27,31 +28,10 @@ subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if ((beta /= dzero) .and. (z%is_host())) call z%sync() call d_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() - class default - if (xx%is_dev()) call xx%sync() - if (yy%is_dev()) call yy%sync() - if ((beta /= dzero) .and. (z%is_dev())) call z%sync() - !call d_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - end if - call z%set_host() + device_done = .true. end select - class default + end select + if (.not.device_done) then if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= dzero) .and. (z%is_dev())) call z%sync() @@ -73,13 +53,14 @@ subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) end do end if call z%set_host() - end select + end if + contains subroutine d_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) implicit none integer(psb_ipk_), intent(in) :: n -real(psb_dpk_), intent(in) :: alpha, beta -real(psb_dpk_), intent(inout) :: x(:), y(:), z(:) + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(inout) :: x(:), y(:), z(:) integer(psb_ipk_), intent(out) :: info logical, intent(in) :: conjgx, conjgy diff --git a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 index 13ee1651..2799bd05 100644 --- a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -21,14 +23,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_s_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) diff --git a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 index bbbdd6a3..81166643 100644 --- a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -18,19 +20,40 @@ contains nzt = a%nzt nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) - - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_s_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) diff --git a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 index efe9a9ca..e289f07c 100644 --- a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -23,14 +25,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_s_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) diff --git a/openacc/impl/psb_s_oacc_mlt_v_2.f90 b/openacc/impl/psb_s_oacc_mlt_v_2.f90 index 2ce7fe53..b97f2f08 100644 --- a/openacc/impl/psb_s_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_s_oacc_mlt_v_2.f90 @@ -9,10 +9,11 @@ subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy integer(psb_ipk_) :: i, n - logical :: conjgx_, conjgy_ + logical :: conjgx_, conjgy_, device_done conjgx_ = .false. conjgy_ = .false. + device_done = .false. if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') @@ -27,31 +28,10 @@ subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if ((beta /= szero) .and. (z%is_host())) call z%sync() call s_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() - class default - if (xx%is_dev()) call xx%sync() - if (yy%is_dev()) call yy%sync() - if ((beta /= szero) .and. (z%is_dev())) call z%sync() - !call s_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - end if - call z%set_host() + device_done = .true. end select - class default + end select + if (.not.device_done) then if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= szero) .and. (z%is_dev())) call z%sync() @@ -73,13 +53,14 @@ subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) end do end if call z%set_host() - end select + end if + contains subroutine s_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) implicit none integer(psb_ipk_), intent(in) :: n -real(psb_spk_), intent(in) :: alpha, beta -real(psb_spk_), intent(inout) :: x(:), y(:), z(:) + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(inout) :: x(:), y(:), z(:) integer(psb_ipk_), intent(out) :: info logical, intent(in) :: conjgx, conjgy diff --git a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 index cb34dce1..75cc693b 100644 --- a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -21,14 +23,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_z_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) diff --git a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 index ad8460b8..8d442c1d 100644 --- a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -18,19 +20,40 @@ contains nzt = a%nzt nc = size(a%ja,2) if ((n /= size(x%v)) .or. (m /= size(y%v))) then - write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) - - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_z_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) diff --git a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 index dbadf034..e373d6ff 100644 --- a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 @@ -11,6 +11,8 @@ contains character, optional, intent(in) :: trans integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra info = psb_success_ m = a%get_nrows() @@ -23,14 +25,35 @@ contains info = psb_err_invalid_mat_state_ return end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - if (a%is_host()) call a%sync() - if (x%is_host()) call x%sync() - if (y%is_host()) call y%sync() - - call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) - call y%set_dev() - + if (.not.tra) then + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_z_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if contains subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) diff --git a/openacc/impl/psb_z_oacc_mlt_v_2.f90 b/openacc/impl/psb_z_oacc_mlt_v_2.f90 index f69d863c..c13b348c 100644 --- a/openacc/impl/psb_z_oacc_mlt_v_2.f90 +++ b/openacc/impl/psb_z_oacc_mlt_v_2.f90 @@ -9,10 +9,11 @@ subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) integer(psb_ipk_), intent(out) :: info character(len=1), intent(in), optional :: conjgx, conjgy integer(psb_ipk_) :: i, n - logical :: conjgx_, conjgy_ + logical :: conjgx_, conjgy_, device_done conjgx_ = .false. conjgy_ = .false. + device_done = .false. if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') @@ -27,31 +28,10 @@ subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) if ((beta /= zzero) .and. (z%is_host())) call z%sync() call z_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) call z%set_dev() - class default - if (xx%is_dev()) call xx%sync() - if (yy%is_dev()) call yy%sync() - if ((beta /= zzero) .and. (z%is_dev())) call z%sync() - !call z_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) - if (conjgx_.and.conjgy_) then - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else if (conjgx_.and.(.not.conjgy_)) then - do i = 1, n - z%v(i) = alpha * conjg(xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - else if ((.not.conjgx_).and.(conjgy_)) then - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * conjg(yy%v(i)) + beta * z%v(i) - end do - else - do i = 1, n - z%v(i) = alpha * (xx%v(i)) * (yy%v(i)) + beta * z%v(i) - end do - end if - call z%set_host() + device_done = .true. end select - class default + end select + if (.not.device_done) then if (x%is_dev()) call x%sync() if (y%is_dev()) call y%sync() if ((beta /= zzero) .and. (z%is_dev())) call z%sync() @@ -73,13 +53,14 @@ subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) end do end if call z%set_host() - end select + end if + contains subroutine z_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) implicit none integer(psb_ipk_), intent(in) :: n -complex(psb_dpk_), intent(in) :: alpha, beta -complex(psb_dpk_), intent(inout) :: x(:), y(:), z(:) + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(inout) :: x(:), y(:), z(:) integer(psb_ipk_), intent(out) :: info logical, intent(in) :: conjgx, conjgy diff --git a/openacc/psb_c_oacc_csr_mat_mod.F90 b/openacc/psb_c_oacc_csr_mat_mod.F90 index a1f6e2c3..59794335 100644 --- a/openacc/psb_c_oacc_csr_mat_mod.F90 +++ b/openacc/psb_c_oacc_csr_mat_mod.F90 @@ -4,7 +4,6 @@ module psb_c_oacc_csr_mat_mod use openacc use psb_c_mat_mod use psb_c_oacc_vect_mod - !use oaccsparse_mod integer(psb_ipk_), parameter, private :: is_host = -1 integer(psb_ipk_), parameter, private :: is_sync = 0 @@ -17,8 +16,6 @@ module psb_c_oacc_csr_mat_mod procedure, pass(a) :: sizeof => c_oacc_csr_sizeof procedure, pass(a) :: vect_mv => psb_c_oacc_csr_vect_mv procedure, pass(a) :: in_vect_sv => psb_c_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_c_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_c_oacc_csr_csmv procedure, pass(a) :: scals => psb_c_oacc_csr_scals procedure, pass(a) :: scalv => psb_c_oacc_csr_scal procedure, pass(a) :: reallocate_nz => psb_c_oacc_csr_reallocate_nz @@ -93,26 +90,6 @@ module psb_c_oacc_csr_mat_mod end subroutine psb_c_oacc_csr_inner_vect_sv end interface - interface - module subroutine psb_c_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - class(psb_c_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta, x(:,:) - complex(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_c_oacc_csr_csmm - end interface - - interface - module subroutine psb_c_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - class(psb_c_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta, x(:) - complex(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_c_oacc_csr_csmv - end interface - interface module subroutine psb_c_oacc_csr_scals(d, a, info) class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 index 996d4628..f0559d26 100644 --- a/openacc/psb_c_oacc_ell_mat_mod.F90 +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_c_oacc_ell_mat_mod procedure, pass(a) :: free => c_oacc_ell_free procedure, pass(a) :: vect_mv => psb_c_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_c_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_c_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_c_oacc_ell_csmv procedure, pass(a) :: scals => psb_c_oacc_ell_scals procedure, pass(a) :: scalv => psb_c_oacc_ell_scal procedure, pass(a) :: reallocate_nz => psb_c_oacc_ell_reallocate_nz @@ -92,26 +90,6 @@ module psb_c_oacc_ell_mat_mod end subroutine psb_c_oacc_ell_inner_vect_sv end interface - interface - module subroutine psb_c_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - class(psb_c_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta, x(:,:) - complex(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_c_oacc_ell_csmm - end interface - - interface - module subroutine psb_c_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - class(psb_c_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta, x(:) - complex(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_c_oacc_ell_csmv - end interface - interface module subroutine psb_c_oacc_ell_scals(d, a, info) class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_c_oacc_hll_mat_mod.F90 b/openacc/psb_c_oacc_hll_mat_mod.F90 index ebcbf29e..93436224 100644 --- a/openacc/psb_c_oacc_hll_mat_mod.F90 +++ b/openacc/psb_c_oacc_hll_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_c_oacc_hll_mat_mod procedure, pass(a) :: free => c_oacc_hll_free procedure, pass(a) :: vect_mv => psb_c_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_c_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_c_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_c_oacc_hll_csmv procedure, pass(a) :: scals => psb_c_oacc_hll_scals procedure, pass(a) :: scalv => psb_c_oacc_hll_scal procedure, pass(a) :: reallocate_nz => psb_c_oacc_hll_reallocate_nz @@ -92,26 +90,6 @@ module psb_c_oacc_hll_mat_mod end subroutine psb_c_oacc_hll_inner_vect_sv end interface - interface - module subroutine psb_c_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - class(psb_c_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta, x(:,:) - complex(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_c_oacc_hll_csmm - end interface - - interface - module subroutine psb_c_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - class(psb_c_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta, x(:) - complex(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_c_oacc_hll_csmv - end interface - interface module subroutine psb_c_oacc_hll_scals(d, a, info) class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index a9d72eae..08b75575 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -4,7 +4,6 @@ module psb_d_oacc_csr_mat_mod use openacc use psb_d_mat_mod use psb_d_oacc_vect_mod - !use oaccsparse_mod integer(psb_ipk_), parameter, private :: is_host = -1 integer(psb_ipk_), parameter, private :: is_sync = 0 @@ -17,8 +16,6 @@ module psb_d_oacc_csr_mat_mod procedure, pass(a) :: sizeof => d_oacc_csr_sizeof procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv procedure, pass(a) :: in_vect_sv => psb_d_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_d_oacc_csr_csmv procedure, pass(a) :: scals => psb_d_oacc_csr_scals procedure, pass(a) :: scalv => psb_d_oacc_csr_scal procedure, pass(a) :: reallocate_nz => psb_d_oacc_csr_reallocate_nz @@ -93,26 +90,6 @@ module psb_d_oacc_csr_mat_mod end subroutine psb_d_oacc_csr_inner_vect_sv end interface - interface - module subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_csr_csmm - end interface - - interface - module subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_csr_csmv - end interface - interface module subroutine psb_d_oacc_csr_scals(d, a, info) class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 1409a1d6..3e25f576 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_d_oacc_ell_mat_mod procedure, pass(a) :: free => d_oacc_ell_free procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_d_oacc_ell_csmv procedure, pass(a) :: scals => psb_d_oacc_ell_scals procedure, pass(a) :: scalv => psb_d_oacc_ell_scal procedure, pass(a) :: reallocate_nz => psb_d_oacc_ell_reallocate_nz @@ -92,26 +90,6 @@ module psb_d_oacc_ell_mat_mod end subroutine psb_d_oacc_ell_inner_vect_sv end interface - interface - module subroutine psb_d_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_ell_csmm - end interface - - interface - module subroutine psb_d_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_ell_csmv - end interface - interface module subroutine psb_d_oacc_ell_scals(d, a, info) class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 index 15ae055e..084987e5 100644 --- a/openacc/psb_d_oacc_hll_mat_mod.F90 +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_d_oacc_hll_mat_mod procedure, pass(a) :: free => d_oacc_hll_free procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_d_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_d_oacc_hll_csmv procedure, pass(a) :: scals => psb_d_oacc_hll_scals procedure, pass(a) :: scalv => psb_d_oacc_hll_scal procedure, pass(a) :: reallocate_nz => psb_d_oacc_hll_reallocate_nz @@ -92,26 +90,6 @@ module psb_d_oacc_hll_mat_mod end subroutine psb_d_oacc_hll_inner_vect_sv end interface - interface - module subroutine psb_d_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_hll_csmm - end interface - - interface - module subroutine psb_d_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta, x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_d_oacc_hll_csmv - end interface - interface module subroutine psb_d_oacc_hll_scals(d, a, info) class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_s_oacc_csr_mat_mod.F90 b/openacc/psb_s_oacc_csr_mat_mod.F90 index 64a5f9a1..16668d25 100644 --- a/openacc/psb_s_oacc_csr_mat_mod.F90 +++ b/openacc/psb_s_oacc_csr_mat_mod.F90 @@ -4,7 +4,6 @@ module psb_s_oacc_csr_mat_mod use openacc use psb_s_mat_mod use psb_s_oacc_vect_mod - !use oaccsparse_mod integer(psb_ipk_), parameter, private :: is_host = -1 integer(psb_ipk_), parameter, private :: is_sync = 0 @@ -17,8 +16,6 @@ module psb_s_oacc_csr_mat_mod procedure, pass(a) :: sizeof => s_oacc_csr_sizeof procedure, pass(a) :: vect_mv => psb_s_oacc_csr_vect_mv procedure, pass(a) :: in_vect_sv => psb_s_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_s_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_s_oacc_csr_csmv procedure, pass(a) :: scals => psb_s_oacc_csr_scals procedure, pass(a) :: scalv => psb_s_oacc_csr_scal procedure, pass(a) :: reallocate_nz => psb_s_oacc_csr_reallocate_nz @@ -93,26 +90,6 @@ module psb_s_oacc_csr_mat_mod end subroutine psb_s_oacc_csr_inner_vect_sv end interface - interface - module subroutine psb_s_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - class(psb_s_oacc_csr_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta, x(:,:) - real(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_s_oacc_csr_csmm - end interface - - interface - module subroutine psb_s_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - class(psb_s_oacc_csr_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta, x(:) - real(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_s_oacc_csr_csmv - end interface - interface module subroutine psb_s_oacc_csr_scals(d, a, info) class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 index 2893c3e5..dcfc1850 100644 --- a/openacc/psb_s_oacc_ell_mat_mod.F90 +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_s_oacc_ell_mat_mod procedure, pass(a) :: free => s_oacc_ell_free procedure, pass(a) :: vect_mv => psb_s_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_s_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_s_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_s_oacc_ell_csmv procedure, pass(a) :: scals => psb_s_oacc_ell_scals procedure, pass(a) :: scalv => psb_s_oacc_ell_scal procedure, pass(a) :: reallocate_nz => psb_s_oacc_ell_reallocate_nz @@ -92,26 +90,6 @@ module psb_s_oacc_ell_mat_mod end subroutine psb_s_oacc_ell_inner_vect_sv end interface - interface - module subroutine psb_s_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - class(psb_s_oacc_ell_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta, x(:,:) - real(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_s_oacc_ell_csmm - end interface - - interface - module subroutine psb_s_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - class(psb_s_oacc_ell_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta, x(:) - real(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_s_oacc_ell_csmv - end interface - interface module subroutine psb_s_oacc_ell_scals(d, a, info) class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_s_oacc_hll_mat_mod.F90 b/openacc/psb_s_oacc_hll_mat_mod.F90 index 583a281e..0e7362f2 100644 --- a/openacc/psb_s_oacc_hll_mat_mod.F90 +++ b/openacc/psb_s_oacc_hll_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_s_oacc_hll_mat_mod procedure, pass(a) :: free => s_oacc_hll_free procedure, pass(a) :: vect_mv => psb_s_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_s_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_s_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_s_oacc_hll_csmv procedure, pass(a) :: scals => psb_s_oacc_hll_scals procedure, pass(a) :: scalv => psb_s_oacc_hll_scal procedure, pass(a) :: reallocate_nz => psb_s_oacc_hll_reallocate_nz @@ -92,26 +90,6 @@ module psb_s_oacc_hll_mat_mod end subroutine psb_s_oacc_hll_inner_vect_sv end interface - interface - module subroutine psb_s_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - class(psb_s_oacc_hll_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta, x(:,:) - real(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_s_oacc_hll_csmm - end interface - - interface - module subroutine psb_s_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - class(psb_s_oacc_hll_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta, x(:) - real(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_s_oacc_hll_csmv - end interface - interface module subroutine psb_s_oacc_hll_scals(d, a, info) class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_z_oacc_csr_mat_mod.F90 b/openacc/psb_z_oacc_csr_mat_mod.F90 index 47973825..fdb59b4b 100644 --- a/openacc/psb_z_oacc_csr_mat_mod.F90 +++ b/openacc/psb_z_oacc_csr_mat_mod.F90 @@ -4,7 +4,6 @@ module psb_z_oacc_csr_mat_mod use openacc use psb_z_mat_mod use psb_z_oacc_vect_mod - !use oaccsparse_mod integer(psb_ipk_), parameter, private :: is_host = -1 integer(psb_ipk_), parameter, private :: is_sync = 0 @@ -17,8 +16,6 @@ module psb_z_oacc_csr_mat_mod procedure, pass(a) :: sizeof => z_oacc_csr_sizeof procedure, pass(a) :: vect_mv => psb_z_oacc_csr_vect_mv procedure, pass(a) :: in_vect_sv => psb_z_oacc_csr_inner_vect_sv - procedure, pass(a) :: csmm => psb_z_oacc_csr_csmm - procedure, pass(a) :: csmv => psb_z_oacc_csr_csmv procedure, pass(a) :: scals => psb_z_oacc_csr_scals procedure, pass(a) :: scalv => psb_z_oacc_csr_scal procedure, pass(a) :: reallocate_nz => psb_z_oacc_csr_reallocate_nz @@ -93,26 +90,6 @@ module psb_z_oacc_csr_mat_mod end subroutine psb_z_oacc_csr_inner_vect_sv end interface - interface - module subroutine psb_z_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - class(psb_z_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - complex(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_z_oacc_csr_csmm - end interface - - interface - module subroutine psb_z_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - class(psb_z_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta, x(:) - complex(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_z_oacc_csr_csmv - end interface - interface module subroutine psb_z_oacc_csr_scals(d, a, info) class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 index 4013ee9d..9d09d43d 100644 --- a/openacc/psb_z_oacc_ell_mat_mod.F90 +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_z_oacc_ell_mat_mod procedure, pass(a) :: free => z_oacc_ell_free procedure, pass(a) :: vect_mv => psb_z_oacc_ell_vect_mv procedure, pass(a) :: in_vect_sv => psb_z_oacc_ell_inner_vect_sv - procedure, pass(a) :: csmm => psb_z_oacc_ell_csmm - procedure, pass(a) :: csmv => psb_z_oacc_ell_csmv procedure, pass(a) :: scals => psb_z_oacc_ell_scals procedure, pass(a) :: scalv => psb_z_oacc_ell_scal procedure, pass(a) :: reallocate_nz => psb_z_oacc_ell_reallocate_nz @@ -92,26 +90,6 @@ module psb_z_oacc_ell_mat_mod end subroutine psb_z_oacc_ell_inner_vect_sv end interface - interface - module subroutine psb_z_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - class(psb_z_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - complex(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_z_oacc_ell_csmm - end interface - - interface - module subroutine psb_z_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - class(psb_z_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta, x(:) - complex(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_z_oacc_ell_csmv - end interface - interface module subroutine psb_z_oacc_ell_scals(d, a, info) class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a diff --git a/openacc/psb_z_oacc_hll_mat_mod.F90 b/openacc/psb_z_oacc_hll_mat_mod.F90 index 289b78ac..9eb7d08c 100644 --- a/openacc/psb_z_oacc_hll_mat_mod.F90 +++ b/openacc/psb_z_oacc_hll_mat_mod.F90 @@ -26,8 +26,6 @@ module psb_z_oacc_hll_mat_mod procedure, pass(a) :: free => z_oacc_hll_free procedure, pass(a) :: vect_mv => psb_z_oacc_hll_vect_mv procedure, pass(a) :: in_vect_sv => psb_z_oacc_hll_inner_vect_sv - procedure, pass(a) :: csmm => psb_z_oacc_hll_csmm - procedure, pass(a) :: csmv => psb_z_oacc_hll_csmv procedure, pass(a) :: scals => psb_z_oacc_hll_scals procedure, pass(a) :: scalv => psb_z_oacc_hll_scal procedure, pass(a) :: reallocate_nz => psb_z_oacc_hll_reallocate_nz @@ -92,26 +90,6 @@ module psb_z_oacc_hll_mat_mod end subroutine psb_z_oacc_hll_inner_vect_sv end interface - interface - module subroutine psb_z_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - class(psb_z_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:) - complex(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_z_oacc_hll_csmm - end interface - - interface - module subroutine psb_z_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - class(psb_z_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta, x(:) - complex(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - end subroutine psb_z_oacc_hll_csmv - end interface - interface module subroutine psb_z_oacc_hll_scals(d, a, info) class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a From 6236f3489cde833eb81232bf97b4cf7005e21183 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 30 Aug 2024 16:05:08 +0200 Subject: [PATCH 37/86] Remove obsolete files --- openacc/impl/psb_c_oacc_csr_csmm.F90 | 86 ---------------------------- openacc/impl/psb_c_oacc_csr_csmv.F90 | 81 -------------------------- openacc/impl/psb_c_oacc_ell_csmm.F90 | 86 ---------------------------- openacc/impl/psb_c_oacc_ell_csmv.F90 | 82 -------------------------- openacc/impl/psb_c_oacc_hll_csmm.F90 | 86 ---------------------------- openacc/impl/psb_c_oacc_hll_csmv.F90 | 84 --------------------------- openacc/impl/psb_d_oacc_csr_csmm.F90 | 86 ---------------------------- openacc/impl/psb_d_oacc_csr_csmv.F90 | 81 -------------------------- openacc/impl/psb_d_oacc_ell_csmm.F90 | 86 ---------------------------- openacc/impl/psb_d_oacc_ell_csmv.F90 | 82 -------------------------- openacc/impl/psb_d_oacc_hll_csmm.F90 | 86 ---------------------------- openacc/impl/psb_d_oacc_hll_csmv.F90 | 84 --------------------------- openacc/impl/psb_s_oacc_csr_csmm.F90 | 86 ---------------------------- openacc/impl/psb_s_oacc_csr_csmv.F90 | 81 -------------------------- openacc/impl/psb_s_oacc_ell_csmm.F90 | 86 ---------------------------- openacc/impl/psb_s_oacc_ell_csmv.F90 | 82 -------------------------- openacc/impl/psb_s_oacc_hll_csmm.F90 | 86 ---------------------------- openacc/impl/psb_s_oacc_hll_csmv.F90 | 84 --------------------------- openacc/impl/psb_z_oacc_csr_csmm.F90 | 86 ---------------------------- openacc/impl/psb_z_oacc_csr_csmv.F90 | 81 -------------------------- openacc/impl/psb_z_oacc_ell_csmm.F90 | 86 ---------------------------- openacc/impl/psb_z_oacc_ell_csmv.F90 | 82 -------------------------- openacc/impl/psb_z_oacc_hll_csmm.F90 | 86 ---------------------------- openacc/impl/psb_z_oacc_hll_csmv.F90 | 84 --------------------------- 24 files changed, 2020 deletions(-) delete mode 100644 openacc/impl/psb_c_oacc_csr_csmm.F90 delete mode 100644 openacc/impl/psb_c_oacc_csr_csmv.F90 delete mode 100644 openacc/impl/psb_c_oacc_ell_csmm.F90 delete mode 100644 openacc/impl/psb_c_oacc_ell_csmv.F90 delete mode 100644 openacc/impl/psb_c_oacc_hll_csmm.F90 delete mode 100644 openacc/impl/psb_c_oacc_hll_csmv.F90 delete mode 100644 openacc/impl/psb_d_oacc_csr_csmm.F90 delete mode 100644 openacc/impl/psb_d_oacc_csr_csmv.F90 delete mode 100644 openacc/impl/psb_d_oacc_ell_csmm.F90 delete mode 100644 openacc/impl/psb_d_oacc_ell_csmv.F90 delete mode 100644 openacc/impl/psb_d_oacc_hll_csmm.F90 delete mode 100644 openacc/impl/psb_d_oacc_hll_csmv.F90 delete mode 100644 openacc/impl/psb_s_oacc_csr_csmm.F90 delete mode 100644 openacc/impl/psb_s_oacc_csr_csmv.F90 delete mode 100644 openacc/impl/psb_s_oacc_ell_csmm.F90 delete mode 100644 openacc/impl/psb_s_oacc_ell_csmv.F90 delete mode 100644 openacc/impl/psb_s_oacc_hll_csmm.F90 delete mode 100644 openacc/impl/psb_s_oacc_hll_csmv.F90 delete mode 100644 openacc/impl/psb_z_oacc_csr_csmm.F90 delete mode 100644 openacc/impl/psb_z_oacc_csr_csmv.F90 delete mode 100644 openacc/impl/psb_z_oacc_ell_csmm.F90 delete mode 100644 openacc/impl/psb_z_oacc_ell_csmv.F90 delete mode 100644 openacc/impl/psb_z_oacc_hll_csmm.F90 delete mode 100644 openacc/impl/psb_z_oacc_hll_csmv.F90 diff --git a/openacc/impl/psb_c_oacc_csr_csmm.F90 b/openacc/impl/psb_c_oacc_csr_csmm.F90 deleted file mode 100644 index 5bf0bad4..00000000 --- a/openacc/impl/psb_c_oacc_csr_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_csmm_impl - use psb_base_mod -contains - module subroutine psb_c_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_c_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta - complex(psb_spk_), intent(in) :: x(:,:) - complex(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n,k, nxy - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'c_oacc_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_c_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = a%irp(i), a%irp(i+1) - 1 - y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_c_oacc_csr_csmm -end submodule psb_c_oacc_csr_csmm_impl - diff --git a/openacc/impl/psb_c_oacc_csr_csmv.F90 b/openacc/impl/psb_c_oacc_csr_csmv.F90 deleted file mode 100644 index e5d5f24e..00000000 --- a/openacc/impl/psb_c_oacc_csr_csmv.F90 +++ /dev/null @@ -1,81 +0,0 @@ -submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_csmv_impl - use psb_base_mod -contains - module subroutine psb_c_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_c_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta - complex(psb_spk_), intent(in) :: x(:) - complex(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'c_oacc_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_c_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, n - do j = a%irp(i), a%irp(i+1) - 1 - y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_c_oacc_csr_csmv -end submodule psb_c_oacc_csr_csmv_impl - diff --git a/openacc/impl/psb_c_oacc_ell_csmm.F90 b/openacc/impl/psb_c_oacc_ell_csmm.F90 deleted file mode 100644 index 01ed0d8b..00000000 --- a/openacc/impl/psb_c_oacc_ell_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_csmm_impl - use psb_base_mod -contains - module subroutine psb_c_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_c_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta - complex(psb_spk_), intent(in) :: x(:,:) - complex(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'c_oacc_ell_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_c_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nzt = a%nzt - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = 1, nzt - y(i, j) = y(i, j) + alpha * a%val(i, k) * x(a%ja(i, k), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_c_oacc_ell_csmm -end submodule psb_c_oacc_ell_csmm_impl diff --git a/openacc/impl/psb_c_oacc_ell_csmv.F90 b/openacc/impl/psb_c_oacc_ell_csmv.F90 deleted file mode 100644 index dd5c1207..00000000 --- a/openacc/impl/psb_c_oacc_ell_csmv.F90 +++ /dev/null @@ -1,82 +0,0 @@ -submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_csmv_impl - use psb_base_mod -contains - module subroutine psb_c_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_c_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta - complex(psb_spk_), intent(in) :: x(:) - complex(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'c_oacc_ell_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_c_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nzt = a%nzt - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, m - do j = 1, nzt - y(i) = y(i) + alpha * a%val(i, j) * x(a%ja(i, j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_c_oacc_ell_csmv -end submodule psb_c_oacc_ell_csmv_impl diff --git a/openacc/impl/psb_c_oacc_hll_csmm.F90 b/openacc/impl/psb_c_oacc_hll_csmm.F90 deleted file mode 100644 index 6b0fc637..00000000 --- a/openacc/impl/psb_c_oacc_hll_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_csmm_impl - use psb_base_mod -contains - module subroutine psb_c_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_c_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta - complex(psb_spk_), intent(in) :: x(:,:) - complex(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'c_oacc_hll_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_c_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop present(a, x, y) - do j = 1, nxy - do k = 1, nhacks - do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 - y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_c_oacc_hll_csmm -end submodule psb_c_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_c_oacc_hll_csmv.F90 b/openacc/impl/psb_c_oacc_hll_csmv.F90 deleted file mode 100644 index f32e37b7..00000000 --- a/openacc/impl/psb_c_oacc_hll_csmv.F90 +++ /dev/null @@ -1,84 +0,0 @@ -submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_csmv_impl - use psb_base_mod -contains - module subroutine psb_c_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_c_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_spk_), intent(in) :: alpha, beta - complex(psb_spk_), intent(in) :: x(:) - complex(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, hksz, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'c_oacc_hll_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_c_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - hksz = a%hksz - nhacks = (a%get_nrows() + hksz - 1) / hksz - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - ! This loop nest cannot be run with collapse, since - ! the inner loop extent varies. - !$acc parallel loop present(a, x, y) - do i = 1, nhacks - do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 - y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_c_oacc_hll_csmv -end submodule psb_c_oacc_hll_csmv_impl diff --git a/openacc/impl/psb_d_oacc_csr_csmm.F90 b/openacc/impl/psb_d_oacc_csr_csmm.F90 deleted file mode 100644 index 6ab87175..00000000 --- a/openacc/impl/psb_d_oacc_csr_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_csmm_impl - use psb_base_mod -contains - module subroutine psb_d_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_), intent(in) :: x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n,k, nxy - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'd_oacc_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_d_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = a%irp(i), a%irp(i+1) - 1 - y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_d_oacc_csr_csmm -end submodule psb_d_oacc_csr_csmm_impl - diff --git a/openacc/impl/psb_d_oacc_csr_csmv.F90 b/openacc/impl/psb_d_oacc_csr_csmv.F90 deleted file mode 100644 index 205a7a59..00000000 --- a/openacc/impl/psb_d_oacc_csr_csmv.F90 +++ /dev/null @@ -1,81 +0,0 @@ -submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_csmv_impl - use psb_base_mod -contains - module subroutine psb_d_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_d_oacc_csr_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_), intent(in) :: x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'd_oacc_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_d_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, n - do j = a%irp(i), a%irp(i+1) - 1 - y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_d_oacc_csr_csmv -end submodule psb_d_oacc_csr_csmv_impl - diff --git a/openacc/impl/psb_d_oacc_ell_csmm.F90 b/openacc/impl/psb_d_oacc_ell_csmm.F90 deleted file mode 100644 index 6515a306..00000000 --- a/openacc/impl/psb_d_oacc_ell_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_csmm_impl - use psb_base_mod -contains - module subroutine psb_d_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_), intent(in) :: x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'd_oacc_ell_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_d_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nzt = a%nzt - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = 1, nzt - y(i, j) = y(i, j) + alpha * a%val(i, k) * x(a%ja(i, k), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_d_oacc_ell_csmm -end submodule psb_d_oacc_ell_csmm_impl diff --git a/openacc/impl/psb_d_oacc_ell_csmv.F90 b/openacc/impl/psb_d_oacc_ell_csmv.F90 deleted file mode 100644 index 8d5e2aaa..00000000 --- a/openacc/impl/psb_d_oacc_ell_csmv.F90 +++ /dev/null @@ -1,82 +0,0 @@ -submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_csmv_impl - use psb_base_mod -contains - module subroutine psb_d_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_d_oacc_ell_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_), intent(in) :: x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'd_oacc_ell_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_d_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nzt = a%nzt - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, m - do j = 1, nzt - y(i) = y(i) + alpha * a%val(i, j) * x(a%ja(i, j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_d_oacc_ell_csmv -end submodule psb_d_oacc_ell_csmv_impl diff --git a/openacc/impl/psb_d_oacc_hll_csmm.F90 b/openacc/impl/psb_d_oacc_hll_csmm.F90 deleted file mode 100644 index 2dd6b53b..00000000 --- a/openacc/impl/psb_d_oacc_hll_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_csmm_impl - use psb_base_mod -contains - module subroutine psb_d_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_), intent(in) :: x(:,:) - real(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'd_oacc_hll_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_d_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop present(a, x, y) - do j = 1, nxy - do k = 1, nhacks - do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 - y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_d_oacc_hll_csmm -end submodule psb_d_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_d_oacc_hll_csmv.F90 b/openacc/impl/psb_d_oacc_hll_csmv.F90 deleted file mode 100644 index d38fca61..00000000 --- a/openacc/impl/psb_d_oacc_hll_csmv.F90 +++ /dev/null @@ -1,84 +0,0 @@ -submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_csmv_impl - use psb_base_mod -contains - module subroutine psb_d_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_d_oacc_hll_sparse_mat), intent(in) :: a - real(psb_dpk_), intent(in) :: alpha, beta - real(psb_dpk_), intent(in) :: x(:) - real(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, hksz, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'd_oacc_hll_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_d_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - hksz = a%hksz - nhacks = (a%get_nrows() + hksz - 1) / hksz - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - ! This loop nest cannot be run with collapse, since - ! the inner loop extent varies. - !$acc parallel loop present(a, x, y) - do i = 1, nhacks - do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 - y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_d_oacc_hll_csmv -end submodule psb_d_oacc_hll_csmv_impl diff --git a/openacc/impl/psb_s_oacc_csr_csmm.F90 b/openacc/impl/psb_s_oacc_csr_csmm.F90 deleted file mode 100644 index bb8283bf..00000000 --- a/openacc/impl/psb_s_oacc_csr_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_csmm_impl - use psb_base_mod -contains - module subroutine psb_s_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_s_oacc_csr_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta - real(psb_spk_), intent(in) :: x(:,:) - real(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n,k, nxy - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 's_oacc_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_s_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = a%irp(i), a%irp(i+1) - 1 - y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_s_oacc_csr_csmm -end submodule psb_s_oacc_csr_csmm_impl - diff --git a/openacc/impl/psb_s_oacc_csr_csmv.F90 b/openacc/impl/psb_s_oacc_csr_csmv.F90 deleted file mode 100644 index c224dc0e..00000000 --- a/openacc/impl/psb_s_oacc_csr_csmv.F90 +++ /dev/null @@ -1,81 +0,0 @@ -submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_csmv_impl - use psb_base_mod -contains - module subroutine psb_s_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_s_oacc_csr_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta - real(psb_spk_), intent(in) :: x(:) - real(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 's_oacc_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_s_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, n - do j = a%irp(i), a%irp(i+1) - 1 - y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_s_oacc_csr_csmv -end submodule psb_s_oacc_csr_csmv_impl - diff --git a/openacc/impl/psb_s_oacc_ell_csmm.F90 b/openacc/impl/psb_s_oacc_ell_csmm.F90 deleted file mode 100644 index 63219384..00000000 --- a/openacc/impl/psb_s_oacc_ell_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_csmm_impl - use psb_base_mod -contains - module subroutine psb_s_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_s_oacc_ell_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta - real(psb_spk_), intent(in) :: x(:,:) - real(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 's_oacc_ell_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_s_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nzt = a%nzt - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = 1, nzt - y(i, j) = y(i, j) + alpha * a%val(i, k) * x(a%ja(i, k), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_s_oacc_ell_csmm -end submodule psb_s_oacc_ell_csmm_impl diff --git a/openacc/impl/psb_s_oacc_ell_csmv.F90 b/openacc/impl/psb_s_oacc_ell_csmv.F90 deleted file mode 100644 index d4aaa9d4..00000000 --- a/openacc/impl/psb_s_oacc_ell_csmv.F90 +++ /dev/null @@ -1,82 +0,0 @@ -submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_csmv_impl - use psb_base_mod -contains - module subroutine psb_s_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_s_oacc_ell_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta - real(psb_spk_), intent(in) :: x(:) - real(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 's_oacc_ell_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_s_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nzt = a%nzt - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, m - do j = 1, nzt - y(i) = y(i) + alpha * a%val(i, j) * x(a%ja(i, j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_s_oacc_ell_csmv -end submodule psb_s_oacc_ell_csmv_impl diff --git a/openacc/impl/psb_s_oacc_hll_csmm.F90 b/openacc/impl/psb_s_oacc_hll_csmm.F90 deleted file mode 100644 index 803071eb..00000000 --- a/openacc/impl/psb_s_oacc_hll_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_csmm_impl - use psb_base_mod -contains - module subroutine psb_s_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_s_oacc_hll_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta - real(psb_spk_), intent(in) :: x(:,:) - real(psb_spk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 's_oacc_hll_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_s_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop present(a, x, y) - do j = 1, nxy - do k = 1, nhacks - do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 - y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_s_oacc_hll_csmm -end submodule psb_s_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_s_oacc_hll_csmv.F90 b/openacc/impl/psb_s_oacc_hll_csmv.F90 deleted file mode 100644 index b3c0cae8..00000000 --- a/openacc/impl/psb_s_oacc_hll_csmv.F90 +++ /dev/null @@ -1,84 +0,0 @@ -submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_csmv_impl - use psb_base_mod -contains - module subroutine psb_s_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_s_oacc_hll_sparse_mat), intent(in) :: a - real(psb_spk_), intent(in) :: alpha, beta - real(psb_spk_), intent(in) :: x(:) - real(psb_spk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, hksz, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 's_oacc_hll_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_s_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - hksz = a%hksz - nhacks = (a%get_nrows() + hksz - 1) / hksz - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - ! This loop nest cannot be run with collapse, since - ! the inner loop extent varies. - !$acc parallel loop present(a, x, y) - do i = 1, nhacks - do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 - y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_s_oacc_hll_csmv -end submodule psb_s_oacc_hll_csmv_impl diff --git a/openacc/impl/psb_z_oacc_csr_csmm.F90 b/openacc/impl/psb_z_oacc_csr_csmm.F90 deleted file mode 100644 index 97a38deb..00000000 --- a/openacc/impl/psb_z_oacc_csr_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_csmm_impl - use psb_base_mod -contains - module subroutine psb_z_oacc_csr_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_z_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta - complex(psb_dpk_), intent(in) :: x(:,:) - complex(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n,k, nxy - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'z_oacc_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_z_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = a%irp(i), a%irp(i+1) - 1 - y(a%ja(k), j) = y(a%ja(k), j) + alpha * a%val(k) * x(i, j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_z_oacc_csr_csmm -end submodule psb_z_oacc_csr_csmm_impl - diff --git a/openacc/impl/psb_z_oacc_csr_csmv.F90 b/openacc/impl/psb_z_oacc_csr_csmv.F90 deleted file mode 100644 index 8def3c76..00000000 --- a/openacc/impl/psb_z_oacc_csr_csmv.F90 +++ /dev/null @@ -1,81 +0,0 @@ -submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_csmv_impl - use psb_base_mod -contains - module subroutine psb_z_oacc_csr_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_z_oacc_csr_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta - complex(psb_dpk_), intent(in) :: x(:) - complex(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'z_oacc_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_z_csr_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, n - do j = a%irp(i), a%irp(i+1) - 1 - y(a%ja(j)) = y(a%ja(j)) + alpha * a%val(j) * x(i) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_z_oacc_csr_csmv -end submodule psb_z_oacc_csr_csmv_impl - diff --git a/openacc/impl/psb_z_oacc_ell_csmm.F90 b/openacc/impl/psb_z_oacc_ell_csmm.F90 deleted file mode 100644 index 406ca8c5..00000000 --- a/openacc/impl/psb_z_oacc_ell_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_csmm_impl - use psb_base_mod -contains - module subroutine psb_z_oacc_ell_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_z_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta - complex(psb_dpk_), intent(in) :: x(:,:) - complex(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'z_oacc_ell_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_z_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nzt = a%nzt - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, n - do k = 1, nzt - y(i, j) = y(i, j) + alpha * a%val(i, k) * x(a%ja(i, k), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_z_oacc_ell_csmm -end submodule psb_z_oacc_ell_csmm_impl diff --git a/openacc/impl/psb_z_oacc_ell_csmv.F90 b/openacc/impl/psb_z_oacc_ell_csmv.F90 deleted file mode 100644 index 502dd4f1..00000000 --- a/openacc/impl/psb_z_oacc_ell_csmv.F90 +++ /dev/null @@ -1,82 +0,0 @@ -submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_csmv_impl - use psb_base_mod -contains - module subroutine psb_z_oacc_ell_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_z_oacc_ell_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta - complex(psb_dpk_), intent(in) :: x(:) - complex(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, nzt - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'z_oacc_ell_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_z_ell_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nzt = a%nzt - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - - !$acc parallel loop present(a, x, y) - do i = 1, m - do j = 1, nzt - y(i) = y(i) + alpha * a%val(i, j) * x(a%ja(i, j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_z_oacc_ell_csmv -end submodule psb_z_oacc_ell_csmv_impl diff --git a/openacc/impl/psb_z_oacc_hll_csmm.F90 b/openacc/impl/psb_z_oacc_hll_csmm.F90 deleted file mode 100644 index 3cfe5b32..00000000 --- a/openacc/impl/psb_z_oacc_hll_csmm.F90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_csmm_impl - use psb_base_mod -contains - module subroutine psb_z_oacc_hll_csmm(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_z_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta - complex(psb_dpk_), intent(in) :: x(:,:) - complex(psb_dpk_), intent(inout) :: y(:,:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, k, nxy, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'z_oacc_hll_csmm' - logical, parameter :: debug = .false. - - info = psb_success_ - call psb_erractionsave(err_act) - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_z_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - nxy = min(size(x,2), size(y,2)) - nhacks = (a%get_nrows() + a%hksz - 1) / a%hksz - - !$acc parallel loop collapse(2) present(a, x, y) - do j = 1, nxy - do i = 1, m - y(i,j) = beta * y(i,j) - end do - end do - - !$acc parallel loop present(a, x, y) - do j = 1, nxy - do k = 1, nhacks - do i = a%hkoffs(k), a%hkoffs(k + 1) - 1 - y(a%irn(i), j) = y(a%irn(i), j) + alpha * a%val(i) * x(a%ja(i), j) - end do - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_z_oacc_hll_csmm -end submodule psb_z_oacc_hll_csmm_impl diff --git a/openacc/impl/psb_z_oacc_hll_csmv.F90 b/openacc/impl/psb_z_oacc_hll_csmv.F90 deleted file mode 100644 index 923bc061..00000000 --- a/openacc/impl/psb_z_oacc_hll_csmv.F90 +++ /dev/null @@ -1,84 +0,0 @@ -submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_csmv_impl - use psb_base_mod -contains - module subroutine psb_z_oacc_hll_csmv(alpha, a, x, beta, y, info, trans) - implicit none - class(psb_z_oacc_hll_sparse_mat), intent(in) :: a - complex(psb_dpk_), intent(in) :: alpha, beta - complex(psb_dpk_), intent(in) :: x(:) - complex(psb_dpk_), intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character, optional, intent(in) :: trans - - character :: trans_ - integer(psb_ipk_) :: i, j, m, n, hksz, nhacks - logical :: tra - integer(psb_ipk_) :: err_act - character(len=20) :: name = 'z_oacc_hll_csmv' - logical, parameter :: debug = .false. - - call psb_erractionsave(err_act) - info = psb_success_ - - if (present(trans)) then - trans_ = trans - else - trans_ = 'N' - end if - - if (.not.a%is_asb()) then - info = psb_err_invalid_mat_state_ - call psb_errpush(info, name) - goto 9999 - endif - - tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') - - if (tra) then - m = a%get_ncols() - n = a%get_nrows() - else - n = a%get_ncols() - m = a%get_nrows() - end if - - if (size(x,1) < n) then - info = 36 - call psb_errpush(info, name, i_err = (/3 * ione, n, izero, izero, izero/)) - goto 9999 - end if - - if (size(y,1) < m) then - info = 36 - call psb_errpush(info, name, i_err = (/5 * ione, m, izero, izero, izero/)) - goto 9999 - end if - - if (tra) then - call a%psb_z_hll_sparse_mat%spmm(alpha, x, beta, y, info, trans) - else - hksz = a%hksz - nhacks = (a%get_nrows() + hksz - 1) / hksz - - !$acc parallel loop present(a, x, y) - do i = 1, m - y(i) = beta * y(i) - end do - ! This loop nest cannot be run with collapse, since - ! the inner loop extent varies. - !$acc parallel loop present(a, x, y) - do i = 1, nhacks - do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 - y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) - end do - end do - endif - - call psb_erractionrestore(err_act) - return - -9999 call psb_error_handler(err_act) - return - - end subroutine psb_z_oacc_hll_csmv -end submodule psb_z_oacc_hll_csmv_impl From bcbe0c89c758086725433b91bdaed38a7868db32 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 10 Sep 2024 17:37:35 +0200 Subject: [PATCH 38/86] Backporting fixes from version 4 --- openacc/Makefile | 7 +- openacc/impl/psb_c_oacc_csr_vect_mv.F90 | 2 +- openacc/impl/psb_c_oacc_ell_vect_mv.F90 | 2 +- openacc/impl/psb_c_oacc_hll_vect_mv.F90 | 2 +- openacc/impl/psb_d_oacc_csr_vect_mv.F90 | 2 +- openacc/impl/psb_d_oacc_ell_vect_mv.F90 | 2 +- openacc/impl/psb_d_oacc_hll_vect_mv.F90 | 2 +- openacc/impl/psb_s_oacc_csr_vect_mv.F90 | 2 +- openacc/impl/psb_s_oacc_ell_vect_mv.F90 | 2 +- openacc/impl/psb_s_oacc_hll_vect_mv.F90 | 2 +- openacc/impl/psb_z_oacc_csr_vect_mv.F90 | 2 +- openacc/impl/psb_z_oacc_ell_vect_mv.F90 | 2 +- openacc/impl/psb_z_oacc_hll_vect_mv.F90 | 2 +- openacc/psb_c_oacc_vect_mod.F90 | 231 ++++++++++++++++++------ openacc/psb_d_oacc_vect_mod.F90 | 231 ++++++++++++++++++------ openacc/psb_i_oacc_vect_mod.F90 | 213 ++++++++++++++++------ openacc/psb_l_oacc_vect_mod.F90 | 213 ++++++++++++++++------ openacc/psb_oacc_env_mod.F90 | 33 ++-- openacc/psb_s_oacc_vect_mod.F90 | 231 ++++++++++++++++++------ openacc/psb_z_oacc_vect_mod.F90 | 231 ++++++++++++++++++------ 20 files changed, 1048 insertions(+), 366 deletions(-) diff --git a/openacc/Makefile b/openacc/Makefile index cdcc9f71..f60a810d 100644 --- a/openacc/Makefile +++ b/openacc/Makefile @@ -58,9 +58,10 @@ psb_oacc_mod.o : psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o \ psb_z_oacc_ell_mat_mod.o psb_z_oacc_hll_mat_mod.o \ psb_oacc_env_mod.o -psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o\ - psb_c_oacc_vect_mod.o psb_z_oacc_vect_mod.o: psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o -psb_l_oacc_vect_mod.o: psb_i_oacc_vect_mod.o +psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ + psb_c_oacc_vect_mod.o psb_z_oacc_vect_mod.o: psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o psb_oacc_env_mod.o +psb_l_oacc_vect_mod.o: psb_i_oacc_vect_mod.o psb_oacc_env_mod.o +psb_i_oacc_vect_mod.o: psb_oacc_env_mod.o psb_s_oacc_csr_mat_mod.o psb_s_oacc_ell_mat_mod.o psb_s_oacc_hll_mat_mod.o: psb_s_oacc_vect_mod.o diff --git a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 index 3c6f6494..c1030094 100644 --- a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 @@ -18,7 +18,7 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 index 8113297b..7a39c031 100644 --- a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 @@ -19,7 +19,7 @@ contains n = a%get_ncols() nzt = a%nzt nc = size(a%ja,2) - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 index 551b1a29..494ed149 100644 --- a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 @@ -20,7 +20,7 @@ contains nhacks = size(a%hkoffs) - 1 hksz = a%hksz - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 index 596f2b17..a2efdc3e 100644 --- a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 @@ -18,7 +18,7 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 index ddd4bfc8..b233669d 100644 --- a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 @@ -19,7 +19,7 @@ contains n = a%get_ncols() nzt = a%nzt nc = size(a%ja,2) - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 index f971d61a..150ade8e 100644 --- a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 @@ -20,7 +20,7 @@ contains nhacks = size(a%hkoffs) - 1 hksz = a%hksz - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 index 2799bd05..5d3cc30c 100644 --- a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 @@ -18,7 +18,7 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 index 81166643..76b1fe5b 100644 --- a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 @@ -19,7 +19,7 @@ contains n = a%get_ncols() nzt = a%nzt nc = size(a%ja,2) - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 index e289f07c..e1d42252 100644 --- a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 @@ -20,7 +20,7 @@ contains nhacks = size(a%hkoffs) - 1 hksz = a%hksz - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 index 75cc693b..b312b6b7 100644 --- a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 @@ -18,7 +18,7 @@ contains m = a%get_nrows() n = a%get_ncols() - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 index 8d442c1d..53283689 100644 --- a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 @@ -19,7 +19,7 @@ contains n = a%get_ncols() nzt = a%nzt nc = size(a%ja,2) - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 index e373d6ff..350592bc 100644 --- a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 +++ b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 @@ -20,7 +20,7 @@ contains nhacks = size(a%hkoffs) - 1 hksz = a%hksz - if ((n /= size(x%v)) .or. (m /= size(y%v))) then + if ((n > size(x%v)) .or. (m > size(y%v))) then write(0,*) 'Size error ', m, n, size(x%v), size(y%v) info = psb_err_invalid_mat_state_ return diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index 95c45646..4e2cca9e 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -3,6 +3,8 @@ module psb_c_oacc_vect_mod use openacc use psb_const_mod use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod use psb_c_vect_mod use psb_i_vect_mod use psb_i_oacc_vect_mod @@ -26,6 +28,8 @@ module psb_c_oacc_vect_mod procedure, pass(x) :: bld_x => c_oacc_bld_x procedure, pass(x) :: bld_mn => c_oacc_bld_mn procedure, pass(x) :: free => c_oacc_vect_free + procedure, pass(x) :: free_buffer => c_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => c_oacc_vect_maybe_free_buffer procedure, pass(x) :: ins_a => c_oacc_ins_a procedure, pass(x) :: ins_v => c_oacc_ins_v procedure, pass(x) :: is_host => c_oacc_is_host @@ -36,11 +40,13 @@ module psb_c_oacc_vect_mod procedure, pass(x) :: set_sync => c_oacc_set_sync procedure, pass(x) :: set_scal => c_oacc_set_scal + procedure, pass(x) :: new_buffer => c_oacc_new_buffer procedure, pass(x) :: gthzv_x => c_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => c_oacc_gthzbuf + procedure, pass(x) :: gthzbuf => c_oacc_gthzbuf procedure, pass(y) :: sctb => c_oacc_sctb procedure, pass(y) :: sctb_x => c_oacc_sctb_x procedure, pass(y) :: sctb_buf => c_oacc_sctb_buf + procedure, nopass :: device_wait => c_oacc_device_wait procedure, pass(x) :: get_size => c_oacc_get_size @@ -87,6 +93,11 @@ module psb_c_oacc_vect_mod contains + subroutine c_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine c_oacc_device_wait + subroutine c_oacc_absval1(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x @@ -181,13 +192,17 @@ contains !$acc parallel loop reduction(max:mx) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) - end do - sum = szero - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x(i)/mx)**2 end do - res = mx*sqrt(sum) + if (mx == szero) then + res = mx + else + sum = szero + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if end function c_inner_oacc_nrm2 end function c_oacc_nrm2 @@ -398,29 +413,44 @@ contains class(psb_i_base_vect_type) :: idx complex(psb_spk_) :: beta class(psb_c_vect_oacc) :: y - integer(psb_ipk_) :: info - + integer(psb_ipk_) :: info, k + logical :: acc_done if (.not.allocated(y%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() + !$acc update device(y%combuf) + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) end do + end if - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) end do - end select + !$acc end parallel loop + end subroutine inner_sctb + end subroutine c_oacc_sctb_buf subroutine c_oacc_sctb_x(i, n, idx, x, beta, y) @@ -430,24 +460,41 @@ contains class(psb_i_base_vect_type) :: idx complex(psb_spk_) :: beta, x(:) class(psb_c_vect_oacc) :: y - integer(psb_ipk_) :: info, ni + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'c_oacc_sctb_x') - return + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if - if (y%is_host()) call y%sync() - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - - call y%set_dev() + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + end subroutine c_oacc_sctb_x subroutine c_oacc_sctb(n, idx, x, beta, y) @@ -463,7 +510,6 @@ contains if (n == 0) return if (y%is_dev()) call y%sync() - !$acc parallel loop do i = 1, n y%v(idx(i)) = beta * y%v(idx(i)) + x(i) end do @@ -477,30 +523,48 @@ contains integer(psb_ipk_) :: i, n class(psb_i_base_vect_type) :: idx class(psb_c_vect_oacc) :: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info,k + logical :: acc_done info = 0 + acc_done = .false. + if (.not.allocated(x%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if - select type(ii => idx) + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'c_oacc_gthzbuf') - return + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. end select - if (x%is_host()) call x%sync() + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine c_oacc_gthzbuf - + subroutine c_oacc_gthzv_x(i, n, idx, x, y) use psb_base_mod implicit none @@ -508,24 +572,41 @@ contains class(psb_i_base_vect_type):: idx complex(psb_spk_) :: y(:) class(psb_c_vect_oacc):: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info, k + logical :: acc_done info = 0 - - select type(ii => idx) + acc_done = .false. + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'c_oacc_gthzv_x') - return + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if end select - - if (x%is_host()) call x%sync() - - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine c_oacc_gthzv_x subroutine c_oacc_ins_v(n, irl, val, dupl, x, info) @@ -718,7 +799,7 @@ contains integer(psb_ipk_) :: info res = czero - !write(0,*) 'dot_v' +!!$ write(0,*) 'oacc_dot_v' select type(yy => y) type is (psb_c_base_vect_type) if (x%is_dev()) call x%sync() @@ -762,6 +843,17 @@ contains end function c_oacc_dot_a + subroutine c_oacc_new_buffer(n,x,info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + if (n /= psb_size(x%combuf)) then + call x%psb_c_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + end if + end subroutine c_oacc_new_buffer + subroutine c_oacc_sync_dev_space(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x @@ -860,12 +952,33 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 - if (allocated(x%v)) then - if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - deallocate(x%v, stat=info) - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_c_base_vect_type%free(info) end subroutine c_oacc_vect_free + + subroutine c_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer())& + & call x%free_buffer(info) + end subroutine c_oacc_vect_maybe_free_buffer + + subroutine c_oacc_vect_free_buffer(x,info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_c_base_vect_type%free_buffer(info) + + end subroutine c_oacc_vect_free_buffer + function c_oacc_get_size(x) result(res) implicit none class(psb_c_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 3d71e54c..80ac35f7 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -3,6 +3,8 @@ module psb_d_oacc_vect_mod use openacc use psb_const_mod use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod use psb_d_vect_mod use psb_i_vect_mod use psb_i_oacc_vect_mod @@ -26,6 +28,8 @@ module psb_d_oacc_vect_mod procedure, pass(x) :: bld_x => d_oacc_bld_x procedure, pass(x) :: bld_mn => d_oacc_bld_mn procedure, pass(x) :: free => d_oacc_vect_free + procedure, pass(x) :: free_buffer => d_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => d_oacc_vect_maybe_free_buffer procedure, pass(x) :: ins_a => d_oacc_ins_a procedure, pass(x) :: ins_v => d_oacc_ins_v procedure, pass(x) :: is_host => d_oacc_is_host @@ -36,11 +40,13 @@ module psb_d_oacc_vect_mod procedure, pass(x) :: set_sync => d_oacc_set_sync procedure, pass(x) :: set_scal => d_oacc_set_scal + procedure, pass(x) :: new_buffer => d_oacc_new_buffer procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => d_oacc_gthzbuf + procedure, pass(x) :: gthzbuf => d_oacc_gthzbuf procedure, pass(y) :: sctb => d_oacc_sctb procedure, pass(y) :: sctb_x => d_oacc_sctb_x procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf + procedure, nopass :: device_wait => d_oacc_device_wait procedure, pass(x) :: get_size => d_oacc_get_size @@ -87,6 +93,11 @@ module psb_d_oacc_vect_mod contains + subroutine d_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine d_oacc_device_wait + subroutine d_oacc_absval1(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x @@ -181,13 +192,17 @@ contains !$acc parallel loop reduction(max:mx) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) - end do - sum = dzero - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x(i)/mx)**2 end do - res = mx*sqrt(sum) + if (mx == dzero) then + res = mx + else + sum = dzero + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if end function d_inner_oacc_nrm2 end function d_oacc_nrm2 @@ -398,29 +413,44 @@ contains class(psb_i_base_vect_type) :: idx real(psb_dpk_) :: beta class(psb_d_vect_oacc) :: y - integer(psb_ipk_) :: info - + integer(psb_ipk_) :: info, k + logical :: acc_done if (.not.allocated(y%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() + !$acc update device(y%combuf) + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) end do + end if - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) end do - end select + !$acc end parallel loop + end subroutine inner_sctb + end subroutine d_oacc_sctb_buf subroutine d_oacc_sctb_x(i, n, idx, x, beta, y) @@ -430,24 +460,41 @@ contains class(psb_i_base_vect_type) :: idx real(psb_dpk_) :: beta, x(:) class(psb_d_vect_oacc) :: y - integer(psb_ipk_) :: info, ni + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'd_oacc_sctb_x') - return + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if - if (y%is_host()) call y%sync() - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - - call y%set_dev() + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + end subroutine d_oacc_sctb_x subroutine d_oacc_sctb(n, idx, x, beta, y) @@ -463,7 +510,6 @@ contains if (n == 0) return if (y%is_dev()) call y%sync() - !$acc parallel loop do i = 1, n y%v(idx(i)) = beta * y%v(idx(i)) + x(i) end do @@ -477,30 +523,48 @@ contains integer(psb_ipk_) :: i, n class(psb_i_base_vect_type) :: idx class(psb_d_vect_oacc) :: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info,k + logical :: acc_done info = 0 + acc_done = .false. + if (.not.allocated(x%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if - select type(ii => idx) + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'd_oacc_gthzbuf') - return + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. end select - if (x%is_host()) call x%sync() + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine d_oacc_gthzbuf - + subroutine d_oacc_gthzv_x(i, n, idx, x, y) use psb_base_mod implicit none @@ -508,24 +572,41 @@ contains class(psb_i_base_vect_type):: idx real(psb_dpk_) :: y(:) class(psb_d_vect_oacc):: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info, k + logical :: acc_done info = 0 - - select type(ii => idx) + acc_done = .false. + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'd_oacc_gthzv_x') - return + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if end select - - if (x%is_host()) call x%sync() - - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine d_oacc_gthzv_x subroutine d_oacc_ins_v(n, irl, val, dupl, x, info) @@ -718,7 +799,7 @@ contains integer(psb_ipk_) :: info res = dzero - !write(0,*) 'dot_v' +!!$ write(0,*) 'oacc_dot_v' select type(yy => y) type is (psb_d_base_vect_type) if (x%is_dev()) call x%sync() @@ -762,6 +843,17 @@ contains end function d_oacc_dot_a + subroutine d_oacc_new_buffer(n,x,info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + if (n /= psb_size(x%combuf)) then + call x%psb_d_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + end if + end subroutine d_oacc_new_buffer + subroutine d_oacc_sync_dev_space(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x @@ -860,12 +952,33 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 - if (allocated(x%v)) then - if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - deallocate(x%v, stat=info) - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_d_base_vect_type%free(info) end subroutine d_oacc_vect_free + + subroutine d_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer())& + & call x%free_buffer(info) + end subroutine d_oacc_vect_maybe_free_buffer + + subroutine d_oacc_vect_free_buffer(x,info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_d_base_vect_type%free_buffer(info) + + end subroutine d_oacc_vect_free_buffer + function d_oacc_get_size(x) result(res) implicit none class(psb_d_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index 42226f0c..cfd0c210 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -3,6 +3,8 @@ module psb_i_oacc_vect_mod use openacc use psb_const_mod use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod use psb_i_vect_mod integer(psb_ipk_), parameter, private :: is_host = -1 @@ -24,6 +26,8 @@ module psb_i_oacc_vect_mod procedure, pass(x) :: bld_x => i_oacc_bld_x procedure, pass(x) :: bld_mn => i_oacc_bld_mn procedure, pass(x) :: free => i_oacc_vect_free + procedure, pass(x) :: free_buffer => i_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => i_oacc_vect_maybe_free_buffer procedure, pass(x) :: ins_a => i_oacc_ins_a procedure, pass(x) :: ins_v => i_oacc_ins_v procedure, pass(x) :: is_host => i_oacc_is_host @@ -34,11 +38,13 @@ module psb_i_oacc_vect_mod procedure, pass(x) :: set_sync => i_oacc_set_sync procedure, pass(x) :: set_scal => i_oacc_set_scal + procedure, pass(x) :: new_buffer => i_oacc_new_buffer procedure, pass(x) :: gthzv_x => i_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => i_oacc_gthzbuf + procedure, pass(x) :: gthzbuf => i_oacc_gthzbuf procedure, pass(y) :: sctb => i_oacc_sctb procedure, pass(y) :: sctb_x => i_oacc_sctb_x procedure, pass(y) :: sctb_buf => i_oacc_sctb_buf + procedure, nopass :: device_wait => i_oacc_device_wait procedure, pass(x) :: get_size => i_oacc_get_size @@ -48,6 +54,11 @@ module psb_i_oacc_vect_mod contains + subroutine i_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine i_oacc_device_wait + subroutine i_oacc_sctb_buf(i, n, idx, beta, y) use psb_base_mod @@ -56,29 +67,44 @@ contains class(psb_i_base_vect_type) :: idx integer(psb_ipk_) :: beta class(psb_i_vect_oacc) :: y - integer(psb_ipk_) :: info - + integer(psb_ipk_) :: info, k + logical :: acc_done if (.not.allocated(y%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() + !$acc update device(y%combuf) + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) end do + end if - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) end do - end select + !$acc end parallel loop + end subroutine inner_sctb + end subroutine i_oacc_sctb_buf subroutine i_oacc_sctb_x(i, n, idx, x, beta, y) @@ -88,24 +114,41 @@ contains class(psb_i_base_vect_type) :: idx integer(psb_ipk_) :: beta, x(:) class(psb_i_vect_oacc) :: y - integer(psb_ipk_) :: info, ni + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'i_oacc_sctb_x') - return + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if - if (y%is_host()) call y%sync() - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - - call y%set_dev() + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + end subroutine i_oacc_sctb_x subroutine i_oacc_sctb(n, idx, x, beta, y) @@ -121,7 +164,6 @@ contains if (n == 0) return if (y%is_dev()) call y%sync() - !$acc parallel loop do i = 1, n y%v(idx(i)) = beta * y%v(idx(i)) + x(i) end do @@ -135,30 +177,48 @@ contains integer(psb_ipk_) :: i, n class(psb_i_base_vect_type) :: idx class(psb_i_vect_oacc) :: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info,k + logical :: acc_done info = 0 + acc_done = .false. + if (.not.allocated(x%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if - select type(ii => idx) + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'i_oacc_gthzbuf') - return + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. end select - if (x%is_host()) call x%sync() + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine i_oacc_gthzbuf - + subroutine i_oacc_gthzv_x(i, n, idx, x, y) use psb_base_mod implicit none @@ -166,24 +226,41 @@ contains class(psb_i_base_vect_type):: idx integer(psb_ipk_) :: y(:) class(psb_i_vect_oacc):: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info, k + logical :: acc_done info = 0 - - select type(ii => idx) + acc_done = .false. + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'i_oacc_gthzv_x') - return + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if end select - - if (x%is_host()) call x%sync() - - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine i_oacc_gthzv_x subroutine i_oacc_ins_v(n, irl, val, dupl, x, info) @@ -366,6 +443,17 @@ contains end function i_oacc_get_fmt + subroutine i_oacc_new_buffer(n,x,info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + if (n /= psb_size(x%combuf)) then + call x%psb_i_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + end if + end subroutine i_oacc_new_buffer + subroutine i_oacc_sync_dev_space(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x @@ -464,12 +552,33 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 - if (allocated(x%v)) then - if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - deallocate(x%v, stat=info) - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_i_base_vect_type%free(info) end subroutine i_oacc_vect_free + + subroutine i_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer())& + & call x%free_buffer(info) + + end subroutine i_oacc_vect_maybe_free_buffer + + subroutine i_oacc_vect_free_buffer(x,info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_i_base_vect_type%free_buffer(info) + end subroutine i_oacc_vect_free_buffer + function i_oacc_get_size(x) result(res) implicit none class(psb_i_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 index eb9b2b9a..5526796f 100644 --- a/openacc/psb_l_oacc_vect_mod.F90 +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -3,6 +3,8 @@ module psb_l_oacc_vect_mod use openacc use psb_const_mod use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod use psb_l_vect_mod use psb_i_vect_mod use psb_i_oacc_vect_mod @@ -26,6 +28,8 @@ module psb_l_oacc_vect_mod procedure, pass(x) :: bld_x => l_oacc_bld_x procedure, pass(x) :: bld_mn => l_oacc_bld_mn procedure, pass(x) :: free => l_oacc_vect_free + procedure, pass(x) :: free_buffer => l_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => l_oacc_vect_maybe_free_buffer procedure, pass(x) :: ins_a => l_oacc_ins_a procedure, pass(x) :: ins_v => l_oacc_ins_v procedure, pass(x) :: is_host => l_oacc_is_host @@ -36,11 +40,13 @@ module psb_l_oacc_vect_mod procedure, pass(x) :: set_sync => l_oacc_set_sync procedure, pass(x) :: set_scal => l_oacc_set_scal + procedure, pass(x) :: new_buffer => l_oacc_new_buffer procedure, pass(x) :: gthzv_x => l_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => l_oacc_gthzbuf + procedure, pass(x) :: gthzbuf => l_oacc_gthzbuf procedure, pass(y) :: sctb => l_oacc_sctb procedure, pass(y) :: sctb_x => l_oacc_sctb_x procedure, pass(y) :: sctb_buf => l_oacc_sctb_buf + procedure, nopass :: device_wait => l_oacc_device_wait procedure, pass(x) :: get_size => l_oacc_get_size @@ -50,6 +56,11 @@ module psb_l_oacc_vect_mod contains + subroutine l_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine l_oacc_device_wait + subroutine l_oacc_sctb_buf(i, n, idx, beta, y) use psb_base_mod @@ -58,29 +69,44 @@ contains class(psb_i_base_vect_type) :: idx integer(psb_lpk_) :: beta class(psb_l_vect_oacc) :: y - integer(psb_ipk_) :: info - + integer(psb_ipk_) :: info, k + logical :: acc_done if (.not.allocated(y%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() + !$acc update device(y%combuf) + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) end do + end if - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) end do - end select + !$acc end parallel loop + end subroutine inner_sctb + end subroutine l_oacc_sctb_buf subroutine l_oacc_sctb_x(i, n, idx, x, beta, y) @@ -90,24 +116,41 @@ contains class(psb_i_base_vect_type) :: idx integer(psb_lpk_) :: beta, x(:) class(psb_l_vect_oacc) :: y - integer(psb_ipk_) :: info, ni + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'l_oacc_sctb_x') - return + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if - if (y%is_host()) call y%sync() - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - - call y%set_dev() + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + end subroutine l_oacc_sctb_x subroutine l_oacc_sctb(n, idx, x, beta, y) @@ -123,7 +166,6 @@ contains if (n == 0) return if (y%is_dev()) call y%sync() - !$acc parallel loop do i = 1, n y%v(idx(i)) = beta * y%v(idx(i)) + x(i) end do @@ -137,30 +179,48 @@ contains integer(psb_ipk_) :: i, n class(psb_i_base_vect_type) :: idx class(psb_l_vect_oacc) :: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info,k + logical :: acc_done info = 0 + acc_done = .false. + if (.not.allocated(x%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if - select type(ii => idx) + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'l_oacc_gthzbuf') - return + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. end select - if (x%is_host()) call x%sync() + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine l_oacc_gthzbuf - + subroutine l_oacc_gthzv_x(i, n, idx, x, y) use psb_base_mod implicit none @@ -168,24 +228,41 @@ contains class(psb_i_base_vect_type):: idx integer(psb_lpk_) :: y(:) class(psb_l_vect_oacc):: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info, k + logical :: acc_done info = 0 - - select type(ii => idx) + acc_done = .false. + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'l_oacc_gthzv_x') - return + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if end select - - if (x%is_host()) call x%sync() - - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine l_oacc_gthzv_x subroutine l_oacc_ins_v(n, irl, val, dupl, x, info) @@ -368,6 +445,17 @@ contains end function l_oacc_get_fmt + subroutine l_oacc_new_buffer(n,x,info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + if (n /= psb_size(x%combuf)) then + call x%psb_l_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + end if + end subroutine l_oacc_new_buffer + subroutine l_oacc_sync_dev_space(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x @@ -466,12 +554,33 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 - if (allocated(x%v)) then - if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - deallocate(x%v, stat=info) - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_l_base_vect_type%free(info) end subroutine l_oacc_vect_free + + subroutine l_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer())& + & call x%free_buffer(info) + + end subroutine l_oacc_vect_maybe_free_buffer + + subroutine l_oacc_vect_free_buffer(x,info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_l_base_vect_type%free_buffer(info) + end subroutine l_oacc_vect_free_buffer + function l_oacc_get_size(x) result(res) implicit none class(psb_l_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_oacc_env_mod.F90 b/openacc/psb_oacc_env_mod.F90 index 83c9426d..dc01ad3a 100644 --- a/openacc/psb_oacc_env_mod.F90 +++ b/openacc/psb_oacc_env_mod.F90 @@ -1,18 +1,29 @@ module psb_oacc_env_mod -contains + use psb_penv_mod + use psb_const_mod + use psb_error_mod + logical, private :: oacc_do_maybe_free_buffer = .false. - subroutine psb_oacc_init(ctxt, dev) - use psb_penv_mod - use psb_const_mod - use psb_error_mod - type(psb_ctxt_type), intent(in) :: ctxt - integer, intent(in), optional :: dev +contains + function psb_oacc_get_maybe_free_buffer() result(res) + logical :: res + res = oacc_do_maybe_free_buffer + end function psb_oacc_get_maybe_free_buffer - end subroutine psb_oacc_init + subroutine psb_oacc_set_maybe_free_buffer(val) + logical, intent(in) :: val + oacc_do_maybe_free_buffer = val + end subroutine psb_oacc_set_maybe_free_buffer - subroutine psb_oacc_exit() - integer :: res + subroutine psb_oacc_init(ctxt, dev) + type(psb_ctxt_type), intent(in) :: ctxt + integer, intent(in), optional :: dev + + end subroutine psb_oacc_init - end subroutine psb_oacc_exit + subroutine psb_oacc_exit() + integer :: res + + end subroutine psb_oacc_exit end module psb_oacc_env_mod diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 16b45461..b80108ab 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -3,6 +3,8 @@ module psb_s_oacc_vect_mod use openacc use psb_const_mod use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod use psb_s_vect_mod use psb_i_vect_mod use psb_i_oacc_vect_mod @@ -26,6 +28,8 @@ module psb_s_oacc_vect_mod procedure, pass(x) :: bld_x => s_oacc_bld_x procedure, pass(x) :: bld_mn => s_oacc_bld_mn procedure, pass(x) :: free => s_oacc_vect_free + procedure, pass(x) :: free_buffer => s_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => s_oacc_vect_maybe_free_buffer procedure, pass(x) :: ins_a => s_oacc_ins_a procedure, pass(x) :: ins_v => s_oacc_ins_v procedure, pass(x) :: is_host => s_oacc_is_host @@ -36,11 +40,13 @@ module psb_s_oacc_vect_mod procedure, pass(x) :: set_sync => s_oacc_set_sync procedure, pass(x) :: set_scal => s_oacc_set_scal + procedure, pass(x) :: new_buffer => s_oacc_new_buffer procedure, pass(x) :: gthzv_x => s_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => s_oacc_gthzbuf + procedure, pass(x) :: gthzbuf => s_oacc_gthzbuf procedure, pass(y) :: sctb => s_oacc_sctb procedure, pass(y) :: sctb_x => s_oacc_sctb_x procedure, pass(y) :: sctb_buf => s_oacc_sctb_buf + procedure, nopass :: device_wait => s_oacc_device_wait procedure, pass(x) :: get_size => s_oacc_get_size @@ -87,6 +93,11 @@ module psb_s_oacc_vect_mod contains + subroutine s_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine s_oacc_device_wait + subroutine s_oacc_absval1(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x @@ -181,13 +192,17 @@ contains !$acc parallel loop reduction(max:mx) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) - end do - sum = szero - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x(i)/mx)**2 end do - res = mx*sqrt(sum) + if (mx == szero) then + res = mx + else + sum = szero + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if end function s_inner_oacc_nrm2 end function s_oacc_nrm2 @@ -398,29 +413,44 @@ contains class(psb_i_base_vect_type) :: idx real(psb_spk_) :: beta class(psb_s_vect_oacc) :: y - integer(psb_ipk_) :: info - + integer(psb_ipk_) :: info, k + logical :: acc_done if (.not.allocated(y%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() + !$acc update device(y%combuf) + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) end do + end if - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) end do - end select + !$acc end parallel loop + end subroutine inner_sctb + end subroutine s_oacc_sctb_buf subroutine s_oacc_sctb_x(i, n, idx, x, beta, y) @@ -430,24 +460,41 @@ contains class(psb_i_base_vect_type) :: idx real(psb_spk_) :: beta, x(:) class(psb_s_vect_oacc) :: y - integer(psb_ipk_) :: info, ni + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 's_oacc_sctb_x') - return + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if - if (y%is_host()) call y%sync() - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - - call y%set_dev() + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + end subroutine s_oacc_sctb_x subroutine s_oacc_sctb(n, idx, x, beta, y) @@ -463,7 +510,6 @@ contains if (n == 0) return if (y%is_dev()) call y%sync() - !$acc parallel loop do i = 1, n y%v(idx(i)) = beta * y%v(idx(i)) + x(i) end do @@ -477,30 +523,48 @@ contains integer(psb_ipk_) :: i, n class(psb_i_base_vect_type) :: idx class(psb_s_vect_oacc) :: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info,k + logical :: acc_done info = 0 + acc_done = .false. + if (.not.allocated(x%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if - select type(ii => idx) + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 's_oacc_gthzbuf') - return + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. end select - if (x%is_host()) call x%sync() + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine s_oacc_gthzbuf - + subroutine s_oacc_gthzv_x(i, n, idx, x, y) use psb_base_mod implicit none @@ -508,24 +572,41 @@ contains class(psb_i_base_vect_type):: idx real(psb_spk_) :: y(:) class(psb_s_vect_oacc):: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info, k + logical :: acc_done info = 0 - - select type(ii => idx) + acc_done = .false. + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 's_oacc_gthzv_x') - return + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if end select - - if (x%is_host()) call x%sync() - - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine s_oacc_gthzv_x subroutine s_oacc_ins_v(n, irl, val, dupl, x, info) @@ -718,7 +799,7 @@ contains integer(psb_ipk_) :: info res = szero - !write(0,*) 'dot_v' +!!$ write(0,*) 'oacc_dot_v' select type(yy => y) type is (psb_s_base_vect_type) if (x%is_dev()) call x%sync() @@ -762,6 +843,17 @@ contains end function s_oacc_dot_a + subroutine s_oacc_new_buffer(n,x,info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + if (n /= psb_size(x%combuf)) then + call x%psb_s_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + end if + end subroutine s_oacc_new_buffer + subroutine s_oacc_sync_dev_space(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x @@ -860,12 +952,33 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 - if (allocated(x%v)) then - if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - deallocate(x%v, stat=info) - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_s_base_vect_type%free(info) end subroutine s_oacc_vect_free + + subroutine s_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer())& + & call x%free_buffer(info) + end subroutine s_oacc_vect_maybe_free_buffer + + subroutine s_oacc_vect_free_buffer(x,info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_s_base_vect_type%free_buffer(info) + + end subroutine s_oacc_vect_free_buffer + function s_oacc_get_size(x) result(res) implicit none class(psb_s_vect_oacc), intent(inout) :: x diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 9e6bbb2d..86107c31 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -3,6 +3,8 @@ module psb_z_oacc_vect_mod use openacc use psb_const_mod use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod use psb_z_vect_mod use psb_i_vect_mod use psb_i_oacc_vect_mod @@ -26,6 +28,8 @@ module psb_z_oacc_vect_mod procedure, pass(x) :: bld_x => z_oacc_bld_x procedure, pass(x) :: bld_mn => z_oacc_bld_mn procedure, pass(x) :: free => z_oacc_vect_free + procedure, pass(x) :: free_buffer => z_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => z_oacc_vect_maybe_free_buffer procedure, pass(x) :: ins_a => z_oacc_ins_a procedure, pass(x) :: ins_v => z_oacc_ins_v procedure, pass(x) :: is_host => z_oacc_is_host @@ -36,11 +40,13 @@ module psb_z_oacc_vect_mod procedure, pass(x) :: set_sync => z_oacc_set_sync procedure, pass(x) :: set_scal => z_oacc_set_scal + procedure, pass(x) :: new_buffer => z_oacc_new_buffer procedure, pass(x) :: gthzv_x => z_oacc_gthzv_x - procedure, pass(x) :: gthzbuf_x => z_oacc_gthzbuf + procedure, pass(x) :: gthzbuf => z_oacc_gthzbuf procedure, pass(y) :: sctb => z_oacc_sctb procedure, pass(y) :: sctb_x => z_oacc_sctb_x procedure, pass(y) :: sctb_buf => z_oacc_sctb_buf + procedure, nopass :: device_wait => z_oacc_device_wait procedure, pass(x) :: get_size => z_oacc_get_size @@ -87,6 +93,11 @@ module psb_z_oacc_vect_mod contains + subroutine z_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine z_oacc_device_wait + subroutine z_oacc_absval1(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x @@ -181,13 +192,17 @@ contains !$acc parallel loop reduction(max:mx) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) - end do - sum = dzero - !$acc parallel loop reduction(+:sum) - do i = 1, n - sum = sum + abs(x(i)/mx)**2 end do - res = mx*sqrt(sum) + if (mx == dzero) then + res = mx + else + sum = dzero + !$acc parallel loop reduction(+:sum) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if end function z_inner_oacc_nrm2 end function z_oacc_nrm2 @@ -398,29 +413,44 @@ contains class(psb_i_base_vect_type) :: idx complex(psb_dpk_) :: beta class(psb_z_vect_oacc) :: y - integer(psb_ipk_) :: info - + integer(psb_ipk_) :: info, k + logical :: acc_done if (.not.allocated(y%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() + !$acc update device(y%combuf) + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select - !$acc parallel loop - do i = 1, n - y%v(ii%v(i)) = beta * y%v(ii%v(i)) + y%combuf(i) + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) end do + end if - class default - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + y%combuf(i) + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) end do - end select + !$acc end parallel loop + end subroutine inner_sctb + end subroutine z_oacc_sctb_buf subroutine z_oacc_sctb_x(i, n, idx, x, beta, y) @@ -430,24 +460,41 @@ contains class(psb_i_base_vect_type) :: idx complex(psb_dpk_) :: beta, x(:) class(psb_z_vect_oacc) :: y - integer(psb_ipk_) :: info, ni + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + acc_done = .false. select type(ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'z_oacc_sctb_x') - return + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if - if (y%is_host()) call y%sync() - - !$acc parallel loop - do i = 1, n - y%v(idx%v(i)) = beta * y%v(idx%v(i)) + x(i) - end do - - call y%set_dev() + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc parallel loop + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + end subroutine z_oacc_sctb_x subroutine z_oacc_sctb(n, idx, x, beta, y) @@ -463,7 +510,6 @@ contains if (n == 0) return if (y%is_dev()) call y%sync() - !$acc parallel loop do i = 1, n y%v(idx(i)) = beta * y%v(idx(i)) + x(i) end do @@ -477,30 +523,48 @@ contains integer(psb_ipk_) :: i, n class(psb_i_base_vect_type) :: idx class(psb_z_vect_oacc) :: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info,k + logical :: acc_done info = 0 + acc_done = .false. + if (.not.allocated(x%combuf)) then call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if - select type(ii => idx) + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'z_oacc_gthzbuf') - return + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. end select - if (x%is_host()) call x%sync() + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if - !$acc parallel loop - do i = 1, n - x%combuf(i) = x%v(idx%v(i)) - end do + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine z_oacc_gthzbuf - + subroutine z_oacc_gthzv_x(i, n, idx, x, y) use psb_base_mod implicit none @@ -508,24 +572,41 @@ contains class(psb_i_base_vect_type):: idx complex(psb_dpk_) :: y(:) class(psb_z_vect_oacc):: x - integer(psb_ipk_) :: info + integer(psb_ipk_) :: info, k + logical :: acc_done info = 0 - - select type(ii => idx) + acc_done = .false. + select type (ii => idx) class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() - class default - call psb_errpush(info, 'z_oacc_gthzv_x') - return + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if end select - - if (x%is_host()) call x%sync() - - !$acc parallel loop - do i = 1, n - y(i) = x%v(idx%v(i)) - end do + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + + !$acc parallel loop present(y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y) + end subroutine inner_gth end subroutine z_oacc_gthzv_x subroutine z_oacc_ins_v(n, irl, val, dupl, x, info) @@ -718,7 +799,7 @@ contains integer(psb_ipk_) :: info res = zzero - !write(0,*) 'dot_v' +!!$ write(0,*) 'oacc_dot_v' select type(yy => y) type is (psb_z_base_vect_type) if (x%is_dev()) call x%sync() @@ -762,6 +843,17 @@ contains end function z_oacc_dot_a + subroutine z_oacc_new_buffer(n,x,info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + if (n /= psb_size(x%combuf)) then + call x%psb_z_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + end if + end subroutine z_oacc_new_buffer + subroutine z_oacc_sync_dev_space(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x @@ -860,12 +952,33 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 - if (allocated(x%v)) then - if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - deallocate(x%v, stat=info) - end if + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_z_base_vect_type%free(info) end subroutine z_oacc_vect_free + + subroutine z_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer())& + & call x%free_buffer(info) + end subroutine z_oacc_vect_maybe_free_buffer + + subroutine z_oacc_vect_free_buffer(x,info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_z_base_vect_type%free_buffer(info) + + end subroutine z_oacc_vect_free_buffer + function z_oacc_get_size(x) result(res) implicit none class(psb_z_vect_oacc), intent(inout) :: x From 096bce08c138df418648aef5fd5abeef1364c455 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 11 Sep 2024 12:43:46 +0200 Subject: [PATCH 39/86] Merged changes from V4 OpenACC --- openacc/psb_c_oacc_csr_mat_mod.F90 | 40 ++++++++++++++------- openacc/psb_c_oacc_ell_mat_mod.F90 | 48 ++++++++++++++++--------- openacc/psb_c_oacc_hll_mat_mod.F90 | 56 +++++++++++++++++++----------- openacc/psb_d_oacc_csr_mat_mod.F90 | 40 ++++++++++++++------- openacc/psb_d_oacc_ell_mat_mod.F90 | 48 ++++++++++++++++--------- openacc/psb_d_oacc_hll_mat_mod.F90 | 56 +++++++++++++++++++----------- openacc/psb_s_oacc_csr_mat_mod.F90 | 40 ++++++++++++++------- openacc/psb_s_oacc_ell_mat_mod.F90 | 48 ++++++++++++++++--------- openacc/psb_s_oacc_hll_mat_mod.F90 | 56 +++++++++++++++++++----------- openacc/psb_z_oacc_csr_mat_mod.F90 | 40 ++++++++++++++------- openacc/psb_z_oacc_ell_mat_mod.F90 | 48 ++++++++++++++++--------- openacc/psb_z_oacc_hll_mat_mod.F90 | 56 +++++++++++++++++++----------- 12 files changed, 376 insertions(+), 200 deletions(-) diff --git a/openacc/psb_c_oacc_csr_mat_mod.F90 b/openacc/psb_c_oacc_csr_mat_mod.F90 index 59794335..94edc5e9 100644 --- a/openacc/psb_c_oacc_csr_mat_mod.F90 +++ b/openacc/psb_c_oacc_csr_mat_mod.F90 @@ -139,9 +139,14 @@ contains class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irp)) call acc_delete_finalize(a%irp) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) return end subroutine c_oacc_csr_free_dev_space @@ -246,9 +251,15 @@ contains subroutine c_oacc_csr_sync_dev_space(a) implicit none class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irp)) call acc_create(a%irp) + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irp)>0) call acc_create(a%irp) end subroutine c_oacc_csr_sync_dev_space subroutine c_oacc_csr_sync(a) @@ -258,14 +269,19 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irp) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irp) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine c_oacc_csr_sync diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 index f0559d26..f0b9779b 100644 --- a/openacc/psb_c_oacc_ell_mat_mod.F90 +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -138,11 +138,15 @@ contains class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) return end subroutine c_oacc_ell_free_dev_space @@ -177,10 +181,15 @@ contains implicit none class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) end subroutine c_oacc_ell_sync_dev_space function c_oacc_ell_is_host(a) result(res) @@ -241,16 +250,21 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine c_oacc_ell_sync diff --git a/openacc/psb_c_oacc_hll_mat_mod.F90 b/openacc/psb_c_oacc_hll_mat_mod.F90 index 93436224..98c6a2ee 100644 --- a/openacc/psb_c_oacc_hll_mat_mod.F90 +++ b/openacc/psb_c_oacc_hll_mat_mod.F90 @@ -138,12 +138,16 @@ contains class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) return end subroutine c_oacc_hll_free_dev_space @@ -231,11 +235,16 @@ contains implicit none class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) - if (allocated(a%hkoffs)) call acc_create(a%hkoffs) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) end subroutine c_oacc_hll_sync_dev_space @@ -246,18 +255,23 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) - call acc_update_self(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) - call acc_update_device(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine c_oacc_hll_sync diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index 08b75575..a3119b64 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -139,9 +139,14 @@ contains class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irp)) call acc_delete_finalize(a%irp) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) return end subroutine d_oacc_csr_free_dev_space @@ -246,9 +251,15 @@ contains subroutine d_oacc_csr_sync_dev_space(a) implicit none class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irp)) call acc_create(a%irp) + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irp)>0) call acc_create(a%irp) end subroutine d_oacc_csr_sync_dev_space subroutine d_oacc_csr_sync(a) @@ -258,14 +269,19 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irp) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irp) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine d_oacc_csr_sync diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 3e25f576..3932e286 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -138,11 +138,15 @@ contains class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) return end subroutine d_oacc_ell_free_dev_space @@ -177,10 +181,15 @@ contains implicit none class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) end subroutine d_oacc_ell_sync_dev_space function d_oacc_ell_is_host(a) result(res) @@ -241,16 +250,21 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine d_oacc_ell_sync diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 index 084987e5..fd0fe54f 100644 --- a/openacc/psb_d_oacc_hll_mat_mod.F90 +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -138,12 +138,16 @@ contains class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) return end subroutine d_oacc_hll_free_dev_space @@ -231,11 +235,16 @@ contains implicit none class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) - if (allocated(a%hkoffs)) call acc_create(a%hkoffs) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) end subroutine d_oacc_hll_sync_dev_space @@ -246,18 +255,23 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) - call acc_update_self(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) - call acc_update_device(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine d_oacc_hll_sync diff --git a/openacc/psb_s_oacc_csr_mat_mod.F90 b/openacc/psb_s_oacc_csr_mat_mod.F90 index 16668d25..5eaf80f7 100644 --- a/openacc/psb_s_oacc_csr_mat_mod.F90 +++ b/openacc/psb_s_oacc_csr_mat_mod.F90 @@ -139,9 +139,14 @@ contains class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irp)) call acc_delete_finalize(a%irp) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) return end subroutine s_oacc_csr_free_dev_space @@ -246,9 +251,15 @@ contains subroutine s_oacc_csr_sync_dev_space(a) implicit none class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irp)) call acc_create(a%irp) + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irp)>0) call acc_create(a%irp) end subroutine s_oacc_csr_sync_dev_space subroutine s_oacc_csr_sync(a) @@ -258,14 +269,19 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irp) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irp) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine s_oacc_csr_sync diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 index dcfc1850..56775879 100644 --- a/openacc/psb_s_oacc_ell_mat_mod.F90 +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -138,11 +138,15 @@ contains class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) return end subroutine s_oacc_ell_free_dev_space @@ -177,10 +181,15 @@ contains implicit none class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) end subroutine s_oacc_ell_sync_dev_space function s_oacc_ell_is_host(a) result(res) @@ -241,16 +250,21 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine s_oacc_ell_sync diff --git a/openacc/psb_s_oacc_hll_mat_mod.F90 b/openacc/psb_s_oacc_hll_mat_mod.F90 index 0e7362f2..997433a1 100644 --- a/openacc/psb_s_oacc_hll_mat_mod.F90 +++ b/openacc/psb_s_oacc_hll_mat_mod.F90 @@ -138,12 +138,16 @@ contains class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) return end subroutine s_oacc_hll_free_dev_space @@ -231,11 +235,16 @@ contains implicit none class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) - if (allocated(a%hkoffs)) call acc_create(a%hkoffs) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) end subroutine s_oacc_hll_sync_dev_space @@ -246,18 +255,23 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) - call acc_update_self(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) - call acc_update_device(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine s_oacc_hll_sync diff --git a/openacc/psb_z_oacc_csr_mat_mod.F90 b/openacc/psb_z_oacc_csr_mat_mod.F90 index fdb59b4b..ed92373d 100644 --- a/openacc/psb_z_oacc_csr_mat_mod.F90 +++ b/openacc/psb_z_oacc_csr_mat_mod.F90 @@ -139,9 +139,14 @@ contains class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irp)) call acc_delete_finalize(a%irp) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) return end subroutine z_oacc_csr_free_dev_space @@ -246,9 +251,15 @@ contains subroutine z_oacc_csr_sync_dev_space(a) implicit none class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irp)) call acc_create(a%irp) + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irp)>0) call acc_create(a%irp) end subroutine z_oacc_csr_sync_dev_space subroutine z_oacc_csr_sync(a) @@ -258,14 +269,19 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irp) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irp) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) end if call tmpa%set_sync() end subroutine z_oacc_csr_sync diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 index 9d09d43d..d494922f 100644 --- a/openacc/psb_z_oacc_ell_mat_mod.F90 +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -138,11 +138,15 @@ contains class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) return end subroutine z_oacc_ell_free_dev_space @@ -177,10 +181,15 @@ contains implicit none class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) end subroutine z_oacc_ell_sync_dev_space function z_oacc_ell_is_host(a) result(res) @@ -241,16 +250,21 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) end if call tmpa%set_sync() end subroutine z_oacc_ell_sync diff --git a/openacc/psb_z_oacc_hll_mat_mod.F90 b/openacc/psb_z_oacc_hll_mat_mod.F90 index 9eb7d08c..07739348 100644 --- a/openacc/psb_z_oacc_hll_mat_mod.F90 +++ b/openacc/psb_z_oacc_hll_mat_mod.F90 @@ -138,12 +138,16 @@ contains class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a integer(psb_ipk_) :: info - if (allocated(a%val)) call acc_delete_finalize(a%val) - if (allocated(a%ja)) call acc_delete_finalize(a%ja) - if (allocated(a%irn)) call acc_delete_finalize(a%irn) - if (allocated(a%idiag)) call acc_delete_finalize(a%idiag) - if (allocated(a%hkoffs)) call acc_delete_finalize(a%hkoffs) - + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) return end subroutine z_oacc_hll_free_dev_space @@ -231,11 +235,16 @@ contains implicit none class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a - if (allocated(a%val)) call acc_create(a%val) - if (allocated(a%ja)) call acc_create(a%ja) - if (allocated(a%irn)) call acc_create(a%irn) - if (allocated(a%idiag)) call acc_create(a%idiag) - if (allocated(a%hkoffs)) call acc_create(a%hkoffs) + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_create(a%val) + if (psb_size(a%ja)>0) call acc_create(a%ja) + if (psb_size(a%irn)>0) call acc_create(a%irn) + if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) end subroutine z_oacc_hll_sync_dev_space @@ -246,18 +255,23 @@ contains integer(psb_ipk_) :: info tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! if (a%is_dev()) then - call acc_update_self(a%val) - call acc_update_self(a%ja) - call acc_update_self(a%irn) - call acc_update_self(a%idiag) - call acc_update_self(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) else if (a%is_host()) then - call acc_update_device(a%val) - call acc_update_device(a%ja) - call acc_update_device(a%irn) - call acc_update_device(a%idiag) - call acc_update_device(a%hkoffs) + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) end if call tmpa%set_sync() end subroutine z_oacc_hll_sync From e5504ddddc39bb4d2f6dbf1a1fcc6bcb6af58653 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 12 Sep 2024 15:08:21 +0200 Subject: [PATCH 40/86] Fix memory traffic in GTH/SCT --- openacc/psb_c_oacc_vect_mod.F90 | 7 ++++--- openacc/psb_d_oacc_vect_mod.F90 | 7 ++++--- openacc/psb_i_oacc_vect_mod.F90 | 7 ++++--- openacc/psb_l_oacc_vect_mod.F90 | 7 ++++--- openacc/psb_s_oacc_vect_mod.F90 | 7 ++++--- openacc/psb_z_oacc_vect_mod.F90 | 7 ++++--- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index 4e2cca9e..e479f58d 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -425,7 +425,6 @@ contains class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() - !$acc update device(y%combuf) call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) call y%set_dev() acc_done = .true. @@ -444,6 +443,7 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -488,6 +488,7 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -561,7 +562,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine c_oacc_gthzbuf @@ -605,7 +606,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine c_oacc_gthzv_x diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 80ac35f7..7fd2a441 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -425,7 +425,6 @@ contains class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() - !$acc update device(y%combuf) call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) call y%set_dev() acc_done = .true. @@ -444,6 +443,7 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -488,6 +488,7 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -561,7 +562,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine d_oacc_gthzbuf @@ -605,7 +606,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine d_oacc_gthzv_x diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index cfd0c210..455453a1 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -79,7 +79,6 @@ contains class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() - !$acc update device(y%combuf) call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) call y%set_dev() acc_done = .true. @@ -98,6 +97,7 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -142,6 +142,7 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -215,7 +216,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine i_oacc_gthzbuf @@ -259,7 +260,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine i_oacc_gthzv_x diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 index 5526796f..d35e9141 100644 --- a/openacc/psb_l_oacc_vect_mod.F90 +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -81,7 +81,6 @@ contains class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() - !$acc update device(y%combuf) call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) call y%set_dev() acc_done = .true. @@ -100,6 +99,7 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -144,6 +144,7 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -217,7 +218,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine l_oacc_gthzbuf @@ -261,7 +262,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine l_oacc_gthzv_x diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index b80108ab..87eeccea 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -425,7 +425,6 @@ contains class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() - !$acc update device(y%combuf) call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) call y%set_dev() acc_done = .true. @@ -444,6 +443,7 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -488,6 +488,7 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -561,7 +562,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine s_oacc_gthzbuf @@ -605,7 +606,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine s_oacc_gthzv_x diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 86107c31..0fe1adaa 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -425,7 +425,6 @@ contains class is (psb_i_vect_oacc) if (ii%is_host()) call ii%sync() if (y%is_host()) call y%sync() - !$acc update device(y%combuf) call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) call y%set_dev() acc_done = .true. @@ -444,6 +443,7 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -488,6 +488,7 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k + !$acc update device(x(1:n)) async !$acc parallel loop do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) @@ -561,7 +562,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine z_oacc_gthzbuf @@ -605,7 +606,7 @@ contains y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y) + !$acc update self(y(1:n)) async end subroutine inner_gth end subroutine z_oacc_gthzv_x From 8ab5cef448a9dfb6759bdc37e65a48f0bcd3626e Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 4 Oct 2024 08:37:22 +0200 Subject: [PATCH 41/86] OpenACC environment fixes --- openacc/psb_oacc_env_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openacc/psb_oacc_env_mod.F90 b/openacc/psb_oacc_env_mod.F90 index dc01ad3a..6d810f74 100644 --- a/openacc/psb_oacc_env_mod.F90 +++ b/openacc/psb_oacc_env_mod.F90 @@ -18,7 +18,7 @@ contains subroutine psb_oacc_init(ctxt, dev) type(psb_ctxt_type), intent(in) :: ctxt integer, intent(in), optional :: dev - + oacc_do_maybe_free_buffer = .false. end subroutine psb_oacc_init subroutine psb_oacc_exit() From 108d544fc13ca17f04ebe9769fd77b35d1833a3e Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 4 Oct 2024 08:37:45 +0200 Subject: [PATCH 42/86] Fix clean_zeros to always keep the diagonal --- base/serial/impl/psb_c_coo_impl.F90 | 8 ++++++-- base/serial/impl/psb_c_csc_impl.F90 | 6 +++++- base/serial/impl/psb_c_csr_impl.F90 | 6 +++++- base/serial/impl/psb_d_coo_impl.F90 | 8 ++++++-- base/serial/impl/psb_d_csc_impl.F90 | 6 +++++- base/serial/impl/psb_d_csr_impl.F90 | 6 +++++- base/serial/impl/psb_s_coo_impl.F90 | 8 ++++++-- base/serial/impl/psb_s_csc_impl.F90 | 6 +++++- base/serial/impl/psb_s_csr_impl.F90 | 6 +++++- base/serial/impl/psb_z_coo_impl.F90 | 8 ++++++-- base/serial/impl/psb_z_csc_impl.F90 | 6 +++++- base/serial/impl/psb_z_csr_impl.F90 | 6 +++++- 12 files changed, 64 insertions(+), 16 deletions(-) diff --git a/base/serial/impl/psb_c_coo_impl.F90 b/base/serial/impl/psb_c_coo_impl.F90 index ccf7e42d..2a6aaf13 100644 --- a/base/serial/impl/psb_c_coo_impl.F90 +++ b/base/serial/impl/psb_c_coo_impl.F90 @@ -595,12 +595,16 @@ subroutine psb_c_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= czero) then + cpy = (a%val(i) /= czero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_c_csc_impl.F90 b/base/serial/impl/psb_c_csc_impl.F90 index fe7227dd..f8ab1025 100644 --- a/base/serial/impl/psb_c_csc_impl.F90 +++ b/base/serial/impl/psb_c_csc_impl.F90 @@ -2412,6 +2412,7 @@ subroutine psb_c_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) + logical :: cpy info = 0 call a%sync() @@ -2421,7 +2422,10 @@ subroutine psb_c_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= czero) then + cpy = (a%val(k) /= czero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ia(k)) + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_c_csr_impl.F90 b/base/serial/impl/psb_c_csr_impl.F90 index 276d3d1c..d3494f46 100644 --- a/base/serial/impl/psb_c_csr_impl.F90 +++ b/base/serial/impl/psb_c_csr_impl.F90 @@ -3633,6 +3633,7 @@ subroutine psb_c_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) + logical :: cpy info = 0 call a%sync() @@ -3642,7 +3643,10 @@ subroutine psb_c_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= czero) then + cpy = (a%val(k) /= czero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ja(k)) + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_d_coo_impl.F90 b/base/serial/impl/psb_d_coo_impl.F90 index beb438aa..15d4c4ad 100644 --- a/base/serial/impl/psb_d_coo_impl.F90 +++ b/base/serial/impl/psb_d_coo_impl.F90 @@ -595,12 +595,16 @@ subroutine psb_d_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= dzero) then + cpy = (a%val(i) /= dzero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_d_csc_impl.F90 b/base/serial/impl/psb_d_csc_impl.F90 index d9fa2874..92a4c555 100644 --- a/base/serial/impl/psb_d_csc_impl.F90 +++ b/base/serial/impl/psb_d_csc_impl.F90 @@ -2412,6 +2412,7 @@ subroutine psb_d_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) + logical :: cpy info = 0 call a%sync() @@ -2421,7 +2422,10 @@ subroutine psb_d_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= dzero) then + cpy = (a%val(k) /= dzero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ia(k)) + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_d_csr_impl.F90 b/base/serial/impl/psb_d_csr_impl.F90 index a0aaeeee..09dffe0e 100644 --- a/base/serial/impl/psb_d_csr_impl.F90 +++ b/base/serial/impl/psb_d_csr_impl.F90 @@ -3633,6 +3633,7 @@ subroutine psb_d_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) + logical :: cpy info = 0 call a%sync() @@ -3642,7 +3643,10 @@ subroutine psb_d_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= dzero) then + cpy = (a%val(k) /= dzero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ja(k)) + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_s_coo_impl.F90 b/base/serial/impl/psb_s_coo_impl.F90 index d833cf96..217b39c2 100644 --- a/base/serial/impl/psb_s_coo_impl.F90 +++ b/base/serial/impl/psb_s_coo_impl.F90 @@ -595,12 +595,16 @@ subroutine psb_s_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= szero) then + cpy = (a%val(i) /= szero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_s_csc_impl.F90 b/base/serial/impl/psb_s_csc_impl.F90 index c135c9ef..ffa32f8f 100644 --- a/base/serial/impl/psb_s_csc_impl.F90 +++ b/base/serial/impl/psb_s_csc_impl.F90 @@ -2412,6 +2412,7 @@ subroutine psb_s_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) + logical :: cpy info = 0 call a%sync() @@ -2421,7 +2422,10 @@ subroutine psb_s_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= szero) then + cpy = (a%val(k) /= szero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ia(k)) + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_s_csr_impl.F90 b/base/serial/impl/psb_s_csr_impl.F90 index 9d5dc145..5e18de7b 100644 --- a/base/serial/impl/psb_s_csr_impl.F90 +++ b/base/serial/impl/psb_s_csr_impl.F90 @@ -3633,6 +3633,7 @@ subroutine psb_s_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) + logical :: cpy info = 0 call a%sync() @@ -3642,7 +3643,10 @@ subroutine psb_s_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= szero) then + cpy = (a%val(k) /= szero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ja(k)) + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_z_coo_impl.F90 b/base/serial/impl/psb_z_coo_impl.F90 index ea6b2492..89950c4c 100644 --- a/base/serial/impl/psb_z_coo_impl.F90 +++ b/base/serial/impl/psb_z_coo_impl.F90 @@ -595,12 +595,16 @@ subroutine psb_z_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= zzero) then + cpy = (a%val(i) /= zzero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_z_csc_impl.F90 b/base/serial/impl/psb_z_csc_impl.F90 index becb7003..a37e04e5 100644 --- a/base/serial/impl/psb_z_csc_impl.F90 +++ b/base/serial/impl/psb_z_csc_impl.F90 @@ -2412,6 +2412,7 @@ subroutine psb_z_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) + logical :: cpy info = 0 call a%sync() @@ -2421,7 +2422,10 @@ subroutine psb_z_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= zzero) then + cpy = (a%val(k) /= zzero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ia(k)) + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_z_csr_impl.F90 b/base/serial/impl/psb_z_csr_impl.F90 index 7f11c3bd..57d31f80 100644 --- a/base/serial/impl/psb_z_csr_impl.F90 +++ b/base/serial/impl/psb_z_csr_impl.F90 @@ -3633,6 +3633,7 @@ subroutine psb_z_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) + logical :: cpy info = 0 call a%sync() @@ -3642,7 +3643,10 @@ subroutine psb_z_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= zzero) then + cpy = (a%val(k) /= zzero) + ! Always keep the diagonal, even if numerically zero + if (.not.cpy) cpy = (i == a%ja(k)) + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 From 1c235f928189169a9318d9027fd78f33740149ff Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 4 Oct 2024 10:28:52 +0200 Subject: [PATCH 43/86] Improve clean_zeros --- base/serial/impl/psb_c_coo_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_c_csc_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_c_csr_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_d_coo_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_d_csc_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_d_csr_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_s_coo_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_s_csc_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_s_csr_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_z_coo_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_z_csc_impl.F90 | 20 +++++++++++++++----- base/serial/impl/psb_z_csr_impl.F90 | 20 +++++++++++++++----- 12 files changed, 180 insertions(+), 60 deletions(-) diff --git a/base/serial/impl/psb_c_coo_impl.F90 b/base/serial/impl/psb_c_coo_impl.F90 index 2a6aaf13..5b681d22 100644 --- a/base/serial/impl/psb_c_coo_impl.F90 +++ b/base/serial/impl/psb_c_coo_impl.F90 @@ -601,9 +601,12 @@ subroutine psb_c_coo_clean_zeros(a, info) nzin = a%get_nzeros() j = 0 do i=1, nzin - cpy = (a%val(i) /= czero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (a%val(i) /= czero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if if (cpy) then j = j + 1 a%val(j) = a%val(i) @@ -5930,12 +5933,19 @@ subroutine psb_lc_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= czero) then + if (a%val(i) /= czero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_c_csc_impl.F90 b/base/serial/impl/psb_c_csc_impl.F90 index f8ab1025..190a4d5b 100644 --- a/base/serial/impl/psb_c_csc_impl.F90 +++ b/base/serial/impl/psb_c_csc_impl.F90 @@ -2422,9 +2422,12 @@ subroutine psb_c_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - cpy = (a%val(k) /= czero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ia(k)) + if (a%val(k) /= czero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) @@ -4317,7 +4320,8 @@ subroutine psb_lc_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + logical :: cpy + info = 0 call a%sync() nc = a%get_ncols() @@ -4326,7 +4330,13 @@ subroutine psb_lc_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= czero) then + if (a%val(k) /= czero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_c_csr_impl.F90 b/base/serial/impl/psb_c_csr_impl.F90 index d3494f46..0db9f3fa 100644 --- a/base/serial/impl/psb_c_csr_impl.F90 +++ b/base/serial/impl/psb_c_csr_impl.F90 @@ -3643,9 +3643,12 @@ subroutine psb_c_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - cpy = (a%val(k) /= czero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ja(k)) + if (a%val(k) /= czero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) @@ -6556,7 +6559,8 @@ subroutine psb_lc_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + logical :: cpy + info = 0 call a%sync() nr = a%get_nrows() @@ -6565,7 +6569,13 @@ subroutine psb_lc_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= czero) then + if (a%val(k) /= czero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_d_coo_impl.F90 b/base/serial/impl/psb_d_coo_impl.F90 index 15d4c4ad..a802775a 100644 --- a/base/serial/impl/psb_d_coo_impl.F90 +++ b/base/serial/impl/psb_d_coo_impl.F90 @@ -601,9 +601,12 @@ subroutine psb_d_coo_clean_zeros(a, info) nzin = a%get_nzeros() j = 0 do i=1, nzin - cpy = (a%val(i) /= dzero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (a%val(i) /= dzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if if (cpy) then j = j + 1 a%val(j) = a%val(i) @@ -5930,12 +5933,19 @@ subroutine psb_ld_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= dzero) then + if (a%val(i) /= dzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_d_csc_impl.F90 b/base/serial/impl/psb_d_csc_impl.F90 index 92a4c555..61e2ad14 100644 --- a/base/serial/impl/psb_d_csc_impl.F90 +++ b/base/serial/impl/psb_d_csc_impl.F90 @@ -2422,9 +2422,12 @@ subroutine psb_d_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - cpy = (a%val(k) /= dzero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ia(k)) + if (a%val(k) /= dzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) @@ -4317,7 +4320,8 @@ subroutine psb_ld_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + logical :: cpy + info = 0 call a%sync() nc = a%get_ncols() @@ -4326,7 +4330,13 @@ subroutine psb_ld_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= dzero) then + if (a%val(k) /= dzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_d_csr_impl.F90 b/base/serial/impl/psb_d_csr_impl.F90 index 09dffe0e..56ba8c63 100644 --- a/base/serial/impl/psb_d_csr_impl.F90 +++ b/base/serial/impl/psb_d_csr_impl.F90 @@ -3643,9 +3643,12 @@ subroutine psb_d_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - cpy = (a%val(k) /= dzero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ja(k)) + if (a%val(k) /= dzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) @@ -6556,7 +6559,8 @@ subroutine psb_ld_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + logical :: cpy + info = 0 call a%sync() nr = a%get_nrows() @@ -6565,7 +6569,13 @@ subroutine psb_ld_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= dzero) then + if (a%val(k) /= dzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_s_coo_impl.F90 b/base/serial/impl/psb_s_coo_impl.F90 index 217b39c2..0979ff85 100644 --- a/base/serial/impl/psb_s_coo_impl.F90 +++ b/base/serial/impl/psb_s_coo_impl.F90 @@ -601,9 +601,12 @@ subroutine psb_s_coo_clean_zeros(a, info) nzin = a%get_nzeros() j = 0 do i=1, nzin - cpy = (a%val(i) /= szero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (a%val(i) /= szero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if if (cpy) then j = j + 1 a%val(j) = a%val(i) @@ -5930,12 +5933,19 @@ subroutine psb_ls_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= szero) then + if (a%val(i) /= szero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_s_csc_impl.F90 b/base/serial/impl/psb_s_csc_impl.F90 index ffa32f8f..ca41d705 100644 --- a/base/serial/impl/psb_s_csc_impl.F90 +++ b/base/serial/impl/psb_s_csc_impl.F90 @@ -2422,9 +2422,12 @@ subroutine psb_s_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - cpy = (a%val(k) /= szero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ia(k)) + if (a%val(k) /= szero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) @@ -4317,7 +4320,8 @@ subroutine psb_ls_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + logical :: cpy + info = 0 call a%sync() nc = a%get_ncols() @@ -4326,7 +4330,13 @@ subroutine psb_ls_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= szero) then + if (a%val(k) /= szero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_s_csr_impl.F90 b/base/serial/impl/psb_s_csr_impl.F90 index 5e18de7b..323601ca 100644 --- a/base/serial/impl/psb_s_csr_impl.F90 +++ b/base/serial/impl/psb_s_csr_impl.F90 @@ -3643,9 +3643,12 @@ subroutine psb_s_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - cpy = (a%val(k) /= szero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ja(k)) + if (a%val(k) /= szero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) @@ -6556,7 +6559,8 @@ subroutine psb_ls_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + logical :: cpy + info = 0 call a%sync() nr = a%get_nrows() @@ -6565,7 +6569,13 @@ subroutine psb_ls_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= szero) then + if (a%val(k) /= szero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_z_coo_impl.F90 b/base/serial/impl/psb_z_coo_impl.F90 index 89950c4c..74c3f2cb 100644 --- a/base/serial/impl/psb_z_coo_impl.F90 +++ b/base/serial/impl/psb_z_coo_impl.F90 @@ -601,9 +601,12 @@ subroutine psb_z_coo_clean_zeros(a, info) nzin = a%get_nzeros() j = 0 do i=1, nzin - cpy = (a%val(i) /= zzero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (a%ia(i) == a%ja(i)) + if (a%val(i) /= zzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if if (cpy) then j = j + 1 a%val(j) = a%val(i) @@ -5930,12 +5933,19 @@ subroutine psb_lz_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + logical :: cpy + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= zzero) then + if (a%val(i) /= zzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (a%ia(i) == a%ja(i)) + end if + if (cpy) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_z_csc_impl.F90 b/base/serial/impl/psb_z_csc_impl.F90 index a37e04e5..7ceff47f 100644 --- a/base/serial/impl/psb_z_csc_impl.F90 +++ b/base/serial/impl/psb_z_csc_impl.F90 @@ -2422,9 +2422,12 @@ subroutine psb_z_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - cpy = (a%val(k) /= zzero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ia(k)) + if (a%val(k) /= zzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) @@ -4317,7 +4320,8 @@ subroutine psb_lz_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + logical :: cpy + info = 0 call a%sync() nc = a%get_ncols() @@ -4326,7 +4330,13 @@ subroutine psb_lz_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= zzero) then + if (a%val(k) /= zzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ia(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_z_csr_impl.F90 b/base/serial/impl/psb_z_csr_impl.F90 index 57d31f80..54659def 100644 --- a/base/serial/impl/psb_z_csr_impl.F90 +++ b/base/serial/impl/psb_z_csr_impl.F90 @@ -3643,9 +3643,12 @@ subroutine psb_z_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - cpy = (a%val(k) /= zzero) - ! Always keep the diagonal, even if numerically zero - if (.not.cpy) cpy = (i == a%ja(k)) + if (a%val(k) /= zzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) @@ -6556,7 +6559,8 @@ subroutine psb_lz_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + logical :: cpy + info = 0 call a%sync() nr = a%get_nrows() @@ -6565,7 +6569,13 @@ subroutine psb_lz_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= zzero) then + if (a%val(k) /= zzero) then + cpy = .true. + else + ! Always keep the diagonal, even if numerically zero + cpy = (i == a%ja(k)) + end if + if (cpy) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 From 9601a837f59469a7a6c1518edeaca045217ec8d8 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 4 Oct 2024 11:18:39 +0200 Subject: [PATCH 44/86] Define --enable-cuda --with-cudadir for CUDA configry --- config/pac.m4 | 27 ++++++++++++++++++++++++++- configure | 38 ++++++++++++++++++++++++++++++-------- configure.ac | 4 ++++ 3 files changed, 60 insertions(+), 9 deletions(-) diff --git a/config/pac.m4 b/config/pac.m4 index 83356540..a39256e0 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -2157,6 +2157,31 @@ CPPFLAGS="$SAVE_CPPFLAGS" +dnl @synopsis PAC_ARG_CUDA +dnl +dnl Test for --enable-cuda +dnl +dnl +dnl +dnl Example use: +dnl +dnl +dnl @author Salvatore Filippone +dnl +AC_DEFUN([PAC_ARG_CUDA], +[AC_MSG_CHECKING([whether we want cuda ]) +AC_ARG_ENABLE(cuda, +AS_HELP_STRING([--enable-cuda], +[Specify whether to enable cuda. ]), +[ +pac_cv_cuda="yes"; +] +dnl , +dnl [pac_cv_cuda="no";] + ) +] +) + dnl @synopsis PAC_CHECK_CUDA dnl @@ -2173,7 +2198,7 @@ dnl dnl @author Salvatore Filippone dnl AC_DEFUN(PAC_CHECK_CUDA, -[AC_ARG_WITH(cuda, AC_HELP_STRING([--with-cuda=DIR], [Specify the CUDA install directory.]), +[AC_ARG_WITH(cudadir, AC_HELP_STRING([--with-cudadir=DIR], [Specify the CUDA install directory.]), [pac_cv_cuda_dir=$withval], [pac_cv_cuda_dir='']) diff --git a/configure b/configure index 3022ff53..dbc419fe 100755 --- a/configure +++ b/configure @@ -849,7 +849,8 @@ with_amd with_amddir with_amdincdir with_amdlibdir -with_cuda +enable_cuda +with_cudadir with_cudacc enable_openacc with_extraopenacc @@ -1506,6 +1507,7 @@ Optional Features: --disable-silent-rules verbose build output (undo: "make V=0") --enable-openmp Specify whether to enable openmp. --disable-openmp do not use OpenMP + --enable-cuda Specify whether to enable cuda. --enable-openacc Specify whether to enable openacc. --disable-openacc do not use Openacc @@ -1550,7 +1552,7 @@ Optional Packages: --with-amddir=DIR Specify the directory for AMD library and includes. --with-amdincdir=DIR Specify the directory for AMD includes. --with-amdlibdir=DIR Specify the directory for AMD library. - --with-cuda=DIR Specify the CUDA install directory. + --with-cudadir=DIR Specify the CUDA install directory. --with-cudacc A comma-separated list of CCs to compile to, for example, --with-cudacc=50,60,70,75 --with-extraopenacc additional [EXTRAOPENACC] flags to be added: will @@ -10628,12 +10630,26 @@ if test "x$psblas_cv_have_amd" == "xyes" ; then fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we want cuda " >&5 +printf %s "checking whether we want cuda ... " >&6; } +# Check whether --enable-cuda was given. +if test ${enable_cuda+y} +then : + enableval=$enable_cuda; +pac_cv_cuda="yes"; + + +fi -# Check whether --with-cuda was given. -if test ${with_cuda+y} + +if test "x$pac_cv_cuda" == "xyes"; then + + +# Check whether --with-cudadir was given. +if test ${with_cudadir+y} then : - withval=$with_cuda; pac_cv_cuda_dir=$withval + withval=$with_cudadir; pac_cv_cuda_dir=$withval else $as_nop pac_cv_cuda_dir='' fi @@ -10719,10 +10735,10 @@ SAVE_LIBS="$LIBS" SAVE_CPPFLAGS="$CPPFLAGS" if test "x$pac_cv_have_cuda" == "x"; then -# Check whether --with-cuda was given. -if test ${with_cuda+y} +# Check whether --with-cudadir was given. +if test ${with_cudadir+y} then : - withval=$with_cuda; pac_cv_cuda_dir=$withval + withval=$with_cudadir; pac_cv_cuda_dir=$withval else $as_nop pac_cv_cuda_dir='' fi @@ -10884,6 +10900,7 @@ fi if test "x$pac_cv_ipk_size" != "x4"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ipk_size, disabling CUDA/SPGPU" >&5 printf "%s\n" "$as_me: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ipk_size, disabling CUDA/SPGPU" >&6;} + pac_cv_cuda="no"; HAVE_CUDA="no"; CUDA_CC=""; SPGPU_LIBS=""; @@ -10893,6 +10910,7 @@ printf "%s\n" "$as_me: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ CUDA_INCLUDES=""; CUDA_LIBS=""; fi +fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we want openacc " >&5 printf %s "checking whether we want openacc ... " >&6; } @@ -12741,6 +12759,8 @@ fi OPENACC : ${pac_cv_openacc} FCOPENACC : ${FCOPENACC} + OACCD : ${OACCD} + OACCLD : ${OACCLD} BLAS : ${BLAS_LIBS} @@ -12777,6 +12797,8 @@ printf "%s\n" "$as_me: OPENACC : ${pac_cv_openacc} FCOPENACC : ${FCOPENACC} + OACCD : ${OACCD} + OACCLD : ${OACCLD} BLAS : ${BLAS_LIBS} diff --git a/configure.ac b/configure.ac index c702d4b1..5966801c 100755 --- a/configure.ac +++ b/configure.ac @@ -795,6 +795,8 @@ if test "x$psblas_cv_have_amd" == "xyes" ; then fi +PAC_ARG_CUDA() +if test "x$pac_cv_cuda" == "xyes"; then PAC_CHECK_CUDA() @@ -834,6 +836,7 @@ fi if test "x$pac_cv_ipk_size" != "x4"; then AC_MSG_NOTICE([For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ipk_size, disabling CUDA/SPGPU]) + pac_cv_cuda="no"; HAVE_CUDA="no"; CUDA_CC=""; SPGPU_LIBS=""; @@ -843,6 +846,7 @@ if test "x$pac_cv_ipk_size" != "x4"; then CUDA_INCLUDES=""; CUDA_LIBS=""; fi +fi PAC_ARG_OPENACC() dnl AC_ARG_ENABLE([openacc], From 68f20c0e7a04467f00fcc2b6febbd891a2d61557 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 7 Oct 2024 12:44:45 +0200 Subject: [PATCH 45/86] Modify init --- openacc/psb_oacc_env_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openacc/psb_oacc_env_mod.F90 b/openacc/psb_oacc_env_mod.F90 index dc01ad3a..6d810f74 100644 --- a/openacc/psb_oacc_env_mod.F90 +++ b/openacc/psb_oacc_env_mod.F90 @@ -18,7 +18,7 @@ contains subroutine psb_oacc_init(ctxt, dev) type(psb_ctxt_type), intent(in) :: ctxt integer, intent(in), optional :: dev - + oacc_do_maybe_free_buffer = .false. end subroutine psb_oacc_init subroutine psb_oacc_exit() From 740609a4d8527de07a27d647f7c8b973142439aa Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 7 Oct 2024 12:45:18 +0200 Subject: [PATCH 46/86] Fix present() clauses --- openacc/psb_c_oacc_vect_mod.F90 | 80 ++++++++++++++++++++------------- openacc/psb_d_oacc_vect_mod.F90 | 80 ++++++++++++++++++++------------- openacc/psb_i_oacc_vect_mod.F90 | 58 +++++++++++++++--------- openacc/psb_l_oacc_vect_mod.F90 | 58 +++++++++++++++--------- openacc/psb_s_oacc_vect_mod.F90 | 80 ++++++++++++++++++++------------- openacc/psb_z_oacc_vect_mod.F90 | 80 ++++++++++++++++++++------------- 6 files changed, 266 insertions(+), 170 deletions(-) diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index e479f58d..40437184 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains complex(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains complex(psb_spk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains complex(psb_spk_), intent(in) :: alpha complex(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_spk_) :: sum, mx integer(psb_ipk_) :: i mx = szero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = szero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_spk_) :: max_val integer(psb_ipk_) :: i max_val = szero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_spk_) :: res integer(psb_ipk_) :: i res = szero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains complex(psb_spk_), intent(inout) :: y(:) complex(psb_spk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine c_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine c_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_c_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine c_oacc_new_buffer subroutine c_oacc_sync_dev_space(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine c_oacc_sync_dev_space subroutine c_oacc_sync(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call c_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine c_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_c_base_vect_type%free(info) end subroutine c_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine c_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_c_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function c_oacc_get_size diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 7fd2a441..84441c8a 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains real(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains real(psb_dpk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains real(psb_dpk_), intent(in) :: alpha real(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_dpk_) :: sum, mx integer(psb_ipk_) :: i mx = dzero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = dzero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_dpk_) :: max_val integer(psb_ipk_) :: i max_val = dzero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_dpk_) :: res integer(psb_ipk_) :: i res = dzero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains real(psb_dpk_), intent(inout) :: y(:) real(psb_dpk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine d_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine d_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_d_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine d_oacc_new_buffer subroutine d_oacc_sync_dev_space(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine d_oacc_sync_dev_space subroutine d_oacc_sync(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call d_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine d_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_d_base_vect_type%free(info) end subroutine d_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine d_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_d_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function d_oacc_get_size diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index 455453a1..42cdc18c 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -70,6 +70,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -97,8 +98,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -142,8 +143,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -185,6 +186,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -210,13 +212,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine i_oacc_gthzbuf @@ -254,13 +256,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine i_oacc_gthzv_x @@ -287,7 +289,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -411,7 +413,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -449,26 +451,36 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_i_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine i_oacc_new_buffer subroutine i_oacc_sync_dev_space(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine i_oacc_sync_dev_space subroutine i_oacc_sync(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call i_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine i_oacc_sync @@ -541,6 +553,8 @@ contains type(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -553,8 +567,9 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_i_base_vect_type%free(info) end subroutine i_oacc_vect_free @@ -564,8 +579,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine i_oacc_vect_maybe_free_buffer @@ -573,7 +590,7 @@ contains implicit none class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_i_base_vect_type%free_buffer(info) @@ -585,7 +602,6 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function i_oacc_get_size diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 index d35e9141..60cdee35 100644 --- a/openacc/psb_l_oacc_vect_mod.F90 +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -72,6 +72,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -99,8 +100,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -144,8 +145,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -187,6 +188,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -212,13 +214,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine l_oacc_gthzbuf @@ -256,13 +258,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine l_oacc_gthzv_x @@ -289,7 +291,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -413,7 +415,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -451,26 +453,36 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_l_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine l_oacc_new_buffer subroutine l_oacc_sync_dev_space(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine l_oacc_sync_dev_space subroutine l_oacc_sync(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call l_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine l_oacc_sync @@ -543,6 +555,8 @@ contains type(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -555,8 +569,9 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_l_base_vect_type%free(info) end subroutine l_oacc_vect_free @@ -566,8 +581,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine l_oacc_vect_maybe_free_buffer @@ -575,7 +592,7 @@ contains implicit none class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_l_base_vect_type%free_buffer(info) @@ -587,7 +604,6 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function l_oacc_get_size diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 87eeccea..70c9dd49 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains real(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains real(psb_spk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains real(psb_spk_), intent(in) :: alpha real(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_spk_) :: sum, mx integer(psb_ipk_) :: i mx = szero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = szero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_spk_) :: max_val integer(psb_ipk_) :: i max_val = szero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_spk_) :: res integer(psb_ipk_) :: i res = szero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains real(psb_spk_), intent(inout) :: y(:) real(psb_spk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine s_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine s_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_s_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine s_oacc_new_buffer subroutine s_oacc_sync_dev_space(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine s_oacc_sync_dev_space subroutine s_oacc_sync(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call s_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine s_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_s_base_vect_type%free(info) end subroutine s_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine s_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_s_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function s_oacc_get_size diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 0fe1adaa..0bc10283 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains complex(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains complex(psb_dpk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains complex(psb_dpk_), intent(in) :: alpha complex(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_dpk_) :: sum, mx integer(psb_ipk_) :: i mx = dzero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = dzero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_dpk_) :: max_val integer(psb_ipk_) :: i max_val = dzero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_dpk_) :: res integer(psb_ipk_) :: i res = dzero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains complex(psb_dpk_), intent(inout) :: y(:) complex(psb_dpk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine z_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine z_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_z_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine z_oacc_new_buffer subroutine z_oacc_sync_dev_space(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine z_oacc_sync_dev_space subroutine z_oacc_sync(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call z_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine z_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_z_base_vect_type%free(info) end subroutine z_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine z_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_z_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function z_oacc_get_size From ee56c6be3c0fd99efb30c9b13c9875deb63e8bf6 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 8 Oct 2024 11:47:37 +0200 Subject: [PATCH 47/86] Cosmetic changes to OpenACC vectors --- base/modules/serial/psb_c_vect_mod.F90 | 1 - base/modules/serial/psb_d_vect_mod.F90 | 1 - base/modules/serial/psb_s_vect_mod.F90 | 1 - base/modules/serial/psb_z_vect_mod.F90 | 1 - 4 files changed, 4 deletions(-) diff --git a/base/modules/serial/psb_c_vect_mod.F90 b/base/modules/serial/psb_c_vect_mod.F90 index 1e9510f2..a0a34621 100644 --- a/base/modules/serial/psb_c_vect_mod.F90 +++ b/base/modules/serial/psb_c_vect_mod.F90 @@ -104,7 +104,6 @@ module psb_c_vect_mod generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 procedure, pass(z) :: upd_xyz => c_vect_upd_xyz procedure, pass(z) :: xyzw => c_vect_xyzw - procedure, pass(y) :: mlt_v => c_vect_mlt_v procedure, pass(y) :: mlt_a => c_vect_mlt_a procedure, pass(z) :: mlt_a_2 => c_vect_mlt_a_2 diff --git a/base/modules/serial/psb_d_vect_mod.F90 b/base/modules/serial/psb_d_vect_mod.F90 index ae3062dd..acdce5fd 100644 --- a/base/modules/serial/psb_d_vect_mod.F90 +++ b/base/modules/serial/psb_d_vect_mod.F90 @@ -104,7 +104,6 @@ module psb_d_vect_mod generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 procedure, pass(z) :: upd_xyz => d_vect_upd_xyz procedure, pass(z) :: xyzw => d_vect_xyzw - procedure, pass(y) :: mlt_v => d_vect_mlt_v procedure, pass(y) :: mlt_a => d_vect_mlt_a procedure, pass(z) :: mlt_a_2 => d_vect_mlt_a_2 diff --git a/base/modules/serial/psb_s_vect_mod.F90 b/base/modules/serial/psb_s_vect_mod.F90 index cad4659c..aeccae4d 100644 --- a/base/modules/serial/psb_s_vect_mod.F90 +++ b/base/modules/serial/psb_s_vect_mod.F90 @@ -104,7 +104,6 @@ module psb_s_vect_mod generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 procedure, pass(z) :: upd_xyz => s_vect_upd_xyz procedure, pass(z) :: xyzw => s_vect_xyzw - procedure, pass(y) :: mlt_v => s_vect_mlt_v procedure, pass(y) :: mlt_a => s_vect_mlt_a procedure, pass(z) :: mlt_a_2 => s_vect_mlt_a_2 diff --git a/base/modules/serial/psb_z_vect_mod.F90 b/base/modules/serial/psb_z_vect_mod.F90 index 48f2e947..484d6423 100644 --- a/base/modules/serial/psb_z_vect_mod.F90 +++ b/base/modules/serial/psb_z_vect_mod.F90 @@ -104,7 +104,6 @@ module psb_z_vect_mod generic, public :: axpby => axpby_v, axpby_a, axpby_v2, axpby_a2 procedure, pass(z) :: upd_xyz => z_vect_upd_xyz procedure, pass(z) :: xyzw => z_vect_xyzw - procedure, pass(y) :: mlt_v => z_vect_mlt_v procedure, pass(y) :: mlt_a => z_vect_mlt_a procedure, pass(z) :: mlt_a_2 => z_vect_mlt_a_2 From c74be820ea1ef6556168359f445db8a1f274d038 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 8 Oct 2024 11:48:15 +0200 Subject: [PATCH 48/86] Rework configry for CUDA --- Make.inc.in | 5 ++++- configure | 28 ++++++++++++++++++++-------- configure.ac | 27 ++++++++++++++++++--------- cuda/Makefile | 9 +++++++++ cuda/impl/Makefile | 9 +++++++++ cuda/spgpu/kernels/sdot.cu | 1 - test/cudakern/Makefile | 5 +++++ 7 files changed, 65 insertions(+), 19 deletions(-) diff --git a/Make.inc.in b/Make.inc.in index 38c8ef86..a62abd50 100755 --- a/Make.inc.in +++ b/Make.inc.in @@ -80,11 +80,14 @@ LCUDA=@LCUDA@ SPGPU_LIBS=@SPGPU_LIBS@ CUDA_DIR=@CUDA_DIR@ -CUDA_DEFINES=@CUDA_DEFINES@ CUDA_INCLUDES=@CUDA_INCLUDES@ CUDA_LIBS=@CUDA_LIBS@ CUDA_VERSION=@CUDA_VERSION@ CUDA_SHORT_VERSION=@CUDA_SHORT_VERSION@ +CUDA_DEFINES=@CUDA_DEFINES@ +FCUDEFINES=@FCUDEFINES@ +CCUDEFINES=@CCUDEFINES@ +CXXCUDEFINES=@CXXCUDEFINES@ NVCC=@CUDA_NVCC@ CUDEFINES=@CUDEFINES@ diff --git a/configure b/configure index dbc419fe..de173d6e 100755 --- a/configure +++ b/configure @@ -668,6 +668,9 @@ CUDA_SHORT_VERSION CUDA_VERSION CUDA_LIBS CUDA_INCLUDES +CXXCUDEFINES +CCUDEFINES +FCUDEFINES CUDA_DEFINES CUDA_DIR EXTRALDLIBS @@ -10856,9 +10859,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBS="$SAVE_LIBS" CPPFLAGS="$SAVE_CPPFLAGS" + HAVE_CUDA="yes"; CUDA_VERSION="$pac_cv_cuda_version"; CUDA_SHORT_VERSION=$(expr $pac_cv_cuda_version / 1000); - HAVE_CUDA="yes"; + CUDA_DEFINES="-DHAVE_CUDA -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}"; SPGPU_LIBS="-lspgpu"; CUDAD=cudad; CUDALD=cudald; @@ -10879,7 +10883,7 @@ fi if test "x$pac_cv_cudacc" == "x"; then - pac_cv_cudacc="50,60,70,75"; + pac_cv_cudacc="50,60,70,75,80,86"; CUDA_CC="$pac_cv_cudacc"; fi if (( $pac_cv_cuda_version >= 11070 )) @@ -10891,9 +10895,10 @@ fi CUDEFINES="$CUDEFINES -gencode arch=compute_$cc,code=sm_$cc"; done if test "x$pac_cv_cuda_version" != "xunknown"; then - CUDEFINES="$CUDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - FDEFINES="$FDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - CDEFINES="$CDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" + CUDEFINES="$CUDEFINES ${CUDA_DEFINES}" + FCUDEFINES=" ${CUDA_DEFINES}" + CCUDEFINES=" ${CUDA_DEFINES}" + CXXCUDEFINES=" ${CUDA_DEFINES}" fi fi @@ -10907,8 +10912,12 @@ printf "%s\n" "$as_me: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ CUDAD=""; CUDALD=""; CUDEFINES=""; + CUDA_DEFINES=""; CUDA_INCLUDES=""; CUDA_LIBS=""; + FCUDEFINES=""; + CCUDEFINES=""; + CXXCUDEFINES=""; fi fi @@ -11373,9 +11382,9 @@ UTILLIBNAME=libpsb_util.a PSBLASRULES=' PSBLDLIBS=$(LAPACK) $(BLAS) $(METIS_LIB) $(AMD_LIB) $(LIBS) -CXXDEFINES=$(PSBCXXDEFINES) $(CUDA_DEFINES) -CDEFINES=$(PSBCDEFINES) $(CUDA_DEFINES) -FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) +CXXDEFINES=$(PSBCXXDEFINES) +CDEFINES=$(PSBCDEFINES) +FDEFINES=$(PSBFDEFINES) # These should be portable rules, arent they? @@ -11420,6 +11429,9 @@ FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) + + + diff --git a/configure.ac b/configure.ac index 5966801c..c670f6c8 100755 --- a/configure.ac +++ b/configure.ac @@ -803,10 +803,11 @@ PAC_CHECK_CUDA() if test "x$pac_cv_have_cuda" == "xyes"; then PAC_CHECK_CUDA_VERSION() - CUDA_VERSION="$pac_cv_cuda_version"; - CUDA_SHORT_VERSION=$(expr $pac_cv_cuda_version / 1000); dnl PAC_CHECK_SPGPU() HAVE_CUDA="yes"; + CUDA_VERSION="$pac_cv_cuda_version"; + CUDA_SHORT_VERSION=$(expr $pac_cv_cuda_version / 1000); + CUDA_DEFINES="-DHAVE_CUDA -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}"; SPGPU_LIBS="-lspgpu"; CUDAD=cudad; CUDALD=cudald; @@ -816,7 +817,7 @@ if test "x$pac_cv_have_cuda" == "xyes"; then PAC_ARG_WITH_CUDACC() if test "x$pac_cv_cudacc" == "x"; then - pac_cv_cudacc="50,60,70,75"; + pac_cv_cudacc="50,60,70,75,80,86"; CUDA_CC="$pac_cv_cudacc"; fi if (( $pac_cv_cuda_version >= 11070 )) @@ -828,9 +829,10 @@ if test "x$pac_cv_have_cuda" == "xyes"; then CUDEFINES="$CUDEFINES -gencode arch=compute_$cc,code=sm_$cc"; done if test "x$pac_cv_cuda_version" != "xunknown"; then - CUDEFINES="$CUDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - FDEFINES="$FDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - CDEFINES="$CDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" + CUDEFINES="$CUDEFINES ${CUDA_DEFINES}" + FCUDEFINES=" ${CUDA_DEFINES}" + CCUDEFINES=" ${CUDA_DEFINES}" + CXXCUDEFINES=" ${CUDA_DEFINES}" fi fi @@ -843,8 +845,12 @@ if test "x$pac_cv_ipk_size" != "x4"; then CUDAD=""; CUDALD=""; CUDEFINES=""; + CUDA_DEFINES=""; CUDA_INCLUDES=""; CUDA_LIBS=""; + FCUDEFINES=""; + CCUDEFINES=""; + CXXCUDEFINES=""; fi fi @@ -970,9 +976,9 @@ AC_SUBST(FINCLUDES) PSBLASRULES=' PSBLDLIBS=$(LAPACK) $(BLAS) $(METIS_LIB) $(AMD_LIB) $(LIBS) -CXXDEFINES=$(PSBCXXDEFINES) $(CUDA_DEFINES) -CDEFINES=$(PSBCDEFINES) $(CUDA_DEFINES) -FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) +CXXDEFINES=$(PSBCXXDEFINES) +CDEFINES=$(PSBCDEFINES) +FDEFINES=$(PSBFDEFINES) # These should be portable rules, arent they? @@ -1008,6 +1014,9 @@ dnl AC_SUBST(SPGPU_INCDIR) AC_SUBST(EXTRALDLIBS) AC_SUBST(CUDA_DIR) AC_SUBST(CUDA_DEFINES) +AC_SUBST(FCUDEFINES) +AC_SUBST(CCUDEFINES) +AC_SUBST(CXXCUDEFINES) AC_SUBST(CUDA_INCLUDES) AC_SUBST(CUDA_LIBS) AC_SUBST(CUDA_VERSION) diff --git a/cuda/Makefile b/cuda/Makefile index 7e428629..a6757fe7 100755 --- a/cuda/Makefile +++ b/cuda/Makefile @@ -141,3 +141,12 @@ spgpuclean: $(MAKE) -C spgpu clean veryclean: clean + +.c.o: + $(CC) $(CCOPT) $(CCUDEFINES) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXCUDEFINES) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ diff --git a/cuda/impl/Makefile b/cuda/impl/Makefile index 12bf0747..9ceb4575 100755 --- a/cuda/impl/Makefile +++ b/cuda/impl/Makefile @@ -295,3 +295,12 @@ lib: objs clean: /bin/rm -f $(OBJS) + +.c.o: + $(CC) $(CCOPT) $(CCUDEFINES) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXCUDEFINES) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ diff --git a/cuda/spgpu/kernels/sdot.cu b/cuda/spgpu/kernels/sdot.cu index c19c7710..f91fab43 100644 --- a/cuda/spgpu/kernels/sdot.cu +++ b/cuda/spgpu/kernels/sdot.cu @@ -96,7 +96,6 @@ __global__ void spgpuSdot_kern(int n, float* x, float* y) { #endif - #ifdef ASSUME_LOCK_SYNC_PARALLELISM volatile float* vsSum = sSum; vsSum[threadIdx.x] = res; diff --git a/test/cudakern/Makefile b/test/cudakern/Makefile index 41cef197..4b8091d5 100755 --- a/test/cudakern/Makefile +++ b/test/cudakern/Makefile @@ -41,3 +41,8 @@ lib: (cd ../../; make library) verycleanlib: (cd ../../; make veryclean) + +%.o: %.F90 + $(FC) $(FFLAGS) $(FINCLUDES) $(FCUDEFINES) -c $< -o $@ +%.o: %.f90 + $(FC) $(FFLAGS) $(FINCLUDES) $(FCUDEFINES) -c $< -o $@ From 949499265eecdaa813dfc278fb7331e91f192ba8 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 8 Oct 2024 11:48:48 +0200 Subject: [PATCH 49/86] Simplify clean_zeros --- base/serial/impl/psb_c_coo_impl.F90 | 20 ++++---------------- base/serial/impl/psb_c_csc_impl.F90 | 20 ++++---------------- base/serial/impl/psb_c_csr_impl.F90 | 20 ++++---------------- base/serial/impl/psb_d_coo_impl.F90 | 20 ++++---------------- base/serial/impl/psb_d_csc_impl.F90 | 20 ++++---------------- base/serial/impl/psb_d_csr_impl.F90 | 20 ++++---------------- base/serial/impl/psb_s_coo_impl.F90 | 20 ++++---------------- base/serial/impl/psb_s_csc_impl.F90 | 20 ++++---------------- base/serial/impl/psb_s_csr_impl.F90 | 20 ++++---------------- base/serial/impl/psb_z_coo_impl.F90 | 20 ++++---------------- base/serial/impl/psb_z_csc_impl.F90 | 20 ++++---------------- base/serial/impl/psb_z_csr_impl.F90 | 20 ++++---------------- 12 files changed, 48 insertions(+), 192 deletions(-) diff --git a/base/serial/impl/psb_c_coo_impl.F90 b/base/serial/impl/psb_c_coo_impl.F90 index 5b681d22..a56a79a4 100644 --- a/base/serial/impl/psb_c_coo_impl.F90 +++ b/base/serial/impl/psb_c_coo_impl.F90 @@ -595,19 +595,13 @@ subroutine psb_c_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= czero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= czero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5933,19 +5927,13 @@ subroutine psb_lc_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= czero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= czero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_c_csc_impl.F90 b/base/serial/impl/psb_c_csc_impl.F90 index 190a4d5b..7916d954 100644 --- a/base/serial/impl/psb_c_csc_impl.F90 +++ b/base/serial/impl/psb_c_csc_impl.F90 @@ -2412,7 +2412,6 @@ subroutine psb_c_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -2422,13 +2421,8 @@ subroutine psb_c_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= czero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4320,7 +4314,6 @@ subroutine psb_lc_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -4330,13 +4323,8 @@ subroutine psb_lc_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= czero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_c_csr_impl.F90 b/base/serial/impl/psb_c_csr_impl.F90 index 0db9f3fa..6a31e522 100644 --- a/base/serial/impl/psb_c_csr_impl.F90 +++ b/base/serial/impl/psb_c_csr_impl.F90 @@ -3633,7 +3633,6 @@ subroutine psb_c_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -3643,13 +3642,8 @@ subroutine psb_c_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= czero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6559,7 +6553,6 @@ subroutine psb_lc_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -6569,13 +6562,8 @@ subroutine psb_lc_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= czero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_d_coo_impl.F90 b/base/serial/impl/psb_d_coo_impl.F90 index a802775a..e3e7b42c 100644 --- a/base/serial/impl/psb_d_coo_impl.F90 +++ b/base/serial/impl/psb_d_coo_impl.F90 @@ -595,19 +595,13 @@ subroutine psb_d_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= dzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= dzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5933,19 +5927,13 @@ subroutine psb_ld_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= dzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= dzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_d_csc_impl.F90 b/base/serial/impl/psb_d_csc_impl.F90 index 61e2ad14..886add04 100644 --- a/base/serial/impl/psb_d_csc_impl.F90 +++ b/base/serial/impl/psb_d_csc_impl.F90 @@ -2412,7 +2412,6 @@ subroutine psb_d_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -2422,13 +2421,8 @@ subroutine psb_d_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= dzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4320,7 +4314,6 @@ subroutine psb_ld_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -4330,13 +4323,8 @@ subroutine psb_ld_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= dzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_d_csr_impl.F90 b/base/serial/impl/psb_d_csr_impl.F90 index 56ba8c63..f5891870 100644 --- a/base/serial/impl/psb_d_csr_impl.F90 +++ b/base/serial/impl/psb_d_csr_impl.F90 @@ -3633,7 +3633,6 @@ subroutine psb_d_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -3643,13 +3642,8 @@ subroutine psb_d_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= dzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6559,7 +6553,6 @@ subroutine psb_ld_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -6569,13 +6562,8 @@ subroutine psb_ld_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= dzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_s_coo_impl.F90 b/base/serial/impl/psb_s_coo_impl.F90 index 0979ff85..023cde51 100644 --- a/base/serial/impl/psb_s_coo_impl.F90 +++ b/base/serial/impl/psb_s_coo_impl.F90 @@ -595,19 +595,13 @@ subroutine psb_s_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= szero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= szero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5933,19 +5927,13 @@ subroutine psb_ls_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= szero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= szero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_s_csc_impl.F90 b/base/serial/impl/psb_s_csc_impl.F90 index ca41d705..3bb47d95 100644 --- a/base/serial/impl/psb_s_csc_impl.F90 +++ b/base/serial/impl/psb_s_csc_impl.F90 @@ -2412,7 +2412,6 @@ subroutine psb_s_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -2422,13 +2421,8 @@ subroutine psb_s_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= szero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4320,7 +4314,6 @@ subroutine psb_ls_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -4330,13 +4323,8 @@ subroutine psb_ls_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= szero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_s_csr_impl.F90 b/base/serial/impl/psb_s_csr_impl.F90 index 323601ca..0a166b0c 100644 --- a/base/serial/impl/psb_s_csr_impl.F90 +++ b/base/serial/impl/psb_s_csr_impl.F90 @@ -3633,7 +3633,6 @@ subroutine psb_s_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -3643,13 +3642,8 @@ subroutine psb_s_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= szero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6559,7 +6553,6 @@ subroutine psb_ls_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -6569,13 +6562,8 @@ subroutine psb_ls_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= szero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_z_coo_impl.F90 b/base/serial/impl/psb_z_coo_impl.F90 index 74c3f2cb..7dfceb06 100644 --- a/base/serial/impl/psb_z_coo_impl.F90 +++ b/base/serial/impl/psb_z_coo_impl.F90 @@ -595,19 +595,13 @@ subroutine psb_z_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= zzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= zzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5933,19 +5927,13 @@ subroutine psb_lz_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - logical :: cpy info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= zzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (a%ia(i) == a%ja(i)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= zzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_z_csc_impl.F90 b/base/serial/impl/psb_z_csc_impl.F90 index 7ceff47f..32be36af 100644 --- a/base/serial/impl/psb_z_csc_impl.F90 +++ b/base/serial/impl/psb_z_csc_impl.F90 @@ -2412,7 +2412,6 @@ subroutine psb_z_csc_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nc integer(psb_ipk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -2422,13 +2421,8 @@ subroutine psb_z_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= zzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4320,7 +4314,6 @@ subroutine psb_lz_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - logical :: cpy info = 0 call a%sync() @@ -4330,13 +4323,8 @@ subroutine psb_lz_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= zzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ia(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_z_csr_impl.F90 b/base/serial/impl/psb_z_csr_impl.F90 index 54659def..e2ddf0d7 100644 --- a/base/serial/impl/psb_z_csr_impl.F90 +++ b/base/serial/impl/psb_z_csr_impl.F90 @@ -3633,7 +3633,6 @@ subroutine psb_z_csr_clean_zeros(a, info) ! integer(psb_ipk_) :: i, j, k, nr integer(psb_ipk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -3643,13 +3642,8 @@ subroutine psb_z_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= zzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6559,7 +6553,6 @@ subroutine psb_lz_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - logical :: cpy info = 0 call a%sync() @@ -6569,13 +6562,8 @@ subroutine psb_lz_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= zzero) then - cpy = .true. - else - ! Always keep the diagonal, even if numerically zero - cpy = (i == a%ja(k)) - end if - if (cpy) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 From 3d9fee2dd7f65b0bcf72c0dce46b9908a5502bd1 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 8 Oct 2024 17:07:10 +0200 Subject: [PATCH 50/86] Fix DOT on CUDA vectors. --- cuda/dvectordev.c | 3 ++- cuda/psb_c_cuda_vect_mod.F90 | 22 +++------------------- cuda/psb_d_cuda_vect_mod.F90 | 18 +----------------- cuda/psb_i_cuda_vect_mod.F90 | 12 ------------ cuda/psb_s_cuda_vect_mod.F90 | 22 +++------------------- cuda/psb_z_cuda_vect_mod.F90 | 22 +++------------------- cuda/svectordev.c | 3 ++- cuda/zvectordev.c | 3 ++- 8 files changed, 16 insertions(+), 89 deletions(-) diff --git a/cuda/dvectordev.c b/cuda/dvectordev.c index a69e1b71..d4f5513b 100644 --- a/cuda/dvectordev.c +++ b/cuda/dvectordev.c @@ -220,7 +220,8 @@ int dotMultiVecDeviceDouble(double* y_res, int n, void* devMultiVecA, void* devM struct MultiVectDevice *devVecB = (struct MultiVectDevice *) devMultiVecB; spgpuHandle_t handle=psb_cudaGetHandle(); - spgpuDmdot(handle, y_res, n, (double*)devVecA->v_, (double*)devVecB->v_,devVecA->count_,devVecB->pitch_); + spgpuDmdot(handle, y_res, n, (double*)devVecA->v_, (double*)devVecB->v_, + devVecA->count_,devVecB->pitch_); return(i); } diff --git a/cuda/psb_c_cuda_vect_mod.F90 b/cuda/psb_c_cuda_vect_mod.F90 index 45fafe0a..9755b386 100644 --- a/cuda/psb_c_cuda_vect_mod.F90 +++ b/cuda/psb_c_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine c_cuda_set_scal -!!$ -!!$ subroutine c_cuda_set_vect(x,val) -!!$ class(psb_c_vect_cuda), intent(inout) :: x -!!$ complex(psb_spk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_c_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine c_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_c_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n complex(psb_spk_) :: res - complex(psb_spk_), external :: ddot integer(psb_ipk_) :: info res = czero @@ -844,9 +831,6 @@ contains ! TYPE psb_c_vect ! select type(yy => y) - type is (psb_c_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_c_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select @@ -870,10 +854,10 @@ contains complex(psb_spk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n complex(psb_spk_) :: res - complex(psb_spk_), external :: ddot + complex(psb_spk_), external :: cdot if (x%is_dev()) call x%sync() - res = ddot(n,y,1,x%v,1) + res = cdot(n,y,1,x%v,1) end function c_cuda_dot_a diff --git a/cuda/psb_d_cuda_vect_mod.F90 b/cuda/psb_d_cuda_vect_mod.F90 index e7e563ff..dfa83c60 100644 --- a/cuda/psb_d_cuda_vect_mod.F90 +++ b/cuda/psb_d_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine d_cuda_set_scal -!!$ -!!$ subroutine d_cuda_set_vect(x,val) -!!$ class(psb_d_vect_cuda), intent(inout) :: x -!!$ real(psb_dpk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_d_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine d_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_d_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n real(psb_dpk_) :: res - real(psb_dpk_), external :: ddot integer(psb_ipk_) :: info res = dzero @@ -844,9 +831,6 @@ contains ! TYPE psb_d_vect ! select type(yy => y) - type is (psb_d_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_d_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select diff --git a/cuda/psb_i_cuda_vect_mod.F90 b/cuda/psb_i_cuda_vect_mod.F90 index 461d84d1..4be4679c 100644 --- a/cuda/psb_i_cuda_vect_mod.F90 +++ b/cuda/psb_i_cuda_vect_mod.F90 @@ -795,18 +795,6 @@ contains call x%set_dev() end subroutine i_cuda_set_scal -!!$ -!!$ subroutine i_cuda_set_vect(x,val) -!!$ class(psb_i_vect_cuda), intent(inout) :: x -!!$ integer(psb_ipk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_i_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine i_cuda_set_vect diff --git a/cuda/psb_s_cuda_vect_mod.F90 b/cuda/psb_s_cuda_vect_mod.F90 index a2c69934..39a108ab 100644 --- a/cuda/psb_s_cuda_vect_mod.F90 +++ b/cuda/psb_s_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine s_cuda_set_scal -!!$ -!!$ subroutine s_cuda_set_vect(x,val) -!!$ class(psb_s_vect_cuda), intent(inout) :: x -!!$ real(psb_spk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_s_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine s_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_s_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res - real(psb_spk_), external :: ddot integer(psb_ipk_) :: info res = szero @@ -844,9 +831,6 @@ contains ! TYPE psb_s_vect ! select type(yy => y) - type is (psb_s_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_s_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select @@ -870,10 +854,10 @@ contains real(psb_spk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res - real(psb_spk_), external :: ddot + real(psb_spk_), external :: sdot if (x%is_dev()) call x%sync() - res = ddot(n,y,1,x%v,1) + res = sdot(n,y,1,x%v,1) end function s_cuda_dot_a diff --git a/cuda/psb_z_cuda_vect_mod.F90 b/cuda/psb_z_cuda_vect_mod.F90 index dfeafa6e..d4318bea 100644 --- a/cuda/psb_z_cuda_vect_mod.F90 +++ b/cuda/psb_z_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine z_cuda_set_scal -!!$ -!!$ subroutine z_cuda_set_vect(x,val) -!!$ class(psb_z_vect_cuda), intent(inout) :: x -!!$ complex(psb_dpk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_z_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine z_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_z_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n complex(psb_dpk_) :: res - complex(psb_dpk_), external :: ddot integer(psb_ipk_) :: info res = zzero @@ -844,9 +831,6 @@ contains ! TYPE psb_z_vect ! select type(yy => y) - type is (psb_z_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_z_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select @@ -870,10 +854,10 @@ contains complex(psb_dpk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n complex(psb_dpk_) :: res - complex(psb_dpk_), external :: ddot + complex(psb_dpk_), external :: zdot if (x%is_dev()) call x%sync() - res = ddot(n,y,1,x%v,1) + res = zdot(n,y,1,x%v,1) end function z_cuda_dot_a diff --git a/cuda/svectordev.c b/cuda/svectordev.c index cfaef5ce..ab4dd01b 100644 --- a/cuda/svectordev.c +++ b/cuda/svectordev.c @@ -220,7 +220,8 @@ int dotMultiVecDeviceFloat(float* y_res, int n, void* devMultiVecA, void* devMul struct MultiVectDevice *devVecB = (struct MultiVectDevice *) devMultiVecB; spgpuHandle_t handle=psb_cudaGetHandle(); - spgpuSmdot(handle, y_res, n, (float*)devVecA->v_, (float*)devVecB->v_,devVecA->count_,devVecB->pitch_); + spgpuSmdot(handle, y_res, n, (float*)devVecA->v_, (float*)devVecB->v_, + devVecA->count_,devVecB->pitch_); return(i); } diff --git a/cuda/zvectordev.c b/cuda/zvectordev.c index d7d88f1b..3a5b0738 100644 --- a/cuda/zvectordev.c +++ b/cuda/zvectordev.c @@ -223,7 +223,8 @@ int scalMultiVecDeviceDoubleComplex(cuDoubleComplex alpha, void* devMultiVecA) return(i); } -int dotMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA, void* devMultiVecB) +int dotMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, + void* devMultiVecA, void* devMultiVecB) {int i=0; struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; struct MultiVectDevice *devVecB = (struct MultiVectDevice *) devMultiVecB; From 49469ce021df8e9c15f23d14a6d1929801b6d34d Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 8 Oct 2024 17:36:44 +0200 Subject: [PATCH 51/86] Various changes into openacc --- openacc/psb_c_oacc_csr_mat_mod.F90 | 6 +-- openacc/psb_c_oacc_ell_mat_mod.F90 | 8 +-- openacc/psb_c_oacc_hll_mat_mod.F90 | 10 ++-- openacc/psb_c_oacc_vect_mod.F90 | 80 ++++++++++++++++++------------ openacc/psb_d_oacc_csr_mat_mod.F90 | 6 +-- openacc/psb_d_oacc_ell_mat_mod.F90 | 8 +-- openacc/psb_d_oacc_hll_mat_mod.F90 | 10 ++-- openacc/psb_d_oacc_vect_mod.F90 | 80 ++++++++++++++++++------------ openacc/psb_i_oacc_vect_mod.F90 | 58 ++++++++++++++-------- openacc/psb_l_oacc_vect_mod.F90 | 58 ++++++++++++++-------- openacc/psb_s_oacc_csr_mat_mod.F90 | 6 +-- openacc/psb_s_oacc_ell_mat_mod.F90 | 8 +-- openacc/psb_s_oacc_hll_mat_mod.F90 | 10 ++-- openacc/psb_s_oacc_vect_mod.F90 | 80 ++++++++++++++++++------------ openacc/psb_z_oacc_csr_mat_mod.F90 | 6 +-- openacc/psb_z_oacc_ell_mat_mod.F90 | 8 +-- openacc/psb_z_oacc_hll_mat_mod.F90 | 10 ++-- openacc/psb_z_oacc_vect_mod.F90 | 80 ++++++++++++++++++------------ 18 files changed, 314 insertions(+), 218 deletions(-) diff --git a/openacc/psb_c_oacc_csr_mat_mod.F90 b/openacc/psb_c_oacc_csr_mat_mod.F90 index 94edc5e9..c6461fe3 100644 --- a/openacc/psb_c_oacc_csr_mat_mod.F90 +++ b/openacc/psb_c_oacc_csr_mat_mod.F90 @@ -257,9 +257,9 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irp)>0) call acc_create(a%irp) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) end subroutine c_oacc_csr_sync_dev_space subroutine c_oacc_csr_sync(a) diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 index f0b9779b..b2168646 100644 --- a/openacc/psb_c_oacc_ell_mat_mod.F90 +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -186,10 +186,10 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) end subroutine c_oacc_ell_sync_dev_space function c_oacc_ell_is_host(a) result(res) diff --git a/openacc/psb_c_oacc_hll_mat_mod.F90 b/openacc/psb_c_oacc_hll_mat_mod.F90 index 98c6a2ee..f8c19275 100644 --- a/openacc/psb_c_oacc_hll_mat_mod.F90 +++ b/openacc/psb_c_oacc_hll_mat_mod.F90 @@ -240,11 +240,11 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) - if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) end subroutine c_oacc_hll_sync_dev_space diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index e479f58d..40437184 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains complex(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains complex(psb_spk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains complex(psb_spk_), intent(in) :: alpha complex(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_spk_) :: sum, mx integer(psb_ipk_) :: i mx = szero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = szero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_spk_) :: max_val integer(psb_ipk_) :: i max_val = szero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_spk_) :: res integer(psb_ipk_) :: i res = szero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains complex(psb_spk_), intent(inout) :: y(:) complex(psb_spk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine c_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine c_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_c_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine c_oacc_new_buffer subroutine c_oacc_sync_dev_space(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine c_oacc_sync_dev_space subroutine c_oacc_sync(x) implicit none class(psb_c_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call c_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine c_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_c_base_vect_type%free(info) end subroutine c_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine c_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_c_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_c_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function c_oacc_get_size diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 index a3119b64..21907312 100644 --- a/openacc/psb_d_oacc_csr_mat_mod.F90 +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -257,9 +257,9 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irp)>0) call acc_create(a%irp) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) end subroutine d_oacc_csr_sync_dev_space subroutine d_oacc_csr_sync(a) diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 index 3932e286..021face3 100644 --- a/openacc/psb_d_oacc_ell_mat_mod.F90 +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -186,10 +186,10 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) end subroutine d_oacc_ell_sync_dev_space function d_oacc_ell_is_host(a) result(res) diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 index fd0fe54f..264bbcce 100644 --- a/openacc/psb_d_oacc_hll_mat_mod.F90 +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -240,11 +240,11 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) - if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) end subroutine d_oacc_hll_sync_dev_space diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 7fd2a441..84441c8a 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains real(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains real(psb_dpk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains real(psb_dpk_), intent(in) :: alpha real(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_dpk_) :: sum, mx integer(psb_ipk_) :: i mx = dzero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = dzero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_dpk_) :: max_val integer(psb_ipk_) :: i max_val = dzero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_dpk_) :: res integer(psb_ipk_) :: i res = dzero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains real(psb_dpk_), intent(inout) :: y(:) real(psb_dpk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine d_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine d_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_d_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine d_oacc_new_buffer subroutine d_oacc_sync_dev_space(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine d_oacc_sync_dev_space subroutine d_oacc_sync(x) implicit none class(psb_d_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call d_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine d_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_d_base_vect_type%free(info) end subroutine d_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine d_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_d_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_d_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function d_oacc_get_size diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 index 455453a1..42cdc18c 100644 --- a/openacc/psb_i_oacc_vect_mod.F90 +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -70,6 +70,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -97,8 +98,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -142,8 +143,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -185,6 +186,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -210,13 +212,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine i_oacc_gthzbuf @@ -254,13 +256,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine i_oacc_gthzv_x @@ -287,7 +289,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -411,7 +413,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -449,26 +451,36 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_i_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine i_oacc_new_buffer subroutine i_oacc_sync_dev_space(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine i_oacc_sync_dev_space subroutine i_oacc_sync(x) implicit none class(psb_i_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call i_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine i_oacc_sync @@ -541,6 +553,8 @@ contains type(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -553,8 +567,9 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_i_base_vect_type%free(info) end subroutine i_oacc_vect_free @@ -564,8 +579,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine i_oacc_vect_maybe_free_buffer @@ -573,7 +590,7 @@ contains implicit none class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_i_base_vect_type%free_buffer(info) @@ -585,7 +602,6 @@ contains class(psb_i_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function i_oacc_get_size diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 index d35e9141..60cdee35 100644 --- a/openacc/psb_l_oacc_vect_mod.F90 +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -72,6 +72,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -99,8 +100,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -144,8 +145,8 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -187,6 +188,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -212,13 +214,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine l_oacc_gthzbuf @@ -256,13 +258,13 @@ contains integer(psb_ipk_) :: n, idx(:) integer(psb_lpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine l_oacc_gthzv_x @@ -289,7 +291,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -413,7 +415,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -451,26 +453,36 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_l_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine l_oacc_new_buffer subroutine l_oacc_sync_dev_space(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine l_oacc_sync_dev_space subroutine l_oacc_sync(x) implicit none class(psb_l_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call l_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine l_oacc_sync @@ -543,6 +555,8 @@ contains type(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -555,8 +569,9 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_l_base_vect_type%free(info) end subroutine l_oacc_vect_free @@ -566,8 +581,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine l_oacc_vect_maybe_free_buffer @@ -575,7 +592,7 @@ contains implicit none class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_l_base_vect_type%free_buffer(info) @@ -587,7 +604,6 @@ contains class(psb_l_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function l_oacc_get_size diff --git a/openacc/psb_s_oacc_csr_mat_mod.F90 b/openacc/psb_s_oacc_csr_mat_mod.F90 index 5eaf80f7..d66dca3b 100644 --- a/openacc/psb_s_oacc_csr_mat_mod.F90 +++ b/openacc/psb_s_oacc_csr_mat_mod.F90 @@ -257,9 +257,9 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irp)>0) call acc_create(a%irp) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) end subroutine s_oacc_csr_sync_dev_space subroutine s_oacc_csr_sync(a) diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 index 56775879..600a08a7 100644 --- a/openacc/psb_s_oacc_ell_mat_mod.F90 +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -186,10 +186,10 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) end subroutine s_oacc_ell_sync_dev_space function s_oacc_ell_is_host(a) result(res) diff --git a/openacc/psb_s_oacc_hll_mat_mod.F90 b/openacc/psb_s_oacc_hll_mat_mod.F90 index 997433a1..33033248 100644 --- a/openacc/psb_s_oacc_hll_mat_mod.F90 +++ b/openacc/psb_s_oacc_hll_mat_mod.F90 @@ -240,11 +240,11 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) - if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) end subroutine s_oacc_hll_sync_dev_space diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 87eeccea..70c9dd49 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains real(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains real(psb_spk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains real(psb_spk_), intent(in) :: alpha real(psb_spk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_spk_) :: sum, mx integer(psb_ipk_) :: i mx = szero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = szero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_spk_) :: max_val integer(psb_ipk_) :: i max_val = szero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_spk_) :: res integer(psb_ipk_) :: i res = szero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains real(psb_spk_), intent(inout) :: y(:) real(psb_spk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine s_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) real(psb_spk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine s_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_s_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine s_oacc_new_buffer subroutine s_oacc_sync_dev_space(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine s_oacc_sync_dev_space subroutine s_oacc_sync(x) implicit none class(psb_s_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call s_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine s_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_s_base_vect_type%free(info) end subroutine s_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine s_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_s_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_s_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function s_oacc_get_size diff --git a/openacc/psb_z_oacc_csr_mat_mod.F90 b/openacc/psb_z_oacc_csr_mat_mod.F90 index ed92373d..3b66787a 100644 --- a/openacc/psb_z_oacc_csr_mat_mod.F90 +++ b/openacc/psb_z_oacc_csr_mat_mod.F90 @@ -257,9 +257,9 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irp)>0) call acc_create(a%irp) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) end subroutine z_oacc_csr_sync_dev_space subroutine z_oacc_csr_sync(a) diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 index d494922f..abfb11e3 100644 --- a/openacc/psb_z_oacc_ell_mat_mod.F90 +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -186,10 +186,10 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) end subroutine z_oacc_ell_sync_dev_space function z_oacc_ell_is_host(a) result(res) diff --git a/openacc/psb_z_oacc_hll_mat_mod.F90 b/openacc/psb_z_oacc_hll_mat_mod.F90 index 07739348..4c9f1b11 100644 --- a/openacc/psb_z_oacc_hll_mat_mod.F90 +++ b/openacc/psb_z_oacc_hll_mat_mod.F90 @@ -240,11 +240,11 @@ contains ! but with size 0, then CREATE,UPDATE and DELETE ! will fail ! - if (psb_size(a%val)>0) call acc_create(a%val) - if (psb_size(a%ja)>0) call acc_create(a%ja) - if (psb_size(a%irn)>0) call acc_create(a%irn) - if (psb_size(a%idiag)>0) call acc_create(a%idiag) - if (psb_size(a%hkoffs)>0) call acc_create(a%hkoffs) + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) end subroutine z_oacc_hll_sync_dev_space diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 0fe1adaa..0bc10283 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -113,7 +113,7 @@ contains complex(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, n x(i) = abs(x(i)) end do @@ -144,7 +144,7 @@ contains complex(psb_dpk_), intent(inout) :: x(:),y(:) integer(psb_ipk_) :: n integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, n y(i) = abs(x(i)) end do @@ -164,7 +164,7 @@ contains complex(psb_dpk_), intent(in) :: alpha complex(psb_dpk_), intent(inout) :: x(:) integer(psb_ipk_) :: i - !$acc parallel loop + !$acc parallel loop present(x) do i = 1, size(x) x(i) = alpha * x(i) end do @@ -189,7 +189,7 @@ contains real(psb_dpk_) :: sum, mx integer(psb_ipk_) :: i mx = dzero - !$acc parallel loop reduction(max:mx) + !$acc parallel loop reduction(max:mx) present(x) do i = 1, n if (abs(x(i)) > mx) mx = abs(x(i)) end do @@ -197,7 +197,7 @@ contains res = mx else sum = dzero - !$acc parallel loop reduction(+:sum) + !$acc parallel loop reduction(+:sum) present(x) do i = 1, n sum = sum + abs(x(i)/mx)**2 end do @@ -223,7 +223,7 @@ contains real(psb_dpk_) :: max_val integer(psb_ipk_) :: i max_val = dzero - !$acc parallel loop reduction(max:max_val) + !$acc parallel loop reduction(max:max_val) present(x) do i = 1, n if (abs(x(i)) > max_val) max_val = abs(x(i)) end do @@ -248,7 +248,7 @@ contains real(psb_dpk_) :: res integer(psb_ipk_) :: i res = dzero - !$acc parallel loop reduction(+:res) + !$acc parallel loop reduction(+:res) present(x) do i = 1, n res = res + abs(x(i)) end do @@ -265,7 +265,7 @@ contains info = 0 if (y%is_dev()) call y%sync() - !$acc parallel loop + !$acc parallel loop present(x,y) do i = 1, size(x) y%v(i) = y%v(i) * x(i) end do @@ -283,7 +283,7 @@ contains info = 0 if (z%is_dev()) call z%sync() - !$acc parallel loop + !$acc parallel loop present(x,y,z%v) do i = 1, size(x) z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) end do @@ -327,7 +327,7 @@ contains complex(psb_dpk_), intent(inout) :: y(:) complex(psb_dpk_), intent(in) :: alpha, beta integer(psb_ipk_), intent(out) :: info - !$acc parallel + !$acc parallel present(x,y) !$acc loop do i = 1, m y(i) = alpha * x(i) + beta * y(i) @@ -384,7 +384,7 @@ contains if ((nx < m) .or. (ny < m) .or. (nz < m)) then info = psb_err_internal_error_ else - !$acc parallel loop + !$acc parallel loop present(xx%v,yy%v,zz%v) do i = 1, m yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) @@ -416,6 +416,7 @@ contains integer(psb_ipk_) :: info, k logical :: acc_done if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') return end if @@ -443,8 +444,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: beta,x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -488,8 +489,8 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: beta, x(:), y(:) integer(psb_ipk_) :: k - !$acc update device(x(1:n)) async - !$acc parallel loop + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) do k = 1, n y(idx(k)) = x(k) + beta *y(idx(k)) end do @@ -531,6 +532,7 @@ contains acc_done = .false. if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') return end if @@ -556,13 +558,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine z_oacc_gthzbuf @@ -600,13 +602,13 @@ contains integer(psb_ipk_) :: n, idx(:) complex(psb_dpk_) :: x(:), y(:) integer(psb_ipk_) :: k - - !$acc parallel loop present(y) + ! + !$acc parallel loop present(x,y) do k = 1, n y(k) = x(idx(k)) end do !$acc end parallel loop - !$acc update self(y(1:n)) async + !$acc update self(y(1:n)) end subroutine inner_gth end subroutine z_oacc_gthzv_x @@ -633,7 +635,7 @@ contains if (vval%is_host()) call vval%sync() if (virl%is_host()) call virl%sync() if (x%is_host()) call x%sync() - !$acc parallel loop + !$acc parallel loop present(x%v,virl%v,vval%v) do i = 1, n x%v(virl%v(i)) = vval%v(i) end do @@ -757,7 +759,7 @@ contains if (present(first)) first_ = max(1, first) if (present(last)) last_ = min(last, last_) - !$acc parallel loop + !$acc parallel loop present(x%v) do i = first_, last_ x%v(i) = val end do @@ -849,26 +851,36 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info - if (n /= psb_size(x%combuf)) then + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if call x%psb_z_base_vect_type%new_buffer(n,info) !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) end if end subroutine z_oacc_new_buffer subroutine z_oacc_sync_dev_space(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x - if (allocated(x%v)) call acc_create(x%v) +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) end subroutine z_oacc_sync_dev_space subroutine z_oacc_sync(x) implicit none class(psb_z_vect_oacc), intent(inout) :: x if (x%is_dev()) then - call acc_update_self(x%v) + if (psb_size(x%v)>0) call acc_update_self(x%v) end if if (x%is_host()) then - call acc_update_device(x%v) + if (.not.acc_is_present(x%v)) call z_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) end if call x%set_sync() end subroutine z_oacc_sync @@ -941,6 +953,8 @@ contains type(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: info info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) if (allocated(x%v)) then if (acc_is_present(x%v)) call acc_delete_finalize(x%v) deallocate(x%v, stat=info) @@ -953,8 +967,9 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) if (acc_is_present(x%v)) call acc_delete_finalize(x%v) - if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_z_base_vect_type%free(info) end subroutine z_oacc_vect_free @@ -964,8 +979,10 @@ contains integer(psb_ipk_), intent(out) :: info info = 0 - if (psb_oacc_get_maybe_free_buffer())& - & call x%free_buffer(info) + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if end subroutine z_oacc_vect_maybe_free_buffer @@ -973,7 +990,7 @@ contains implicit none class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_), intent(out) :: info - +! write(0,*) 'oacc free_buffer' info = 0 if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) call x%psb_z_base_vect_type%free_buffer(info) @@ -985,7 +1002,6 @@ contains class(psb_z_vect_oacc), intent(inout) :: x integer(psb_ipk_) :: res - if (x%is_dev()) call x%sync() res = size(x%v) end function z_oacc_get_size From 5903c0b272dc1c40d10ada8ee50ef6d94b1b1183 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 8 Oct 2024 17:41:42 +0200 Subject: [PATCH 52/86] Fix DOT in OpenACC --- openacc/psb_c_oacc_vect_mod.F90 | 12 ++++-------- openacc/psb_d_oacc_vect_mod.F90 | 8 ++------ openacc/psb_s_oacc_vect_mod.F90 | 12 ++++-------- openacc/psb_z_oacc_vect_mod.F90 | 12 ++++-------- 4 files changed, 14 insertions(+), 30 deletions(-) diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 index 40437184..067c571b 100644 --- a/openacc/psb_c_oacc_vect_mod.F90 +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -798,22 +798,18 @@ contains class(psb_c_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n complex(psb_spk_) :: res - complex(psb_spk_), external :: ddot integer(psb_ipk_) :: info res = czero !!$ write(0,*) 'oacc_dot_v' select type(yy => y) - type is (psb_c_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n, x%v, 1, yy%v, 1) type is (psb_c_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() res = c_inner_oacc_dot(n, x%v, yy%v) class default - call x%sync() - res = y%dot(n, x%v) + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) end select contains function c_inner_oacc_dot(n, x, y) result(res) @@ -838,10 +834,10 @@ contains complex(psb_spk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n complex(psb_spk_) :: res - complex(psb_spk_), external :: ddot + complex(psb_spk_), external :: cdot if (x%is_dev()) call x%sync() - res = ddot(n, y, 1, x%v, 1) + res = cdot(n, y, 1, x%v, 1) end function c_oacc_dot_a diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 index 84441c8a..929066ae 100644 --- a/openacc/psb_d_oacc_vect_mod.F90 +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -798,22 +798,18 @@ contains class(psb_d_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n real(psb_dpk_) :: res - real(psb_dpk_), external :: ddot integer(psb_ipk_) :: info res = dzero !!$ write(0,*) 'oacc_dot_v' select type(yy => y) - type is (psb_d_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n, x%v, 1, yy%v, 1) type is (psb_d_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() res = d_inner_oacc_dot(n, x%v, yy%v) class default - call x%sync() - res = y%dot(n, x%v) + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) end select contains function d_inner_oacc_dot(n, x, y) result(res) diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 index 70c9dd49..9cb42a95 100644 --- a/openacc/psb_s_oacc_vect_mod.F90 +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -798,22 +798,18 @@ contains class(psb_s_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res - real(psb_spk_), external :: ddot integer(psb_ipk_) :: info res = szero !!$ write(0,*) 'oacc_dot_v' select type(yy => y) - type is (psb_s_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n, x%v, 1, yy%v, 1) type is (psb_s_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() res = s_inner_oacc_dot(n, x%v, yy%v) class default - call x%sync() - res = y%dot(n, x%v) + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) end select contains function s_inner_oacc_dot(n, x, y) result(res) @@ -838,10 +834,10 @@ contains real(psb_spk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res - real(psb_spk_), external :: ddot + real(psb_spk_), external :: sdot if (x%is_dev()) call x%sync() - res = ddot(n, y, 1, x%v, 1) + res = sdot(n, y, 1, x%v, 1) end function s_oacc_dot_a diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 index 0bc10283..90ddcf0d 100644 --- a/openacc/psb_z_oacc_vect_mod.F90 +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -798,22 +798,18 @@ contains class(psb_z_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n complex(psb_dpk_) :: res - complex(psb_dpk_), external :: ddot integer(psb_ipk_) :: info res = zzero !!$ write(0,*) 'oacc_dot_v' select type(yy => y) - type is (psb_z_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n, x%v, 1, yy%v, 1) type is (psb_z_vect_oacc) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() res = z_inner_oacc_dot(n, x%v, yy%v) class default - call x%sync() - res = y%dot(n, x%v) + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) end select contains function z_inner_oacc_dot(n, x, y) result(res) @@ -838,10 +834,10 @@ contains complex(psb_dpk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n complex(psb_dpk_) :: res - complex(psb_dpk_), external :: ddot + complex(psb_dpk_), external :: zdot if (x%is_dev()) call x%sync() - res = ddot(n, y, 1, x%v, 1) + res = zdot(n, y, 1, x%v, 1) end function z_oacc_dot_a From 6972c505424888ba89c86cfcf0a001866066fa47 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 9 Oct 2024 10:03:37 +0200 Subject: [PATCH 53/86] Updated readme --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index e51fe70b..3cacfb93 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,15 @@ entities that were previouslty separated: written by Davide Barbieri and Salvatore Filippone; see the license file cuda/License-spgpu.md +OpenACC +------------------- +There is a highly experimental version of an OpenACC interface, +you can access it by speficifying +--enable-openacc --with-extraopenacc="-foffload=nvptx-none=-march=sm_70" +where the argument to the extraopenacc option depends on the compiler +you are using (the example shown here is relevant for the GNU +compiler). + INSTALLING ---------- To compile and run our software you will need the following @@ -135,6 +144,7 @@ Salvatore Filippone Contributors (roughly reverse cronological order): +Theophane Loloum Dimitri Walther Andea Di Iorio Stefano Petrilli From abdf7fc05afc571e13b0c34c17609a16ce79973f Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 9 Oct 2024 13:32:29 +0200 Subject: [PATCH 54/86] Fix constructor name for multivector --- cuda/psb_c_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_d_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_i_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_s_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_z_cuda_vect_mod.F90 | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/cuda/psb_c_cuda_vect_mod.F90 b/cuda/psb_c_cuda_vect_mod.F90 index 9755b386..752d2bf1 100644 --- a/cuda/psb_c_cuda_vect_mod.F90 +++ b/cuda/psb_c_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_c_cuda_multivect_mod end type psb_c_multivect_cuda public :: psb_c_multivect_cuda - private :: constructor + private :: mconstructor interface psb_c_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) complex(psb_spk_) :: x(:,:) type(psb_c_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine c_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_d_cuda_vect_mod.F90 b/cuda/psb_d_cuda_vect_mod.F90 index dfa83c60..4e17be02 100644 --- a/cuda/psb_d_cuda_vect_mod.F90 +++ b/cuda/psb_d_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_d_cuda_multivect_mod end type psb_d_multivect_cuda public :: psb_d_multivect_cuda - private :: constructor + private :: mconstructor interface psb_d_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) real(psb_dpk_) :: x(:,:) type(psb_d_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine d_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_i_cuda_vect_mod.F90 b/cuda/psb_i_cuda_vect_mod.F90 index 4be4679c..eeafe90e 100644 --- a/cuda/psb_i_cuda_vect_mod.F90 +++ b/cuda/psb_i_cuda_vect_mod.F90 @@ -937,14 +937,14 @@ module psb_i_cuda_multivect_mod end type psb_i_multivect_cuda public :: psb_i_multivect_cuda - private :: constructor + private :: mconstructor interface psb_i_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) integer(psb_ipk_) :: x(:,:) type(psb_i_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -952,7 +952,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine i_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_s_cuda_vect_mod.F90 b/cuda/psb_s_cuda_vect_mod.F90 index 39a108ab..3006ebd8 100644 --- a/cuda/psb_s_cuda_vect_mod.F90 +++ b/cuda/psb_s_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_s_cuda_multivect_mod end type psb_s_multivect_cuda public :: psb_s_multivect_cuda - private :: constructor + private :: mconstructor interface psb_s_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) real(psb_spk_) :: x(:,:) type(psb_s_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine s_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_z_cuda_vect_mod.F90 b/cuda/psb_z_cuda_vect_mod.F90 index d4318bea..f4860911 100644 --- a/cuda/psb_z_cuda_vect_mod.F90 +++ b/cuda/psb_z_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_z_cuda_multivect_mod end type psb_z_multivect_cuda public :: psb_z_multivect_cuda - private :: constructor + private :: mconstructor interface psb_z_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) complex(psb_dpk_) :: x(:,:) type(psb_z_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine z_cuda_multi_gthzv_x(i,n,idx,x,y) From ade79bcc7e399c20c6cd3cdafa3faf64b76e7521 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 9 Oct 2024 14:27:17 +0200 Subject: [PATCH 55/86] Fixes for compilation with CUDA --- cuda/cvectordev.c | 6 +++--- cuda/cvectordev.h | 7 ++++--- cuda/dnsdev.c | 16 ++++++++-------- cuda/dvectordev.h | 1 + cuda/fcusparse_fct.h | 4 ++-- cuda/ivectordev.h | 1 + cuda/svectordev.h | 1 + cuda/vectordev.h | 1 + cuda/zvectordev.c | 6 +++--- cuda/zvectordev.h | 7 ++++--- 10 files changed, 28 insertions(+), 22 deletions(-) diff --git a/cuda/cvectordev.c b/cuda/cvectordev.c index 65d41893..b05bca55 100644 --- a/cuda/cvectordev.c +++ b/cuda/cvectordev.c @@ -184,7 +184,7 @@ int iscatMultiVecDeviceFloatComplex(void* deviceVec, int vectorId, int n, } -int nrm2MultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiVecA) +int nrm2MultiVecDeviceFloatComplex(float* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -194,7 +194,7 @@ int nrm2MultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiV return(i); } -int amaxMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiVecA) +int amaxMultiVecDeviceFloatComplex(float* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -204,7 +204,7 @@ int amaxMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiV return(i); } -int asumMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiVecA) +int asumMultiVecDeviceFloatComplex(float* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; diff --git a/cuda/cvectordev.h b/cuda/cvectordev.h index 8c40b95d..423da33e 100644 --- a/cuda/cvectordev.h +++ b/cuda/cvectordev.h @@ -37,6 +37,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedFloatComplex(void *, void **, int, cuFloatComplex); int writeMultiVecDeviceFloatComplex(void* deviceMultiVec, cuFloatComplex* hostMultiVec); @@ -63,9 +64,9 @@ int iscatMultiVecDeviceFloatComplex(void* deviceVec, int vectorId, int n, int fi int hfirst, void* host_values, int indexBase, cuFloatComplex beta); int scalMultiVecDeviceFloatComplex(cuFloatComplex alpha, void* devMultiVecA); -int nrm2MultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA); -int amaxMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA); -int asumMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA); +int nrm2MultiVecDeviceFloatComplex(float* y_res, int n, void* devVecA); +int amaxMultiVecDeviceFloatComplex(float* y_res, int n, void* devVecA); +int asumMultiVecDeviceFloatComplex(float* y_res, int n, void* devVecA); int dotMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA, void* devVecB); int axpbyMultiVecDeviceFloatComplex(int n, cuFloatComplex alpha, void* devVecX, cuFloatComplex beta, void* devVecY); diff --git a/cuda/dnsdev.c b/cuda/dnsdev.c index 0a991012..3cf57976 100644 --- a/cuda/dnsdev.c +++ b/cuda/dnsdev.c @@ -178,12 +178,12 @@ int spmvDnsDeviceFloatComplex(char transa, int m, int n, int k, float complex *a /* Note: the M,N,K choices according to TRANS have already been handled in the caller */ if (n == 1) { status = cublasCgemv(handle, trans, m,k, - alpha, devMat->cM,devMat->pitch, x->v_,1, - beta, y->v_,1); + (const cuComplex *) alpha, devMat->cM,devMat->pitch, x->v_,1, + (const cuComplex *) beta, y->v_,1); } else { status = cublasCgemm(handle, trans, CUBLAS_OP_N, m,n,k, - alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, - beta, y->v_,y->pitch_); + (const cuComplex *) alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, + (const cuComplex *) beta, y->v_,y->pitch_); } if (status == CUBLAS_STATUS_SUCCESS) @@ -205,12 +205,12 @@ int spmvDnsDeviceDoubleComplex(char transa, int m, int n, int k, double complex /* Note: the M,N,K choices according to TRANS have already been handled in the caller */ if (n == 1) { status = cublasZgemv(handle, trans, m,k, - alpha, devMat->cM,devMat->pitch, x->v_,1, - beta, y->v_,1); + (const cuDoubleComplex *) alpha, devMat->cM,devMat->pitch, x->v_,1, + (const cuDoubleComplex *) beta, y->v_,1); } else { status = cublasZgemm(handle, trans, CUBLAS_OP_N, m,n,k, - alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, - beta, y->v_,y->pitch_); + (const cuDoubleComplex *) alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, + (const cuDoubleComplex *) beta, y->v_,y->pitch_); } if (status == CUBLAS_STATUS_SUCCESS) diff --git a/cuda/dvectordev.h b/cuda/dvectordev.h index 3834c0d3..0d2d2ab3 100644 --- a/cuda/dvectordev.h +++ b/cuda/dvectordev.h @@ -35,6 +35,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedDouble(void *, void **, int, double); int writeMultiVecDeviceDouble(void* deviceMultiVec, double* hostMultiVec); diff --git a/cuda/fcusparse_fct.h b/cuda/fcusparse_fct.h index 12be21bd..ec7166f5 100644 --- a/cuda/fcusparse_fct.h +++ b/cuda/fcusparse_fct.h @@ -439,7 +439,7 @@ int T_CSRGDeviceSetMatFillMode(T_Cmat *Matrix, int type) T_CSRGDeviceMat *cMat= Matrix->mat; cusparseFillMode_t mode=type; - CHECK_CUSPARSE(cusparseSpMatSetAttribute(cMat->spmvDescr, + CHECK_CUSPARSE(cusparseSpMatSetAttribute((*(cMat->spmvDescr)), CUSPARSE_SPMAT_FILL_MODE, (const void*) &mode, sizeof(cusparseFillMode_t))); @@ -450,7 +450,7 @@ int T_CSRGDeviceSetMatDiagType(T_Cmat *Matrix, int type) { T_CSRGDeviceMat *cMat= Matrix->mat; cusparseDiagType_t cutype=type; - CHECK_CUSPARSE(cusparseSpMatSetAttribute(cMat->spmvDescr, + CHECK_CUSPARSE(cusparseSpMatSetAttribute((*(cMat->spmvDescr)), CUSPARSE_SPMAT_DIAG_TYPE, (const void*) &cutype, sizeof(cusparseDiagType_t))); diff --git a/cuda/ivectordev.h b/cuda/ivectordev.h index 2db54be4..6f3a32a0 100644 --- a/cuda/ivectordev.h +++ b/cuda/ivectordev.h @@ -35,6 +35,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedInt(void *, void **, int, int); int writeMultiVecDeviceInt(void* deviceMultiVec, int* hostMultiVec); diff --git a/cuda/svectordev.h b/cuda/svectordev.h index d5c85f78..887a7755 100644 --- a/cuda/svectordev.h +++ b/cuda/svectordev.h @@ -35,6 +35,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedFloat(void *, void **, int, float); int writeMultiVecDeviceFloat(void* deviceMultiVec, float* hostMultiVec); diff --git a/cuda/vectordev.h b/cuda/vectordev.h index df5fbd82..93cf1189 100644 --- a/cuda/vectordev.h +++ b/cuda/vectordev.h @@ -34,6 +34,7 @@ #include "cuda_runtime.h" //#include "common.h" //#include "cintrf.h" +#include "cuda_util.h" #include struct MultiVectDevice diff --git a/cuda/zvectordev.c b/cuda/zvectordev.c index 3a5b0738..49741582 100644 --- a/cuda/zvectordev.c +++ b/cuda/zvectordev.c @@ -183,7 +183,7 @@ int iscatMultiVecDeviceDoubleComplex(void* deviceVec, int vectorId, int n, } -int nrm2MultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA) +int nrm2MultiVecDeviceDoubleComplex(double* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -192,7 +192,7 @@ int nrm2MultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMult return(i); } -int amaxMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA) +int amaxMultiVecDeviceDoubleComplex(double* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -202,7 +202,7 @@ int amaxMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMult return(i); } -int asumMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA) +int asumMultiVecDeviceDoubleComplex(double* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; diff --git a/cuda/zvectordev.h b/cuda/zvectordev.h index e15802f0..023c7f13 100644 --- a/cuda/zvectordev.h +++ b/cuda/zvectordev.h @@ -37,6 +37,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedDoubleComplex(void *, void **, int, cuDoubleComplex); int writeMultiVecDeviceDoubleComplex(void* deviceMultiVec, cuDoubleComplex* hostMultiVec); @@ -69,9 +70,9 @@ int iscatMultiVecDeviceDoubleComplex(void* deviceVec, int vectorId, int n, int indexBase, cuDoubleComplex beta); int scalMultiVecDeviceDoubleComplex(cuDoubleComplex alpha, void* devMultiVecA); -int nrm2MultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA); -int amaxMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA); -int asumMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA); +int nrm2MultiVecDeviceDoubleComplex(double* y_res, int n, void* devVecA); +int amaxMultiVecDeviceDoubleComplex(double* y_res, int n, void* devVecA); +int asumMultiVecDeviceDoubleComplex(double* y_res, int n, void* devVecA); int dotMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA, void* devVecB); From 5430ba0e222415e60e5857b236fb7f87b83c160c Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 2 Nov 2024 12:28:08 +0100 Subject: [PATCH 56/86] Fix multivect constructor in CUDA --- cuda/psb_c_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_d_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_i_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_s_cuda_vect_mod.F90 | 8 ++++---- cuda/psb_z_cuda_vect_mod.F90 | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/cuda/psb_c_cuda_vect_mod.F90 b/cuda/psb_c_cuda_vect_mod.F90 index 9755b386..752d2bf1 100644 --- a/cuda/psb_c_cuda_vect_mod.F90 +++ b/cuda/psb_c_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_c_cuda_multivect_mod end type psb_c_multivect_cuda public :: psb_c_multivect_cuda - private :: constructor + private :: mconstructor interface psb_c_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) complex(psb_spk_) :: x(:,:) type(psb_c_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine c_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_d_cuda_vect_mod.F90 b/cuda/psb_d_cuda_vect_mod.F90 index dfa83c60..4e17be02 100644 --- a/cuda/psb_d_cuda_vect_mod.F90 +++ b/cuda/psb_d_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_d_cuda_multivect_mod end type psb_d_multivect_cuda public :: psb_d_multivect_cuda - private :: constructor + private :: mconstructor interface psb_d_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) real(psb_dpk_) :: x(:,:) type(psb_d_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine d_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_i_cuda_vect_mod.F90 b/cuda/psb_i_cuda_vect_mod.F90 index 4be4679c..eeafe90e 100644 --- a/cuda/psb_i_cuda_vect_mod.F90 +++ b/cuda/psb_i_cuda_vect_mod.F90 @@ -937,14 +937,14 @@ module psb_i_cuda_multivect_mod end type psb_i_multivect_cuda public :: psb_i_multivect_cuda - private :: constructor + private :: mconstructor interface psb_i_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) integer(psb_ipk_) :: x(:,:) type(psb_i_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -952,7 +952,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine i_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_s_cuda_vect_mod.F90 b/cuda/psb_s_cuda_vect_mod.F90 index 39a108ab..3006ebd8 100644 --- a/cuda/psb_s_cuda_vect_mod.F90 +++ b/cuda/psb_s_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_s_cuda_multivect_mod end type psb_s_multivect_cuda public :: psb_s_multivect_cuda - private :: constructor + private :: mconstructor interface psb_s_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) real(psb_spk_) :: x(:,:) type(psb_s_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine s_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_z_cuda_vect_mod.F90 b/cuda/psb_z_cuda_vect_mod.F90 index d4318bea..f4860911 100644 --- a/cuda/psb_z_cuda_vect_mod.F90 +++ b/cuda/psb_z_cuda_vect_mod.F90 @@ -1377,14 +1377,14 @@ module psb_z_cuda_multivect_mod end type psb_z_multivect_cuda public :: psb_z_multivect_cuda - private :: constructor + private :: mconstructor interface psb_z_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) complex(psb_dpk_) :: x(:,:) type(psb_z_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1392,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine z_cuda_multi_gthzv_x(i,n,idx,x,y) From f10c6c18225578e4719d65d2975eec1b22d6b730 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 2 Nov 2024 12:28:24 +0100 Subject: [PATCH 57/86] Fix GEPRT --- base/serial/psb_cgeprt.f90 | 5 +++-- base/serial/psb_dgeprt.f90 | 9 +++++---- base/serial/psb_sgeprt.f90 | 9 +++++---- base/serial/psb_zgeprt.f90 | 5 +++-- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/base/serial/psb_cgeprt.f90 b/base/serial/psb_cgeprt.f90 index 985c1eab..e05d673b 100644 --- a/base/serial/psb_cgeprt.f90 +++ b/base/serial/psb_cgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_scsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -131,6 +131,7 @@ subroutine psb_cgeprt2(iout,a,head) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' do i=1,nrow @@ -161,7 +162,7 @@ subroutine psb_cgeprt1(iout,a,head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' diff --git a/base/serial/psb_dgeprt.f90 b/base/serial/psb_dgeprt.f90 index 07fb32f8..ae4c5b11 100644 --- a/base/serial/psb_dgeprt.f90 +++ b/base/serial/psb_dgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_dcsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -124,13 +124,14 @@ subroutine psb_dgeprt2(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' do i=1,nrow @@ -156,12 +157,12 @@ subroutine psb_dgeprt1(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' diff --git a/base/serial/psb_sgeprt.f90 b/base/serial/psb_sgeprt.f90 index 3ebb975b..9f3205fd 100644 --- a/base/serial/psb_sgeprt.f90 +++ b/base/serial/psb_sgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_scsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -124,13 +124,14 @@ subroutine psb_sgeprt2(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' do i=1,nrow @@ -156,12 +157,12 @@ subroutine psb_sgeprt1(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' diff --git a/base/serial/psb_zgeprt.f90 b/base/serial/psb_zgeprt.f90 index f7615473..3fc0eb0c 100644 --- a/base/serial/psb_zgeprt.f90 +++ b/base/serial/psb_zgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_scsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -131,6 +131,7 @@ subroutine psb_zgeprt2(iout,a,head) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' do i=1,nrow @@ -161,7 +162,7 @@ subroutine psb_zgeprt1(iout,a,head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' From 029903dbadc9042a0c0270644ceff324b0dd0e93 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 8 Nov 2024 18:22:43 +0100 Subject: [PATCH 58/86] New Richardson method. --- krylov/Makefile | 1 + krylov/psb_ckrylov.f90 | 1 + krylov/psb_crichardson.f90 | 216 ++++++++++++++++++++++++++++++++++++ krylov/psb_dkrylov.f90 | 1 + krylov/psb_drichardson.f90 | 216 ++++++++++++++++++++++++++++++++++++ krylov/psb_krylov_mod.f90 | 84 ++++++++++++++ krylov/psb_skrylov.f90 | 1 + krylov/psb_srichardson.f90 | 216 ++++++++++++++++++++++++++++++++++++ krylov/psb_zkrylov.f90 | 1 + krylov/psb_zrichardson.f90 | 216 ++++++++++++++++++++++++++++++++++++ test/cudakern/dpdegenmv.F90 | 10 +- test/cudakern/spdegenmv.F90 | 14 ++- 12 files changed, 971 insertions(+), 6 deletions(-) create mode 100644 krylov/psb_crichardson.f90 create mode 100644 krylov/psb_drichardson.f90 create mode 100644 krylov/psb_srichardson.f90 create mode 100644 krylov/psb_zrichardson.f90 diff --git a/krylov/Makefile b/krylov/Makefile index f71dbb1a..c08d6740 100644 --- a/krylov/Makefile +++ b/krylov/Makefile @@ -11,6 +11,7 @@ MODOBJS= psb_base_krylov_conv_mod.o \ psb_d_krylov_conv_mod.o psb_z_krylov_conv_mod.o \ psb_krylov_mod.o F90OBJS=psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o \ + psb_drichardson.o psb_srichardson.o psb_crichardson.o psb_zrichardson.o \ psb_dcgstab.o psb_dcg.o psb_dfcg.o psb_dgcr.o psb_dcgs.o \ psb_dbicg.o psb_dcgstabl.o psb_drgmres.o\ psb_scgstab.o psb_scg.o psb_sfcg.o psb_sgcr.o psb_scgs.o \ diff --git a/krylov/psb_ckrylov.f90 b/krylov/psb_ckrylov.f90 index 01228234..3afa525e 100644 --- a/krylov/psb_ckrylov.f90 +++ b/krylov/psb_ckrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB diff --git a/krylov/psb_crichardson.f90 b/krylov/psb_crichardson.f90 new file mode 100644 index 00000000..08678653 --- /dev/null +++ b/krylov/psb_crichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_crichardson +! +! Front-end for the Richardson iterations, complexversion +! +! Arguments: +! +! a - type(psb_cspmat_type) Input: sparse matrix containing A. +! prec - class(psb_cprec_type) Input: preconditioner +! b - complex,dimension(:) Input: vector containing the +! right hand side B +! x - complex,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_c_krylov_conv_mod + use psb_krylov_mod, psb_protect_name => psb_crichardson_vect + + Type(psb_cspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_cprec_type), intent(inout) :: prec + type(psb_c_vect_type), Intent(inout) :: b + type(psb_c_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + complex(psb_spk_), allocatable, target :: aux(:) + type(psb_c_vect_type), allocatable, target :: wwrk(:) + type(psb_c_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_crichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(cone,b,czero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(cone,z,cone,x,desc_a,info) + call psb_geaxpby(cone,b,czero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_crichardson_vect + diff --git a/krylov/psb_dkrylov.f90 b/krylov/psb_dkrylov.f90 index d5d40eaf..2bc24d6a 100644 --- a/krylov/psb_dkrylov.f90 +++ b/krylov/psb_dkrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB diff --git a/krylov/psb_drichardson.f90 b/krylov/psb_drichardson.f90 new file mode 100644 index 00000000..2c057320 --- /dev/null +++ b/krylov/psb_drichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_drichardson +! +! Front-end for the Richardson iterations, realversion +! +! Arguments: +! +! a - type(psb_dspmat_type) Input: sparse matrix containing A. +! prec - class(psb_dprec_type) Input: preconditioner +! b - real,dimension(:) Input: vector containing the +! right hand side B +! x - real,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_d_krylov_conv_mod + use psb_krylov_mod, psb_protect_name => psb_drichardson_vect + + Type(psb_dspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_dprec_type), intent(inout) :: prec + type(psb_d_vect_type), Intent(inout) :: b + type(psb_d_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + real(psb_dpk_), allocatable, target :: aux(:) + type(psb_d_vect_type), allocatable, target :: wwrk(:) + type(psb_d_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_drichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(done,b,dzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(done,z,done,x,desc_a,info) + call psb_geaxpby(done,b,dzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_drichardson_vect + diff --git a/krylov/psb_krylov_mod.f90 b/krylov/psb_krylov_mod.f90 index d8d4d904..e9a94e18 100644 --- a/krylov/psb_krylov_mod.f90 +++ b/krylov/psb_krylov_mod.f90 @@ -127,4 +127,88 @@ Module psb_krylov_mod end interface + interface psb_richardson + + Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_sspmat_type, & + & psb_spk_, psb_s_vect_type + use psb_prec_mod, only : psb_sprec_type + + Type(psb_sspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_sprec_type), intent(inout) :: prec + type(psb_s_vect_type), Intent(inout) :: b + type(psb_s_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + end Subroutine psb_srichardson_vect + + Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_cspmat_type, & + & psb_spk_, psb_c_vect_type + use psb_prec_mod, only : psb_cprec_type + + Type(psb_cspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_cprec_type), intent(inout) :: prec + type(psb_c_vect_type), Intent(inout) :: b + type(psb_c_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + end Subroutine psb_crichardson_vect + + Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_dspmat_type, & + & psb_dpk_, psb_d_vect_type + use psb_prec_mod, only : psb_dprec_type + + Type(psb_dspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_dprec_type), intent(inout) :: prec + type(psb_d_vect_type), Intent(inout) :: b + type(psb_d_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + end Subroutine psb_drichardson_vect + + Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_zspmat_type, & + & psb_dpk_, psb_z_vect_type + use psb_prec_mod, only : psb_zprec_type + + Type(psb_zspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_zprec_type), intent(inout) :: prec + type(psb_z_vect_type), Intent(inout) :: b + type(psb_z_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + end Subroutine psb_zrichardson_vect + + end interface + end module psb_krylov_mod diff --git a/krylov/psb_skrylov.f90 b/krylov/psb_skrylov.f90 index 39aecc36..35d2024f 100644 --- a/krylov/psb_skrylov.f90 +++ b/krylov/psb_skrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB diff --git a/krylov/psb_srichardson.f90 b/krylov/psb_srichardson.f90 new file mode 100644 index 00000000..a06f6cb4 --- /dev/null +++ b/krylov/psb_srichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_srichardson +! +! Front-end for the Richardson iterations, realversion +! +! Arguments: +! +! a - type(psb_sspmat_type) Input: sparse matrix containing A. +! prec - class(psb_sprec_type) Input: preconditioner +! b - real,dimension(:) Input: vector containing the +! right hand side B +! x - real,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_s_krylov_conv_mod + use psb_krylov_mod, psb_protect_name => psb_srichardson_vect + + Type(psb_sspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_sprec_type), intent(inout) :: prec + type(psb_s_vect_type), Intent(inout) :: b + type(psb_s_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + real(psb_spk_), allocatable, target :: aux(:) + type(psb_s_vect_type), allocatable, target :: wwrk(:) + type(psb_s_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_srichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(sone,b,szero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(sone,z,sone,x,desc_a,info) + call psb_geaxpby(sone,b,szero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_srichardson_vect + diff --git a/krylov/psb_zkrylov.f90 b/krylov/psb_zkrylov.f90 index a70cc98a..bcfd6806 100644 --- a/krylov/psb_zkrylov.f90 +++ b/krylov/psb_zkrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB diff --git a/krylov/psb_zrichardson.f90 b/krylov/psb_zrichardson.f90 new file mode 100644 index 00000000..19f2f10e --- /dev/null +++ b/krylov/psb_zrichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_zrichardson +! +! Front-end for the Richardson iterations, complexversion +! +! Arguments: +! +! a - type(psb_zspmat_type) Input: sparse matrix containing A. +! prec - class(psb_zprec_type) Input: preconditioner +! b - complex,dimension(:) Input: vector containing the +! right hand side B +! x - complex,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_z_krylov_conv_mod + use psb_krylov_mod, psb_protect_name => psb_zrichardson_vect + + Type(psb_zspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_zprec_type), intent(inout) :: prec + type(psb_z_vect_type), Intent(inout) :: b + type(psb_z_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + complex(psb_dpk_), allocatable, target :: aux(:) + type(psb_z_vect_type), allocatable, target :: wwrk(:) + type(psb_z_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_zrichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(zone,b,zzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(zone,z,zone,x,desc_a,info) + call psb_geaxpby(zone,b,zzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_zrichardson_vect + diff --git a/test/cudakern/dpdegenmv.F90 b/test/cudakern/dpdegenmv.F90 index 85059e81..a5463f0b 100644 --- a/test/cudakern/dpdegenmv.F90 +++ b/test/cudakern/dpdegenmv.F90 @@ -594,7 +594,7 @@ program pdgenmv ! solver parameters integer(psb_epk_) :: amatsize, precsize, descsize, annz, nbytes - real(psb_dpk_) :: err, eps + real(psb_dpk_) :: err, eps, tnv, tng,tdot, dnrm2,ddot integer, parameter :: ntests=200, ngpu=50, ncnv=20 type(psb_d_coo_sparse_mat), target :: acoo type(psb_d_csr_sparse_mat), target :: acsr @@ -745,7 +745,7 @@ program pdgenmv call psb_geall(x0,desc_a,info) do i=1, nr call desc_a%l2g(i,ig,info) - x0(i) = 1.0 + (1.0*ig)/nrg + x0(i) = 1.0 + (1.0*ig)/(nrg**2) end do call a%cscnv(aux_a,info,mold=acoo) tcnvcsr = 0 @@ -843,6 +843,12 @@ program pdgenmv call bg%sync() x1 = bv%get_vect() x2 = bg%get_vect() + tnv = psb_genrm2(bv,desc_a,info) + tng = psb_genrm2(bg,desc_a,info) + tdot = psb_gedot(bg,bg,desc_a,info) + write(0,*) ' bv ',tnv,' bg ',tng, ' dot ',tdot,eps,& + & dnrm2(desc_a%get_local_rows(),x2,1),& + & ddot(desc_a%get_local_rows(),x1,1,x2,1) call psb_geaxpby(-done,bg,+done,bv,desc_a,info) eps = psb_geamax(bv,desc_a,info) diff --git a/test/cudakern/spdegenmv.F90 b/test/cudakern/spdegenmv.F90 index f953e163..fbce6726 100644 --- a/test/cudakern/spdegenmv.F90 +++ b/test/cudakern/spdegenmv.F90 @@ -580,7 +580,7 @@ program pdgenmv ! solver parameters integer(psb_epk_) :: amatsize, precsize, descsize, annz, nbytes - real(psb_spk_) :: err, eps + real(psb_spk_) :: err, eps, tnv, tng,tdot, snrm2,sdot integer, parameter :: ntests=200, ngpu=50, ncnv=20 type(psb_s_coo_sparse_mat), target :: acoo type(psb_s_csr_sparse_mat), target :: acsr @@ -728,7 +728,7 @@ program pdgenmv call psb_geall(x0,desc_a,info) do i=1, nr call desc_a%l2g(i,ig,info) - x0(i) = 1.0 + (1.0*ig)/nrg + x0(i) = 1.0 + (1.0*ig)/(nrg**2) end do call a%cscnv(aux_a,info,mold=acoo) tcnvcsr = 0 @@ -826,10 +826,16 @@ program pdgenmv call psb_amx(ctxt,gt2) call bg%sync() x1 = bv%get_vect() - x2 = bg%get_vect() + x2 = bg%get_vect() + tnv = psb_genrm2(bv,desc_a,info) + tng = psb_genrm2(bg,desc_a,info) + tdot = psb_gedot(bg,bg,desc_a,info) + write(0,*) ' bv ',tnv,' bg ',tng, ' dot ',tdot,eps,& + & snrm2(desc_a%get_local_rows(),x2,1),& + & sdot(desc_a%get_local_rows(),x1,1,x2,1) call psb_geaxpby(-sone,bg,+sone,bv,desc_a,info) eps = psb_geamax(bv,desc_a,info) - + call psb_amx(ctxt,t2) eps = maxval(abs(x1(1:nr)-x2(1:nr))) call psb_amx(ctxt,eps) From ceac2faad0548d9b08704867c069f7f937cd968b Mon Sep 17 00:00:00 2001 From: sfilippone Date: Sun, 10 Nov 2024 10:08:50 +0100 Subject: [PATCH 59/86] Rename krylov into linsolve where needed, step 1. --- Makefile | 18 +++++++++--------- {krylov => linsolve}/Makefile | 10 +++++----- .../psb_base_linsolve_conv_mod.f90 | 8 ++++---- .../psb_c_linsolve_conv_mod.f90 | 8 ++++---- {krylov => linsolve}/psb_cbicg.f90 | 0 {krylov => linsolve}/psb_ccg.F90 | 0 {krylov => linsolve}/psb_ccgs.f90 | 0 {krylov => linsolve}/psb_ccgstab.f90 | 0 {krylov => linsolve}/psb_ccgstabl.f90 | 0 {krylov => linsolve}/psb_cfcg.F90 | 0 {krylov => linsolve}/psb_cgcr.f90 | 0 {krylov => linsolve}/psb_ckrylov.f90 | 0 {krylov => linsolve}/psb_crgmres.f90 | 0 {krylov => linsolve}/psb_crichardson.f90 | 0 .../psb_d_linsolve_conv_mod.f90 | 8 ++++---- {krylov => linsolve}/psb_dbicg.f90 | 0 {krylov => linsolve}/psb_dcg.F90 | 0 {krylov => linsolve}/psb_dcgs.f90 | 0 {krylov => linsolve}/psb_dcgstab.f90 | 0 {krylov => linsolve}/psb_dcgstabl.f90 | 0 {krylov => linsolve}/psb_dfcg.F90 | 0 {krylov => linsolve}/psb_dgcr.f90 | 0 {krylov => linsolve}/psb_dkrylov.f90 | 0 {krylov => linsolve}/psb_drgmres.f90 | 0 {krylov => linsolve}/psb_drichardson.f90 | 0 {krylov => linsolve}/psb_krylov_mod.f90 | 0 .../psb_linsolve_conv_mod.f90 | 16 ++++++++-------- .../psb_s_linsolve_conv_mod.f90 | 8 ++++---- {krylov => linsolve}/psb_sbicg.f90 | 0 {krylov => linsolve}/psb_scg.F90 | 0 {krylov => linsolve}/psb_scgs.f90 | 0 {krylov => linsolve}/psb_scgstab.f90 | 0 {krylov => linsolve}/psb_scgstabl.f90 | 0 {krylov => linsolve}/psb_sfcg.F90 | 0 {krylov => linsolve}/psb_sgcr.f90 | 0 {krylov => linsolve}/psb_skrylov.f90 | 0 {krylov => linsolve}/psb_srgmres.f90 | 0 {krylov => linsolve}/psb_srichardson.f90 | 0 .../psb_z_linsolve_conv_mod.f90 | 10 +++++----- {krylov => linsolve}/psb_zbicg.f90 | 0 {krylov => linsolve}/psb_zcg.F90 | 0 {krylov => linsolve}/psb_zcgs.f90 | 0 {krylov => linsolve}/psb_zcgstab.f90 | 0 {krylov => linsolve}/psb_zcgstabl.f90 | 0 {krylov => linsolve}/psb_zfcg.F90 | 0 {krylov => linsolve}/psb_zgcr.f90 | 0 {krylov => linsolve}/psb_zkrylov.f90 | 0 {krylov => linsolve}/psb_zrgmres.f90 | 0 {krylov => linsolve}/psb_zrichardson.f90 | 0 49 files changed, 43 insertions(+), 43 deletions(-) rename {krylov => linsolve}/Makefile (73%) rename krylov/psb_base_krylov_conv_mod.f90 => linsolve/psb_base_linsolve_conv_mod.f90 (97%) rename krylov/psb_c_krylov_conv_mod.f90 => linsolve/psb_c_linsolve_conv_mod.f90 (98%) rename {krylov => linsolve}/psb_cbicg.f90 (100%) rename {krylov => linsolve}/psb_ccg.F90 (100%) rename {krylov => linsolve}/psb_ccgs.f90 (100%) rename {krylov => linsolve}/psb_ccgstab.f90 (100%) rename {krylov => linsolve}/psb_ccgstabl.f90 (100%) rename {krylov => linsolve}/psb_cfcg.F90 (100%) rename {krylov => linsolve}/psb_cgcr.f90 (100%) rename {krylov => linsolve}/psb_ckrylov.f90 (100%) rename {krylov => linsolve}/psb_crgmres.f90 (100%) rename {krylov => linsolve}/psb_crichardson.f90 (100%) rename krylov/psb_d_krylov_conv_mod.f90 => linsolve/psb_d_linsolve_conv_mod.f90 (98%) rename {krylov => linsolve}/psb_dbicg.f90 (100%) rename {krylov => linsolve}/psb_dcg.F90 (100%) rename {krylov => linsolve}/psb_dcgs.f90 (100%) rename {krylov => linsolve}/psb_dcgstab.f90 (100%) rename {krylov => linsolve}/psb_dcgstabl.f90 (100%) rename {krylov => linsolve}/psb_dfcg.F90 (100%) rename {krylov => linsolve}/psb_dgcr.f90 (100%) rename {krylov => linsolve}/psb_dkrylov.f90 (100%) rename {krylov => linsolve}/psb_drgmres.f90 (100%) rename {krylov => linsolve}/psb_drichardson.f90 (100%) rename {krylov => linsolve}/psb_krylov_mod.f90 (100%) rename krylov/psb_krylov_conv_mod.f90 => linsolve/psb_linsolve_conv_mod.f90 (86%) rename krylov/psb_s_krylov_conv_mod.f90 => linsolve/psb_s_linsolve_conv_mod.f90 (98%) rename {krylov => linsolve}/psb_sbicg.f90 (100%) rename {krylov => linsolve}/psb_scg.F90 (100%) rename {krylov => linsolve}/psb_scgs.f90 (100%) rename {krylov => linsolve}/psb_scgstab.f90 (100%) rename {krylov => linsolve}/psb_scgstabl.f90 (100%) rename {krylov => linsolve}/psb_sfcg.F90 (100%) rename {krylov => linsolve}/psb_sgcr.f90 (100%) rename {krylov => linsolve}/psb_skrylov.f90 (100%) rename {krylov => linsolve}/psb_srgmres.f90 (100%) rename {krylov => linsolve}/psb_srichardson.f90 (100%) rename krylov/psb_z_krylov_conv_mod.f90 => linsolve/psb_z_linsolve_conv_mod.f90 (98%) rename {krylov => linsolve}/psb_zbicg.f90 (100%) rename {krylov => linsolve}/psb_zcg.F90 (100%) rename {krylov => linsolve}/psb_zcgs.f90 (100%) rename {krylov => linsolve}/psb_zcgstab.f90 (100%) rename {krylov => linsolve}/psb_zcgstabl.f90 (100%) rename {krylov => linsolve}/psb_zfcg.F90 (100%) rename {krylov => linsolve}/psb_zgcr.f90 (100%) rename {krylov => linsolve}/psb_zkrylov.f90 (100%) rename {krylov => linsolve}/psb_zrgmres.f90 (100%) rename {krylov => linsolve}/psb_zrichardson.f90 (100%) diff --git a/Makefile b/Makefile index 972fd3c6..18970b8f 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ include Make.inc -all: dirs based precd kryld utild cbindd extd $(CUDAD) $(OACCD) libd +all: dirs based precd linslvd utild cbindd extd $(CUDAD) $(OACCD) libd @echo "=====================================" @echo "PSBLAS libraries Compilation Successful." @@ -11,16 +11,16 @@ dirs: precd: based utild: based -kryld: precd +linslvd: precd extd: based cudad: extd oaccd: extd -cbindd: based precd kryld utild +cbindd: based precd linslvd utild -libd: based precd kryld utild cbindd extd $(CUDALD) $(OACCLD) +libd: based precd linslvd utild cbindd extd $(CUDALD) $(OACCLD) $(MAKE) -C base lib $(MAKE) -C prec lib - $(MAKE) -C krylov lib + $(MAKE) -C linsolve lib $(MAKE) -C util lib $(MAKE) -C cbind lib $(MAKE) -C ext lib @@ -34,8 +34,8 @@ based: $(MAKE) -C base objs precd: $(MAKE) -C prec objs -kryld: - $(MAKE) -C krylov objs +linslvd: + $(MAKE) -C linsolve objs utild: $(MAKE) -C util objs cbindd: @@ -67,7 +67,7 @@ install: all clean: $(MAKE) -C base clean $(MAKE) -C prec clean - $(MAKE) -C krylov clean + $(MAKE) -C linsolve clean $(MAKE) -C util clean $(MAKE) -C cbind clean $(MAKE) -C ext clean @@ -85,7 +85,7 @@ cleanlib: veryclean: cleanlib cd base && $(MAKE) veryclean cd prec && $(MAKE) veryclean - cd krylov && $(MAKE) veryclean + cd linsolve && $(MAKE) veryclean cd util && $(MAKE) veryclean cd cbind && $(MAKE) veryclean cd ext && $(MAKE) veryclean diff --git a/krylov/Makefile b/linsolve/Makefile similarity index 73% rename from krylov/Makefile rename to linsolve/Makefile index c08d6740..7ce12020 100644 --- a/krylov/Makefile +++ b/linsolve/Makefile @@ -6,9 +6,9 @@ LIBDIR=../lib INCDIR=../include MODDIR=../modules -MODOBJS= psb_base_krylov_conv_mod.o \ - psb_s_krylov_conv_mod.o psb_c_krylov_conv_mod.o \ - psb_d_krylov_conv_mod.o psb_z_krylov_conv_mod.o \ +MODOBJS= psb_base_linsolve_conv_mod.o \ + psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o \ + psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o \ psb_krylov_mod.o F90OBJS=psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o \ psb_drichardson.o psb_srichardson.o psb_crichardson.o psb_zrichardson.o \ @@ -36,8 +36,8 @@ lib: objs /bin/cp -p $(CPUPDFLAG) $(HERE)/$(LIBNAME) $(LIBDIR) -psb_s_krylov_conv_mod.o psb_c_krylov_conv_mod.o psb_d_krylov_conv_mod.o psb_z_krylov_conv_mod.o: psb_base_krylov_conv_mod.o -psb_krylov_conv_mod.o: psb_s_krylov_conv_mod.o psb_c_krylov_conv_mod.o psb_d_krylov_conv_mod.o psb_z_krylov_conv_mod.o +psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o: psb_base_linsolve_conv_mod.o +psb_linsolve_conv_mod.o: psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o $(F90OBJS): $(MODOBJS) $(OBJS): $(MODDIR)/$(PRECMODNAME)$(.mod) $(MODDIR)/$(BASEMODNAME)$(.mod) diff --git a/krylov/psb_base_krylov_conv_mod.f90 b/linsolve/psb_base_linsolve_conv_mod.f90 similarity index 97% rename from krylov/psb_base_krylov_conv_mod.f90 rename to linsolve/psb_base_linsolve_conv_mod.f90 index be7723f5..8d36fb53 100644 --- a/krylov/psb_base_krylov_conv_mod.f90 +++ b/linsolve/psb_base_linsolve_conv_mod.f90 @@ -30,10 +30,10 @@ ! ! ! -! File: psb_krylov_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_base_linsolve_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -Module psb_base_krylov_conv_mod +Module psb_base_linsolve_conv_mod use psb_const_mod @@ -166,4 +166,4 @@ contains end subroutine psb_d_end_conv -end module psb_base_krylov_conv_mod +end module psb_base_linsolve_conv_mod diff --git a/krylov/psb_c_krylov_conv_mod.f90 b/linsolve/psb_c_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_c_krylov_conv_mod.f90 rename to linsolve/psb_c_linsolve_conv_mod.f90 index 85a2bca7..317dda30 100644 --- a/krylov/psb_c_krylov_conv_mod.f90 +++ b/linsolve/psb_c_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 +! File: psb_linsolve_conv_mod.f90 ! Interfaces for Krylov subspace iterative methods. ! -Module psb_c_krylov_conv_mod +Module psb_c_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_c_init_conv, psb_c_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_c_check_conv_vect -end module psb_c_krylov_conv_mod +end module psb_c_linsolve_conv_mod diff --git a/krylov/psb_cbicg.f90 b/linsolve/psb_cbicg.f90 similarity index 100% rename from krylov/psb_cbicg.f90 rename to linsolve/psb_cbicg.f90 diff --git a/krylov/psb_ccg.F90 b/linsolve/psb_ccg.F90 similarity index 100% rename from krylov/psb_ccg.F90 rename to linsolve/psb_ccg.F90 diff --git a/krylov/psb_ccgs.f90 b/linsolve/psb_ccgs.f90 similarity index 100% rename from krylov/psb_ccgs.f90 rename to linsolve/psb_ccgs.f90 diff --git a/krylov/psb_ccgstab.f90 b/linsolve/psb_ccgstab.f90 similarity index 100% rename from krylov/psb_ccgstab.f90 rename to linsolve/psb_ccgstab.f90 diff --git a/krylov/psb_ccgstabl.f90 b/linsolve/psb_ccgstabl.f90 similarity index 100% rename from krylov/psb_ccgstabl.f90 rename to linsolve/psb_ccgstabl.f90 diff --git a/krylov/psb_cfcg.F90 b/linsolve/psb_cfcg.F90 similarity index 100% rename from krylov/psb_cfcg.F90 rename to linsolve/psb_cfcg.F90 diff --git a/krylov/psb_cgcr.f90 b/linsolve/psb_cgcr.f90 similarity index 100% rename from krylov/psb_cgcr.f90 rename to linsolve/psb_cgcr.f90 diff --git a/krylov/psb_ckrylov.f90 b/linsolve/psb_ckrylov.f90 similarity index 100% rename from krylov/psb_ckrylov.f90 rename to linsolve/psb_ckrylov.f90 diff --git a/krylov/psb_crgmres.f90 b/linsolve/psb_crgmres.f90 similarity index 100% rename from krylov/psb_crgmres.f90 rename to linsolve/psb_crgmres.f90 diff --git a/krylov/psb_crichardson.f90 b/linsolve/psb_crichardson.f90 similarity index 100% rename from krylov/psb_crichardson.f90 rename to linsolve/psb_crichardson.f90 diff --git a/krylov/psb_d_krylov_conv_mod.f90 b/linsolve/psb_d_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_d_krylov_conv_mod.f90 rename to linsolve/psb_d_linsolve_conv_mod.f90 index 4f9b9f2e..7af5f834 100644 --- a/krylov/psb_d_krylov_conv_mod.f90 +++ b/linsolve/psb_d_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 +! File: psb_linsolve_conv_mod.f90 ! Interfaces for Krylov subspace iterative methods. ! -Module psb_d_krylov_conv_mod +Module psb_d_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_d_init_conv, psb_d_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_d_check_conv_vect -end module psb_d_krylov_conv_mod +end module psb_d_linsolve_conv_mod diff --git a/krylov/psb_dbicg.f90 b/linsolve/psb_dbicg.f90 similarity index 100% rename from krylov/psb_dbicg.f90 rename to linsolve/psb_dbicg.f90 diff --git a/krylov/psb_dcg.F90 b/linsolve/psb_dcg.F90 similarity index 100% rename from krylov/psb_dcg.F90 rename to linsolve/psb_dcg.F90 diff --git a/krylov/psb_dcgs.f90 b/linsolve/psb_dcgs.f90 similarity index 100% rename from krylov/psb_dcgs.f90 rename to linsolve/psb_dcgs.f90 diff --git a/krylov/psb_dcgstab.f90 b/linsolve/psb_dcgstab.f90 similarity index 100% rename from krylov/psb_dcgstab.f90 rename to linsolve/psb_dcgstab.f90 diff --git a/krylov/psb_dcgstabl.f90 b/linsolve/psb_dcgstabl.f90 similarity index 100% rename from krylov/psb_dcgstabl.f90 rename to linsolve/psb_dcgstabl.f90 diff --git a/krylov/psb_dfcg.F90 b/linsolve/psb_dfcg.F90 similarity index 100% rename from krylov/psb_dfcg.F90 rename to linsolve/psb_dfcg.F90 diff --git a/krylov/psb_dgcr.f90 b/linsolve/psb_dgcr.f90 similarity index 100% rename from krylov/psb_dgcr.f90 rename to linsolve/psb_dgcr.f90 diff --git a/krylov/psb_dkrylov.f90 b/linsolve/psb_dkrylov.f90 similarity index 100% rename from krylov/psb_dkrylov.f90 rename to linsolve/psb_dkrylov.f90 diff --git a/krylov/psb_drgmres.f90 b/linsolve/psb_drgmres.f90 similarity index 100% rename from krylov/psb_drgmres.f90 rename to linsolve/psb_drgmres.f90 diff --git a/krylov/psb_drichardson.f90 b/linsolve/psb_drichardson.f90 similarity index 100% rename from krylov/psb_drichardson.f90 rename to linsolve/psb_drichardson.f90 diff --git a/krylov/psb_krylov_mod.f90 b/linsolve/psb_krylov_mod.f90 similarity index 100% rename from krylov/psb_krylov_mod.f90 rename to linsolve/psb_krylov_mod.f90 diff --git a/krylov/psb_krylov_conv_mod.f90 b/linsolve/psb_linsolve_conv_mod.f90 similarity index 86% rename from krylov/psb_krylov_conv_mod.f90 rename to linsolve/psb_linsolve_conv_mod.f90 index 2ec83178..23d6c84c 100644 --- a/krylov/psb_krylov_conv_mod.f90 +++ b/linsolve/psb_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_conv_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -module psb_krylov_conv_mod - use psb_s_krylov_conv_mod - use psb_d_krylov_conv_mod - use psb_c_krylov_conv_mod - use psb_z_krylov_conv_mod -end module psb_krylov_conv_mod +module psb_linsolve_conv_mod + use psb_s_linsolve_conv_mod + use psb_d_linsolve_conv_mod + use psb_c_linsolve_conv_mod + use psb_z_linsolve_conv_mod +end module psb_linsolve_conv_mod diff --git a/krylov/psb_s_krylov_conv_mod.f90 b/linsolve/psb_s_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_s_krylov_conv_mod.f90 rename to linsolve/psb_s_linsolve_conv_mod.f90 index 29713c37..d68f6a90 100644 --- a/krylov/psb_s_krylov_conv_mod.f90 +++ b/linsolve/psb_s_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 +! File: psb_linsolve_conv_mod.f90 ! Interfaces for Krylov subspace iterative methods. ! -Module psb_s_krylov_conv_mod +Module psb_s_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_s_init_conv, psb_s_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_s_check_conv_vect -end module psb_s_krylov_conv_mod +end module psb_s_linsolve_conv_mod diff --git a/krylov/psb_sbicg.f90 b/linsolve/psb_sbicg.f90 similarity index 100% rename from krylov/psb_sbicg.f90 rename to linsolve/psb_sbicg.f90 diff --git a/krylov/psb_scg.F90 b/linsolve/psb_scg.F90 similarity index 100% rename from krylov/psb_scg.F90 rename to linsolve/psb_scg.F90 diff --git a/krylov/psb_scgs.f90 b/linsolve/psb_scgs.f90 similarity index 100% rename from krylov/psb_scgs.f90 rename to linsolve/psb_scgs.f90 diff --git a/krylov/psb_scgstab.f90 b/linsolve/psb_scgstab.f90 similarity index 100% rename from krylov/psb_scgstab.f90 rename to linsolve/psb_scgstab.f90 diff --git a/krylov/psb_scgstabl.f90 b/linsolve/psb_scgstabl.f90 similarity index 100% rename from krylov/psb_scgstabl.f90 rename to linsolve/psb_scgstabl.f90 diff --git a/krylov/psb_sfcg.F90 b/linsolve/psb_sfcg.F90 similarity index 100% rename from krylov/psb_sfcg.F90 rename to linsolve/psb_sfcg.F90 diff --git a/krylov/psb_sgcr.f90 b/linsolve/psb_sgcr.f90 similarity index 100% rename from krylov/psb_sgcr.f90 rename to linsolve/psb_sgcr.f90 diff --git a/krylov/psb_skrylov.f90 b/linsolve/psb_skrylov.f90 similarity index 100% rename from krylov/psb_skrylov.f90 rename to linsolve/psb_skrylov.f90 diff --git a/krylov/psb_srgmres.f90 b/linsolve/psb_srgmres.f90 similarity index 100% rename from krylov/psb_srgmres.f90 rename to linsolve/psb_srgmres.f90 diff --git a/krylov/psb_srichardson.f90 b/linsolve/psb_srichardson.f90 similarity index 100% rename from krylov/psb_srichardson.f90 rename to linsolve/psb_srichardson.f90 diff --git a/krylov/psb_z_krylov_conv_mod.f90 b/linsolve/psb_z_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_z_krylov_conv_mod.f90 rename to linsolve/psb_z_linsolve_conv_mod.f90 index fc88ccf6..a842a5b0 100644 --- a/krylov/psb_z_krylov_conv_mod.f90 +++ b/linsolve/psb_z_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_conv_mod.f90 +! Interfaces for linear solvers. ! -Module psb_z_krylov_conv_mod +Module psb_z_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_z_init_conv, psb_z_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_z_check_conv_vect -end module psb_z_krylov_conv_mod +end module psb_z_linsolve_conv_mod diff --git a/krylov/psb_zbicg.f90 b/linsolve/psb_zbicg.f90 similarity index 100% rename from krylov/psb_zbicg.f90 rename to linsolve/psb_zbicg.f90 diff --git a/krylov/psb_zcg.F90 b/linsolve/psb_zcg.F90 similarity index 100% rename from krylov/psb_zcg.F90 rename to linsolve/psb_zcg.F90 diff --git a/krylov/psb_zcgs.f90 b/linsolve/psb_zcgs.f90 similarity index 100% rename from krylov/psb_zcgs.f90 rename to linsolve/psb_zcgs.f90 diff --git a/krylov/psb_zcgstab.f90 b/linsolve/psb_zcgstab.f90 similarity index 100% rename from krylov/psb_zcgstab.f90 rename to linsolve/psb_zcgstab.f90 diff --git a/krylov/psb_zcgstabl.f90 b/linsolve/psb_zcgstabl.f90 similarity index 100% rename from krylov/psb_zcgstabl.f90 rename to linsolve/psb_zcgstabl.f90 diff --git a/krylov/psb_zfcg.F90 b/linsolve/psb_zfcg.F90 similarity index 100% rename from krylov/psb_zfcg.F90 rename to linsolve/psb_zfcg.F90 diff --git a/krylov/psb_zgcr.f90 b/linsolve/psb_zgcr.f90 similarity index 100% rename from krylov/psb_zgcr.f90 rename to linsolve/psb_zgcr.f90 diff --git a/krylov/psb_zkrylov.f90 b/linsolve/psb_zkrylov.f90 similarity index 100% rename from krylov/psb_zkrylov.f90 rename to linsolve/psb_zkrylov.f90 diff --git a/krylov/psb_zrgmres.f90 b/linsolve/psb_zrgmres.f90 similarity index 100% rename from krylov/psb_zrgmres.f90 rename to linsolve/psb_zrgmres.f90 diff --git a/krylov/psb_zrichardson.f90 b/linsolve/psb_zrichardson.f90 similarity index 100% rename from krylov/psb_zrichardson.f90 rename to linsolve/psb_zrichardson.f90 From ea8c526bf27341451e6f4180d149fa7a4f4b6318 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Sun, 10 Nov 2024 10:12:31 +0100 Subject: [PATCH 60/86] Rename krylov into linsolve step 2. --- linsolve/psb_c_linsolve_conv_mod.f90 | 2 +- linsolve/psb_d_linsolve_conv_mod.f90 | 2 +- linsolve/psb_s_linsolve_conv_mod.f90 | 2 +- linsolve/psb_z_linsolve_conv_mod.f90 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/linsolve/psb_c_linsolve_conv_mod.f90 b/linsolve/psb_c_linsolve_conv_mod.f90 index 317dda30..73db081e 100644 --- a/linsolve/psb_c_linsolve_conv_mod.f90 +++ b/linsolve/psb_c_linsolve_conv_mod.f90 @@ -31,7 +31,7 @@ ! ! ! File: psb_linsolve_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! Interfaces for linear solvers' convergence handling. ! Module psb_c_linsolve_conv_mod diff --git a/linsolve/psb_d_linsolve_conv_mod.f90 b/linsolve/psb_d_linsolve_conv_mod.f90 index 7af5f834..ba59923f 100644 --- a/linsolve/psb_d_linsolve_conv_mod.f90 +++ b/linsolve/psb_d_linsolve_conv_mod.f90 @@ -31,7 +31,7 @@ ! ! ! File: psb_linsolve_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! Interfaces for linear solvers' convergence handling. ! Module psb_d_linsolve_conv_mod diff --git a/linsolve/psb_s_linsolve_conv_mod.f90 b/linsolve/psb_s_linsolve_conv_mod.f90 index d68f6a90..5de6ebb6 100644 --- a/linsolve/psb_s_linsolve_conv_mod.f90 +++ b/linsolve/psb_s_linsolve_conv_mod.f90 @@ -31,7 +31,7 @@ ! ! ! File: psb_linsolve_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! Interfaces for linear solvers' convergence handling. ! Module psb_s_linsolve_conv_mod diff --git a/linsolve/psb_z_linsolve_conv_mod.f90 b/linsolve/psb_z_linsolve_conv_mod.f90 index a842a5b0..6c6276ff 100644 --- a/linsolve/psb_z_linsolve_conv_mod.f90 +++ b/linsolve/psb_z_linsolve_conv_mod.f90 @@ -31,7 +31,7 @@ ! ! ! File: psb_linsolve_conv_mod.f90 -! Interfaces for linear solvers. +! Interfaces for linear solvers' convergence handling. ! Module psb_z_linsolve_conv_mod From 14dce3eefd656fbed38f7e1bfa18dca2af7e6ec3 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Sun, 10 Nov 2024 10:27:31 +0100 Subject: [PATCH 61/86] Krylov into linsolve, step 3. --- linsolve/psb_cbicg.f90 | 2 +- linsolve/psb_ccg.F90 | 2 +- linsolve/psb_ccgs.f90 | 2 +- linsolve/psb_ccgstab.f90 | 2 +- linsolve/psb_ccgstabl.f90 | 2 +- linsolve/psb_cfcg.F90 | 2 +- linsolve/psb_cgcr.f90 | 2 +- linsolve/psb_crgmres.f90 | 2 +- linsolve/psb_crichardson.f90 | 2 +- linsolve/psb_dbicg.f90 | 2 +- linsolve/psb_dcg.F90 | 2 +- linsolve/psb_dcgs.f90 | 2 +- linsolve/psb_dcgstab.f90 | 2 +- linsolve/psb_dcgstabl.f90 | 2 +- linsolve/psb_dfcg.F90 | 2 +- linsolve/psb_dgcr.f90 | 2 +- linsolve/psb_drgmres.f90 | 2 +- linsolve/psb_drichardson.f90 | 2 +- linsolve/psb_sbicg.f90 | 2 +- linsolve/psb_scg.F90 | 2 +- linsolve/psb_scgs.f90 | 2 +- linsolve/psb_scgstab.f90 | 2 +- linsolve/psb_scgstabl.f90 | 2 +- linsolve/psb_sfcg.F90 | 2 +- linsolve/psb_sgcr.f90 | 2 +- linsolve/psb_srgmres.f90 | 2 +- linsolve/psb_srichardson.f90 | 2 +- linsolve/psb_zbicg.f90 | 2 +- linsolve/psb_zcg.F90 | 2 +- linsolve/psb_zcgs.f90 | 2 +- linsolve/psb_zcgstab.f90 | 2 +- linsolve/psb_zcgstabl.f90 | 2 +- linsolve/psb_zfcg.F90 | 2 +- linsolve/psb_zgcr.f90 | 2 +- linsolve/psb_zrgmres.f90 | 2 +- linsolve/psb_zrichardson.f90 | 2 +- 36 files changed, 36 insertions(+), 36 deletions(-) diff --git a/linsolve/psb_cbicg.f90 b/linsolve/psb_cbicg.f90 index c3b4f472..7a59fac5 100644 --- a/linsolve/psb_cbicg.f90 +++ b/linsolve/psb_cbicg.f90 @@ -98,7 +98,7 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_cspmat_type), intent(in) :: a diff --git a/linsolve/psb_ccg.F90 b/linsolve/psb_ccg.F90 index fbc550e7..45455edb 100644 --- a/linsolve/psb_ccg.F90 +++ b/linsolve/psb_ccg.F90 @@ -99,7 +99,7 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_cspmat_type), intent(in) :: a diff --git a/linsolve/psb_ccgs.f90 b/linsolve/psb_ccgs.f90 index c25a449a..c4cb9b8c 100644 --- a/linsolve/psb_ccgs.f90 +++ b/linsolve/psb_ccgs.f90 @@ -96,7 +96,7 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_cspmat_type), intent(in) :: a diff --git a/linsolve/psb_ccgstab.f90 b/linsolve/psb_ccgstab.f90 index 22d73b85..2acfaadd 100644 --- a/linsolve/psb_ccgstab.f90 +++ b/linsolve/psb_ccgstab.f90 @@ -96,7 +96,7 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_cspmat_type), intent(in) :: a diff --git a/linsolve/psb_ccgstabl.f90 b/linsolve/psb_ccgstabl.f90 index 86ca5d93..64fb2441 100644 --- a/linsolve/psb_ccgstabl.f90 +++ b/linsolve/psb_ccgstabl.f90 @@ -107,7 +107,7 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_cspmat_type), intent(in) :: a diff --git a/linsolve/psb_cfcg.F90 b/linsolve/psb_cfcg.F90 index 590ed29d..bdb5207a 100644 --- a/linsolve/psb_cfcg.F90 +++ b/linsolve/psb_cfcg.F90 @@ -107,7 +107,7 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_cspmat_type), intent(in) :: a diff --git a/linsolve/psb_cgcr.f90 b/linsolve/psb_cgcr.f90 index 91c848a2..f2ee9037 100644 --- a/linsolve/psb_cgcr.f90 +++ b/linsolve/psb_cgcr.f90 @@ -109,7 +109,7 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none diff --git a/linsolve/psb_crgmres.f90 b/linsolve/psb_crgmres.f90 index 80aa34c3..39b8ae18 100644 --- a/linsolve/psb_crgmres.f90 +++ b/linsolve/psb_crgmres.f90 @@ -110,7 +110,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_cspmat_type), intent(in) :: a diff --git a/linsolve/psb_crichardson.f90 b/linsolve/psb_crichardson.f90 index 08678653..e47e18a7 100644 --- a/linsolve/psb_crichardson.f90 +++ b/linsolve/psb_crichardson.f90 @@ -73,7 +73,7 @@ Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod + use psb_c_linsolve_conv_mod use psb_krylov_mod, psb_protect_name => psb_crichardson_vect Type(psb_cspmat_type), Intent(in) :: a diff --git a/linsolve/psb_dbicg.f90 b/linsolve/psb_dbicg.f90 index 5ac94d3c..6b1c260b 100644 --- a/linsolve/psb_dbicg.f90 +++ b/linsolve/psb_dbicg.f90 @@ -98,7 +98,7 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_dspmat_type), intent(in) :: a diff --git a/linsolve/psb_dcg.F90 b/linsolve/psb_dcg.F90 index 669573be..edc23870 100644 --- a/linsolve/psb_dcg.F90 +++ b/linsolve/psb_dcg.F90 @@ -99,7 +99,7 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_dspmat_type), intent(in) :: a diff --git a/linsolve/psb_dcgs.f90 b/linsolve/psb_dcgs.f90 index 78a3905c..6dc9385a 100644 --- a/linsolve/psb_dcgs.f90 +++ b/linsolve/psb_dcgs.f90 @@ -96,7 +96,7 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_dspmat_type), intent(in) :: a diff --git a/linsolve/psb_dcgstab.f90 b/linsolve/psb_dcgstab.f90 index bec3329a..91d66f87 100644 --- a/linsolve/psb_dcgstab.f90 +++ b/linsolve/psb_dcgstab.f90 @@ -96,7 +96,7 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_dspmat_type), intent(in) :: a diff --git a/linsolve/psb_dcgstabl.f90 b/linsolve/psb_dcgstabl.f90 index 01641226..b51e2aa8 100644 --- a/linsolve/psb_dcgstabl.f90 +++ b/linsolve/psb_dcgstabl.f90 @@ -107,7 +107,7 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_dspmat_type), intent(in) :: a diff --git a/linsolve/psb_dfcg.F90 b/linsolve/psb_dfcg.F90 index d3b2c9d2..6eba5762 100644 --- a/linsolve/psb_dfcg.F90 +++ b/linsolve/psb_dfcg.F90 @@ -107,7 +107,7 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_dspmat_type), intent(in) :: a diff --git a/linsolve/psb_dgcr.f90 b/linsolve/psb_dgcr.f90 index b7480f84..5566209f 100644 --- a/linsolve/psb_dgcr.f90 +++ b/linsolve/psb_dgcr.f90 @@ -109,7 +109,7 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none diff --git a/linsolve/psb_drgmres.f90 b/linsolve/psb_drgmres.f90 index 1503748a..9a8690dd 100644 --- a/linsolve/psb_drgmres.f90 +++ b/linsolve/psb_drgmres.f90 @@ -110,7 +110,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_dspmat_type), intent(in) :: a diff --git a/linsolve/psb_drichardson.f90 b/linsolve/psb_drichardson.f90 index 2c057320..f7c72454 100644 --- a/linsolve/psb_drichardson.f90 +++ b/linsolve/psb_drichardson.f90 @@ -73,7 +73,7 @@ Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod + use psb_d_linsolve_conv_mod use psb_krylov_mod, psb_protect_name => psb_drichardson_vect Type(psb_dspmat_type), Intent(in) :: a diff --git a/linsolve/psb_sbicg.f90 b/linsolve/psb_sbicg.f90 index 609d3a5f..f8074dec 100644 --- a/linsolve/psb_sbicg.f90 +++ b/linsolve/psb_sbicg.f90 @@ -98,7 +98,7 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_sspmat_type), intent(in) :: a diff --git a/linsolve/psb_scg.F90 b/linsolve/psb_scg.F90 index c16dbf6a..f6276348 100644 --- a/linsolve/psb_scg.F90 +++ b/linsolve/psb_scg.F90 @@ -99,7 +99,7 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_sspmat_type), intent(in) :: a diff --git a/linsolve/psb_scgs.f90 b/linsolve/psb_scgs.f90 index 48fe5372..c28026d5 100644 --- a/linsolve/psb_scgs.f90 +++ b/linsolve/psb_scgs.f90 @@ -96,7 +96,7 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_sspmat_type), intent(in) :: a diff --git a/linsolve/psb_scgstab.f90 b/linsolve/psb_scgstab.f90 index 2a811b8d..89f5244b 100644 --- a/linsolve/psb_scgstab.f90 +++ b/linsolve/psb_scgstab.f90 @@ -96,7 +96,7 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_sspmat_type), intent(in) :: a diff --git a/linsolve/psb_scgstabl.f90 b/linsolve/psb_scgstabl.f90 index c2fc9833..0dca7720 100644 --- a/linsolve/psb_scgstabl.f90 +++ b/linsolve/psb_scgstabl.f90 @@ -107,7 +107,7 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_sspmat_type), intent(in) :: a diff --git a/linsolve/psb_sfcg.F90 b/linsolve/psb_sfcg.F90 index 3a518bb2..c39faf5e 100644 --- a/linsolve/psb_sfcg.F90 +++ b/linsolve/psb_sfcg.F90 @@ -107,7 +107,7 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_sspmat_type), intent(in) :: a diff --git a/linsolve/psb_sgcr.f90 b/linsolve/psb_sgcr.f90 index dd0aca16..c0d4f1cd 100644 --- a/linsolve/psb_sgcr.f90 +++ b/linsolve/psb_sgcr.f90 @@ -109,7 +109,7 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none diff --git a/linsolve/psb_srgmres.f90 b/linsolve/psb_srgmres.f90 index 02836dd7..757e7eb7 100644 --- a/linsolve/psb_srgmres.f90 +++ b/linsolve/psb_srgmres.f90 @@ -110,7 +110,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_sspmat_type), intent(in) :: a diff --git a/linsolve/psb_srichardson.f90 b/linsolve/psb_srichardson.f90 index a06f6cb4..d3a47b97 100644 --- a/linsolve/psb_srichardson.f90 +++ b/linsolve/psb_srichardson.f90 @@ -73,7 +73,7 @@ Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod + use psb_s_linsolve_conv_mod use psb_krylov_mod, psb_protect_name => psb_srichardson_vect Type(psb_sspmat_type), Intent(in) :: a diff --git a/linsolve/psb_zbicg.f90 b/linsolve/psb_zbicg.f90 index c22e499a..4c4f4c32 100644 --- a/linsolve/psb_zbicg.f90 +++ b/linsolve/psb_zbicg.f90 @@ -98,7 +98,7 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_zspmat_type), intent(in) :: a diff --git a/linsolve/psb_zcg.F90 b/linsolve/psb_zcg.F90 index a4a521d8..5d6adb4d 100644 --- a/linsolve/psb_zcg.F90 +++ b/linsolve/psb_zcg.F90 @@ -99,7 +99,7 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_zspmat_type), intent(in) :: a diff --git a/linsolve/psb_zcgs.f90 b/linsolve/psb_zcgs.f90 index 3ccce860..fe307bc6 100644 --- a/linsolve/psb_zcgs.f90 +++ b/linsolve/psb_zcgs.f90 @@ -96,7 +96,7 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_zspmat_type), intent(in) :: a diff --git a/linsolve/psb_zcgstab.f90 b/linsolve/psb_zcgstab.f90 index 95ff129a..6cc72a28 100644 --- a/linsolve/psb_zcgstab.f90 +++ b/linsolve/psb_zcgstab.f90 @@ -96,7 +96,7 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_zspmat_type), intent(in) :: a diff --git a/linsolve/psb_zcgstabl.f90 b/linsolve/psb_zcgstabl.f90 index 2cf3a0e5..0898953a 100644 --- a/linsolve/psb_zcgstabl.f90 +++ b/linsolve/psb_zcgstabl.f90 @@ -107,7 +107,7 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_zspmat_type), intent(in) :: a diff --git a/linsolve/psb_zfcg.F90 b/linsolve/psb_zfcg.F90 index 3c26ad3d..e5d6f23c 100644 --- a/linsolve/psb_zfcg.F90 +++ b/linsolve/psb_zfcg.F90 @@ -107,7 +107,7 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_zspmat_type), intent(in) :: a diff --git a/linsolve/psb_zgcr.f90 b/linsolve/psb_zgcr.f90 index 2399160c..30eb7db2 100644 --- a/linsolve/psb_zgcr.f90 +++ b/linsolve/psb_zgcr.f90 @@ -109,7 +109,7 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none diff --git a/linsolve/psb_zrgmres.f90 b/linsolve/psb_zrgmres.f90 index 3aaf0032..2ee8e4dc 100644 --- a/linsolve/psb_zrgmres.f90 +++ b/linsolve/psb_zrgmres.f90 @@ -110,7 +110,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod implicit none type(psb_zspmat_type), intent(in) :: a diff --git a/linsolve/psb_zrichardson.f90 b/linsolve/psb_zrichardson.f90 index 19f2f10e..b4c0af0f 100644 --- a/linsolve/psb_zrichardson.f90 +++ b/linsolve/psb_zrichardson.f90 @@ -73,7 +73,7 @@ Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod + use psb_z_linsolve_conv_mod use psb_krylov_mod, psb_protect_name => psb_zrichardson_vect Type(psb_zspmat_type), Intent(in) :: a From 98d5db73776e01b4526bf25e334cb6211a72e484 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Sun, 10 Nov 2024 10:47:05 +0100 Subject: [PATCH 62/86] Krylov into linsolve, step 4 --- cbind/krylov/psb_ckrylov_cbind_mod.f90 | 4 ++-- cbind/krylov/psb_dkrylov_cbind_mod.f90 | 4 ++-- cbind/krylov/psb_skrylov_cbind_mod.f90 | 4 ++-- cbind/krylov/psb_zkrylov_cbind_mod.f90 | 4 ++-- linsolve/Makefile | 2 +- linsolve/psb_cbicg.f90 | 2 +- linsolve/psb_ccg.F90 | 2 +- linsolve/psb_ccgs.f90 | 2 +- linsolve/psb_ccgstab.f90 | 2 +- linsolve/psb_ccgstabl.f90 | 2 +- linsolve/psb_cfcg.F90 | 2 +- linsolve/psb_cgcr.f90 | 2 +- linsolve/psb_ckrylov.f90 | 2 +- linsolve/psb_crgmres.f90 | 2 +- linsolve/psb_crichardson.f90 | 2 +- linsolve/psb_dbicg.f90 | 2 +- linsolve/psb_dcg.F90 | 2 +- linsolve/psb_dcgs.f90 | 2 +- linsolve/psb_dcgstab.f90 | 2 +- linsolve/psb_dcgstabl.f90 | 2 +- linsolve/psb_dfcg.F90 | 2 +- linsolve/psb_dgcr.f90 | 2 +- linsolve/psb_dkrylov.f90 | 2 +- linsolve/psb_drgmres.f90 | 2 +- linsolve/psb_drichardson.f90 | 2 +- linsolve/{psb_krylov_mod.f90 => psb_linsolve_mod.f90} | 8 ++++---- linsolve/psb_sbicg.f90 | 2 +- linsolve/psb_scg.F90 | 2 +- linsolve/psb_scgs.f90 | 2 +- linsolve/psb_scgstab.f90 | 2 +- linsolve/psb_scgstabl.f90 | 2 +- linsolve/psb_sfcg.F90 | 2 +- linsolve/psb_sgcr.f90 | 2 +- linsolve/psb_skrylov.f90 | 2 +- linsolve/psb_srgmres.f90 | 2 +- linsolve/psb_srichardson.f90 | 2 +- linsolve/psb_zbicg.f90 | 2 +- linsolve/psb_zcg.F90 | 2 +- linsolve/psb_zcgs.f90 | 2 +- linsolve/psb_zcgstab.f90 | 2 +- linsolve/psb_zcgstabl.f90 | 2 +- linsolve/psb_zfcg.F90 | 2 +- linsolve/psb_zgcr.f90 | 2 +- linsolve/psb_zkrylov.f90 | 2 +- linsolve/psb_zrgmres.f90 | 2 +- linsolve/psb_zrichardson.f90 | 2 +- test/fileread/psb_cf_sample.f90 | 2 +- test/fileread/psb_df_sample.f90 | 2 +- test/fileread/psb_sf_sample.f90 | 2 +- test/fileread/psb_zf_sample.f90 | 2 +- test/pargen/psb_d_pde2d.F90 | 2 +- test/pargen/psb_d_pde3d.F90 | 2 +- test/pargen/psb_s_pde2d.F90 | 2 +- test/pargen/psb_s_pde3d.F90 | 2 +- 54 files changed, 61 insertions(+), 61 deletions(-) rename linsolve/{psb_krylov_mod.f90 => psb_linsolve_mod.f90} (98%) diff --git a/cbind/krylov/psb_ckrylov_cbind_mod.f90 b/cbind/krylov/psb_ckrylov_cbind_mod.f90 index 56cd51ab..758ecd02 100644 --- a/cbind/krylov/psb_ckrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_ckrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/cbind/krylov/psb_dkrylov_cbind_mod.f90 b/cbind/krylov/psb_dkrylov_cbind_mod.f90 index 43b3ca8c..b1119067 100644 --- a/cbind/krylov/psb_dkrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_dkrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/cbind/krylov/psb_skrylov_cbind_mod.f90 b/cbind/krylov/psb_skrylov_cbind_mod.f90 index 60d41d14..41bb9506 100644 --- a/cbind/krylov/psb_skrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_skrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/cbind/krylov/psb_zkrylov_cbind_mod.f90 b/cbind/krylov/psb_zkrylov_cbind_mod.f90 index 22e74386..37f24be7 100644 --- a/cbind/krylov/psb_zkrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_zkrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/linsolve/Makefile b/linsolve/Makefile index 7ce12020..5c6445f5 100644 --- a/linsolve/Makefile +++ b/linsolve/Makefile @@ -9,7 +9,7 @@ MODDIR=../modules MODOBJS= psb_base_linsolve_conv_mod.o \ psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o \ psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o \ - psb_krylov_mod.o + psb_linsolve_mod.o F90OBJS=psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o \ psb_drichardson.o psb_srichardson.o psb_crichardson.o psb_zrichardson.o \ psb_dcgstab.o psb_dcg.o psb_dfcg.o psb_dgcr.o psb_dcgs.o \ diff --git a/linsolve/psb_cbicg.f90 b/linsolve/psb_cbicg.f90 index 7a59fac5..c357054b 100644 --- a/linsolve/psb_cbicg.f90 +++ b/linsolve/psb_cbicg.f90 @@ -99,7 +99,7 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/linsolve/psb_ccg.F90 b/linsolve/psb_ccg.F90 index 45455edb..0ba1b5fc 100644 --- a/linsolve/psb_ccg.F90 +++ b/linsolve/psb_ccg.F90 @@ -100,7 +100,7 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_ccgs.f90 b/linsolve/psb_ccgs.f90 index c4cb9b8c..f7808c0d 100644 --- a/linsolve/psb_ccgs.f90 +++ b/linsolve/psb_ccgs.f90 @@ -97,7 +97,7 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_ccgstab.f90 b/linsolve/psb_ccgstab.f90 index 2acfaadd..4ccbaf7a 100644 --- a/linsolve/psb_ccgstab.f90 +++ b/linsolve/psb_ccgstab.f90 @@ -97,7 +97,7 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a class(psb_cprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_ccgstabl.f90 b/linsolve/psb_ccgstabl.f90 index 64fb2441..f1463b83 100644 --- a/linsolve/psb_ccgstabl.f90 +++ b/linsolve/psb_ccgstabl.f90 @@ -108,7 +108,7 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a class(psb_cprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_cfcg.F90 b/linsolve/psb_cfcg.F90 index bdb5207a..f28db7de 100644 --- a/linsolve/psb_cfcg.F90 +++ b/linsolve/psb_cfcg.F90 @@ -108,7 +108,7 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_cgcr.f90 b/linsolve/psb_cgcr.f90 index f2ee9037..5120b102 100644 --- a/linsolve/psb_cgcr.f90 +++ b/linsolve/psb_cgcr.f90 @@ -110,7 +110,7 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none diff --git a/linsolve/psb_ckrylov.f90 b/linsolve/psb_ckrylov.f90 index 3afa525e..39f310fc 100644 --- a/linsolve/psb_ckrylov.f90 +++ b/linsolve/psb_ckrylov.f90 @@ -84,7 +84,7 @@ Subroutine psb_ckrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_cprec_type - use psb_krylov_mod, psb_protect_name => psb_ckrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_ckrylov_vect character(len=*) :: method Type(psb_cspmat_type), Intent(in) :: a diff --git a/linsolve/psb_crgmres.f90 b/linsolve/psb_crgmres.f90 index 39b8ae18..e7799f70 100644 --- a/linsolve/psb_crgmres.f90 +++ b/linsolve/psb_crgmres.f90 @@ -111,7 +111,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_crichardson.f90 b/linsolve/psb_crichardson.f90 index e47e18a7..3eb4c263 100644 --- a/linsolve/psb_crichardson.f90 +++ b/linsolve/psb_crichardson.f90 @@ -74,7 +74,7 @@ Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_c_linsolve_conv_mod - use psb_krylov_mod, psb_protect_name => psb_crichardson_vect + use psb_linsolve_mod, psb_protect_name => psb_crichardson_vect Type(psb_cspmat_type), Intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_dbicg.f90 b/linsolve/psb_dbicg.f90 index 6b1c260b..ebcc8eb9 100644 --- a/linsolve/psb_dbicg.f90 +++ b/linsolve/psb_dbicg.f90 @@ -99,7 +99,7 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/linsolve/psb_dcg.F90 b/linsolve/psb_dcg.F90 index edc23870..14c978bb 100644 --- a/linsolve/psb_dcg.F90 +++ b/linsolve/psb_dcg.F90 @@ -100,7 +100,7 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_dcgs.f90 b/linsolve/psb_dcgs.f90 index 6dc9385a..5c2401d1 100644 --- a/linsolve/psb_dcgs.f90 +++ b/linsolve/psb_dcgs.f90 @@ -97,7 +97,7 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_dcgstab.f90 b/linsolve/psb_dcgstab.f90 index 91d66f87..749015d7 100644 --- a/linsolve/psb_dcgstab.f90 +++ b/linsolve/psb_dcgstab.f90 @@ -97,7 +97,7 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a class(psb_dprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_dcgstabl.f90 b/linsolve/psb_dcgstabl.f90 index b51e2aa8..a2ae6164 100644 --- a/linsolve/psb_dcgstabl.f90 +++ b/linsolve/psb_dcgstabl.f90 @@ -108,7 +108,7 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a class(psb_dprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_dfcg.F90 b/linsolve/psb_dfcg.F90 index 6eba5762..cb741795 100644 --- a/linsolve/psb_dfcg.F90 +++ b/linsolve/psb_dfcg.F90 @@ -108,7 +108,7 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_dgcr.f90 b/linsolve/psb_dgcr.f90 index 5566209f..cf2e2b0e 100644 --- a/linsolve/psb_dgcr.f90 +++ b/linsolve/psb_dgcr.f90 @@ -110,7 +110,7 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none diff --git a/linsolve/psb_dkrylov.f90 b/linsolve/psb_dkrylov.f90 index 2bc24d6a..d858c228 100644 --- a/linsolve/psb_dkrylov.f90 +++ b/linsolve/psb_dkrylov.f90 @@ -84,7 +84,7 @@ Subroutine psb_dkrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_dprec_type - use psb_krylov_mod, psb_protect_name => psb_dkrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_dkrylov_vect character(len=*) :: method Type(psb_dspmat_type), Intent(in) :: a diff --git a/linsolve/psb_drgmres.f90 b/linsolve/psb_drgmres.f90 index 9a8690dd..373c7a70 100644 --- a/linsolve/psb_drgmres.f90 +++ b/linsolve/psb_drgmres.f90 @@ -111,7 +111,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_drichardson.f90 b/linsolve/psb_drichardson.f90 index f7c72454..b0a53a4b 100644 --- a/linsolve/psb_drichardson.f90 +++ b/linsolve/psb_drichardson.f90 @@ -74,7 +74,7 @@ Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_d_linsolve_conv_mod - use psb_krylov_mod, psb_protect_name => psb_drichardson_vect + use psb_linsolve_mod, psb_protect_name => psb_drichardson_vect Type(psb_dspmat_type), Intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_krylov_mod.f90 b/linsolve/psb_linsolve_mod.f90 similarity index 98% rename from linsolve/psb_krylov_mod.f90 rename to linsolve/psb_linsolve_mod.f90 index e9a94e18..c54326f3 100644 --- a/linsolve/psb_krylov_mod.f90 +++ b/linsolve/psb_linsolve_mod.f90 @@ -30,10 +30,10 @@ ! ! ! -! File: psb_krylov_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_mod.f90 +! Interfaces for linear solvers. ! -Module psb_krylov_mod +Module psb_linsolve_mod use psb_const_mod public @@ -211,4 +211,4 @@ Module psb_krylov_mod end interface -end module psb_krylov_mod +end module psb_linsolve_mod diff --git a/linsolve/psb_sbicg.f90 b/linsolve/psb_sbicg.f90 index f8074dec..1b5f1fb8 100644 --- a/linsolve/psb_sbicg.f90 +++ b/linsolve/psb_sbicg.f90 @@ -99,7 +99,7 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/linsolve/psb_scg.F90 b/linsolve/psb_scg.F90 index f6276348..d3485db5 100644 --- a/linsolve/psb_scg.F90 +++ b/linsolve/psb_scg.F90 @@ -100,7 +100,7 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_scgs.f90 b/linsolve/psb_scgs.f90 index c28026d5..4034283e 100644 --- a/linsolve/psb_scgs.f90 +++ b/linsolve/psb_scgs.f90 @@ -97,7 +97,7 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_scgstab.f90 b/linsolve/psb_scgstab.f90 index 89f5244b..a0b57fa8 100644 --- a/linsolve/psb_scgstab.f90 +++ b/linsolve/psb_scgstab.f90 @@ -97,7 +97,7 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a class(psb_sprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_scgstabl.f90 b/linsolve/psb_scgstabl.f90 index 0dca7720..e55d2746 100644 --- a/linsolve/psb_scgstabl.f90 +++ b/linsolve/psb_scgstabl.f90 @@ -108,7 +108,7 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a class(psb_sprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_sfcg.F90 b/linsolve/psb_sfcg.F90 index c39faf5e..449942cd 100644 --- a/linsolve/psb_sfcg.F90 +++ b/linsolve/psb_sfcg.F90 @@ -108,7 +108,7 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_sgcr.f90 b/linsolve/psb_sgcr.f90 index c0d4f1cd..b2d09d3e 100644 --- a/linsolve/psb_sgcr.f90 +++ b/linsolve/psb_sgcr.f90 @@ -110,7 +110,7 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none diff --git a/linsolve/psb_skrylov.f90 b/linsolve/psb_skrylov.f90 index 35d2024f..1a612a12 100644 --- a/linsolve/psb_skrylov.f90 +++ b/linsolve/psb_skrylov.f90 @@ -84,7 +84,7 @@ Subroutine psb_skrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_sprec_type - use psb_krylov_mod, psb_protect_name => psb_skrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_skrylov_vect character(len=*) :: method Type(psb_sspmat_type), Intent(in) :: a diff --git a/linsolve/psb_srgmres.f90 b/linsolve/psb_srgmres.f90 index 757e7eb7..537d2f00 100644 --- a/linsolve/psb_srgmres.f90 +++ b/linsolve/psb_srgmres.f90 @@ -111,7 +111,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_srichardson.f90 b/linsolve/psb_srichardson.f90 index d3a47b97..660778fc 100644 --- a/linsolve/psb_srichardson.f90 +++ b/linsolve/psb_srichardson.f90 @@ -74,7 +74,7 @@ Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_s_linsolve_conv_mod - use psb_krylov_mod, psb_protect_name => psb_srichardson_vect + use psb_linsolve_mod, psb_protect_name => psb_srichardson_vect Type(psb_sspmat_type), Intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_zbicg.f90 b/linsolve/psb_zbicg.f90 index 4c4f4c32..6a3e0215 100644 --- a/linsolve/psb_zbicg.f90 +++ b/linsolve/psb_zbicg.f90 @@ -99,7 +99,7 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/linsolve/psb_zcg.F90 b/linsolve/psb_zcg.F90 index 5d6adb4d..6ca5909c 100644 --- a/linsolve/psb_zcg.F90 +++ b/linsolve/psb_zcg.F90 @@ -100,7 +100,7 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_zcgs.f90 b/linsolve/psb_zcgs.f90 index fe307bc6..c5140545 100644 --- a/linsolve/psb_zcgs.f90 +++ b/linsolve/psb_zcgs.f90 @@ -97,7 +97,7 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_zcgstab.f90 b/linsolve/psb_zcgstab.f90 index 6cc72a28..e04cd7c4 100644 --- a/linsolve/psb_zcgstab.f90 +++ b/linsolve/psb_zcgstab.f90 @@ -97,7 +97,7 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a class(psb_zprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_zcgstabl.f90 b/linsolve/psb_zcgstabl.f90 index 0898953a..93abd056 100644 --- a/linsolve/psb_zcgstabl.f90 +++ b/linsolve/psb_zcgstabl.f90 @@ -108,7 +108,7 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a class(psb_zprec_type), Intent(inout) :: prec diff --git a/linsolve/psb_zfcg.F90 b/linsolve/psb_zfcg.F90 index e5d6f23c..1ab036fe 100644 --- a/linsolve/psb_zfcg.F90 +++ b/linsolve/psb_zfcg.F90 @@ -108,7 +108,7 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_zgcr.f90 b/linsolve/psb_zgcr.f90 index 30eb7db2..e48fc4c1 100644 --- a/linsolve/psb_zgcr.f90 +++ b/linsolve/psb_zgcr.f90 @@ -110,7 +110,7 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none diff --git a/linsolve/psb_zkrylov.f90 b/linsolve/psb_zkrylov.f90 index bcfd6806..900e50b6 100644 --- a/linsolve/psb_zkrylov.f90 +++ b/linsolve/psb_zkrylov.f90 @@ -84,7 +84,7 @@ Subroutine psb_zkrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_zprec_type - use psb_krylov_mod, psb_protect_name => psb_zkrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_zkrylov_vect character(len=*) :: method Type(psb_zspmat_type), Intent(in) :: a diff --git a/linsolve/psb_zrgmres.f90 b/linsolve/psb_zrgmres.f90 index 2ee8e4dc..39985518 100644 --- a/linsolve/psb_zrgmres.f90 +++ b/linsolve/psb_zrgmres.f90 @@ -111,7 +111,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/linsolve/psb_zrichardson.f90 b/linsolve/psb_zrichardson.f90 index b4c0af0f..4c2bc567 100644 --- a/linsolve/psb_zrichardson.f90 +++ b/linsolve/psb_zrichardson.f90 @@ -74,7 +74,7 @@ Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod use psb_z_linsolve_conv_mod - use psb_krylov_mod, psb_protect_name => psb_zrichardson_vect + use psb_linsolve_mod, psb_protect_name => psb_zrichardson_vect Type(psb_zspmat_type), Intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/test/fileread/psb_cf_sample.f90 b/test/fileread/psb_cf_sample.f90 index 3c0ce8f9..01d9a10b 100644 --- a/test/fileread/psb_cf_sample.f90 +++ b/test/fileread/psb_cf_sample.f90 @@ -32,7 +32,7 @@ program psb_cf_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/fileread/psb_df_sample.f90 b/test/fileread/psb_df_sample.f90 index 25a121a4..b186241d 100644 --- a/test/fileread/psb_df_sample.f90 +++ b/test/fileread/psb_df_sample.f90 @@ -32,7 +32,7 @@ program psb_df_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/fileread/psb_sf_sample.f90 b/test/fileread/psb_sf_sample.f90 index 8d9ccb0a..da0fe6b4 100644 --- a/test/fileread/psb_sf_sample.f90 +++ b/test/fileread/psb_sf_sample.f90 @@ -32,7 +32,7 @@ program psb_sf_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/fileread/psb_zf_sample.f90 b/test/fileread/psb_zf_sample.f90 index 3c024606..eefe0901 100644 --- a/test/fileread/psb_zf_sample.f90 +++ b/test/fileread/psb_zf_sample.f90 @@ -32,7 +32,7 @@ program psb_zf_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/pargen/psb_d_pde2d.F90 b/test/pargen/psb_d_pde2d.F90 index 11777b19..7b99fb05 100644 --- a/test/pargen/psb_d_pde2d.F90 +++ b/test/pargen/psb_d_pde2d.F90 @@ -595,7 +595,7 @@ end module psb_d_pde2d_mod program psb_d_pde2d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde2d_mod #if defined(OPENMP) diff --git a/test/pargen/psb_d_pde3d.F90 b/test/pargen/psb_d_pde3d.F90 index 6e895c00..fca19c80 100644 --- a/test/pargen/psb_d_pde3d.F90 +++ b/test/pargen/psb_d_pde3d.F90 @@ -653,7 +653,7 @@ end module psb_d_pde3d_mod program psb_d_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde3d_mod #if defined(OPENMP) diff --git a/test/pargen/psb_s_pde2d.F90 b/test/pargen/psb_s_pde2d.F90 index f14d2cb4..9bfcc271 100644 --- a/test/pargen/psb_s_pde2d.F90 +++ b/test/pargen/psb_s_pde2d.F90 @@ -595,7 +595,7 @@ end module psb_s_pde2d_mod program psb_s_pde2d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_s_pde2d_mod #if defined(OPENMP) diff --git a/test/pargen/psb_s_pde3d.F90 b/test/pargen/psb_s_pde3d.F90 index 2938a4ff..b62073d2 100644 --- a/test/pargen/psb_s_pde3d.F90 +++ b/test/pargen/psb_s_pde3d.F90 @@ -653,7 +653,7 @@ end module psb_s_pde3d_mod program psb_s_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_s_pde3d_mod #if defined(OPENMP) From e9aa9a52371d6c77ffc567e74581e58b0a79485f Mon Sep 17 00:00:00 2001 From: sfilippone Date: Sun, 10 Nov 2024 10:59:28 +0100 Subject: [PATCH 63/86] Restructuring linsolve. --- linsolve/Makefile | 25 ++++++++++----------- linsolve/impl/Makefile | 30 +++++++++++++++++++++++++ linsolve/{ => impl}/psb_cbicg.f90 | 0 linsolve/{ => impl}/psb_ccg.F90 | 0 linsolve/{ => impl}/psb_ccgs.f90 | 0 linsolve/{ => impl}/psb_ccgstab.f90 | 0 linsolve/{ => impl}/psb_ccgstabl.f90 | 0 linsolve/{ => impl}/psb_cfcg.F90 | 0 linsolve/{ => impl}/psb_cgcr.f90 | 0 linsolve/{ => impl}/psb_ckrylov.f90 | 0 linsolve/{ => impl}/psb_crgmres.f90 | 0 linsolve/{ => impl}/psb_crichardson.f90 | 0 linsolve/{ => impl}/psb_dbicg.f90 | 0 linsolve/{ => impl}/psb_dcg.F90 | 0 linsolve/{ => impl}/psb_dcgs.f90 | 0 linsolve/{ => impl}/psb_dcgstab.f90 | 0 linsolve/{ => impl}/psb_dcgstabl.f90 | 0 linsolve/{ => impl}/psb_dfcg.F90 | 0 linsolve/{ => impl}/psb_dgcr.f90 | 0 linsolve/{ => impl}/psb_dkrylov.f90 | 0 linsolve/{ => impl}/psb_drgmres.f90 | 0 linsolve/{ => impl}/psb_drichardson.f90 | 0 linsolve/{ => impl}/psb_sbicg.f90 | 0 linsolve/{ => impl}/psb_scg.F90 | 0 linsolve/{ => impl}/psb_scgs.f90 | 0 linsolve/{ => impl}/psb_scgstab.f90 | 0 linsolve/{ => impl}/psb_scgstabl.f90 | 0 linsolve/{ => impl}/psb_sfcg.F90 | 0 linsolve/{ => impl}/psb_sgcr.f90 | 0 linsolve/{ => impl}/psb_skrylov.f90 | 0 linsolve/{ => impl}/psb_srgmres.f90 | 0 linsolve/{ => impl}/psb_srichardson.f90 | 0 linsolve/{ => impl}/psb_zbicg.f90 | 0 linsolve/{ => impl}/psb_zcg.F90 | 0 linsolve/{ => impl}/psb_zcgs.f90 | 0 linsolve/{ => impl}/psb_zcgstab.f90 | 0 linsolve/{ => impl}/psb_zcgstabl.f90 | 0 linsolve/{ => impl}/psb_zfcg.F90 | 0 linsolve/{ => impl}/psb_zgcr.f90 | 0 linsolve/{ => impl}/psb_zkrylov.f90 | 0 linsolve/{ => impl}/psb_zrgmres.f90 | 0 linsolve/{ => impl}/psb_zrichardson.f90 | 0 42 files changed, 42 insertions(+), 13 deletions(-) create mode 100644 linsolve/impl/Makefile rename linsolve/{ => impl}/psb_cbicg.f90 (100%) rename linsolve/{ => impl}/psb_ccg.F90 (100%) rename linsolve/{ => impl}/psb_ccgs.f90 (100%) rename linsolve/{ => impl}/psb_ccgstab.f90 (100%) rename linsolve/{ => impl}/psb_ccgstabl.f90 (100%) rename linsolve/{ => impl}/psb_cfcg.F90 (100%) rename linsolve/{ => impl}/psb_cgcr.f90 (100%) rename linsolve/{ => impl}/psb_ckrylov.f90 (100%) rename linsolve/{ => impl}/psb_crgmres.f90 (100%) rename linsolve/{ => impl}/psb_crichardson.f90 (100%) rename linsolve/{ => impl}/psb_dbicg.f90 (100%) rename linsolve/{ => impl}/psb_dcg.F90 (100%) rename linsolve/{ => impl}/psb_dcgs.f90 (100%) rename linsolve/{ => impl}/psb_dcgstab.f90 (100%) rename linsolve/{ => impl}/psb_dcgstabl.f90 (100%) rename linsolve/{ => impl}/psb_dfcg.F90 (100%) rename linsolve/{ => impl}/psb_dgcr.f90 (100%) rename linsolve/{ => impl}/psb_dkrylov.f90 (100%) rename linsolve/{ => impl}/psb_drgmres.f90 (100%) rename linsolve/{ => impl}/psb_drichardson.f90 (100%) rename linsolve/{ => impl}/psb_sbicg.f90 (100%) rename linsolve/{ => impl}/psb_scg.F90 (100%) rename linsolve/{ => impl}/psb_scgs.f90 (100%) rename linsolve/{ => impl}/psb_scgstab.f90 (100%) rename linsolve/{ => impl}/psb_scgstabl.f90 (100%) rename linsolve/{ => impl}/psb_sfcg.F90 (100%) rename linsolve/{ => impl}/psb_sgcr.f90 (100%) rename linsolve/{ => impl}/psb_skrylov.f90 (100%) rename linsolve/{ => impl}/psb_srgmres.f90 (100%) rename linsolve/{ => impl}/psb_srichardson.f90 (100%) rename linsolve/{ => impl}/psb_zbicg.f90 (100%) rename linsolve/{ => impl}/psb_zcg.F90 (100%) rename linsolve/{ => impl}/psb_zcgs.f90 (100%) rename linsolve/{ => impl}/psb_zcgstab.f90 (100%) rename linsolve/{ => impl}/psb_zcgstabl.f90 (100%) rename linsolve/{ => impl}/psb_zfcg.F90 (100%) rename linsolve/{ => impl}/psb_zgcr.f90 (100%) rename linsolve/{ => impl}/psb_zkrylov.f90 (100%) rename linsolve/{ => impl}/psb_zrgmres.f90 (100%) rename linsolve/{ => impl}/psb_zrichardson.f90 (100%) diff --git a/linsolve/Makefile b/linsolve/Makefile index 5c6445f5..c8fa3ac7 100644 --- a/linsolve/Makefile +++ b/linsolve/Makefile @@ -10,32 +10,29 @@ MODOBJS= psb_base_linsolve_conv_mod.o \ psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o \ psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o \ psb_linsolve_mod.o -F90OBJS=psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o \ - psb_drichardson.o psb_srichardson.o psb_crichardson.o psb_zrichardson.o \ - psb_dcgstab.o psb_dcg.o psb_dfcg.o psb_dgcr.o psb_dcgs.o \ - psb_dbicg.o psb_dcgstabl.o psb_drgmres.o\ - psb_scgstab.o psb_scg.o psb_sfcg.o psb_sgcr.o psb_scgs.o \ - psb_sbicg.o psb_scgstabl.o psb_srgmres.o\ - psb_ccgstab.o psb_ccg.o psb_cfcg.o psb_cgcr.o psb_ccgs.o \ - psb_cbicg.o psb_ccgstabl.o psb_crgmres.o\ - psb_zcgstab.o psb_zcg.o psb_zfcg.o psb_zgcr.o psb_zcgs.o \ - psb_zbicg.o psb_zcgstabl.o psb_zrgmres.o -OBJS=$(F90OBJS) $(MODOBJS) + +OBJS=$(MODOBJS) LOCAL_MODS=$(MODOBJS:.o=$(.mod)) LIBNAME=$(METHDLIBNAME) FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) -objs: $(OBJS) +objs: $(OBJS) impld /bin/cp -p $(CPUPDFLAG) *$(.mod) $(MODDIR) lib: objs + $(MAKE) -C impl lib $(AR) $(HERE)/$(LIBNAME) $(OBJS) $(RANLIB) $(HERE)/$(LIBNAME) /bin/cp -p $(CPUPDFLAG) $(HERE)/$(LIBNAME) $(LIBDIR) +$(OBJS): $(MODDIR)/$(BASEMODNAME)$(.mod) + +impld: $(OBJS) + $(MAKE) -C impl objs + psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o: psb_base_linsolve_conv_mod.o psb_linsolve_conv_mod.o: psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o $(F90OBJS): $(MODOBJS) @@ -44,6 +41,8 @@ $(OBJS): $(MODDIR)/$(PRECMODNAME)$(.mod) $(MODDIR)/$(BASEMODNAME)$(.mod) veryclean: clean /bin/rm -f $(HERE)/$(LIBNAME) -clean: +iclean: + cd impl && $(MAKE) clean +clean: iclean /bin/rm -f $(OBJS) *$(.mod) diff --git a/linsolve/impl/Makefile b/linsolve/impl/Makefile new file mode 100644 index 00000000..62444af7 --- /dev/null +++ b/linsolve/impl/Makefile @@ -0,0 +1,30 @@ +include ../../Make.inc + +LIBDIR=../../lib +INCDIR=../../include +MODDIR=../../modules +HERE=.. +OBJS=psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o \ + psb_drichardson.o psb_srichardson.o psb_crichardson.o psb_zrichardson.o \ + psb_dcgstab.o psb_dcg.o psb_dfcg.o psb_dgcr.o psb_dcgs.o \ + psb_dbicg.o psb_dcgstabl.o psb_drgmres.o\ + psb_scgstab.o psb_scg.o psb_sfcg.o psb_sgcr.o psb_scgs.o \ + psb_sbicg.o psb_scgstabl.o psb_srgmres.o\ + psb_ccgstab.o psb_ccg.o psb_cfcg.o psb_cgcr.o psb_ccgs.o \ + psb_cbicg.o psb_ccgstabl.o psb_crgmres.o\ + psb_zcgstab.o psb_zcg.o psb_zfcg.o psb_zgcr.o psb_zcgs.o \ + psb_zbicg.o psb_zcgstabl.o psb_zrgmres.o + +LIBNAME=$(METHDLIBNAME) +COBJS= +FINCLUDES=$(FMFLAG).. $(FMFLAG)$(MODDIR) + +objs: $(OBJS) +lib: objs + $(AR) $(HERE)/$(LIBNAME) $(OBJS) + $(RANLIB) $(HERE)/$(LIBNAME) + +veryclean: clean + +clean: + /bin/rm -f $(OBJS) $(LOCAL_MODS) diff --git a/linsolve/psb_cbicg.f90 b/linsolve/impl/psb_cbicg.f90 similarity index 100% rename from linsolve/psb_cbicg.f90 rename to linsolve/impl/psb_cbicg.f90 diff --git a/linsolve/psb_ccg.F90 b/linsolve/impl/psb_ccg.F90 similarity index 100% rename from linsolve/psb_ccg.F90 rename to linsolve/impl/psb_ccg.F90 diff --git a/linsolve/psb_ccgs.f90 b/linsolve/impl/psb_ccgs.f90 similarity index 100% rename from linsolve/psb_ccgs.f90 rename to linsolve/impl/psb_ccgs.f90 diff --git a/linsolve/psb_ccgstab.f90 b/linsolve/impl/psb_ccgstab.f90 similarity index 100% rename from linsolve/psb_ccgstab.f90 rename to linsolve/impl/psb_ccgstab.f90 diff --git a/linsolve/psb_ccgstabl.f90 b/linsolve/impl/psb_ccgstabl.f90 similarity index 100% rename from linsolve/psb_ccgstabl.f90 rename to linsolve/impl/psb_ccgstabl.f90 diff --git a/linsolve/psb_cfcg.F90 b/linsolve/impl/psb_cfcg.F90 similarity index 100% rename from linsolve/psb_cfcg.F90 rename to linsolve/impl/psb_cfcg.F90 diff --git a/linsolve/psb_cgcr.f90 b/linsolve/impl/psb_cgcr.f90 similarity index 100% rename from linsolve/psb_cgcr.f90 rename to linsolve/impl/psb_cgcr.f90 diff --git a/linsolve/psb_ckrylov.f90 b/linsolve/impl/psb_ckrylov.f90 similarity index 100% rename from linsolve/psb_ckrylov.f90 rename to linsolve/impl/psb_ckrylov.f90 diff --git a/linsolve/psb_crgmres.f90 b/linsolve/impl/psb_crgmres.f90 similarity index 100% rename from linsolve/psb_crgmres.f90 rename to linsolve/impl/psb_crgmres.f90 diff --git a/linsolve/psb_crichardson.f90 b/linsolve/impl/psb_crichardson.f90 similarity index 100% rename from linsolve/psb_crichardson.f90 rename to linsolve/impl/psb_crichardson.f90 diff --git a/linsolve/psb_dbicg.f90 b/linsolve/impl/psb_dbicg.f90 similarity index 100% rename from linsolve/psb_dbicg.f90 rename to linsolve/impl/psb_dbicg.f90 diff --git a/linsolve/psb_dcg.F90 b/linsolve/impl/psb_dcg.F90 similarity index 100% rename from linsolve/psb_dcg.F90 rename to linsolve/impl/psb_dcg.F90 diff --git a/linsolve/psb_dcgs.f90 b/linsolve/impl/psb_dcgs.f90 similarity index 100% rename from linsolve/psb_dcgs.f90 rename to linsolve/impl/psb_dcgs.f90 diff --git a/linsolve/psb_dcgstab.f90 b/linsolve/impl/psb_dcgstab.f90 similarity index 100% rename from linsolve/psb_dcgstab.f90 rename to linsolve/impl/psb_dcgstab.f90 diff --git a/linsolve/psb_dcgstabl.f90 b/linsolve/impl/psb_dcgstabl.f90 similarity index 100% rename from linsolve/psb_dcgstabl.f90 rename to linsolve/impl/psb_dcgstabl.f90 diff --git a/linsolve/psb_dfcg.F90 b/linsolve/impl/psb_dfcg.F90 similarity index 100% rename from linsolve/psb_dfcg.F90 rename to linsolve/impl/psb_dfcg.F90 diff --git a/linsolve/psb_dgcr.f90 b/linsolve/impl/psb_dgcr.f90 similarity index 100% rename from linsolve/psb_dgcr.f90 rename to linsolve/impl/psb_dgcr.f90 diff --git a/linsolve/psb_dkrylov.f90 b/linsolve/impl/psb_dkrylov.f90 similarity index 100% rename from linsolve/psb_dkrylov.f90 rename to linsolve/impl/psb_dkrylov.f90 diff --git a/linsolve/psb_drgmres.f90 b/linsolve/impl/psb_drgmres.f90 similarity index 100% rename from linsolve/psb_drgmres.f90 rename to linsolve/impl/psb_drgmres.f90 diff --git a/linsolve/psb_drichardson.f90 b/linsolve/impl/psb_drichardson.f90 similarity index 100% rename from linsolve/psb_drichardson.f90 rename to linsolve/impl/psb_drichardson.f90 diff --git a/linsolve/psb_sbicg.f90 b/linsolve/impl/psb_sbicg.f90 similarity index 100% rename from linsolve/psb_sbicg.f90 rename to linsolve/impl/psb_sbicg.f90 diff --git a/linsolve/psb_scg.F90 b/linsolve/impl/psb_scg.F90 similarity index 100% rename from linsolve/psb_scg.F90 rename to linsolve/impl/psb_scg.F90 diff --git a/linsolve/psb_scgs.f90 b/linsolve/impl/psb_scgs.f90 similarity index 100% rename from linsolve/psb_scgs.f90 rename to linsolve/impl/psb_scgs.f90 diff --git a/linsolve/psb_scgstab.f90 b/linsolve/impl/psb_scgstab.f90 similarity index 100% rename from linsolve/psb_scgstab.f90 rename to linsolve/impl/psb_scgstab.f90 diff --git a/linsolve/psb_scgstabl.f90 b/linsolve/impl/psb_scgstabl.f90 similarity index 100% rename from linsolve/psb_scgstabl.f90 rename to linsolve/impl/psb_scgstabl.f90 diff --git a/linsolve/psb_sfcg.F90 b/linsolve/impl/psb_sfcg.F90 similarity index 100% rename from linsolve/psb_sfcg.F90 rename to linsolve/impl/psb_sfcg.F90 diff --git a/linsolve/psb_sgcr.f90 b/linsolve/impl/psb_sgcr.f90 similarity index 100% rename from linsolve/psb_sgcr.f90 rename to linsolve/impl/psb_sgcr.f90 diff --git a/linsolve/psb_skrylov.f90 b/linsolve/impl/psb_skrylov.f90 similarity index 100% rename from linsolve/psb_skrylov.f90 rename to linsolve/impl/psb_skrylov.f90 diff --git a/linsolve/psb_srgmres.f90 b/linsolve/impl/psb_srgmres.f90 similarity index 100% rename from linsolve/psb_srgmres.f90 rename to linsolve/impl/psb_srgmres.f90 diff --git a/linsolve/psb_srichardson.f90 b/linsolve/impl/psb_srichardson.f90 similarity index 100% rename from linsolve/psb_srichardson.f90 rename to linsolve/impl/psb_srichardson.f90 diff --git a/linsolve/psb_zbicg.f90 b/linsolve/impl/psb_zbicg.f90 similarity index 100% rename from linsolve/psb_zbicg.f90 rename to linsolve/impl/psb_zbicg.f90 diff --git a/linsolve/psb_zcg.F90 b/linsolve/impl/psb_zcg.F90 similarity index 100% rename from linsolve/psb_zcg.F90 rename to linsolve/impl/psb_zcg.F90 diff --git a/linsolve/psb_zcgs.f90 b/linsolve/impl/psb_zcgs.f90 similarity index 100% rename from linsolve/psb_zcgs.f90 rename to linsolve/impl/psb_zcgs.f90 diff --git a/linsolve/psb_zcgstab.f90 b/linsolve/impl/psb_zcgstab.f90 similarity index 100% rename from linsolve/psb_zcgstab.f90 rename to linsolve/impl/psb_zcgstab.f90 diff --git a/linsolve/psb_zcgstabl.f90 b/linsolve/impl/psb_zcgstabl.f90 similarity index 100% rename from linsolve/psb_zcgstabl.f90 rename to linsolve/impl/psb_zcgstabl.f90 diff --git a/linsolve/psb_zfcg.F90 b/linsolve/impl/psb_zfcg.F90 similarity index 100% rename from linsolve/psb_zfcg.F90 rename to linsolve/impl/psb_zfcg.F90 diff --git a/linsolve/psb_zgcr.f90 b/linsolve/impl/psb_zgcr.f90 similarity index 100% rename from linsolve/psb_zgcr.f90 rename to linsolve/impl/psb_zgcr.f90 diff --git a/linsolve/psb_zkrylov.f90 b/linsolve/impl/psb_zkrylov.f90 similarity index 100% rename from linsolve/psb_zkrylov.f90 rename to linsolve/impl/psb_zkrylov.f90 diff --git a/linsolve/psb_zrgmres.f90 b/linsolve/impl/psb_zrgmres.f90 similarity index 100% rename from linsolve/psb_zrgmres.f90 rename to linsolve/impl/psb_zrgmres.f90 diff --git a/linsolve/psb_zrichardson.f90 b/linsolve/impl/psb_zrichardson.f90 similarity index 100% rename from linsolve/psb_zrichardson.f90 rename to linsolve/impl/psb_zrichardson.f90 From 4f4006cf6b92cd702bc7ed10ed87c61ef8c8c8a0 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Sun, 10 Nov 2024 17:30:51 +0100 Subject: [PATCH 64/86] Configure fixes --- configure | 6 +++--- configure.ac | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/configure b/configure index de173d6e..4645c593 100755 --- a/configure +++ b/configure @@ -7423,7 +7423,7 @@ fi ############################################################################## BASEMODNAME=psb_base_mod PRECMODNAME=psb_prec_mod -METHDMODNAME=psb_krylov_mod +METHDMODNAME=psb_linsolve_mod UTILMODNAME=psb_util_mod if test "X$psblas_cv_fc" == X"cray" @@ -7433,7 +7433,7 @@ then FIFLAG="-I" BASEMODNAME=PSB_BASE_MOD PRECMODNAME=PSB_PREC_MOD - METHDMODNAME=PSB_KRYLOV_MOD + METHDMODNAME=PSB_LINSOLVE_MOD UTILMODNAME=PSB_UTIL_MOD else @@ -11332,7 +11332,7 @@ fi LIBDIR=lib BASELIBNAME=libpsb_base.a PRECLIBNAME=libpsb_prec.a -METHDLIBNAME=libpsb_krylov.a +METHDLIBNAME=libpsb_linsolve.a UTILLIBNAME=libpsb_util.a ############################################################################### diff --git a/configure.ac b/configure.ac index c670f6c8..b2d851ae 100755 --- a/configure.ac +++ b/configure.ac @@ -483,7 +483,7 @@ fi ############################################################################## BASEMODNAME=psb_base_mod PRECMODNAME=psb_prec_mod -METHDMODNAME=psb_krylov_mod +METHDMODNAME=psb_linsolve_mod UTILMODNAME=psb_util_mod if test "X$psblas_cv_fc" == X"cray" @@ -493,7 +493,7 @@ then FIFLAG="-I" BASEMODNAME=PSB_BASE_MOD PRECMODNAME=PSB_PREC_MOD - METHDMODNAME=PSB_KRYLOV_MOD + METHDMODNAME=PSB_LINSOLVE_MOD UTILMODNAME=PSB_UTIL_MOD else @@ -926,7 +926,7 @@ fi LIBDIR=lib BASELIBNAME=libpsb_base.a PRECLIBNAME=libpsb_prec.a -METHDLIBNAME=libpsb_krylov.a +METHDLIBNAME=libpsb_linsolve.a UTILLIBNAME=libpsb_util.a ############################################################################### From a02440afffee744ed1bff20fd76838820f126d29 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 11 Nov 2024 17:48:49 +0100 Subject: [PATCH 65/86] Updatex docs for linsolve --- cbind/test/pargen/Makefile | 2 +- docs/html/index.html | 6 +- docs/html/userhtml.html | 6 +- docs/html/userhtmlli1.html | 42 +- docs/html/userhtmlli2.html | 2 +- docs/html/userhtmlse11.html | 345 +- docs/html/userhtmlse12.html | 84 +- docs/html/userhtmlse13.html | 60 +- docs/psblas-3.9.pdf | 13501 +++++++++++++++++----------------- docs/src/methods.tex | 117 +- 10 files changed, 7483 insertions(+), 6682 deletions(-) diff --git a/cbind/test/pargen/Makefile b/cbind/test/pargen/Makefile index 2e74497f..e1da6892 100644 --- a/cbind/test/pargen/Makefile +++ b/cbind/test/pargen/Makefile @@ -9,7 +9,7 @@ FINCLUDES=$(FMFLAG). $(FMFLAG)$(HERE) $(FMFLAG)$(MODDIR) CINCLUDES=-I. -I$(HERE) -I$(INCLUDEDIR) PSBC_LIBS= -L$(LIBDIR) -lpsb_cbind -PSB_LIBS=-lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base -L$(LIBDIR) +PSB_LIBS=-lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base -L$(LIBDIR) # # Compilers and such diff --git a/docs/html/index.html b/docs/html/index.html index 083bd90a..2ccf61d9 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -54,11 +54,11 @@ href="userhtmlse10.html#x15-13500010" id="QQ2-15-165">Preconditioner routines  11 Iterative Methods
 12 Extensions +href="userhtmlse12.html#x19-14500012" id="QQ2-19-175">Extensions
 13 CUDA Environment Routines +href="userhtmlse13.html#x20-15400013" id="QQ2-20-190">CUDA Environment Routines
 References +href="userhtmlli2.html#x21-169000" id="QQ2-21-219">References diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index 083bd90a..2ccf61d9 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -54,11 +54,11 @@ href="userhtmlse10.html#x15-13500010" id="QQ2-15-165">Preconditioner routines  11 Iterative Methods
 12 Extensions +href="userhtmlse12.html#x19-14500012" id="QQ2-19-175">Extensions
 13 CUDA Environment Routines +href="userhtmlse13.html#x20-15400013" id="QQ2-20-190">CUDA Environment Routines
 References +href="userhtmlli2.html#x21-169000" id="QQ2-21-219">References diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html index e767ddcf..40ffe257 100644 --- a/docs/html/userhtmlli1.html +++ b/docs/html/userhtmlli1.html @@ -310,46 +310,48 @@ href="userhtmlse10.html#x15-14100010.6" id="QQ2-15-171">free — Free a prec href="userhtmlse11.html#x17-14200011">Iterative Methods
  11.1 psb_krylov — Krylov Methods Driver Routine +
  11.2 psb_richardson — Richardson Iteration Driver Routine
 12 Extensions +href="userhtmlse12.html#x19-14500012">Extensions
  12.1 Using the extensions +href="userhtmlse12.html#x19-14600012.1" id="QQ2-19-176">Using the extensions
  12.2 Extensions’ Data Structures +href="userhtmlse12.html#x19-14700012.2" id="QQ2-19-177">Extensions’ Data Structures
  12.3 CPU-class extensions +href="userhtmlse12.html#x19-14800012.3" id="QQ2-19-180">CPU-class extensions
  12.4 CUDA-class extensions +href="userhtmlse12.html#x19-15300012.4" id="QQ2-19-189">CUDA-class extensions
 13 CUDA Environment Routines +href="userhtmlse13.html#x20-15400013">CUDA Environment Routines
  psb_cuda_init +href="userhtmlse13.html#Q1-20-192">psb_cuda_init
  psb_cuda_exit +href="userhtmlse13.html#Q1-20-194">psb_cuda_exit
  psb_cuda_DeviceSync +href="userhtmlse13.html#Q1-20-196">psb_cuda_DeviceSync
  psb_cuda_getDeviceCount +href="userhtmlse13.html#Q1-20-198">psb_cuda_getDeviceCount
  psb_cuda_getDevice +href="userhtmlse13.html#Q1-20-200">psb_cuda_getDevice
  psb_cuda_setDevice +href="userhtmlse13.html#Q1-20-202">psb_cuda_setDevice
  psb_cuda_DeviceHasUVA +href="userhtmlse13.html#Q1-20-204">psb_cuda_DeviceHasUVA
  psb_cuda_WarpSize +href="userhtmlse13.html#Q1-20-206">psb_cuda_WarpSize
  psb_cuda_MultiProcessors +href="userhtmlse13.html#Q1-20-208">psb_cuda_MultiProcessors
  psb_cuda_MaxThreadsPerMP +href="userhtmlse13.html#Q1-20-210">psb_cuda_MaxThreadsPerMP
  psb_cuda_MaxRegisterPerBlock +href="userhtmlse13.html#Q1-20-212">psb_cuda_MaxRegisterPerBlock
  psb_cuda_MemoryClockRate +href="userhtmlse13.html#Q1-20-214">psb_cuda_MemoryClockRate
  psb_cuda_MemoryBusWidth +href="userhtmlse13.html#Q1-20-216">psb_cuda_MemoryBusWidth
  psb_cuda_MemoryPeakBandwidth +href="userhtmlse13.html#Q1-20-218">psb_cuda_MemoryPeakBandwidth diff --git a/docs/html/userhtmlli2.html b/docs/html/userhtmlli2.html index e486077a..f31a33cf 100644 --- a/docs/html/userhtmlli2.html +++ b/docs/html/userhtmlli2.html @@ -16,7 +16,7 @@ href="userhtmlse13.html#tailuserhtmlse13.html" >prev-tail] [tail] [up]

References

+ id="x21-169000">References

diff --git a/docs/html/userhtmlse11.html b/docs/html/userhtmlse11.html index 41a4cd65..c99d4e40 100644 --- a/docs/html/userhtmlse11.html +++ b/docs/html/userhtmlse11.html @@ -17,10 +17,9 @@ href="userhtmlse8.html#tailuserhtmlse11.html">tail] [up]

11 Iterative Methods

-

In this chapter we provide routines for preconditioners and iterative methods. -The interfaces for Krylov subspace methods are available in the module -psb_krylov_mod. +

In this chapter we provide routines for preconditioners and iterative methods. The +interfaces for iterative methods are available in the module psb_linsolve_mod. @@ -456,6 +455,344 @@ class="newline" />An integer value; 0 means no error has been detected.11.2 psb_richardson — Richardson Iteration Driver Routine +

This subroutine is a driver implementig a Richardson iteration +

+x   = M - 1(b - Ax )+ x ,
+ k+1             k    k
+
+

with the preconditioner operator M defined in the previous section. +

The stopping criterion can take the following values: +

+

+1

+

normwise backward error in the infinity norm; the iteration is stopped + when +

+      -----∥ri∥------
+err = (∥A∥∥xi∥+ ∥b∥) < eps
+
+

+

+

+2

+

Relative residual in the 2-norm; the iteration is stopped when +

+      ∥ri∥-
+err = ∥b∥2 < eps
+
+

+

+

+3

+

Relative residual reduction in the 2-norm; the iteration is stopped when +

+     -∥ri∥-
+err = ∥r0∥2 < eps
+
+

+ + + +

The behaviour is controlled by the istop argument (see later). In the above formulae, xi +is the tentative solution and ri = b - Axi the corresponding residual at the i-th +iteration. + +

call psb_richardson(a,prec,b,x,eps,desc_a,info,& 
+    & itmax,iter,err,itrace,istop)
+ +

+

+

+Type:

+

Synchronous. +

+

+On Entry

+

+

+

+a

+

the local portion of global sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_Tspmat_type. +

+

+prec

+

The data structure containing the preconditioner.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_prec_type. +

+

+b

+

The RHS vector.
Scope: local
Type: required
Intent: in.
Specified as: a rank one array or an object of type psb_T_vect_type. +

+

+x

+ + + +

The initial guess.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one array or an object of type psb_T_vect_type. +

+

+eps

+

The stopping tolerance.
Scope: global
Type: required
Intent: in.
Specified as: a real number. +

+

+desc_a

+

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_desc_type. +

+

+itmax

+

The maximum number of iterations to perform.
Scope: global
Type: optional
Intent: in.
Default: itmax = 1000.
Specified as: an integer variable itmax 1. +

+

+itrace

+

If > 0 print out an informational message about convergence every itrace + iterations. If = 0 print a message in case of convergence failure.
Scope: global
Type: optional
Intent: in.
Default: itrace = -1.
+

+

+istop

+ + + +

An integer specifying the stopping criterion.
Scope: global
Type: optional.
Intent: in.
Values: 1: use the normwise backward error, 2: use the scaled 2-norm of + the residual, 3: use the residual reduction in the 2-norm. Default: 2. +

+

+On Return

+

+

+

+x

+

The computed solution.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one array or an object of type psb_T_vect_type. +

+

+iter

+

The number of iterations performed.
Scope: global
Type: optional
Intent: out.
Returned as: an integer variable. +

+

+err

+

The convergence estimate on exit.
Scope: global
Type: optional
Intent: out.
Returned as: a real number. +

+

+info

+

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

+ + + diff --git a/docs/html/userhtmlse12.html b/docs/html/userhtmlse12.html index e47c099d..180aa0dd 100644 --- a/docs/html/userhtmlse12.html +++ b/docs/html/userhtmlse12.html @@ -16,7 +16,7 @@ href="userhtmlse11.html#tailuserhtmlse11.html" >prev-tail] [tail] [up]

12 Extensions

+ id="x19-14500012">Extensions

The EXT, CUDA and RSB subdirectories contains a set of extensions to the base library. The extensions provide additional storage formats beyond the ones already contained in the base library, as well as interfaces to: @@ -49,7 +49,7 @@ in [22].

12.1 Using the extensions

+ id="x19-14600012.1">Using the extensions

A sample application using the PSBLAS extensions will contain the following steps:

    @@ -142,7 +142,7 @@ speed of the sparse matrix-vector product with the various data structures inclu in the library.

    12.2 Extensions’ Data Structures

    + id="x19-14700012.2">Extensions’ Data Structures

    Access to the facilities provided by the EXT library is mainly achieved through the data types that are provided within. The data classes are derived from the base classes in PSBLAS, through the Fortran 2003 mechanism of 17].

    The data classes are divided between the general purpose CPU extensions, the GPU interfaces and the RSB interfaces. In the description we will make use of the notation introduced in Table 21. +href="#x19-147001r21">21.



    Table 21: Notation for parameters describing a sparse matrix
    +class="content">Notation for parameters describing a sparse matrix

    @@ -274,7 +274,7 @@ class="td11"> + id="x19-147002r5"> @@ -283,18 +283,18 @@ src="mat.png" alt="PIC" width="147" height="147" >

    Figure 5: Example of sparse matrix
    +class="content">Example of sparse matrix


    12.3 CPU-class extensions

    + id="x19-14800012.3">CPU-class extensions

    ELLPACK
    + id="x19-149000">ELLPACK

    The ELLPACK/ITPACK format (shown in Figure 6) comprises two 2-dimensional +href="#x19-149001r6">6) comprises two 2-dimensional arrays AS and JA with + id="x19-149001r6"> @@ -325,13 +325,13 @@ width="233" height="233" >

    Figure 6: ELLPACK compression of matrix in Figure 5
    +href="#x19-147002r5">5


    + id="x19-149002r1"> @@ -341,8 +341,8 @@ href="#x19-146002r5">5 -
       i=1,n 
         t=0 
        j=1,maxnzr 
        ,j)) 
         end do 
        ) = t 
        end do
    + id="x19-149010r1"> + id="x19-149011"> Algorithm 1:  Matrix-Vector product in ELL format @@ -450,7 +450,7 @@ class="cmbx-10"> 1:  Matrix-Vector product in ELL format class="cmmi-10">y = Ax can be computed with the code shown in Alg. 1; it costs one memory write per outer iteration, plus three memory reads and +href="#x19-149010r1">1; it costs one memory write per outer iteration, plus three memory reads and two floating-point operations per inner iteration.

    Unless all rows have exactly the same number of nonzeros, some of the coefficients in the

  • + class="enumerate" id="x19-149013x1">

    The maximum number of nonzeros per row is not much larger than the average;

  • + class="enumerate" id="x19-149015x2">

    The regularity of the data structure allows for faster code, e.g. by allowing vectorization, thereby offsetting the additional storage requirements.

  • In the extreme case where the input matrix has one full row, the ELLPACK @@ -492,7 +492,7 @@ class="cmtt-10">psb_T_ell_sparse_mat:

    Hacked ELLPACK
    + id="x19-150000">Hacked ELLPACK

    The hacked ELLPACK (HLL) format alleviates the main problem of the ELLPACK @@ -558,7 +558,7 @@ format. + id="x19-150001r7"> @@ -568,7 +568,7 @@ width="248" height="248" >

    Figure 7: Hacked ELLPACK compression of matrix in Figure 5
    +href="#x19-147002r5">5 @@ -595,9 +595,9 @@ class="cmtt-10">psb_T_hll_sparse_mat:

    Diagonal storage
    + id="x19-151000">Diagonal storage

    The DIAgonal (DIA) format (shown in Figure 8) has a 2-dimensional array 8) has a 2-dimensional array AS containing in each column the coefficients along a diagonal of the matrix, and an integer array

    The code to compute the matrix-vector product y = Ax is shown in Alg. 2; it +href="#x19-151003r2">2; it costs one memory read per outer iteration, plus three memory reads, one memory write and two floating-point operations per inner iteration. The accesses to + id="x19-151001r8"> @@ -630,13 +630,13 @@ width="248" height="248" >

    Figure 8: DIA compression of matrix in Figure 5
    +href="#x19-147002r5">5


    + id="x19-151002r2"> @@ -662,9 +662,9 @@ href="#x19-146002r5">5

    + id="x19-151003r2"> + id="x19-151004"> Algorithm 2:  Matrix-Vector product in DIA format @@ -691,7 +691,7 @@ class="cmtt-10">psb_T_dia_sparse_mat:

    Hacked DIA
    + id="x19-152000">Hacked DIA

    Storage by DIAgonals is an attractive option for matrices whose coefficients are located on a small set of diagonals, since they do away with storing explicitly the indices and therefore reduce significantly memory traffic. However, having a few @@ -738,7 +738,7 @@ class="cmti-10">hackOffsets[k]. + id="x19-152001r9"> @@ -748,7 +748,7 @@ width="248" height="248" >

    Figure 9: Hacked DIA compression of matrix in Figure 5
    +href="#x19-147002r5">5 @@ -793,7 +793,7 @@ class="cmtt-10">psb_T_hdia_sparse_mat:

    12.4 CUDA-class extensions

    + id="x19-15300012.4">CUDA-class extensions

    For computing with CUDA we define a dual memorization strategy in which each variable on the CPU (“host”) side has a GPU (“device”) side. When a GPU-type variable is initialized, the data contained is (usually) the same on both sides. Each diff --git a/docs/html/userhtmlse13.html b/docs/html/userhtmlse13.html index fa8fed8f..90d399e0 100644 --- a/docs/html/userhtmlse13.html +++ b/docs/html/userhtmlse13.html @@ -16,12 +16,12 @@ href="userhtmlse12.html#tailuserhtmlse12.html" >prev-tail] [tail] [up]

    13 CUDA Environment Routines

    + id="x20-15400013">CUDA Environment Routines

    psb_cuda_init — Initializes PSBLAS-CUDA environment

    + id="x20-155000">psb_cuda_init — Initializes PSBLAS-CUDA environment + id="Q1-20-192">

    @@ -64,13 +64,13 @@ class="cmbx-12">Notes

    1. + class="enumerate" id="x20-155002x1">

      A call to this routine must precede any other PSBLAS-CUDA call.

    psb_cuda_exit — Exit from PSBLAS-CUDA environment

    + id="x20-156000">psb_cuda_exit — Exit from PSBLAS-CUDA environment + id="Q1-20-194">

    @@ -106,9 +106,9 @@ class="cmbx-10">in.
    Specified as: an integer variable.

    psb_cuda_DeviceSync — Synchronize CUDA device

    + id="x20-157000">psb_cuda_DeviceSync — Synchronize CUDA device + id="Q1-20-196"> @@ -123,9 +123,9 @@ call psb_cuda_DeviceSync() CUDA-side code, have completed.

    psb_cuda_getDeviceCount

    + id="x20-158000">psb_cuda_getDeviceCount + id="Q1-20-198">

    @@ -136,9 +136,9 @@ ngpus =  psb_cuda_getDeviceCount()

    Get number of devices available on current computing node.

    psb_cuda_getDevice

    + id="x20-159000">psb_cuda_getDevice + id="Q1-20-200">

    @@ -149,9 +149,9 @@ ngpus =  psb_cuda_getDevice()

    Get device in use by current process.

    psb_cuda_setDevice

    + id="x20-160000">psb_cuda_setDevice + id="Q1-20-202"> @@ -165,9 +165,9 @@ info = psb_cuda_setDevice(dev)

    Set device to be used by current process.

    psb_cuda_DeviceHasUVA

    + id="x20-161000">psb_cuda_DeviceHasUVA + id="Q1-20-204">

    @@ -178,9 +178,9 @@ hasUva = psb_cuda_DeviceHasUVA()

    Returns true if device currently in use supports UVA (Unified Virtual Addressing).

    psb_cuda_WarpSize

    + id="x20-162000">psb_cuda_WarpSize + id="Q1-20-206">

    @@ -191,9 +191,9 @@ nw = psb_cuda_WarpSize()

    Returns the warp size.

    psb_cuda_MultiProcessors

    + id="x20-163000">psb_cuda_MultiProcessors + id="Q1-20-208"> @@ -207,9 +207,9 @@ nmp = psb_cuda_MultiProcessors()

    Returns the number of multiprocessors in the CUDA device.

    psb_cuda_MaxThreadsPerMP

    + id="x20-164000">psb_cuda_MaxThreadsPerMP + id="Q1-20-210">

    @@ -220,9 +220,9 @@ nt = psb_cuda_MaxThreadsPerMP()

    Returns the maximum number of threads per multiprocessor.

    psb_cuda_MaxRegistersPerBlock

    + id="x20-165000">psb_cuda_MaxRegistersPerBlock + id="Q1-20-212">

    @@ -233,9 +233,9 @@ nr = psb_cuda_MaxRegistersPerBlock()

    Returns the maximum number of register per thread block.

    psb_cuda_MemoryClockRate

    + id="x20-166000">psb_cuda_MemoryClockRate + id="Q1-20-214"> @@ -249,9 +249,9 @@ cl = psb_cuda_MemoryClockRate()

    Returns the memory clock rate in KHz, as an integer.

    psb_cuda_MemoryBusWidth

    + id="x20-167000">psb_cuda_MemoryBusWidth + id="Q1-20-216">

    @@ -262,9 +262,9 @@ nb = psb_cuda_MemoryBusWidth()

    Returns the memory bus width in bits.

    psb_cuda_MemoryPeakBandwidth

    + id="x20-168000">psb_cuda_MemoryPeakBandwidth + id="Q1-20-218">

    diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf index 6d104b9d..fe0bb60b 100644 --- a/docs/psblas-3.9.pdf +++ b/docs/psblas-3.9.pdf @@ -447,7 +447,7 @@ endobj /Type /ObjStm /N 100 /First 928 -/Length 16303 +/Length 16554 >> stream 403 0 407 48 408 376 411 424 412 766 415 814 416 1030 419 1078 420 1241 423 1283 @@ -458,8 +458,8 @@ stream 504 7435 507 7482 508 7853 511 7900 512 8366 515 8408 516 8489 519 8536 520 8990 523 9037 524 9483 527 9530 528 9986 531 10033 532 10489 535 10536 536 10992 539 11039 540 11505 543 11548 544 11707 547 11755 548 11991 551 12039 552 12260 555 12308 556 12584 559 12632 560 12977 563 13025 -564 13271 567 13319 568 13525 571 13568 572 13697 575 13745 576 14035 579 14078 580 14169 583 14217 -584 14374 587 14422 588 14614 591 14662 592 14816 595 14864 596 15023 599 15066 600 15238 603 15281 +564 13271 567 13319 568 13525 571 13568 572 13697 575 13745 576 14035 579 14083 580 14423 583 14466 +584 14557 587 14605 588 14762 591 14810 592 15002 595 15050 596 15204 599 15252 600 15411 603 15454 % 403 0 obj << /S /GoTo /D (subsection.6.24) >> % 407 0 obj @@ -633,37 +633,37 @@ stream % 575 0 obj (\376\377\0001\0001\000.\0001\000\040\000p\000s\000b\000\137\000k\000r\000y\000l\000o\000v\000\040\000\040\040\024\000\040\000K\000r\000y\000l\000o\000v\000\040\000M\000e\000t\000h\000o\000d\000s\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) % 576 0 obj -<< /S /GoTo /D (section.12) >> +<< /S /GoTo /D (subsection.11.2) >> % 579 0 obj -(\376\377\0001\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0001\000.\0002\000\040\000p\000s\000b\000\137\000r\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000\040\040\024\000\040\000R\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000I\000t\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) % 580 0 obj -<< /S /GoTo /D (subsection.12.1) >> +<< /S /GoTo /D (section.12) >> % 583 0 obj -(\376\377\0001\0002\000.\0001\000\040\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 584 0 obj -<< /S /GoTo /D (subsection.12.2) >> +<< /S /GoTo /D (subsection.12.1) >> % 587 0 obj -(\376\377\0001\0002\000.\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000'\000\040\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000s) +(\376\377\0001\0002\000.\0001\000\040\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 588 0 obj -<< /S /GoTo /D (subsection.12.3) >> +<< /S /GoTo /D (subsection.12.2) >> % 591 0 obj -(\376\377\0001\0002\000.\0003\000\040\000C\000P\000U\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000.\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000'\000\040\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000s) % 592 0 obj -<< /S /GoTo /D (subsection.12.4) >> +<< /S /GoTo /D (subsection.12.3) >> % 595 0 obj -(\376\377\0001\0002\000.\0004\000\040\000C\000U\000D\000A\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000.\0003\000\040\000C\000P\000U\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 596 0 obj -<< /S /GoTo /D (section.13) >> +<< /S /GoTo /D (subsection.12.4) >> % 599 0 obj -(\376\377\0001\0003\000\040\000C\000U\000D\000A\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000R\000o\000u\000t\000i\000n\000e\000s) +(\376\377\0001\0002\000.\0004\000\040\000C\000U\000D\000A\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 600 0 obj -<< /S /GoTo /D (section*.6) >> +<< /S /GoTo /D (section.13) >> % 603 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000i\000n\000i\000t) +(\376\377\0001\0003\000\040\000C\000U\000D\000A\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000R\000o\000u\000t\000i\000n\000e\000s) endstream endobj -662 0 obj +666 0 obj << /Length 729 >> @@ -708,7 +708,7 @@ ET endstream endobj -659 0 obj +663 0 obj << /Type /XObject /Subtype /Image @@ -716,14 +716,14 @@ endobj /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB -/SMask 669 0 R +/SMask 673 0 R /Length 921600 >> stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýûûûûûûûûûûûûúúúúúúøøø÷÷÷÷÷÷÷÷÷öööõõõõõõððððððððððððððððððíííùùùþþþÿÿÿÿÿÿþþþùùùæææäääááááááááááááááááááÝÝÝÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛÛÛÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÔÔÔÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌËËËÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÄÄĽ½½½½½½½½½½½½½½½½½ººº¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÿÿÿÿÿÿþþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿÿÿÿþþþøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüüÿÿÿÿÿÿþþþççç³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôþþþÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿûûû¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿþþþôôô´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøÿÿÿÿÿÿÿÿÿÿÿÿöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÿÿÿÿÿÿþþþÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿÿÿÿäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþúúú···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüüÿÿÿÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ôôôþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿÿÿÿÕÕÕ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿþþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿþþþøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÿÿÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿþþþççç³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿþþþûûû¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüüÿÿÿÿÿÿþþþôôô´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ôôôþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿþþþÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···üüüûûýüüþýýþýýþüüþüüþüüþüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûýòòøòòøòòøòòøòñøòñøéèóäãñäãñäãñãâðâáïàßîÓÑçÓÑçÓÑçÓÑçÑÏæÑÏæÉÇâ¿Þ¿Þ¿Þûûýÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄýýþÑÎ棟ͣŸÍ£ŸÍ£ŸÍ£ŸÍ™”ȔŔŔŔŔŒŽÄ…€½…€½…€½…€½…€½…€½~x¹vpµvpµvpµvpµvpµvpµhb­f`¬f`¬f`¬f`¬f`¬b[ªWP¤WP¤WP¤WP¤WP¤WP¤LDžH@œH@œH@œH@œH@œF>›90”90”90”90”90”90”0') ‹) ‹) ‹) ‹) ‹) ‹„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•Æÿÿÿÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³õõõùùü7.“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰éèóýýþÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ’ŽÄƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ùùúîíö'ŠƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáüüýÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÞÞÞÿÿÿvpµƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB9˜üüýÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ûûüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿZS¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿üüþ½ºÛƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³òòòýýþA8˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉþþþŸ›ËƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùóòø,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒª¦ÑýýþÿÿÿÿÿÿÿÿÿÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿ|»ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žôôùþþÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµûûüãâ𠆃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€{ºÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…Ø×êüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üûýÌÊッƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVO¤ÿÿÿÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ïïïþþÿJBƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ²×ýýþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆþýþ«§Ñƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ4+‘÷÷ûþþþÿÿÿþþþððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³öö÷ùøû5,’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹†ÀÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ †àßîûûýÿÿÿÿÿÿþþþùùù¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³úúûêéô$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒaZ©ÿÿÿÿÿÿÿÿÿþþþÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿpj²ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¾¼ÜýýþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûýÖÔ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ:2•ûúýÿÿÿÿÿÿþþþììì³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëÿÿÿWP¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÆÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀýüþ·³Øƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰éèóýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ôôôüüý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌþþÿš•ÈƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáüüýÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùòñø+"ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB9˜üüýÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµûûüÞÝí…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççÿÿÿ_X¨ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½üüýÅÃàƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ñññþþþG?›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆþþþ¥¡Îƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š$Š,#+"$Š†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒª¦ÑýýþÿÿÿÿÿÿÿÿÿÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³÷÷÷ööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$ŠJC¤fa·~Ê—•Ù¨§äµ´í¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é«ªæ›ÜŠ‡ÐxtÃgb¸UO«B;Ÿ) ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žôôùþþÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÕÕÕÿÿÿˆƒ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ2*”gb¸š˜Ú··î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æÓvrÂYT¯=5›†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€{ºÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµúúûèçò#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒIB£‘ŽÔ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³²ë’Õlh¼H@¡#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…Ø×êüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ãããÿÿÿkd¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ;3™”’׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¶¶îlg»ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVO¤ÿÿÿÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüýÐÎ僃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„id¹¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtõ²×ýýþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííÿÿÿPH ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆŒÒ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ4+‘÷÷ûþþþÿÿÿþþþððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š—•Ù¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtˆÀÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³õõõûûý91”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ŒÒ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtà †àßîûûýÿÿÿÿÿÿþþþùùù¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎþþÿ”Ńƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒql¾¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃaZ©ÿÿÿÿÿÿÿÿÿþþþÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ùùúïîö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ<5›¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtþ¼ÜýýþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿwq¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ“‘Ö¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ:2•ûúýÿÿÿÿÿÿþþþîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ûúüÜÚì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC<Ÿ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÕÆÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿZS¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒʸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï£¢áŽ‹ÒyuÄni¼gb¸d_¶d_¶hc¸rm¿|É‘ŽÔª©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ%‰éèóýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿ýüþ¾»Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï•“×UO«*!Žƒƒƒƒƒƒƒƒƒƒƒƒ) G?¡d_¶~Ê©¨å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³òòòýýþB9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒIB£¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï©¨åF?¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„;3šid¹—•Ø··î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃÇÅáüüýÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉþþþ œËƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmi½¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç/&‘ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) \V°›™Û¸¸ï¸¸ï¸¸ïxtÃB9˜üüýÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùõõú/&ŽƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠˆÐ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïTN«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ;4š{wÅ°°êxtàœËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿƒ~¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ žÞ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­è†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰91˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµûûüäã𠆃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï”’׃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»ûûýÍË䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ‡¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï”’׃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ïïïþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì$Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒª¦ÑýýþÿÿÿÿÿÿÿÿÿÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆýýþ¬¨Òƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ´í¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïrnÀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žôôùþþÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³öööùøû5,’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¦¥ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïd_¶„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€{ºÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ’Õ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï—•ØMF¦…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…Ø×êüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ùùúíìõ&‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsoÀ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï©¨åzvÄLE¥&‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVO¤ÿÿÿÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒNH§¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïœÝ{wÅ[U°<5›†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ²×ýýþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûü×Õ鄃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´íš˜Û{wÅ[U¯:2™„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ4+‘÷÷ûþþþÿÿÿþþþððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëÿÿÿWP¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€}ɸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ëŽ‹Òid¹D= †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹†ÀÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀüüý¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ;4š··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°ê}yÇE>¡„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ †àßîûûýÿÿÿÿÿÿþþþùùù¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³óóóüüý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„€Ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï©¨årnÀ1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒaZ©ÿÿÿÿÿÿÿÿÿþþþÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌþþÿš–Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ*!Ž¬«æ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··îƒÊ1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¾¼ÜýýþÿÿÿÿÿÿþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùòñø+"ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@¡µµí¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ìoj½†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ:2•ûúýÿÿÿÿÿÿþþþîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿ~x¹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒUO¬¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï›Ü1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÆÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµúúüâàƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒLE¥°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«ç<5›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰éèóýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççÿÿÿ`Y©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3*“š˜Ú¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç4+”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½üüýÈÅჃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…`Z²­¬ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáüüýÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ñññþþþH@œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰hc¸¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB9˜üüýÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆýýþ¦¢Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„HA¢…‚̵´í¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³÷÷÷ööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&ŒQJ¨{wÅ¥¤â¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿ‰„¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0(“YS®}yÆŸžß··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï«ªæ„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµúúûéèó#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$ŠH@¡jeºŠÑ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï?7œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿmf°ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…;3šb]´‘ŽÔ¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_µƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒPH¡ÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûûûûûûûûûûúúúúúúøøø÷÷÷÷÷÷÷÷÷õõõõõõõõõððððððððððððððððððíííëëëëëëëëëëëëëëëîîîÿÿÿÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµ½½½½½½½½½½½½½½½½½½ÇÇÇüüýÑÏ惃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ(`Z²¢¡à¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï„€Ëƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¦¢ÏÿÿÿçççááááááÝÝÝÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛÛÛÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÔÔÔÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌËËËÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÄÄĽ½½½½½½½½½½½½½½½½½»»»¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþØØØÎÎÎÒÒÒÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝßßßããããããããããããããããããèèèééééééééééééééééééïïïïïïïïïïïïïïïïïïñññóóóóóóóóóóóóóóóóóóööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úúúúúúúúúúúúúúúúúúûûûüüüûûûúùûúùûúùûúúûüûüüûüûûýúúüúúüúúüûûüýüýýüýüûýüûýüûýüûýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaZ©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„`Z²²²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïš˜Úƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ-#üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿýüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýþóòøóòøóòøóòøòñøòñøêéóåäñåäñåäñãâðâáïâáïÕÓèÕÓèÕÓèÕÓèÒÐæÑÏæÌÊã¿Þ¿Þ¿Þ¿Þ¿Þ¿޶³Ø³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö°­Ô£ŸÍ£ŸÍ£ŸÍ£ŸÍ£ŸÍ£ŸÍš–ɔŔŔŔŔŔŅ€½…€½…€½…€½…€½…€½y¹vpµŠ„¿ýýþ²¯ÕƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒA:ž³²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïª©åƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿÿÿÿ‡¾WP¤WP¤WP¤WP¤WP¤WP¤OG H@œH@œH@œH@œH@œH@œ91”90”90”90”90”90”3*‘) ‹) ‹) ‹) ‹) ‹) ‹…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÄàÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒid¹¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³³ìƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿüüýÍË䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'Œ¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàßïþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿþþÿIAœƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–’Æÿÿÿ~x¹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒœ›Ý¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´íƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿýýþª¦Ðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëõõôù0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠÑ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯®éƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷ùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅþþþÿÿÿþþþùøü4+‘ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ§£ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMF¦MF¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–“׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¥¤âƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ˜”ÇÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï›™ÛLE¥„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…­¬ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰úùüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿýýþéèó$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¡ŸßZT¯ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒKD¤¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï|ȃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¹ÚÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ£ Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«çrm¿5,•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰£¡à¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïb]´ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿÿÿÿüüþÕÓ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒñð÷ðð÷+"Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï–”Ø^X±+"ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ)“‘Ö¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï?7œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒØÖéþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿVO¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿœ˜Êƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï–”Øid¹A9ž†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†^X±©©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\U¦ÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿýýþ¶³ØƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙØëýýþD<šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³²ë—”ØxtÃ\V°G?¡5,•#‰ƒƒƒƒƒ(>6›XR®ƒʯ®é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï|Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëôüüüººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿûûý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ûûýÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ë®­è±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïG?¡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|»ÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿþþþ˜“ǃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±­Õÿÿÿhb­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïœšÜƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …÷÷úöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿüüþññ÷*!Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùèçò%‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïLE¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ­ªÓÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿÿÿÿÿÿÿ{u¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒwqµÿÿÿ’ŽÄƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‹ˆÐƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(üüýîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿüüýßÝî…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒâáïûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¨§ä*!ŽƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÌÊäÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿÿÿÿ]V§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC:šüüýÁ¾Ýƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ë;3šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒKCžþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿüüýÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¼ºÛÿÿÿ^W¨ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êC<Ÿƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒäãðýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿþþÿG?›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰÷÷ûâáï!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\V°¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞ6.–ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsm³ÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþÿ¤ Îƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„¼ÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0(“d_¶—•Ø··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ítpÁ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒóòøùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿþþþööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçóøøû6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ-$`[³“‘Ö¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµµí„€Ë2*”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ›ËÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰G?¡lg»‘Ô²²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞjeº+"ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ(‹ûûüñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿýýþéèó#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…<4š`Z²wsÊѣ¢á¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î¢ ß|È\V°2*”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÁ¾ÝÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿÿÿÿjc®ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†2*”HA¢WQ­b]µmi½xtÃxtÃ}yÆ~ÊxtÃxtÃql¾fa·YS®KD¤6-•†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜þþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿüüýÏÍ僃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÛÚìþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿþþþPH ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëõõôù0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒb[ªÿÿÿÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅþþþÿÿÿÿÿÿýýþ°­Ôƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒîíõûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿûúý91”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŽ‰ÂÿÿÿÕÕÕ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿÿÿÿ’ŽÄƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡ùùüõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿþþÿîíö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¤ Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ´±ÖÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿÿÿÿÿÿÿvpµƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒñð÷îíö(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ5-’ýýýììì³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿÿÿÿüüþÛÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿœ˜ÊƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿÿÿÿZS¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÚØëýýþD<šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒSL¢þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿýýþ¾»Ûƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ6.–:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™80˜0'’)„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ûûýÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿýýþA8˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¶¶î©©å•“×zvÄ`[³<4š…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±­Õÿÿÿhb­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒzt·ÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿþþÿŸ›Ëƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êˆ…ÏSLª#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùèçò%‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õõùøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿþþÿôôù/&Žƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì~{È3*“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒwqµÿÿÿ‘ăƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¥¡ÎÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿÿÿÿ‚}»ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î~{È'Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒâáïûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ûûüñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿýýþãâ𠆃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æJC£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC:šüüýÁ¾ÝƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïni¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ½ºÛÿÿÿ]V§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿüüþÎÌ䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï|É…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰÷÷ûâáï!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàÞîþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþJBƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï{wŃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„¼ÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿýýþ«§Ñƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒéèóøøû6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒðï÷úúú¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿùøü5,’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì5-–ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–‘ÆÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿÿÿÿŽ‰Âƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï•“׃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰úùüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿüüþêéô$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïG@¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒº·ÚÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿqk²ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï}yÇNH§NH§NH§NH§NH§NH§NH§NH§NH§UO«_Y²lh¼ŠÑ¯¯é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ80“ýýþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿüüýÖÔ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒ†UO«œÝ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï0'’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒììõõôù0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÖÔéþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿWP¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†rm¿¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ[T¦ÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿýýþ¸µÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmi¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŒ‰ÑƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒëêôüüüººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ“‘Ö¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°ê„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|»ÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿÿÿÿþþþš•Èƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒA9¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï/&‘ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¥¡Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ø÷û÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿþþÿòòø+"Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïC<Ÿƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒñð÷îíö(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¬©ÒÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïSLªƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿœ˜Êƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&üüýïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿüüýßÝî…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒlh¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïYT¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÚØëýýþC;™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒËÉãÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿÿÿÿ_X¨ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ`[³¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ûûýÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒIAþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿüüýÆÄჃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒgb¸¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï]W±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±­Õÿÿÿhb­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒãâðýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿþþÿH@œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒtpÁ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïVP¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …õõúèçò%‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒrl³ÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿÿÿÿýýþ¥¡Îƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–”ظ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïLE¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒxr¶ÿÿÿ‘ăƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒóòøùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿþþþööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&Œ¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï7/—ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒâáïûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ˜ÊÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿÿÿÿˆƒ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒni¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC:šüüýÁ¾Ýƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'Šúúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿýýþéèó#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ6.–³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ½ºÛÿÿÿ]V§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÀ½ÝÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿÿÿÿle¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’§¦ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ$‰ø÷ûâáï!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜þþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿüüýÐÎ惃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…XR®¯¯é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïHA¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„½ÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÚÙëþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿÿÿÿPH ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒ"ˆC< jeº¦¥ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒéèóøøû6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ_X¨ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿýýþ³¯Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«ç¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à©¨å³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïmi¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿúúü:2•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ë'ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÈÅáÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŒ‡ÁÿÿÿÕÕÕ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿþþþ”Ńƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïc^µƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …ùùüõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿþþÿïîö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï—•Ø…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ²®ÕÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿÿÿÿwq¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æ/'’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒììõõôù0&ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ5-’ýýýîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿüüþÜÚì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é<5›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ¦¢ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÎæÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿÿÿÿ[S¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç<5›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒSL¢þþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿýýþ¾¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï—•Ø/'’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒæåñýýý»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿýýþB9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ëgb¸…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¤ Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3)7/“7/“7/“7/“7/“>6–SL¢SL¢–‘ÆÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççþþþÿÿÿÿÿÿþþÿ¡Ìƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì{wÅ,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒòñ÷ñð÷†¾„¼„¼„¼„¼„¼ˆÁ™•È™•È™•È™•È™•È™•Èª¦Ñ­©Ó­©Ó­©Ó­©Ó­©Ó±­Õ¾»Ü¾»Ü¾»Ü¾»Ü¾»Ü¾»ÜÈÆáÍËäÍËäÍËäÍËäÍËäÎÌåÚÙëÚÙëÚÙëÚÙëÚÙëÚÙëàÞîæäñæäñæäñæäñæäñæäñíìõïîöïîöïîöïîöïîöñð÷öõúöõúõôúôôùôôùôôù÷÷ûùùüùøûøøüøøüøøü÷÷ûüüýüüýûûýûûýûûýûûýýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÿÿÿþþÿôôù.%Žƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŸžßhc¸)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–’ÆþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöõúóòøóòøóòøòñøòñøïïöåäñåäñåäñåäñâáïâáïÛÙëÕÓèÕÓèÕÓèÓÑçÑÏæÑÏæ¿Þ¿Þ¿Þ¿Þ¿Þ¿޽ºÛ³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö§£Ï£ŸÍ£ŸÍ£ŸÍ£ŸÍ£ŸÍ¡Ì”ŔŔŔŔŔŋ†À…€½…€½…€½…€½…€½…€½vpµvpµvpµvpµ½ºÛÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþÿÿÿÿÿÿÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïª©å‡„Î`[³5-–ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëôôóù\U§WP¤WP¤WP¤TM£H@œH@œH@œH@œH@œH@œ@7—90”90”90”90”90”90”*!Œ) ‹) ‹) ‹) ‹) ‹$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒòò÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿ@7—ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï›™Û„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€ËƒÊxtÃrnÀc^µUO«A9&Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…½ÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿýýþ¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …ööúäãð!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ®«Ôÿÿÿf`¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÍË䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââþþþÿÿÿÿÿÿÿÿÿ…€½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÍËäþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁÿÿÿÿÿÿþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒQI¡ýýþ­©ÒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ìììÿÿÿÿÿÿÿÿÿýýþ®«Óƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒåãñùøü6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒáàïþþþ¿¿¿³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsm³ÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB:˜þþþêêê³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´õõõþþþÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷íìõ'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸ÚÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œÌÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡øøûõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúÿÿÿüüþòòø-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ)‹ùùü×Õ鄃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ~¼ÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿþþÿ£ŸÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÂ¿ÞÿÿÿXQ¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜üüý¹¶ÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿüüýÒÐ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÜÛìüüý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒf`­þþÿ›—Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ûúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññþþþÿÿÿÿÿÿüüþíìõ(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒííöòñø+"Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÅÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþš•Èƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠÂÿÿÿy¹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùÿÿÿÿÿÿÿÿÿüüýB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡÷öúáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒWQ¤þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿÿÿÿÿÿÿüüþÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ²×ÿÿÿaZ©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÍæÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüÿÿÿÿÿÿÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ7/“ûûýÈÅჃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääÿÿÿÿÿÿÿÿÿýýþèçò$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÒÐçþþþH@œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ£žÍÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÃÃÃþþþÿÿÿÿÿÿÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒTL£ýýþ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿûúý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòööú1(ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÍÍÍÿÿÿÿÿÿÿÿÿýýþ¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ}w¹ÿÿÿŠ…ÀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµöööÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùéèó$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ§£Ïÿÿÿmf°ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûûÿÿÿÿÿÿÿÿÿ…€½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ+!ŒúùüÕÓ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿQI¡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿýýþ®«ÓƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œýýþ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒáàïþþþ¿¿¿³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàßîûûý:2•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB:˜þþþêêê³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉÿÿÿÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿ–‘ƃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸ÚÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒðð÷ïîö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡øøûõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿÿÿÿüüþòòø-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿys·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ~¼ÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿþþÿ£ŸÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰øøûÜÛì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿÿÿÿþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸Úÿÿÿ\T¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿüüýÒÐ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”üûýÅÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³æææþþþÿÿÿÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ×ÕéýýþB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ûúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿüüþíìõ(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\U¦þþþ¢žÌƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÅÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþÿÿÿÿÿÿþþþš•Èƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒëêôõõú0&ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿÿÿÿüüýB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|»ÿÿÿ…€½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒWQ¤þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿüüþÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …ööúåãñ!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÍæÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿÿÿÿÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ­ªÓÿÿÿga­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûþþþÿÿÿýýþèçò$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(ûûýÎÌ䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ£žÍÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÌÊäþþÿOG ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁþþþÿÿÿÿÿÿûúý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒKCžýýþ¯«Óƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëþþþÿÿÿÿÿÿýýþ¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒäãðùùü6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsm³ÿÿÿ‘ŒÃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´õõõþþþÿÿÿÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒòñ÷ííõ'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒž™Êÿÿÿtn´ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ(‹ùùü×Õ鄃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÞÞÞþþþÿÿÿÿÿÿýýþ®«ÓƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÁ¾ÝÿÿÿXQ¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒáàïþþþ¿¿¿³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜üüýº·ÚƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB:˜þþþêêê³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèÿÿÿÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÛÙìüüþA8˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸ÚÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ_X¨þþþœ˜Êƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡øøûõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿüüþòòø-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõòòø,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ0'’91˜A:žA9:2™3*“(ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ~¼ÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿÿÿÿÿÿÿþþÿ£ŸÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŽ‰ÂÿÿÿzºƒƒƒƒƒtpÁxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃni¼lg»d_¶]W±G?¡0(“…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&ŒxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃ[U°ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ>6›xtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃMF¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š\V°ƒÊ£¢á¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì£¡àŽ‹ÒsoÀXR®;4š†ƒƒƒƒƒƒƒƒƒƒèçòýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡÷÷ûâáï †ƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ìŠÑ`[³,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„̸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ+"~{ȳ²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³³ì‘Õlg» ‡ƒƒƒƒƒƒƒMEŸþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿÿÿÿÿÿÿüüýÒÐ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ³°Öÿÿÿb[ªƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ìvrÂ) ƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‹´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï;3™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒWQ­¯®é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!ŽƒƒƒƒƒƒƒƒÆÄàÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ5-’ûûýÇÅჃƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¨§ä80—ƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\V°¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïtpÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ`Z²¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!Žƒƒƒƒƒƒƒƒ* ‹ûúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääÿÿÿÿÿÿÿÿÿüüþíìõ'ŠƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþIAœƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç*!Žƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—”ظ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æ†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒTMª··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!Žƒƒƒƒƒƒƒƒƒ•ÅÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿþþþ™”ȃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒSL¢ýýþ©¥Ðƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï†ƒÍƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3*“¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïLE¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰ª©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!Žƒƒƒƒƒƒƒƒƒƒíìõûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿüüýB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒçæòùøû4+‘ƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï0(“ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmi¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï†ƒÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjeº¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î«ªæ¢¡à®­è··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!ŽƒƒƒƒƒƒƒƒƒƒWQ¤þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿÿÿÿÿÿÿüüþÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿ‹†Àƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï§¦ã0'’0'’0'’0'’0'’2*”C< `[³¥¤â¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïb]µƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„§¦ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì&ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒžÞ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïƒÊG@¢'Œƒƒƒƒƒ+"IB£fa·Œ‰Ñ³²ë¸¸ï¸¸ï¸¸ï¸¸ï*!ŽƒƒƒƒƒƒƒƒƒƒƒÐÍæÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõÿÿÿÿÿÿÿÿÿÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùéèó$ˆƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒ#‰š˜Û¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï„̃ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï^X±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&‘¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïOI¨ƒƒƒƒƒƒƒƒƒƒƒƒ!‡KD¤~Ê´³ì¸¸ï*!Žƒƒƒƒƒƒƒƒƒƒƒ1(üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿýýþèçò$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¥¡Îÿÿÿnh±ƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¢ ß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–ÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒG@¢¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&Œa\´$Šƒƒƒƒƒƒƒƒƒƒƒƒ£žÍÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûûÿÿÿÿÿÿÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹úùüÕÓ脃ƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ†··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŸžßƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA:ž³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï5,•ƒƒƒƒƒƒƒƒƒƒƒƒƒUO¬¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïfa·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿûúý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿRJ¡ƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ„¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–Ùƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVP¬¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¡Ÿßƒ„€Ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk½ƒƒƒƒƒƒƒƒƒƒƒƒƒ`[³¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïmi½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿýýþ¹¶ÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œýýþµ²×ƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ4+”¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï~ʃƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‘ŽÔ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïkfºƒNH§¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¨§ä„ƒƒƒƒƒƒƒƒƒƒƒƒXR®¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¥¤â"ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒßÞîûûý;3•ƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ~zǸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïWQ­ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ.%‘··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï4+”ƒ†°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïG?¡ƒƒƒƒƒƒƒƒƒƒƒƒKD¤¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïœšÜJC¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒib­þþÿ—’ǃƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒ4+”~{ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï«ªæ"ˆƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒgb¸¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïœšÜƒƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï~ʃƒƒƒƒƒƒƒƒƒƒƒ) ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï§¦ã}yÇTMª1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒïî÷ñð÷*!Œƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì˜–Ù˜–Ù˜–Ù˜–Ù˜–Ù žÞ´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïRK©ƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¢ ß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_¶ƒƒƒIB£¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³³ì#‰ƒƒƒƒƒƒƒƒƒƒƒƒœ›Ý¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯®éÓpk½LE¥&Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–‘Æÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïa\´ƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ?7œ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï0'’ƒƒƒ†­¬ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïXR®ƒƒƒƒƒƒƒƒƒƒƒƒWQ­¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïœ›Ýkfº2*”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿýýþ®«Óƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰øøûÝÜì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–ÙA9ƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒxtø¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï–“׃ƒƒƒƒ{wŸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒƒƒƒ…š˜Ú¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‘ÕA9ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàßïþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹¹¹½½½½½½½½½½½½½½½ÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¹·Ùÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´íxtÃ6.–ƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†®­è¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`Z²ƒƒƒƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï/'’ƒƒƒƒƒƒƒƒƒƒƒƒ.%‘«ªæ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï„€Ë#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC;™þþþëëëÇÇÇÇÇÇÇÇÇÉÉÉÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÓÓÓÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÙÙÙÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜááááááááááááááááááãããææææææææææææææææææêêêëëëëëëëëëëëëëëëìììððððððñññðððððððððôôôõõõööö÷÷÷÷÷÷÷÷÷öööúúúúúúûûûûûûûûûûûûýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”üüý¿Þƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··îws†ƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒPJ¨¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î*!Žƒƒƒƒƒ„©¨å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïid¹ƒƒƒƒƒƒƒƒƒƒƒƒƒ/&‘›Ü¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¡Ÿß) ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÌÊãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿþþþýýýýýýýýýýýýÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&7/“7/“7/“7/“7/“;2•SL¢SL¢SL¢SL¢SL¢SL¢`Y©mf°mf°mf°mf°mf°mf°‚}¼„¼„¼„¼„¼„¼‹…¿™•È™•È™•È™•È™•È™•È§£Ï­©Ó­©Ó­©Ó­©Ó­©Ó®ªÓ¾»ÜðïöýýþC;™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‘Ô†ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠˆÐ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‘ŽÔƒƒƒƒƒƒƒvr¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï£¢áƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†f`¶°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï•“׆ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ+"ŒòòøþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüþøøûÍËäÙØêÚÙëÚÙëÚÙëÚÙëÚÙëÞÝíæäñæäñæäñæäñæäñæäñììõïîöïîöïîöïîöïîöðï÷öõúöõúöõùööúööúööúøøûúúüúúüûûýûûýûûýûûýýýþýýþýýþýýýýýýýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµµí¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à©¨å¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï}yǃƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) µµí¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïYT¯ƒƒƒƒƒƒƒ?7œ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&‹`[³œÝ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïZT¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ™Êþþþÿÿÿÿÿÿÿÿÿûûûûûûûûûûûûúúúúúú÷÷÷÷÷÷÷÷÷÷÷÷õõõõõõóóóñññññññññðððððððððìììëëëëëëëëëëëëëëëêêêææææææææææææææææææâââáááááááááááááááàààÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÙÙÙÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÒÒÒÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÐÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÉÉÉÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÀÀÀ½½½½½½½½½½½½½½½½½½¹¹¹¸¸¸¸¸¸ÎÎÎÿÿÿµ±×ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒ ‡F?¡Œ‰Ð¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒb]´¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´í&Œƒƒƒƒƒƒƒ„¦¥ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï{wŃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0(“YT¯„€Ë¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ=5–ûûýÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒoj½¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‡„΃ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ›Ü¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŠˆÐƒƒƒƒƒƒƒƒƒql¾¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ,#OI¨tpÁ¡Ÿß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï5,•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¼¹Úýýþÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒ…£¡à¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´í ‡ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ80˜¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŠ‡Ðd_¶d_¶d_¶d_¶d_¶d_¶d_¶d_¶d_¶|xƸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïSL©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’c^µ©¨å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïYT¯ƒƒƒƒƒƒƒƒƒƒƒƒƒUN£ÿÿÿÿÿÿÿÿÿÿÿÿÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒrm¿¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï>6›ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsoÀ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŒ‰Ñƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š•“׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïjeºƒƒƒƒƒƒƒƒƒƒƒƒ„ÔÒèüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒ_Y²¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïPI¨ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ª©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¶¶î*!Žƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ4+”¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïvrƒƒƒƒƒƒƒƒƒƒƒƒuo´ÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ¨¤Ðƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïZT¯ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒJC¤¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïd_¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ«ªæ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïql¾ƒƒƒƒƒƒƒƒƒƒƒ%‰ëêôüüþÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒ€}ɸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïOI¨ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„̸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞƒƒƒƒƒƒƒ) b]´"ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¬«ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_µƒƒƒƒƒƒƒƒƒƒƒ‘ÄÿÿÿÿÿÿÿÿÿÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒ) °°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9žƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‹´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï;3šƒƒƒƒƒƒ0'’¸¸ï­¬çjeº&Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ:2™¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïWQ­ƒƒƒƒƒƒƒƒƒƒ3*‘øøûÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ)–“׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î) ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ[U°¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïvrƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï´³ì†ƒÍMF¦†ƒƒƒƒƒƒƒƒƒƒƒ)›Ü¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï4+”ƒƒƒƒƒƒƒƒƒƒ¯¬Óýýþÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúòñ÷ƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï§¦ã0'’0'’0'’0'’0'’1)“;3™NH§vr¯®é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï”’׃ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ë¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à›Üƒƒƒƒ—”ظ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­èxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtâ ß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«ç†ƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­èˆ…Îf`¶C<Ÿ'Œƒƒƒƒ…5-–hc¸«ªæ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¦¥ãƒƒƒƒƒƒƒƒƒƒKDžþþþÿÿÿÿÿÿþþþááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿš–Ƀƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïZT¯ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒƒ3*“¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃZT¯¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïMF¦ƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï¬«æ¢¡à§¦ãµ´ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïsoÀƒƒƒƒƒƒƒƒƒƒËÉãüüýÿÿÿþþþüüüººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññüüý-$ƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–Ù„ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒƒmi¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&Œµµí¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‡„΃ƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ë-$ƒƒƒƒƒƒƒƒƒib®ÿÿÿÿÿÿÿÿÿÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÊÈ⃃ƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïª©å5,•ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒ„§¦ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¦¥ã„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹‰Ñ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´í'Œƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï_Y²ƒƒƒƒƒƒƒƒƒ†âáïýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþÿYR¥ƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£á2*”ƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒUO«¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï^X±ƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïwsÆ€½ÿÿÿÿÿÿÿÿÿÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûêê󃃃ƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êgb¸ ‡ƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï91˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰³²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï™—Úƒƒƒƒ&‹Ó¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°ê^X±ƒƒƒƒƒƒƒƒƒƒ.%Žóóøþþÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿˆÁƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­è†ƒÍSL©#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒ"ˆ±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŸžßƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†ƒÍ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï6-•ƒƒƒƒƒ'ŒYS®Š‡Ð¯¯é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ë}yÆ,#ƒƒƒƒƒƒƒƒƒƒƒ¢žÍþþÿÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôúúü'Šƒƒƒƒƒƒjeºni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼d_¶^X±WQ­C< ) ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‹ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼jeºƒ3*“ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼KD¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ=5›ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼A9ƒƒƒƒƒƒƒƒ„80—^X±}yÆ”’ת©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì™—Ú|xÆTN«"ˆƒƒƒƒƒƒƒƒƒƒƒƒ@7—üüýÿÿÿÿÿÿÿÿÿæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿ¿¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ0'’7/—>6›D= ;4š4+”+"…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÀ½Ýüüýÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþNGŸƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\U§ÿÿÿÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½ýýýäãðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÛÚìüüýÿÿÿÿÿÿúúú···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿzºƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒzt·ÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööùùü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'Šíìõüüþÿÿÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’ÇþþþÿÿÿÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ8/“ûúýÿÿÿÿÿÿÿÿÿééé³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ´±ÖýýþÿÿÿÿÿÿÿÿÿÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæüüþÿÿÿÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒnh±ÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡çæòýýþÿÿÿÿÿÿÿÿÿöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹†ÀÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žõõùþþþÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúòñ÷ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨¤ÐýýþÿÿÿÿÿÿþþþÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿš–ɃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒE=šþþÿÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññüüý-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÄÁßüüýÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒb[ªÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþÿYR¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…àÞîüüþÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûêê󃃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒzºÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ñð÷þþÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôúúü&‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒœ˜ÊþþþÿÿÿÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿ¿¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ=5–ûûýÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþNGŸƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸Úýýþÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½ýýýäãðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒTM£ÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿzºƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÓÑçüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööùùü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒtn´ÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰ëêôüüþÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‘ŒÃÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3*‘øøûÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ­ªÓþþÿÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒJCþþþÿÿÿÿÿÿþþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ§£ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÊÈâüüþÿÿÿþþþüüü»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒga­ÿÿÿÿÿÿÿÿÿÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†âáïýýþÿÿÿÿÿÿþþþøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…€½ÿÿÿÿÿÿÿÿÿÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúòñ÷ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ-$óóøþþÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿš–Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¢žÌþþþÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññüüý-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ?6—üüýÿÿÿÿÿÿþþþççç³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¿½Üýýþÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþÿYR¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\T¦ÿÿÿÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûêê󃃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÙØêüüþÿÿÿÿÿÿúúú···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒys·ÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôúúü&‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&‰íìõüüþÿÿÿÿÿÿþþþôôô´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿ¿¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–‘ÆÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþNGŸƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ8/“ûúýÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½ýýýäãðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ³¯ÕýýþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿzºƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööùùü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÎæüüýÿÿÿÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmf°ÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡çæòýýþÿÿÿÿÿÿÿÿÿöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠ…ÀÿÿÿÿÿÿÿÿÿÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žõõúþþþÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ§£ÏþþÿÿÿÿÿÿÿþþþÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ§£ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒD<šýýþÿÿÿÿÿÿÿÿÿäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³îîîýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÂ¿Þüüýÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒaZ©ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿd]«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰) ‹) ‹) ‹) ‹) ‹+"Œ90”90”90”90”90”90”A8˜H@œH@œH@œH@œH@œH@œUN£WP¤WP¤WP¤WP¤WP¤\T¦f`¬f`¬f`¬f`¬f`¬f`¬qk²vpµvpµvpµvpµvpµwq¶…€½…€½…€½…€½àßîüüýÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹úúúõôù£ŸÍ£ŸÍ£ŸÍ£ŸÍ¨¤Ð³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö½»Û¿Þ¿Þ¿Þ¿Þ¿ÞÃÀÞÑÏæÑÏæÓÑçÓÑçÓÑçÓÑçÛÚìâáïâáïäãñäãñäãñäãññð÷òñøòòøòòøòòøòòøööúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþýýþýýþýýþùùüùùüùùüùùüüüýýýþûûýûûþûûþûûþûûýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÍÍÍÿÿÿÿÿÿÿÿÿþþþôôôµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµ÷÷÷þþþÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³×××ÿÿÿÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´óóóþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝþþþÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççþþþÿÿÿÿÿÿþþþÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ãããþþþÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ìììþþþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÕÕÕÿÿÿÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸ûûûÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßÿÿÿÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññþþþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùÿÿÿÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüÿÿÿÿÿÿþþþÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÃÃÃþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³îîîþþþÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÍÍÍÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµöööÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³×××ÿÿÿÿÿÿÿÿÿýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉÿÿÿÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´óóóþþþÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³æææþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿþþþÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûþþþÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëþþþÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´õõõþþþÿÿÿÿÿÿýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÞÞÞþþþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèÿÿÿÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»ýýýÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääÿÿÿÿÿÿÿÿÿþþþ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸»»»½½½½½½½½½½½½½½½½½½ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÄÄÄÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇËËËÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÍÍÍÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÔÔÔÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÞÞÞááááááááááááááááááäääæææææææææææææææçççëëëëëëëëëëëëëëëëëëîîîððððððþþþÿÿÿÿÿÿþþþüüüúúúúúúûûûûûûûûûûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿþþþýýýýýýýýýþþþÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ endstream endobj -669 0 obj +673 0 obj << /Type /XObject /Subtype /Image @@ -759,7 +759,7 @@ stream ãýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüËXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<Áüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý¨+üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú#’þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ‰íþýýüüüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýññññððéâââáßßÑÏÏÏÍÌÇ»»»»µN™™™™™ˆˆˆˆˆˆxwwwwwqffffffZUUUUUSDDDDDD;333333$""""" endstream endobj -672 0 obj +676 0 obj << /Length 78 >> @@ -774,7 +774,7 @@ ET endstream endobj -718 0 obj +722 0 obj << /Length 15343 >> @@ -1341,7 +1341,7 @@ ET endstream endobj -775 0 obj +779 0 obj << /Length 15896 >> @@ -1938,131 +1938,135 @@ endobj << /Type /ObjStm /N 100 -/First 904 -/Length 14415 ->> -stream -604 0 608 43 609 137 612 180 613 304 616 347 617 491 620 535 621 654 624 698 -625 817 628 861 629 995 632 1039 633 1153 636 1197 637 1346 640 1390 641 1539 644 1583 -645 1752 648 1796 649 1945 652 1989 653 2133 656 2177 657 2346 658 2391 660 2520 663 2626 -664 2682 3 2738 661 2792 671 2921 673 3035 670 3092 717 3159 674 3653 675 3799 676 3945 -677 4097 678 4249 679 4401 680 4556 681 4708 682 4851 683 5003 684 5160 685 5317 686 5474 -687 5629 688 5786 689 5943 690 6100 691 6257 692 6410 721 6568 693 6723 722 6881 694 7038 -695 7196 696 7354 697 7512 698 7670 699 7821 700 7978 701 8134 702 8291 723 8448 703 8604 -724 8761 704 8916 725 9073 705 9229 706 9386 707 9543 708 9700 709 9858 710 10014 711 10172 -712 10330 713 10488 714 10646 719 10801 720 10857 716 10913 774 10993 715 11495 726 11653 727 11811 -728 11969 729 12120 730 12277 731 12434 732 12590 733 12747 734 12904 735 13061 736 13213 737 13365 +/First 901 +/Length 14251 +>> +stream +604 0 608 43 609 137 612 180 613 274 616 317 617 441 620 484 621 628 624 672 +625 791 628 835 629 954 632 998 633 1132 636 1176 637 1290 640 1334 641 1483 644 1527 +645 1676 648 1720 649 1889 652 1933 653 2082 656 2126 657 2270 660 2314 661 2483 662 2528 +664 2657 667 2763 668 2819 3 2875 665 2929 675 3058 677 3172 674 3229 721 3296 678 3790 +679 3936 680 4082 681 4234 682 4386 683 4538 684 4693 685 4845 686 4988 687 5140 688 5297 +689 5454 690 5611 691 5766 692 5923 693 6080 694 6237 695 6394 696 6547 725 6705 697 6860 +726 7018 698 7175 699 7333 700 7491 701 7649 702 7807 703 7958 704 8115 705 8271 706 8428 +727 8585 707 8741 728 8898 708 9053 729 9210 709 9366 710 9523 711 9680 712 9837 713 9995 +714 10151 715 10309 716 10467 717 10625 718 10783 723 10938 724 10994 720 11050 778 11130 719 11632 +730 11790 731 11948 732 12106 733 12257 734 12414 735 12571 736 12727 737 12884 738 13041 739 13198 % 604 0 obj -<< /S /GoTo /D (section*.7) >> +<< /S /GoTo /D (section*.6) >> % 608 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000e\000x\000i\000t) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000i\000n\000i\000t) % 609 0 obj -<< /S /GoTo /D (section*.8) >> +<< /S /GoTo /D (section*.7) >> % 612 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000S\000y\000n\000c) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000e\000x\000i\000t) % 613 0 obj -<< /S /GoTo /D (section*.9) >> +<< /S /GoTo /D (section*.8) >> % 616 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e\000C\000o\000u\000n\000t) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000S\000y\000n\000c) % 617 0 obj -<< /S /GoTo /D (section*.10) >> +<< /S /GoTo /D (section*.9) >> % 620 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e\000C\000o\000u\000n\000t) % 621 0 obj -<< /S /GoTo /D (section*.11) >> +<< /S /GoTo /D (section*.10) >> % 624 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000s\000e\000t\000D\000e\000v\000i\000c\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e) % 625 0 obj -<< /S /GoTo /D (section*.12) >> +<< /S /GoTo /D (section*.11) >> % 628 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000H\000a\000s\000U\000V\000A) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000s\000e\000t\000D\000e\000v\000i\000c\000e) % 629 0 obj -<< /S /GoTo /D (section*.13) >> +<< /S /GoTo /D (section*.12) >> % 632 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000W\000a\000r\000p\000S\000i\000z\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000H\000a\000s\000U\000V\000A) % 633 0 obj -<< /S /GoTo /D (section*.14) >> +<< /S /GoTo /D (section*.13) >> % 636 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000u\000l\000t\000i\000P\000r\000o\000c\000e\000s\000s\000o\000r\000s) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000W\000a\000r\000p\000S\000i\000z\000e) % 637 0 obj -<< /S /GoTo /D (section*.15) >> +<< /S /GoTo /D (section*.14) >> % 640 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000T\000h\000r\000e\000a\000d\000s\000P\000e\000r\000M\000P) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000u\000l\000t\000i\000P\000r\000o\000c\000e\000s\000s\000o\000r\000s) % 641 0 obj -<< /S /GoTo /D (section*.16) >> +<< /S /GoTo /D (section*.15) >> % 644 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000R\000e\000g\000i\000s\000t\000e\000r\000P\000e\000r\000B\000l\000o\000c\000k) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000T\000h\000r\000e\000a\000d\000s\000P\000e\000r\000M\000P) % 645 0 obj -<< /S /GoTo /D (section*.17) >> +<< /S /GoTo /D (section*.16) >> % 648 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000C\000l\000o\000c\000k\000R\000a\000t\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000R\000e\000g\000i\000s\000t\000e\000r\000P\000e\000r\000B\000l\000o\000c\000k) % 649 0 obj -<< /S /GoTo /D (section*.18) >> +<< /S /GoTo /D (section*.17) >> % 652 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000B\000u\000s\000W\000i\000d\000t\000h) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000C\000l\000o\000c\000k\000R\000a\000t\000e) % 653 0 obj -<< /S /GoTo /D (section*.19) >> +<< /S /GoTo /D (section*.18) >> % 656 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000P\000e\000a\000k\000B\000a\000n\000d\000w\000i\000d\000t\000h) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000B\000u\000s\000W\000i\000d\000t\000h) % 657 0 obj -<< /S /GoTo /D [658 0 R /Fit] >> -% 658 0 obj +<< /S /GoTo /D (section*.19) >> +% 660 0 obj +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000P\000e\000a\000k\000B\000a\000n\000d\000w\000i\000d\000t\000h) +% 661 0 obj +<< /S /GoTo /D [662 0 R /Fit] >> +% 662 0 obj << /Type /Page -/Contents 662 0 R -/Resources 661 0 R +/Contents 666 0 R +/Resources 665 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Group 660 0 R +/Parent 672 0 R +/Group 664 0 R >> -% 660 0 obj +% 664 0 obj %PTEX Group needed for transparent pngs <> -% 663 0 obj +% 667 0 obj << -/D [658 0 R /XYZ 98.895 753.953 null] +/D [662 0 R /XYZ 98.895 753.953 null] >> -% 664 0 obj +% 668 0 obj << -/D [658 0 R /XYZ 99.895 716.092 null] +/D [662 0 R /XYZ 99.895 716.092 null] >> % 3 0 obj << -/D [658 0 R /XYZ 99.895 716.092 null] +/D [662 0 R /XYZ 99.895 716.092 null] >> -% 661 0 obj +% 665 0 obj << -/Font << /F59 665 0 R /F60 666 0 R /F62 667 0 R >> -/XObject << /Im1 659 0 R >> +/Font << /F59 669 0 R /F60 670 0 R /F62 671 0 R >> +/XObject << /Im1 663 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> -% 671 0 obj +% 675 0 obj << /Type /Page -/Contents 672 0 R -/Resources 670 0 R +/Contents 676 0 R +/Resources 674 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R +/Parent 672 0 R >> -% 673 0 obj +% 677 0 obj << -/D [671 0 R /XYZ 149.705 753.953 null] +/D [675 0 R /XYZ 149.705 753.953 null] >> -% 670 0 obj +% 674 0 obj << -/Font << /F62 667 0 R >> +/Font << /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 717 0 obj +% 721 0 obj << /Type /Page -/Contents 718 0 R -/Resources 716 0 R +/Contents 722 0 R +/Resources 720 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 721 0 R 693 0 R 722 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 723 0 R 703 0 R 724 0 R 704 0 R 725 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R ] +/Parent 672 0 R +/Annots [ 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R 695 0 R 696 0 R 725 0 R 697 0 R 726 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 727 0 R 707 0 R 728 0 R 708 0 R 729 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R ] >> -% 674 0 obj +% 678 0 obj << /Type /Annot /Subtype /Link @@ -2070,7 +2074,7 @@ stream /Rect [98.899 681.973 173.389 691.303] /A << /S /GoTo /D (section.1) >> >> -% 675 0 obj +% 679 0 obj << /Type /Annot /Subtype /Link @@ -2078,7 +2082,7 @@ stream /Rect [98.899 659.857 196.921 669.187] /A << /S /GoTo /D (section.2) >> >> -% 676 0 obj +% 680 0 obj << /Type /Annot /Subtype /Link @@ -2086,7 +2090,7 @@ stream /Rect [113.843 647.803 227.028 657.212] /A << /S /GoTo /D (subsection.2.1) >> >> -% 677 0 obj +% 681 0 obj << /Type /Annot /Subtype /Link @@ -2094,7 +2098,7 @@ stream /Rect [113.843 633.079 211.078 645.138] /A << /S /GoTo /D (subsection.2.2) >> >> -% 678 0 obj +% 682 0 obj << /Type /Annot /Subtype /Link @@ -2102,7 +2106,7 @@ stream /Rect [113.843 621.004 233.094 633.064] /A << /S /GoTo /D (subsection.2.3) >> >> -% 679 0 obj +% 683 0 obj << /Type /Annot /Subtype /Link @@ -2110,7 +2114,7 @@ stream /Rect [136.757 608.93 301.886 620.99] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 680 0 obj +% 684 0 obj << /Type /Annot /Subtype /Link @@ -2118,7 +2122,7 @@ stream /Rect [113.843 596.856 230.734 608.916] /A << /S /GoTo /D (subsection.2.4) >> >> -% 681 0 obj +% 685 0 obj << /Type /Annot /Subtype /Link @@ -2126,7 +2130,7 @@ stream /Rect [98.899 577.37 242.261 586.7] /A << /S /GoTo /D (section.3) >> >> -% 682 0 obj +% 686 0 obj << /Type /Annot /Subtype /Link @@ -2134,7 +2138,7 @@ stream /Rect [113.843 562.666 249.144 574.726] /A << /S /GoTo /D (subsection.3.1) >> >> -% 683 0 obj +% 687 0 obj << /Type /Annot /Subtype /Link @@ -2142,7 +2146,7 @@ stream /Rect [136.757 550.592 258.689 562.652] /A << /S /GoTo /D (subsubsection.3.1.1) >> >> -% 684 0 obj +% 688 0 obj << /Type /Annot /Subtype /Link @@ -2150,7 +2154,7 @@ stream /Rect [136.757 538.518 360.207 550.578] /A << /S /GoTo /D (subsubsection.3.1.2) >> >> -% 685 0 obj +% 689 0 obj << /Type /Annot /Subtype /Link @@ -2158,7 +2162,7 @@ stream /Rect [136.757 526.444 350.723 538.504] /A << /S /GoTo /D (subsubsection.3.1.3) >> >> -% 686 0 obj +% 690 0 obj << /Type /Annot /Subtype /Link @@ -2166,7 +2170,7 @@ stream /Rect [136.757 514.37 373.457 526.43] /A << /S /GoTo /D (subsubsection.3.1.4) >> >> -% 687 0 obj +% 691 0 obj << /Type /Annot /Subtype /Link @@ -2174,7 +2178,7 @@ stream /Rect [136.757 502.296 363.973 514.355] /A << /S /GoTo /D (subsubsection.3.1.5) >> >> -% 688 0 obj +% 692 0 obj << /Type /Annot /Subtype /Link @@ -2182,7 +2186,7 @@ stream /Rect [136.757 490.222 384.834 502.281] /A << /S /GoTo /D (subsubsection.3.1.6) >> >> -% 689 0 obj +% 693 0 obj << /Type /Annot /Subtype /Link @@ -2190,7 +2194,7 @@ stream /Rect [136.757 478.148 356.411 490.013] /A << /S /GoTo /D (subsubsection.3.1.7) >> >> -% 690 0 obj +% 694 0 obj << /Type /Annot /Subtype /Link @@ -2198,7 +2202,7 @@ stream /Rect [136.757 466.074 297.523 478.133] /A << /S /GoTo /D (subsubsection.3.1.8) >> >> -% 691 0 obj +% 695 0 obj << /Type /Annot /Subtype /Link @@ -2206,7 +2210,7 @@ stream /Rect [136.757 454 345.014 466.059] /A << /S /GoTo /D (subsubsection.3.1.9) >> >> -% 692 0 obj +% 696 0 obj << /Type /Annot /Subtype /Link @@ -2214,7 +2218,7 @@ stream /Rect [136.757 441.925 444.603 453.985] /A << /S /GoTo /D (subsubsection.3.1.10) >> >> -% 721 0 obj +% 725 0 obj << /Type /Annot /Subtype /Link @@ -2222,7 +2226,7 @@ stream /Rect [98.899 429.97 222.246 442.03] /A << /S /GoTo /D (subsubsection.3.1.10) >> >> -% 693 0 obj +% 697 0 obj << /Type /Annot /Subtype /Link @@ -2230,7 +2234,7 @@ stream /Rect [136.757 417.896 444.603 429.956] /A << /S /GoTo /D (subsubsection.3.1.11) >> >> -% 722 0 obj +% 726 0 obj << /Type /Annot /Subtype /Link @@ -2238,7 +2242,7 @@ stream /Rect [98.899 405.941 222.246 418.001] /A << /S /GoTo /D (subsubsection.3.1.11) >> >> -% 694 0 obj +% 698 0 obj << /Type /Annot /Subtype /Link @@ -2246,7 +2250,7 @@ stream /Rect [136.757 393.867 358.404 405.927] /A << /S /GoTo /D (subsubsection.3.1.12) >> >> -% 695 0 obj +% 699 0 obj << /Type /Annot /Subtype /Link @@ -2254,7 +2258,7 @@ stream /Rect [136.757 381.793 354.718 393.853] /A << /S /GoTo /D (subsubsection.3.1.13) >> >> -% 696 0 obj +% 700 0 obj << /Type /Annot /Subtype /Link @@ -2262,7 +2266,7 @@ stream /Rect [136.757 369.719 413.607 381.778] /A << /S /GoTo /D (subsubsection.3.1.14) >> >> -% 697 0 obj +% 701 0 obj << /Type /Annot /Subtype /Link @@ -2270,7 +2274,7 @@ stream /Rect [136.757 360.295 250.062 369.704] /A << /S /GoTo /D (subsubsection.3.1.15) >> >> -% 698 0 obj +% 702 0 obj << /Type /Annot /Subtype /Link @@ -2278,7 +2282,7 @@ stream /Rect [113.843 345.571 223.242 357.63] /A << /S /GoTo /D (subsection.3.2) >> >> -% 699 0 obj +% 703 0 obj << /Type /Annot /Subtype /Link @@ -2286,7 +2290,7 @@ stream /Rect [136.757 333.497 273.364 345.556] /A << /S /GoTo /D (subsubsection.3.2.1) >> >> -% 700 0 obj +% 704 0 obj << /Type /Annot /Subtype /Link @@ -2294,7 +2298,7 @@ stream /Rect [136.757 321.423 399.41 333.482] /A << /S /GoTo /D (subsubsection.3.2.2) >> >> -% 701 0 obj +% 705 0 obj << /Type /Annot /Subtype /Link @@ -2302,7 +2306,7 @@ stream /Rect [136.757 309.348 410.528 321.408] /A << /S /GoTo /D (subsubsection.3.2.3) >> >> -% 702 0 obj +% 706 0 obj << /Type /Annot /Subtype /Link @@ -2310,7 +2314,7 @@ stream /Rect [136.757 297.274 444.603 309.334] /A << /S /GoTo /D (subsubsection.3.2.4) >> >> -% 723 0 obj +% 727 0 obj << /Type /Annot /Subtype /Link @@ -2318,7 +2322,7 @@ stream /Rect [98.899 287.969 199.631 297.075] /A << /S /GoTo /D (subsubsection.3.2.4) >> >> -% 703 0 obj +% 707 0 obj << /Type /Annot /Subtype /Link @@ -2326,7 +2330,7 @@ stream /Rect [136.757 273.245 444.603 285.305] /A << /S /GoTo /D (subsubsection.3.2.5) >> >> -% 724 0 obj +% 728 0 obj << /Type /Annot /Subtype /Link @@ -2334,7 +2338,7 @@ stream /Rect [98.899 261.29 248.906 273.046] /A << /S /GoTo /D (subsubsection.3.2.5) >> >> -% 704 0 obj +% 708 0 obj << /Type /Annot /Subtype /Link @@ -2342,7 +2346,7 @@ stream /Rect [136.757 249.216 444.603 261.276] /A << /S /GoTo /D (subsubsection.3.2.6) >> >> -% 725 0 obj +% 729 0 obj << /Type /Annot /Subtype /Link @@ -2350,7 +2354,7 @@ stream /Rect [98.899 239.911 185.853 249.016] /A << /S /GoTo /D (subsubsection.3.2.6) >> >> -% 705 0 obj +% 709 0 obj << /Type /Annot /Subtype /Link @@ -2358,7 +2362,7 @@ stream /Rect [136.757 225.187 384.545 237.246] /A << /S /GoTo /D (subsubsection.3.2.7) >> >> -% 706 0 obj +% 710 0 obj << /Type /Annot /Subtype /Link @@ -2366,7 +2370,7 @@ stream /Rect [136.757 213.113 329.343 225.172] /A << /S /GoTo /D (subsubsection.3.2.8) >> >> -% 707 0 obj +% 711 0 obj << /Type /Annot /Subtype /Link @@ -2374,7 +2378,7 @@ stream /Rect [136.757 201.038 405.337 213.098] /A << /S /GoTo /D (subsubsection.3.2.9) >> >> -% 708 0 obj +% 712 0 obj << /Type /Annot /Subtype /Link @@ -2382,7 +2386,7 @@ stream /Rect [136.757 188.964 371.724 201.024] /A << /S /GoTo /D (subsubsection.3.2.10) >> >> -% 709 0 obj +% 713 0 obj << /Type /Annot /Subtype /Link @@ -2390,7 +2394,7 @@ stream /Rect [136.757 176.89 309.029 188.95] /A << /S /GoTo /D (subsubsection.3.2.11) >> >> -% 710 0 obj +% 714 0 obj << /Type /Annot /Subtype /Link @@ -2398,7 +2402,7 @@ stream /Rect [136.757 167.466 350.683 176.876] /A << /S /GoTo /D (subsubsection.3.2.12) >> >> -% 711 0 obj +% 715 0 obj << /Type /Annot /Subtype /Link @@ -2406,7 +2410,7 @@ stream /Rect [136.757 152.742 303.929 164.802] /A << /S /GoTo /D (subsubsection.3.2.13) >> >> -% 712 0 obj +% 716 0 obj << /Type /Annot /Subtype /Link @@ -2414,7 +2418,7 @@ stream /Rect [136.757 140.668 324.462 152.728] /A << /S /GoTo /D (subsubsection.3.2.14) >> >> -% 713 0 obj +% 717 0 obj << /Type /Annot /Subtype /Link @@ -2422,7 +2426,7 @@ stream /Rect [136.757 128.594 309.687 140.654] /A << /S /GoTo /D (subsubsection.3.2.15) >> >> -% 714 0 obj +% 718 0 obj << /Type /Annot /Subtype /Link @@ -2430,29 +2434,29 @@ stream /Rect [136.757 116.52 314.13 128.58] /A << /S /GoTo /D (subsubsection.3.2.16) >> >> -% 719 0 obj +% 723 0 obj << -/D [717 0 R /XYZ 98.895 753.953 null] +/D [721 0 R /XYZ 98.895 753.953 null] >> -% 720 0 obj +% 724 0 obj << -/D [717 0 R /XYZ 99.895 723.975 null] +/D [721 0 R /XYZ 99.895 723.975 null] >> -% 716 0 obj +% 720 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 774 0 obj +% 778 0 obj << /Type /Page -/Contents 775 0 R -/Resources 773 0 R +/Contents 779 0 R +/Resources 777 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 715 0 R 726 0 R 727 0 R 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R ] +/Parent 672 0 R +/Annots [ 719 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R ] >> -% 715 0 obj +% 719 0 obj << /Type /Annot /Subtype /Link @@ -2460,7 +2464,7 @@ stream /Rect [187.567 702.323 437.338 714.383] /A << /S /GoTo /D (subsubsection.3.2.17) >> >> -% 726 0 obj +% 730 0 obj << /Type /Annot /Subtype /Link @@ -2468,7 +2472,7 @@ stream /Rect [187.567 690.243 348.332 702.303] /A << /S /GoTo /D (subsubsection.3.2.18) >> >> -% 727 0 obj +% 731 0 obj << /Type /Annot /Subtype /Link @@ -2476,7 +2480,7 @@ stream /Rect [187.567 680.814 300.871 690.223] /A << /S /GoTo /D (subsubsection.3.2.19) >> >> -% 728 0 obj +% 732 0 obj << /Type /Annot /Subtype /Link @@ -2484,7 +2488,7 @@ stream /Rect [164.653 668.734 313.682 677.95] /A << /S /GoTo /D (subsection.3.3) >> >> -% 729 0 obj +% 733 0 obj << /Type /Annot /Subtype /Link @@ -2492,7 +2496,7 @@ stream /Rect [187.567 656.654 290.829 666.064] /A << /S /GoTo /D (subsubsection.3.3.1) >> >> -% 730 0 obj +% 734 0 obj << /Type /Annot /Subtype /Link @@ -2500,7 +2504,7 @@ stream /Rect [187.567 641.925 446.194 653.984] /A << /S /GoTo /D (subsubsection.3.3.2) >> >> -% 731 0 obj +% 735 0 obj << /Type /Annot /Subtype /Link @@ -2508,7 +2512,7 @@ stream /Rect [187.567 629.845 479.97 641.905] /A << /S /GoTo /D (subsubsection.3.3.3) >> >> -% 732 0 obj +% 736 0 obj << /Type /Annot /Subtype /Link @@ -2516,7 +2520,7 @@ stream /Rect [187.567 620.415 358.813 629.825] /A << /S /GoTo /D (subsubsection.3.3.4) >> >> -% 733 0 obj +% 737 0 obj << /Type /Annot /Subtype /Link @@ -2524,7 +2528,7 @@ stream /Rect [187.567 605.686 415.509 617.745] /A << /S /GoTo /D (subsubsection.3.3.5) >> >> -% 734 0 obj +% 738 0 obj << /Type /Annot /Subtype /Link @@ -2532,7 +2536,7 @@ stream /Rect [187.567 593.606 348.332 605.666] /A << /S /GoTo /D (subsubsection.3.3.6) >> >> -% 735 0 obj +% 739 0 obj << /Type /Annot /Subtype /Link @@ -2540,26 +2544,10 @@ stream /Rect [164.653 584.176 318.663 593.586] /A << /S /GoTo /D (subsection.3.4) >> >> -% 736 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 569.446 277.409 581.506] -/A << /S /GoTo /D (subsection.3.5) >> ->> -% 737 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 547.56 275.386 559.281] -/A << /S /GoTo /D (section.4) >> ->> endstream endobj -822 0 obj +826 0 obj << /Length 18214 >> @@ -3250,9 +3238,9 @@ ET endstream endobj -862 0 obj +867 0 obj << -/Length 13187 +/Length 13525 >> stream 0 g 0 G @@ -3385,67 +3373,60 @@ BT 0 g 0 G [-1000(159)]TJ 0 g 0 G +0 0 1 rg 0 0 1 RG + -42.221 -11.955 Td [(11.2)-550(psb)]TJ +ET +q +1 0 0 1 204.881 507.075 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 207.87 506.876 Td [(richar)18(dson)-250(\227)-250(Richar)18(dson)-250(Iteration)-250(Driver)-250(Routine)]TJ +0 g 0 G + [-809(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1000(162)]TJ +0 g 0 G 0 0 1 rg 0 0 1 RG /F59 9.9626 Tf -57.165 -21.918 Td [(12)-500(Extensions)]TJ 0 g 0 G - [-26557(162)]TJ + [-26557(165)]TJ 0 0 1 rg 0 0 1 RG /F62 9.9626 Tf 14.944 -11.955 Td [(12.1)-550(Using)-250(the)-250(extensions)]TJ 0 g 0 G [-783(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(162)]TJ + [-1000(165)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.2)-550(Extensions')-250(Data)-250(Str)8(uctur)18(es)]TJ 0 g 0 G [-797(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(163)]TJ + [-1000(166)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.3)-550(CPU-class)-250(extensions)]TJ 0 g 0 G [-544(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(163)]TJ + [-1000(166)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.4)-550(CUDA-class)-250(extensions)]TJ 0 g 0 G [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(170)]TJ + [-1000(173)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG /F59 9.9626 Tf -14.944 -21.918 Td [(13)-500(CUDA)-250(Environment)-250(Routines)]TJ 0 g 0 G - [-17779(171)]TJ + [-17779(174)]TJ 0 0 1 rg 0 0 1 RG /F62 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ ET q -1 0 0 1 181.967 415.419 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 184.956 415.22 Td [(cuda)]TJ -ET -q -1 0 0 1 207.053 415.419 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 210.042 415.22 Td [(init)]TJ -0 g 0 G - [-304(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ -0 g 0 G - [-1000(171)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - -44.393 -11.955 Td [(psb)]TJ -ET -q 1 0 0 1 181.967 403.464 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q @@ -3457,11 +3438,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 403.265 Td [(exit)]TJ +/F62 9.9626 Tf 210.042 403.265 Td [(init)]TJ 0 g 0 G - [-932(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-304(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(171)]TJ + [-1000(174)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.956 Td [(psb)]TJ @@ -3478,11 +3459,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 391.309 Td [(DeviceSync)]TJ +/F62 9.9626 Tf 210.042 391.309 Td [(exit)]TJ 0 g 0 G - [-405(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-932(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(174)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3499,11 +3480,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 379.354 Td [(getDeviceCount)]TJ +/F62 9.9626 Tf 210.042 379.354 Td [(DeviceSync)]TJ 0 g 0 G - [-635(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-405(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3520,11 +3501,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 367.399 Td [(getDevice)]TJ +/F62 9.9626 Tf 210.042 367.399 Td [(getDeviceCount)]TJ 0 g 0 G - [-401(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-635(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3541,11 +3522,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 355.444 Td [(setDevice)]TJ +/F62 9.9626 Tf 210.042 355.444 Td [(getDevice)]TJ 0 g 0 G - [-533(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-401(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3562,11 +3543,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 343.489 Td [(DeviceHasUV)111(A)]TJ +/F62 9.9626 Tf 210.042 343.489 Td [(setDevice)]TJ 0 g 0 G - [-839(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-533(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3583,11 +3564,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 331.534 Td [(W)92(arpSize)]TJ +/F62 9.9626 Tf 210.042 331.534 Td [(DeviceHasUV)111(A)]TJ 0 g 0 G - [-595(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-839(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.956 Td [(psb)]TJ @@ -3604,11 +3585,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 319.578 Td [(MultiPr)18(ocessors)]TJ +/F62 9.9626 Tf 210.042 319.578 Td [(W)92(arpSize)]TJ 0 g 0 G - [-674(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-595(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3625,11 +3606,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 307.623 Td [(MaxThr)18(eadsPerMP)]TJ +/F62 9.9626 Tf 210.042 307.623 Td [(MultiPr)18(ocessors)]TJ 0 g 0 G - [-718(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-674(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3646,11 +3627,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 295.668 Td [(MaxRegisterPerBlock)]TJ +/F62 9.9626 Tf 210.042 295.668 Td [(MaxThr)18(eadsPerMP)]TJ 0 g 0 G - [-538(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-718(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3667,11 +3648,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 283.713 Td [(MemoryClockRate)]TJ +/F62 9.9626 Tf 210.042 283.713 Td [(MaxRegisterPerBlock)]TJ 0 g 0 G - [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-538(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(176)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3688,11 +3669,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 271.758 Td [(MemoryBusW)55(idth)]TJ +/F62 9.9626 Tf 210.042 271.758 Td [(MemoryClockRate)]TJ 0 g 0 G - [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(176)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3709,20 +3690,41 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 259.803 Td [(MemoryPeakBandwidth)]TJ +/F62 9.9626 Tf 210.042 259.803 Td [(MemoryBusW)55(idth)]TJ +0 g 0 G + [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1000(176)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -44.393 -11.956 Td [(psb)]TJ +ET +q +1 0 0 1 181.967 248.047 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 184.956 247.847 Td [(cuda)]TJ +ET +q +1 0 0 1 207.053 248.047 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 210.042 247.847 Td [(MemoryPeakBandwidth)]TJ 0 g 0 G [-652(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(176)]TJ 0 g 0 G 0 g 0 G - 108.254 -169.365 Td [(iv)]TJ + 108.254 -157.409 Td [(iv)]TJ 0 g 0 G ET endstream endobj -777 0 obj +781 0 obj << /Type /ObjStm /N 100 @@ -3730,17 +3732,33 @@ endobj /Length 16374 >> stream -738 0 739 152 740 304 741 456 742 608 743 760 744 912 745 1064 746 1216 747 1367 -748 1520 749 1673 750 1826 751 1979 752 2132 753 2285 754 2438 755 2585 756 2735 757 2887 -758 3039 759 3191 760 3338 761 3490 762 3642 763 3794 764 3946 765 4098 766 4250 767 4402 -768 4554 769 4706 770 4859 771 5010 776 5161 773 5218 821 5298 772 5800 778 5953 779 6105 -780 6258 781 6409 782 6562 783 6715 784 6868 785 7020 786 7172 787 7325 788 7478 789 7631 -790 7784 791 7936 792 8089 793 8235 794 8387 824 8539 795 8690 796 8842 797 8994 798 9146 -799 9298 800 9448 801 9600 802 9752 803 9905 804 10058 805 10209 806 10361 807 10514 808 10667 -809 10820 810 10973 811 11119 812 11271 813 11423 814 11575 825 11727 815 11878 816 12024 826 12176 -817 12327 827 12479 818 12630 828 12782 823 12931 820 12987 861 13067 819 13473 864 13625 829 13777 -865 13929 830 14081 866 14233 831 14385 832 14530 833 14683 834 14836 835 14989 836 15142 837 15295 -% 738 0 obj +740 0 741 152 742 298 743 450 744 602 745 754 746 906 747 1058 748 1210 749 1362 +750 1514 751 1665 752 1818 753 1971 754 2124 755 2277 756 2430 757 2583 758 2736 759 2883 +760 3033 761 3185 762 3337 763 3489 764 3636 765 3788 766 3940 767 4092 768 4244 769 4396 +770 4548 771 4700 772 4852 773 5004 774 5157 775 5308 780 5459 777 5516 825 5596 776 6098 +782 6251 783 6403 784 6556 785 6707 786 6860 787 7013 788 7166 789 7318 790 7470 791 7623 +792 7776 793 7929 794 8082 795 8234 796 8387 797 8533 798 8685 828 8837 799 8988 800 9140 +801 9292 802 9444 803 9596 804 9746 805 9898 806 10050 807 10203 808 10356 809 10507 810 10659 +811 10812 812 10965 813 11118 814 11271 815 11417 816 11569 817 11721 818 11873 829 12025 819 12176 +820 12322 830 12474 821 12625 831 12777 822 12928 832 13080 827 13229 824 13285 866 13365 823 13779 +869 13931 833 14083 870 14235 834 14387 871 14539 835 14691 836 14836 837 14989 838 15142 839 15295 +% 740 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 569.446 277.409 581.506] +/A << /S /GoTo /D (subsection.3.5) >> +>> +% 741 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.709 547.56 275.386 559.281] +/A << /S /GoTo /D (section.4) >> +>> +% 742 0 obj << /Type /Annot /Subtype /Link @@ -3748,7 +3766,7 @@ stream /Rect [164.653 535.241 380.451 547.301] /A << /S /GoTo /D (subsection.4.1) >> >> -% 739 0 obj +% 743 0 obj << /Type /Annot /Subtype /Link @@ -3756,7 +3774,7 @@ stream /Rect [164.653 523.162 302.763 535.221] /A << /S /GoTo /D (subsection.4.2) >> >> -% 740 0 obj +% 744 0 obj << /Type /Annot /Subtype /Link @@ -3764,7 +3782,7 @@ stream /Rect [164.653 511.082 362.977 523.142] /A << /S /GoTo /D (subsection.4.3) >> >> -% 741 0 obj +% 745 0 obj << /Type /Annot /Subtype /Link @@ -3772,7 +3790,7 @@ stream /Rect [164.653 499.002 354.758 511.062] /A << /S /GoTo /D (subsection.4.4) >> >> -% 742 0 obj +% 746 0 obj << /Type /Annot /Subtype /Link @@ -3780,7 +3798,7 @@ stream /Rect [164.653 486.923 379.844 498.982] /A << /S /GoTo /D (subsection.4.5) >> >> -% 743 0 obj +% 747 0 obj << /Type /Annot /Subtype /Link @@ -3788,7 +3806,7 @@ stream /Rect [164.653 474.843 329.154 486.903] /A << /S /GoTo /D (subsection.4.6) >> >> -% 744 0 obj +% 748 0 obj << /Type /Annot /Subtype /Link @@ -3796,7 +3814,7 @@ stream /Rect [164.653 462.763 394.738 474.823] /A << /S /GoTo /D (subsection.4.7) >> >> -% 745 0 obj +% 749 0 obj << /Type /Annot /Subtype /Link @@ -3804,7 +3822,7 @@ stream /Rect [164.653 450.684 329.154 462.743] /A << /S /GoTo /D (subsection.4.8) >> >> -% 746 0 obj +% 750 0 obj << /Type /Annot /Subtype /Link @@ -3812,7 +3830,7 @@ stream /Rect [164.653 438.604 394.24 450.663] /A << /S /GoTo /D (subsection.4.9) >> >> -% 747 0 obj +% 751 0 obj << /Type /Annot /Subtype /Link @@ -3820,7 +3838,7 @@ stream /Rect [164.653 426.524 362.499 438.584] /A << /S /GoTo /D (subsection.4.10) >> >> -% 748 0 obj +% 752 0 obj << /Type /Annot /Subtype /Link @@ -3828,7 +3846,7 @@ stream /Rect [164.653 414.444 387.276 426.504] /A << /S /GoTo /D (subsection.4.11) >> >> -% 749 0 obj +% 753 0 obj << /Type /Annot /Subtype /Link @@ -3836,7 +3854,7 @@ stream /Rect [164.653 402.365 425.761 414.424] /A << /S /GoTo /D (subsection.4.12) >> >> -% 750 0 obj +% 754 0 obj << /Type /Annot /Subtype /Link @@ -3844,7 +3862,7 @@ stream /Rect [164.653 390.285 353.991 402.345] /A << /S /GoTo /D (subsection.4.13) >> >> -% 751 0 obj +% 755 0 obj << /Type /Annot /Subtype /Link @@ -3852,7 +3870,7 @@ stream /Rect [164.653 378.205 331.346 390.265] /A << /S /GoTo /D (subsection.4.14) >> >> -% 752 0 obj +% 756 0 obj << /Type /Annot /Subtype /Link @@ -3860,7 +3878,7 @@ stream /Rect [164.653 366.126 333.538 378.185] /A << /S /GoTo /D (subsection.4.15) >> >> -% 753 0 obj +% 757 0 obj << /Type /Annot /Subtype /Link @@ -3868,7 +3886,7 @@ stream /Rect [164.653 354.046 337.602 366.106] /A << /S /GoTo /D (subsection.4.16) >> >> -% 754 0 obj +% 758 0 obj << /Type /Annot /Subtype /Link @@ -3876,7 +3894,7 @@ stream /Rect [149.709 334.551 280.368 343.701] /A << /S /GoTo /D (section.5) >> >> -% 755 0 obj +% 759 0 obj << /Type /Annot /Subtype /Link @@ -3884,7 +3902,7 @@ stream /Rect [164.653 319.841 362.031 331.9] /A << /S /GoTo /D (subsection.5.1) >> >> -% 756 0 obj +% 760 0 obj << /Type /Annot /Subtype /Link @@ -3892,7 +3910,7 @@ stream /Rect [164.653 307.761 313.065 319.821] /A << /S /GoTo /D (subsection.5.2) >> >> -% 757 0 obj +% 761 0 obj << /Type /Annot /Subtype /Link @@ -3900,7 +3918,7 @@ stream /Rect [164.653 295.681 376.127 307.741] /A << /S /GoTo /D (subsection.5.3) >> >> -% 758 0 obj +% 762 0 obj << /Type /Annot /Subtype /Link @@ -3908,7 +3926,7 @@ stream /Rect [164.653 283.602 376.187 295.661] /A << /S /GoTo /D (subsection.5.4) >> >> -% 759 0 obj +% 763 0 obj << /Type /Annot /Subtype /Link @@ -3916,7 +3934,7 @@ stream /Rect [149.709 261.636 289.504 273.257] /A << /S /GoTo /D (section.6) >> >> -% 760 0 obj +% 764 0 obj << /Type /Annot /Subtype /Link @@ -3924,7 +3942,7 @@ stream /Rect [164.653 249.397 412.092 261.456] /A << /S /GoTo /D (subsection.6.1) >> >> -% 761 0 obj +% 765 0 obj << /Type /Annot /Subtype /Link @@ -3932,7 +3950,7 @@ stream /Rect [164.653 237.317 428.052 249.377] /A << /S /GoTo /D (subsection.6.2) >> >> -% 762 0 obj +% 766 0 obj << /Type /Annot /Subtype /Link @@ -3940,7 +3958,7 @@ stream /Rect [164.653 225.237 445.915 237.297] /A << /S /GoTo /D (subsection.6.3) >> >> -% 763 0 obj +% 767 0 obj << /Type /Annot /Subtype /Link @@ -3948,7 +3966,7 @@ stream /Rect [164.653 213.158 407.011 225.217] /A << /S /GoTo /D (subsection.6.4) >> >> -% 764 0 obj +% 768 0 obj << /Type /Annot /Subtype /Link @@ -3956,7 +3974,7 @@ stream /Rect [164.653 201.078 400.356 213.138] /A << /S /GoTo /D (subsection.6.5) >> >> -% 765 0 obj +% 769 0 obj << /Type /Annot /Subtype /Link @@ -3964,7 +3982,7 @@ stream /Rect [164.653 188.998 461.277 201.058] /A << /S /GoTo /D (subsection.6.6) >> >> -% 766 0 obj +% 770 0 obj << /Type /Annot /Subtype /Link @@ -3972,7 +3990,7 @@ stream /Rect [164.653 176.918 355.017 188.978] /A << /S /GoTo /D (subsection.6.7) >> >> -% 767 0 obj +% 771 0 obj << /Type /Annot /Subtype /Link @@ -3980,7 +3998,7 @@ stream /Rect [164.653 164.839 446.841 176.898] /A << /S /GoTo /D (subsection.6.8) >> >> -% 768 0 obj +% 772 0 obj << /Type /Annot /Subtype /Link @@ -3988,7 +4006,7 @@ stream /Rect [164.653 152.759 387.206 164.819] /A << /S /GoTo /D (subsection.6.9) >> >> -% 769 0 obj +% 773 0 obj << /Type /Annot /Subtype /Link @@ -3996,7 +4014,7 @@ stream /Rect [164.653 140.679 343.281 152.739] /A << /S /GoTo /D (subsection.6.10) >> >> -% 770 0 obj +% 774 0 obj << /Type /Annot /Subtype /Link @@ -4004,7 +4022,7 @@ stream /Rect [164.653 128.6 460.789 140.659] /A << /S /GoTo /D (subsection.6.11) >> >> -% 771 0 obj +% 775 0 obj << /Type /Annot /Subtype /Link @@ -4012,25 +4030,25 @@ stream /Rect [164.653 116.52 352.646 128.58] /A << /S /GoTo /D (subsection.6.12) >> >> -% 776 0 obj +% 780 0 obj << -/D [774 0 R /XYZ 149.705 753.953 null] +/D [778 0 R /XYZ 149.705 753.953 null] >> -% 773 0 obj +% 777 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F62 671 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 821 0 obj +% 825 0 obj << /Type /Page -/Contents 822 0 R -/Resources 820 0 R +/Contents 826 0 R +/Resources 824 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 772 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 824 0 R 795 0 R 796 0 R 797 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 825 0 R 815 0 R 816 0 R 826 0 R 817 0 R 827 0 R 818 0 R 828 0 R ] +/Parent 672 0 R +/Annots [ 776 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 828 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R 829 0 R 819 0 R 820 0 R 830 0 R 821 0 R 831 0 R 822 0 R 832 0 R ] >> -% 772 0 obj +% 776 0 obj << /Type /Annot /Subtype /Link @@ -4038,7 +4056,7 @@ stream /Rect [113.843 702.323 330.917 714.383] /A << /S /GoTo /D (subsection.6.13) >> >> -% 778 0 obj +% 782 0 obj << /Type /Annot /Subtype /Link @@ -4046,7 +4064,7 @@ stream /Rect [113.843 690.229 308.85 702.289] /A << /S /GoTo /D (subsection.6.14) >> >> -% 779 0 obj +% 783 0 obj << /Type /Annot /Subtype /Link @@ -4054,7 +4072,7 @@ stream /Rect [113.843 678.135 290.101 690.194] /A << /S /GoTo /D (subsection.6.15) >> >> -% 780 0 obj +% 784 0 obj << /Type /Annot /Subtype /Link @@ -4062,7 +4080,7 @@ stream /Rect [113.843 666.041 386.806 678.1] /A << /S /GoTo /D (subsection.6.16) >> >> -% 781 0 obj +% 785 0 obj << /Type /Annot /Subtype /Link @@ -4070,7 +4088,7 @@ stream /Rect [113.843 653.946 368.116 666.006] /A << /S /GoTo /D (subsection.6.17) >> >> -% 782 0 obj +% 786 0 obj << /Type /Annot /Subtype /Link @@ -4078,7 +4096,7 @@ stream /Rect [113.843 641.852 370.219 653.912] /A << /S /GoTo /D (subsection.6.18) >> >> -% 783 0 obj +% 787 0 obj << /Type /Annot /Subtype /Link @@ -4086,7 +4104,7 @@ stream /Rect [113.843 629.758 214.116 641.818] /A << /S /GoTo /D (subsection.6.19) >> >> -% 784 0 obj +% 788 0 obj << /Type /Annot /Subtype /Link @@ -4094,7 +4112,7 @@ stream /Rect [113.843 617.664 231.69 629.724] /A << /S /GoTo /D (subsection.6.20) >> >> -% 785 0 obj +% 789 0 obj << /Type /Annot /Subtype /Link @@ -4102,7 +4120,7 @@ stream /Rect [113.843 605.57 204.353 617.629] /A << /S /GoTo /D (subsection.6.21) >> >> -% 786 0 obj +% 790 0 obj << /Type /Annot /Subtype /Link @@ -4110,7 +4128,7 @@ stream /Rect [113.843 593.476 221.927 605.535] /A << /S /GoTo /D (subsection.6.22) >> >> -% 787 0 obj +% 791 0 obj << /Type /Annot /Subtype /Link @@ -4118,7 +4136,7 @@ stream /Rect [113.843 581.381 379.076 593.441] /A << /S /GoTo /D (subsection.6.23) >> >> -% 788 0 obj +% 792 0 obj << /Type /Annot /Subtype /Link @@ -4126,7 +4144,7 @@ stream /Rect [113.843 569.287 359.768 581.347] /A << /S /GoTo /D (subsection.6.24) >> >> -% 789 0 obj +% 793 0 obj << /Type /Annot /Subtype /Link @@ -4134,7 +4152,7 @@ stream /Rect [113.843 557.193 373.158 569.253] /A << /S /GoTo /D (subsection.6.25) >> >> -% 790 0 obj +% 794 0 obj << /Type /Annot /Subtype /Link @@ -4142,7 +4160,7 @@ stream /Rect [113.843 545.099 287.68 557.158] /A << /S /GoTo /D (subsection.6.26) >> >> -% 791 0 obj +% 795 0 obj << /Type /Annot /Subtype /Link @@ -4150,7 +4168,7 @@ stream /Rect [113.843 533.005 221.369 545.064] /A << /S /GoTo /D (subsection.6.27) >> >> -% 792 0 obj +% 796 0 obj << /Type /Annot /Subtype /Link @@ -4158,7 +4176,7 @@ stream /Rect [98.899 513.485 251.974 522.815] /A << /S /GoTo /D (section.7) >> >> -% 793 0 obj +% 797 0 obj << /Type /Annot /Subtype /Link @@ -4166,7 +4184,7 @@ stream /Rect [113.843 498.761 364.739 510.821] /A << /S /GoTo /D (subsection.7.1) >> >> -% 794 0 obj +% 798 0 obj << /Type /Annot /Subtype /Link @@ -4174,7 +4192,7 @@ stream /Rect [113.843 486.667 444.603 498.726] /A << /S /GoTo /D (subsection.7.2) >> >> -% 824 0 obj +% 828 0 obj << /Type /Annot /Subtype /Link @@ -4182,7 +4200,7 @@ stream /Rect [98.899 477.362 161.365 486.467] /A << /S /GoTo /D (subsection.7.2) >> >> -% 795 0 obj +% 799 0 obj << /Type /Annot /Subtype /Link @@ -4190,7 +4208,7 @@ stream /Rect [113.843 462.617 364.172 474.677] /A << /S /GoTo /D (subsection.7.3) >> >> -% 796 0 obj +% 800 0 obj << /Type /Annot /Subtype /Link @@ -4198,7 +4216,7 @@ stream /Rect [113.843 450.523 358.772 462.583] /A << /S /GoTo /D (subsection.7.4) >> >> -% 797 0 obj +% 801 0 obj << /Type /Annot /Subtype /Link @@ -4206,7 +4224,7 @@ stream /Rect [113.843 438.429 307.635 450.489] /A << /S /GoTo /D (subsection.7.5) >> >> -% 798 0 obj +% 802 0 obj << /Type /Annot /Subtype /Link @@ -4214,7 +4232,7 @@ stream /Rect [113.843 426.335 277.737 438.395] /A << /S /GoTo /D (subsection.7.6) >> >> -% 799 0 obj +% 803 0 obj << /Type /Annot /Subtype /Link @@ -4222,7 +4240,7 @@ stream /Rect [113.843 414.241 393.262 426.3] /A << /S /GoTo /D (subsection.7.7) >> >> -% 800 0 obj +% 804 0 obj << /Type /Annot /Subtype /Link @@ -4230,7 +4248,7 @@ stream /Rect [113.843 402.147 288.227 414.206] /A << /S /GoTo /D (subsection.7.8) >> >> -% 801 0 obj +% 805 0 obj << /Type /Annot /Subtype /Link @@ -4238,7 +4256,7 @@ stream /Rect [113.843 390.052 260.403 402.112] /A << /S /GoTo /D (subsection.7.9) >> >> -% 802 0 obj +% 806 0 obj << /Type /Annot /Subtype /Link @@ -4246,7 +4264,7 @@ stream /Rect [113.843 377.958 242.878 390.018] /A << /S /GoTo /D (subsection.7.10) >> >> -% 803 0 obj +% 807 0 obj << /Type /Annot /Subtype /Link @@ -4254,7 +4272,7 @@ stream /Rect [113.843 365.864 269.159 377.924] /A << /S /GoTo /D (subsection.7.11) >> >> -% 804 0 obj +% 808 0 obj << /Type /Annot /Subtype /Link @@ -4262,7 +4280,7 @@ stream /Rect [113.843 353.77 266.31 365.829] /A << /S /GoTo /D (subsection.7.12) >> >> -% 805 0 obj +% 809 0 obj << /Type /Annot /Subtype /Link @@ -4270,7 +4288,7 @@ stream /Rect [113.843 341.676 335.51 353.735] /A << /S /GoTo /D (subsection.7.13) >> >> -% 806 0 obj +% 810 0 obj << /Type /Annot /Subtype /Link @@ -4278,7 +4296,7 @@ stream /Rect [113.843 329.581 334.742 341.641] /A << /S /GoTo /D (subsection.7.14) >> >> -% 807 0 obj +% 811 0 obj << /Type /Annot /Subtype /Link @@ -4286,7 +4304,7 @@ stream /Rect [113.843 317.487 305.523 329.547] /A << /S /GoTo /D (subsection.7.15) >> >> -% 808 0 obj +% 812 0 obj << /Type /Annot /Subtype /Link @@ -4294,7 +4312,7 @@ stream /Rect [113.843 305.393 232.786 317.453] /A << /S /GoTo /D (subsection.7.16) >> >> -% 809 0 obj +% 813 0 obj << /Type /Annot /Subtype /Link @@ -4302,7 +4320,7 @@ stream /Rect [113.843 293.299 242.519 305.359] /A << /S /GoTo /D (subsection.7.17) >> >> -% 810 0 obj +% 814 0 obj << /Type /Annot /Subtype /Link @@ -4310,7 +4328,7 @@ stream /Rect [98.899 271.309 183.083 283.109] /A << /S /GoTo /D (section.8) >> >> -% 811 0 obj +% 815 0 obj << /Type /Annot /Subtype /Link @@ -4318,7 +4336,7 @@ stream /Rect [113.843 259.055 387.474 271.115] /A << /S /GoTo /D (subsection.8.1) >> >> -% 812 0 obj +% 816 0 obj << /Type /Annot /Subtype /Link @@ -4326,7 +4344,7 @@ stream /Rect [113.843 246.961 415.897 259.021] /A << /S /GoTo /D (subsection.8.2) >> >> -% 813 0 obj +% 817 0 obj << /Type /Annot /Subtype /Link @@ -4334,7 +4352,7 @@ stream /Rect [113.843 234.867 399.738 246.926] /A << /S /GoTo /D (subsection.8.3) >> >> -% 814 0 obj +% 818 0 obj << /Type /Annot /Subtype /Link @@ -4342,7 +4360,7 @@ stream /Rect [113.843 222.773 444.603 234.832] /A << /S /GoTo /D (subsection.8.4) >> >> -% 825 0 obj +% 829 0 obj << /Type /Annot /Subtype /Link @@ -4350,7 +4368,7 @@ stream /Rect [98.899 213.468 180.781 222.877] /A << /S /GoTo /D (subsection.8.4) >> >> -% 815 0 obj +% 819 0 obj << /Type /Annot /Subtype /Link @@ -4358,7 +4376,7 @@ stream /Rect [98.899 191.298 152.896 200.628] /A << /S /GoTo /D (section.9) >> >> -% 816 0 obj +% 820 0 obj << /Type /Annot /Subtype /Link @@ -4366,7 +4384,7 @@ stream /Rect [113.843 176.574 444.603 188.633] /A << /S /GoTo /D (subsection.9.1) >> >> -% 826 0 obj +% 830 0 obj << /Type /Annot /Subtype /Link @@ -4374,7 +4392,7 @@ stream /Rect [98.899 164.619 201.494 176.678] /A << /S /GoTo /D (subsection.9.1) >> >> -% 817 0 obj +% 821 0 obj << /Type /Annot /Subtype /Link @@ -4382,7 +4400,7 @@ stream /Rect [113.843 152.524 444.603 164.584] /A << /S /GoTo /D (subsection.9.2) >> >> -% 827 0 obj +% 831 0 obj << /Type /Annot /Subtype /Link @@ -4390,7 +4408,7 @@ stream /Rect [98.899 143.219 168.468 152.629] /A << /S /GoTo /D (subsection.9.2) >> >> -% 818 0 obj +% 822 0 obj << /Type /Annot /Subtype /Link @@ -4398,7 +4416,7 @@ stream /Rect [113.843 128.475 444.603 140.535] /A << /S /GoTo /D (subsection.9.3) >> >> -% 828 0 obj +% 832 0 obj << /Type /Annot /Subtype /Link @@ -4406,25 +4424,25 @@ stream /Rect [98.899 119.17 202.859 128.58] /A << /S /GoTo /D (subsection.9.3) >> >> -% 823 0 obj +% 827 0 obj << -/D [821 0 R /XYZ 98.895 753.953 null] +/D [825 0 R /XYZ 98.895 753.953 null] >> -% 820 0 obj +% 824 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F62 671 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 861 0 obj +% 866 0 obj << /Type /Page -/Contents 862 0 R -/Resources 860 0 R +/Contents 867 0 R +/Resources 865 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 819 0 R 864 0 R 829 0 R 865 0 R 830 0 R 866 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R ] +/Parent 672 0 R +/Annots [ 823 0 R 869 0 R 833 0 R 870 0 R 834 0 R 871 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R ] >> -% 819 0 obj +% 823 0 obj << /Type /Annot /Subtype /Link @@ -4432,7 +4450,7 @@ stream /Rect [164.653 702.323 495.412 714.383] /A << /S /GoTo /D (subsection.9.4) >> >> -% 864 0 obj +% 869 0 obj << /Type /Annot /Subtype /Link @@ -4440,7 +4458,7 @@ stream /Rect [149.709 693.018 253.668 702.428] /A << /S /GoTo /D (subsection.9.4) >> >> -% 829 0 obj +% 833 0 obj << /Type /Annot /Subtype /Link @@ -4448,7 +4466,7 @@ stream /Rect [164.653 678.413 495.412 690.472] /A << /S /GoTo /D (subsection.9.5) >> >> -% 865 0 obj +% 870 0 obj << /Type /Annot /Subtype /Link @@ -4456,7 +4474,7 @@ stream /Rect [149.709 669.108 253.668 678.517] /A << /S /GoTo /D (subsection.9.5) >> >> -% 830 0 obj +% 834 0 obj << /Type /Annot /Subtype /Link @@ -4464,7 +4482,7 @@ stream /Rect [164.653 654.503 495.412 666.562] /A << /S /GoTo /D (subsection.9.6) >> >> -% 866 0 obj +% 871 0 obj << /Type /Annot /Subtype /Link @@ -4472,7 +4490,7 @@ stream /Rect [149.709 645.197 253.668 654.607] /A << /S /GoTo /D (subsection.9.6) >> >> -% 831 0 obj +% 835 0 obj << /Type /Annot /Subtype /Link @@ -4480,7 +4498,7 @@ stream /Rect [149.709 623.26 274.28 632.59] /A << /S /GoTo /D (section.10) >> >> -% 832 0 obj +% 836 0 obj << /Type /Annot /Subtype /Link @@ -4488,7 +4506,7 @@ stream /Rect [164.653 608.674 333.298 620.734] /A << /S /GoTo /D (subsection.10.1) >> >> -% 833 0 obj +% 837 0 obj << /Type /Annot /Subtype /Link @@ -4496,7 +4514,7 @@ stream /Rect [164.653 596.719 331.326 608.779] /A << /S /GoTo /D (subsection.10.2) >> >> -% 834 0 obj +% 838 0 obj << /Type /Annot /Subtype /Link @@ -4504,7 +4522,7 @@ stream /Rect [164.653 584.764 381.626 596.824] /A << /S /GoTo /D (subsection.10.3) >> >> -% 835 0 obj +% 839 0 obj << /Type /Annot /Subtype /Link @@ -4512,26 +4530,10 @@ stream /Rect [164.653 572.809 427.165 584.869] /A << /S /GoTo /D (subsection.10.4) >> >> -% 836 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 560.854 353.343 572.913] -/A << /S /GoTo /D (subsection.10.5) >> ->> -% 837 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 548.899 315.177 560.958] -/A << /S /GoTo /D (subsection.10.6) >> ->> endstream endobj -880 0 obj +885 0 obj << /Length 8045 >> @@ -4587,7 +4589,7 @@ ET endstream endobj -899 0 obj +904 0 obj << /Length 5269 >> @@ -4634,20 +4636,20 @@ ET endstream endobj -895 0 obj +900 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/psblas.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 901 0 R +/PTEX.InfoDict 906 0 R /BBox [0 0 197 215] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 902 0 R ->>/Font << /R8 903 0 R>> +/R7 907 0 R +>>/Font << /R8 908 0 R>> >> /Length 898 /Filter /FlateDecode @@ -4668,7 +4670,7 @@ x «Ͻ'ƒÇ›ÇÇùaÚ>=|9Êh±Büuæ¹£$îËLËàq·–ÑÃÊŸ5×k^Þ½;>íN÷Ûi™ZŠ\V+9D£­8îNËLÓG™÷×»~0+¾’”àŠ'¢ˆ±íúmw>o÷;{·=ŸŽûEý—»a¥ÃѲîîÝâ8SË4Â%ÕÇ¥_¾œžNÛ#OαéƒùüÐ endstream endobj -905 0 obj +910 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -4688,7 +4690,7 @@ p IZ¹t4¤w!}^€gì½—ú€h9@±^è Ò…s2•=3B2H>ÉçynÞÌû7ŠC‰#ˆþhñÚï-whèÇGtBŒV²Õºø`uÞ1èFæ3ÑvðøçÓ÷à´ÛoÝ34\z"ž“,P&+š´®¿Ú»oB03¼å㣶xsÉÝä!FáŽ/†m'~¼êŒn?àßvaÝDëÑ÷ì+°¥¸5ïšôt0Ü ¶æ+ÉÔ·ÆsRz…t¥J–xFzëþƒöÁQîè`û¼/dŠº2›åž™j@7GÛú.º?Üwyc$O‘œÀI‘(S¥ME®ƒßŒô| Áõ^`‚2!-›’"VîIN™"Ì‚B-ÌÎe³/uV9:Î6:.Ç°ÿMɪH endstream endobj -911 0 obj +916 0 obj << /Length 8252 >> @@ -4737,7 +4739,7 @@ ET endstream endobj -924 0 obj +929 0 obj << /Length 4830 >> @@ -4814,20 +4816,20 @@ ET endstream endobj -921 0 obj +926 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/points.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 927 0 R +/PTEX.InfoDict 932 0 R /BBox [0 0 274 308] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 928 0 R ->>/Font << /R8 929 0 R>> +/R7 933 0 R +>>/Font << /R8 934 0 R>> >> /Length 1397 /Filter /FlateDecode @@ -4837,7 +4839,7 @@ x – 󣄠¹3ÊBü=®§«æ±bA‡HŒ}Ï©c·í²»?­é”ׄÿäïÍeùö]_?ü¾¤Ó©d êwßGüðaù´d"®òçæ²¾¾ä}ÍíëÕûe4­ß ,äýÔ×sÿ»º,_ýx÷Ç/w×·¯®~[¾»ZÞ.ø›Œ1¸ð™âuóâ¯ïÿ¼ûùúáoO*žþx/þÃõí½Î22Tø<ᜇd†&Âoî/×ïV˜âÿõèCê1V^õd¨æõãR ¬Û9ŸÎç¶^–ºµÓ¾ÍšÚýÝz¦zõ¯7‹!€S®ûj짔êJÚR¿–ðWZSöN•m˜´ ide«3çûfyÿõROÛú×|J_F¿~]~z2ò–}×òVÐÕämë¦Î€sQ<I<³¦uiüd¸r͵9.Ö¤¢ÆR’ÉÑãY~ОÐCÑÝ¥Ÿ}öçÙ^â<3LA ‰c‹YÒ¶®ôçY¯qž&mCÙØâÌû懣ç—Ñ#|H–_rƧšÇÒ³,wš0s>}yüÇ5ÒNóË p%U¤ –ðW@E’§$§•|¡pxõE`&ÆøåU ™¤ó«›%AÝIUÍ0Gš]ý‘&ûÖM’ î Jšx÷¬…T.ù)~¼C²8˜}~‚­ÛÍWÛ¢íÁvKÑö¶K,8ÛÍ—&†`[C*—ü¨ONÔÇs­ƒ ½m‚ê ò9؆Áu¶!×`{P9¦m‚êKI7oÛB*—ü¨O샹~ñ̳·Ç'­¡Á^ÝIaÏvRy!œzw'ó¤`Íx"0.Ѥb'…iÄù|ùÌs¼žP:-%X/[´^º“#Àa°há…dÞPÓY/)Z‡Ýqˆ&-VŠÖ½ON¬Çtnƒ®G±À¹ÍY–& é›Ë’וB¿Ìœ¤¡¹M…ÁnngäŽ%¤Ò#ØœÃÉÙÇ‚"d;’Àô)ùÃ(˜\X‹³Ž¥²£0}Z¡pø#`Ó†Sò‹%Hvt§Ð̧f£`ú`-Î+”ÐŽQ4ó9ƒ…Ç,x›O/,îf,z»âißn«ªÝìv«$½úæ-ÜŒå`?›“禩™|,ˆ7cïó™;Ìñº@!osõé]Š¦?ݲta0€yýÒ¥¤Zdy›«OïRÜ<%9­äƒ€[}拇ú6m8uõIPžþhǃf>m))…YÞæê“ Ò<%9­äƒ€[}ækçÿÜæ“WO’rõ= A} £ Ñ0'Ë 9‘S,irêÕ÷+\_ã­uâÝ¿›ÑÆE?æóé{¦ƒÙÇá'È‹ÎB#4_²$&†`[–’qq‘‘&/> Mõ5^_'†`[Bý˜OõºÖÁ–%©¡ ª/]07o[šqq ’&/M Íõ5^_'nÞ¶†4.ú1Ÿ6ØsýÜ¥%]Š!ƒCÞgVe@Ù–‹’…$)š5-ƒÃØ5}‡ä²?ÖLg+‡ |>{é>hO‘jøX5~,ê>–0àxÕ},1’š¬ác ”ø±ŠûX€5‹ûXb$3òø³ Ú…t¡í¡=Å>tpº8Õ‡’Ô$iÎ>´-ö¡Ç%ÀšTÔXJR#ÞgL¼í“-J/0®jãȶw.Þâªick£Z,”Ô¤š^”Ñk·ì«éUÝ ‹¯WjÇ‚µÛçƒ.ÁºUE³zÉgýãPˆ,é"›Ñe±ûÌ‹:t˜!*%~ Ö *«QÊÒ@emPMÓ1:¾Þ’àX¼÷(˜®4æ ¤Nƒ¾]þÎJ¦' endstream endobj -936 0 obj +941 0 obj << /Length 4927 >> @@ -4927,7 +4929,7 @@ ET endstream endobj -941 0 obj +946 0 obj << /Length 8378 >> @@ -4975,7 +4977,7 @@ ET endstream endobj -954 0 obj +959 0 obj << /Length 7484 >> @@ -5069,25 +5071,41 @@ ET endstream endobj -867 0 obj +872 0 obj << /Type /ObjStm /N 100 -/First 906 -/Length 12362 ->> -stream -838 0 839 147 840 300 841 447 842 600 843 753 844 906 845 1059 846 1206 847 1354 -848 1502 849 1650 850 1797 851 1946 852 2095 853 2244 854 2393 855 2542 856 2691 857 2840 -858 2989 859 3138 863 3286 860 3343 879 3423 868 3629 869 3779 870 3930 871 4082 872 4236 -873 4386 874 4536 875 4686 876 4834 877 4982 7 5130 878 5184 898 5277 901 5427 902 5668 -903 5710 904 6096 892 6396 893 6542 894 6689 11 6836 900 6892 897 6949 910 7070 896 7220 -907 7368 908 7517 912 7666 15 7722 916 7777 917 7834 909 7891 923 8023 927 8165 928 8279 -929 8321 919 8390 920 8537 925 8685 926 8742 19 8799 922 8855 935 9002 932 9144 933 9291 -937 9438 934 9494 940 9587 942 9701 23 9758 943 9814 944 9871 945 9928 946 9985 947 10042 -948 10099 949 10156 950 10213 939 10270 953 10389 938 10523 955 10672 956 10728 957 10784 958 10840 -959 10896 960 10952 961 11008 962 11064 963 11120 964 11176 965 11232 966 11288 967 11344 968 11400 -% 838 0 obj +/First 910 +/Length 12656 +>> +stream +840 0 841 153 842 306 843 453 844 606 845 757 846 904 847 1057 848 1210 849 1363 +850 1516 851 1664 852 1812 853 1960 854 2108 855 2255 856 2404 857 2553 858 2702 859 2851 +860 3000 861 3149 862 3298 863 3447 864 3596 868 3744 865 3801 884 3881 873 4087 874 4237 +875 4388 876 4540 877 4694 878 4844 879 4994 880 5144 881 5292 882 5440 7 5588 883 5642 +903 5735 906 5885 907 6126 908 6168 909 6554 897 6854 898 7000 899 7147 11 7294 905 7350 +902 7407 915 7528 901 7678 912 7826 913 7975 917 8124 15 8180 921 8235 922 8292 914 8349 +928 8481 932 8623 933 8737 934 8779 924 8848 925 8995 930 9143 931 9200 19 9257 927 9313 +940 9460 937 9602 938 9749 942 9896 939 9952 945 10045 947 10159 23 10216 948 10272 949 10329 +950 10386 951 10443 952 10500 953 10557 954 10614 955 10671 944 10728 958 10847 943 10981 960 11130 +961 11186 962 11242 963 11298 964 11354 965 11410 966 11466 967 11522 968 11578 969 11634 970 11690 +% 840 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 560.854 353.343 572.913] +/A << /S /GoTo /D (subsection.10.5) >> +>> +% 841 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 548.899 315.177 560.958] +/A << /S /GoTo /D (subsection.10.6) >> +>> +% 842 0 obj << /Type /Annot /Subtype /Link @@ -5095,7 +5113,7 @@ stream /Rect [149.709 529.611 247.72 538.941] /A << /S /GoTo /D (section.11) >> >> -% 839 0 obj +% 843 0 obj << /Type /Annot /Subtype /Link @@ -5103,185 +5121,193 @@ stream /Rect [164.653 515.026 393.631 527.085] /A << /S /GoTo /D (subsection.11.1) >> >> -% 840 0 obj +% 844 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 495.738 215.89 504.888] +/Rect [164.653 503.07 430.065 515.13] +/A << /S /GoTo /D (subsection.11.2) >> +>> +% 845 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.709 483.783 215.89 492.933] /A << /S /GoTo /D (section.12) >> >> -% 841 0 obj +% 846 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 481.153 280.885 493.212] +/Rect [164.653 469.197 280.885 481.257] /A << /S /GoTo /D (subsection.12.1) >> >> -% 842 0 obj +% 847 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 471.847 310.634 481.063] +/Rect [164.653 459.892 310.634 469.108] /A << /S /GoTo /D (subsection.12.2) >> >> -% 843 0 obj +% 848 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 459.892 283.267 469.302] +/Rect [164.653 447.937 283.267 457.347] /A << /S /GoTo /D (subsection.12.3) >> >> -% 844 0 obj +% 849 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 447.937 292.711 457.347] +/Rect [164.653 435.982 292.711 445.392] /A << /S /GoTo /D (subsection.12.4) >> >> -% 845 0 obj +% 850 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 425.999 303.341 435.15] +/Rect [149.709 414.044 303.341 423.195] /A << /S /GoTo /D (section.13) >> >> -% 846 0 obj +% 851 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 411.414 225.882 423.474] +/Rect [164.653 399.459 225.882 411.519] /A << /S /GoTo /D (section*.6) >> >> -% 847 0 obj +% 852 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 399.459 227.098 411.519] +/Rect [164.653 387.504 227.098 399.563] /A << /S /GoTo /D (section*.7) >> >> -% 848 0 obj +% 853 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 387.504 262.236 399.563] +/Rect [164.653 375.549 262.236 387.608] /A << /S /GoTo /D (section*.8) >> >> -% 849 0 obj +% 854 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 375.549 282.36 387.608] +/Rect [164.653 363.593 282.36 375.653] /A << /S /GoTo /D (section*.9) >> >> -% 850 0 obj +% 855 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 363.593 254.803 375.653] +/Rect [164.653 351.638 254.803 363.698] /A << /S /GoTo /D (section*.10) >> >> -% 851 0 obj +% 856 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 351.638 253.488 363.698] +/Rect [164.653 339.683 253.488 351.743] /A << /S /GoTo /D (section*.11) >> >> -% 852 0 obj +% 857 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 339.683 280.328 351.743] +/Rect [164.653 327.728 280.328 339.788] /A << /S /GoTo /D (section*.12) >> >> -% 853 0 obj +% 858 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 327.728 252.871 339.788] +/Rect [164.653 315.773 252.871 327.832] /A << /S /GoTo /D (section*.13) >> >> -% 854 0 obj +% 859 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 315.773 281.971 327.832] +/Rect [164.653 303.818 281.971 315.877] /A << /S /GoTo /D (section*.14) >> >> -% 855 0 obj +% 860 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 303.818 296.477 315.877] +/Rect [164.653 291.862 296.477 303.922] /A << /S /GoTo /D (section*.15) >> >> -% 856 0 obj +% 861 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 291.862 305.742 303.922] +/Rect [164.653 279.907 305.742 291.967] /A << /S /GoTo /D (section*.16) >> >> -% 857 0 obj +% 862 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 279.907 293.966 291.967] +/Rect [164.653 267.952 293.966 280.012] /A << /S /GoTo /D (section*.17) >> >> -% 858 0 obj +% 863 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 267.952 292.711 280.012] +/Rect [164.653 255.997 292.711 268.057] /A << /S /GoTo /D (section*.18) >> >> -% 859 0 obj +% 864 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 255.997 319.55 268.057] +/Rect [164.653 244.042 319.55 256.101] /A << /S /GoTo /D (section*.19) >> >> -% 863 0 obj +% 868 0 obj << -/D [861 0 R /XYZ 149.705 753.953 null] +/D [866 0 R /XYZ 149.705 753.953 null] >> -% 860 0 obj +% 865 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F62 671 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 879 0 obj +% 884 0 obj << /Type /Page -/Contents 880 0 R -/Resources 878 0 R +/Contents 885 0 R +/Resources 883 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 868 0 R 869 0 R 870 0 R 871 0 R 872 0 R 873 0 R 874 0 R 875 0 R 876 0 R 877 0 R ] +/Parent 886 0 R +/Annots [ 873 0 R 874 0 R 875 0 R 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R ] >> -% 868 0 obj +% 873 0 obj << /Type /Annot /Subtype /Link @@ -5289,7 +5315,7 @@ stream /Rect [408.168 585.966 420.123 595.071] /A << /S /GoTo /D (cite.metcalf) >> >> -% 869 0 obj +% 874 0 obj << /Type /Annot /Subtype /Link @@ -5297,7 +5323,7 @@ stream /Rect [300.381 514.126 312.336 523.231] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 870 0 obj +% 875 0 obj << /Type /Annot /Subtype /Link @@ -5305,7 +5331,7 @@ stream /Rect [311.368 502.171 323.323 511.127] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 871 0 obj +% 876 0 obj << /Type /Annot /Subtype /Link @@ -5313,7 +5339,7 @@ stream /Rect [327.422 502.171 339.378 511.276] /A << /S /GoTo /D (cite.RouXiaXu:11) >> >> -% 872 0 obj +% 877 0 obj << /Type /Annot /Subtype /Link @@ -5321,7 +5347,7 @@ stream /Rect [234.17 442.286 246.125 451.392] /A << /S /GoTo /D (cite.machiels) >> >> -% 873 0 obj +% 878 0 obj << /Type /Annot /Subtype /Link @@ -5329,7 +5355,7 @@ stream /Rect [241.917 370.546 248.891 379.402] /A << /S /GoTo /D (cite.sblas97) >> >> -% 874 0 obj +% 879 0 obj << /Type /Annot /Subtype /Link @@ -5337,7 +5363,7 @@ stream /Rect [251.448 370.446 258.422 379.402] /A << /S /GoTo /D (cite.sblas02) >> >> -% 875 0 obj +% 880 0 obj << /Type /Annot /Subtype /Link @@ -5345,7 +5371,7 @@ stream /Rect [226.689 358.591 238.644 367.597] /A << /S /GoTo /D (cite.BLAS1) >> >> -% 876 0 obj +% 881 0 obj << /Type /Annot /Subtype /Link @@ -5353,7 +5379,7 @@ stream /Rect [241.633 358.591 248.606 367.597] /A << /S /GoTo /D (cite.BLAS2) >> >> -% 877 0 obj +% 882 0 obj << /Type /Annot /Subtype /Link @@ -5363,23 +5389,23 @@ stream >> % 7 0 obj << -/D [879 0 R /XYZ 99.895 716.092 null] +/D [884 0 R /XYZ 99.895 716.092 null] >> -% 878 0 obj +% 883 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 898 0 obj +% 903 0 obj << /Type /Page -/Contents 899 0 R -/Resources 897 0 R +/Contents 904 0 R +/Resources 902 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 892 0 R 893 0 R 894 0 R ] +/Parent 886 0 R +/Annots [ 897 0 R 898 0 R 899 0 R ] >> -% 901 0 obj +% 906 0 obj << /Producer (GPL Ghostscript 9.04) /CreationDate (D:20111215145523+01'00') @@ -5388,15 +5414,15 @@ stream /Creator (fig2dev Version 3.2 Patchlevel 5d) /Author (sfilippo@donald \(Salvatore Filippone\)) >> -% 902 0 obj +% 907 0 obj << /Type /ExtGState /OPM 1 >> -% 903 0 obj +% 908 0 obj << /BaseFont /JEJNJE+Times-Roman -/FontDescriptor 904 0 R +/FontDescriptor 909 0 R /Type /Font /FirstChar 32 /LastChar 116 @@ -5404,7 +5430,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 904 0 obj +% 909 0 obj << /Type /FontDescriptor /FontName /JEJNJE+Times-Roman @@ -5418,9 +5444,9 @@ stream /MissingWidth 500 /XHeight 460 /CharSet (/A/B/F/I/L/M/P/S/a/c/e/f/g/i/l/n/o/p/r/s/space/t/three/two/zero) -/FontFile3 905 0 R +/FontFile3 910 0 R >> -% 892 0 obj +% 897 0 obj << /Type /Annot /Subtype /Link @@ -5428,7 +5454,7 @@ stream /Rect [268.275 538.551 275.249 550.611] /A << /S /GoTo /D (figure.1) >> >> -% 893 0 obj +% 898 0 obj << /Type /Annot /Subtype /Link @@ -5436,7 +5462,7 @@ stream /Rect [443.339 469.47 450.312 478.427] /A << /S /GoTo /D (cite.BLACS) >> >> -% 894 0 obj +% 899 0 obj << /Type /Annot /Subtype /Link @@ -5446,28 +5472,28 @@ stream >> % 11 0 obj << -/D [898 0 R /XYZ 150.705 675.823 null] +/D [903 0 R /XYZ 150.705 675.823 null] >> -% 900 0 obj +% 905 0 obj << -/D [898 0 R /XYZ 150.705 272.018 null] +/D [903 0 R /XYZ 150.705 272.018 null] >> -% 897 0 obj +% 902 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F60 666 0 R >> -/XObject << /Im2 895 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F60 670 0 R >> +/XObject << /Im2 900 0 R >> /ProcSet [ /PDF /Text ] >> -% 910 0 obj +% 915 0 obj << /Type /Page -/Contents 911 0 R -/Resources 909 0 R +/Contents 916 0 R +/Resources 914 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 896 0 R 907 0 R 908 0 R ] +/Parent 886 0 R +/Annots [ 901 0 R 912 0 R 913 0 R ] >> -% 896 0 obj +% 901 0 obj << /Type /Annot /Subtype /Link @@ -5475,7 +5501,7 @@ stream /Rect [275.119 609.332 287.074 618.438] /A << /S /GoTo /D (cite.METIS) >> >> -% 907 0 obj +% 912 0 obj << /Type /Annot /Subtype /Link @@ -5483,7 +5509,7 @@ stream /Rect [232.706 534.258 238.983 547.962] /A << /S /GoTo /D (Hfootnote.1) >> >> -% 908 0 obj +% 913 0 obj << /Type /Annot /Subtype /Link @@ -5491,54 +5517,54 @@ stream /Rect [157.808 185.645 164.084 199.235] /A << /S /GoTo /D (Hfootnote.2) >> >> -% 912 0 obj +% 917 0 obj << -/D [910 0 R /XYZ 98.895 753.953 null] +/D [915 0 R /XYZ 98.895 753.953 null] >> % 15 0 obj << -/D [910 0 R /XYZ 99.895 504.866 null] +/D [915 0 R /XYZ 99.895 504.866 null] >> -% 916 0 obj +% 921 0 obj << -/D [910 0 R /XYZ 114.242 167.999 null] +/D [915 0 R /XYZ 114.242 167.999 null] >> -% 917 0 obj +% 922 0 obj << -/D [910 0 R /XYZ 114.242 158.184 null] +/D [915 0 R /XYZ 114.242 158.184 null] >> -% 909 0 obj +% 914 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F67 913 0 R /F59 665 0 R /F91 914 0 R /F93 915 0 R >> +/Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R /F59 669 0 R /F91 919 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 923 0 obj +% 928 0 obj << /Type /Page -/Contents 924 0 R -/Resources 922 0 R +/Contents 929 0 R +/Resources 927 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 919 0 R 920 0 R ] +/Parent 886 0 R +/Annots [ 924 0 R 925 0 R ] >> -% 927 0 obj +% 932 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070123225315) /ModDate (D:20070123225315) >> -% 928 0 obj +% 933 0 obj << /Type /ExtGState /OPM 1 >> -% 929 0 obj +% 934 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> -% 919 0 obj +% 924 0 obj << /Type /Annot /Subtype /Link @@ -5546,7 +5572,7 @@ stream /Rect [327.281 638.21 334.255 647.166] /A << /S /GoTo /D (cite.2007c) >> >> -% 920 0 obj +% 925 0 obj << /Type /Annot /Subtype /Link @@ -5554,34 +5580,34 @@ stream /Rect [337.243 638.309 344.217 647.166] /A << /S /GoTo /D (cite.2007d) >> >> -% 925 0 obj +% 930 0 obj << -/D [923 0 R /XYZ 149.705 753.953 null] +/D [928 0 R /XYZ 149.705 753.953 null] >> -% 926 0 obj +% 931 0 obj << -/D [923 0 R /XYZ 150.705 353.614 null] +/D [928 0 R /XYZ 150.705 353.614 null] >> % 19 0 obj << -/D [923 0 R /XYZ 150.705 270.035 null] +/D [928 0 R /XYZ 150.705 270.035 null] >> -% 922 0 obj +% 927 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R >> -/XObject << /Im3 921 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> +/XObject << /Im3 926 0 R >> /ProcSet [ /PDF /Text ] >> -% 935 0 obj +% 940 0 obj << /Type /Page -/Contents 936 0 R -/Resources 934 0 R +/Contents 941 0 R +/Resources 939 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 932 0 R 933 0 R ] +/Parent 886 0 R +/Annots [ 937 0 R 938 0 R ] >> -% 932 0 obj +% 937 0 obj << /Type /Annot /Subtype /Link @@ -5589,7 +5615,7 @@ stream /Rect [404.739 354.196 411.713 366.255] /A << /S /GoTo /D (section.3) >> >> -% 933 0 obj +% 938 0 obj << /Type /Annot /Subtype /Link @@ -5597,78 +5623,78 @@ stream /Rect [172.593 318.033 179.567 330.093] /A << /S /GoTo /D (section.6) >> >> -% 937 0 obj +% 942 0 obj << -/D [935 0 R /XYZ 98.895 753.953 null] +/D [940 0 R /XYZ 98.895 753.953 null] >> -% 934 0 obj +% 939 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 940 0 obj +% 945 0 obj << /Type /Page -/Contents 941 0 R -/Resources 939 0 R +/Contents 946 0 R +/Resources 944 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R +/Parent 886 0 R >> -% 942 0 obj +% 947 0 obj << -/D [940 0 R /XYZ 149.705 753.953 null] +/D [945 0 R /XYZ 149.705 753.953 null] >> % 23 0 obj << -/D [940 0 R /XYZ 150.705 716.092 null] +/D [945 0 R /XYZ 150.705 716.092 null] >> -% 943 0 obj +% 948 0 obj << -/D [940 0 R /XYZ 150.705 282.521 null] +/D [945 0 R /XYZ 150.705 282.521 null] >> -% 944 0 obj +% 949 0 obj << -/D [940 0 R /XYZ 150.705 261.733 null] +/D [945 0 R /XYZ 150.705 261.733 null] >> -% 945 0 obj +% 950 0 obj << -/D [940 0 R /XYZ 150.705 240.946 null] +/D [945 0 R /XYZ 150.705 240.946 null] >> -% 946 0 obj +% 951 0 obj << -/D [940 0 R /XYZ 150.705 220.159 null] +/D [945 0 R /XYZ 150.705 220.159 null] >> -% 947 0 obj +% 952 0 obj << -/D [940 0 R /XYZ 150.705 188.012 null] +/D [945 0 R /XYZ 150.705 188.012 null] >> -% 948 0 obj +% 953 0 obj << -/D [940 0 R /XYZ 150.705 167.072 null] +/D [945 0 R /XYZ 150.705 167.072 null] >> -% 949 0 obj +% 954 0 obj << -/D [940 0 R /XYZ 150.705 148.646 null] +/D [945 0 R /XYZ 150.705 148.646 null] >> -% 950 0 obj +% 955 0 obj << -/D [940 0 R /XYZ 150.705 132.275 null] +/D [945 0 R /XYZ 150.705 132.275 null] >> -% 939 0 obj +% 944 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 953 0 obj +% 958 0 obj << /Type /Page -/Contents 954 0 R -/Resources 952 0 R +/Contents 959 0 R +/Resources 957 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 938 0 R ] +/Parent 976 0 R +/Annots [ 943 0 R ] >> -% 938 0 obj +% 943 0 obj << /Type /Annot /Subtype /Link @@ -5676,66 +5702,54 @@ stream /Rect [176.109 690.964 182.386 703.958] /A << /S /GoTo /D (Hfootnote.3) >> >> -% 955 0 obj -<< -/D [953 0 R /XYZ 98.895 753.953 null] ->> -% 956 0 obj -<< -/D [953 0 R /XYZ 99.895 716.092 null] ->> -% 957 0 obj -<< -/D [953 0 R /XYZ 99.895 686.784 null] ->> -% 958 0 obj -<< -/D [953 0 R /XYZ 99.895 618.259 null] ->> -% 959 0 obj -<< -/D [953 0 R /XYZ 99.895 595.952 null] ->> % 960 0 obj << -/D [953 0 R /XYZ 99.895 573.645 null] +/D [958 0 R /XYZ 98.895 753.953 null] >> % 961 0 obj << -/D [953 0 R /XYZ 99.895 539.978 null] +/D [958 0 R /XYZ 99.895 716.092 null] >> % 962 0 obj << -/D [953 0 R /XYZ 99.895 517.075 null] +/D [958 0 R /XYZ 99.895 686.784 null] >> % 963 0 obj << -/D [953 0 R /XYZ 99.895 494.768 null] +/D [958 0 R /XYZ 99.895 618.259 null] >> % 964 0 obj << -/D [953 0 R /XYZ 99.895 469.873 null] +/D [958 0 R /XYZ 99.895 595.952 null] >> % 965 0 obj << -/D [953 0 R /XYZ 99.895 442.062 null] +/D [958 0 R /XYZ 99.895 573.645 null] >> % 966 0 obj << -/D [953 0 R /XYZ 99.895 412.296 null] +/D [958 0 R /XYZ 99.895 539.978 null] >> % 967 0 obj << -/D [953 0 R /XYZ 99.895 395.165 null] +/D [958 0 R /XYZ 99.895 517.075 null] >> % 968 0 obj << -/D [953 0 R /XYZ 99.895 377.438 null] +/D [958 0 R /XYZ 99.895 494.768 null] +>> +% 969 0 obj +<< +/D [958 0 R /XYZ 99.895 469.873 null] +>> +% 970 0 obj +<< +/D [958 0 R /XYZ 99.895 442.062 null] >> endstream endobj -976 0 obj +981 0 obj << /Length 7173 >> @@ -5791,7 +5805,7 @@ ET endstream endobj -987 0 obj +992 0 obj << /Length 8187 >> @@ -5939,7 +5953,7 @@ ET endstream endobj -995 0 obj +1000 0 obj << /Length 6070 >> @@ -6066,7 +6080,7 @@ ET endstream endobj -1006 0 obj +1011 0 obj << /Length 7045 >> @@ -6305,7 +6319,7 @@ ET endstream endobj -1022 0 obj +1027 0 obj << /Length 4957 >> @@ -6434,7 +6448,7 @@ ET endstream endobj -1026 0 obj +1031 0 obj << /Length 4367 >> @@ -6560,7 +6574,7 @@ ET endstream endobj -1031 0 obj +1036 0 obj << /Length 4754 >> @@ -6727,7 +6741,7 @@ ET endstream endobj -1036 0 obj +1041 0 obj << /Length 5640 >> @@ -6823,7 +6837,7 @@ ET endstream endobj -1043 0 obj +1048 0 obj << /Length 7676 >> @@ -7089,7 +7103,7 @@ ET endstream endobj -1050 0 obj +1055 0 obj << /Length 7385 >> @@ -7319,7 +7333,7 @@ ET endstream endobj -1055 0 obj +1060 0 obj << /Length 3860 >> @@ -7423,200 +7437,55 @@ ET endstream endobj -1060 0 obj -<< -/Length 4447 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.2.6)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(sparse)-250(matrix)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf 0 -20.135 Td [(memory_size)-525(=)-525(a%sizeof\050\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -23.732 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ -0 g 0 G - -56.339 -35.687 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F59 9.9626 Tf -72.777 -30.58 Td [(3.2.7)-1000(get)]TJ -ET -q -1 0 0 1 144.219 517.21 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 147.208 517.011 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -47.313 -20.135 Td [(write)]TJ -0 g 0 G - [(\050)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ -0 g 0 G - [(,)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(a%get_fmt\050\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ -0 g 0 G - -56.339 -35.686 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)-244(short)-245(string)-244(describing)-245(the)-244(dynamic)-245(type)-244(of)-245(the)-244(matrix.)-308(Pr)18(e-)]TJ -47.87 -11.955 Td [(de\002ned)-250(values)-250(include)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 102.415 0 Td [(NULL)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(COO)]TJ/F62 9.9626 Tf 15.691 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(CSR)]TJ/F62 9.9626 Tf 18.181 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(CSC)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ/F59 9.9626 Tf -227.127 -30.581 Td [(3.2.8)-1000(is)]TJ -ET -q -1 0 0 1 138.122 315.533 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 141.111 315.333 Td [(bld,)-250(is)]TJ -ET -q -1 0 0 1 169.922 315.533 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 172.911 315.333 Td [(upd,)-250(is)]TJ -ET -q -1 0 0 1 204.493 315.533 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 207.482 315.333 Td [(asb)-250(\227)-250(Status)-250(check)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -107.587 -20.135 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050a%is_bld\050\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -11.955 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050a%is_upd\050\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -11.955 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050a%is_asb\050\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ -0 g 0 G -0 g 0 G -/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ -0 g 0 G - -56.339 -35.686 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)]TJ -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 9.966 0 Td [(logical)]TJ -0 g 0 G -/F62 9.9626 Tf 38.827 0 Td [(value)-222(indicating)-223(whether)-222(the)-222(matrix)-223(is)-222(in)-222(the)-223(Build,)]TJ -96.663 -11.955 Td [(Update)-250(or)-250(Assembled)-250(state,)-250(r)18(espectively)111(.)]TJ -0 g 0 G - 141.968 -29.888 Td [(19)]TJ -0 g 0 G -ET - -endstream -endobj -972 0 obj +977 0 obj << /Type /ObjStm /N 100 -/First 913 -/Length 9266 ->> -stream -969 0 952 57 975 150 951 292 973 444 977 591 27 648 978 704 979 761 980 816 -981 872 982 929 983 986 31 1043 974 1099 986 1218 984 1352 988 1499 35 1555 39 1610 -989 1665 985 1721 994 1814 990 1964 991 2110 992 2262 996 2414 997 2471 998 2528 999 2585 -1000 2642 1001 2700 993 2758 1005 2838 1002 2985 1003 3138 1007 3291 1008 3349 1009 3407 1010 3465 -1011 3523 1012 3581 1013 3639 1014 3697 1015 3755 1017 3813 1004 3871 1021 3980 1018 4127 1019 4275 -1023 4422 43 4481 47 4538 51 4595 55 4652 1020 4709 1025 4842 1027 4960 59 5018 63 5074 -67 5130 1024 5186 1030 5280 1032 5398 71 5457 75 5514 1033 5571 79 5630 83 5685 1029 5742 -1035 5836 1037 5954 87 6012 91 6068 95 6124 1034 6180 1042 6274 1038 6431 1039 6589 1040 6741 -1044 6889 99 6948 103 7005 1045 7063 1041 7122 1049 7216 1051 7334 1047 7392 1052 7450 107 7509 -111 7566 1048 7623 1054 7732 1056 7850 115 7909 119 7967 1057 8025 123 8084 1053 8141 1059 8235 -% 969 0 obj +/First 915 +/Length 9172 +>> +stream +971 0 972 56 973 112 974 168 957 225 980 318 956 460 978 612 982 759 27 816 +983 872 984 929 985 984 986 1040 987 1097 988 1154 31 1211 979 1267 991 1386 989 1520 +993 1667 35 1723 39 1778 994 1833 990 1889 999 1982 995 2133 996 2279 997 2431 1001 2583 +1002 2641 1003 2699 1004 2757 1005 2815 1006 2873 998 2931 1010 3011 1007 3158 1008 3311 1012 3464 +1013 3522 1014 3580 1015 3638 1016 3696 1017 3754 1018 3812 1019 3870 1020 3928 1022 3986 1009 4044 +1026 4153 1023 4300 1024 4448 1028 4595 43 4654 47 4711 51 4768 55 4825 1025 4882 1030 5015 +1032 5133 59 5191 63 5247 67 5303 1029 5359 1035 5453 1037 5571 71 5630 75 5687 1038 5744 +79 5803 83 5858 1034 5915 1040 6009 1042 6127 87 6185 91 6241 95 6297 1039 6353 1047 6447 +1043 6604 1044 6762 1045 6914 1049 7062 99 7121 103 7178 1050 7236 1046 7295 1054 7389 1056 7507 +1052 7565 1057 7623 107 7682 111 7739 1053 7796 1059 7905 1061 8023 115 8082 119 8140 1062 8198 +% 971 0 obj << -/D [953 0 R /XYZ 114.242 139.255 null] +/D [958 0 R /XYZ 99.895 412.296 null] >> -% 952 0 obj +% 972 0 obj +<< +/D [958 0 R /XYZ 99.895 395.165 null] +>> +% 973 0 obj +<< +/D [958 0 R /XYZ 99.895 377.438 null] +>> +% 974 0 obj << -/Font << /F62 667 0 R /F67 913 0 R /F97 970 0 R >> +/D [958 0 R /XYZ 114.242 139.255 null] +>> +% 957 0 obj +<< +/Font << /F62 671 0 R /F67 918 0 R /F97 975 0 R >> /ProcSet [ /PDF /Text ] >> -% 975 0 obj +% 980 0 obj << /Type /Page -/Contents 976 0 R -/Resources 974 0 R +/Contents 981 0 R +/Resources 979 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 951 0 R 973 0 R ] +/Parent 976 0 R +/Annots [ 956 0 R 978 0 R ] >> -% 951 0 obj +% 956 0 obj << /Type /Annot /Subtype /Link @@ -7624,7 +7493,7 @@ stream /Rect [269.647 674.054 284.093 683.464] /A << /S /GoTo /D (subsection.2.3) >> >> -% 973 0 obj +% 978 0 obj << /Type /Annot /Subtype /Link @@ -7632,57 +7501,57 @@ stream /Rect [168.073 254.848 175.046 266.907] /A << /S /GoTo /D (section.3) >> >> -% 977 0 obj +% 982 0 obj << -/D [975 0 R /XYZ 149.705 753.953 null] +/D [980 0 R /XYZ 149.705 753.953 null] >> % 27 0 obj << -/D [975 0 R /XYZ 150.705 716.092 null] +/D [980 0 R /XYZ 150.705 716.092 null] >> -% 978 0 obj +% 983 0 obj << -/D [975 0 R /XYZ 150.705 671.065 null] +/D [980 0 R /XYZ 150.705 671.065 null] >> -% 979 0 obj +% 984 0 obj << -/D [975 0 R /XYZ 150.705 648.1 null] +/D [980 0 R /XYZ 150.705 648.1 null] >> -% 980 0 obj +% 985 0 obj << -/D [975 0 R /XYZ 150.705 573.59 null] +/D [980 0 R /XYZ 150.705 573.59 null] >> -% 981 0 obj +% 986 0 obj << -/D [975 0 R /XYZ 150.705 516.424 null] +/D [980 0 R /XYZ 150.705 516.424 null] >> -% 982 0 obj +% 987 0 obj << -/D [975 0 R /XYZ 150.705 483.864 null] +/D [980 0 R /XYZ 150.705 483.864 null] >> -% 983 0 obj +% 988 0 obj << -/D [975 0 R /XYZ 150.705 463.343 null] +/D [980 0 R /XYZ 150.705 463.343 null] >> % 31 0 obj << -/D [975 0 R /XYZ 150.705 408.307 null] +/D [980 0 R /XYZ 150.705 408.307 null] >> -% 974 0 obj +% 979 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 986 0 obj +% 991 0 obj << /Type /Page -/Contents 987 0 R -/Resources 985 0 R +/Contents 992 0 R +/Resources 990 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 984 0 R ] +/Parent 976 0 R +/Annots [ 989 0 R ] >> -% 984 0 obj +% 989 0 obj << /Type /Annot /Subtype /Link @@ -7690,37 +7559,37 @@ stream /Rect [268.105 173.115 275.079 185.175] /A << /S /GoTo /D (section.6) >> >> -% 988 0 obj +% 993 0 obj << -/D [986 0 R /XYZ 98.895 753.953 null] +/D [991 0 R /XYZ 98.895 753.953 null] >> % 35 0 obj << -/D [986 0 R /XYZ 99.895 716.092 null] +/D [991 0 R /XYZ 99.895 716.092 null] >> % 39 0 obj << -/D [986 0 R /XYZ 99.895 279.545 null] +/D [991 0 R /XYZ 99.895 279.545 null] >> -% 989 0 obj +% 994 0 obj << -/D [986 0 R /XYZ 342.47 236.897 null] +/D [991 0 R /XYZ 342.47 236.897 null] >> -% 985 0 obj +% 990 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 994 0 obj +% 999 0 obj << /Type /Page -/Contents 995 0 R -/Resources 993 0 R +/Contents 1000 0 R +/Resources 998 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 990 0 R 991 0 R 992 0 R ] +/Parent 976 0 R +/Annots [ 995 0 R 996 0 R 997 0 R ] >> -% 990 0 obj +% 995 0 obj << /Type /Annot /Subtype /Link @@ -7728,7 +7597,7 @@ stream /Rect [482.63 399.338 489.604 411.398] /A << /S /GoTo /D (section.6) >> >> -% 991 0 obj +% 996 0 obj << /Type /Annot /Subtype /Link @@ -7736,7 +7605,7 @@ stream /Rect [354.987 193.202 369.432 205.262] /A << /S /GoTo /D (subsection.3.3) >> >> -% 992 0 obj +% 997 0 obj << /Type /Annot /Subtype /Link @@ -7744,45 +7613,45 @@ stream /Rect [354.987 148.883 369.432 160.943] /A << /S /GoTo /D (subsection.3.3) >> >> -% 996 0 obj +% 1001 0 obj << -/D [994 0 R /XYZ 149.705 753.953 null] +/D [999 0 R /XYZ 149.705 753.953 null] >> -% 997 0 obj +% 1002 0 obj << -/D [994 0 R /XYZ 150.705 293.402 null] +/D [999 0 R /XYZ 150.705 293.402 null] >> -% 998 0 obj +% 1003 0 obj << -/D [994 0 R /XYZ 150.705 278.496 null] +/D [999 0 R /XYZ 150.705 278.496 null] >> -% 999 0 obj +% 1004 0 obj << -/D [994 0 R /XYZ 150.705 261.039 null] +/D [999 0 R /XYZ 150.705 261.039 null] >> -% 1000 0 obj +% 1005 0 obj << -/D [994 0 R /XYZ 150.705 244.857 null] +/D [999 0 R /XYZ 150.705 244.857 null] >> -% 1001 0 obj +% 1006 0 obj << -/D [994 0 R /XYZ 150.705 228.675 null] +/D [999 0 R /XYZ 150.705 228.675 null] >> -% 993 0 obj +% 998 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F62 671 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1005 0 obj +% 1010 0 obj << /Type /Page -/Contents 1006 0 R -/Resources 1004 0 R +/Contents 1011 0 R +/Resources 1009 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 1002 0 R 1003 0 R ] +/Parent 976 0 R +/Annots [ 1007 0 R 1008 0 R ] >> -% 1002 0 obj +% 1007 0 obj << /Type /Annot /Subtype /Link @@ -7790,7 +7659,7 @@ stream /Rect [304.177 614.119 318.623 626.179] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1003 0 obj +% 1008 0 obj << /Type /Annot /Subtype /Link @@ -7798,61 +7667,61 @@ stream /Rect [304.177 568.778 318.623 580.837] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1007 0 obj +% 1012 0 obj << -/D [1005 0 R /XYZ 98.895 753.953 null] +/D [1010 0 R /XYZ 98.895 753.953 null] >> -% 1008 0 obj +% 1013 0 obj << -/D [1005 0 R /XYZ 99.895 716.092 null] +/D [1010 0 R /XYZ 99.895 716.092 null] >> -% 1009 0 obj +% 1014 0 obj << -/D [1005 0 R /XYZ 99.895 702.226 null] +/D [1010 0 R /XYZ 99.895 702.226 null] >> -% 1010 0 obj +% 1015 0 obj << -/D [1005 0 R /XYZ 99.895 684.257 null] +/D [1010 0 R /XYZ 99.895 684.257 null] >> -% 1011 0 obj +% 1016 0 obj << -/D [1005 0 R /XYZ 99.895 667.564 null] +/D [1010 0 R /XYZ 99.895 667.564 null] >> -% 1012 0 obj +% 1017 0 obj << -/D [1005 0 R /XYZ 99.895 650.871 null] +/D [1010 0 R /XYZ 99.895 650.871 null] >> -% 1013 0 obj +% 1018 0 obj << -/D [1005 0 R /XYZ 99.895 541.236 null] +/D [1010 0 R /XYZ 99.895 541.236 null] >> -% 1014 0 obj +% 1019 0 obj << -/D [1005 0 R /XYZ 99.895 524.542 null] +/D [1010 0 R /XYZ 99.895 524.542 null] >> -% 1015 0 obj +% 1020 0 obj << -/D [1005 0 R /XYZ 99.895 507.849 null] +/D [1010 0 R /XYZ 99.895 507.849 null] >> -% 1017 0 obj +% 1022 0 obj << -/D [1005 0 R /XYZ 99.895 288.977 null] +/D [1010 0 R /XYZ 99.895 288.977 null] >> -% 1004 0 obj +% 1009 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F102 1016 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1021 0 R >> /ProcSet [ /PDF /Text ] >> -% 1021 0 obj +% 1026 0 obj << /Type /Page -/Contents 1022 0 R -/Resources 1020 0 R +/Contents 1027 0 R +/Resources 1025 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 1018 0 R 1019 0 R ] +/Parent 976 0 R +/Annots [ 1023 0 R 1024 0 R ] >> -% 1018 0 obj +% 1023 0 obj << /Type /Annot /Subtype /Link @@ -7860,7 +7729,7 @@ stream /Rect [352.861 524.509 359.835 537.101] /A << /S /GoTo /D (section.1) >> >> -% 1019 0 obj +% 1024 0 obj << /Type /Annot /Subtype /Link @@ -7868,136 +7737,136 @@ stream /Rect [186.147 314.537 193.12 327.129] /A << /S /GoTo /D (section.1) >> >> -% 1023 0 obj +% 1028 0 obj << -/D [1021 0 R /XYZ 149.705 753.953 null] +/D [1026 0 R /XYZ 149.705 753.953 null] >> % 43 0 obj << -/D [1021 0 R /XYZ 150.705 716.092 null] +/D [1026 0 R /XYZ 150.705 716.092 null] >> % 47 0 obj << -/D [1021 0 R /XYZ 150.705 696.532 null] +/D [1026 0 R /XYZ 150.705 696.532 null] >> % 51 0 obj << -/D [1021 0 R /XYZ 150.705 498.276 null] +/D [1026 0 R /XYZ 150.705 498.276 null] >> % 55 0 obj << -/D [1021 0 R /XYZ 150.705 288.305 null] +/D [1026 0 R /XYZ 150.705 288.305 null] >> -% 1020 0 obj +% 1025 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1025 0 obj +% 1030 0 obj << /Type /Page -/Contents 1026 0 R -/Resources 1024 0 R +/Contents 1031 0 R +/Resources 1029 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1033 0 R >> -% 1027 0 obj +% 1032 0 obj << -/D [1025 0 R /XYZ 98.895 753.953 null] +/D [1030 0 R /XYZ 98.895 753.953 null] >> % 59 0 obj << -/D [1025 0 R /XYZ 99.895 716.092 null] +/D [1030 0 R /XYZ 99.895 716.092 null] >> % 63 0 obj << -/D [1025 0 R /XYZ 99.895 529.559 null] +/D [1030 0 R /XYZ 99.895 529.559 null] >> % 67 0 obj << -/D [1025 0 R /XYZ 99.895 276.666 null] +/D [1030 0 R /XYZ 99.895 276.666 null] >> -% 1024 0 obj +% 1029 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1030 0 obj +% 1035 0 obj << /Type /Page -/Contents 1031 0 R -/Resources 1029 0 R +/Contents 1036 0 R +/Resources 1034 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1033 0 R >> -% 1032 0 obj +% 1037 0 obj << -/D [1030 0 R /XYZ 149.705 753.953 null] +/D [1035 0 R /XYZ 149.705 753.953 null] >> % 71 0 obj << -/D [1030 0 R /XYZ 150.705 716.092 null] +/D [1035 0 R /XYZ 150.705 716.092 null] >> % 75 0 obj << -/D [1030 0 R /XYZ 150.705 519.544 null] +/D [1035 0 R /XYZ 150.705 519.544 null] >> -% 1033 0 obj +% 1038 0 obj << -/D [1030 0 R /XYZ 397.537 356.277 null] +/D [1035 0 R /XYZ 397.537 356.277 null] >> % 79 0 obj << -/D [1030 0 R /XYZ 150.705 305.6 null] +/D [1035 0 R /XYZ 150.705 305.6 null] >> % 83 0 obj << -/D [1030 0 R /XYZ 150.705 194.578 null] +/D [1035 0 R /XYZ 150.705 194.578 null] >> -% 1029 0 obj +% 1034 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1035 0 obj +% 1040 0 obj << /Type /Page -/Contents 1036 0 R -/Resources 1034 0 R +/Contents 1041 0 R +/Resources 1039 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1033 0 R >> -% 1037 0 obj +% 1042 0 obj << -/D [1035 0 R /XYZ 98.895 753.953 null] +/D [1040 0 R /XYZ 98.895 753.953 null] >> % 87 0 obj << -/D [1035 0 R /XYZ 99.895 583.842 null] +/D [1040 0 R /XYZ 99.895 583.842 null] >> % 91 0 obj << -/D [1035 0 R /XYZ 99.895 466.211 null] +/D [1040 0 R /XYZ 99.895 466.211 null] >> % 95 0 obj << -/D [1035 0 R /XYZ 99.895 256.035 null] +/D [1040 0 R /XYZ 99.895 256.035 null] >> -% 1034 0 obj +% 1039 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1042 0 obj +% 1047 0 obj << /Type /Page -/Contents 1043 0 R -/Resources 1041 0 R +/Contents 1048 0 R +/Resources 1046 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R -/Annots [ 1038 0 R 1039 0 R 1040 0 R ] +/Parent 1033 0 R +/Annots [ 1043 0 R 1044 0 R 1045 0 R ] >> -% 1038 0 obj +% 1043 0 obj << /Type /Annot /Subtype /Link @@ -8005,7 +7874,7 @@ stream /Rect [187.544 240.393 199.499 249.399] /A << /S /GoTo /D (cite.DesignPatterns) >> >> -% 1039 0 obj +% 1044 0 obj << /Type /Annot /Subtype /Link @@ -8013,7 +7882,7 @@ stream /Rect [267.981 240.293 279.936 249.399] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 1040 0 obj +% 1045 0 obj << /Type /Annot /Subtype /Link @@ -8021,105 +7890,245 @@ stream /Rect [458.483 237.643 465.457 249.703] /A << /S /GoTo /D (listing.2) >> >> -% 1044 0 obj +% 1049 0 obj << -/D [1042 0 R /XYZ 149.705 753.953 null] +/D [1047 0 R /XYZ 149.705 753.953 null] >> % 99 0 obj << -/D [1042 0 R /XYZ 150.705 544.277 null] +/D [1047 0 R /XYZ 150.705 544.277 null] >> % 103 0 obj << -/D [1042 0 R /XYZ 150.705 296.936 null] +/D [1047 0 R /XYZ 150.705 296.936 null] >> -% 1045 0 obj +% 1050 0 obj << -/D [1042 0 R /XYZ 170.328 265.359 null] +/D [1047 0 R /XYZ 170.328 265.359 null] >> -% 1041 0 obj +% 1046 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1049 0 obj +% 1054 0 obj << /Type /Page -/Contents 1050 0 R -/Resources 1048 0 R +/Contents 1055 0 R +/Resources 1053 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1033 0 R >> -% 1051 0 obj +% 1056 0 obj << -/D [1049 0 R /XYZ 98.895 753.953 null] +/D [1054 0 R /XYZ 98.895 753.953 null] >> -% 1047 0 obj +% 1052 0 obj << -/D [1049 0 R /XYZ 99.895 665.282 null] +/D [1054 0 R /XYZ 99.895 665.282 null] >> -% 1052 0 obj +% 1057 0 obj << -/D [1049 0 R /XYZ 409.052 603.446 null] +/D [1054 0 R /XYZ 409.052 603.446 null] >> % 107 0 obj << -/D [1049 0 R /XYZ 99.895 294.773 null] +/D [1054 0 R /XYZ 99.895 294.773 null] >> % 111 0 obj << -/D [1049 0 R /XYZ 99.895 276.048 null] +/D [1054 0 R /XYZ 99.895 276.048 null] >> -% 1048 0 obj +% 1053 0 obj << -/Font << /F102 1016 0 R /F62 667 0 R /F67 913 0 R /F59 665 0 R >> +/Font << /F102 1021 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1054 0 obj +% 1059 0 obj << /Type /Page -/Contents 1055 0 R -/Resources 1053 0 R +/Contents 1060 0 R +/Resources 1058 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1033 0 R >> -% 1056 0 obj +% 1061 0 obj << -/D [1054 0 R /XYZ 149.705 753.953 null] +/D [1059 0 R /XYZ 149.705 753.953 null] >> % 115 0 obj << -/D [1054 0 R /XYZ 150.705 716.092 null] +/D [1059 0 R /XYZ 150.705 716.092 null] >> % 119 0 obj << -/D [1054 0 R /XYZ 150.705 540.892 null] ->> -% 1057 0 obj -<< -/D [1054 0 R /XYZ 150.705 358.382 null] ->> -% 123 0 obj -<< -/D [1054 0 R /XYZ 150.705 300.51 null] +/D [1059 0 R /XYZ 150.705 540.892 null] >> -% 1053 0 obj +% 1062 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] +/D [1059 0 R /XYZ 150.705 358.382 null] >> -% 1059 0 obj + +endstream +endobj +1066 0 obj << -/Type /Page -/Contents 1060 0 R -/Resources 1058 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Length 4447 >> +stream +0 g 0 G +0 g 0 G +BT +/F59 9.9626 Tf 99.895 706.129 Td [(3.2.6)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(sparse)-250(matrix)]TJ +0 g 0 G +0 g 0 G +/F67 9.9626 Tf 0 -20.135 Td [(memory_size)-525(=)-525(a%sizeof\050\051)]TJ +0 g 0 G +/F59 9.9626 Tf 0 -23.732 Td [(T)90(ype:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(a)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +0 g 0 G + -56.339 -35.687 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(Function)-250(value)]TJ +0 g 0 G +/F62 9.9626 Tf 72.777 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F59 9.9626 Tf -72.777 -30.58 Td [(3.2.7)-1000(get)]TJ +ET +q +1 0 0 1 144.219 517.21 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F59 9.9626 Tf 147.208 517.011 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F67 9.9626 Tf -47.313 -20.135 Td [(write)]TJ +0 g 0 G + [(\050)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(,)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(a%get_fmt\050\051)]TJ +0 g 0 G +/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(a)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +0 g 0 G + -56.339 -35.686 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(Function)-250(value)]TJ +0 g 0 G +/F62 9.9626 Tf 72.777 0 Td [(A)-244(short)-245(string)-244(describing)-245(the)-244(dynamic)-245(type)-244(of)-245(the)-244(matrix.)-308(Pr)18(e-)]TJ -47.87 -11.955 Td [(de\002ned)-250(values)-250(include)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F67 9.9626 Tf 102.415 0 Td [(NULL)]TJ +0 g 0 G +/F62 9.9626 Tf 20.921 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(COO)]TJ/F62 9.9626 Tf 15.691 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(CSR)]TJ/F62 9.9626 Tf 18.181 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(CSC)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ/F59 9.9626 Tf -227.127 -30.581 Td [(3.2.8)-1000(is)]TJ +ET +q +1 0 0 1 138.122 315.533 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F59 9.9626 Tf 141.111 315.333 Td [(bld,)-250(is)]TJ +ET +q +1 0 0 1 169.922 315.533 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F59 9.9626 Tf 172.911 315.333 Td [(upd,)-250(is)]TJ +ET +q +1 0 0 1 204.493 315.533 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F59 9.9626 Tf 207.482 315.333 Td [(asb)-250(\227)-250(Status)-250(check)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F67 9.9626 Tf -107.587 -20.135 Td [(if)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(\050a%is_bld\050\051\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(then)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -11.955 Td [(if)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(\050a%is_upd\050\051\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(then)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -11.955 Td [(if)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(\050a%is_asb\050\051\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(then)]TJ +0 g 0 G +0 g 0 G +/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(a)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +0 g 0 G + -56.339 -35.686 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(Function)-250(value)]TJ +0 g 0 G +/F62 9.9626 Tf 72.777 0 Td [(A)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F67 9.9626 Tf 9.966 0 Td [(logical)]TJ +0 g 0 G +/F62 9.9626 Tf 38.827 0 Td [(value)-222(indicating)-223(whether)-222(the)-222(matrix)-223(is)-222(in)-222(the)-223(Build,)]TJ -96.663 -11.955 Td [(Update)-250(or)-250(Assembled)-250(state,)-250(r)18(espectively)111(.)]TJ +0 g 0 G + 141.968 -29.888 Td [(19)]TJ +0 g 0 G +ET endstream endobj -1066 0 obj +1071 0 obj << /Length 5883 >> @@ -8305,7 +8314,7 @@ ET endstream endobj -1070 0 obj +1075 0 obj << /Length 4616 >> @@ -8426,7 +8435,7 @@ ET endstream endobj -1074 0 obj +1079 0 obj << /Length 4627 >> @@ -8557,7 +8566,7 @@ ET endstream endobj -1078 0 obj +1083 0 obj << /Length 6324 >> @@ -8711,7 +8720,7 @@ ET endstream endobj -1084 0 obj +1089 0 obj << /Length 7619 >> @@ -8994,7 +9003,7 @@ ET endstream endobj -1090 0 obj +1095 0 obj << /Length 5064 >> @@ -9154,7 +9163,7 @@ ET endstream endobj -1097 0 obj +1102 0 obj << /Length 3867 >> @@ -9236,7 +9245,7 @@ ET endstream endobj -1104 0 obj +1109 0 obj << /Length 4464 >> @@ -9327,7 +9336,7 @@ ET endstream endobj -1110 0 obj +1115 0 obj << /Length 4234 >> @@ -9464,7 +9473,7 @@ ET endstream endobj -1114 0 obj +1119 0 obj << /Length 158 >> @@ -9480,7 +9489,7 @@ ET endstream endobj -1125 0 obj +1130 0 obj << /Length 7465 >> @@ -9679,7 +9688,7 @@ ET endstream endobj -1132 0 obj +1137 0 obj << /Length 2404 >> @@ -9753,7 +9762,7 @@ ET endstream endobj -1142 0 obj +1147 0 obj << /Length 7647 >> @@ -9949,7 +9958,7 @@ ET endstream endobj -1148 0 obj +1153 0 obj << /Length 4270 >> @@ -10061,366 +10070,174 @@ BT 0 g 0 G ET -endstream -endobj -1159 0 obj -<< -/Length 8519 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ -ET -q -1 0 0 1 198.238 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-283(subr)18(outine)-284(computes)-283(a)-284(series)-284(of)-283(dot)-284(pr)18(oducts)-283(among)-284(the)-283(columns)-284(of)-283(two)]TJ 0 -11.955 Td [(dense)-250(matrices)]TJ/F60 9.9626 Tf 68.208 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(:)]TJ/F60 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F60 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F60 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F93 10.3811 Tf 5.23 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf -214.288 -16.876 Td [(If)-300(the)-299(matrices)-300(ar)18(e)-299(complex,)-312(then)-300(the)-300(usual)-299(convention)-300(applies,)-312(i.e.)-459(the)-299(conju-)]TJ 0 -11.955 Td [(gate)-239(transpose)-239(of)]TJ/F60 9.9626 Tf 77.351 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(is)-239(used.)-307(If)]TJ/F60 9.9626 Tf 45.493 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(and)]TJ/F60 9.9626 Tf 19.375 0 Td [(y)]TJ/F62 9.9626 Tf 7.489 0 Td [(ar)18(e)-239(of)-239(rank)-240(one,)-241(then)]TJ/F60 9.9626 Tf 92.601 0 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 14.552 0 Td [(is)-239(a)-240(scalar)75(,)-242(else)-239(it)]TJ -272.039 -11.955 Td [(is)-250(a)-250(rank)-250(one)-250(array)111(.)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.174 -11.955 Td [(call)]TJ -0 g 0 G - [-525(psb_gedots\050res,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(y,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(info\051)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -ET -q -1 0 0 1 230.392 595.704 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -BT -/F60 9.9626 Tf 236.394 587.136 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 12.17 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 93.135 0 Td [(Subroutine)]TJ -ET -q -1 0 0 1 230.392 583.351 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -BT -/F62 9.9626 Tf 236.369 574.783 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ -ET -q -1 0 0 1 373.603 574.982 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 574.783 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ -ET -q -1 0 0 1 373.603 563.027 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 562.828 Td [(gedots)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ -ET -q -1 0 0 1 373.603 551.072 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 550.872 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ -ET -q -1 0 0 1 373.603 539.116 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 538.917 Td [(gedots)]TJ -ET -q -1 0 0 1 230.392 535.131 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -0 g 0 G -BT -/F62 9.9626 Tf 280.768 506.753 Td [(T)92(able)-250(3:)-310(Data)-250(types)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -130.063 -32.002 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.22 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.22 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ -ET -q -1 0 0 1 436.673 388.689 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 439.811 388.49 Td [(T)]TJ -ET -q -1 0 0 1 445.669 388.689 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 448.807 388.49 Td [(vect)]TJ -ET -q -1 0 0 1 470.356 388.689 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 473.495 388.49 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-312(3)]TJ -0 g 0 G - [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -82.958 -19.221 Td [(y)]TJ -0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ -ET -q -1 0 0 1 436.673 297.738 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 439.811 297.539 Td [(T)]TJ -ET -q -1 0 0 1 445.669 297.738 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 448.807 297.539 Td [(vect)]TJ -ET -q -1 0 0 1 470.356 297.738 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 473.495 297.539 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-313(numbers)-314(of)-313(type)-313(speci\002ed)-314(in)-313(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-313(3)]TJ -0 g 0 G - [(.)-500(The)-314(rank)-313(of)]TJ/F60 9.9626 Tf 274.898 0 Td [(y)]TJ/F62 9.9626 Tf 8.228 0 Td [(must)-313(be)]TJ -283.126 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.116 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -83.227 -19.22 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 254.607 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 174.207 254.408 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ -ET -q -1 0 0 1 324.173 206.786 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 327.311 206.587 Td [(desc)]TJ -ET -q -1 0 0 1 348.86 206.786 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 351.998 206.587 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -222.214 -19.22 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.221 Td [(res)]TJ -0 g 0 G -/F62 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F60 9.9626 Tf 126.33 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.968 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-289(as:)-389(a)-290(number)-290(or)-289(a)-290(rank-one)-289(array)-290(of)-289(the)-290(data)-289(type)-290(indicated)-289(in)]TJ 0 -11.955 Td [(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(2)]TJ -0 g 0 G - [(.)]TJ -0 g 0 G - 141.967 -29.888 Td [(34)]TJ -0 g 0 G -ET - endstream endobj 1063 0 obj << /Type /ObjStm /N 100 -/First 957 -/Length 10603 ->> -stream -1061 0 127 58 131 115 135 172 1058 229 1065 323 1067 441 139 500 143 558 1064 616 -1069 710 1071 828 147 886 151 943 1068 1000 1073 1094 1075 1212 155 1271 159 1329 163 1387 -1072 1445 1077 1539 1079 1657 167 1715 1076 1771 1083 1865 1080 2013 1081 2159 1085 2307 171 2366 -175 2424 179 2481 183 2538 1086 2596 1082 2655 1089 2749 1091 2867 1087 2925 187 2983 191 3040 -195 3097 1088 3154 1096 3263 1093 3411 1094 3557 1098 3702 199 3761 1095 3819 1103 3913 1100 4052 -1105 4200 204 4258 208 4315 212 4371 1106 4428 1102 4486 1109 4593 1101 4732 1111 4879 1107 4938 -216 4997 1108 5055 1113 5164 1115 5282 220 5340 1112 5397 1124 5478 1116 5662 1117 5808 1118 5952 -1119 6098 1120 6244 1121 6388 1126 6534 224 6593 1099 6651 1123 6710 1131 6857 1122 7014 1128 7161 -1129 7305 1133 7451 1130 7509 1141 7616 1135 7791 1136 7932 1137 8078 1138 8222 1139 8367 1143 8514 -228 8573 1144 8631 1140 8690 1147 8810 1145 8949 1149 9095 1150 9153 1146 9211 1158 9318 1151 9502 -% 1061 0 obj +/First 956 +/Length 10436 +>> +stream +123 0 1058 57 1065 151 1067 269 127 327 131 384 135 441 1064 498 1070 592 1072 710 +139 769 143 827 1069 885 1074 979 1076 1097 147 1155 151 1212 1073 1269 1078 1363 1080 1481 +155 1540 159 1598 163 1656 1077 1714 1082 1808 1084 1926 167 1984 1081 2040 1088 2134 1085 2282 +1086 2428 1090 2576 171 2635 175 2693 179 2750 183 2807 1091 2865 1087 2924 1094 3018 1096 3136 +1092 3194 187 3252 191 3309 195 3366 1093 3423 1101 3532 1098 3680 1099 3826 1103 3971 199 4030 +1100 4088 1108 4182 1105 4321 1110 4469 204 4527 208 4584 212 4640 1111 4697 1107 4755 1114 4862 +1106 5001 1116 5148 1112 5207 216 5266 1113 5324 1118 5433 1120 5551 220 5609 1117 5666 1129 5747 +1121 5931 1122 6077 1123 6221 1124 6367 1125 6513 1126 6657 1131 6803 224 6862 1104 6920 1128 6979 +1136 7126 1127 7283 1133 7430 1134 7574 1138 7720 1135 7778 1146 7885 1140 8060 1141 8201 1142 8347 +1143 8491 1144 8636 1148 8783 228 8842 1149 8900 1145 8959 1152 9079 1150 9218 1154 9364 1155 9422 +% 123 0 obj +<< +/D [1059 0 R /XYZ 150.705 300.51 null] +>> +% 1058 0 obj +<< +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1065 0 obj +<< +/Type /Page +/Contents 1066 0 R +/Resources 1064 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1068 0 R +>> +% 1067 0 obj << -/D [1059 0 R /XYZ 98.895 753.953 null] +/D [1065 0 R /XYZ 98.895 753.953 null] >> % 127 0 obj << -/D [1059 0 R /XYZ 99.895 716.092 null] +/D [1065 0 R /XYZ 99.895 716.092 null] >> % 131 0 obj << -/D [1059 0 R /XYZ 99.895 526.761 null] +/D [1065 0 R /XYZ 99.895 526.761 null] >> % 135 0 obj << -/D [1059 0 R /XYZ 99.895 326.359 null] +/D [1065 0 R /XYZ 99.895 326.359 null] >> -% 1058 0 obj +% 1064 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1065 0 obj +% 1070 0 obj << /Type /Page -/Contents 1066 0 R -/Resources 1064 0 R +/Contents 1071 0 R +/Resources 1069 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1068 0 R >> -% 1067 0 obj +% 1072 0 obj << -/D [1065 0 R /XYZ 149.705 753.953 null] +/D [1070 0 R /XYZ 149.705 753.953 null] >> % 139 0 obj << -/D [1065 0 R /XYZ 150.705 716.092 null] +/D [1070 0 R /XYZ 150.705 716.092 null] >> % 143 0 obj << -/D [1065 0 R /XYZ 150.705 474.131 null] +/D [1070 0 R /XYZ 150.705 474.131 null] >> -% 1064 0 obj +% 1069 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1069 0 obj +% 1074 0 obj << /Type /Page -/Contents 1070 0 R -/Resources 1068 0 R +/Contents 1075 0 R +/Resources 1073 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1068 0 R >> -% 1071 0 obj +% 1076 0 obj << -/D [1069 0 R /XYZ 98.895 753.953 null] +/D [1074 0 R /XYZ 98.895 753.953 null] >> % 147 0 obj << -/D [1069 0 R /XYZ 99.895 716.092 null] +/D [1074 0 R /XYZ 99.895 716.092 null] >> % 151 0 obj << -/D [1069 0 R /XYZ 99.895 376.562 null] +/D [1074 0 R /XYZ 99.895 376.562 null] >> -% 1068 0 obj +% 1073 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1073 0 obj +% 1078 0 obj << /Type /Page -/Contents 1074 0 R -/Resources 1072 0 R +/Contents 1079 0 R +/Resources 1077 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1068 0 R >> -% 1075 0 obj +% 1080 0 obj << -/D [1073 0 R /XYZ 149.705 753.953 null] +/D [1078 0 R /XYZ 149.705 753.953 null] >> % 155 0 obj << -/D [1073 0 R /XYZ 150.705 716.092 null] +/D [1078 0 R /XYZ 150.705 716.092 null] >> % 159 0 obj << -/D [1073 0 R /XYZ 150.705 484.709 null] +/D [1078 0 R /XYZ 150.705 484.709 null] >> % 163 0 obj << -/D [1073 0 R /XYZ 150.705 251.325 null] +/D [1078 0 R /XYZ 150.705 251.325 null] >> -% 1072 0 obj +% 1077 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1077 0 obj +% 1082 0 obj << /Type /Page -/Contents 1078 0 R -/Resources 1076 0 R +/Contents 1083 0 R +/Resources 1081 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1068 0 R >> -% 1079 0 obj +% 1084 0 obj << -/D [1077 0 R /XYZ 98.895 753.953 null] +/D [1082 0 R /XYZ 98.895 753.953 null] >> % 167 0 obj << -/D [1077 0 R /XYZ 99.895 476.15 null] +/D [1082 0 R /XYZ 99.895 476.15 null] >> -% 1076 0 obj +% 1081 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1083 0 obj +% 1088 0 obj << /Type /Page -/Contents 1084 0 R -/Resources 1082 0 R +/Contents 1089 0 R +/Resources 1087 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R -/Annots [ 1080 0 R 1081 0 R ] +/Parent 1068 0 R +/Annots [ 1085 0 R 1086 0 R ] >> -% 1080 0 obj +% 1085 0 obj << /Type /Annot /Subtype /Link @@ -10428,7 +10245,7 @@ stream /Rect [248.894 164.341 255.868 176.4] /A << /S /GoTo /D (section.6) >> >> -% 1081 0 obj +% 1086 0 obj << /Type /Annot /Subtype /Link @@ -10436,78 +10253,78 @@ stream /Rect [343.512 128.475 350.485 140.535] /A << /S /GoTo /D (listing.3) >> >> -% 1085 0 obj +% 1090 0 obj << -/D [1083 0 R /XYZ 149.705 753.953 null] +/D [1088 0 R /XYZ 149.705 753.953 null] >> % 171 0 obj << -/D [1083 0 R /XYZ 150.705 716.092 null] +/D [1088 0 R /XYZ 150.705 716.092 null] >> % 175 0 obj << -/D [1083 0 R /XYZ 150.705 586.94 null] +/D [1088 0 R /XYZ 150.705 586.94 null] >> % 179 0 obj << -/D [1083 0 R /XYZ 150.705 402.59 null] +/D [1088 0 R /XYZ 150.705 402.59 null] >> % 183 0 obj << -/D [1083 0 R /XYZ 150.705 234.114 null] +/D [1088 0 R /XYZ 150.705 234.114 null] >> -% 1086 0 obj +% 1091 0 obj << -/D [1083 0 R /XYZ 170.799 204.012 null] +/D [1088 0 R /XYZ 170.799 204.012 null] >> -% 1082 0 obj +% 1087 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1089 0 obj +% 1094 0 obj << /Type /Page -/Contents 1090 0 R -/Resources 1088 0 R +/Contents 1095 0 R +/Resources 1093 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R +/Parent 1097 0 R >> -% 1091 0 obj +% 1096 0 obj << -/D [1089 0 R /XYZ 98.895 753.953 null] +/D [1094 0 R /XYZ 98.895 753.953 null] >> -% 1087 0 obj +% 1092 0 obj << -/D [1089 0 R /XYZ 99.895 446.997 null] +/D [1094 0 R /XYZ 99.895 446.997 null] >> % 187 0 obj << -/D [1089 0 R /XYZ 99.895 387.147 null] +/D [1094 0 R /XYZ 99.895 387.147 null] >> % 191 0 obj << -/D [1089 0 R /XYZ 99.895 370.604 null] +/D [1094 0 R /XYZ 99.895 370.604 null] >> % 195 0 obj << -/D [1089 0 R /XYZ 99.895 194.093 null] +/D [1094 0 R /XYZ 99.895 194.093 null] >> -% 1088 0 obj +% 1093 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R >> /ProcSet [ /PDF /Text ] >> -% 1096 0 obj +% 1101 0 obj << /Type /Page -/Contents 1097 0 R -/Resources 1095 0 R +/Contents 1102 0 R +/Resources 1100 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1093 0 R 1094 0 R ] +/Parent 1097 0 R +/Annots [ 1098 0 R 1099 0 R ] >> -% 1093 0 obj +% 1098 0 obj << /Type /Annot /Subtype /Link @@ -10515,7 +10332,7 @@ stream /Rect [428.968 383.557 435.942 395.616] /A << /S /GoTo /D (table.1) >> >> -% 1094 0 obj +% 1099 0 obj << /Type /Annot /Subtype /Link @@ -10523,29 +10340,29 @@ stream /Rect [428.968 240.08 435.942 252.139] /A << /S /GoTo /D (table.1) >> >> -% 1098 0 obj +% 1103 0 obj << -/D [1096 0 R /XYZ 149.705 753.953 null] +/D [1101 0 R /XYZ 149.705 753.953 null] >> % 199 0 obj << -/D [1096 0 R /XYZ 150.705 610.712 null] +/D [1101 0 R /XYZ 150.705 610.712 null] >> -% 1095 0 obj +% 1100 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1103 0 obj +% 1108 0 obj << /Type /Page -/Contents 1104 0 R -/Resources 1102 0 R +/Contents 1109 0 R +/Resources 1107 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1100 0 R ] +/Parent 1097 0 R +/Annots [ 1105 0 R ] >> -% 1100 0 obj +% 1105 0 obj << /Type /Annot /Subtype /Link @@ -10553,41 +10370,41 @@ stream /Rect [127.814 152.385 134.788 164.445] /A << /S /GoTo /D (listing.4) >> >> -% 1105 0 obj +% 1110 0 obj << -/D [1103 0 R /XYZ 98.895 753.953 null] +/D [1108 0 R /XYZ 98.895 753.953 null] >> % 204 0 obj << -/D [1103 0 R /XYZ 99.895 716.092 null] +/D [1108 0 R /XYZ 99.895 716.092 null] >> % 208 0 obj << -/D [1103 0 R /XYZ 99.895 430.41 null] +/D [1108 0 R /XYZ 99.895 430.41 null] >> % 212 0 obj << -/D [1103 0 R /XYZ 99.895 226.203 null] +/D [1108 0 R /XYZ 99.895 226.203 null] >> -% 1106 0 obj +% 1111 0 obj << -/D [1103 0 R /XYZ 258.62 168.146 null] +/D [1108 0 R /XYZ 258.62 168.146 null] >> -% 1102 0 obj +% 1107 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1109 0 obj +% 1114 0 obj << /Type /Page -/Contents 1110 0 R -/Resources 1108 0 R +/Contents 1115 0 R +/Resources 1113 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1101 0 R ] +/Parent 1097 0 R +/Annots [ 1106 0 R ] >> -% 1101 0 obj +% 1106 0 obj << /Type /Annot /Subtype /Link @@ -10595,54 +10412,54 @@ stream /Rect [297.461 580.64 304.435 592.699] /A << /S /GoTo /D (section.6) >> >> -% 1111 0 obj +% 1116 0 obj << -/D [1109 0 R /XYZ 149.705 753.953 null] +/D [1114 0 R /XYZ 149.705 753.953 null] >> -% 1107 0 obj +% 1112 0 obj << -/D [1109 0 R /XYZ 150.705 665.282 null] +/D [1114 0 R /XYZ 150.705 665.282 null] >> % 216 0 obj << -/D [1109 0 R /XYZ 150.705 613.372 null] +/D [1114 0 R /XYZ 150.705 613.372 null] >> -% 1108 0 obj +% 1113 0 obj << -/Font << /F102 1016 0 R /F62 667 0 R /F59 665 0 R /F67 913 0 R >> +/Font << /F102 1021 0 R /F62 671 0 R /F59 669 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1113 0 obj +% 1118 0 obj << /Type /Page -/Contents 1114 0 R -/Resources 1112 0 R +/Contents 1119 0 R +/Resources 1117 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R +/Parent 1097 0 R >> -% 1115 0 obj +% 1120 0 obj << -/D [1113 0 R /XYZ 98.895 753.953 null] +/D [1118 0 R /XYZ 98.895 753.953 null] >> % 220 0 obj << -/D [1113 0 R /XYZ 99.895 716.092 null] +/D [1118 0 R /XYZ 99.895 716.092 null] >> -% 1112 0 obj +% 1117 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1124 0 obj +% 1129 0 obj << /Type /Page -/Contents 1125 0 R -/Resources 1123 0 R +/Contents 1130 0 R +/Resources 1128 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R ] +/Parent 1097 0 R +/Annots [ 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R ] >> -% 1116 0 obj +% 1121 0 obj << /Type /Annot /Subtype /Link @@ -10650,7 +10467,7 @@ stream /Rect [428.968 413.274 435.942 425.334] /A << /S /GoTo /D (table.1) >> >> -% 1117 0 obj +% 1122 0 obj << /Type /Annot /Subtype /Link @@ -10658,7 +10475,7 @@ stream /Rect [419.358 345.063 495.412 357.123] /A << /S /GoTo /D (vdata) >> >> -% 1118 0 obj +% 1123 0 obj << /Type /Annot /Subtype /Link @@ -10666,7 +10483,7 @@ stream /Rect [381.755 333.108 388.729 345.168] /A << /S /GoTo /D (table.1) >> >> -% 1119 0 obj +% 1124 0 obj << /Type /Annot /Subtype /Link @@ -10674,7 +10491,7 @@ stream /Rect [428.968 252.942 435.942 265.002] /A << /S /GoTo /D (table.1) >> >> -% 1120 0 obj +% 1125 0 obj << /Type /Annot /Subtype /Link @@ -10682,7 +10499,7 @@ stream /Rect [419.358 184.731 495.412 196.791] /A << /S /GoTo /D (vdata) >> >> -% 1121 0 obj +% 1126 0 obj << /Type /Annot /Subtype /Link @@ -10690,33 +10507,33 @@ stream /Rect [397.868 172.776 404.842 184.835] /A << /S /GoTo /D (table.1) >> >> -% 1126 0 obj +% 1131 0 obj << -/D [1124 0 R /XYZ 149.705 753.953 null] +/D [1129 0 R /XYZ 149.705 753.953 null] >> % 224 0 obj << -/D [1124 0 R /XYZ 150.705 716.092 null] +/D [1129 0 R /XYZ 150.705 716.092 null] >> -% 1099 0 obj +% 1104 0 obj << -/D [1124 0 R /XYZ 150.705 558.947 null] +/D [1129 0 R /XYZ 150.705 558.947 null] >> -% 1123 0 obj +% 1128 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1131 0 obj +% 1136 0 obj << /Type /Page -/Contents 1132 0 R -/Resources 1130 0 R +/Contents 1137 0 R +/Resources 1135 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1122 0 R 1128 0 R 1129 0 R ] +/Parent 1139 0 R +/Annots [ 1127 0 R 1133 0 R 1134 0 R ] >> -% 1122 0 obj +% 1127 0 obj << /Type /Annot /Subtype /Link @@ -10724,7 +10541,7 @@ stream /Rect [256.048 690.368 323.106 702.428] /A << /S /GoTo /D (descdata) >> >> -% 1128 0 obj +% 1133 0 obj << /Type /Annot /Subtype /Link @@ -10732,7 +10549,7 @@ stream /Rect [368.549 600.704 444.603 612.764] /A << /S /GoTo /D (vdata) >> >> -% 1129 0 obj +% 1134 0 obj << /Type /Annot /Subtype /Link @@ -10740,25 +10557,25 @@ stream /Rect [344.963 588.749 351.937 600.809] /A << /S /GoTo /D (table.1) >> >> -% 1133 0 obj +% 1138 0 obj << -/D [1131 0 R /XYZ 98.895 753.953 null] +/D [1136 0 R /XYZ 98.895 753.953 null] >> -% 1130 0 obj +% 1135 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F60 666 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1141 0 obj +% 1146 0 obj << /Type /Page -/Contents 1142 0 R -/Resources 1140 0 R +/Contents 1147 0 R +/Resources 1145 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R ] +/Parent 1139 0 R +/Annots [ 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R ] >> -% 1135 0 obj +% 1140 0 obj << /Type /Annot /Subtype /Link @@ -10766,7 +10583,7 @@ stream /Rect [419.358 355.7 495.412 367.76] /A << /S /GoTo /D (vdata) >> >> -% 1136 0 obj +% 1141 0 obj << /Type /Annot /Subtype /Link @@ -10774,7 +10591,7 @@ stream /Rect [381.755 343.745 388.729 355.804] /A << /S /GoTo /D (table.2) >> >> -% 1137 0 obj +% 1142 0 obj << /Type /Annot /Subtype /Link @@ -10782,7 +10599,7 @@ stream /Rect [419.358 264.018 495.412 276.078] /A << /S /GoTo /D (vdata) >> >> -% 1138 0 obj +% 1143 0 obj << /Type /Annot /Subtype /Link @@ -10790,7 +10607,7 @@ stream /Rect [381.88 252.063 388.854 264.123] /A << /S /GoTo /D (table.2) >> >> -% 1139 0 obj +% 1144 0 obj << /Type /Annot /Subtype /Link @@ -10798,33 +10615,33 @@ stream /Rect [306.858 172.336 373.916 184.396] /A << /S /GoTo /D (descdata) >> >> -% 1143 0 obj +% 1148 0 obj << -/D [1141 0 R /XYZ 149.705 753.953 null] +/D [1146 0 R /XYZ 149.705 753.953 null] >> % 228 0 obj << -/D [1141 0 R /XYZ 150.705 716.092 null] +/D [1146 0 R /XYZ 150.705 716.092 null] >> -% 1144 0 obj +% 1149 0 obj << -/D [1141 0 R /XYZ 150.705 499.951 null] +/D [1146 0 R /XYZ 150.705 499.951 null] >> -% 1140 0 obj +% 1145 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1147 0 obj +% 1152 0 obj << /Type /Page -/Contents 1148 0 R -/Resources 1146 0 R +/Contents 1153 0 R +/Resources 1151 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1145 0 R ] +/Parent 1139 0 R +/Annots [ 1150 0 R ] >> -% 1145 0 obj +% 1150 0 obj << /Type /Annot /Subtype /Link @@ -10832,40 +10649,227 @@ stream /Rect [378.159 602.697 385.133 614.756] /A << /S /GoTo /D (table.2) >> >> -% 1149 0 obj -<< -/D [1147 0 R /XYZ 98.895 753.953 null] ->> -% 1150 0 obj -<< -/D [1147 0 R /XYZ 99.895 512.639 null] ->> -% 1146 0 obj +% 1154 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] +/D [1152 0 R /XYZ 98.895 753.953 null] >> -% 1158 0 obj +% 1155 0 obj << -/Type /Page -/Contents 1159 0 R -/Resources 1157 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R ] +/D [1152 0 R /XYZ 99.895 512.639 null] >> -% 1151 0 obj + +endstream +endobj +1165 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 384.684 495.412 396.744] -/A << /S /GoTo /D (vdata) >> +/Length 8519 >> +stream +0 g 0 G +0 g 0 G +BT +/F59 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ +ET +q +1 0 0 1 198.238 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F59 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-283(subr)18(outine)-284(computes)-283(a)-284(series)-284(of)-283(dot)-284(pr)18(oducts)-283(among)-284(the)-283(columns)-284(of)-283(two)]TJ 0 -11.955 Td [(dense)-250(matrices)]TJ/F60 9.9626 Tf 68.208 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(:)]TJ/F60 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F60 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F60 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F93 10.3811 Tf 5.23 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf -214.288 -16.876 Td [(If)-300(the)-299(matrices)-300(ar)18(e)-299(complex,)-312(then)-300(the)-300(usual)-299(convention)-300(applies,)-312(i.e.)-459(the)-299(conju-)]TJ 0 -11.955 Td [(gate)-239(transpose)-239(of)]TJ/F60 9.9626 Tf 77.351 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(is)-239(used.)-307(If)]TJ/F60 9.9626 Tf 45.493 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(and)]TJ/F60 9.9626 Tf 19.375 0 Td [(y)]TJ/F62 9.9626 Tf 7.489 0 Td [(ar)18(e)-239(of)-239(rank)-240(one,)-241(then)]TJ/F60 9.9626 Tf 92.601 0 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 14.552 0 Td [(is)-239(a)-240(scalar)75(,)-242(else)-239(it)]TJ -272.039 -11.955 Td [(is)-250(a)-250(rank)-250(one)-250(array)111(.)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F67 9.9626 Tf 20.174 -11.955 Td [(call)]TJ +0 g 0 G + [-525(psb_gedots\050res,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(y,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(info\051)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +ET +q +1 0 0 1 230.392 595.704 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +BT +/F60 9.9626 Tf 236.394 587.136 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 12.17 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 93.135 0 Td [(Subroutine)]TJ +ET +q +1 0 0 1 230.392 583.351 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +BT +/F62 9.9626 Tf 236.369 574.783 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +ET +q +1 0 0 1 373.603 574.982 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 376.592 574.783 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +ET +q +1 0 0 1 373.603 563.027 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 376.592 562.828 Td [(gedots)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +ET +q +1 0 0 1 373.603 551.072 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 376.592 550.872 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +ET +q +1 0 0 1 373.603 539.116 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 376.592 538.917 Td [(gedots)]TJ +ET +q +1 0 0 1 230.392 535.131 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +0 g 0 G +BT +/F62 9.9626 Tf 280.768 506.753 Td [(T)92(able)-250(3:)-310(Data)-250(types)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +/F59 9.9626 Tf -130.063 -32.002 Td [(T)90(ype:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F59 9.9626 Tf -29.828 -19.22 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.22 Td [(x)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +ET +q +1 0 0 1 436.673 388.689 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 439.811 388.49 Td [(T)]TJ +ET +q +1 0 0 1 445.669 388.689 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 448.807 388.49 Td [(vect)]TJ +ET +q +1 0 0 1 470.356 388.689 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 473.495 388.49 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-312(3)]TJ +0 g 0 G + [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -82.958 -19.221 Td [(y)]TJ +0 g 0 G +/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +ET +q +1 0 0 1 436.673 297.738 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 439.811 297.539 Td [(T)]TJ +ET +q +1 0 0 1 445.669 297.738 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 448.807 297.539 Td [(vect)]TJ +ET +q +1 0 0 1 470.356 297.738 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 473.495 297.539 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-313(numbers)-314(of)-313(type)-313(speci\002ed)-314(in)-313(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-313(3)]TJ +0 g 0 G + [(.)-500(The)-314(rank)-313(of)]TJ/F60 9.9626 Tf 274.898 0 Td [(y)]TJ/F62 9.9626 Tf 8.228 0 Td [(must)-313(be)]TJ -283.126 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.116 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -83.227 -19.22 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 254.607 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F59 9.9626 Tf 174.207 254.408 Td [(a)]TJ +0 g 0 G +/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +ET +q +1 0 0 1 324.173 206.786 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 327.311 206.587 Td [(desc)]TJ +ET +q +1 0 0 1 348.86 206.786 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 351.998 206.587 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -222.214 -19.22 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.221 Td [(res)]TJ +0 g 0 G +/F62 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F60 9.9626 Tf 126.33 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.968 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-289(as:)-389(a)-290(number)-290(or)-289(a)-290(rank-one)-289(array)-290(of)-289(the)-290(data)-289(type)-290(indicated)-289(in)]TJ 0 -11.955 Td [(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(2)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G + 141.967 -29.888 Td [(34)]TJ +0 g 0 G +ET endstream endobj -1165 0 obj +1170 0 obj << /Length 582 >> @@ -10884,7 +10888,7 @@ ET endstream endobj -1172 0 obj +1177 0 obj << /Length 7777 >> @@ -11068,7 +11072,7 @@ ET endstream endobj -1177 0 obj +1182 0 obj << /Length 3043 >> @@ -11162,7 +11166,7 @@ ET endstream endobj -1186 0 obj +1191 0 obj << /Length 6432 >> @@ -11335,7 +11339,7 @@ ET endstream endobj -1194 0 obj +1199 0 obj << /Length 7404 >> @@ -11519,7 +11523,7 @@ ET endstream endobj -1199 0 obj +1204 0 obj << /Length 3046 >> @@ -11613,7 +11617,7 @@ ET endstream endobj -1207 0 obj +1212 0 obj << /Length 7502 >> @@ -11782,7 +11786,7 @@ ET endstream endobj -1212 0 obj +1217 0 obj << /Length 583 >> @@ -11801,7 +11805,7 @@ ET endstream endobj -1219 0 obj +1224 0 obj << /Length 6687 >> @@ -11992,7 +11996,7 @@ ET endstream endobj -1225 0 obj +1230 0 obj << /Length 4322 >> @@ -12075,7 +12079,7 @@ ET endstream endobj -1238 0 obj +1243 0 obj << /Length 6244 >> @@ -12248,7 +12252,7 @@ ET endstream endobj -1245 0 obj +1250 0 obj << /Length 5385 >> @@ -12402,7 +12406,7 @@ ET endstream endobj -1252 0 obj +1257 0 obj << /Length 5404 >> @@ -12556,7 +12560,7 @@ ET endstream endobj -1263 0 obj +1268 0 obj << /Length 7972 >> @@ -12779,25 +12783,47 @@ ET endstream endobj -1162 0 obj +1156 0 obj << /Type /ObjStm /N 100 -/First 984 -/Length 11501 ->> -stream -1152 0 1153 146 1154 290 1155 435 1156 582 1160 726 232 785 1161 843 1157 901 1164 1034 -1166 1152 1163 1210 1171 1291 1167 1448 1168 1592 1169 1738 1173 1885 236 1944 1174 2002 1170 2061 -1176 2194 1178 2312 1179 2370 1175 2427 1185 2521 1181 2678 1182 2822 1183 2968 1187 3115 240 3174 -1188 3232 1184 3291 1193 3424 1189 3581 1190 3725 1191 3868 1195 4015 244 4073 1196 4130 1192 4187 -1198 4320 1200 4438 1201 4497 1197 4555 1206 4649 1202 4806 1203 4950 1204 5096 1208 5243 248 5301 -1209 5358 1205 5416 1211 5549 1213 5667 1210 5726 1218 5807 1214 5964 1215 6107 1216 6253 1220 6400 -252 6458 1221 6515 1217 6572 1224 6692 1226 6810 1227 6869 1228 6928 1229 6987 1230 7046 1231 7105 -1232 7164 1223 7223 1237 7330 1233 7487 1234 7631 1235 7777 1239 7924 256 7982 1240 8039 1236 8097 -1244 8230 1241 8378 1242 8523 1246 8670 260 8729 1247 8787 1243 8845 1251 8965 1248 9113 1249 9258 -1253 9405 264 9463 1255 9520 1250 9577 1262 9712 1256 9878 1257 10025 1258 10170 1259 10312 1264 10458 -% 1152 0 obj +/First 986 +/Length 11591 +>> +stream +1151 0 1164 107 1157 291 1158 435 1159 581 1160 725 1161 870 1162 1017 1166 1161 232 1220 +1167 1278 1163 1336 1169 1469 1171 1587 1168 1645 1176 1726 1172 1883 1173 2027 1174 2173 1178 2320 +236 2379 1179 2437 1175 2496 1181 2629 1183 2747 1184 2805 1180 2862 1190 2956 1186 3113 1187 3257 +1188 3403 1192 3550 240 3609 1193 3667 1189 3726 1198 3859 1194 4016 1195 4160 1196 4303 1200 4450 +244 4508 1201 4565 1197 4622 1203 4755 1205 4873 1206 4932 1202 4990 1211 5084 1207 5241 1208 5385 +1209 5531 1213 5678 248 5736 1214 5793 1210 5851 1216 5984 1218 6102 1215 6161 1223 6242 1219 6399 +1220 6542 1221 6688 1225 6835 252 6893 1226 6950 1222 7007 1229 7127 1231 7245 1232 7304 1233 7363 +1234 7422 1235 7481 1236 7540 1237 7599 1228 7658 1242 7765 1238 7922 1239 8066 1240 8212 1244 8359 +256 8417 1245 8474 1241 8532 1249 8665 1246 8813 1247 8958 1251 9105 260 9164 1252 9222 1248 9280 +1256 9400 1253 9548 1254 9693 1258 9840 264 9898 1260 9955 1255 10012 1267 10147 1261 10313 1262 10460 +% 1151 0 obj +<< +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1164 0 obj +<< +/Type /Page +/Contents 1165 0 R +/Resources 1163 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1139 0 R +/Annots [ 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R ] +>> +% 1157 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.358 384.684 495.412 396.744] +/A << /S /GoTo /D (vdata) >> +>> +% 1158 0 obj << /Type /Annot /Subtype /Link @@ -12805,7 +12831,7 @@ stream /Rect [381.755 372.729 388.729 384.789] /A << /S /GoTo /D (table.3) >> >> -% 1153 0 obj +% 1159 0 obj << /Type /Annot /Subtype /Link @@ -12813,7 +12839,7 @@ stream /Rect [419.358 293.733 495.412 305.793] /A << /S /GoTo /D (vdata) >> >> -% 1154 0 obj +% 1160 0 obj << /Type /Annot /Subtype /Link @@ -12821,7 +12847,7 @@ stream /Rect [381.88 281.778 388.854 293.837] /A << /S /GoTo /D (table.3) >> >> -% 1155 0 obj +% 1161 0 obj << /Type /Annot /Subtype /Link @@ -12829,7 +12855,7 @@ stream /Rect [306.858 202.781 373.916 214.841] /A << /S /GoTo /D (descdata) >> >> -% 1156 0 obj +% 1162 0 obj << /Type /Annot /Subtype /Link @@ -12837,50 +12863,50 @@ stream /Rect [200.458 119.17 207.432 128.58] /A << /S /GoTo /D (table.2) >> >> -% 1160 0 obj +% 1166 0 obj << -/D [1158 0 R /XYZ 149.705 753.953 null] +/D [1164 0 R /XYZ 149.705 753.953 null] >> % 232 0 obj << -/D [1158 0 R /XYZ 150.705 716.092 null] +/D [1164 0 R /XYZ 150.705 716.092 null] >> -% 1161 0 obj +% 1167 0 obj << -/D [1158 0 R /XYZ 150.705 524.97 null] +/D [1164 0 R /XYZ 150.705 524.97 null] >> -% 1157 0 obj +% 1163 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1164 0 obj +% 1169 0 obj << /Type /Page -/Contents 1165 0 R -/Resources 1163 0 R +/Contents 1170 0 R +/Resources 1168 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R +/Parent 1139 0 R >> -% 1166 0 obj +% 1171 0 obj << -/D [1164 0 R /XYZ 98.895 753.953 null] +/D [1169 0 R /XYZ 98.895 753.953 null] >> -% 1163 0 obj +% 1168 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1171 0 obj +% 1176 0 obj << /Type /Page -/Contents 1172 0 R -/Resources 1170 0 R +/Contents 1177 0 R +/Resources 1175 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1167 0 R 1168 0 R 1169 0 R ] +/Parent 1139 0 R +/Annots [ 1172 0 R 1173 0 R 1174 0 R ] >> -% 1167 0 obj +% 1172 0 obj << /Type /Annot /Subtype /Link @@ -12888,7 +12914,7 @@ stream /Rect [419.358 358.503 495.412 370.562] /A << /S /GoTo /D (vdata) >> >> -% 1168 0 obj +% 1173 0 obj << /Type /Annot /Subtype /Link @@ -12896,7 +12922,7 @@ stream /Rect [377.462 346.547 384.436 358.607] /A << /S /GoTo /D (table.4) >> >> -% 1169 0 obj +% 1174 0 obj << /Type /Annot /Subtype /Link @@ -12904,54 +12930,54 @@ stream /Rect [306.858 280.074 373.916 292.134] /A << /S /GoTo /D (descdata) >> >> -% 1173 0 obj +% 1178 0 obj << -/D [1171 0 R /XYZ 149.705 753.953 null] +/D [1176 0 R /XYZ 149.705 753.953 null] >> % 236 0 obj << -/D [1171 0 R /XYZ 150.705 716.092 null] +/D [1176 0 R /XYZ 150.705 716.092 null] >> -% 1174 0 obj +% 1179 0 obj << -/D [1171 0 R /XYZ 150.705 495.665 null] +/D [1176 0 R /XYZ 150.705 495.665 null] >> -% 1170 0 obj +% 1175 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1176 0 obj +% 1181 0 obj << /Type /Page -/Contents 1177 0 R -/Resources 1175 0 R +/Contents 1182 0 R +/Resources 1180 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R +/Parent 1185 0 R >> -% 1178 0 obj +% 1183 0 obj << -/D [1176 0 R /XYZ 98.895 753.953 null] +/D [1181 0 R /XYZ 98.895 753.953 null] >> -% 1179 0 obj +% 1184 0 obj << -/D [1176 0 R /XYZ 99.895 632.19 null] +/D [1181 0 R /XYZ 99.895 632.19 null] >> -% 1175 0 obj +% 1180 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1185 0 obj +% 1190 0 obj << /Type /Page -/Contents 1186 0 R -/Resources 1184 0 R +/Contents 1191 0 R +/Resources 1189 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R -/Annots [ 1181 0 R 1182 0 R 1183 0 R ] +/Parent 1185 0 R +/Annots [ 1186 0 R 1187 0 R 1188 0 R ] >> -% 1181 0 obj +% 1186 0 obj << /Type /Annot /Subtype /Link @@ -12959,7 +12985,7 @@ stream /Rect [419.358 411.694 495.412 423.754] /A << /S /GoTo /D (vdata) >> >> -% 1182 0 obj +% 1187 0 obj << /Type /Annot /Subtype /Link @@ -12967,7 +12993,7 @@ stream /Rect [377.462 399.739 384.436 411.798] /A << /S /GoTo /D (table.5) >> >> -% 1183 0 obj +% 1188 0 obj << /Type /Annot /Subtype /Link @@ -12975,33 +13001,33 @@ stream /Rect [306.858 331.993 373.916 344.052] /A << /S /GoTo /D (descdata) >> >> -% 1187 0 obj +% 1192 0 obj << -/D [1185 0 R /XYZ 149.705 753.953 null] +/D [1190 0 R /XYZ 149.705 753.953 null] >> % 240 0 obj << -/D [1185 0 R /XYZ 150.705 716.092 null] +/D [1190 0 R /XYZ 150.705 716.092 null] >> -% 1188 0 obj +% 1193 0 obj << -/D [1185 0 R /XYZ 150.705 555.856 null] +/D [1190 0 R /XYZ 150.705 555.856 null] >> -% 1184 0 obj +% 1189 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1193 0 obj +% 1198 0 obj << /Type /Page -/Contents 1194 0 R -/Resources 1192 0 R +/Contents 1199 0 R +/Resources 1197 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R -/Annots [ 1189 0 R 1190 0 R 1191 0 R ] +/Parent 1185 0 R +/Annots [ 1194 0 R 1195 0 R 1196 0 R ] >> -% 1189 0 obj +% 1194 0 obj << /Type /Annot /Subtype /Link @@ -13009,7 +13035,7 @@ stream /Rect [368.549 362.555 444.603 374.615] /A << /S /GoTo /D (vdata) >> >> -% 1190 0 obj +% 1195 0 obj << /Type /Annot /Subtype /Link @@ -13017,7 +13043,7 @@ stream /Rect [326.652 350.6 333.626 362.66] /A << /S /GoTo /D (table.6) >> >> -% 1191 0 obj +% 1196 0 obj << /Type /Annot /Subtype /Link @@ -13025,54 +13051,54 @@ stream /Rect [256.048 283.114 323.106 295.173] /A << /S /GoTo /D (descdata) >> >> -% 1195 0 obj +% 1200 0 obj << -/D [1193 0 R /XYZ 98.895 753.953 null] +/D [1198 0 R /XYZ 98.895 753.953 null] >> % 244 0 obj << -/D [1193 0 R /XYZ 99.895 716.092 null] +/D [1198 0 R /XYZ 99.895 716.092 null] >> -% 1196 0 obj +% 1201 0 obj << -/D [1193 0 R /XYZ 99.895 505.29 null] +/D [1198 0 R /XYZ 99.895 505.29 null] >> -% 1192 0 obj +% 1197 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1198 0 obj +% 1203 0 obj << /Type /Page -/Contents 1199 0 R -/Resources 1197 0 R +/Contents 1204 0 R +/Resources 1202 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R +/Parent 1185 0 R >> -% 1200 0 obj +% 1205 0 obj << -/D [1198 0 R /XYZ 149.705 753.953 null] +/D [1203 0 R /XYZ 149.705 753.953 null] >> -% 1201 0 obj +% 1206 0 obj << -/D [1198 0 R /XYZ 150.705 632.19 null] +/D [1203 0 R /XYZ 150.705 632.19 null] >> -% 1197 0 obj +% 1202 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1206 0 obj +% 1211 0 obj << /Type /Page -/Contents 1207 0 R -/Resources 1205 0 R +/Contents 1212 0 R +/Resources 1210 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R -/Annots [ 1202 0 R 1203 0 R 1204 0 R ] +/Parent 1185 0 R +/Annots [ 1207 0 R 1208 0 R 1209 0 R ] >> -% 1202 0 obj +% 1207 0 obj << /Type /Annot /Subtype /Link @@ -13080,7 +13106,7 @@ stream /Rect [368.549 291.495 444.603 303.554] /A << /S /GoTo /D (vdata) >> >> -% 1203 0 obj +% 1208 0 obj << /Type /Annot /Subtype /Link @@ -13088,7 +13114,7 @@ stream /Rect [326.652 279.539 333.626 291.599] /A << /S /GoTo /D (table.7) >> >> -% 1204 0 obj +% 1209 0 obj << /Type /Annot /Subtype /Link @@ -13096,50 +13122,50 @@ stream /Rect [256.048 209.259 323.106 221.319] /A << /S /GoTo /D (descdata) >> >> -% 1208 0 obj +% 1213 0 obj << -/D [1206 0 R /XYZ 98.895 753.953 null] +/D [1211 0 R /XYZ 98.895 753.953 null] >> % 248 0 obj << -/D [1206 0 R /XYZ 99.895 716.092 null] +/D [1211 0 R /XYZ 99.895 716.092 null] >> -% 1209 0 obj +% 1214 0 obj << -/D [1206 0 R /XYZ 99.895 443.893 null] +/D [1211 0 R /XYZ 99.895 443.893 null] >> -% 1205 0 obj +% 1210 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1211 0 obj +% 1216 0 obj << /Type /Page -/Contents 1212 0 R -/Resources 1210 0 R +/Contents 1217 0 R +/Resources 1215 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R +/Parent 1185 0 R >> -% 1213 0 obj +% 1218 0 obj << -/D [1211 0 R /XYZ 149.705 753.953 null] +/D [1216 0 R /XYZ 149.705 753.953 null] >> -% 1210 0 obj +% 1215 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1218 0 obj +% 1223 0 obj << /Type /Page -/Contents 1219 0 R -/Resources 1217 0 R +/Contents 1224 0 R +/Resources 1222 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1214 0 R 1215 0 R 1216 0 R ] +/Parent 1227 0 R +/Annots [ 1219 0 R 1220 0 R 1221 0 R ] >> -% 1214 0 obj +% 1219 0 obj << /Type /Annot /Subtype /Link @@ -13147,7 +13173,7 @@ stream /Rect [368.549 314.69 444.603 326.749] /A << /S /GoTo /D (vdata) >> >> -% 1215 0 obj +% 1220 0 obj << /Type /Annot /Subtype /Link @@ -13155,7 +13181,7 @@ stream /Rect [326.652 302.734 333.626 314.794] /A << /S /GoTo /D (table.8) >> >> -% 1216 0 obj +% 1221 0 obj << /Type /Annot /Subtype /Link @@ -13163,74 +13189,74 @@ stream /Rect [256.048 232.693 323.106 244.753] /A << /S /GoTo /D (descdata) >> >> -% 1220 0 obj +% 1225 0 obj << -/D [1218 0 R /XYZ 98.895 753.953 null] +/D [1223 0 R /XYZ 98.895 753.953 null] >> % 252 0 obj << -/D [1218 0 R /XYZ 99.895 716.092 null] +/D [1223 0 R /XYZ 99.895 716.092 null] >> -% 1221 0 obj +% 1226 0 obj << -/D [1218 0 R /XYZ 99.895 504.73 null] +/D [1223 0 R /XYZ 99.895 504.73 null] >> -% 1217 0 obj +% 1222 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1224 0 obj +% 1229 0 obj << /Type /Page -/Contents 1225 0 R -/Resources 1223 0 R +/Contents 1230 0 R +/Resources 1228 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R +/Parent 1227 0 R >> -% 1226 0 obj +% 1231 0 obj << -/D [1224 0 R /XYZ 149.705 753.953 null] +/D [1229 0 R /XYZ 149.705 753.953 null] >> -% 1227 0 obj +% 1232 0 obj << -/D [1224 0 R /XYZ 150.705 564.444 null] +/D [1229 0 R /XYZ 150.705 564.444 null] >> -% 1228 0 obj +% 1233 0 obj << -/D [1224 0 R /XYZ 150.705 504.067 null] +/D [1229 0 R /XYZ 150.705 504.067 null] >> -% 1229 0 obj +% 1234 0 obj << -/D [1224 0 R /XYZ 175.611 506.876 null] +/D [1229 0 R /XYZ 175.611 506.876 null] >> -% 1230 0 obj +% 1235 0 obj << -/D [1224 0 R /XYZ 175.611 494.921 null] +/D [1229 0 R /XYZ 175.611 494.921 null] >> -% 1231 0 obj +% 1236 0 obj << -/D [1224 0 R /XYZ 175.611 482.966 null] +/D [1229 0 R /XYZ 175.611 482.966 null] >> -% 1232 0 obj +% 1237 0 obj << -/D [1224 0 R /XYZ 175.611 471.011 null] +/D [1229 0 R /XYZ 175.611 471.011 null] >> -% 1223 0 obj +% 1228 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1237 0 obj +% 1242 0 obj << /Type /Page -/Contents 1238 0 R -/Resources 1236 0 R +/Contents 1243 0 R +/Resources 1241 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1233 0 R 1234 0 R 1235 0 R ] +/Parent 1227 0 R +/Annots [ 1238 0 R 1239 0 R 1240 0 R ] >> -% 1233 0 obj +% 1238 0 obj << /Type /Annot /Subtype /Link @@ -13238,7 +13264,7 @@ stream /Rect [368.549 416.057 444.603 428.117] /A << /S /GoTo /D (vdata) >> >> -% 1234 0 obj +% 1239 0 obj << /Type /Annot /Subtype /Link @@ -13246,7 +13272,7 @@ stream /Rect [326.652 404.102 333.626 416.161] /A << /S /GoTo /D (table.9) >> >> -% 1235 0 obj +% 1240 0 obj << /Type /Annot /Subtype /Link @@ -13254,33 +13280,33 @@ stream /Rect [256.048 336.356 323.106 348.415] /A << /S /GoTo /D (descdata) >> >> -% 1239 0 obj +% 1244 0 obj << -/D [1237 0 R /XYZ 98.895 753.953 null] +/D [1242 0 R /XYZ 98.895 753.953 null] >> % 256 0 obj << -/D [1237 0 R /XYZ 99.895 716.092 null] +/D [1242 0 R /XYZ 99.895 716.092 null] >> -% 1240 0 obj +% 1245 0 obj << -/D [1237 0 R /XYZ 99.895 560.219 null] +/D [1242 0 R /XYZ 99.895 560.219 null] >> -% 1236 0 obj +% 1241 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1244 0 obj +% 1249 0 obj << /Type /Page -/Contents 1245 0 R -/Resources 1243 0 R +/Contents 1250 0 R +/Resources 1248 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1241 0 R 1242 0 R ] +/Parent 1227 0 R +/Annots [ 1246 0 R 1247 0 R ] >> -% 1241 0 obj +% 1246 0 obj << /Type /Annot /Subtype /Link @@ -13288,7 +13314,7 @@ stream /Rect [306.858 340.341 384.376 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1242 0 obj +% 1247 0 obj << /Type /Annot /Subtype /Link @@ -13296,33 +13322,33 @@ stream /Rect [306.858 272.595 373.916 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1246 0 obj +% 1251 0 obj << -/D [1244 0 R /XYZ 149.705 753.953 null] +/D [1249 0 R /XYZ 149.705 753.953 null] >> % 260 0 obj << -/D [1244 0 R /XYZ 150.705 716.092 null] +/D [1249 0 R /XYZ 150.705 716.092 null] >> -% 1247 0 obj +% 1252 0 obj << -/D [1244 0 R /XYZ 150.705 517.78 null] +/D [1249 0 R /XYZ 150.705 517.78 null] >> -% 1243 0 obj +% 1248 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1251 0 obj +% 1256 0 obj << /Type /Page -/Contents 1252 0 R -/Resources 1250 0 R +/Contents 1257 0 R +/Resources 1255 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1248 0 R 1249 0 R ] +/Parent 1227 0 R +/Annots [ 1253 0 R 1254 0 R ] >> -% 1248 0 obj +% 1253 0 obj << /Type /Annot /Subtype /Link @@ -13330,7 +13356,7 @@ stream /Rect [256.048 340.341 333.567 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1249 0 obj +% 1254 0 obj << /Type /Annot /Subtype /Link @@ -13338,33 +13364,33 @@ stream /Rect [256.048 272.595 323.106 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1253 0 obj +% 1258 0 obj << -/D [1251 0 R /XYZ 98.895 753.953 null] +/D [1256 0 R /XYZ 98.895 753.953 null] >> % 264 0 obj << -/D [1251 0 R /XYZ 99.895 716.092 null] +/D [1256 0 R /XYZ 99.895 716.092 null] >> -% 1255 0 obj +% 1260 0 obj << -/D [1251 0 R /XYZ 99.895 517.78 null] +/D [1256 0 R /XYZ 99.895 517.78 null] >> -% 1250 0 obj +% 1255 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F104 1254 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F104 1259 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1262 0 obj +% 1267 0 obj << /Type /Page -/Contents 1263 0 R -/Resources 1261 0 R +/Contents 1268 0 R +/Resources 1266 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1256 0 R 1257 0 R 1258 0 R 1259 0 R ] +/Parent 1227 0 R +/Annots [ 1261 0 R 1262 0 R 1263 0 R 1264 0 R ] >> -% 1256 0 obj +% 1261 0 obj << /Type /Annot /Subtype /Link @@ -13372,7 +13398,7 @@ stream /Rect [428.968 277.323 440.924 289.383] /A << /S /GoTo /D (table.12) >> >> -% 1257 0 obj +% 1262 0 obj << /Type /Annot /Subtype /Link @@ -13380,30 +13406,10 @@ stream /Rect [306.858 208.877 384.376 220.936] /A << /S /GoTo /D (spdata) >> >> -% 1258 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 140.43 495.412 152.49] -/A << /S /GoTo /D (vdata) >> ->> -% 1259 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.43 128.475 391.385 140.535] -/A << /S /GoTo /D (table.12) >> ->> -% 1264 0 obj -<< -/D [1262 0 R /XYZ 149.705 753.953 null] ->> endstream endobj -1279 0 obj +1284 0 obj << /Length 6532 >> @@ -13533,7 +13539,7 @@ ET endstream endobj -1286 0 obj +1291 0 obj << /Length 8092 >> @@ -13705,7 +13711,7 @@ ET endstream endobj -1297 0 obj +1302 0 obj << /Length 7295 >> @@ -13863,7 +13869,7 @@ ET endstream endobj -1303 0 obj +1308 0 obj << /Length 4541 >> @@ -13922,7 +13928,7 @@ ET endstream endobj -1314 0 obj +1319 0 obj << /Length 7550 >> @@ -14151,7 +14157,7 @@ ET endstream endobj -1319 0 obj +1324 0 obj << /Length 314 >> @@ -14167,7 +14173,7 @@ ET endstream endobj -1330 0 obj +1335 0 obj << /Length 7518 >> @@ -14374,7 +14380,7 @@ ET endstream endobj -1336 0 obj +1341 0 obj << /Length 1288 >> @@ -14423,7 +14429,7 @@ ET endstream endobj -1345 0 obj +1350 0 obj << /Length 7434 >> @@ -14630,7 +14636,7 @@ ET endstream endobj -1351 0 obj +1356 0 obj << /Length 623 >> @@ -14650,7 +14656,7 @@ ET endstream endobj -1359 0 obj +1364 0 obj << /Length 6634 >> @@ -14845,7 +14851,7 @@ ET endstream endobj -1366 0 obj +1371 0 obj << /Length 3039 >> @@ -14898,20 +14904,20 @@ ET endstream endobj -1362 0 obj +1367 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1369 0 R +/PTEX.InfoDict 1374 0 R /BBox [0 0 498 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1370 0 R ->>/Font << /R8 1371 0 R/R10 1372 0 R>> +/R7 1375 0 R +>>/Font << /R8 1376 0 R/R10 1377 0 R>> >> /Length 3349 /Filter /FlateDecode @@ -14923,191 +14929,79 @@ U1 †¸úµ6ÔÉ–O¹¬ÌWbàzSE 0¬àË®—Ψxܳ>P…Uƒ|úˆò¬Öhˆ³>ÜÝâð^ðyÿÔŽX<‰ï’<ÂÇfÔ1â@aÐMŠC5Ú¢"mZ½!qVÖÆ¢4"{^›ëéŠÏúÜÐZÌÈ&ŒÐÅLh=ébnh#ü©n¶BUÌ„&×]Õ ÝÅFS5Cg_QUÍðӂȯZ£!ö²{U5'"ýÈCS5 žßÛæzÖæI¿®+®÷ó'MÕ <Ïû«Ö†:%>A©ªfè\dðy׎X<™§úºv¬¸Þ¡4U3ð<ï¯ZêD ùp¥ªš¡â³þ®±xOðuíXÉ×9/<ŠRUÍÀ‰¿|p+q¥ªš¡³¨Áçý];bñ$>žÖëÚ±âz?ŽÒTÍÀó¼¿jm¨“~/žú[™¯Ä<¸ë‘Ïú»vÄâÉ|Cú€‹‘¯s^x(¥ªšá]ú€[!ÎúðS)MÕ ÞPÌïms=k_’} ×ONËÌê˜Gd×X¥YgSjT3âÔr°-J#²{Ë®ç_ŤŒ¹¡µ˜‘M¡‹™ÐzÒÅÜÐFøSÝl…ª˜ M®÷Ó[ÎÏŸŸåùËãý¤†¿õ8šÇ÷‰<ÿÓ”ÿüúøýQ=Æ×oÏ?~}üøåzÖöüúχÿeK}ŽãýÜò±ž_{üôCýô¹Ï£üÐ>}¥”:~ü<ðóÄωŸ×§Ÿ¿þåíÝíýŸšÇóë/Îñé뿟ߟvñvÿ®Ý¾k×ïÚeoë»öõ]{Þí·¯??·~¢ûCÞŸ#²ÚaYïá÷…–aXŽí)Ãüã—÷'W¯û³êíãýŸ¼žkà®3Ô{οþõÝ*ŸþðøÓ×Çßßÿþ{Ü endstream endobj -1375 0 obj +1274 0 obj << -/Filter /FlateDecode -/Subtype /Type1C -/Length 13073 +/Type /ObjStm +/N 100 +/First 997 +/Length 13198 >> stream -xœºwxWö?laÏŒ˜ r‘G¶5h†ôB'ZBïL·1`pø˶$K–eK²%«Yr•-˽w Lï%„ ”$$$¤m²›Æî{½ûýÈ–ßû<ïûýãõ<~4£¹ºsçÜs>çs -ÏÇo”dz%!)&cÒ攤}ÉÞ뉚ç7Ê#ñ-VyRŸ/Å<ÌŸâ1¾ÅcüNŽc~G¿8ŽfüÇÑA>~<Þ¬5›íonݼý­ &.II•§'ÄÅKÇOŸ:mÆøhùøÝ¿4&#!.yüëÜIVÌ¡”Ô¤˜déú„¤èÌŒñ/ž<~sL\æ¡}éÿúøïDÿÿ¦æùsïæ³Ý§•À‹åý<*Åw¬ïjßM¾}~´_¤_¬_;ÆÃæbë±d,ëÆð`|<þ -¾—ãýø)üþ þÿ'‘G˜;?€Ì·ò«ø®ÑüÑ£•£¿'7ÇÉÈûà=°,Ù ¨­c|Æ?æ1³ÆèÆÜ;nìkcç]4vÍØð±ÛÆÆ-ûpì+ˆ¤ -ä‚|ApQð‘àgÁßÿôçû ü—û¯ößà¿Í¿Ø¿Ä¿É¿Ó¿×ÿI€0`I@x€2   0 $àTÀÕ€Û¾ ôd_ |#p]`Z`f 5°.ðbàõÀ? šô~Ðò ¸ Â ª Ú æ Ž ž þ ÓA烾 ú6è7¡¿P('|S8[ø¾p±p¥p¿0Gh– -Â&a‡°GxEø¡ð¡ð ! ö ‡³Á¯O^¼*8|=øqð“à?ÿüwʇR¯Ss¨ÔJjµ‹ÚO¤”TUBÕPõT'u’ºI=¦þLý&%"Eþ¢0ÑK¢·DSE³DóEËD«EE[D¢ƒ"¹¨HdÙEu¢ÑIÑ%Ñ ÑmÑ}ÑW¢ŸE#!£CD!lÈÄi!³C„, Y²1$2$>D’b ) q†4„´†t‡9r!äÇ!C~ù-…ú…Ž„ -Sðˆ—¢ÒÑ+F~*þŠÅhÃb8™øÂP©®œÃo€J)®ž«RÏ2ðÑd˜Ž·›¬ÖVÒ8äܪêéü&¼¾‚´Êð»úŠ\óþÈÆåàY“R)Ôz%-ÕV ±p;qFߦldz3÷Ön¤'-ÚµVZ›ÝØXç®·mF;k(5:ìâ–ÎúÃ'[’·2ë 4i½<o ?3[•pP à?žÏ¦P8‡^AQ“:§œÛÌ®½ôôÀ×4Ü ÇAFý%ùÉ–ËìGkgõN ãüŽ—'ö²çvuLB@¼Q½8©êÍt{Ð`‚;èã'Põ‹p¢'œÛÙ,\8.³0O­ 5 -«CÁ -»ªbcé}{ÉÙøCò}ÛÅó†Â¡ßFæÎ3û›bø¥¹¶¬tñª»O[w -v2R¼Åcõ¸pm­©¢ÊI—×jk¹‰”ýƒ4äýè÷Ï·Ü@¡wØ—/î:/>¤ïÚ±#²¸¦#±*­z#§ÈZ<{)2mbиï߀A0èÇgœv…Nù³¹)Ô—' £V.<Ûx8‹M9“sûcñŸŽ_»Ã€%dMù$ p‰`¼ßiÉ©ìÃnâØp}E}²ñÐ*ņÕêœ]E|%<à$vÙò*Œ'ùPNü°ç¢݇kV0­y»,!o»2LAXìp¦¤µT¹‹E&¸1/wg@žïó7j©KvYr7Š†%¡PØtîÔw⣹}imÌ`̬æÉ4j“á÷ -ÊòM‹É|ÍB_Ûk‰ù6u…ñ.î$.˜a>ºŠÁ™øH„ç ÕZî8 /í´3k_œŒÙ¯›`àƒB(Áòð½¾HGë4f[ëJmô{›·/ ïÜÿe{é Ö“]“qH¼'1eÇòøþ_¥LšZ‰—Ù­æ -èår½ÞÄ€¸¶ÊÑif¬eŦr¶uɈaÎh~F/Á´%-&ŒïäçO-äÖy¹–˜nÎ-7>àÃm|f]ýº¹þ´5 tyÆSŽÊs9ÝáP¬aÑ:bòðÖÏÏn>y„9r²öÚc1$bžìLÏÎN—•åÔg3-%%¿"£äÐAñÛ›–ÎKÉ(¯U3y®ÂÆa1Œ!Ú9³®b<ᵈžÿ|yzˆa¸KÇ#_Þ›†¨BþJ|¾¹Àbìå{’óÝÊʇV> p$xý KÀaš‡]ÃhÊc*IŸ—¥fTé©Yt|J÷QÖJ˜® õÃу|p¯z (E ÑgªÎ1ǣݨ.$¾v8Ošä$:@§èó³I˜U“ƒÇ*+ûŠX¸º0W"Ñ’8Ó% ß×£{žM½òNÜÂùì’eû'¼!Füþé0K?yÿ ýëÓ¾»wÙO>éÿî™øYì·‹î2÷Në{‰F?ŽQp œÈ[`8œˆ&¢-h3š„&£ o½ßys³òøÇ߈A¶d“Äl3›îJÀR@yëÈ{ØHðwäEÒ…äĽjU!wßš[a¼Ç÷8ÎœG¨SÔ#¿×ÁùØÈU\‡æcxäÕÕ@ÂÌ?7R„gækféù2àù.¥’Æ'¤"ŸB>*Ã=K=Åœ# D6Z€5ã5¿ô¶A‡iøȪ‘¿bJÏU¢.ÅÄ%ÊZ5 '¿ Š7Kµ 9#k½z·¤iÎ’?ý×JVP@ÂQ*éÎldžΟ:¶…5%P=íIqqÉÉ1ñÉm}½ím½,ðµ‹`®Ï6í³¨Ë}ap-Ç£ V½Eo) -sh,:½8?_§fdJ˜ìÄ÷XÕî;&Ám¡m-0úµTß0„9Ñ^1`,/ÌåÆæªr"˜g6Qh> NÎ߬ K*ÀrSe©©Œî.Í`G²㶢¢¥y|ð¤ì?¯S-vçVpýûv×3†Õ 5ŠRÂU™Ÿ›_˜¯Éc9 ~ K{Š›¾µ•ž²ð]5([áÂOÙòÍSùÓS _ÂòË eâªrG-Sê?fêVôï…£( -Cs±]’e tFÔÈñ<­Ía·Øí¥, €Ó0Á{¸ø©ËyÎʯEÛdD±\—#Ž]„F½ŠøLŒÂoW:/3.$“—+•ËX•E¼ -ù‹à¨>qM¹­Çë3¸ß+¬U^˜W“qzE…²"‡;”Õ™¡h5Ê[>#!-Â&‡%."ÁœWâ;í'®3P7`°$Wµ„@Í"A éYå¦à›«Œ—ÚhDM}Û]±».†­N­Tv§.FãCûð ?–ÓӠЋÙê“}lNcnÅ¡z~âªmkyÔ1½gÅÂiE{:“ÕI¥^R_üHüÉkwN¸yó&P¯áPˆrX_•ï -;žÓ¸‹FÄd4½…‚ïLûí“‹=wŽ°%1Žl§”¯(/Ï·Ó›Ùbg¿Äz ­¢À ¡÷'÷}¢`g¸(Ä ¦wÄ -GCvð‹Û” n¶JêH¯{Ÿ/°pÈ#'nÛ2¿#F‚BgEç*Òiu¾µJÆVeçYtb¦<5®Szúèáê¶6¶¾¾´²ó\í¡B>éï¼næ»P†œ8Y©•j‹‹óÓÙ‚L$B½ˆ ˜ª9¿¥R\ç*ëg*]8(îó|ÙÇûýWÎyjìãܳ® ×Ø.÷=ýIüMòÃðóÌG+¯IhÔ Ãif‰q±Z½Pχ›=7¨Ž2Ç‘¯nä$ 3·ÎD>bDFÏšÉ$ïؤžAïW—v²àeÌÕÒñùåÇYÏ BoŽÌIÈ[¥ãôßa+.¥ûJ5Ñ,šJtƤ–ï!Y ½Œ‚ïÍ€¾úÝ'ºÙ5„µ¾qC®PZ­Z“Çd+Ò4Éô¬­ŸrêwòÞýsÑÛXÐË"ŸXJ²±E<ØÑrübûÁi ŸŠØA[5š™ãÀëœj#[ W¨™ÍsößÀrk5eâ²J{ c¯F‘Üc…&㧈:¶8tÅK[f¨Õ1ú0™Ëskòˆì¼’ -‡Ùæîd?„¼[hV!/Qæ‹só´™L$n•÷óQn?§à\ü’ÑfXÆwA7-ÎJ 7ñÑ\h†“ðßÌéåÓkL¡ø66b”ãÀEfå¼M‚zYŸÝn2•0à0i+.6ß•Õ¼Ò2¥`íО«Cƒug®2 Ø wzh7ÏC<ŸF©q”7rdÿ¤<Í*gIiµj"NZÕ`·7–5±GžaP÷¿U´æ(ŲÜ8&G;\¹xTZÛ×qì0ÔÏ0ÿo(wÉvÎÒ;dÄ]™Æ´ˆþã€v™ -œ ‚‰€„ösÙdÜ´£$ÃÂÔêË:«Þ¦·…™óšR½5,¹ùP»Ñ¯Sd»t´žûËmÚßÇv¨Éj:X¨ Õi±ùoEoÊë,E%6³Éfe._:Ü÷ñU¾nõì¦ô–u1¹á^U±™0³ÓÉ¡eC©b/;âO,(JÏËf4:UŠVjìu -¶A®*Í¡¥rEfâ€ôüÐ᪦¶·³þÖ#1ðúó9®ŒDKJÕBZðݧr -0ñ6š{(Û¨ObáJâvµóÇÄ/Q¶–Z³›þÓ5§¯]?-+ÇRÏÑ$‰0à+¯fªkP–¢¯”ü!0LÖe¶€µš`r'$zqÝY{ÖÌpû'€ob.YÁdNmÞÐNÅä¨ÔRZ•]R*g3*0ḊŒŒ’LZ81E"×Q^íl„8YUØD_€A¸ŽZ³™žÎ!GºpH­ýø-ñæ¾BQè£7ž;Ý2Üͺ+Û\øè £n:ºûOѧÛcVYX #Éò³¸€&l©Äó澞7á= -%kÕ²}FnÄäPæ"ä&lŸY]{] “› (B°kíj¥Xž§KàF÷)Æ^k«)7fÖ§gdffhl -»Œqï°flÇ™”Ö}5|‡LfÓÐR…<-Å©l«(³”6²Îk¤gËÒ3Ü\ çv76f»¥,'®‹›/yBÁθ¸ÕJ¶ ÷"o‡»p-d%ðÊC_xÆRÓ Ç„8Â+WÀlÎMí´èKßñŸ¶Õš†9ò-Z­¸@«W3r˜ü‡·çvã8ÙÓØÐÝ™Y«Õ:Æ 7é]‰£«¥ç|? èrg¡ÖÉ6äa O¢×/Ý>•Ñµa½DÅgHÀšè̃\¤q{óO?ß¾ú»›‘Y°÷Ó#¢WÒ+wœºÕæ¨kè`UmÚº½¶¢Î-­ŒOÏÔçƱ€* ÷ªc8n·Þ8Gº$—蠟-\ŸT#oiuÖtX‹íÆÖXŽ•]憚£tcmÊÎÚsl‡¤bÃÚ™qàØÊd —,$#¬Û$î…Á’Ø­±¬@AÂK25Æ,–î*ñYYk|¼,e[®e¯9‡D?cŽ%TbZZbbsZgGssggZó!?RÝÙö6ºZ[/óÑßÏP¦Ø’Øò8¾‰“ŒQ,_›40|¥¥Žb>?G} òÞS¨æpáþk\¸oj·XZM|8îÿ;ÞXÇ áÛä2 Øÿ²`a„Ïÿ+^íÙå–­¦Õ3½xSDÂÃ.BjÂÀú=Êìýâ §£ïß?5xýXVëò“LêZêpjUö!ñA©4>:µýDWEC ö;vQI8Q”$p8AÀ©$Тä‹ðz<8`k¦…Ÿ'Àóhøµ–GâhªÅvÁ•Ónsž£K)Dã†+°!øµμ|»–.*4 -ÙW·b ]r‚$²Hà,kV:Ó‰£SS£åyÖêL¦J–gË£³•9Y‰íò³Ð÷óKàhGMC«øDdïúuRWÄ3Mrl¨Ã]ÙK÷ÔÉ’bÓ2—IYAÖ{$ðØŸ_šºYgÕš9Ÿ09R+y:bÇ•ú‹¤>³µ½¾¾­MZŸÌ -ŽŸmâ~Þ™>•‰yä‰&n¶¨Ú™el}4½+*}ã&|$™z#Â( -½‹fr1Åø.šwrÇl8 î€;¸«¹h+§¦(ÍE³Ñv´ÎD³¹Øb7à]¸FqCf¡(nH#ùÂ"ÏKn)¢ìƒáÀ¶†¹(¸ͨ5X¿èêøÒÆi{TÔÖð£{€'ŽZž Ñ/:dW…–Y1³½Ää Ûì¹›Yt÷ü‘}íõdžÅO\E~±)ºœh¦@ª)Ê£³4¥µEly¿Ây¸Â!øµ›÷ø¬{æ úȯŀø¸ºj R%ß ³ŸI5è…h2Ujdb@Í—€ç¡T½;UŸ¶ÉÌŽ¼CÌÒ¦eæiJZf(3·<ô†+ ™TÊJJe^äljm¥¦†®sV7ÝÙ2Á¦´]qlRt^¬n<%¯H†<¿æµB.Öžü憓Ȃ‰g?µ"!¯pQ÷†å k·p¶ºø=¯Ãñ°ÙeÕÁ , O)Ì÷æ1ŒÅµûY×e€j¿Ð{üÞÉh4#ÜFíZ¸$rso;#ÈV$drŽ&e;yf(± $A¡¤·JHPÉÙû/`äµ›ž¸‘¸U„ÀE,Êqâ. øJ˜è$¶Z5¥gÅžŸ8v•oЩuaà Ù~¿Žˆ»rk22reà°„ pR|}ÛÑ÷£ÔR)“%ÓÈrv7©B‡ëÁMÞ7¤'&Q#q€bþwâ‘@?’{0@‰=ŸöƒÊÒÊ7HçQgH¸·…Û®ó Ñw–Qk¡ñ:!ym•'η - Fì¬Á)[+nÉcÑ–G¨Ç>?ö)Øõ˜ÅNC–Èi -õ!:+ËVª`OL—Û£èÝß°ÛL@'LGÜ?wze;üHhG‰ˆÐFÜxûÅØpvˆ®¯(Hu±àÊì"œ(rÿÜé†3(OI.I§wïÎ8Â&íÕ(|‡f‘¦øœ|N¹Æ_CZüþ®¼ùO%R¼Ø -¼;ʪaêÖÆÂúá‰Nð{±Ûóí0–<ó…ïŠ8\â|”ÃÏQ_e®§¿¼°iæ»Û¶Ì“ ™X/Ä2£RÉ PQ¡ÆMyTPk?ôÝ9nÐüîWHóBÕ‚—Ƹ°ß®ÊÌ/L1†¡±ø“/±«à)Ïï%9áÎlim¨oÍ#SY çTLZÎ@òbŽ[N—,žÈEøÇ@wQuÑ`_ëvë+èúj¸_1pø}¡çàŽˆ¸ƒ;ØD€N่Ūq×ý–¦|¹|ÉÜ-áÛoßgRiJ2p‰VCq¯³ÝbÀB1|…ÄA9•Š»àÎv8ßͼ»_Àõ_ø‚nˆ{æCÎByCžw†8ÿ}ǃµˆý|ü³+͹yn@Á·Hè(øˆ,ª^Ï?¿'AQ4¦Å}Ö[5¸˜ -Âx±¼â’¹Áêg7Üzòú±÷â®g¹Ç„tƒ“0„Ì¡îÕyº®Úd=ÌáQº"Gª3éÌ:Öª^±ÉœWaºVA€¯AâÒÎë`Éé)h{aÉq±mÉà_鋂İíòO^8Û tf'1Ç’Wþ‰~€Z»ˆÇ=ö¦~öŽaó é|ùˆ/ü€ó¸c®ž\@y5|$ŽÁI5@ÉÝp­ }äÑ|ä Ð<3 Šk<Ó8‰]ò¹®¥¹ÐM?ô p .§<<o„Ç;*£߮×`½-à2v]w¯ø>?H;€üëY5߇„•LØ´Uó3Ù¯ @å1}$$sëŽ*Ž†Ž7êô™,uëõè/|Iô<âyÄ?"pð¾v®î…KZx@QîæT ^¿7Ýßò·x2–]½744´µHSXAC]{{zc+(5•Óàù«ÜdÃôcàCNgÆÌwgÍž3ušÐ'؇òù„ø„ú„ùˆ}}‚|€·ªäç³ÃçSÅ+æyF½2Êéëç»ß·• ´Å÷= ÷xðÛ'¾ž(¡rm±›ò´‘œÚàð=¸{úýÀý‡âŸç>xeËöÌý±Lb‚2Q±´NúçÃ=·9Û<ë½ÝSfMgÑr´ S{Ä„@Ë©Ô·W‚àÇbî?‚“àcêrƒ!¿½.í_.~7|Í¢”l{c,ãJVØ´T©ÊŠ?šyûþ£æÁaöÄ`Ó¥ÅgrŽ§t0Yõ²Š½µ|á—·N4õ¾öüä{‰qLRŠ2=kƒ³0ôÞác×é›C{×Ä)ãÓÓØ$îΊ >÷ZnøÆ Ïûî xìáüÂï=‡`õšgÓ}8² [»ÑE£÷dkcÖ²-pôƒ>pZ3E£ê«“KP u`ý²w¶þ§œv´ºlu]Gi-и=wïñ<[9O1‚ãÑ5ƒÖV^0…Á$íùû‡ñÏ_öJ£õ¹ 5èÂýe÷`ÊG[î À£‚úù\÷à-ñ㥗_çBœ•SW×&?›ÂŸ"Þì¬äåâ·®„8óàæo†ÑØoù«ÔÝíqáâÕQQ«ì¸ô䃺ÁËÃŒðÁÉÔôKqÇ/ˆ/¼~ëèžåëÓö¯ˆbZ¨9êñkåµç{9“‚~•çkoäÿ~ÿ*Òb8g*DLÑHpg.ô9¤zð,f!ßñhb^†Ï©ìÂü¼|Fš£Š£D|ÁÅê+uͬ»¦©¼þêØLô˽`óó f^ã°òG_h>›Ú²/'.–݃4ZŒFu!þ‰pfOßéŒKôé£5=½ì¥óýNJᾩð%Â¥Q_CŠA1{ÆÏœ¹çoðL8G=a½zø<€Ãª„'¾Á6'>_Q>ld9:P`F+§b*Â9Ðh/¥ëJ•‰ìÈN°V¡Z`ä TUžme0ª -ï'ƒ“Âç±Á+ÕdµÚ,k‰Õj3fÀê¶Y­î¢Ì:f,Oà5ó½>Gx8ï,ïþ¨M£®Žºé;Å7Ê7Ú·Ø÷¾ïcßïüÄ~‰~R?›ßE¿ë~ëÂNcÿÄq|4.Ä_Çâ…„¡& -‰ßùß¿0zúè„Ñé£?ýýè¿ÛÈDò6ù|Jþ Ð`&X*Á1pÜCY}#úE„DÿB†CÆ…¼òzÈ„ç^sGJþ@ïÌ6¿ÊG Ä -]Œ"‰‰H]sh!½tWã‰TVÞ©í».†wOJ>õ&šzeÄ£?Mè-úlœyŸôÜ`” †U„ùYyÕg¥|ð|[-eÑ”ÅßCfÏ¡Ù8:0¢^ƒ^WçDÂdpW-‘]ÑVa©²U²Çáh :ñÁ XEª=M%NWl322è Fr9² - ÈzÔŠ8›Z±7y ½yoÛÅdVÞ¯í4\ãëxÁš¶ôN~oÒîºíôÎHyB ºtŽ1wfBâOŸ\†>GôN¤–w÷]¥¯6¦Ì¨dÁƒ–V_ÏAO(50ŸÈRYìÙl¦+KK±¥Ñ“-²¶9æÃlZFV¶:¯¨0,+S—§g–çÉf–lO;+Þö`ÏŸr†éï¨éì_‹\deU‚m5g”V‹Ý]=-¦¨·Ö`¦û;[:Ø®VgÏ)q›¾AÕÉ íˆ˜Òv?Ô¦¿éÊÛ´à¦onj(ufmð{êrkÏñŽfER5S_µ_ž¿{]ô?2% „ó°u8ò¯ºq8ö7(xüäû|'ü…rü¡ÞQ`^ÀGï‰R£Yop ¼þ‡Öo‡N2'^o¹E_8%‹ëgÛ“«ÓšÖóð‡eâÙ:yn­É±Øå¬3*ÒEsaç+è ´÷­–…6²ËoþGÑ_Á€žžÃ,ÜC˜¯–W\´ò'ų È•xgu~N¡QW¤eßFmˆ€%˜®ª°ªLìrÚš'ŠVÍ…5yÄ‘1´"Õd´iø­;«c•âézÅ!&]™%SѺ|oÑÒ.—[sè ™,ý`GúÑ[ÇÏÃ×γp²gbegyY£% dJÞ&ïsÏv*fr\–.GMç+-6%[³k§#’ž3ûЖuì²u1SÐ(1Ú ÃÐ8GI¹ [ºxeÒlzm¸»/»åä¡o Ÿ®úžƒó×.žÉ:p˜éLt¦Ô®æ¢I_eÓ–zK°(´ )[0%á0aæŠ -SÝXš³‡EJ°(_³¢ˆò'¾¨%ŸªÅç˜UU†{PHš?©¬xláŒè”ŒøR_®1KŒ Ôy³¸Á¾ž—áTjYD\ÆfzÊÚO!ñûùÛŸõVjbÊØ’L,ÙáRÔÓÍuµ –˜µkGv\4»sOÊŠybD=š }®îèeZj[Û/óõa×±i$hùw@ò©¾Ray‰¾!F( C døѪ‚ÈÃìÈ:ÂðR®bŽž/ƒêZb¾UYgøïG›jøJsN•á2fGNµ–”ê5åŒÒY¡¯¤5­]Yî„})™Kv²ßqqlxfœ*\–CXªJMtÓ aXÃvnm\½âÍë¿+g%Ï|¹ˆ?RâM‰µH®‹=‘1’zgžw!MÉ­òI*õ„¢0Äà°ÞóæD?EˆÄ\¸ãã*ç5328ªy SzÆ`™£ æ9ñµ–¼2ã¾ç¢Ð¼#'6o©",§„0•W˜tg™*’I#Œ[Uªu…œ¦÷Ãôö>XÙËó¼üßç=. -¾4r5›øÀДŸ)Öåéòd‘\¯ÎÛ«ã+¢ÖH쳦•;Åõ —2­g1¸MÄ Ëµùkó†P™ÇN Á÷° |•*G~þüPšÕVÈê-E5b˜_#>6Ôf;Þç×ÁÜ,\;/[ù²|¡o0•ØÝôW8|­I5µ‚9Ò)ø¼ƒ¡;HJOOLnJoëhnlïHkNbÓé¬vV—•^¹ÙÞyûÓFç‡Þ‚_¡Œ8a,×g‹ãÞæ؇ ˜@|PíºhbÌ¥Å&ëBƒ3$pðÉÅ\U¥o`‹Dð9À_¿Cn¢×$´¨zQ)°gÔBN‡©ŽÔ;ëú®nÓ[ÍF]b±”TF_šÿg¶Èj,Ö•6uÕÔu ðÛz›WŠmz›^—-ÏR0Æ¢CIÉiZ]6¿xr¨6¼lsž7ÙëĽªÚ´T•,.ˤ« -g$$Ï_žNí—ŒÇz×DU®¢ÑVŽÅ½‚ö¬q®iÞɺ⫳ÄLDlèIüäc±×ŽçÞ¢á6.î} ü õ+ïQ¸£ûù{×PÝ«+ç‰Ñæ¹h4 -Ý]{b/“ÞC%ÜPŸÿZ Ã?‡†\”íb@q삵ÿ­ª=¡¼U3ÓB>Ú6{ÏcMü«|&ƒ}ÄÿZnÃáStB¯Ãl¼£Ì1ðÍÿ^eƒø:!ˆ!G"‰eFYɧ|¹­>DYqø.z«ÌµèµbÞÁä+`tÏΨlJcQÜçÀ—;ZZ*Ía5(\QAÔ•iÚB­Zâhögâ¿ÕDZ ÌS¼ "ÔÂF xîõø)2üŒ±¦ C¬)Tk” 'é,ô&LÇòªuMãÄp¥ÈQ˜!Δ&mÙÁ eh&÷¦OÊJ?+ᔬOF<З«Í‹ɼ¼÷½ÒéyÑœRn¼Ç‡ˆæº¿¾Œ=˜vy†X™«K62ú¼b£š•ÁKµÄv“ªlêOH-¡p3ÜxëƒjÇ-[X-rà# ·N"ÿ`’>•ÞÖv“m!¾¶;O™¼Uð”&2•Øg‘—Ë™¤Úœ‹ô@­ò 82íû«Ä“㤶–êíÆù0‚x}nÎÆ}v3ð"¡·Ä«Ó ¶ä„¥¾(â[ÍÅ%ôQGÁ^v$‘0,ÑlÖò•ð“Ød+(7p?×ǴצO6Å-cÑ.°4?o³žOx«xÃC°×Íûۯ𯾵"ØQ‹/,QWïða4¼€¶;HÏFb—mCà6îddY- ¶KRS^7`^5µ&=+5Ö™ì*¶D™kÍ£S¤™éI­™}=í•-Ílcƒ»¿ý!À»¡-wìeö2Sh›$W/WÅ0sQÒ,˜†ÉO­å⺊ò#ã¨A;¸ÓØ­/.>‡$a@FÎjß{ùdã™.&·;.ûÉÖ?‘@wpj«¥~˜½Ñ~øÊ-ña•·áHÚ”YQÓåt–9«ùBOskÍ‘~ñ…¸³;˜Æ½moÓ»÷Q–ºRSýÕíóæn˜¦P›léì?[c™ÉE Ÿýzcë;³Ömž–‘k¶'³‚ÿTf¼€øE9ÎÛ,€·`…Vk•²­&Ý[¼:í"RMGRz‹W+ø*ÔŸzÒÝ~ÖVn¼eñ:¢ÅX¥‘‹Uú\E -G¨P2Á}˜¬½ ¶Z\ï*ëcª\èœo0œÒ6dY^<6™ýNMZj–"á ù"\Ø«7ºžü$†[9·ÿ*ZÃPpÌc4–SíUó@þhôW6Aê˜ÓÜð"ÛÙÖPØI?îÙ’ÄzYÿ6IJœ7J|ûoãOP”ãCzk¾yAKáâ)œ ál)N•pß,ç¾ùÒî²zí+¡Ìßaà+€ÚcV;ŒÍ|ø#¡² r &%J›ª¬VºÄ¬ËdQa”j´û ü NxsÆg ÕÞœqªDJŽý)jˆJ ”âÿñ©Ï,~Vü îìÂn&Ú•mFA&>:(Ç_ýËðÏtåÞØrd?¥ÎJSéMZ¦G“SF§fJS÷ &]‚>WïÀ@ÖƒæOJ½ xÖœÀj< ¸å÷ÊšGvî‹×nÞ¼é ´( &i:=‚+AŸ|3Ÿ+m(‰‚z¾Ð¤.3ÞàÃi„Pv°·As„†à[è_ƒËž¾ ŒS"$_‹ÁŽ"¯A„“èœ7¹>…”‹h9ðL¡ã·:“—–³5xd1ô çfm&Î}ÅÆ©’¯ÄÀâ2WšKùÕ÷K¯´‰ëe.i†L.UTMs½Í€m6Wö Ýý™ƒ=œ°xÏàð3_xÞ¢à0ŠÃAƒ´µ­¡´H€ç\Š¿(6Ψõ6 ÌÄFŠ«IxÙEL“UÝ6²ÀT^ΩSc•*óPZz¢Vo²ªY›2ßœOgæäd¥5(:ï|p÷Ñ™”öZ¥ÑÂTR%ðÀ]‹œ‚ŽƒG»Îö1ÙÕX*0“ph"ÿ(*¥lÛ¿ðŽXG~ÌAyìgÒ³h ±ù@Á gPìçP‘uý=,ÙùåØI yÜ,ÞPäêŸÍ=‘G¢¹Þ´<œûǧÙ{ÍH¸‘ŒÄ!œŽïßA -à= -®B°ÓÛ]9â¥n¯·á6Yâm³1—ü§,PKÊ8ïKüËûþ;oŸõ76þOCáÓ¿ÀJÐ~…ÚÝ‘ÝÔ&nk¨ëê«ÏŒ=¤â8'?“ŽU¶\gA“»º£K|cKßä”\CA"£ËÖ -è\mI¹‘Uáè ViÔ[Œ)HuáÖܪóbøùâ'‹a«‰E5„q9ãÓ½%Ý•‘}£³[!÷ W~` d±Æwó½Ô ÜôêU-þmùÉéOŽïY#d'@5áåý˜£ÉâtŠ;ÔÕÒ,•<-×–Q’ÅO8Õyk½PÙß,nTÔdÄ+¢_Ñ1úyà¸oÕIóï’„À£*‚!žQ0„7À0™´Öÿ 8´JMáv(RÐ÷*÷s†³Á/žÏ¦vã&RpÄÅ!ÈHÜHÜͧ«FâɃ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ -endstream -endobj -1376 0 obj +1263 0 1264 142 1269 288 268 347 1270 405 1271 463 1272 522 1273 581 1266 640 1283 787 +1265 989 1275 1136 1276 1280 1277 1426 1278 1573 1279 1724 1280 1875 1281 2026 1285 2172 1282 2230 +1290 2364 1287 2503 1292 2648 272 2707 1293 2765 1289 2824 1301 2971 1288 3164 1294 3312 1295 3456 +1296 3603 1297 3750 1298 3893 1299 4040 1303 4185 1300 4243 1307 4377 1304 4525 1305 4672 1309 4819 +1306 4878 1318 4998 1310 5191 1311 5335 1312 5480 1313 5624 1314 5769 1315 5916 1316 6060 1320 6207 +276 6265 1321 6322 1317 6380 1323 6513 1325 6631 1322 6690 1334 6771 1326 6946 1327 7090 1328 7235 +1329 7379 1330 7524 1336 7671 280 7729 1337 7786 1333 7844 1340 7977 1331 8125 1332 8269 1342 8416 +1339 8475 1349 8569 1343 8744 1344 8886 1345 9031 1346 9178 1347 9322 1351 9469 284 9527 1352 9584 +1348 9642 1355 9775 1353 9914 1357 10062 288 10121 1354 10179 1363 10260 1358 10417 1359 10561 1360 10708 +1365 10855 292 10913 1366 10970 1362 11028 1370 11162 1374 11310 1375 11437 1376 11480 1377 11687 1378 11925 +% 1263 0 obj << -/Filter /FlateDecode -/Subtype /Type1C -/Length 11578 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.358 140.43 495.412 152.49] +/A << /S /GoTo /D (vdata) >> >> -stream -xœzwxTÕÚ/CØ…½’I™Ùf³÷F&X*ˆˆ€ô -dÒë¤L’I&½Ìd&½·I2“BHB „Б*Š"¢¢Ç‚¢~õ¨krV<÷® úï»Ï½ß÷™Ì“é{­w½ëWÞwI&M™qxâð«Ã˜t¶t‰t·t¿4Iš*Í‘vJû¤¤Ÿ9Nv”9.s\åxÄÑß1Â1ɱƱÉñ¼ãÇGŽß:N38-rZéôšÓ:§ÍN¾NÉNeN§>§!§»N÷œ8}éôÓÿržê,u~ÆYtžã¼Ðyµó^gogµs–ss›s¯ó€óMçÏsþ§ í¹¼ä²Þ個K˜‹Ê%Î%É%եĥÅeÈå¬Ë—.w\î¹|íò™Df/s–Í’-‘mùËÔ²Y¦¬Tf–õÉÎÊ®ÊnÊÞ—}"ûRöDö£ìWÙ?åùT¹TÎÉÈWÈ7Ê÷È˽åAòpy´<^ž"7È«ä-ò>ù¨ü–üùòoä?Ê“³–fØéìv1»†ÝÄîc°¾lÍjØ46‡5°El9[Ï6³Ýìö2ûûýšý‘ý……5c"{'·>’wKNYŸE«¬ŸR}Ј C7«#Âiš×¹­ •"̦ ¤ßÑb3|E&!Ò/M2Ð0‰ê©,…+ΡéÁ=Æ? µs€õ6¦Têh8Ž<¢©³¹p*NRÁÁêÔpîX’霿A»£©þŒb8•A…Ô’÷G£]5#W„­Ô@µ¹àV1 Æ6ZX¯Ô*è|@DÑÖ&<4¤?­|!%ùHútô²P» -bË›•ÅæÆ BucÉÎ×*+`±ú°ha49 «ÈŒV¤êÒÓUÂ&´=ÜA¨Ïåå•(ª+Š-ùB0£ühª)·(·(=_?´ æ´Gg¦%¸‡U!Ñ\zFI©!ÏhÈ …†ÂE[Œ)P¥<Úr¹³­¼±Ahh2õu= ¬ÏN«=UVÖžGîn»<Mvç”gÄ(´ZeèëBr@F¬6 u »>á3ãD™¢¦¬°'_0#m4Õ›cÐ×o1ä3ò36¡µÓ¢o|KÄdW—+jËŠ[ ð§TÑTsvAVË8œ™f&¡3¼ñ3ºA4‘ð%ëœêî’’–Âé~ ²pN,•”••­å²Ò…±<$¦ †{yËŽ[ú=~ò¨B~aQž=N'D W-dcyQQ)WX¢Ë)SÚFRÛ¸Ç7®ýžr`Þ)qS[„¥SÑÑjéiiNkÔå Õ^4€Ö0ÉÌB3Ðì'ÏÁiÐõ»_àLøìÂ_+BÙ+õûÑJô¢Ú}Ïnõ98®¯½.‚±]c+Y©"ßÉ®ÉW¨µ!QÞ²C;=LÊ-Ôu…Ó“›r**Õ%ý‚Å@XЗ*ªS×o -‚ÛÐçÓжPkKÓÊu÷hx°…‚¾è6}ÈñmÖØ¢‚êü"¡¬¨¦ÐÂ}Óí=k[’_Hœ•”¹VOƒZ"?ÍXù:’-ÝÁ^ñNñ¥9ÊMñÖa¯×w¶œU -‘ÝɉïÒá(¯l.*)©áJÊs3Åijݙƒœÿ÷Ï¡Ë}Ïû[OˆhÞûĪ¾XËÅõS=ïœ>ïRè ¬ 7m¥Á0ßÖu2ìx (5.âÁ¾¤7x`fƒ -´Õ= -«ÚM f”¤|ÒŸÌ Ï4:øøG%ã–îÿÎøåÄÑšêŒÔ"±0=/ÏGqÈPÛÃj6÷^ß|f š1ïYôáÿíÐÿœ  Å›;¯2{ÇñȃsÑsÐÿ8ÉÜsK„2Êø~yÅûx×^®¬ºU*XPˆŠz?Ó·A®Pègë:¨HSmÒÞ3âx8¥ß­ÑnÈ u%\ÊFaé š˜@è´ez:œ„ë<¢yœ¢2Ñ,¢™´|×\gê‘v|þ4•UFe|¶ðÆK8ãà"FQº“5­Ú„üÕT›¾&NçO£áèo¢" šà èc§¡HÊ ‰ÐÓjèx]wMCÛŸßjÕWÇéið -ÓK?ãÒúåkÇÍù?”m¶ÆYg±ç‘+%kÛÌÈz×ó²Ëך\Wô¥hdïù3²E! ˆgà]`U²Æ²¢.¢î3Caƒâ¸º1"2.6L›W'”(‹ƒ ÃiÐØh®hâºj#÷‰(›Ò+µšà\:¦P`yAj¹îm5SÐ1gÔ£ºÔAbü2ymd-£CЩ€7Sºµ©i+0~ƒXE¬6=P'dëµúd=~a Ó_Žs"DcêÓ‹Ö¯ÐÞhªC_oPÒãÅø’ q!z|É -|ŸÈÀÏaû#ÚB”&3ÓMj¤¤†C¦2JÜíõ͆EÓ¾ƒÂ­oÌu׋§›P¬º‚j7«U‰ñšq«á\"©-§¬TQ[[ajMè‚šÉm¸22 h±æ€2Ô—KSÃS<éSm©,ª®n¥«5Hôb@Rž vöÁ“=HÀ¹ðu¸ÔVÀ‹¬ÞlÊ«æ¾8_fÏ·µ_¸©¸|aw»`ò *Þ¡OÕ&r4·:Q·¦ ‹ø5üÔ²„·š§Luø«'š³RkÄ–ø]Šyþǧjò Aº‘ÀöŒà¨cŠ=÷ƒ  \ýÅèö ¼o×ð8¿räl3Õ|âDKK»(ÝÈxk™ ýƒcÈãÙµ9…¹tAn~V¶"--!5U@r$'¬ëÑ®hꄾ:Áà7±¾šøЉ•0SG‹sŠôÃ4$©&ówHAÔ©ŠR2)ÉYz!jÍTjv~EºˆÜ`Ãßm®»Q‚ÿ<Àî†ÏÚÙõÕ -SyE½PjB1j²#£8mIàTÔ=-ü Â?)9!™ËÌ.,‹)Ca^A>¦³Æð UÀ±“ÁÃÃ=7Íä­Äi -‹» xŸÃk\_¥OÌ -O‹äßÞu²í/ì1ðIµ`<¦²O`ÎO(‡'[[Ož ÇïÖߨ­6ôÑ°€ú›ÛÅWwyDìöÀ÷y]ÖtJ~€Ëa|Ó®ÊÞ%a(| -ÐC"tFI"º¢"od×'ŽÒãi”Wdì>ê¬Ù&SEq෺„÷ª7—+^P/ ñ<‚ŽÄlå<µ•§E@é®V×u2¹WjêÏézº«®'Gu5ñº=ôx#Š°6ú1¤t//5I¬³ ”=ê–àÃ)Ãk»Ôb|{fGÎæ‘YŸ$ ‡öÐÝ!ž¦ýrXù<šfü”><ÓþÍM•ÁÕ,dòk{Ïr­uI¡%bA|~”á D×^ãÕ¸€îÌ¡#m¡§ ó EB¯Uù¼á.œ—”îJµmˆÀÈÉY8>gØÁB«‹¦.›‡¸M槼ŀ®ó1§¹ó—›ºÅî~ÓÛwð™eÿHA¯ÄáHŒ,Ë"óƒ¶+Ðê„}Ž% ÿ -·Õ\Á¹ºÛZ:¤€_§RhåV"Ž*;^WXÂÕk#DE6$§nãÔ0‡·%á ¸Ào`îóÀzµ+€(cà‹ŸÝ€S¡üåwÑ«±9y¹‡E¿)ÆšÒ¼rîÑо¹‹}ÜÖû¥Tõ‹`´¼©Ôl¢eÖ‹ià”âbÈÙ=íB“·géznzšIÙ¯O†.Zâí¶A©­ê­mSêI™õog®\~ôÈÊœ´p&/è‰VÀÈSY¼q±ª!‚€N|K±|Ú²G᧊RjRŠLqBXsFAx>™®ÕÆ+‚{ãÞèÉa Ýá/îÕ¤—Vä -„rêxtc2Ful¿ÿµ«Ã]˜$ÃBƒý[Ã{ñy -GŠd€o ÓÛÞÞÓzÂ_Ag!%6ÁbêzöñÄ.ázØΓë87ÿ¤QVÚ >dÆœL. ¯6öÁs]ë›úÁÕzƒì‡D ™¾€Ï1š„25§V©Ëµmñ"œµ„°~þ6HãSüž »{GHôáx:%<8+‚Û²½k4\ ?ŸüÞO -è ~nè¸Ó\“¡ÍÑeåf -Y©ºŒL…¦4©"G^î~ŠàU^Úi“#UuH€ø%<W'1¶Y†4US–œª8]½ŽZuFùsK}~y».*ní8ýr´&7=\ÈÑfè29mVQ…˜ˆq®…´dæØÁ>ØÇ¢DÃRß1¦hÇ/K`v`Α¥}’_ óÏ`A€ß²QŠ¦Žmb½}<;‚;;ƒ:½Ei¿’!` ©ÛKQÆ}I‰ k˜ØmvÔ%zW -å{Xƒ‡!*XžÇ^1ÖÆŽ€É?1àÌØÔLÀÞ&ù8+°ˆÀÎ@Ù#(Ûx¨tý·ð6…U'”M(¬–Vï­â;(„Fæ¼®ú/4Ùi)Z9#€®”¾³¢¾¹6ë2 s¶ûäð°²ÃÌ붸´¦¢Rh45U4r£æ]è08ÝÊá¡žž! ¸pê€Gx¸'½Èr—;±—‚ÕP…ð?¼æŽ/ Q‡éèl5 0‘Q…)&CG³“ÛjÁ{ß›4(Žnñûùz€MQ¨)‡ -Ó4vE`éKå.ö™ú,bms±¹p„–FjMF¼æU]o[óÚ#hÖ—dF)ÐEÊ Ô&Ú€:x(•ž‡OúŸÆãVöàùœo9Û*ÔŸ(鹪îÑ^‘b\`Ʊe -€Ò|—òp ¼?2‰À5,æ)¾´šÍ­Oñ…Œ‰‰ŠhŠiiijji‰iŠAÑBºz ëéïïåqÒètw÷i`â¥?3¥%˜õ ê뛹J@þˆù'ඊ - iŽ:ÑÞÜÜ~BÕ,‚ŒÍè©)8ùÚà'@y‘ïí>ÑÞÓÚî'¶ÁÂ"›*p1Q®“V±ç‰ä¯ãkÙS-µB¤Ò–Ôè+4 °ÕS¹"H0“½ ÕÜ© (/-S3NÀiâáéúDò€ÚtQ]4œI4‹2&Ç®¾Vƒýƒ*/ÛöϱI@¬èúEé÷pë)8딜汣à Êa@ Ä6-ãEl½“%;º€!ARyyZ —_dÌ/‰ -Ç݈‰}˜Ð:±ÖkÀx ÌäÝ¢–γ\_S¨hîǃìŸ$èRÜ>uøp°Ïö¨BÛ|ñŒµÙ -(i|½Õ§zU“ ÀˆìŸIò1’m+(,,,((Î/.üÚÞ~ ®ØRb©(+-(¬°wxÚÙ7É<é;Él‰I2,¹+“gOž79rÅäÎÉßÚM±[n·Ù.ÒNm÷Ñ”W¦lšR5¥nÊ}b1L\ ®ïŸ?“!äWÔkTUHÕQŸÐ›èP:—®¢ÿ˜:yê SÓ§~Â,f¶01Œ†IgŒÌ s H€ LžÀ:À5pÓ^jÏÚO·çíØ/³ßn¿ßþ°½—}®}½}“ýÇö_8Lr f9¸9¨RÚ>vøÌá±Ãw¿;ŒK'IIéé*éZé^©Fš*Í•öJ‡¥W¥w¥Hÿp´wtr|ÅñUÇ×}3›O;žs¼êxÇñsÇ_œœ^rÚáäéádp:îÔã4êtÓé§Oþæô›Ó¿œ§9Ïs^îü†ófg/ç`çXçTçRç&çÎ=ÎÎÃÎç?tþÑ…p™á2Óe¹Ëz—Ý.‡]¼]]’]Š]Z]κÜuùÂåw-“ËfÈž“=/[#Û-ó”EÉ2dY™¬ZÖ ë•–Ý½#»'ûJö›œ”?#Vþ¼ü%ù+òuò=òCò ¹Zž&Ï’åeòZy£¼MÞ%‘ß’$$ÿ^>ÆNb¥ì3ìLv»}™]ƾÉîb²Al›Áæ²¥l-{œígÏ°çÙ«ìmö=öûû»ëdW©«Âu®ë‹®Ë]_wÝàºÕu·«›ëWo×`×XWk¶k‘k•«Åõ¤ë°ëˆëE×kc{þ,I?Ènˆ{s¢j9ß[<çuÎà”ñAUå'FŒ¼UÔݬr­ñM}A-h8ü¶—xæfÂûÜï6vˆ§{š?üVq“Ò\èÌ>–àÍù…×uʼn '2:rîÒ°Ìú,i8¤‡î 9jÚÇ!§óÑ\4÷Ó…Ð铳íOn‰˜ÜײÐ>¿®ï,7\„ìŒb¬ÈkêyH‰uí<4úâÛ<|óƒÞh>Þ€ž¢>˜…“o"䇎íÄ -œFÔ,¨¼`è Hé"°†ÝdÓÒˆÜÜ\}6—œYR+Â*êóµ£HŠˆµßð1G÷÷µš;«²+µ5BzYnQ‘¢¡¥æ¤þd‹ÐVy!·:-T¡ÍMÊIÐô=š¿"R;s+ÊæêÒÁ|Áh«vˆtKEõëLéåÑ] §!½ì­“ˆìZ]q©¢­¢t´@° au*«,½ö0 ÿqZ+ wZ£àÚñ(¢…„G­?Vö56tæOI¼‹c¹[Bò²»³Ù·óÙOË0Á]&‘#Ü@¼Dâl .‘pÊR+iaר«ôçik°Æ²rCWRœ›] –¦åé ÏÓÈ -Ë.ŠöUŸ ºÍAúÁïpÙ½äwbÛDSR|Y4çZÓ‘"¶¥çëJ2èÊäâ(¥bÏ[»½:ð u:¢783G¯ÏÁõÀ*{BF®àÁ#^_ÿ§ÈOnKx*òÇ\ š 'ƒ×¨CChÿcûÖp;m:kèDš~n›êÏ*êvn½ÆÊèÝ“S7dÐ*ë} -lÌ3Y]\>âe­'ÍÛyÙéÅŒìÁ«<ø¬ÂM8ÚŸJPbNÿÏ> Ñ”ùhÊÄ>Úbÿ )½öESƒ™%éï4Æ;#Ý+kÅ,3€­{·š¨üâò²2dðpÖ—è±³f©ÙÙKÞx]\¿Ñwá<¢{^y´VØpÿ«ÀŸ¸Ÿ¿ê~ÿ}ñþýžo~UüêÿxÝû‡o,î~–Cß»°p?\„oûá>¸-BûÑ^ôzíZ°æÄíMÂæ;¾Vxm!šÕ‡MbilA‚J‘Ñ?Œ¡Ò{ìÒÑ‘Ð IòëÜуe/ÐpëxºŽ¼ «NèáäÒ jk+yz*2Ùm؇¦h%附IWÈý2©N‰æÂâZú®œ:õq~qk"ŸaryEÙËðŒ™Ý™ŸZ©¿AÃ=Ôhë@GIi¦¦\ˆ¬¯No溛[{†‚:ŽRFm:*Êî~ŠöDS§²ËS&:6i©Þ™8põ 0`L -³Ø(Ò­Úô:Òê8F5ã T:F´’g xºÎÓU: ݆q—?ˆië -H¬/Á ö,"‰’¸‚”tETBª· R˦t2Ú˜Y¬éBeÖŸ¦EÈgütÜÖ°`?Ýt5Tšb©ÀÈzsi~eI£ØóñLg?CžZL‚»le<”˜p±Þ7©ÈCMa„.« Þ¾ZÑ0(~Ú{ññ -Hnú~f§Z–h\_˜`˜VNéÏÖÔàÌ4¡ûj39¢«MЦS)ŸÜÍ9‘™¾ñÓWø¸-™¯˜ñåOý„ØÓWR¯sðE«†ý9ëâkh¦‰û_›“% Ù®sŠö?„¢μôð§"Aú -?ÑæXË'¦Çƒe¼©ë/ð&/ËÜÀÈ6üUÐÑøÚ“-ÙÜÇ1¼6NglUh88 ÿ]ˆ.‚ÙÇ(…œ(6«à]ê*J£€—)«+"¡Š¬5” -å%õE­Ü{ç‚ßê[ܪÖ/W,R/ûïµi˜Œ´t¬Ìª ©…ÚjtÅ*wC·“–Jð–=¥¢fåF+4Ù¡¡ -Cá ¦ŒïWWß+xÊ#­Ó,ÊJ; t¹‰5^E¾+¶, -¬Á®¶QU¯Ž§_‹ôõ;¨8V—p3F,ú^E~–SfÜGÏ¢†ÇnÞîS?,x]Šç†Û†,BlU¶N¯ÏÈ™žÆ\ØÛ9uÉFwz<œÒ¹'§àU¶¾KõBo"’ Ý¢ŽŒ <Ý4opÛ*°CH£~ïS"²\l†ŸG‘ÉhŠ_À, ã©îŠÒ _žO‰hÚ#«Â*7ÓfxhÛ^ÐCÐÀÿÕçm -êZ;ÌüUÅ‘µ5{ç`A½Óí~Â.ö‹ÐL¤6ê ‹55¥-B RW9qm;áËèâ4ôŠ­ ®†_›Â¶ðù—h¸™‚ -ØÒs¿¼|¨hº íS›¨ •&+QƒÍº+üÂB®)Í(Õ}@Ãä ƒµô'íƒ×>R@zÑm´z¢]ÿNvU’q½­]¯ß‘ë™Cç¦ét©"Ô[?b›j+:ux¡IÛS”Q1‚::8sÆ–²K¶Dïß*®Ûî¿MQ`ƒ¤@3 <ˆüþpÇMáÖ¶5í³¹‚@ö÷kh&“ƒÛÐÔ™G=[‡"ÅÐ Éïþª€N¦†/ -µ}œJ©‹U'ëÊ3S²s³²Ò„ô¤œ´TÌ7kTäÎe¾ž[÷Ó‘£èµuÀ÷î¾ãŸö ªrB©Ö$Çq©µ}"¼`ë_)d\xûöAe¸VUs£{ÍÖ®š†Âbºç|us­¢8§ ###G›$èõ:]®y¡•Ór(ŒJ«°»§ïŒÜþ›âî±á]‡‚CÀÓ½­«VÛööÈðêpÝ–@>þjëYÄh²ótQ"$ -Ê Å±»ò - Œ­šãqä¤ÿ𙞓ÃglÕÀþú¦­¦{SëKÈÂ$»S­'ÄNúÀ#h!| ݧÀ #âÐkh-V`xÝÑóXÍÀNr t„ÄEéƶîÐQî››¿`©ê|ø›ÍÑ1!Áõq]Yb_¦A_©¥«‹#<s=·­÷¬í‰Z®V (ÎÄ´(£CyVh:bÛ7ÖÃG¤tÜàI?\cÿ¬¨š¨¨¹åÒ@§@ç`¤ƒið{ÛÒÐjæÌeqØBæàRï=¿ãH@øÆáG -mÙ_¨&òK - ùœyÂn߇ÎÔÄ’1àò"@ýÕ[Á€§E’bKÑ9Zúú¸{¡Yä±?jþ¦Á†âòÖ&Ü:h²¾ZÀ£¿f·%ñà SÀ5Áøê§Ý¡Ò‰îPéŸÝ¡¬¤t]&•cë}eMg‡ë•/¾˜päHBד'uÝgDàþ˜ÖçØ>&F¨çW0î¿´òQ2õÊzâõÕ=©ÿKWßL=íûK­snß¾mج´Ä­£ŽKåÜTW¡²-W¯t´G+«D`s21;ù¿Úä{¡œx@¡^(‹qƒþ«ˆ?ìHðC_j;‘“’¥Ïà|BºßOÑä:6# r{B˜›’Èy©GqèÅ.ö6û ºC”Æk‹Ë -ó‹‹Ê„²êlŽG™ƒýUª€ÝWŽ¶ZmL¤:`"Ò2 ?¯žì…5½.ð,ô_Ä2®’ý:dïzj²Ì¸<Þ,†‰V²›¿z»;mÇ\†Ò‹² Þôÿ›à+5@;L p6È3IÀ+L»©ÎâãáK| ÐùÃçy`3XôæC[—*Þê?zm¤ãĹ¡°ÞÙYyú,AŸ«ËÓq©¥}ý÷GEðSl(ãþž°ÛÃc¼x[3a_b)ÄÉq“ô!vSÆS’ÞPœP©?GÃD˜…)ÝÁDíÛÙ¥o)pÞØÈC¹Jô­#€•€ Ùõ¥¯ç8x³!¿¦¤AŒ?ÞœÞÊõ¶4o©ŠˆÎJÂÛs[BxLt]U Íùp6¯«|ëɧmyœ&`aÿ”6 t®¡ö¶­pø­Šz'פÁ„‚|Qô¥ €1oÚâ›Ybºž´ ZWD¶jcµŒ¿QÆe©aœ)“ü³r|š?n MÀ”±Ä†žh9Z†Qâ \ŽVÀCø¶®À{?[…ˆàd yµ[µ­K0y²¦­EGV+ß„CÝî×|3Hð4ÚÎî2jêuØ#?K=cÑžæ ñðp>œùÆdb  õHœº½nM«l%:Œ¡H°€Qûz¬æ!F\„D©Bþ,ŸhjÅ”5)Ï £h‡³Ë PvÜ¥>' [ -åìe@<˜åщP.‡î8”+ð͇r9|Lœh02à+Æêcb=È]s‰:€Ö·‘…ßœùãû”ƒ=¢þ{¢\ä{ÀÓÎx}sV='›Ñ„¤€n¶Îa;˜/?¯½Ždñ9q…Œøt]—QfÑ‹ C¨ -Š,x‹C;à N 2¾‡ák¸¾Æçܶj·PÒ£¼ídÖ±Cõ¡~Š M\THrÓÈ`AM}« e­s¶ŒXnS?¼=Ž¿t›G[G¼>¼wîÜ=0aKá6“änogm7³ÐÚ£¸x¤oë[îž»|ð°Þ=ŸÞþÁ㋆:îw ðþý€ûî≯¯Š²ŽñgCXUtrf4§Œ7ÛjèÚH2 )=-ŽKO.(‹Í{Ž”ÛúÂ(€B¯A"¾)³²Jaª©hÀŸýÀæþø ÜÅþ¿èy°†æõ4€/ÃÅp6¾¿Œ×îþë@S½ °;`õ¨«ØÒ#ÞÑ‘jn‹÷Íäˆ:0ª={ºaÓ™x“ P·]ú†¥Q ‡9­:Ó7gwÚü:@î‰×I„Áÿ<ˆ/›(ƒ‰Ë©-J»i€Vgó¶îkn5†'yCô9)"¸*×àû×ìÆüŽ¹â£‰ÖPœó;¾yë‘ð@ni—áºnøj¯D«Ô*›š-øäZ×pKBJ• Á¤ãÖD*Р 1¿Â¨¨b÷)ÓÛï`±¿fÁåX[!þnÿ3 ïwre`¦ -ØÎ}àÜ%àr€u=˜8«’€qtK~‡Î6‰jÆ[È…8Cžu;2vä#$ Ñ³”º ©4gÞ3Œí0#@¿ìÌÊ -ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ -endstream -endobj -1269 0 obj +% 1264 0 obj << -/Type /ObjStm -/N 100 -/First 996 -/Length 13380 ->> -stream -268 0 1265 58 1266 116 1267 175 1268 234 1261 293 1278 440 1260 642 1270 789 1271 933 -1272 1079 1273 1226 1274 1377 1275 1528 1276 1679 1280 1825 1277 1883 1285 2017 1282 2156 1287 2301 -272 2360 1288 2418 1284 2477 1296 2624 1283 2817 1289 2965 1290 3109 1291 3256 1292 3403 1293 3546 -1294 3693 1298 3838 1295 3896 1302 4030 1299 4178 1300 4325 1304 4472 1301 4531 1313 4651 1305 4844 -1306 4988 1307 5133 1308 5277 1309 5422 1310 5569 1311 5713 1315 5860 276 5918 1316 5975 1312 6033 -1318 6166 1320 6284 1317 6343 1329 6424 1321 6599 1322 6743 1323 6888 1324 7032 1325 7177 1331 7324 -280 7382 1332 7439 1328 7497 1335 7630 1326 7778 1327 7922 1337 8069 1334 8128 1344 8222 1338 8397 -1339 8539 1340 8684 1341 8831 1342 8975 1346 9122 284 9180 1347 9237 1343 9295 1350 9428 1348 9567 -1352 9715 288 9774 1349 9832 1358 9913 1353 10070 1354 10214 1355 10361 1360 10508 292 10566 1361 10623 -1357 10681 1365 10815 1369 10963 1370 11090 1371 11133 1372 11340 1373 11578 1374 11854 1356 12090 1363 12237 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.43 128.475 391.385 140.535] +/A << /S /GoTo /D (table.12) >> +>> +% 1269 0 obj +<< +/D [1267 0 R /XYZ 149.705 753.953 null] +>> % 268 0 obj << -/D [1262 0 R /XYZ 150.705 716.092 null] +/D [1267 0 R /XYZ 150.705 716.092 null] >> -% 1265 0 obj +% 1270 0 obj << -/D [1262 0 R /XYZ 290.728 674.17 null] +/D [1267 0 R /XYZ 290.728 674.17 null] >> -% 1266 0 obj +% 1271 0 obj << -/D [1262 0 R /XYZ 287.931 654.041 null] +/D [1267 0 R /XYZ 287.931 654.041 null] >> -% 1267 0 obj +% 1272 0 obj << -/D [1262 0 R /XYZ 287.193 633.911 null] +/D [1267 0 R /XYZ 287.193 633.911 null] >> -% 1268 0 obj +% 1273 0 obj << -/D [1262 0 R /XYZ 150.705 447.252 null] +/D [1267 0 R /XYZ 150.705 447.252 null] >> -% 1261 0 obj +% 1266 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1278 0 obj +% 1283 0 obj << /Type /Page -/Contents 1279 0 R -/Resources 1277 0 R +/Contents 1284 0 R +/Resources 1282 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1260 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R ] +/Parent 1286 0 R +/Annots [ 1265 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R ] >> -% 1260 0 obj +% 1265 0 obj << /Type /Annot /Subtype /Link @@ -15115,7 +15009,7 @@ stream /Rect [378.159 654.503 390.114 666.562] /A << /S /GoTo /D (table.12) >> >> -% 1270 0 obj +% 1275 0 obj << /Type /Annot /Subtype /Link @@ -15123,7 +15017,7 @@ stream /Rect [368.549 588.085 444.603 600.145] /A << /S /GoTo /D (vdata) >> >> -% 1271 0 obj +% 1276 0 obj << /Type /Annot /Subtype /Link @@ -15131,7 +15025,7 @@ stream /Rect [328.746 576.13 340.701 588.189] /A << /S /GoTo /D (table.12) >> >> -% 1272 0 obj +% 1277 0 obj << /Type /Annot /Subtype /Link @@ -15139,7 +15033,7 @@ stream /Rect [256.048 497.757 323.106 509.817] /A << /S /GoTo /D (descdata) >> >> -% 1273 0 obj +% 1278 0 obj << /Type /Annot /Subtype /Link @@ -15147,7 +15041,7 @@ stream /Rect [338.139 460.563 345.113 472.623] /A << /S /GoTo /D (equation.4.1) >> >> -% 1274 0 obj +% 1279 0 obj << /Type /Annot /Subtype /Link @@ -15155,7 +15049,7 @@ stream /Rect [336.486 445.951 343.459 458.011] /A << /S /GoTo /D (equation.4.2) >> >> -% 1275 0 obj +% 1280 0 obj << /Type /Annot /Subtype /Link @@ -15163,7 +15057,7 @@ stream /Rect [337.034 431.339 344.007 443.399] /A << /S /GoTo /D (equation.4.3) >> >> -% 1276 0 obj +% 1281 0 obj << /Type /Annot /Subtype /Link @@ -15171,25 +15065,25 @@ stream /Rect [202.52 189.579 214.475 201.639] /A << /S /GoTo /D (table.12) >> >> -% 1280 0 obj +% 1285 0 obj << -/D [1278 0 R /XYZ 98.895 753.953 null] +/D [1283 0 R /XYZ 98.895 753.953 null] >> -% 1277 0 obj +% 1282 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F68 1127 0 R /F60 666 0 R /F67 913 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F68 1132 0 R /F60 670 0 R /F67 918 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1285 0 obj +% 1290 0 obj << /Type /Page -/Contents 1286 0 R -/Resources 1284 0 R +/Contents 1291 0 R +/Resources 1289 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1282 0 R ] +/Parent 1286 0 R +/Annots [ 1287 0 R ] >> -% 1282 0 obj +% 1287 0 obj << /Type /Annot /Subtype /Link @@ -15197,33 +15091,33 @@ stream /Rect [428.968 116.52 440.924 128.58] /A << /S /GoTo /D (table.13) >> >> -% 1287 0 obj +% 1292 0 obj << -/D [1285 0 R /XYZ 149.705 753.953 null] +/D [1290 0 R /XYZ 149.705 753.953 null] >> % 272 0 obj << -/D [1285 0 R /XYZ 150.705 716.092 null] +/D [1290 0 R /XYZ 150.705 716.092 null] >> -% 1288 0 obj +% 1293 0 obj << -/D [1285 0 R /XYZ 150.705 268.704 null] +/D [1290 0 R /XYZ 150.705 268.704 null] >> -% 1284 0 obj +% 1289 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1296 0 obj +% 1301 0 obj << /Type /Page -/Contents 1297 0 R -/Resources 1295 0 R +/Contents 1302 0 R +/Resources 1300 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1283 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R ] +/Parent 1286 0 R +/Annots [ 1288 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R ] >> -% 1283 0 obj +% 1288 0 obj << /Type /Annot /Subtype /Link @@ -15231,7 +15125,7 @@ stream /Rect [305.144 654.503 312.117 666.562] /A << /S /GoTo /D (section.3) >> >> -% 1289 0 obj +% 1294 0 obj << /Type /Annot /Subtype /Link @@ -15239,7 +15133,7 @@ stream /Rect [368.549 586.032 444.603 598.092] /A << /S /GoTo /D (vdata) >> >> -% 1290 0 obj +% 1295 0 obj << /Type /Annot /Subtype /Link @@ -15247,7 +15141,7 @@ stream /Rect [328.621 574.077 340.576 586.136] /A << /S /GoTo /D (table.13) >> >> -% 1291 0 obj +% 1296 0 obj << /Type /Annot /Subtype /Link @@ -15255,7 +15149,7 @@ stream /Rect [378.159 493.651 390.114 505.711] /A << /S /GoTo /D (table.13) >> >> -% 1292 0 obj +% 1297 0 obj << /Type /Annot /Subtype /Link @@ -15263,7 +15157,7 @@ stream /Rect [368.549 425.181 444.603 437.24] /A << /S /GoTo /D (vdata) >> >> -% 1293 0 obj +% 1298 0 obj << /Type /Annot /Subtype /Link @@ -15271,7 +15165,7 @@ stream /Rect [328.746 413.225 340.701 425.285] /A << /S /GoTo /D (table.13) >> >> -% 1294 0 obj +% 1299 0 obj << /Type /Annot /Subtype /Link @@ -15279,25 +15173,25 @@ stream /Rect [256.048 332.8 323.106 344.859] /A << /S /GoTo /D (descdata) >> >> -% 1298 0 obj +% 1303 0 obj << -/D [1296 0 R /XYZ 98.895 753.953 null] +/D [1301 0 R /XYZ 98.895 753.953 null] >> -% 1295 0 obj +% 1300 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R /F68 1127 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R /F68 1132 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1302 0 obj +% 1307 0 obj << /Type /Page -/Contents 1303 0 R -/Resources 1301 0 R +/Contents 1308 0 R +/Resources 1306 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1299 0 R 1300 0 R ] +/Parent 1286 0 R +/Annots [ 1304 0 R 1305 0 R ] >> -% 1299 0 obj +% 1304 0 obj << /Type /Annot /Subtype /Link @@ -15305,7 +15199,7 @@ stream /Rect [211.646 410.079 223.601 419.489] /A << /S /GoTo /D (table.13) >> >> -% 1300 0 obj +% 1305 0 obj << /Type /Annot /Subtype /Link @@ -15313,25 +15207,25 @@ stream /Rect [253.329 228.102 265.284 240.161] /A << /S /GoTo /D (table.13) >> >> -% 1304 0 obj +% 1309 0 obj << -/D [1302 0 R /XYZ 149.705 753.953 null] +/D [1307 0 R /XYZ 149.705 753.953 null] >> -% 1301 0 obj +% 1306 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1313 0 obj +% 1318 0 obj << /Type /Page -/Contents 1314 0 R -/Resources 1312 0 R +/Contents 1319 0 R +/Resources 1317 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R ] +/Parent 1286 0 R +/Annots [ 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R ] >> -% 1305 0 obj +% 1310 0 obj << /Type /Annot /Subtype /Link @@ -15339,7 +15233,7 @@ stream /Rect [263.331 417.772 339.385 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1306 0 obj +% 1311 0 obj << /Type /Annot /Subtype /Link @@ -15347,7 +15241,7 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1307 0 obj +% 1312 0 obj << /Type /Annot /Subtype /Link @@ -15355,7 +15249,7 @@ stream /Rect [263.331 338.393 339.385 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1308 0 obj +% 1313 0 obj << /Type /Annot /Subtype /Link @@ -15363,7 +15257,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1309 0 obj +% 1314 0 obj << /Type /Annot /Subtype /Link @@ -15371,7 +15265,7 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1310 0 obj +% 1315 0 obj << /Type /Annot /Subtype /Link @@ -15379,7 +15273,7 @@ stream /Rect [263.331 171.988 339.385 184.048] /A << /S /GoTo /D (vdata) >> >> -% 1311 0 obj +% 1316 0 obj << /Type /Annot /Subtype /Link @@ -15387,50 +15281,50 @@ stream /Rect [242.868 160.033 254.823 172.093] /A << /S /GoTo /D (table.14) >> >> -% 1315 0 obj +% 1320 0 obj << -/D [1313 0 R /XYZ 98.895 753.953 null] +/D [1318 0 R /XYZ 98.895 753.953 null] >> % 276 0 obj << -/D [1313 0 R /XYZ 99.895 716.092 null] +/D [1318 0 R /XYZ 99.895 716.092 null] >> -% 1316 0 obj +% 1321 0 obj << -/D [1313 0 R /XYZ 99.895 560.161 null] +/D [1318 0 R /XYZ 99.895 560.161 null] >> -% 1312 0 obj +% 1317 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1318 0 obj +% 1323 0 obj << /Type /Page -/Contents 1319 0 R -/Resources 1317 0 R +/Contents 1324 0 R +/Resources 1322 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R +/Parent 1286 0 R >> -% 1320 0 obj +% 1325 0 obj << -/D [1318 0 R /XYZ 149.705 753.953 null] +/D [1323 0 R /XYZ 149.705 753.953 null] >> -% 1317 0 obj +% 1322 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F62 671 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1329 0 obj +% 1334 0 obj << /Type /Page -/Contents 1330 0 R -/Resources 1328 0 R +/Contents 1335 0 R +/Resources 1333 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R ] +/Parent 1338 0 R +/Annots [ 1326 0 R 1327 0 R 1328 0 R 1329 0 R 1330 0 R ] >> -% 1321 0 obj +% 1326 0 obj << /Type /Annot /Subtype /Link @@ -15438,7 +15332,7 @@ stream /Rect [263.331 417.772 339.385 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1322 0 obj +% 1327 0 obj << /Type /Annot /Subtype /Link @@ -15446,7 +15340,7 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1323 0 obj +% 1328 0 obj << /Type /Annot /Subtype /Link @@ -15454,7 +15348,7 @@ stream /Rect [263.331 338.393 339.385 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1324 0 obj +% 1329 0 obj << /Type /Annot /Subtype /Link @@ -15462,7 +15356,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1325 0 obj +% 1330 0 obj << /Type /Annot /Subtype /Link @@ -15470,33 +15364,33 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1331 0 obj +% 1336 0 obj << -/D [1329 0 R /XYZ 98.895 753.953 null] +/D [1334 0 R /XYZ 98.895 753.953 null] >> % 280 0 obj << -/D [1329 0 R /XYZ 99.895 716.092 null] +/D [1334 0 R /XYZ 99.895 716.092 null] >> -% 1332 0 obj +% 1337 0 obj << -/D [1329 0 R /XYZ 99.895 560.161 null] +/D [1334 0 R /XYZ 99.895 560.161 null] >> -% 1328 0 obj +% 1333 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1335 0 obj +% 1340 0 obj << /Type /Page -/Contents 1336 0 R -/Resources 1334 0 R +/Contents 1341 0 R +/Resources 1339 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1326 0 R 1327 0 R ] +/Parent 1338 0 R +/Annots [ 1331 0 R 1332 0 R ] >> -% 1326 0 obj +% 1331 0 obj << /Type /Annot /Subtype /Link @@ -15504,7 +15398,7 @@ stream /Rect [314.141 702.323 390.195 714.383] /A << /S /GoTo /D (vdata) >> >> -% 1327 0 obj +% 1332 0 obj << /Type /Annot /Subtype /Link @@ -15512,25 +15406,25 @@ stream /Rect [293.677 690.368 305.632 702.428] /A << /S /GoTo /D (table.14) >> >> -% 1337 0 obj +% 1342 0 obj << -/D [1335 0 R /XYZ 149.705 753.953 null] +/D [1340 0 R /XYZ 149.705 753.953 null] >> -% 1334 0 obj +% 1339 0 obj << -/Font << /F62 667 0 R /F67 913 0 R /F59 665 0 R >> +/Font << /F62 671 0 R /F67 918 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1344 0 obj +% 1349 0 obj << /Type /Page -/Contents 1345 0 R -/Resources 1343 0 R +/Contents 1350 0 R +/Resources 1348 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1338 0 R 1339 0 R 1340 0 R 1341 0 R 1342 0 R ] +/Parent 1338 0 R +/Annots [ 1343 0 R 1344 0 R 1345 0 R 1346 0 R 1347 0 R ] >> -% 1338 0 obj +% 1343 0 obj << /Type /Annot /Subtype /Link @@ -15538,7 +15432,7 @@ stream /Rect [263.331 430.55 339.385 442.61] /A << /S /GoTo /D (vdata) >> >> -% 1339 0 obj +% 1344 0 obj << /Type /Annot /Subtype /Link @@ -15546,7 +15440,7 @@ stream /Rect [224.557 418.595 231.53 430.655] /A << /S /GoTo /D (table.2) >> >> -% 1340 0 obj +% 1345 0 obj << /Type /Annot /Subtype /Link @@ -15554,7 +15448,7 @@ stream /Rect [256.048 352.283 323.106 364.342] /A << /S /GoTo /D (descdata) >> >> -% 1341 0 obj +% 1346 0 obj << /Type /Annot /Subtype /Link @@ -15562,7 +15456,7 @@ stream /Rect [263.331 201.166 339.385 213.226] /A << /S /GoTo /D (vdata) >> >> -% 1342 0 obj +% 1347 0 obj << /Type /Annot /Subtype /Link @@ -15570,33 +15464,33 @@ stream /Rect [242.868 189.211 254.823 201.271] /A << /S /GoTo /D (table.16) >> >> -% 1346 0 obj +% 1351 0 obj << -/D [1344 0 R /XYZ 98.895 753.953 null] +/D [1349 0 R /XYZ 98.895 753.953 null] >> % 284 0 obj << -/D [1344 0 R /XYZ 99.895 716.092 null] +/D [1349 0 R /XYZ 99.895 716.092 null] >> -% 1347 0 obj +% 1352 0 obj << -/D [1344 0 R /XYZ 99.895 566.828 null] +/D [1349 0 R /XYZ 99.895 566.828 null] >> -% 1343 0 obj +% 1348 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1350 0 obj +% 1355 0 obj << /Type /Page -/Contents 1351 0 R -/Resources 1349 0 R +/Contents 1356 0 R +/Resources 1354 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1348 0 R ] +/Parent 1338 0 R +/Annots [ 1353 0 R ] >> -% 1348 0 obj +% 1353 0 obj << /Type /Annot /Subtype /Link @@ -15604,29 +15498,29 @@ stream /Rect [378.029 655.624 385.003 667.684] /A << /S /GoTo /D (section.6) >> >> -% 1352 0 obj +% 1357 0 obj << -/D [1350 0 R /XYZ 149.705 753.953 null] +/D [1355 0 R /XYZ 149.705 753.953 null] >> % 288 0 obj << -/D [1350 0 R /XYZ 150.705 716.092 null] +/D [1355 0 R /XYZ 150.705 716.092 null] >> -% 1349 0 obj +% 1354 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1358 0 obj +% 1363 0 obj << /Type /Page -/Contents 1359 0 R -/Resources 1357 0 R +/Contents 1364 0 R +/Resources 1362 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1353 0 R 1354 0 R 1355 0 R ] +/Parent 1338 0 R +/Annots [ 1358 0 R 1359 0 R 1360 0 R ] >> -% 1353 0 obj +% 1358 0 obj << /Type /Annot /Subtype /Link @@ -15634,7 +15528,7 @@ stream /Rect [368.549 344.818 444.603 356.877] /A << /S /GoTo /D (vdata) >> >> -% 1354 0 obj +% 1359 0 obj << /Type /Annot /Subtype /Link @@ -15642,7 +15536,7 @@ stream /Rect [326.652 332.863 338.608 344.922] /A << /S /GoTo /D (table.17) >> >> -% 1355 0 obj +% 1360 0 obj << /Type /Annot /Subtype /Link @@ -15650,47 +15544,47 @@ stream /Rect [291.943 264.733 359.001 276.793] /A << /S /GoTo /D (descdata) >> >> -% 1360 0 obj +% 1365 0 obj << -/D [1358 0 R /XYZ 98.895 753.953 null] +/D [1363 0 R /XYZ 98.895 753.953 null] >> % 292 0 obj << -/D [1358 0 R /XYZ 99.895 716.092 null] +/D [1363 0 R /XYZ 99.895 716.092 null] >> -% 1361 0 obj +% 1366 0 obj << -/D [1358 0 R /XYZ 99.895 513.636 null] +/D [1363 0 R /XYZ 99.895 513.636 null] >> -% 1357 0 obj +% 1362 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1365 0 obj +% 1370 0 obj << /Type /Page -/Contents 1366 0 R -/Resources 1364 0 R +/Contents 1371 0 R +/Resources 1369 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1356 0 R 1363 0 R ] +/Parent 1338 0 R +/Annots [ 1361 0 R 1368 0 R ] >> -% 1369 0 obj +% 1374 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100645Z00'00') /ModDate (D:20180323100645Z00'00') >> -% 1370 0 obj +% 1375 0 obj << /Type /ExtGState /OPM 1 >> -% 1371 0 obj +% 1376 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1373 0 R +/FontDescriptor 1378 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -15698,10 +15592,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1372 0 obj +% 1377 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1374 0 R +/FontDescriptor 1379 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -15709,7 +15603,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1373 0 obj +% 1378 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -15722,43 +15616,144 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1375 0 R +/FontFile3 1380 0 R >> -% 1374 0 obj -<< -/Type /FontDescriptor -/FontName /XISTAL+Times-Bold -/FontBBox [ 0 -13 600 688] -/Flags 65568 -/Ascent 688 -/CapHeight 676 -/Descent -13 -/ItalicAngle 0 -/StemV 90 -/MissingWidth 250 -/CharSet (/P/one/zero) -/FontFile3 1376 0 R ->> -% 1356 0 obj + +endstream +endobj +1380 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.023 625.272 242.978 634.682] -/A << /S /GoTo /D (table.17) >> +/Filter /FlateDecode +/Subtype /Type1C +/Length 13073 >> -% 1363 0 obj +stream +xœºwxWö?laÏŒ˜ r‘G¶5h†ôB'ZBïL·1`pø˶$K–eK²%«Yr•-˽w Lï%„ ”$$$¤m²›Æî{½ûýÈ–ßû<ïûýãõ<~4£¹ºsçÜs>çs +ÏÇo”dz%!)&cÒ攤}ÉÞ뉚ç7Ê#ñ-VyRŸ/Å<ÌŸâ1¾ÅcüNŽc~G¿8ŽfüÇÑA>~<Þ¬5›íonݼý­ &.II•§'ÄÅKÇOŸ:mÆøhùøÝ¿4&#!.yüëÜIVÌ¡”Ô¤˜déú„¤èÌŒñ/ž<~sL\æ¡}éÿúøïDÿÿ¦æùsïæ³Ý§•À‹åý<*Åw¬ïjßM¾}~´_¤_¬_;ÆÃæbë±d,ëÆð`|<þ +¾—ãýø)üþ þÿ'‘G˜;?€Ì·ò«ø®ÑüÑ£•£¿'7ÇÉÈûà=°,Ù ¨­c|Æ?æ1³ÆèÆÜ;nìkcç]4vÍØð±ÛÆÆ-ûpì+ˆ¤ +ä‚|ApQð‘àgÁßÿôçû ü—û¯ößà¿Í¿Ø¿Ä¿É¿Ó¿×ÿI€0`I@x€2   0 $àTÀÕ€Û¾ ôd_ |#p]`Z`f 5°.ðbàõÀ? šô~Ðò ¸ Â ª Ú æ Ž ž þ ÓA烾 ú6è7¡¿P('|S8[ø¾p±p¥p¿0Gh– +Â&a‡°GxEø¡ð¡ð ! ö ‡³Á¯O^¼*8|=øqð“à?ÿüwʇR¯Ss¨ÔJjµ‹ÚO¤”TUBÕPõT'u’ºI=¦þLý&%"Eþ¢0ÑK¢·DSE³DóEËD«EE[D¢ƒ"¹¨HdÙEu¢ÑIÑ%Ñ ÑmÑ}ÑW¢ŸE#!£CD!lÈÄi!³C„, Y²1$2$>D’b ) q†4„´†t‡9r!äÇ!C~ù-…ú…Ž„ +Sðˆ—¢ÒÑ+F~*þŠÅhÃb8™øÂP©®œÃo€J)®ž«RÏ2ðÑd˜Ž·›¬ÖVÒ8äܪêéü&¼¾‚´Êð»úŠ\óþÈÆåàY“R)Ôz%-ÕV ±p;qFߦldz3÷Ön¤'-ÚµVZ›ÝØXç®·mF;k(5:ìâ–ÎúÃ'[’·2ë 4i½<o ?3[•pP à?žÏ¦P8‡^AQ“:§œÛÌ®½ôôÀ×4Ü ÇAFý%ùÉ–ËìGkgõN ãüŽ—'ö²çvuLB@¼Q½8©êÍt{Ð`‚;èã'Põ‹p¢'œÛÙ,\8.³0O­ 5 +«CÁ +»ªbcé}{ÉÙøCò}ÛÅó†Â¡ßFæÎ3û›bø¥¹¶¬tñª»O[w +v2R¼Åcõ¸pm­©¢ÊI—×jk¹‰”ýƒ4äýè÷Ï·Ü@¡wØ—/î:/>¤ïÚ±#²¸¦#±*­z#§ÈZ<{)2mbиï߀A0èÇgœv…Nù³¹)Ô—' £V.<Ûx8‹M9“sûcñŸŽ_»Ã€%dMù$ p‰`¼ßiÉ©ìÃnâØp}E}²ñÐ*ņÕêœ]E|%<à$vÙò*Œ'ùPNü°ç¢݇kV0­y»,!o»2LAXìp¦¤µT¹‹E&¸1/wg@žïó7j©KvYr7Š†%¡PØtîÔw⣹}imÌ`̬æÉ4j“á÷ +ÊòM‹É|ÍB_Ûk‰ù6u…ñ.î$.˜a>ºŠÁ™øH„ç ÕZî8 /í´3k_œŒÙ¯›`àƒB(Áòð½¾HGë4f[ëJmô{›·/ ïÜÿe{é Ö“]“qH¼'1eÇòøþ_¥LšZ‰—Ù­æ +èår½ÞÄ€¸¶ÊÑif¬eŦr¶uɈaÎh~F/Á´%-&ŒïäçO-äÖy¹–˜nÎ-7>àÃm|f]ýº¹þ´5 tyÆSŽÊs9ÝáP¬aÑ:bòðÖÏÏn>y„9r²öÚc1$bžìLÏÎN—•åÔg3-%%¿"£äÐAñÛ›–ÎKÉ(¯U3y®ÂÆa1Œ!Ú9³®b<ᵈžÿ|yzˆa¸KÇ#_Þ›†¨BþJ|¾¹Àbìå{’óÝÊʇV> p$xý KÀaš‡]ÃhÊc*IŸ—¥fTé©Yt|J÷QÖJ˜® õÃу|p¯z (E ÑgªÎ1ǣݨ.$¾v8Ošä$:@§èó³I˜U“ƒÇ*+ûŠX¸º0W"Ñ’8Ó% ß×£{žM½òNÜÂùì’eû'¼!Füþé0K?yÿ ýëÓ¾»wÙO>éÿî™øYì·‹î2÷Në{‰F?ŽQp œÈ[`8œˆ&¢-h3š„&£ o½ßys³òøÇ߈A¶d“Äl3›îJÀR@yëÈ{ØHðwäEÒ…äĽjU!wßš[a¼Ç÷8ÎœG¨SÔ#¿×ÁùØÈU\‡æcxäÕÕ@ÂÌ?7R„gækféù2àù.¥’Æ'¤"ŸB>*Ã=K=Åœ# D6Z€5ã5¿ô¶A‡iøȪ‘¿bJÏU¢.ÅÄ%ÊZ5 '¿ Š7Kµ 9#k½z·¤iÎ’?ý×JVP@ÂQ*éÎldžΟ:¶…5%P=íIqqÉÉ1ñÉm}½ím½,ðµ‹`®Ï6í³¨Ë}ap-Ç£ V½Eo) +sh,:½8?_§fdJ˜ìÄ÷XÕî;&Ám¡m-0úµTß0„9Ñ^1`,/ÌåÆæªr"˜g6Qh> NÎ߬ K*ÀrSe©©Œî.Í`G²㶢¢¥y|ð¤ì?¯S-vçVpýûv×3†Õ 5ŠRÂU™Ÿ›_˜¯Éc9 ~ K{Š›¾µ•ž²ð]5([áÂOÙòÍSùÓS _ÂòË eâªrG-Sê?fêVôï…£( +Cs±]’e tFÔÈñ<­Ía·Øí¥, €Ó0Á{¸ø©ËyÎʯEÛdD±\—#Ž]„F½ŠøLŒÂoW:/3.$“—+•ËX•E¼ +ù‹à¨>qM¹­Çë3¸ß+¬U^˜W“qzE…²"‡;”Õ™¡h5Ê[>#!-Â&‡%."ÁœWâ;í'®3P7`°$Wµ„@Í"A éYå¦à›«Œ—ÚhDM}Û]±».†­N­Tv§.FãCûð ?–ÓӠЋÙê“}lNcnÅ¡z~âªmkyÔ1½gÅÂiE{:“ÕI¥^R_üHüÉkwN¸yó&P¯áPˆrX_•ï +;žÓ¸‹FÄd4½…‚ïLûí“‹=wŽ°%1Žl§”¯(/Ï·Ó›Ùbg¿Äz ­¢À ¡÷'÷}¢`g¸(Ä ¦wÄ +GCvð‹Û” n¶JêH¯{Ÿ/°pÈ#'nÛ2¿#F‚BgEç*Òiu¾µJÆVeçYtb¦<5®Szúèáê¶6¶¾¾´²ó\í¡B>éï¼næ»P†œ8Y©•j‹‹óÓÙ‚L$B½ˆ ˜ª9¿¥R\ç*ëg*]8(îó|ÙÇûýWÎyjìãܳ® ×Ø.÷=ýIüMòÃðóÌG+¯IhÔ Ãif‰q±Z½Pχ›=7¨Ž2Ç‘¯nä$ 3·ÎD>bDFÏšÉ$ïؤžAïW—v²àeÌÕÒñùåÇYÏ BoŽÌIÈ[¥ãôßa+.¥ûJ5Ñ,šJtƤ–ï!Y ½Œ‚ïÍ€¾úÝ'ºÙ5„µ¾qC®PZ­Z“Çd+Ò4Éô¬­ŸrêwòÞýsÑÛXÐË"ŸXJ²±E<ØÑrübûÁi ŸŠØA[5š™ãÀëœj#[ W¨™ÍsößÀrk5eâ²J{ c¯F‘Üc…&㧈:¶8tÅK[f¨Õ1ú0™Ëskòˆì¼’ +‡Ùæîd?„¼[hV!/Qæ‹só´™L$n•÷óQn?§à\ü’ÑfXÆwA7-ÎJ 7ñÑ\h†“ðßÌéåÓkL¡ø66b”ãÀEfå¼M‚zYŸÝn2•0à0i+.6ß•Õ¼Ò2¥`íО«Cƒug®2 Ø wzh7ÏC<ŸF©q”7rdÿ¤<Í*gIiµj"NZÕ`·7–5±GžaP÷¿U´æ(ŲÜ8&G;\¹xTZÛ×qì0ÔÏ0ÿo(wÉvÎÒ;dÄ]™Æ´ˆþã€v™ +œ ‚‰€„ösÙdÜ´£$ÃÂÔêË:«Þ¦·…™óšR½5,¹ùP»Ñ¯Sd»t´žûËmÚßÇv¨Éj:X¨ Õi±ùoEoÊë,E%6³Éfe._:Ü÷ñU¾nõì¦ô–u1¹á^U±™0³ÓÉ¡eC©b/;âO,(JÏËf4:UŠVjìu +¶A®*Í¡¥rEfâ€ôüÐ᪦¶·³þÖ#1ðúó9®ŒDKJÕBZðݧr +0ñ6š{(Û¨ObáJâvµóÇÄ/Q¶–Z³›þÓ5§¯]?-+ÇRÏÑ$‰0à+¯fªkP–¢¯”ü!0LÖe¶€µš`r'$zqÝY{ÖÌpû'€ob.YÁdNmÞÐNÅä¨ÔRZ•]R*g3*0ḊŒŒ’LZ81E"×Q^íl„8YUØD_€A¸ŽZ³™žÎ!GºpH­ýø-ñæ¾BQè£7ž;Ý2Üͺ+Û\øè £n:ºûOѧÛcVYX #Éò³¸€&l©Äó澞7á= +%kÕ²}FnÄäPæ"ä&lŸY]{] “› (B°kíj¥Xž§KàF÷)Æ^k«)7fÖ§gdffhl +»Œqï°flÇ™”Ö}5|‡LfÓÐR…<-Å©l«(³”6²Îk¤gËÒ3Ü\ çv76f»¥,'®‹›/yBÁθ¸ÕJ¶ ÷"o‡»p-d%ðÊC_xÆRÓ Ç„8Â+WÀlÎMí´èKßñŸ¶Õš†9ò-Z­¸@«W3r˜ü‡·çvã8ÙÓØÐÝ™Y«Õ:Æ 7é]‰£«¥ç|? èrg¡ÖÉ6äa O¢×/Ý>•Ñµa½DÅgHÀšè̃\¤q{óO?ß¾ú»›‘Y°÷Ó#¢WÒ+wœºÕæ¨kè`UmÚº½¶¢Î-­ŒOÏÔçƱ€* ÷ªc8n·Þ8Gº$—蠟-\ŸT#oiuÖtX‹íÆÖXŽ•]憚£tcmÊÎÚsl‡¤bÃÚ™qàØÊd —,$#¬Û$î…Á’Ø­±¬@AÂK25Æ,–î*ñYYk|¼,e[®e¯9‡D?cŽ%TbZZbbsZgGssggZó!?RÝÙö6ºZ[/óÑßÏP¦Ø’Øò8¾‰“ŒQ,_›40|¥¥Žb>?G} òÞS¨æpáþk\¸oj·XZM|8îÿ;ÞXÇ áÛä2 Øÿ²`a„Ïÿ+^íÙå–­¦Õ3½xSDÂÃ.BjÂÀú=Êìýâ §£ïß?5xýXVëò“LêZêpjUö!ñA©4>:µýDWEC ö;vQI8Q”$p8AÀ©$Тä‹ðz<8`k¦…Ÿ'Àóhøµ–GâhªÅvÁ•Ónsž£K)Dã†+°!øµμ|»–.*4 +ÙW·b ]r‚$²Hà,kV:Ó‰£SS£åyÖêL¦J–gË£³•9Y‰íò³Ð÷óKàhGMC«øDdïúuRWÄ3Mrl¨Ã]ÙK÷ÔÉ’bÓ2—IYAÖ{$ðØŸ_šºYgÕš9Ÿ09R+y:bÇ•ú‹¤>³µ½¾¾­MZŸÌ +ŽŸmâ~Þ™>•‰yä‰&n¶¨Ú™el}4½+*}ã&|$™z#Â( +½‹fr1Åø.šwrÇl8 î€;¸«¹h+§¦(ÍE³Ñv´ÎD³¹Øb7à]¸FqCf¡(nH#ùÂ"ÏKn)¢ìƒáÀ¶†¹(¸ͨ5X¿èêøÒÆi{TÔÖð£{€'ŽZž Ñ/:dW…–Y1³½Ää Ûì¹›Yt÷ü‘}íõdžÅO\E~±)ºœh¦@ª)Ê£³4¥µEly¿Ây¸Â!øµ›÷ø¬{æ úȯŀø¸ºj R%ß ³ŸI5è…h2Ujdb@Í—€ç¡T½;UŸ¶ÉÌŽ¼CÌÒ¦eæiJZf(3·<ô†+ ™TÊJJe^äljm¥¦†®sV7ÝÙ2Á¦´]qlRt^¬n<%¯H†<¿æµB.Öžü憓Ȃ‰g?µ"!¯pQ÷†å k·p¶ºø=¯Ãñ°ÙeÕÁ , O)Ì÷æ1ŒÅµûY×e€j¿Ð{üÞÉh4#ÜFíZ¸$rso;#ÈV$drŽ&e;yf(± $A¡¤·JHPÉÙû/`äµ›ž¸‘¸U„ÀE,Êqâ. øJ˜è$¶Z5¥gÅžŸ8v•oЩuaà Ù~¿Žˆ»rk22reà°„ pR|}ÛÑ÷£ÔR)“%ÓÈrv7©B‡ëÁMÞ7¤'&Q#q€bþwâ‘@?’{0@‰=ŸöƒÊÒÊ7HçQgH¸·…Û®ó Ñw–Qk¡ñ:!ym•'η + Fì¬Á)[+nÉcÑ–G¨Ç>?ö)Øõ˜ÅNC–Èi +õ!:+ËVª`OL—Û£èÝß°ÛL@'LGÜ?wze;üHhG‰ˆÐFÜxûÅØpvˆ®¯(Hu±àÊì"œ(rÿÜé†3(OI.I§wïÎ8Â&íÕ(|‡f‘¦øœ|N¹Æ_CZüþ®¼ùO%R¼Ø +¼;ʪaêÖÆÂúá‰Nð{±Ûóí0–<ó…ïŠ8\â|”ÃÏQ_e®§¿¼°iæ»Û¶Ì“ ™X/Ä2£RÉ PQ¡ÆMyTPk?ôÝ9nÐüîWHóBÕ‚—Ƹ°ß®ÊÌ/L1†¡±ø“/±«à)Ïï%9áÎlim¨oÍ#SY çTLZÎ@òbŽ[N—,žÈEøÇ@wQuÑ`_ëvë+èúj¸_1pø}¡çàŽˆ¸ƒ;ØD€N่Ūq×ý–¦|¹|ÉÜ-áÛoßgRiJ2p‰VCq¯³ÝbÀB1|…ÄA9•Š»àÎv8ßͼ»_Àõ_ø‚nˆ{æCÎByCžw†8ÿ}ǃµˆý|ü³+͹yn@Á·Hè(øˆ,ª^Ï?¿'AQ4¦Å}Ö[5¸˜ +Âx±¼â’¹Áêg7Üzòú±÷â®g¹Ç„tƒ“0„Ì¡îÕyº®Úd=ÌáQº"Gª3éÌ:Öª^±ÉœWaºVA€¯AâÒÎë`Éé)h{aÉq±mÉà_鋂İíòO^8Û tf'1Ç’Wþ‰~€Z»ˆÇ=ö¦~öŽaó é|ùˆ/ü€ó¸c®ž\@y5|$ŽÁI5@ÉÝp­ }äÑ|ä Ð<3 Šk<Ó8‰]ò¹®¥¹ÐM?ô p .§<<o„Ç;*£߮×`½-à2v]w¯ø>?H;€üëY5߇„•LØ´Uó3Ù¯ @å1}$$sëŽ*Ž†Ž7êô™,uëõè/|Iô<âyÄ?"pð¾v®î…KZx@QîæT ^¿7Ýßò·x2–]½744´µHSXAC]{{zc+(5•Óàù«ÜdÃôcàCNgÆÌwgÍž3ušÐ'؇òù„ø„ú„ùˆ}}‚|€·ªäç³ÃçSÅ+æyF½2Êéëç»ß·• ´Å÷= ÷xðÛ'¾ž(¡rm±›ò´‘œÚàð=¸{úýÀý‡âŸç>xeËöÌý±Lb‚2Q±´NúçÃ=·9Û<ë½ÝSfMgÑr´ S{Ä„@Ë©Ô·W‚àÇbî?‚“àcêrƒ!¿½.í_.~7|Í¢”l{c,ãJVØ´T©ÊŠ?šyûþ£æÁaöÄ`Ó¥ÅgrŽ§t0Yõ²Š½µ|á—·N4õ¾öüä{‰qLRŠ2=kƒ³0ôÞác×é›C{×Ä)ãÓÓØ$îΊ >÷ZnøÆ Ïûî xìáüÂï=‡`õšgÓ}8² [»ÑE£÷dkcÖ²-pôƒ>pZ3E£ê«“KP u`ý²w¶þ§œv´ºlu]Gi-и=wïñ<[9O1‚ãÑ5ƒÖV^0…Á$íùû‡ñÏ_öJ£õ¹ 5èÂýe÷`ÊG[î À£‚úù\÷à-ñ㥗_çBœ•SW×&?›ÂŸ"Þì¬äåâ·®„8óàæo†ÑØoù«ÔÝíqáâÕQQ«ì¸ô䃺ÁËÃŒðÁÉÔôKqÇ/ˆ/¼~ëèžåëÓö¯ˆbZ¨9êñkåµç{9“‚~•çkoäÿ~ÿ*Òb8g*DLÑHpg.ô9¤zð,f!ßñhb^†Ï©ìÂü¼|Fš£Š£D|ÁÅê+uͬ»¦©¼þêØLô˽`óó f^ã°òG_h>›Ú²/'.–݃4ZŒFu!þ‰pfOßéŒKôé£5=½ì¥óýNJᾩð%Â¥Q_CŠA1{ÆÏœ¹çoðL8G=a½zø<€Ãª„'¾Á6'>_Q>ld9:P`F+§b*Â9Ðh/¥ëJ•‰ìÈN°V¡Z`ä TUžme0ª +ï'ƒ“Âç±Á+ÕdµÚ,k‰Õj3fÀê¶Y­î¢Ì:f,Oà5ó½>Gx8ï,ïþ¨M£®Žºé;Å7Ê7Ú·Ø÷¾ïcßïüÄ~‰~R?›ßE¿ë~ëÂNcÿÄq|4.Ä_Çâ…„¡& +‰ßùß¿0zúè„Ñé£?ýýè¿ÛÈDò6ù|Jþ Ð`&X*Á1pÜCY}#úE„DÿB†CÆ…¼òzÈ„ç^sGJþ@ïÌ6¿ÊG Ä +]Œ"‰‰H]sh!½tWã‰TVÞ©í».†wOJ>õ&šzeÄ£?Mè-úlœyŸôÜ`” †U„ùYyÕg¥|ð|[-eÑ”ÅßCfÏ¡Ù8:0¢^ƒ^WçDÂdpW-‘]ÑVa©²U²Çáh :ñÁ XEª=M%NWl322è Fr9² + ÈzÔŠ8›Z±7y ½yoÛÅdVÞ¯í4\ãëxÁš¶ôN~oÒîºíôÎHyB ºtŽ1wfBâOŸ\†>GôN¤–w÷]¥¯6¦Ì¨dÁƒ–V_ÏAO(50ŸÈRYìÙl¦+KK±¥Ñ“-²¶9æÃlZFV¶:¯¨0,+S—§g–çÉf–lO;+Þö`ÏŸr†éï¨éì_‹\deU‚m5g”V‹Ý]=-¦¨·Ö`¦û;[:Ø®VgÏ)q›¾AÕÉ íˆ˜Òv?Ô¦¿éÊÛ´à¦onj(ufmð{êrkÏñŽfER5S_µ_ž¿{]ô?2% „ó°u8ò¯ºq8ö7(xüäû|'ü…rü¡ÞQ`^ÀGï‰R£Yop ¼þ‡Öo‡N2'^o¹E_8%‹ëgÛ“«ÓšÖóð‡eâÙ:yn­É±Øå¬3*ÒEsaç+è ´÷­–…6²ËoþGÑ_Á€žžÃ,ÜC˜¯–W\´ò'ų È•xgu~N¡QW¤eßFmˆ€%˜®ª°ªLìrÚš'ŠVÍ…5yÄ‘1´"Õd´iø­;«c•âézÅ!&]™%SѺ|oÑÒ.—[sè ™,ý`GúÑ[ÇÏÃ×γp²gbegyY£% dJÞ&ïsÏv*fr\–.GMç+-6%[³k§#’ž3ûЖuì²u1SÐ(1Ú ÃÐ8GI¹ [ºxeÒlzm¸»/»åä¡o Ÿ®úžƒó×.žÉ:p˜éLt¦Ô®æ¢I_eÓ–zK°(´ )[0%á0aæŠ +SÝXš³‡EJ°(_³¢ˆò'¾¨%ŸªÅç˜UU†{PHš?©¬xláŒè”ŒøR_®1KŒ Ôy³¸Á¾ž—áTjYD\ÆfzÊÚO!ñûùÛŸõVjbÊØ’L,ÙáRÔÓÍuµ –˜µkGv\4»sOÊŠybD=š }®îèeZj[Û/óõa×±i$hùw@ò©¾Ray‰¾!F( C døѪ‚ÈÃìÈ:ÂðR®bŽž/ƒêZb¾UYgøïG›jøJsN•á2fGNµ–”ê5åŒÒY¡¯¤5­]Yî„})™Kv²ßqqlxfœ*\–CXªJMtÓ aXÃvnm\½âÍë¿+g%Ï|¹ˆ?RâM‰µH®‹=‘1’zgžw!MÉ­òI*õ„¢0Äà°ÞóæD?EˆÄ\¸ãã*ç5328ªy SzÆ`™£ æ9ñµ–¼2ã¾ç¢Ð¼#'6o©",§„0•W˜tg™*’I#Œ[Uªu…œ¦÷Ãôö>XÙËó¼üßç=. +¾4r5›øÀДŸ)Öåéòd‘\¯ÎÛ«ã+¢ÖH쳦•;Åõ —2­g1¸MÄ Ëµùkó†P™ÇN Á÷° |•*G~þüPšÕVÈê-E5b˜_#>6Ôf;Þç×ÁÜ,\;/[ù²|¡o0•ØÝôW8|­I5µ‚9Ò)ø¼ƒ¡;HJOOLnJoëhnlïHkNbÓé¬vV—•^¹ÙÞyûÓFç‡Þ‚_¡Œ8a,×g‹ãÞæ؇ ˜@|PíºhbÌ¥Å&ëBƒ3$pðÉÅ\U¥o`‹Dð9À_¿Cn¢×$´¨zQ)°gÔBN‡©ŽÔ;ëú®nÓ[ÍF]b±”TF_šÿg¶Èj,Ö•6uÕÔu ðÛz›WŠmz›^—-ÏR0Æ¢CIÉiZ]6¿xr¨6¼lsž7ÙëĽªÚ´T•,.ˤ« +g$$Ï_žNí—ŒÇz×DU®¢ÑVŽÅ½‚ö¬q®iÞɺ⫳ÄLDlèIüäc±×ŽçÞ¢á6.î} ü õ+ïQ¸£ûù{×PÝ«+ç‰Ñæ¹h4 +Ý]{b/“ÞC%ÜPŸÿZ Ã?‡†\”íb@q삵ÿ­ª=¡¼U3ÓB>Ú6{ÏcMü«|&ƒ}ÄÿZnÃáStB¯Ãl¼£Ì1ðÍÿ^eƒø:!ˆ!G"‰eFYɧ|¹­>DYqø.z«ÌµèµbÞÁä+`tÏΨlJcQÜçÀ—;ZZ*Ía5(\QAÔ•iÚB­Zâhögâ¿ÕDZ ÌS¼ "ÔÂF xîõø)2üŒ±¦ C¬)Tk” 'é,ô&LÇòªuMãÄp¥ÈQ˜!Δ&mÙÁ eh&÷¦OÊJ?+ᔬOF<З«Í‹ɼ¼÷½ÒéyÑœRn¼Ç‡ˆæº¿¾Œ=˜vy†X™«K62ú¼b£š•ÁKµÄv“ªlêOH-¡p3ÜxëƒjÇ-[X-rà# ·N"ÿ`’>•ÞÖv“m!¾¶;O™¼Uð”&2•Øg‘—Ë™¤Úœ‹ô@­ò 82íû«Ä“㤶–êíÆù0‚x}nÎÆ}v3ð"¡·Ä«Ó ¶ä„¥¾(â[ÍÅ%ôQGÁ^v$‘0,ÑlÖò•ð“Ød+(7p?×ǴצO6Å-cÑ.°4?o³žOx«xÃC°×Íûۯ𯾵"ØQ‹/,QWïða4¼€¶;HÏFb—mCà6îddY- ¶KRS^7`^5µ&=+5Ö™ì*¶D™kÍ£S¤™éI­™}=í•-Ílcƒ»¿ý!À»¡-wìeö2Sh›$W/WÅ0sQÒ,˜†ÉO­å⺊ò#ã¨A;¸ÓØ­/.>‡$a@FÎjß{ùdã™.&·;.ûÉÖ?‘@wpj«¥~˜½Ñ~øÊ-ña•·áHÚ”YQÓåt–9«ùBOskÍ‘~ñ…¸³;˜Æ½moÓ»÷Q–ºRSýÕíóæn˜¦P›léì?[c™ÉE Ÿýzcë;³Ömž–‘k¶'³‚ÿTf¼€øE9ÎÛ,€·`…Vk•²­&Ý[¼:í"RMGRz‹W+ø*ÔŸzÒÝ~ÖVn¼eñ:¢ÅX¥‘‹Uú\E +G¨P2Á}˜¬½ ¶Z\ï*ëcª\èœo0œÒ6dY^<6™ýNMZj–"á ù"\Ø«7ºžü$†[9·ÿ*ZÃPpÌc4–SíUó@þhôW6Aê˜ÓÜð"ÛÙÖPØI?îÙ’ÄzYÿ6IJœ7J|ûoãOP”ãCzk¾yAKáâ)œ ál)N•pß,ç¾ùÒî²zí+¡Ìßaà+€ÚcV;ŒÍ|ø#¡² r &%J›ª¬VºÄ¬ËdQa”j´û ü NxsÆg ÕÞœqªDJŽý)jˆJ ”âÿñ©Ï,~Vü îìÂn&Ú•mFA&>:(Ç_ýËðÏtåÞØrd?¥ÎJSéMZ¦G“SF§fJS÷ &]‚>WïÀ@ÖƒæOJ½ xÖœÀj< ¸å÷ÊšGvî‹×nÞ¼é ´( &i:=‚+AŸ|3Ÿ+m(‰‚z¾Ð¤.3ÞàÃi„Pv°·As„†à[è_ƒËž¾ ŒS"$_‹ÁŽ"¯A„“èœ7¹>…”‹h9ðL¡ã·:“—–³5xd1ô çfm&Î}ÅÆ©’¯ÄÀâ2WšKùÕ÷K¯´‰ëe.i†L.UTMs½Í€m6Wö Ýý™ƒ=œ°xÏàð3_xÞ¢à0ŠÃAƒ´µ­¡´H€ç\Š¿(6Ψõ6 ÌÄFŠ«IxÙEL“UÝ6²ÀT^ΩSc•*óPZz¢Vo²ªY›2ßœOgæäd¥5(:ï|p÷Ñ™”öZ¥ÑÂTR%ðÀ]‹œ‚ŽƒG»Îö1ÙÕX*0“ph"ÿ(*¥lÛ¿ðŽXG~ÌAyìgÒ³h ±ù@Á gPìçP‘uý=,ÙùåØI yÜ,ÞPäêŸÍ=‘G¢¹Þ´<œûǧÙ{ÍH¸‘ŒÄ!œŽïßA +à= +®B°ÓÛ]9â¥n¯·á6Yâm³1—ü§,PKÊ8ïKüËûþ;oŸõ76þOCáÓ¿ÀJÐ~…ÚÝ‘ÝÔ&nk¨ëê«ÏŒ=¤â8'?“ŽU¶\gA“»º£K|cKßä”\CA"£ËÖ +è\mI¹‘Uáè ViÔ[Œ)HuáÖܪóbøùâ'‹a«‰E5„q9ãÓ½%Ý•‘}£³[!÷ W~` d±Æwó½Ô ÜôêU-þmùÉéOŽïY#d'@5áåý˜£ÉâtŠ;ÔÕÒ,•<-×–Q’ÅO8Õyk½PÙß,nTÔdÄ+¢_Ñ1úyà¸oÕIóï’„À£*‚!žQ0„7À0™´Öÿ 8´JMáv(RÐ÷*÷s†³Á/žÏ¦vã&RpÄÅ!ÈHÜHÜͧ«FâɃ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ +endstream +endobj +1382 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [458.157 276.439 465.131 290.202] -/A << /S /GoTo /D (figure.3) >> +/Filter /FlateDecode +/Subtype /Type1C +/Length 11578 >> - +stream +xœzwxTÕÚ/CØ…½’I™Ùf³÷F&X*ˆˆ€ô -dÒë¤L’I&½Ìd&½·I2“BHB „Б*Š"¢¢Ç‚¢~õ¨krV<÷® úï»Ï½ß÷™Ì“é{­w½ëWÞwI&M™qxâð«Ã˜t¶t‰t·t¿4Iš*Í‘vJû¤¤Ÿ9Nv”9.s\åxÄÑß1Â1ɱƱÉñ¼ãÇGŽß:N38-rZéôšÓ:§ÍN¾NÉNeN§>§!§»N÷œ8}éôÓÿržê,u~ÆYtžã¼Ðyµó^gogµs–ss›s¯ó€óMçÏsþ§ í¹¼ä²Þ個K˜‹Ê%Î%É%եĥÅeÈå¬Ë—.w\î¹|íò™Df/s–Í’-‘mùËÔ²Y¦¬Tf–õÉÎÊ®ÊnÊÞ—}"ûRöDö£ìWÙ?åùT¹TÎÉÈWÈ7Ê÷È˽åAòpy´<^ž"7È«ä-ò>ù¨ü–üùòoä?Ê“³–fØéìv1»†ÝÄîc°¾lÍjØ46‡5°El9[Ï6³Ýìö2ûûýšý‘ý……5c"{'·>’wKNYŸE«¬ŸR}Ј C7«#Âiš×¹­ •"̦ ¤ßÑb3|E&!Ò/M2Ð0‰ê©,…+ΡéÁ=Æ? µs€õ6¦Têh8Ž<¢©³¹p*NRÁÁêÔpîX’霿A»£©þŒb8•A…Ô’÷G£]5#W„­Ô@µ¹àV1 Æ6ZX¯Ô*è|@DÑÖ&<4¤?­|!%ùHútô²P» +bË›•ÅæÆ BucÉÎ×*+`±ú°ha49 «ÈŒV¤êÒÓUÂ&´=ÜA¨Ïåå•(ª+Š-ùB0£ühª)·(·(=_?´ æ´Gg¦%¸‡U!Ñ\zFI©!ÏhÈ …†ÂE[Œ)P¥<Úr¹³­¼±Ahh2õu= ¬ÏN«=UVÖžGîn»<Mvç”gÄ(´ZeèëBr@F¬6 u »>á3ãD™¢¦¬°'_0#m4Õ›cÐ×o1ä3ò36¡µÓ¢o|KÄdW—+jËŠ[ ð§TÑTsvAVË8œ™f&¡3¼ñ3ºA4‘ð%ëœêî’’–Âé~ ²pN,•”••­å²Ò…±<$¦ †{yËŽ[ú=~ò¨B~aQž=N'D W-dcyQQ)WX¢Ë)SÚFRÛ¸Ç7®ýžr`Þ)qS[„¥SÑÑjéiiNkÔå Õ^4€Ö0ÉÌB3Ðì'ÏÁiÐõ»_àLøìÂ_+BÙ+õûÑJô¢Ú}Ïnõ98®¯½.‚±]c+Y©"ßÉ®ÉW¨µ!QÞ²C;=LÊ-Ôu…Ó“›r**Õ%ý‚Å@XЗ*ªS×o +‚ÛÐçÓжPkKÓÊu÷hx°…‚¾è6}ÈñmÖØ¢‚êü"¡¬¨¦ÐÂ}Óí=k[’_Hœ•”¹VOƒZ"?ÍXù:’-ÝÁ^ñNñ¥9ÊMñÖa¯×w¶œU +‘ÝɉïÒá(¯l.*)©áJÊs3Åijݙƒœÿ÷Ï¡Ë}Ïû[OˆhÞûĪ¾XËÅõS=ïœ>ïRè ¬ 7m¥Á0ßÖu2ìx (5.âÁ¾¤7x`fƒ +´Õ= +«ÚM f”¤|ÒŸÌ Ï4:øøG%ã–îÿÎøåÄÑšêŒÔ"±0=/ÏGqÈPÛÃj6÷^ß|f š1ïYôáÿíÐÿœ  Å›;¯2{ÇñȃsÑsÐÿ8ÉÜsK„2Êø~yÅûx×^®¬ºU*XPˆŠz?Ó·A®Pègë:¨HSmÒÞ3âx8¥ß­ÑnÈ u%\ÊFaé š˜@è´ez:œ„ë<¢yœ¢2Ñ,¢™´|×\gê‘v|þ4•UFe|¶ðÆK8ãà"FQº“5­Ú„üÕT›¾&NçO£áèo¢" šà èc§¡HÊ ‰ÐÓjèx]wMCÛŸßjÕWÇéið +ÓK?ãÒúåkÇÍù?”m¶ÆYg±ç‘+%kÛÌÈz×ó²Ëך\Wô¥hdïù3²E! ˆgà]`U²Æ²¢.¢î3Caƒâ¸º1"2.6L›W'”(‹ƒ ÃiÐØh®hâºj#÷‰(›Ò+µšà\:¦P`yAj¹îm5SÐ1gÔ£ºÔAbü2ymd-£CЩ€7Sºµ©i+0~ƒXE¬6=P'dëµúd=~a Ó_Žs"DcêÓ‹Ö¯ÐÞhªC_oPÒãÅø’ q!z|É +|ŸÈÀÏaû#ÚB”&3ÓMj¤¤†C¦2JÜíõ͆EÓ¾ƒÂ­oÌu׋§›P¬º‚j7«U‰ñšq«á\"©-§¬TQ[[ajMè‚šÉm¸22 h±æ€2Ô—KSÃS<éSm©,ª®n¥«5Hôb@Rž vöÁ“=HÀ¹ðu¸ÔVÀ‹¬ÞlÊ«æ¾8_fÏ·µ_¸©¸|aw»`ò *Þ¡OÕ&r4·:Q·¦ ‹ø5üÔ²„·š§Luø«'š³RkÄ–ø]Šyþǧjò Aº‘ÀöŒà¨cŠ=÷ƒ  \ýÅèö ¼o×ð8¿räl3Õ|âDKK»(ÝÈxk™ ýƒcÈãÙµ9…¹tAn~V¶"--!5U@r$'¬ëÑ®hꄾ:Áà7±¾šøЉ•0SG‹sŠôÃ4$©&ówHAÔ©ŠR2)ÉYz!jÍTjv~EºˆÜ`Ãßm®»Q‚ÿ<Àî†ÏÚÙõÕ +SyE½PjB1j²#£8mIàTÔ=-ü Â?)9!™ËÌ.,‹)Ca^A>¦³Æð UÀ±“ÁÃÃ=7Íä­Äi +‹» xŸÃk\_¥OÌ +O‹äßÞu²í/ì1ðIµ`<¦²O`ÎO(‡'[[Ož ÇïÖߨ­6ôÑ°€ú›ÛÅWwyDìöÀ÷y]ÖtJ~€Ëa|Ó®ÊÞ%a(| +ÐC"tFI"º¢"od×'ŽÒãi”Wdì>ê¬Ù&SEq෺„÷ª7—+^P/ ñ<‚ŽÄlå<µ•§E@é®V×u2¹WjêÏézº«®'Gu5ñº=ôx#Š°6ú1¤t//5I¬³ ”=ê–àÃ)Ãk»Ôb|{fGÎæ‘YŸ$ ‡öÐÝ!ž¦ýrXù<šfü”><ÓþÍM•ÁÕ,dòk{Ïr­uI¡%bA|~”á D×^ãÕ¸€îÌ¡#m¡§ ó EB¯Uù¼á.œ—”îJµmˆÀÈÉY8>gØÁB«‹¦.›‡¸M槼ŀ®ó1§¹ó—›ºÅî~ÓÛwð™eÿHA¯ÄáHŒ,Ë"óƒ¶+Ðê„}Ž% ÿ +·Õ\Á¹ºÛZ:¤€_§RhåV"Ž*;^WXÂÕk#DE6$§nãÔ0‡·%á ¸Ào`îóÀzµ+€(cà‹ŸÝ€S¡üåwÑ«±9y¹‡E¿)ÆšÒ¼rîÑо¹‹}ÜÖû¥Tõ‹`´¼©Ôl¢eÖ‹ià”âbÈÙ=íB“·géznzšIÙ¯O†.Zâí¶A©­ê­mSêI™õog®\~ôÈÊœ´p&/è‰VÀÈSY¼q±ª!‚€N|K±|Ú²G᧊RjRŠLqBXsFAx>™®ÕÆ+‚{ãÞèÉa Ýá/îÕ¤—Vä +„rêxtc2Ful¿ÿµ«Ã]˜$ÃBƒý[Ã{ñy +GŠd€o ÓÛÞÞÓzÂ_Ag!%6ÁbêzöñÄ.ázØΓë87ÿ¤QVÚ >dÆœL. ¯6öÁs]ë›úÁÕzƒì‡D ™¾€Ï1š„25§V©Ëµmñ"œµ„°~þ6HãSüž »{GHôáx:%<8+‚Û²½k4\ ?ŸüÞO +è ~nè¸Ó\“¡ÍÑeåf +Y©ºŒL…¦4©"G^î~ŠàU^Úi“#UuH€ø%<W'1¶Y†4US–œª8]½ŽZuFùsK}~y».*ní8ýr´&7=\ÈÑfè29mVQ…˜ˆq®…´dæØÁ>ØÇ¢DÃRß1¦hÇ/K`v`Α¥}’_ óÏ`A€ß²QŠ¦Žmb½}<;‚;;ƒ:½Ei¿’!` ©ÛKQÆ}I‰ k˜ØmvÔ%zW +å{Xƒ‡!*XžÇ^1ÖÆŽ€É?1àÌØÔLÀÞ&ù8+°ˆÀÎ@Ù#(Ûx¨tý·ð6…U'”M(¬–Vï­â;(„Fæ¼®ú/4Ùi)Z9#€®”¾³¢¾¹6ë2 s¶ûäð°²ÃÌ붸´¦¢Rh45U4r£æ]è08ÝÊá¡žž! ¸pê€Gx¸'½Èr—;±—‚ÕP…ð?¼æŽ/ Q‡éèl5 0‘Q…)&CG³“ÛjÁ{ß›4(Žnñûùz€MQ¨)‡ +Ó4vE`éKå.ö™ú,bms±¹p„–FjMF¼æU]o[óÚ#hÖ—dF)ÐEÊ Ô&Ú€:x(•ž‡OúŸÆãVöàùœo9Û*ÔŸ(鹪îÑ^‘b\`Ʊe +€Ò|—òp ¼?2‰À5,æ)¾´šÍ­Oñ…Œ‰‰ŠhŠiiijji‰iŠAÑBºz ëéïïåqÒètw÷i`â¥?3¥%˜õ ê뛹J@þˆù'ඊ + iŽ:ÑÞÜÜ~BÕ,‚ŒÍè©)8ùÚà'@y‘ïí>ÑÞÓÚî'¶ÁÂ"›*p1Q®“V±ç‰ä¯ãkÙS-µB¤Ò–Ôè+4 °ÕS¹"H0“½ ÕÜ© (/-S3NÀiâáéúDò€ÚtQ]4œI4‹2&Ç®¾Vƒýƒ*/ÛöϱI@¬èúEé÷pë)8딜汣à Êa@ Ä6-ãEl½“%;º€!ARyyZ —_dÌ/‰ +Ç݈‰}˜Ð:±ÖkÀx ÌäÝ¢–γ\_S¨hîǃìŸ$èRÜ>uøp°Ïö¨BÛ|ñŒµÙ +(i|½Õ§zU“ ÀˆìŸIò1’m+(,,,((Î/.üÚÞ~ ®ØRb©(+-(¬°wxÚÙ7É<é;Él‰I2,¹+“gOž79rÅäÎÉßÚM±[n·Ù.ÒNm÷Ñ”W¦lšR5¥nÊ}b1L\ ®ïŸ?“!äWÔkTUHÕQŸÐ›èP:—®¢ÿ˜:yê SÓ§~Â,f¶01Œ†IgŒÌ s H€ LžÀ:À5pÓ^jÏÚO·çíØ/³ßn¿ßþ°½—}®}½}“ýÇö_8Lr f9¸9¨RÚ>vøÌá±Ãw¿;ŒK'IIéé*éZé^©Fš*Í•öJ‡¥W¥w¥Hÿp´wtr|ÅñUÇ×}3›O;žs¼êxÇñsÇ_œœ^rÚáäéádp:îÔã4êtÓé§Oþæô›Ó¿œ§9Ïs^îü†ófg/ç`çXçTçRç&çÎ=ÎÎÃÎç?tþÑ…p™á2Óe¹Ëz—Ý.‡]¼]]’]Š]Z]κÜuùÂåw-“ËfÈž“=/[#Û-ó”EÉ2dY™¬ZÖ ë•–Ý½#»'ûJö›œ”?#Vþ¼ü%ù+òuò=òCò ¹Zž&Ï’åeòZy£¼MÞ%‘ß’$$ÿ^>ÆNb¥ì3ìLv»}™]ƾÉîb²Al›Áæ²¥l-{œígÏ°çÙ«ìmö=öûû»ëdW©«Âu®ë‹®Ë]_wÝàºÕu·«›ëWo×`×XWk¶k‘k•«Åõ¤ë°ëˆëE×kc{þ,I?Ènˆ{s¢j9ß[<çuÎà”ñAUå'FŒ¼UÔݬr­ñM}A-h8ü¶—xæfÂûÜï6vˆ§{š?üVq“Ò\èÌ>–àÍù…×uʼn '2:rîÒ°Ìú,i8¤‡î 9jÚÇ!§óÑ\4÷Ó…Ð铳íOn‰˜ÜײÐ>¿®ï,7\„ìŒb¬ÈkêyH‰uí<4úâÛ<|óƒÞh>Þ€ž¢>˜…“o"䇎íÄ +œFÔ,¨¼`è Hé"°†ÝdÓÒˆÜÜ\}6—œYR+Â*êóµ£HŠˆµßð1G÷÷µš;«²+µ5BzYnQ‘¢¡¥æ¤þd‹ÐVy!·:-T¡ÍMÊIÐô=š¿"R;s+ÊæêÒÁ|Áh«vˆtKEõëLéåÑ] §!½ì­“ˆìZ]q©¢­¢t´@° au*«,½ö0 ÿqZ+ wZ£àÚñ(¢…„G­?Vö56tæOI¼‹c¹[Bò²»³Ù·óÙOË0Á]&‘#Ü@¼Dâl .‘pÊR+iaר«ôçik°Æ²rCWRœ›] –¦åé ÏÓÈ +Ë.ŠöUŸ ºÍAúÁïpÙ½äwbÛDSR|Y4çZÓ‘"¶¥çëJ2èÊäâ(¥bÏ[»½:ð u:¢783G¯ÏÁõÀ*{BF®àÁ#^_ÿ§ÈOnKx*òÇ\ š 'ƒ×¨CChÿcûÖp;m:kèDš~n›êÏ*êvn½ÆÊèÝ“S7dÐ*ë} +lÌ3Y]\>âe­'ÍÛyÙéÅŒìÁ«<ø¬ÂM8ÚŸJPbNÿÏ> Ñ”ùhÊÄ>Úbÿ )½öESƒ™%éï4Æ;#Ý+kÅ,3€­{·š¨üâò²2dðpÖ—è±³f©ÙÙKÞx]\¿Ñwá<¢{^y´VØpÿ«ÀŸ¸Ÿ¿ê~ÿ}ñþýžo~UüêÿxÝû‡o,î~–Cß»°p?\„oûá>¸-BûÑ^ôzíZ°æÄíMÂæ;¾Vxm!šÕ‡MbilA‚J‘Ñ?Œ¡Ò{ìÒÑ‘Ð IòëÜуe/ÐpëxºŽ¼ «NèáäÒ jk+yz*2Ùm؇¦h%附IWÈý2©N‰æÂâZú®œ:õq~qk"ŸaryEÙËðŒ™Ý™ŸZ©¿AÃ=Ôhë@GIi¦¦\ˆ¬¯No溛[{†‚:ŽRFm:*Êî~ŠöDS§²ËS&:6i©Þ™8põ 0`L +³Ø(Ò­Úô:Òê8F5ã T:F´’g xºÎÓU: ݆q—?ˆië +H¬/Á ö,"‰’¸‚”tETBª· R˦t2Ú˜Y¬éBeÖŸ¦EÈgütÜÖ°`?Ýt5Tšb©ÀÈzsi~eI£ØóñLg?CžZL‚»le<”˜p±Þ7©ÈCMa„.« Þ¾ZÑ0(~Ú{ññ +Hnú~f§Z–h\_˜`˜VNéÏÖÔàÌ4¡ûj39¢«MЦS)ŸÜÍ9‘™¾ñÓWø¸-™¯˜ñåOý„ØÓWR¯sðE«†ý9ëâkh¦‰û_›“% Ù®sŠö?„¢μôð§"Aú +?ÑæXË'¦Çƒe¼©ë/ð&/ËÜÀÈ6üUÐÑøÚ“-ÙÜÇ1¼6NglUh88 ÿ]ˆ.‚ÙÇ(…œ(6«à]ê*J£€—)«+"¡Š¬5” +å%õE­Ü{ç‚ßê[ܪÖ/W,R/ûïµi˜Œ´t¬Ìª ©…ÚjtÅ*wC·“–Jð–=¥¢fåF+4Ù¡¡ +Cá ¦ŒïWWß+xÊ#­Ó,ÊJ; t¹‰5^E¾+¶, +¬Á®¶QU¯Ž§_‹ôõ;¨8V—p3F,ú^E~–SfÜGÏ¢†ÇnÞîS?,x]Šç†Û†,BlU¶N¯ÏÈ™žÆ\ØÛ9uÉFwz<œÒ¹'§àU¶¾KõBo"’ Ý¢ŽŒ <Ý4opÛ*°CH£~ïS"²\l†ŸG‘ÉhŠ_À, ã©îŠÒ _žO‰hÚ#«Â*7ÓfxhÛ^ÐCÐÀÿÕçm +êZ;ÌüUÅ‘µ5{ç`A½Óí~Â.ö‹ÐL¤6ê ‹55¥-B RW9qm;áËèâ4ôŠ­ ®†_›Â¶ðù—h¸™‚ +ØÒs¿¼|¨hº íS›¨ •&+QƒÍº+üÂB®)Í(Õ}@Ãä ƒµô'íƒ×>R@zÑm´z¢]ÿNvU’q½­]¯ß‘ë™Cç¦ét©"Ô[?b›j+:ux¡IÛS”Q1‚::8sÆ–²K¶Dïß*®Ûî¿MQ`ƒ¤@3 <ˆüþpÇMáÖ¶5í³¹‚@ö÷kh&“ƒÛÐÔ™G=[‡"ÅÐ Éïþª€N¦†/ -µ}œJ©‹U'ëÊ3S²s³²Ò„ô¤œ´TÌ7kTäÎe¾ž[÷Ó‘£èµuÀ÷î¾ãŸö ªrB©Ö$Çq©µ}"¼`ë_)d\xûöAe¸VUs£{ÍÖ®š†Âbºç|us­¢8§ ###G›$èõ:]®y¡•Ór(ŒJ«°»§ïŒÜþ›âî±á]‡‚CÀÓ½­«VÛööÈðêpÝ–@>þjëYÄh²ótQ"$ +Ê Å±»ò + Œ­šãqä¤ÿ𙞓ÃglÕÀþú¦­¦{SëKÈÂ$»S­'ÄNúÀ#h!| ݧÀ #âÐkh-V`xÝÑóXÍÀNr t„ÄEéƶîÐQî››¿`©ê|ø›ÍÑ1!Áõq]Yb_¦A_©¥«‹#<s=·­÷¬í‰Z®V (ÎÄ´(£CyVh:bÛ7ÖÃG¤tÜàI?\cÿ¬¨š¨¨¹åÒ@§@ç`¤ƒið{ÛÒÐjæÌeqØBæàRï=¿ãH@øÆáG +mÙ_¨&òK + ùœyÂn߇ÎÔÄ’1àò"@ýÕ[Á€§E’bKÑ9Zúú¸{¡Yä±?jþ¦Á†âòÖ&Ü:h²¾ZÀ£¿f·%ñà SÀ5Áøê§Ý¡Ò‰îPéŸÝ¡¬¤t]&•cë}eMg‡ë•/¾˜päHBד'uÝgDàþ˜ÖçØ>&F¨çW0î¿´òQ2õÊzâõÕ=©ÿKWßL=íûK­snß¾mج´Ä­£ŽKåÜTW¡²-W¯t´G+«D`s21;ù¿Úä{¡œx@¡^(‹qƒþ«ˆ?ìHðC_j;‘“’¥Ïà|BºßOÑä:6# r{B˜›’Èy©GqèÅ.ö6û ºC”Æk‹Ë +ó‹‹Ê„²êlŽG™ƒýUª€ÝWŽ¶ZmL¤:`"Ò2 ?¯žì…5½.ð,ô_Ä2®’ý:dïzj²Ì¸<Þ,†‰V²›¿z»;mÇ\†Ò‹² Þôÿ›à+5@;L p6È3IÀ+L»©ÎâãáK| ÐùÃçy`3XôæC[—*Þê?zm¤ãĹ¡°ÞÙYyú,AŸ«ËÓq©¥}ý÷GEðSl(ãþž°ÛÃc¼x[3a_b)ÄÉq“ô!vSÆS’ÞPœP©?GÃD˜…)ÝÁDíÛÙ¥o)pÞØÈC¹Jô­#€•€ Ùõ¥¯ç8x³!¿¦¤AŒ?ÞœÞÊõ¶4o©ŠˆÎJÂÛs[BxLt]U Íùp6¯«|ëɧmyœ&`aÿ”6 t®¡ö¶­pø­Šz'פÁ„‚|Qô¥ €1oÚâ›Ybºž´ ZWD¶jcµŒ¿QÆe©aœ)“ü³r|š?n MÀ”±Ä†žh9Z†Qâ \ŽVÀCø¶®À{?[…ˆàd yµ[µ­K0y²¦­EGV+ß„CÝî×|3Hð4ÚÎî2jêuØ#?K=cÑžæ ñðp>œùÆdb  õHœº½nM«l%:Œ¡H°€Qûz¬æ!F\„D©Bþ,ŸhjÅ”5)Ï £h‡³Ë PvÜ¥>' [ +åìe@<˜åщP.‡î8”+ð͇r9|Lœh02à+Æêcb=È]s‰:€Ö·‘…ßœùãû”ƒ=¢þ{¢\ä{ÀÓÎx}sV='›Ñ„¤€n¶Îa;˜/?¯½Ždñ9q…Œøt]—QfÑ‹ C¨ +Š,x‹C;à N 2¾‡ák¸¾Æçܶj·PÒ£¼ídÖ±Cõ¡~Š M\THrÓÈ`AM}« e­s¶ŒXnS?¼=Ž¿t›G[G¼>¼wîÜ=0aKá6“änogm7³ÐÚ£¸x¤oë[îž»|ð°Þ=ŸÞþÁ㋆:îw ðþý€ûî≯¯Š²ŽñgCXUtrf4§Œ7ÛjèÚH2 )=-ŽKO.(‹Í{Ž”ÛúÂ(€B¯A"¾)³²Jaª©hÀŸýÀæþø ÜÅþ¿èy°†æõ4€/ÃÅp6¾¿Œ×îþë@S½ °;`õ¨«ØÒ#ÞÑ‘jn‹÷Íäˆ:0ª={ºaÓ™x“ P·]ú†¥Q ‡9­:Ó7gwÚü:@î‰×I„Áÿ<ˆ/›(ƒ‰Ë©-J»i€Vgó¶îkn5†'yCô9)"¸*×àû×ìÆüŽ¹â£‰ÖPœó;¾yë‘ð@ni—áºnøj¯D«Ô*›š-øäZ×pKBJ• Á¤ãÖD*Р 1¿Â¨¨b÷)ÓÛï`±¿fÁåX[!þnÿ3 ïwre`¦ +ØÎ}àÜ%àr€u=˜8«’€qtK~‡Î6‰jÆ[È…8Cžu;2vä#$ Ñ³”º ©4gÞ3Œí0#@¿ìÌÊ +ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1380 0 obj +1385 0 obj << /Length 3048 >> @@ -15778,7 +15773,7 @@ ET endstream endobj -1388 0 obj +1393 0 obj << /Length 7819 >> @@ -16043,7 +16038,7 @@ ET endstream endobj -1397 0 obj +1402 0 obj << /Length 5447 >> @@ -16097,7 +16092,7 @@ ET endstream endobj -1405 0 obj +1410 0 obj << /Length 3551 >> @@ -16117,7 +16112,7 @@ ET endstream endobj -1409 0 obj +1414 0 obj << /Length 321 >> @@ -16148,20 +16143,20 @@ ET endstream endobj -1392 0 obj +1397 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8_ov.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1411 0 R +/PTEX.InfoDict 1416 0 R /BBox [0 0 516 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1412 0 R ->>/Font << /R8 1413 0 R/R10 1414 0 R>> +/R7 1417 0 R +>>/Font << /R8 1418 0 R/R10 1419 0 R>> >> /Length 3413 /Filter /FlateDecode @@ -16175,7 +16170,7 @@ x >÷­ õïÅ7z3óm‘W=ò™¿ªOækª¨ù*óÕ#_e}0¾h;ׇ©›öÄ‚ÏýUm°xßPyPÇp}gZz®ŽÎâˆè«43©cˆŸLÂ̵1Y][V½üέ¦†5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½´â6Tl4©^lÉ]·íMª×µ6ÔNÉ‹»&ž%Ä›ºõ)ÕÃýÍ?Ô‹'ñQõ†:V\ïꛉÁ¿Ö†ÚU ñ¦n±Ý|îêˆÅ“ù zC+®wu‹mÐàƒ_kCí*¾Â\Ýb[=øÜ?Ô‹'ñ •Gè˜_ß™–ž«£³8"ºÇ*ÍÌÐ1ŸLÂ̵1Y=Æ¢zÚð¬÷mŒ,…uÑZMuÑ´úTYaUô„&Õ[ö…›:ÖZG¨žvõ_ºP=ß-Fü®5lËãouÃYË*ïoþ¦ŽX<‰½M+®7uÓy„àsÿ®µ¡6‰Ácü­n:±|îoêˆÅ“ù°§ÛÔ±âzS7¤>÷ïZj?˜|®bä+ÌT|æoêˆÅ“ø¸}ÛÔ±’¯2/P=ò™×ÚP[¿àƒŠ1þ` z¼¿ù›:bñ$>îÔ6u¬¸ÞÔM§W‚Ïý»Ö†Úå}qÇwf¾-òàªG>ó7uÄâÉ|Mõ#_e^ z䫬ÆïZ£ÁÎõaꦓ9Áçþ¦ŽX<‰o¨<¨c¸¾3-=WGgqDô«43©cˆŸLÂ̵1YÝö¬zy?¶¥ž5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½tNÆm¨ØÔn†]·ÚÍðÓ3ˆïZ£Áö, ífณguj7 ?ÏUõÒ‘Ø%ñ¹º ífàóÜßµ6Ô¡ðQņv3tè)øÜ?Õ‹'óAõ¦:V\ïê6´›Ïs×ÚPçcÈÚÍÐq-ñ™ª#Oâ£êMu¬ä«Ì Uoh7Ç_jðQõºÖnŒ?˜ªÞÔn†.â繪^:Óâ6Tlj7Cà‚Ïý]kCzyñÌÌ|[äª7µ›†|YõÒñ·k®W·¡Ý òUÖã»Öh°s}¸º ífðþõÁøy®ª§“*nRÇfìfÄàë,Žˆî±J33tlÄnFI ¶ÉÒˆèy.ª§Ó)žõ¾ í‘‘¥0¢.zB«©.ú‚ÖBŸÊ"+¬ŠžÐ¤zíÐn†Û®b­i7Cg _Vµ›á§ _µFƒmYbü­n81iYåýͨ#OâãAÀC+®7uÓ©ÈàsÕÚP‡Ácü­n:7|î?Ô‹'óáÌß¡Ž×›ºé®?Œ÷Æå‡ñ¶ŽùÃxü0î÷øúz~ÙëDõ¹žDí‡E]Ó×…aXŽí!Í>øïŸ×düoõ–‘¿Ö«\¯ç­ÜýÌ•çë»ýô—w-ÿ/Iÿõv×ï!o'ÈŸÿ`[G. endstream endobj -1417 0 obj +1422 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16234,7 +16229,7 @@ r §¶¦^<ÜÛrc¨¯@vŒñ6@ì>Ƀ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ endstream endobj -1418 0 obj +1423 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16307,7 +16302,7 @@ k ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1424 0 obj +1429 0 obj << /Length 8493 >> @@ -16561,7 +16556,7 @@ ET endstream endobj -1429 0 obj +1434 0 obj << /Length 1417 >> @@ -16595,7 +16590,7 @@ ET endstream endobj -1436 0 obj +1441 0 obj << /Length 7428 >> @@ -16797,7 +16792,7 @@ ET endstream endobj -1443 0 obj +1448 0 obj << /Length 3984 >> @@ -16930,7 +16925,7 @@ ET endstream endobj -1447 0 obj +1452 0 obj << /Length 6319 >> @@ -16987,7 +16982,7 @@ ET endstream endobj -1452 0 obj +1457 0 obj << /Length 6337 >> @@ -17065,7 +17060,7 @@ ET endstream endobj -1458 0 obj +1463 0 obj << /Length 9985 >> @@ -17136,7 +17131,7 @@ ET endstream endobj -1464 0 obj +1469 0 obj << /Length 2555 >> @@ -17171,7 +17166,7 @@ ET endstream endobj -1475 0 obj +1480 0 obj << /Length 7006 >> @@ -17256,7 +17251,7 @@ ET endstream endobj -1480 0 obj +1485 0 obj << /Length 3007 >> @@ -17299,7 +17294,7 @@ ET endstream endobj -1489 0 obj +1494 0 obj << /Length 5969 >> @@ -17433,65 +17428,96 @@ ET endstream endobj -1377 0 obj +1381 0 obj << /Type /ObjStm /N 100 -/First 984 -/Length 11356 +/First 990 +/Length 11716 +>> +stream +1379 0 1361 236 1368 383 1372 530 1373 589 1369 648 1384 784 1386 902 1383 960 1392 1028 +1388 1185 1389 1329 1390 1474 1394 1621 296 1680 1395 1738 1391 1797 1401 1930 1396 2087 1398 2233 +1399 2379 1403 2524 1404 2582 1405 2640 1406 2698 1400 2756 1409 2863 1411 2981 1408 3040 1413 3108 +1416 3226 1417 3353 1418 3396 1419 3603 1420 3841 1421 4117 1415 4353 1407 4411 1412 4469 1428 4566 +1424 4723 1425 4864 1426 5011 1430 5158 300 5217 1431 5275 1427 5334 1433 5467 1435 5585 1432 5643 +1440 5737 1437 5876 1442 6023 304 6082 1443 6140 1439 6199 1447 6332 1438 6489 1444 6632 1445 6775 +1449 6922 1446 6980 1451 7087 1453 7205 308 7264 312 7322 1450 7379 1456 7512 1454 7651 1458 7798 +1459 7856 1455 7914 1462 8034 1460 8173 1464 8331 1466 8390 1461 8449 1468 8596 1470 8714 1471 8772 +1472 8830 1473 8888 1474 8946 1475 9004 1467 9062 1479 9143 1477 9282 1481 9427 316 9486 1478 9544 +1484 9664 1482 9803 1486 9961 1487 10019 1488 10077 1489 10135 1483 10193 1493 10287 1490 10435 1491 10580 +% 1379 0 obj +<< +/Type /FontDescriptor +/FontName /XISTAL+Times-Bold +/FontBBox [ 0 -13 600 688] +/Flags 65568 +/Ascent 688 +/CapHeight 676 +/Descent -13 +/ItalicAngle 0 +/StemV 90 +/MissingWidth 250 +/CharSet (/P/one/zero) +/FontFile3 1382 0 R >> -stream -1367 0 1368 59 1364 118 1379 254 1381 372 1378 430 1387 498 1383 655 1384 799 1385 944 -1389 1091 296 1150 1390 1208 1386 1267 1396 1400 1391 1557 1393 1703 1394 1849 1398 1994 1399 2052 -1400 2110 1401 2168 1395 2226 1404 2333 1406 2451 1403 2510 1408 2578 1411 2696 1412 2823 1413 2866 -1414 3073 1415 3311 1416 3587 1410 3823 1402 3881 1407 3939 1423 4036 1419 4193 1420 4334 1421 4481 -1425 4628 300 4687 1426 4745 1422 4804 1428 4937 1430 5055 1427 5113 1435 5207 1432 5346 1437 5493 -304 5552 1438 5610 1434 5669 1442 5802 1433 5959 1439 6102 1440 6245 1444 6392 1441 6450 1446 6557 -1448 6675 308 6734 312 6792 1445 6849 1451 6982 1449 7121 1453 7268 1454 7326 1450 7384 1457 7504 -1455 7643 1459 7801 1461 7860 1456 7919 1463 8066 1465 8184 1466 8242 1467 8300 1468 8358 1469 8416 -1470 8474 1462 8532 1474 8613 1472 8752 1476 8897 316 8956 1473 9014 1479 9134 1477 9273 1481 9431 -1482 9489 1483 9547 1484 9605 1478 9663 1488 9757 1485 9905 1486 10050 1490 10196 320 10255 1491 10313 -% 1367 0 obj +% 1361 0 obj << -/D [1365 0 R /XYZ 149.705 753.953 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.023 625.272 242.978 634.682] +/A << /S /GoTo /D (table.17) >> >> % 1368 0 obj << -/D [1365 0 R /XYZ 150.705 326.444 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [458.157 276.439 465.131 290.202] +/A << /S /GoTo /D (figure.3) >> >> -% 1364 0 obj +% 1372 0 obj +<< +/D [1370 0 R /XYZ 149.705 753.953 null] +>> +% 1373 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R >> -/XObject << /Im4 1362 0 R >> +/D [1370 0 R /XYZ 150.705 326.444 null] +>> +% 1369 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> +/XObject << /Im4 1367 0 R >> /ProcSet [ /PDF /Text ] >> -% 1379 0 obj +% 1384 0 obj << /Type /Page -/Contents 1380 0 R -/Resources 1378 0 R +/Contents 1385 0 R +/Resources 1383 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R +/Parent 1387 0 R >> -% 1381 0 obj +% 1386 0 obj << -/D [1379 0 R /XYZ 98.895 753.953 null] +/D [1384 0 R /XYZ 98.895 753.953 null] >> -% 1378 0 obj +% 1383 0 obj << -/Font << /F62 667 0 R >> +/Font << /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1387 0 obj +% 1392 0 obj << /Type /Page -/Contents 1388 0 R -/Resources 1386 0 R +/Contents 1393 0 R +/Resources 1391 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R -/Annots [ 1383 0 R 1384 0 R 1385 0 R ] +/Parent 1387 0 R +/Annots [ 1388 0 R 1389 0 R 1390 0 R ] >> -% 1383 0 obj +% 1388 0 obj << /Type /Annot /Subtype /Link @@ -17499,7 +17525,7 @@ stream /Rect [419.358 345.485 495.412 357.545] /A << /S /GoTo /D (vdata) >> >> -% 1384 0 obj +% 1389 0 obj << /Type /Annot /Subtype /Link @@ -17507,7 +17533,7 @@ stream /Rect [377.462 333.53 389.417 345.59] /A << /S /GoTo /D (table.18) >> >> -% 1385 0 obj +% 1390 0 obj << /Type /Annot /Subtype /Link @@ -17515,33 +17541,33 @@ stream /Rect [342.753 266.146 409.811 278.205] /A << /S /GoTo /D (descdata) >> >> -% 1389 0 obj +% 1394 0 obj << -/D [1387 0 R /XYZ 149.705 753.953 null] +/D [1392 0 R /XYZ 149.705 753.953 null] >> % 296 0 obj << -/D [1387 0 R /XYZ 150.705 716.092 null] +/D [1392 0 R /XYZ 150.705 716.092 null] >> -% 1390 0 obj +% 1395 0 obj << -/D [1387 0 R /XYZ 150.705 510.975 null] +/D [1392 0 R /XYZ 150.705 510.975 null] >> -% 1386 0 obj +% 1391 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1396 0 obj +% 1401 0 obj << /Type /Page -/Contents 1397 0 R -/Resources 1395 0 R +/Contents 1402 0 R +/Resources 1400 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R -/Annots [ 1391 0 R 1393 0 R 1394 0 R ] +/Parent 1387 0 R +/Annots [ 1396 0 R 1398 0 R 1399 0 R ] >> -% 1391 0 obj +% 1396 0 obj << /Type /Annot /Subtype /Link @@ -17549,7 +17575,7 @@ stream /Rect [202.52 554.876 214.475 566.936] /A << /S /GoTo /D (table.18) >> >> -% 1393 0 obj +% 1398 0 obj << /Type /Annot /Subtype /Link @@ -17557,7 +17583,7 @@ stream /Rect [407.408 325.46 414.381 339.127] /A << /S /GoTo /D (figure.4) >> >> -% 1394 0 obj +% 1399 0 obj << /Type /Annot /Subtype /Link @@ -17565,67 +17591,67 @@ stream /Rect [309.226 301.825 316.2 313.885] /A << /S /GoTo /D (figure.3) >> >> -% 1398 0 obj +% 1403 0 obj << -/D [1396 0 R /XYZ 98.895 753.953 null] +/D [1401 0 R /XYZ 98.895 753.953 null] >> -% 1399 0 obj +% 1404 0 obj << -/D [1396 0 R /XYZ 99.895 464.818 null] +/D [1401 0 R /XYZ 99.895 464.818 null] >> -% 1400 0 obj +% 1405 0 obj << -/D [1396 0 R /XYZ 99.895 430.343 null] +/D [1401 0 R /XYZ 99.895 430.343 null] >> -% 1401 0 obj +% 1406 0 obj << -/D [1396 0 R /XYZ 99.895 386.508 null] +/D [1401 0 R /XYZ 99.895 386.508 null] >> -% 1395 0 obj +% 1400 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1404 0 obj +% 1409 0 obj << /Type /Page -/Contents 1405 0 R -/Resources 1403 0 R +/Contents 1410 0 R +/Resources 1408 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R +/Parent 1387 0 R >> -% 1406 0 obj +% 1411 0 obj << -/D [1404 0 R /XYZ 149.705 753.953 null] +/D [1409 0 R /XYZ 149.705 753.953 null] >> -% 1403 0 obj +% 1408 0 obj << -/Font << /F62 667 0 R >> +/Font << /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1408 0 obj +% 1413 0 obj << /Type /Page -/Contents 1409 0 R -/Resources 1407 0 R +/Contents 1414 0 R +/Resources 1412 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R +/Parent 1387 0 R >> -% 1411 0 obj +% 1416 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100658Z00'00') /ModDate (D:20180323100658Z00'00') >> -% 1412 0 obj +% 1417 0 obj << /Type /ExtGState /OPM 1 >> -% 1413 0 obj +% 1418 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1415 0 R +/FontDescriptor 1420 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -17633,10 +17659,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1414 0 obj +% 1419 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1416 0 R +/FontDescriptor 1421 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -17644,7 +17670,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1415 0 obj +% 1420 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -17657,9 +17683,9 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1417 0 R +/FontFile3 1422 0 R >> -% 1416 0 obj +% 1421 0 obj << /Type /FontDescriptor /FontName /XISTAL+Times-Bold @@ -17672,32 +17698,32 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1418 0 R +/FontFile3 1423 0 R >> -% 1410 0 obj +% 1415 0 obj << -/D [1408 0 R /XYZ 98.895 753.953 null] +/D [1413 0 R /XYZ 98.895 753.953 null] >> -% 1402 0 obj +% 1407 0 obj << -/D [1408 0 R /XYZ 99.895 282.918 null] +/D [1413 0 R /XYZ 99.895 282.918 null] >> -% 1407 0 obj +% 1412 0 obj << -/Font << /F62 667 0 R >> -/XObject << /Im5 1392 0 R >> +/Font << /F62 671 0 R >> +/XObject << /Im5 1397 0 R >> /ProcSet [ /PDF /Text ] >> -% 1423 0 obj +% 1428 0 obj << /Type /Page -/Contents 1424 0 R -/Resources 1422 0 R +/Contents 1429 0 R +/Resources 1427 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R -/Annots [ 1419 0 R 1420 0 R 1421 0 R ] +/Parent 1387 0 R +/Annots [ 1424 0 R 1425 0 R 1426 0 R ] >> -% 1419 0 obj +% 1424 0 obj << /Type /Annot /Subtype /Link @@ -17705,7 +17731,7 @@ stream /Rect [419.358 298.8 495.412 310.86] /A << /S /GoTo /D (vdata) >> >> -% 1420 0 obj +% 1425 0 obj << /Type /Annot /Subtype /Link @@ -17713,7 +17739,7 @@ stream /Rect [255.331 289.495 267.287 298.905] /A << /S /GoTo /D (table.19) >> >> -% 1421 0 obj +% 1426 0 obj << /Type /Annot /Subtype /Link @@ -17721,50 +17747,50 @@ stream /Rect [342.753 218.115 409.811 230.175] /A << /S /GoTo /D (descdata) >> >> -% 1425 0 obj +% 1430 0 obj << -/D [1423 0 R /XYZ 149.705 753.953 null] +/D [1428 0 R /XYZ 149.705 753.953 null] >> % 300 0 obj << -/D [1423 0 R /XYZ 150.705 716.092 null] +/D [1428 0 R /XYZ 150.705 716.092 null] >> -% 1426 0 obj +% 1431 0 obj << -/D [1423 0 R /XYZ 150.705 460.417 null] +/D [1428 0 R /XYZ 150.705 460.417 null] >> -% 1422 0 obj +% 1427 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1428 0 obj +% 1433 0 obj << /Type /Page -/Contents 1429 0 R -/Resources 1427 0 R +/Contents 1434 0 R +/Resources 1432 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R +/Parent 1436 0 R >> -% 1430 0 obj +% 1435 0 obj << -/D [1428 0 R /XYZ 98.895 753.953 null] +/D [1433 0 R /XYZ 98.895 753.953 null] >> -% 1427 0 obj +% 1432 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1435 0 obj +% 1440 0 obj << /Type /Page -/Contents 1436 0 R -/Resources 1434 0 R +/Contents 1441 0 R +/Resources 1439 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1432 0 R ] +/Parent 1436 0 R +/Annots [ 1437 0 R ] >> -% 1432 0 obj +% 1437 0 obj << /Type /Annot /Subtype /Link @@ -17772,33 +17798,33 @@ stream /Rect [342.753 211.064 409.811 223.124] /A << /S /GoTo /D (descdata) >> >> -% 1437 0 obj +% 1442 0 obj << -/D [1435 0 R /XYZ 149.705 753.953 null] +/D [1440 0 R /XYZ 149.705 753.953 null] >> % 304 0 obj << -/D [1435 0 R /XYZ 150.705 716.092 null] +/D [1440 0 R /XYZ 150.705 716.092 null] >> -% 1438 0 obj +% 1443 0 obj << -/D [1435 0 R /XYZ 150.705 449.977 null] +/D [1440 0 R /XYZ 150.705 449.977 null] >> -% 1434 0 obj +% 1439 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1442 0 obj +% 1447 0 obj << /Type /Page -/Contents 1443 0 R -/Resources 1441 0 R +/Contents 1448 0 R +/Resources 1446 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1433 0 R 1439 0 R 1440 0 R ] +/Parent 1436 0 R +/Annots [ 1438 0 R 1444 0 R 1445 0 R ] >> -% 1433 0 obj +% 1438 0 obj << /Type /Annot /Subtype /Link @@ -17806,7 +17832,7 @@ stream /Rect [287.51 642.547 363.564 654.607] /A << /S /GoTo /D (vdata) >> >> -% 1439 0 obj +% 1444 0 obj << /Type /Annot /Subtype /Link @@ -17814,7 +17840,7 @@ stream /Rect [123.806 542.921 199.86 554.981] /A << /S /GoTo /D (vdata) >> >> -% 1440 0 obj +% 1445 0 obj << /Type /Annot /Subtype /Link @@ -17822,50 +17848,50 @@ stream /Rect [421.516 542.921 433.471 554.981] /A << /S /GoTo /D (table.20) >> >> -% 1444 0 obj +% 1449 0 obj << -/D [1442 0 R /XYZ 98.895 753.953 null] +/D [1447 0 R /XYZ 98.895 753.953 null] >> -% 1441 0 obj +% 1446 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1446 0 obj +% 1451 0 obj << /Type /Page -/Contents 1447 0 R -/Resources 1445 0 R +/Contents 1452 0 R +/Resources 1450 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R +/Parent 1436 0 R >> -% 1448 0 obj +% 1453 0 obj << -/D [1446 0 R /XYZ 149.705 753.953 null] +/D [1451 0 R /XYZ 149.705 753.953 null] >> % 308 0 obj << -/D [1446 0 R /XYZ 150.705 716.092 null] +/D [1451 0 R /XYZ 150.705 716.092 null] >> % 312 0 obj << -/D [1446 0 R /XYZ 150.705 691.48 null] +/D [1451 0 R /XYZ 150.705 691.48 null] >> -% 1445 0 obj +% 1450 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1451 0 obj +% 1456 0 obj << /Type /Page -/Contents 1452 0 R -/Resources 1450 0 R +/Contents 1457 0 R +/Resources 1455 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1449 0 R ] +/Parent 1436 0 R +/Annots [ 1454 0 R ] >> -% 1449 0 obj +% 1454 0 obj << /Type /Annot /Subtype /Link @@ -17873,29 +17899,29 @@ stream /Rect [291.943 324.687 359.001 336.746] /A << /S /GoTo /D (descdata) >> >> -% 1453 0 obj +% 1458 0 obj << -/D [1451 0 R /XYZ 98.895 753.953 null] +/D [1456 0 R /XYZ 98.895 753.953 null] >> -% 1454 0 obj +% 1459 0 obj << -/D [1451 0 R /XYZ 99.895 234.157 null] +/D [1456 0 R /XYZ 99.895 234.157 null] >> -% 1450 0 obj +% 1455 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1457 0 obj +% 1462 0 obj << /Type /Page -/Contents 1458 0 R -/Resources 1456 0 R +/Contents 1463 0 R +/Resources 1461 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1455 0 R ] +/Parent 1436 0 R +/Annots [ 1460 0 R ] >> -% 1455 0 obj +% 1460 0 obj << /Type /Annot /Subtype /Link @@ -17903,66 +17929,66 @@ stream /Rect [405.298 215.702 427.216 227.166] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1459 0 obj +% 1464 0 obj << -/D [1457 0 R /XYZ 149.705 753.953 null] +/D [1462 0 R /XYZ 149.705 753.953 null] >> -% 1461 0 obj +% 1466 0 obj << -/D [1457 0 R /XYZ 150.705 133.283 null] +/D [1462 0 R /XYZ 150.705 133.283 null] >> -% 1456 0 obj +% 1461 0 obj << -/Font << /F67 913 0 R /F62 667 0 R /F59 665 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R /F69 1460 0 R >> +/Font << /F67 918 0 R /F62 671 0 R /F59 669 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R /F69 1465 0 R >> /ProcSet [ /PDF /Text ] >> -% 1463 0 obj +% 1468 0 obj << /Type /Page -/Contents 1464 0 R -/Resources 1462 0 R +/Contents 1469 0 R +/Resources 1467 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R +/Parent 1476 0 R >> -% 1465 0 obj +% 1470 0 obj << -/D [1463 0 R /XYZ 98.895 753.953 null] +/D [1468 0 R /XYZ 98.895 753.953 null] >> -% 1466 0 obj +% 1471 0 obj << -/D [1463 0 R /XYZ 99.895 716.092 null] +/D [1468 0 R /XYZ 99.895 716.092 null] >> -% 1467 0 obj +% 1472 0 obj << -/D [1463 0 R /XYZ 99.895 687.379 null] +/D [1468 0 R /XYZ 99.895 687.379 null] >> -% 1468 0 obj +% 1473 0 obj << -/D [1463 0 R /XYZ 99.895 667.454 null] +/D [1468 0 R /XYZ 99.895 667.454 null] >> -% 1469 0 obj +% 1474 0 obj << -/D [1463 0 R /XYZ 99.895 626.268 null] +/D [1468 0 R /XYZ 99.895 626.268 null] >> -% 1470 0 obj +% 1475 0 obj << -/D [1463 0 R /XYZ 99.895 567.828 null] +/D [1468 0 R /XYZ 99.895 567.828 null] >> -% 1462 0 obj +% 1467 0 obj << -/Font << /F62 667 0 R /F67 913 0 R >> +/Font << /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1474 0 obj +% 1479 0 obj << /Type /Page -/Contents 1475 0 R -/Resources 1473 0 R +/Contents 1480 0 R +/Resources 1478 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1472 0 R ] +/Parent 1476 0 R +/Annots [ 1477 0 R ] >> -% 1472 0 obj +% 1477 0 obj << /Type /Annot /Subtype /Link @@ -17970,29 +17996,29 @@ stream /Rect [342.753 116.52 409.811 128.58] /A << /S /GoTo /D (descdata) >> >> -% 1476 0 obj +% 1481 0 obj << -/D [1474 0 R /XYZ 149.705 753.953 null] +/D [1479 0 R /XYZ 149.705 753.953 null] >> % 316 0 obj << -/D [1474 0 R /XYZ 150.705 716.092 null] +/D [1479 0 R /XYZ 150.705 716.092 null] >> -% 1473 0 obj +% 1478 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1479 0 obj +% 1484 0 obj << /Type /Page -/Contents 1480 0 R -/Resources 1478 0 R +/Contents 1485 0 R +/Resources 1483 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1477 0 R ] +/Parent 1476 0 R +/Annots [ 1482 0 R ] >> -% 1477 0 obj +% 1482 0 obj << /Type /Annot /Subtype /Link @@ -18000,37 +18026,37 @@ stream /Rect [278.165 401.451 300.083 413.511] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1481 0 obj +% 1486 0 obj << -/D [1479 0 R /XYZ 98.895 753.953 null] +/D [1484 0 R /XYZ 98.895 753.953 null] >> -% 1482 0 obj +% 1487 0 obj << -/D [1479 0 R /XYZ 99.895 496.698 null] +/D [1484 0 R /XYZ 99.895 496.698 null] >> -% 1483 0 obj +% 1488 0 obj << -/D [1479 0 R /XYZ 99.895 474.179 null] +/D [1484 0 R /XYZ 99.895 474.179 null] >> -% 1484 0 obj +% 1489 0 obj << -/D [1479 0 R /XYZ 99.895 430.343 null] +/D [1484 0 R /XYZ 99.895 430.343 null] >> -% 1478 0 obj +% 1483 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1488 0 obj +% 1493 0 obj << /Type /Page -/Contents 1489 0 R -/Resources 1487 0 R +/Contents 1494 0 R +/Resources 1492 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1485 0 R 1486 0 R ] +/Parent 1476 0 R +/Annots [ 1490 0 R 1491 0 R ] >> -% 1485 0 obj +% 1490 0 obj << /Type /Annot /Subtype /Link @@ -18038,7 +18064,7 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1486 0 obj +% 1491 0 obj << /Type /Annot /Subtype /Link @@ -18046,22 +18072,10 @@ stream /Rect [342.753 416.361 409.811 428.42] /A << /S /GoTo /D (descdata) >> >> -% 1490 0 obj -<< -/D [1488 0 R /XYZ 149.705 753.953 null] ->> -% 320 0 obj -<< -/D [1488 0 R /XYZ 150.705 716.092 null] ->> -% 1491 0 obj -<< -/D [1488 0 R /XYZ 150.705 326.302 null] ->> endstream endobj -1497 0 obj +1502 0 obj << /Length 3168 >> @@ -18159,7 +18173,7 @@ ET endstream endobj -1502 0 obj +1507 0 obj << /Length 2167 >> @@ -18228,7 +18242,7 @@ ET endstream endobj -1508 0 obj +1513 0 obj << /Length 5710 >> @@ -18338,7 +18352,7 @@ ET endstream endobj -1513 0 obj +1518 0 obj << /Length 1484 >> @@ -18361,7 +18375,7 @@ ET endstream endobj -1521 0 obj +1526 0 obj << /Length 5699 >> @@ -18468,7 +18482,7 @@ ET endstream endobj -1526 0 obj +1531 0 obj << /Length 1141 >> @@ -18495,7 +18509,7 @@ ET endstream endobj -1534 0 obj +1539 0 obj << /Length 5375 >> @@ -18556,7 +18570,7 @@ ET endstream endobj -1540 0 obj +1545 0 obj << /Length 6861 >> @@ -18682,7 +18696,7 @@ ET endstream endobj -1549 0 obj +1554 0 obj << /Length 4535 >> @@ -18721,7 +18735,7 @@ ET endstream endobj -1563 0 obj +1568 0 obj << /Length 6789 >> @@ -18881,7 +18895,7 @@ ET endstream endobj -1567 0 obj +1572 0 obj << /Length 3146 >> @@ -18925,7 +18939,7 @@ ET endstream endobj -1580 0 obj +1585 0 obj << /Length 2987 >> @@ -19016,7 +19030,7 @@ ET endstream endobj -1586 0 obj +1591 0 obj << /Length 3858 >> @@ -19115,7 +19129,7 @@ ET endstream endobj -1593 0 obj +1598 0 obj << /Length 6166 >> @@ -19225,7 +19239,7 @@ ET endstream endobj -1597 0 obj +1602 0 obj << /Length 925 >> @@ -19248,39 +19262,51 @@ ET endstream endobj -1492 0 obj +1497 0 obj << /Type /ObjStm /N 100 -/First 979 -/Length 10305 ->> -stream -1487 0 1496 94 1493 242 1494 387 1498 534 324 592 1495 649 1501 743 1499 882 1503 1027 -328 1086 1500 1144 1507 1238 1504 1386 1505 1531 1509 1678 332 1736 1506 1793 1512 1913 1514 2031 -1515 2090 1516 2149 1511 2208 1520 2289 1517 2437 1518 2584 1522 2729 336 2787 1523 2844 1519 2902 -1525 2996 1527 3114 1528 3173 1529 3232 1530 3291 1524 3350 1533 3444 1535 3562 340 3620 1532 3677 -1539 3797 1531 3954 1536 4097 1537 4242 1541 4385 1542 4444 1543 4502 1544 4561 1545 4620 1546 4679 -1538 4738 1548 4858 1550 4976 1551 5034 1552 5092 1553 5150 1554 5208 1555 5266 1556 5324 1547 5382 -1562 5502 1558 5659 1559 5806 1560 5951 1564 6097 344 6156 1561 6214 1566 6308 1568 6426 1569 6484 -1570 6542 1571 6600 1572 6658 1573 6716 1574 6774 1575 6832 1565 6890 1579 6984 1576 7132 1577 7275 -1581 7422 348 7481 1578 7539 1585 7633 1582 7781 1583 7926 1587 8073 352 8131 1588 8188 1584 8246 -1592 8340 1589 8488 1590 8631 1594 8775 356 8834 1591 8892 1596 8999 1598 9117 1599 9175 1595 9232 -% 1487 0 obj +/First 976 +/Length 10269 +>> +stream +1495 0 320 59 1496 117 1492 176 1501 270 1498 418 1499 563 1503 710 324 768 1500 825 +1506 919 1504 1058 1508 1203 328 1262 1505 1320 1512 1414 1509 1562 1510 1707 1514 1854 332 1912 +1511 1969 1517 2089 1519 2207 1520 2266 1521 2325 1516 2384 1525 2465 1522 2613 1523 2760 1527 2905 +336 2963 1528 3020 1524 3078 1530 3172 1532 3290 1533 3349 1534 3408 1535 3467 1529 3526 1538 3620 +1540 3738 340 3796 1537 3853 1544 3973 1536 4130 1541 4273 1542 4418 1546 4561 1547 4620 1548 4678 +1549 4737 1550 4796 1551 4855 1543 4914 1553 5034 1555 5152 1556 5210 1557 5268 1558 5326 1559 5384 +1560 5442 1561 5500 1552 5558 1567 5678 1563 5835 1564 5982 1565 6127 1569 6273 344 6332 1566 6390 +1571 6484 1573 6602 1574 6660 1575 6718 1576 6776 1577 6834 1578 6892 1579 6950 1580 7008 1570 7066 +1584 7160 1581 7308 1582 7451 1586 7598 348 7657 1583 7715 1590 7809 1587 7957 1588 8102 1592 8249 +352 8307 1593 8364 1589 8422 1597 8516 1594 8664 1595 8807 1599 8951 356 9010 1596 9068 1601 9175 +% 1495 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] +/D [1493 0 R /XYZ 149.705 753.953 null] +>> +% 320 0 obj +<< +/D [1493 0 R /XYZ 150.705 716.092 null] >> % 1496 0 obj << +/D [1493 0 R /XYZ 150.705 326.302 null] +>> +% 1492 0 obj +<< +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1501 0 obj +<< /Type /Page -/Contents 1497 0 R -/Resources 1495 0 R +/Contents 1502 0 R +/Resources 1500 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1493 0 R 1494 0 R ] +/Parent 1476 0 R +/Annots [ 1498 0 R 1499 0 R ] >> -% 1493 0 obj +% 1498 0 obj << /Type /Annot /Subtype /Link @@ -19288,7 +19314,7 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1494 0 obj +% 1499 0 obj << /Type /Annot /Subtype /Link @@ -19296,29 +19322,29 @@ stream /Rect [291.943 484.107 359.001 496.166] /A << /S /GoTo /D (descdata) >> >> -% 1498 0 obj +% 1503 0 obj << -/D [1496 0 R /XYZ 98.895 753.953 null] +/D [1501 0 R /XYZ 98.895 753.953 null] >> % 324 0 obj << -/D [1496 0 R /XYZ 99.895 716.092 null] +/D [1501 0 R /XYZ 99.895 716.092 null] >> -% 1495 0 obj +% 1500 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1501 0 obj +% 1506 0 obj << /Type /Page -/Contents 1502 0 R -/Resources 1500 0 R +/Contents 1507 0 R +/Resources 1505 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1499 0 R ] +/Parent 1476 0 R +/Annots [ 1504 0 R ] >> -% 1499 0 obj +% 1504 0 obj << /Type /Annot /Subtype /Link @@ -19326,29 +19352,29 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1503 0 obj +% 1508 0 obj << -/D [1501 0 R /XYZ 149.705 753.953 null] +/D [1506 0 R /XYZ 149.705 753.953 null] >> % 328 0 obj << -/D [1501 0 R /XYZ 150.705 716.092 null] +/D [1506 0 R /XYZ 150.705 716.092 null] >> -% 1500 0 obj +% 1505 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1507 0 obj +% 1512 0 obj << /Type /Page -/Contents 1508 0 R -/Resources 1506 0 R +/Contents 1513 0 R +/Resources 1511 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R -/Annots [ 1504 0 R 1505 0 R ] +/Parent 1515 0 R +/Annots [ 1509 0 R 1510 0 R ] >> -% 1504 0 obj +% 1509 0 obj << /Type /Annot /Subtype /Link @@ -19356,7 +19382,7 @@ stream /Rect [291.943 452.321 369.462 464.381] /A << /S /GoTo /D (spdata) >> >> -% 1505 0 obj +% 1510 0 obj << /Type /Annot /Subtype /Link @@ -19364,54 +19390,54 @@ stream /Rect [291.943 209.193 359.001 221.252] /A << /S /GoTo /D (descdata) >> >> -% 1509 0 obj +% 1514 0 obj << -/D [1507 0 R /XYZ 98.895 753.953 null] +/D [1512 0 R /XYZ 98.895 753.953 null] >> % 332 0 obj << -/D [1507 0 R /XYZ 99.895 716.092 null] +/D [1512 0 R /XYZ 99.895 716.092 null] >> -% 1506 0 obj +% 1511 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1512 0 obj +% 1517 0 obj << /Type /Page -/Contents 1513 0 R -/Resources 1511 0 R +/Contents 1518 0 R +/Resources 1516 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R +/Parent 1515 0 R >> -% 1514 0 obj +% 1519 0 obj << -/D [1512 0 R /XYZ 149.705 753.953 null] +/D [1517 0 R /XYZ 149.705 753.953 null] >> -% 1515 0 obj +% 1520 0 obj << -/D [1512 0 R /XYZ 150.705 716.092 null] +/D [1517 0 R /XYZ 150.705 716.092 null] >> -% 1516 0 obj +% 1521 0 obj << -/D [1512 0 R /XYZ 150.705 663.469 null] +/D [1517 0 R /XYZ 150.705 663.469 null] >> -% 1511 0 obj +% 1516 0 obj << -/Font << /F62 667 0 R /F67 913 0 R >> +/Font << /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1520 0 obj +% 1525 0 obj << /Type /Page -/Contents 1521 0 R -/Resources 1519 0 R +/Contents 1526 0 R +/Resources 1524 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R -/Annots [ 1517 0 R 1518 0 R ] +/Parent 1515 0 R +/Annots [ 1522 0 R 1523 0 R ] >> -% 1517 0 obj +% 1522 0 obj << /Type /Annot /Subtype /Link @@ -19419,7 +19445,7 @@ stream /Rect [291.943 571.679 359.001 583.739] /A << /S /GoTo /D (descdata) >> >> -% 1518 0 obj +% 1523 0 obj << /Type /Annot /Subtype /Link @@ -19427,83 +19453,83 @@ stream /Rect [291.943 227.887 369.462 239.946] /A << /S /GoTo /D (spdata) >> >> -% 1522 0 obj +% 1527 0 obj << -/D [1520 0 R /XYZ 98.895 753.953 null] +/D [1525 0 R /XYZ 98.895 753.953 null] >> % 336 0 obj << -/D [1520 0 R /XYZ 99.895 716.092 null] +/D [1525 0 R /XYZ 99.895 716.092 null] >> -% 1523 0 obj +% 1528 0 obj << -/D [1520 0 R /XYZ 99.895 136.374 null] +/D [1525 0 R /XYZ 99.895 136.374 null] >> -% 1519 0 obj +% 1524 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1525 0 obj +% 1530 0 obj << /Type /Page -/Contents 1526 0 R -/Resources 1524 0 R +/Contents 1531 0 R +/Resources 1529 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R +/Parent 1515 0 R >> -% 1527 0 obj +% 1532 0 obj << -/D [1525 0 R /XYZ 149.705 753.953 null] +/D [1530 0 R /XYZ 149.705 753.953 null] >> -% 1528 0 obj +% 1533 0 obj << -/D [1525 0 R /XYZ 150.705 716.092 null] +/D [1530 0 R /XYZ 150.705 716.092 null] >> -% 1529 0 obj +% 1534 0 obj << -/D [1525 0 R /XYZ 150.705 699.334 null] +/D [1530 0 R /XYZ 150.705 699.334 null] >> -% 1530 0 obj +% 1535 0 obj << -/D [1525 0 R /XYZ 150.705 644.819 null] +/D [1530 0 R /XYZ 150.705 644.819 null] >> -% 1524 0 obj +% 1529 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F67 913 0 R >> +/Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1533 0 obj +% 1538 0 obj << /Type /Page -/Contents 1534 0 R -/Resources 1532 0 R +/Contents 1539 0 R +/Resources 1537 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R +/Parent 1515 0 R >> -% 1535 0 obj +% 1540 0 obj << -/D [1533 0 R /XYZ 98.895 753.953 null] +/D [1538 0 R /XYZ 98.895 753.953 null] >> % 340 0 obj << -/D [1533 0 R /XYZ 99.895 716.092 null] +/D [1538 0 R /XYZ 99.895 716.092 null] >> -% 1532 0 obj +% 1537 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1539 0 obj +% 1544 0 obj << /Type /Page -/Contents 1540 0 R -/Resources 1538 0 R +/Contents 1545 0 R +/Resources 1543 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R -/Annots [ 1531 0 R 1536 0 R 1537 0 R ] +/Parent 1515 0 R +/Annots [ 1536 0 R 1541 0 R 1542 0 R ] >> -% 1531 0 obj +% 1536 0 obj << /Type /Annot /Subtype /Link @@ -19511,7 +19537,7 @@ stream /Rect [310.942 654.503 378 666.562] /A << /S /GoTo /D (descdata) >> >> -% 1536 0 obj +% 1541 0 obj << /Type /Annot /Subtype /Link @@ -19519,7 +19545,7 @@ stream /Rect [342.753 480.963 420.271 493.022] /A << /S /GoTo /D (spdata) >> >> -% 1537 0 obj +% 1542 0 obj << /Type /Annot /Subtype /Link @@ -19527,86 +19553,86 @@ stream /Rect [310.942 411.699 378 423.758] /A << /S /GoTo /D (descdata) >> >> -% 1541 0 obj +% 1546 0 obj << -/D [1539 0 R /XYZ 149.705 753.953 null] +/D [1544 0 R /XYZ 149.705 753.953 null] >> -% 1542 0 obj +% 1547 0 obj << -/D [1539 0 R /XYZ 150.705 306.27 null] +/D [1544 0 R /XYZ 150.705 306.27 null] >> -% 1543 0 obj +% 1548 0 obj << -/D [1539 0 R /XYZ 150.705 272.927 null] +/D [1544 0 R /XYZ 150.705 272.927 null] >> -% 1544 0 obj +% 1549 0 obj << -/D [1539 0 R /XYZ 150.705 236.878 null] +/D [1544 0 R /XYZ 150.705 236.878 null] >> -% 1545 0 obj +% 1550 0 obj << -/D [1539 0 R /XYZ 150.705 167.614 null] +/D [1544 0 R /XYZ 150.705 167.614 null] >> -% 1546 0 obj +% 1551 0 obj << -/D [1539 0 R /XYZ 150.705 146.171 null] +/D [1544 0 R /XYZ 150.705 146.171 null] >> -% 1538 0 obj +% 1543 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1548 0 obj +% 1553 0 obj << /Type /Page -/Contents 1549 0 R -/Resources 1547 0 R +/Contents 1554 0 R +/Resources 1552 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R +/Parent 1562 0 R >> -% 1550 0 obj +% 1555 0 obj << -/D [1548 0 R /XYZ 98.895 753.953 null] +/D [1553 0 R /XYZ 98.895 753.953 null] >> -% 1551 0 obj +% 1556 0 obj << -/D [1548 0 R /XYZ 99.895 716.092 null] +/D [1553 0 R /XYZ 99.895 716.092 null] >> -% 1552 0 obj +% 1557 0 obj << -/D [1548 0 R /XYZ 99.895 651.514 null] +/D [1553 0 R /XYZ 99.895 651.514 null] >> -% 1553 0 obj +% 1558 0 obj << -/D [1548 0 R /XYZ 99.895 607.678 null] +/D [1553 0 R /XYZ 99.895 607.678 null] >> -% 1554 0 obj +% 1559 0 obj << -/D [1548 0 R /XYZ 99.895 575.798 null] +/D [1553 0 R /XYZ 99.895 575.798 null] >> -% 1555 0 obj +% 1560 0 obj << -/D [1548 0 R /XYZ 99.895 520.007 null] +/D [1553 0 R /XYZ 99.895 520.007 null] >> -% 1556 0 obj +% 1561 0 obj << -/D [1548 0 R /XYZ 99.895 476.171 null] +/D [1553 0 R /XYZ 99.895 476.171 null] >> -% 1547 0 obj +% 1552 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1562 0 obj +% 1567 0 obj << /Type /Page -/Contents 1563 0 R -/Resources 1561 0 R +/Contents 1568 0 R +/Resources 1566 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1558 0 R 1559 0 R 1560 0 R ] +/Parent 1562 0 R +/Annots [ 1563 0 R 1564 0 R 1565 0 R ] >> -% 1558 0 obj +% 1563 0 obj << /Type /Annot /Subtype /Link @@ -19614,7 +19640,7 @@ stream /Rect [342.753 572.168 409.811 584.228] /A << /S /GoTo /D (descdata) >> >> -% 1559 0 obj +% 1564 0 obj << /Type /Annot /Subtype /Link @@ -19622,7 +19648,7 @@ stream /Rect [342.753 276.913 420.271 288.973] /A << /S /GoTo /D (spdata) >> >> -% 1560 0 obj +% 1565 0 obj << /Type /Annot /Subtype /Link @@ -19630,74 +19656,74 @@ stream /Rect [345.92 208.672 412.978 220.731] /A << /S /GoTo /D (descdata) >> >> -% 1564 0 obj +% 1569 0 obj << -/D [1562 0 R /XYZ 149.705 753.953 null] +/D [1567 0 R /XYZ 149.705 753.953 null] >> % 344 0 obj << -/D [1562 0 R /XYZ 150.705 716.092 null] +/D [1567 0 R /XYZ 150.705 716.092 null] >> -% 1561 0 obj +% 1566 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1566 0 obj +% 1571 0 obj << /Type /Page -/Contents 1567 0 R -/Resources 1565 0 R +/Contents 1572 0 R +/Resources 1570 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R +/Parent 1562 0 R >> -% 1568 0 obj +% 1573 0 obj << -/D [1566 0 R /XYZ 98.895 753.953 null] +/D [1571 0 R /XYZ 98.895 753.953 null] >> -% 1569 0 obj +% 1574 0 obj << -/D [1566 0 R /XYZ 99.895 701.929 null] +/D [1571 0 R /XYZ 99.895 701.929 null] >> -% 1570 0 obj +% 1575 0 obj << -/D [1566 0 R /XYZ 99.895 667.454 null] +/D [1571 0 R /XYZ 99.895 667.454 null] >> -% 1571 0 obj +% 1576 0 obj << -/D [1566 0 R /XYZ 99.895 647.529 null] +/D [1571 0 R /XYZ 99.895 647.529 null] >> -% 1572 0 obj +% 1577 0 obj << -/D [1566 0 R /XYZ 99.895 603.693 null] +/D [1571 0 R /XYZ 99.895 603.693 null] >> -% 1573 0 obj +% 1578 0 obj << -/D [1566 0 R /XYZ 99.895 547.902 null] +/D [1571 0 R /XYZ 99.895 547.902 null] >> -% 1574 0 obj +% 1579 0 obj << -/D [1566 0 R /XYZ 99.895 527.977 null] +/D [1571 0 R /XYZ 99.895 527.977 null] >> -% 1575 0 obj +% 1580 0 obj << -/D [1566 0 R /XYZ 99.895 496.097 null] +/D [1571 0 R /XYZ 99.895 496.097 null] >> -% 1565 0 obj +% 1570 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1579 0 obj +% 1584 0 obj << /Type /Page -/Contents 1580 0 R -/Resources 1578 0 R +/Contents 1585 0 R +/Resources 1583 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1576 0 R 1577 0 R ] +/Parent 1562 0 R +/Annots [ 1581 0 R 1582 0 R ] >> -% 1576 0 obj +% 1581 0 obj << /Type /Annot /Subtype /Link @@ -19705,7 +19731,7 @@ stream /Rect [342.753 573.77 420.271 585.83] /A << /S /GoTo /D (spdata) >> >> -% 1577 0 obj +% 1582 0 obj << /Type /Annot /Subtype /Link @@ -19713,29 +19739,29 @@ stream /Rect [342.753 506.024 409.811 518.084] /A << /S /GoTo /D (descdata) >> >> -% 1581 0 obj +% 1586 0 obj << -/D [1579 0 R /XYZ 149.705 753.953 null] +/D [1584 0 R /XYZ 149.705 753.953 null] >> % 348 0 obj << -/D [1579 0 R /XYZ 150.705 716.092 null] +/D [1584 0 R /XYZ 150.705 716.092 null] >> -% 1578 0 obj +% 1583 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1585 0 obj +% 1590 0 obj << /Type /Page -/Contents 1586 0 R -/Resources 1584 0 R +/Contents 1591 0 R +/Resources 1589 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1582 0 R 1583 0 R ] +/Parent 1562 0 R +/Annots [ 1587 0 R 1588 0 R ] >> -% 1582 0 obj +% 1587 0 obj << /Type /Annot /Subtype /Link @@ -19743,7 +19769,7 @@ stream /Rect [291.943 559.823 369.462 571.882] /A << /S /GoTo /D (spdata) >> >> -% 1583 0 obj +% 1588 0 obj << /Type /Annot /Subtype /Link @@ -19751,33 +19777,33 @@ stream /Rect [291.943 492.077 359.001 504.136] /A << /S /GoTo /D (descdata) >> >> -% 1587 0 obj +% 1592 0 obj << -/D [1585 0 R /XYZ 98.895 753.953 null] +/D [1590 0 R /XYZ 98.895 753.953 null] >> % 352 0 obj << -/D [1585 0 R /XYZ 99.895 716.092 null] +/D [1590 0 R /XYZ 99.895 716.092 null] >> -% 1588 0 obj +% 1593 0 obj << -/D [1585 0 R /XYZ 99.895 312.355 null] +/D [1590 0 R /XYZ 99.895 312.355 null] >> -% 1584 0 obj +% 1589 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1592 0 obj +% 1597 0 obj << /Type /Page -/Contents 1593 0 R -/Resources 1591 0 R +/Contents 1598 0 R +/Resources 1596 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1589 0 R 1590 0 R ] +/Parent 1562 0 R +/Annots [ 1594 0 R 1595 0 R ] >> -% 1589 0 obj +% 1594 0 obj << /Type /Annot /Subtype /Link @@ -19785,7 +19811,7 @@ stream /Rect [310.942 577.893 378 589.953] /A << /S /GoTo /D (descdata) >> >> -% 1590 0 obj +% 1595 0 obj << /Type /Annot /Subtype /Link @@ -19793,44 +19819,31 @@ stream /Rect [261.249 128.475 337.303 140.535] /A << /S /GoTo /D (vdata) >> >> -% 1594 0 obj +% 1599 0 obj << -/D [1592 0 R /XYZ 149.705 753.953 null] +/D [1597 0 R /XYZ 149.705 753.953 null] >> % 356 0 obj << -/D [1592 0 R /XYZ 150.705 716.092 null] +/D [1597 0 R /XYZ 150.705 716.092 null] >> -% 1591 0 obj +% 1596 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1596 0 obj +% 1601 0 obj << /Type /Page -/Contents 1597 0 R -/Resources 1595 0 R +/Contents 1602 0 R +/Resources 1600 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R ->> -% 1598 0 obj -<< -/D [1596 0 R /XYZ 98.895 753.953 null] ->> -% 1599 0 obj -<< -/D [1596 0 R /XYZ 99.895 632.19 null] ->> -% 1595 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] +/Parent 1605 0 R >> endstream endobj -1605 0 obj +1611 0 obj << /Length 6336 >> @@ -19944,7 +19957,7 @@ ET endstream endobj -1610 0 obj +1615 0 obj << /Length 539 >> @@ -19968,7 +19981,7 @@ ET endstream endobj -1619 0 obj +1624 0 obj << /Length 6120 >> @@ -20131,7 +20144,7 @@ ET endstream endobj -1627 0 obj +1632 0 obj << /Length 3224 >> @@ -20229,7 +20242,7 @@ ET endstream endobj -1631 0 obj +1636 0 obj << /Length 3218 >> @@ -20281,7 +20294,7 @@ ET endstream endobj -1636 0 obj +1641 0 obj << /Length 6238 >> @@ -20384,7 +20397,7 @@ ET endstream endobj -1641 0 obj +1646 0 obj << /Length 672 >> @@ -20407,7 +20420,7 @@ ET endstream endobj -1648 0 obj +1653 0 obj << /Length 5458 >> @@ -20506,7 +20519,7 @@ ET endstream endobj -1653 0 obj +1658 0 obj << /Length 3169 >> @@ -20590,7 +20603,7 @@ ET endstream endobj -1659 0 obj +1664 0 obj << /Length 4795 >> @@ -20682,7 +20695,7 @@ ET endstream endobj -1665 0 obj +1670 0 obj << /Length 3147 >> @@ -20766,7 +20779,7 @@ ET endstream endobj -1671 0 obj +1676 0 obj << /Length 4785 >> @@ -20858,7 +20871,7 @@ ET endstream endobj -1678 0 obj +1683 0 obj << /Length 3647 >> @@ -20939,7 +20952,7 @@ ET endstream endobj -1685 0 obj +1690 0 obj << /Length 3458 >> @@ -21020,7 +21033,7 @@ ET endstream endobj -1692 0 obj +1697 0 obj << /Length 5480 >> @@ -21109,7 +21122,7 @@ ET endstream endobj -1696 0 obj +1701 0 obj << /Length 3529 >> @@ -21148,7 +21161,7 @@ ET endstream endobj -1706 0 obj +1711 0 obj << /Length 3995 >> @@ -21261,34 +21274,47 @@ ET endstream endobj -1607 0 obj +1606 0 obj << /Type /ObjStm /N 100 -/First 973 -/Length 10526 ->> -stream -1604 0 1601 148 1602 294 1606 438 360 497 1603 555 1609 675 1611 793 1612 851 1613 909 -1608 967 1618 1048 1614 1205 1615 1346 1616 1489 1620 1633 364 1692 1621 1750 1622 1809 1617 1868 -1626 1975 1623 2123 1624 2266 1628 2413 368 2471 1625 2528 1630 2622 1632 2740 372 2799 1629 2857 -1635 2964 1633 3103 1637 3250 376 3308 1634 3365 1640 3472 1642 3590 1643 3649 1644 3708 1639 3767 -1647 3848 1645 3987 1649 4134 380 4192 1646 4249 1652 4356 1650 4495 1654 4642 384 4701 1655 4759 -1651 4818 1658 4925 1656 5064 1660 5211 388 5269 1661 5326 1657 5384 1664 5491 1662 5630 1666 5777 -392 5836 1667 5894 1663 5953 1670 6060 1668 6199 1672 6346 396 6404 1673 6461 1669 6519 1677 6626 -1675 6765 1679 6910 400 6969 1680 7027 1681 7086 1676 7145 1684 7239 1682 7378 1686 7523 405 7581 -1687 7638 1688 7696 1683 7754 1691 7848 1689 7987 1693 8132 409 8191 1690 8249 1695 8370 1697 8488 -1698 8546 1699 8604 1700 8662 1694 8720 1705 8840 1701 8997 1702 9142 1703 9289 1707 9436 413 9495 +/First 974 +/Length 10472 +>> +stream +1603 0 1604 58 1600 115 1610 209 1607 357 1608 503 1612 647 360 706 1609 764 1614 884 +1616 1002 1617 1060 1618 1118 1613 1176 1623 1257 1619 1414 1620 1555 1621 1698 1625 1842 364 1901 +1626 1959 1627 2018 1622 2077 1631 2184 1628 2332 1629 2475 1633 2622 368 2680 1630 2737 1635 2831 +1637 2949 372 3008 1634 3066 1640 3173 1638 3312 1642 3459 376 3517 1639 3574 1645 3681 1647 3799 +1648 3858 1649 3917 1644 3976 1652 4057 1650 4196 1654 4343 380 4401 1651 4458 1657 4565 1655 4704 +1659 4851 384 4910 1660 4968 1656 5027 1663 5134 1661 5273 1665 5420 388 5478 1666 5535 1662 5593 +1669 5700 1667 5839 1671 5986 392 6045 1672 6103 1668 6162 1675 6269 1673 6408 1677 6555 396 6613 +1678 6670 1674 6728 1682 6835 1680 6974 1684 7119 400 7178 1685 7236 1686 7295 1681 7354 1689 7448 +1687 7587 1691 7732 405 7790 1692 7847 1693 7905 1688 7963 1696 8057 1694 8196 1698 8341 409 8400 +1695 8458 1700 8579 1702 8697 1703 8755 1704 8813 1705 8871 1699 8929 1710 9049 1706 9206 1707 9351 +% 1603 0 obj +<< +/D [1601 0 R /XYZ 98.895 753.953 null] +>> % 1604 0 obj << +/D [1601 0 R /XYZ 99.895 632.19 null] +>> +% 1600 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1610 0 obj +<< /Type /Page -/Contents 1605 0 R -/Resources 1603 0 R +/Contents 1611 0 R +/Resources 1609 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R -/Annots [ 1601 0 R 1602 0 R ] +/Parent 1605 0 R +/Annots [ 1607 0 R 1608 0 R ] >> -% 1601 0 obj +% 1607 0 obj << /Type /Annot /Subtype /Link @@ -21296,7 +21322,7 @@ stream /Rect [342.753 362.621 409.811 374.68] /A << /S /GoTo /D (descdata) >> >> -% 1602 0 obj +% 1608 0 obj << /Type /Annot /Subtype /Link @@ -21304,54 +21330,54 @@ stream /Rect [417.183 207.637 493.237 219.697] /A << /S /GoTo /D (vdata) >> >> -% 1606 0 obj +% 1612 0 obj << -/D [1604 0 R /XYZ 149.705 753.953 null] +/D [1610 0 R /XYZ 149.705 753.953 null] >> % 360 0 obj << -/D [1604 0 R /XYZ 150.705 716.092 null] +/D [1610 0 R /XYZ 150.705 716.092 null] >> -% 1603 0 obj +% 1609 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1609 0 obj +% 1614 0 obj << /Type /Page -/Contents 1610 0 R -/Resources 1608 0 R +/Contents 1615 0 R +/Resources 1613 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R +/Parent 1605 0 R >> -% 1611 0 obj +% 1616 0 obj << -/D [1609 0 R /XYZ 98.895 753.953 null] +/D [1614 0 R /XYZ 98.895 753.953 null] >> -% 1612 0 obj +% 1617 0 obj << -/D [1609 0 R /XYZ 99.895 701.929 null] +/D [1614 0 R /XYZ 99.895 701.929 null] >> -% 1613 0 obj +% 1618 0 obj << -/D [1609 0 R /XYZ 99.895 680.684 null] +/D [1614 0 R /XYZ 99.895 680.684 null] >> -% 1608 0 obj +% 1613 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1618 0 obj +% 1623 0 obj << /Type /Page -/Contents 1619 0 R -/Resources 1617 0 R +/Contents 1624 0 R +/Resources 1622 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R -/Annots [ 1614 0 R 1615 0 R 1616 0 R ] +/Parent 1605 0 R +/Annots [ 1619 0 R 1620 0 R 1621 0 R ] >> -% 1614 0 obj +% 1619 0 obj << /Type /Annot /Subtype /Link @@ -21359,7 +21385,7 @@ stream /Rect [310.942 573.77 378 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1615 0 obj +% 1620 0 obj << /Type /Annot /Subtype /Link @@ -21367,7 +21393,7 @@ stream /Rect [322.33 482.114 398.384 494.174] /A << /S /GoTo /D (vdata) >> >> -% 1616 0 obj +% 1621 0 obj << /Type /Annot /Subtype /Link @@ -21375,37 +21401,37 @@ stream /Rect [225.165 380.495 301.219 392.555] /A << /S /GoTo /D (vdata) >> >> -% 1620 0 obj +% 1625 0 obj << -/D [1618 0 R /XYZ 149.705 753.953 null] +/D [1623 0 R /XYZ 149.705 753.953 null] >> % 364 0 obj << -/D [1618 0 R /XYZ 150.705 716.092 null] +/D [1623 0 R /XYZ 150.705 716.092 null] >> -% 1621 0 obj +% 1626 0 obj << -/D [1618 0 R /XYZ 150.705 278.482 null] +/D [1623 0 R /XYZ 150.705 278.482 null] >> -% 1622 0 obj +% 1627 0 obj << -/D [1618 0 R /XYZ 150.705 244.007 null] +/D [1623 0 R /XYZ 150.705 244.007 null] >> -% 1617 0 obj +% 1622 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1626 0 obj +% 1631 0 obj << /Type /Page -/Contents 1627 0 R -/Resources 1625 0 R +/Contents 1632 0 R +/Resources 1630 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R -/Annots [ 1623 0 R 1624 0 R ] +/Parent 1605 0 R +/Annots [ 1628 0 R 1629 0 R ] >> -% 1623 0 obj +% 1628 0 obj << /Type /Annot /Subtype /Link @@ -21413,7 +21439,7 @@ stream /Rect [174.355 561.815 250.41 573.875] /A << /S /GoTo /D (vdata) >> >> -% 1624 0 obj +% 1629 0 obj << /Type /Annot /Subtype /Link @@ -21421,50 +21447,50 @@ stream /Rect [260.133 482.114 327.191 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1628 0 obj +% 1633 0 obj << -/D [1626 0 R /XYZ 98.895 753.953 null] +/D [1631 0 R /XYZ 98.895 753.953 null] >> % 368 0 obj << -/D [1626 0 R /XYZ 99.895 716.092 null] +/D [1631 0 R /XYZ 99.895 716.092 null] >> -% 1625 0 obj +% 1630 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1630 0 obj +% 1635 0 obj << /Type /Page -/Contents 1631 0 R -/Resources 1629 0 R +/Contents 1636 0 R +/Resources 1634 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R +/Parent 1605 0 R >> -% 1632 0 obj +% 1637 0 obj << -/D [1630 0 R /XYZ 149.705 753.953 null] +/D [1635 0 R /XYZ 149.705 753.953 null] >> % 372 0 obj << -/D [1630 0 R /XYZ 150.705 716.092 null] +/D [1635 0 R /XYZ 150.705 716.092 null] >> -% 1629 0 obj +% 1634 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1635 0 obj +% 1640 0 obj << /Type /Page -/Contents 1636 0 R -/Resources 1634 0 R +/Contents 1641 0 R +/Resources 1639 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1633 0 R ] +/Parent 1643 0 R +/Annots [ 1638 0 R ] >> -% 1633 0 obj +% 1638 0 obj << /Type /Annot /Subtype /Link @@ -21472,54 +21498,54 @@ stream /Rect [291.943 483.894 359.001 495.954] /A << /S /GoTo /D (descdata) >> >> -% 1637 0 obj +% 1642 0 obj << -/D [1635 0 R /XYZ 98.895 753.953 null] +/D [1640 0 R /XYZ 98.895 753.953 null] >> % 376 0 obj << -/D [1635 0 R /XYZ 99.895 716.092 null] +/D [1640 0 R /XYZ 99.895 716.092 null] >> -% 1634 0 obj +% 1639 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1640 0 obj +% 1645 0 obj << /Type /Page -/Contents 1641 0 R -/Resources 1639 0 R +/Contents 1646 0 R +/Resources 1644 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R +/Parent 1643 0 R >> -% 1642 0 obj +% 1647 0 obj << -/D [1640 0 R /XYZ 149.705 753.953 null] +/D [1645 0 R /XYZ 149.705 753.953 null] >> -% 1643 0 obj +% 1648 0 obj << -/D [1640 0 R /XYZ 150.705 716.092 null] +/D [1645 0 R /XYZ 150.705 716.092 null] >> -% 1644 0 obj +% 1649 0 obj << -/D [1640 0 R /XYZ 150.705 687.379 null] +/D [1645 0 R /XYZ 150.705 687.379 null] >> -% 1639 0 obj +% 1644 0 obj << -/Font << /F62 667 0 R /F67 913 0 R >> +/Font << /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1647 0 obj +% 1652 0 obj << /Type /Page -/Contents 1648 0 R -/Resources 1646 0 R +/Contents 1653 0 R +/Resources 1651 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1645 0 R ] +/Parent 1643 0 R +/Annots [ 1650 0 R ] >> -% 1645 0 obj +% 1650 0 obj << /Type /Annot /Subtype /Link @@ -21527,29 +21553,29 @@ stream /Rect [291.943 482.114 359.001 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1649 0 obj +% 1654 0 obj << -/D [1647 0 R /XYZ 98.895 753.953 null] +/D [1652 0 R /XYZ 98.895 753.953 null] >> % 380 0 obj << -/D [1647 0 R /XYZ 99.895 716.092 null] +/D [1652 0 R /XYZ 99.895 716.092 null] >> -% 1646 0 obj +% 1651 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1652 0 obj +% 1657 0 obj << /Type /Page -/Contents 1653 0 R -/Resources 1651 0 R +/Contents 1658 0 R +/Resources 1656 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1650 0 R ] +/Parent 1643 0 R +/Annots [ 1655 0 R ] >> -% 1650 0 obj +% 1655 0 obj << /Type /Annot /Subtype /Link @@ -21557,33 +21583,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1654 0 obj +% 1659 0 obj << -/D [1652 0 R /XYZ 149.705 753.953 null] +/D [1657 0 R /XYZ 149.705 753.953 null] >> % 384 0 obj << -/D [1652 0 R /XYZ 150.705 716.092 null] +/D [1657 0 R /XYZ 150.705 716.092 null] >> -% 1655 0 obj +% 1660 0 obj << -/D [1652 0 R /XYZ 150.705 382.093 null] +/D [1657 0 R /XYZ 150.705 382.093 null] >> -% 1651 0 obj +% 1656 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1658 0 obj +% 1663 0 obj << /Type /Page -/Contents 1659 0 R -/Resources 1657 0 R +/Contents 1664 0 R +/Resources 1662 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1656 0 R ] +/Parent 1643 0 R +/Annots [ 1661 0 R ] >> -% 1656 0 obj +% 1661 0 obj << /Type /Annot /Subtype /Link @@ -21591,33 +21617,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1660 0 obj +% 1665 0 obj << -/D [1658 0 R /XYZ 98.895 753.953 null] +/D [1663 0 R /XYZ 98.895 753.953 null] >> % 388 0 obj << -/D [1658 0 R /XYZ 99.895 716.092 null] +/D [1663 0 R /XYZ 99.895 716.092 null] >> -% 1661 0 obj +% 1666 0 obj << -/D [1658 0 R /XYZ 99.895 258.556 null] +/D [1663 0 R /XYZ 99.895 258.556 null] >> -% 1657 0 obj +% 1662 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1664 0 obj +% 1669 0 obj << /Type /Page -/Contents 1665 0 R -/Resources 1663 0 R +/Contents 1670 0 R +/Resources 1668 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1662 0 R ] +/Parent 1643 0 R +/Annots [ 1667 0 R ] >> -% 1662 0 obj +% 1667 0 obj << /Type /Annot /Subtype /Link @@ -21625,33 +21651,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1666 0 obj +% 1671 0 obj << -/D [1664 0 R /XYZ 149.705 753.953 null] +/D [1669 0 R /XYZ 149.705 753.953 null] >> % 392 0 obj << -/D [1664 0 R /XYZ 150.705 716.092 null] +/D [1669 0 R /XYZ 150.705 716.092 null] >> -% 1667 0 obj +% 1672 0 obj << -/D [1664 0 R /XYZ 150.705 382.093 null] +/D [1669 0 R /XYZ 150.705 382.093 null] >> -% 1663 0 obj +% 1668 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1670 0 obj +% 1675 0 obj << /Type /Page -/Contents 1671 0 R -/Resources 1669 0 R +/Contents 1676 0 R +/Resources 1674 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1668 0 R ] +/Parent 1679 0 R +/Annots [ 1673 0 R ] >> -% 1668 0 obj +% 1673 0 obj << /Type /Annot /Subtype /Link @@ -21659,33 +21685,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1672 0 obj +% 1677 0 obj << -/D [1670 0 R /XYZ 98.895 753.953 null] +/D [1675 0 R /XYZ 98.895 753.953 null] >> % 396 0 obj << -/D [1670 0 R /XYZ 99.895 716.092 null] +/D [1675 0 R /XYZ 99.895 716.092 null] >> -% 1673 0 obj +% 1678 0 obj << -/D [1670 0 R /XYZ 99.895 258.556 null] +/D [1675 0 R /XYZ 99.895 258.556 null] >> -% 1669 0 obj +% 1674 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1677 0 obj +% 1682 0 obj << /Type /Page -/Contents 1678 0 R -/Resources 1676 0 R +/Contents 1683 0 R +/Resources 1681 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1675 0 R ] +/Parent 1679 0 R +/Annots [ 1680 0 R ] >> -% 1675 0 obj +% 1680 0 obj << /Type /Annot /Subtype /Link @@ -21693,37 +21719,37 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1679 0 obj +% 1684 0 obj << -/D [1677 0 R /XYZ 149.705 753.953 null] +/D [1682 0 R /XYZ 149.705 753.953 null] >> % 400 0 obj << -/D [1677 0 R /XYZ 150.705 716.092 null] +/D [1682 0 R /XYZ 150.705 716.092 null] >> -% 1680 0 obj +% 1685 0 obj << -/D [1677 0 R /XYZ 150.705 358.183 null] +/D [1682 0 R /XYZ 150.705 358.183 null] >> -% 1681 0 obj +% 1686 0 obj << -/D [1677 0 R /XYZ 150.705 314.403 null] +/D [1682 0 R /XYZ 150.705 314.403 null] >> -% 1676 0 obj +% 1681 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1684 0 obj +% 1689 0 obj << /Type /Page -/Contents 1685 0 R -/Resources 1683 0 R +/Contents 1690 0 R +/Resources 1688 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1682 0 R ] +/Parent 1679 0 R +/Annots [ 1687 0 R ] >> -% 1682 0 obj +% 1687 0 obj << /Type /Annot /Subtype /Link @@ -21731,37 +21757,37 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1686 0 obj +% 1691 0 obj << -/D [1684 0 R /XYZ 98.895 753.953 null] +/D [1689 0 R /XYZ 98.895 753.953 null] >> % 405 0 obj << -/D [1684 0 R /XYZ 99.895 716.092 null] +/D [1689 0 R /XYZ 99.895 716.092 null] >> -% 1687 0 obj +% 1692 0 obj << -/D [1684 0 R /XYZ 99.895 370.138 null] +/D [1689 0 R /XYZ 99.895 370.138 null] >> -% 1688 0 obj +% 1693 0 obj << -/D [1684 0 R /XYZ 99.895 338.313 null] +/D [1689 0 R /XYZ 99.895 338.313 null] >> -% 1683 0 obj +% 1688 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1691 0 obj +% 1696 0 obj << /Type /Page -/Contents 1692 0 R -/Resources 1690 0 R +/Contents 1697 0 R +/Resources 1695 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1689 0 R ] +/Parent 1679 0 R +/Annots [ 1694 0 R ] >> -% 1689 0 obj +% 1694 0 obj << /Type /Annot /Subtype /Link @@ -21769,58 +21795,58 @@ stream /Rect [342.753 491.971 420.271 504.031] /A << /S /GoTo /D (spdata) >> >> -% 1693 0 obj +% 1698 0 obj << -/D [1691 0 R /XYZ 149.705 753.953 null] +/D [1696 0 R /XYZ 149.705 753.953 null] >> % 409 0 obj << -/D [1691 0 R /XYZ 150.705 716.092 null] +/D [1696 0 R /XYZ 150.705 716.092 null] >> -% 1690 0 obj +% 1695 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F69 1460 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1465 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1695 0 obj +% 1700 0 obj << /Type /Page -/Contents 1696 0 R -/Resources 1694 0 R +/Contents 1701 0 R +/Resources 1699 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R +/Parent 1679 0 R >> -% 1697 0 obj +% 1702 0 obj << -/D [1695 0 R /XYZ 98.895 753.953 null] +/D [1700 0 R /XYZ 98.895 753.953 null] >> -% 1698 0 obj +% 1703 0 obj << -/D [1695 0 R /XYZ 99.895 496.698 null] +/D [1700 0 R /XYZ 99.895 496.698 null] >> -% 1699 0 obj +% 1704 0 obj << -/D [1695 0 R /XYZ 99.895 438.313 null] +/D [1700 0 R /XYZ 99.895 438.313 null] >> -% 1700 0 obj +% 1705 0 obj << -/D [1695 0 R /XYZ 99.895 418.388 null] +/D [1700 0 R /XYZ 99.895 418.388 null] >> -% 1694 0 obj +% 1699 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1705 0 obj +% 1710 0 obj << /Type /Page -/Contents 1706 0 R -/Resources 1704 0 R +/Contents 1711 0 R +/Resources 1709 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1701 0 R 1702 0 R 1703 0 R ] +/Parent 1679 0 R +/Annots [ 1706 0 R 1707 0 R 1708 0 R ] >> -% 1701 0 obj +% 1706 0 obj << /Type /Annot /Subtype /Link @@ -21828,7 +21854,7 @@ stream /Rect [342.753 527.942 420.271 540.002] /A << /S /GoTo /D (spdata) >> >> -% 1702 0 obj +% 1707 0 obj << /Type /Annot /Subtype /Link @@ -21836,26 +21862,10 @@ stream /Rect [342.753 460.196 409.811 472.256] /A << /S /GoTo /D (descdata) >> >> -% 1703 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 404.405 438.184 416.465] -/A << /S /GoTo /D (precdata) >> ->> -% 1707 0 obj -<< -/D [1705 0 R /XYZ 149.705 753.953 null] ->> -% 413 0 obj -<< -/D [1705 0 R /XYZ 150.705 716.092 null] ->> endstream endobj -1711 0 obj +1716 0 obj << /Length 5626 >> @@ -21937,7 +21947,7 @@ ET endstream endobj -1716 0 obj +1721 0 obj << /Length 7300 >> @@ -22045,7 +22055,7 @@ ET endstream endobj -1729 0 obj +1734 0 obj << /Length 171 >> @@ -22061,7 +22071,7 @@ ET endstream endobj -1733 0 obj +1738 0 obj << /Length 5510 >> @@ -22135,7 +22145,7 @@ ET endstream endobj -1739 0 obj +1744 0 obj << /Length 4457 >> @@ -22191,7 +22201,7 @@ ET endstream endobj -1745 0 obj +1750 0 obj << /Length 4180 >> @@ -22244,7 +22254,7 @@ ET endstream endobj -1752 0 obj +1757 0 obj << /Length 2476 >> @@ -22302,7 +22312,7 @@ ET endstream endobj -1757 0 obj +1762 0 obj << /Length 3337 >> @@ -22364,7 +22374,7 @@ ET endstream endobj -1761 0 obj +1766 0 obj << /Length 1155 >> @@ -22401,7 +22411,7 @@ ET endstream endobj -1765 0 obj +1770 0 obj << /Length 1388 >> @@ -22438,7 +22448,7 @@ ET endstream endobj -1769 0 obj +1774 0 obj << /Length 1283 >> @@ -22475,7 +22485,7 @@ ET endstream endobj -1773 0 obj +1778 0 obj << /Length 5526 >> @@ -22531,7 +22541,7 @@ ET endstream endobj -1777 0 obj +1782 0 obj << /Length 5329 >> @@ -22657,7 +22667,7 @@ ET endstream endobj -1786 0 obj +1791 0 obj << /Length 5829 >> @@ -22717,7 +22727,7 @@ ET endstream endobj -1790 0 obj +1795 0 obj << /Length 4964 >> @@ -22840,7 +22850,7 @@ ET endstream endobj -1797 0 obj +1802 0 obj << /Length 5548 >> @@ -22896,7 +22906,7 @@ ET endstream endobj -1801 0 obj +1806 0 obj << /Length 5227 >> @@ -23022,7 +23032,7 @@ ET endstream endobj -1808 0 obj +1813 0 obj << /Length 5813 >> @@ -23082,7 +23092,7 @@ ET endstream endobj -1812 0 obj +1817 0 obj << /Length 4946 >> @@ -23205,48 +23215,43 @@ ET endstream endobj -1708 0 obj +1713 0 obj << /Type /ObjStm /N 100 -/First 970 -/Length 9209 ->> -stream -1704 0 1710 107 1712 225 417 283 1709 340 1715 447 1717 565 1718 624 1719 683 1720 742 -1721 801 1722 860 1723 919 1724 978 1725 1037 1726 1096 1714 1155 1728 1275 1730 1393 421 1451 -1727 1508 1732 1589 1734 1707 425 1766 1735 1824 1736 1883 1731 1942 1738 2075 1740 2193 429 2251 -1741 2308 1742 2365 1737 2421 1744 2554 1746 2672 433 2731 1747 2789 1748 2848 1749 2907 1743 2966 -1751 3099 1753 3217 437 3275 1750 3332 1756 3426 1758 3544 441 3603 1755 3661 1760 3781 1762 3899 -445 3957 1759 4014 1764 4108 1766 4226 449 4285 1763 4343 1768 4437 1770 4555 453 4613 1767 4670 -1772 4764 1774 4882 457 4941 1771 4999 1776 5146 1778 5264 1779 5322 1780 5380 1781 5438 1775 5496 -1785 5633 1787 5751 461 5810 1784 5868 1789 6015 1791 6133 1792 6191 1793 6249 1794 6307 1788 6365 -1796 6502 1798 6620 465 6679 1795 6737 1800 6884 1802 7002 1803 7060 1804 7118 1805 7176 1799 7233 -1807 7370 1809 7488 469 7547 1806 7605 1811 7752 1813 7870 1814 7928 1815 7986 1816 8044 1810 8102 -% 1704 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] +/First 971 +/Length 9221 >> -% 1710 0 obj +stream +1708 0 1712 147 413 206 1709 264 1715 371 1717 489 417 547 1714 604 1720 711 1722 829 +1723 888 1724 947 1725 1006 1726 1065 1727 1124 1728 1183 1729 1242 1730 1301 1731 1360 1719 1419 +1733 1539 1735 1657 421 1715 1732 1772 1737 1853 1739 1971 425 2030 1740 2088 1741 2147 1736 2206 +1743 2339 1745 2457 429 2515 1746 2572 1747 2629 1742 2685 1749 2818 1751 2936 433 2995 1752 3053 +1753 3112 1754 3171 1748 3230 1756 3363 1758 3481 437 3539 1755 3596 1761 3690 1763 3808 441 3867 +1760 3925 1765 4045 1767 4163 445 4221 1764 4278 1769 4372 1771 4490 449 4549 1768 4607 1773 4701 +1775 4819 453 4877 1772 4934 1777 5028 1779 5146 457 5205 1776 5263 1781 5410 1783 5528 1784 5586 +1785 5644 1786 5702 1780 5760 1790 5897 1792 6015 461 6074 1789 6132 1794 6279 1796 6397 1797 6455 +1798 6513 1799 6571 1793 6629 1801 6766 1803 6884 465 6943 1800 7001 1805 7148 1807 7266 1808 7324 +1809 7382 1810 7440 1804 7497 1812 7634 1814 7752 469 7811 1811 7869 1816 8016 1818 8134 1819 8192 +% 1708 0 obj << -/Type /Page -/Contents 1711 0 R -/Resources 1709 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.126 404.405 438.184 416.465] +/A << /S /GoTo /D (precdata) >> >> % 1712 0 obj << -/D [1710 0 R /XYZ 98.895 753.953 null] +/D [1710 0 R /XYZ 149.705 753.953 null] >> -% 417 0 obj +% 413 0 obj << -/D [1710 0 R /XYZ 99.895 716.092 null] +/D [1710 0 R /XYZ 150.705 716.092 null] >> % 1709 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> % 1715 0 obj @@ -23255,474 +23260,482 @@ stream /Contents 1716 0 R /Resources 1714 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1718 0 R >> % 1717 0 obj << -/D [1715 0 R /XYZ 149.705 753.953 null] +/D [1715 0 R /XYZ 98.895 753.953 null] >> -% 1718 0 obj +% 417 0 obj << -/D [1715 0 R /XYZ 150.705 701.929 null] +/D [1715 0 R /XYZ 99.895 716.092 null] >> -% 1719 0 obj +% 1714 0 obj << -/D [1715 0 R /XYZ 150.705 668.729 null] +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/ProcSet [ /PDF /Text ] >> % 1720 0 obj << -/D [1715 0 R /XYZ 150.705 624.894 null] ->> -% 1721 0 obj -<< -/D [1715 0 R /XYZ 150.705 555.872 null] +/Type /Page +/Contents 1721 0 R +/Resources 1719 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1718 0 R >> % 1722 0 obj << -/D [1715 0 R /XYZ 150.705 500.082 null] +/D [1720 0 R /XYZ 149.705 753.953 null] >> % 1723 0 obj << -/D [1715 0 R /XYZ 150.705 468.201 null] +/D [1720 0 R /XYZ 150.705 701.929 null] >> % 1724 0 obj << -/D [1715 0 R /XYZ 150.705 425.023 null] +/D [1720 0 R /XYZ 150.705 668.729 null] >> % 1725 0 obj << -/D [1715 0 R /XYZ 150.705 382.522 null] +/D [1720 0 R /XYZ 150.705 624.894 null] >> % 1726 0 obj << -/D [1715 0 R /XYZ 150.705 354.627 null] +/D [1720 0 R /XYZ 150.705 555.872 null] >> -% 1714 0 obj +% 1727 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R >> -/ProcSet [ /PDF /Text ] +/D [1720 0 R /XYZ 150.705 500.082 null] >> % 1728 0 obj << +/D [1720 0 R /XYZ 150.705 468.201 null] +>> +% 1729 0 obj +<< +/D [1720 0 R /XYZ 150.705 425.023 null] +>> +% 1730 0 obj +<< +/D [1720 0 R /XYZ 150.705 382.522 null] +>> +% 1731 0 obj +<< +/D [1720 0 R /XYZ 150.705 354.627 null] +>> +% 1719 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1733 0 obj +<< /Type /Page -/Contents 1729 0 R -/Resources 1727 0 R +/Contents 1734 0 R +/Resources 1732 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1718 0 R >> -% 1730 0 obj +% 1735 0 obj << -/D [1728 0 R /XYZ 98.895 753.953 null] +/D [1733 0 R /XYZ 98.895 753.953 null] >> % 421 0 obj << -/D [1728 0 R /XYZ 99.895 716.092 null] +/D [1733 0 R /XYZ 99.895 716.092 null] >> -% 1727 0 obj +% 1732 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1732 0 obj +% 1737 0 obj << /Type /Page -/Contents 1733 0 R -/Resources 1731 0 R +/Contents 1738 0 R +/Resources 1736 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1718 0 R >> -% 1734 0 obj +% 1739 0 obj << -/D [1732 0 R /XYZ 149.705 753.953 null] +/D [1737 0 R /XYZ 149.705 753.953 null] >> % 425 0 obj << -/D [1732 0 R /XYZ 150.705 716.092 null] +/D [1737 0 R /XYZ 150.705 716.092 null] >> -% 1735 0 obj +% 1740 0 obj << -/D [1732 0 R /XYZ 150.705 222.691 null] +/D [1737 0 R /XYZ 150.705 222.691 null] >> -% 1736 0 obj +% 1741 0 obj << -/D [1732 0 R /XYZ 150.705 200.171 null] +/D [1737 0 R /XYZ 150.705 200.171 null] >> -% 1731 0 obj +% 1736 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F93 915 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1738 0 obj +% 1743 0 obj << /Type /Page -/Contents 1739 0 R -/Resources 1737 0 R +/Contents 1744 0 R +/Resources 1742 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1718 0 R >> -% 1740 0 obj +% 1745 0 obj << -/D [1738 0 R /XYZ 98.895 753.953 null] +/D [1743 0 R /XYZ 98.895 753.953 null] >> % 429 0 obj << -/D [1738 0 R /XYZ 99.895 716.092 null] +/D [1743 0 R /XYZ 99.895 716.092 null] >> -% 1741 0 obj +% 1746 0 obj << -/D [1738 0 R /XYZ 99.895 348.22 null] +/D [1743 0 R /XYZ 99.895 348.22 null] >> -% 1742 0 obj +% 1747 0 obj << -/D [1738 0 R /XYZ 99.895 313.8 null] +/D [1743 0 R /XYZ 99.895 313.8 null] >> -% 1737 0 obj +% 1742 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1744 0 obj +% 1749 0 obj << /Type /Page -/Contents 1745 0 R -/Resources 1743 0 R +/Contents 1750 0 R +/Resources 1748 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1718 0 R >> -% 1746 0 obj +% 1751 0 obj << -/D [1744 0 R /XYZ 149.705 753.953 null] +/D [1749 0 R /XYZ 149.705 753.953 null] >> % 433 0 obj << -/D [1744 0 R /XYZ 150.705 716.092 null] +/D [1749 0 R /XYZ 150.705 716.092 null] >> -% 1747 0 obj +% 1752 0 obj << -/D [1744 0 R /XYZ 150.705 441.869 null] +/D [1749 0 R /XYZ 150.705 441.869 null] >> -% 1748 0 obj +% 1753 0 obj << -/D [1744 0 R /XYZ 150.705 395.439 null] +/D [1749 0 R /XYZ 150.705 395.439 null] >> -% 1749 0 obj +% 1754 0 obj << -/D [1744 0 R /XYZ 150.705 363.559 null] +/D [1749 0 R /XYZ 150.705 363.559 null] >> -% 1743 0 obj +% 1748 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1751 0 obj +% 1756 0 obj << /Type /Page -/Contents 1752 0 R -/Resources 1750 0 R +/Contents 1757 0 R +/Resources 1755 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1759 0 R >> -% 1753 0 obj +% 1758 0 obj << -/D [1751 0 R /XYZ 98.895 753.953 null] +/D [1756 0 R /XYZ 98.895 753.953 null] >> % 437 0 obj << -/D [1751 0 R /XYZ 99.895 716.092 null] +/D [1756 0 R /XYZ 99.895 716.092 null] >> -% 1750 0 obj +% 1755 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1756 0 obj +% 1761 0 obj << /Type /Page -/Contents 1757 0 R -/Resources 1755 0 R +/Contents 1762 0 R +/Resources 1760 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1759 0 R >> -% 1758 0 obj +% 1763 0 obj << -/D [1756 0 R /XYZ 149.705 753.953 null] +/D [1761 0 R /XYZ 149.705 753.953 null] >> % 441 0 obj << -/D [1756 0 R /XYZ 150.705 716.092 null] +/D [1761 0 R /XYZ 150.705 716.092 null] >> -% 1755 0 obj +% 1760 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1760 0 obj +% 1765 0 obj << /Type /Page -/Contents 1761 0 R -/Resources 1759 0 R +/Contents 1766 0 R +/Resources 1764 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1759 0 R >> -% 1762 0 obj +% 1767 0 obj << -/D [1760 0 R /XYZ 98.895 753.953 null] +/D [1765 0 R /XYZ 98.895 753.953 null] >> % 445 0 obj << -/D [1760 0 R /XYZ 99.895 716.092 null] +/D [1765 0 R /XYZ 99.895 716.092 null] >> -% 1759 0 obj +% 1764 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1764 0 obj +% 1769 0 obj << /Type /Page -/Contents 1765 0 R -/Resources 1763 0 R +/Contents 1770 0 R +/Resources 1768 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1759 0 R >> -% 1766 0 obj +% 1771 0 obj << -/D [1764 0 R /XYZ 149.705 753.953 null] +/D [1769 0 R /XYZ 149.705 753.953 null] >> % 449 0 obj << -/D [1764 0 R /XYZ 150.705 716.092 null] +/D [1769 0 R /XYZ 150.705 716.092 null] >> -% 1763 0 obj +% 1768 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1768 0 obj +% 1773 0 obj << /Type /Page -/Contents 1769 0 R -/Resources 1767 0 R +/Contents 1774 0 R +/Resources 1772 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1759 0 R >> -% 1770 0 obj +% 1775 0 obj << -/D [1768 0 R /XYZ 98.895 753.953 null] +/D [1773 0 R /XYZ 98.895 753.953 null] >> % 453 0 obj << -/D [1768 0 R /XYZ 99.895 716.092 null] +/D [1773 0 R /XYZ 99.895 716.092 null] >> -% 1767 0 obj +% 1772 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1772 0 obj +% 1777 0 obj << /Type /Page -/Contents 1773 0 R -/Resources 1771 0 R +/Contents 1778 0 R +/Resources 1776 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1759 0 R >> -% 1774 0 obj +% 1779 0 obj << -/D [1772 0 R /XYZ 149.705 753.953 null] +/D [1777 0 R /XYZ 149.705 753.953 null] >> % 457 0 obj << -/D [1772 0 R /XYZ 150.705 716.092 null] +/D [1777 0 R /XYZ 150.705 716.092 null] >> -% 1771 0 obj +% 1776 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1776 0 obj +% 1781 0 obj << /Type /Page -/Contents 1777 0 R -/Resources 1775 0 R +/Contents 1782 0 R +/Resources 1780 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1788 0 R >> -% 1778 0 obj +% 1783 0 obj << -/D [1776 0 R /XYZ 98.895 753.953 null] +/D [1781 0 R /XYZ 98.895 753.953 null] >> -% 1779 0 obj +% 1784 0 obj << -/D [1776 0 R /XYZ 99.895 528.579 null] +/D [1781 0 R /XYZ 99.895 528.579 null] >> -% 1780 0 obj +% 1785 0 obj << -/D [1776 0 R /XYZ 99.895 494.104 null] +/D [1781 0 R /XYZ 99.895 494.104 null] >> -% 1781 0 obj +% 1786 0 obj << -/D [1776 0 R /XYZ 99.895 403.265 null] +/D [1781 0 R /XYZ 99.895 403.265 null] >> -% 1775 0 obj +% 1780 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> /ProcSet [ /PDF /Text ] >> -% 1785 0 obj +% 1790 0 obj << /Type /Page -/Contents 1786 0 R -/Resources 1784 0 R +/Contents 1791 0 R +/Resources 1789 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1788 0 R >> -% 1787 0 obj +% 1792 0 obj << -/D [1785 0 R /XYZ 149.705 753.953 null] +/D [1790 0 R /XYZ 149.705 753.953 null] >> % 461 0 obj << -/D [1785 0 R /XYZ 150.705 716.092 null] +/D [1790 0 R /XYZ 150.705 716.092 null] >> -% 1784 0 obj +% 1789 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1789 0 obj +% 1794 0 obj << /Type /Page -/Contents 1790 0 R -/Resources 1788 0 R +/Contents 1795 0 R +/Resources 1793 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1788 0 R >> -% 1791 0 obj +% 1796 0 obj << -/D [1789 0 R /XYZ 98.895 753.953 null] +/D [1794 0 R /XYZ 98.895 753.953 null] >> -% 1792 0 obj +% 1797 0 obj << -/D [1789 0 R /XYZ 99.895 552.489 null] +/D [1794 0 R /XYZ 99.895 552.489 null] >> -% 1793 0 obj +% 1798 0 obj << -/D [1789 0 R /XYZ 99.895 518.014 null] +/D [1794 0 R /XYZ 99.895 518.014 null] >> -% 1794 0 obj +% 1799 0 obj << -/D [1789 0 R /XYZ 99.895 427.175 null] +/D [1794 0 R /XYZ 99.895 427.175 null] >> -% 1788 0 obj +% 1793 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> /ProcSet [ /PDF /Text ] >> -% 1796 0 obj +% 1801 0 obj << /Type /Page -/Contents 1797 0 R -/Resources 1795 0 R +/Contents 1802 0 R +/Resources 1800 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1788 0 R >> -% 1798 0 obj +% 1803 0 obj << -/D [1796 0 R /XYZ 149.705 753.953 null] +/D [1801 0 R /XYZ 149.705 753.953 null] >> % 465 0 obj << -/D [1796 0 R /XYZ 150.705 716.092 null] +/D [1801 0 R /XYZ 150.705 716.092 null] >> -% 1795 0 obj +% 1800 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1800 0 obj +% 1805 0 obj << /Type /Page -/Contents 1801 0 R -/Resources 1799 0 R +/Contents 1806 0 R +/Resources 1804 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1788 0 R >> -% 1802 0 obj +% 1807 0 obj << -/D [1800 0 R /XYZ 98.895 753.953 null] +/D [1805 0 R /XYZ 98.895 753.953 null] >> -% 1803 0 obj +% 1808 0 obj << -/D [1800 0 R /XYZ 99.895 540.534 null] +/D [1805 0 R /XYZ 99.895 540.534 null] >> -% 1804 0 obj +% 1809 0 obj << -/D [1800 0 R /XYZ 99.895 506.059 null] +/D [1805 0 R /XYZ 99.895 506.059 null] >> -% 1805 0 obj +% 1810 0 obj << -/D [1800 0 R /XYZ 99.895 415.22 null] +/D [1805 0 R /XYZ 99.895 415.22 null] >> -% 1799 0 obj +% 1804 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> /ProcSet [ /PDF /Text ] >> -% 1807 0 obj +% 1812 0 obj << /Type /Page -/Contents 1808 0 R -/Resources 1806 0 R +/Contents 1813 0 R +/Resources 1811 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1788 0 R >> -% 1809 0 obj +% 1814 0 obj << -/D [1807 0 R /XYZ 149.705 753.953 null] +/D [1812 0 R /XYZ 149.705 753.953 null] >> % 469 0 obj << -/D [1807 0 R /XYZ 150.705 716.092 null] +/D [1812 0 R /XYZ 150.705 716.092 null] >> -% 1806 0 obj +% 1811 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1811 0 obj +% 1816 0 obj << /Type /Page -/Contents 1812 0 R -/Resources 1810 0 R +/Contents 1817 0 R +/Resources 1815 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1822 0 R >> -% 1813 0 obj -<< -/D [1811 0 R /XYZ 98.895 753.953 null] ->> -% 1814 0 obj -<< -/D [1811 0 R /XYZ 99.895 552.489 null] ->> -% 1815 0 obj -<< -/D [1811 0 R /XYZ 99.895 518.014 null] ->> -% 1816 0 obj +% 1818 0 obj << -/D [1811 0 R /XYZ 99.895 427.175 null] +/D [1816 0 R /XYZ 98.895 753.953 null] >> -% 1810 0 obj +% 1819 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> -/ProcSet [ /PDF /Text ] +/D [1816 0 R /XYZ 99.895 552.489 null] >> endstream endobj -1820 0 obj +1826 0 obj << /Length 5616 >> @@ -23778,7 +23791,7 @@ ET endstream endobj -1825 0 obj +1830 0 obj << /Length 5225 >> @@ -23902,7 +23915,7 @@ ET endstream endobj -1832 0 obj +1837 0 obj << /Length 5619 >> @@ -23958,7 +23971,7 @@ ET endstream endobj -1836 0 obj +1841 0 obj << /Length 5262 >> @@ -24084,7 +24097,7 @@ ET endstream endobj -1843 0 obj +1848 0 obj << /Length 5776 >> @@ -24144,7 +24157,7 @@ ET endstream endobj -1847 0 obj +1852 0 obj << /Length 6252 >> @@ -24280,7 +24293,7 @@ ET endstream endobj -1858 0 obj +1863 0 obj << /Length 5352 >> @@ -24337,7 +24350,7 @@ ET endstream endobj -1863 0 obj +1868 0 obj << /Length 5356 >> @@ -24393,7 +24406,7 @@ ET endstream endobj -1870 0 obj +1875 0 obj << /Length 6241 >> @@ -24417,7 +24430,7 @@ ET endstream endobj -1876 0 obj +1881 0 obj << /Length 10302 >> @@ -24868,7 +24881,7 @@ ET endstream endobj -1880 0 obj +1885 0 obj << /Length 3570 >> @@ -24979,7 +24992,7 @@ ET endstream endobj -1886 0 obj +1891 0 obj << /Length 1332 >> @@ -25022,7 +25035,7 @@ ET endstream endobj -1893 0 obj +1898 0 obj << /Length 1526 >> @@ -25079,7 +25092,7 @@ ET endstream endobj -1899 0 obj +1904 0 obj << /Length 2016 >> @@ -25150,7 +25163,7 @@ ET endstream endobj -1905 0 obj +1910 0 obj << /Length 507 >> @@ -25166,7 +25179,7 @@ ET endstream endobj -1910 0 obj +1915 0 obj << /Length 4553 >> @@ -25250,7 +25263,7 @@ ET endstream endobj -1917 0 obj +1922 0 obj << /Length 4948 >> @@ -25338,7 +25351,7 @@ ET endstream endobj -1924 0 obj +1929 0 obj << /Length 3542 >> @@ -25428,242 +25441,255 @@ ET endstream endobj -1822 0 obj +1823 0 obj << /Type /ObjStm /N 100 -/First 972 -/Length 9404 ->> -stream -1819 0 1821 118 473 177 1818 235 1824 382 1826 500 1827 558 1828 616 1829 674 1823 732 -1831 869 1833 987 477 1046 1830 1104 1835 1251 1837 1369 1838 1427 1839 1485 1840 1543 1834 1601 -1842 1738 1844 1856 481 1915 1841 1973 1846 2120 1848 2238 1849 2296 1850 2354 1852 2411 1853 2469 -1854 2527 1845 2585 1857 2764 1859 2882 485 2941 1860 2999 1856 3058 1862 3205 1864 3323 489 3381 -1865 3438 1861 3496 1869 3643 1866 3791 1867 3939 1871 4087 493 4146 1868 4204 1875 4298 1877 4416 -1872 4474 1873 4532 1874 4590 1879 4686 1881 4804 497 4863 1882 4921 1883 4980 1878 5039 1885 5120 -1887 5238 501 5296 1888 5353 1889 5410 1884 5468 1892 5549 1894 5667 505 5726 1895 5784 1896 5843 -1891 5902 1898 5983 1900 6101 509 6159 1901 6216 1902 6273 1897 6331 1904 6425 1906 6543 513 6602 -1903 6660 1909 6754 1907 6893 1911 7038 517 7096 1912 7153 1913 7211 1908 7269 1916 7363 1914 7502 -1918 7647 521 7706 1919 7764 1920 7823 1915 7882 1923 7976 1921 8115 1925 8260 525 8318 1926 8375 -% 1819 0 obj +/First 971 +/Length 9484 +>> +stream +1820 0 1821 58 1815 116 1825 253 1827 371 473 430 1824 488 1829 635 1831 753 1832 811 +1833 869 1834 927 1828 985 1836 1122 1838 1240 477 1299 1835 1357 1840 1504 1842 1622 1843 1680 +1844 1738 1845 1796 1839 1854 1847 1991 1849 2109 481 2168 1846 2226 1851 2373 1853 2491 1854 2549 +1855 2607 1857 2664 1858 2722 1859 2780 1850 2838 1862 3017 1864 3135 485 3194 1865 3252 1861 3311 +1867 3458 1869 3576 489 3634 1870 3691 1866 3749 1874 3896 1871 4044 1872 4192 1876 4340 493 4399 +1873 4457 1880 4551 1882 4669 1877 4727 1878 4785 1879 4843 1884 4939 1886 5057 497 5116 1887 5174 +1888 5233 1883 5292 1890 5373 1892 5491 501 5549 1893 5606 1894 5663 1889 5721 1897 5802 1899 5920 +505 5979 1900 6037 1901 6096 1896 6155 1903 6236 1905 6354 509 6412 1906 6469 1907 6526 1902 6584 +1909 6678 1911 6796 513 6855 1908 6913 1914 7007 1912 7146 1916 7291 517 7349 1917 7406 1918 7464 +1913 7522 1921 7616 1919 7755 1923 7900 521 7959 1924 8017 1925 8076 1920 8135 1928 8229 1926 8368 +% 1820 0 obj +<< +/D [1816 0 R /XYZ 99.895 518.014 null] +>> +% 1821 0 obj +<< +/D [1816 0 R /XYZ 99.895 427.175 null] +>> +% 1815 0 obj +<< +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1825 0 obj << /Type /Page -/Contents 1820 0 R -/Resources 1818 0 R +/Contents 1826 0 R +/Resources 1824 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1822 0 R >> -% 1821 0 obj +% 1827 0 obj << -/D [1819 0 R /XYZ 149.705 753.953 null] +/D [1825 0 R /XYZ 149.705 753.953 null] >> % 473 0 obj << -/D [1819 0 R /XYZ 150.705 716.092 null] +/D [1825 0 R /XYZ 150.705 716.092 null] >> -% 1818 0 obj +% 1824 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1824 0 obj +% 1829 0 obj << /Type /Page -/Contents 1825 0 R -/Resources 1823 0 R +/Contents 1830 0 R +/Resources 1828 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1822 0 R >> -% 1826 0 obj +% 1831 0 obj << -/D [1824 0 R /XYZ 98.895 753.953 null] +/D [1829 0 R /XYZ 98.895 753.953 null] >> -% 1827 0 obj +% 1832 0 obj << -/D [1824 0 R /XYZ 99.895 528.579 null] +/D [1829 0 R /XYZ 99.895 528.579 null] >> -% 1828 0 obj +% 1833 0 obj << -/D [1824 0 R /XYZ 99.895 494.104 null] +/D [1829 0 R /XYZ 99.895 494.104 null] >> -% 1829 0 obj +% 1834 0 obj << -/D [1824 0 R /XYZ 99.895 403.265 null] +/D [1829 0 R /XYZ 99.895 403.265 null] >> -% 1823 0 obj +% 1828 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> /ProcSet [ /PDF /Text ] >> -% 1831 0 obj +% 1836 0 obj << /Type /Page -/Contents 1832 0 R -/Resources 1830 0 R +/Contents 1837 0 R +/Resources 1835 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1822 0 R >> -% 1833 0 obj +% 1838 0 obj << -/D [1831 0 R /XYZ 149.705 753.953 null] +/D [1836 0 R /XYZ 149.705 753.953 null] >> % 477 0 obj << -/D [1831 0 R /XYZ 150.705 716.092 null] +/D [1836 0 R /XYZ 150.705 716.092 null] >> -% 1830 0 obj +% 1835 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1835 0 obj +% 1840 0 obj << /Type /Page -/Contents 1836 0 R -/Resources 1834 0 R +/Contents 1841 0 R +/Resources 1839 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1822 0 R >> -% 1837 0 obj +% 1842 0 obj << -/D [1835 0 R /XYZ 98.895 753.953 null] +/D [1840 0 R /XYZ 98.895 753.953 null] >> -% 1838 0 obj +% 1843 0 obj << -/D [1835 0 R /XYZ 99.895 528.579 null] +/D [1840 0 R /XYZ 99.895 528.579 null] >> -% 1839 0 obj +% 1844 0 obj << -/D [1835 0 R /XYZ 99.895 494.104 null] +/D [1840 0 R /XYZ 99.895 494.104 null] >> -% 1840 0 obj +% 1845 0 obj << -/D [1835 0 R /XYZ 99.895 403.265 null] +/D [1840 0 R /XYZ 99.895 403.265 null] >> -% 1834 0 obj +% 1839 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> /ProcSet [ /PDF /Text ] >> -% 1842 0 obj +% 1847 0 obj << /Type /Page -/Contents 1843 0 R -/Resources 1841 0 R +/Contents 1848 0 R +/Resources 1846 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1822 0 R >> -% 1844 0 obj +% 1849 0 obj << -/D [1842 0 R /XYZ 149.705 753.953 null] +/D [1847 0 R /XYZ 149.705 753.953 null] >> % 481 0 obj << -/D [1842 0 R /XYZ 150.705 716.092 null] +/D [1847 0 R /XYZ 150.705 716.092 null] >> -% 1841 0 obj +% 1846 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1846 0 obj +% 1851 0 obj << /Type /Page -/Contents 1847 0 R -/Resources 1845 0 R +/Contents 1852 0 R +/Resources 1850 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1860 0 R >> -% 1848 0 obj +% 1853 0 obj << -/D [1846 0 R /XYZ 98.895 753.953 null] +/D [1851 0 R /XYZ 98.895 753.953 null] >> -% 1849 0 obj +% 1854 0 obj << -/D [1846 0 R /XYZ 99.895 564.444 null] +/D [1851 0 R /XYZ 99.895 564.444 null] >> -% 1850 0 obj +% 1855 0 obj << -/D [1846 0 R /XYZ 99.895 529.97 null] +/D [1851 0 R /XYZ 99.895 529.97 null] >> -% 1852 0 obj +% 1857 0 obj << -/D [1846 0 R /XYZ 99.895 441.815 null] +/D [1851 0 R /XYZ 99.895 441.815 null] >> -% 1853 0 obj +% 1858 0 obj << -/D [1846 0 R /XYZ 99.895 409.935 null] +/D [1851 0 R /XYZ 99.895 409.935 null] >> -% 1854 0 obj +% 1859 0 obj << -/D [1846 0 R /XYZ 99.895 319.095 null] +/D [1851 0 R /XYZ 99.895 319.095 null] >> -% 1845 0 obj +% 1850 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R /F17 1851 0 R /F104 1254 0 R /F102 1016 0 R /F120 1782 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F17 1856 0 R /F104 1259 0 R /F102 1021 0 R /F120 1787 0 R >> /ProcSet [ /PDF /Text ] >> -% 1857 0 obj +% 1862 0 obj << /Type /Page -/Contents 1858 0 R -/Resources 1856 0 R +/Contents 1863 0 R +/Resources 1861 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1860 0 R >> -% 1859 0 obj +% 1864 0 obj << -/D [1857 0 R /XYZ 149.705 753.953 null] +/D [1862 0 R /XYZ 149.705 753.953 null] >> % 485 0 obj << -/D [1857 0 R /XYZ 150.705 716.092 null] +/D [1862 0 R /XYZ 150.705 716.092 null] >> -% 1860 0 obj +% 1865 0 obj << -/D [1857 0 R /XYZ 150.705 222.691 null] +/D [1862 0 R /XYZ 150.705 222.691 null] >> -% 1856 0 obj +% 1861 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F69 1460 0 R /F93 915 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F69 1465 0 R /F93 920 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1862 0 obj +% 1867 0 obj << /Type /Page -/Contents 1863 0 R -/Resources 1861 0 R +/Contents 1868 0 R +/Resources 1866 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1860 0 R >> -% 1864 0 obj +% 1869 0 obj << -/D [1862 0 R /XYZ 98.895 753.953 null] +/D [1867 0 R /XYZ 98.895 753.953 null] >> % 489 0 obj << -/D [1862 0 R /XYZ 99.895 716.092 null] +/D [1867 0 R /XYZ 99.895 716.092 null] >> -% 1865 0 obj +% 1870 0 obj << -/D [1862 0 R /XYZ 99.895 222.691 null] +/D [1867 0 R /XYZ 99.895 222.691 null] >> -% 1861 0 obj +% 1866 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1869 0 obj +% 1874 0 obj << /Type /Page -/Contents 1870 0 R -/Resources 1868 0 R +/Contents 1875 0 R +/Resources 1873 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R -/Annots [ 1866 0 R 1867 0 R ] +/Parent 1860 0 R +/Annots [ 1871 0 R 1872 0 R ] >> -% 1866 0 obj +% 1871 0 obj << /Type /Annot /Subtype /Link @@ -25671,7 +25697,7 @@ stream /Rect [196.011 499.949 202.985 512.009] /A << /S /GoTo /D (listing.5) >> >> -% 1867 0 obj +% 1872 0 obj << /Type /Annot /Subtype /Link @@ -25679,191 +25705,191 @@ stream /Rect [196.625 344.532 203.599 356.591] /A << /S /GoTo /D (listing.6) >> >> -% 1871 0 obj +% 1876 0 obj << -/D [1869 0 R /XYZ 149.705 753.953 null] +/D [1874 0 R /XYZ 149.705 753.953 null] >> % 493 0 obj << -/D [1869 0 R /XYZ 150.705 716.092 null] +/D [1874 0 R /XYZ 150.705 716.092 null] >> -% 1868 0 obj +% 1873 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1875 0 obj +% 1880 0 obj << /Type /Page -/Contents 1876 0 R -/Resources 1874 0 R +/Contents 1881 0 R +/Resources 1879 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1860 0 R >> -% 1877 0 obj +% 1882 0 obj << -/D [1875 0 R /XYZ 98.895 753.953 null] +/D [1880 0 R /XYZ 98.895 753.953 null] >> -% 1872 0 obj +% 1877 0 obj << -/D [1875 0 R /XYZ 99.895 411.235 null] +/D [1880 0 R /XYZ 99.895 411.235 null] >> -% 1873 0 obj +% 1878 0 obj << -/D [1875 0 R /XYZ 99.895 182.902 null] +/D [1880 0 R /XYZ 99.895 182.902 null] >> -% 1874 0 obj +% 1879 0 obj << -/Font << /F67 913 0 R /F120 1782 0 R /F62 667 0 R >> +/Font << /F67 918 0 R /F120 1787 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1879 0 obj +% 1884 0 obj << /Type /Page -/Contents 1880 0 R -/Resources 1878 0 R +/Contents 1885 0 R +/Resources 1883 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1860 0 R >> -% 1881 0 obj +% 1886 0 obj << -/D [1879 0 R /XYZ 149.705 753.953 null] +/D [1884 0 R /XYZ 149.705 753.953 null] >> % 497 0 obj << -/D [1879 0 R /XYZ 150.705 716.092 null] +/D [1884 0 R /XYZ 150.705 716.092 null] >> -% 1882 0 obj +% 1887 0 obj << -/D [1879 0 R /XYZ 150.705 690.058 null] +/D [1884 0 R /XYZ 150.705 690.058 null] >> -% 1883 0 obj +% 1888 0 obj << -/D [1879 0 R /XYZ 150.705 693.143 null] +/D [1884 0 R /XYZ 150.705 693.143 null] >> -% 1878 0 obj +% 1883 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1885 0 obj +% 1890 0 obj << /Type /Page -/Contents 1886 0 R -/Resources 1884 0 R +/Contents 1891 0 R +/Resources 1889 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1895 0 R >> -% 1887 0 obj +% 1892 0 obj << -/D [1885 0 R /XYZ 98.895 753.953 null] +/D [1890 0 R /XYZ 98.895 753.953 null] >> % 501 0 obj << -/D [1885 0 R /XYZ 99.895 716.092 null] +/D [1890 0 R /XYZ 99.895 716.092 null] >> -% 1888 0 obj +% 1893 0 obj << -/D [1885 0 R /XYZ 99.895 678.98 null] +/D [1890 0 R /XYZ 99.895 678.98 null] >> -% 1889 0 obj +% 1894 0 obj << -/D [1885 0 R /XYZ 99.895 679.195 null] +/D [1890 0 R /XYZ 99.895 679.195 null] >> -% 1884 0 obj +% 1889 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1892 0 obj +% 1897 0 obj << /Type /Page -/Contents 1893 0 R -/Resources 1891 0 R +/Contents 1898 0 R +/Resources 1896 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1895 0 R >> -% 1894 0 obj +% 1899 0 obj << -/D [1892 0 R /XYZ 149.705 753.953 null] +/D [1897 0 R /XYZ 149.705 753.953 null] >> % 505 0 obj << -/D [1892 0 R /XYZ 150.705 716.092 null] +/D [1897 0 R /XYZ 150.705 716.092 null] >> -% 1895 0 obj +% 1900 0 obj << -/D [1892 0 R /XYZ 150.705 689.963 null] +/D [1897 0 R /XYZ 150.705 689.963 null] >> -% 1896 0 obj +% 1901 0 obj << -/D [1892 0 R /XYZ 150.705 693.143 null] +/D [1897 0 R /XYZ 150.705 693.143 null] >> -% 1891 0 obj +% 1896 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1898 0 obj +% 1903 0 obj << /Type /Page -/Contents 1899 0 R -/Resources 1897 0 R +/Contents 1904 0 R +/Resources 1902 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1895 0 R >> -% 1900 0 obj +% 1905 0 obj << -/D [1898 0 R /XYZ 98.895 753.953 null] +/D [1903 0 R /XYZ 98.895 753.953 null] >> % 509 0 obj << -/D [1898 0 R /XYZ 99.895 716.092 null] +/D [1903 0 R /XYZ 99.895 716.092 null] >> -% 1901 0 obj +% 1906 0 obj << -/D [1898 0 R /XYZ 99.895 678.98 null] +/D [1903 0 R /XYZ 99.895 678.98 null] >> -% 1902 0 obj +% 1907 0 obj << -/D [1898 0 R /XYZ 99.895 679.195 null] +/D [1903 0 R /XYZ 99.895 679.195 null] >> -% 1897 0 obj +% 1902 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1904 0 obj +% 1909 0 obj << /Type /Page -/Contents 1905 0 R -/Resources 1903 0 R +/Contents 1910 0 R +/Resources 1908 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1895 0 R >> -% 1906 0 obj +% 1911 0 obj << -/D [1904 0 R /XYZ 149.705 753.953 null] +/D [1909 0 R /XYZ 149.705 753.953 null] >> % 513 0 obj << -/D [1904 0 R /XYZ 150.705 716.092 null] +/D [1909 0 R /XYZ 150.705 716.092 null] >> -% 1903 0 obj +% 1908 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1909 0 obj +% 1914 0 obj << /Type /Page -/Contents 1910 0 R -/Resources 1908 0 R +/Contents 1915 0 R +/Resources 1913 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R -/Annots [ 1907 0 R ] +/Parent 1895 0 R +/Annots [ 1912 0 R ] >> -% 1907 0 obj +% 1912 0 obj << /Type /Annot /Subtype /Link @@ -25871,37 +25897,37 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1911 0 obj +% 1916 0 obj << -/D [1909 0 R /XYZ 98.895 753.953 null] +/D [1914 0 R /XYZ 98.895 753.953 null] >> % 517 0 obj << -/D [1909 0 R /XYZ 99.895 716.092 null] +/D [1914 0 R /XYZ 99.895 716.092 null] >> -% 1912 0 obj +% 1917 0 obj << -/D [1909 0 R /XYZ 99.895 676.015 null] +/D [1914 0 R /XYZ 99.895 676.015 null] >> -% 1913 0 obj +% 1918 0 obj << -/D [1909 0 R /XYZ 99.895 679.195 null] +/D [1914 0 R /XYZ 99.895 679.195 null] >> -% 1908 0 obj +% 1913 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1916 0 obj +% 1921 0 obj << /Type /Page -/Contents 1917 0 R -/Resources 1915 0 R +/Contents 1922 0 R +/Resources 1920 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R -/Annots [ 1914 0 R ] +/Parent 1895 0 R +/Annots [ 1919 0 R ] >> -% 1914 0 obj +% 1919 0 obj << /Type /Annot /Subtype /Link @@ -25909,37 +25935,37 @@ stream /Rect [342.753 571.778 420.271 583.837] /A << /S /GoTo /D (spdata) >> >> -% 1918 0 obj +% 1923 0 obj << -/D [1916 0 R /XYZ 149.705 753.953 null] +/D [1921 0 R /XYZ 149.705 753.953 null] >> % 521 0 obj << -/D [1916 0 R /XYZ 150.705 716.092 null] +/D [1921 0 R /XYZ 150.705 716.092 null] >> -% 1919 0 obj +% 1924 0 obj << -/D [1916 0 R /XYZ 150.705 676.015 null] +/D [1921 0 R /XYZ 150.705 676.015 null] >> -% 1920 0 obj +% 1925 0 obj << -/D [1916 0 R /XYZ 150.705 679.195 null] +/D [1921 0 R /XYZ 150.705 679.195 null] >> -% 1915 0 obj +% 1920 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1923 0 obj +% 1928 0 obj << /Type /Page -/Contents 1924 0 R -/Resources 1922 0 R +/Contents 1929 0 R +/Resources 1927 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1921 0 R ] +/Parent 1933 0 R +/Annots [ 1926 0 R ] >> -% 1921 0 obj +% 1926 0 obj << /Type /Annot /Subtype /Link @@ -25947,22 +25973,10 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1925 0 obj -<< -/D [1923 0 R /XYZ 98.895 753.953 null] ->> -% 525 0 obj -<< -/D [1923 0 R /XYZ 99.895 716.092 null] ->> -% 1926 0 obj -<< -/D [1923 0 R /XYZ 99.895 678.98 null] ->> endstream endobj -1933 0 obj +1938 0 obj << /Length 4155 >> @@ -26059,7 +26073,7 @@ ET endstream endobj -1940 0 obj +1945 0 obj << /Length 7231 >> @@ -26246,7 +26260,7 @@ ET endstream endobj -1947 0 obj +1952 0 obj << /Length 7073 >> @@ -26423,7 +26437,7 @@ ET endstream endobj -1953 0 obj +1958 0 obj << /Length 655 >> @@ -26461,7 +26475,7 @@ ET endstream endobj -1957 0 obj +1962 0 obj << /Length 1109 >> @@ -26485,7 +26499,7 @@ ET endstream endobj -1963 0 obj +1968 0 obj << /Length 5016 >> @@ -26573,7 +26587,7 @@ ET endstream endobj -1973 0 obj +1978 0 obj << /Length 7572 >> @@ -26791,7 +26805,7 @@ ET endstream endobj -1977 0 obj +1982 0 obj << /Length 1021 >> @@ -26810,7 +26824,7 @@ ET endstream endobj -1985 0 obj +1990 0 obj << /Length 5673 >> @@ -26960,7 +26974,7 @@ ET endstream endobj -1990 0 obj +1995 0 obj << /Length 3387 >> @@ -27023,7 +27037,7 @@ ET endstream endobj -1994 0 obj +1999 0 obj << /Length 973 >> @@ -27064,7 +27078,7 @@ ET endstream endobj -2000 0 obj +2005 0 obj << /Length 2703 >> @@ -27141,23 +27155,23 @@ ET endstream endobj -2005 0 obj +2010 0 obj << -/Length 548 +/Length 534 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F62 9.9626 Tf 0 -22.702 Td [(In)-402(this)-403(chapter)-402(we)-403(pr)18(ovide)-402(r)18(outines)-403(for)-402(pr)18(econditioners)-402(and)-403(iterative)-402(meth-)]TJ 0 -11.955 Td [(ods.)-472(The)-304(interfaces)-304(for)-304(Krylov)-304(subspace)-303(methods)-304(ar)18(e)-304(available)-304(in)-304(the)-304(module)]TJ/F67 9.9626 Tf 0 -11.955 Td [(psb_krylov_mod)]TJ/F62 9.9626 Tf 73.225 0 Td [(.)]TJ +/F59 14.3462 Tf 150.705 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F62 9.9626 Tf 0 -22.702 Td [(In)-253(this)-252(chapter)-253(we)-252(pr)18(ovide)-253(r)18(outines)-253(for)-252(pr)18(econditioners)-253(and)-253(iterative)-252(methods.)]TJ 0 -11.955 Td [(The)-190(interfaces)-190(for)-190(iterative)-190(methods)-190(ar)18(e)-190(available)-190(in)-190(the)-190(module)]TJ/F67 9.9626 Tf 274.995 0 Td [(psb_linsolve_mod)]TJ/F62 9.9626 Tf 83.686 0 Td [(.)]TJ 0 g 0 G - 91.158 -568.734 Td [(158)]TJ + -194.298 -580.689 Td [(158)]TJ 0 g 0 G ET endstream endobj -2012 0 obj +2017 0 obj << /Length 8246 >> @@ -27307,7 +27321,7 @@ ET endstream endobj -2023 0 obj +2028 0 obj << /Length 7054 >> @@ -27447,7 +27461,7 @@ ET endstream endobj -2028 0 obj +2033 0 obj << /Length 4489 >> @@ -27514,277 +27528,207 @@ ET endstream endobj -2038 0 obj +2041 0 obj << -/Length 7598 +/Length 8623 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 706.042 Td [(12)-1000(Extensions)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-216(EXT)74(,)-217(CUDA)-216(and)-217(RSB)-216(subdir)18(ectories)-216(contains)-217(a)-216(set)-217(of)-216(extensions)-216(to)-217(the)-216(base)]TJ 0 -11.955 Td [(library)111(.)-678(The)-373(extensions)-373(pr)18(ovide)-372(additional)-373(storage)-373(formats)-373(beyond)-372(the)-373(ones)]TJ 0 -11.955 Td [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -19.102 Td [(SPGPU)]TJ -0 g 0 G -/F62 9.9626 Tf 39.292 0 Td [(a)-296(CUDA)-297(library)-296(originally)-296(published)-297(as)]TJ -0 1 0 0 k 0 1 0 0 K -/F67 9.9626 Tf 178.891 0 Td [(https://code.google.com/)]TJ -193.277 -11.955 Td [(p/spgpu/)]TJ -0 g 0 G -/F62 9.9626 Tf 46.128 0 Td [(and)-430(now)-430(included)-430(in)-431(t)1(he)]TJ/F67 9.9626 Tf 119.328 0 Td [(cuda)]TJ/F62 9.9626 Tf 25.207 0 Td [(subdir)74(,)-475(for)-430(computations)-430(on)]TJ -190.663 -11.955 Td [(NVIDIA)-250(GPUs;)]TJ -0 g 0 G -/F59 9.9626 Tf -24.906 -19.514 Td [(LIBRSB)]TJ -0 g 0 G -0 1 0 0 k 0 1 0 0 K -/F67 9.9626 Tf 41.514 0 Td [(http://sourceforge.net/projects/librsb/)]TJ -0 g 0 G -/F62 9.9626 Tf 203.983 0 Td [(,)-398(for)-368(computations)-368(on)]TJ -220.591 -11.955 Td [(multicor)18(e)-250(parallel)-250(machines.)]TJ -24.906 -19.102 Td [(The)-318(infrastr)8(uctur)18(e)-317(laid)-318(out)-317(in)-318(the)-318(base)-317(library)-318(to)-318(allow)-317(for)-318(these)-318(extensions)-317(is)]TJ 0 -11.956 Td [(detailed)-299(in)-299(the)-299(r)18(efer)18(ences)-299([)]TJ -1 0 0 rg 1 0 0 RG - [(20)]TJ -0 g 0 G - [(,)]TJ -1 0 0 rg 1 0 0 RG - [-299(21)]TJ -0 g 0 G - [(,)]TJ -1 0 0 rg 1 0 0 RG - [-299(10)]TJ -0 g 0 G - [(];)-324(the)-299(CUDA-speci\002c)-299(data)-299(formats)-299(ar)18(e)-299(de-)]TJ 0 -11.955 Td [(scribed)-250(in)-250([)]TJ -1 0 0 rg 1 0 0 RG - [(22)]TJ -0 g 0 G - [(].)]TJ/F59 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(A)-279(sample)-279(application)-279(using)-279(the)-279(PSBLAS)-279(extensions)-279(will)-279(contain)-279(the)-279(following)]TJ 0 -11.955 Td [(steps:)]TJ -0 g 0 G - 13.888 -19.102 Td [(\225)]TJ -0 g 0 G -/F67 9.9626 Tf 11.018 0 Td [(USE)]TJ/F62 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F67 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F62 9.9626 Tf 57.534 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_cuda_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(\051;)]TJ -0 g 0 G - -264.515 -19.514 Td [(\225)]TJ -0 g 0 G - [-500(Declar)18(e)-190(a)]TJ/F60 9.9626 Tf 53.1 0 Td [(mold)]TJ/F62 9.9626 Tf 21.818 0 Td [(variable)-190(of)-190(the)-190(necessary)-190(type)-190(\050e.g.)]TJ/F67 9.9626 Tf 151.361 0 Td [(psb_d_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf -319.867 -11.955 Td [(psb_d_hlg_sparse_mat)]TJ/F62 9.9626 Tf 104.606 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(psb_d_vect_cuda)]TJ/F62 9.9626 Tf 78.455 0 Td [(\051;)]TJ -0 g 0 G - -199.062 -19.514 Td [(\225)]TJ -0 g 0 G - [-500(Pass)-289(the)-290(mold)-289(variable)-290(to)-289(the)-290(base)-289(library)-289(interface)-290(wher)18(e)-289(needed)-290(to)-289(en-)]TJ 11.019 -11.955 Td [(sur)18(e)-250(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ -24.907 -19.102 Td [(Suppose)-366(you)-367(want)-366(to)-367(use)-367(the)-366(CUDA-enabled)-366(ELLP)92(ACK)-367(data)-366(str)8(uctur)18(e;)-425(you)]TJ 0 -11.955 Td [(would)-371(use)-370(a)-371(piece)-370(of)-371(code)-370(like)-371(this)-370(\050and)-371(don't)-370(for)18(get,)-401(you)-371(need)-370(CUDA-side)]TJ 0 -11.955 Td [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +/F59 11.9552 Tf 150.705 706.129 Td [(11.2)-1000(psb)]TJ ET q -1 0 0 1 150.705 120.326 cm -0 0 343.711 225.156 re f +1 0 0 1 204.216 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 153.694 334.821 Td [(program)]TJ -0 g 0 G - [-525(my_cuda_test)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.414 -10.959 Td [(use)]TJ -0 g 0 G - [-525(psb_base_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(use)]TJ -0 g 0 G - [-525(psb_util_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.958 Td [(use)]TJ -0 g 0 G - [-525(psb_ext_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(use)]TJ -0 g 0 G - [-525(psb_cuda_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ -0 g 0 G - [(\050psb_dspmat_type\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(agpu)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ -0 g 0 G - [(\050psb_d_vect_type\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(xg,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(bg)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -21.918 Td [(real)]TJ -0 g 0 G - [(\050psb_dpk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(xtmp\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ -0 g 0 G - [(\050psb_d_vect_cuda\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-3675(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(vmold)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ -0 g 0 G - [(\050psb_d_elg_sparse_mat\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +/F59 11.9552 Tf 207.803 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F62 9.9626 Tf -57.098 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F60 9.9626 Tf 110.849 -22.171 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F93 7.8896 Tf 3.589 0 Td [(+)]TJ/F62 7.5716 Tf 6.227 0 Td [(1)]TJ/F93 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F60 9.9626 Tf 11.535 0 Td [(M)]TJ/F91 7.8896 Tf 9.673 4.115 Td [(\000)]TJ/F62 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(b)]TJ/F91 10.3811 Tf 6.799 0 Td [(\000)]TJ/F60 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.811 -2.085 Td [(k)]TJ/F93 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F60 9.9626 Tf 16.637 0 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F62 9.9626 Tf 3.992 2.085 Td [(,)]TJ -230.665 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F60 9.9626 Tf 147.599 0 Td [(M)]TJ/F62 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.725 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F59 9.9626 Tf -14.944 -20.304 Td [(1)]TJ 0 g 0 G - [-525(aelg)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F62 9.9626 Tf 9.962 0 Td [(normwise)-222(backwar)18(d)-221(err)18(or)-222(in)-222(th)1(e)-222(in\002nity)-222(norm;)-231(the)-221(iteration)-222(is)-222(stopped)-221(when)]TJ/F60 9.9626 Tf 109.036 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 297.001 584.127 cm +[]0 d 0 J 0.398 w 0 0 m 74.372 0 l S +Q +BT +/F93 10.3811 Tf 297.125 574.802 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F60 9.9626 Tf 5.938 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F60 9.9626 Tf 11.048 0 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F93 10.3811 Tf 7.377 0 Td [(+)]TJ/F91 10.3811 Tf 10.255 0 Td [(k)]TJ/F60 9.9626 Tf 5.44 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F93 10.3811 Tf 5.439 0 Td [(\051)]TJ/F69 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ +/F59 9.9626 Tf -235.841 -32.142 Td [(2)]TJ 0 g 0 G - [(\050psb_ctxt_type\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 324.174 523.428 cm +[]0 d 0 J 0.398 w 0 0 m 20.025 0 l S +Q +BT +/F91 10.3811 Tf 324.299 514.103 Td [(k)]TJ/F60 9.9626 Tf 5.439 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +/F59 9.9626 Tf -208.667 -32.082 Td [(3)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F62 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 15.169 6.744 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 322.451 462.789 cm +[]0 d 0 J 0.398 w 0 0 m 23.472 0 l S +Q +BT +/F91 10.3811 Tf 322.575 453.464 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F62 7.5716 Tf 4 -1.744 Td [(0)]TJ/F91 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F62 9.9626 Tf -210.391 -32.083 Td [(The)-248(behaviour)-248(is)-248(contr)18(olled)-249(by)-248(the)-248(istop)-248(ar)18(gument)-248(\050see)-248(later\051.)-310(In)-248(the)-248(above)-248(for)18(-)]TJ 0 -11.955 Td [(mulae,)]TJ/F60 9.9626 Tf 32.809 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.304 1.96 Td [(is)-256(the)-256(tentative)-256(solution)-257(and)]TJ/F60 9.9626 Tf 125.144 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F93 10.3811 Tf 5.757 1.96 Td [(=)]TJ/F60 9.9626 Tf 11.201 0 Td [(b)]TJ/F91 10.3811 Tf 6.821 0 Td [(\000)]TJ/F60 9.9626 Tf 10.777 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(the)-256(corr)18(esponding)-256(r)18(esidual)]TJ -225.063 -11.955 Td [(at)-250(the)]TJ/F60 9.9626 Tf 27.083 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -18.186 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ +ET +q +1 0 0 1 201.407 386.32 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 205.52 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-112(o)-113(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +ET +q +1 0 0 1 384.896 386.32 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 388.859 386.121 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ 0 g 0 G - [-525(ctxt)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F59 9.9626 Tf -29.001 -28.653 Td [(T)90(ype:)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-6825(::)]TJ +/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F59 9.9626 Tf -29.828 -20.431 Td [(On)-250(Entry)]TJ 0 g 0 G - [-525(iam,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(np)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 0 -20.431 Td [(a)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -32.876 Td [(call)]TJ +/F62 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 178.414 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 257.028 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 363.206 256.829 Td [(Tspmat)]TJ +ET +q +1 0 0 1 395.216 257.028 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 398.354 256.829 Td [(type)]TJ 0 g 0 G - [-525(psb_init\050ctxt\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F62 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(call)]TJ +/F59 9.9626 Tf -268.57 -20.431 Td [(prec)]TJ 0 g 0 G - [-525(psb_info\050ctxt,iam,np\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F62 9.9626 Tf 24.348 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 188.777 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 363.206 188.577 Td [(prec)]TJ +ET +q +1 0 0 1 384.755 188.777 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 387.893 188.577 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(call)]TJ +/F62 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G - [-525(psb_cuda_init\050ctxt,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F59 9.9626 Tf -258.11 -20.431 Td [(b)]TJ 0 g 0 G - [-525(iam\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +/F62 9.9626 Tf 11.068 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 410.618 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 413.756 120.326 Td [(T)]TJ +ET +q +1 0 0 1 419.614 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 422.752 120.326 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 447.439 120.326 Td [(type)]TJ 0 g 0 G +/F62 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 151.98 -58.082 Td [(162)]TJ + -153.273 -29.888 Td [(162)]TJ 0 g 0 G ET endstream endobj -1929 0 obj +1934 0 obj << /Type /ObjStm /N 100 -/First 976 -/Length 11413 ->> -stream -1927 0 1922 58 1932 152 1930 291 1934 434 529 493 1935 551 1936 609 1931 668 1939 762 -1937 901 1941 1046 533 1104 1942 1161 1943 1219 1938 1277 1946 1399 1944 1538 1948 1680 537 1739 -1949 1797 1950 1856 1945 1915 1952 2037 1954 2155 1951 2213 1956 2296 1958 2414 541 2473 1955 2531 -1962 2625 1959 2773 1960 2920 1964 3068 545 3126 1965 3183 1961 3241 1972 3361 1967 3527 1968 3672 -1969 3818 1970 3965 1974 4112 549 4171 1971 4229 1976 4323 1978 4441 1975 4499 1984 4593 1979 4759 -1980 4904 1981 5047 1982 5193 1986 5337 553 5396 1983 5454 1989 5548 1987 5687 1991 5832 557 5890 -1988 5947 1993 6067 1995 6185 561 6244 1992 6302 1999 6396 1996 6544 1997 6689 2001 6836 565 6894 -1998 6951 2004 7045 2006 7163 569 7222 2003 7280 2011 7374 2007 7522 2008 7671 2013 7816 573 7874 -2014 7931 2015 7989 2016 8047 2017 8105 2010 8163 2022 8310 2009 8476 2018 8623 2019 8767 2020 8911 -2024 9056 2021 9115 2027 9262 2025 9401 2029 9545 2026 9603 2037 9710 2030 9903 2040 10079 2031 10254 -% 1927 0 obj +/First 971 +/Length 11010 +>> +stream +1930 0 525 58 1931 115 1932 172 1927 230 1937 324 1935 463 1939 606 529 665 1940 723 +1941 781 1936 840 1944 934 1942 1073 1946 1218 533 1276 1947 1333 1948 1391 1943 1449 1951 1571 +1949 1710 1953 1852 537 1911 1954 1969 1955 2028 1950 2087 1957 2209 1959 2327 1956 2385 1961 2468 +1963 2586 541 2645 1960 2703 1967 2797 1964 2945 1965 3092 1969 3240 545 3298 1970 3355 1966 3413 +1977 3533 1972 3699 1973 3844 1974 3990 1975 4137 1979 4284 549 4343 1976 4401 1981 4495 1983 4613 +1980 4671 1989 4765 1984 4931 1985 5076 1986 5219 1987 5365 1991 5509 553 5568 1988 5626 1994 5720 +1992 5859 1996 6004 557 6062 1993 6119 1998 6239 2000 6357 561 6416 1997 6474 2004 6568 2001 6716 +2002 6861 2006 7008 565 7066 2003 7123 2009 7217 2011 7335 569 7394 2008 7452 2016 7546 2012 7694 +2013 7843 2018 7988 573 8046 2019 8103 2020 8161 2021 8219 2022 8277 2015 8335 2027 8482 2014 8648 +2023 8795 2024 8939 2025 9083 2029 9228 2026 9287 2032 9434 2030 9573 2034 9717 2031 9775 2040 9882 +% 1930 0 obj << -/D [1923 0 R /XYZ 99.895 679.195 null] +/D [1928 0 R /XYZ 98.895 753.953 null] >> -% 1922 0 obj +% 525 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] +/D [1928 0 R /XYZ 99.895 716.092 null] +>> +% 1931 0 obj +<< +/D [1928 0 R /XYZ 99.895 678.98 null] >> % 1932 0 obj << +/D [1928 0 R /XYZ 99.895 679.195 null] +>> +% 1927 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1937 0 obj +<< /Type /Page -/Contents 1933 0 R -/Resources 1931 0 R +/Contents 1938 0 R +/Resources 1936 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1930 0 R ] +/Parent 1933 0 R +/Annots [ 1935 0 R ] >> -% 1930 0 obj +% 1935 0 obj << /Type /Annot /Subtype /Link @@ -27792,37 +27736,37 @@ stream /Rect [352.526 426.323 428.58 438.383] /A << /S /GoTo /D (vdata) >> >> -% 1934 0 obj +% 1939 0 obj << -/D [1932 0 R /XYZ 149.705 753.953 null] +/D [1937 0 R /XYZ 149.705 753.953 null] >> % 529 0 obj << -/D [1932 0 R /XYZ 150.705 716.092 null] +/D [1937 0 R /XYZ 150.705 716.092 null] >> -% 1935 0 obj +% 1940 0 obj << -/D [1932 0 R /XYZ 150.705 678.98 null] +/D [1937 0 R /XYZ 150.705 678.98 null] >> -% 1936 0 obj +% 1941 0 obj << -/D [1932 0 R /XYZ 150.705 679.195 null] +/D [1937 0 R /XYZ 150.705 679.195 null] >> -% 1931 0 obj +% 1936 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1939 0 obj +% 1944 0 obj << /Type /Page -/Contents 1940 0 R -/Resources 1938 0 R +/Contents 1945 0 R +/Resources 1943 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1937 0 R ] +/Parent 1933 0 R +/Annots [ 1942 0 R ] >> -% 1937 0 obj +% 1942 0 obj << /Type /Annot /Subtype /Link @@ -27830,37 +27774,37 @@ stream /Rect [291.943 574.778 369.462 586.838] /A << /S /GoTo /D (spdata) >> >> -% 1941 0 obj +% 1946 0 obj << -/D [1939 0 R /XYZ 98.895 753.953 null] +/D [1944 0 R /XYZ 98.895 753.953 null] >> % 533 0 obj << -/D [1939 0 R /XYZ 99.895 716.092 null] +/D [1944 0 R /XYZ 99.895 716.092 null] >> -% 1942 0 obj +% 1947 0 obj << -/D [1939 0 R /XYZ 99.895 679.441 null] +/D [1944 0 R /XYZ 99.895 679.441 null] >> -% 1943 0 obj +% 1948 0 obj << -/D [1939 0 R /XYZ 99.895 679.657 null] +/D [1944 0 R /XYZ 99.895 679.657 null] >> -% 1938 0 obj +% 1943 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F102 1016 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1021 0 R >> /ProcSet [ /PDF /Text ] >> -% 1946 0 obj +% 1951 0 obj << /Type /Page -/Contents 1947 0 R -/Resources 1945 0 R +/Contents 1952 0 R +/Resources 1950 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1944 0 R ] +/Parent 1933 0 R +/Annots [ 1949 0 R ] >> -% 1944 0 obj +% 1949 0 obj << /Type /Annot /Subtype /Link @@ -27868,75 +27812,75 @@ stream /Rect [452.361 574.59 528.415 586.65] /A << /S /GoTo /D (vdata) >> >> -% 1948 0 obj +% 1953 0 obj << -/D [1946 0 R /XYZ 149.705 753.953 null] +/D [1951 0 R /XYZ 149.705 753.953 null] >> % 537 0 obj << -/D [1946 0 R /XYZ 150.705 716.092 null] +/D [1951 0 R /XYZ 150.705 716.092 null] >> -% 1949 0 obj +% 1954 0 obj << -/D [1946 0 R /XYZ 150.705 679.413 null] +/D [1951 0 R /XYZ 150.705 679.413 null] >> -% 1950 0 obj +% 1955 0 obj << -/D [1946 0 R /XYZ 150.705 679.628 null] +/D [1951 0 R /XYZ 150.705 679.628 null] >> -% 1945 0 obj +% 1950 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F102 1016 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1021 0 R >> /ProcSet [ /PDF /Text ] >> -% 1952 0 obj +% 1957 0 obj << /Type /Page -/Contents 1953 0 R -/Resources 1951 0 R +/Contents 1958 0 R +/Resources 1956 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R +/Parent 1933 0 R >> -% 1954 0 obj +% 1959 0 obj << -/D [1952 0 R /XYZ 98.895 753.953 null] +/D [1957 0 R /XYZ 98.895 753.953 null] >> -% 1951 0 obj +% 1956 0 obj << -/Font << /F102 1016 0 R /F62 667 0 R >> +/Font << /F102 1021 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1956 0 obj +% 1961 0 obj << /Type /Page -/Contents 1957 0 R -/Resources 1955 0 R +/Contents 1962 0 R +/Resources 1960 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R +/Parent 1933 0 R >> -% 1958 0 obj +% 1963 0 obj << -/D [1956 0 R /XYZ 149.705 753.953 null] +/D [1961 0 R /XYZ 149.705 753.953 null] >> % 541 0 obj << -/D [1956 0 R /XYZ 150.705 716.092 null] +/D [1961 0 R /XYZ 150.705 716.092 null] >> -% 1955 0 obj +% 1960 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1962 0 obj +% 1967 0 obj << /Type /Page -/Contents 1963 0 R -/Resources 1961 0 R +/Contents 1968 0 R +/Resources 1966 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1959 0 R 1960 0 R ] +/Parent 1971 0 R +/Annots [ 1964 0 R 1965 0 R ] >> -% 1959 0 obj +% 1964 0 obj << /Type /Annot /Subtype /Link @@ -27944,7 +27888,7 @@ stream /Rect [320.317 442.264 387.374 454.323] /A << /S /GoTo /D (precdata) >> >> -% 1960 0 obj +% 1965 0 obj << /Type /Annot /Subtype /Link @@ -27952,33 +27896,33 @@ stream /Rect [171.257 352.6 177.533 366.303] /A << /S /GoTo /D (Hfootnote.4) >> >> -% 1964 0 obj +% 1969 0 obj << -/D [1962 0 R /XYZ 98.895 753.953 null] +/D [1967 0 R /XYZ 98.895 753.953 null] >> % 545 0 obj << -/D [1962 0 R /XYZ 99.895 716.092 null] +/D [1967 0 R /XYZ 99.895 716.092 null] >> -% 1965 0 obj +% 1970 0 obj << -/D [1962 0 R /XYZ 114.242 129.79 null] +/D [1967 0 R /XYZ 114.242 129.79 null] >> -% 1961 0 obj +% 1966 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1972 0 obj +% 1977 0 obj << /Type /Page -/Contents 1973 0 R -/Resources 1971 0 R +/Contents 1978 0 R +/Resources 1976 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1967 0 R 1968 0 R 1969 0 R 1970 0 R ] +/Parent 1971 0 R +/Annots [ 1972 0 R 1973 0 R 1974 0 R 1975 0 R ] >> -% 1967 0 obj +% 1972 0 obj << /Type /Annot /Subtype /Link @@ -27986,7 +27930,7 @@ stream /Rect [365.487 576.377 443.006 588.437] /A << /S /GoTo /D (spdata) >> >> -% 1968 0 obj +% 1973 0 obj << /Type /Annot /Subtype /Link @@ -27994,7 +27938,7 @@ stream /Rect [451.902 505.741 518.96 517.801] /A << /S /GoTo /D (precdata) >> >> -% 1969 0 obj +% 1974 0 obj << /Type /Annot /Subtype /Link @@ -28002,7 +27946,7 @@ stream /Rect [422.264 435.105 489.322 447.165] /A << /S /GoTo /D (descdata) >> >> -% 1970 0 obj +% 1975 0 obj << /Type /Annot /Subtype /Link @@ -28010,46 +27954,46 @@ stream /Rect [368.227 128.475 435.285 140.535] /A << /S /GoTo /D (precdata) >> >> -% 1974 0 obj +% 1979 0 obj << -/D [1972 0 R /XYZ 149.705 753.953 null] +/D [1977 0 R /XYZ 149.705 753.953 null] >> % 549 0 obj << -/D [1972 0 R /XYZ 150.705 716.092 null] +/D [1977 0 R /XYZ 150.705 716.092 null] >> -% 1971 0 obj +% 1976 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1976 0 obj +% 1981 0 obj << /Type /Page -/Contents 1977 0 R -/Resources 1975 0 R +/Contents 1982 0 R +/Resources 1980 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R +/Parent 1971 0 R >> -% 1978 0 obj +% 1983 0 obj << -/D [1976 0 R /XYZ 98.895 753.953 null] +/D [1981 0 R /XYZ 98.895 753.953 null] >> -% 1975 0 obj +% 1980 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1984 0 obj +% 1989 0 obj << /Type /Page -/Contents 1985 0 R -/Resources 1983 0 R +/Contents 1990 0 R +/Resources 1988 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1979 0 R 1980 0 R 1981 0 R 1982 0 R ] +/Parent 1971 0 R +/Annots [ 1984 0 R 1985 0 R 1986 0 R 1987 0 R ] >> -% 1979 0 obj +% 1984 0 obj << /Type /Annot /Subtype /Link @@ -28057,7 +28001,7 @@ stream /Rect [371.126 573.77 438.184 585.83] /A << /S /GoTo /D (precdata) >> >> -% 1980 0 obj +% 1985 0 obj << /Type /Annot /Subtype /Link @@ -28065,7 +28009,7 @@ stream /Rect [393.303 517.98 469.357 530.039] /A << /S /GoTo /D (vdata) >> >> -% 1981 0 obj +% 1986 0 obj << /Type /Annot /Subtype /Link @@ -28073,7 +28017,7 @@ stream /Rect [374.822 462.189 441.88 474.248] /A << /S /GoTo /D (descdata) >> >> -% 1982 0 obj +% 1987 0 obj << /Type /Annot /Subtype /Link @@ -28081,29 +28025,29 @@ stream /Rect [393.303 272.899 469.357 284.958] /A << /S /GoTo /D (vdata) >> >> -% 1986 0 obj +% 1991 0 obj << -/D [1984 0 R /XYZ 149.705 753.953 null] +/D [1989 0 R /XYZ 149.705 753.953 null] >> % 553 0 obj << -/D [1984 0 R /XYZ 150.705 716.092 null] +/D [1989 0 R /XYZ 150.705 716.092 null] >> -% 1983 0 obj +% 1988 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1989 0 obj +% 1994 0 obj << /Type /Page -/Contents 1990 0 R -/Resources 1988 0 R +/Contents 1995 0 R +/Resources 1993 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1987 0 R ] +/Parent 1971 0 R +/Annots [ 1992 0 R ] >> -% 1987 0 obj +% 1992 0 obj << /Type /Annot /Subtype /Link @@ -28111,50 +28055,50 @@ stream /Rect [320.317 573.77 387.374 585.83] /A << /S /GoTo /D (precdata) >> >> -% 1991 0 obj +% 1996 0 obj << -/D [1989 0 R /XYZ 98.895 753.953 null] +/D [1994 0 R /XYZ 98.895 753.953 null] >> % 557 0 obj << -/D [1989 0 R /XYZ 99.895 716.092 null] +/D [1994 0 R /XYZ 99.895 716.092 null] >> -% 1988 0 obj +% 1993 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1993 0 obj +% 1998 0 obj << /Type /Page -/Contents 1994 0 R -/Resources 1992 0 R +/Contents 1999 0 R +/Resources 1997 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R +/Parent 1971 0 R >> -% 1995 0 obj +% 2000 0 obj << -/D [1993 0 R /XYZ 149.705 753.953 null] +/D [1998 0 R /XYZ 149.705 753.953 null] >> % 561 0 obj << -/D [1993 0 R /XYZ 150.705 716.092 null] +/D [1998 0 R /XYZ 150.705 716.092 null] >> -% 1992 0 obj +% 1997 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1999 0 obj +% 2004 0 obj << /Type /Page -/Contents 2000 0 R -/Resources 1998 0 R +/Contents 2005 0 R +/Resources 2003 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 1996 0 R 1997 0 R ] +/Parent 2007 0 R +/Annots [ 2001 0 R 2002 0 R ] >> -% 1996 0 obj +% 2001 0 obj << /Type /Annot /Subtype /Link @@ -28162,7 +28106,7 @@ stream /Rect [320.317 573.77 387.374 585.83] /A << /S /GoTo /D (precdata) >> >> -% 1997 0 obj +% 2002 0 obj << /Type /Annot /Subtype /Link @@ -28170,50 +28114,50 @@ stream /Rect [320.317 498.054 387.374 510.114] /A << /S /GoTo /D (precdata) >> >> -% 2001 0 obj +% 2006 0 obj << -/D [1999 0 R /XYZ 98.895 753.953 null] +/D [2004 0 R /XYZ 98.895 753.953 null] >> % 565 0 obj << -/D [1999 0 R /XYZ 99.895 716.092 null] +/D [2004 0 R /XYZ 99.895 716.092 null] >> -% 1998 0 obj +% 2003 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 2004 0 obj +% 2009 0 obj << /Type /Page -/Contents 2005 0 R -/Resources 2003 0 R +/Contents 2010 0 R +/Resources 2008 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R +/Parent 2007 0 R >> -% 2006 0 obj +% 2011 0 obj << -/D [2004 0 R /XYZ 149.705 753.953 null] +/D [2009 0 R /XYZ 149.705 753.953 null] >> % 569 0 obj << -/D [2004 0 R /XYZ 150.705 716.092 null] +/D [2009 0 R /XYZ 150.705 716.092 null] >> -% 2003 0 obj +% 2008 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 2011 0 obj +% 2016 0 obj << /Type /Page -/Contents 2012 0 R -/Resources 2010 0 R +/Contents 2017 0 R +/Resources 2015 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2007 0 R 2008 0 R ] +/Parent 2007 0 R +/Annots [ 2012 0 R 2013 0 R ] >> -% 2007 0 obj +% 2012 0 obj << /Type /Annot /Subtype /Link @@ -28221,7 +28165,7 @@ stream /Rect [329.163 275.278 335.44 288.868] /A << /S /GoTo /D (Hfootnote.5) >> >> -% 2008 0 obj +% 2013 0 obj << /Type /Annot /Subtype /Link @@ -28229,45 +28173,45 @@ stream /Rect [291.943 134.696 369.462 146.755] /A << /S /GoTo /D (spdata) >> >> -% 2013 0 obj +% 2018 0 obj << -/D [2011 0 R /XYZ 98.895 753.953 null] +/D [2016 0 R /XYZ 98.895 753.953 null] >> % 573 0 obj << -/D [2011 0 R /XYZ 99.895 716.092 null] +/D [2016 0 R /XYZ 99.895 716.092 null] >> -% 2014 0 obj +% 2019 0 obj << -/D [2011 0 R /XYZ 99.895 444.811 null] +/D [2016 0 R /XYZ 99.895 444.811 null] >> -% 2015 0 obj +% 2020 0 obj << -/D [2011 0 R /XYZ 99.895 444.971 null] +/D [2016 0 R /XYZ 99.895 444.971 null] >> -% 2016 0 obj +% 2021 0 obj << -/D [2011 0 R /XYZ 99.895 433.015 null] +/D [2016 0 R /XYZ 99.895 433.015 null] >> -% 2017 0 obj +% 2022 0 obj << -/D [2011 0 R /XYZ 114.242 129.79 null] +/D [2016 0 R /XYZ 114.242 129.79 null] >> -% 2010 0 obj +% 2015 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F69 1460 0 R /F67 913 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1465 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 2022 0 obj +% 2027 0 obj << /Type /Page -/Contents 2023 0 R -/Resources 2021 0 R +/Contents 2028 0 R +/Resources 2026 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2009 0 R 2018 0 R 2019 0 R 2020 0 R ] +/Parent 2007 0 R +/Annots [ 2014 0 R 2023 0 R 2024 0 R 2025 0 R ] >> -% 2009 0 obj +% 2014 0 obj << /Type /Annot /Subtype /Link @@ -28275,7 +28219,7 @@ stream /Rect [342.753 654.503 409.811 666.562] /A << /S /GoTo /D (precdata) >> >> -% 2018 0 obj +% 2023 0 obj << /Type /Annot /Subtype /Link @@ -28283,7 +28227,7 @@ stream /Rect [393.303 584.479 469.357 596.539] /A << /S /GoTo /D (vdata) >> >> -% 2019 0 obj +% 2024 0 obj << /Type /Annot /Subtype /Link @@ -28291,7 +28235,7 @@ stream /Rect [393.303 514.456 469.357 526.516] /A << /S /GoTo /D (vdata) >> >> -% 2020 0 obj +% 2025 0 obj << /Type /Annot /Subtype /Link @@ -28299,25 +28243,25 @@ stream /Rect [342.753 374.41 409.811 386.47] /A << /S /GoTo /D (descdata) >> >> -% 2024 0 obj +% 2029 0 obj << -/D [2022 0 R /XYZ 149.705 753.953 null] +/D [2027 0 R /XYZ 149.705 753.953 null] >> -% 2021 0 obj +% 2026 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F69 1460 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1465 0 R >> /ProcSet [ /PDF /Text ] >> -% 2027 0 obj +% 2032 0 obj << /Type /Page -/Contents 2028 0 R -/Resources 2026 0 R +/Contents 2033 0 R +/Resources 2031 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2025 0 R ] +/Parent 2007 0 R +/Annots [ 2030 0 R ] >> -% 2025 0 obj +% 2030 0 obj << /Type /Annot /Subtype /Link @@ -28325,51 +28269,412 @@ stream /Rect [342.493 554.876 418.548 566.936] /A << /S /GoTo /D (vdata) >> >> -% 2029 0 obj +% 2034 0 obj << -/D [2027 0 R /XYZ 98.895 753.953 null] +/D [2032 0 R /XYZ 98.895 753.953 null] >> -% 2026 0 obj +% 2031 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 2037 0 obj +% 2040 0 obj << /Type /Page -/Contents 2038 0 R -/Resources 2036 0 R +/Contents 2041 0 R +/Resources 2039 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2030 0 R 2040 0 R 2031 0 R 2032 0 R 2033 0 R 2034 0 R 2035 0 R ] +/Parent 2007 0 R +/Annots [ 2035 0 R 2036 0 R 2037 0 R ] >> -% 2030 0 obj + +endstream +endobj +2051 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [367.891 636.522 495.412 648.582] -/Subtype/Link/A<> +/Length 6698 >> -% 2040 0 obj +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F59 9.9626 Tf 99.895 706.129 Td [(x)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(The)-250(initial)-250(guess.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 359.808 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 362.947 658.308 Td [(T)]TJ +ET +q +1 0 0 1 368.804 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 371.943 658.308 Td [(vect)]TJ +ET +q +1 0 0 1 393.492 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 396.63 658.308 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -317.656 -19.427 Td [(eps)]TJ +0 g 0 G +/F62 9.9626 Tf 20.474 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.433 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +0 g 0 G +/F59 9.9626 Tf -24.907 -19.427 Td [(desc)]TJ +ET +q +1 0 0 1 120.408 571.832 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F59 9.9626 Tf 123.397 571.633 Td [(a)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 524.012 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 312.397 523.813 Td [(desc)]TJ +ET +q +1 0 0 1 333.945 524.012 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 337.084 523.813 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -258.11 -19.428 Td [(itmax)]TJ +0 g 0 G +/F62 9.9626 Tf 30.436 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.529 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F93 10.3811 Tf 27.743 0 Td [(=)]TJ/F62 9.9626 Tf 10.962 0 Td [(1000.)]TJ -77.275 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F60 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 27.744 0 Td [(\025)]TJ/F62 9.9626 Tf 10.961 0 Td [(1.)]TJ +0 g 0 G +/F59 9.9626 Tf -205.961 -19.428 Td [(itrace)]TJ +0 g 0 G +/F62 9.9626 Tf 29.878 0 Td [(If)]TJ/F69 10.3811 Tf 11.007 0 Td [(>)]TJ/F62 9.9626 Tf 14.142 0 Td [(0)-422(print)-423(out)-422(an)-422(informational)-423(message)-422(about)-423(conv)1(er)18(gence)-423(every)]TJ/F60 9.9626 Tf -30.065 -11.955 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F62 9.9626 Tf 26.395 0 Td [(iterations.)-310(If)]TJ/F93 10.3811 Tf 56.313 0 Td [(=)]TJ/F62 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -93.725 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F93 10.3811 Tf 26.797 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1.)]TJ +0 g 0 G +/F59 9.9626 Tf -109.554 -31.383 Td [(istop)]TJ +0 g 0 G +/F62 9.9626 Tf 27.666 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.759 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(V)92(alues:)-351(1:)-351(use)-271(the)-270(normwise)-271(backwar)18(d)-270(err)18(or)74(,)-276(2:)-351(use)-271(the)-270(scaled)-271(2-norm)-270(of)]TJ 0 -11.956 Td [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ +0 g 0 G +/F59 9.9626 Tf -24.907 -19.427 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.427 Td [(x)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(The)-250(computed)-250(solution.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 359.808 187.773 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 362.947 187.573 Td [(T)]TJ +ET +q +1 0 0 1 368.804 187.773 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 371.943 187.573 Td [(vect)]TJ +ET +q +1 0 0 1 393.492 187.773 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 396.63 187.573 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -317.656 -19.427 Td [(iter)]TJ +0 g 0 G +/F62 9.9626 Tf 20.473 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.434 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G + 139.477 -29.888 Td [(163)]TJ +0 g 0 G +ET + +endstream +endobj +2056 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [174.615 624.567 218.45 636.627] -/Subtype/Link/A<> +/Length 1093 >> -% 2031 0 obj +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F59 9.9626 Tf 150.705 706.129 Td [(err)]TJ +0 g 0 G +/F62 9.9626 Tf 17.713 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.193 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +0 g 0 G +/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +0 g 0 G +/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 139.477 -500.124 Td [(164)]TJ +0 g 0 G +ET + +endstream +endobj +2066 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [191.223 593.098 397.198 605.158] -/Subtype/Link/A<> +/Length 7593 >> +stream +0 g 0 G +0 g 0 G +BT +/F59 14.3462 Tf 99.895 706.042 Td [(12)-1000(Extensions)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-216(EXT)74(,)-217(CUDA)-216(and)-217(RSB)-216(subdir)18(ectories)-216(contains)-217(a)-216(set)-217(of)-216(extensions)-216(to)-217(the)-216(base)]TJ 0 -11.955 Td [(library)111(.)-678(The)-373(extensions)-373(pr)18(ovide)-372(additional)-373(storage)-373(formats)-373(beyond)-372(the)-373(ones)]TJ 0 -11.955 Td [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ +0 g 0 G +/F59 9.9626 Tf 0 -19.102 Td [(SPGPU)]TJ +0 g 0 G +/F62 9.9626 Tf 39.293 0 Td [(a)-296(CUDA)-297(library)-296(originally)-296(published)-297(as)]TJ +0 1 0 0 k 0 1 0 0 K +/F67 9.9626 Tf 178.89 0 Td [(https://code.google.com/)]TJ -193.276 -11.955 Td [(p/spgpu/)]TJ +0 g 0 G +/F62 9.9626 Tf 46.128 0 Td [(and)-430(now)-430(included)-430(in)-430(the)]TJ/F67 9.9626 Tf 119.328 0 Td [(cuda)]TJ/F62 9.9626 Tf 25.206 0 Td [(subdir)74(,)-475(for)-430(computations)-430(on)]TJ -190.662 -11.955 Td [(NVIDIA)-250(GPUs;)]TJ +0 g 0 G +/F59 9.9626 Tf -24.907 -19.514 Td [(LIBRSB)]TJ +0 g 0 G +0 1 0 0 k 0 1 0 0 K +/F67 9.9626 Tf 41.514 0 Td [(http://sourceforge.net/projects/librsb/)]TJ +0 g 0 G +/F62 9.9626 Tf 203.984 0 Td [(,)-398(for)-368(computations)-368(on)]TJ -220.591 -11.955 Td [(multicor)18(e)-250(parallel)-250(machines.)]TJ -24.907 -19.102 Td [(The)-318(infrastr)8(uctur)18(e)-317(laid)-318(out)-318(in)-317(the)-318(base)-317(library)-318(to)-318(allow)-317(for)-318(these)-318(extensions)-317(is)]TJ 0 -11.956 Td [(detailed)-299(in)-299(the)-299(r)18(efer)18(ences)-299([)]TJ +1 0 0 rg 1 0 0 RG + [(20)]TJ +0 g 0 G + [(,)]TJ +1 0 0 rg 1 0 0 RG + [-299(21)]TJ +0 g 0 G + [(,)]TJ +1 0 0 rg 1 0 0 RG + [-299(10)]TJ +0 g 0 G + [(];)-324(the)-299(CUDA-speci\002c)-299(data)-299(formats)-299(ar)18(e)-299(de-)]TJ 0 -11.955 Td [(scribed)-250(in)-250([)]TJ +1 0 0 rg 1 0 0 RG + [(22)]TJ +0 g 0 G + [(].)]TJ/F59 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(A)-279(sample)-279(application)-279(using)-279(the)-279(PSBLAS)-279(extensions)-279(will)-279(contain)-279(the)-279(following)]TJ 0 -11.955 Td [(steps:)]TJ +0 g 0 G + 13.888 -19.102 Td [(\225)]TJ +0 g 0 G +/F67 9.9626 Tf 11.019 0 Td [(USE)]TJ/F62 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F67 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F62 9.9626 Tf 57.533 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(psb_cuda_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(\051;)]TJ +0 g 0 G + -264.516 -19.514 Td [(\225)]TJ +0 g 0 G + [-500(Declar)18(e)-190(a)]TJ/F60 9.9626 Tf 53.101 0 Td [(mold)]TJ/F62 9.9626 Tf 21.818 0 Td [(variable)-190(of)-190(the)-190(necessary)-190(type)-190(\050e.g.)]TJ/F67 9.9626 Tf 151.36 0 Td [(psb_d_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf -319.867 -11.955 Td [(psb_d_hlg_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_d_vect_cuda)]TJ/F62 9.9626 Tf 78.455 0 Td [(\051;)]TJ +0 g 0 G + -199.062 -19.514 Td [(\225)]TJ +0 g 0 G + [-500(Pass)-289(the)-290(mold)-289(variable)-290(to)-289(the)-290(base)-289(library)-289(interface)-290(wher)18(e)-289(needed)-290(to)-289(en-)]TJ 11.019 -11.955 Td [(sur)18(e)-250(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ -24.907 -19.102 Td [(Suppose)-367(you)-366(want)-367(to)-366(use)-367(the)-366(CUDA-enabled)-367(ELLP)92(ACK)-366(data)-366(str)8(uctur)18(e;)-425(you)]TJ 0 -11.955 Td [(would)-371(use)-370(a)-371(piece)-370(of)-371(code)-370(like)-371(this)-370(\050and)-371(don't)-370(for)18(get,)-401(you)-371(need)-370(CUDA-side)]TJ 0 -11.955 Td [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 99.895 120.326 cm +0 0 343.711 225.156 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F102 8.9664 Tf 102.884 334.821 Td [(program)]TJ +0 g 0 G + [-525(my_cuda_test)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 9.415 -10.959 Td [(use)]TJ +0 g 0 G + [-525(psb_base_mod)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(use)]TJ +0 g 0 G + [-525(psb_util_mod)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.958 Td [(use)]TJ +0 g 0 G + [-525(psb_ext_mod)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(use)]TJ +0 g 0 G + [-525(psb_cuda_mod)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050psb_dspmat_type\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(agpu)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050psb_d_vect_type\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(xg,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(bg)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -21.918 Td [(real)]TJ +0 g 0 G + [(\050psb_dpk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(xtmp\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050psb_d_vect_cuda\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-3675(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(vmold)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050psb_d_elg_sparse_mat\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(aelg)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050psb_ctxt_type\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(ctxt)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-6825(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(iam,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(np)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -32.876 Td [(call)]TJ +0 g 0 G + [-525(psb_init\050ctxt\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(call)]TJ +0 g 0 G + [-525(psb_info\050ctxt,iam,np\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(call)]TJ +0 g 0 G + [-525(psb_cuda_init\050ctxt,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(iam\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F62 9.9626 Tf 151.98 -58.082 Td [(165)]TJ +0 g 0 G +ET endstream endobj -2053 0 obj +2080 0 obj << -/Length 8663 +/Length 8656 >> stream 0 g 0 G @@ -28377,7 +28682,7 @@ stream 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG q -1 0 0 1 99.895 421.197 cm +1 0 0 1 150.705 421.197 cm 0 0 343.711 290.909 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -28386,7 +28691,7 @@ Q 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG BT -/F120 8.9664 Tf 112.299 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ +/F120 8.9664 Tf 163.108 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -28509,7 +28814,7 @@ BT 0 g 0 G [-525(psb_spmm\050done,agpu,xg,dzero,bg,desc_a,info\051)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - -9.415 -32.877 Td [(9999)]TJ + -9.414 -32.877 Td [(9999)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -28517,7 +28822,7 @@ BT [-525(continue)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.415 -10.959 Td [(if)]TJ + 9.414 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -28599,16 +28904,16 @@ BT 0 -10.959 Td [(stop)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(program)]TJ + -9.414 -10.959 Td [(end)-525(program)]TJ 0 g 0 G [-525(my_cuda_test)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf 11.955 -24.283 Td [(A)-378(full)-379(example)-378(of)-379(this)-378(strategy)-379(can)-378(be)-378(seen)-379(in)-378(the)]TJ/F67 9.9626 Tf 229.675 0 Td [(test/ext/kernel)]TJ/F62 9.9626 Tf 82.226 0 Td [(and)]TJ/F67 9.9626 Tf -326.845 -11.955 Td [(test/cuda/kernel)]TJ/F62 9.9626 Tf 86.402 0 Td [(subdir)18(ectories,)-278(wher)18(e)-273(we)-272(pr)18(ovide)-273(sample)-272(pr)18(ograms)-273(to)-273(test)]TJ -86.402 -11.955 Td [(the)-259(speed)-259(of)-259(the)-259(sparse)-259(matrix-vector)-259(pr)18(oduct)-259(with)-259(the)-259(various)-259(data)-259(str)8(uctur)18(es)]TJ 0 -11.956 Td [(included)-250(in)-250(the)-250(library)111(.)]TJ/F59 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F62 9.9626 Tf 0 -18.999 Td [(Access)-232(to)-233(the)-232(facilities)-232(pr)18(ovided)-233(by)-232(the)-232(EXT)-233(library)-232(is)-233(mainly)-232(achieved)-232(thr)18(ough)]TJ 0 -11.955 Td [(the)-384(data)-385(types)-384(that)-384(ar)18(e)-385(pr)18(ovi)1(ded)-385(within.)-713(The)-384(data)-384(classes)-385(ar)18(e)-384(derived)-384(fr)18(om)]TJ 0 -11.955 Td [(the)-247(base)-247(classes)-248(in)-247(PSBLAS,)-247(thr)18(ough)-247(the)-247(Fortran)-247(2003)-248(mechanism)-247(of)]TJ/F60 9.9626 Tf 299.187 0 Td [(type)-247(exten-)]TJ -299.187 -11.956 Td [(sion)]TJ/F62 9.9626 Tf 19.098 0 Td [([)]TJ +/F62 9.9626 Tf 11.955 -24.283 Td [(A)-378(full)-379(example)-378(of)-379(this)-378(strategy)-378(can)-379(be)-378(seen)-379(in)-378(the)]TJ/F67 9.9626 Tf 229.675 0 Td [(test/ext/kernel)]TJ/F62 9.9626 Tf 82.225 0 Td [(and)]TJ/F67 9.9626 Tf -326.844 -11.955 Td [(test/cuda/kernel)]TJ/F62 9.9626 Tf 86.401 0 Td [(subdir)18(ectories,)-278(wher)18(e)-273(we)-272(pr)18(ovide)-273(sample)-272(pr)18(ograms)-273(to)-273(test)]TJ -86.401 -11.955 Td [(the)-259(speed)-259(of)-259(the)-259(sparse)-259(matrix-vector)-259(pr)18(oduct)-259(with)-259(the)-259(various)-259(data)-259(str)8(uctur)18(es)]TJ 0 -11.956 Td [(included)-250(in)-250(the)-250(library)111(.)]TJ/F59 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F62 9.9626 Tf 0 -18.999 Td [(Access)-232(to)-233(the)-232(facilities)-232(pr)18(ovided)-233(by)-232(the)-232(EXT)-233(library)-232(is)-232(mainly)-233(achieved)-232(thr)18(ough)]TJ 0 -11.955 Td [(the)-384(data)-385(types)-384(that)-384(ar)18(e)-384(pr)18(ovided)-385(within.)-713(The)-384(data)-384(classes)-385(ar)18(e)-384(derived)-384(fr)18(om)]TJ 0 -11.955 Td [(the)-247(base)-247(classes)-248(in)-247(PSBLAS,)-247(thr)18(ough)-247(the)-247(Fortran)-247(2003)-248(mechanism)-247(of)]TJ/F60 9.9626 Tf 299.186 0 Td [(type)-247(exten-)]TJ -299.186 -11.956 Td [(sion)]TJ/F62 9.9626 Tf 19.098 0 Td [([)]TJ 1 0 0 rg 1 0 0 RG [(17)]TJ 0 g 0 G - [(].)]TJ -4.154 -11.973 Td [(The)-255(data)-255(classes)-255(ar)18(e)-254(divided)-255(between)-255(the)-255(general)-255(purpose)-254(CPU)-255(extensions,)]TJ -14.944 -11.955 Td [(the)-232(GPU)-232(interfaces)-232(and)-232(the)-232(RSB)-232(interfaces.)-304(In)-232(the)-232(description)-232(we)-232(will)-232(make)-232(use)]TJ 0 -11.955 Td [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ + [(].)]TJ -4.154 -11.973 Td [(The)-255(data)-255(classes)-254(ar)18(e)-255(divided)-255(between)-255(the)-255(general)-255(purpose)-254(CPU)-255(extensions,)]TJ -14.944 -11.955 Td [(the)-232(GPU)-232(interfaces)-232(and)-232(the)-232(RSB)-232(interfaces.)-304(In)-232(the)-232(description)-232(we)-232(will)-232(make)-232(use)]TJ 0 -11.955 Td [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(21)]TJ 0 g 0 G @@ -28616,17 +28921,17 @@ BT 0 0 1 rg 0 0 1 RG [-190(6)]TJ 0 g 0 G - [(\051)-190(comprises)-190(two)-190(2-dimensional)]TJ 0 -11.956 Td [(arrays)]TJ/F67 9.9626 Tf 30.302 0 Td [(AS)]TJ/F62 9.9626 Tf 13.165 0 Td [(and)]TJ/F67 9.9626 Tf 19.571 0 Td [(JA)]TJ/F62 9.9626 Tf 13.166 0 Td [(with)]TJ/F67 9.9626 Tf 22.958 0 Td [(M)]TJ/F62 9.9626 Tf 7.935 0 Td [(r)18(ows)-272(and)]TJ/F67 9.9626 Tf 44.005 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.087 0 Td [(columns,)-277(wher)18(e)]TJ/F67 9.9626 Tf 72.949 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.087 0 Td [(is)-272(th)1(e)-272(maxi-)]TJ -292.225 -11.955 Td [(mum)-211(number)-211(of)-212(nonzer)18(os)-211(in)-211(any)-211(r)18(ow)-211([)]TJ/F59 9.9626 Tf 167.954 0 Td [(?)]TJ/F62 9.9626 Tf 4.424 0 Td [(].)-297(Each)-211(r)18(ow)-211(of)-212(the)-211(arrays)]TJ/F67 9.9626 Tf 108.255 0 Td [(AS)]TJ/F62 9.9626 Tf 12.564 0 Td [(and)]TJ/F67 9.9626 Tf 18.971 0 Td [(JA)]TJ/F62 9.9626 Tf 12.565 0 Td [(con-)]TJ -324.733 -11.955 Td [(tains)-218(the)-217(coef)18(\002cients)-218(and)-217(column)-218(indices;)-228(r)18(ows)-218(shorter)-217(than)]TJ/F67 9.9626 Tf 260.483 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 33.549 0 Td [(ar)18(e)-218(padded)]TJ -294.032 -11.955 Td [(with)-315(zer)18(o)-315(coef)18(\002cients)-315(and)-315(appr)18(opriate)-315(column)-315(indices,)-331(e.g.)-505(the)-315(last)-315(valid)-315(one)]TJ 0 -11.955 Td [(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ + [(\051)-190(comprises)-190(two)-190(2-dimensional)]TJ 0 -11.956 Td [(arrays)]TJ/F67 9.9626 Tf 30.301 0 Td [(AS)]TJ/F62 9.9626 Tf 13.165 0 Td [(and)]TJ/F67 9.9626 Tf 19.572 0 Td [(JA)]TJ/F62 9.9626 Tf 13.165 0 Td [(with)]TJ/F67 9.9626 Tf 22.959 0 Td [(M)]TJ/F62 9.9626 Tf 7.935 0 Td [(r)18(ows)-271(and)]TJ/F67 9.9626 Tf 44.005 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.086 0 Td [(columns,)-277(wher)18(e)]TJ/F67 9.9626 Tf 72.95 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.087 0 Td [(is)-271(the)-272(maxi-)]TJ -292.225 -11.955 Td [(mum)-211(number)-211(of)-212(nonzer)18(os)-211(in)-211(any)-211(r)18(ow)-211([)]TJ/F59 9.9626 Tf 167.954 0 Td [(?)]TJ/F62 9.9626 Tf 4.423 0 Td [(].)-297(Each)-211(r)18(ow)-212(of)-211(the)-211(arrays)]TJ/F67 9.9626 Tf 108.255 0 Td [(AS)]TJ/F62 9.9626 Tf 12.565 0 Td [(and)]TJ/F67 9.9626 Tf 18.971 0 Td [(JA)]TJ/F62 9.9626 Tf 12.564 0 Td [(con-)]TJ -324.732 -11.955 Td [(tains)-218(the)-217(coef)18(\002cients)-218(and)-217(column)-218(indices;)-228(r)18(ows)-218(shorter)-217(than)]TJ/F67 9.9626 Tf 260.482 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 33.55 0 Td [(ar)18(e)-218(padded)]TJ -294.032 -11.955 Td [(with)-315(zer)18(o)-315(coef)18(\002cients)-315(and)-315(appr)18(opriate)-315(column)-315(indices,)-331(e.g.)-505(the)-315(last)-315(valid)-315(one)]TJ 0 -11.955 Td [(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ 0 g 0 G - 164.384 -29.888 Td [(163)]TJ + 164.383 -29.888 Td [(166)]TJ 0 g 0 G ET endstream endobj -2063 0 obj +2089 0 obj << -/Length 4574 +/Length 4578 >> stream 0 g 0 G @@ -28634,32 +28939,32 @@ stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 189.471 698.871 Td [(T)92(able)-250(21:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ +/F62 9.9626 Tf 138.662 698.871 Td [(T)92(able)-250(21:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 222.652 684.904 cm +1 0 0 1 171.842 684.904 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q BT -/F62 7.9701 Tf 228.629 678.079 Td [(Name)-3364(Description)]TJ +/F62 7.9701 Tf 177.82 678.079 Td [(Name)-3364(Description)]TJ ET q -1 0 0 1 222.652 675.041 cm +1 0 0 1 171.842 675.041 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q BT -/F62 7.9701 Tf 228.629 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ +/F62 7.9701 Tf 177.82 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ ET q -1 0 0 1 222.652 551.604 cm +1 0 0 1 171.842 551.604 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q 0 g 0 G 0 g 0 G -1 0 0 1 247.614 396.819 cm +1 0 0 1 196.805 396.819 cm q .33653 0 0 .33653 0 0 cm q @@ -28668,46 +28973,46 @@ q Q Q 0 g 0 G -1 0 0 1 -247.614 -396.819 cm +1 0 0 1 -196.805 -396.819 cm BT -/F62 9.9626 Tf 245.769 374.901 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ +/F62 9.9626 Tf 194.96 374.901 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G - -80.12 -32.171 Td [(The)-289(matrix-vector)-289(pr)18(oduct)]TJ/F60 9.9626 Tf 120.156 0 Td [(y)]TJ/F93 10.3811 Tf 8.719 0 Td [(=)]TJ/F60 9.9626 Tf 12.305 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 15.697 0 Td [(can)-289(be)-289(computed)-289(with)-289(the)-289(code)-290(shown)]TJ -171.821 -11.956 Td [(in)-365(Alg.)]TJ + -80.121 -32.171 Td [(The)-289(matrix-vector)-289(pr)18(oduct)]TJ/F60 9.9626 Tf 120.156 0 Td [(y)]TJ/F93 10.3811 Tf 8.719 0 Td [(=)]TJ/F60 9.9626 Tf 12.306 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 15.697 0 Td [(can)-289(be)-289(computed)-289(with)-289(the)-289(code)-289(shown)]TJ -171.822 -11.956 Td [(in)-365(Alg.)]TJ 0 0 1 rg 0 0 1 RG [-365(1)]TJ 0 g 0 G - [(;)-423(it)-365(costs)-365(one)-365(memory)-366(write)-365(per)-365(outer)-365(iteration,)-394(plus)-365(thr)18(ee)-365(memory)]TJ 0 -11.955 Td [(r)18(eads)-250(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 14.944 -11.955 Td [(Unless)-251(all)-252(r)18(ows)-251(have)-251(exactly)-251(the)-252(same)-251(number)-251(of)-252(nonzer)18(os,)-251(some)-252(of)-251(the)-251(co-)]TJ -14.944 -11.955 Td [(ef)18(\002cients)-225(in)-226(the)]TJ/F67 9.9626 Tf 68.551 0 Td [(AS)]TJ/F62 9.9626 Tf 12.705 0 Td [(array)-225(will)-226(be)-225(zer)18(os;)-233(ther)18(efor)18(e)-226(this)-225(data)-225(str)8(uctur)18(e)-225(will)-226(have)-225(an)]TJ -81.256 -11.955 Td [(over)18(head)-261(both)-261(in)-260(terms)-261(of)-261(memory)-261(space)-261(and)-261(r)18(edundant)-260(operations)-261(\050multipli-)]TJ 0 -11.956 Td [(cations)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ + [(;)-423(it)-365(costs)-365(one)-365(memory)-366(write)-365(per)-365(outer)-365(iteration,)-394(plus)-365(thr)18(ee)-365(memory)]TJ 0 -11.955 Td [(r)18(eads)-250(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 14.944 -11.955 Td [(Unless)-251(all)-252(r)18(ows)-251(have)-251(exactly)-251(the)-252(same)-251(number)-251(of)-252(nonzer)18(os,)-251(some)-252(of)-251(the)-251(co-)]TJ -14.944 -11.955 Td [(ef)18(\002cients)-225(in)-226(the)]TJ/F67 9.9626 Tf 68.551 0 Td [(AS)]TJ/F62 9.9626 Tf 12.705 0 Td [(array)-225(will)-226(be)-225(zer)18(os;)-233(ther)18(efor)18(e)-226(this)-225(data)-225(str)8(uctur)18(e)-226(wil)1(l)-226(have)-225(an)]TJ -81.256 -11.955 Td [(over)18(head)-261(both)-261(in)-260(terms)-261(of)-261(memory)-261(space)-261(and)-261(r)18(edundant)-260(operations)-261(\050multipli-)]TJ 0 -11.956 Td [(cations)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ 0 g 0 G - 12.453 -19.399 Td [(1.)]TJ + 12.454 -19.399 Td [(1.)]TJ 0 g 0 G [-500(The)-289(maximum)-289(number)-289(of)-289(nonzer)18(os)-289(per)-290(r)18(ow)-289(is)-289(not)-289(much)-289(lar)18(ger)-289(than)-289(the)]TJ 12.453 -11.956 Td [(average;)]TJ 0 g 0 G -12.453 -19.662 Td [(2.)]TJ 0 g 0 G - [-500(The)-273(r)18(egularity)-274(of)-273(the)-274(data)-273(str)8(uctur)18(e)-274(allows)-273(for)-274(faster)-273(code,)-279(e.g.)-381(by)-273(allow-)]TJ 12.453 -11.955 Td [(ing)-247(vectorization,)-247(ther)18(eby)-247(of)18(fsetting)-247(the)-247(additional)-246(storage)-247(r)18(equir)18(ements.)]TJ -24.906 -19.4 Td [(In)-372(the)-372(extr)18(eme)-372(case)-372(wher)18(e)-371(the)-372(input)-372(matrix)-372(has)-372(one)-372(full)-372(r)18(ow)92(,)-402(the)-372(ELLP)92(ACK)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-273(would)-273(r)18(equir)18(e)-273(mor)18(e)-273(memory)-273(than)-273(the)-273(normal)-273(2D)-273(array)-273(storage.)-379(The)]TJ 0 -11.956 Td [(ELLP)92(ACK)-305(storage)-305(format)-305(was)-305(very)-305(popular)-305(in)-305(the)-305(vector)-305(computing)-305(days;)-332(in)]TJ 0 -11.955 Td [(modern)-304(CPUs)-305(it)-304(is)-305(not)-304(quite)-305(as)-304(popular)74(,)-318(but)-305(it)-304(is)-305(the)-304(basis)-305(for)-304(many)-305(GPU)-304(for)18(-)]TJ 0 -11.955 Td [(mats.)]TJ 14.944 -11.955 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ + [-500(The)-273(r)18(egularity)-274(of)-273(the)-274(data)-273(str)8(uctur)18(e)-274(allows)-273(for)-274(faster)-273(code,)-279(e.g.)-381(by)-273(allow-)]TJ 12.453 -11.955 Td [(ing)-247(vectorization,)-247(ther)18(eby)-247(of)18(fsetting)-247(the)-247(additional)-246(storage)-247(r)18(equir)18(ements.)]TJ -24.907 -19.4 Td [(In)-372(the)-372(extr)18(eme)-372(case)-372(wher)18(e)-372(the)-371(input)-372(matrix)-372(has)-372(one)-372(full)-372(r)18(ow)92(,)-402(the)-372(ELLP)92(ACK)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-273(would)-273(r)18(equir)18(e)-273(mor)18(e)-273(memory)-273(than)-273(the)-273(normal)-273(2D)-273(array)-273(storage.)-379(The)]TJ 0 -11.956 Td [(ELLP)92(ACK)-305(storage)-305(format)-305(was)-305(very)-305(popular)-305(in)-305(the)-305(vector)-305(computing)-305(days;)-332(in)]TJ 0 -11.955 Td [(modern)-305(CPU)1(s)-305(it)-304(is)-305(not)-304(quite)-305(as)-304(popular)74(,)-318(but)-305(it)-304(is)-305(the)-304(basis)-305(for)-304(many)-305(GPU)-304(for)18(-)]TJ 0 -11.955 Td [(mats.)]TJ 14.944 -11.955 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ 0 g 0 G - -66.12 -38.412 Td [(164)]TJ + -66.12 -38.412 Td [(167)]TJ 0 g 0 G ET endstream endobj -2046 0 obj +2073 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/mat.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2068 0 R +/PTEX.InfoDict 2094 0 R /BBox [0 0 438 395] /Resources << /ProcSet [ /PDF /ImageC ] /ExtGState << -/R7 2069 0 R +/R7 2095 0 R >>/XObject << -/R8 2070 0 R +/R8 2096 0 R >>>> /Length 3551 /Filter /FlateDecode @@ -28736,7 +29041,7 @@ r ´JXØxèóC¹ù[— S¬ë¹Ïæ^zÝ°.¼¯÷ëFÜ$ä 5`2. L£× 0 · æÁî# Z(Dô¿Sð÷žÅjý²¥¬³*'fÖåÃÝÖ;?buÞîR­rœ†þ—* Ýœ—"@„ÂúaËiý(ÿ« o^ÿ/o*o endstream endobj -2070 0 obj +2096 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -28755,15 +29060,15 @@ stream & ÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÀ@ endstream endobj -2074 0 obj +2100 0 obj << -/Length 7231 +/Length 7241 >> stream 0 g 0 G 0 g 0 G 0 g 0 G -1 0 0 1 154.285 609.491 cm +1 0 0 1 205.095 609.491 cm q .52 0 0 .52 0 0 cm q @@ -28772,9 +29077,9 @@ q Q Q 0 g 0 G -1 0 0 1 -154.285 -609.491 cm +1 0 0 1 -205.095 -609.491 cm BT -/F62 9.9626 Tf 152.938 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F62 9.9626 Tf 203.747 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G @@ -28782,13 +29087,13 @@ BT 0 g 0 G 0 g 0 G 0 g 0 G -/F59 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.537 -10.959 Td [(t)-168(=)-32(0)]TJ/F59 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.792 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F59 8.9664 Tf -102.419 -10.959 Td [(e)-19(n)-20(d)-630(d)-11(o)]TJ/F62 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F59 8.9664 Tf -10.782 -10.959 Td [(e)-19(n)-20(d)-630(d)-12(o)]TJ +/F59 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.536 -10.959 Td [(t)-168(=)-32(0)]TJ/F59 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.793 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F59 8.9664 Tf -102.419 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ/F62 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F59 8.9664 Tf -10.782 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf 16.498 -17.519 Td [(Algorithm)-250(1:)]TJ/F62 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ +/F59 9.9626 Tf 16.499 -17.519 Td [(Algorithm)-250(1:)]TJ/F62 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -28796,7 +29101,7 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 316.473 cm +1 0 0 1 150.705 316.473 cm 0 0 343.711 126.526 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -28805,7 +29110,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 432.339 Td [(type)]TJ +/F102 8.9664 Tf 163.108 432.339 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -28825,7 +29130,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -28884,43 +29189,43 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.918 Td [(contains)]TJ + -9.415 -21.918 Td [(contains)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 9.414 -10.959 Td [(....)]TJ + 9.415 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.958 Td [(end)-525(type)]TJ + -9.415 -10.958 Td [(end)-525(type)]TJ 0 g 0 G [-525(psb_d_ell_sparse_mat)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F59 9.9626 Tf -12.404 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F62 9.9626 Tf 0 -19.057 Td [(The)]TJ/F60 9.9626 Tf 20.491 0 Td [(hacked)-383(ELLP)129(ACK)]TJ/F62 9.9626 Tf 76.975 0 Td [(\050)]TJ/F59 9.9626 Tf 3.318 0 Td [(HLL)]TJ/F62 9.9626 Tf 20.473 0 Td [(\051)-383(format)-382(alleviates)-383(the)-383(main)-383(pr)18(oblem)-382(of)-383(the)-383(ELL-)]TJ -121.257 -11.955 Td [(P)92(ACK)-303(format,)-316(that)-303(is,)-316(the)-302(amount)-303(of)-303(memory)-303(r)18(equir)18(ed)-303(by)-303(padding)-302(for)-303(sparse)]TJ 0 -11.955 Td [(matrices)-250(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 14.944 -12.003 Td [(The)-190(number)-190(of)-190(elements)-190(allocated)-190(to)-190(padding)-190(is)]TJ/F93 10.3811 Tf 207.724 0 Td [([)-24(\050)]TJ/F60 9.9626 Tf 7.402 0 Td [(m)]TJ/F91 10.3811 Tf 9.384 0 Td [(\003)]TJ/F60 9.9626 Tf 6.823 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F93 10.3811 Tf 34.072 0 Td [(\051)]TJ/F91 10.3811 Tf 5.658 0 Td [(\000)]TJ/F93 10.3811 Tf 9.702 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F91 10.3811 Tf 9.384 0 Td [(\003)]TJ/F60 9.9626 Tf 6.972 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.103 0 Td [(\051)-289(=)]TJ/F60 9.9626 Tf -347.317 -11.955 Td [(m)]TJ/F91 10.3811 Tf 9.436 0 Td [(\003)]TJ/F93 10.3811 Tf 6.876 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F91 10.3811 Tf 35.508 0 Td [(\000)]TJ/F60 9.9626 Tf 9.904 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.103 0 Td [(\051)-23(])]TJ/F62 9.9626 Tf 9.227 0 Td [(for)-196(both)]TJ/F67 9.9626 Tf 36.586 0 Td [(AS)]TJ/F62 9.9626 Tf 12.41 0 Td [(and)]TJ/F67 9.9626 Tf 18.816 0 Td [(JA)]TJ/F62 9.9626 Tf 12.41 0 Td [(arrays,)-207(wher)18(e)]TJ/F60 9.9626 Tf 61.626 0 Td [(m)]TJ/F62 9.9626 Tf 9.825 0 Td [(is)-196(equal)-195(to)-196(the)-196(num-)]TJ -258.126 -11.955 Td [(ber)-197(of)-198(r)18(ows)-197(of)-197(the)-198(matrix,)]TJ/F60 9.9626 Tf 110.796 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F62 9.9626 Tf 35.914 0 Td [(is)-197(the)-198(maximum)-197(number)-197(of)-198(nonzer)18(o)-197(elements)]TJ -146.71 -11.956 Td [(in)-220(every)-220(r)18(ow)-221(and)]TJ/F60 9.9626 Tf 76.764 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F62 9.9626 Tf 33.173 0 Td [(is)-220(the)-220(average)-220(number)-221(of)-220(nonzer)18(os.)-300(Ther)18(efor)18(e)-220(a)-220(single)]TJ -109.937 -11.955 Td [(densely)-250(populated)-250(r)18(ow)-250(can)-250(seriously)-250(af)18(fect)-250(the)-250(total)-250(size)-250(of)-250(the)-250(allocation.)]TJ 14.944 -12.003 Td [(T)92(o)-385(limit)-384(this)-385(ef)18(fect,)-418(in)-384(the)-385(HLL)-384(format)-385(we)-384(br)18(eak)-385(the)-384(original)-385(matrix)-384(into)]TJ -14.944 -11.955 Td [(equally)-283(sized)-284(gr)18(oups)-283(of)-283(r)18(ows)-284(\050cal)1(led)]TJ/F60 9.9626 Tf 163.395 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-292(and)-283(then)-283(stor)18(e)-283(these)-284(gr)18(oups)-283(as)-283(in-)]TJ -185.153 -11.955 Td [(dependent)-304(matrices)-305(in)-304(ELLP)92(ACK)-304(format.)-473(The)-304(gr)18(oups)-304(can)-305(be)-304(arranged)-304(select-)]TJ 0 -11.955 Td [(ing)-253(r)18(ows)-252(in)-253(an)-253(arbitrarily)-253(manner;)-254(indeed,)-253(if)-253(the)-252(r)18(ows)-253(ar)18(e)-253(sorted)-252(by)-253(decr)18(easing)]TJ 0 -11.955 Td [(number)-256(of)-255(nonzer)18(os)-256(we)-255(obtain)-256(essentially)-255(the)-256(JAgged)-255(Diagonals)-256(format.)-327(If)-255(the)]TJ +/F59 9.9626 Tf -12.403 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F62 9.9626 Tf 0 -19.057 Td [(The)]TJ/F60 9.9626 Tf 20.491 0 Td [(hacked)-383(ELLP)129(ACK)]TJ/F62 9.9626 Tf 76.975 0 Td [(\050)]TJ/F59 9.9626 Tf 3.317 0 Td [(HLL)]TJ/F62 9.9626 Tf 20.473 0 Td [(\051)-383(format)-382(alleviates)-383(the)-383(main)-383(pr)18(oblem)-382(of)-383(the)-383(ELL-)]TJ -121.256 -11.955 Td [(P)92(ACK)-303(format,)-316(that)-303(is,)-316(the)-302(amount)-303(of)-303(memory)-303(r)18(equir)18(ed)-303(by)-303(paddi)1(ng)-303(for)-303(sparse)]TJ 0 -11.955 Td [(matrices)-250(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 14.944 -12.003 Td [(The)-190(number)-190(of)-190(elements)-190(allocated)-190(to)-190(padding)-190(is)]TJ/F93 10.3811 Tf 207.723 0 Td [([)-24(\050)]TJ/F60 9.9626 Tf 7.403 0 Td [(m)]TJ/F91 10.3811 Tf 9.383 0 Td [(\003)]TJ/F60 9.9626 Tf 6.824 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F93 10.3811 Tf 34.072 0 Td [(\051)]TJ/F91 10.3811 Tf 5.657 0 Td [(\000)]TJ/F93 10.3811 Tf 9.703 0 Td [(\050)]TJ/F60 9.9626 Tf 4.273 0 Td [(m)]TJ/F91 10.3811 Tf 9.384 0 Td [(\003)]TJ/F60 9.9626 Tf 6.973 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.103 0 Td [(\051)-289(=)]TJ/F60 9.9626 Tf -347.318 -11.955 Td [(m)]TJ/F91 10.3811 Tf 9.436 0 Td [(\003)]TJ/F93 10.3811 Tf 6.876 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F91 10.3811 Tf 35.508 0 Td [(\000)]TJ/F60 9.9626 Tf 9.904 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.104 0 Td [(\051)-23(])]TJ/F62 9.9626 Tf 9.227 0 Td [(for)-196(both)]TJ/F67 9.9626 Tf 36.586 0 Td [(AS)]TJ/F62 9.9626 Tf 12.41 0 Td [(and)]TJ/F67 9.9626 Tf 18.816 0 Td [(JA)]TJ/F62 9.9626 Tf 12.41 0 Td [(arrays,)-207(wh)1(er)18(e)]TJ/F60 9.9626 Tf 61.625 0 Td [(m)]TJ/F62 9.9626 Tf 9.825 0 Td [(is)-196(equal)-195(to)-196(the)-196(num-)]TJ -258.125 -11.955 Td [(ber)-197(of)-198(r)18(ows)-197(of)-197(the)-198(matrix,)]TJ/F60 9.9626 Tf 110.796 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F62 9.9626 Tf 35.914 0 Td [(is)-197(the)-198(maximum)-197(number)-197(of)-198(nonzer)18(o)-197(elements)]TJ -146.71 -11.956 Td [(in)-220(every)-220(r)18(ow)-221(and)]TJ/F60 9.9626 Tf 76.764 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F62 9.9626 Tf 33.172 0 Td [(is)-220(the)-220(average)-221(number)-220(of)-220(nonzer)18(os.)-300(Ther)18(efor)18(e)-220(a)-220(single)]TJ -109.936 -11.955 Td [(densely)-250(populated)-250(r)18(ow)-250(can)-250(seriously)-250(af)18(fect)-250(the)-250(total)-250(size)-250(of)-250(the)-250(allocation.)]TJ 14.944 -12.003 Td [(T)92(o)-385(li)1(mit)-385(this)-385(ef)18(fect)1(,)-419(in)-384(the)-385(HLL)-384(format)-385(we)-384(br)18(eak)-385(the)-384(original)-385(matrix)-384(into)]TJ -14.944 -11.955 Td [(equally)-283(sized)-284(gr)18(oups)-283(of)-283(r)18(ows)-283(\050called)]TJ/F60 9.9626 Tf 163.394 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-292(and)-283(then)-283(stor)18(e)-284(these)-283(gr)18(oups)-283(as)-283(in-)]TJ -185.152 -11.955 Td [(dependent)-304(matrices)-304(in)-305(ELLP)92(ACK)-304(format.)-473(The)-304(gr)18(oups)-304(can)-305(be)-304(arranged)-304(select-)]TJ 0 -11.955 Td [(ing)-253(r)18(ows)-252(in)-253(an)-253(arbitrarily)-252(manner;)-255(indeed,)-253(if)-253(the)-252(r)18(ows)-253(ar)18(e)-253(sorted)-252(by)-253(decr)18(easing)]TJ 0 -11.955 Td [(number)-256(of)-255(nonzer)18(os)-256(we)-255(obtain)-256(essentially)-255(the)-256(JAgged)-255(Diagonals)-256(format.)-327(If)-255(the)]TJ 0 g 0 G - 164.384 -29.888 Td [(165)]TJ + 164.383 -29.888 Td [(168)]TJ 0 g 0 G ET endstream endobj -2048 0 obj +2075 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/ell.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2085 0 R +/PTEX.InfoDict 2111 0 R /BBox [0 0 447 205] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2086 0 R +/R7 2112 0 R >>/XObject << -/R8 2087 0 R ->>/Font << /R9 2088 0 R/R11 2089 0 R>> +/R8 2113 0 R +>>/Font << /R9 2114 0 R/R11 2115 0 R>> >> /Length 2281 /Filter /FlateDecode @@ -28932,7 +29237,7 @@ x Íy-?ýíùï¯ßñGz·5®„ùËéOß}àMžså¾Atû·ÔÇÿ|THF endstream endobj -2087 0 obj +2113 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -28951,7 +29256,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;Y¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà endstream endobj -2091 0 obj +2117 0 obj << /Filter /FlateDecode /Length 171 @@ -28960,7 +29265,7 @@ stream xœ]Mƒ F÷œ‚àOÛĸ±mš¶Àa0,‚¸èí; vÑ„ß›|ˆ~¸ÖD.ÁÁ #×ƪ€‹[ q2–•WâNy‡Yz&ú›ôïGNÔßåŒâYžóM¹9à.^i'dmQt­ÖC«þžªMõž¬)YŸ:2èDØ^26Y?‚iRªt4à°†€6æÞ¹Wêc,þ¾æO§Å¾=+V endstream endobj -2093 0 obj +2119 0 obj << /Filter /FlateDecode /Length 191 @@ -28970,7 +29275,7 @@ x â ±—Uˆ}íuT-mËüǸT¯)ÏuɺDÞyøýC ±¸(Š|iÑ_À endstream endobj -2094 0 obj +2120 0 obj << /Filter /FlateDecode /Length1 11124 @@ -29019,7 +29324,7 @@ B “žÑ endstream endobj -2095 0 obj +2121 0 obj << /Filter /FlateDecode /Length1 3512 @@ -29035,18 +29340,18 @@ a lþ'÷uþoL|E÷¾r«Ço¸ß9®ñߺӣú¾Á( endstream endobj -2102 0 obj +2128 0 obj << -/Length 7891 +/Length 7889 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 150.705 706.129 Td [(r)18(ows)-336(ar)18(e)-337(not)-336(in)-336(the)-337(original)-336(or)18(der)74(,)-358(then)-336(an)-337(additional)-336(vector)]TJ/F60 9.9626 Tf 272.611 0 Td [(rIdx)]TJ/F62 9.9626 Tf 20.507 0 Td [(is)-336(r)18(equir)18(ed,)]TJ -293.118 -11.955 Td [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 14.944 -12.021 Td [(The)-391(multiple)-390(ELLP)92(ACK-like)-391(buf)18(fers)-390(ar)18(e)-391(stacked)-390(together)-391(inside)-391(a)-390(single,)]TJ -14.944 -11.955 Td [(one)-395(dimensional)-394(array;)-467(an)-395(additional)-395(vector)]TJ/F60 9.9626 Tf 204.327 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 50.049 0 Td [(is)-395(pr)18(ovided)-394(to)-395(keep)]TJ -254.376 -11.956 Td [(track)-287(of)-288(the)-288(indiv)1(idual)-288(submatrices.)-423(All)-287(hacks)-288(have)-287(the)-288(same)-287(number)-288(of)-287(r)18(ows)]TJ/F60 9.9626 Tf 0 -11.955 Td [(hackSize)]TJ/F62 9.9626 Tf 34.49 0 Td [(;)-237(hence,)-235(the)]TJ/F60 9.9626 Tf 51.365 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.416 0 Td [(vector)-231(is)-231(an)-231(array)-230(of)]TJ/F93 10.3811 Tf 89.104 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-192(+)]TJ/F62 9.9626 Tf 15.99 0 Td [(1)-231(elements,)]TJ -294.657 -11.955 Td [(each)-338(one)-338(pointing)-338(to)-338(the)-338(\002rst)-338(index)-338(of)-337(a)-338(submatrix)-338(inside)-338(the)-338(stacked)]TJ/F60 9.9626 Tf 314.252 0 Td [(cM)]TJ/F62 9.9626 Tf 13.459 0 Td [(/)]TJ/F60 9.9626 Tf 6.037 0 Td [(rP)]TJ/F62 9.9626 Tf -333.748 -11.955 Td [(buf)18(fers,)-449(plus)-409(an)-409(additional)-409(element)-408(pointing)-409(past)-409(the)-409(end)-409(of)-409(the)-409(last)-409(block,)]TJ 0 -11.955 Td [(wher)18(e)-261(the)-261(next)-261(one)-261(would)-261(begin.)-344(W)92(e)-261(thus)-261(have)-261(the)-261(pr)18(operty)-261(that)-261(the)-261(elements)]TJ 0 -11.955 Td [(of)-353(the)]TJ/F60 9.9626 Tf 29.729 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.878 0 Td [(hack)]TJ/F62 9.9626 Tf 21.448 0 Td [(ar)18(e)-353(stor)18(ed)-353(between)]TJ/F67 9.9626 Tf 88.761 0 Td [(hackOffsets[k])]TJ/F62 9.9626 Tf 76.739 0 Td [(and)]TJ/F67 9.9626 Tf 20.382 0 Td [(hackOffsets[k+1])]TJ/F62 9.9626 Tf 83.685 0 Td [(,)]TJ -341.22 -11.956 Td [(similarly)-250(to)-250(what)-250(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ +/F62 9.9626 Tf 99.895 706.129 Td [(r)18(ows)-336(ar)18(e)-337(not)-336(in)-336(the)-337(original)-336(or)18(der)74(,)-358(then)-336(an)-337(additional)-336(vector)]TJ/F60 9.9626 Tf 272.611 0 Td [(rIdx)]TJ/F62 9.9626 Tf 20.507 0 Td [(is)-336(r)18(equir)18(ed,)]TJ -293.118 -11.955 Td [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 14.944 -12.021 Td [(The)-391(multiple)-390(ELLP)92(ACK-like)-391(buf)18(fers)-390(ar)18(e)-391(stacked)-390(together)-391(inside)-391(a)-390(single,)]TJ -14.944 -11.955 Td [(one)-395(dimensional)-394(array;)-467(an)-395(additional)-395(vector)]TJ/F60 9.9626 Tf 204.328 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 50.048 0 Td [(is)-395(pr)18(ovided)-394(to)-395(keep)]TJ -254.376 -11.956 Td [(track)-288(of)-287(the)-288(individual)-287(submatrices.)-423(All)-287(hacks)-288(have)-287(the)-288(same)-287(number)-288(of)-287(r)18(ows)]TJ/F60 9.9626 Tf 0 -11.955 Td [(hackSize)]TJ/F62 9.9626 Tf 34.49 0 Td [(;)-237(hence,)-235(the)]TJ/F60 9.9626 Tf 51.365 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.417 0 Td [(vector)-231(is)-231(an)-231(array)-230(of)]TJ/F93 10.3811 Tf 89.103 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.337 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-192(+)]TJ/F62 9.9626 Tf 15.989 0 Td [(1)-231(elements,)]TJ -294.657 -11.955 Td [(each)-338(one)-338(pointing)-338(to)-338(the)-338(\002rst)-338(index)-338(of)-338(a)-337(submatrix)-338(inside)-338(the)-338(stacked)]TJ/F60 9.9626 Tf 314.252 0 Td [(cM)]TJ/F62 9.9626 Tf 13.46 0 Td [(/)]TJ/F60 9.9626 Tf 6.037 0 Td [(rP)]TJ/F62 9.9626 Tf -333.749 -11.955 Td [(buf)18(fers,)-449(plus)-409(an)-409(additional)-409(element)-409(po)1(inting)-409(past)-409(the)-409(end)-409(of)-409(the)-409(last)-409(block,)]TJ 0 -11.955 Td [(wher)18(e)-261(the)-261(next)-261(one)-261(would)-261(begin.)-344(W)92(e)-261(thus)-261(have)-261(the)-261(pr)18(operty)-261(that)-261(the)-261(elements)]TJ 0 -11.955 Td [(of)-353(the)]TJ/F60 9.9626 Tf 29.73 0 Td [(k)]TJ/F62 9.9626 Tf 4.597 0 Td [(-th)]TJ/F60 9.9626 Tf 15.879 0 Td [(hack)]TJ/F62 9.9626 Tf 21.447 0 Td [(ar)18(e)-353(stor)18(ed)-353(between)]TJ/F67 9.9626 Tf 88.761 0 Td [(hackOffsets[k])]TJ/F62 9.9626 Tf 76.74 0 Td [(and)]TJ/F67 9.9626 Tf 20.381 0 Td [(hackOffsets[k+1])]TJ/F62 9.9626 Tf 83.686 0 Td [(,)]TJ -341.221 -11.956 Td [(similarly)-250(to)-250(what)-250(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ 0 g 0 G ET -1 0 0 1 197.579 464.41 cm +1 0 0 1 146.769 464.41 cm q .50096 0 0 .50096 0 0 cm q @@ -29055,20 +29360,20 @@ q Q Q 0 g 0 G -1 0 0 1 -197.579 -464.41 cm +1 0 0 1 -146.769 -464.41 cm BT -/F62 9.9626 Tf 185.456 442.492 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F62 9.9626 Tf 134.646 442.492 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -19.807 -24.042 Td [(W)55(ith)-207(this)-206(data)-207(str)8(uctur)18(e)-206(a)-207(very)-206(long)-207(r)18(ow)-207(only)-206(af)18(fects)-207(one)-206(hack,)-216(and)-206(ther)18(efor)18(e)]TJ -14.944 -11.955 Td [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_hll_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ + -19.807 -24.042 Td [(W)55(ith)-207(this)-206(data)-207(str)8(uctur)18(e)-206(a)-207(very)-206(long)-207(r)18(ow)-207(only)-206(af)18(fects)-207(one)-206(hack,)-216(and)-206(ther)18(efor)18(e)]TJ -14.944 -11.955 Td [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_hll_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 244.903 cm +1 0 0 1 99.895 244.903 cm 0 0 343.711 137.484 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29077,7 +29382,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 163.108 371.728 Td [(type)]TJ +/F102 8.9664 Tf 112.299 371.728 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29097,7 +29402,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29151,7 +29456,7 @@ BT [-525(idiag\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 18.829 -10.959 Td [(hkoffs\050:\051)]TJ/F69 5.1905 Tf -15.277 0 Td [(,)]TJ/F91 5.1905 Tf 0.61 0 Td [(!)]TJ + 18.83 -10.959 Td [(hkoffs\050:\051)]TJ/F69 5.1905 Tf -15.277 0 Td [(,)]TJ/F91 5.1905 Tf 0.609 0 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29175,48 +29480,48 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -21.918 Td [(contains)]TJ + -9.414 -21.918 Td [(contains)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 4.708 -10.958 Td [(....)]TJ + 4.707 -10.958 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.708 -10.959 Td [(end)-525(type)]TJ + -4.707 -10.959 Td [(end)-525(type)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F59 9.9626 Tf -12.403 -39.966 Td [(Diagonal)-250(storage)]TJ/F62 9.9626 Tf 0 -19.092 Td [(The)-399(DIAgonal)-399(\050DIA\051)-399(format)-399(\050shown)-399(in)-400(Figur)18(e)]TJ +/F59 9.9626 Tf -12.404 -39.966 Td [(Diagonal)-250(storage)]TJ/F62 9.9626 Tf 0 -19.092 Td [(The)-399(DIAgonal)-399(\050DIA\051)-399(format)-399(\050shown)-399(in)-400(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-399(8)]TJ 0 g 0 G - [(\051)-399(has)-399(a)-399(2-dimensional)-399(array)]TJ/F67 9.9626 Tf 0 -11.955 Td [(AS)]TJ/F62 9.9626 Tf 13.716 0 Td [(containing)-327(in)-327(each)-327(column)-326(the)-327(coef)18(\002cients)-327(along)-327(a)-327(diagonal)-327(of)-327(the)-326(matrix,)]TJ -13.716 -11.955 Td [(and)-302(an)-302(integer)-302(array)]TJ/F67 9.9626 Tf 94.018 0 Td [(OFFSET)]TJ/F62 9.9626 Tf 34.39 0 Td [(that)-302(determines)-302(wher)18(e)-302(each)-302(diagonal)-302(starts.)-466(The)]TJ -128.408 -11.955 Td [(diagonals)-250(in)]TJ/F67 9.9626 Tf 56.527 0 Td [(AS)]TJ/F62 9.9626 Tf 12.952 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ -54.535 -12.021 Td [(The)-194(code)-193(to)-194(compute)-193(the)-194(matrix-vector)-194(pr)18(oduct)]TJ/F60 9.9626 Tf 206.92 0 Td [(y)]TJ/F93 10.3811 Tf 7.997 0 Td [(=)]TJ/F60 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 14.746 0 Td [(is)-194(shown)-193(in)-194(Alg.)]TJ + [(\051)-399(has)-399(a)-399(2-dimensional)-399(array)]TJ/F67 9.9626 Tf 0 -11.955 Td [(AS)]TJ/F62 9.9626 Tf 13.717 0 Td [(containing)-327(in)-327(each)-327(column)-326(the)-327(coef)18(\002cients)-327(along)-327(a)-327(diagonal)-327(of)-326(the)-327(matrix,)]TJ -13.717 -11.955 Td [(and)-302(an)-302(integer)-302(array)]TJ/F67 9.9626 Tf 94.018 0 Td [(OFFSET)]TJ/F62 9.9626 Tf 34.391 0 Td [(that)-302(determines)-302(wher)18(e)-302(each)-302(diagonal)-302(starts.)-466(The)]TJ -128.409 -11.955 Td [(diagonals)-250(in)]TJ/F67 9.9626 Tf 56.528 0 Td [(AS)]TJ/F62 9.9626 Tf 12.951 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ -54.535 -12.021 Td [(The)-194(code)-193(to)-194(compute)-193(the)-194(matrix-vector)-194(pr)18(oduct)]TJ/F60 9.9626 Tf 206.92 0 Td [(y)]TJ/F93 10.3811 Tf 7.998 0 Td [(=)]TJ/F60 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 14.746 0 Td [(is)-194(shown)-193(in)-194(Alg.)]TJ 0 0 1 rg 0 0 1 RG [-193(2)]TJ 0 g 0 G - [(;)-213(it)]TJ -256.191 -11.955 Td [(costs)-205(one)-205(memory)-206(r)18(ead)-205(per)-205(outer)-205(iteration,)-214(plus)-205(thr)18(ee)-206(memory)-205(r)18(eads,)-214(one)-205(mem-)]TJ 0 -11.955 Td [(ory)-322(write)-321(and)-322(two)-321(\003oating-point)-322(operations)-322(per)-321(inner)-322(iteration.)-525(The)-321(accesses)]TJ + [(;)-213(it)]TJ -256.192 -11.955 Td [(costs)-205(one)-205(memory)-206(r)18(ead)-205(per)-205(outer)-205(iteration,)-214(plus)-205(thr)18(ee)-206(memory)-205(r)18(eads,)-214(one)-205(mem-)]TJ 0 -11.955 Td [(ory)-322(write)-321(and)-322(two)-321(\003oating-point)-322(operations)-322(per)-321(inner)-322(iteration.)-525(The)-321(accesses)]TJ 0 g 0 G - 164.383 -29.888 Td [(166)]TJ + 164.384 -29.888 Td [(169)]TJ 0 g 0 G ET endstream endobj -2096 0 obj +2122 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hll.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2106 0 R +/PTEX.InfoDict 2133 0 R /BBox [0 0 494 214] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2107 0 R ->>/Font << /R8 2108 0 R/R10 2109 0 R>> +/R7 2134 0 R +>>/Font << /R8 2135 0 R/R10 2136 0 R>> >> /Length 2880 /Filter /FlateDecode @@ -29238,7 +29543,7 @@ l Ù<øÇ×O?Ó‚•2.šg9_ÿ*×Ps ŸOøYT¨•®U¼v²rƈºŸÂãSóøbzh”8†Ñ½ÂXZÊü°ó`—ú矆@8èwàô)aÿ…¢ªküœËEvëñ»›šK°|dG˜s%´D YšVòÔ@( ázé‹ñCüÿæ׬á¿8Ç7•xVÇ‹ éÑi3kè4½ðw(Ölú¸V*|ik¬Ô¦âÓ*økµøåÀ—žÑÑ÷K•_á•Box:ÀÀ¯¿Æë‘HÏ+x´“êˆÆi[‡;¬<ž¿Á²ÐùÅ+i œ°ùŸø`8¼=ÿ³·‡ endstream endobj -2111 0 obj +2138 0 obj << /Filter /FlateDecode /Length 214 @@ -29247,7 +29552,7 @@ stream xœ]Á‚0 †ï{Š½Á@²ì¢£¾ÀÙ±L<øö¶EOK šp#Ý&ÉQZ]ŒV«ÓqA« ×͈ÆãøÝn ¸G6Š¨Ñë4(„‡ ÇéÍÍé~¹R6èõ&Ž{øaÎxÿ.[±D½˜ÐK·ÈQ7idZñ?:õ;> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 99.895 706.129 Td [(to)]TJ/F67 9.9626 Tf 12.291 0 Td [(AS)]TJ/F62 9.9626 Tf 14.062 0 Td [(and)]TJ/F67 9.9626 Tf 20.47 0 Td [(x)]TJ/F62 9.9626 Tf 8.834 0 Td [(ar)18(e)-362(in)-361(strict)-362(sequential)-361(or)18(der)74(,)-390(ther)18(efor)18(e)-362(no)-361(indir)18(ect)-362(addr)18(essing)-362(is)]TJ -55.657 -11.955 Td [(r)18(equir)18(ed.)]TJ +/F62 9.9626 Tf 150.705 706.129 Td [(to)]TJ/F67 9.9626 Tf 12.29 0 Td [(AS)]TJ/F62 9.9626 Tf 14.063 0 Td [(and)]TJ/F67 9.9626 Tf 20.47 0 Td [(x)]TJ/F62 9.9626 Tf 8.833 0 Td [(ar)18(e)-362(in)-361(strict)-362(sequential)-362(or)18(der)74(,)-389(ther)18(efor)18(e)-362(no)-361(indir)18(ect)-362(addr)18(essing)-362(is)]TJ -55.656 -11.955 Td [(r)18(equir)18(ed.)]TJ 0 g 0 G ET -1 0 0 1 146.769 574.688 cm +1 0 0 1 197.579 574.688 cm q .49594 0 0 .49594 0 0 cm q @@ -29341,9 +29646,9 @@ q Q Q 0 g 0 G -1 0 0 1 -146.769 -574.688 cm +1 0 0 1 -197.579 -574.688 cm BT -/F62 9.9626 Tf 166.233 552.771 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F62 9.9626 Tf 217.042 552.771 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G @@ -29355,7 +29660,7 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 114.839 401.402 cm +1 0 0 1 165.649 401.402 cm 0 0 313.823 115.567 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29364,7 +29669,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 136.657 506.308 Td [(do)]TJ +/F102 8.9664 Tf 187.467 506.308 Td [(do)]TJ 0 g 0 G [-525(j)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -29377,7 +29682,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.415 -10.958 Td [(if)]TJ + 9.414 -10.958 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29400,7 +29705,7 @@ BT 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 g 0 G - 9.414 -10.959 Td [(ir1)]TJ + 9.415 -10.959 Td [(ir1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -29434,11 +29739,11 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(else)]TJ + -9.415 -10.959 Td [(else)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 g 0 G - 9.414 -10.959 Td [(ir1)]TJ + 9.415 -10.959 Td [(ir1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -29471,7 +29776,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(if)]TJ + -9.415 -10.959 Td [(end)-525(if)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 -10.959 Td [(do)]TJ @@ -29483,7 +29788,7 @@ BT [(ir1,ir2)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 9.414 -10.959 Td [(y\050i\051)]TJ + 9.415 -10.959 Td [(y\050i\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -29515,26 +29820,26 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(do)]TJ + -9.415 -10.959 Td [(end)-525(do)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(do)]TJ + -9.414 -10.959 Td [(end)-525(do)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F62 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ +/F59 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F62 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -97.969 -26.976 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_dia_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ + -97.968 -26.976 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_dia_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 220.639 cm +1 0 0 1 150.705 220.639 cm 0 0 343.711 115.567 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29543,7 +29848,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 325.546 Td [(type)]TJ +/F102 8.9664 Tf 163.108 325.546 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29563,7 +29868,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29633,32 +29938,32 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.918 Td [(end)-525(type)]TJ + -9.415 -21.918 Td [(end)-525(type)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F59 9.9626 Tf -12.404 -39.731 Td [(Hacked)-250(DIA)]TJ/F62 9.9626 Tf 0 -19.039 Td [(Storage)-362(by)-362(DIAgonals)-362(is)-362(an)-362(attractive)-362(option)-361(for)-362(matrices)-362(whose)-362(coef)18(\002cients)]TJ 0 -11.955 Td [(ar)18(e)-247(located)-246(on)-247(a)-246(small)-247(set)-247(of)-246(diagonals,)-248(since)-246(they)-247(do)-246(away)-247(with)-247(storing)-246(explic-)]TJ 0 -11.955 Td [(itly)-361(the)-361(indices)-361(and)-361(ther)18(efor)18(e)-362(r)18(educe)-361(signi\002cantly)-361(memory)-361(traf)18(\002c.)-643(However)74(,)]TJ 0 -11.955 Td [(having)-229(a)-229(few)-228(coef)18(\002cients)-229(outside)-229(of)-229(the)-228(main)-229(set)-229(of)-229(diagonals)-228(may)-229(signi\002cantly)]TJ 0 -11.955 Td [(incr)18(ease)-201(the)-201(amount)-202(of)-201(needed)-201(padding;)-217(mor)18(eover)74(,)-211(while)-201(the)-202(DIA)-201(code)-201(is)-201(easily)]TJ +/F59 9.9626 Tf -12.403 -39.731 Td [(Hacked)-250(DIA)]TJ/F62 9.9626 Tf 0 -19.039 Td [(Storage)-362(by)-362(DIAgonals)-362(is)-362(an)-362(attractive)-362(op)1(tion)-362(for)-362(matrices)-362(whose)-362(coef)18(\002cients)]TJ 0 -11.955 Td [(ar)18(e)-247(located)-246(on)-247(a)-246(small)-247(set)-247(of)-246(diagonals,)-248(since)-246(they)-247(do)-246(away)-247(with)-247(storing)-246(explic-)]TJ 0 -11.955 Td [(itly)-361(the)-361(indices)-361(and)-361(ther)18(efor)18(e)-362(r)18(edu)1(ce)-362(signi\002cantly)-361(memory)-361(traf)18(\002c.)-643(However)74(,)]TJ 0 -11.955 Td [(having)-229(a)-229(few)-228(coef)18(\002cients)-229(outside)-229(of)-229(the)-228(main)-229(set)-229(of)-229(diagonals)-228(may)-229(signi\002cantly)]TJ 0 -11.955 Td [(incr)18(ease)-201(the)-201(amount)-202(of)-201(needed)-201(padding;)-217(mor)18(eover)74(,)-211(while)-201(the)-202(DIA)-201(code)-201(is)-201(easily)]TJ 0 g 0 G - 164.384 -29.888 Td [(167)]TJ + 164.383 -29.888 Td [(170)]TJ 0 g 0 G ET endstream endobj -2118 0 obj +2145 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/dia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2126 0 R +/PTEX.InfoDict 2153 0 R /BBox [0 0 499 211] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2127 0 R ->>/Font << /R8 2128 0 R/R10 2129 0 R>> +/R7 2154 0 R +>>/Font << /R8 2155 0 R/R10 2156 0 R>> >> /Length 2502 /Filter /FlateDecode @@ -29676,7 +29981,7 @@ $ rca™ñ8ÏzD—‹bH…°d'¥¢šÃ\LÀ/ó¹¬1ÙŒ,0F c¨)T#  7Ì,¥j7ß%Î¥šäÛæ›RÙ6ßq4›/ÉÙ¸g]åû\¦—×\ÃW\¬ò+3,êmó½Lr´›ïJŽ·Í7ñÅÓÐÈþ¶ù&þ?9³ù.y’QQШ» Ñ•Œ&Gs¼m¾7ì“LÏ‹I7=šûmóM¹m›/]”o›/ÉvóUQxT»ù._àlÛæ»òâ›QUÔÌá×.Ü$Rg{çæñÊØcé‚Lçúqçþú1º‡ç×><>¾bûJ:ªŠÞËÃ_ƽ:dº’·p>yºovª†ç¿‘ã¿ûîã·ÏÓ‘¯ì-u„縑óß¿Ë&& endstream endobj -2131 0 obj +2158 0 obj << /Filter /FlateDecode /Length 177 @@ -29686,7 +29991,7 @@ x ¢t s1#8ý÷ÕUÃlŽÉV‹"α’¡Cc×fÄb/Šû²íôåÅ9ሪ=Fp©œQbæxÖÁïÒàCvQùðY¢ endstream endobj -2133 0 obj +2160 0 obj << /Filter /FlateDecode /Length 197 @@ -29695,7 +30000,7 @@ stream xœ]Mƒ …÷œ‚ˆFmL»qѦi{ÄÁ° ꢷï0j]¼ Ìß#k»kçÝʳGœÍ Vn",ó ðFçY^ðÁ™õ ŠfÒeíM‡÷'Ç°;ßõÙ3¿ÐM¾×˜y€%hQû˜BIk?ü=Õ{AoÌ3“„ÀÈd™+’+Äš°Jh ›ËªP²*â ±Q$ĆFŸCÒÉι=7[ŒàWòLž’çá÷-a©Š£ØsÇbã endstream endobj -2134 0 obj +2161 0 obj << /Filter /FlateDecode /Length1 9528 @@ -29729,7 +30034,7 @@ E ó˜Ÿó_ ù[ØCÛ×,š0Z­ÊþÛ Ê+é×…¬Ã¿]úi ^gù\Þo´ùȯ›‰ò'/! `¢ìÁŠàÆ?GÿÁžÿ…&X‘³œ‰çI,¯ÖÆåbøQ ~¼ü÷8É߇㈭^×Ô:·éÛ š×ÕßZ½pÎ"£'ÛõDÊrms#×0F~6Mc£øÓ´ÎåBi6U ¯éÿðȾü?ôèGNÔÙý_XR‡=ñÑè—$=zC/]l»¼ÃQd‰E3ꊭÿîi endstream endobj -2135 0 obj +2162 0 obj << /Filter /FlateDecode /Length1 4304 @@ -29755,18 +30060,18 @@ Hp —øï}Ø».|wy endstream endobj -2140 0 obj +2167 0 obj << -/Length 9255 +/Length 9264 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 150.705 706.129 Td [(vectorized,)-267(it)-264(does)-263(not)-264(necessarily)-263(make)-264(optimal)-264(use)-263(of)-264(the)-264(memory)-263(hierar)18(chy)111(.)]TJ 0 -11.955 Td [(While)-228(pr)18(ocessing)-229(each)-228(diagonal)-229(we)-228(ar)18(e)-229(updating)-228(entries)-228(in)-229(the)-228(output)-229(vector)]TJ/F67 9.9626 Tf 335.99 0 Td [(y)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)]TJ -341.22 -11.955 Td [(which)-290(is)-291(then)-290(accessed)-291(multiple)-290(times;)-311(if)-290(the)-290(vector)]TJ/F67 9.9626 Tf 229.535 0 Td [(y)]TJ/F62 9.9626 Tf 8.124 0 Td [(is)-290(too)-291(lar)18(ge)-290(to)-291(r)18(emain)-290(in)]TJ -237.659 -11.956 Td [(the)-250(cache)-250(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 14.944 -12.068 Td [(The)]TJ/F60 9.9626 Tf 20.923 0 Td [(hacked)-426(DIA)]TJ/F62 9.9626 Tf 53.49 0 Td [(\050)]TJ/F59 9.9626 Tf 3.317 0 Td [(HDIA)]TJ/F62 9.9626 Tf 28.224 0 Td [(\051)-426(format)-426(was)-426(designed)-426(to)-427(contain)-426(the)-426(amount)-426(of)]TJ -120.898 -11.956 Td [(padding,)-416(by)-384(br)18(eaking)-383(the)-383(original)-383(matrix)-383(into)-383(equally)-384(sized)-383(gr)18(oups)-383(of)-383(r)18(ows)]TJ 0 -11.955 Td [(\050)]TJ/F60 9.9626 Tf 3.317 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-271(and)-267(then)-266(storing)-267(these)-266(gr)18(oups)-267(as)-267(independent)-266(matrices)-267(in)-267(DIA)-266(format.)]TJ -25.075 -11.955 Td [(This)-256(appr)18(oach)-256(is)-257(similar)-256(to)-256(that)-256(of)-257(HLL,)-256(and)-256(r)18(equir)18(es)-256(using)-256(an)-257(of)18(fset)-256(vector)-256(for)]TJ 0 -11.955 Td [(each)-283(submatrix.)-411(Again,)-292(similarly)-283(to)-284(HLL,)-283(the)-284(various)-283(submatrices)-284(ar)18(e)-283(stacked)]TJ 0 -11.955 Td [(inside)-313(a)-314(linear)-313(array)-314(to)-313(impr)18(ove)-314(memory)-313(management.)-500(The)-314(fact)-313(that)-314(the)-313(ma-)]TJ 0 -11.955 Td [(trix)-337(is)-336(accessed)-337(in)-336(slices)-337(helps)-337(in)-336(r)18(educing)-337(cache)-336(misses,)-359(especially)-336(r)18(egar)18(ding)]TJ 0 -11.956 Td [(accesses)-250(to)-250(the)-250(vector)]TJ/F67 9.9626 Tf 95.959 0 Td [(y)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -86.245 -12.068 Td [(An)-246(additional)-246(vector)]TJ/F60 9.9626 Tf 93.666 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.566 0 Td [(is)-246(pr)18(ovided)-246(to)-246(complete)-246(the)-246(matrix)-246(format;)]TJ -157.176 -11.956 Td [(given)-321(that)]TJ/F60 9.9626 Tf 48.303 0 Td [(hackSize)]TJ/F62 9.9626 Tf 37.686 0 Td [(is)-321(the)-320(number)-321(of)-321(r)18(ows)-321(of)-320(each)-321(hack,)-339(the)]TJ/F60 9.9626 Tf 180.964 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 49.311 0 Td [(vector)]TJ -316.264 -11.955 Td [(is)-321(made)-321(by)-322(an)-321(array)-321(of)]TJ/F93 10.3811 Tf 105.045 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-235(+)]TJ/F62 9.9626 Tf 16.868 0 Td [(1)-321(elements,)-339(pointing)-321(to)-322(the)-321(\002rst)-321(diag-)]TJ -177.205 -11.955 Td [(onal)-289(of)18(fset)-290(of)-289(a)-289(submatrix)-289(inside)-290(the)-289(stacked)]TJ/F60 9.9626 Tf 198.567 0 Td [(offsets)]TJ/F62 9.9626 Tf 27.788 0 Td [(buf)18(fers,)-299(plus)-289(an)-290(additional)]TJ -226.355 -11.955 Td [(element)-350(equal)-350(to)-350(the)-351(number)-350(of)-350(nonzer)18(o)-350(diagonals)-350(in)-350(the)-350(whole)-351(matrix.)-610(W)92(e)]TJ 0 -11.955 Td [(thus)-315(have)-314(the)-315(pr)18(operty)-315(that)-315(the)-314(number)-315(of)-315(diagonals)-315(of)-314(the)]TJ/F60 9.9626 Tf 267.65 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.499 0 Td [(hack)]TJ/F62 9.9626 Tf 21.068 0 Td [(is)-315(given)]TJ -308.815 -11.955 Td [(by)]TJ/F60 9.9626 Tf 13.539 0 Td [(hackOffsets[k+1])-250(-)-250(hackOffsets[k])]TJ/F62 9.9626 Tf 133.667 0 Td [(.)]TJ +/F62 9.9626 Tf 99.895 706.129 Td [(vectorized,)-267(it)-264(does)-263(not)-264(necessarily)-263(make)-264(optimal)-264(use)-263(of)-264(the)-264(memory)-263(hierar)18(chy)111(.)]TJ 0 -11.955 Td [(While)-228(pr)18(ocessing)-229(each)-228(diagonal)-229(we)-228(ar)18(e)-229(updating)-228(entries)-228(in)-229(the)-228(output)-229(vector)]TJ/F67 9.9626 Tf 335.99 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)]TJ -341.221 -11.955 Td [(which)-290(is)-291(then)-290(accessed)-291(multiple)-290(times;)-311(if)-290(the)-290(vector)]TJ/F67 9.9626 Tf 229.536 0 Td [(y)]TJ/F62 9.9626 Tf 8.124 0 Td [(is)-290(too)-291(lar)18(ge)-290(to)-291(r)18(emain)-290(in)]TJ -237.66 -11.956 Td [(the)-250(cache)-250(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 14.944 -12.068 Td [(The)]TJ/F60 9.9626 Tf 20.923 0 Td [(hacked)-426(DIA)]TJ/F62 9.9626 Tf 53.49 0 Td [(\050)]TJ/F59 9.9626 Tf 3.318 0 Td [(HDIA)]TJ/F62 9.9626 Tf 28.224 0 Td [(\051)-426(format)-426(was)-426(designed)-426(to)-427(co)1(ntain)-427(the)-426(amount)-426(of)]TJ -120.899 -11.956 Td [(padding,)-416(by)-384(br)18(eaking)-383(the)-383(original)-383(matrix)-383(into)-383(equally)-384(sized)-383(gr)18(oups)-383(of)-383(r)18(ows)]TJ 0 -11.955 Td [(\050)]TJ/F60 9.9626 Tf 3.318 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-271(and)-266(then)-267(storing)-267(these)-266(gr)18(oups)-267(as)-267(independent)-266(matrices)-267(in)-267(DIA)-266(format.)]TJ -25.076 -11.955 Td [(This)-256(appr)18(oach)-256(is)-257(similar)-256(to)-256(that)-256(of)-257(HLL,)-256(and)-256(r)18(equir)18(es)-256(using)-257(an)-256(of)18(fset)-256(vector)-256(for)]TJ 0 -11.955 Td [(each)-284(submatri)1(x.)-411(Again,)-292(similarly)-283(to)-284(HLL,)-283(the)-284(various)-283(submatrices)-284(ar)18(e)-283(stacked)]TJ 0 -11.955 Td [(inside)-313(a)-314(linear)-313(array)-314(to)-313(impr)18(ove)-314(memory)-313(management.)-500(The)-314(fact)-313(that)-314(the)-313(ma-)]TJ 0 -11.955 Td [(trix)-337(is)-336(accessed)-337(in)-336(slices)-337(helps)-337(in)-336(r)18(educing)-337(cache)-336(misses,)-359(especially)-336(r)18(egar)18(ding)]TJ 0 -11.956 Td [(accesses)-250(to)-250(the)-250(vector)]TJ/F67 9.9626 Tf 95.959 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -86.246 -12.068 Td [(An)-246(additional)-246(vector)]TJ/F60 9.9626 Tf 93.666 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.567 0 Td [(is)-246(pr)18(ovided)-246(to)-246(complete)-246(the)-246(matrix)-245(format;)]TJ -157.177 -11.956 Td [(given)-321(that)]TJ/F60 9.9626 Tf 48.303 0 Td [(hackSize)]TJ/F62 9.9626 Tf 37.686 0 Td [(is)-321(the)-320(number)-321(of)-321(r)18(ows)-321(of)-320(each)-321(hack,)-339(the)]TJ/F60 9.9626 Tf 180.964 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 49.312 0 Td [(vector)]TJ -316.265 -11.955 Td [(is)-321(made)-322(b)1(y)-322(an)-321(array)-321(of)]TJ/F93 10.3811 Tf 105.045 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-235(+)]TJ/F62 9.9626 Tf 16.868 0 Td [(1)-321(elements,)-339(pointing)-321(to)-322(the)-321(\002rst)-321(diag-)]TJ -177.205 -11.955 Td [(onal)-289(of)18(fset)-290(of)-289(a)-289(submatrix)-289(inside)-290(the)-289(stacked)]TJ/F60 9.9626 Tf 198.567 0 Td [(offsets)]TJ/F62 9.9626 Tf 27.789 0 Td [(buf)18(fers,)-299(plus)-289(an)-290(additional)]TJ -226.356 -11.955 Td [(element)-350(equal)-350(to)-350(the)-351(number)-350(of)-350(nonzer)18(o)-350(diagonals)-350(in)-350(the)-351(whole)-350(matrix.)-610(W)92(e)]TJ 0 -11.955 Td [(thus)-315(have)-314(the)-315(pr)18(operty)-315(that)-315(the)-314(number)-315(of)-315(diagonals)-315(of)-314(the)]TJ/F60 9.9626 Tf 267.65 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.499 0 Td [(hack)]TJ/F62 9.9626 Tf 21.068 0 Td [(is)-315(given)]TJ -308.815 -11.955 Td [(by)]TJ/F60 9.9626 Tf 13.539 0 Td [(hackOffsets[k+1])-250(-)-250(hackOffsets[k])]TJ/F62 9.9626 Tf 133.667 0 Td [(.)]TJ 0 g 0 G ET -1 0 0 1 197.579 381.801 cm +1 0 0 1 146.769 381.801 cm q .4451 0 0 .4451 0 0 cm q @@ -29775,20 +30080,20 @@ q Q Q 0 g 0 G -1 0 0 1 -197.579 -381.801 cm +1 0 0 1 -146.769 -381.801 cm BT -/F62 9.9626 Tf 198.751 359.883 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F62 9.9626 Tf 147.941 359.883 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -33.102 -24.137 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_hdia_sparse_mat)]TJ/F62 9.9626 Tf 109.837 0 Td [(:)]TJ + -33.102 -24.137 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_hdia_sparse_mat)]TJ/F62 9.9626 Tf 109.837 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 120.326 cm +1 0 0 1 99.895 120.326 cm 0 0 343.711 203.238 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29797,7 +30102,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 163.108 312.904 Td [(type)]TJ +/F102 8.9664 Tf 112.299 312.904 Td [(type)]TJ 0 g 0 G [-525(pm)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29882,7 +30187,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29998,571 +30303,374 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 142.565 -36.164 Td [(168)]TJ +/F62 9.9626 Tf 142.566 -36.164 Td [(171)]TJ 0 g 0 G ET endstream endobj -2136 0 obj +2046 0 obj << -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (../figures/hdia.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 2143 0 R -/BBox [0 0 556 211] -/Resources << -/ProcSet [ /PDF /ImageC /Text ] -/ExtGState << -/R7 2144 0 R ->>/XObject << -/R8 2145 0 R ->>/Font << /R9 2146 0 R/R11 2147 0 R>> +/Type /ObjStm +/N 100 +/First 998 +/Length 13028 +>> +stream +2035 0 2036 145 2037 292 2042 434 577 493 2043 551 2044 610 2045 669 2039 728 2050 875 +2038 1032 2047 1176 2048 1323 2052 1467 2049 1525 2055 1672 2057 1790 2054 1849 2065 1930 2058 2123 +2068 2299 2059 2475 2060 2658 2061 2811 2062 2966 2063 3118 2067 3269 581 3327 585 3384 2064 3441 +2079 3563 2071 3720 2072 3870 2074 4017 2081 4163 589 4222 593 4280 2082 4338 2083 4397 2078 4456 +2088 4593 2094 4732 2095 4912 2077 4955 2090 5102 2085 5160 2091 5218 2092 5277 2093 5335 2087 5392 +2099 5528 2111 5667 2112 5847 2114 5890 2115 6095 2116 6384 2118 6605 2076 6818 2101 6964 2086 7023 +2102 7082 2103 7141 2104 7200 2105 7259 2106 7318 2107 7377 2108 7436 2109 7494 2097 7553 2110 7612 +2098 7671 2127 7863 2133 8020 2134 8200 2135 8243 2136 8546 2137 8751 2139 8964 2123 9185 2124 9332 +2125 9479 2129 9624 2130 9682 2131 9741 2126 9799 2148 10005 2153 10144 2154 10324 2155 10367 2156 10568 +2157 10863 2159 11084 2146 11297 2150 11444 2143 11503 2151 11562 2144 11621 2152 11680 2147 11738 2166 11891 +% 2035 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 253.023 420.271 265.083] +/A << /S /GoTo /D (spdata) >> >> -/Length 3027 -/Filter /FlateDecode +% 2036 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 184.772 409.811 196.831] +/A << /S /GoTo /D (precdata) >> >> -stream -xœÝZK9Ý¿¢–E×øýX˜ 4IKE¬&êeXÌßç\û>\î$HhFBQé{¿ãû´OÙ®úx¸ÓŽþñÿÏ·oÞÔãý¿oÞ?ßÜñýÍ÷~ºpøÖÛéòñ¬ -߆âéöö–ý†Å‚ñîÌ6c‰á¬õð.1X4!“ÂtìyG±fE¥P7”h.¨Üvk.¨öÕ^¢Ø†Í•ýŽbÍŠªg«(ˆO¥Npög£³¢xÈnb}mˆ+(xw‰âJ~±âª;¨¾E·DqŸX±‚êYú¬DÓ¦ûÈsM4©GHµï(Ñ,¨àÆRÍŠJqG‰fEÕ¨ú… žÚ˜à¡œ™ÐaLùgÓø44<Áw”hT -mC©fEå¾£D³¢Ú T{‰ÂÂõsVú™a+šs»hZP9í(ÖŒúá¯4mŽEÐ[?1WÆdè ÛºRÓ†ÍJ'Ó*¯aæRVÅÀ2FƒÌ£`BØ0¬XóˆY+!•ì±¯šÑᬕÈŠ5Tp»-Öê#¨¸œÁ·šœ‹;°²ÝñÓß?ÿ„ )"E:Ù&_4Ó±ì(Ѭ¨v”hõJ‰‡Wy×)îÔñAÜX²9ö#?Ï!û¿™œ±þ›?o¦I'ÖÖ¡Ð -ˆ hHz>iÊ9og¤U˜(”?a†EÀ³u¶ßaÈFg0Pð«ùŒõ]½ùÏ>[pSÐ؇(©É@I]LsqF(ÓwépF­ºOM‹å‘ëLN’»X¸ÖÿQ‚§sé>- é@¤–´D–ÕE“Ý;~·†€bšsMÒ(»ÖÄgCyj¯KC*’K®hGj…I’9-‘­' bF-pé\\ ‚*¯’°$0DÉjþlZ*´tÅ…3DkŠ‹´ôµ'S\Z¿KGxôµþÚlnböeiHèg-=kðtCTÆJó¾®+¤Ÿ)øn+¤ Žæu ÏÖýºBi yš´œÔ…&­ˆY± sÙ|èlç ÆRIX¢äÇ56-²†àéÚxvŒàbA —ù$²õD\µpmÂãeuXXĨƒ¹r0ñiŠÂ¶Olâ‡aa00)CŸ¦HÓœ{º­ϱ<[ÐÖ±ãë;÷ØjlK{ˆ®÷¹oÇïþ²%º eá[hPצ¤9c()©¬œešIijùN}(#†°KKB™QÖ&„ -±ÑžG 7DÔÙgû=fZ:š·‚‹yl$oApYÔOíŇL~‰‚‡F9å5Öh¦Ó‚Ubú0º”(„O%Já[ÉÃY2]£fáÚIÉЮ”b^)yˆÆÁü%JFšqGê5 …žÎÈ4C`ôc^¹Çs.­ ¨ÝDbš¦kAGã’ÐE5þìiàË\+ˆ ÁA£Á,Ä4zŠãИ’S],¹q -àÕÀ–ÅèÚWšÙ‡ñZ1m¹©†CË8?¬¹e—¶Ühc·æÖó57‘-7ÖhhlABg–›Ä ŽQ ìYP×¾ÖÌÆZkaðfÃÞ%÷1#YSñüõtÃIoÃ`·FzT#Ô:ž©""ÒÒw+ ÄÁíj€eqA#Xƒ#͸g =з‰ 1€cP€D-¶,ÆZûJ3k-Í^Zn¢‘Ðrœ³ABÏqLË-‡9Ÿæ|S,›cÕphbABg–›Ä ‰Z lYŒµö•fF]æf^˜ò¨gÚ8ų7ÕÄŠýlT3"ª± Ú¿þV)Z?·¾ãf̺¡1Ö°X]]ƒùLÈ¿†ÙYáKjÏ¢ÖKedjˆ›<Ÿ®ð/o•¢‡‹í—çÛ>úéÆÅPó\+u¿Uóq™¿¨Ùñ¼(q|KàcÉtõ¼h|¤;ÓDŸ8TÜè3¦ÆÃYË«HŒÇŠ”Û+½’¬Q‹‰n¨û±ûìþǨÙ¡k£1*R$¢™®`˜jš“†Òè •f‘ª,vU#žÅûØ}JoÒ|íYÖ„5%sMè%Çxé?k‚SW-"RMXQ»Ö„G°Æ|d®ÉÕ§Ô„ì5kšéŠjÒãéÕwjt·n²¨VUÁne4;Ørô!”6t„A· ¡Y!éeB±:³h ¬yâJà×:ùD#†R[Dï°a§˜Ì–Isµ<H«eÕðd¡ èm8Ï% P§õ§#Þ´Ï·màxG¼ÎZË‘ýn9s…#Àƒjõ§á‚N5‚ÌcG,r©™®Çum”Ò|ûi¬½–»8¾PÃôE!øæ*]Šâ ÛæGR,_#ù¬ÝÍ?fCésöâÄñßâÝ´Ï·}$½”Ç®`Ly®…ÈR+Q—æ#­ÍK³ÙzT&zµ)ŠH_x6£=“¥O±ôù¢Og„ixLEð8•ˆÉ«KŽc³2žÙOO¦áU ¡òjSÃJ[êYâE,l^yÖÑgeƒ”´Ø¢þð™‰o² }DêBtôú§ëÏÎ'ºÖÑ"ý¨†ù‡Ç +Š}–é惄†Ì¶fbôBÍ™þïñùøÍÃí›7ýéxøñ6¿qžßŸ`Ú dœöPÀ‡çÛ{õð›Ïø%¥ƒ^w¬ã_îÎ…)ôzÜãÉŽ-îú ƒʪ#Oú! smèéRßa÷ý»;ÿê¾aÃì\º«¯þúð‡Û=–ŒsØﮆßÝݦ@ïwñÕ}Íî.ã?„NC ¬Ô,PŒ˜{¤ …áÛÔ…öJŸ«÷ôº8¬å¹×ô}¯ ÏHzw÷û׿ýãñ§ï¾{‹ÀU­áîÛ‡}±£ÇÀ„nbURA4Ûƒãǹ@7ú#Ãׯ"íW}¼{{¼~ófZÍÍã‡êðg)wæG?Üþ4º‘ -endstream -endobj -2145 0 obj +% 2037 0 obj << -/Subtype /Image -/ColorSpace /DeviceGray -/Width 2362 -/Height 946 -/BitsPerComponent 1 -/Interpolate true -/Filter /CCITTFaxDecode -/DecodeParms << -/K -1 -/Columns 2362 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.303 116.52 469.357 128.58] +/A << /S /GoTo /D (vdata) >> >> -/Length 150 +% 2042 0 obj +<< +/D [2040 0 R /XYZ 149.705 753.953 null] >> -stream -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0l?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@ -endstream -endobj -2149 0 obj +% 577 0 obj << -/Filter /FlateDecode -/Length 177 +/D [2040 0 R /XYZ 150.705 716.092 null] >> -stream -xœ]1à EwNÁ €0´C”%]24ªÚ^€€‰ˆ¡·/8I‡¶ülë›õÃmð.SöHA¿ Së¼I°†-i ÌÎÑPãt>³^T$¬¿«øþD eìΣZ€=Å;b×è``JCR~ÒrÞµÖv¼ùÉ]0Ùc³1ç%“V¡KUP¼ J¼vêêáêð4Dõ–øŒo ÍjÏyø}C¬*Z‚|ïY› -endstream -endobj -2151 0 obj +% 2043 0 obj << -/Filter /FlateDecode -/Length 213 +/D [2040 0 R /XYZ 150.705 397.916 null] >> -stream -xœ]1Â0 E÷œ"7hZ(¢Rä.¦ÊÐ4 -eàöØ.00<«/µ¥oW»Ãþ⬫s™ügb ->¦gñ¨{¼Ç¤êFÑÏ“êG—Uµ;º|{eÔÔ€añ“±ºÔ¼ÔËŒŸ|d籸tGe(LÃ߯nè糡NƪʮkŒ¡JºtÅÚ’nD[Ö-¤[ÖÒž5€@JIlÛ€m׬ôEÚ@ÚIÎo"ŽÌ»WÕþY -¦Y$àÅcÂß ó”yJê Ûál« -endstream -endobj -2152 0 obj +% 2044 0 obj << -/Filter /FlateDecode -/Length1 10604 -/Length 7344 +/D [2040 0 R /XYZ 150.705 398.076 null] >> -stream -xœÍzyxTU²xÕ9÷ÞîNÒésÓÙ:!!„%±%7+K !áÓIXÂf!( LÂ(¢…qpâ‚ð‡NG° >‰>ynê¸>G¢âˆÎd†qw„ô¯ÎM@ù}ó½ïÍ÷ýþøÝCUSUg«S§Î9À =À¡¶¦.7ô/ãB [×4wŒ•Ó3°¶uÃzû—sÞÛJŒ÷ Ï/ëX¾fj×\c€Ü¹|õÆecúITÏôhÛÒæ%/]©È, æ”6bDd†<IåÔ¶5ëoïï+BöÕí­Íãý yäšæ;”ÕÖä?Mȯo^³t\_ÔS;Ú;ו3…¾½cÝҎח¹¨­ÐzK¬|ªl‰|$>$8Kpntvà‚¼ -ÔÑ•aAµŸ'Ü û ÎãDx†`6<%P {`œ‚# -ñe@…r8N´ƒJˆAîƒwáZXŸÀ0d@|€áÔNt@4>#\·Ž“V”Áo`WcäR~&ËFõ¼+01x5ð•„O05Ð3)÷'ƒtè†_B8¬„—„¡àfü àRÔXWÁQx«(76ÊÂjªõÆàPàLàSxFBXJ-ýn¥û`ˆMàerØ! ®†¹ÐLÒŸÁ»¹H”î#îø‚¹Øo¹Æá‚YзÃCd·à,|Á8ÄC”^ÿÊïÐت  6‘_=HÖ;‡á8Nĉ,†Åµb ®!Ù.ØOýÀi¬ÂÂgù~9o´8ˆ -|@ÔÓ÷Á³ÔÇW˜G:ÔOáë¥di½œq+Íp <§á5Çd÷¯á;Ì¢ô!û9ë, - |Bc1‚ ¦Áp'Ù6 Jiì5¤]Gmï UòŸÒ[4Ë0´Ó,¦á\œËqÞ~|ße -s°µìsîå/ó÷¥)²(¢–¢!™úUa´Ñ -üœ¬}'Í÷ ¼/b¦aÍè-ªÿ »Š•Sz„bðm|—tA¾etxôÏ£?zÁ@^6ƒìГþ†Ñ4†L\‰ø1|7{’‡r+Wùd^Âð~+ßÃÿ‹ÿ^Z'’Þ“gÉÍò!Cóèõ£¯ª7“-W:dCL%ÿYFÞ´ŠÆ×Ail†­Ð w¿Ü }pˆæ}^„7áðZ@yõ¾†¼nÞAé><ŒÏâ ø"~ˆßˆÄR(e°)¬˜•±J¶œm£´‡fo±s<‘·ònÞCi/?Æß•@’¤€œOi¦¼C> ¼lÈ0Ì4´_¹0r1ëbÃÅFa4~ôßFï}vôÓÀÂÀF¿r`t;ò>òÁý”'O<¿…Wàm}¬_ C™<>Uò†lZµbœ³(ÍÁy”®¡´SjÆl£Ô=ø ¼ oÆÛñ.=ÝKsÛÿŽÇ(=…ƒ”ÞÄ3ø'ü¿`äÄŒ“7;Y:Ëe…4Ó26ƒÕ°ù”–³vJlÛ@+t€ °ãì-Á<‡7óµü>þþÿÿ^bR¶”+¹¥…Òré&é”ôšôŽôƒl“+ä6y¯üœ’ (×(+•{•#Ê9å‚A1ÔZ › 0ŒNŠV¿£y…Ÿ~¹Ê)ì”#¥ÙÚ±¼CÞŽ×Ŷ€¯æwð×åexžÛñ=ìå+øªÀ#¼’}ÇÛq!;‰)Ü&ñe°xˆ}ȾbŸJQ¸€}†Ò/ñ)Ö΢":‘ߢ¤›äsìm(b[pˆ½Àoâ7þŠä½xFÞË^»4Ì"à íêíìªô{¶‚í€z©@þVÝÿ]¾‘ì=ÝŠYüÒ^ø„«ìK‘¢Äë° 9æ‘ï\úFázÚ{X:Å´ -Š&o`>ÄÂ=ï¿}ZDlùyùÙC<æC4²—¡ˆöÆ'”êáȇAòÁ[!Ý ›=¸„âþŠŸ ü¸r1˜¢e ­›Î‹h–B±°‰zýŽâÿKõ«ð¯pÚig A†$$;¥ -ŠLŠ¿;(-F*=w*Gå7 c$ûè^òò÷á::s>¦þãÁMã[ IÙ4j;EæµTãÑ™ Qº^F[hÌÓiŸ×J3)òÞXI3\AgT5‰/ŠÀ=PFk7?pS`4 -\ Ë¡.pâ¦Àv¹-”]RÅØñy:þwPÜž ïQí²l<‡c2¸Wr’¥f©äzó× ý“•jÅ -ÏLÚj4FoDY=O` c9–Àõ¦È¯½Ü²(Ô‡ˆ¶$§¢ûÿ¿ÁH¬sÐ^éµzfŽá† ‡ãYÉ8/jéäÇjãsò¹®,_uEùŠá…ôr°”ƪ,îí ºBVIÁª··RµWözz›ýžÕnU{óz^ßÛQá¹´üþÀàŽoåΚDåˆ;"£°È -?¬o-Ò맟Aç˜à :}ÚA¦óÎJ¼j‰¥·$;âTTäk~¢® :õedæë_|bþðÙaºˆÚˆqÆ K>ð•–Žg¦LË dåäŸ) âÀßÿ€Ÿ¡CE¯51!ÿ|‰™È:ãmÐÇÿ^o 5-ßIþ -É_â/Òy*ª½è3‡åSƒ¿ãOÑ-ÝF÷У㒣¡aùPÒÉo§é >M0Lpž@‚v~º v!ÀBØFKP#8ü?DãÜOõ-„s Ú vH°€?NüUóƒ|%Œ6¾“¦QDwð_éôQ¢ñD&>=øCTtßxù~¢Bþëqþ}TŽ&zï8½‡ø DïÖ¼6~×xyïÒë­§}¼Ó—l³–$“ÜNGÀ)·‡r{Èt{¨„‘.v«õžú‰æ]3FÉ\[|U_£-1qù}dÒ-dú-d¹-d¹- ‘hó%Íc:9|3él&ͤ³™¬’Ç;©¿NZ0 l%°p²{'Ù]𽄇Nëü› ï&è%~Ù1“Fu_éË°‘“-(Ôò‹OÐ=©ÙeqIù»~,™‚„# §¡»T—.0…îÒø¤1JZ«JBy+üŒ€A$áT‚‚r‰·úRsmƒ|.¬1‚jëfݼ[ê–¥¼r ?Éó¡Öä’á<ܤikrãT©ÃÔcâV“Ý”gÒLµ&¹žD»8·ñ\^Ìkx—ý!Ÿ¡hm†R4iwp_°7x(øt°ìU†”ÓÊ°r^‘íJž¢)µŠGéPz”ÝJŸbÚ­ì60OpGpO0·Ûƒó‚µàÚ`ÙfÀ¾’m¼ElZÂV‚‚ÝÙ¸‰øv~A­F™â:âa ’•à4凉ÊT²ž…ô,ĵ×B\ ,$µ‚Žq©rYr©ŽÐ?/$é$ %n(Ùv˜ðy‘#˜M%3•ÌT2“ÖivFh%l'¨%à:o˜€¼†ð%YÞ¸ÜC èòóºÎ%™&ê² ZsúP&z3±/wg¢æ..É×R…‡‡7©MΦŒ¦ýR»ÚîlÏhß/Õ¨5ΚŒšýR±Zì,Î(Þ/媹ÎÜŒÜý’Mµ9m¶ýÒ®ê#Õ'«OUKMÕíÕÝÕ|*-݀ϕ—¯Ó§ G}qñùS-%W³#4&ÂûÎp°¶ä´ÈìˆÎ}‚¸O÷ ¨!h"©Ö"Ķ˟.9!gWÈ9Mþ°¯hRMI5…Ý&‚}œÚ>LòúöXîˆÎ÷Öù5ãú}:_hÙ.ÕAp±îÓ6\ ÅM2œâ‹à µNØFÐAp„@â‹)-â‹Ø”³Ã<[3OŒ²At4,áaFk‰•…/˜ñ ŽïÕñm:.Öqª:ÛüÍló3³Í·Ì6§S†eÐdÆ=:vhÁ%æ'KÌ5%æÌ3µ0³(+ãŸuèpê4-úàÍ¢S£OÝJ­(O:ÏÚ¾uŸ‡¯ÑâÛkûøišßB*~„³|‡l¯æòÙNeûÑyÌö{õ„í…T?.ôÙ†²ýFœÌö3wŽí~u±í>'•}¶­ÙO‹aÀšñB7dO·U»Ù*~$±æ¦Î´ [‘ºÎVHìi~œ5pÈ61Õ/†’Gm:fË¢ÓT}(×Ld“Á€]Z¶a½¡Å°Ð0Ïp•a’!Ç`7$ ‘Æp£Õj 1FÅ(™Œ‘þÀ°æ÷¶HŪÿÄ' ,éy+˜é?ýC#£½ãàU¬ª®½áUPµ Ô;ÕUå7æ{§¹ª¼ÆÚ«ïG¼£J^v«aA=9¨`mK»ã€˜»íöA7o»½¡«¼C­PÕb÷~SGó¢Kª¬–ÆBô†âØâðéa…•åÿyƱëÇ/ÖõÓ/6É{wU]½÷ñ¤o¾È’ª¼3ijð8[ËÚ+ʳAêã&¶¶b¾àã¦ò†ËjÂ:H Ü‚µHj‚ºZµ®FnšRQÞŸ’2¦ôÎJä>ÏéJËÇÚJ¥.¨­ZAH%CªÞV*KjäcY~ÚX EoÌzc‰B©ßé$•l§PéŸê$…~çT]|èG±êN8õ~œØ ÷ƒø£NƘyÁ¸3’Žëÿå·´ô_PÆæ÷—´ŠÇ¹G­XJàñîØÐëíi±Ûû—¼?þjOó´´¶ Ú¼Ôû¾º´Ü»D-·÷7·þq«7«åýÐZ± ¾¿U[ZîkÖš+Ôæò†ÇºËª®èë¶Ë}•uÿ“ƺEce¢¯Çªþ‰¸Jˆ}U‰¾ªD_ié}UÍ/ŪÚú~#”6ÐëN§,8ˆöƒ'ÁÑPm혮oŽ«±?O”€Ž­`z‡¨¥^3å”ä”íN! -?¿Œ‹b~•#aŽ‹¬ÄSKÁ±+Ê/ÿëìì\/ «ËEx}W¬Î[O›ÖQWå­E·×]áÕ<å (–£kü+«×¬'ݧܬÝÝíÞåÞç>â–»ºˆ~2åT -kJiOéNÙ•²/åHŠ"×ÖÓÜûRþ–»țp=}åzŸ]DéŸ(®ïêPcݹº\eõ%)ÐJ·^¤zD¨“êdøOÂo|Lð%7þÁ#‚Ãsx=ÝËE .tbyþ@Þäüi~¢ÍËÆhÝâ1Z1wŒºKòc‰úŠ'•XèŽ0Hø%‚÷>'øÌóy¾Þxט×6tB§ iø@…õuºÖ£‹2(̽¾ÓåÂÁiHÕ…Wú=`g)hAˆ’ÎíÕº½¬ÇÄÃYÖïÌôŠžÓÏð{†.«vÒ²ägÏ<É!È 2G⌊|’ä 8f‚ Wáuë²~ã¾èžkýÊ=碊)o½@hbž#Ìæ$D¡.ØùÐM†À. Q—öçøSr½ÔSaÐ×l´Ó©é“å(AÌæx?Z´pS<¤iiLKó¤õ¥ §Iia‚ÚDünØ}4î8ç &ÓQë¢4Ιkm\ûÍœ()™˜W¶Q«ÆT55%•) 92ÅàLLHJHNàJDšÅœÇ‡Ö6%¾#C)B¹T´·`‚‘P¸5ªâ‚é1E ,²²¶F„O2)?&:,’)jJzÚTkLô¤ü)S§„¤§¥§©)…ÍÞ¹~±çÍ÷ßúFËs[×<_Q¸vÊúä y©…™Eå“g°½ç°f~ɾFüeôØ]Ÿ<ûíè¹þ»š×ÆÂs÷wæ9®®}@·™–é8Ù,ˆnqokÑf -îfÍÂ5 f…`”&ˆÜ$+(…›A -1KJˆÙìÇD-Ü`Œ4ŒF.”#ØÌh>ÐJã>Í,£b2*ŠQ–BB¤tþp0â2-Ød²pÜÇpÆýø­KW]¤»=–>Ë°…[Í€†¸ÐA¼ãÒ¬u‹htÏùª‘²² -Ÿ(.̵º)X/®s‡†bXxáö .i‹õy‘µX,ó`]#6®]‡Qj˜昌“ˆ ?~lÿÅçX×õûGSñ«;FËzø/.ìd]lÒÿ°çÉ& -Ù$îÑ"µXOl_ìp¬±Z,Û· -‰Àtã5a¤ßŠ¼‘ò*UþŽf²¢‰ø…Fw9 31”MÆÆa¿%õYZxh¨E ›œgé¶ì¦YK–¸˜A–ŠgÇ]Îåžc9kž_즹`X!|=r¿v¹hN¸¶1Â9),2::&Ê1y:›,ÜBxÅyœíˆp_;Ê<Ó¢ƒ Îxg©ô»‡~ؾnZ2s:YÒÄMìý=Yöd›˜cuà,ß/WC0‰pD¡ŠÚ†ôß³·GÝx×莵y &%ÉÕiÿxFz!a‚'xlë°‡ÕÓ£ˆC±fgrOÒ’)Ý2¢þƒ fÅZôànìÃÓ¨  ŽB´`±ËÅFò-È!L}7Š^uL¾ø‹¹g¼mŠ5 ÉGò±ú8†}!…&ñk†;¤°ÄTT\•"2afæ´L­ÀSpª`¸àÛ `‰©[Ý4áñÔ㩃^œpF=ãüï Ÿ§|æ ™eÌôãÎŒ +øÙÙÓy˜ççG¹lÆh?î;š¤¹r ’èY1`5gfœÀ6ˆûX ®µ÷ØÙn{ŸÙý|Ò€7Cü¸›ø9=9lwN_Ë!þÑ&C·üì-H+À¾‚¡V@k4ý)-âd‹ˆ›$ÂÞ¹KaמּçF×~%ÐYŠÅ]#ëŠGG sÇ"á” ¹ÉiAIIq¨ŽT‡Ó!)²34--ˆB\®”Ó‚ÉÊ9‚Ó[0È4AÉkA›9IÄ<«{ü|ÉÚJŸîÓë`--ï=òEE¢R)i“ tV´'ë0MU…ߧo+ê¿ù‘E¥ƒ[z:îýóm­¹Ž¸ø°cœYËîQãm®»çÚköÍÜ깿Mš}Û]+kïÙ;ñØϼ[–§'eåb%xïꚪiI%ÉA×Ý\³¼û±±õm¡õÝHûÃAþ\ö¨„á É+’»ån¥;i§t{’a2›ì¸†_c_äX•¸AÞ˜¸õÆ÷&>šúÔaÕBo;‹5,<"*:Æifœ‹€fwDÚ¹dwÄ'$rC¬$w߀ÝîˆÄïéôÐ(²âGÀ>r8hû âtzXÏ8Úcèë†_Óº©¨©•©äß³²>:D#šÉ®Yû¬Ì—2ˆwágú"žm¤0bm1R_ʳ´±(O§˜¾€UÂÂc -·'¸d -š -b£5B#]Ž´àUR{ø’ä¹#InlÀF48 ’XE1Щ4¶,—…Ö$ùƹ£m hºÛ¢›çunÜÔ>AOÏ­šÓÕ¿wÇš§Q’«?–¾÷Vÿªc=éSëò]VGA÷ÏÞ,Ê10‹8‹êÉæý´§b!F´¬.Ó† Baz×ù™SQ8nᛤMÑÛb$·1C‘¹—§p{“´'ŽÙÓ0-ÍBÛøöXÅÑ?`1Óí5±Z8…®,-‹iYž¬¾¬á,)+n̾$‚k„="/B‹ØÑaˆˆËüñp¡qÎųã7} Pp"ë5Ž¬#sá˜Íh#d':MáI‰É‰L sšÓœ&•\ݚЎPÊ¥¥µ`b¸½RBÁ¥#_x¿îûÊ ÂžÂçÅ‘Vž:e*Q‘—M¬¦(üî›<²*u÷/w¼²|ó+;šŸ¹-ß­ºøJøŒÊI³Ývë–´Er›Ó\óðïnkö>¾óñk0éέ¿X¾½Îóaiî£÷ú‡]x¸Þ¢à÷:+gëx‹”(½®ßÆþ -)~§MO À¿öѵ9(Ì`”þÅšÿÿ~Lѱ$ìs~j @8G`ñèsÖóÂj -YÑF.þÎ X°bÍÒιKo˜ß¾¦ùúÚº9 ô,p÷xýÿÍg¼²xή`ŒÿK)ÄDÀl;Áy‚jö8Ô­ƒ¨[ßÿáí°×þÒï=2ØdqmŒëøá“žôèÕðÃú‹;­EÆP%ï÷ÿ=X -endstream -endobj -2153 0 obj +% 2045 0 obj << -/Filter /FlateDecode -/Length1 5080 -/Length 3303 +/D [2040 0 R /XYZ 150.705 386.121 null] >> -stream -xœÍW}pÇu{¾ûÀá@‚îp)!H€`HŠ¦(J´TY–,pdÙ$EËr¤„uÕöäÃi’Zƒ6¶•hœŽëIâL:I󇻢S[IGi:´V“ŽËq;©;ã~ØhR'ÓvEöí¤d7MÿëanoßÛ·ï÷~ûvBððpø¶£E œGþw,Ž/Ÿ[\íÈÒòüòù‡ô€ü$*~ŠïS÷­ž>i¿mg¸•Óg¹¯cï~ péþ•ÅS¼ÿ‹O(_Eeù~Tx–ùÿ -Êý÷Ÿ{èᎽr‹Ñ³Y^ìÎÄ¢ïÜâëdM¼Šöÿ…²þáÅs+Ýõ½ŠEbõ#}¨Ûÿ1Ö¾úàÊjc±÷€+Žkº›µ+ÜÓHáoe˜„¸ÏÑ‚cø;Òiø0|ª Ap;FA‡Ýp Á‡à ,Á)@…¸"ÌA?œ ¼†»`<¿ á·`>Ÿ„£ðˆìÇá7á³?…<å>\£·ž¯S0wÇ©«MÕÝ'êú+”(#ñ%yýïh0W \þÀ‘Ú^³n(Ÿ?×éÌášAgêêʳ®†iag¦©õ¸a$ôõ€p5Ǻk3³HÞÔ×»“›zíÀÑ„AI½Ö@‡̆©7æ"ëÐéÂ>*²0ȸn‰9À*òûh°¹øÀ½7zº*yt¢ñ8ƒíÖSfÃCõõÉÄKØͯÁ ™™%^aœ’«±òHÍ\ÂÕ›³ üs‘Ÿ9Rk"÷,Ï6‰NðCõeÚ³Ò·5—š§¨E\°(8¤ÇóÙÍq8%¼úîÅkªðÓ¼ç 9šùg˜ö#Ã9”9ˆ±®ÞßÅV÷ dós”|PïášMÈu{žE”ŠHÖ謄ZÅb´\²b%«RÒÌ—SJZ˜ ‹Í—žœYõ>Õ§U¾zîÓ…ƒ·œ?#$`Ñjöe‘úXÈYÍl“²JCÛ·`eN½;Mé0%B´aô±¦ÝH¯"ñü -:%‰³g3¤A„ÑÒ®ï¶ç¬Á¿âeÄïs/TèÕ'6þåi}‚ôM¥íCŠæ>ƒ\êÙõw2#H8ÞíqÉ÷ŽŸQ¿]I»°Íœ&ö˜ÁjéÊËÏíOGBrÅÓÆxÀ€Yh‹hã(mÁ‡¬Ê)Û c‰û)ˆAóÅÛ¶‰ß`¡Š““lËðÌG·“RJNzQFGx3æ;¡šæÈ©Ç/¿ðäSüâ¾¾ÜD%¹ëP!ˆæª¢áï=ó¥+ßöKß%Ç÷¯ÎåÅáÝÇo*--MN.-mÇ+‹ñê‡ç¡`Y9è„…ú¬fe'|m§ÒR:áJDY,š/×J»QÜ%iW»éN3­›ørÍ´›UÓ¦/Gh¶H#부1MYM!Â?ÚDV0 ŠEÏÝ51!u ¢­!½c"FJ°x»ƒHØPÕVØ.”Ù.4GHŽ¼?Æš£ÍIR²Ê•y]ó혺hLl¼YMéNá{Båc¢Á‹“C>í)óÇSýü 1|rÏ@H}ÍœìÜ-R›¿ ÿ€1OCs€qY/Ùy b´hûpw†"s$*1g‹E*¬c¾´5¹Ýáƒè‰&Ú€AM†ÛöNüj¸z³JAú#ÞíÕóìÀIÊkAQb›ì|× *5…ävùddîbÐÇnØ«#¤sð é;'Šs°”bŽ“GgOÞ={z~xÉß+¨±žøòäÈÄÜm˵óÇ­ÓÁ€Hb)-»´§2÷xqa´r¼zðžLæojwŒíØŸ;=ýkg2Jø•ßÝåG ù164}ŒÅ˜œJ+Ð!„ÂXÒ‹JVÙJ¦½ -Ã¥7†,I ùdI -Y2”bÚ¡,2 5Ī© n¸HÃë6 K’V3ÌÎÿ™0²„ÊcB©‘±Zýjô‹v ©¡v¨‘cÔàÈI¶Ç[­Úr/ÊbV‰Æ>@ <ÿ;CTGüKcâC'²}…kÿTÑ·yòx4ôÌLÖ§iþég'Ã¥Ûÿ@qcä;ש28þætfk݆8iøo¨©0x¢}$!ñB ´šÄa>q£{,¥Ç‹Ô½Þr‰pšºÚÛa> +/ProcSet [ /PDF /Text ] >> -stream -0 g 0 G -0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -q -1 0 0 1 99.895 662.293 cm -0 0 343.711 49.813 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 112.299 690.488 Td [(contains)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 4.707 -10.959 Td [(....)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.707 -10.959 Td [(end)-525(type)]TJ -0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0 g 0 G -/F62 9.9626 Tf 151.98 -578.132 Td [(169)]TJ -0 g 0 G -ET - -endstream -endobj -2161 0 obj +% 2050 0 obj << -/Length 7014 +/Type /Page +/Contents 2051 0 R +/Resources 2049 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2053 0 R +/Annots [ 2038 0 R 2047 0 R 2048 0 R ] >> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(For)-285(computing)-285(with)-285(CUDA)-285(we)-285(de\002ne)-285(a)-285(dual)-285(memorization)-285(strategy)-285(in)-285(which)]TJ 0 -11.955 Td [(each)-368(variable)-368(on)-368(the)-369(CPU)-368(\050\223host\224\051)-368(side)-368(has)-368(a)-368(GPU)-368(\050\223device\224\051)-368(side.)-665(When)-368(a)]TJ 0 -11.955 Td [(GPU-type)-355(variable)-355(is)-355(initialized,)-382(the)-355(data)-355(contained)-355(is)-356(\050usually\051)-355(the)-355(same)-355(on)]TJ 0 -11.955 Td [(both)-246(sides.)-309(Each)-246(operator)-245(invoked)-246(on)-246(the)-246(variable)-246(may)-246(change)-246(the)-246(data)-246(so)-246(that)]TJ 0 -11.956 Td [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 14.944 -11.955 Td [(Keeping)-208(track)-209(of)-209(the)-208(updates)-209(to)-208(data)-209(in)-208(the)-209(variables)-208(is)-209(essential:)-289(we)-209(want)-208(to)]TJ -14.944 -11.955 Td [(perform)-220(most)-221(comp)1(utations)-221(on)-220(the)-220(GPU,)-221(but)-220(we)-220(cannot)-220(af)18(for)18(d)-221(the)-220(time)-220(needed)]TJ 0 -11.955 Td [(to)-327(move)-326(data)-327(between)-326(the)-327(host)-327(memory)-326(and)-327(the)-326(device)-327(memory)-327(because)-326(the)]TJ 0 -11.955 Td [(bandwidth)-351(of)-352(the)-351(inter)18(connection)-352(bus)-351(would)-351(become)-352(the)-351(main)-352(bottleneck)-351(of)]TJ 0 -11.955 Td [(the)-262(computation.)-347(Thus,)-265(each)-263(and)-262(every)-262(computational)-262(r)18(outine)-262(in)-263(the)-262(library)-262(is)]TJ 0 -11.956 Td [(built)-250(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ -0 g 0 G - 13.888 -18.472 Td [(\225)]TJ -0 g 0 G - [-500(If)-254(the)-253(data)-254(type)-253(being)-254(handled)-254(is)-253(GPU-enabled,)-255(make)-253(sur)18(e)-254(that)-254(its)-253(device)]TJ 11.018 -11.955 Td [(copy)-351(is)-352(up)-351(to)-351(date,)-377(perform)-351(any)-351(arithmetic)-351(operation)-351(on)-352(the)-351(GPU,)-351(and)]TJ 0 -11.955 Td [(if)-314(the)-313(data)-314(has)-314(been)-313(alter)18(ed)-314(as)-313(a)-314(r)18(esult,)-330(mark)-313(the)-314(main-memory)-314(copy)-313(as)]TJ 0 -11.955 Td [(outdated.)]TJ -0 g 0 G - -11.018 -19.199 Td [(\225)]TJ -0 g 0 G - [-500(The)-266(main-memory)-266(copy)-266(is)-266(never)-267(u)1(pdated)-267(unless)-266(this)-266(is)-266(r)18(equested)-266(by)-266(the)]TJ 11.018 -11.955 Td [(user)-250(either)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -19.199 Td [(explicitly)]TJ -0 g 0 G -/F62 9.9626 Tf 47.582 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ -0 g 0 G -/F59 9.9626 Tf -47.582 -15.213 Td [(implicitly)]TJ -0 g 0 G -/F62 9.9626 Tf 49.793 0 Td [(by)-276(invoking)-276(a)-277(method)-276(that)-276(involves)-276(other)-277(data)-276(items)-276(that)-276(ar)18(e)]TJ -27.875 -11.955 Td [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ -46.824 -19.199 Td [(In)-264(this)-264(way)111(,)-268(data)-264(items)-264(ar)18(e)-265(put)-264(on)-264(the)-264(GPU)-264(memory)-265(\223on)-264(demand\224)-264(and)-264(r)18(emain)]TJ 0 -11.955 Td [(ther)18(e)-337(as)-337(long)-337(as)-337(\223normal\224)-337(computations)-337(ar)18(e)-337(carried)-337(out.)-571(As)-337(an)-336(example,)-359(the)]TJ 0 -11.955 Td [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 150.705 364.481 cm -0 0 343.711 16.936 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 172.523 370.757 Td [(call)]TJ -0 g 0 G - [-525(psb_spmm\050alpha,a,x,beta,y,desc_a,info\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -/F62 9.9626 Tf -21.818 -23.482 Td [(will)-321(transpar)18(ently)-322(and)-321(automatically)-321(be)-322(performed)-321(on)-321(the)-322(GPU)-321(whenever)-321(all)]TJ 0 -11.955 Td [(thr)18(ee)-274(data)-274(inputs)]TJ/F67 9.9626 Tf 78.001 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)]TJ/F67 9.9626 Tf 5.282 0 Td [(x)]TJ/F62 9.9626 Tf 7.961 0 Td [(and)]TJ/F67 9.9626 Tf 19.598 0 Td [(y)]TJ/F62 9.9626 Tf 7.962 0 Td [(ar)18(e)-274(GPU-enabled.)-382(If)-275(a)-274(pr)18(ogram)-274(makes)-274(many)-274(such)]TJ -124.034 -11.956 Td [(calls)-250(sequentially)111(,)-250(then)]TJ -0 g 0 G - 13.888 -18.472 Td [(\225)]TJ -0 g 0 G - [-500(The)-322(\002rst)-322(kernel)-322(invocation)-322(will)-322(\002nd)-322(the)-322(data)-322(in)-322(main)-322(memory)111(,)-340(and)-322(will)]TJ 11.019 -11.955 Td [(copy)-356(it)-357(to)-356(the)-357(GPU)-356(memory)111(,)-383(thus)-356(incurring)-357(a)-356(signi\002cant)-356(over)18(head;)-410(the)]TJ 0 -11.955 Td [(r)18(esult)-250(is)-250(however)]TJ/F60 9.9626 Tf 78.155 0 Td [(not)]TJ/F62 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ -0 g 0 G - -104.945 -19.199 Td [(\225)]TJ -0 g 0 G - [-500(Subsequent)-378(kernel)-377(invocations)-378(involving)-377(the)-378(same)-377(vector)-378(will)-378(\002nd)-377(the)]TJ 11.018 -11.955 Td [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ -24.906 -18.472 Td [(For)-285(al)1(l)-285(invocations)-285(af)1(ter)-285(the)-285(\002rst)-284(the)-285(only)-284(data)-285(that)-284(will)-285(have)-284(to)-285(be)-284(transferr)18(ed)]TJ 0 -11.955 Td [(to/fr)18(om)-298(the)-298(main)-298(memory)-297(will)-298(be)-298(the)-298(scalars)]TJ/F67 9.9626 Tf 204.122 0 Td [(alpha)]TJ/F62 9.9626 Tf 29.12 0 Td [(and)]TJ/F67 9.9626 Tf 19.834 0 Td [(beta)]TJ/F62 9.9626 Tf 20.921 0 Td [(,)-310(and)-298(the)-298(r)18(eturn)]TJ -273.997 -11.955 Td [(code)]TJ/F67 9.9626 Tf 23.213 0 Td [(info)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -44.134 -20.101 Td [(V)111(ectors:)]TJ -0 g 0 G -/F62 9.9626 Tf 40.677 0 Td [(The)-253(data)-253(type)]TJ/F67 9.9626 Tf 63.08 0 Td [(psb_T_vect_gpu)]TJ/F62 9.9626 Tf 75.745 0 Td [(pr)18(ovides)-253(a)-253(GPU-enabled)-253(extension)-253(of)]TJ -154.595 -11.955 Td [(the)-306(inner)-307(type)]TJ/F67 9.9626 Tf 65.726 0 Td [(psb_T_base_vect_type)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)-321(and)-306(must)-307(be)-306(used)-306(together)-307(with)]TJ -170.333 -11.955 Td [(the)-327(other)-326(inner)-327(matrix)-326(type)-327(to)-327(make)-326(full)-327(use)-326(of)-327(the)-327(GPU)-326(computational)]TJ 0 -11.956 Td [(capabilities;)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.198 Td [(CSR:)]TJ -0 g 0 G -/F62 9.9626 Tf 27.945 0 Td [(The)-210(data)-210(type)]TJ/F67 9.9626 Tf 61.792 0 Td [(psb_T_csrg_sparse_mat)]TJ/F62 9.9626 Tf 111.928 0 Td [(pr)18(ovides)-210(an)-210(interface)-209(to)-210(the)-210(GPU)]TJ -176.758 -11.955 Td [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ -0 g 0 G - 139.476 -29.888 Td [(170)]TJ -0 g 0 G -ET - -endstream -endobj -2165 0 obj +% 2038 0 obj << -/Length 5445 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 654.503 418.548 666.562] +/A << /S /GoTo /D (vdata) >> >> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(HYB:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.061 0 Td [(The)-201(data)-202(typ)1(e)]TJ/F67 9.9626 Tf 61.537 0 Td [(psb_T_hybg_sparse_mat)]TJ/F62 9.9626 Tf 111.842 0 Td [(pr)18(ovides)-201(an)-201(interface)-202(to)-201(the)-201(HYB)]TJ -177.533 -11.955 Td [(GPU)-353(storage)-354(available)-354(in)-353(the)-354(NVIDIA)-353(CuSP)92(ARSE)-354(library)111(.)-621(The)-353(internal)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-251(is)-252(opaque,)-252(hence)-251(the)-252(host)-251(side)-252(is)-252(just)-251(CSR;)-252(the)-251(HYB)-252(data)-251(format)]TJ 0 -11.956 Td [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -20.26 Td [(ELL:)]TJ -0 g 0 G -/F62 9.9626 Tf 25.734 0 Td [(The)-290(data)-291(type)]TJ/F67 9.9626 Tf 64.203 0 Td [(psb_T_elg_sparse_mat)]TJ/F62 9.9626 Tf 107.501 0 Td [(pr)18(ovides)-290(an)-291(interface)-290(to)-291(the)-290(ELL-)]TJ -172.531 -11.955 Td [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -20.261 Td [(HLL:)]TJ -0 g 0 G -/F62 9.9626 Tf 27.946 0 Td [(The)-190(data)-190(type)]TJ/F67 9.9626 Tf 61.199 0 Td [(psb_T_hlg_sparse_mat)]TJ/F62 9.9626 Tf 106.5 0 Td [(pr)18(ovides)-190(an)-190(interface)-190(to)-190(the)-190(Hacked)]TJ -170.738 -11.955 Td [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -20.261 Td [(HDIA:)]TJ -0 g 0 G -/F62 9.9626 Tf 35.696 0 Td [(The)-341(data)-342(type)]TJ/F67 9.9626 Tf 65.722 0 Td [(psb_T_hdiag_sparse_mat)]TJ/F62 9.9626 Tf 118.468 0 Td [(pr)18(ovides)-341(an)-342(int)1(erface)-342(to)-341(the)]TJ -194.979 -11.955 Td [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F59 14.3462 Tf -24.907 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F59 11.9552 Tf 0 -24.857 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 514.195 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 513.996 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 514.195 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ -0 g 0 G - [-525(psb_cuda_init\050ctxt)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525([,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(device]\051)]TJ/F62 9.9626 Tf 14.944 -22.253 Td [(This)-250(subr)18(outine)-250(initializes)-250(the)-250(PSBLAS-CUDA)-250(envir)18(onment.)]TJ -0 g 0 G -/F59 9.9626 Tf -14.944 -20.177 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -20.26 Td [(device)]TJ -0 g 0 G -/F62 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-254(as:)-317(an)-254(integer)-253(value.)-575(Default:)-317(use)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 193.007 0 Td [(mod)]TJ -0 g 0 G - [(\050iam,ngpu\051)]TJ/F62 9.9626 Tf 70.521 0 Td [(wher)18(e)]TJ/F67 9.9626 Tf 29.935 0 Td [(iam)]TJ/F62 9.9626 Tf 18.218 0 Td [(is)]TJ -311.681 -11.955 Td [(the)-275(call)1(ing)-275(pr)18(ocess)-275(index)-274(and)]TJ/F67 9.9626 Tf 131.323 0 Td [(ngpu)]TJ/F62 9.9626 Tf 23.656 0 Td [(is)-275(the)-274(total)-275(number)-274(of)-275(CUDA)-274(devices)]TJ -154.979 -11.956 Td [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F59 11.9552 Tf -24.907 -20.176 Td [(Notes)]TJ -0 g 0 G -/F62 9.9626 Tf 12.454 -20.177 Td [(1.)]TJ -0 g 0 G - [-500(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F59 11.9552 Tf -12.454 -29.61 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 270.423 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 270.224 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 270.423 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ -0 g 0 G - [-525(psb_cuda_exit\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -22.254 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(CUDA)-250(context.)]TJ -0 g 0 G -/F59 9.9626 Tf -14.944 -20.176 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -20.261 Td [(ctxt)]TJ -0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ -0 g 0 G - 139.477 -29.888 Td [(171)]TJ -0 g 0 G -ET - -endstream -endobj -2041 0 obj +% 2047 0 obj << -/Type /ObjStm -/N 100 -/First 1000 -/Length 12945 ->> -stream -2032 0 2033 153 2034 308 2035 460 2039 612 577 671 581 729 2036 787 2052 909 2044 1066 -2045 1215 2047 1362 2054 1509 585 1567 589 1624 2055 1681 2056 1739 2051 1797 2062 1934 2068 2073 -2069 2253 2050 2296 2064 2443 2059 2502 2065 2561 2066 2620 2067 2679 2061 2737 2073 2873 2085 3012 -2086 3192 2088 3235 2089 3440 2090 3729 2092 3950 2049 4163 2075 4309 2060 4367 2076 4426 2077 4485 -2078 4544 2079 4603 2080 4662 2081 4721 2082 4780 2083 4838 2071 4897 2084 4956 2072 5014 2101 5206 -2106 5363 2107 5543 2108 5586 2109 5889 2110 6094 2112 6307 2097 6528 2098 6675 2099 6822 2103 6967 -2104 7026 2105 7085 2100 7144 2121 7350 2126 7489 2127 7669 2128 7712 2129 7913 2130 8208 2132 8429 -2119 8642 2123 8789 2116 8847 2124 8906 2117 8964 2125 9023 2120 9080 2139 9233 2143 9372 2144 9552 -2146 9595 2147 9802 2148 10103 2150 10324 2137 10537 2141 10684 2142 10743 2138 10802 2155 10982 2157 11100 -2154 11158 2160 11241 2162 11359 593 11418 2159 11476 2164 11598 2166 11716 597 11774 601 11830 2167 11887 -% 2032 0 obj +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 520.007 359.001 532.067] +/A << /S /GoTo /D (descdata) >> +>> +% 2048 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 183.768 418.548 195.827] +/A << /S /GoTo /D (vdata) >> +>> +% 2052 0 obj +<< +/D [2050 0 R /XYZ 98.895 753.953 null] +>> +% 2049 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1465 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2055 0 obj +<< +/Type /Page +/Contents 2056 0 R +/Resources 2054 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2053 0 R +>> +% 2057 0 obj +<< +/D [2055 0 R /XYZ 149.705 753.953 null] +>> +% 2054 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2065 0 obj +<< +/Type /Page +/Contents 2066 0 R +/Resources 2064 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2053 0 R +/Annots [ 2058 0 R 2068 0 R 2059 0 R 2060 0 R 2061 0 R 2062 0 R 2063 0 R ] +>> +% 2058 0 obj +<< +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [317.082 636.522 444.603 648.582] +/Subtype/Link/A<> +>> +% 2068 0 obj +<< +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [123.806 624.567 167.641 636.627] +/Subtype/Link/A<> +>> +% 2059 0 obj +<< +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [140.413 593.098 346.389 605.158] +/Subtype/Link/A<> +>> +% 2060 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [267.568 552.736 279.523 561.692] +/Rect [216.758 552.736 228.713 561.692] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 2033 0 obj +% 2061 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [283.001 552.835 294.956 561.841] +/Rect [232.191 552.835 244.146 561.841] /A << /S /GoTo /D (cite.CaFiRo:2014) >> >> -% 2034 0 obj +% 2062 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [298.433 552.736 310.389 561.841] +/Rect [247.624 552.736 259.579 561.841] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 2035 0 obj +% 2063 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [198.555 540.88 210.51 549.737] +/Rect [147.745 540.88 159.7 549.737] /A << /S /GoTo /D (cite.OurTechRep) >> >> -% 2039 0 obj +% 2067 0 obj << -/D [2037 0 R /XYZ 149.705 753.953 null] +/D [2065 0 R /XYZ 98.895 753.953 null] >> -% 577 0 obj +% 581 0 obj << -/D [2037 0 R /XYZ 150.705 716.092 null] +/D [2065 0 R /XYZ 99.895 716.092 null] >> -% 581 0 obj +% 585 0 obj << -/D [2037 0 R /XYZ 150.705 525.151 null] +/D [2065 0 R /XYZ 99.895 525.151 null] >> -% 2036 0 obj +% 2064 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F102 1016 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1021 0 R >> /ProcSet [ /PDF /Text ] >> -% 2052 0 obj +% 2079 0 obj << /Type /Page -/Contents 2053 0 R -/Resources 2051 0 R +/Contents 2080 0 R +/Resources 2078 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2044 0 R 2045 0 R 2047 0 R ] +/Parent 2053 0 R +/Annots [ 2071 0 R 2072 0 R 2074 0 R ] >> -% 2044 0 obj +% 2071 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [121.315 282.166 133.27 291.173] +/Rect [172.124 282.166 184.079 291.173] /A << /S /GoTo /D (cite.MRC:11) >> >> -% 2045 0 obj +% 2072 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.836 246.183 265.791 255.592] +/Rect [304.646 246.183 316.601 255.592] /A << /S /GoTo /D (table.21) >> >> -% 2047 0 obj +% 2074 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [314.807 176.296 321.781 188.355] +/Rect [365.616 176.296 372.59 188.355] /A << /S /GoTo /D (figure.6) >> >> -% 2054 0 obj +% 2081 0 obj << -/D [2052 0 R /XYZ 98.895 753.953 null] +/D [2079 0 R /XYZ 149.705 753.953 null] >> -% 585 0 obj +% 589 0 obj << -/D [2052 0 R /XYZ 99.895 349.244 null] +/D [2079 0 R /XYZ 150.705 349.244 null] >> -% 589 0 obj +% 593 0 obj << -/D [2052 0 R /XYZ 99.895 231.907 null] +/D [2079 0 R /XYZ 150.705 231.907 null] >> -% 2055 0 obj +% 2082 0 obj << -/D [2052 0 R /XYZ 99.895 211.056 null] +/D [2079 0 R /XYZ 150.705 211.056 null] >> -% 2056 0 obj +% 2083 0 obj << -/D [2052 0 R /XYZ 99.895 120.166 null] +/D [2079 0 R /XYZ 150.705 120.166 null] >> -% 2051 0 obj +% 2078 0 obj << -/Font << /F120 1782 0 R /F102 1016 0 R /F62 667 0 R /F67 913 0 R /F59 665 0 R /F60 666 0 R >> +/Font << /F120 1787 0 R /F102 1021 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 2062 0 obj +% 2088 0 obj << /Type /Page -/Contents 2063 0 R -/Resources 2061 0 R +/Contents 2089 0 R +/Resources 2087 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2050 0 R ] +/Parent 2053 0 R +/Annots [ 2077 0 R ] >> -% 2068 0 obj +% 2094 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133929+01'00') /ModDate (D:20140329133929+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2069 0 obj +% 2095 0 obj << /Type /ExtGState /OPM 1 >> -% 2050 0 obj +% 2077 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.361 326.969 191.335 339.028] +/Rect [133.552 326.969 140.526 339.028] /A << /S /GoTo /D (algocf.1) >> >> -% 2064 0 obj +% 2090 0 obj << -/D [2062 0 R /XYZ 149.705 753.953 null] +/D [2088 0 R /XYZ 98.895 753.953 null] >> -% 2059 0 obj +% 2085 0 obj << -/D [2062 0 R /XYZ 150.705 716.092 null] +/D [2088 0 R /XYZ 99.895 716.092 null] >> -% 2065 0 obj +% 2091 0 obj << -/D [2062 0 R /XYZ 397.506 408.774 null] +/D [2088 0 R /XYZ 346.697 408.774 null] >> -% 2066 0 obj +% 2092 0 obj << -/D [2062 0 R /XYZ 150.705 264.598 null] +/D [2088 0 R /XYZ 99.895 264.598 null] >> -% 2067 0 obj +% 2093 0 obj << -/D [2062 0 R /XYZ 150.705 232.98 null] +/D [2088 0 R /XYZ 99.895 232.98 null] >> -% 2061 0 obj +% 2087 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R >> -/XObject << /Im6 2046 0 R >> +/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> +/XObject << /Im6 2073 0 R >> /ProcSet [ /PDF /Text ] >> -% 2073 0 obj +% 2099 0 obj << /Type /Page -/Contents 2074 0 R -/Resources 2072 0 R +/Contents 2100 0 R +/Resources 2098 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2049 0 R ] +/Parent 2053 0 R +/Annots [ 2076 0 R ] >> -% 2085 0 obj +% 2111 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2086 0 obj +% 2112 0 obj << /Type /ExtGState /OPM 1 >> -% 2088 0 obj +% 2114 0 obj << /BaseFont /YAZDUX+TimesNewRomanPSMT -/FontDescriptor 2090 0 R -/ToUnicode 2091 0 R +/FontDescriptor 2116 0 R +/ToUnicode 2117 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2089 0 obj +% 2115 0 obj << /BaseFont /NDNSMY+FreeSerif -/FontDescriptor 2092 0 R -/ToUnicode 2093 0 R +/FontDescriptor 2118 0 R +/ToUnicode 2119 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 0 0 0 0 0 385 0 0 0 0 0 0 0 667 529 0 0 0 0 0 701] /Subtype /TrueType >> -% 2090 0 obj +% 2116 0 obj << /Type /FontDescriptor /FontName /YAZDUX+TimesNewRomanPSMT @@ -30574,9 +30682,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2094 0 R +/FontFile2 2120 0 R >> -% 2092 0 obj +% 2118 0 obj << /Type /FontDescriptor /FontName /NDNSMY+FreeSerif @@ -30588,114 +30696,114 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2095 0 R +/FontFile2 2121 0 R >> -% 2049 0 obj +% 2076 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.587 583.767 391.56 595.827] +/Rect [435.396 583.767 442.37 595.827] /A << /S /GoTo /D (figure.5) >> >> -% 2075 0 obj +% 2101 0 obj << -/D [2073 0 R /XYZ 98.895 753.953 null] +/D [2099 0 R /XYZ 149.705 753.953 null] >> -% 2060 0 obj +% 2086 0 obj << -/D [2073 0 R /XYZ 389.217 621.446 null] +/D [2099 0 R /XYZ 440.026 621.446 null] >> -% 2076 0 obj +% 2102 0 obj << -/D [2073 0 R /XYZ 114.839 563.747 null] +/D [2099 0 R /XYZ 165.649 563.747 null] >> -% 2077 0 obj +% 2103 0 obj << -/D [2073 0 R /XYZ 114.839 567.034 null] +/D [2099 0 R /XYZ 165.649 567.034 null] >> -% 2078 0 obj +% 2104 0 obj << -/D [2073 0 R /XYZ 114.839 556.075 null] +/D [2099 0 R /XYZ 165.649 556.075 null] >> -% 2079 0 obj +% 2105 0 obj << -/D [2073 0 R /XYZ 114.839 545.116 null] +/D [2099 0 R /XYZ 165.649 545.116 null] >> -% 2080 0 obj +% 2106 0 obj << -/D [2073 0 R /XYZ 114.839 534.158 null] +/D [2099 0 R /XYZ 165.649 534.158 null] >> -% 2081 0 obj +% 2107 0 obj << -/D [2073 0 R /XYZ 114.839 523.199 null] +/D [2099 0 R /XYZ 165.649 523.199 null] >> -% 2082 0 obj +% 2108 0 obj << -/D [2073 0 R /XYZ 114.839 512.24 null] +/D [2099 0 R /XYZ 165.649 512.24 null] >> -% 2083 0 obj +% 2109 0 obj << -/D [2073 0 R /XYZ 114.839 501.281 null] +/D [2099 0 R /XYZ 165.649 501.281 null] >> -% 2071 0 obj +% 2097 0 obj << -/D [2073 0 R /XYZ 114.839 481.057 null] +/D [2099 0 R /XYZ 165.649 481.057 null] >> -% 2084 0 obj +% 2110 0 obj << -/D [2073 0 R /XYZ 99.895 294.895 null] +/D [2099 0 R /XYZ 150.705 294.895 null] >> -% 2072 0 obj +% 2098 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F102 1016 0 R /F120 1782 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> -/XObject << /Im7 2048 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F102 1021 0 R /F120 1787 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> +/XObject << /Im7 2075 0 R >> /ProcSet [ /PDF /Text ] >> -% 2101 0 obj +% 2127 0 obj << /Type /Page -/Contents 2102 0 R -/Resources 2100 0 R +/Contents 2128 0 R +/Resources 2126 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2097 0 R 2098 0 R 2099 0 R ] +/Parent 2132 0 R +/Annots [ 2123 0 R 2124 0 R 2125 0 R ] >> -% 2106 0 obj +% 2133 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2107 0 obj +% 2134 0 obj << /Type /ExtGState /OPM 1 >> -% 2108 0 obj +% 2135 0 obj << /BaseFont /MCSFLP+FreeSerif -/FontDescriptor 2110 0 R -/ToUnicode 2111 0 R +/FontDescriptor 2137 0 R +/ToUnicode 2138 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 385 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2109 0 obj +% 2136 0 obj << /BaseFont /AJRCAD+TimesNewRomanPSMT -/FontDescriptor 2112 0 R -/ToUnicode 2113 0 R +/FontDescriptor 2139 0 R +/ToUnicode 2140 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2110 0 obj +% 2137 0 obj << /Type /FontDescriptor /FontName /MCSFLP+FreeSerif @@ -30707,9 +30815,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2114 0 R +/FontFile2 2141 0 R >> -% 2112 0 obj +% 2139 0 obj << /Type /FontDescriptor /FontName /AJRCAD+TimesNewRomanPSMT @@ -30721,94 +30829,94 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2115 0 R +/FontFile2 2142 0 R >> -% 2097 0 obj +% 2123 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [453.687 438.686 460.661 450.746] +/Rect [402.878 438.686 409.852 450.746] /A << /S /GoTo /D (figure.5) >> >> -% 2098 0 obj +% 2124 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [362.965 188.317 369.938 200.376] +/Rect [312.155 188.317 319.129 200.376] /A << /S /GoTo /D (figure.8) >> >> -% 2099 0 obj +% 2125 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [477.685 140.43 484.659 152.49] +/Rect [426.875 140.43 433.849 152.49] /A << /S /GoTo /D (algocf.2) >> >> -% 2103 0 obj +% 2129 0 obj << -/D [2101 0 R /XYZ 149.705 753.953 null] +/D [2127 0 R /XYZ 98.895 753.953 null] >> -% 2104 0 obj +% 2130 0 obj << -/D [2101 0 R /XYZ 447.542 476.365 null] +/D [2127 0 R /XYZ 396.732 476.365 null] >> -% 2105 0 obj +% 2131 0 obj << -/D [2101 0 R /XYZ 150.705 223.169 null] +/D [2127 0 R /XYZ 99.895 223.169 null] >> -% 2100 0 obj +% 2126 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R /F102 1016 0 R /F120 1782 0 R /F69 1460 0 R /F91 914 0 R /F59 665 0 R >> -/XObject << /Im8 2096 0 R >> +/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R /F102 1021 0 R /F120 1787 0 R /F69 1465 0 R /F91 919 0 R /F59 669 0 R >> +/XObject << /Im8 2122 0 R >> /ProcSet [ /PDF /Text ] >> -% 2121 0 obj +% 2148 0 obj << /Type /Page -/Contents 2122 0 R -/Resources 2120 0 R +/Contents 2149 0 R +/Resources 2147 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2119 0 R ] +/Parent 2132 0 R +/Annots [ 2146 0 R ] >> -% 2126 0 obj +% 2153 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133927+01'00') /ModDate (D:20140329133927+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2127 0 obj +% 2154 0 obj << /Type /ExtGState /OPM 1 >> -% 2128 0 obj +% 2155 0 obj << /BaseFont /BNRUAU+TimesNewRomanPSMT -/FontDescriptor 2130 0 R -/ToUnicode 2131 0 R +/FontDescriptor 2157 0 R +/ToUnicode 2158 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 500 0 0 0 0 500] /Subtype /TrueType >> -% 2129 0 obj +% 2156 0 obj << /BaseFont /ICFUKB+FreeSerif -/FontDescriptor 2132 0 R -/ToUnicode 2133 0 R +/FontDescriptor 2159 0 R +/ToUnicode 2160 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2130 0 obj +% 2157 0 obj << /Type /FontDescriptor /FontName /BNRUAU+TimesNewRomanPSMT @@ -30820,9 +30928,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2134 0 R +/FontFile2 2161 0 R >> -% 2132 0 obj +% 2159 0 obj << /Type /FontDescriptor /FontName /ICFUKB+FreeSerif @@ -30834,241 +30942,430 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2135 0 R +/FontFile2 2162 0 R >> -% 2119 0 obj +% 2146 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.292 548.965 378.265 561.025] +/Rect [422.101 548.965 429.075 561.025] /A << /S /GoTo /D (figure.5) >> >> -% 2123 0 obj +% 2150 0 obj << -/D [2121 0 R /XYZ 98.895 753.953 null] +/D [2148 0 R /XYZ 149.705 753.953 null] >> -% 2116 0 obj +% 2143 0 obj << -/D [2121 0 R /XYZ 396.732 586.644 null] +/D [2148 0 R /XYZ 447.542 586.644 null] >> -% 2124 0 obj +% 2151 0 obj << -/D [2121 0 R /XYZ 99.895 537.967 null] +/D [2148 0 R /XYZ 150.705 537.967 null] >> -% 2117 0 obj +% 2144 0 obj << -/D [2121 0 R /XYZ 114.839 395.424 null] +/D [2148 0 R /XYZ 165.649 395.424 null] >> -% 2125 0 obj +% 2152 0 obj << -/D [2121 0 R /XYZ 99.895 199.14 null] +/D [2148 0 R /XYZ 150.705 199.14 null] >> -% 2120 0 obj +% 2147 0 obj << -/Font << /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F59 665 0 R /F120 1782 0 R >> -/XObject << /Im9 2118 0 R >> +/Font << /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F59 669 0 R /F120 1787 0 R >> +/XObject << /Im9 2145 0 R >> /ProcSet [ /PDF /Text ] >> -% 2139 0 obj +% 2166 0 obj << /Type /Page -/Contents 2140 0 R -/Resources 2138 0 R +/Contents 2167 0 R +/Resources 2165 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2137 0 R ] ->> -% 2143 0 obj -<< -/Producer (GPL Ghostscript 9.10) -/CreationDate (D:20140329133928+01'00') -/ModDate (D:20140329133928+01'00') -/Creator (cairo 1.13.1 \(http://cairographics.org\)) +/Parent 2132 0 R +/Annots [ 2164 0 R ] >> -% 2144 0 obj + +endstream +endobj +2163 0 obj << -/Type /ExtGState -/OPM 1 ->> -% 2146 0 obj -<< -/BaseFont /PBIKKX+TimesNewRomanPSMT -/FontDescriptor 2148 0 R -/ToUnicode 2149 0 R -/Type /Font -/FirstChar 45 -/LastChar 55 -/Widths [ 333 0 0 500 500 0 500 500 500 500 500] -/Subtype /TrueType ->> -% 2147 0 obj -<< -/BaseFont /ZBHFTP+FreeSerif -/FontDescriptor 2150 0 R -/ToUnicode 2151 0 R -/Type /Font -/FirstChar 32 -/LastChar 89 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] -/Subtype /TrueType ->> -% 2148 0 obj -<< -/Type /FontDescriptor -/FontName /PBIKKX+TimesNewRomanPSMT -/FontBBox [ 15 -13 638 675] -/Flags 65540 -/Ascent 675 -/CapHeight 675 -/Descent -13 -/ItalicAngle 0 -/StemV 95 -/MissingWidth 777 -/FontFile2 2152 0 R ->> -% 2150 0 obj -<< -/Type /FontDescriptor -/FontName /ZBHFTP+FreeSerif -/FontBBox [ 0 -71 706 752] -/Flags 65540 -/Ascent 752 -/CapHeight 679 -/Descent -71 -/ItalicAngle 0 -/StemV 105 -/MissingWidth 600 -/FontFile2 2153 0 R ->> -% 2137 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [440.392 356.078 447.366 368.137] -/A << /S /GoTo /D (figure.5) >> ->> -% 2141 0 obj -<< -/D [2139 0 R /XYZ 149.705 753.953 null] ->> -% 2142 0 obj -<< -/D [2139 0 R /XYZ 447.542 393.756 null] ->> -% 2138 0 obj -<< -/Font << /F62 667 0 R /F67 913 0 R /F60 666 0 R /F59 665 0 R /F93 915 0 R /F102 1016 0 R /F120 1782 0 R >> -/XObject << /Im10 2136 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2155 0 obj -<< -/Type /Page -/Contents 2156 0 R -/Resources 2154 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R ->> -% 2157 0 obj -<< -/D [2155 0 R /XYZ 98.895 753.953 null] +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (../figures/hdia.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2170 0 R +/BBox [0 0 556 211] +/Resources << +/ProcSet [ /PDF /ImageC /Text ] +/ExtGState << +/R7 2171 0 R +>>/XObject << +/R8 2172 0 R +>>/Font << /R9 2173 0 R/R11 2174 0 R>> >> -% 2154 0 obj -<< -/Font << /F102 1016 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] +/Length 3027 +/Filter /FlateDecode >> -% 2160 0 obj +stream +xœÝZK9Ý¿¢–E×øýX˜ 4IKE¬&êeXÌßç\û>\î$HhFBQé{¿ãû´OÙ®úx¸ÓŽþñÿÏ·oÞÔãý¿oÞ?ßÜñýÍ÷~ºpøÖÛéòñ¬ +߆âéöö–ý†Å‚ñîÌ6c‰á¬õð.1X4!“ÂtìyG±fE¥P7”h.¨Üvk.¨öÕ^¢Ø†Í•ýŽbÍŠªg«(ˆO¥Npög£³¢xÈnb}mˆ+(xw‰âJ~±âª;¨¾E·DqŸX±‚êYú¬DÓ¦ûÈsM4©GHµï(Ñ,¨àÆRÍŠJqG‰fEÕ¨ú… žÚ˜à¡œ™ÐaLùgÓø44<Áw”hT +mC©fEå¾£D³¢Ú T{‰ÂÂõsVú™a+šs»hZP9í(ÖŒúá¯4mŽEÐ[?1WÆdè ÛºRÓ†ÍJ'Ó*¯aæRVÅÀ2FƒÌ£`BØ0¬XóˆY+!•ì±¯šÑᬕÈŠ5Tp»-Öê#¨¸œÁ·šœ‹;°²ÝñÓß?ÿ„ )"E:Ù&_4Ó±ì(Ѭ¨v”hõJ‰‡Wy×)îÔñAÜX²9ö#?Ï!û¿™œ±þ›?o¦I'ÖÖ¡Ð +ˆ hHz>iÊ9og¤U˜(”?a†EÀ³u¶ßaÈFg0Pð«ùŒõ]½ùÏ>[pSÐ؇(©É@I]LsqF(ÓwépF­ºOM‹å‘ëLN’»X¸ÖÿQ‚§sé>- é@¤–´D–ÕE“Ý;~·†€bšsMÒ(»ÖÄgCyj¯KC*’K®hGj…I’9-‘­' bF-pé\\ ‚*¯’°$0DÉjþlZ*´tÅ…3DkŠ‹´ôµ'S\Z¿KGxôµþÚlnböeiHèg-=kðtCTÆJó¾®+¤Ÿ)øn+¤ Žæu ÏÖýºBi yš´œÔ…&­ˆY± sÙ|èlç ÆRIX¢äÇ56-²†àéÚxvŒàbA —ù$²õD\µpmÂãeuXXĨƒ¹r0ñiŠÂ¶Olâ‡aa00)CŸ¦HÓœ{º­ϱ<[ÐÖ±ãë;÷ØjlK{ˆ®÷¹oÇïþ²%º eá[hPצ¤9c()©¬œešIijùN}(#†°KKB™QÖ&„ +±ÑžG 7DÔÙgû=fZ:š·‚‹yl$oApYÔOíŇL~‰‚‡F9å5Öh¦Ó‚Ubú0º”(„O%Já[ÉÃY2]£fáÚIÉЮ”b^)yˆÆÁü%JFšqGê5 …žÎÈ4C`ôc^¹Çs.­ ¨ÝDbš¦kAGã’ÐE5þìiàË\+ˆ ÁA£Á,Ä4zŠãИ’S],¹q +àÕÀ–ÅèÚWšÙ‡ñZ1m¹©†CË8?¬¹e—¶Ühc·æÖó57‘-7ÖhhlABg–›Ä ŽQ ìYP×¾ÖÌÆZkaðfÃÞ%÷1#YSñüõtÃIoÃ`·FzT#Ô:ž©""ÒÒw+ ÄÁíj€eqA#Xƒ#͸g =з‰ 1€cP€D-¶,ÆZûJ3k-Í^Zn¢‘Ðrœ³ABÏqLË-‡9Ÿæ|S,›cÕphbABg–›Ä ‰Z lYŒµö•fF]æf^˜ò¨gÚ8ų7ÕÄŠýlT3"ª± Ú¿þV)Z?·¾ãf̺¡1Ö°X]]ƒùLÈ¿†ÙYáKjÏ¢ÖKedjˆ›<Ÿ®ð/o•¢‡‹í—çÛ>úéÆÅPó\+u¿Uóq™¿¨Ùñ¼(q|KàcÉtõ¼h|¤;ÓDŸ8TÜè3¦ÆÃYË«HŒÇŠ”Û+½’¬Q‹‰n¨û±ûìþǨÙ¡k£1*R$¢™®`˜jš“†Òè •f‘ª,vU#žÅûØ}JoÒ|íYÖ„5%sMè%Çxé?k‚SW-"RMXQ»Ö„G°Æ|d®ÉÕ§Ô„ì5kšéŠjÒãéÕwjt·n²¨VUÁne4;Ørô!”6t„A· ¡Y!éeB±:³h ¬yâJà×:ùD#†R[Dï°a§˜Ì–Isµ<H«eÕðd¡ èm8Ï% P§õ§#Þ´Ï·màxG¼ÎZË‘ýn9s…#Àƒjõ§á‚N5‚ÌcG,r©™®Çum”Ò|ûi¬½–»8¾PÃôE!øæ*]Šâ ÛæGR,_#ù¬ÝÍ?fCésöâÄñßâÝ´Ï·}$½”Ç®`Ly®…ÈR+Q—æ#­ÍK³ÙzT&zµ)ŠH_x6£=“¥O±ôù¢Og„ixLEð8•ˆÉ«KŽc³2žÙOO¦áU ¡òjSÃJ[êYâE,l^yÖÑgeƒ”´Ø¢þð™‰o² }DêBtôú§ëÏÎ'ºÖÑ"ý¨†ù‡Ç +Š}–é惄†Ì¶fbôBÍ™þïñùøÍÃí›7ýéxøñ6¿qžßŸ`Ú dœöPÀ‡çÛ{õð›Ïø%¥ƒ^w¬ã_îÎ…)ôzÜãÉŽ-îú ƒʪ#Oú! smèéRßa÷ý»;ÿê¾aÃì\º«¯þúð‡Û=–ŒsØﮆßÝݦ@ïwñÕ}Íî.ã?„NC ¬Ô,PŒ˜{¤ …áÛÔ…öJŸ«÷ôº8¬å¹×ô}¯ ÏHzw÷û׿ýãñ§ï¾{‹ÀU­áîÛ‡}±£ÇÀ„nbURA4Ûƒãǹ@7ú#Ãׯ"íW}¼{{¼~ófZÍÍã‡êðg)wæG?Üþ4º‘ +endstream +endobj +2172 0 obj << -/Type /Page -/Contents 2161 0 R -/Resources 2159 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R +/Subtype /Image +/ColorSpace /DeviceGray +/Width 2362 +/Height 946 +/BitsPerComponent 1 +/Interpolate true +/Filter /CCITTFaxDecode +/DecodeParms << +/K -1 +/Columns 2362 >> -% 2162 0 obj -<< -/D [2160 0 R /XYZ 149.705 753.953 null] +/Length 150 >> -% 593 0 obj +stream +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0l?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@ +endstream +endobj +2177 0 obj << -/D [2160 0 R /XYZ 150.705 716.092 null] +/Filter /FlateDecode +/Length 177 >> -% 2159 0 obj +stream +xœ]1à EwNÁ €0´C”%]24ªÚ^€€‰ˆ¡·/8I‡¶ülë›õÃmð.SöHA¿ Së¼I°†-i ÌÎÑPãt>³^T$¬¿«øþD eìΣZ€=Å;b×è``JCR~ÒrÞµÖv¼ùÉ]0Ùc³1ç%“V¡KUP¼ J¼vêêáêð4Dõ–øŒo ÍjÏyø}C¬*Z‚|ïY› +endstream +endobj +2179 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F102 1016 0 R /F67 913 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] +/Filter /FlateDecode +/Length 213 >> -% 2164 0 obj +stream +xœ]1Â0 E÷œ"7hZ(¢Rä.¦ÊÐ4 +eàöØ.00<«/µ¥oW»Ãþ⬫s™ügb +>¦gñ¨{¼Ç¤êFÑÏ“êG—Uµ;º|{eÔÔ€añ“±ºÔ¼ÔËŒŸ|d籸tGe(LÃ߯nè糡NƪʮkŒ¡JºtÅÚ’nD[Ö-¤[ÖÒž5€@JIlÛ€m׬ôEÚ@ÚIÎo"ŽÌ»WÕþY +¦Y$àÅcÂß ó”yJê Ûál« +endstream +endobj +2180 0 obj << -/Type /Page -/Contents 2165 0 R -/Resources 2163 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R +/Filter /FlateDecode +/Length1 10604 +/Length 7344 >> -% 2166 0 obj +stream +xœÍzyxTU²xÕ9÷ÞîNÒésÓÙ:!!„%±%7+K !áÓIXÂf!( LÂ(¢…qpâ‚ð‡NG° >‰>ynê¸>G¢âˆÎd†qw„ô¯ÎM@ù}ó½ïÍ÷ýþøÝCUSUg«S§Î9À =À¡¶¦.7ô/ãB [×4wŒ•Ó3°¶uÃzû—sÞÛJŒ÷ Ï/ëX¾fj×\c€Ü¹|õÆecúITÏôhÛÒæ%/]©È, æ”6bDd†<IåÔ¶5ëoïï+BöÕí­Íãý yäšæ;”ÕÖä?Mȯo^³t\_ÔS;Ú;ו3…¾½cÝҎח¹¨­ÐzK¬|ªl‰|$>$8Kpntvà‚¼ +ÔÑ•aAµŸ'Ü û ÎãDx†`6<%P {`œ‚# +ñe@…r8N´ƒJˆAîƒwáZXŸÀ0d@|€áÔNt@4>#\·Ž“V”Áo`WcäR~&ËFõ¼+01x5ð•„O05Ð3)÷'ƒtè†_B8¬„—„¡àfü àRÔXWÁQx«(76ÊÂjªõÆàPàLàSxFBXJ-ýn¥û`ˆMàerØ! ®†¹ÐLÒŸÁ»¹H”î#îø‚¹Øo¹Æá‚YзÃCd·à,|Á8ÄC”^ÿÊïÐت  6‘_=HÖ;‡á8Nĉ,†Åµb ®!Ù.ØOýÀi¬ÂÂgù~9o´8ˆ +|@ÔÓ÷Á³ÔÇW˜G:ÔOáë¥di½œq+Íp <§á5Çd÷¯á;Ì¢ô!û9ë, + |Bc1‚ ¦Áp'Ù6 Jiì5¤]Gmï UòŸÒ[4Ë0´Ó,¦á\œËqÞ~|ße +s°µìsîå/ó÷¥)²(¢–¢!™úUa´Ñ +üœ¬}'Í÷ ¼/b¦aÍè-ªÿ »Š•Sz„bðm|—tA¾etxôÏ£?zÁ@^6ƒìГþ†Ñ4†L\‰ø1|7{’‡r+Wùd^Âð~+ßÃÿ‹ÿ^Z'’Þ“gÉÍò!Cóèõ£¯ª7“-W:dCL%ÿYFÞ´ŠÆ×Ail†­Ð w¿Ü }pˆæ}^„7áðZ@yõ¾†¼nÞAé><ŒÏâ ø"~ˆßˆÄR(e°)¬˜•±J¶œm£´‡fo±s<‘·ònÞCi/?Æß•@’¤€œOi¦¼C> ¼lÈ0Ì4´_¹0r1ëbÃÅFa4~ôßFï}vôÓÀÂÀF¿r`t;ò>òÁý”'O<¿…Wàm}¬_ C™<>Uò†lZµbœ³(ÍÁy”®¡´SjÆl£Ô=ø ¼ oÆÛñ.=ÝKsÛÿŽÇ(=…ƒ”ÞÄ3ø'ü¿`äÄŒ“7;Y:Ëe…4Ó26ƒÕ°ù”–³vJlÛ@+t€ °ãì-Á<‡7óµü>þþÿÿ^bR¶”+¹¥…Òré&é”ôšôŽôƒl“+ä6y¯üœ’ (×(+•{•#Ê9å‚A1ÔZ › 0ŒNŠV¿£y…Ÿ~¹Ê)ì”#¥ÙÚ±¼CÞŽ×Ŷ€¯æwð×åexžÛñ=ìå+øªÀ#¼’}ÇÛq!;‰)Ü&ñe°xˆ}ȾbŸJQ¸€}†Ò/ñ)Ö΢":‘ߢ¤›äsìm(b[pˆ½Àoâ7þŠä½xFÞË^»4Ì"à íêíìªô{¶‚í€z©@þVÝÿ]¾‘ì=ÝŠYüÒ^ø„«ìK‘¢Äë° 9æ‘ï\úFázÚ{X:Å´ +Š&o`>ÄÂ=ï¿}ZDlùyùÙC<æC4²—¡ˆöÆ'”êáȇAòÁ[!Ý ›=¸„âþŠŸ ü¸r1˜¢e ­›Î‹h–B±°‰zýŽâÿKõ«ð¯pÚig A†$$;¥ +ŠLŠ¿;(-F*=w*Gå7 c$ûè^òò÷á::s>¦þãÁMã[ IÙ4j;EæµTãÑ™ Qº^F[hÌÓiŸ×J3)òÞXI3\AgT5‰/ŠÀ=PFk7?pS`4 +\ Ë¡.pâ¦Àv¹-”]RÅØñy:þwPÜž ïQí²l<‡c2¸Wr’¥f©äzó× ý“•jÅ +ÏLÚj4FoDY=O` c9–Àõ¦È¯½Ü²(Ô‡ˆ¶$§¢ûÿ¿ÁH¬sÐ^éµzfŽá† ‡ãYÉ8/jéäÇjãsò¹®,_uEùŠá…ôr°”ƪ,îí ºBVIÁª··RµWözz›ýžÕnU{óz^ßÛQá¹´üþÀàŽoåΚDåˆ;"£°È +?¬o-Ò맟Aç˜à :}ÚA¦óÎJ¼j‰¥·$;âTTäk~¢® :õedæë_|bþðÙaºˆÚˆqÆ K>ð•–Žg¦LË dåäŸ) âÀßÿ€Ÿ¡CE¯51!ÿ|‰™È:ãmÐÇÿ^o 5-ßIþ +É_â/Òy*ª½è3‡åSƒ¿ãOÑ-ÝF÷У㒣¡aùPÒÉo§é >M0Lpž@‚v~º v!ÀBØFKP#8ü?DãÜOõ-„s Ú vH°€?NüUóƒ|%Œ6¾“¦QDwð_éôQ¢ñD&>=øCTtßxù~¢Bþëqþ}TŽ&zï8½‡ø DïÖ¼6~×xyïÒë­§}¼Ó—l³–$“ÜNGÀ)·‡r{Èt{¨„‘.v«õžú‰æ]3FÉ\[|U_£-1qù}dÒ-dú-d¹-d¹- ‘hó%Íc:9|3él&ͤ³™¬’Ç;©¿NZ0 l%°p²{'Ù]𽄇Nëü› ï&è%~Ù1“Fu_éË°‘“-(Ôò‹OÐ=©ÙeqIù»~,™‚„# §¡»T—.0…îÒø¤1JZ«JBy+üŒ€A$áT‚‚r‰·úRsmƒ|.¬1‚jëfݼ[ê–¥¼r ?Éó¡Öä’á<ܤikrãT©ÃÔcâV“Ý”gÒLµ&¹žD»8·ñ\^Ìkx—ý!Ÿ¡hm†R4iwp_°7x(øt°ìU†”ÓÊ°r^‘íJž¢)µŠGéPz”ÝJŸbÚ­ì60OpGpO0·Ûƒó‚µàÚ`ÙfÀ¾’m¼ElZÂV‚‚ÝÙ¸‰øv~A­F™â:âa ’•à4凉ÊT²ž…ô,ĵ×B\ ,$µ‚Žq©rYr©ŽÐ?/$é$ %n(Ùv˜ðy‘#˜M%3•ÌT2“ÖivFh%l'¨%à:o˜€¼†ð%YÞ¸ÜC èòóºÎ%™&ê² ZsúP&z3±/wg¢æ..É×R…‡‡7©MΦŒ¦ýR»ÚîlÏhß/Õ¨5ΚŒšýR±Zì,Î(Þ/媹ÎÜŒÜý’Mµ9m¶ýÒ®ê#Õ'«OUKMÕíÕÝÕ|*-݀ϕ—¯Ó§ G}qñùS-%W³#4&ÂûÎp°¶ä´ÈìˆÎ}‚¸O÷ ¨!h"©Ö"Ķ˟.9!gWÈ9Mþ°¯hRMI5…Ý&‚}œÚ>LòúöXîˆÎ÷Öù5ãú}:_hÙ.ÕAp±îÓ6\ ÅM2œâ‹à µNØFÐAp„@â‹)-â‹Ø”³Ã<[3OŒ²At4,áaFk‰•…/˜ñ ŽïÕñm:.Öqª:ÛüÍló3³Í·Ì6§S†eÐdÆ=:vhÁ%æ'KÌ5%æÌ3µ0³(+ãŸuèpê4-úàÍ¢S£OÝJ­(O:ÏÚ¾uŸ‡¯ÑâÛkûøišßB*~„³|‡l¯æòÙNeûÑyÌö{õ„í…T?.ôÙ†²ýFœÌö3wŽí~u±í>'•}¶­ÙO‹aÀšñB7dO·U»Ù*~$±æ¦Î´ [‘ºÎVHìi~œ5pÈ61Õ/†’Gm:fË¢ÓT}(×Ld“Á€]Z¶a½¡Å°Ð0Ïp•a’!Ç`7$ ‘Æp£Õj 1FÅ(™Œ‘þÀ°æ÷¶HŪÿÄ' ,éy+˜é?ýC#£½ãàU¬ª®½áUPµ Ô;ÕUå7æ{§¹ª¼ÆÚ«ïG¼£J^v«aA=9¨`mK»ã€˜»íöA7o»½¡«¼C­PÕb÷~SGó¢Kª¬–ÆBô†âØâðéa…•åÿyƱëÇ/ÖõÓ/6É{wU]½÷ñ¤o¾È’ª¼3ijð8[ËÚ+ʳAêã&¶¶b¾àã¦ò†ËjÂ:H Ü‚µHj‚ºZµ®FnšRQÞŸ’2¦ôÎJä>ÏéJËÇÚJ¥.¨­ZAH%CªÞV*KjäcY~ÚX EoÌzc‰B©ßé$•l§PéŸê$…~çT]|èG±êN8õ~œØ ÷ƒø£NƘyÁ¸3’Žëÿå·´ô_PÆæ÷—´ŠÇ¹G­XJàñîØÐëíi±Ûû—¼?þjOó´´¶ Ú¼Ôû¾º´Ü»D-·÷7·þq«7«åýÐZ± ¾¿U[ZîkÖš+Ôæò†ÇºËª®èë¶Ë}•uÿ“ƺEce¢¯Çªþ‰¸Jˆ}U‰¾ªD_ié}UÍ/ŪÚú~#”6ÐëN§,8ˆöƒ'ÁÑPm혮oŽ«±?O”€Ž­`z‡¨¥^3å”ä”íN! +?¿Œ‹b~•#aŽ‹¬ÄSKÁ±+Ê/ÿëìì\/ «ËEx}W¬Î[O›ÖQWå­E·×]áÕ<å (–£kü+«×¬'ݧܬÝÝíÞåÞç>â–»ºˆ~2åT +kJiOéNÙ•²/åHŠ"×ÖÓÜûRþ–»țp=}åzŸ]DéŸ(®ïêPcݹº\eõ%)ÐJ·^¤zD¨“êdøOÂo|Lð%7þÁ#‚Ãsx=ÝËE .tbyþ@Þäüi~¢ÍËÆhÝâ1Z1wŒºKòc‰úŠ'•XèŽ0Hø%‚÷>'øÌóy¾Þxט×6tB§ iø@…õuºÖ£‹2(̽¾ÓåÂÁiHÕ…Wú=`g)hAˆ’ÎíÕº½¬ÇÄÃYÖïÌôŠžÓÏð{†.«vÒ²ägÏ<É!È 2G⌊|’ä 8f‚ Wáuë²~ã¾èžkýÊ=碊)o½@hbž#Ìæ$D¡.ØùÐM†À. Q—öçøSr½ÔSaÐ×l´Ó©é“å(AÌæx?Z´pS<¤iiLKó¤õ¥ §Iia‚ÚDünØ}4î8ç &ÓQë¢4Ιkm\ûÍœ()™˜W¶Q«ÆT55%•) 92ÅàLLHJHNàJDšÅœÇ‡Ö6%¾#C)B¹T´·`‚‘P¸5ªâ‚é1E ,²²¶F„O2)?&:,’)jJzÚTkLô¤ü)S§„¤§¥§©)…ÍÞ¹~±çÍ÷ßúFËs[×<_Q¸vÊúä y©…™Eå“g°½ç°f~ɾFüeôØ]Ÿ<ûíè¹þ»š×ÆÂs÷wæ9®®}@·™–é8Ù,ˆnqokÑf +îfÍÂ5 f…`”&ˆÜ$+(…›A +1KJˆÙìÇD-Ü`Œ4ŒF.”#ØÌh>ÐJã>Í,£b2*ŠQ–BB¤tþp0â2-Ød²pÜÇpÆýø­KW]¤»=–>Ë°…[Í€†¸ÐA¼ãÒ¬u‹htÏùª‘²² +Ÿ(.̵º)X/®s‡†bXxáö .i‹õy‘µX,ó`]#6®]‡Qj˜昌“ˆ ?~lÿÅçX×õûGSñ«;FËzø/.ìd]lÒÿ°çÉ& +Ù$îÑ"µXOl_ìp¬±Z,Û· -‰Àtã5a¤ßŠ¼‘ò*UþŽf²¢‰ø…Fw9 31”MÆÆa¿%õYZxh¨E ›œgé¶ì¦YK–¸˜A–ŠgÇ]Îåžc9kž_즹`X!|=r¿v¹hN¸¶1Â9),2::&Ê1y:›,ÜBxÅyœíˆp_;Ê<Ó¢ƒ Îxg©ô»‡~ؾnZ2s:YÒÄMìý=Yöd›˜cuà,ß/WC0‰pD¡ŠÚ†ôß³·GÝx×莵y &%ÉÕiÿxFz!a‚'xlë°‡ÕÓ£ˆC±fgrOÒ’)Ý2¢þƒ fÅZôànìÃÓ¨  ŽB´`±ËÅFò-È!L}7Š^uL¾ø‹¹g¼mŠ5 ÉGò±ú8†}!…&ñk†;¤°ÄTT\•"2afæ´L­ÀSpª`¸àÛ `‰©[Ý4áñÔ㩃^œpF=ãüï Ÿ§|æ ™eÌôãÎŒ +øÙÙÓy˜ççG¹lÆh?î;š¤¹r ’èY1`5gfœÀ6ˆûX ®µ÷ØÙn{ŸÙý|Ò€7Cü¸›ø9=9lwN_Ë!þÑ&C·üì-H+À¾‚¡V@k4ý)-âd‹ˆ›$ÂÞ¹KaמּçF×~%ÐYŠÅ]#ëŠGG sÇ"á” ¹ÉiAIIq¨ŽT‡Ó!)²34--ˆB\®”Ó‚ÉÊ9‚Ó[0È4AÉkA›9IÄ<«{ü|ÉÚJŸîÓë`--ï=òEE¢R)i“ tV´'ë0MU…ߧo+ê¿ù‘E¥ƒ[z:îýóm­¹Ž¸ø°cœYËîQãm®»çÚköÍÜ깿Mš}Û]+kïÙ;ñØϼ[–§'eåb%xïꚪiI%ÉA×Ý\³¼û±±õm¡õÝHûÃAþ\ö¨„á É+’»ån¥;i§t{’a2›ì¸†_c_äX•¸AÞ˜¸õÆ÷&>šúÔaÕBo;‹5,<"*:Æifœ‹€fwDÚ¹dwÄ'$rC¬$w߀ÝîˆÄïéôÐ(²âGÀ>r8hû âtzXÏ8Úcèë†_Óº©¨©•©äß³²>:D#šÉ®Yû¬Ì—2ˆwágú"žm¤0bm1R_ʳ´±(O§˜¾€UÂÂc +·'¸d +š +b£5B#]Ž´àUR{ø’ä¹#InlÀF48 ’XE1Щ4¶,—…Ö$ùƹ£m hºÛ¢›çunÜÔ>AOÏ­šÓÕ¿wÇš§Q’«?–¾÷Vÿªc=éSëò]VGA÷ÏÞ,Ê10‹8‹êÉæý´§b!F´¬.Ó† Baz×ù™SQ8nᛤMÑÛb$·1C‘¹—§p{“´'ŽÙÓ0-ÍBÛøöXÅÑ?`1Óí5±Z8…®,-‹iYž¬¾¬á,)+n̾$‚k„="/B‹ØÑaˆˆËüñp¡qÎųã7} Pp"ë5Ž¬#sá˜Íh#d':MáI‰É‰L sšÓœ&•\ݚЎPÊ¥¥µ`b¸½RBÁ¥#_x¿îûÊ ÂžÂçÅ‘Vž:e*Q‘—M¬¦(üî›<²*u÷/w¼²|ó+;šŸ¹-ß­ºøJøŒÊI³Ývë–´Er›Ó\óðïnkö>¾óñk0éέ¿X¾½Îóaiî£÷ú‡]x¸Þ¢à÷:+gëx‹”(½®ßÆþ +)~§MO À¿öѵ9(Ì`”þÅšÿÿ~Lѱ$ìs~j @8G`ñèsÖóÂj +YÑF.þÎ X°bÍÒιKo˜ß¾¦ùúÚº9 ô,p÷xýÿÍg¼²xή`ŒÿK)ÄDÀl;Áy‚jö8Ô­ƒ¨[ßÿáí°×þÒï=2ØdqmŒëøá“žôèÕðÃú‹;­EÆP%ï÷ÿ=X +endstream +endobj +2181 0 obj << -/D [2164 0 R /XYZ 98.895 753.953 null] +/Filter /FlateDecode +/Length1 5080 +/Length 3303 >> -% 597 0 obj +stream +xœÍW}pÇu{¾ûÀá@‚îp)!H€`HŠ¦(J´TY–,pdÙ$EËr¤„uÕöäÃi’Zƒ6¶•hœŽëIâL:I󇻢S[IGi:´V“ŽËq;©;ã~ØhR'ÓvEöí¤d7MÿëanoßÛ·ï÷~ûvBððpø¶£E œGþw,Ž/Ÿ[\íÈÒòüòù‡ô€ü$*~ŠïS÷­ž>i¿mg¸•Óg¹¯cï~ péþ•ÅS¼ÿ‹O(_Eeù~Tx–ùÿ +Êý÷Ÿ{èᎽr‹Ñ³Y^ìÎÄ¢ïÜâëdM¼Šöÿ…²þáÅs+Ýõ½ŠEbõ#}¨Ûÿ1Ö¾úàÊjc±÷€+Žkº›µ+ÜÓHáoe˜„¸ÏÑ‚cø;Òiø0|ª Ap;FA‡Ýp Á‡à ,Á)@…¸"ÌA?œ ¼†»`<¿ á·`>Ÿ„£ðˆìÇá7á³?…<å>\£·ž¯S0wÇ©«MÕÝ'êú+”(#ñ%yýïh0W \þÀ‘Ú^³n(Ÿ?×éÌášAgêêʳ®†iag¦©õ¸a$ôõ€p5Ǻk3³HÞÔ×»“›zíÀÑ„AI½Ö@‡̆©7æ"ëÐéÂ>*²0ȸn‰9À*òûh°¹øÀ½7zº*yt¢ñ8ƒíÖSfÃCõõÉÄKØͯÁ ™™%^aœ’«±òHÍ\ÂÕ›³ üs‘Ÿ9Rk"÷,Ï6‰NðCõeÚ³Ò·5—š§¨E\°(8¤ÇóÙÍq8%¼úîÅkªðÓ¼ç 9šùg˜ö#Ã9”9ˆ±®ÞßÅV÷ dós”|PïášMÈu{žE”ŠHÖ謄ZÅb´\²b%«RÒÌ—SJZ˜ ‹Í—žœYõ>Õ§U¾zîÓ…ƒ·œ?#$`Ñjöe‘úXÈYÍl“²JCÛ·`eN½;Mé0%B´aô±¦ÝH¯"ñü +:%‰³g3¤A„ÑÒ®ï¶ç¬Á¿âeÄïs/TèÕ'6þåi}‚ôM¥íCŠæ>ƒ\êÙõw2#H8ÞíqÉ÷ŽŸQ¿]I»°Íœ&ö˜ÁjéÊËÏíOGBrÅÓÆxÀ€Yh‹hã(mÁ‡¬Ê)Û c‰û)ˆAóÅÛ¶‰ß`¡Š““lËðÌG·“RJNzQFGx3æ;¡šæÈ©Ç/¿ðäSüâ¾¾ÜD%¹ëP!ˆæª¢áï=ó¥+ßöKß%Ç÷¯ÎåÅáÝÇo*--MN.-mÇ+‹ñê‡ç¡`Y9è„…ú¬fe'|m§ÒR:áJDY,š/×J»QÜ%iW»éN3­›ørÍ´›UÓ¦/Gh¶H#부1MYM!Â?ÚDV0 ŠEÏÝ51!u ¢­!½c"FJ°x»ƒHØPÕVØ.”Ù.4GHŽ¼?Æš£ÍIR²Ê•y]ó혺hLl¼YMéNá{Båc¢Á‹“C>í)óÇSýü 1|rÏ@H}ÍœìÜ-R›¿ ÿ€1OCs€qY/Ùy b´hûpw†"s$*1g‹E*¬c¾´5¹Ýáƒè‰&Ú€AM†ÛöNüj¸z³JAú#ÞíÕóìÀIÊkAQb›ì|× *5…ävùddîbÐÇnØ«#¤sð é;'Šs°”bŽ“GgOÞ={z~xÉß+¨±žøòäÈÄÜm˵óÇ­ÓÁ€Hb)-»´§2÷xqa´r¼zðžLæojwŒíØŸ;=ýkg2Jø•ßÝåG ù164}ŒÅ˜œJ+Ð!„ÂXÒ‹JVÙJ¦½ +Ã¥7†,I ùdI +Y2”bÚ¡,2 5Ī© n¸HÃë6 K’V3ÌÎÿ™0²„ÊcB©‘±Zýjô‹v ©¡v¨‘cÔàÈI¶Ç[­Úr/ÊbV‰Æ>@ <ÿ;CTGüKcâC'²}…kÿTÑ·yòx4ôÌLÖ§iþég'Ã¥Ûÿ@qcä;ש28þætfk݆8iøo¨©0x¢}$!ñB ´šÄa>q£{,¥Ç‹Ô½Þr‰pšºÚÛa> -% 601 0 obj +stream +0 g 0 G +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +q +1 0 0 1 150.705 662.293 cm +0 0 343.711 49.813 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F102 8.9664 Tf 163.108 690.488 Td [(contains)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 4.708 -10.959 Td [(....)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -4.708 -10.959 Td [(end)-525(type)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F62 9.9626 Tf 151.98 -578.132 Td [(172)]TJ +0 g 0 G +ET + +endstream +endobj +2188 0 obj << -/D [2164 0 R /XYZ 99.895 527.944 null] +/Length 7014 >> -% 2167 0 obj +stream +0 g 0 G +0 g 0 G +BT +/F59 11.9552 Tf 99.895 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(For)-285(computing)-285(with)-285(CUDA)-285(we)-285(de\002ne)-285(a)-285(dual)-285(memorization)-285(strategy)-285(in)-285(which)]TJ 0 -11.955 Td [(each)-368(variable)-368(on)-368(the)-369(CPU)-368(\050\223host\224\051)-368(side)-368(has)-368(a)-368(GPU)-368(\050\223device\224\051)-369(si)1(de.)-665(When)-368(a)]TJ 0 -11.955 Td [(GPU-type)-355(variable)-355(is)-356(ini)1(tialized,)-382(the)-355(data)-355(contained)-355(is)-356(\050usually\051)-355(the)-355(same)-355(on)]TJ 0 -11.955 Td [(both)-246(sides.)-309(Each)-246(operator)-246(invoked)-245(on)-246(the)-246(variable)-246(may)-246(change)-246(the)-246(data)-246(so)-246(that)]TJ 0 -11.956 Td [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 14.944 -11.955 Td [(Keeping)-209(track)-208(of)-209(the)-208(updates)-209(to)-208(data)-209(in)-208(the)-209(variables)-208(is)-209(essential:)-289(we)-209(want)-208(to)]TJ -14.944 -11.955 Td [(perform)-220(most)-221(computations)-220(on)-220(the)-220(GPU,)-221(but)-220(we)-220(cannot)-220(af)18(for)18(d)-221(the)-220(time)-220(needed)]TJ 0 -11.955 Td [(to)-327(move)-326(data)-327(between)-326(the)-327(host)-327(memory)-326(and)-327(the)-326(device)-327(memory)-327(because)-326(the)]TJ 0 -11.955 Td [(bandwidth)-351(of)-352(the)-351(inter)18(connection)-352(bus)-351(would)-352(become)-351(the)-351(main)-352(bottleneck)-351(of)]TJ 0 -11.955 Td [(the)-262(computation.)-347(Thus,)-265(each)-263(and)-262(every)-262(computational)-262(r)18(outine)-262(in)-263(the)-262(library)-262(is)]TJ 0 -11.956 Td [(built)-250(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ +0 g 0 G + 13.888 -18.472 Td [(\225)]TJ +0 g 0 G + [-500(If)-254(the)-253(data)-254(type)-253(being)-254(handled)-254(is)-253(GPU-enabled,)-255(make)-253(sur)18(e)-254(that)-254(its)-253(device)]TJ 11.019 -11.955 Td [(copy)-351(is)-351(up)-352(to)-351(date,)-377(per)1(form)-352(any)-351(arithmetic)-351(operation)-351(on)-352(the)-351(GPU,)-351(and)]TJ 0 -11.955 Td [(if)-314(the)-313(data)-314(has)-314(been)-313(alter)18(ed)-314(as)-313(a)-314(r)18(esult,)-330(mark)-313(the)-314(main-memory)-313(copy)-314(as)]TJ 0 -11.955 Td [(outdated.)]TJ +0 g 0 G + -11.019 -19.199 Td [(\225)]TJ +0 g 0 G + [-500(The)-266(main-memory)-266(copy)-266(is)-266(never)-267(updated)-266(unless)-266(this)-266(is)-266(r)18(equested)-266(by)-266(the)]TJ 11.019 -11.955 Td [(user)-250(either)]TJ +0 g 0 G +/F59 9.9626 Tf 0 -19.199 Td [(explicitly)]TJ +0 g 0 G +/F62 9.9626 Tf 47.581 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ +0 g 0 G +/F59 9.9626 Tf -47.581 -15.213 Td [(implicitly)]TJ +0 g 0 G +/F62 9.9626 Tf 49.793 0 Td [(by)-276(invoking)-276(a)-277(method)-276(that)-276(involves)-276(other)-276(data)-277(items)-276(that)-276(ar)18(e)]TJ -27.875 -11.955 Td [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ -46.825 -19.199 Td [(In)-264(this)-264(way)111(,)-268(data)-264(items)-265(ar)18(e)-264(put)-264(on)-264(the)-264(GPU)-264(memory)-265(\223on)-264(demand\224)-264(and)-264(r)18(emain)]TJ 0 -11.955 Td [(ther)18(e)-337(as)-337(long)-337(as)-337(\223normal\224)-337(computations)-337(ar)18(e)-337(carried)-337(out.)-571(As)-337(an)-337(exampl)1(e,)-359(the)]TJ 0 -11.955 Td [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 99.895 364.481 cm +0 0 343.711 16.936 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F102 8.9664 Tf 121.713 370.757 Td [(call)]TJ +0 g 0 G + [-525(psb_spmm\050alpha,a,x,beta,y,desc_a,info\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +/F62 9.9626 Tf -21.818 -23.482 Td [(will)-321(transpar)18(ently)-322(and)-321(automatically)-321(be)-322(performed)-321(on)-321(the)-322(GPU)-321(whenever)-321(all)]TJ 0 -11.955 Td [(thr)18(ee)-274(data)-274(inputs)]TJ/F67 9.9626 Tf 78.001 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)]TJ/F67 9.9626 Tf 5.282 0 Td [(x)]TJ/F62 9.9626 Tf 7.962 0 Td [(and)]TJ/F67 9.9626 Tf 19.598 0 Td [(y)]TJ/F62 9.9626 Tf 7.961 0 Td [(ar)18(e)-274(GPU-enabled.)-383(If)-274(a)-274(pr)18(ogram)-274(makes)-274(many)-274(such)]TJ -124.034 -11.956 Td [(calls)-250(sequentially)111(,)-250(then)]TJ +0 g 0 G + 13.888 -18.472 Td [(\225)]TJ +0 g 0 G + [-500(The)-322(\002rst)-322(kernel)-322(invocation)-322(will)-322(\002nd)-322(the)-322(data)-322(in)-322(main)-322(memory)111(,)-340(and)-322(will)]TJ 11.019 -11.955 Td [(copy)-356(it)-357(to)-356(the)-357(GPU)-356(memory)111(,)-383(thus)-356(incurring)-357(a)-356(signi\002cant)-357(over)18(head;)-409(the)]TJ 0 -11.955 Td [(r)18(esult)-250(is)-250(however)]TJ/F60 9.9626 Tf 78.156 0 Td [(not)]TJ/F62 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ +0 g 0 G + -104.946 -19.199 Td [(\225)]TJ +0 g 0 G + [-500(Subsequent)-378(kernel)-377(invocations)-378(involving)-377(the)-378(same)-377(vector)-378(will)-378(\002nd)-377(the)]TJ 11.019 -11.955 Td [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ -24.907 -18.472 Td [(For)-285(all)-284(invocations)-285(after)-284(the)-285(\002rst)-284(the)-285(only)-284(data)-285(that)-284(will)-285(have)-284(to)-285(be)-284(transferr)18(ed)]TJ 0 -11.955 Td [(to/fr)18(om)-298(the)-298(main)-298(memory)-297(will)-298(be)-298(the)-298(scalars)]TJ/F67 9.9626 Tf 204.123 0 Td [(alpha)]TJ/F62 9.9626 Tf 29.119 0 Td [(and)]TJ/F67 9.9626 Tf 19.834 0 Td [(beta)]TJ/F62 9.9626 Tf 20.922 0 Td [(,)-310(and)-298(the)-298(r)18(eturn)]TJ -273.998 -11.955 Td [(code)]TJ/F67 9.9626 Tf 23.213 0 Td [(info)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -44.134 -20.101 Td [(V)111(ectors:)]TJ +0 g 0 G +/F62 9.9626 Tf 40.677 0 Td [(The)-253(data)-253(type)]TJ/F67 9.9626 Tf 63.081 0 Td [(psb_T_vect_gpu)]TJ/F62 9.9626 Tf 75.744 0 Td [(pr)18(ovides)-253(a)-253(GPU-enabled)-253(extension)-253(of)]TJ -154.595 -11.955 Td [(the)-306(inner)-307(type)]TJ/F67 9.9626 Tf 65.727 0 Td [(psb_T_base_vect_type)]TJ/F62 9.9626 Tf 104.606 0 Td [(,)-321(and)-306(must)-307(be)-306(used)-306(together)-307(with)]TJ -170.333 -11.955 Td [(the)-327(other)-326(inner)-327(matrix)-326(type)-327(to)-327(make)-326(full)-327(use)-326(of)-327(the)-327(GPU)-326(computational)]TJ 0 -11.956 Td [(capabilities;)]TJ +0 g 0 G +/F59 9.9626 Tf -24.907 -19.198 Td [(CSR:)]TJ +0 g 0 G +/F62 9.9626 Tf 27.945 0 Td [(The)-210(data)-210(type)]TJ/F67 9.9626 Tf 61.793 0 Td [(psb_T_csrg_sparse_mat)]TJ/F62 9.9626 Tf 111.927 0 Td [(pr)18(ovides)-210(an)-210(interface)-209(to)-210(the)-210(GPU)]TJ -176.758 -11.955 Td [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ +0 g 0 G + 139.477 -29.888 Td [(173)]TJ +0 g 0 G +ET + +endstream +endobj +2192 0 obj << -/D [2164 0 R /XYZ 99.895 315.727 null] +/Length 5442 >> +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F59 9.9626 Tf 150.705 706.129 Td [(HYB:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.061 0 Td [(The)-201(data)-201(type)]TJ/F67 9.9626 Tf 61.536 0 Td [(psb_T_hybg_sparse_mat)]TJ/F62 9.9626 Tf 111.842 0 Td [(pr)18(ovides)-201(an)-202(int)1(erface)-202(to)-201(the)-201(HYB)]TJ -177.533 -11.955 Td [(GPU)-354(storage)-353(available)-354(in)-353(the)-354(NVIDIA)-353(CuSP)92(ARSE)-354(library)111(.)-621(The)-353(internal)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-252(is)-251(opaque,)-252(hence)-251(the)-252(host)-252(side)-251(is)-252(just)-251(CSR;)-252(the)-251(HYB)-252(data)-251(format)]TJ 0 -11.956 Td [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ +0 g 0 G +/F59 9.9626 Tf -24.906 -20.26 Td [(ELL:)]TJ +0 g 0 G +/F62 9.9626 Tf 25.733 0 Td [(The)-290(data)-291(type)]TJ/F67 9.9626 Tf 64.203 0 Td [(psb_T_elg_sparse_mat)]TJ/F62 9.9626 Tf 107.501 0 Td [(pr)18(ovides)-290(an)-291(interface)-290(to)-291(the)-290(ELL-)]TJ -172.531 -11.955 Td [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0 g 0 G +/F59 9.9626 Tf -24.906 -20.261 Td [(HLL:)]TJ +0 g 0 G +/F62 9.9626 Tf 27.945 0 Td [(The)-190(data)-190(type)]TJ/F67 9.9626 Tf 61.2 0 Td [(psb_T_hlg_sparse_mat)]TJ/F62 9.9626 Tf 106.5 0 Td [(pr)18(ovides)-190(an)-190(interface)-190(to)-190(the)-190(Hacked)]TJ -170.739 -11.955 Td [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0 g 0 G +/F59 9.9626 Tf -24.906 -20.261 Td [(HDIA:)]TJ +0 g 0 G +/F62 9.9626 Tf 35.696 0 Td [(The)-341(data)-342(type)]TJ/F67 9.9626 Tf 65.721 0 Td [(psb_T_hdiag_sparse_mat)]TJ/F62 9.9626 Tf 118.468 0 Td [(pr)18(ovides)-341(an)-342(interface)-341(to)-341(the)]TJ -194.979 -11.955 Td [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F59 14.3462 Tf -24.906 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F59 11.9552 Tf 0 -24.857 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 514.195 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F59 11.9552 Tf 174.926 513.996 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 514.195 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F59 11.9552 Tf 205.125 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ +0 g 0 G + [-525(psb_cuda_init\050ctxt)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525([,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(device]\051)]TJ/F62 9.9626 Tf 14.944 -22.253 Td [(This)-250(subr)18(outine)-250(initializes)-250(the)-250(PSBLAS-CUDA)-250(envir)18(onment.)]TJ +0 g 0 G +/F59 9.9626 Tf -14.944 -20.177 Td [(T)90(ype:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.26 Td [(device)]TJ +0 g 0 G +/F62 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-254(as:)-317(an)-254(integer)-253(value.)-575(Default:)-317(use)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F67 9.9626 Tf 193.006 0 Td [(mod)]TJ +0 g 0 G + [(\050iam,ngpu\051)]TJ/F62 9.9626 Tf 70.522 0 Td [(wher)18(e)]TJ/F67 9.9626 Tf 29.934 0 Td [(iam)]TJ/F62 9.9626 Tf 18.219 0 Td [(is)]TJ -311.681 -11.955 Td [(the)-274(calling)-275(pr)18(ocess)-274(index)-275(and)]TJ/F67 9.9626 Tf 131.322 0 Td [(ngpu)]TJ/F62 9.9626 Tf 23.657 0 Td [(is)-274(the)-275(total)-275(nu)1(mber)-275(of)-275(CUDA)-274(devices)]TJ -154.979 -11.956 Td [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F59 11.9552 Tf -24.907 -20.176 Td [(Notes)]TJ +0 g 0 G +/F62 9.9626 Tf 12.453 -20.177 Td [(1.)]TJ +0 g 0 G + [-500(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F59 11.9552 Tf -12.453 -29.61 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 270.423 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F59 11.9552 Tf 174.926 270.224 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 270.423 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F59 11.9552 Tf 205.125 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ +0 g 0 G + [-525(psb_cuda_exit\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -22.254 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(CUDA)-250(context.)]TJ +0 g 0 G +/F59 9.9626 Tf -14.944 -20.176 Td [(T)90(ype:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.261 Td [(ctxt)]TJ +0 g 0 G +/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G + 139.477 -29.888 Td [(174)]TJ +0 g 0 G +ET endstream endobj -2171 0 obj +2197 0 obj << -/Length 5390 +/Length 5383 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F59 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.339 706.328 cm +1 0 0 1 120.53 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ ET q -1 0 0 1 201.538 706.328 cm +1 0 0 1 150.729 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ +/F59 11.9552 Tf 154.315 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG /F67 9.9626 Tf -54.42 -19.65 Td [(call)]TJ 0 g 0 G [-525(psb_cuda_DeviceSync\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(This)-310(subr)18(outine)-310(ensur)18(es)-310(that)-309(all)-310(pr)18(eviosly)-310(invoked)-310(kernels,)-325(i.e.)-489(all)-310(invoca-)]TJ -14.944 -11.955 Td [(tion)-250(of)-250(CUDA-side)-250(code,)-250(have)-250(completed.)]TJ/F59 11.9552 Tf 0 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 620.243 cm +1 0 0 1 120.53 620.243 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 620.044 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 620.044 Td [(cuda)]TJ ET q -1 0 0 1 201.538 620.243 cm +1 0 0 1 150.729 620.243 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 620.044 Td [(getDeviceCount)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +/F59 11.9552 Tf 154.315 620.044 Td [(getDeviceCount)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31079,18 +31376,18 @@ BT [-1050(psb_cuda_getDeviceCount\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Get)-250(number)-250(of)-250(devices)-250(available)-250(on)-250(curr)18(ent)-250(computing)-250(node.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 546.113 cm +1 0 0 1 120.53 546.113 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 545.914 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 545.914 Td [(cuda)]TJ ET q -1 0 0 1 201.538 546.113 cm +1 0 0 1 150.729 546.113 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 545.914 Td [(getDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +/F59 11.9552 Tf 154.315 545.914 Td [(getDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31101,18 +31398,18 @@ BT [-1050(psb_cuda_getDevice\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Get)-250(device)-250(in)-250(use)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 471.983 cm +1 0 0 1 120.53 471.983 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 471.784 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 471.784 Td [(cuda)]TJ ET q -1 0 0 1 201.538 471.983 cm +1 0 0 1 150.729 471.983 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 471.784 Td [(setDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(info)]TJ +/F59 11.9552 Tf 154.315 471.784 Td [(setDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31123,18 +31420,18 @@ BT [-525(psb_cuda_setDevice\050dev\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Set)-250(device)-250(to)-250(be)-250(used)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 397.853 cm +1 0 0 1 120.53 397.853 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 397.654 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 397.654 Td [(cuda)]TJ ET q -1 0 0 1 201.538 397.853 cm +1 0 0 1 150.729 397.853 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 397.654 Td [(DeviceHasUV)129(A)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ +/F59 11.9552 Tf 154.315 397.654 Td [(DeviceHasUV)129(A)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31142,21 +31439,21 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-295(tr)8(ue)-294(if)-295(device)-295(curr)18(ently)-295(in)-294(use)-295(supports)-295(UV)111(A)-295(\050Uni\002ed)-294(V)55(irtual)-295(Ad-)]TJ -14.944 -11.955 Td [(dr)18(essing\051.)]TJ/F59 11.9552 Tf 0 -31.147 Td [(psb)]TJ + [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-295(tr)8(ue)-295(if)-294(device)-295(curr)18(ently)-295(in)-295(u)1(se)-295(supports)-295(UV)111(A)-295(\050Uni\002ed)-294(V)55(irtual)-295(Ad-)]TJ -14.944 -11.955 Td [(dr)18(essing\051.)]TJ/F59 11.9552 Tf 0 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 311.768 cm +1 0 0 1 120.53 311.768 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 311.569 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 311.569 Td [(cuda)]TJ ET q -1 0 0 1 201.538 311.768 cm +1 0 0 1 150.729 311.768 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 311.569 Td [(W)74(arpSize)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ +/F59 11.9552 Tf 154.315 311.569 Td [(W)74(arpSize)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31167,18 +31464,18 @@ BT [-525(psb_cuda_WarpSize\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(warp)-250(size.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 237.638 cm +1 0 0 1 120.53 237.638 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 237.439 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 237.439 Td [(cuda)]TJ ET q -1 0 0 1 201.538 237.638 cm +1 0 0 1 150.729 237.638 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 237.439 Td [(MultiProcessors)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ +/F59 11.9552 Tf 154.315 237.439 Td [(MultiProcessors)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31189,18 +31486,18 @@ BT [-525(psb_cuda_MultiProcessors\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(number)-250(of)-250(multipr)18(ocessors)-250(in)-250(the)-250(CUDA)-250(device.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 163.508 cm +1 0 0 1 120.53 163.508 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 163.309 Td [(cuda)]TJ +/F59 11.9552 Tf 124.116 163.309 Td [(cuda)]TJ ET q -1 0 0 1 201.538 163.508 cm +1 0 0 1 150.729 163.508 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 163.309 Td [(MaxThreadsPerMP)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ +/F59 11.9552 Tf 154.315 163.309 Td [(MaxThreadsPerMP)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31210,35 +31507,35 @@ BT 0 g 0 G [-525(psb_cuda_MaxThreadsPerMP\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(thr)18(eads)-250(per)-250(multipr)18(ocessor)74(.)]TJ 0 g 0 G - 149.439 -29.888 Td [(172)]TJ + 149.44 -29.888 Td [(175)]TJ 0 g 0 G ET endstream endobj -2175 0 obj +2202 0 obj << -/Length 2721 +/Length 2726 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F59 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.53 706.328 cm +1 0 0 1 171.339 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ +/F59 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ ET q -1 0 0 1 150.729 706.328 cm +1 0 0 1 201.538 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 706.129 Td [(MaxRegistersPerBlock)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ +/F59 11.9552 Tf 205.125 706.129 Td [(MaxRegistersPerBlock)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31249,18 +31546,18 @@ BT [-525(psb_cuda_MaxRegistersPerBlock\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(r)18(egister)-250(per)-250(thr)18(ead)-250(block.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 120.53 636.313 cm +1 0 0 1 171.339 636.313 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 636.114 Td [(cuda)]TJ +/F59 11.9552 Tf 174.926 636.114 Td [(cuda)]TJ ET q -1 0 0 1 150.729 636.313 cm +1 0 0 1 201.538 636.313 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 636.114 Td [(MemoryClockRate)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ +/F59 11.9552 Tf 205.125 636.114 Td [(MemoryClockRate)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31271,18 +31568,18 @@ BT [-525(psb_cuda_MemoryClockRate\050\051)]TJ/F62 9.9626 Tf 14.944 -21.917 Td [(Returns)-250(the)-250(memory)-250(clock)-250(rate)-250(in)-250(KHz,)-250(as)-250(an)-250(integer)74(.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 120.53 566.299 cm +1 0 0 1 171.339 566.299 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 566.1 Td [(cuda)]TJ +/F59 11.9552 Tf 174.926 566.1 Td [(cuda)]TJ ET q -1 0 0 1 150.729 566.299 cm +1 0 0 1 201.538 566.299 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 566.1 Td [(MemoryBusW)37(idth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ +/F59 11.9552 Tf 205.125 566.1 Td [(MemoryBusW)37(idth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31293,18 +31590,18 @@ BT [-525(psb_cuda_MemoryBusWidth\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(memory)-250(bus)-250(width)-250(in)-250(bits.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 120.53 496.284 cm +1 0 0 1 171.339 496.284 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 496.085 Td [(cuda)]TJ +/F59 11.9552 Tf 174.926 496.085 Td [(cuda)]TJ ET q -1 0 0 1 150.729 496.284 cm +1 0 0 1 201.538 496.284 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 496.085 Td [(MemoryPeakBandwidth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ +/F59 11.9552 Tf 205.125 496.085 Td [(MemoryPeakBandwidth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31314,28 +31611,13 @@ BT 0 g 0 G [-525(psb_cuda_MemoryPeakBandwidth\050\051)]TJ/F62 9.9626 Tf 0 -21.918 Td [(Returns)-250(the)-250(peak)-250(memory)-250(bandwidth)-250(in)-250(MB/s)-250(\050r)18(eal)-250(double)-250(pr)18(ecision\051.)]TJ 0 g 0 G - 164.384 -364.765 Td [(173)]TJ -0 g 0 G -ET - -endstream -endobj -2179 0 obj -<< -/Length 81 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 315.088 90.438 Td [(174)]TJ + 164.383 -364.765 Td [(176)]TJ 0 g 0 G ET endstream endobj -2183 0 obj +2206 0 obj << /Length 6353 >> @@ -31393,13 +31675,13 @@ BT 0 g 0 G [-500(Gamma,)-217(E.,)-434(Helm,)-216(R.,)-434(Johnson,)-217(R.,)-434(and)-417(Vlissides,)-217(J.)-208(1995.)]TJ/F60 9.9626 Tf 276.041 0 Td [(Design)-208(Patterns:)]TJ -254.462 -11.956 Td [(Elements)-250(of)-250(Reusable)-250(Object-Oriented)-250(Softwar)18(e)]TJ/F62 9.9626 Tf 190.781 0 Td [(.)-250(Addison-W)92(esley)111(.)]TJ 0 g 0 G - -47.976 -29.887 Td [(175)]TJ + -47.976 -29.887 Td [(177)]TJ 0 g 0 G ET endstream endobj -2192 0 obj +2214 0 obj << /Length 4492 >> @@ -31448,13 +31730,13 @@ BT 0 g 0 G [-500(D.)-200(Barbieri,)-210(V)129(.)-200(Car)18(dellini,)-210(A.)-201(Fanfarillo,)-210(S.)-200(Filippone,)-210(Thr)18(ee)-200(storage)-200(formats)]TJ 21.579 -11.955 Td [(for)-318(sparse)-317(matrices)-318(on)-318(GPGPUs,)-335(T)92(ech.)-317(Rep.)-318(DICII)-318(RR-15.6,)-334(Universit)]TJ 305.831 0.025 Td [(\036)]TJ -0.832 -0.025 Td [(a)-318(di)]TJ -304.999 -11.955 Td [(Roma)-250(T)92(or)-250(V)111(er)18(gata)-250(\050Febr)8(uary)-250(2015\051.)]TJ 0 g 0 G - 142.805 -209.215 Td [(176)]TJ + 142.805 -209.215 Td [(178)]TJ 0 g 0 G ET endstream endobj -2212 0 obj +2231 0 obj << /Length1 1383 /Length2 5908 @@ -31525,7 +31807,124 @@ W ò6S&ªå_!“½SÎ|esU›FÌR™y† ¢Y‹¥ýžï­§N endstream endobj -2214 0 obj +2233 0 obj +<< +/Length1 1956 +/Length2 7144 +/Length3 0 +/Length 9100 +>> +stream +%!PS-AdobeFont-1.0: CMITT10 003.002 +%%Title: CMITT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMITT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMITT10 known{/CMITT10 findfont dup/UniqueID known{dup +/UniqueID get 5000779 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /SFGIZH+CMITT10 def +/FontBBox {11 -233 669 696 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMITT10.) readonly def +/FullName (CMITT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 80 /P put +dup 84 /T put +dup 86 /V put +dup 97 /a put +dup 99 /c put +dup 44 /comma put +dup 100 /d put +dup 101 /e put +dup 33 /exclam put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 45 /hyphen put +dup 105 /i put +dup 107 /k put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 40 /parenleft put +dup 41 /parenright put +dup 46 /period put +dup 114 /r put +dup 115 /s put +dup 47 /slash put +dup 116 /t put +dup 119 /w put +dup 120 /x put +dup 121 /y put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ3Ã6Uöÿu4 +lã.ÂNk©4¡õ8•DPËh>®[M†E7wk9B½.…H‰ì.³CÍS†oøZçèqO«£­ OèÖ)9ú‚îOHl~Q:ÔɾD0j‚‡— J¿¶Ñù'JZ ¶ì÷­½`ÕÖÄB 5Ô†G +t²ðbY©7:¾Í¿2úh½K@¾À,¥Š 'çó,¥É÷ÙL’~## ê¥gˆyëMŽ¢iMæç?à úi8ðZ¼‡ý+ÐÕ’~Ëó[\3©èMn‚Àû=r=_­VxÎgpÄÁ÷¢%vïbÒ¨ˆSr\ËÆ©ˆµÉ*ó£'"$¶Æ9iVˆ«ð¬2Ý;äxÕ¿£ü§`e'ËôóÄ«fz•+‹;¥æ€îZÑ)¢Ëÿ˜ýæÓ£ÿ°¸¡4š¸ÍêYŽ,Œ1i$ÂWšºVÁC™oì _±S*`6 »Ij$¨I‹Ý/}„½!9'n0%3SV´ÝP}vÖÂqôsF}¶OTÓŒ+¼œO*½6ž½¸’I¤é*\-ÌRÚ3ª°ÚNÙœ:gd¿;p/V;aZþÀ6è©¡Ü:£“s–wQu+MÉô…àåF€Ãœ•Õ¡n>s ¯­›”Éå*ŸÁHPëix€†Î¡\x6²¥u±»j^tüâTg'Dà¦i&kò|í5Üé.Æ+ E¦0E,¼€ýâì»TÙ™~Ìçô#N™ƒa½¡X®Ï–Ý.-ÁŒüEæJ:êcx¶éΖçxh¯¤N ýT#O½£¤ #k]ºFÖ¼‚…XNÉá±D –Aj†ùvÕÊóìfú rÆ®–/*{âŸ,Ed),É# òƒ¶¿ñvihÓÓÍøÊ@ÂŽ áçÌ`ܲ ~êy)öΚgÙ‰Š•ïÇZln÷ñÙüÖv»´ªø×é̉˭0È2L7Š‡ÏçPkg÷¦ûøcWÇïãÏ%» Nç «|]§É¼Üûgñ¶n– ÉL¢è³>DšõC¶çj}§x›t¨7$ËÀ 1€Œìµ—ÏõTõ +"ç*v’OBdÌNÓÇ#™/Ãõ_,N¿Ð f/’.˜1fuU¤oëÄÝ«ÿøcýtÜݶ.±¹ÆãaÂÿLœEE¬Ô O´¾¼8NFôm|@*7Ȫë–q—–EïIu£eXÊŠ Hm{+¹œRZ¹¾“\ Düç¤o þºŠ6Ã;‚%GÉí÷ã‡þC`•]m%4B­Hi*Gßö§Fn‡Ó²Ý/‰Á„ðÕ.'¶…–1#F\ÚŒ£SÆÈàÅÖ†Ek˜Sò*KbÒ¯ix VA‹yÍqÊÎÜøô‹·iú,ki”X—¡¹áÕWø&ô`BAâ…:[2« ôºGÖ’—LQ2”}—O6É%ù™Ú‘ÊšX;îåäñýóa~ŠS?ø雂KoÚ»6lðúTyª6D¼È±óF‡D“ðï×¥À±±W‰Ó\g?¢""Ñv™|]íJÊz`¡“%i~üH £õ‘ Ä69Ûtö @Y¦ P˜a¾÷Ъ' ¸é› $|,ú­ŒÐúÏký¿©ß’2Ç{fÉåC,ý1ŸšiJŸ•Ý¹`zÑ$ïR·I½)ôO!À¢lG{žINÇüNù~zj"(¢:ÑË.AòØoÓnãÑߦvSÃw_#a\ ÏöQ½THÁÌ5̯EUSûOjŽ¾Dò¦1ì7£Ø³BKÿ­TÖ*u¢»ôNºEh†ZÝwïÐ…Â?’rÄ81…¶ÙÔÅ:›ËðAíðJОö»Qú¨÷[»“‘Í¡`첈ã~lÙ÷&P}Ǹ­™?p™µ?{ªêÛF§.§t@…í_ÌbÃïkîÏçqµÁí‚ÓÝ ¤¥·ü 7/# àio »jihŠ¿÷'`±“7ƒ]7DÏço·™¶VÍKN4Ÿµe˜ïÍîí©œu +Ÿrp²Úáòùnó×¼‘ñÁ!7PÑ“Ðœ€šžwe¡®ŸÇÁ(ùíB +ßþ•É ³€Õg‰»¶ì­ D¹ÂÄ +þߦ¹Ñ‡çPqË2t…•Î¾Xm7š+‹tº?a’ä­å}“iÒ/Êk±5Ýiªœð:ˆS`ƒ$‰¼¢u²”5³n2ù/Ä¿K‡ô #é&}ùî•Ø 6ªÓÑf +{a$ò6šÊŸwºAòKY¤ó0×tÒ…dšïž³Ât¸¤ åIÀZ´IÍýù+ñàcÄC­Öð'àÕ0ë@-hœ¢q—m +–÷™ÅæyšóÏ3ÒP^Ù>]¥©à†A•ÔÓ{G +ÚI7®Ðè{¹ðp™ìõrÈ œÝµóÕ(órècÐ(j|/ Gç‚ì%! ›.åÍ +.I›ãö~NžKõGd}ý ]l5Ï, j]~ "¨´CçxûÊôóCHt¥ x@¶x /ÛÄ[ìo=Î~¶‡h7 /°æOawÒ÷Ü>0xd);?uš^q#+ˆuI£Ö¦| +ĽT,ïG…f¬Ku(˜‘ÊU ’êcÉ]~n8:>NA ôn›”åíc´wŠvZ÷ý¼B3]%ãö#q×c)¸Á„!ñÿ56#ý¹D!Ø¡oC¨>ÎFb£™2§y° X˜pätl‘ÿ0;µ¸4bO¿Á˜÷³NÌœÄmo OöAgn£¨]¤µumÇíiMC]GE½ŠØýoé±nÝõÞX5ÀcI+Q] +Áqe@E¥±„•ç…+­LíNv{*Hï‘!¥‚AǯÛÈ™ð·÷å?=A%;W xBÂ6JŠ&@;éì§l ƽƒ&=ȘŠ˜eÌi±™æyΧ®ðñ‹ +.ü} ì Ê-˘ñ½xÝVJÜï{npJ¬F岨ÇuÝ:õJA/‡õ%È›šý ØVဿOÄb0¸SK¿Ê”‚ëÁ_äœõñ4C©ß–J`ÔìèÐ@©`ÅÇŽƒ%* M º©^ÃA{y뿱)æ—šØÄû’ˆ³ÿ’dô«=§UÁ'oXRxº/8ôÊ–Ý~TM> žÙ¢Lêi;g}c[Í«.òàìlýv—ÿœj˜g‡)G£©66„û[þ>kxÙÄ-´áöSð´Ã¿³ë,M®/sVðiæ«êÍúŽ‹‘ÌÒj£³jü]’wɶÿ“u/¢Ûº*º,y¸©LðC÷¡|ŽQÔø±qSA†ú™pFî~_U³—ó¯ÙÅ0øˆ«|6¹;è"å–s;1Î(—V¥Ã$ŸÅ +YGr®àÄ“çÊă‹ÄoX¬r6¡0ź3jî‚wÁ…8«6*ˆ¬Ì£ÁyáVK£­¡evëG=Œú€¢>‚N£lÖðÑNÊ +…Ñæ¬Æ£ñ+ª@ðËñòÞ²¦î–g5ƒ¿:ƒ0_D¡‚’*Ñ… açõÈ·½»7¦6¨å¾M·ÿxv.Tï­RG†»&µÚßÛ!'PM7>ˆ‡z-™ˆ~‡±¿}Iì”EH}YN8‘Ùlj"ÞS7n£˜£yN»½§£R¦á_c–êá½…›äÿý„£+˜ñ¤ÅgfQÉ›ƒì½æayî³áêø ÿâô@< zß~ÕCÍÐÞ̃ùú´D:®`12Y¹åzåÿÌ—›­ÀçK€D»|‰ænd­5Ç„à?MµÇ GÄ&¿Š”ì‡û¬³[®;ʱÍÖþ G­ŽxIÅd§‡°êXhX7 ¿`⟵ÄmR¬IŒhölüöQ¹ØÝó”:CÍ–õ‰¨æ;;EÞWrU–k&´‰8Óþ.®[Ôh% fäYBÅ‹èÕ5Q —Á¡2m'c ¢F #Êׇ žeDõ»”ÂFJ0î7Dņ¦¡¸󩔪°é\g¡W}Lj̉Xÿ€ÔíÎéwFuæè§ËÂœº¼¬³ž¡T0C"N¹^c*´<À¹’wÛ3|‹ñ™B<¢ÁaYˆ:…»¢¢ÉŇ…99tÎ8IÚEäL}w½…mxPiòV§<4àÆYzänOZ×aH8x¦m¥ùºQ¬—Í¡9EëË‚sr6íàï‰öþìTü?~N{3iÄ Lh±Å.*s®Úai9J1?Ç-B[\†SOSÞ[ Ø÷h‡ ÈŸ bïug2ã£JUlÿkí›vgÇUÚû X»=ç>CxíYEk4è Ø`½UçV©ìèˆ0N sÔö–,—KU þŒ–!ä¥ú„lÞj =òÊ”}ÝwfXƒ±"uŸ'ªÆ”BºéŠsŸµ]P{­b‚×ÿð­aáܱl7r^c¥JÝY% x~Ú@¦£„ŸtýÖ åN¿¨%½õ†=œßb½Wa[´¶pT7·°29w¦¡¦"ƒ£6œ3M‚"‹¬(žMÓÊlàúY¹Äl U½&F†ÙFãJ®å«‹™‡Çj#™È6åE¼Šú¾ù¼éÒæäMkðwæÃÑ-hÕ£lµ½%s󲘮K6‚}žu‰nYA(uƒ–nrïÎ]‚Û ŒæRø™Wù?¦8^•Áv_Ö%4ïÜÄ5…]Z÷oH0ò¢gÜ?ãÛˆ®¯½Å2f!‚¯zËq³*. Ós¨¦¿f'Üö:"¹ë5aãMóÔ“6Ù·Lcùø$¸KØtÎÌÈ…¯¶•Ar’SÞ'\sW°F¨•™6 û &™µoðíß›L‹ y¶JYÿRVRnðØZïT 8žÛ7´=ù”n4P’ëärŽZ\JÌ¢t¿7ô¦v½h¸˜P¤;?'’Á\©z¬òÀ*ÚÛÆ™ õmÕ⌟)ÿ‰õìÈØVÕlÆÅ\‹…IG/r›+sã÷íZ|Ÿâªá§ººÍ5Ë®­ÜDªàCt C ˜ @'h ézHê]/mÛ)”µzýk¿ÃtàÄ[寴ÉE {êä¥NX¥cŠ¨KyÀX—ÉþG¦R |ÿÎûØA=1WÓÈ‘EJŒÉ½<¸ºnYr[ÕTƒ ‰asÒϼ=£1Šá=‹r%SíÒ¤ÔZ6T’’Wa9¾Ý KÆK­ã®0ÅýWŸ1"mƒNÂü6d]w#t>6ç¬ïÏ‘*½^œvú´[¸S÷JÈàž†÷$ +úÝ`D/Ì>¼w³­°jêEÕ*¿*ᜠXú(H“‘ö ò¦|¬ r¤=ÌŸòéƒz¸#-1Õ_1¬kmàøG\Ëeò+Æ@T‚o3©'P’îjÞ~-cÎv~û H3Z¸êW»-Z×ëzÔ"d¼mŽ+:éäšZoǹ Oì@aØ[C¹*DôÈ3* fT,í¤1´‡ˆÑñœQÐÙĤÓjôçJ àzÔ6þh¿[Ù+J£ÍJ6L|Þö"?ŽÀ°äN|¼ûieÝÉÔsï{ïÝŒÚ +A¹ehX‘ª'v2d*U1‡¶ã{®¶¬d^ +_g\e+J`Ú¼uÜ4ã¤Éî– +þšÅˆÈÁß"þr?ÿ±¡iœ„'5´DÇ*,uƒ¯Îêžö àeòH%. $åÇfØß'ÛT¡Õìx„ ÂýÉ®3aâÐ\©<ò;3&“à.8‚±Ìoé aè­?shp/Ú`ȶB¨F–{ˆ·D1U#¡¢¦†ùžË'õ@/ÒwNwú¿öæ½O{WC°Sž2ºtP=‹'B—\n’ ‹m‹…$`ˆ¼Õ≲Xÿv¸G^¹Hf0@Ǽ„8Dz”gˆðtÛ…ôÕ×-4ŽÌ}ôýGW +Ú ýó£XêYÖ¾q¥7¾D(m‘Dç¶ ³¢‰"ögFA­uÏÁÛshB…!&«s–X¤Ó’ü}¼W·üTÅÃZÈsµæc@ŽŠÙ‰úø`9’ÈîzmÚ§ÊuËÀxç“leà :»wæšýÞn§­Êa`uú‚•ÑÃÏ©n¡ëtÕvóí87”JMS”rrdI8üMïÔƒi¯6ß?é.ôÎÃ"{O-|ä‘lòÕÊð ‘vÐ~6|¬gªÇ|P.³¾SD~nLjàyDZŠãÓÛÒ®o‹äåW™$ÃQp$³äÿ,;øøCÀ꺵nÝÆ­ó|ƶ法dÓ…ëw€ÝPÂw?WL²Iqß>\h(óÉFÚìÍS*Ñ—Qs¤ä™“Á3 +ŸÚª´ ®N«×À@I€ß;ƒi±eg¤Ü|F\•ÿ‘;;MÌZk±_çä`÷½£ý:BçY–±9 »LxqyKÕN,H`#øWè$ãV=U‘DxkU.¬Þ Ò"*4è´xSR‹è¹?õ €±ü¡§PrP#‚ä½ü”Ýý¤®>³½iª$!¨E–Ö°sG&làzÒ¿g$|oüëjÚ0ÑPˆëËsÕëffÊÄXú ô_ÏÉèÏç°»ÿ§‚ñ£^ û颤Ñþa9ïMh- téŸÏÁ¸\œZéZ³çŸ ™¯ßHzÅŒ°)XHm]cÕ&Aƒsl†¾ÛY³² x=VZ]wq½¢³ Ù¾fp™n‘v%\Ü*iš;ü2ýf<¸¢ž“ŒÙªÿÿcZ}‡Z‚;“É{,X¸]“T´ûÔ]ÐÙ4~jýr²d×.1º²…ò=ºâx%LE(‘ö“C_ÇïLлF»|zyå8ÓÅ‘;èênö—F+G'jDWTÓ2-ÚÁ–ÆhZîVÛ‡ôÐ »öcAÔA­^dÃùE¹É_{0âŸvÇÈŸ)Š‡Ë7Þèyëß΂€Lhé ³á§9‘SFúsþù¨Úàf†®³_-vAYµó}Ö1ï)GMÚoÑ\‘<¬Ÿ+Â’‘Xc?«[´ªÖl&/”ÿ’øÇ_®ï¤ÐÝiËÿºâÇœÓT%˜jéü¡Ì.2‚Õô­ÌF"C"Ç#«à¥UѸ 4?“h)DÞnkcœ7@ñÊ*üãY­ÇÄÌ7sáîùÕݹõ=°žœRµ½ï»9YçBÝ…TZÞGýàkÇJý‡`íÊž`­ \þj+@{“kF]ÆÓ Oì­ç‰`èwŸqŽrÇÁ¿1-—F8©ÿA(èpóÔžèÆ@f]‹ Å»ƒ#xq"ï»Tïã›À× +*!Ñî¿/Š°¾µ§ãñ’û½š®K¹ÝBdî$¶ɉڊêý`²ÀÅiõç‘ÉçÝjÍMz³Jü7âä]Äjœ[¹‡¼JXö¶p h¬핤>ðÉÃ’mþ@¿ž4G«ëÐ׆‡õÁ®7¤ +¥ý2‚˜3>nå–“ éjVwYˆ³»2¥8Qד%ÕÊuÍh@}y‚S€._6dž‚òw…Al‚Ÿé¥Œ?Ê¡- +4ö8ɹ ˆÁktÃ’ë:öÿ×Øý]XŒû¼|jÄ9ž' 7ˆ,¶} +öR±{>þ¸gºõ7,}ù™¬‰ÃP+Þzm5ÞÇ˺ÀHõÿ‚èU?iSÂr,+ +F½Aa´´ÿ.P’gvŸþì˜Çaósl ø¯ZBh·õ´gæÇ –Wµ Û-‹BѶ”N˜°ŠÜhú`˨[ÉW÷jßí)qˆ(µÎãÓÌý÷ÍŒþð.wYÕæ‹$ÞQ¬ÿ0±€®Ñ]Šü +endstream +endobj +2235 0 obj << /Length1 1442 /Length2 6151 @@ -31603,7 +32002,88 @@ n^ r sb¢VØb)l 2ÅþSŠ„T£­H+PMzjÔîëzËiÍfí$ŽDáŒMkV©° Ã?ã\Ù¼Ä>Ž¬߈ƶa¹<¡ÈèEE£ÜL½¦D…¯6=t¯–EÒ÷µ€ðàÀ.…(Á%FoÜ~­´ô6€rý¦\l•ù;séñ'$Öµ…ïß>ž4¹ÿr$ï2¨DZý~*®\R ù·Yi$=Þ¡¥k‡å'¯Öå“™úý.m…6¯Â–„tY0’O$ð)ºQñ’ršÈUQ…»+¶ßªúÔ4(¨«,‡°Qb8¬—mÓ©qý±âÀÁÝHä°=‘œ,YŠ8i  ÿ‡½ª”SZ6Žöã½mØ@ˆ»`é7~â"L7\ã¹ßFdN#FþýHR´K´KHpb40 2ÂÚ~HÇKε֊úøX endstream endobj -2216 0 obj +2237 0 obj +<< +/Length1 1478 +/Length2 6403 +/Length3 0 +/Length 7881 +>> +stream +%!PS-AdobeFont-1.0: CMR10 003.002 +%%Title: CMR10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup +/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /SOSTRQ+CMR10 def +/FontBBox {-40 -250 1009 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 91 /bracketleft put +dup 93 /bracketright put +dup 61 /equal put +dup 40 /parenleft put +dup 41 /parenright put +dup 43 /plus put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» +ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ +}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¥ÜÆØx¹<¥Ÿ ,—Ü-.è2›¯iR‹n·Ã±vÌÙ¾1ä • „'Æ䓱©·_r"O¯»_‹t±3keè¾fBݼöVÁfj—Ú9Ò³ÿ Ô Yh뀸Á{û´qÝÉÊÆ-÷†—ºøÉ·ÊãÁ}W§?Å?gw1*Eh[ŠÜÛ:›—ªtÍÀWeI,Úv•8üa…<{‚ñBú1â¤00Z8ÃÌî5 |ñŽ}­µðN¾àÔ×lw]ƒÿƒ6Nÿb¿—ðð¤h3E`œ†(¡›EÁ‰¡Þ'Q;²eµÔƒª/ðà­.D©yL’â5ØñÇ$¥4IGÃå׮Ɋ\‚yjù9£.îV­U»5£Q!äì‹-ÍèµÈBƒ…Ä9ödèâö««B^éoVùð­wˆBÉŽáT7„¡‰¾R€ŸÀsO™GA‹¦÷ãÕà b#íTBv!m·WT=úãÍÀ¦üw,ªID%'¥ÙMÅKé<‡|Ù]ØD¥Ã°€@‰õ·€2²½Oø( œÝŽ%œæÛ#_½É·VñþBSTø¢#zàÃ×ÒÍã!ËÑã${l­\§4ĸ ;5Œ™l‘&!×〚óß=(ŒŠþfŠ¸ÞUwA´Ú±›ÔÆeßìÈÌB#½30>ÎìH ¤©'œÞL¥+ÿÖ“žjâz@ú¸=®s\²Þõ<…«=\ÀY$ßD?ˆUê Ðæü6•ŸÒxG¡QnÇ«šŠäi¯%Ö”ž!×Ñ +L2±[žšôã¥)!Œf…X‚cè‹ã<Õ'Ȳ–ñRP3E¡!„-:±'àþÐAJ¯.ÙIJCJÎJtª&Ã{76± +#VÐÃÐÀëÕÖHÕ“ó‹/©ÊF×gw"F5”wñSˆ$|¯ÿoQ<ÎçΗ Ñ`~¶<10©|™ÿ<»émï´·ùØœÞÉhðÞ „߭逵µ°°›?É`?ó7–ë _Ì [•¾ó8xP<41Õó=tÏøHÚ ;6™¹¸}rKu1é3ûšUCiš´Ht­²ÑÓ}öyÖþ~c%\ßqï€\ººæ4O4v![›_÷Iº¢°ï³¯üÆæc‹0ß«òMJùMŸY0¬Ìv{6ß”Ö\øà rŸqÉš"3=÷”TÒYK.ÜKêÉ)Á,GÊK{aˆCZBGž½ +yÛ(ŠK'†Ã2O0ÓV—®6IP$$lûéú¬¸-“à[ÀëÔeÍÉ‹øÇKÌ×&2%g”b¯z‡÷JÌ™,uo~M¬2ÄzÞu’™ ‡Ô6*š»*¦ Å «Ñÿ9¿Î¨ß?Ä£K”c)ËÏ÷á\ðgŸt­&?©ãŽÏÄôûnTëw½“æ¼$ dN\C¸›¤ÎÚOöÖÏ@¥W2xè8q!LdÒ®ãoë~ä1V/ŒÈB=@±ôúí!0’ÁY¡ozù$íùÐ÷Ç€%Ä­¿ÑÉwáÞá2]oªÃß ®_ý?IhËuè¡BmîF:µ1Ø–d©Èy6÷‚ÀÚÞ F ¨„Ln5Sòw&©-ëÓ°¯žGzø¨9ê=È'’ä(Ìý¼IühNú´Ö{äO ˜1LvcÕmiµ¦À&È"MìêmÄ@·WÕ†­¤­mÜb%0Ù˜*ú`šëÄ¡“ß“/fõÃl½%PE2¡:VA)SBL/æ<ªî5ªCžA£ß÷l;®{ËÀ (#ºØXnF’"‹˜„8{RØo’ÁÄT(ä_WðbAþK|oM _ÖÓ—Wßþ‘½ yäMèÿ6€« ±^½÷atž@O1ë¡/Fñ”¶3y#™ãcMM×ÐGÅZýÝ[m¬ÿºzÏŒF lªù«"ÂJ>®eØVBWB}çV)ÜSÈÛi,¡ïÞ§ïR¸¥½»FǪ½P.è½LÑ€xø¦_[ÎXVˆÇóôQ ¯ TPÿõvƒ ù +eÊ,’pþÚƒrh“ú¸“uñ„Œ`+l{÷eQ÷Ö_@f63HßPavÑzUÍ_°ŸÍÆZ«1*ªäǯM+Çbp€†;{ÝªÌ ­Q3èVV;Ø¡¼ÍˆÓ ®O.Ožài,¼88«ÖƒìÆ…gŸ=\=à@"FàúKFøT¡bû˜‘¾VŽl(lg®ÁÚbÒ­Ý!¸èªÕ–ÕË\áýùa4Q1°Ì~ «9âqV¥¸§Ì¥ ’s^kí¢sdŽ›nz‘Á­£ç¤:ÖLžz]Žðªr Š¥¢ªƒvND¾‹MG79$ILiþ&“AØgánl6y‡J FOµò;ð,zÉ´Ñ% +o»¯ß xÈ0˜s‚ÖÈW1FxÏîÔè—ß gþm‘µxVyõµÚÑ"]#z~—§pvòÁ †‘™öØŨ.rB9‰$n¸YC­C1úÄtªd@#÷¨8ÐkN‡Ô‹K° Ó;£ÀêÔ“lFú( ØŒNóŠ¦;àá¥dþ¬Âûí’­üß*¼Š<Ʀ¡•ãÅ„ªsÀ¦9<µG CE`…Vé¢hà½ÉÄ%Q“ÎF¥oP½Äâу$ª½"Ñ33¼÷P9×9ìZs9‡'`ã­ ìrÚWù:N”¥ìÈsÓõÇ”·@fƒ œ^WÝ…&24w©lz æ$Ô2Wï²wÝ…ÆìO9bÿ£å"O¦ŸÊÍWÃ*F]Ý/¦`yªŒQ± ˆÉ”\Q•ÂF*ªÜiTñè^N öd_£M`ƒ¤†S%T³NºK7¯+R™Öì[r¥›üÈYõÅíYqe}¼±Ø ¥‹÷ØY‡Púô +ÎFUE¢ìóþŒðÓKƒÀÕHŒ'²µ>ZQ@ÎIÙàt%£äÿ–œÀ[¨)7Ä&¾ü hÎn ±éY'ÔÛa¶TÃñ'XrÔß™/n_n•JL¡ (–@ +²ç ËК +­µN{KFµßÛð^k›bÞÂnê~í`L¯£]Ûa¤U¡¹Å{üˆvâïLßܺæ¢4“ô1˜$rmAÿîs•ÂÆóònZß*™»=©÷Êsõðo›b@{‘yÖ !CC‹{c.WZ¶ìïæ0n àbp…gsP˜d$-Ñ\ö¯ÎÔ›&L27J»Býóµs/g(ô©xQ,t>[®â8Í“GsŸ:R$9]6&ˆúmy®)iµŠvÉéjÂöW¨‹LÄRB^RBal¿ëx³_ ×Y:²5M§¯ßæîÛ»­µ¨û/j¤…àÅÙ¡!}Þ`”îëD&W€ÈªäÖQX¹$HߧçÌtI¤­¼ ÈÕ.ÙYñ@Øn«r–_ôìnÜ ¾OüãtAN-L n–‹—?_Þ^_…Ûg’µ~žÆ;`°Ðí¨KB‡Þð6eĶÁܯ‘¸ +>”èl¿Qp‘†«¢Ó)À†¶ùµ¥ò/;S' ^¹õ:ätJ±j@êx«³ƒE(0GÊ;κÛQqŽ©Ç”kT'¹ðž;ž ÷ÉDHj‡¢ãsr‚xÜ– +æ.Â>ÚÐÖ¯¯¡Ïk—®ÚlÄ;&–¯#<çÚš°òe)fÑäFz›`·Ç·?¢ãIc@SH&–<ÿ¼’îevn8F‚\ãV±ª3Åóa­A!yy¼ã:ñÓ+žc!£xð–‚bÏMþÖ‰á/f}3ß–›ë˦Çã"G©–­ç'fMsÑÔXWUý}üöµ·¸Yĵ^ €Ô×%jÍÇ!H¾ï‹OHÿÉÍŽ_ù¶‹;臲Îò‘âJ¸v¡²]Ü# +$ÙªÛ'Ch?5™<„Sý»íË°Áñ@“­ ša¬´€-™AcŠ†éloW´M(òr·§#Û`×ÐnY{jÛ`3|lv®`º'Il ýà±!å´ü¡õÓPÂÊì{”¢E¯˜ï=Îpaè^ ØhëOk`·î›ãpøú ­8uyÜ$rò–Ýó•u +f}cqÃ+5Áy~!ýÝ]ÕúøÀìU,­¾t )æi:Hò ¾O…ÄÛ(®_eOéFV¾þqÐ>¬uèàÄ-G:ˆáñÄzƒž…›HZ\%UívØÀ Ðzã^àËBy%€NT⸶3=®Xëà?¼mJ’ø-Ó3„÷iã×H@Üfσýk¸R.ë›õýv'€Çm.'ÍSãÂD»ÌÙlyü7“¢ YõÖC³­Åméµ^¶¯Gu5_G›øµÙ1¦ût/ŒÔ þàÌâð +à4‰±1­nˆ_ûD>}p+æfªg9h$ú¨Å]@ïMù`Ø^Ò¹GKö;5«¤wÇë»äIrqïA¨3fA‚ßYiu¬€ÂÝäÃò½ÑïìÒYréDõö:ÚdR¥Ý “At ë-ª,)âºaª¤ÉºhâÏ9[Ô§uÿSç9K’„ÄTK©aX$äwgÉ“¶Oƒ[âx‹qǃ£yI(–ÿ¼j5L§ªIÀcµ}|hÀ$‘zDâUÏÂw»Y+½ý¬Z:ÎïçÄϤŜ1¿òµlÙeÀÇ`uø@|¬ìÖ܈贚Æ^Ú6î/žyÑû`að¡¦È Š[¯ÎŠ`Ò¾ÌEž£ÂwÁìa ¡zæiòLa„}jÊ°çÉ@û£Šå}ÅxæïW¶™ån‡sŽ˜0n*{¯l?Z©zó‹•Ê‹>¸ç8íp-LÑ&È£ûïK`> `´¨%Â`–¢îÝ¿Ésª?ºvË»Æ^\ü‰*’ÖýQÊá¨Nbf…+Û¼¾Þ„žo" Ù§U ¼zÑógêgÍaäŽu´F Ñ™<ÃXúyݸª¬Ðú*¼Ègöÿ4?X2]Â4¨HšÍ¢›×òš^ÁÐqLeo²œ˜Uíó~ ÷¥’’Ð7>ì)Ƥó™Hnžº¨­A7"é{D†Rj)ÿ×¢Éÿ~áeàíVDJÕ|—ººX}ѧCrŠÈÆTÈAÈè fý˜£’”P};Š"Ó¼KöÓ#ΑT ·F÷ú\çý÷^Ô“ ;™ À|êR D\Ä‚ HuÔ6ÿQÅýИ'Q3Èb;x#¸Ž3óSÌ:ªjbíÛ%¸tJ‘/>Ê¡OÿîœrVÞÂx]°¹¼>)âïŸÁµ]€lù5o¾[ç¡ÐF;,N&¨'i©Š\±NQÁIòHÔÍôÐÀ?T:í@ØFïçNÿ SXÁÝ0±<¬)»hàWÖ½4f¹FD·hÛ.سT)^SÑ-…nw}ý, ˆZN¸EÐCô¯÷ Y ReµzÂÔöð3¼Ò\ +¶ØtíþþYá5`F~_›xÁƒUž|‹'X’µÇ‡„G@UÖ6I \™„çÜö>ü:ÉV_ûÉ>Õ¦9*I0}Óµ\"{Øï3UÚzÆñÉuäFœfÌÙ¤…õPߨÊ)Eˆ8‚üU¥œúw)®ðgŠËqÔ:àdj#¥¹¯ÜˆhqÇ ¥œ¼so -¹@’ +KG7ã"­|QЇæªúå Zòzs|…‚}£ÄLÕ´SŠ¥:€fªÕm¼§ÂA3ïÖðS 2Ä=‘Ö[³d·Ø“üJœ\ܳ­òcìÚ€üù|Ët¾j1ÑÆ›AçrþŠ®ÀÑ®þÌJvÂ,K| ò´…Ï•VÞœ +˜ü›Q„´[ÜÞ‹ ÑãÛéA£EKS/Œˆzýÿ˜åKcÅ +OÞ,¨4¾•e|Ó{‹G»Êø#Rvðà©KÎýyÝ{ K1èEúŸÖýVËVw¯b´æûÙç6­«ÂªÎÖ=…»ºyeçŸÀeìÜ‘üÆ÷ uEØ>M%;,ˆš1–W}w ~hW¹ «—¦˜_èFÌâÑî9QcyƼ®E¸~ôÙf®áz\©a’:a<ÿÔ2eugg°SRŸ1ØEÜ’(=F™=Ž£ƒ;âq')^1>Çu6 +GÁ0ÿÑûòÿ¦œÿ+B°¸+›æ¸žb¥qGYÀðitâLxRIPv®Õ½·hÎÄÓÔ¥ºÒÏ‹^ž½:nwåòœÕp5¿Ð>^؉R¥Þä}ð4ü¸¿Œò™áùÞaŒgül}×^™(©t7ƒaÝÔ &ó½¶)±ZS«ˆ‘ ”¾8ÿn}@f0;­b.Û£ELì›7†%·¹›3Cª,ò@ä7¹Õï[I [1sI¬îÅXÚ<Æü[›fÜŒ¹¶Ýa¯:?yºÈç3"èu/'Ø\Ödñ ÁDÓ¹Ú=»qUü êškóκùH‚â$ y§ïQ7¼plŽ*žmhS]ADäÛäøù5Îã½üÆ«ü‹79µ +endstream +endobj +2239 0 obj << /Length1 1688 /Length2 8444 @@ -31694,273 +32174,45 @@ p bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ endstream endobj -2218 0 obj +2241 0 obj << -/Length1 1173 -/Length2 2916 +/Length1 2589 +/Length2 18452 /Length3 0 -/Length 4089 +/Length 21041 >> stream -%!PS-AdobeFont-1.0: PazoMath 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 +%!PS-AdobeFont-1.0: CMTT10 003.002 +%%Title: CMTT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup +/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math) readonly def -/FamilyName (PazoMath) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /QGKXNM+CMTT10 def +/FontBBox {-4 -233 537 696 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/isFixedPitch false def +/isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def -/Weight (Regular) readonly def end readonly def -/FontName /IKXQUG+PazoMath def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 165 /infinity put -dup 229 /summation put -readonly def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-40 -283 878 946} readonly def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U -nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ -s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× -‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 -9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, -ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. ->Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH -ƒ$ü-UÒÛÊ3¤³# -endstream -endobj -2220 0 obj -<< -/Length1 1188 -/Length2 2740 -/Length3 0 -/Length 3928 ->> -stream -%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math Italic) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle -9.50 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /DUJUUF+PazoMath-Italic def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 97 /alpha put -dup 98 /beta put -readonly def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-70 -277 902 733} readonly def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û -…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 -¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ -UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp -‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq -1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú -T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: -wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ -AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V -6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ -endstream -endobj -2222 0 obj -<< -/Length1 1756 -/Length2 19614 -/Length3 0 -/Length 21370 ->> -stream -%!PS-AdobeFont-1.0: LMRoman10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 806 194 0 -%%EndComments -FontDirectory/LMRoman10-Regular known{/LMRoman10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMRoman10-Regular)readonly def -/FamilyName(LMRoman10)readonly def -/Weight(Normal)readonly def -/isFixedPitch false def -/ItalicAngle 0 def -/UnderlinePosition -146 def -/UnderlineThickness 40 def -end readonly def -/FontName /NCCVYE+LMRoman10-Regular def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 91 /bracketleft put -dup 93 /bracketright put -dup 61 /equal put -dup 40 /parenleft put -dup 41 /parenright put -dup 43 /plus put -readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-430 -290 1417 1127}readonly def -currentdict end -currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿äŒ¥?ü‹(ä›:øE(ùqÞÚUé[‰s½ $ªgG '“\ -wšÃM•ˆÏ‘¤s¾u¢IÐC'žƒêµÑØú93ó|Y@TÛ‚—EìÛÂè—k$:™mGzR›†g»?·x= w;•*E ›¡ëJ²úM8Í›,õuøàý²èZmYË -þâøµÙ`Š”n›ë¿.Ë£†ýî/J -E:– €ÉB³Oà÷/g^Mj9Z6ñ¬ïF脨0 B‰KBÕˆ[—°GÓO¿rEÞ÷µå符õY8ÁÉà6ñ¹¹n¹XÕ”°*w„€FoÜt8CF :ÿg6}dPâ§Ék»©™]«!­ð$ú¼3h+Û†^]â;J˜ØRÛ*Ç-uCí4È⚈uŽðµ6Lj=!;Í`‰,7TàÈåìØÍZX Vʬ]w)ߧ±ÏÌɸ)Á²ê%NµLß±‹VÙŠüÓ’ôÚIþŸœü”|5ú…sBŽÏMedO&ÿNg°’$q&äàYשA Øuþ­(†@HÞV¦qûÃQyåï?>&_Ø@GKf¸0ÊZ E\¡¯¾±$ÿ3e­‚LÛá -°Ž:G(,æ fÔë‚Ë[MÆÜ]l¾n™ ±ô¨uEäÖÓì~0¿Rø÷š‡tö›»^¤S Pêþ–¿jÀòw¨£Wv6ä™ò!¦Ýé¬ -­Ðï‘1²nC22OÕœQµS ê³tyóžn”åG - óýµ¾Œ}=_÷Ž¨ÊóÎnŽW?^è‚2I·=>œÄÃ]ëL£¢‚‹-‹Í¬Iô®úq^ ͘´ EM -,|K93¼¬ðQÒbÖ¸Z×¹pu ÐÖòPÛ«%ÃFùj`(¡m-¦>¥ĸºtGT‹ïf• -ëb0UAã¤xð“>±¬|ïºz40 -—BŽèCGÒ¡ó Œº%"èânHè¯â¨#Ü•· diKs¿öýx‘²cî³"ÕÖHc öAå2Ÿ·¦áskÝ6¢.ab?ìÀCGZրݣêÞ~côc>U¤Ú”!«U ·ð…Îìæø‚ب ®Zl¡p;ÿ@6CñÖþá‘ÑžØOå.©a‰ÞˆRÙ&‹UÕ÷ìÕtºA’ó•²_Kã·Éfq -á(CŠÿ¿$gUà^½†«/¨—è"z ×RkÌf ÿž¦vPGÃyQ”}ƒiòî0Ïñ}ãÄ*‡Ïí+»z>³šnÓ ˜ˆy!2XÁŒô{”Z6’”ã0Ŭá‡Wë ZîxVêŽ*ü2'PÔ§ˆxh}·C}—«Bºû—²â•.†ÈŽ”ºp&…îj…Žÿ©×·ù—dãqŒõª×â'gº¶0ˆéù·!gzŒ”$Í…AÊ\/=Çj‘ÂëU˜EB·ÎÈÏm–/ºöðÄ §ÎÖy²]Â"Q²5Q.Žš_xÕ(çæº]ïnõ´R©Å{æj„Fæ.6Á‹SµÇå0&‹M…P!>æÞÉô>¾ú¾òÇ’Ü¡Q°Øá±A&%_¢ÆÍ¡¢°•¯ß ~æ›eài6œSËܯIƒ_1pº×$€$~á<À-’.Í/¦pY7jU‡Ëcd适™ÊM“Tj)9Z[æaì -ƒIjðŽÁàQЖÌ@é1¾°tªž2»ú6“Îh½e>}[ˆ’E»fagŸ~ùg¯$íP81lÎÑ_ÿŽh8é*îðµ5îCÑÕ,ý áUwF`‘àeүͿýå;;1"c%¢|PüPh\CMNñ½‹ Qn1:ü .«hÑ+±ÁUe‚w€5­¿Ï6e–õãÜKì0k‹º(@çs¤ìQ-rñ¹­DÉ%úÝ}òzz®®RüãÚÉ7ùušÌÑKfÉÒ ¶1óú(±Æ¾Hµ¹^PÁ(ÿó ôB'vhuŠ fgÀ›ó!ÓÆá±› ¬š>¡Ôgªã¦‰ZLºyå’ûM«SŒ({º’÷ÔCªE§‡]éûæ;ïþÇ&m±ûP†4 }:FkR‹{˜÷"¯KÅ ;\Çc¡‘/¤[ápUÝ)6)gÔsô‡ÔÁµ -„.Œ -wçøʘXóÔ¼Ï68…|%Ç;xõÃ_ðÝêÿò¼€jA÷ñw(¿šdŒÿ—BsÑŒð¼é’>„èú~è>‹­bÛ þûµa™‰5s8«Û÷èݯÿÃÐ>ןqˆ§ î!/‡ßÑÇjWKŸpDzÂ¥›Á™ùN=0óCÈ72K™¿¯0Ôër¦|]´*LÛí­Åø†Æxå\þÒ¨’ëü -üG:Æü—c{7&Lš3ÛÊP‡ÙàDúîfº$FV‰—ÒeŽ‘ü=…X`5 :cZ+ˆ2a ]ê.…D`©“KÊÇk^%÷ÂIh´MHžŸ—/F? A¸]bu¨\Ék)¹šT¾Ÿ¸@ú,³¡ÈØö®d[‹ñÏ¿ÐBí®‚, Hh«¤ÁŒª^Û¯ÏI±±*ˆ™qjT‘qûbx`J@̤HIæ{…¾€Û£;§qOÒ]ßûTe„7”xwy÷i”CåoQ.<èÈV¼ÓYx}½ -kLÞ‡1‡Ú†ÒÁµÒ'mȾ­ZzË\0©çž…Ë‹õ8FôXqàŽÕÝêTòt-1À¶ÝAºˆrz€†–&‚ -ß"iå/3 KÅKÓ¨÷å ÙŸ7bA-ÞÄ -œ¾Ë÷y“²#ĹÀWMN«ë¬]Jþ—ו¦ÀU *É;.Ï ‘ %wB©¡åy;h¢"1ӡ환%NÑ©p1ú ‚Œ‰ð@+VJ–ÅSƒ€).—¾&µ˜yš‘õ+¿p<l)Ùlw†ý¥?Ê̹”FfG•òµ ~r®#ßýÍ]%?£ÓöLh0R"1ƒY,”1ªÌì´¦ˆ`H+blb„›¶Uû¢—“Š<˜nÑ[s {åyA$ºÁÙNwtú•Œ&Bºˆ!L‹3e,DD12–r¿T5ˆ ÿ ¢Hù¬í{bLÔåëe/wyBQ~ªæíÉâÁÿOžQk6¥ÐðàÊüºñÂ$+æåB ^<‚HZ°~“ÓNp¼þ¬å#³j*µô¯gqWkM6z¥±½Ã·Ø2‰w¢õÙÖ8©”¡ùèýTèÚ|JÄÊÆ,ܱJÖŸUVzÅ%C/•Tü­R(x÷j‡‹Ø q?táÐhSÜõL陼æB\j äò¥Ei¥cB ßgŸb £š=e¨ÎáX2)ƒm ØÊ9 ý˜odšB°a%\“ìÙ¸Ü *sr“ê„7ìzóE±ë;~‡€ðPØÈÙ¨ê ѽ„Ð •Lù%*DCî̯Væªpdmô™›öÿo­Põû›B¬­6¨é9OsÉE‡Ríœ"(¶$@A.6'y[)GG¬˜`Ùšqè!ØùfGŒ—õÓ(OZEü2u[\îÓ澶-ËXu[é]’¼ËÉÄ…üe¡[þ£@×$@ù´¸zýJ&„ûäàŒíU, ͸ -Û«+û|äï¥íØø½ +¹ËF– -‘Ž6ždnú¨å‘§Ô[°E-x•þÔ»‘ïÙR¹,*[c—ŽPÇLCã 6'«ç»µûøÍ~ô8q!÷.ë:š¿÷©ÄkS´kúªn98@Ì?-±×Tùt¡B€Ô¬™Æ×Eš!3`yl& WAÁÑvïËØ8æª8 -˜Wç2¢4åCqMAÌa©Â·½qqYqfìžžœâÓö“õŸ¯„bۘDŽ5Ÿ(‰ZÊ$hÃߦ‘·m±­ÜÞ,Å·ð,ï]ªx¡óNõ8Û4 öøtè»G—= ØXv´Ògkñgc q¼ÜdfÜ%Mž› SG—øPïm©«É,,ÆÚÈî¯ÆåL ²åŽAvŠ¨9l1ð¤Hë€`™Cø⃗Æ!Tà¹!2RÅ9QN›õIuV;¯D\õ½ÖGCöhtAÀÚ†‡eS6ã ¤À[2ÆÑV$¨<¸oÄÚº®~ Òro1U>&=éþÓ³ö¸‡Ñ%<ÅìÊhh -Ð*8‰‚ƒeõ”NåakU±u%ãvH²EDÔÐÒŠ58ê‰võ"ȉª?H‚}Ù( 6Ö˜s[1O=xZ1ÁÏ[$Ñ'ÏÐ!Ö„¯„«W$†ê?ÒãضdsÇHˆ» \éfÖB–Ë6ÁEÌ%øXãKm'á:Nw;b%Ì÷šA5Q•¹ÑœyacP»)tLq=͘F.’ %O -¼Iˆhke¸ÏÌ!òw†™¬«ï(Lö<tÉÏl%"Én…Q´)ã4a -iw+ 2bgr8%#ÃnxTËG&yû«ñß1Ño¢•È0LäúewÕÈz¶ó3áÂî«Â -i„¡e9Y½o¥“÷ò÷'ºâ}zf *ê8!é¯ï6¹¶Ôï8S´("úÈ,7MXJ‰ªALìÎÃî©…ÎI1sëÚ6$)ϺÑøjbø¶ŽcÞZÉ͔զIG™'`þ#áÜ|ˆ5+…DÝ÷×bm6›iæ¹Û>‘]ÇÁ,2¹ÿ“Jó ÖàŠo5@|JK6!CõÉL&dxXñBÝ8À‚p9™j4¾ [ú™Ù‡èGtö´bú.Ô/ï _9"Å:Nªx ðèýùV¯ª)$›®ÕúÎÍÕ¥þ»tùV5è©çû4jô·°ðCYÈ­§ü·†Uçï-ÁÃi73)‚IF27¦øñsÓx¤ƒ:¤­ùqdAÃÙºXHzõÏlaV/Úõ·üDïû8š4&MÞ¬–ög¦V®1¡±Rü­¯„˜<éÍ8„Îí ì?Ðb¥ 6¸[êèZøŠ$ŸÛR ¨ÖvƒT-Á|âî0àV¿ ¿|Ð?Dµ£…7ê•Fê<Ǽ”i;zHèè­8Ùc,o“H_š‹³žK" oo%££&T€»ðT{ݱߎZ¼ï\Ù=øŽ`ì㬀:ŽÛzXÀî Ú ©›QDWn®*Ry£Ê£çW­^kDÑ!&™Ÿ§ÏÝp`|Oú*¾—W^¿k¸ˆWn\Ÿa^È0§AzÓk­@ñÚß66¢‹zOÈçË¢^ƒcb-!„zp$‰²Œö'he–÷WÅÁ}Êþ?'Ï˹Yp˜•2þ¡íÎü¸xþÌtÚÐßïD;9\”Äwè{d\’w¯ŒŒþª€*§VÒ•ä²³1Í }¥½÷¬FTîÂÑ/¿oôs€G‹Sú ÉþˆyI‚ˆzüÏÞxÄÙP¬OZãMŸAôÝ'FÚ·jf×zM†`7”U»˜µ‚ë*÷…0š†»@áW·ØòBÛßX€3Êo¹Ê•:c6˜‰Úø£÷R‘ôEÝÄ!Pÿܨ^F£θej]Ó¬¤!mð®=Ü¡ÙPàñ:4®ZIqõêvknåZUêûÓËšË]P$ÏT¶ËýÌØ%.‹þÔ3¡Óÿ‰8‰ƒå`®1ã!¡MxéRîíŠ ‰½š=ŸåN‹­ó#xPtâð#Ï&Tt·+i~®u“$Ž­zÝY(ê=ìÅÏ>T–q–ZÈ„›;ˆ[}ªp­ßa€~ô¿ Ë[pî‡ÖsŸ!c yÞ;àôÅ.e\éNhôéî]"óXˆRñ€‹‘’þ3å+w^Yë$àÍ­’÷a³a{›ÍÙcçFäSŽu1\ŽÁƒ,*ÛFD­ý6, ËeYÃÚÉ VOªñ~ÿ<‡Þ¹•5å0„Þ´Sc†YNr¹t¨E{óÖaœ°Šç,Å»:4 W ¿¦\…eXµÝ¿+ÆÖßWiæôÝ6çÇ :ÅŠ²ß£íÔ–ÁŒ‰tì˜ \1O|å³”åÄh”<“¢"­eøuÎ ß"¼¬¬k(Fî 9õ?ƒ?'y•Š‹xI“xCf&Ëó,»·èfö0ÆGû°Ã£¡^Ül‡5\_|‚*‰æõÑm 4ËIžÈd²3$)Éf˜ÕΦÔeÌžÁd<‰ùp3W¬KàNîmÊB˜‘' KÞ×<2†‘–§ÁxÓÑ3œJÜ‘j¦ôõþŠd-¢åOB$ìA9ÙáVtËÍÁ!- €¾/EJ}†ÐÏd¬[ÌyÚ{öÐÚH/ã8ÿqb³Žpí¦w?…àjù§¹Y¨Þ¨+?¯=Œ¡—ë²ôþÞˆ‡Fò›#¯N˜:îáznmy.!Ö‡¸ýA6q#Ïîà,Ænc+âžo -rCR²ß` -"h³ZSÏC×f'Öƒ|ë‰OÅJÑ¢Þ4qmպă0¼á×¹­‰ kÆFÅÏ›$y´çöýT÷ùÓJAê$碬¶e•’˜˜L||gBø|ÿ{Ý$·W“CÚ^UGè€!±ßÚ·‰¬ÐþZ/e‡ºj†³Î‰jž‡$,£:»©¼ê–CŒk¿)µÏ8SJc¸ ®¬ñãêŒzžÅÃëÓUM‘ùNðT§þû¬f»{¹·ÄK‰×ÏS‚?O~Ý¡8RÃR¾}Íó¦™Ô@‹“\aI:^·Àlââ†ÐyÛkH—@—¤Ý".,Ôÿ˜ÜyɉÌÀ†Ê©ûo!TïÚiâSPz8çC3öF.áÛÓJ¼·tÃà ^ ¾žâƒ3xv%¶£ ªn`ñ=Õ 7ˆ"¥^>hC2)+›qLvW¯ -g–ëZÏÙ­㦨̰ÀôÅBäƒ$é£@®Š‚ñvÉ…º&ÝvP²Š2o‹’ôát›8ã~v8ÙÍžc»d_MNö.¿lßÑvSÒÖ¥Û(ëﻺtÉW:HèëµàcÚ'l‰[“)ßUžä÷4–ýÒµ‹ G[^@Á^r\Åò‹¯ÑéLý:)®zpÌjm4ÕÝnx¡÷Ñ¢TúÙñ%²Y›Y¯COè…ĤșŠ ­b‚Øܤ!Ic=ô±¿Ä!Ä€ÎÉ?3¤—ÇÍZuv£ÞîàDI6ž!u±Ü¶ ÔM±?Çb5‰£zùp$EöÏìÜE¨Ùm{ƒ<燑 ˿ÆÔ摪‰œžoš¾.'W@/•|au‰û¨t’ ¯¸˜‰)muP#4ü«Ñ¹©Òß¬¤Á2ñðP|ˆZŸ9#^†.p×é40ïîôÊAÆ5&Íj|$mGô.1ˆ`Šò8Z@$9¨Õõ²Hà!Rá÷iŒ²Áƒ6©'ÎÎïÒ‰G¼»É1“tânkõnÌaÎô$¥Nb}*Ú@[œ´Ã“xB#Sí.ÿL?ôÀ˜öü¤'Ò¤S`©×‚vªŒz¹×Ö·#dº¯Øëf0Ì‹Káǯ—ʳc%ýÙñ¸ <á€dà!šl:ÀXKW0®m¦V—)-L%€½¦kRYMX Ùœ|,˜Àyž©.™B8ó¶ꄉï™çpî׊–Æ*ܾÛæô?ÞG.Q¡{åáQ&³;õ­ÕùÌ¿ 'öç!}·ˆƒî ¬ôo¹£/—܈í‚D-¯;)ø+lÊ”ÍÚ lT${Ñ‹zO‹Å”a¡NÚx¥¦¸R‹Ÿ+€G¤^»óá$:àÅÛ¿®ãÐå²Ñ‡ûj¶»}`˦zRÃa0› È—rmÆFbP¯4'ã#í´•š'0ç¨âô ™ ˆß¡š>Î:!C穤¯ýqG PjÑ]ŽÎ6yâROFË©éX¨m¶GºUß­tK®u‹GŽþ\»«Q8Öä«©:(vüIªe41“ù=ò9¡)’è`È™ÈxÂ|`ZÕxüŽ0«ÖϾöÉH©&û¹Éqáá å¾ü*@˜çp  7© Yy¦Bï͹xÝ¿¢™¶qß°Œ`ÁHšÂ»pÈÓHÇýÉj¶ÓÄX »DÕÿ±ÚÖ×µ`1’åéØE+yÿ88#¼‚Rõ}Å– •  û~ LÈ…"ðÿ¯´*¿nD<ÁNXºBŒØr%Çÿ(ýÍO¸˜ R ±¤ýd’úókðpEÖ+Úë€ÛHDòÆgæ$²MDí=?v(Í-Œ§¡±3¦‘¡=N½•­Ë÷rrËuH³aÒÎ ©¬!¨s¤¬»ä¾™Ww`'K´¢Ubúó“6‰¬Ò^ê*a%†~õ#ÂÖÏ'®(Q³ªp…AÄg8¡àÌÌ@@[k‹ÿ,2¢£ŽS“EôµkŽ>7 Ù¥\BŠîUIÓ¼£©”H0³L‡©.G³ ñ )œEæÛ<ŽžíMÝí ,£raá0‘ -]á¯XÊÃðmÑø?¥ FꛢcR9|=ÅZÍ•'ex‹WÃ4«-¼›rÃ×Å›o2•ÃkúƒÌ¸á[,÷þøÉœ)½1ᶪ¸Ÿ ³›¨ozqw‚÷¹¶à{]ü%ö ,pëˆÍç< ‰.>eë(ļydgÄQ‚£ý2=\bÙÉ8Z .xÙç««7­%M}ÈïÕ¯jÿãWvD ˜dçG¬¬…|D[ÜÕmh—ó|ø×çxðgúúàîjŽæ£»ùÁRLO+H©oâêå%ZF&Ÿ÷'ã`}ýŽ5+…DÝ÷×bm6›iæ¹Û>^­ÿWÂú¿5ÙðtÉŒm˜b°©‚ež†“D{ùýM§ë/µ‰ec@MÈH¸{q¸8‡B<ŽÀ•ïžB•hFÜ­ÓÔ÷½\‰÷éXµ„)ƃ1â…Ùªv‡(å£@—õßlä|÷Eä/ò9L{'\ðã}̳¦­=ßòõ|pI:ÿx8l¦ºsÛÔ>B¥ÇrÔÍ5)ٱģ Y—‡q¾]óÄ$&eT31ÚEŸÚ‘§ˆhÚñÈV+/YƤ(ã¨X¢–~E>¦¬š¦<&rïy|kVqÕ6Ò—í ¼uÍœ0éPÓÁÕ}g¼½ÄX´.ˆåHÒ.¢{aýl‰Ö[óNf4å0w kihxàŽ'…³œ¼_3bßÿ'QJC”z‰a â?¢]Ð$!:€‡ Žþ<ilì›­áÙxeøÂÙµ\KØ'{Ý.†‡¦¸Ô?ˆ>yK>鯊\Ñ -4~Ç9£Ÿ¿ðf+“² cUÝ$d¹íšïMejÏ¢jÃÅS]©6!W#u:$Ñ ÛN“ÆÔ•\Z?äžëoò‚[¶§oûÔöä½Ý‚AöŠ{ÊßË=$v>–òÃ…¹ùÃN‚ð.¸È¿Ÿ˜ÿß<.­ Õ­—å\¬ -åcVOÁìðåÈðš& üçÀ@ÑuKÀ‚·\ß•fšA•[,¼fp˜–ÖŸJìÒ~J%÷e¼µyTÄËZšBÆÏn Ø ly4D¥¢"ôš»#¼aï;³=Ä\d¤Qü§PsJo§]»„’yHN‰Le(“3Fªszˆ©É, ±K²Øz£•ïnŠj–pSäë—´€(^8Æ.þø–ox6®FWÌÉ Tú^|ÈܦBÏ天Jª¡SÐõõë<¼­èË -YXux›Ï—‹,#8 -4’ø~FšJ |Y&Ñ°låç iòB€EÍ`ž#Î7yb•·B O€»O÷y¶¤e²V²Ä;'âŽ%ãN6HDð¿¾PB`‰ìpq?QqLƒ\œ•Ö-€‰ä®{Fó;:‡=3󣬦‡û³ô*w»Ö‚;°‡í®ùZRE— &*TUrüÙöM**=`D“±ÂMYâ¦õ…XÊ'N@qxäæ¥?ê”Eûá*˜Ô›‰]¬yʃ?Üçv¬ŠõÓ©ÞˆÇÖ¸B7XmÔš)U¦tÆ Wtç~ÒNbõ¨]ËL¯•¾‚Ϫdà!ËSì2 -­lìÐdüõ¹Š ýóÞÈ­I3òš:ORB>¢EVp;'vnNŽ>6ùØK‹\qàëñ_4ýÙ»N’U–þMÚ“lÆ%¡[.ªê_1ؘ—‘%Ò¬4ŽÊH±Ñjw¤yeŸvhºD¶j„c®0…]8ªÐuɯü`b¬Žû9£ÅMÇ&Õ¯Š±}Ñ :ª~¼z¬é®•Ÿ{Âî#É£yý©÷¿¨Þ,ZíQ‰I>š`ÄÕ>ëD 6.V¿S³o0†ìr:x¡kÿ£°•|4ŠÎ¢G´ÊY -]wcÞ©u]k„ Áv©ôV—î‡úW¹ÍíÎ[åìò=°Oétw*"$ü;Êw–ß{Œ©´ÿŸçpK†é€–#ó㣮55RÆÖÒ¼ º·Ú–ž’™ó[&Þç>6 ¢F¦´#˜‰_•ÕöŒê -‹æÜÔž{b=i7fÞÞ‡5Öz®“ÃÔ˜§Ó¤- óy#tbci4Ýñ0-Î^èTH¥ÃÏYm}€%x¦¶ÙͺhŒ0A±:]øÄéT¶9[‡þXe7¢Jð„çTMŠvIB¬ÎÐ:w…؉5Júàþ€@¦À7à ¹`p»¢º„upÝ&œê9adœ ÏS(…¤•™ -œb1¡%™,hh2ÚzQ+$2%l@izɚϓ­g%sAâ8¯óÆM)¸Õ= §A‚þâ8ËÜT:XJâ+·;GýÑ5t‰…oå D+ëŠwù)Šu;C`øÞ~ºL%ƒ—Ím§bG T\æ¸ÜJŒ~7‘atðê© Ÿ„@ƒÏ•œ›œÇy‡½—š™qe™~Á-n‹ÜÒ?¬®%ÞÖéütÞñ*¯ã7š®†b{¡‚e(ƒ—‰¸äzaX ,Û[²‡®m¥×Y˜!»ªd ]’7ŽÚµiÃG^‚‡àQvĽž@Zÿã:¥3ú&Á*@šñ~nò1ìzÁ• A¸±Þ2>­¬GûÔ‘bl§q⶜åÊ«ªÓ§vvI™m²joX†¤6%Ʀw£}]ô>àþ6Þ_'¯VŒÁô,Û5ߨyO‘ÓTTÄ-æÿø¬†ƒÝbírq&ò6Ç]&…òý3N&`<vØÓ¼êì’XÕ«G“Ä M}Bg"Mu|ìõQ­ô³DÆ’dÌü.ŸE’b®±=“èD$h‘&Ÿ0þÖkÙ)‘Š)Pw†¦ÑdÂ:6›ûp¢ -J.Èã>rW•úrìi8(±ˆ¸¸P›š||”ŽnnJ mTpB”G‹LfJNŸ¡Uø®ÅBé„-yɘ—JÕ™Y~_§¬Ìã²Ð£”f€ßòá s›ÄÅlE'Þ‹1àõSþC†:T·ìFÁ Ç÷‘RÞÙW :py†¹s³ÍœZ[å‹YÀ ¸@==g~6ëˆôRõa“ÉÖÓW*ªÅZ@[ðô‚nid¡³É²Ø(D£šÿ_æ†UàÃv<Åøîaÿ$]á1êf° I“à©”L ´q‰¢°ÐD Ë„FߋПś•GB½²t+( -ï•ûI-_ï‘>xb!òijHèÞ¿9M’`챓öOîóœòßôž:š%Ig8ê:!zPÀ›QK~IÎf¡¶¹ rq›5It{²éãþ¼â‡“ÄD©‰†ž¸JHSuN‹Çf.>À›ÒíS©²Òv.P6)ÈÞø*CÖOFŒs¢N¢c|€ï É‘ÅÝÅqü³‹j‹i{‰tÎqÆY…¼0dbè­YÜãÿÇü–3BšÉYÜô%P"?6 -¾û}FrĘOð-Øe流Pz˜Aþ;,ÍÛdòÆ-†$áü¥Kµwô´Ò2¨ºj -eX¡è\kE*ÿ2(P†_?f Yä÷Æõž=ü}LO¯UáQßï‹Gä] J×ÒÊñwP—5zBuÜ9C$9<Ÿ–Šü3Úsu´ð´Òª-K°æ¦–Ô¢Ií×ó¶võ#Er¡q (àYܽ6Œ^!b’4˜„Þ.UÿòÖ×1Ä}`H‡ö½‚ͨžò=œ£þ:C…ëþyI¸CÕÜôœ³ÈÝ oXÛ¹›r"CPÉ]r¢vw2òž+6èÏÉ2¯-Ú(Ö1ÅY»Ìô(_ÔíùÃ2³Qiµà:m\5ëp = î‘YU&…xZòù^£°ˆªP²æãþQ‡Þ$ÝEèTÆd®S=”PºÛ†Lþ½|æÅïWké…¬xaÝW|œe×VÇSlaòU| …4ÐÊ’äT~ìïBÚxlb4û˜Û†˜ò”·Ú%+K«ï,aY3à$rçPq×ùÅ/æU2Û&p,Ü‚òÐÆç ðP€øz›`IMô ó”” N=Æ"(¡wÿ¾qŸmÒôBHÞf¶êÜÊj ÷+h²ÈM´A`¨+zx¶m×0% hRZ³œ‘Ö¡4A”Š¢ùÖ HÙ0`BžÜb=Ð,2=pd”M‰ë.l 0/¦àmµÆ‰ÛãsºŒœ ?ólˆª©½X_5aüX²X ƒÜbi«jMõq‰¤JWïügÏäß`£K°óÔoä/˜[Ï=”“­Ì³q}bÝG`ÚMÝ^°—³o¾¬©gLxê~!ÛqWS¡ÉñÍÆ7rÂú(‡Ro= -½((›F5‘|l.2@ÈgP#€'¹¸á)ã“—Yš­NåS“žîaïK7–öòWŸß}&gÅ -9ÐÆÎiîÞ% ÅŒ›5¶°"r2æþäaKÞ ù¨GI ‚î.ÚZ󆛾ßØ!cl§¿yµ¸À’^ȹp( >¬b …´ÀÆ7î)uv–Ãñ5©‰Õj*³Ä΃n™Þó*RPvZKI@.w»h!®9>xq<½QÈ©ÞáYkh£ÚÜþ _‡ûœScßjÞî©+±LkÅ)–6„ÜYåá?nWS yTHÄ& MÈ«*²=$OÛíà˜a5ê™™h¦Æ_¯¨@ô£“Ù¿Û›åÒM6îëC)¸Ú³SÉ"C.’9J•m© ,v"³e]*Õ×*X6ÊDŽžøù?®Û˜ÛÇþ¦ü L†ò˜M£¬D =¡Rnó]Y»—I€øÐG‰5ÅwªÎ&âU½Ÿ}9ôŽåØotÏéä<Âd2õ²=ˆë6¼.išìâŽo+87Î’»d<‡Ý”Ê+±…¼Ó|x ÷ž¯ «­~9oËÀZ mÅBûS-£k9àÄ•iºý¾d,–4p~AÚW+&T{¤t&+åÎ}(ç+ž”zÕ“´‹=Ð] -„¾oìæ -ÀÜéŒyãà5EÃÙX’UxR ðÂ]é¯Éò׃ ƒ°¸Ü§gl{ßâ4Å]ÓúŽkØ·™ShÍÐN⻦1¦\Ã(“TÑCÍžÜÑr8‘Ø´½Ç˳bíeqç¾1F…¡¶Êƈä]e;ÂŽ.{ñ:Êk;µNXrlè0Ž­y¦ù“š)³œÖ»$¦?ŠÓá»ì -bñøjù²¥³â¨ç­‰0ÉwzЫËtSK‰e«‡’{µì¡š·é9GB'süKb×f²WÛ.IG÷PP‹vßD0Ÿ=›¡mQÿîðKzõó‹!šÌ—Cãè€auLªcå&˜ -o•Á\tÚÆä(s% üDÜÊu/W€mpê» 5‡u„ŽŒ±¥ï_)CÚ¦'Ü‚ÇÏVé“rzË9ÈÕÇ ×ÁªáECápÑCyN/ãk¥¿éìˆç€ú•‡ÝÖ`9üßÎø»C‚1SæÂ=11!£ÇÆçš~Ęۺ‹4“ŸeãDù_‹(¾'Ëbß"* þ³‘¡x£Z%ˆ>ߊx¨a.]?a}°˜¸‰ŸË3Ø\”W2ë¹À·ŸhYÒçŸKOµ¸Ý$A‡U³@¶VÙä™d×ÁXV?ù¼À´Â­ãتI)4^NŪÂ×f¶pÚq+”s–Î&s}6ÿ1{H‚NC¢1&˜=~ ¡aÑĬ…ÁŠZ®é·$ð?1†]wô×OzR–?î~ f€X"Ëû2¨O«¼‰Õ/¹ê¡É•·Ñ ð÷;ƒÈ„>š0¹;n`ð!§ÒZæ?g¹±À.ÉhQ³³TºiÀ'Y.!í¤O$8²…·,ÈètßÞ,~õ³ÅB(ë¤ÒßT=š_ò5½Ý_$”œë‰©9Èk*çh¿osØãÈQÜ?1aLZ³õáŸ:9ìCæ‘ ÖN«çÃÆ+S8VöWWE^ŽH¦;ˆ†¾&R‚^ˆoJø¸‹¼ÙèssËnZ¢ãx˜e—mqâ-|2Ýj%AÈNݯg“ÚÝU©$…‚QC³êhk5ð-Ê¿R²l°mg®³Ç¡Ã½ß”ÌM¶Â.ÍõºH -èËÓ~©žaÌËÌ 91/#MMSÖL_A0§’Iöt_P–?Ž+4‰§å§lĦöú½:ΊÜE83ÎÑ$OÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:ukYµÐÊø¯âü÷ö×'´û?› -ågšª¬È« „Ë»)žÓQÍÌý2(|?òÀ¸#t+•Gº—²°â>šà›ßŽ«;0ÍO“0Nž µ]ÔØIt8³ªçú—CÝ 5üÛ¢¾ KtúA8ñ«|ºÕC?2à°‡¶˜ÊIâD¨§L‹9¦Ú8üøž¢¼üT»a-Û\¢–~E>¦¬š¦<&rïy|kVq×’z™Œ‹Žû©ök¾Î¡73{0rÄ‹v -¨á̆1ÜëÃ݃ԑ,oóZѨ!¶¾ËÍA*}j“¥|9â¿ -šé °/_Lz­F?òïò þÆ”..›ù£ZÐ -öO1PZ®ÉÓŒ$|!ð}ãLPþI÷Zê°8½0ëvA -ôT.rçdH¶Î*«%­¶¶²¯õ )I»Z½c„qï€C°-¥)—Ô:Úõ©A$«YÅ‚¶¶gn6gö¿a¿XO×ór)îÆRa,á¹tÊ{â@S jÊ"ZéEUåµY¿ g7ѳ钅»çlöó‚kævª9ùíKÎ5×pŸu#ä” ¥.˜>¿ÍDr”±ùnÔ¬[¯{ˆlÙõOïï›T -™¶hØÓη¿ëÞ -d}bJDZîÀ.ÿÔ~X] -ÝìO•Ã­g»A'X·Mt˜Äïå™Rh¯1ØQûJ"¨…(#‚ûTâ1z»aÙò‚g}ÐÙ£Ãx3kt¯‹™1¾ÀÄÏ‹Hu˜5ëbTþáR¸÷‰ú™ö´ñ•P£7äUÜ¿¯Ì„Ñë°«g+ÔZ„â’N䀣Š}Ë¿aíwiõÝ#aË“@ÅxíÛ^ -!ŒybT˜¯Ý¤Ròª<÷Ì("©ñ "kk5tf6H‚†*“ô6°µNáÎ2º’n4¨øÃ|£ŠAšÿ÷ßpe™+MVvEîM/Â1cJ6™†tøÍaSØ7À˜4"`Áœ~À8SÎ^¤Û¦r‰FÁ5¿§Z›d,)™ÏBN;ï­SA¨à¡›ër¼Ítê"æ@7ZœªREf}|•òÊ•™9 jÅ ÜÆÚG^$EÔg&¦ÔQ‹øQ ©òCaêLˆs1…âü[Ór ¯{.¿¸ØÐ5©êÔƉÑÅT¼s!†… >l:«–,¹áj$Í´óõpã±í„Bjø[66Ì࢓ù—J 7 ï4Kn‚:±Ô ²:ŒE[æïG¸å³¢™:µÐõ§Ü;㸅™›øÚ‡3R€·ÀÆrC²žXɸfVÅñȹŽ"PA:U4ø±Ä:‡7Ñ×0^sÒ£˜B—»QŠ‡DE2vœÞš–…obPÖ%þsÂÚ82 £q¥dÍÄàoTO Uö -ÍJ_ +¢yÆIa‹âÙ±á ì© fðŽívF±ò¹w“~p·!@i `Ù‡ÕïC' -_€£’yÅúÝb­ªE®ÖÛÎÆs¶»8ɯY” «V€¢n/`–>Œ³ñVÅ$á\~]ЄÙÃý²$Š­X=K>Ö¾.ð!‚)|Rb¬ªW‹ýƒØž`°½àd8ÎN.:ÈŸ–-"Ñôñ »Ë1‚^?ê;çQÝ8WbI¦‰I”¦ÿ@ì ïCÏäÀ\€Ãâ¹I¹=ÑJÄ -NB&õìÓÚêË&ê^ÉQÂ<ìT«îÉÐ"#H8ÐjJ"D“òò¡°Ñ?Ý÷æG®(² ½ž3^E¯4†à`v‹¥ê"‘SHÔ¸5ÿÐs(VVr¯äÒ`³ÅËÍÒâÁׂ"~‘eµ62p» tõ+”›A}»•ëÜp´3·A1µÉ5× éÞu@zéJÄ);Š}Y^ãùÇé°×‰î؇ôÇåâ`„XÈJ˼ñT*¤­sÔÝek\.ºM‚N{ƒ>ˆÐŸ"‘ú¦þŒLÍW§¨Éõ“â 7:œQÒÅû¥/ÙlVˆlzgRˆ!Œ¤‹Æˆû)œë0¨©•Ÿ7L&‘ÍTp-ò•’ë}4Á°<6¨PæÒò¾¾9#šÛG½+ †·P!n±ÓÙHå_àüFJ ->÷·÷dÂcM s x!…›±‘Õ3˜¢ma S®jZ˜›ÒëO!ËçuA£™F,– CS@#ÝÒZZÝ"À1¢&ˆ¾@ÑËüNÿßuá|¥šWº;r “Ð.>˜ª_ò2šÆAwVªØ š*2èô¯–’qÿRÙ¹žÿn*Ãh•À$”ñÑçýÐ2©9t-µ`As$àÇƨ>^£„tÆš:±Á)ñ+µK>¬œ3%ýô+븜œƸØØP þKø ˆ²Ùy/hû¹§–­ Bÿ‰¬„: @†Îø[$~j¥Œ{:eÙ E˜Þmòªß~@È“ÙBÁE Lü֥ƟïÂ[`äRp.,©QK„Ügj.Þ¶¯¯ôé'ÌцúÝ}z¿‘äyS~…BÅ™Ôæºdøý¾4„êÌ(º“5¥“da’<̓Ê’”3áòPLÜñ'E5šãâWàÕ¤ñù®ŽÆ[q‚½H­1EûjU[Ç&cœ~ý98U:ê¶Æý °â›ûâ5b5-c° æNW@$#¿ZTe¿BÉõÝE;88YÔ ›ÝæRJx7&4 Ÿ"ñn@J6—Ãhäàš![ä‰õâ%Å컿Ë}^Ü÷ßßG¹}‰ÜîG* ]…¶Ûe_dÙ#Ü°3Q–ÄõQw (Çüz3ö-?ä¦=Ið+oûÔãr³¸^Á¶µ9“&̯Núç ʪ´ÿÑ„ÿËîEÒˆ»Ž:²¨0â©t„8þòCx:1›/ÿfO¼á§°eÇÇzŠçöjꮕR¥ö)ÌÅš„ÝåÕÿ™]ëU  SÖ$}zÈ£îoþˆLúH5âÐaà†Ò{AÉQn°ZŽ¨¥½1âýJOǨû"³ÓA½´gð›úÓ^NUo¿ÁtӕйD* Ê TîJá_&§0Jš—°ä—úÜ¢ž¡1Ô‚™ ¶L dÒÑ=wsö­ñ$_àq—™¬1¨»NWrŒÊÞ n ©Íçeæ€GKŸ—“uñÚÖØ1БÀȯ¨ý\@û"„/æF¢Ÿ7|>ÐáR5³²Ä34A—tg 5&†v|§Q@3z Õs9\ËnÏy¤vÇŒŽÁDÞ_”ûºÃæßv¢jŠˆÄ`Fuês„ó9ŽI@Jüá›C]? ‡8¶ê<^A£ææêçf];ÑŒ§[LÀb*µJâ„ïAÿ.\”\=PPxesQŽ‰0û•ˆ3 xc1pŠðØ‚9#Φøzž4%÷A.’ %O -¼Iˆhke¸ÏÌ!÷yâËì¦Âçà¦ýÀÑZi¹›6Bò°T%=÷êñNÔÞ[ˆO§¯?\é¸m¹ùÁˆÿœ;§:Š…ˆz{':`Õe¤ϽgÌ|gu¡·¶¾ª|ù/Ü47\A ûŠÆɆeÍ~ø€ù’)ªÙ˜È‚¹URÅ!QƒåûQ`[ªyHÖå|×à0*?’:ìy/4Å©îJ(ƒ„ž|Ï5^O,MoU]¬šmÂcö=UÖBL^FÃР: -´ØË)Í#>Þƒ¦Ã £1„Ö”‚õuω®ô'Ènþ¦úNUûÍ]€´±%½+Œ?ov ‚E¡­ŸPŽ0BkCî÷UDëv•%ú}€´§Ø §lã û¥ ëâ¾(ýŽmåX"DH'Gs… ùðÍp'@ïÁ;mûÃÒ…¤™2ò\ ÆS7?.9R’¶^ue¬Zð&ïDsŒb»¢Æ­1 ÔKŸÓéèϼ0 -Ú€¼3…nÒ›š´1”Ÿÿ] ïÊÎgÝ‚Ñ¡Ò—Ñ—>a%ÿ€^ÓŒvõµñZÝ%óø¥3\7!o¿Ë{á%Uƒx.…b 8€£ÁŽÄP=?U£7DtñÔ¾rqüôN×çˆíÐC,—·Ï{¯˜3ÍJ™rºê£¬üæ qâùã­°pS:q‹òYº Òá“‚Ìßû%æo·d½ sýÌ{oôÜHÞ„z¤È¥béH\$è›ø |Ú÷Ù9ü}RCú¿|«ÑnBÆ -3ÀãC»D™aó 4Ñ“1wåêÚŠñv‘¯ãÊ{XoŒBjqߨÎÛãß|>²‹A’x$Ô÷Œ9ðDíjð<¤E“þoÆþéŽkųÅ’±Æm1JšJýèz²î]¯@3ð9Æ!M(‚ú•Dƒ˜ŸKójrMAHI¶=AŸKE»‡'ÌR\]•y-¦¿n «UüþŽ²ÖÏk¹5 WÙôÏÜLþøÒ°Ê.({í“ß×Í°ÀÔç¤`û!e0ª†Á 4mŸË,¢x+A…xb.j3Ëy¶tn…nÙTãªÙúA–bÙZWš¾Vfz›uÈKs²ÉõÝE;88YÔ ›ÝæRK9ü=ÛÎ@`hKðbCëI¼F‚[ƒ¡)šÀ¹i­Ò^¿wÛÃø£‹ÀbU:ÚÈuªVW ä¥X« ©0W—2èfm_hy…פœ~éÐH¾¬ -Ì¥-úøYÁ.ùëšÕ„“ZXgivÝÒ¶áý@–ýÊÅ› * §e/í±C‘ >4‘uˆ”¡lSPG‘0¶\ñ@QM}ë©›ñ“Ðb-£Ö%SËž³§GJï|wïý »‹³KQÉ´®z62j[K]²mÕ¶Êö>¶wÂY›ª&–Ýð 'Ùáª-œ‰ ñ¼ü˜ðð58ZI¥ÉÙ ö.6ô± }l1TêÉî$Ü_Ùßßñ¥¾ÎÇÐUªØÈ\a–Ü(lôÄ£º¯ÁËs IN*·wõ˜*öýT¸Ác“˜³Ò¬$À5f]ÙŽ&`l±£¨Åz‚KMP¹ë óÐJ;”i˜‚m“%צ‹ U6åVî!}îuˆNô¹ÀbΣqÄ|Р±4*±ØÍqLJMIÙt± oj^¢ð2 6¯%K:ï:»lå'›úO=»§Õ FN?)z,Â>´—St:™„ï6%M`w*íÊ€ #FšçêoÁÀ+_Ä®øÑ6IÂPGÕ£|Æ™™L§”# -UeêH‚Mž¬ ³Ž;þpn§[ÿ¤¤³QÌt¬¸²³ H(R¦‡‘ÚÿY™¨ ¢jF”@ÇZK¨nK)Kú×%ðÁ»ki'üÔÚ"•$ §ƒØ4¶îÌwÑc„~cÓɪA-T»ì-ݾ®I?íÓûîfgí¦¯$Ïî+˜óÛfD†Så6£Ø“†áCQR6¯êÔÏ6¦ä«V~Aþ¯ª_9&š¾šœÈˆi5ý÷²£±|dV¨oùÇ+Y«û©ê‹Ìdo97$!_S_é‘’†öWLŠwE¹«§Ùøû¢)¸uL“•˜•(~Éçt—3Œã ­áÅ¿íH60¿·1e)f{Û+y¦É{T¸¿è*m?è”æSa% R/Ź¹€×[6Îñò;•Œ%û‚Z\ýÙ¬ˆ<ÐzžÌg^j ¾Í¯óÝЪ«¨¶¾a ÏûÞŒÂE8Ñ"ÇS2Xh÷ßÒ“=_  »E«_vI°2sEÛÕPôÓ¨_ë àŸ@‹o°@€óÞˆÃej}•Zèž ¬”nü-¬¢sÆ®ù¥åðFtî:&jþ-é‡qÚ¦ÈhtsÀFq g”ÖêÑpŠîCñ o÷Û­8Єl%YvZ£{¡ÑÂÙûní0 -^©D0yK¯xYUŒyŒpÈx¢9*„ !^µsÇx[…ñ¶vxØãÈQÜ?1aLZ³õáŸ:9á«56{MØvrv_ÛÀ&àDª’N[ÁÜáú$9󯘛Ù˳¾ð‚eó×gñR!iæ L¿Xnf'µ–‹[ÆÀ׃¦ÈžÔºÀÅ ÝïRñ!™n$ƒéÄò#< @ö¯†¾—øÚ¨2n±¢´Q/j µæ$;(þhP3ÇáØ-Õ(ÍØÅ 3às!H­6=@üuë?”ýó§0u|˜!í5©H€܃L?%ZN:ÙžND‡œ•F§ÇºÞ+Yµº·Æ"ùt£×âžjÿ¤4·wÚqt(*µ]z–óî Ðþü‡Íä{„Øôò×ñu£è‚Áö¶à $¶Á.YÿÿqÛD²€G•£ßô<½$ðÄe{Óp*„ê7U–‚óÓ1v|ê/¸JZÌIOÉ Y!Ó·ì±öAk2WT<ËûUŽù—A‚•ëÇŠÔ@j ³ÖÁÆC* ´\4lCµó%—»ŒÒ¿cÚÚežqñÑеé$ÎoÑ}1ô‡¡øgܤ~önƒ+¶5-ÛuBlÏ<_YªµbXjr3F³ÖñßL0F*)WPg…¸ ­QeoرlHoÑI_–B`mæ]˜zñ ¹cŽ,àn›z;’Eñ;\¡Ñi>0ó$j5Íg¿„¡û©û¾$‹^æ.Hc =`h)e$¹¤—Ÿ¦ÿbE<]`QË&ôŸÎ‘SØc°WV`´ [u‰(³lå»J;Þù Ïó€åwþ´ÆŠD‚Lç,i©+G¦]1 „)ƒ „ßž Ï0‡{à g$*'|gùcjNí ¢ø7¹;Ñ%¯ìµß´±d=¤Ü4¡{cŒgÔzéæâlÁ'à'·ÖÝH3LY,k$ 1Ä~ÞÔ…§¶jOf;`§|^1j*=¥Ý•iÒ_˜›¨$¶‚³õnHͽæò%us1ÀXÚ8‚5^³¨¹ü¹©„R§6¤•>ÀmIeí¦r“îE„ú —ãÅ< ¤@¼­'[Õ}祠Ÿ˜Ô¥ØãIƒ/4>æ(«Ô„:ëo¤Ý”+L§òK  9'ìQܬµ$±bŒ0Øff4{lS²›„GõþˆZ‘od½Gû9Jᚤ¸y2—Њw³Ø=Lã£Òw|G¿¿q| -endstream -endobj -2224 0 obj -<< -/Length1 2854 -/Length2 29958 -/Length3 0 -/Length 32812 ->> -stream -%!PS-AdobeFont-1.0: LMMono10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono10-Regular known{/LMMono10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Regular)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle 0 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def -end readonly def -/FontName /XKYJEW+LMMono10-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put @@ -32023,7 +32275,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 39 /quotesingle put +dup 13 /quotesingle put dup 114 /r put dup 115 /s put dup 54 /six put @@ -32040,181 +32292,124 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -316 731 1016}readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ßZ4 -œ3<¥¯@žRî¥bš¨[‹ž£s¢Šilk˜Ð`LØ®_/É{ªS”µ&ÚQµR`øSZC^鶃?í\j!m,©Á€jêk3\Ð<‡Ë5](¯R¿•_4šÉÂQŸ¿†j|À«64Cÿ¤ƒŸ¯AÆt7Ò1[ CŒ-#‡Î×€°È—(¿PüÔNžƒú³GF¸©a|‚säpa¶³¨m6&bê» ß4NaŸaéמY÷ñ.Í!Õ -ª>\•¿rénóÜÙ±M0/¬ÞT*fáv×XòA္í Ý-wúÙrÒËOœ± -BÊæg(JCÅèIøÛÄeP•ð9Ûçúæz»‘ÖÿêÿgþVƒ¬"ÒÊzow$ïá¼È1¨¡Ç=ÄVèXqmû¤°­XNþ…¦kžMv!:´ÐäP3Œw¦€V?¤Zõd dCBß»ø1sŠ ¨VžÃA‹µ¥rÛXUÉ«l݈“œ>©ÐÚáç>è;¥…‡íÞFý4ǤàõΪÉÔMYŒ©]±ºôW‚ &R`92.:ªÄBàBä:ÏÇ? Ò‰ªs%D7ùΚð’Õ©vã(Oá+ÝÛÊ}šÓ8Ÿ©<Ð:ŽÖUy±ky€ -ºïeýJÍ&^VÂ-ó/gvDgPgç Õ²,ÍA·¬*-äˆ7püS˜¦+zZxU×)\<äQ˜AÆÙ6Z›*G@†„áó ç²n‰Z·' pÓEøŠT¶ Úô”pܹÍÅ9´Hò]Ycð}’vÃefP×m›£m¦˜õ¶ ¾q|?TC[OÝzÏ¡;^3¦Øщ!'ÔXÒ³S‹|cª"¢2ÑóÛÇ¢ -ó|!èf±´Lý¦8QR«Ž•j¿’Ï'òÌj([ûI’Š¡¯ŒÿMÃæ¤TY[Òèyg˜½Ÿ±gÈGq—yÞ 6¸_Pa²Ì™MAïêªZ*Aãú¾$ÎIòs-{¥ÍŠ‘ÀhI6ž—;‡tf€Mj©€A{7bfÅ…¶ó±{#ÂkByÃ{Šiˆih>¯ÈóA»DŸf}Ù…¶Ûe_dÙ#Þ=Ÿ"ƒRõþ£X¿LØv¡Lëë3ÑBòæjªŽ@ûÏÉâ=$edèKpëÔÈèwwFü b|3 e™òà\`æRït?!ËðdøkbÖ;À^m;·p¯›Zt~¿ –ÈUhçm4­]M1OÌS‰„íÇ ›n$£âzIÎŒé“ÿ5 ô 6Ȥ—šˆZ -J¢oø4ŽÆ!‰´"—†ŠÒĈkâ:¡ƒ=*RÁŸ†•©~z¸ ú˜Ù·ÐÛýéBÊp`³¶,€6ñ`CÜÆ»·¦ç®øËÇÿ›jÓ¼œ€â˜ød’³Aƒýãw¨è¿‚í¢/Ê'NŬWÀ#—¶?¢"b€º-DHÔ­K‰¶}ôÒÊVš^þ…âM”tàOÒÂe/ ž y_Šêòû4ïs z\¢ù×ÌgÏðPníƒî@ÍÝww˜yý7u ãçQ‡ÎÓÚ•6è W¦ð.ßCÅë *šIŠ;²…%E–E§Þ|±oš$AÑ¡6¬ÑÉx - ò_©iš”hA%£„ø¿fóGîm¹TaY\™8X!f=;ìbÊÓÀ'’ËD¢ %ŽÖq”«éÛ-yÜ<¼þ4šígþ¶Y>ì¼™q“¾À·•Zsr뇙ž”»Rø{MWíJ¶@®t¸Ù$䎎ê{«~ùÒ>Ä.KsM\Z §pæ5™B’_à„ã:Yg‚`ÌŒ ’ÎùÒ«qă.S+F – B¼¶³… ©,דÀcYhwRÙ>·ŒO,˜“+ŸfúûK}Ä|Р±4*1:½Ïç/´ -¯ôÔ¦sºI,ìPá>¤ ž¨+‚ðÀ¸p1#û!  º'¹ 4ÐwäîíPÁ9Ë1HGPA,;²€âÿûGºûù' Å N\T4×21Šç‘íÇGò«9£þf&ÑK/‘}ß#XF»ôù¦ðDÌÄ–«qÌD߬ïIA¸åYŽý”%A[OuDT¬¿DÜô–hÛ°dL„·æ•|*SSv\x›æé„î±tù-ÊP<ÿüåÌðA (w·`P°wJbÞ?o¯Ì·<T§®C#oèÂIäÁm¤?ÌÖ§µ"qöŒnáDUÿ¼WXÿ ‘» ¶âBÍ벑‹“é¹Z™ÇÄ÷óL°ºªù:ÙC[S"~ÐVïæˆ3*5÷Ž˜#«TŒ+îÏù äÿVVqÏ®¬Ä>c ¶×•Ð™•Ú2h©ƒ Ÿ›¨©¶Ôk‘cþµ¬KÄ@›š—Ì«¥ÇaHˆ0®Çì:핤>ðÉÃ’½ -RS”.+¸szàÌ%^ëdsOÓînË?‹YSy šê¶n÷ZÍ!_¡^)LB†[ÏT“PË£ºì¿xþÌtÚÐßïD;9\”Äwè{d\—z(f„D>¦ýlS²ÏïW¤ ¨à­¡å"©Ÿº™”+Ølä´oõÆ›«Ê|‘MD}ºæD¬Z›ö -xÍš;nâæg§žK4"ƒÇ3=Ï÷©ˆnóížáÓ´¤~¦ãfׄ§z‚6²û?«&«»¦¾ÝƒZü,XB%ZmËÜ•»2䨉 ss[¸`†:OˆSÔÎOb_WAÚ7âš•„ìv´kïÃÉ€ù¶…ªØw<™Ü@Å;°ð¦Œ|IÁ(Pd‚!·íŠ*V?hÁÂðo0¯¥Wy¦€.&-ðúÀíÜqú~G2—ž&KmàÎòÿS€€hÝÑÁJ~ܵ„ýxMœßÿ‚m£—ÇÐßmˆ­Äÿi|\Êí'] A׿ц؊¸}¾Ÿ)® Ÿ¹œ$2Ù`%ä–¬úTŸ  QÔ¾¶ Ÿµó‰h‡ðÛ ” Õá -_çNdŸP!É¥*„GžôìÎ9µfñá—4y¼Ê×+çø¨ý3Nb¦ª¨|K‹ 1z™hxºy„¼ðV©Ó‹:ï±Y,P¦ãÖ#„ùìÁg›eÁ׳¦ 'éû‹ 6³³E¯6) -—;ÚusWÕ`v'Ü“©oaÓVM Dé¸ßÚ‚ÓxL‚Ö…‡ÿá­ž³€ÅÂïæȃ†á„fÆ ê ÃÄÝs'3h«‰ jýäXòŒˆbK|ÑþÌäФò5ÙbV8ˆ¿¦·¿ùêµæè^{Ç5¾²ñ{.çz%qù;LÙëX<uZ1AHƒÂœhÃ&5ƒ\¤¨ŒÉà]{$úÜ+-2d`&º9.êð•Ï¾Ë ÿ/f=B’ »UmÕºJŽCεĽ¥ “ô“õRx‹E%¥ oMs®‚ª›HMo‹fÑPYü¢k½zŽPAÿzæ}¿Ô­}|EtððQW]=1C/]L¼1 ̶ŸPbn«ªé?UªAÙ‡ nÒŽ&Gm×úlI,ĨûS›}Û„A7«5èbÎË—aÔý5ÇaR¬2DÓ¼¡ÉÑP྄á”CXz8ÀRº ÝlT£jI§}©!'83Jýÿ• -í1æ]€H³ƒì$ -â×léĈz`DÞy÷;Àð¼¢mWÛ/ZP³ØâÏÿïf_ŽÉÅw†m’‡š¯/ðSÁ7Ÿ@?œ*É™êõѧƒ‡Ã,#‚ [öq j°—íå¾›—oÊÿL½†1@rW.•Scj‘5/o8cÄ(k/”ÜݶPÂ÷ƒYMæ9÷‡Àc†féE‹*¤`È»™²6ž’2íÏ¥* -VÙckb8x»¡¿ fª €R”ZÄ1ïÃáA' .ÃͳÈ~™-æÞKÉO£\Ái¯Öœ„¡é[;¤î.Õ@ÎÔÆ⯂«¿Yçටû¤÷âË'Užœ7.u¯äêùÍWY uñÕ?þÜKWwÎþ“ª¾kÄž°aô* ÙÕ›pÏ e`öG°~iJò Ÿž|n_GüÎœ>sÜän‚¿¬5iY¸2ÿ9c$ôÖdL.É pµs1³}yll×'c&ÝWLU -£†L­/äÀ9÷A·ÔücðeòxÛ!t’H݉Œ càÖµpeW¸1“J¾m=Ì6·b™PežPµW[.¸~þ ðƒ0†ØÕŸ`ëå€&ý§€– l ¸yÔ\åIs5Å=ö°Š(J)£r„J¹—U…/¼n›!4-æµãã„g¢©5 Òo.¸©_KŽÉØÐÙh.­3⦞ðYuLÌûíuÁ5}N£Þo¼Ðüõ;L@{ü=x0 ZåçÍLPªd–÷¹²èJÞ$—+ˆB–ª·ú2weU±`ê+Aûw3¼ÑÓë¿‚ÄOå.W¯HÖtÏ‹ž¶“ùËÇ–C€®óš³—AëvGŒ &Ã’"2ûmÕÅáó ³¾uénqÙ»¢½ÇZf˜73¶Ò±¨S[½=*9¼qôùl<­Rã üh–âô¸@Ôû—†ç‚²((Í_É™,¹ÇÎTåþа¾òµÆF1†qB°¥y”IHWÊšN´ RR¹Z_L[–ÚaÅ_m|ZßiL8ƒ»)”‚j”É -D-ï ¶œÐÜÕDd5Ï"¨¬‹Æàxijt0¯ˆ£øQ2Ú%ZN:ÙžGã•dw8† JÚöñƒ¼V“–OA‡þΪϡ‘‡ ¬®Œý6<á<¨™ ÍÝtÖ5R¦¼—‹e̶è¼ýÛ«ª KsË.N¼÷„ÅáÙÉãßm -·÷Ñú!(0:¿eG]½ò%|оn=k¶¶ÁN¾ñÒ™¡gÛrD,Ç]+eóî~Š¡ùF§{ê!Xßj@yÙ+P~Ýíí Mgv”:2HW/¨pF[pƒâè؆Ù??Ec6¼Ãø­ÑbÞ¢g}FÔx®+k­z­K³½+´ýÈç©Ôj …&¾ß&ñqÅôÈq¬×Í2|²E/fÜÁ@>©L›–Ì¢ ¶õ˜Ú×ÈöÓ¤Û÷bIëG³Ü©øÞ~(ø~69Б’/ÉдÜqÜ §€Ð3y~åt¡[š$+Õã4 N ÷í«)(C,‰œYÆß×à‰¦ÃðÁ‚>xYÖŒß Ü~†áºb¾]H/¿ËVŠC¯ìŸóZÿÈá5ð¾ÿ7n‚VýG®kòý4¡À÷æO›ï|[}@u6Ï[Ö‚¾`æŽT–”—oÞRuÜÌÎ.ŸÍ~»v¶)-Í*ïTßFa ’ö,\)»mðê˜Üg?¸v4ºû‘:‡2ÕϯpáÖCxLÊ_÷ƒó)Ä3¹]Æ’…£&Y-c}É÷ ½ÉÄ¥Œ+ì™èéf¯3ãûɨʴªv½ŒÚð¸c›ÕÒÇU*õA[6lÜú‘8çÆä±Ìf_K†7f¢A@ǯŒ=Ä”EÅþ¦÷ -@õ<@œbmnÒV›<´ý²§%ÍsÎ,fa‡ÝÎÑ:7: BµpxãotÐ0(”IZµŸE®ýÔmËŒû–àÔ8ŠÈOk&ŒŒ/Ân|/6Âû²0>_Á• í…ÑÍÁ"M³-¥Z¶my -eC,]OF¨è‘èÅ­0?ß´Xõ;Â-ŽÁÄ×ÇÂí…´föLRð² Ú»…ÒDRà†9L·{eO¨Æúá7« -êEêÀÞ•¢$$ž/‚(ìÔ4ìÍÚÓG²cfM}—Ï&ZNÖ¥¹·+·ÇÂ;{ƒÝ%.Iv_7|Q¨ÿ9*‚"DõU Ýâú”Š·ó¥=ݼ®0¶)k–LV¡»Òœ¶b˜œ®ßcàÖµpeW¸1“J¾m=Ì6·g†Ñ!C èz¦Á ƒ²š®©–ú’®ú€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆBy®+k­z­K³½+´ýÈç©×Šè,(PL¡ì ?F{3©¡ÞûsF'ÔÅ´%실Y ÓU\.K¶—û²2H{žf›ÃÜ,«—ôvÌ|ÜãÛ]ß“½l¯ª¥c¶¥›dx'¼o¼,<×Íïñ—ÒêÉÈB>û?:-,®y:‚ -%»-“ê7#¾Øܦ-vÅ;x¢‹Ä4¯L“¤”k°Mɺ¯¢2ï×ä=ê_°Nu3Ô°ëisèº[·6S… ì-í°û¦‰o ºæ‡¯îsñÓií?ŒNî¡&¡ žò.O% Ò4€€E¢44ƒ¯Uò  ©1Œ Èj<¶õH¯6ô!›Ï.¢)çb-Ò·ý&yЄqkFGìÍó£èËJ¹‰òÝÄcÝo„Ú¹cõ!1OR+ÏM—;n¥ÿDü%Ûè§ÛÑŠ‹ž‚loøA•Gß/7DPî~&ôcýfúÕaf¨øUaßHÚÄÅÛZ*¦°ЮMfä³D‘L¿ö„ßa%$øV¤ÃU8Ά͛²2V˜´8àdT¢ (‘{Ä–Öª*©Ÿ/ÙÄ•|z¼,Ëá-©Pp:ÃR˜=oˆ†‚ï;i0>#vNš]¾d ©……Ú*JùÞZPF²_XZÂÁ˲Ø{ýÿvÝ`i5À™RdXµo‹LÌj¸yf- -/Åx^ìç iòB€EÍ`ž#Î7yb•±«yuûa3X•ôb&´Úðšþ']Y`‚ê;5™ƒ®øcf8oàœSïuôù7Ë3¥q“ t§\Ø»sM- WÞÕ CU5<6 † _p8D ºE?tÐîŒ V™ëÂHºªø_‚€âÛmHÆ/È"ötø{Œd>â·ëòèð\4ZOø(?qëÆt¶¾X>14FO^mD.}‹X -` -ÖÍô#\’˜ï¨Q¹ZOÍhá9¡S Ò æu¯ /ÖQÁu§èKÿ±Ù>\¡Xí|›ùaXFî6n1ð÷MinU°‹g*Ú§,6ª9x‚ŸÝ÷‡X' wTw²:¶/KÇŸoš•½Û .µs+·t½:wðŸ¯\ ¶¤>òY‹s½S-ôÙ¯¼@‘x®b€“ƒl| ‰¡º¢Dg²í°£CpqÔ…½òùÑàviübu¥´‚íÆÛ… yÇ•°Ç£ žØn™ì½P€õ‡÷ˆÓ‹v;›6ʪÒÿ­ÞÛ#Èó#Ybã(‡ŠR˜©¬Ëß8=JУü¨4Ä.fxňCjiudZh½@'œ”ûûçV ¡ÁAù)Òž¯D ¨ µGDå¡¡\¦vï@ð±ý“kcWµdùŒ°‘·Q¥D©I¹æèËÉêªÝÎ6yd·±iªg>·‚âuí¿àξw 1Õ[¿Ú ‹ 9êðÛè׶bÌRt òø„„áIJþ!¡– §ÔÒ슎üÈOX0–ÖVÉy,áGÂéÕ½4•íR*7±MwCÙuèt¥Ð5_ ÝJ¥Y) -Ó;¥Uâ/´hœ˜ž´œ{ϼ¤( Ê{ -v6^m„á¾Þ{»,²qN7¯ËvÁã»aÛŠiALnܽuTZs.€'mÇzþý¬Ý„3†šÏ7[U¸lš -Æ_š¸tìþà™³?Ä€v–7JJH¬¢ô,›–<#ZY¼„¹¶¢Ø{…ò9𤻔ôBn]'5¦Ò„DDØ “ûH+$ôñi€U€ôëÿ‡¹*@@ùõ¦UˆÔ›¡­M@è%‚‹Û¦|©ˆ›1ª‹b?9þ–jÁ!NM£-*ÅSEø50⹶Oü]}¸_TJGV-‡“‰mFCœtÇæoÆþ(|Çoïý:XDý©¢Ù.ËÌ—pÐ&(×Êá#MM®‰ ¿$š!à‹’ éúŽãea:ÿŒ2¸"LHå½À"”Íщn>-ƒA‘+‘âÈp³:Y¶WÙ -·ŒiYñ®Tâ§GÔTU bŒ~ë]An#GŠÕl†\ô‡9—jµ¬/¡*oäEx'ëc[ûm\ŒfÃÑ„pL†4:É%‚C˜Â“zò±î¥ˆ2Ý|õÁâ‘g:ã Ú·6)¡Ü×ÀX­ M[æÊüÇÐOCAˆºBÓiz>(Q{ HRÅ3úT(’!cëìÖ¥jØ;Nŧ&6ÔitÞWp›M­5WÓä8ñ’¯Ê*ïÙ—­!ÅV7m!ûpm&%+‚Ê— ©ˆ€Â±‹²*wáÕêÁzŒ.Ó{ŸK⨚×-Ò¿‹Æ³Jܳ‡ÞpÇ(ò<Ú1akÿû³©¶*w0lT1H¯³.Ü×Hͺ¯ãァØúQ ZÞˆûòÖ¹Oäê:›Û([íƒ RPo—®åüw‡ 埭Qú°­ZÁ¦´Á–Lëƒ ¥&Mkd7w® T‚‰yH°V¨fyr’¬p#ÌÉ´uø’øh‚<Å]HYÀ‘HRŸºW£‘c1ˆ€{W›¶ ÈöœÙ㶭鷘Ö[ÄvâJO²Ž«n/„7³„â=iË1+B(%®—æ8å9Ñâ--F0Cwà–!!g­â+W(õù±æ‰Ù¬,riaŒ¹§,F=Ô')Ã|AÛsGÑkœBV˜_æÛuüï›°÷Fe¤_ ¯!4á’bUýF¬hx„£T} 8•ߧr$7H÷ —R›œD•¡öq5B˜ÍÃD“f-s6¦ÊìÛ]a—˜”Uy*dRwv>b¢x”µ¹7ú­4:aÿ7|_]pƒˆ³EÌÛéée,qª2qÕq£ñ:iª£9ã‚ë/¥å°UæbbX¢BÍq§öá4¬ácÅQ ›Yqà><ßÆÓË^Ø3â¢ì¢ÀÂ꿱VÜ…®©DA¯ƒ\…¼0dbè­YÜãÿÇü–3BšÎF•miII³µáÜ!~Š‘Ñ7ŒAº¸´umõP’»ÍÏy£‰}>ÃfÞú¤ v=Y½u(r`àúà“x\:Æᛎ«Pä]îOÍ,¸A^N8Uô™[Š%{>¹[ýJ’VLßß·>í‰7‘Z°Wí,Y›B:Å$ò1?3˜´’8pÑ6k]Ò:ñ; @}âàÆ»y‘ËneM6N5‚†åw<3dÏq^cFŒ°,=1Þ^g·ouuüµÖSÚÑJ‚0ÖÏú7ÿbGV¯øñ -,`1 ý×ØÍs²²¨ -·¹$ñ¾«Ÿ`Ú,@ï—æ“Ûñïš+4m™ÝµDµ•JØÌ„×Ò^åý¹¥_óŽåV²³ÅGo°övÕ'⾧uKôLì°9¸o´t×.ŸÞC¤¯x´!Æ~Q®jDÑ´½Wɇòb‹±ÊLXljôøÒ²Ò¸;óÏRvFûÐVÝÐÂœ’ÃɃ,ƒi‰ÈðÑU¬&Ë™­ãïð!1“éeÇÚqc°– -2Ö’d©œýºê8¸: #ÃmrëÙ” ¼êu1köHÃÔeá,ÓaÝH’\¢&¾aø†–fÅ8&®H€QãkžWk˜3nWÃy9@ñ~y{!‰«o¢ë$êAßd>Á¤"$Ë燡¯óà„<³2J¢œ+Rº(íØ»'w{H)Ìa,öwñíÇ9e†Ö¨!,`µÁ)×ÆBùœÖF8k;Ðe× ó¶tz4µ,M6@Ê:6#8£²ú­ã6‰¹QŽ;ã? ucMö%{vµá©®å›ëÃáÐÕ©2±¬ÂWBKùèõÕÛ×»2ùvâ®FŠ4ø'‚‘œÍ°îocc¾ïŠIåÀB©5È>"‡Þ¡Û( ·œ´[0Œ¹ê¾ÑMâ2œ;'µú»¬Hð6dêÎ×:ìʾ¢*0CUD‰ž›Àælu]p½^+ðÝ޲̿šæœ–¨¾§næ²VjöT©ÇÃKìôŒÙrlò¤Cà}=/æë3 +Sœ©]îuk#„rZ‡ÌÂ_¹!.ÖÖr¯•]½ic¿B{y!J¨çï8ÅýÅ>·fʈÁ‰(ûͨ,‹ñX–§±ƒFÍ~€í2²Š*f‚ŒL«~os¬ Ȭòïja`¼”zêÖÙg Ù–ªŸäÔ&Š?Ûøñ­Ó"l_}å‘j^Eq#l°^%À¶î(UÓ3Ì5‹£…s¹š«é)u-ZŠÁÍR³7GÒ…ó„‹¹ýÑ/1Àd£Ä°Fe $ ›^˜ÊZR pzŠ+.õ1¢øo«”ëÖµ%·XÀæ¡Ð”(lŒ ë KmbÚÿ”ŸWjV!Û³V"¼®§1ËD}ý`ùF¦`ÚÏrºqTgVnþ(ßç)Šßw‰C1í%¿iUá= ´ÙÊÊ„g% ñÚ—¨ƒÛî÷]š˜iÑa-X'm|óÎüà—{h»ï´¼Äss6ê×3Í'DRëàv¸ú¬õÚ0µ©s>ºÑQ$ÄÍ¿sEu#·!²¹ÀÆÈ@^Õ³1 ¦0Gè‚êørÈ}5 •ŸÖåŇØduKwM¹ÍÂÛÞ¯4dsÄñš ™¹@׳±Ñ¢îüz‰øîgü†¨jMåÅ‘˜õGÊàÀ¥qŽÆÙ‚Âl–C“’Wq”¾ÙqÇ##’$§UMwÊÓÿŠôøÍ;'|(œ†HWÁBÉÔý*.è¶=f9oŠéß ø4?àÅì].¹Z7Ôlƒ˜£t¼BŹ<Ũ0µÅÕísò÷ÑYÄ[(hwDzjáeŠUä+üJžüq“]í\WÏ‘ª/w`uMŽÎ£4î&rVr lä±ÿÊd¾L:ÉQñ"½ÕÇ$Ë€#5ø0¡ŒS¾Ó’äA™gàÕi[Ž/Së=§ò9:ÐQÖ€…­!É‚ÇÞT—°šZePÚìs_Žü@—6¦´yÓ_¥‘£Ì»é{Pü"–Fe¼&ïdù| TzÒX¬wͼ–cnª¶vç$ÈD¿¥ÿήž—fG2kcÔ7èNÜapr’åŦêüì»á6`Õ69òÕ™”.:&ÆtdæÒÎ? ~#Å,ç½V}§ñìdø…^€öÑŠ½Eÿg4pÝÁö9íx·ASt­W[*äÓáVÖy~WÆ ±æÕ¸(Œ§çú,i JF9vY…o“OSB`÷½Yj&uÁý¸äKþ î[vî>“*p- $rÉ…w­m`‰\(’`èx¬äöU6$ §ÖïYwî±…Ôâ®æ<¢WãÀ͖҆óbÅ«¾„×¥¸):RNB(2—äó–F ÜÈqE¹ÃÃÅÎ"ÔµÞ¡x†²ÏÞÍ|›æ·Ål˜­…ûv$õäŒö¤áDû3mó[Ô³"‰÷þŒf¦¨-}u`ÑÎ)a vi?¼b¥LKðbì_Jƒ®0¥Tê ÀâüèPaœÚK¬úJ•‰‘çŸS¢4óÜ.Ò«ú?aGxë¶)SµoŽýO¢ ¦&kš•,ªîýªÜâÔ/¯Nkc“4:ÝÈN…#ì^s®Îcxxx!„‹C¤Ö±ºìÃÚŽ¢Wck_A»©ÒT”žX…/Á,m┵›á5¨•úe«cd6® å§sS‚<Æ~6rjð¯Ùë«swn{&Š†^;¡Ì?ZÃyƒ_\¼£¡9ö '§âA/BÔƒx“Ò¿ ÏMm7À.©ÆàýÉ© -Iß,S—U -£2³4ƒ%Ân ôt ýuö¥:¥ ˆF¾arâ^|¸*VY/'ü'ñÔ_ô»Àáb1€~&‚ÝÒ‰ksÁdÃ-»½ Îó=Ô/‘#)âËã÷ÁDžOlŠçÖzî›éÍEì4$ -jËùÂÞf™,ôÚ³6ŠdÉ«Zv…Äfè—–rúÉjÈâFº†q½Þƒ¼bKàÿÓ‰"Í¥Lx’ùL1»õZlC‡'™F³­ªDèª}|\ýò…šty.á° à7åKn¾JrQDØ”–v”`œ“ ªö„Ž:rßк„D)½;Yv:ã9!Ú]?.D„ØŒï@Î1<‡T¸XÐZ¡³­r5…Dk×9 -°ã9'΄T2WLš[fÚ­ -” ù©ceº¦.% QáÏ&!)dÛ.ÑÏóé'…h„ÃÄÂþàP©“Ù«Âe£žä¤”¼ÞàuùJçÓ’à’wûN?ÐöÊà+¢9‹öâOmÌò×"xB1êlò‰‚¤G -qVþJ>pËd7ÁŠoæ3AЙ³‘Õ†b–¥drIˆxcb&¬4­¡Y{+#Ag¹ë=¯5ç•¢Ó!“Ü.åªìmþ,†t÷Øÿeܶ»ß—Ò»w@§Pžs“•Ð€ßŠx–ŸóÀ…bÞ@ºï3Üq÷G{†:ÇæÌÓÒrÅ€!3©Åáhè¶ HÁ "’;ÞöAˆ¿–(EßòÁÆÁIÁsÇ(-¼€rñ^˜Ë¯’{Â8"„ŽÅõÕ\¡“Õ<5I“¥U ÙÞ(B* ¼ÅÿŒb¸”àw Té•~dƒ=f¯‹]r]!õ1!€ÁØcòFÂý¾n(ùTòž°þww}¿þøb̔΀OªÈiŠçFpVÌò Ü×ZCüóftÿÚ¤âNx¡Ž(QÓ®ŒÿwÀÈÂþÿAèá¿~œ°/.F—kQNIk´ìŒpƒMÈ‘ðiÕ((UŸ¯ ©0Ô`ÀåV94¤ ‘…FV¯¦Ãê†&~žD³KõŒ‚ -ËýÇåóõÅÕvm‰ÒÚ µ»3M[2÷NpÛ1,)‹ë ñ2©©sÊR©¾…¸L¸2x/Å°²+pÎúW6a¹ªƒ®+‘ÀÆå‡æ2G˜lò™!âzŽe¹ör/™ žÑtÛÑ LV€ìJ‰z>b¢x”µEñãx[ÿâ޻㨬…4¿l´K&CïddL_ۢʪN&çBU7?J[Îþ/ çÆPt©Ÿ¡5ìÇAS:\Æâ5¶<ïL‹¢’“·êhr¥Â£«piÉÆ'Ä£ ‚3N|v‡éo—Œk+%™Ã°lyq謇È5ðžË¯Þ(z2áùj7Í̓ˆUÞíP˜¬Y0T[cªžÒo&kѲ=pci ž1Æ‚àÙ£»¯ÚY*o6a ñÀ‹õÆÈ·0$}‰4]QÅ=";s{~-z…ë‘QJ€øç"og ‰pX+“ŽØÚ1ºî¾sŸú2TP‰…nT³C3ßI 1(+úåŠëX±$r¯"ùÉ™îÔr²Â¸[`¦±>:9X»ÊQå°6m¿mY+{ ÉÌ2¢·¼ËrÖâÝxŒE±q›€04-GûÉÇ‘|qé›xºÁ†Þ.øHD³ß꙳DYç¿‚­Yý6nw_+߯‰ãpWÞ Å²y›Jkb©É»ÏÀ'<>–¡rc¹ð6›fºläA–í“Vç%ücUÕÝœÿ!ºégñ8›¬ùï§IahP²wP—>QaÝÕ¥Çhx˜ -¸HÂØ 'r°]¦=ÁZZk¯íÙÊô^%Ù£s§ú."ãy%®ÆÈv¨´ÀˆCkåx -95]!JYe«¿™[À¯B–¢7åpÖ뻺é†×“Ê@=ÓépŠL3\A| 3ëT·¢µ%'Ö?=„Ïn¹×aÖ”áGÇÑþpñËÆGD"FË'@V¯j!Ϫ;Ù?çhŠôeþ|(D¿ƒ.MTˆ ¯&JD1ˆCíh·õù¸+Ë-‚äëkÁÒc£÷žÈAëg–n›oOÝÿbè+ËãÔªÿJe;¥HLÆÂ߇ðñǘ‚Ö—…à€tô`'¸4é°9l•ÀE’z™ªAdSÞ|fÕÓGz•ÂI€>cÝœ–ø[.¯š@R±£‚ª.¢Dð Ýθe M.ö¢Z'HR¿E0à» ÆÏ[s -¦eèúåÏ–ìñH¨¡è»!/":ÙÖÙ-ÞK ¦¿C`þ¤dýéà¶öô’øÓª·â’Ž‡D=oàipŠ‚O³ N;7q v'—g®#1—ç'ÜEé(p…¢«qx;¤ß§{t«÷Z¬ ì‡ìxòº[~e¨Ë¯$ó+N1*GYGÅ~›6äÕrß²ò…;(DÃóÀÀû1XkELÏÞ0c&Áyëòd»ÕŒš¿œÜåDTøë2¦š"ÌžC9.K^ô:’Ž«´gGHø3O—%ôìÆñS3¦y+K¿•Ñß8]¹Ï€šÐ“]m,±€=†­‰-™0v}æÊVÆYn7¨} Åh•K.ý.¿•Ù¢¤HÙæV\½™EÚË0 -QÊaözÊ"±ã‡ó6óPú]ÑÎ6ÎUa-5f~­r[- Pò^Ïô3[Å. ˜Ãjy¤±XeTc˜9lÇåNëqó²ÖÇÝþýæC˜翴r晪?çé+xýk²*¼àÏáÃ1¯pß.‡"« Þ ˆU 0˜Åo³+ËÀ¿ Ž3WÀðXëÓ}®g¾âÄ+r•Ÿ{©Yò}Z;llÀü-’X”ù½™qŠœ³sþ>I ú\ÞŒÚàÏñ2ÃÏ3©¿Â…‡`XufI¤è°"c•ŒØzqðÈç„a-¼ð¼×šÉ2šÙ?HWÁ‰„Š;áú×)›.Õbª•LªmæÆS#?žÍº~îw³Ñ~íëŒeë|<±pNLO?ÁJ©éˆ«º²0Îøø¾ÌÃ_â‹~ÎnÑÐRþL¼ˆTTjÀå×Ód¾TærWÉîùyŒYØ1uô CjlfÓ_Û³•lF_E¹¯Ÿ”(ãi^rÆK<.ò;á¨axEçëCÔˆW…ÔÑð}Ý7<µzB&p¢• í˜ÉS(?£ËÖºY¡¬+¬ñWê=j›ì-™ö0…Ùh(ô!UöÈÁÈP¼COrŸy4Ë¢;Z¥¶Üõ±m% ÛžÒñ]<ë º!D¶îgÁLÜgç°³aŽìñ~ãzbg­ËFÕó Ê5Eºägë´eP2ÿ;6¥Ê÷™j. ÍÀ7XuÒ¢ (ÈÎÍ2„Ș #Æ$cèçWwÖ#1 ¸wo ±  Óo•·˜|1oòçaüº­d/5\ÀŽù²°96#lôÈ£W+÷¬|ýr…u`-ëþé>㤻8ÝÒî”g¼ÈÝnæâcÆ!ÜÓíÞPns´ã–úìcur?´ b]t(ƒnAI²×hÎRiÄD›¶L^äÎÏÒúõwA|5+: ±Ž+­Å§"(Û‰Es¤rã!Õ  -ˆ)î›ÖÖ}fÀî–²fÎ*o¤]‚y:«ÆC”LvRÀ|jÕ€Ý@õFÌ¥ù8DU›?QfÛP >EäoúßÒʤU›Œ˜x¹cDPï?æ8ÌKŽi6nC:‰˜S #ˆ®oÿPý$Ø~†½IØ»~E»gdøˆLÀ»ûû¶üå—Ãò)Õp+mÆ©Ô85¡/BDë2Ê+˜­¢¿‚Òà¨`šŠ™ýÔSWy`+Žé; ø·ÚÇ]‰ŒP~ùæ•ëyQçqËçßQÔfŽH)Hê­x•xm™åuÅ,Š],CLÝ»¡ƒUí>nOdv—IƒZëåˆhtòÖ#r8ãò»¥ò*ã.W/fBê•CÝo@4ƶR Nž_pI–¯;rÏ_²áË8áRh>gÒÏœWŸ^pºLUÀ{‹•¡ùVñLJ” ð‡mÿ^zÈCµÍ‘¶{î~\â‹åIy&Ÿsð>‘£kÚèër&Uç$ýå8Ëž•FD©9yáýº4ÅakÜ:byàéÆ "ú…é¥+Vî~'7{y‹.òÅ)j¿ÿ‹%¨Un5d¡ÍìñO\¥ºûÓúŸm4¥œ†ðVœörÝÓZ§¢ÊKUqA?üî)0%lR$íå"d°ÉÜbîc4¹‘šÖï/ÓŠ ¿NíÖߺºv#*iòär€œv’]UÆÇIDí!ôî!Â10>J\Ý•Åiœìw}9ç W¹„ìR=ä¾Âí¼}ÁÑ—ƒ}ÇɤEÜž§y°ˆú â횦)'íO²Ôxw.¦æn8nyBšI)·Ä*"¢&Œ¿Dë›ë_øTåláuÕÙ!­ìL1¥È¹ÕÈ rkÔñ }Á"„å¡=á­c"°Ž‚æ½òŸ%BÂ6ãnËÝóÆÜ’oäÀëþ“l¥Y¼,Žê¶õ-ò2ÊùÄ{d´pÆ·ZÌhdã=¿cGU´.ãŽi¡Ù(ù²Îþ ¨|tù.`!ÁמÍšLnSë£ÙŽÐä”fÞè‡ç£¨¾ì„¹’ÔZ&€ºÆ4—Å“É(±+xÒ¿h/è7—K¤¨UƨÍóQýi~”®õm7ÔŽiû>˜5—NT9“è€$‘x‰]"ºFà¤Ôm[îU#ßû`&ÅÔŽå@C3ZBþ'ñ£ÅŒDŠ¥S…•XpfÐcˆ.™‹ÜCQR®Üü˜o1£KÆ„£!VCKÌ*'óCv6i›_HYÑ=$§‚ÀÔ«„ff3Hº‰ñ«»8Ä„ÅN¶¨;Ĉõø†ãÅ}‡OåÇÄõlup¼ÜÓ_³"ëÌrƤ}Ä+T–MÅ0N{%9³A]_F|2n3$Œµ&1©Ã¹¨Ø|9fuewã“Ã}ÍÃѱ‚¬Øg} -z¤¨ð7Wü|ë}–Z°O|¨4¶?nï+QæƒT|ùÊwU9åòœ¼„‘=è×~SÚÎݬì +©„~ÌX¼ r1ˆ˜E'³¶Í¦Ž"žË†onÃ÷X±%Åu¦ÕUö ±‹XgØ~ǯÛSODGÀ5«zS†Xèú5™A¶lÐ0HÀ5÷ÀÅÇ34's+)boC¼(s -°×ÕSò"£°Ö½ÄrÓi3—O¬Ñ`×Î'¶§M^TßL¢/Ór³ØYƒÕ¯ g¡GP«„„µ, †Óåihë^²Òðüo SÐWèH߇…µí ×t°i7l~–¦‘$ñ"e—±LêïP|–“öf£ïG˜Tpi0Þ¸"ê˪ZÆx L‹/8CèŠà nZKäÜHcI Ïãì#ÿÇÁ_ÚWy;l´iÜqÃH‡QéÚ–”rCéq¬w7ôs*ƒ®´ðÓ/ÅÞ~Œ~2žR__L™•,@Ž(qØš03¡1øb*vŽ©YdblÚ},%§‹‰ˆošÜNã³O6IXØÞYæ{£¶#) ¶¡uùh¨u=:ƒTiV—>t£önq%³Õ¯DšÞYžÖ.O_(reÄbÅø@7"›÷8Ó›Œ`_¬ƒÉ%ˆ*FË{𕽙YÚµ¡¶r<àô­”Êó0iÖ( 5Ý¿íä9Üðň»PIÊ´Ñ‹ù³óà„/ßγWbz¾uc“i*c!jµj†îä†æ×ÝÐåŒø+ °Ê´&<·SÏ/í°€•k½ªŒSu«i±wH ¯D24@þ¹KùQ¹ðy"=²m¡ ¹+UR6Èy¥ò²ù/9+öúã„2ú Déµyœ$äNAÿ$ÍÓ;ÊDdÿ 6-A{ú¥ä1þƒ³µMjôm ‘a‡>šý4ÚòÚ±gØ}Ëê.‰>æž‚<~K=‰.,2z.àˆˆ1Ÿ!Nb_ ÍBH±]>¢7éÍ w°ZÁØ”½ì‡»–ÔìµL¹ç…À‡—«Eyщ> vS…Á">ö×ôÜñe(va߬ÏGŠ¶qLF*K(îã›÷b,0%u îN¹Ó±âɈÂ|xÖ­ËÅ8Ï·¨ÕlÞÏfýà½eªÓÕLRN6i96O@ßI)Ž5#©$ŠŽººï‰è,¦YYÇ3û%Ÿ'öŸz2ét„j¿¯ÒF½ÝóÃ^MìE—Y×ÓW_oüƲ”–ZŒ,:|ŽE¯€±~ .ärÎÒ’ôí bGAQ]”¢È)r”3¬ÝjYjkýCoQWï ¯7>œìªÿNMkÉH²wÒ YÐý—\ÒK©­Ù¿L¼6QN¼CX¬Û‹ó.Kð\nº£»ùÁRLO-úü6 Ïɺ*!; prц؆Û`¬^¨9>QµXíÚÜQ|e,þ$·/Òó¯ g}&w§½…ž%Ý}»\ïü|‚ɘÑ6¡;ÂWu^¤Öv®Oj0ºS¯‘åe÷ǯC{ŠÔòõ©^Í»Jõ6b!߈ó!¾Ý<á|Å%KTËé ãÐt·çTÄw¾t5²´•y¤ÑV–T®gŠ]ÜìDÌuyèɳÉtº={Å·ÙÛ " ®7ZñK7îðËM·œäsû€A¨s‰ƒ2¿¥hü˜é¤Å[¨® RŠuUaDë0¹ Žà -ÔÆM¡_èkL51ÿ%Šgµ  Js‘?³3,e‘œ…S/Goƒ®\í´e©ÕuðÖ¨GVh'e¯D$NÜyê -Êà@—mY\}±)À¨:{ÔÈ‘p3~X´Ÿ |5Ƶ´{±g6: -JMuÇ^” J&Üše†Ü¡Uzı42Ôm„ÑqNÆÿ+Aá -ÕuÝ,ë´iÔ 9§!•¹±—:}ÙSR¿2ë‡ÜsFý%ÚPŽ‘²î>€Ôà’رTøNmô=¾ø²#q&+E w lËßÁî÷¡ swGjGtYØ‹uH‹ï„áŽÁ|2ëá˧¿'–?ø#—¯ƒ(†IŸ™´Š’ó|4¥]£[÷„Ú 7Ç@ƒ›Wz!ÝÐ÷1³!TŽ)V~è•!¤ ´˜—8øuåAåõñðùÉÎH·zÑK¼(?%Ø¡ˆB+^Œo'Æ4 Í ?ìðúH¤NýÍ;t5°j½Š!uð2a†]ħۭ Ö¢gŸŠ7de×)I[œ-HÚj2¢wÁÀ~dþ¨.êP4¸á á΃y20·¶§ÕõØÕÐUƒD’¦]œdBc3ÈA{‹ÒìÅÐÛ®È_PÕÍ2aS"G¨W ‚6¬ƒ  ‰žáÑYì[xEv-þ7¾ñþò2ȤoïËõ‰¼ ôº¤ÕÙeVjôB?âM&%æFÎrX„x¿”p•Õ'ó¸Ö4qëõs–‰7)y ¸‘€ciý@#×q`’|ÿ•MêØäëÍo˜§ç>¦•Ø] 5£¯§ ÿ¸=\´y-n4¿ç„ ¯qåcVåh¬Êº~å6 ‰g»uêzÚ‘L -t.¨m¶,?.?3’z[79ê€Ýe¦?Ò 8à,qÈsŠÿDsm¸wIѶó—A=ùl²!àþ¸Ð*]VMY²?#˜®\/d„‹+á«e÷mˆœÔ{^š¿¶¬1åMظs÷eYÇaЫ1ÞØ™~*)Gg±B(2—äõ 8GÏŒ²1(aq7ݘâjsº”—DYÔ)kÃ¥„ac¯/ðSÁ7ŸD€#¬v¡óC»>aÏMÏÏØ}pj0‚|§BcnN/“± -o%¦]à¿/¶Û€ äùÇã늒îŸrê¿ÁÜ4É÷H4Ü4Î{!XéyOö‘ÏéGÎ\šQZÀ®*T©œ¥: E·31Ooá›dù¡É¾ªøÈÔVvjN=”>“çhâ!¾¥*2BC¶åÂØLůώ·yL€øÈêîŽÁy¾‡cüß RC‰›ô—KªJê2~óÚªé2¯qHm€¹ÔârÑU­TÞê‚b¶¨bÓGSŒKV<ùŠHY €‰èû;é^ø•†TUœÖÓ ³6¤è:²ífyv/Öƒ[mH¬¦. {‘k+õŠcYaq¤­°Ü-(£”w‘n$ÙœwÔH¬²Õûç~çŒõàµòjâçùÈèÄùñò®;•`Éß_æšs‡=“Ñ{_E£X§¡bgžR… -)*ÏÓeÈM‘Jq‡ÓXO×p19Ë9Á¿}—YÐ!:o6`|Ç!Ö¸¤SÐè&-\ľ!ýˆ©2|6 ؈E$‘{uau…“–S&5¹ŒP¡V„ù¼ÇšÖÛrUcY¨¶¿`Jýº¢hž™èú€™<(6ûY=§ÁÛÁ‹Ë‹¸FÁBÔ©K?Æó¥Fqª3vÌ),É# òƒ¶᪫};°ùÜ|ã­%ïcHã²Cø’Ä•š Ù¥/€Šgwšº…£Ø!ó%¨MÙÊú ®¯ -’}\}Üà=̲)ÄFxD=ïv1dbƸz6¨ÐRÒäz—%è2ùÅ/Yý½è‘Säá¼0bTË$U(Ë¿¤(»64Àe¤wxƒ•D¢âÑGØcgCRWcƒp±azuŒ¸ôž¥’ZáõqÒÔÈîID:ìÒºÍUµ1•] Ýt†9ÚÙù¿»î“¿+Îò5î9ÖÃÂì9ÜqO‰G›·‰\æó¦Ï‘2 ý û•s‚t„gC\ ì{¼ä´/7 d-¡tl)4JñüqRÌ †S^ŠjÑ,•ã^HùO—‘d'=N†Ž³†i¬¥wÝZ³¡”‚Ö”"ÒN´¤¨ýµ˜ä¶¶ -PUT?µ™àP[ÑVœÁ±ŠÓo2­2°W˜ þ"á&bWÚ¯ëÖz°ØMxÌ–DéÌŒ&:ПR~¬Oäë¶ûïƒøE; _äög! ¬·ù þwV‚5¡“õÓLõþR}5R•ÙVë›z“•IÙa9e˜dßö&Ìñ¢£b&gl\6©2‰Ûv[Qp2C|6Ð$Ì,>OrÿC†{¶"ãnNùPÒ‚%ÎFþ° ™@ù$× ¸¶Î*˜g°Û×X†§:¤][÷\JzœtÖ¢)¿æ¶¥+(àèõ*UNýÖruÃŒ¤ôaÆî‰nÈ…´;6ÌëŠËSl‚7íÂâÂI!’1ƒHrÜ{Aøh`Ý¡€ Ð~¸Ô˜Ö¶þR¥‹«hræδ!þp—±NJ[iÁouGˆ¶³ÃÂwmMÞ!ÇŒ\²ÆDÚ°&*I—‡Ð™¦`¶vbý=7|»ú3‡þ%ÏïCR’qJI*þ!Rü³‚j¬ôH›èÿ æ -ÿ„Ô_™F(Úåö߇O;èǹ -ŒDŒ;lB»Ç;q´KÖ¦µuÿ@¶ƒ™—Ïè_µ[V¬øäè­ûûÜ{K‡péb2'ŒI%s›£Ûã1Á!ù䤗{žùÁUÓ$È3¡®ôuJGU34n+Xa¯Võ‡4:¶¬åõMQ -Áqe@æZ.)G•z©¦3óŽ ×閺̱V†ÍºîöæC #T][™MýÞ\8³„YÒ ÌÁÁ‘Œ–½/þ` í4Dy¨a\/5:TîdÍ·i­`CNò‚BFÍK|u’u.¸c&;ýÏL±!Si¡ -o€§œ! ÂŸÀöí<çZ´àÁê Ön…Üešê–7V|ø/qŽ·ó¾±•êGÚQáèßYçÜ êÈuJâž®ZÈvÀÂhU•“üXÌç)lµÊÂGÝÉ6YýÎë‚ÎÖMùŒÈ@lXÿ XȆÒ€P=zyhq`.Ú1#7¾d*OèmË°i -À£”ëžòGõíóÎGï#qzÃ:”©K±¢œ¾fÕ*cqO}Ø…~öZô04yc.\µ¨V1¡ -ÐçD@Õs`Ñ1í‹”âüVMéœD|5ß×é¹lÝog•ÆOŬá‡Wë Zîr|Ë×/ݪ´`™{®Íäg +M.UÔ±8àž·Ò0Öî MüÐQTNìêC¯Ðp!l0ÀÎtº[X 6êÝ´O×Sis&õ -µNòÖ̲oà^1õâŽ[¬è „O~qð0ƒ»‰óó$Ý­e¼„HÉ7K#W]©¤3¡ŠA'Ês2åš*~2ò8’U°IR¹°Ýí1‹É©È©è×±¡Ö¿‰ÔÉ=¥…Ý/¥L ^a?t{ö£kŒ(´~¥¸ñ=È»!×¾2Ä‘x&Dˆ+l¾¿öGq -ôªuÃë]&LöF‘Ÿ>t‡™Ôœ0a*™2ñq,±¼ â á|CR;0̦Biª‘ -©ë–} 8,É’Ç”áv8v kþ²¹±fRÊ«6öZÄDΓ\º´1—5DœÂ«|Ÿe³.£:Ki‘»a*“ˆãLóšËKŒ"ëh€~°—Ä™mJê¬ëÞ=eêO6ÄÌÕç(Êx&¯$Ÿ”°»½Èù]Üÿð9Õàñzyv–eÇA~).÷™Ú‹\xb•uDèHD ~ܽýÓ{SÒE=Û‘ÝÂñg¸óƒB/“Û! i»jèœEP{á±dÁÒO³òè@‡ý/ÕG ˜#\ËBVv^ÌÌ´„½gÏ#ôôî:.¹‹ë\!PV“ý8 Bðw§_ÍÞå"³D_ ®i±‡övÍ/眊0ùÜÚ}ɤE…A5ÞÂ?6Ù©Rå.^iG‹ŒdY+Ή† -lºŠ±Ë2©îwA+žFçùË!‹á¶p묹Èwñ,û1ÚÛb­àf41`35 -¡?„tÃ"Þk¼ˆe•bÂA¢ñÏÖt-NÈ÷¿æŠ'Öå“‹˜µ/‘ô5ÍDu ,8OÜ/ôµÔ³½y6OEÝžT²±Ã¡%—RuäÓ“õó–ö{ŠÏCœ«þêÊHE?w옒¦;´­Á•3€{ÔÁÏÒŠ½£¤¹Œ%´ž®)£®Ûcð -ï¡|å5`}³*y—=ê±Ïð_à¾Ôy^@ÞïíûGÒ6ñßHŽ© Iš‡À­žML·³êx¾ÊMÚ9¤Ens4|Ã6ð"ˆSKd:d>Šƒ€)è2ð§ú'Êæd „ñêS™Šþ¬DGWDM'½Þˆ:Á(þlé<Î-þe‹ -rϱT7v%µ’OSpéÁ? -fˆÉOöñ©u;ìíûgCš÷Ó·°$ß]ì«£SòXCÁk&•D[•¦§Ht…¢uÕ«kýöj=Ê< *i’¿¬  ¦k†:…¥õ”×áýˆ³™<«¼™%Í㜠¦T×"Xðoµ+…ŠœŸ¾ ‰aÕ¼¼lŸ²³˜:Û“ŸÃݪÆ>–¬Ú¯,ùJmþÛ›Œ½ÀÑFÂÌtOW7|n•¬;t†5–ú4% 8Epdðt*-•ã@ 2› ø‘ÓÓÛUöM ;¶5ÓÆK ƒ_̤ÎÙH4G’yîÎ8ÓÛé“# -âJÈì°?ª©‹ý‰j:¦wÜ_Î6ÚXb²š2±„÷2u™Å (†9¹‡Ž¾4mÏxy7„H–â…:™"'Çæî?d[2ÀÆÅš†²bŽ»ŸˆÎ>Ú%Œ½C¨# -yzÎ87m°2}+3ÃzéâÏý°úÓaÄ• †Ê5g3ðIguTûãœÃÔ˜§Ó¤- óy#tbci4Ýñ2§½ŠÙ™N–2iÃÝñ¦qpËEò¬Ì]–ŒÞ#ƸòÒ< +ž üŸ‡£'?¸WZ`}çõÍ0(7ºIåŽ ù>Î÷9,ÍL=¼>âÖ¡…îjR£˜'W½…£{=cìüœˆ]cƒU×n Õážìz;¦ã¸¼z`„¤NýÍ;t5³ò3Þô à‚µD´¯q'êm[õ sVØt´åm?öPá¶ÆN%6;dl¸>yÕoå«® g©Wu—uÃòKµ=d<ŸrÑïVOJ{U„E¾5nË)»5Ѐ}Æ¡u¡Ìb§;4GƒÐe ¼³K:âwè?$S/’(À½àŽR‰ççjíù„ -‹td\7îiFŠÖHßuc ^)‘,×æ6.R‹ò!þJr¬‚+5²ç™ž\ÔÎZ_¯–"æ»ÔÁ1n^v&¡·¶ú¬t¥ØôwtÞ:Êá“jaê1¬¦O¤m¿Ì«uJvù^ÉvW/ä@×íÆëÍ*ðÕm\³Ù -è™S¯çΡXéž7äw;V\ÒîLÂÀVÅÿì0Ç~pôÒõÆ×ôFdÀ n×3 m õW'ÝTôWéÂÒÚ-Ò…³‚òÀ -àEk £6 -Ù™B m°ý‡(ÏG¡ƒÖ€˜à…v¾]{øhàe‹*¦pÔ‘•GÖb}šNíY86Ü”OFÒl>c|ÈX˜–ÖïëÉ™sÕWQןÁ;/§æv”^V’3P»¬ ÷Îñ{9û*—¬mˆ+ÚŒ&iø°qœ!­Õ.¶Åí‹Dð÷În0=*›æõs»¨’²§D–nA´%õñ®\Ô¢ýÐÝ𤞻Ÿ -سÔmᜣÎ,'õ‹Žl»iJzRW6—MÌ…çʹ=ëà›²;h…ö“˜oÅû9Aib&%òI:Ù^+ÿлé\Ó!OwãQu7 q“CºKAÉ¿nu_õ¥oï˜ÎWlÌ)§`UÆvLcÃç4Y ƒ&ú¡~«sOÓ0Ô¤KYñ¶ô~œŽ\))½ÇîöØhFD“ßF®ë-È"ötø{Œ~G¶4$CK† -ã® ïŸ 3ÄYë¨} -BO÷15=ËÛâH‘AøÅÏ’Xúé÷º2YÀrg2JWùb+é8Ñ“y—L¾ ïý–Ã¥¹b~Âÿï'ƒÄÌ5g€U?ŽÔnZˆ]ÏÊPBg+¡y¡%öTß[ù”µ®mh¶÷̉ê¯X[—î -…Ê—¶´ -ÀÕ-Š#«Z Ö¦XVÇ™IƒgÈìmk`j¼óßÜ£5§Z⤜Ðí㉠Œ̵ÿÙŽ¸Ôc-“yó16¿‘÷IÇkoŠyÄÙîop†…ƒ)ªÓDZÛÝ­áŒÌïf†®H/X€Š¨:Š3„Þ÷§÷<]KAåíú>QøÐbY¦{w§ OUØ„1˜žÅ#ŒUAk ß@Ø΢wÛzº{ -ÉùIb©Y)I£ÓÀcg³óÒCK$JŒ¥ù÷vð»"2º%ŸÉ .gmÀ„öÞ^½:Ò¿âÔ8Á¨p¯¾ŠI©Ñ¾ËŒY©ôv?%f§¥¦ÁTÚ-‰›vòUlíÆsò úBs@{\”=»Fôsõž•H#´ûk -§ˆŠ?Ie¦g¸*ÇÑüWY9>![õ¿@áªæ™¯7„«[EÙI"¥³Õáx¶#X¿^%öQÓõdK¶úl{]´Yvf Ì™ùTªÖñ„:Å©Y‹q½äoÀ´à±qn+ORN'¾Ç°Q¼WòBéðwÔ&ú@s¦…'ŒYˆÛ9iô.”ÏD×ÒKgŸ?8Jz-Aˆ+Ò0¿ -Sàp¨Õy½.+¼ÓŒo[+ /SºÇ¢¬T…½ÿ úÜ WµñO«"¥zfiVD#ñø£«ZìZTž¥psSõ ö„Ìþð¿±HázÂotŽÌ½Hwì–ïrÇIÍ(!M„ª zŽmY·²ª={²·Lߊ7œ"1r1††ížDŽ[Ê&Æ…âÇ%‚>åÒ``p×Ý`^R h½WÝ\Á[ŽP)1s¥‡19ûùdzÆn¿—Là‰`GVÚÔ*}îËuÂõtnü¥°.s óÊ¿yýTôÖ$ÉILz[$ }ãýWHy¥Öá·. áÿâ 0Âsê[ƒíjú\9BxC’¯ÁD°]ørëŠ+K¾t0ýf3È©—y=¬ŽÌmH[(úø¥”äß²3/7šåÀ{éçL#E»#;AIÃ`k±ü9Ë_ßçCÔÏ‘Œ_Xß6N)aQ`XøLÊxJõü>³òÙôû‡Ø‹1ê*¦ÄwQ˜†ý¬óˆƒKoã¼’'…IãÕã0nxQ¾¦b ÐÁÂÆïÒ)7’Èc²1’d kG20,?‡ô’71˜³`éÕÑî³ûßÞË< -…<–kü5€Ä]53µR_ƬۮôVxO¥9òJåw{ám™8že‰ 3ñÀõŽ;´Ò °²­©èy{‹‰@[T¯=·}Çw„–½(aÛ•-‘Õ?^ß›xyƒ–¤rfI áJ°J¹¦˜ŸòB¿¨›Ãý¿¬WÒ®á£M¥õ\SâÌ¡‰Ê™R$¶ÇDÎ[±§öê$X-mךl¾u¬iƒ`0íZèåaW_ÿb»óÔSÑR–Å-J&ö%ÞyŸ_!í>‹´ùJöÌÃüȃEÁ®ôßa„êñ X%”‹~Fz¯¨× -îQë -½î¬”¿6¦ÃV -)|½“Áøzèâïì`I¾­&½´^ÎSåÆ“wë¼Lº­¯Ià˜aG†$¡NÁ')ØÌ·‡NÁn>p±%=EÁMþâK+§„ñ3$ÛU‰£J}‚Ç[œdEjˆøuL?¥|XÞ¿´\z<>ÍÝ4pÄ•B åJ2Q—àÂ/ Æ%KÇanéÃD¡>coEZ%h«°ÀUä§ß.cÃTþíÏÕ|vÆHŸv;£=Ï€…éŸ/™)RŒèX‹‚RáÇNAûÏ¡‡úg¿ÓðôNŠgEžFävéÙ¶Bà“3b«\µƒ5³pÉBÍÁ._ã'ér‹|÷õèÖN|ûOš3.bž«ÉºEQûš ±H> -´½ðktôäšyN"S¥HOh}/9ôϘÞò•s æÅITîPÇ"~ï6Š-º¦-ÎLßÒÀeã)3j5Z›ØåÒÉW?“©éFî™ -w­‡tW&ÉTÇç›Ø'ðáí’TQ= ®ê8±c’”iTÊ8ÈjG=N¦íip@J-x„…îê³<54ŸÛÀèkGd%PY&½Îüb×(eÈ°&4ãàn³jO’Ô0Ó®Â2µ@ïj¥…ˆ ü`5ÙeþB|No¹Ít_šŒññjöØéDJpRsÖ’áÞ.š…ê´‘QI‚!Ö‰Ö²:e}eï½RÌ#sPŽ/õ5]ç"]í˜õÎÞ8é ^p ‚)äifVä6Fü”5¹eÎÀ¬àܘ#¼íëÁÙׯàæµÕƒÒÉÄ6{·L¢E\{†|6ŒîÐ){…Ö#$ÎYWÜl‘H™wé…H6Ûá8có¯ÄmTpZÈÇ¥Òøдï±uÿ¿’‘µšRWw.Q-ïæ §K,§ÌëI[¸Óäžø -Ôc\—2†¿dÞK*6ËÅ¢2_½=ý» 9x@÷¸ ‘%)ÁM¥ÝÇOL-²Æ›h&øùí÷jÍÕ5£2*aæ¼Z¢ÎA’ASe£{°lTLCøößb*â¡Óºn¡œ¥Š"vRŠXDÍó‘RÔÉãÙ^mIt0;™D KØQ¶ –!±h‘_„Ë×á€Îo«Ipör¡²Ýà¨jc°Õª“$‰EŽ~ ýÙ>YI!âcŸ6ñ¿0t’zb«þù(Xºh+¹YëWQ—™_Z»xL•\Àššò‹× °{mUÌ. ©sƒùÓÓé+ÛP ðÔÓMe¼û¢ âԢ͟6_Ñ^ è“f6 V\½ôqû[= W¤à=zèv¼ÙèssÀr‹kŸ,B:õW¼c¿Ã²t0§ªbÜLqáíüˆ&6#Έú^ ÁÑ&ÞrTMK_,óû¤:D §µ¨;»Ð˜÷¼À×ì°­[GЄœëBaFÛ¯8eì ι…ÜätV2‚e'+‚¾€ÁJ$¤„Ô“ÀÕµ…þ´•ëœ>LyPÏp:„9"q˜"nÚ«Ð|†*ÙêX?èýS‚²ÄÂjúN÷Él®M’€Õ)³ˆ`ñòcL7¹Ó«®ò.ͯ?àJläá -õ.a›31*.¾CoÖqW.{˜“©ÆÏäbÓàÞ•rM£” ¬ï ¢×cøIŒâq›µ—(ã%š`.AËDcyÙ‚BI½ƒˆg?ꃑÞd"·9,d£V³*xýþ£ëU…w{LÓ$tǦJcÝ ] -Ðç!VÝä ™j\yºút©¦4ÅØ-2W-™Ÿ%Tføòe³¾!†3VèqÏ!?H6`ŸÏŸ \V³Ö'ƒ–|µQËö¼­òZ4?ª¶‚ÓO3ͺ)ÅyóAýbj¯8&tÿôý”ÞL\y[Ãz¡–-ºÍ \©äÁr ö¨[>û^úE´?X„,^ÖÂܼt,K‡ÜÐ󔨾?¢¦ä´äixýç•`ÃË™ÅÉkÆ #ú–Uƒ"Ø$àcøèüƒõp˜@q® åñ’öBÚ Nq0úê­W?ÆRqŒspŸéð'~çØZhmëÌÂýç"ôÙ‹_º 5¹@M¬–?ù ê.æ*‹ ÊewµzºÉß™åž çP÷éüí¼XÏw‹ªq²»êþD$»úŒ>F*‰è§ÊÔ[eSù« ÀCŒ_š°ÎOþàaÍ¿Þ”Ú£Wn$ØžáôP¿SǺmíSý¸™sµ×´×~ØSÔHiCfÍ*rMä0Å,5bÕk0pÛurÂV'WfTn(Y¢Oì´ð˜,Ûb½ö±XŸ'dÇ—;@Ð!Â,ƒ-&%êÀYé°÷éž™K,Õ‹C^è+–ûˆõ ûBJo‡š˜e )ê>vÃ'”ðÊU²Û‡õ«ñ×%U¹A¯ãG˜hÂÛÝX?o½¥»Ðv¬%LìëÇÏàÙ[-x›Zfñ3,j«t\¤ æ‘SOcák!`¢¼„!º²c›#ä{|êÈÝÔ\éxT—ç dA¢’70þ•t3òb¨þbY¿Ç¬þ‰è!ýÔ¦”}š´Ãª×®US@vÌòc>Ü®¹¨IÖ'Ãò$8ÒÝÍ)(5›b1Æžm;º(±:ÑEPź/§Ü3‘Üù—ö(<¹ (_¬r‡5Yî1Ú¸ &–‹†3n¬âRkf¼8°Ì–ÇúÄìÄ€EÁ·Qgìâ(öf@Þ½¬Ä]GÖ.oëö‹ -ø›wäŽ]ïn8 'atò©KI}âÁ&øCüpß«•ôP ®™T'“2ôvÿ@e±ž¶ -s½³hû'@‡ÚÜRU3X˫ΑÐshwóþš³³ÚF‹™Ã”´°:ÚµáF2Ÿ[~„¼Zu%[ÌRL(fû€UÉì~ñíþfCü×õ^r”ûî r—¹-+:}:©½×÷]W.fm·¾÷QÒ -úZÒàü˜WÖÁT}©¨nSv+¹V†D0ˆk±Gã,ŒÊ‚kíw¹y`ç -ó»ßhÌ@4Áü p1fÁ%BÆGÌô˜«ýÙYBõî{ÿÊêGO&`“ -°¿?µ·ƒüâaXîˆg”HrdWGlM‚©Ìó2AËF<Ä*Îèb´ýP‹@•¡Àóᩈý§8áއĤÁ…¸x37ßN¼ ”ÐX¿ÙuÉ"?E¼zZá¬|qbuAX²€‡•ª‚’„÷BŽT2üAË$ˆCí{ÑhŠ¹*à,–bM^¨šøŠŒÿÞáa äh)©‰2ÍØ*M=·«Ñ -Ç¿YÝ4^à”`Ƚ 6¼ˆN­¹§lÞQ¬²Òy”É i®9'ÐÖªÆA~–£Hˆ$!’&û¶":] . ‰'13CÓ)“Ó·îX$¸$Ï~®Ö#g©³À$‘+/õTù€Ìê†e1¨!0BðJ¬TËò\”Á4æ†É+qù©Ýú B&åÔÅ% -È«ÆÄz¬­¤¬¿„„[a1ŠkDNž¤OƘc—®|#|{óa€ç}¸‡NŽ>F­6!—Ž ¡ºk,|Á­ñæh;/L+©ySŸáø¢ƒ,vjbß¹B "bîö3Iûä\½ÃsÉÕ/ßÞçì@ „ídiÀ|­wöëæü…ÈЩt'±ÓAÌ·x,[KëÖ–3LÛqp¤#øH‡ìàÕRV{õ„—ìé£%LŠŒQM[LJ§•YÊ‹5ÐfÉ;Å7º -£"ÙodIH -&Åd_$T–ó&œXòæŸA(Rœ?ƒ‰//¡€¦ïY @§Î‡5ñ#ÜC'­ÚrWVÈ hïi³Øö¸þ~7èÊ—icÒt>¹¿Cæ!µàÁóú0MBä1‚eÎþp[Ìj–>šQÚIFPBh,y;tEKër¡6#ÏõÿèuKÔR PšÓˆÔ#_ë¬È5#áýÐ0.:E™bá6ŒùÇêÀ ôIÝÞñ9Ôéaœ Ÿ»´\$&€tÐþÂ.KpàìθKа­j{ÂÊ â Å€<î¯ þRQ—.¿O/“àÿÕœdzó‘Ý“hN#«Å‹æ™æMÏ$îÝÁ}öy4šî@ËÿuµÚMÕT"¿1»wGjSôôœ¢ÃÖ~CstIZó ³š#uA͇8êr{gíÖš`¾LH7§˜’WŒ‚ÑOQÆNqýZÔ­ÌøP·ø= ¼ú¬š Ì~‹š%×RLõ@ц·óóÕ;ttûIPHjL± ô#O·º™o•Sw~3Cô ’«GÆctô«Ña ¿’tÌQÓîÇR"ò¥0mMvdq‰3ïì"ª)c'¢{´óF© ‹\hº(v³Oèc^FäµáÃI&”ÝøPôÞ§›“X{j›ÿä»ãdCfÚª¤uꉴ ÚÍVB;¿€Žjâd×r#?%rŠ»,Ø2T)¹‡©¿¸bïÚS±¨9Nþ¼@ ÌŶ]z„œºópžÃàm¨{UÊÈ‘“AãÙ¯¨ 8ey[µ-e)¯"zð°D«Òm~…òÞÃØÖ‡#ª÷?l¯vOý¥ µ7VÜTО¸hæ=|lM¥¯sDBçkîÂÔjt³!¼Ù9v—õÍVˀ̈¼½ÔKù¡W•]õk}!-cÑ¡õÃ?ž¦-wô·žöí¬Æt6¦ýï*iÐSß¡|Ɉ§¡ƒâkËåóí-SÎÖ[£¹Z­o@_ÞÓº˜,OÃ|ÉLœií¥þm>:Vf…$gú¿tžï¡ª«â£,¥{`— Ú”1 ³-unÈï¬ÕÏY³±^7RYMYáÄŠûÞo§3¹³ÀЭå¸.àƒ¸ÏXï£Øx­ºÅ¥}}òqä­·äØ‘e)²°KÏ»H_U÷#F£ÔyJŽXðÖÝZ†sà'‰îšÓcÅ< ç0ƒ‹Å¦/Èà ÿýÃïy»Ga`ê£?Ï¢, -JZRêÏ+–/¯¬º–2…Ëü.©j†ôìŠR -[—dXsFŸ‹¢:æ<àVÛ+b7וQ[úGèM¼–‹=Qìj°ÙÊÏë±g¼"œöÉÑõ† §×®Ý‰[n6?,Á¼_xôšçÅê“R'Ü»sÐÃà -?=MÃÏÐæFš½‰Ž@Â:Ì«2ËkKÖêQÁÄÉ ¡Ur C‰òNt*¾8)¶Ž… ,d¤F*¶‘'pQ>L„:Ÿ÷lÝL,j|'Õ7ˆ˜Ó9˵Ì3¢žliRVòÙ0":„=jGK¢Rá9ö²£òÚÁÅ'Nª×$;ø¹y˜dЃ©ñŒ#£ -æ r´`³m\J²ò´³3ò€%b´dëÞQ™¬0qrù“žÁB$Z¤ù$‚Zïò™ykÁGq0m¦ý tÒà¨Q³WuðéG -endstream -endobj -2226 0 obj -<< -/Length1 1761 -/Length2 18831 +ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» +ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ +}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¦Œß=מ0).ßÌÅ|Ë¿!í:[LI0lrÙ9GÌ$}»³/Xà œåS`p*²pë×+fwwFG¢O¸¦Ä^æȇ ÷ˆr+dMvNy{æáÙõYëõKëí²Ï[zÊ[fâ +âÜ·BÝDý‡q}Môæ8À|¤j›©$±{ÃjÏìpÓxæxS½Æ«Eîu +¤•™¤š¶7%É‘õ±4\ ¯9»b \Á)[ÉÚFUÛ.qñæþ4í¡ÌZ˜8Kûzwwµyl”ϦI5b·jc‘íZ¬™Š,“7Ÿ¤ÖɪK±:ø#@JÛd®@Ñ»FìÍM‡ç÷Á_ª¡ûd#g+²úë=·è>ëŠÔZ‡a¸·—WŠNõŠH5Y/ÚãìÜ .rå¬pf{0DÀ|6@«çŸé;]ê/¯¾h|ÏÐ.ø§RAÞÉ°KÔmœlö^Ü&WÜ€‹ÝÇ{·¢ðýmFÄÝï«´—¿ÚÕ™É3FK~I†¥7@T7AÜMûOPŠ.;ŽÝŒHÊ+i†X±ž;}²’øžæjÅYXõE×u«¼£5Ç»pÛBI¼¦á¡ŠS ü© 7pQ½40cH™ÔÕ4ðu[ì wY½Ã–šžå2¼[tÐÒÉÊ–Ú£Œ´œ?hô™Š¸bœáþ*Ù$€ +dÆ¥`Š$ P… …›‰:"‚ ñ©)Ž©|UÑïÆ©ëŒfù«Dµ¤tøÔd—§ =¬›œ5Íó¼+¶¤îj7Á%ëi@ÿ—âÈ)шËT/ÐqˆUÜÐFé±÷¹1”tEÏ‚Ò·Ý¢@ Ñ¢€1ã²F^R?–-•ò¦q„^œ!ûŒ*1gw÷ç2À¡4/¦ Ÿ¸3¿@«â\°7zÛazêÑ1é)‰·.à™ðó‹Ex‚Y'ºÈª÷ê5ˆFc=nj¾2â½ÕÖcèw1 üøÌè3€bŸI]‡œŠÁy¸²:ŽÌä fÖ¡©Üê‹“åêñ¦û¨fgì%¿p¡ûÑ^`´(•­Ó'm™ú K'KâÓ '>ŸœEàPN,:Mè{ŠS3G2R@6\Ÿà?-ðÕ^X'€ÛèõF.qh˜Ã÷YŸòûl‚aª¨wÌÙN®Upͧ`­­ôâšM9±ä_JgÒbw!◠̼sÄÊTÒ”­DÀb‚É:Wq!]iÆ¡w»“`ÿ褩Œ'åÂ`àh^ TTI«nH‰el䶢½Í’òŽ÷à`ÝöÖ㘀ö×Ý '¨pˆß(=«Y1¹æö«‰ U¿Ñ¬¨/ìOúT +%`&ì{„(KÅ:.CìiÍK9¢¿xHÅ-vâEüÔ4x_5ˆå ÙºüŠšÄ,ôž§dâl5'bËbÝq,–Hö. O“°è8Åá NNn÷ZÄGòquͷDZÖM”¾ôÁgûéÔd/.oí~*Ľ–ẾÊ¿epø˵ +1î²}o€Kì(–ï{AÐsMã`?  žµË}|òœ¨^ÒÚ§(ûÚ1¿vŸMXüØAj!Vóƒk5=êÆ&›Y¡ìiÙwó†Ë|¨†vC¯‹PezãF±Þé`FƒâJO!À«þzÆ¡ÇãE.)8£Aœt`+—ÎoêÙê”®­ €ƒz`æ!|þ­a*®ÍdçU ).tIhq‘×þˆ*0 q±€¯>ç„NÇU Å3ÆÈà7Ä€9Ot¶[3|ð5r0ó¹pÆØþûØ8ß•W˜qDLŽ¼Ž{Üí`²“Èdw”|ׄ GJÿz/·œèH'¾Z$„‰Ù™ØMΤ8¤àŽÆZ̈Ž¤<7ß{¯LpÞÃ÷V)%áèkÊÜ3ƒ„ì™To¤üCn}4>·ZÿrÈ°{»rÁUZÿ9EªŸÖÔG®áu‘49Ú>à`oq¾Í/‚¤á~éxâ–S…|œf9׬?ÀXñ.uÈBxfGbEü.wW;û…™o,À ¥BLkkKµ{9fggü,lé|«&¼€ÒMÈa*£Ô$ö‰¿v#ܶ>ì7UìcéÍö«'·‡n¸NЙÎ1Œšç¦WÞÆ«þ¨ÙÿVÜ ©˜Nu+9ÿÚ47‹yG(ÑÂþßß ¨ ÂÀŠ"­zÊâoOÂ_”|¬cZþzB¤æƒ@·Z€Aݾùà@a£ex–åb?ç>"ΕÿÉYÀ…ïîœÖ‰éT¦gB´lÙ9UýFêJ¯?"[p] ÚÊpÎhŒØÁ ÎÀ’¨ñ†U8€ÏÕ“z¡çÞ¾L†?³€ú“ü:K‹;®õú¡Wÿ%ÌX”„õ$؇:bÉ9pã´F^dšBÎÖJR(6[-T*í4!œÑyY`'Mµý( ­¯íÊM«PA#Æf‘€T"fŒ"?e÷—þX§&’R¾ÄEÇë ]¨2L€ê†Ä6 ñ?h)8&Ì/Bafƒö–“!º0ˆµðt·M<Å‹X0z½1ß$6$·}ûW<ß1jåiâ76çý$¾4±e°´³ ç©Lå,vΡTuQèo¹:Ýò=ñ}µE´Ë¨(ãSÊËÍ0.“¿¯Ž1Þ) dû‹ƒ#óÊIÍ;»€P]½Éµñ¹R¿þ•ü蕺I,”"È?›“öãbBŸÏÎÈü×8|ÜÛGÏžÞÝï\;ºH +nÆác2ˆß¯xXΠ1!?:àá¹–åt#Ãà?%¹Ñ÷•g„ŠS¿e[zšŸeÍ…} Êßh)—úDì j-ú…„ÄìO„6võzu¤@bƒ ‹Å ix´cÆÝ`rÛ&rÀç IìêÚ¹_> 1SêSdôåY$î…`)¤Â­õÑÄ×:Šî¿•] øR]ÐFI®Tkxð›jgbžH“d.(: +Áâï«œ.ŒÐ—%¤pq¿ªô>¬>^ézx,Ú{^’Íc]r›â6o®·†µ¹õ¡ÈÞ¬tH“TÜCýÏ× •O;Ðqâ]8ù$y¸·BˆoLr €{=fÀ¶¬$' FøÅ}*õƒ%ù*‹úªútds¢›CNzc¶»š§û‚5G~Íظže ê2‹Ôd«Šã]bsz'¿È:åÏaWA´ª™>4+ +ý¦5uß=JTòú­“Hˆ8¨Yá·n¸ÐÏ{ü±-¼øúžtÿÒ}Püì”tÄ¢§Jx³•8×ÈÓRÛá.\{Ê`uÝÿ[ˆµ§ô%é¹3Áˆü…7Â\Õrn‚†NJµêþ‹Ïò™ý F­k¬² ³ò¾Oj¿—½®ßÚæ+´WeÕÐs©MÕV—‹)ªø˜–óÁàªJñYVñË›8´ìÀ1Áýd#JL1?M´È?"Å›b§ÌQÁï¾¹fc·ÐÓŸr´½¯ ar¼4דÕ@ùd¾ª—Á”çv¯5³꺜5eÄDfR+·c=Piÿs«ÛX‘8þšÔÐmm‹€šÛ;E­¯LêÄ]œH|­S“°±‡· #õÈ¿¿§ðøË´§åç°À»Æªlçõ²ù™ã È÷¨ò„S6ùŠæðe¤îÁ¿!3€BYTg˜Ú±}T¡Ta˜Îˆ‚ˆŸ«Ïf›ÔgŸ¦»ÔþðX¦_+t”1¡2)AÖ{ߨøïãcƒ×° ‘«¨zP*QË©—S×Råd*çlNíØbjɇ©w½u_ŧ0ß3¥_¿mÃ=/èßQñô³ufô⢠+ñ'I N¢»â?Éqjªñ™) +ÊŽëšÓ²+ž¶¡AÇÑÐr¢â»©6&HДC9Ömr|Ã7r²óGù%:‡òJrþ¶<Þ(«gG^ÂÄ´³~¯xPé^€KâÞÔÁàYúY…DË“"ø¸”$?f·7—Úšß}¹’XËäoèˆç3üœ'â+T…e|7õ~Ÿxø9F¾’ÖÊ“ •u +Ìiãh +9Nt’…9‚»uicæsÍäJ€w +cZ|¶Á$CÈ[ÑiŠ×eðƒ Ò"÷û²à¾Æ;3|A‘zFáY4öWØSHʘJ᧞é)~ÿ%œ§b[¿O?ÃñÅ;ŸRw‡ß¹ÇE­5£?"žWå|€;Õ®I6î”X'\dŠèKùôs}2Œ{QA)wJêtXàŽi3uŒR3T›q5‘b|~ëú’<é2ûÀ7bA}…Ÿ™¥LXÔO6çû/'`:ÏÔñ½´¿´‘¨ºñ8gŒI$õG,•ÿÌM`y}GꦜÊ?)c’ÜÞó–šÿ7áK !8BʽŽlÉ.Ü oõϵÕuˆv +K·„S?Í0Z<ª¼òM^žoEáÖï” §´"1é¦í\­eάI¶ SsÉBIT·ŒÕÔvòÙe赡 R»kvl$|­i÷ì0qpð½ +QxÑroãHúQˆ³™vzñç›ÅƒðeˆÙñ4`¨ÇÌe©b÷˜º?«V'¯axð Â*áÍ Ç¡»~‹MåCCô¢‰®”õ0Ò"ršs›ÎSC®æ=ÂÒyÊ û[ÔûÔ^þÕ”Iî1‡d#œJ9î&™I…#± ÏÅgŽß¶c*»B+¨­ÜFWnd†M}ÏRYu™bP·‚­všçc?_gMk5ZoÄoÝ䨟³ƒÒf †~ßíGÂ>Ôüصë͈,Ÿ ¬˜ãgkÉ]E8·?˜ŸØ`aˆN/`p§çÎâé22i¨útË (/[Ä@ã|;C¦ß]ar6ãÕXõ „W¸,¼C‹ŠOö‰Qì‰Y`¨ç`J_B¯àh§Ôqñé8 !;É.òÏÇ¿*Ä¿LM÷¬Çïç›b¿”¦MK—a{boK›IænÑU„o¸wÕgò3’ÁÕ|‘R¾q?ð«'ú©æSúÖoIÖV\ÄÛ]iÖTgÈ‹[_ßZµ_ìj†®£þ”5¤¯¨'N8wMˆ%+E:vŒ +ŠÊ"„¸Óªï©á“a¦x;ÏY Ž`³m ÷±ÎÆeòïï©"bsàiq>,ÄZnÊè›3æÂŒeÐÌ(¥±gÆØoû¦¼ =$ìRù·ÿŸµþܬú¯Ÿ'âJ:cjª3¦‚f2 +N’µ:3CC;OÊv"<ȳA?9=¿Ô‡a’ÓÈ{úúMË»Š¶ö&}Lænu¦¥4ÛŸV[Ìà+.¢_…bê¨$tö«1ê.¶}ÉÖÇÓÁcÑü¯{ä«<<›vì÷ܸßÌzÖô‡<ú Íñ–ÈУÝ9ÌrÞµ"œb‚t¶™Ê˜$yéЪ֡Vì ]W–ÂÖÒÔ>£Ýã0žõP¤B’·W*ZCÉÆ›ŠOžêS€ ë0³é€Õaº‚ÎÖÀºåS„±5Ε÷-}7‰‚ÔÆÙ-Á›*¸IC®{1ȹ†AŠ˜ßZųä®rO‘(G n˜6ã¼¢9iã5ßbDýN÷²'wL å,²j"•éWv³yMÎbfv›¹¤ù&,Õ†H®†ƒѶ¼G[‚f…íÄ&“©PÀx¸´&Iš™ÿë¤i=(Ë— èz:‚[} š$êú>ÖÑ]´¡çIlv®yPôÙüdŒÓ[‚tºzÑwä;Ñhc¥9–¯éX S8ì{‘ÕY¬J4ks¹ð'$r+›tšý‡æ7)„)ßm&‹LWÌQÔ ãL7“)­³gö€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆE›ý*â +°MÊö‚:7¯õjm›˜ ª!µ'¦¿3¹xÄ<[r îä«ënÝ^™sºÉ:Ÿ^—M{Ã9E“Å·ÑÌ8ÑÝBãt<ÚW#ë³WsÛ 3’}Âæ~]ÏNAýÑx!¦ íf”ð%þÒ™ÄÇø°wÂÙ €ìˆëÃ˳,Ø¿QÖ㌴W싪ËŸ«D®t2ïó̉BŽ›°¸JD_æ£ 9b ʃ>,Šw©v­¯Ëà0ÍüV\åaµÙ4ŸT2G+¨óÿFä]ôÍ,Ùšå]©z ~aŒ1›æ›CÑÈãÓJU­Ús/ 'Ú«À±ÂìÅ“k‡¿[ÇM#I8ߦò’)¨´óq±U‹ë$ÔràCO>Å°½âŒtMÖý>úIóªŠV­Ì&¥õµ“€Mi`ªo k¾Öà ÊPìÅ^\ âm"¹eð¬]V¯D‘¶ÄÛ7uë\£»»~ò&øbÉìÀýOŽÄñ4˜ÃtÞ¡–KÛLôÔ¢”¸‡N\™-ÎvúaK’í¾D¹­~2W^€"á‰Ã¶¨ 8Y´JBX5Ó"ݵżo¬v›¹Föv$=MÁ ù˜}( ˆ7@L»&5ƒ|®L£.`Aù@‹{åšßhrÖõ£Y´i¸(ƒÀn$›we‡Bp{o‚ÙǔԽxM}TàÛ}Qž¿4ΑÈq’vÛBäfSDžét•Q…ë±¥t»y%שÊÙå &[ßÓ€£¾˜çIB¿|ÂBî8™ÞLMGÊU "ç<ÿ¾B­tbv@¢1~8·„[&Þç>6 ¢F¦´#˜‰_•Õñƒ¹>,òomðq™À;¥Fo£ï½w圠¼ŠGÐÇ€G+WÐ¥á©øQ¿®„‹wÕ]é6ÆÀ®:l¹‡áÀD-K¿ ¨!”c‘z¾íÚsVriÔ)¢˜tå8lÆÑQ€ÒC·+>p—o"Ù•ÎaÛîwÁCN“n“>¾nÊ&ZÛ*ò~µá¬ Bb”„0mòUsQ_#25}!ò¬PršS­Uj®ISDòÜ®ià•edð÷;#ëà…ñÅ>¬PîUþ^2w7©y…vÉÏŒ›±!nÚ{Éa•|¦˃{ºŠöÁ/9L0’€P+%[sÖÖ­ #ƒÝSôÑ_!’—`%J/v8G˜¿X·v@ß;#b!O®­ßs~¿ªa45LÙ×9߈6ÎûuŸÿ»Ø&ÆîÒe˜h_GrèópÉdv´œçöÃÎ<‡™¯„ÿ¢J_?žëqÙ. z¾‡ý„™dyoŽ»¢(áw/EUÁ¼€ýäÊý‰**î-|Ç ýXL$ž—†íÔƒµÀõÔ»ÉÌ`z +†Å#ÃnåÔ y•JüÄÿKÀt7Š7Ó«ŒÂ6bk^1bÝç +Øy:šM_£Á­ìvÿ×BènÂÖÄð¸QVECÉ:‘÷u‚þ®ÙÕ®$PO.’%S¥î™Ô Õè¨kéÜì€ÀE&Hõ=´Œ<Æ­ª¶4i Ú­07L'죉úp;™í;IàªXbÁ[¿-DÞ£CFi¤ÂµÑX°”lhÓli÷,¹ÂãŒæ¼¹öƒº®-†¯S¢£CeÒæ`¦˜EÁ‚ûï…I`ÊÝqv‰˜å¸ÿRMáSÌ@Ñô+¨Ë'Ìí÷>ÿQäe—ÆòYh…™@ —w¡Çuæ¢J@Ù]ÐT¶ƒç„J¼ -WÊ€«N’qžáQiS}Q”§ÜrÖýµ¶2yÁ¨]X’aXÐNý™.ç‘8Õ¹ýÔË×Ãxäpw‹xñ鸵º…ÛÓ4‘ÛûªjO¶Y‡æ´÷žÅ Ô«DùŸwFÔ>¥ß¬ì¾¥Xó„Ü'±4µÕ¯Ö›B‘‹2®’‡ _n€¿™ŽŽÕ#¦.ç¶ÝEœA{Sÿ›…ð*µsßcÜS¯ +ˆ\mãY.n² ±š\B2‚áúûE†¯ðOð<´_½˜ø”&Ó6Š ÇCöN&Y‘Ï2·1h I¾’Ü-Ĭ±ÝDœõ§œ¸&q(ã7q{é?º:9jà„ÝA‡Ná+?>í~Âx­¾rÞlt(+—–ƒÅšÐ ”ˆ3ZÌ2 ÖJ¶ÍÆïv8ÌHÔšx‚ÔQš>w$ô“<èZn:¤Cb¡•à„ËȨx]ªøg¢¢EϸÁ_ןž©Ím„Ä(célšø0/¸µÜü*•âMžÐ|‚PF–ñ¨bK—K•1O¬–Õ.åµbyÔmñ2&Ö.@ µ_S»¨0-hB#Ã+½ýÛ¡f2œ™°=žœ$É‹¢Þ–KŸ_Æb`,¸Y–[å„©´l„(hPú\|ë] +ˆöÄÀ*øcN¤À3kéìÓžÇrzþ-¤µ¾\ÿWÜöh« Xa:-i~O#kyö®Gд•¨ +JØÖ@;hÉÅ-‚ /ý‹F!?*Eô~öh2zû3 +µ…*Oô3£a½Dôu°Y[ò‘ns± ì]CÝ)uVŒJI6U5º0í[ц§îډϙñSÙ}›oÁxv¯²I‘lñG)Í«Ý¥WÆÓúz=UXÅíŠYÎk¹×_žÿ’6]ôäQò^bw8‰SŽægý!r+ól~ÌÆg«ß®¢…šŠºa\æ”.ڂˬÍs °¡Ô;3øzN¥‹oöý»PªJõʤÁRãçooªä +æ©õ ÷BeÅŒÔCD ŠïI2ñÜ·­£$ꤢþt#ÿCë¤W“¦õ1ÈÝ÷L 3ÝñƒÂa\éÀÛ•(çC²CÌÅþÏ@ +Hõ¾±¢ŠìÜüŒ©˜¨jlZ%Ú$è·*G¾Li#*‡ƒ5 +xÀ*‚z´~ šrà·Ð9ËëCˆt}'h–g½*æ6 ¹LÑì§ÿÑWM[”çXôüŒRÿ]MŸC‹–ÿ¡?È+kÿE!ÈK±µ,6T£ùùí ð姓j°a-C¥ç=‰òémô!Nz™û,ÿßYQÙS½’ËŒ’'ûènF4M1Ä…ÜøC„—sã¿U2jUxüE-v/Ô}%Â3A†ìÃ-ÿYd,0N ^(®B·P»SiÜÌ9" ä@çÔCúE͵íÎŽ:Óûß‹¡üìo|Ø‚®ŒÍ sóªlR-ð¸ùÀç~5ñÕ»ÁVåiQÚ¶”ÇxÔP«ú úÿ9Æ@/ CáNöóZÐfh!­›QëvK+Zœ–éxSV%ÍyßIæpûô$À{XØÄÿtûÛ¾Z¢Ò*Zâ×ɸÌ0¦Àžü9B«+ù¦œahÁ×ót9c)ÓÉWž‰¦œz§²þÃ/¦Å^i€lYˆo»gÅkæÅ(oÄQœ”4ÈVã~2>e°S¢ê¹=Ÿ°àô®ójHò'Q±í¾é‡ðßêà™ß~ýNÚÃuÏŒ¶ÿÌèü‚øQ¿Q+ÿ¦žÅXÒ H ÇÖàL7¦æ¿oú>Ã}¶'’ †¹Ÿô¶>.¾~çQº1+Å%ïcÏ»uÝ öݽ‹­WíQ5C³Èf?Jk!7Ø#ûå“÷—'èþÿ‡®NÊÓ\Nɹo­4,¦·rè©Ë®uñ>\Ê‹«EN"ñÈ€´2„Сëûäöä¸6IÖÛFà!YÞO#ÿæ/Ì’ ôÏ2wƒ0e œîÙ°ˆÓ +pE4S¨àg¥GT·¬œ"`šýshÅ´š¥bש¿/“0;m‚ˆTtѶ¶÷õPDA;Ú PÙ'<·)U”aŒ”˜w Ðf]XÈsUßSÂ&ݦ„]×gÝ 5{¦!¥òoÊã÷mÐô¼ÕT+tgì„ÉÄÊO®<¦¼=œ{¯ÁÝ=ù»1Qµp­zú/ä=ï>•»±»J2¹/Äٳ [(·¹Öôx/ m¦D:¹¿Ûá_EèZl‹“í.ṁ×ÀòõÁæTÏ+`*õAAšI‡&^yŽÞÜlCñ„gl1#;~0-bFI\ºÃ%¹Oî³Ir{¨Ê­qe/ýn›æZVDIœ2ÝÒÀGml$а Òà“}pl2p#cu„^æëSíK”dø=ã®&æ÷wðçíÞ€ÔÔ6_<ËÏ3m‹¾«š[ûû¢ß!þÒá`AÒA¤òØ@Ð÷DMÝ£¶iVj³©j=PMи½N/â#/Aã?ûÊë¨ ý͘Õ[^zM¶è¯ ·Å¼0n +Ÿ:ùÞ)ÓÉí+c;Æó¨f×N|G·º¢Ó‘èQØÏÞœ×Q3!e.«Ž#¢7%ˆàä:k(½më÷_@W ”:Zºîò˜R˜C¶¨v|h[ +[åó->#´íjá×md}\.âY²Ó„60“k´¬ÑfÈ%^h7÷ú?>Ãda÷XwL€÷¸‹ër$ÒãÄÓè¤w3ã]üú#2E2¡«hùñŇ–R) ñšú–V±%‡Êdz§"š6rGzšwv€WŒåJñˆ¡ú/7V° Hšíb1óõ{ãñ~¨™Èw¡÷õ·¾‹òÎj—µ‡ÉšæÝÌ$×ÛÊtèÆ@õÒª_‰3WÙ§u*yÙ3›ÑÉ@ž-9•jà‘u„§S>É$›ª§ƒPf ªÙsê>­ë5Ÿ¾g¼Q¿vª·´W\aaéK™üâyL,ãò‡É]f‹£6®>â’×íQj%[êýOê§Õòq©â\ÛÞ"ðyID»B‡fjªgÇ-¦¨(Y&tÖ³÷¯C‹€Üí’`Šušw­ð°&±§Gjl¢4ǧ٘7W”vN5NnmRänZ[QRä:¦ó»8ÛØ;õÐrS+üMàV\B2 &»JïàíÐM¬¾¶Ð=­÷¡R½^aùm!Þ­™@Ð3ÌSÛÑ¡ÜŸ9Íî`<&³FÑs‡h˜¶¥pREãVWÜÊøQÇ÷Ží­æ]± ÿÓŃÆp½H›H¿ç½14H×þ²•y¡Ãeœç/¥}z¥` Ìé÷)•èo ÜV$r§|Wt¾´ä‚ HÃÃyá«:ì†b>]ô1–#W/ŠµŒs‘•ü-ÿ~*Ÿ&¾YèÄêKÿc º¡Î¢U–˜¶”Œï^¶áÁûÀøèEBz5‹8Wð°5lçl‰T=.Hà«úÓ”òûhèqw“û•yÙzœ1îY»*²ÍpŠWù«PøÙ,¹^VJð¬Ù·hÉ{_ ?@‡ªšùÈ™N!ƒü•4—ü“žá.3ÇéXr%'9*¨û‘‚žAÉ"Jß²@].˜oXc I ï1úÅHè¶ý?õóY·öÑ,H9¡ÚYb/ Á²½l£åéƒRÊúy´çcЧ#¹îÑ$eŽe«1;]âkè²Í›™™ñý§W9URSß+@s +UÅ{d™úæh—P¿nü;àö·uñ1Dò„ìÕ*þ+˜¬‰lD¶¥³œ¹7ä[($íש¦j—?„ä¤*(àvñ÷hoÂÇÑÞ¢[Ò†®Ÿ¾/¹€­°aQÿ1U—l®³*;B$NøxQV§È*JÌˈ„®cæ“íËÏxF0²JÜ{ÑOz±²tí×תàñGØÒüºò|éd¸åX̹8*fÆE”üLþ¡=A91ãéÛüÌÜ[æ‹_óµ®ÎUõî«#˜JAû@aKgì¬}•ˆ'ZEóóu·C¼XÁÃ×®Â% ßô•áI–8pdM +âã÷9{ÄÒ{jpAû¯½o.Çx]ùü“|±$ýx},-tJ¡| ±Èô|ýÚ—åé¿Sµ0ûKý­°“¤¡§GUêY"™?DdøurO u€»O@¼ú$>Ñ·]Ú\H>{*X`À"gˬÀDw¦÷ÞµV€zÌÑë€ZˆçÔKqHì‘ž&À\Ö +”º}<†ñ{ì‡Yãp1‹³ÔZ4Þ–JÇÓÕ…UwÞ.ótž—0Š0sÃÇ޴uŒá$Ñcn×-uà£CQh@xˆ™â`ýÂßrÆeÊâ“H‡P؉Þñìñ1‘¶åa9ÎòÆQuq]Äé˜<°,íBò>z–PÒ €SuQŠÓ'n/3LÙV-&'o–†ºl va¼y\ä¾}É8Ñ,¿¤…ü2BÆUSÒ» ÐÙ8n>û1H”a°½Wê¥}$ý/$,èáú%žÞ´¡fÍë*¿‡s·Š©Î9¥TXJ[ž\¯ô¾â +ûøU¯¾©®í&„¬a‚Ök3i!$¿pÈ*‘ÏgñìèL‚„ ­ä—Öð/þpwìòœŽØ¯@Vó 3…=,TåÚºámc´÷ÛðÞ‹ÙÞNÖß.Ÿ4øŽ$ŽVV¥—7¬´6¢÷nø3î:þS$Õëò‡f/ +Á3Y“&0h8ñà2…æN©—xj®°ËcëSþ$G‰¤ÓcÒªY‡.yÆiG€C¯¸?–ÞÍ^¥”bþÀ^¶ñvsx| Û>­tÄï·õÛi1ñb¿„×^ÓÖÂ>ïù¡<«Ý¢l¬&‹Ûå8@é¿Éž\¹]á•ãÞ±¾húf}™Š%DHË E”AP¥•Jä•÷ÓéبÍû©™€Éƒ›Õ8÷tß²üÆÊQ =¨HEc°¦ΡкŸ(ɇÐT`ËðÖP2šÉÿ¥Ã8Iñÿ^.{¥WhõmKX%B´¾U©Ôä¸wÀ¥Á¢oá/ˆmòÖz{·#?)ÌV  s+Ò7yÁ +gh$àKq|¤ÂÙ¤c¦;nB\°Utû­âUÑI&¹¼š‹¯f}^`„°1Çšœç#ÌÑ~cA®,Ò0pW¸g1Ó=D¹C2;+o'}¢g9^uÀ*à•Ó×€‡ümµJ®ÐK‘Ýz;ËJÊd–­*:=>éjE‹À§ã0ˆ^¬sÉÂDëH—»š²DG2̆ÿô¹x‘ÚõâJ#O:»åé'J28ˠǺÝXÚI¾ té[1ÆÛ?WÇö‹<>/ýi¢Œ…$ÐÆà aäÄsÇc-Š8–ÑâúÊæ‡&jlR~>ün@ŒíízB÷ú9‚ÚÃaÛ÷R¢¼Ðp¾ïXT ^ÜÔJp4©Ø,¿9ç5Þ[~ʦÀä.·3gÊú‡_°²~`þ1ÒNq”5» +åe·ïC;#gŸ+¢†’ é”Ô<ÞóIK¤‘º19ˆÖÿZH¯ý:2Þ˘>DRrÄîaV òð{àÃL®*茌ȱ‰,rÄ °µpÀòX_ÞX1<ù’¯lå]ZZ µ¤ígt°oXgZ:òzk£÷8ì ŸÂ5šGƒñm±Ÿ^_Ú5F!Úð…X \OJCNU¿ÝÞöU”‹Þ艊âHbC›¸½;ï.ø X„:†V^ñ°a0ŠfÿY¯õ1Oš@N3%=FU`»¦.žÔ¶Âªz€Ï5¼À¸û©wZäyävbÈ#EÙ2k+gd]{èyüಠ+&‘»;IGº{ÜÞ‹ÇTbÂWþC›6QrÓ‰Åÿî1fZË ÷ +ÏQJ¡ü¼Û**û~]´û­ǶÂk6tõO‹+U›þÅлr3l92èéDòÈåWöl…£‹Uh5ˆçÖGÑ™iÆdÄihËzœÞ¥°‹¶Ãºû˜ÞÝE‘ôH÷‡AL\Þ[ñ/ küp᧼Œ¿Kc”úîðÑB ”>S²vvÔŠÌÕßìùšœ 9\£ ´`Ô-–Nú¯‹LéùdÌZOïTs†*£Jg'r31 8++g³,@döïr‹÷3ïmzRVô¯ãÚ6 +E‘‹N¥»Ò«”ƒsŸ53ñ>„çë.ÇFª!Ž!`h:þ›fbEêãü¢ በ+ÝI_+qÖ§9)jzuYkéëË­¤ùO+3¢N~;›_¿Ÿ/CÿT; "Y&'cAŽšð¹ +3üù>ü1=ê¿°€²á0Ñ¿ê|mÞ¯³ gY"æTjÍõΫÚ}YÉ0ÁyÆö=²|ää~Q(š ÝëŒTî<þÅôœ± ¢7ߌ.°ÿR†ÝÀo³ƒ>`F«áy©çœ?—dŽ·y=íñ‹ò +ðÉ%Ñ“/Ùš3îN9šKU[áôÞ¡¡}ߢŸ +ƒ…* zÆfÝ| ­4þ«µäÒœjšˆ_¥ðîîù´«B—¼¦ còÌ_&ÂDÛûLÛ,Äå†îœ@´„Zþ˜Ì—ú wg0?öºêy«‰]·ÑÒ×fêMº +ˆ'y<úb"{4pИ¸w÷ÙPè©-¤ýlû¢¨ÒÓJŸó›­øÆ›Åìg)#KÏöˆ/Ìõú€ÏïîPÖ]Åg×`Ø#)hËóÚ3þÙu4Ïí¢$y'`¥·+w´H°ç[(µU åñÐ$j½WÆÒ:hØáçìC`—„ƒ×}%•IˆB½‡úî •úßXÝò ¡ã)vX~Àûgÿ¥œI8/Ô©œ¥T¸Íëœ{IêÂð;’OMÌnÏ…6”{ÄAUv¶ó°$jGª`þQ3œR¸/ô§mi­—Ï%ÉTCS_×½~è‰Ï ÑBSʜƓz)©eBÙûvX— H}ºV_yE0­¡ Ý3wl>êjNN[QËÀ›ˆå¹VHåjLù–€ß4Á“ZuQæae8Mƒéiâ>Pÿ„D„MX —’~®Òâ¼ôv4ÐXAß Ç… +U<|>tU¼”­ó ²Òò®Ö³?SNˆ™½‚Žúl´=ÐõQœ»¯ùá~dMÑļãmhÙ˜dŠªœ_'u»x”Y¨b %ih»ø©¬î’Áõ˜5‹®V‰16^Í¿Ý#‹ƒCú½IžŸ¨ÜÊV%K>§PL¢TR¢éÐxUkݶ¦ÑÁ}\Ï7=+/ÙÛ£ŒÂC¨Áº¦ðJ”Vdà<Îÿu³™GÎÙ~^NPóÎ…Ñ`4ð•«9³öÝîð/Y“T~ÆgEAÏÔ5}º%¢üµˆ9XqèL¶îül¦Ì'Kk¶xCºà¬6BRšx‡ +Þ—?4 \PlL‘³Âü” V—ö,@JÖv]0¡ðì„RÎèœéßvz١ﬠS§8÷'èS%ó-g¤‹jfqÀœ‚$UÁÖ…5 –´DÈ­|5»ñÖ­nÏâ¢ÉHznÕæi;i©­®ó ›ˆê¬Â×Añ‡ª¾ÞÊWœ«¶+Jó:ô†0Æ„A£U9p¤öl¢‹#Ô4vv]1jâ8z»;’Ð~Ÿ‚ ¤̹¦Nóœ“2ôŠßg÷$)™¾Db¾|3$9ÔsÇ‚`¶ZaG®îh¤B3ˆû[Ã?н¨^¸£@\²[7)Ü@”€ÛR$Ö[¿bˆ]Nnc,ÇÎOH¬ñ#‡,ªqZØ°YP7=:cèÒ4ÉnݤõLÔ3xU_™Ô?ü=VJÿ©Í¦&é±Öø²ÎØ$÷Nr\K·øðÓ8?(”ª›'ôˆ¯ò»æÏÊ¥ÃJ¾®ÙFê'ŽæÀ8µ§Wåo@÷¾Æ¾î—™s›^p¾t÷!ÎÖ°œj°x¸í·ÖéÂœ.eÂZÍÎ.]Ã' ÍWvØED  -–Ê|cƒ±§‹‘^¾^iêÛŠ8lÈ⯷Ksú6{7Ñáéã´ð$€œ…Œ¾6D¸"‚NªK +¸2’ @GsŒ/´ª,óµBéOÏ_•—ëù,³•§ë2;îÚ~”Gêê°#ÆR““×ßÕÖ—=}gƒ¡!Äê™ØµKééï=¦f¬®ôïh–nëÄôýp˜Xô_Äà87»ª³%úd?¼Fü¬«*šîˆ|«Vv£8SGZêeª¯5MΠa$úd!»BúTJïZõ58wÔ¥Êâ6ê>©5XjG3Í Š®bù€~=¼F¾Rik0ÒúÁÑþHa¿ð½C[¸x0*yè;gáŹF)²2Å´-‡Ámr•u%öÀr›»ôÙ²«A4`"­}w;Q +Òj7e²ØáµÆ»ÈãKr ;Z‹i¬ÙøYp€F=Pðg)³K ã|K¤J¿š%Ï4*…^b̈‰ ŸEd‡·fæÅŸ¿ýàZ ‘6&±!Ñ¢7À~ZuŒÎwxЃWuñcØe¯å¨¤o=¸Ï<…e̸¼ˆÓS CXØ¿ò)/)<Âm›'õ[3ýT%߇ž3Yú÷Š¿èV€’}yóÿ=Ò}#YvÞN›°ElCc»¿-Ÿ²^¥7m#ƃi‡q?Ö2Øþ» Ø,™/ÁÓç1xHcuà·$éEy±0ô4âéj3xÃbZ{Ÿrï‡O]èœ÷Ô­YEÝg¦]éZ3yq7{µEüñÔÌ)cçDLnóZ/Žè›Tà¾û˜a4.IÖÍÙ«ŒòäÔ³nZä*/6ìÜM ð f¶â& ºŒùïnŒ²,*ü*ìÛÈOŸ¡“|[…¶·/î2ý÷|äÜ §Þ_ ?d.†×m½â/ÜчÅ!И¾®"ºP¨F×'/ØûBÇ ! #MËœ8Ùv\ÁŸ¾a ‘¹ß •¬8ê>]bE0ò¿ò,$«·:—©ÁîÛ¥(c™•ß"¨GU¹fí9©CéUÛpBø^ )]tdùÞÖ¬îFHñ£TrÐ4§Vc'"ZºPÆÝ"Éá¹ãX»­†n¾dïÿœæŠn»æ0ð%Du‰ó‰šZdñ4Á"”©™¢úE`«ú¨P²cãÈ ²~þó¡F1%…´úÖ·‡áâÑZ/ wr,uk¤iøÊë2ÃÌCÇmA¸d²^aÔ ‡¡öRÚÿ¿[:@nˆRêSZÕx•D©ŒPá‹vÅànRÕr +‘²‚îWfâÚwÊHC‹×µ>[âBÉô.¶ßµw0?où¨CË‘àÔžELB8òS?žFDtsÚ¿éTnæ+×½éEe¶¤‹ÊÎôJÆC.9œâÐHØ`~¸à$îÊØ;`¡¼|‘-G,é'湿zÐhGoMå´¡á‚ù= yˆ°©·þ˧ÖsÑ;¶VÏ9Ý¡P±íæIªo„Yü8ú}† 1o(EùØÉÁœÇ' +ã5hIõ]3 Ã^å'•qLÚ›ºõÐa‹  ÕwcñÃ}$ˆ7ÿ@.wEžöË¢Qëu—¥Ü ®Õ‹µ¨§Dd~ÆÙ8Ó§ñwmöÀu4åáwè­!ö,Õ¶sJ bÿnV˜Ž_ÊouÿQ>gÝ»bÀä!õ¥ƒ?µÍà¥äÔœáoâ¼~]´êÅl•%Ôd! Ø~iÕºø( Ž>¾m þNF3.­gû2 ’»@Å ä³Ió½º:ø´Á»DzN_êðTš`X©^^ôëág¬Mc›rƒp—•F»|ù„7¢²ßsÂT¢|Óÿ±å ©zHƪ Â1ăá¯00¢¹„qCÞ£·#S–˜åÆ@•ã‰ô`¬êí-¾è‰ú«3ÕŸÄñš¿Á…î°G1?ùßpýÒ+Xý•ö Ézfñi\ä%Æ#[Íl+udzä$ŠkþS)èý-”fÛ©|øˆ] OÔTÙÓJîNd̲¬ÊèØï*Ë<Ý‚Œ*`v×7«zá¡ÁŒŒùéY šuøؤõ?ÂÄò×%·š:$vÐØ×8KòPdµ W>úÔkT‚{ïYC³È= +§†,„eÄƺ.7š0q{sÅÑSKy„“e½WÜ Ç­²1Ó|Q0^—µf=Kúè©÷@=À}&l™/|óôô¶· Qfs5»FÌò8ó<ôÉyì¿ë{2xrÝ7tP´¯É^gžîúl¥d.…AÜ3xé# ]›Ù9ÒMÁƒyÞdŽÙ$sšØå7|Ⱦòtדּ逼:³(3{GÖŠ«’”±ätTäÁ†x¸1kæ;ÉX×Rà N%Ü’|z²: àDßgèô0ã=!…̲ÊŠ¾€5þ_¶€_:4‚|è*T=öþjyr2û›ÒIûÒÃeú%F².Ž÷‘OÞŸ§Što]UrÖÒT?6ö‹Ò>3ʦ•Ì/TCX¡U½+òÄ ú0tÜ’qÎÃ.Ö ÌgnÑIJiNd?sΔA±Í’À`« ¶"/åYa'e^Й%(æ„TZBø›X®×ÍÜ$m*5p°ÑBëNÛ·¤GÚL™f¶F •cÀ™Ø¬Ê9çÙܽ¾Æ/ÜüÞã¹ì8þoŸ´WO°ï¯zkxÇ!xAÓ‡¯o;kPþÆ7_ŒA;ä°% ä1:™º,ó÷¥¿›cz Çò±‡¿” +¾¦ad!¼ôoƒEZ]9z㹄öƒ‡”(âf½Âï’KG±Ž•ŽQ0¶ tIÅv`®60_÷Ä‹8•Ùxã1PÐ÷‹¤wq¾61%Ø÷ö.§}/idåYvK?Þ‹@_c´¹ÓNÑ/®áW§š^îT2Ó¥œÝÅçJú&zÏô2¸ÿ›IÂúè@jNG×±)à:Ž[Þ…ðM¾½suïT…öþ»ƒªëØFRË”Þßæ'–-VŒèK^¾ä×*6Ä¿7aTb­¹Þ¦™”tjýÃ…¹þWV\Ò8vœž¢ÇNÌ[9 +…õ°u•R¼âèWjcÞp«›0¿0 Xq-Ñß•¢yVPRŽñC7XIt†‡“EªõZ£«‰fν˜TFH_Q5YØ°NdâfçèOSPßibØå]Z”€¿¢j¸€‘L‚%èJM‰áïØD³X‖ÜÚ–Æò!ã;î‹r)#sG§ÚwŸ6äÞ⹑ۯº +Õc6Eó‡@›h‡N +&¯cü1ÓWNûêHÞèZìÏŽ,Í9kßO“ê(/c/o6ÍaÕPžßewcW­²•Íˆîù8ÌzâÁ +Q%“? +ËŽN¹h¬|ÇóWò+@Ü4–yŽקËJ,n +ê.¥§FùíÉyÓrÖ›Øt:£iµ°IÁ›£uLÞÇ*­nüOC|e!êU0Âñ@ö7ÈZx§îl«¤Ö¢kÚÈäh†•¶›˜!-´'¢`RcAl•sCmía +endstream +endobj +2243 0 obj +<< +/Length1 1494 +/Length2 2555 /Length3 0 -/Length 20592 ->> -stream -%!PS-AdobeFont-1.0: LMMono8-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 +/Length 4049 +>> +stream +%!PS-AdobeFont-1.0: CMTT8 003.002 +%%Title: CMTT8 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT8. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMMono8-Regular known{/LMMono8-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT8 known{/CMTT8 findfont dup/UniqueID known{dup +/UniqueID get 5000830 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /HZGQIC+CMTT8 def +/FontBBox {-5 -232 545 699 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono8-Regular)readonly def -/FamilyName(LMMono8)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT8.) readonly def +/FullName (CMTT8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -133 def -/UnderlineThickness 61 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /XHVBMR+LMMono8-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 98 /b put @@ -32228,133 +32423,57 @@ dup 114 /r put dup 115 /s put dup 116 /t put readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-456 -320 743 1014}readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿[úKª•LI5Œƒ(¬Ú¶Ÿª>H·Vhg!ÁM8óyiÆ4´óW~Ή\ef5S›ƒDy¼îè ™/ÇÓs©jeX¨Qö²yýsÜC´rny,qš€ÀwʘNó>~ï:Þ„¡Ó98ˆ>Æ0—jìÐõãºE™ Û¸t–†”=ÎøxÌqÚ¡×ÍæsaÐ2Ô… )–cH.#{2­ÐVí°”ñ#ØB¦9Ü;öà‡êT§ðÿO›z9R¸BѹŠ:µ2@)s¼UFìŒÒïÔÕEº’»+¹ÓöŸÑ~`Nc’ŒdÙ`À§XXyÿ¯R1ð×T›ŽuGxei}¯¯'h©YÌ°®ëC·s¤ -E€ˆåψ#†poyL0 !~DðûÍ,ÃîYÀÙJC–Þ}”¦rH6¿ÓŒeN Ó¸l¥HŸñ¸È>·Mtô·Ùn¨cÈð=¤,LØ¡ šÛv~ÉÞž(… v”w¥*B¤@nx̽J 9܇A•&oóĬ‚ßžßIŸdyz„Ézg ªðNž•ÏA¿î -ÿ})/Äþ¹Ñ‘Z=q·´çx -ÞxG~½ýÇÞÕÆ»xzòˆW™…5@CütÕ¾ÞЈTîG©=ظçð’½A¸DÁÅ\g1*mÃaXŒÃç‹ò΃Þf»Rý -žàåqõÎ÷uú`e(Å¡Ž"av‘. œ{‰ÔL¸¤#eå¼ÇÓ(ìvŸKL9’¯ëeÛLHAkά&™õI¡ú§á0Çï¢q\JL›hÞÑ(Y|o=æ£6¦‘[aEáðŒfÄ£àI>8É»{Oæ*dÉofkÒ¢fŸ8V”J:_#w¾’.yŽÿoPxY/Ûð±T‚0RÀ|K¸ °Yk+qœÅHfƺ'/,þá:Üõ¡¿rÌSW÷UÄŽIôtG`㚺ÏÓý -¥Û¦IÄB£î“á6mz ñ|ÝrÍ3|«=5­º#“y.‚ø•E\®!å.³î´Z&f>hn§<¤gØ:Ù7Œ¥SÈЋk4ûóÝŸìH™ŽÔ"ç{¹–¹§ â 1{—Z«ðß›Cp¶Ä1¯(:_H.VO1qáÀä–B7ÙÄ€yÜ?Q:þÙ Z¦„­wÊ7#HyuàEŸÊüA¹yà…õý$_ëþÜ›±DCÿùÉ+H*ÅÁÀBzÒN,™vI F¾l€2«6-eÇJEmZw°Ä8!ðGìãža†gÅž¤™·D¶ÜU]'‰h›í–jÜšÃÐn$Û²Ïûï&v3Y s[íÏç$ Z*1Íðëãì¸êu1köHÃÔeá,ÓaÝH’\¡dÓl«yBŠ/$a–¯ ËJ•Çjj×òžúîfSy‰Ay[%:†Ç1dÀ²ž„Öø®«æ-ŽˆMt“ÅÊäsÉ6Œu‰xNõT …¡­îcõ83Åt!%ÛÅ-ËÀ')o¸ Mó>~61"€í( •¹ Eê"b /§×R}K?Áôr­Ía–æýø/m’£ñ~¡þè Qêéïs[ûG·âEMY ö Íù¥Ü E†Ã™/Å?ÑéiÌâ~Ž¤V¼‘wö0‰xøÜpUñòñ0}øeékñ;Ûóå>QÛE‚…Wè;ê¦ël†-0¬ŠØ›ùhî1!,{h®)TÂ…ÙT¾¹Yá`¶éK­\ûÄS£X(…&2/GÑf'$rˆé¿\ŸDä + 4+„‹c- ˆáH/Y™M®É£Ò‹Ù€ŸîýF˜–FÓJ)AËDcyÙ:„Ú}Þi(0Îê/#/_ðáVƒ ƒi£ÝBâ/XQÒcÌÈØ8«½‘XœõëÅÝ Æ/y涧6q%A¡æJYÑ64¹xºi¦1îzN æÓ>×kö’û"ñ’Ó¼hèuh¨Dî ŽK':Ë]ÏŽkPÔc7aŸ†¯¶7= îkFq{ø¡xâ&n¬Ùµ‘¹/)ið¹t‰¡Ç¹£PŸ—O@Ÿ ¹^wŸ.“å -eƒ©”¸È}RÝkxÉ´iªajØéÁåû>¾ËÕêSþ^mš ë7A3¯sòóÿ4ß{Õ’¨eø´ýIêœ1Ö\Ù§i½Å8j&g7©Mfä³D‘L¿ö„ßa%$ýBSF*×@´Ë`p¡xBwy~ˆÊS©I™cŒeô[W×`èü%]îsû³*ñ‡j‘D á1Eœðû!°üÙòkÚ;Fg»ÖôbE°®ùîrX1Ë»q+ÔC>I+_ß9æ¾Õ_åVz½=™QõQƒÊ ˜G<îwwd2FF…røJl}ý¥Žµu@ô½† -)T`g-Ô€Â9HûÿÎÃé7N]+ÂŒ^é=#fQr¨+lÛ£&M¦‹Ãù —祫Ô'>ÿ©i–jxŸ¢ó}qìtßÞ,~õ³ÅB(ë¤ÒßT=•Eâ øzsQòn™ÎÁËÊK EÛ?Júah·N"a¡°t6-fõª"¦\N…Q:”¾‰BÞÊ/¿o©,ûR£¡ÝaE½ž¾Èñw¨!™Ð§Ñ>ÁÊ,p±—w ÎxÔDöíù„ -‹td\>\–§Ø‰èy¢2·•9f{ƉË(`÷äËèH?ñh† õ¾-YǺ;Þ qÃyWè…ãÔ©AOßëÒUW¸_:ÙKc¸ÀBT®v˜DM06$þ³c  Ÿ3Îä^Ix_ß$¬*]Ö4å7ÒÛbŒ<™Ðë¬Ù‡[Ôô*Ñ& z9àø~zÕüð³êL9שŠ€K›<j -ŸhQÿŸñ þò™.–JÀŽ= ¡|R3ÂËÉ-Ð<ŽÅY|`ÜøEb÷qX¿¾­:¶–‰ÝrµYHÌ 3~!ï\úúdö×¥ÿ¾,Mxß„ ¥‰™?mƒ˜q…툵ÎQÒ)³¾Zýщ¹Ñ(¿ã$Ò´Q4gÝ.Ÿ!Nb_ ÍBH±_œ·íWY.Ëù€h@ ¸jžæwi&2wÝùª®æ+0ÇCôM&¼bD“±ÂMYâ¦õ…XÊ'N@q{{Ô-½·*îTK`WPµì%ãµ fbõ̇¦—âó$ìX°GÕp>‘vÓG7é$-ÙßÔê-¥S*-³ïÐwÙSÈË /»¸^ÈhÔòGwG•"Þáú$9󯘛Ù˳¾ð‚eó×gñç |Çx}T” HÂPð9œÎ¸tŒE×h½(Ö¢þ*A„ÇwŒ§ÁÒXºÄR½‹µDµzÏ/Ÿè>>h›*¶•µT¤J@ßp+E •ËÜ!õŸèž-ÂõõÝt_2=m‰;Q˜ˆŸ¢Uû–` y3Ìåë½ý.h´ì»°ƒ},îX©§Ao×n÷  gŒ°LJYÛ¶MV}åP»߆¾rû©\®­$dØØöÆD¾v™ÿÊs´6Rw•º¥†ƒgýÕ³ºi;»9"¶c¨jÁL¦±Iå*Íu²æ+I*à–m]Öý”ŸX÷‚ÂÏÿ°¸¬d¶zƒ%¿†úBå$³i‘€oáΘjNoñ‚ak›:íc5, r&&©œ¿=8-AjgË“îX×Eÿ€ »•¹sûÞJ×Ø6­!xg#vâ³üæ>¦ƒ‹Ù[}¿='XÐ)þmÁ3jKTØÖâdí‘h5z[j¸˜²_ü -¾ô?ÃÐëÙ& þ -öÛ/”Iƒ±š\B2‚áý -™“kz[66ºLœÓ²gi­¢ LÑÒ´¡6zZ—QÔ_´sý<ò™•aÞ/á×›Ç;ä³”ésŽóâ?w˜™–Í骋&D$¢(¿‰Ábëhêm±PêЀ¹ýÐ|ňö•n¥9øÓÐ2¢4óˆÏA8—0lÚÙr‚¤j|jHõ£yéÝÞ`S -ËýSî#$+LÇQÀˆñ~ÿï×ò[Õ—ŽuW‚J­6¶4Ÿ­£¡ZP Wš_a šP7ˆº»1;üâªÙúA–bÙZWš¾Vfz›uÈ—Þe›ÃŽm¦å‡Â>p$œ26tàaýP¤L½ó‡ûú¥­,´©Gšë2°È2ÿÖàègý¢S¿á­»ðFݧ,lÎ.ÙnúÐÌèx¯•PÖ÷i‹–÷­«Ë™Êk ºCT¯øдâ/å€g5 ÎÁÖ ²Öšº–g>9“8¹ˆ#Nž–ï?A‰ªŽ‰W„¹×D$ÄÝUu1ŽPÕÃ3u–Ýœ®mr8-`¡§S*Áñ3©ãhs&Ov¥–? —àĈ}ï¯^PÅЩO—[Èåyþ”%¥vä¹»Ó…wVÿ „Ü‘F%öÏ!ó œÍyœ$‡[öõlûoÚݔՃÓÖ_VüvÂö)Ó>A uhêÝPû¸‚"ëð¿žøUî愈#À'n"ú@!ÔÝ ,á"gNO ËP4æ`¸éøWÇrøî¹?4‰630þ§ÊÇ;%ª Ý"|˜ÉõΙN¶‘ú8”<~9TÀBy ‹ËtÌáùylª´¿Pojüf¯¸ôîrñoJƒý;o|Èíˆ Ö <†ÓÓ(y¥õHì÷[˜Ȧ–ÂB¿I¾øùém¨G$U‘ maò@S²Õ<þ¹êTH`ÖˆéÍò^˜vŸÚ„ú˜Ú¦)8¶lhÚi±ÂâHÔÙø€Ý—Ç8Qn,^ÍrÓÆ57oˆò‚8â¼4Ñ^]ò•$4ðîèB ö´x÷±y‚¾ÎÕÆi'Çe8ØCJHéƒ ±ÊHâ }Ýb †­Ó¯ªÓô˜ë3õ™©³wJ¥»ìM÷÷d3n¨!fSº/°[ý€ÍôA»YJýºIõ®îúË‹ämäj©ìá6ýáye•p’”̪HŒ7Êïßï]úúÊñ ¢jPŸqinýj¦_èÝÏh–fYG–p|;²û¡]Ýð¾Ï·{«Zjg§ÀίãéUÙRn} d¤Äw4‚¯Œs…ø;”fUáXŠÎLü“š!žÇ§ÛÉDÙd¤ågšª¬È« „Ë»)žÓQÍÌú¡áæÛ - -cü· V?èð‘0î6°ê¶ X#|[ -y¢qííìJ½›yk™+!æYvX‹£àkå嶌˜7‡QLÝYö"Þâ5k”)$%Æ< ØZN¦ß n ©Íçeæ€GKŸ—“uˆŠç„DJˆy³â]ÊÝLu ±’Õò,o|òMç•fi[ä9£7È4ìlŸnÇŽðó¼IbGø<P´ ,Š2ƒì ŒÜî“ÝÍõ½ïµðˆrÇ{ pÁ/|„PÉqoŸ&^vÿö`ÅJÀ1µmðo¨ÁÊñJ(ú¤Þ.“~tG2ãú¶¨±¿PÈ@9À€?ÜW” Ô"«šúã•«ÁÀÎ8½§5zkQ‚‘~aͱO1žßF>Jöø ;XEr¿å礻îÝ$A¸ÉW¶ -à¦9úÖ'{Ö{D&ü¿Ð € Ì’Øy (0ÎBUÍ å}ù©h¸³H‹±Ë5rÊ|**Eï4= ƒºm -Yl½ÏZ–ú2Ù !*ó"%YÚ¿½‘J¼kŸ-Lp¿¾^¹ªs´~|/ã`®yÚË•…kè{Iþ§tÿ‚¾1FA -×7vtÛÍŸ¯¦Ä9µ§™^”½ª K’óRêÙç†!«ÝöžËÃ^r ›/$íåz™Ûõê´r/lö’[3ãÊ#.^À -n^ÇR½Æ¢ëÅj.‚ãÄØZŒ•=4áÃÀc)JPšZ)y&‰qiœÙ¿¬Ê§Éz‚4OgiXËçdì«èJ¾ÑPÁofÒ¯“VóžÃFTÚ”?U÷S0Áºò«« -Â0Ü°(¯šIÞ£GXà@4°ÂU|'77¡b±Ã »µžà˜h6Ÿ}l‰ÉhىϚ1æ¸õ^Év8lBR997ÉÆ2™äV|lÅE™v›/!ʘ\¶M²Õ <ÛNCæÙ_7 ²‚¸0ö-ó|~>äõ±NbÜKF°eæýH,Ý»ÐÑ?ÔºòlVÊ'¸fÇ tȺÛ@ád¨±uÆ®‚Š,2³u! þŽ„åµZ“·3ÕHu”Å -Á¹ŒlUNpZÉ4E“ãHg•ôÎhR‚} 1G½ !»Œw·Eº˜ùåÄsA–µk·ºK;“]{Ÿ†¸Õg°O·¿¦…²¸£>ÀÁ]ó¤€ýÀÆ2Øûu,×Üã\Ò«b‰è¸¨Ën¤;‹µ±={¤ù^Tçn0h¦CÙzA"ü2åt@ôË‘_0Kõü mW@.}yÆë© -ã9¡úàö¹ÊgÖ­0ƒ¬æê0G°ÃœztFD™CRp±{šþ. )åña¨Ý½@‡Ÿt(”Š!ŽÚ†ótÊë¸#vïGìQûQMï»ñõ6¸HÍ_¦…ÅI‘ùåÄsA–µk·ºK;“]{Ÿ†¹ƒã|yžÆ;ÙOõÙ§-ÅeÔì$n‰dù6¶Ù¢RŒ]™Û¼¸wÀÁå“<”ÉçOOøR9‹ -ZQ$¬’Õ±—N‡ÇöóÃüWÊØ…Ÿ3IYçù°¯ŠÔëƒå}€l·Ñ;ÎÇ 9 >¿×Ý­ùEð(Z$Ì9ãáak[^Kg¡åF3¼=—Gà‘xYαWv[¯2MA†íKóé)ß(Ž±¼ÎˆØšÞRã{¶â(uýÕÉÙÝ׼΢¬ñMGá‰P·'ªòBd!ð <`;Ö8'âÕ|ì9ž#œC¡ \/bN¬®îŠ}jr¬ê®!ÏÁzëHOØo_ùC¯³Åî’cký0ân‘ay¢2ÛŒÊÄ6WÙ8üJêꞈªö×+À³gFOÌ„ƒ)¼¾„$ZK^–º" -à\4ÞXaà®…Œ9•žzlþ!Žéì3«ßE¤ú%ÍhAŒ^xýpà?ÞñŠ'ã/ÀÁàûäúÏ•›Wíç$^k!öÌRj)9úûl0£™þÈü×âmçdiG™c»¤‹xyËŸIlä¨Jc¯ºös¸:‰È¾k,Uez^lD©w)_óu`QnÓ¬QÞ×?EvtÝš±ýaR:å¯Ý‹ŠÂ›Ó¸Ý‘Ôš‚îù‰0B5%¦üÆ'·²M*`úDn7cÙxŠÎÂÏîY£?ǽã×™ p"D›vz£©ë.\'ø±fÄœ?CŒäÐã†UÊ u LSÇùÉŸ‰¡åE 1j -„.Œ -wçûVÄ‘{çÕB=¾vúï^eSÍš…,Ž¢t)Í5,1æ_†RͬûM<ùùù9Q$ì—&6 ¡Æ?X•xƒµ×KÿBì6 zÉf 'Ž}ÞÅÆ5iO “ÇŸÖ?`˜3nWÃy9@ñ~y{!‰«o¢ë)÷*Ä'_Ýê6KΦåÙ[ ;ž7ÊÛ•7<°øÀˆó_,¶–Åyoí5•<®äš}¨ìÙ… ïvˆŸ'êZ2x··ZºµÉÞóáeAÒìaB#»9r°Ž§ý2T–™ãXŒë~[™˜Ûõê´r/lö’[3ãÊ#.^ê}µßÏ$P' ·_ü:Ú*›äãr"ëj¡µ&”Y[LÂUlúªñ]êF!Ĥ^ÚîÄ®n€b;l¸«¨Ù·À!¦_ù Ì8ùÄ„=»!áL==ÑyXÒèÑq zÊsÀSm„V¬Î‰Ú‚b¯÷‚Ë%à*ÃZI §4ô&ÔGÍøïÜÁȪ’4Æ@­šûãâªþ—`'±^$ì‹…hɪ@¬xÁg åΈœà´JO\W¶?¶Ï˜FÍ8=8WñÎÿ’¦ggU ê=~r¶Dùþe8 û>ꙂgûQÏBî­{°«w -¨}´Ã@ÐGõÑñ€ä“Ïw“J±vÕ¹Üѹ. °:BuÒýròΈ—ÑëárÆüÖ³ïö' 60¯+Ø—Û<}ÙÓË,J˜äˆøÔ:K²²|ƒŠé„²EæÓb#«—'‘å“—ïiA\jM XäÚ?0-p³›ýbŸ„µôŸ=V]&€²]§óù±µÈä=ƒØØuÑ¥X Eþýò†TP\µÝî,è+íQNÊß®ø¶>@ä'R‡ÊàS”ë4—^bu×o³{1ëv4)i÷/<¹ (_¬r^±zqt•¦¬ßö9(¬rÖ6®–’VÜ‘”AP<™ûÿ4¬å»pæNíï ¢G„¡Û”]£É1 ‘æÒK˧÷oÔ¾{$ŽÙo!M[}°«Áã‡LÝNÙ!F< -8žÉ¢UUï^nÚcIŒ¢P„¸óøòaH‚È…ÁrigΈ Ô;ŠÌù¾¹ý–è®ã˜'ò•²_Kã·Éfq -á(CŠÿµÄ~X'¸mÂœ¤g\E™AEäI‹Ö¶¶º$ÉknÁJ!…ýx¹Oùb…ŠåH—è¹ð ç3hj.ê.P×Ì@96Û^ÿòMK½„Ód†+B}–¬IÒ-U›­'ÓÅe'3Õø1Ó‹wmS+ɯsÍgö³:WÒŠêH‘æ­ô –³RpÇ2Ùž LïË?«B>â-‡a­Ÿè±ñóÎÃ8•r%£ÅgÅ -œ{íçVÍåä;»` ù;ýåå1è)„}p<ÖxÈ4ŽÙM#ª±!DÕ_ÍïÇɨ•Ôè7@M)¿>PqÂÅ +ß®€™˜à¶À,ñ+蜠v@ÖŸe¦õnÀuE«³T3ìßoÜ£lóGy}õ€Ú -Oûò %ß÷†Æ_ÒOÄ0ÇžÔÉcÇ *=á38õ/.r”L|AIÝ–6Ù:[c*À ߓױ#ÝG*þ“êÈí^™IÍI݆̺¿s§"…'%Ž}Ó4œè?—Ó§"áܧ5”©)ÓüUÁ.™…}á3ÿžÁÚä80†´·“7EÖ†nÞ€…,]µo^9¦—ýÙ]ï‹-W>ü,¿·ÄõH¿áic‘P3q'Æ‹œy¤­\‘÷—|ž«â¦€ó+I4§hø’£ÜZ€W¼Ó±¢(Š|¾CiüR¦¢CÔ¬«7™l5A…׃ViXwûýaGÖ¼:N&l—”®­|f·Ÿ»LÀÝð% " -ª×â'c`¬™ÃW‘þEði·”k^±×¥ÏÌWÝÍ®b Á¤[Ÿcƒ/í·Z|<td’ãÛ`w   xÇì±F÷ÐH•[‰z0ë!+`)ꙃ‹¥¨Ž%À=7 l¿Ý9.þ“‚¥p#{M‰Eë0tàÔÒF-Ù 0M˜×\ps(†ïôâ*¯YO¯¢ “Ó‡º* 2G°|Ù¬¦rg¹þ¥›Hx#Ÿ5ıˆÍçÖÒÔädün‚ãòø./ÎFŸuX¼åÁ.¤ÿ(SÈ~±&¨Š'›s a_„¡{¢-ζ CJ:ÊÁ$VPüÄ°ðþAðx1Ø"OP˜¹(¸ -íãöZZÞ¼ŸËÓÃÇàÓ9c“+»Ì^¬±HO¼U¨1â¸(+ís’Ǿ+ai¥/1±Ž•%ëàÖv= "lPÀXÁ/И<;õxŒ†éÒYPºÁ•AŸçÈKúD34ò­ˆžJ># -šoZƒ§Ð­´±š•Ì*þhnUØŽG%|ät#û„m¯Ó)}£GJøU„°T¥ïd[ÆÒ™ØÌÀZ_"þý¶NB·:›€S!8Òü®/,ûHÕO@afP²H9ÐÝ `½ûýÿ¨¨|"RW Q;Krç;5@—šäó§O$¬øyõéÐ$sé^ï3w*ÝkÓ«ÆO(䙵ËØÌB±:±ý†G' ~j¶F§QAÀ}Yaù&öA€-1ùª@ÃÙ 0 IÐóíe¸Œy9 A€;ÒâŠa†ÎØ~Uåï÷‰”!]«Õ HÙÝÌèùæ—¢¦œ`7ÎÑhÿÀ÷—Ó¸m¤t²<¸e qÔî³O6IXØÞYæ{£¶#) °íŠ*V?hÁÂðo0¯¥Wy¦€.-÷Ü4!fw׿‘8)r k£¿ÔGeô4H€j²gX3§!Ñt¦[Qãè© Qšo€ÃݵÛOÿç2d‹BTa˜´ÀoR‰ÁæK¢ÏWé^áú“Ì)™Õ!ån®OGþÁdÑKCÝêoBŽÎ›¦2ἌÏ(•2†¥³OaQ,1~’¨ŸM*ÎRhÿå„"râ1˜<µévÛÛ-§ýS¸ó}₵¶)„ÊW1¬@4£¹©®n½73´‹é0O‚±k5—è®U·ìÜï½ÓJD?&;A£²e•Î*}ª©L* ÿuH7gßå²×ç`Ÿ.[ú{ýš•›²OŸ±‘PŒuÀXøûe9œ¼ÙÉá)PE”²åßqˆÜ}ßM|‚s&³Æ/XÁç)ò$ìûNÀ ïHçål§¯–¹-Æn§=<=ý7Øük?þ„á<¢KîÞˆ»^± -ãMÓ®aòTé4¼)C5P,(Ö&Wgæµw7Lo‰ä¬Ö&Õ2ôõ“:"†·€º+l\TFšã­JQ Ve5½®äpïLÛ¦»/µ1^v {⡨%-¶r×jSò0K§Td;hWÚ»R» óÛ¸‡_ô˜SÉQsÀhU7%«©B?K&ŒX"AÕlÜ® ›Y¥kW´õ7PJ½k¯—ݨ꫸Äè]B?@ý©¯>ûÜPK÷ûG‚páÀã6PâO5>B:’TÜNj^ÀºÂ¶éæ´•À=*Oñõ ÒÝÐí1! j7bŠÇQË$ÆÀÔ›¦ct†?k\H>i#en’J:è±ÈòSNWíæ<?:Y¼ˆ¬õúëÇ$% â×[ÿ¤¬ŽÕŽ4N‘ÙA/4˜Õ;±´ÜÔÏIº7¤®B›y`‡C‹Ù–ìgXê캽Åüî>´T‰,ä)Ãì¨c[z§Od&×q¢ôõ ÑÅÚŒm&‰jA1;*?äµ;-a# &·'vÉè/bô*Ë–$®·‚M[ -é(Ú@sò@¨\y¬9 Fêªè^ ºè·@ejp@Cu`ÎõþgÑ$­¶ õ.N›ÀýÄîE­Ù4w'<%ænÏö;1-k»ú¯«È?ê.f'Â’(¤(ø ’Þdå"p™)6ö¦-±…”Ü.Xƒ -}è¡WTGÌó»j`7 ñŽêÅË5Âqõ -ŸŸ§W“GïýIƒ§¢òXWoîÐÆà¡›ƒ°ýt = ԙð8?ëŠ ¹¸Q5MHË»¶1ÂrŽÉ<î°íé¼mÿõg]n¨˜ðú(ཧ½½ÏzKº¬,Ó—hh4¦º¹nàñçS]·Í{n˜MîIJ{¶7ç~¯HL#ŠbÎÑOb ¦';1a¿-<ãÜ=ôkÿÁ„£Æ¡‚V?¨øö ¢@\›\ÛœkÊgÞzã ècqÜž(‘ÜR]“Óî*¤Cb¡•àx A*`m3ÀsžÛDãPãÍøåiîâ_‰Ç•“}’Wˆ ›×Zõk½âA ²±6­’°ÁuŽ ’QÝLh"o&|¤À霣 u˵«Ú°W"â+Ï8+ø’Çg‰IýäRík:a¡‹ èjwNÊcg"Œë|¨2A°‘P?â°_uy®ôš=O$³Ð óþ }˜žû¼?‰e5ÐÜõ9™*2›0ÂÊsçEQ]û^<Ø¢Ëo0>ý ]…u™}kŠkõHYì¤åöÔ£sȈŠÔL)Ç_Åuå' ýæP×E¨Æáþ Ü"1NŸ(Ï7&QHfõÀQ†õjž9Úö³9€Œ> ¢0äOUD,@S³ -ªËÜÈÛX]íãèEÌ…k`lÁ’‡G‹M!]°w&Ä™Êáø¬÷—q´ä}ê‡3_”*šHŸ°Ñ;äÜðåuL… ¤J@}Ù«qˆÿ¼ãª)ã) -=qXŠ jŽñ -©0Ô`ÀåTª|ÖGš4á·VW´ý¸¯ž=<é_bœQ? PKX0Ú€vsAd‘‚Ε³:ÑaÀ>’ô`^eC5˜ci³`KÁ2­­É,ÛˆŽ{»º»OlM€ˆR|Ú¾Æt±5€£'"¾ý¨Ñê~ ó:Ĺ%Db¤/A U¶õ@'ÁX)cq,}Jß(Cü€š ’‡ðÇ“÷³"1\œ³Ð+p)s˜.CHñL”òÇ.ÅÉ*››}õƒ$®n;cÞ2:nêþ©d³÷”ÿ%;qTL£g{ö—¢nŒ1ƒË‚š´U£Uß¹œ§äKnÚ¿Š»s"Š´ynTë£n‹Á"±C*k©¨¦tÊ-_8úŠôf­*ö~‘ì+KèÇMr§˜ÈÂdºM¤$]5Íψ…rÃÔâð#Çd¶p6^Ùí*Çúk—SÏ(’±ŒÅ„ ä!˜Øf_ˆ¤«òÄrÑ’ù‹©LT¬vtÜùó¯8 Özh¡X¼ãýiÞùep¾©dªMpŠXLJHºHàø¼³†ù*†aÎnB೦ÖÍà=ÛçßÿMÖJ—hrõ›c¿¤E`þõ§ò²2jØæÏ°ÒffyÁ:eáÖ‡+w=~ ´WŽÔs%¢!éÉ;Ä)½Ëäõ*ÅÃbz#Ú²Î-ìSÇ o33”Ëo·B Žº­'!´:4Ž~ƒ‡1П`ëå€&ý§€– l ¸yÔ\àFå#ËšÒÂlû&q·-' ØËYÊ tÅ»žýÔ°Óf{_Ük㣀Sx†öÝÙN”:ÌÍ5‰6†è}äê–>'nòNä<Ö!ì2úƾ+³Ö\K?bˆšó2%oË>§Šž·KK µ¶t° `ôùæíà2Ñ$(€¯ÓžÞøµOàNœ›8€Tå{®fÎDq#ß\CIV¼{¾VÞTˆÀ0lnå‰Âç3¹¿–t,­§pû`Åâ7;$ÔÔvréª -Ç.c„)*.Ða0 ‘ø¯· ,)¼»vÿ¾q€²ãßäZvÑ |ˆôþÛûyOÓînË?‹YSy šê¶n÷Y\ï„1Q—>©½èûƒG0ážFÆøpõÚr©u”_»dûÄòX‰ÌÍ„ã6œóJQ YAø3çe ¿áFÉâµ2CŸi÷%ªEõ#t»ûöHQ0RX‡[Š±½ÂêY£Ô«ùFUñMï´íð’²5Ãñ¥83ÞêC¾U&šúñŠzŠn×!òo—Z9æÝP¢fГZ>?@ÌM—ˆÀãËVdÆ ŽRJým§†ÖqB!Dîrr~|Æ BÛÂ`£xßã -”DïUHçº!ä¡÷1<“™8´þžšÓeËS籉kðªÓw÷ô3/º\ 5cž„—› „,öàá~º#RÞ)K†ë _Ę̞,ŸWïˆG†ÈÝÇð¡Ò±–zÍÀ.L…‘!`lr?Ö¢ÃCûÖl÷nw;hØ˯Ô%3¬˜-÷B'Ìj=ˆ:]ê°¡ÜH‰ÿºÊ|KKôG8”‡ç!\ü -*ÍÕ£“;÷µ—t‡Ì·ú,p‹MÜé«JúY w®eŠ<Ú¥!Š:KaÛØ}W&„®/s˜)K1‘µî]¹FÏn½…‰Šä‘äpùœ4úhxW,[ëýÝ€—ã’ õlÙÉ÷_º’«Ôz^ñŒ:C¹·£Ñïsvóè•_˜¶ëOƒ­YªÿÎ̳j£^ѹ„†#ÛQÑ-Ì_æ®;‰ø~_V-_ªÞká†d!BÀy$"Š‰àdY³šŽ¹†‚? Á¼æj)(˜óÛfD†Så6£Ø“†áCQR4Ê_Ž/ŽB«ü—à€|õÀ~OÅ©Ï-$_ <²ÂÿÝ]:ZðfïSän¥Ôgs†¿ÿtÈ>ÚVÑÑæ¬,}`½Ïö©WæÕÏ™Q©Ç*'Œ[¨s öLœ>ÿà.{#1­SûŠq‰&EƒV bn«d$ă;tým‘/i6@SZ1¦½œ3ùCp\jx;4»o#0Ñ?NGùkaºˆé•Dá ‘Š°½Ê”Ľқ=j÷É6]ßKmyp<¢ê -’âµò^wf#÷7 ÐŽá"Ú -ƒ³l’ªZ¸K²Å=¿i@ä™UÃ3ðÊq„á%Dn\Ë2[ùCÃ×ó-IeWD¦±d7¶ºA?„jˆ{ѳ¸žïsV_= )ƳÁÃûK%•mŽ3{ ðmî.€èò‹hJ"D“òò¡°Ñ?Ý÷æG®(²¶iÝ¢žwùAžN˜fgRìûäbáG€ ‰óÐw&j9³OK?€LfÉ9 ÙURÚ›ê§ç L \³€~ú¿Üùø6ÑCm¶Ø¡'—˨––ÃìdT2‘¤–h‡†}ÓÔŸ_1° JØêîWaµ5YWÌ€2N…’]>Ì™*®{mãX$L+¢U3E®†~Ã)d|RlaLXÖ­vhÀ}LE#´QÄ>µ˜ecá¡IŒ9@¹E‹·µøœÖ–º”wÖ)ó¨-HÊ‚šábàá‹"WŸôæŽÚ‚›L‚5†Å«~ý#Êél”² -âñÑGª¶鈜£Ó}º=´1£f(ÓqÂÑX¡ºeÈÒÔ|êP.~Ö®$ÁQ®è° ØâœÄ`¼ûçsƒ«ˆI :ee‚˳Ÿí¥ö†=F€N9r©¡ñVìC/ïhSúQ¯ÔSÞ ‹@¤Y+À"m$µP6N©É%s‡C ­Ô¬ÍÈðfÄÖáQ¬¥¸!ÇKä¡ž†"›ü¿½³C£ö è½¥’NÝ—Û²mb…ðyfÓ=ê;éÓfÌ©öyC߉?,¼Ó«aÅ”hd¡ÀëS–ßÞ™o;Š.'º‡"½ÑŸ‰‰t ¿‰V ˜þÕŸ ŠWéFJ+V> rÍØZtcP.د¯Å}Ý‹þ=ŸÌn‘ZfëNŠÞøü]'1ÈAs¤››É¤h -& vòXØÈhÚz -j/c5~„:¤Ò§ÜD«°™üäÚe¥üôLÞÍ«W‰K?óä_ÑîF7]Žš@òU!ÝÒ’ÀÕ9êÇ‚¼?aTzøÌ¿ 'öç!}·ˆƒî ªºöñÇó6õ—Ò!„¥S·£®÷š£ôÅÿ„¨’|ÜUˆ±ªÞ–€IŸy2Õò»Ê,0Bò-ëq5«‘Þa)¦¯tþ ¶=&Âýõ{¾ª¢Û}‰Â(xzu¡öå­”JY ÓšÂ4`WFc~—ø˜[h#¼•P -¡q0ȯ‹¾cÖ±ÌÞBQç6æ±ËÐuAB`¢¯ù[rJ`ñ|ðVúûé壪XÜòwbM|ã|ïdx†' -W6ÚX”A@?ã†ß¬"G¾ JˆSRÇ ìô\¼£ýÞ¡Èbɽâ±R„+øþE#Zâ9§Ï¶Ö˯·fuL‰4ù«s‰0ëqaEZ ¬‹²·'HÐí?ºBÈ6±ÿò|¶jèú|jþò”´&…ñ…y$–žŽ³fª)ŸÆqx»Å~¶só‡0âÂŒÚKx÷ˆÏÙ!ÒQØIíÄAÿ0Z¾oôÝ‘:¾â‹úàêãªFůnù./ÎFŸuX¼åÁ.¤ù}dVû¡²_+Á!ÏŸOV‡Î?¾r™!ÆmsÓ¨K ƒ2À«“Âý³ýLAÈLf‹å+•ìÏšk¥Ó ë j߀ùs’HªR¡ò<4äÓª†&`=jÕ„é$ÖyþlxêCø˸v3crW¿´Þh‘~-›ø|øëHÇGŒa´>ïÀêå’C—[Õ)ÕÚºê†Ö‹tŸRÓ0ŒWsK9àýí¨H¦;|­~éj Á­ˆœ·…™?Z§J†xJ°ËX/Ä?iÛm‡¬LcYŒËéeô‘œ;¿Á…k§{E1óT] -lRgÍúæÚ‰žÜuVË´Çf¢ÒA­/žkòØN¶0Õ)a D3Ž h ÁñÈ »nìåÆZRª>Ð~«6²ÇÈ©t è—aé˜8È ÄN¦–€xo’a×~æ³$ºáRÒš{_ÅñtUFØáˆaÑfÅÒ1:ƒÕ_¶ -R„â&…íËZðnàÍ—Þˆ'€:cŠäpüf±¯qMá‡ô_‹E«rùvµe¼ -v - æh#)xÑüF­@aý²W.ÔîxÒM¬ô¶¬E æ®ËH£HÄ-y$€­$J–ËÞïp:¥€‹þ"p3qú| G©lÄAœŠÁ·£œ»ãç] \tš'¾XNR€\bªW×rÈàò£08•É&©9 Z,ÒcÇwåô Ø@Q1k¬7n¿÷Îi†«½Ôï øÒt¥· KWòG4 4aëµ0D>šìI©L‚îßcBG˜ACÃÚd¸µÍ¥ÖåY{Âë÷æÕdÖ1A±í æÿÑØ,äЄ5.—ð‘`ܨÐÑê%‘ÌíkC¶pRÍÓÙ™RpÄyÞšOkR ÔëgçálêB½€Ïˆ§ÝTñ.2Þ†fX Ü éû©ê­ aXèáX1_í©M×;n{B>)Š¨ž¤ÇûI\óg`ÑÊZVË~³—Ë'ý ï†DG‘Móí,q—S»íœC[î£Úµþmí.»ÊÆ‚ /D€ÇΫËs.€yN§tÊÒì¤XÕŠÛj±TÚç’è…S¨ewªV½âÄý3ëP*Ò†…}Ö}‰ŽS8Â:àã(ÔýÅÂèe,Y!])Žö0_ýüfx7k£*»Ó˜A® ¯Â)½ª¼Ç¡Ïèø\ÍÍ#é&Ë]RÝ7ÎQ&dÂ[,à†q>9d7ÓzWƒÛ*¤ømðm÷j"QÇyÛðdŸÒoÐ^±jwŽNئ–§Ü3"Õw„¿©ÜZ‚¶bÀ¡VjxVL›·öfÏ®þ.¼x€OmÚz[÷íÃlxã ÌÎNë§Zå É/_ooxj 1k™/T}é7/î ¾@Tcý&q6_ý5|ÚÁÛ+×£–.„r‘8dv±lhéwÊPQ=¨Eé5U% -A!Ða¡C¥”ò20CÆ^çèKæPG¦g4˜`Y®„Á†º=ߊ=¦&{²rAMF‘/˜æ¨‘åßæ"úçñ;UÂó Xʵí¸CKqJ:ø$Ió൚°i:k‘Ã}À ˆ¼Áù¡ ß…½DÊ<„B(ªgj÷5épMnãü”:£-.\6þS ¿-8è´’‡¡ØèÍnó%ܪ i· “á ÓeøvÚƒ¶FÓ]¡ûJ£Ž¥^Xõœ7MÆ­J¨±%ôˆŠdyÛöi¼*»DbƒZÎà(ñKhR§6;B¸¯seh:ž¬@Õ›™fl[ã,Ç"ç!'ñ?3­Î|[ó°z¢´Y¸³ü*áæ¯]+­Ã~KŠqJ&‰rÍáÇ&ô÷`Y±v:ó/Ÿm‰ˆp ˆÖ(M§ù£·þ_~Öâh´Ac´é*ð¹?% -`§• 99Ýw s`¨|cs•ë”8†T¹öPgÃÄ‘Ì£¸Ü7çÇÀÊMµÃ™?èÁÄ©'[Dº=An^N6ÙÅü 3·ª Fó£þ,1£ªÜç?_½„VåS¯qŽ ö¬oLæ cÔxÛÙÑùëiY±Ó£—fQÌ\™LÁ¼'äQ=Â-JmIð RV›}§÷(/½9„"õ-×Ôñ™»ØtÝD-g×+JŒ3,ˆãƒ$»ÒÔ.2S)tÛ`¶°Dåëv)’€eñH^Ny*àc<3Èä‚6À¦ؘÅqbQ—«pJÙ Åÿ<¹ÓÄ Äö£Íð ÛÑDÎö1Q»b»>’´„þ‡æ[-Þø¾úRè«SDè'–8 #ÎF_ýdœ<…µ7†ÿ#»0B—Soep°\ ÏÉJËîŠ+V;ʵ{Å¿˜±[жâýYòï°í[š?ù{3?Âáwx2‰ •oÊ^Ålƒö½]¤ñNvÄXxŽl(öDµ´}¬è&-â¨3C÷tMI2û_ÆÏšT }];»žÍîÑ çkÅUÆ1­­8÷lzÌæ£+±7HÉûE€[adô'X½ÒÈÌ-2¨g8üL.z:D8ÑÑkÅSú¢l™± •}«,»¸¨| 9Äøy¿×>Y3 6y4ZÜQX }tÉœ›â¶»8Sšå¶L>àªPm²‹Sèhù·øXÆl¦ ø ƒw~ ¦vÁÓ"9ûYzû†{µ]9÷O™“Ptµµ£G ¥óCa®TÍI|IH”ö¿í ª¥Â˜3ø•‰üé:Â8(Œ{¾ ‚Þ3ú‡¨=«ž#0m åðÏEãO>goW‰.{„éñ„!H> ”ÉšÓ泫 ìlB•øÿ‡à{¬ØE4ÜÓi¼eIØÐ%–Þ”<zRáâO¾QŽ.¥.AƒóZ½ð]# ôI›;“ÿ–‚ö‡4>öIÜ;õV¦2Ñ ;ÓÉ¥x™j¯•{–<žÚÒ±Kº˜”QØñô;_,“ãÞM!xÜHK€  ^i|yýÈ?e°æ¿zbûl/r§ëµæ[81,ðôÿ)Ô=ãBŽgö±ìÑ -nvµå!™ü®þ{¸«ÂÌT:À+[›,‹á©Œ-TåÀ2½°´jõǪq\P+½Ç>@ô`íC+ýÛ/¾*>D¾~ø8Ç‚¥þùDfŸDJ¯—¼¦ø›Ñ}S&†#8V-9dGÅó;T’Õóy_13R(qŠ³é#:eŠímxD´p”þ¢[ýš(L‰ß­µq“71Û,Ö‘·ƒR<…_Cm4í·me;DïÆ—f"MƒF0Îã±{2r+5ÌɹîËÙ×\%±Þ‡µGÖW¹9ΙKÔ—ã£Ü¼*å@žzõÂÆE$¯o× -¼—MgÝŸªÓŠF{K¬<—‘½¢üa ùŒHžGÑ峟€ ´m6ênêªñÇðTÌÝX­9¼™Úí¸ðYTºå‘‡Twu“g“JÿÚåÒ ^ž}­Š<x1ôg"cÃVb™ÞÿTv)‘ -ç«#8‰|¡ö’¸¯þ¦ç -ˆDn—µª¨¤j²Ì úöúªŸ´ARX‚ü’;éx‚ÏKé;#xò–•ŒCbˤœÔókÛ7L*­ª$Hošƒ¡›.£`+©¾£@ô´TÎ"ï`yÝÐõ!PkÊ5/ê@ÓÕèIq!èg(ˆ`X(ªØÆ’æÙ†º‘ ®7ž0€OPÂß(p£oVÞ¹šÄÆ ´i¬,,ÜAWFY5¶…¥£÷<Ü­e¾qŒr¨@ÅÖaàØÝüèñ/ˆ^!ôÍñOý¢N„ò/Ù$¼OuQ&_ªKЗ^é[2TêuHËÁÕH©5öM+È™ãwÚˆÓa³SË5£‹â †‘&H|Á'É#¹/zŸÂæè¿õ’f|ÎG· 5*PêIJhŽøé²Vƒ÷¢ýÞ¶ÛÕ´©Š´£~ã@ÚïÒ‡FÔBð#À¶„8.ïneôÅâ…$¨nVŒ§”r¾Ê]PD#¦„ßtJ°®ØÌ-yk¦Ê“1üöy‡ByûC¸wõ$¶ë‘ª§ ­@ö¯†¾—øØü"£òE%~ø#K",ŸWoÔ,0ÑÓî'ü'ÿN Rc˜³ØÞ¿UWL‘|ò ®yÊò²sûVj$S+´‰}ï™Z{&ŸYT#“ì­dŒôÙc4æü†n< F>¡ü±A$øûV§Õl„†ÆV)8/¾˜Y€™ï4…•ƒ–“àÍ™@o¾"ë”vh0”U¥Yu^¢q¦ÂÀàVÉ>‹ÑêÞ‰€m·Ä½¸„fßÀÙ¬%††”&¾YèÄêKåëd®w{•ùÉn7¦ ´]"=¸²ß8C²› ò5;EY¢. âW¾’LÔgØêÿ¢•ÓôAs -?KžÀÁ–]^´²¹ð¦]R4Ü=¶»/òŠ7ÇÍg7;q&z Ïzy¹ËµæÝm[ï&ÏqàüÔJw ”ö1²=°)oî•63ñ?jåÌPx“Æ­®©7%J' -m@¬u>…Òé·æKV.ö {s¡ù$»¸Ðé3ÙµoÖRC²Êaòs3”Kã$"{èO#fΤ¬S9ì’ek/ÝÑŽ8½Àõ¸ñ7Æ£ÞHÁ­¿îÁ¦ rWLX`²‘ãœïá0O·ÜëÓp -endstream -endobj -2228 0 obj -<< -/Length1 2566 -/Length2 25126 +ÙÖoc;„j²„¼ø°Aw-åÎ24 ÆòŠôWäEvçQ‚C<ùó3£‹ØAÀÔæ‹ùàë2¨ÿ·kX0k^ß|™‹:Ù´¼fbã,|Ð=úësLu2æK¿¿Z`3ndgï¸RÈwô@Ó),qñåÕœéG<&¸®÷­hï'¶ì. ΋883 „½Aœ½®B±AÓÔ¾I$sò@Îí“Féù™ÅË25âÆÚª,iá™êê pKôœê>˜èÂ6K`Ð Ó%äÂEû(‚ô¼„(bsÌP’ù,‰‚…³âW‹K¼T"0KDǯæ¯Ò–Š›¤‹kIU–ܨf/+WN/ƒÐr’±Ú4÷¨½qðÕW@À¹d³­ÌO ŽÅá¦G|Babhyè52+ÙÌ2›¿up·a²,-ôIÅ"‰³ðü±ŸMC㉮à0×’v\’›ÝàäG’‰\¯% ØŠZ\+;í7t›‹ÊaßmŒJsX÷€Œ´Pcû0ÛNqËL¬ÌÙÄì%®‚tãW‡tåį,ëœ×Çñ ‹);âbÈë»õõ&L¸î}NœÖ²òGÒi$ß²:[´<+s\6qõG•úq° Ô±%E~@‹kÖ´ðøÉÖÎþ„÷[iYKÆq[Ž‡× Pvø£brÒÔ~ÍÇã™Æà1zŽ¼6‚ð>)廄¾\û¯o¶xob÷Bi€n\!¸[ï(;¼"0¸¾ª:È÷7w…Ð yqMom¥D‰$cºqÎKRXr šÿÁc¶À3–m¢½ƒ‘œx]Ï€¦òï†â‚F†Ð…»í4_~nµ} VìF¤çuM;¹²[¹©)(6!^c«0Ü?;´´ïÜmÖXþ¯æBö󈊄±èÐ<ür#£ƒæ5ªö\ÇÖýAµÎçþÝzñ­‰¢ÄÝ!»±C`0î~°îȾÆUt[¡ijÛÏÖAsÞÅТ3X¥ñº´‘ûh‹ ŸQ‹;l:²´†hAßyÑPñw¢Š_R˜4žEwv½a¿XåäI› Íf£ö”JÀ{‰ï“ùþc +©šû“ÓTƒXЂ¯?6ß_×ãe—–?[=‰Ük³§ºDÅC³ÌàDר-'íÜþ¶Þ¥²_:mȹw‡à¬i)EÝ +É!Ã.¬â(’4G¶Å×gÿÐMwùÀÜŠeŸªãoðtn“¹Eí§Êy¡xÕ<ý¼PqÝ;AÌ÷Üâê >OÍÈ8‚}y•€f€2r¹ÏÇD§˜Õ’ù%Æs¾}w`À ÛÓ°ß’Ö/3x”Œ®‡Á6& ¨?ügçÙ‰¦óÊ.Ö\YEIIö~Å:Iß`àÔ‰ôŽž—Òµläæ±WI1‚{6oy"˜®Þ¤ûüW[ Í—¢#@xsä*¨·å®“dæÎ4]'oK·è›%~%j¼Ã{ž|FA1¨àà´@Æ*z}òÔ\1±ì3©¤%ÑÍuÖ}jyÌ<=í/Þ ê6l§@CC³À \+ýÄFè!} †kåŠ9ÓI ”F _’›îW˜ùÚª+Ìš~Ø"'K²È["ŞР˜öººß4§³±]#)Ÿ±¥»ý l'ª¹iÓ¥Úì¡åj§I:]Ïe± '®{—°½åͲ™}ÃÏÙÀŸïü¶Ù|€+¾ÁÙn­ Ð³Î™Yçòé0ܬªs¦d¨u¦;?äDz~Å!À3È·gÒÎǯ^@œ³¼Üe¥Ã×xƒ¯òÔVa؉ýåH±aÄŽqO*K{ŸÚà¼Ú‰¼ó Ð%½8;'FJŠ`‰K¼»!-%l•ëR,áܽ†x!öòÅz¤÷á ‡óóCêB!ê1¾ß@÷¾ãùÍ K¾=\ßߪðb•(m¿Å4ôwÇPòZh6?@„L½C@²äÊ8uwç1ÆrÇ¿è¶ù©Ì$ïÊBóKÅ„ÂØ +&Ì¡‰ç·Y5<1B îdlaà;À«9^¿'l„Hn,³ÛúºW˜÷ƒ{ÐÊY³µ¬Ô[œvñ +endstream +endobj +2245 0 obj +<< +/Length1 2299 +/Length2 13894 /Length3 0 -/Length 27692 ->> -stream -%!PS-AdobeFont-1.0: LMMono9-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 +/Length 16193 +>> +stream +%!PS-AdobeFont-1.0: CMTT9 003.002 +%%Title: CMTT9 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT9. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMMono9-Regular known{/LMMono9-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup +/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /RQJPKO+CMTT9 def +/FontBBox {-6 -233 542 698 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono9-Regular)readonly def -/FamilyName(LMMono9)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def +/FullName (CMTT9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -150 def -/UnderlineThickness 67 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /TWMFXI+LMMono9-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 68 /D put @@ -32399,7 +32518,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 39 /quotesingle put +dup 13 /quotesingle put dup 114 /r put dup 115 /s put dup 59 /semicolon put @@ -32416,255 +32535,172 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» +ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ +}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¦Œß=מ0).ØnÁ¢ðBd^ö/¥!2-G×+~ò¦bÑ7³ Nø&lƒþdsõ˜á%o5·ð3N¸ûÍÐP±c9îU,”Y뱂0L²¿öç±Ê+OAÁd<¹Pgqíê‚!i\žhßx¤;B+üµX¹&ÜŸ)o²™ +û­¾aIñ`¥¦Aï.ËÁ…o_Å Ò‚«d™]Ùì©@s—p!ÃÛ×—;¿ù¿+üàî c¨M›)U *m¥žÁÒ‘¢4+o$¢U´ƒEc”E*­ü_G +‘õÊd.¬»U£Ó9ÏøöÚ¥#˜]æ8! —S}/a—§»¤«é"ÈöÒ48EV< >™N;œ¶ÓžÜåö½[9Ë“!¥"¤k_‹Ó†$RÑÓbÕ˜ÑgÅó ÉuŽx¨ÓVMhìÔL$3P˜ÛíÒÙy»5œ¬,¿o"Ð7'ˆçº*íE¤„<±ZÿÓé§c»ñªÍb8r$`FÀäÞ§/±úröôí¼…ÝøÂ]€“:BõóåI\$~—=Ô‘¢´ê€Ïˆƒ·¢Ž˜ÙËøȜȿ!äê–²Á±QÀ´S*_LÎyäXÊg*½!#B;Fdyú9 vF.ºxÂ&WÜ€ÏçÒc‰K[Òé¾­újô­ +ƒÜñ ²ßTœ-hj¸˜ÔÀ’:Ö²êÌbcÅÓ¢xù~Ðgk0š^£Z–]Ψ´&Œ33gŒñ3æêwm2÷ÀŽpBŒœIÌ€‰:~q¬Fà邉u<Ý^ðIE=Ï*ÑJÐ.­Zw†Òcî3Ö8ìY±Ö.1jKAs;¹¥ðÄ»Ž÷`ÎR^ÔyCQ4y»ˆŽÞÈå ¶Ç&{uðQgF +Ð¥vl²P¡ï¸©°¢ÌÁÀ +ÊeçÄ=Gylw +x]v¤ºŠ£&ú¿o9f·ÚiQ¼p´ÂÅÞÑymQÔrijËFÛ\ÍÀUBuª :sé燭™„Çy7ë䢼R'åT½‰»…ÐÐ{crœ/ðbìŠzfuÌyõ¸ÞÆ-_KýhÚ~ž sö‘£¬¸Ó­>a(—z•–‹fz!#ý¦…vÝZu¼ßZæ"VÃUEÉŸúw­øý-ô@»ã é¶Ùi äûaI+˜ RêÌ¿±P–ÿ¦¾;X¼C 6e½ë›À+îj‰e×Ê[µÀ7ñö-^j’¢â[ïÚ +g‰Ž°9‹‰3­ ØÃ…ÆD©Á’ùˆ‰ c% ±¸Ø™Ûy¯JC=©zê”íÒ[t v™™”Ê©>‚VæÅ3¨m™ÿ®9Á‚ð=Wp¦ˆ+ãlÖÁnׇ3g ¨#7Æ:ÊQÁ@µP~Ò-ìu@Ó±DïV\sS©’;þx; +ƒJ®¬Ï ®'p—ò +ºy?Ìþ^CÉõòùI ¶$HGY tÓ` „é\ÛLœj%ýf¬œÎxÇéìS›ÚŒrìÝܾ¨0þ;=žl;°äÀ MÑI>o Céµ" + mÆÞ³»ôªI•^:ÊO|¿u.^âÑNçuóœwb`ìÑ9º5>²¤øÞdJJ… °Äð0íôóX¦ðÉpöŸ[ÎtóÝàÉuè^%ئò`'õ +0T¡ I{ …6j=¡úÌwŠØ ɽ¥¿Ú‰»ËÅ7†øȘý¾ÏÛìÅùÚ:{ú¦©õŸº‡?lH´¼™)ò—ç8O®f¤¢mXn,Š³˜Ëß— Pš½iiþØÉ]X&•íBûx{˜5ǬfE¾ˆÞ®¾DtàçzÖ9nËy¡B…ÅÄ ›ãt+ ä4ŒˆþÊ, p×$¢@x&ý|ïĨ4H~4îŒJ7¨B‚àš<¢›Ð«C±ÉPæÐœÁ}uzèÂ|÷gÃr-š: èuäó¡ôà[ÃDè\; } ±bUûIS{™É27Ú=ñ©Òì FB›k„Þ' +¦ç€ ‡.~"ÄÈôätŸíOz-3RûŠæÙ·ZÍ[——‘“&ÒãÉhDþ÷|°AQßGCH :\'Š¸`aуã2¹ö{=o >uÐ&Ž0ý¹ß»”;e†®01]VÎÅ2c¨ø¤œŽ³`š †“CÄJ1/ŸÑL¯Wþ ˜Yckɲ¤¤‰Ð õÃ}c§8ÚLC|¨±Ågƒ%¼Y«9.Œ‘òµ?›óš»e‰²Ð+€‚ÕÃPÒöïI4,}# yE؇™ö]%TÌ>ÌýƒðÚ},ÁS ¤!*Á.ó¤ “˜v˜tåÐ7†÷ó[O·£Â±Rø«Y¶‡†Éìõ–SœSÔª5Õžl+>ÍŽ¼±¸l6¯åU®Yºï©'­¨ù_¢p%ï=°ü]^:k2 Åb¿3Ò²vu\þƒ—k!š†®çnúõ2Ì‹ƒ@Q‘*vÑ}Ô5z3màØšò/Æõ¨¯³¬Ÿ´_‰ó~¿éÐGfðG쪑“4”‚,¥­‹ê=¦5ûø%¡Ú¹]äEHŠfnÉÛ€x‹ÆR´òúŸL/'¹ 7.œ·ãñe÷Ͻ§„¯‡‡aÒG}å…èÂr²¡ +~÷) «]<$•ð¯2uµ¤<ýv<ò×NP|¢AÈüGk¤Ì .PY­ÆÑÓO;¨»½BRœ)­©o¬éVê°ÃðSþæ<Ä‚˜;aÅQ1Œuz0ˆKÄ%RÉvng;‘{®võk«ÅîÐä~؉nË^…‰À8@Þ»ªYö·Õ¸(Ø®xðÙ•(tÇ&XYò-»­7*«ò0ïx“)ÌEîtC¿w;ga"15Ä][f³l. àèZæ¤ÌIbŽgÕswàT&«©¦Z̸ý)D…H­†tªe ¶Ì6¢¸ ~Â5÷׶?œØ® ´ÏÇûáÁÂßkˆä…r.)¶•l´ö¡•Èx_²?ˆQ­WÑ32…š(l¨ãë ŠæÑ|O×b-F–çÑ].–®RPD”<Ô±ãDûOàD¸›]D®ÂL=/å™È¢ÀõÁKîÇõ­°¤`ÖàÉFƒgQ_ÊI +ânûqP¯»º·«_(˜gØGK&mĺt¸zÂéü­_ªo ×`4§z4¤-71kïds•w¨\x ZŸ’8´ éy\™šR¶¢ßÒìðÏlÌ@Ô€Û›…óÜæµ´$¨¯ðÍ#‹ÉÂa'·{Ô‚i³~KljÑåVBîñî“zU´/X1 S¡äq=¸þh&7uó«GôV¨èA_ÔÁ3ÄMüùâá~Â^…›tæ0‡²G&<ÇÈûÔו}Òðøh޵Ëäú0„ɤcÙÒ°ë•>„¶ô‘o6ˆ½)ß{QB”¬X[#ÞCÄI3jƒþeó’ˆ/N€ŸºUX+¤ëÖ`‡è‘"ŠP[\ûàƒºäAXºa|i¤–” Hn­k¹,· Ó? ‘J_y3^ÂcÍø}|at½ ü<â;1v’@¡Þ{EÒ¬«ÈË š¢Á/šEì7+?`µÔ+7ÂTԘɈ/¢Ÿ~£2’¢Fe匊·I›ó5)S®XÙvNŠ´eƒœ“…È BÒ®¿my‰Ä_1Ö4tüÅñí ÷Ôl—0w–ÿ +3Kq +TâùÜÏ­ÌÃ\¬Ó¼zlª‡]%b¥pýgÜ7G)½tâ°[àV‰ÑN¡¾Øþ~ÇO^¦‡˜çŒÔ v`Š«üv`чm +ňX h¸¨ý—>r±¿:ƒ9e1SôNCìà$cæØø% ‰Ìõ$¦,T¡M2ŠÏCOÝüV¡eŸ=•øÇS7áu£•_„{xœ •Ú$ì:#Zòi¾1ʇªlœ y ö^|Qûž¡°Lψc¿&ÐHn’)Ü ϨÊùÈ|heÃÝ À}ñ›IøºMÏô¢Ç•WÕð*+-Z¬ëß,dÞªyf¡¨mvÔ›]t þ;`Úo´Ø]”ŠWH¬°íàYÝ}'PN`ºSuBf$,ïÕ•ÓLöÔäó·=úwm³0mVÔå –l™ ˆTOnt£6×M"X˃ãöq¼åDŽf0Êms9?Äžš_šæmnH`ãA…A×mÒšº +ÖÜ­“a’èŒîjfnÌUØÛ™ŒÃCž›¹a£t·/ŒÜçÄæ½òvÛÜ×ßÚPqE$NP^_Ù…‚dùèv±¸ö§"TŸC[ þ¿|¨½¦wÒ1|7ô—B%Óÿ¶èf‚£W­"dÀá6QIa½÷Ò†ÅE.á<¾SiœùÁ—Õ™)Õ+µž Ì%ÐÅY`; —Š®5!‡KoLS»—NÕ’öhPhäDðÚ¶R‘™-¾„®¹Sòéæ‹„ç»? ò¦åÕ¤S8ûŠ!ª—,ÊÏ „«vÏN²[¼ `É"Baæ’Â5ÖÂ#ŽdwºéW%Yl‰¾~:/´‚>®Z¨;eÔFÁ{N# {Òí}Ê?7yøg +˜hS·…¢ à`tZ¦" *èQC&KsulÊÔJ·š|6×iÞ$rˆEÖFXggξß&vÊÈH_I«¦)³ÇÝLRá*Ž±·QÂgÉX¯ušV,Ð’"ª%_©L΄¤"4vܹ¥ÂÙ©v€Ã»ZÇõ! +åÕÌîûßY@øLŠ‰{Ìvߺ‘+‹ÎN*Y“Ë+qi]øî/^L)㊴Š’myß1=óˆ‡K굎 ™¯~{iµt{ÒnÚ?'†‡2²d,µä½›ÎÐrˆît‘ß³É÷”ö-¼FÜ…­¦Š¤ˆFl L y‰fÆæF?Mè€_¢‚Ý*aÁ–Œ¹ØÄÁ5ÕºäÓ½•ÂŒ!»¬‰£d§ 2‹ãΛiú¨w/"Ï;qfWò"Ž—^®ã0$go„ï¯aWó¡vêm.üÍ¢BÛÀ/c@ž{:¿d"€Aú·vÏø]P}Cð*&kxÊ;ô¡k€6܆ÒxɃ%ºÕ ^X2ÑLŒg]¡’øó…ÌVm¯·­¦Mhx÷äŸP&ï(Ð{Ÿæò‚gû¢Ð^Ö£Èý ĤԒË|í±º(ìdkÈå¿ì/¡ÎܺH€Ô”qÏJ'w¬Bî£t®½§€—žgOÝ`O± ¥ßcÔô¹“ ®\œK*ó/˜Íû´®¸™¼g²9Zö<0väB‘·ôWK=—äQ‘]a9<ÏÀV<-­Meb^|Þ€£q£À"Ä^ÏÌ×&l |ésêgiÿÑQ=¶ÀéõrÓå m[Ò:rL(Ó¸ó…„aXÂœšÃIlµ«eŠøÓý€wƽÑ?Z®Nm‚CU†´úØ ü‘Ö•;l€Àc;^=§ª÷¼/ÊE#ëà…q$SpÕ TÀð /.qKAEÍ æ6–ñ­¦ËêÃ`ÍQDAϪÐ'Ön¦6O¨ýGÒã$áDÍ’ô[Q»ç8s‰Ï2F£rïß$>•©.N©ãÝ:;f7÷ã0\ +^M +åaQ±u`8‚@jûk’¦p–XDS›<€–§µ×¶nh×yãDIÔ#!“‚MJF. 2E7'GìYN¡±}ÖÓN4Qs¤©Ë)­yÀ*ÿ>YAV`°upmSà6œƒ„ò)¤3F@ +k·Èqk‚‘áüû~ ¡©½Û]¦ +š¤Ù»”cÁM*i»[S.ƥʨ ýÍ5…M/ÕôgꦘÅ4i,ô–ãèü&ø=¶Eºáò*‚<¢» +&~ˆ Žfð”@ºa-Ò¥!Eî=3jŸd+aNé@#˜‚R/ëË甲’< öyo·‹¦oæ?”M˜*¤]ÿ¹ö¹„± +,ƒ™Ûsw[cöUŽørô¼IÔáû8#…ð0i·a³ÉFk‚4•5û7÷>ºók0ÒÇ v*êDÙi*”Ù°zu;åœÛÌÖ °\ +¬ oØ´úñó“ÐÑña;rÿÞ( Ö’ÚÈÀwz«KNB¨á˜“'Šgfä¤W?»Ä1Yr!k¯U`)´Ù˜íùÊ«µ\®$<Þ“€ŒX¡<9)ÜAžÈV”(`ú¶å­Ï©r›ëÞ).áUߊ]ýò–ëX/^¯Ó:bå²[BŒ'’‚ðA§’‹ÖÁ—«+u×}ƒì¯Ï"‡ñ +pæC3ˆ‘q'z}SdÉxÕBiؤ+GøFÅ.Y2µp£Ø8þo˜ªv}§áü@ÏÈëµ*‹QzöñI°DV `Ê¥ˆ—Ñkéʦèä.œÏ=­h9µ—8nA‚’@$` H¬Â@0ˆQ-HË1gýÜ­¾³«—уvÅËS›=í“áôç©]m¶¨;Ƭ›µÝ–V¡´Jêd™<*§ ¥Ov¯æIë<]_Žîcô‚K.Í&Ø CŒÈÊ­µE­] ÕW¿÷¡îšz7Ìöá=/ îè¾\­`ΫTÙ(~Ö°Ñ.øŠ)lšÆ$üÊaésZyñæ‹Þ§^ÜpÙõ2Bü™Cö [Àb€@ñØÎ1£X“<9µœyr0vƒË!êSsíÝK¨/æRú'ô»ÖÞââèÁ3eÛXÛ¸Øjótoåž+9n{Á„šcg@f)8}ÔE¾°€UØ9Ð_²¶£uð-¥Íyœj\}qÁëÑ¥Þ~¦'qêX™GÞ«kú`$ðq¢pï×vq•š&¾°"àŽ<Þ½¼ãK¤Üñ©‡Ð.Xo|%’Ñ}ŒÂ¯Ä|ãžû5®F½Z¹ãX»­ƒšKbµ X½p3Ÿß¨{é÷Ç/x+HˆvœE pº («ì +µL 4öæ–m¨(J«;¸Zs·r÷°%ÐPVúÏîR0©²?*ˆ=€ÒètÞ‘."¥¶)“¹$y8V+"V_•ËH‹BtUñ2.ÙßÃ?-–B'fFÐÐÛï̽ä"]çT‘+l#c-­Û°º´hn·rÁéQÈ‘"`Q4èÑ¥ˆO§Þ°æ†cþ¥7’?ÄÒ¯ÜnßÞ-y°šc¤(êœÝÚ¡gD¶»ŽB^Ù„ b~*àÐé 9 E?Å<‘‡mðdŠ¶Hö1ŒÙL'A­iFˆ»¨áIß_ẘèîTÃC¤6ÖôÓVÖ[)ÒB,øXÛv¦bÑ‚ð®$ØœPÃŲ w£«µ˜#Œ}&ˆÞ K<9èª^Óù—:tj@ yw´d†¶cW§+ÓBúqDå‘ ?ß+˜j3ž ëK,dd î3GLÂ÷¸±Ì‹e„®M$â/Å¢ø"gÉ7Wë`q`a¼“¹¸(Ãl²8ܹœE;ÿÕŸ–£º8ÞMî·ÏR‰€LžXý2d¼(o‘‡ÿ"„µ‹z¹c„û…æã/Ͳs\z* üeýô7àÃ>^mÁqºYÀá‰FgÑ€ue‰ºP/6þD¾úYÿ½DPßq‹ûæº|2I¾ÿSƒ¶°ðöî¯HFÃ1`<ŠÏF¶¾_J‰ÍÞô[@kÆÄ|m˜A]±ërˆÑßв¹ÿ4ÇZ'Låaóý‘DÅ;–6†[à!uyçd9/¾ÜP€E²–½®…KŒ}!n|<¬­}±-P{ýš÷°K¯–‹8TzY†‚Æ²Ê ¾9%˜t¬ÿz0¨ÝΤ‰rƒ¿jWɃ>¾¸¼Ž‹üvÚq…þV?Ç›²ëŸúÔP9~D£üèXʘøyˆ¥*0u¹˜žê&$G>HR§spXÏÅÏØ3DBª K[ØíÒB8ãJ s+5³t•P“ÝäíÙ‡ÉIw]+Ý~dI± +75V¼$.Ùa®drTàªÂúéÀ§$g–ËÃÐ,~â·…™°m0íx;éYfíõ‚£ØQÊÜÖ%¦D"IGi“¯×™z{BSá³ry>•¥j7‘üw<›÷OŽó¥I ð‹^E+G¦ÍwSÊžº‰Hq¡kiÈæ艨!ÂÆÃfÒÔ³{üÃé>±úLRÁ„®È-ÁúŸCIQ·m.NNT·Ü×\ò²Êo£=ÓuÊì~šðªÿ †ÒŸf*Ö;óJ._Zp¨3¢T‘_Í»rЕÉFÎÅÎhŒ°((t\ÄîJH‚ûå´zˆ Þÿî2æÑV ðèéQ#Fþ©U18Š8ü¡“'¤ â¹´üú.ÃA2eLfÚÙÌ@¯_Ž`‡4âýp“å2èÏ¡º§qˆÆúÐ  3Ñ+Í~ð*ߣo‚9•(ï>Û”T‘­Ž=_k Jâ9¯®ÿ¿¤+ø^æ}Ðîm{•~,÷1ag`;7TS.ãßÄòcîØW(°DÒ,Ê7q3oiNZ'-É8ÂÜI”t"öÏœŽæbߺÿZUÇnôíâ¡I4Æ`0jš!íá=¼L?Ò„*¶|?aöÈ’¤ëkü&T¶þ§QØwÖAñ2NœÜq€ðvAÚþénxb‰²]¶-¶uº‰¥¥ áÈvÚÞ–§Vï>ÉûxE.MýOͪ°RУÍÚ.ÎþÌašÙÔLŽwj;ç¶Ü ¶Â73SqhTlM‚1¯ˆv•RBaUbäó«ß:›²HŒÓüª®SŒliD71nœMIr oÁñwÛçxø¼Sºí×Ì£é@m Ó·ýì_&m•­ÀE†g}•`”Tt AÕS¬ú¯òÀ(^²ŒÜªÏÀí=5ÚX­¾&„NNqƱ¼s7©„>ãT@H¤‰»Á7a‚ôó%ü}Ǥ¡l pMØ…¸\ÔÐDÁ· Ÿ0]æð²ÍAŽ¢Ò[°±îv¶: +A0µÝ¶KÈ•ô“E5“7X·¢Ã|ÙŠ^åÖ’=“W1iqÎSw¸”V½]ò6KøzbêÔŸêz){ ë‰G`õÈ;Ÿt7Òzw"81ÕbàøÜ Õ¨,Oسì×NÚ¢CBÜ ´[’[¦ç;-¼²´Ó\é{;,ŽBò‡¶e,-:¹)³*ì îCÜUDÃV"¨/ä<{ÝÕ]ê;u9㢩9’^ ì0ÉùZM‘ ËVR£t+>¨[qh­wƒ^fôó®ŽÃø‚¥”1šuÆû¤=<)bÖ8Y•÷6”²¿“ü;û=U¦I<ºu­C»±Nö_ÔaÁ•–PŽi9[€a\PUá¾)ž”M`ÉR})”¿ýe>ÚÝ2VÆÖì¸/¾ÖHÂ’~“궉­S@­ Swu¸¿'¥¬²{—/$0UŸFÑï:›U–³³Ë°‘[M¦öÁ‡…}ø†‹(©ñ<½mõ «b˜xáýÂ,7\0F&º0*7ßnW3©­îýÿ»´9âF`Ä…v~b…#á»Ü~éÉ$€é_d¡ Šª6/ÄúÛHJVñÁe J_Óš2ÎCCtœO¥÷ü> +õNX¬Æ ¸Õyö W¢ÐSÞòKb3i:˜0/\©Ϩ†äH½§[ß/7]Ýreç;‹B'§Ð×ãåNk¼ÃY%>€ô¥)û‹ý€#-•Ø°w#“ÍÃø1Š¼\;ÝAèÐØË'‰—Ûâ”D¼u¦sÅi”ûßZqêö¼w§›Û=à@w`€Ÿxí†àüÿ$D«œà#øS>å´Z T† +V~éžHMÑ™Bëg÷?º¿;žµ®Ð"^m +ýUÖ÷æ +x)Ýw"×+öêyêý™ü¾#àÆ\ˆ¹­Å1«æþ¸3…W£âç">¦LWrô¤DKñ9³Êc¡êEÈGoÐE¾µY h +ݼ~§)(÷D(Ñ’c{/ Z´X(’&³axÑe‡pû¹-,ΙåÀSÃ=ÎLŠÈ8Ù–/GUÙx^2xˆnÈsO:‹Òvºì5ÉÍ3ŽŒäδ +cvö,wúª:ôØ!ü¹S?Üp–‰G!ìr–{ðŽªàʇÊu€c<ƒþ{ É*F븙ᦪÓ]eTZqu\ý“ k~dáwjRÌX6€;+šþÓû“í¶b÷÷:V§ãÂ,¡÷£`£:G>mcF"!«Þ`Så1hç~ó±€Âæ¶iÏ’à1îoõªèNÏ E,iXn ï +xhΡÔÞíçh.²›mdI-SF3œ†¸hu*:|çÊB{ UusC´®õ©Ùb]= +Q, +ÇŠ¥ì´þl¶za5ñ8 µAÒphÞ(Wü\‚ÿ¾™2×t©·¢wdOe³%(¿2 ´EpD»¬ +Š0ão6ˆ–Ž±NÇÝÍñƒlA·q»qäã”NÎ@ i®é@ÓÔ†Ê0OØ8sË\–¯}šrÑ_ÀDÈ1ŒÏ£RaÈòY _4„%L=ì‰õ<—±¡ÔÎxgUÕÝ Y¹:¶GÇE–*ºõ£6no¿ÌÂívµõ»á•ˆ/Q§Ëÿ.3dwòøüR8uÞæ"´c¿IÇãŠGZÝ9‰Í´ô곺>ÃÿEJQP¿bTžë6‡Ý–:¥š<„nˆUYÚ–†½Â±£tW_eÐqÀ®’[,m+7?Ϻ¡Ê&]ÓDN½ú£³BåÝÝS…’Dçë“zî´Ñõ‡?@!}öDÎ#“/Tò‘€¢5ñ¹´ß ¦ï@†r°ŒöäKþ®mEŒpè1°ÖÑù.HòFo$[îgt‹µõMBU+™ÑQŠ€:áúúH§¢´H¤›¤ªðªáñÝ“Â{ÌbçpyĆºÓU|ŠYðÃñ”AwB™ªXÜ{™ÿý±³Ã(2ôœ‡±wP’ýᣓà¦Y™_|«w Bµ¾$ÅíxæI6›öUV{ܕ̧$clàêpjÄysÝÅñ!¯Z 猇m·ZÓµ os‡» ^/ nT˜L…¥aó‘ÔZò2’g³ú†ï &Cºx5÷KTZr,«goHBN “Ò­½äÛ)ÇèØþç»Ó®ÝkZã¡Øê"ð]@Êñ­ëœ¸¬ö( yfŽÕ…¼HgË©ö}·T«_RF]»»Ú´›º»5K©Q™^Ò8D2%¤ ø™ ÆCý…q`V;âD†x?gºâMAÙA.Ûp·ûÙF2Pm5ŒÀœ¬Çîë¦Á @¨rµ-39RR#Ð?X‹pKµK¿žì¥‘*äU¶Ä°‡àbôÂ<Ç´p{â­úŠ"^Å‹¹ÌîÒsúC Ÿ ”šá‹âÛjø››ü•¨OÃýcŸDȦ„æ6#©”˜ínË"€¿ }w_€^75lØŠèÒY$ÀôÚ¡ãh²Ç“ìK¥ c0U¡ã+‰ϘŒ÷ot_ƒ–änË“'0”À*ÒCè2†4lÊ[(äEa¼Ê4'yPÏÉWÐÞ$[‹d½ùš£ZqšsX¼ ù<·XHøêû‚“î4>ì­Ô‡ÒÅöZBééýœ©mè/Ÿ¯Ât·`ûÈ{«NwNåçý¿¦"ñ¤˜"Žu3{±³¦1уæó18 +û虫Í ÇDh­œ]Dü¢Ó~ ÐmPDŠveY5¹Qö>ý¢>®iØVrSí~/qùï>U¢ø)Ÿä,Àþ'¤këAqòU©º‰Ó\ªc.D¼4œg$›n=b˜,o®e©h 8FM¾¼‹±Åg1°‚/qÎ0ü +®òÙ­e€c[Ö.¶?Rj^âÏ„êeàNx“l0•1Û‰<YäóöÍs—ã7™ ‡‡ï~]ìg%ÂüO#AÛæ½Ò”¦çáyûŸ˜-©ÏüÛ…áÐåŽÕôñ™â~” ¬X0‡Ñyö²n¶æ×\‡ŸK³ŠbF¹ÂåT{ô-aè.[DÃü}ÜÁyaºÌ0-%Hç÷E±5ªÝKàרß}¯“¼£âÉùqŸ†Ò5yG¹hÈïTåW=0ËÒ}•t(÷‘o +üÝ8ÂU+Œ`3|ÁHŠ¿q*ˆåG!h5v*b>›¼ƒ FÌñçVÇÔz½Éˆµidvî]ÁŠÏÐ=Ü<¢Ð8i¸ÿ²™b yºœ1*ß 6&>‰1ÐÄ·J¸cì(` •2±ø&a§%&]‡€œ*T:vFÓoi5.{|—í¹®2Ðâ°¦ð“Ø©&Û|TcýYRíýçù¦M3W\†0y8Ž÷¢HZúb7}íÀEʈ"è| É!^Ü©lf‹º‹ZÛÂ`ñžÈp+nøöYfƒ/3@/À%ïzùüÓÕ’ªF:}Wˆ–Ãoÿ0U!†¶nŽŒWꜵ¯ªŒ³ξä[ñ~KS™çÔ[³iÜ)3ŸMâèƒ(¾]7—_üÎçp0ÊÞzþOùšËà맕8-÷ýMìåbћœLåü|¡¾ÍüIxÁcóKo{ðÍH±hÅ=¤œÌ&;0£ wÓY¸3 ¢1ãL™'Ÿ³f†de­ý-«o—åÆO݇^ñ%&¹_ ƒë•¯=íI&Q óÞÑÉݵ¹¹÷`½÷ísj;zø Yã•óžI4/Š! P17cß±9½÷:Î/ºðaSøèêÈÏ´ØžsE]2©€ÌSCð1×Zü5 þ¼~šc‹8܇QOñ¹õ€ÓZ_1/Jå‘Ú£{rokÃ'Ñ&ÀºO`ÕŒ4P;@Ï/QÕ£­¿`7(z«ž öèS ]þPÿr?^h¼ã|è ÕedÒMÞ–á=“«åˆÆù-3ž5Ð’¾×u¿s ‡…嘗Ÿ7 ö7Š¯&ë¾r¹æ"óåc.µ#mU'Ö¹áZÓÝ?Åy`Y†¡!ÛxÞKc /™Z (ì-2å³×i¤¯ °¤ý4¹¼¶›hYË +CC'{¿…i‘ýF<Þ<±"TåJPÿraW?ëæ׬ð¼ ô*òõ5|ãË ˜¾a*ÿÒ‘^~!ð^ìF¤ÒlwÔ´u8éÙÑßXZÌ\¿½tHHKXžTí&àë¸mçî<Ì\Hnh"8SÉ 2v|§þRµóq”Å‘'¸QìÝÜÉû™=:.I¹xy»ÏxµdŒ¸W¤*lü{u™u®µJrôÖ ¬ÙbD42vi‘"-Åì“7K¼ÐLw¥@Å lÔþ4²¸×%>ml (£«ÙSÃÐÁ“þbc‚jøVÙÄßÀ©g¸þÎ7hð‹|ýt÷Át܇[ßhÑ"îì‰àº Ž ®"oÖ˜ç õ'œ—ÍTÁKŠ¢EA­2I”›ð8Ó€PT +ö@ã {ûÃ߬o[wr1žà÷úªå…|l‹¯¾§q8Í¢ê/ÖYxIJê›Ã”ÇGT×]2d©·Fô_8Q‹A¢~Cü–ñ1·ºÛ}ðý‹s»„,XõíT›/ÆôµÛÞèW%)¼ÐÁhú‡þÙçg¯÷"“^úêYÿ°‹(NPåÚ鑸øÛ Üëu÷ñ)Æ£—;–^|/êñª>¼‹ò¥§â°£(ŸCdŧŸ”bïÊÃä³Æ|t¥f‹pmÏûË]ù£év½«ÓT‹³äØm‹H›¸ö¶3!ž¬–40èêï•uª²b\áÓðI>ÞíUµ›ë{l`ÉèpÙàùµ„‚ª)ÊZ«òñÙßÙêÐ%š’$ã7Á}zqQøÉScõáR¹Ÿ-ñ”’º)ÃÂô”©g׶ iR³pN +îG|yTC£¢½c^;™[6Í,#«Œ¹33$ b4 ѧτ…ƒÿêóX¾ÒLÈAÊ’,IÞ„†Ø{Іϭt¯ëÓâqŸC<ìÛê5?ÞßHš˜/+ÀÔõ‰Ü & +Zƒ¾ëkþ`¡bŽ²ƒZ}ˆú utËÂqš;¾z$,|ãÒu\ϧˆ îO?Ú"ÍnùÔâºY0 ö2»Å{,˜yc-Œ#à«:Æc©Éž{“t‹{“)üím}}Gá\c q·öÜõ2ÿqAÒà"‹}¾Ï$‚T&š] +§f‡Ë€ºl²kü ßwC·~//v—¡d9øñèÄêÄÀ]ñ%íïmšfß-}V]ùe¸…b縥Ñt+î0  ¾Âõ¦Ç{ÒÕ†/J%,Ò|9*«™yBuŸ=M«ë”ù­×Œ oƒÈ¡”Õí>Aµ‚òMwOÐ§Ü +« ó7;Þ_:d:>OªoDÖ +ß\4 ‹Îÿ³?¯yÈàÉÝùÁò€ˆ–Lèqœô9ê‚ÁŒÏuýÈ·ÅÛ  +”Ä^ùF‰v2¥Áp›X†ò«ô !‰,x?‘%øÞáJ;·I†ù¶ò ûWdøéÒKC¾”–Ú(Éc?•”É„Üû-¡Ëy” ý^°ÂÆtQ`§-o23b$FíÞ#o”®ÐuÙm]AUYßwŽäሴÐÝí¼Ô rDäºiÅû@ˆÝþŸxììë„Þߎ\S%Ù oOb¼ç÷EÚÿ¦ ¦ÞÅ: ›ÝÌ}*±—ùEBÒ™`%YúyX¬›¹>+G‘ d«LeuáÁ„…“¦³Å…eÔ✓®á¢ÜâÓ6Ü]6&™mÙ9€Œ=nP‘;ÔO¬,^µƒTÃ乸s¢^å ÏVÀTK +P¸^à0WÇÔݶŸ'ñ S¾>¨üáPúŠô £CÚÝòØï¯í#tp'çJyB¦…v†“;äËKó™ØWÖTëwÛg ›k¾íTÙz¢Ø7ÃÛŒPB„/zÒœ9*)ÎåC³yöÀ€J¥®ѽaXèáX1ø¿jÎm‹Ù࣬1ÑK‘¨Ÿ¡Ê‡zT겟j&Š¦–[TtOáu‰¹¥ûãÀ!Å…9‡cÚP,c”0°©‡9׿»¶¥º5ŠÔ­åpáéL+1ÃCƒ † Óº ªõ@¶ˆç-Gø‚QPŸï”H$W”D%ÞôÇ4ô¢Ä{ ¾ Œ$9ÕMª|_y"×=ƒ–ÛyÝÉ·1ë^[ˆïƒN"yMc޲ܡ_~#†–ÿ 5"XÕíq¢O]xevKr +endstream +endobj +2247 0 obj +<< +/Length1 1173 +/Length2 2916 +/Length3 0 +/Length 4089 +>> +stream +%!PS-AdobeFont-1.0: PazoMath 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def +end readonly def +/FontName /IKXQUG+PazoMath def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 165 /infinity put +dup 229 /summation put +readonly def /PaintType 0 def /FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -318 734 1016}readonly def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-40 -283 878 946} readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ß]_ŽöÝW_ÝÉù(~ÿF†àv¶œñáWfE@ñ»Qëc»¯¢PNêd¥‡qclµY¿„§†]¾Ošå¡æ®kÖÔÁ r‹ lÈú¥n€8e‹ &ãy~¦8qE”<£ÍDÏb´]„Þþ$Ÿ<%ª¼GÜ¡Ìd`øF òž‡]æÍ"Ãb¶ZÊ9 'Nnð à¯]Œ½w¯ù90dÿQY°NS+Ý{M´>d¯Õó¡*Ÿf$_ÇÔÏ{}äþÎE¾ÊN5´Úw0Æÿa™ëmLÿ@°o²Ÿ­½praè,¿Yuš½vT fEC/øî -^°Ì[XâO¨åß2þêÿ WEƃØKQÙB:”ŠÒAvÑøy™°ug¶¯ÙíÏ=q“p5­—/¸…1[úÕÜ‚!l2T˜'9HCª¾a—€®ĉ€üw™±Š¯‰Cî3^—Cyœ’ÔÙ}^µÿ–…À 2ŸA‚ú3>ÑG|ºÂà”ãH.øˆç]¶J%KV`à8ß?½†Ã(Ì0Í÷ÌÌg¨óôƒêt,×OT7 Üà$n"JaoÕ82*tß®ìû‹¼Àç±.ÙøÄüÌÕ„ñøeÙþÌ]'2õçb×v–ó€Úè«ëþÐi“ß)kŸ+ã÷šT½:CY#M5×7¯^ÓkjÈþrcÖTÑDd¤;y9±§/ªä£EêÍœŽ‡îåÐIœ7K| òŽ”Sö­ÁÝ¿[l6ƒáå†ê«÷¥ -K|ßOV`bàÂß'EÙp…Öœ§höº‚ÒõÛ(Ñuóèfè*Ž†—âéþ­ñ؈{£s’G´Â(\–h‡M9?Šª¬5 ›gÀ|Ü 9û@£?ä -â…;ßò^;Z]“‚Ý_·pßêXÛæÆêì¯ô5Mlî•pCŠbØÁMDþ ¢¼›†âC³õ ![]¡ÒzºŒ>¼¦¤§¨Òn®žÔ¥ç˜R>X5 ks‚•Æ¾l© -yHRëàv¸ú,#«á#ymí­B[Ü! ºY¸‡Ÿ|+á´ˆÉÖÌ@w˜1Èy0¼–+[åÇç3Þ€ º©;ð.f¥Ká›ÕÒ$¶w:¼É; ×0´6‘áI@œÛ3úñù€Ð]…3Š}A‡íEêŽ:l9éÙñ;fQIïÜé1Ë×YÚÿuK­YßEXÒÖúñfhÚêƼ½mxâÓg{šG9ÆzÏ‚ªÁi¨{š£$ŸÍ@í½”–vœÖß2BG™4õê˜#­=„Ì-*n=׬>¹‘paŸ¬\ßµ ¨wQS©RÔ9 ~Rã~{ãŠûµ“,VN…Q:”¾‰BÞÊ/¿o©,ûS[-gÍ<õïCI³ÝÞŒ½¥¯Û$d…oS¹×줇µÔQøfD®Vôc’ÙÏH9>S9¾ÛjÞCa7Y¶‘FÄC;™ -²gÓƒS°Þ“¼Ú$2hè¨HùýìÆ`N}HŽÏ+iI9âHŽu»õ—ÛIãô&Õ–ÁÙ‡‹J&HPn‡Í…èLTä|DŠ°îÌËÆ쎂j²º'ŒÏjÙÊ‘?k.&~§wÿÖ% ‡ÅRF¶‘ÕϺ·Á¸o>Üa­Cþ›ÁwÇÚÈÚD²e]ŽÉ¡>#_Œ(Àµ-ËŠ;]‡lƒ׈ ‚î©S \Z+Jøú CÛ<¹ø;ê–É’Z[ H£9•Z<(*@‰ðLî5À´GÄ:ŠÜx×›úã¨òÖ{y’PÊñ ‡0˜µ„DyQ®‡»µ/%¥¥ß¤]°ýù¹O 3ž¬5ø–Hwê"ÙåÔ%o14·ó¦,ýŸÝ¶Ç 4Ù¸–Õ?F)CžkŠ²·Rûõ­nò©¬kêô5‹o -ul¢—!ÖxJ†óæ†p$ ¬ÍÅKNgßò»ŠG–´¾Zs6^m„á¾ÞûYës8磩}‹2š² ŠH¡UëÕ -]Á‘ŸO¸í$ËÆõÞîH;ºCié_Œ'6Õ[$K¢\xË;í^zÙ8?‡!7•‚&þ¼†¦•–ØdD•¹§tÌÒrjpÞ—D+Ɇ‰Ð¾µ¦9ZôÉ€Åã“Ãó3HTÅ×IVxÞuJð®Ú'8Òü®/,ûHÕO@afP²C4ûCobž­*³¿l7Ñ#×±? f)ó'WgÿsJñ’«+) ë‚c&y½n2l°PÕŠ‡€¯ŒÅÊ¢‡ ©Èð– ðP€øz›`IMô ó”” N0LùÎV0ækëÈ7%¿ãHBh5>¼ZY@U4½òœh‰9jD‰ÐFÍÖ|HVÛx6ÑÕ‚çA ´{MùhÐŒB«ü—à€|Worr‘6•û˜ìúBÊî4·B°Rlk‡*Øô6@æÖ—‹1_r:~‚–¯¿î‰ ŸŸ—å«a-‡:5 ËÌÉ5hÖ» ;”ÄüãzíåŦêüì»á6`Õ69øŽÞɺ²Ý±§ }×LM¨a3ë1>pÑ°‘M°ªŽ´‚q#Ó=4ëùnU ß›a5|”F¦#<¤“œ,çÙÜ ‡;N`,mJV ÛClòª¡Ã¶Ö˯·fuLŽ#ûÖi¿>£4~HÂm\ì=c+µt$¬eÞ&«X\ Š>À" ‚#ˆªTräêéE«ïð’®² šx\¾ºÇ5/WÇÒänT×Òqéæ)AŽªP¶É¯mn®DöBÞ®âaÕ?,&ú íäB]ô­]PE³bÁÑ–áþµ-ÊÖ½w¾)¥×2­ K½(]äil°?~6‡Å÷F kóó¥å"µÈ}áÙu° ^«ÉŠ±DlÞ½g‰œG™—`§³LÐ&¤Rfê`…V'3‚EïMÊ)‰LÛ–;'#gtI¡W#Dú]˜ö'…rÜ£¬Ù‚”OCXmÿ¤ŠðÉ6 õq%QmË =Gdb¿ºI6«…!#[Ó»¨>ýB6V ¡Éh’ÍcÔU´øíIF&i ¬%fd@#íaù§QÕ#02o£2©Äv`윊Oí줎 r´3åó,iàÔðPfQfroü3é“NY³ ¨¢Ò«5À½¯%çÐ/¤F‚–§*=(îV$"Ûð3s¡¸8;M&”êúøFz-Yqɉ#ð²~`þ1ÒNõVüýcqúìôÜ™Éåæ¼o71aiAûâ<¦è„‹1ÎôèüÅHæU×qnÅ÷4ëMN…üØÝ ƒf>g¸Òœö3 ùŠ´6‘$Û¿7Ê!£y§{NŸp|jš.Ôß ?CÓVÓX Ëà¬=½OZ{ÛÚC³Š8L-¿Y+ ^©šUØÞluJaÅ[Ï*ßðöŸõ€[TN$‘èCÔ‚]™¦8…®«ûö‘ý} /¥‚Ú}ëºbµ¾ÌèOWÞµðìrrM-¼ò€å×ú÷¶f.+’ÐŽ‰ðæ+ÏæXÂUt×96{ðW -g»aØGrI4£×ÁÿHarCœ+2è)Ñ©kìÍ©HL‚õ EŸ6No­¸·8׊G²XÏ»˜ÕH0Áþ’wDÊÓ/¾ƒøÁòˆ+$jÞn…oš¹ÑEÉ+’:Æ„ øž³‹ÿ[ëÅG^žä—.•$Ü>°“¢y=U3Ef©Ì¯$|pZ„îm¹| -ñ—†ñté>=ùRŸpÒL»Ç‡Â”)ýÓPÈá­^»qí— ¢7k•ÀþšÀ:Ø \•¶‹ãyý˜ -ºFÈáèÓaî„…u¥õ"ôÈɀе¨sv_¬T*Ï;Ɉi”¼õJPØi±s4¤E›\''†>…œø*UP Z‹™(ÌÓ³ Þ# û·.Œ?^f£ª¯Êæ 04â(ì÷´GÌW`’3ýೌÔì©ø­½÷¦XŽjzñ•Ã€U*5<ÎPáãÐO! ß—ƒÃ—XòÞµ‡.² ^<Çç›ÝHãÚïôãv -‹AÇvŒ·˜ -ØÙ…'µí[~P÷< ²'žÏráìy ]9®SDRwÈ™þ†åK‹Û¬vÿ„àÚbÜ©Q]n‘’ w*ÉÌù‘gcšt²ú~ü¡¨c³Uì\"X”ƒ›OíWé6ÇÀEz•qµ æ“)O!Š¹ø§Ô^_Ëšpü¡¨c³Uì\"X”ƒ›OíWé6Ľ -Ö nÙ‰Ú*W^¤^Ú.Û´dôÅLï%1<׿/GPíô´dF@¬B‹ý20ˆÌGÈ"‘vp0ðBy¹BáÝ{ÅÑ µ+p“×…ô=~÷»©!XÃÍ6î‰ØŠjæ pAûÃœ\³È£fk¿‹¿½$Ó“w§èjĉm@ŠMÇØà& ŸiÒä(áDÇw%ü|Ï”‡-Ïdã¿A4 m•`ðƒA®g[ùéî—X¸è8]kRâËO1MC€n‚VýG®kÿdô28gû|}/U¼R¢ùæ¦0¬AéûêrÃÿ 4Ø3Îö"ºº:‡òP¯œûÁ‘Iª:¹'óÓ+BÃbÆ\ú÷-%éXýSmž¨gk\DDøÞy‚k?”Î* ò<‰àf=Ei$n“WÌ!ØC—‰ýRýjì%¶`UåmJ³ì´¾¸Ò”=3(ÿ¨1좎†,x91*¬ @®}É;øÔÏðl[”n!Ðõ§™ÍÿäÏàNIâ?øEÏR]qƒñ ¬„u¥ÂLaéRr'ÞŸùaG÷P%láßdAÛÏ#²ƒ<¡5’>¨&Ì…ÌÉ!Þ¤&’÷§¦éÓ¯ô'ÂüѳFÝv–C‘"Wü>¢B²QL$ÍtÒ¦n›‰ˆoPüÜ'½ÿê'6Ñè)ü¶»fÆoàSƒ„üÙ<5ìx¼²‡óÓâ¸ò™ìÏS•ƒÖÇ~΄q@¯0z6¿a‚ñWGMœî -åñ0Š#ºë$l:Åô+jé£CŸsäy$¢I¨ìàÞÍ­.l³2åÉ-5 aŽ -çT”Ÿb);4ÿ–ç$XìˆÀ/rÝTJ4A‚i¥Õ’”ÒvRû(ˆX`ð–V,Û‚aûÐZŒå.6û^Ïû©½ã€¶€äÈ7'ù=¢ÖQsG`¨’9\>KŽÇ¶TÓÖkIϹ·3Z¯±²Y§±À›Ç\\òæ€.¬F 5*„rî& ý»éÞ›tœ_RBÓË%<6¨LÈ7×k+ Þ _“ q)ýO:«E^·ØWrÖ$:‰©À°»˜êÓµ­«¸0Æ…¥ßª´RýëýEow„OÂt8öàÁU }bÕ$ܺvä›­ÙK–nñPfBËïš×QÝAØ@B{ÔE|0Š<¼ðüüTÈ°ù Ì@Ï–ï><:ìeªTŒxªxΕøn°à³Eˆ‹gÎH*DˆŠÐ8Øyn¨ÒE=e¨ÉU%oÒJ.B·fÁ_¹•‘)€pr™ -äóIwÛá·ý9ŸVº]·ü¶Ÿ1)ѵëX„Ãe>`91ðT-è9’—oÝWÑ|µ–Š8KR ýˆ•¸NM09RÃÖ:?DêwÏV5ñÞLÖæ-ù×ñê¦Å§k¦³Bì’¢ûÏŸÚמ*t(4‰Ó4"¹ü2¢×Ú£ÈÇ;xñ÷<«L -[™Ý²QöáÊ.l´ý”ðB@ŒÆ#Vˆn›'¯±«þbŠegvÓ ¢ªïð’®² šx\¾ºÇ5/WÇÒäeØ–A/‚r:[úê -#X—å}Ÿ¦øºoDØ£  ëþß1—¥yj#¹'"~Që÷ü%à´Ë’ àSÊ‹p«ræ¾gk7cŽtåKÜdÄë¤ý"Æ}|:÷§®âÞ]éMëÐ|õ -^{sd{ÿpa6L -ë -¯ÏŸ%«tÔYFÄÔ Ÿ£Uêbì÷m'Áe³»+3Ú?¤A¢9£W½JF½ -†ªÏì|-LÏóŸ¬~µkâyãP4Iê­Ç‘E?8$Öû¸_ܵtjÀÓÊš…¸‹·²é%Û3eÈ VàstÍ"Ê~¥æ‘ÿײé;¿CVÊ›¨£Ow²üŒ÷=‡}f PVÿÕÄäáóàn>mðÒóB@G¥ËÛˆŒ„­*Âí®©7%J'ÛÙ¢  úk‘—§Æ4æ­k)ÉD‘©Lú›C€Ó*yÆÌi€$^ÿÚö$µ&…Ä+KÔŒ#¥Ç™1ÂYÏL÷_ö~pÑB`õ*ç<ÎìÀyè7ÜöGEñ¹F•Ô]…‚®Ç©•«=pºÊ@ÀØf£ž}¸ÉRA€é â®ìd"cÙ” D5…àBŠªÁÊà#å¦ý•Œòü/®õ"IPa]¢N³±Œ‡¼!ØšŒv’eÀ< -<¾æ$ éFç«s^ àÄÞ{Âs’סâ€Í–êÍ‹¥=!\j‹×—·Y€çõ@V\5be|Éì²Ñ3i³lã¦"¥Æ­øÆû+Ù4x5ßåãvÚy¢>‡v9-m€ÿ\ž®.2óÅ.P‚¢3·Ù ;ÃKq}}ÚÈ̪‰YKýziÃÞ3—åîíL@©±ÚßÆŨù…~NÄè9æirú|6Tœ—m¯9ŽßªÍu¥$) ‚Z­ŠìÀ.y3áœÚ–Z‰y¹¤ÕèÒtNþQv:k½A§­ƒ²'Íõa©AExGÅì À"À‰«<²¥Â}e$ÍÚ•óy)îU°2¥ûþY‘ºÂUjéš¹¬ºù¼ãØ,Äwr{·‚ ^üI”Ã:‡ÃÞY7ÔTY7Qí×òmÏæ¦Ëeµ5»FÌò8ó”ø½r'›Ã°ÒŽúO2è·”åÂ~Ū„Pr­ñ¸¹üæ‚B^Ì@Ô!;ñéãó´–¬w`C‘i$qE4F?%×Ë(áÃåhÐèõÝNTÌu²Ó“ºy¢)†,ÂôUð0»Üœè“rˆÛÄùfaÈÓý½l_ƒá'»à;ꆴSVøÞë{é]»øýp‰åÌÔ6‹ïUj(mEåÒ=×ûfG&!:×»$ çß½ü¸¢Ñ1AãXØõ>4× õÃ$Þµb?ÇÙîop†…ƒ)ªÓDZÛÝ­áŒÉJC¼´â…ç̨ê+½2D@ŸÉS~Z^è`Ú7G©ò}ÿ@ï6@É MmS_MÀªªŠrhçIÛ¬±HAo`œ'©¨C†%tÔ‹‹dKö!á·wWé.¢õðz(^&¤RôÒtm–~-M˜._§ õ~Çß|óž¨%æÝŽ§¤•ÜLã‡2`è(x—øÆR†Ù?À±¯‘ð$˜)7¦°¥£› -4«+mÖ1›Ø‹§(áDZ^x8p -š¡"‘UgŸa†o6Yf¯, µóôi¾8?G»Ž$“¤â¦`V»øÄ{×1ñrË/ª ý­@½:çÖG°ÿÉ+d{xš›Ô{] ÌÏÏòÃNpYÙk.vTe%¬Ÿ~æêt÷ÀyÇ·Vž`…ßPŽ½ bƒ‰EmNÎmpV­ÄŽã–u×Y³}n¦~S±ÔÝŽ™Î¶'vø¤\)@~½ð09ñ²ÏF&` ŸRD4½Ü»ÓTééÚÃG3 Þi}ó'’V!¬N値–±/Û5Ma£IðSb¶Žq(´ 9Uò•K!rdz~vˆ"?ÊÂä1î?a†øW²û/@;êÇ ôrËO>‹…$…ùt¢Ò[àZ燸*¦±6U•Ë¦Û‘‚$¯£ƒ{/ýÃqAª7Rï£xSq5ÛºDÌaö®EÜÇç…ë 6 œÐÙ¸D&ðêS^+õ -¢ü}KM*×¢úŒGt81Uÿ\ rö@K¦›ÊÏŠ³öuø%Oέ_˜3{sRu7¸úXøo2ŸM´4ÌÓE,Tþ")yï‡@ù"ñ ª:ÓÍs²²¨ -·¹$ñ¾«Ÿ`Ú,@ï–=R%­ìL1-dz\òÙðô’£ÈÛ#cÇ9¬ê´dït§Xyôo¦CDž>™?ßÜ"ÌÀ2ã‹^Äuí*a”š_/¡^°k¬)Wq}®ó˜mEZÛ¼_Ï÷¹XžñŽJ5ðG0 `tw½°þÅJৗ%ÚcUç×/ê¥Èp„gp‹ò£`£:G>mcÓW{,™¥ô] ûqý-´ßÇ—P=ö|´sw©ž»Ï;ï¥BM$:¨¼~‡gs#c%^p@õÞyÿ˪fè’²ä:¥¶É."#©ÖSÒ»iÓ_?Ÿu[ M]¨?áy˜!’AÀÚgå¾À@©X±K³×‚¢'›‘ŽŠè²ï.9R’¶^ue¬Zð"–th%Ë'¾(^g2–¾W|à làöPòXŸæ‹)š>—£ð³Z?èß[$Ð@ÖUG ìqÔžÌZšñ\6L ËˆÄïP›eðú‚ZáÕ^‘§ŸžýÎÃ/‰rßF _c™ -)‡~ÑÛ0zqÀaHÄøÄ=`àÖzC#ñ}‘xÓ$‚¹à“ò<ªÈ÷^¦q%Ç*N2FÑïô.#{B4£×ÁÿHarCœ+2è)Ñ©i«*v,¬ÞãƒaMVM>±¤ÝLF¹ÛÈŒÛkÅþìYgrô¾ºv‘H ~5 ˆI©n÷‡ISÂ$Ÿç a2E5‹ÓŠRóI#çÆ>œ¹â„Ús<§²‰¦h_8½Ô]7ÛâsëÔÕ%pÐÐ5‰[´©‘ÄV4´wÓ»72å¡+ò¡¤äÕþçL„æ=è†ÁÖýÖÓðÀçîRìZŠ -¹¥tš[ ž eüM£V©Z;Î;Ha)X³‰öC©âû&+ýw>†rWƒ#!CøIq;ô¨“2!ù]蔨ðû9 FI‡+”[yÕç1ê7%r²A®Å]4F L° y!vô‡ûö%ñ{Ú$¬S¹PÞØèò(Ü)Ì–•§p èeHn^á1™hü G™Oo; û‰ª£q{óÍRçü†Èþ>Ó?Dµ£…7ê•Fê<Ǽ”i:F‡,0@ÈàSÃñî °ª«Dh“œƒ«tD~š†…؇Š$émnX?©¹¢É}"+OÕé¸Kš&F¢h•qˆ8§|æ\¹¢ÿ´Ï@º¿šû©* Q® †”àƒáÓ}›ÑG¢×ÀÖ2xþŠL;q`Ð(¦¯ÅZdž»TQ¿¶ÅìÚ׺¨ÎÍÕƒ°($Þäí¯— -³™!e}²µQÿD*H½IüpÊöÿ¾· -èx¹ýFt;6à³Â¾v&R =[ZkoÏ¿þóN*4q&êÍ7rVГy8Uó6IRÆ“ò´•³Þ|p…K;ÿ:"Ù6Ö3Pôyló[ã‹û6ËòæÐ×0CDáu1ÐÆ" öKaS±«FÚ,AµÒXk'"ÈprüsG€ËÅA=dÖQs¬ríOô°åºÛnV÷´³¹Q;¼Ž:SG²šY²§x€ñíÜ7?S™ƒÎÂ$‡K·Ê˜¨pÁ=¼å Âe‘±ù¡+sÖmOcÌSW÷UÄŽIôñJ†E¦Cl@±¬ ųv‘}ÖªÄùXÛa´­L}¬êÏ%½ùÛÄ+è–Ð -5ZŒéÍ7ãшa⸅jÛÛõRTA[¼wdÈkÇ3xLjW|4#øi€GR²šaDFÎâ%Ñ~ -ÖãÖªXîá7e¬Å¸—m^=º£cýMø"dŸ²× Jü `ÕD&•K_:¥£çý þ .;.S%3e"PR쬅F9pþѬê[t³ÁFƺáeXYûX“KýÕîmïæn¤ ãš9·üm b+’^ÉN‘I7j}>%,&÷ŽCö;gˆ4åÔ~â*6vUû'ç¶ç'öþ°ñ¾&ú&Â÷æMY@Ôìn(Ž›¹ždYX麾vãÀ2}!ýèˆR„ÁÆH‘â^˜ƒ‘ÄT>½zÎa «Iš֢ýÉʽn! ¡ÝU4¢Lš ñ¡¡ÀÂ7 –®;%®ßr´’úˆîŽ‡à‹Ä8–œ.¸ÄdnHOzS¢¾v¸ï$øŒiB7Ê·w qp´ëº¥I¼ƒ*SEÃùæy§ Í[ ©>¾‡ã÷$Ø”¸H»ex(ßB]ÎrfÖ©Àñn«J2AòŒôYn¤qtä -¥t‹ÕÝmçN8®t ^gõt„¦4úü¹©¦ŠrÏÂ#ϪNZJþÖ@·À0Œä†=‰ÜbüXoàF±•–\󃧖,0VâüÊ9­x¶ ðíS¸ã壘^›)Ñwß ˜q8`ZdžK¤Ž{¹Ðð‹úXª7é }J=tëÛä(“Á/“}çÍׯ®gtô;‰­ÇäLìF³Ö~Ìj*ü•¢ŸÏcÛÇ6×8ñši+Q.afo¾Þ¢P(dÂÎ!m"Ì‚¶dºiIkÒ÷P!ÊCÓŸ¶3I"±ÍWY¿ã6›A‘?ýŸx›ž'Ä;qQËî_²QDj.‡ÔåÁ³på¶ÚÒÃ…ý´Þ‹9wðy*K©!Ï8K’Bk¿;Õdè!%"òi«gOæà‡þ ÿ}‰:t™MWgd©Y.y¿—øÌÎ68¡ò2ºîpŒž&––uõó¹Ã:±‹ïzM-­©Â–u¿Q?ÌÔWQ ’ý§¡yf±£ƒ¼Âý¼÷þ°O‹‡¤ŒcËü/B3Kþs5ÉÛ4õ>{ Â8öè"Ýyj‡¢ø©ï' øŸBØêŒIÐ\Û<ÄÌv§)†WUVÔOª'A¥ü@Aßzo †c poÕH³Èpúéy&ǰ󷣞ö0'Üs9Ð÷úét”]÷ƒ¦wÛ‹Þ°V½Víõú›MË÷YÉÿ¨è“ÂŽõIÊ<|nÈLÀNÙüF¦€ÞjÓлõïdJ:*4ÔOýp#Ö¬¦#ªÃYife†÷Ì’õQTi.ÔS¸1F<òÂQDʢŪàÿ©í$FÿCœ Öøú1çb´Ü·‡øËùC¹È~®€T>Òq˼'JôÈ°³­¿®’´)°n«Ð‡ÊhlÓ­ÕëªDòZü·Œ5ž»&ë2BIà«´Ô½¿Vbü¾i†@¯kABh!9ø_ÔOE §Á¢LïÈn ˆNà0M/ˆ×ºæ- Eø&µ'¼G!7çJ©ÀB¶šº{ךƒ=yü=Ð_×´xʹv:íˆÿ"Ž¥0€ÆH(MUËx0uϲÀ‹OЊSë†yCv#Ÿå@Ô¶1¢\I\ÞýK -Å:±7‘/³ˆùY&›±´·ˆ¾‚®½Ás0}wß?fPX·½Å„¦f_ŒYÁ¢ñOP­Ìn!I£ùåË¢<˧Äl~0ˆôÑÉ–¨2ë®`ªCfÂà ã³©0<É'f>F–2'.ÚõâaÇ}A0¾?Ðb€íë©vñÝP!^ pgñæ••r`2¤ØWÈÜÍ#l²†À£á \é°ÛP{Tغ,ß…žÜSÐ邘M’¥Ùf‘_Š©E§0Z4ïDÈ4¦zá1VŽX±àÌ‚¢B7¢õZÖw·6a„ùÓø\:CAvdS§ÅÐ7[Ñ£±H¯ -éR)vX*ê5¼@õ£î!¼–í€Hu¿ éI}Ï„Sç`¥gM0U#Ó>AUPƒ$wŽZJÝX¼Ç,¯®Ñë‡RrEÜñ­¯ ÷ÌÔÙ«P nî7ýûÈdùj@¢Ä³f÷§óaùGƒà^Ä‘ºä»¸„JPÄLš Ô6&Pn¤'‡uýÕâ– /Ã@õþVbð-`•Ñ+©5*Z–“³9TÃŒF _iži°¦É°…DòÓ¦ÚßÓ…ð°Ùº»À¿a[›«é}'•GŒáh;C …RÙNn5~„:¤Ò§ÜD«°™üäÚe¤ÊåÏ8ßLÐKK= _r Û«Þ÷—Q먖‘’÷Þ“31pWÿ1VÔ&êŠÜˆÅ=*t·ÖÄ“»RJÎ…AõUõòdK5^žqʯZÕYŽ‹·rïsäM¼}H<•Þ§e_‡…•tk$°ºEØá9ÇAFøaˆÑ†%z:jooÚ¯ NJvÔè½!¥Èá(“Yçò08ÖÞRm¾((?اG’n|õ¸‘Š,°$?gn âÇf…OèT€˜Þ+ÔÄ‘åœ3ä>;Âfö;*¢M‰½Ö"Mú| G©lÄC~_ÉŒD1ÎøkØ<\Sùéç{i‚çfùž…ÊT.Ëÿ²=zuÞ[l‹P d}îÃX‹t¡>/k«« -0sàÑu'âŒ#Çuȹ9‚§í¢„à·£köŸªÉênó92ײ( Q¸Ê­ƒ^®¡+0íߨ2•[è÷TÕ$RH¬ ƒ_I†l™,´DðÇÒw”ú¸,çäãçgÊkü -4¢Ñ—(ú³‚?¦«¶ÛcÙ`‰¾ŽÝrE®d­Ç!êãC ã°™³\AíÐWdö5Ù7=óZOI\ùÄÝyô‡Š:PŽRfã…Ù/ë\½ãñÉû8AëÏäw¬Î/à®ùlrsfçfƒ¸Sñ9éˆ<˜+K7\Þ<¦Ýq@Nm”QezÀr< íp%¤èàšÞýGÒgr,hó$_àq"3›ë&É\ž ™dh7Ýe²ìæÁbU\:‘ô÷æA=pÿŠ'*qq}¬ïzãùæI/à˜ˆ¨1§¤Ëa0C"\håÿ,ÔxÅ>q ÇäÇvõÙÎU'½}¯ÞŠÊ„MÓJ.ÁõÅÇrÿê§ÂÆþÕ„ÌöásÕo=<ÎÁÎøÀ e8ÎÒz¯á—©–|‰‚lËçq¥4¿Ö.}n<ˆjoQ¿²‡‘»õŸ°½ìc~—-:ÛÅ–Z¼g¸¥5U¬rHßýª·ÿ±wu#§ª&è¨ìSM¿ÔXòúƾLEÿ7—5KëZ-gÍ<õïCI³ÝÞŒ½¥¯Û$d…bË3”Áh‡ÞâËÃxìJÇk©ÛÚË¢xýéï°2u½JL …³¡m¨%ØõýI‹P H°3Éìh:°Í–Äg'Ã`ñQ*ЦÇgž¨_ïw$wÆ’Ï%Éšù5-0I†æt)‰ 5Þ¥_)(A1…'MÚ¤À@tC¿º~s¸T!u®qx'(¾Þ"·q\t­®Ñ ÂEÓ^¡™#ú»KcF`ù‰ü.o¶ŠC¡15-u#Ó0Ž%•âqŽ$/Ö}iå·Ñ‰ ”ÎβæåRÑö19=£ÌD¥ÁvÝõïÁäÓ¤ÖO‚Î\žu}'èvrº^/EGœ†ÿà~<Ø©BÖægvýí µÔB3ªÜóðÙËÙhh²?(ˆ¶X½òžøeØÏÿöcô&HUF×"»£&ÔãñÜ\Ý˱%JÒE9*ˆ#ÎðI©C““¬K©ò´¸éYè‡|‘²¢GWJÄ0Æ*ÝlÆû} .wù„ˆ¸åãVCA,zƒaÔ*Üð¥ùO$Œ( »Lƒ†¬èB?¶,öý’“‚4LÛ¥ _¯E±¡Ú®”ÍÀ=9ó‹5ç±àR'»öˆÃEøö·c~Ì h™¢þ¹ð4+Ä•(@ó[b¦.´££ZáølâðÀ R/l³¿µ  Ë¢†6°œÊq=_è_gƒù?š"(cí žd襒ï—Ö ßüÒÏðÛ.`¹; q÷?˵ ‘"áaù0UÃC,9ç²È„9¼OT±mh ¼†ECl?¯ª!Èo·´¹Öþ1˜|žÞÖ°ãEóiL”ÔKàZÀ µFd”:Æž#UÑœÍâ'qöÛµ7+¿È­Y³öcJ³,$U?zð×hÐãWÊ:GWB##ŒVS£¿Ÿ(ʽÎhÐ&ÁéŒ0$ !Jõ¢ð6ô%pã_8|@e.´ä7c«qìojæñpN*Øm¦s¿U~˜3Kººûý!(]=Ëú²ô¾f|jOÊÖiC𰽘¡¨P(¥Ù†¢µs˜TòFYCÒ~Ò%óa¼†)ù~£ä¨d¬šþðÜØTʔѕ<ûl,k–éíuoÊ€Q?¾bÓñ“uÖå¼%!¼°Ãž6ã3m®¡¢)ÞØÚ]=$‰£¶˜fãnC:)½èn5jˆ ¼à ioŽ{PÏZ¦àÀm^L:Ö ™WdõëƒÝôjt¬” `áÅH-.!)\†Ë`Äyu Å-‚t -Ó5žˆFcðBçj¥˜º£+¬2¾¥®ç°«É;AWÞ¸þ¦ ]Fô?½X¸Œ€Ë U!¤Ž#Î:‰¨íÕæF»ì·vR„ÜŽæ7Bܱ²å(Bø áì/4Â’=* U ”ø€q[‰³+q.*5rÝ E솬X Õ?§²C³Â‘½ÞC-¾Eœ<ÇšáÒ¯­¿]bZú)’cªpÈ9nŸ{:ÌdÛ®óýÍ:€À«”·¦sT¹VÃìº|øn -Å’3{Lé »`œe2ùÓ®sf;¤ &àå~—A!®„ûwCµ÷>ÝÏÞ(êaÇImؤð«ì§-m®, -eäæJÚ±ÝÕ7»UqlÝç>D¬qN‡i¥Ð\ù×Õf¤<`¾U"ý2.R>Q;Ù¨ÄEù8¸Ôa;ÐÛ*påð~À]mƒ÷¯ŽdIî…É•l¶ÎÉzT»ø#)DX-ߟ`$.înÀ­Ý‘'HøîT‹K‡±ê{`æC‡¢¶16d£\âìOÇ&ý“ì/®ÀúB$±´ªz^£òâÅz Ãk¶f}¯½ ì_(̘:®3X>«ž²MkG¥¡æP4ÐÌŸŸfÞ+ä\-oÒ†DEmc#(lë=ÌÓqKð0˜®Ó†‘Æ—™}vš2³Ès”}Ùß<ÓdŸ÷È-ö¢¡Ô\ƒ\°–ñ÷§¡^¬¡ôsÚ¡7õLÛ ØÐp›¹^Ù1jŽ äó%!¶_ƒñR‡#O ÃûÛºÐ=ªNé]5<ÞÒ^®÷1b¦—iŽÝ,6~Õr¼‘ }ȧÈ÷êèP*[ mÒ¡ú4XÓŒÒèQ”vƒàWaó­§/Ÿ%}‰ãÖ¥™Ì˜1l”pø‘›ïBl1.Œ Ë? ¦”ÚGˆ›áW ¢«ŒÎ…R)“aÖ*+ÂÀÙ›hh¹yiïƒÂí=bˆ¨ÓÕq æ×KjO¿¯rEØðuít—úMÇr {¼8Èz¬õmX4†èÝWã^HåŽÜ¨A]p½TcÜdеÚS$“•”´¼}öë:Õ¡þEzŒdÄŸS")´›ŒùãáVêÑ9?¡Sûñùãã.WÏmÝ?«!=Ú -Ssš¢&åJÇ.:äCeÓ1œ!4´c"÷ëp+âÊ …^SœÚ¹ŸH—q9‚˜jÇ<Þ³´v`I`ÂËrCU‰X½lGÍ)¾Åª3«…(Úm8µ‘ L@nÙ2„¦1é -ti}3vyU6óåeJûf2ÓÏÕ*ª4œÉªÊ7Ö—Ìþ¥ö.}Ý“wHt–·QéhVc ªÛ®ÿ04‚‡ÉÃú‹4§fTÝzÖ’p*ñì›^VÛ=ºœC«T -h/õo£í-ÇËw‚:$iݶTÝ;Ë6Åû·ÙôŠjŒ3Í€2lm°óݵí•nQ±_sKž\Iß(eó.ð‡~µw£\äðEå/ì`—Ä?5À5ÙÖ¹âVqù¬Yš@Ã{$9Àoۉ㘯câHàzÖÑ *[ˆ$£Ó\×T ÇaؼHÌr{qX“B7Š6n³eJÙ[ç^9¥y½æázÔUÓ´æJ (Jèù¸:±zy^+àÛBäfSDžésæû¦Ðü0R&Š”÷‡ãç&â=^¬”ós\ß8­Ñú@áÇ‹ŒvW7¢ Dòå ˜/OØ:h. t6@ˆ(»BP{RKb/¬‡±œèª'_†ŸÂG•…A6°íPêŽË¿|‘×KýÌKl¸ÃtàÄ[å¯ê -EbRÑDfHÁ'¿^Lu×¹BoAš1½ž>î ôµ(Ng GM¢ããúI¼ó,˜€¾e Ýä‘”uø‰(Ô¹¶‚þœÜéí¤´6‰ÑgÔÔ5Ì:(ÜѲù$ø˜<œûBýmK×wÈýYºLþÃ3¼ýZ ;«Dº†þ¿Ì¿ã{žqÒ§±øþ »0'þ«à@À—$aõ“Ô}à¢<<„Np÷&|Õ F¬Aɤ…àMÊsOÂ>O@ѯЭéoþw} iÒ~7¦ë{´QFŽú ý}ÌNX0J¬-šÒŠgçŠGÏ‹tEÛhÎ2ªÍo÷ìEò–¯}ÍRØÛù§RêˆU ;Røˆ]ƒrÁÁ¹hy¬g’èBj3Íx¨D [`Nlf£j]½ßn/jTLÏóoŠè™r*ÓÖ&GLjÊ~ÞCfÌtí ;è¢2ÜþK pª:BìÁb=25<×hJ5"mI)î|Æ>¨ùxc艱?²»Z¿…±7w(XѨšÒM­6{!Ô·KI“"V6™Ô' œo‘ƒÄã~™U¨; B*|ji’¥ -N$MäO2¸EJë­S©3éâìjxT5‚®ØúÞ´¹Õò/¯BB{¦ò•vë]XAÄ1^, eòôb‘AÏuoJHLSS¤$z $Ñ Â{ñðjæÿEªBùäR"‡+kzþe á9IÍq^HØæ‘Y6KirÔ’2Ò)£¤:˜v -WŸˆõžˆ¯éæimä㜠Z‘šLlÑ1&¿ÿ¶„C€ætD¤é9_Èÿó¡BqM`Ä»)èìɘñú2á")œ\è¯GÓ¢¹Vúì÷ Ø'7@VˆÏ’I6­hVý€†Ð[M\ˆØ‹ì>Ñ0ST½0—ùý”[oyÀaß¿½¾/¸¿K¦:6?XH±äïÒš½Ê7t„¾(D¸`½’œÌñ ¡*½õÆ<[‚;¿ÀÀ;zB„:̦,u5 œTm’&§òæ)²`cƒ’|ÂsE)é$Ïe"oôÃO &¯îíú¬^×3»Û‰RäMgwÙå|Z¸ëÉsÍ9Få SWå|ØðP÷`“ôJIsÝౕiÈ?ù9r=k–¾×áP°«Á”WÌl `6±RnyîžÎqÙNèpLí•4to³3 å8þç³J §W‹¡ÝÒ¸nHeñã+#VºCʘ Íèy‹ÏKÜmflÑóàÄ^rYóL.­àÁ+2O²K[¼wdÈkÇ3xLjW|4#ýkaì€|¾‰ˆ2<ÇN×ÍbÍ°ã¶BùŒÈ@lXÿ XȆÒ€P=zyhsÃ7TÊ&g¹‡)ï²€¨]í/l±æs'½“û = ø±ûàðÏ„lå‡ßüsFÓõqŸyAì‘#_Ÿ’v™*0Ö1²- t·l8Eî¡kR‚§7[é—ý êŸ<îò iò÷ÓRcX<žòï*  ±É>AÛ{ý´Ü\ã5ZP­Ë½DJÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:uo‘·WªíŒç–$i@F>-CX­³ïeHÎÄ4‘ Šê¢ôˆ8uêD.8võ'nÃeòQ@cøbW+¬š^ÑéÐ1zƒ|<{b¿/Ëk(Å'Ã/1ûG“¤ˆ„QMgíD±L!Šg+Oà]å}ä`Ÿï¡u_FçHÍR¯Ÿ~TojþbÜ•H¡‚z²atñÄÁ¸f¦G±¥ì›³)äÐtMÂóïhÞYBS=°í¦Fì ¯mÍ•ç8¥õêZx-x ã{g=>ÉÖÁŽòýµìPAÑôô2PvDK£˜7²@]Œ¾¬ÅÜãq΂Ze².h/xS‹HÝIW~òàèÙÀö@%ÇnP¹5À&ñvT÷1;­ÉÔ‰´Ϩj`M,*Ó©IÔ”ÂÝÄRj%qTù* -F¼½uv2 Í…°wÚ3p\àxýå6ú2i#;~sTw½:*LÓ¯D3Ÿx8tÔ™ýaMèZS·:©nH—¼œ íNy -yØ­g#J,“`yIg4éaÐëßdÛåb _ª—‘Hfó×Ù9À±¯É(iºÁêH’éâÍjºCÉ“$!Öî(ÑPƒäÜSî9f’þW ÐÉ»[3*Øø?o:eEgÓã|f$âÒþ´„¢ù*iÊÓÿ©®U0C׃Ñ>_íy5ÞÉd®ÛG!ñwü‰¥«¤¼il™*ŽÐà^D¿9O~ë‹8m8 ¢óWæλ£Õ6jªÂ§p¢¿P΂1hpBfá5jdô¼%c ¸0z–î2aS"G¨W !ÔÕ â©þøTÍb8j 2>n†¾:W)ŠLüŸhÁШ6¥J£Æôä©®à±|i R©ÆA5ÿ=OgêÍCl’hÕð¦q›fª>L÷RÑ ˜ƒ¨ä€g¥ý”»“E±U×Z9 •ü{'vÜ÷¡¹::£®“Q&ç.‡k;7uøä¼@ºx¼Á 4R¬£ubcþð8”Ó;0Pö]¦4oiŸ×Q]vø‹>ÇÔ‹Ûd/ â 3Ñ-W7 ›´½ñ] «C‘ý}ügÎ},¬ášt›/‡·*È}Fª@¢7 )јö•ø3Ï,ýÊšþáÒtJRå“W nÈä›ÔÙy1OÊÑ{,±Á$C`l—±z„F¦ÖÀ ÆìÀèóPÃOE~®§þNc{EžÐEÃýä‡Þ$CøïÒ2Njü¿¦6^RŠbÃÆ »è…O‡I`‚Hédûû™ÌCìþá|Y+O’%­Ð¾vÊ%­îÇS{}LháÓ0û+ýÙ¥r¬g·§¨KUåèiB«]´v× ¼Õ²[šJ'Ÿ»Ë¤]K?€Ù=‚ ÉNˆuØØæ÷n‚«te|‰êÛšü2%A€ta_t*é?µd@ß™æÜIäÐ’†á…ÖŽ¼2Ô“Üqy>„»óâ¾âë;i íõMV!¿Cw9~‰W^o #Ãkp<Ñö+ÞjÎöҕݑϬmUFýBž† ÆÎ@“âñ¨Åm®…œžþEÿˆKV@vGã~>²á©›Á1›w/{ØÉS*g¡òemsÅ'[É7TÈ¡ OPÆŸtד††4kË“»jMý‹ýP¡“…B U\;Óm¾v/2‘WJy&$IÍwE'd”…UÂG¡Þ¥âÛ“ÃjQ:x£ÚoS¨ 2¦æ0. ¨‹‘êÂÑø–»ÒQ è‚ëíièˆû¡â+m[RIûzŠ¶†[Ž?ÝØÏC¢±\o·Û–*¼­³0\>xƒ1-²!Ìu3︒c»‡¨sоäÀSƒ`#+±9ƒL”ˆ²xŠüPN‰=íÎGR%ˆ=· Q‡ šÝ¼SWî_XUV¶¶”¢‹µ"K>1Sdydæ¦ÝÜ:‹øFô̈KfyÚêX}6¢…B´M=:$ô¿ôü |~ìá,ˆÜìèŠ3¸×]º³gGb^!oŠö,†€v]K|ÓtäÉf®KïMsÊMßãkêlm¦ž+}w~ŠÛ’†ûî°ò8÷£„ €hÇáúªŒ»›]Ã.ÚÌ^4à˜êÉÚ!˜í÷Ò®›¾ØF§€G’×ð|âÖ»8Jìòëáµ8áéclUéÅÕ6J¥–ôï/ÀW\ÎM>ëô»Á‹èQsµVï@d Ô]:JÍ4ƒtQ·mçæš3#F#| J¡®˜ÿ‰~~&&;Ie-“]÷‘³š0f»*§$R}â}ç¬g=ª,âÙÃÖzC–¯#«aß1ºhoÜ"®êÓXgÌf\÷¢çõ ¡oìkÅCÉ/‚X…@œ€YWŽ}Jc¯§[‘ZN\]íõ³ÍŠÚ|ëÓS¼fÞ±­ç‰õ¡-IÁ¾%4ËdH&s†b(0ØïnÈãFÕïÕ Ûˆê<1¯J˜N×KÁIÕÏe9W¸ì²–&‰HðžP°vtâ}þ€­ŠTÓ£Ü'Š‡aUÆu½Î+ª*7RI‚EÝ"ÕÆ]µ}šÞM,"gß($ ‹ãKWJ$[¹. >èø­0-ÞËóÀQD}è5’‡A»œjNsbéª j)ì@PÑ™»ÈIªÅ’Þ-m´Épök`àkƒØ© 2¥j_mª¤%¿¯Î<Û©ˆn¡ïôšyîä•¢Áq…ØâìHÿ±ÆíR0<1Û¡-ïš/§Ê鬙Ñ";€XP¢3bØc ¿[WSé<4S78@^›z¶ay}7»Ñ!HÝ’ ½Žzd8NÞg,Ÿ`Sn¢Þ+`Sé%φx\1’8å‰rVï“å•b¥ÅŒ8A#¬Éß>0Hì£ò&©r‰ˆ¾‡ã WrØ1w-#±\¹ÐKÇ£$‡9ßáè“,ßiŽ¬L«zAŒï f§Ÿ3‘—+ûë£g‘à'¤žÁ¬*”#îoí0¸pµ6p_ M_ÆšžË‰#…=´Iÿ+³jT$.(¿”óæ²Zø`‚KòAM Áp‡ˆ§x|Ñ -»š•?s9ЄÜ8owÊí>Í<7ààò⇚ê÷ú|¢#dÃIY¶ÁDá²áAÀ1çàãsFF|ý|¼EœvîðKº?t”ã#bù·Š¶}ª’% Y 3ô#»…¥´:ÐqÒl9Wo«‰ jýäûˆøÇi¼àòs‹Làý©àâ­zx¡bxEr·“™Ø(¡å6T¤À-ÉØ¿ ö23ÝÚÁ¤€Úô¹„uÚB¦Ùyƒ dª @ˆû,Š¡ø¼ Å.I¯ -ÍèR‘ÌŸ–Ô£ÁÇo_e‡œ¥´úõcç¼ï”4JÎjÇ -†PЗ¬ÙG—h±† ëû¶ûe§T£lù½þ-ÄpͽƲ v,…{gï]ÌÕ¥\üÔ¯UÝ9N&ˆôx_²ºÞ‹¸¶ÒK§m‚p=‚ŸØÁHÄ‘wþþ˜)],í´T÷—Œvê@?àó#ýþù››‹¬"F–d‚ ){`ÊÆ!}ǡЦ2š‰¼…–uåF‚ $9 --G,AO¬7³}#ÕÖ_ê,‹màËG”­¢îÎÊ&}Ð õë°Àz}¸%6šk¯tºÄG @Ñ%¸#º† -¯Ä™Äp¡ÂÀœ:ƈk d–w¢p_H?ÿ4lþ Wz””æÿŠêÂ׆ËNu¹Îzk:ói8ÀŒ’™üR™àûï=Ð#*õ@Å>x™öÖÑ›sa =÷2h…¨í«%êÛZEµCù—¤(«ÜX[åÔr—ÖòÅs,3æýÉgçUWiØ´È8HÑvŽb+YÉý‹ñ7§©¢TIUº³ô Þ#Ø£¢€P?E`ýD&&6×({ *ÐëFÎ\ÍŠà_±¼FŒfxPS¯ ‚ôn²—ä– -¹/Ä)³Àà[‡…\¨êˆàt4 ëlbé餄¡Ÿçbï‰Aþ‡©ø×ÀÔXÑC£F€\d#›ºDèoº’³q‰Q¸l~vóøtF½]ö ïÞÄÚ r–l˜Úe6I‚*uäs‹.+àÑ«¸àUÒzù·ZÖ †e¦¿¸u|Mëñg259#\°Ó§”{´ºË¿a19ž:žÓCK\Jxß„ ¥‰™•Ò°†Tökû¤ï.b´=ã¾%0ûƒ`bóJœðí ƒ"Sý9Qšy;a^BœàÁ…á{,w</Žë~¢Oåx3†,ÿÞ%í„øµôrüoX6~=Ë„ºº@x!ñ#Àd^æŸ -õGFDeºØ¼&a¬n97‚}?`šÄ©¿wWâ÷«SS___°6š°¤~cè¹·°€ê·Ø²^²nèŒï[{ 3±<*v—Ô5kç”T+'ׂipщ>zÞ[Ì&ÆX;$- x}:lŠ0eÐ<({.Dö‹ªSßãÿWöl ‘eqRžrëò⚧;#/U÷Ãì[K¦åíìÕ¾È9/ï—ìz¦H¢ éÂ-$VñÊLÚF¤ÜEãƒAÀê{ü†›æ­›Àlµ X­==…¥Ñ ¥– X2¦I{“̺è3Mª„cú0÷Ç–â -¿SúGß. FËþRãš””‘eNè Q’dWRË-ßFIÈU;ÿ{)¹8™=3}ºnyu~‰ôCT·¦·^<ö]ˆõ\j‚mElDÆÄÂh¯—‹´{€ÄÞÿ³‰ÆM5Ëóìx¢Õ%—y:'|‹p¿ ™5ÿÍžg^)`Bò¡ƒÔ|îÌÙ¾1ä™O¥ílwv1'°rñ§‡ÞöLàrM©S¸-ëKÏù¤1i+a"•$®$ˆ -¼Ì|°Ûù;žÌ¸ô´XáºÙš“J#/•Ò1¿äÔA_Hù–ž.3hLâÚ ÓЫAM'¤Èbh€ÞNe— BµŠ'ƒ{Àt¡9,å4†¥ÁS–·2fü?;™ÒmÜPßÁŠ³ª½àﶵeÆ»ú²¬ZvÏFÁõÑñç#Ì1ä\Æ9ËI-¤ + 7%LMå‹n—ŸšzÅl¥½ýHݘU¸a´Š¡ûQtBK)®&¬Í盹j€‘@æAÿ&YwZp@mŽØ3ÑØä¡à éº¢O•*2n‚ÑÊÉÒTz÷dz¬±-‰à ÉE -?ZÌŽÊÿ,k¡|…-‚ýœ*ÿë6×÷õZöð öŠZ©w…Þœ¸]Öjñ?ñKÐNOƱãÞcƱstÑz%”ï¾KÇ<ûÓ-|Z¸ëÉsÍ— æ6µ¿+DWF§¶ˆ.†«[“OÝÞ†;'ü$«:vöÎk[¯hуÉ­¡ÀPjÄ%Aýû*YS—.q~üûQÓûÀ±QO­ˆz~¦Ãº> Ì6iû´à7}^äFò•CQ²šF'ãË}Áš§ôŠ3$½Zœö÷Ñ4ch¦‘np“ ǧ³LŒ‰’ó`¢x—R HêI<Ý>_¶ªud?Ÿ)9®Œxšc9÷ L´b(Å07DpGªœÄé¡+FQÃ(´Ie'0é’§ “B#õ -$Œ;Ô÷²õMÊg˜qÆÝäÑqZ$cI%å_ÂEñ/JZô Øž¸ÿZ1¬,Ì+_I3AäB%^¯‡GôæF†-6«øA¡úÐWL~=6Á>4ªê®æ¶P@æx -Ub]>Í̦ì¬*¢×ú4æüxmFû.›ÿLé!86Æ»ITÁé"P\¬Á¯ð) -endstream -endobj -2230 0 obj -<< -/Length1 2210 -/Length2 15959 +ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U +nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ +s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× +‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 +9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, +ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. +>Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH +ƒ$ü-UÒÛÊ3¤³# +endstream +endobj +2249 0 obj +<< +/Length1 1188 +/Length2 2740 /Length3 0 -/Length 18169 ->> -stream -%!PS-AdobeFont-1.0: LMMono10-Italic 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono10-Italic known{/LMMono10-Italic findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Italic)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle -14.0362 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def +/Length 3928 +>> +stream +%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math Italic) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle -9.50 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def end readonly def -/FontName /XVBOSG+LMMono10-Italic def +/FontName /DUJUUF+PazoMath-Italic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 44 /comma put -dup 100 /d put -dup 101 /e put -dup 33 /exclam put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 45 /hyphen put -dup 105 /i put -dup 107 /k put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 40 /parenleft put -dup 41 /parenright put -dup 46 /period put -dup 114 /r put -dup 115 /s put -dup 47 /slash put -dup 116 /t put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 97 /alpha put +dup 98 /beta put readonly def /PaintType 0 def /FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-491 -316 834 1016}readonly def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-70 -277 902 733} readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXì]› >:|s‡¬m’ºÍeaëŒØ„Œl¤·½v+¼¿:É‹£²D¾Ý([žÕˆÕÂG–ðúJJ¸£O´½Ä™I¦ªzÌ&ÀEnqšJâýEî†Ýðz€é¦&»CÍýªçx›h“+ ‘r‘nú«n¨»DœgúÃýEôŽ¼aw'À}ô”Ä|Ü ýꜱà$Ý%É—šš ד‘Z—VûgHTC(ûŠI_H‹áæÕ7}$¹%Ž\»yOaÛ‹'Oî¹ÀiÑÈ‘Ëi'Ç%Ïo2ê{´ô«PÉQÝwµåŒCÆX7%SëÃ?sê¯Íß~Õøu'iiqøúì³€þ€šN ÒÌ3w Q÷EŸ:šuÛ廕=šÓÛL•)M¿o¨i\ÉÑd·!Š®Ò<’ž0´ÎZEÑáR’Ë%qa‡´` ³õ°›Çkûâ)V&ìþ‰#û‚ÑÇRÇIœT´xMù‰k'ËeœkðŒ) ø}ƒÄIŽ¶³\ßqG¹#OÚëðv1ƒ;ÒdæpV5Ñ <Ô^¬c× ./#Q…E§UhÌÞZ»µµO÷¦GU˜c‡èeÿ¾5E«Ž„´»I©rô&÷¥¦v1Uçü4˜ÌSNä7èÌpk¤ÃÑøÁVe^qïÉT€†"šÚÄ•>î÷UѪ¯j "*ÚÈÉåá¯}”Iç’˜Ç]‹K•ÐÍÿŽ‡}Ø_p¸MVãÂ|~Ímv¤Ò5Ñ°¸žQ+-0"ô&'ƒ˜OºÖ`¶Âï iåÛmš¦h›¾)6¦k‹Ö¼eyˆj/ÿÛˆ…¨jú»Ýåo<“LÛÌC¹8ž&n°5Ì9È(àBüš,Á]©š;ˆ¼¯A‡4ÉXDÂÿ1Gv³èËJCò2ŒXÜ:.'I˜|ØÐ7ß©OŽãÖ—‹1_r:~‚–¯¿î‰ ŸŸ›8U ÐpÖ¡ýaErºÕ}Có±wú ¦{˱‚…½œ ƒ‡§l[]WóVëz,UŸ+gR訑²£hiLº¥][ƒcm>ǘ™b‰T08›°ÞÙ©ÿVAýx`üéðÇ!øä­ æŒÎw -.rmÏ){ìûz“´´"’ªý‰²5îxÂKå„0è9Ðu¤«@”ÅQ‚jS¾›_‰{•|Û'«¤€/å VF.¸ÄZ¤Á!z‹;ƒj”p.H‘¼R{ˆhBAŽ¡‡+Áiù*‰Ð?IŒ¢P„¸óøòaH‚È…Ár!ã‚~¢oë 2ÚßA9 SOœ}ÏÄž~4'±F§g»Cp’Ý|ºx{—ZÌ(HK›êÕ a[•…ï„,~m€3,£ÇÇñéTi”=¥EXò˜åa†©´}åÓÀËb9û-[Jã"O{R‡…ó1à*¤ã -–èÄÅl¢ë7H¯³.Ü×Hͺ¯ãァÝãÿ+2¾yÞºÊŦßÕkPG…v„´Õ”ƒ‘‹|¤q›+D€µè@i㻽IhJeþßH‘ìüõÍ=oÌu¦?ò6Ð0û+ýÙ¥r¨)têðÓlj»žñùÖR¤¾h§o1Wˆð”ÿLdO(üµb=¡5ÒâèN‡e@³cñ£¶H&Í•ð!™ïüôT¤ -Â)¿ˆWz½‚"˜_®×¶¡Ì‰VfíIfygñEŸYŽ<ºáÝ Q«JU÷»®œÄ$âwx‰SGZë…Éc¶µT* èOÁT¶ÿc bGn5ÀµÞ¦«¤ÞÖÞ2ñTMehXÖ=,Ðp8‚ W.©^ F¸`¸äz@}¶¤4奞3å¦Ò<ñT¿;0"eëø™Dï€Ï_9QÅŸ>  Y©cpìþéÅý‘ô³c÷†Qþa×馦î½m®+—rf]¸kLfzÆ/ÇZ=]n—Ì}Ùx·Ë8ƒìH’þ È›Q;}Ø7¦½ÿÓhG¼ñ šéZÈÇžE×£ÿjLÑ*m]Û´¿gN>ï2\s5ñ¶ÏŠ]k³âi'llG^}žU?fMUJÐìf&ŠŒcvRm¦a0$UnåÆÑ“IàjV;9ÌÛÏIº7¤®B›y`‡C‹Ù–ìgRËjQò‡bž»¢ºá6½0™þ” ·þyñµ› ý®,>vÏèîúÌ}J²b¾¦Xªg¸üPx|<ÂÍ’U%©ÀŸ`çÕ¬Uò.`ÒÙ -Ÿ´×½Yé)ìÕü “C Ã’ÁòýNþÖ‡0FñN… 0¼ý+jI¢‘&Ì -ØË{e~îØ_'ýX^®jRT´:3€Â䘙Ð7Ù9·rÖ—[X0%ŸlOX?VÁ'ãfmøGmZŠlÀ¥±B Òë⺵ˑ1§mêÁf§ÄI¥IêQõ¿yÛçwH(xtçÛY8fûRëžò±äb5j¼¼t‘ ë‹®‚ÉñNŸ;tKQÜ×Ò–_׃HÎ<‹c8GÞ`ŽdP]èj¢|é´Ô‡­j -ŽýÏ&»É¶©Ð¤c¼·•>(_Ö&áæ;óy¦¶ úÔã]À¡Ñè -‘±•·àòçÔª])J×b> w«’33ŠÀÚž¦ÙåŒÎ¾ç`ŠÅ¿„´¥Sçáævžmß¿LÆàoN"¡uÓoq”ÁðÓ–[˜‰cg† †7˜'î÷B–·wGɈ«é -üòUÝ|€$]žŸÔ4b€“©šak½ÌЃÙÄ Õ6ȆÒ[qÄz¶B³ªùv_÷ÿ.ÂÂAvÜô$ϱ€WäÍBÈ®á¼Ì¡ ÂÂÏmûœ÷~ð|Döôä^ʉÃ.ÈçÅ8Ì.Lõ¬ì´‚ü6¢2`dÆ…tû|Á¡]ÁE04ÿê$?ë¬kÔöJ!ÃËXg ^ûÞbÀÓ£JÛˆ ¦ä}3œfü$‰4P-dÔªÃuAz)] ±{'a[—Ï` Bwî~¶v9+„ÏA ^9Wƒ°fÕ¦[®J°8~@%|æñüF,ÈThÕ›Ú -rÆø<÷HÈ“ÙBÁE Lü֥ƟïÂ[`äÌëe—`€ÉÉ;Ì.‚sî4äï{8ùâ«=3bþ©¸1âiÄü‹,uáh¡1¯Çgs+Ã2¯Tpe:e$äýÏÜ­Ä -U;(©Ü3UŒIi”w>gª¤Å3î‹ý -ôîº,RŽâpØ‹¥4eÝH?6«j™Q¨xÔ[ßöÓ-ÆÄ-ظÜÞ÷y‡È¿’'˜„("î‘Ê_TÛ´Ú$Ñ4—ëæ3Ùà/×ò|…,—Îác -©šû“ÓTƒXЄá<±¯©©m5å­žÓ,ßð„ÑÀä‚…ë\×qÐE)CdW ©è0Àe„…Êcm|0Ü@ÂئïM…5^Yn&¶uå´6M—Xÿ¼%òÖ`Èñyƒp'ˆ°iÚffd¢ÜßCVì¿3%¢IK#ôsyöGð´ÞCh> Mú[’ÃèJÙC~Û}Pq_ýyóL+ ™ðŠ¬†Ý¢N~–׈Tr¡ó -]uÍÄ°Eþ)”‚bâçƒE±{‚–†Â=”ëêlžeÎݶ áø— -—;S I×W4Zi*I.á+ìNyqW· .U´>u}²’ ©­˜`l$ŽDSØë­ÁŸì3ÝoFo€3,£ÇÇñéTi”=¥EXò˜ã†tÐ94E%$â^FàÚé!‘}ÕØ7êØS7†ÐkDs#©ŽÛ+€6'1rf*gÒõ¦øoû¥Æ&z* ¸Ì{Nl'{{¬iªÁì5¯,>gJS³¥V~ó]X;©¼”ñ1íÉFÔ!´!üuÁ>ïìc+&Z¼Oqd4IGRiÎŒI‘ Șzw»ü úš’‰†ko|øÂÑi¶{2 [‰¡ÆÜ0B(Þ-àT¶ý½n¨¥/æµÃ¦e /´ÉçÕäôoèJò™–Ú~†ÐúP„IÒ!|‹Ñ!s©ÑdUg~2ØM¢CK”¬àöK…"Kƒî”…&”==~[÷Ëï†Û*±Ó¡ø™$‘Òvbж#šÉþǯhÓR|-‚âàu2 À¦SøôyÿHÌÃîº+uFXÞ±ø°{ž†A'âP7öò&O1UÔÝa´Ì´âOƒ_ˆ†ê.÷éÁesgO3LI¾ìõ×RÛÒÀUMDY’IãZEn&ñrÒ–?”sÝö%Lb?Ñ3Q*Bh{KfrØ岿QŠÊd Ô `uʼn³é~qvb©}´^Z– 0G>Ð…®"ʸœáìiXì»1($j2þjÈïn”›¼GưƃgNEÒÓ^•ÓÄ<ÜSàû“ê[á¸V îŸAý y¹º‡jÿ§hóàäÑ)E=̇ÒKî¹Ü£ñ½æ·ˆØÒ\rê_²9p«o%˜àaØ2áTue)ÝÒÁ$) òs6à ˜Ñ5àÖ×}ÉýTÏ!òÿ3ó'[Wýk"}!,ñ³Å\½·ðž³|Œ¨lœ‰Ù¹+4¢á²c« -Ãm‘»;qà@¿å#$Ï…Ðç n•x'á,Ë~"wEÛá\çš‘Á3+9|×¾õš ØèzŽ‚X‚À) -{¹•˜µt¹|@`qR"ÐÛ¡Œçæ˜#}Õ³|¡Ü®ˆ%ôÆG"hæo’p?OKÊx-"Ø¥ƒwõ±–äÑ\pîbÝ5™ƒyMõixÏ;ˆ°ó³ü77eìϘߒ’ßy^X5Ó‚~Œ9wgpÿ?¶ú^( Þœ±}A§’Hj0UE‰N - -ì8Dǧ›®ª©? Ix ù^{Ûi¨#ЛÒá Á»œ†BûÀ…F\ô%sÈxåáð©/&P\CXg¶ºJ;ѸI ½Þ9ÄYíx–*Њ wóx®¢“‘ ÊYé<`X’ÿ×$ÁöR%½OØKÙ89k3›ØgÓl˜õÄâÙD§¯iöÜ‹Lyp¤À:r Û©ÿá×I·6Ùjƒ9iûW2ÕÚøõ®®b›y/¥D=w3<‰(î¾ë1)Xqr¨}b0ûÇ™AÑDÎG9០-ß -&M›øì°kQ—æ¾4T¸Ê¶ÕòScS/½²O“â«+¤RRf‘%£è"Ž½Mƒ<.è¿b{ùôs¿À|î¿Iñ±/Oe“‹Å&{ú¿¤Íµ; UëC%N†X˜cL·hè]*¹Œ'jL‡pÓæ,~ê—YÓ7¨C~ Y®ž¡öl/ˆÀcUÆ#Lš¼zTË—!Ù±œ£ñÅ‹pÓ†Îñ_‚bzIš—NDÃ5¯ãÜÚ·-þÝl+›&æT.ƒáÈè¯E2U|§£+… -(éïy×òžy?oØõ;!Ÿ/1Ùã”F|Õƒ¯ngý6,¸/±Ì1nZïÈ.,xy°Ùj¦¸@>xl5Ûvðæß²ðɾä"“Ï”asÂÏRW‰Ô”’¿1õSbן6,0]8eÅ -Ã!ZË=µ‚Qo·$l{GáÈk‡Ø„ýyÅ|ž©”èù-ŠzW³‰þÌÜ¿·°ÍnE~#¶Ïs'¨úFpŽÛ^œ?”JÛàm7‚Eùψ™P—:n¬¾s/á€}Èò•úÙÏ묬Z†bÖ|QùðOdÝ¢}xnù­úÔæadWþ¾ûÐÉ/Œé×™UëhNo&›H}n¾fnW¸£übü8…`¬š+ s}³+R‹¥F5P÷§ªâwd˜ -åâ-4çLÇþ3²÷Ä<3väøjSfÃ}2³ÞdLs¾1$…ù}Û´XŽ=Ôøäþ“ëÑ\™ ÔÏV0'Þ– yÿŒçT-·Éåd(3k¸Ô%ÇR`ǺŠZGfîk‡˜ò‹‚º´'Ò³%ŽËxr -Ýžý*dúDâúì)!ºûØhü^Av΋Š˜l;«ê¸À¤â,X#R¢hœåæìÐJ ¦àH›ù!5£”8+È¢©Ky K]ÈR^BÕóï ¨¸<>ÄãÁ5(nÓ²bz){yîÍC¼á&ËF´ÝÍoõòÛs%›6) -–̱ÊOÇÝ|ú›%ã×ù†°#ºŒæ8|õlà%žYšÃniŸÕ7?Àb#@IF"MŒXúù¦ž ‘³êÝó}¶Ækxõ£z¾øÜáºAå)ê&¼#¤iá:»ÒA˜Löàëkip«¦?å? ã)ò` ¯hX)&ªÒ­ÃÐ"k[Œº+ÚÓñ^—pDÂGh61ÞøxÞQ™€—wŠ‰šn,/,·éñlØ Æ–þ[©˜OÇ1’2¹8j“#mGÄ'$¾zptr,ë•4q‘`=vsý»ñ´p’E”…Ú7=p¦HV^VÌF¢Ã[ˆà"áӯϑt¹+R÷õÚ_:9ýï­—è8›æ¶bw=EW ¼`â·q:³âP1qOL- !í˜1«=ë‘ÍO;R²ù‰‹=ÉdCƒ¥õ®6kº°t¯^X­¥›ÒÐPž¥ë‡}W¡yÿ4š8#?RóÊÐèCâºèT§v‰ód‚Ü7G«2Â"õÂ=´àX¶[¬ -%ÃܧRÖK{Ý©I}ˆÕ$óY/eÅÎT˜Èœ9ó{—CÓÕâÕƒ¿[*zQÙ ž(b%¢bÚ>³\†åBÿ#!¶mì/fß=_ŠL+¦C¿êÁZ\…=ÅŠ;à¶8áfÚ6,Çx‰T!ñ¦`=.¯·ÜPkœêxøy„ùp§yq>åFhRyß\Þ˜úÑ{ó t4<ô]lâØŽ'%¹*ÎÖÿ‰€ã}A` p Áz¹·ÛŠñ̤PR‹ iieDö±ñ)¨¤’~€Ÿ¶ÔÂ÷ú†&£Ú´o—Y0¿/ãx¿ê¬HÈØèì,`i¯:…òL¹"ç€eJ™é¹ ç¼w…ì< Ê GG"Ä°c¾]g;qdZ‘*Í<›¯Í³.Û¢óåÛŽi÷‚ÊÌUnMÙ’joƒÞ³áq—‘×ã£èo-ö¹Älÿ$Nc/·Ú7Úäò%ñÍÂÊàÏêiö#“î„;Ÿ‡¿T½’—[‰©}´׫„{¦Ê¾Îæ~B¸ôžÐh”~€­£ÄÊÓP¬67.Åp›Rà½ú Ó%ü”{™Ž¬=gnñ˜d´#ï$(ˆvå´š…æ '`¥HÇtRâù† Iž‘ƒ¸0ùFVÁ¤ð¥Ò²&GÙÁyL‰–FÛbÊ OpäûÁÅxMÊa‹ÁƒÐ6ÅêÎ<½™Où#'g‹P'JÐßr#R—Ì´|ý»bkTVrfê/Êe¼2ÂvyiÖ«â•/™€krÚ|ÃúüŠ÷‡Ž°«1PªLOmx,Á‰ï+Uv­TÉV냗Äâ‹ûÀlÉ!ä•DYÎ;üzªº1u.ÿÜÃÒq>î‚W·;²ItM8M‹ˆ»¡êúTFc÷: -Ø¥`Þó°í­žẆá<ŒV_“Ê>Òe!þSžKЯB '™==dÐHÎ4V ¿Äa⤿wÁ01tÙ%°zÌÌÐüˆÊú™ƒ–*ô€ÃÄÃQÞæsM à âh,ÏdÌl‚šJ®d…&e¼¦´Áƒþ•ïªÞ6vYƒQCBH»„%+"NÛn‹bÕ ædÍN„´Õ*É6Ça6é}°Q¾ý9-o :Õ,Š™GH€™£r±9’9[Âø U/°‡`lñóMTÝÄåt¥Ü[øWB«Õ†ècˆq™¬÷6ý‰¢s<‡ÐÜ@Nþ Aè‰ P.Δ–'F8QHëĆJã–7©M•j÷­¯o2jœðxŠrCÃF!Ë>eH{r¥N N̆Öýz]Òã<üÁJ 1üŠzo}D‘^)¾Ûïõí•Ó æÅN š93yõ2Hèöýb÷¾æÌ™¹½²~»ŒO=R{“oÖñïÿ˾J´ÃÍ3_>‹€Êô ·åYøòÇô­`É8÷s=¸5¯8òÚ­Ž§vUtÜÚýR«þÂ>gúÒi’‚tL(Ë @ññ;²ÄðïZ5Øbëð> -±»¡\‡˜l2ùô)ËíüøÙ/ µ*Jµ[X¾ã¥mц -sÒê‰(>†Ž]7ùc¡[ëdž3»àjŸVcwÒÞ læp¯0d¼œsȹ«@¼ŠžêÁ¹:äëoVÓôo.^ ÄЯ¾Ñ©¹ó%ÏÁ¡“´•–³»ºîšÿâôež: à}F*.Qé׌ «‚sž{–R ÕVbú¡8ŽßÃÌ+p¹sQØßë7ÿ˜ñq–ëYK¨—èªWÔ£ŽéèKðÚâõ®¶šŽë{£Rs¢@Iƒn\‹ÚïYõyµˆÞï¿ yÉAÃ-„JUÞÎ%XInkùGEt -í¥Cn0fœÚet.ÐŽFTÿsŠoX­Û‡Ý ˆ:öUu8P¦7V]Œ¢äœœ¡Í®Ìû,;.ð9l¾nEC¡L4ô×(éè ’y9)Ì=A—l£ð£<Ũ0µÅÕíøRÜûˆ¦ÉlOâï»RCs†ãéIbÍnYÃ$KÈœ)bØ¥0m¡Î\Ò A‰0˜ÜXíÏ9¬Î,{+H±Ú¢®ë¼DlF-¯õ­óxEN¶ñ4ªÉmÁÞÒ4ÃsP=5/0ŒwcТC¦Ï3ÑüW–®iüçn¡‘rÍ÷R͉˜P?‰( r’NAe‹½sÅ=«&Œ¤^5=_≽éZbõÖˆÒU5·ÏÜ¿Â6½Î›×u!“<¶?Œ)%ù‘o‹‚J‘÷ã‘FŠ–+ª|nÆ9¡p€3/èøFÆN7"$ÕP%køÚTé)qÎþè¹$û1œÙûy=ñ}<ù‹=ëÜÇFù®«´A#ðúÈY'ãºÑÌmk2o±h’~I%S&„¤)öSkyö”Á*ë{¬¯CW_²#í~¯[Ü2¯Øû1w¿+n«Ò [·}ÓTX¶b„Õ¢ätSŠRL;…³{h‘< ûíù¾,â¼jA }íЂ, qîYóíÆÉš´ÌP ÑEc‡¥"÷ÂU&ãÕàìŽï¼’™‰33˜'í„OàwóŸm¬£zÙ -£oÕ‚íÎiîÞ% ÅŒœâ©ŠŽæÓ8`Éê»xOç–TçÞ¶Õ–ý¢A61Yˆàw2ö™ó‚¶ÕC×´áN¦\`(ÎÍóË´n(DÕ< -µS‚EòÆ0Ô‹Ï8tV¾î›µÈ} µ¾ —‰ƒ¯ê¯o¶xob÷Biî½&ÿE=ÁM™ð$‘5JþÓ|ÒŠ¦¶¡ÐXkä„…«:ékº´,#±0礧V‘ËO£\Ái¯Öœ„¡é[;¤î.Õ@Í% ±,ܲÿ R& -ÕPoñìT8¯†€×µiY³ÃVy¤Ÿ³˜’Ôéú^ÇÁ,2¹ÿ“Jó ÖàŠo5áÙV¡ŽL¬oíšúsØÕ,°í‘AÑ`¼ Ó<êéYýS°N&îFŸ^I–¹k;ø¿òsCüšN3:…=À3åŸì€„>òEºC…¸Þ¼âPÚ2Ôý¶j¹MÝbè‰}¹Ìé£qpðÀ*œqC×"ÏÀ†wb'¯–fý‘ƒß…ºOKÖ§pDvu9Áý'ëÔ0ôf1be†ýw’yõuþ3>/¥/eË’[Ú\˜éŒ{¥â^áRþuocÀe "ò ¼“ˆð7{CåÜù„¢¸Ýk£JCq¦6#®eÓÊë€A:`D“±ÂMYâ¦õ…XÊ'N@q~šõ={Ó‡¸ýA6q#ς؈½ZÃCUŸ¼rÐSçטA¶Êxñ&³úk'%Y~æ.ø taŒÁÜZU˜CÓèlöÞ¼ð‰ÿ‘3`¶¾a쀅ómq’O¼zD#vÕdÊû_¶*Óî\^æÚ*8¿èÚô¬¼ÆQuÿ2'k¾”Aô¿Ýx¹L=ÍÝpãÃÎ7R¦h„l\YöðAn AÓkHe""] dÄsH )…-Î}mÿ‚ÅæcyýÑKqIrEÌ‘e#•Ä,Û™Gs;Û°K;ÀÔÞ6”o¿ÄÑ„Ë4qùXù‹]A3ÕÌ¢ByŒ«ìˆþ"v$‘yn•Ç“Àð•$B€­‡ eÓù´LŸ7[œù‚Ð<KÌTµÐµ)Ë®JÙ†ˆ?Ùâ³·Ø”À²:—ЀÂd¿ˆzKįÀ ¡6ãEÚ-æXƒOS—CÇÝÁ9˜®ƒÇcæ×E~¨ÍÏ.ªÙ|mšl'tS4àtTbv~ŽŽ¥<˜…>Ú§,)ćB·ËRDz_ÓÂ&_(e;1z‡´‡ßg)|Õ¸Ýò§M K­GÊÕî(ð¯U¤¸d¸"ä½Ë¾)ìS$‡e£Š¨ÅîÝ;GH%XHu\‡$æIùü‡t\,ôF^ñK¨2¶ÞÁ½…˜m ]Eu‚é ·£ëû¨p°øЗÌlŽ¿ê8H Ïe/`.$¥€0 Qɾ|ºb—惇¡a÷,‡PHÆa 1, -“S†}Ú Zâ}è9@+É)“Ý,8HÖUªè`qV)“ª;°kª€5‹ÓŠRóI#çÆ>œ¹â„Ús<¦Ž/ ýeÝÇ/è7\‘ûÙXAvrX¸&Äc«²z¶çFοœè³IÎ~/9Ó½ó“«Õý´ý(¦íAÕù¢XfPé.—jB`á ¸{»~Êh ¦Ä9µ§™^”½ª K’ðÉÆ"r<¬UôÕ#f(s–ØïZÍUÖxÿO‚páÀã6PâO5>B:’TÜNk^¥vŠ©â& -ùQf%Q§½oÇmW Öª¶Ý†rooØŠ¦yã>>ÜD²ŒÎu°ŽÈ]÷í–ú >2ëq<Êê8™]ñ04CÜdÅjæ¸þ¡P9QEO篢œÝï–éQª©¸î³ù·¢®-£iƒ¢—%\Ú™Z0¸JÆ´Iè gº5Æúûý˜Â–‚u4^«»é‡pm"§ 6Žyq*]Ø®’ß÷áá³”ôv×dE´å~ˆ(¶ j°Š=þ˜•'ùè2%–Âyz_†¢í‚Ñ_Ì?Ú—ÕÛ 99.5æ[ó+¥HjU -† å†y“—$=±òüZ‘Z᧲rÐ.=xâSQÀ”K*ßÁ'qÆÐáJRÙFR#³íž&¥Þ·¸“’—N ÂA>œQ"¡p1\9Q¥®ÅÖ¼÷Âé³ -b8v,¡LeØã/sÑ]¨zžQêÒÙ¤ÉÆ´žË¥MÑÄv®µÚûsš+C¿¢6<§O§&hüv¹À¾·MÃ@*¡ÞEü—„»i=¦ÖyÇ ©Ç=ðÇôQïÂ&Ë;ÄAQ‚ôR1ÛA–ÑyÚL\{äïõU³í€M%ïÙr—ņ$ŸãŸAo³üh¹îQüOjLß5/ßÔŽvÅsrSû]*㫽‹ZýC¢õÿ¤G h¥œát<Å=–¹@&¡>,R:ï™}5-i6T SÙçˆö×& J]°À^i¢9õ/XþA‡)=ê–¼p¹œÚ™Y^=f®ÜC3ùç U¶ ~sU>í4ߧšî=ý˜-.†³ËcÉhC•t˜Ì1SU3_¡ñ®éA××H3ËB÷—d+Ë{°½€j”¾nû(s<ãœóØ«ÞJ±Tì‡n -é§$£1 <è4Ç¿ ÈSª´|æÅl bÀª¹2ʾF%6r.•ÿ<)Øp–óNTvZó’øöšé—ØÂ+Uúí#¬Áêó™ßÆu|òÝ„ýRþëqP«›_~YÿC–æ7ÓC`0‡"ÞNÁBJ6RzZñÒý§¸Qoó)Wd] gå7À½aºfMÕǾ¹…. ö+²*:Q¾È»˜ßþ q[Lzk8dfåG`ÿ¥©üÖ{a‡´` ³õ°›Çkûâ)V&í©h -„X%†æ认?ÕEtde -Š_wRƒÎ<ž œ:Õ`»É§*P³Ÿ6z¶ká®RŒu&.öŶ Ø'p”]=ll;ï ŒÑXæû0/Û‡½ëÇqÔêbžTU\úæ„6™äÃ9O­4yºÿ¶†FêªÙúA–bÙZWš¾Vfz›uÈvµçÄò…ù½aJÞh%W!‰¡“­>|CºŒ[–„£Í—m!@¬Æú?`^éåXy´¡ÁG»F‚¦)õ;Â-ŽÁÄÕa³•µT¤J@ßp+E •ËÜ!õ”50XÛÛ‹‘±ÂH¥¿óû³Íèÿ³È!_¡^)LB†[ÏT“PË£ºè`bîÕjÔt™í_¡˜!–@&Ô€QWñÂ¥³kŠ l­©¹ó$jì ú_;«Rĵ’Ÿ#õ«O§@Åèg¿/pÕ³àélqGŸã¤¥ÌØgå5zœ!Ž ܾÅiÙøæÁÂÆ4è;epëŲZf>ŠeÞ¨ì7‘c˜ûŒéUá-Š‰­ë¤tØ™G^SÞu@P×ã6•FêÓ´²ásèFÞB”\¡õ¨ -gÒË_Ó‚™R  -)G1Ÿ±dërsizè0z V݈„H§éŠxù]ìXØGÜeéË7£û´ÔŸ?ÀA€šÍ¤UÆ*vµs Û=;@#Žiî›Îü‚Õ½‹ÆQ½-~èD¹¨îPäÄF«nÊìTQ˜ Òuè—hgGW1¿Ë÷y“²#ĹÀUÔäðÏÔ¥ýÉ„o+Sï{ó¹ Yd|­/|QíÃÏwRoõŸý`a#¤²ž  R}û•d믴)%e{ -©[”8N_¨ß?g£½on/ãÐ</…^é2´FlP›µ¼}f–c>µ÷<ÜC3xÍß›ÿ}7IŠn/ŠÂäÎó?hyÙç:”È*–R 2=ïMÈaùèÐà–¿8˜ê¤Á}SäÏÆ¡}ǘ™ë3Œ˜Àh©–'­Ø3¼Äü£RñA¹৻¹ …un»–µêN„Tˆ·–„„á‹ µª}±÷Œ^R_SRéTŒj3%w],·p¶Fj ¤v_]•ÌYûŒÌ&¨¼ ãZNdšwÉÓB²8§{Ú€ˆ‹¤HLq‘¼ 2ö ÜTnØM#ßèÄOãî€ÀØ•APÛ>,«!J’çÍš¢Çôɉv#µ&’°#ÆYíþ9б¹dZ<XL{ÚðùlÕpÕ™ Ù´Ê—&ÊÅ"L…?")ð³5t°L˜_f›Tl€ÛÉáÝçÄ£4ª»Òde£·ÄP ¶ÅìÚ׺¨ÎÍÕŒôjZÐ"å=ËuÚ#*¸¹ÚB2àå=«V½uŸªv¨ç¯I/cKµDçäºh†ODÅΠ¹Élw,}wQy~D f% 9ã97]`£FŸ÷£ê¾™o^vŸ„îÑXárˆG˜‰[Y.{•ñ÷Ñ9PàÊ…jÛ5·öcŽÅììcônÁF–`V|ÐEGõbDÜh8¹éÈ3‡×øš®æWh&2˜|=™YåŠêï}Tž!¤11Ă}Õ˜ÑÛé}ŽdÐéé/¶ú!”;©ÃªEéRWÔ´A5dXRFV›ÎEÒèº*%•&/Ü$±ç¾Ó…º Í­úŸ-¾Ö Jèä°\äF–‰m?L \vª@ŃÚÆ8<ÓÄÇç5£¬Ëk@⢒MeokÞþyš} ?ÏÖjƒý¡ BE“FÈžá+w¸b¹ñæcçS’z‡Ãü¹r˜Ê=Λެ /6Ào§²b—[1¾Ë¯+có ™B£c ýo&»Ö˜î“:É£ƒ„:8—ÙÒC!Õ°ˆ$Q8–Ÿõ3ˆ}<3`rÛ«8>§C¸æ¿ösIÁã&Ab ¦ÈJÎÙà-žÆæ.iüm³hbÚàË™‡ºqsʼnÚaV¸\Íuu#2eˆ8¹ñ(Ï÷Ÿe‹Äß–¢ØÉ.æõíDà!7ø€Fx‚cÿn  ãU›Rn" f™f´â$d ¾7š¶Ûž›Ýë³ßª]LòÚ-aú®þ ‡¦‡Y LÏU`ɼì"‹>F}?Œî2Z¶ÕiØ£²8ía4CúÈ^&èp…aa”釱çiÁ"Î -&¥–eIï*äXi®ŠÆfKJ™ÛÁ¼ËT‘Ë@9’tûÈÁ×Fžì(Ö±g·qôõÀÞØœ¬ï1Y2בY^þn+1n—È;þïyü¨Þ´9¬#¬~I 9ç ×.I/áב™¤.LÝ¥¾¤ý‚°èJAéæÿÃá-eÑ¢žwùAžN˜šçˆ¢Òø‡ƒpjïo¤5µ‡àµúÚR},D¢ë‚ƒ}cÚG¦K‰ŸO͈]Ká&îæ¸îQ„Ð!éeSV´¼›= -DÎG@|Skµ÷Šl;¸cêÒr Ùgý•He£úÅ<SZù&¡˜ÜBë–Vž€Ü×"—{Ò骴?>0¬“Àw¶ûòÎâ.”ÉàW›ØYŒuKa®ÿË„u×»)S÷pçõª *-³Iföv¢å´9õ÷&–¥ŒZMúPwÂvtê)Ч‹Õ÷R5°Ä6 ¾!?¡{o@«ñ½ŽŽjšâÚ3C†œÃáQtc%;¢¯^œsÏL‡_È{:“ç7û.éRÌêÆj–PyPê!3À±ÍÂ>šËr«f3þ×Y‚éh?ÄN” ¾¨' -ÛOò KDJøä1®ì*C¦÷%\lŸ1ÙHëJÌ3¯Â\’ÆklˆxJ¦ŒÆÅŸPLCô,ùþ­˜Ðêy ÛBa?ÒjÃ’'trú÷ÁGf̉‰-x’Úѽª¡J¸6æ wêeñGÖò1´a"]¾IR³›ëi¹úf¢É=afÙÊõwJ]Ü;¢Þˆ’·CîÒ©±e^S«BëäN}Ô^Mô+Ú‹[$ãäšXõÕJKÒ<Ïä웊ûMGÑzÄTظ'û j—è@61†™¿s¶?–(Úº˜oúü<ù¯4 å¶Wp VÈà.ƒÖxÔú^T­ãÙ@„¡Ü)¢|)È$w}ß}?½)ÁÜ\‚$Z·÷9ïùý­i•†ºMœÆûƽ’M[¤vÒ•¹Ã"8šR}J1·3,–÷C®@ -Ò/ëëZFRÞ¬ NËtZB=‹ü›ô¡Õ&%ßX1Cê €–ú†ñêœwwʳ&Ušã)Òc ‚’á2Ððž¹60ñô*­Þ´! k†Ñ¹OJ³KèÆ£wÊG4ÇKyã´ì5áP&¹=‘Ä£F1¾£º/Ñ2JãÆP…ciÐnýÆ—f"MƒFÌun§¾8VÁí.®¼%uy[i3vNµ#œ;2DZӈàž¾ÈùÎ1ÆoB8Š{áköJºãf€È­¥lÖž&A©Iñ`Ì)›–­ÂV{Ž[6í_Û$J©.¨Ýd®®ËöÇdÎAÉLá;Òy<]Àö eé¹×‘)Í6¸È~8AøÌmÇ9ÆGš¶CT3j[ëÁn7ìGïùÒa¶€º¿.îCD¿^’Ï5Zžóð(\A8æØ'_|Š¹˜@¤–Gù8gj\®Bé-? -"›‘§|gò3› p·B¸!ôÁ”°Ú§›èá)ÆéÆGØ%÷š°ÈJã9œÆlMoÙêœ ‚Z/ÞĮܑӦèÂZeÅ gM<¥ñí›gýâ}ÇU|Áð†”ìlr䳫~¦YÚd}âR•÷Ót”ÎùÝR—(¿ü1§›í•¢_*J§\Ñ-ÄÍyºu[J¥jrA%Z’׋=ÕÐïÿLês5'.ÒΕp\ -çýª–Ç´†ôlÛ\*’ŠO³ä_gŽ7·Jýbû ;lžE˦Oíú~7¼,'ù12¢…w?ÁÛö–d}ò³Æ5÷\ÂY…Ê¢²I(½ˆpmŒ –+_uÍu”­¦9—£cæ1¨{¶æ¨ÓQ·Zê%‚11áA´Ð\JëŠV;`öÿfsæXÌÆ;Î:M4ŠÑ/Þ  }‹íÞ¬œºj~Vè=kj•‘=ЊÉ‚gäÎéž$Ê'Åo»€*C2™_’ž.´´ -ý2ßÎ2&‚0DÙÜŸžæ¹ußb#”Š‹Y©Ó?&žOÄG'‘Ò7¯øE€´iØÍ”ÆÓ'Ð -z-Z)ÏÛýZpâ)¼ÒšrJ䱚jïc…û‚0ñí°D¬˜¡›#+‘kÉÔèÌo{.^›Éì[4Œ—‘âÿîœÔM)ñôv£Z(»ýSªÔã¹é$ksFUñmØØÖn8µpÎfŸeq Qx‘P‰R®ªe™ždÖ•ÿ -endstream -endobj -2232 0 obj +ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û +…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 +¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ +UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp +‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq +1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú +T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: +wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ +AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V +6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ +endstream +endobj +2251 0 obj << /Length1 1614 /Length2 22531 @@ -32784,7 +32820,7 @@ s ÿK=ö² ’á(ÛHfUïÎãrÒø¾IQ$W0LÇòÅÕµ8ŽÅX‘k¯ß‰ô¹­JÏMÐz{äPãÀ÷–¢Ô“‹¾>$ yò§ÑéÚ"Éjrº½¾‹Xf¯yÓLEœtnÖy“ÉŽœ‰ö•ƒQ]Ex.ò¢B‚…;®úˆ[„çðÂXánÍUîOýÅ›1Nd É¸&÷ïÎŒþ endstream endobj -2234 0 obj +2253 0 obj << /Length1 1616 /Length2 24418 @@ -32909,7 +32945,7 @@ c51 AÌø2C0ˆ¯5§Œƒñ¸ûoÔ]}‰I(&*㤠½;Ã@ar½’§×@ ž\-@óˆ…Ô|†5J¾ÏZ¬¬Ò¿ÖTÛÆâ¼ .áç1åT–€"aõJk:‘¹bÄ–D»| endstream endobj -2236 0 obj +2255 0 obj << /Length1 1620 /Length2 18673 @@ -33041,7 +33077,7 @@ ST Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: endstream endobj -2238 0 obj +2257 0 obj << /Length 1007 >> @@ -33111,16 +33147,16 @@ end endstream endobj -2239 0 obj +2258 0 obj << -/Length 1153 +/Length 1577 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmitt10-lm-rep-cmitt-0) -%%Title: (TeX-cmitt10-lm-rep-cmitt-0 TeX cmitt10-lm-rep-cmitt 0) +%%BeginResource: CMap (TeX-cmitt10-builtin-0) +%%Title: (TeX-cmitt10-builtin-0 TeX cmitt10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33128,22 +33164,23 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmitt10-lm-rep-cmitt) +/Ordering (cmitt10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmitt10-lm-rep-cmitt-0 def +/CMapName /TeX-cmitt10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -5 beginbfrange +6 beginbfrange <07> <08> <03A5> <21> <23> <0021> <25> <26> <0025> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -35 beginbfchar +71 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33179,6 +33216,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33189,7 +33262,639 @@ end endstream endobj -2240 0 obj +2175 0 obj +<< +/Type /ObjStm +/N 100 +/First 978 +/Length 16473 +>> +stream +2170 0 2171 180 2173 223 2174 430 2176 731 2178 952 2164 1165 2168 1312 2169 1370 2165 1429 +2183 1609 2185 1727 2182 1786 2187 1869 2189 1987 597 2045 2186 2102 2191 2224 2193 2342 601 2401 +606 2458 2194 2516 610 2575 2190 2633 2196 2727 2198 2845 614 2903 618 2960 622 3017 626 3074 +630 3131 634 3188 638 3245 642 3302 2195 3359 2201 3453 2203 3571 646 3630 650 3688 654 3746 +658 3804 2200 3862 2205 3956 2207 4074 2208 4132 2209 4190 936 4248 935 4304 895 4361 896 4418 +911 4475 892 4532 893 4589 2210 4646 888 4704 2211 4761 1051 4819 2204 4877 2213 4971 2215 5089 +923 5148 894 5206 891 5264 887 5322 2084 5380 890 5439 2216 5497 889 5556 2069 5614 2070 5672 +2212 5731 2217 5825 2218 5845 2219 6216 2220 6319 2221 6478 2222 6501 2223 6956 2224 7085 2225 7383 +2226 8029 2228 8500 2229 9131 2230 9602 2232 10177 2234 10402 2236 10734 2238 10978 2240 11249 2242 11597 +2244 12109 2246 12341 2248 12787 2250 13013 2252 13244 2254 13723 2256 14299 2227 14728 1856 15169 1787 15332 +% 2170 0 obj +<< +/Producer (GPL Ghostscript 9.10) +/CreationDate (D:20140329133928+01'00') +/ModDate (D:20140329133928+01'00') +/Creator (cairo 1.13.1 \(http://cairographics.org\)) +>> +% 2171 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +% 2173 0 obj +<< +/BaseFont /PBIKKX+TimesNewRomanPSMT +/FontDescriptor 2176 0 R +/ToUnicode 2177 0 R +/Type /Font +/FirstChar 45 +/LastChar 55 +/Widths [ 333 0 0 500 500 0 500 500 500 500 500] +/Subtype /TrueType +>> +% 2174 0 obj +<< +/BaseFont /ZBHFTP+FreeSerif +/FontDescriptor 2178 0 R +/ToUnicode 2179 0 R +/Type /Font +/FirstChar 32 +/LastChar 89 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] +/Subtype /TrueType +>> +% 2176 0 obj +<< +/Type /FontDescriptor +/FontName /PBIKKX+TimesNewRomanPSMT +/FontBBox [ 15 -13 638 675] +/Flags 65540 +/Ascent 675 +/CapHeight 675 +/Descent -13 +/ItalicAngle 0 +/StemV 95 +/MissingWidth 777 +/FontFile2 2180 0 R +>> +% 2178 0 obj +<< +/Type /FontDescriptor +/FontName /ZBHFTP+FreeSerif +/FontBBox [ 0 -71 706 752] +/Flags 65540 +/Ascent 752 +/CapHeight 679 +/Descent -71 +/ItalicAngle 0 +/StemV 105 +/MissingWidth 600 +/FontFile2 2181 0 R +>> +% 2164 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.583 356.078 396.557 368.137] +/A << /S /GoTo /D (figure.5) >> +>> +% 2168 0 obj +<< +/D [2166 0 R /XYZ 98.895 753.953 null] +>> +% 2169 0 obj +<< +/D [2166 0 R /XYZ 396.732 393.756 null] +>> +% 2165 0 obj +<< +/Font << /F62 671 0 R /F67 918 0 R /F60 670 0 R /F59 669 0 R /F93 920 0 R /F102 1021 0 R /F120 1787 0 R >> +/XObject << /Im10 2163 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2183 0 obj +<< +/Type /Page +/Contents 2184 0 R +/Resources 2182 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2132 0 R +>> +% 2185 0 obj +<< +/D [2183 0 R /XYZ 149.705 753.953 null] +>> +% 2182 0 obj +<< +/Font << /F102 1021 0 R /F62 671 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2187 0 obj +<< +/Type /Page +/Contents 2188 0 R +/Resources 2186 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2132 0 R +>> +% 2189 0 obj +<< +/D [2187 0 R /XYZ 98.895 753.953 null] +>> +% 597 0 obj +<< +/D [2187 0 R /XYZ 99.895 716.092 null] +>> +% 2186 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F102 1021 0 R /F67 918 0 R /F60 670 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2191 0 obj +<< +/Type /Page +/Contents 2192 0 R +/Resources 2190 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2132 0 R +>> +% 2193 0 obj +<< +/D [2191 0 R /XYZ 149.705 753.953 null] +>> +% 601 0 obj +<< +/D [2191 0 R /XYZ 150.705 554.06 null] +>> +% 606 0 obj +<< +/D [2191 0 R /XYZ 150.705 527.944 null] +>> +% 2194 0 obj +<< +/D [2191 0 R /XYZ 150.705 315.727 null] +>> +% 610 0 obj +<< +/D [2191 0 R /XYZ 150.705 284.171 null] +>> +% 2190 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2196 0 obj +<< +/Type /Page +/Contents 2197 0 R +/Resources 2195 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2199 0 R +>> +% 2198 0 obj +<< +/D [2196 0 R /XYZ 98.895 753.953 null] +>> +% 614 0 obj +<< +/D [2196 0 R /XYZ 99.895 720.077 null] +>> +% 618 0 obj +<< +/D [2196 0 R /XYZ 99.895 633.991 null] +>> +% 622 0 obj +<< +/D [2196 0 R /XYZ 99.895 559.861 null] +>> +% 626 0 obj +<< +/D [2196 0 R /XYZ 99.895 485.732 null] +>> +% 630 0 obj +<< +/D [2196 0 R /XYZ 99.895 411.602 null] +>> +% 634 0 obj +<< +/D [2196 0 R /XYZ 99.895 325.516 null] +>> +% 638 0 obj +<< +/D [2196 0 R /XYZ 99.895 251.386 null] +>> +% 642 0 obj +<< +/D [2196 0 R /XYZ 99.895 177.256 null] +>> +% 2195 0 obj +<< +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2201 0 obj +<< +/Type /Page +/Contents 2202 0 R +/Resources 2200 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2199 0 R +>> +% 2203 0 obj +<< +/D [2201 0 R /XYZ 149.705 753.953 null] +>> +% 646 0 obj +<< +/D [2201 0 R /XYZ 150.705 720.077 null] +>> +% 650 0 obj +<< +/D [2201 0 R /XYZ 150.705 650.062 null] +>> +% 654 0 obj +<< +/D [2201 0 R /XYZ 150.705 580.047 null] +>> +% 658 0 obj +<< +/D [2201 0 R /XYZ 150.705 510.033 null] +>> +% 2200 0 obj +<< +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2205 0 obj +<< +/Type /Page +/Contents 2206 0 R +/Resources 2204 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2199 0 R +>> +% 2207 0 obj +<< +/D [2205 0 R /XYZ 98.895 753.953 null] +>> +% 2208 0 obj +<< +/D [2205 0 R /XYZ 99.895 723.717 null] +>> +% 2209 0 obj +<< +/D [2205 0 R /XYZ 99.895 698.792 null] +>> +% 936 0 obj +<< +/D [2205 0 R /XYZ 99.895 638.64 null] +>> +% 935 0 obj +<< +/D [2205 0 R /XYZ 99.895 583.689 null] +>> +% 895 0 obj +<< +/D [2205 0 R /XYZ 99.895 523.438 null] +>> +% 896 0 obj +<< +/D [2205 0 R /XYZ 99.895 479.068 null] +>> +% 911 0 obj +<< +/D [2205 0 R /XYZ 99.895 433.422 null] +>> +% 892 0 obj +<< +/D [2205 0 R /XYZ 99.895 386.501 null] +>> +% 893 0 obj +<< +/D [2205 0 R /XYZ 99.895 340.855 null] +>> +% 2210 0 obj +<< +/D [2205 0 R /XYZ 99.895 295.209 null] +>> +% 888 0 obj +<< +/D [2205 0 R /XYZ 99.895 249.563 null] +>> +% 2211 0 obj +<< +/D [2205 0 R /XYZ 99.895 204.585 null] +>> +% 1051 0 obj +<< +/D [2205 0 R /XYZ 99.895 146.317 null] +>> +% 2204 0 obj +<< +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2213 0 obj +<< +/Type /Page +/Contents 2214 0 R +/Resources 2212 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2199 0 R +>> +% 2215 0 obj +<< +/D [2213 0 R /XYZ 149.705 753.953 null] +>> +% 923 0 obj +<< +/D [2213 0 R /XYZ 150.705 716.092 null] +>> +% 894 0 obj +<< +/D [2213 0 R /XYZ 150.705 664.064 null] +>> +% 891 0 obj +<< +/D [2213 0 R /XYZ 150.705 622.283 null] +>> +% 887 0 obj +<< +/D [2213 0 R /XYZ 150.705 577.073 null] +>> +% 2084 0 obj +<< +/D [2213 0 R /XYZ 150.705 543.917 null] +>> +% 890 0 obj +<< +/D [2213 0 R /XYZ 150.705 512.037 null] +>> +% 2216 0 obj +<< +/D [2213 0 R /XYZ 150.705 480.156 null] +>> +% 889 0 obj +<< +/D [2213 0 R /XYZ 150.705 438.971 null] +>> +% 2069 0 obj +<< +/D [2213 0 R /XYZ 150.705 380.53 null] +>> +% 2070 0 obj +<< +/D [2213 0 R /XYZ 150.705 336.754 null] +>> +% 2212 0 obj +<< +/Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2217 0 obj +[1000] +% 2218 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +% 2219 0 obj +[277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] +% 2220 0 obj +[853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] +% 2221 0 obj +[528 542] +% 2222 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +% 2223 0 obj +[531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] +% 2224 0 obj +[388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] +% 2225 0 obj +[777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] +% 2226 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +% 2228 0 obj +[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] +% 2229 0 obj +[528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] +% 2230 0 obj +[611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] +% 2232 0 obj +<< +/Type /FontDescriptor +/FontName /MNPEHI+CMEX10 +/Flags 4 +/FontBBox [-24 -2960 1454 772] +/Ascent 40 +/CapHeight 0 +/Descent -600 +/ItalicAngle 0 +/StemV 47 +/XHeight 431 +/CharSet (/radicalbigg) +/FontFile 2231 0 R +>> +% 2234 0 obj +<< +/Type /FontDescriptor +/FontName /SFGIZH+CMITT10 +/Flags 4 +/FontBBox [11 -233 669 696] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle -14 +/StemV 69 +/XHeight 431 +/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) +/FontFile 2233 0 R +>> +% 2236 0 obj +<< +/Type /FontDescriptor +/FontName /TPELEW+CMMI10 +/Flags 4 +/FontBBox [-32 -250 1048 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 72 +/XHeight 431 +/CharSet (/arrowhookleft/greater/less) +/FontFile 2235 0 R +>> +% 2238 0 obj +<< +/Type /FontDescriptor +/FontName /SOSTRQ+CMR10 +/Flags 4 +/FontBBox [-40 -250 1009 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) +/FontFile 2237 0 R +>> +% 2240 0 obj +<< +/Type /FontDescriptor +/FontName /VKSUEJ+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 40 +/XHeight 431 +/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) +/FontFile 2239 0 R +>> +% 2242 0 obj +<< +/Type /FontDescriptor +/FontName /QGKXNM+CMTT10 +/Flags 4 +/FontBBox [-4 -233 537 696] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2241 0 R +>> +% 2244 0 obj +<< +/Type /FontDescriptor +/FontName /HZGQIC+CMTT8 +/Flags 4 +/FontBBox [-5 -232 545 699] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 76 +/XHeight 431 +/CharSet (/b/c/e/i/l/n/p/r/s/t) +/FontFile 2243 0 R +>> +% 2246 0 obj +<< +/Type /FontDescriptor +/FontName /RQJPKO+CMTT9 +/Flags 4 +/FontBBox [-6 -233 542 698] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 74 +/XHeight 431 +/CharSet (/D/E/I/K/N/P/S/T/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2245 0 R +>> +% 2248 0 obj +<< +/Type /FontDescriptor +/FontName /IKXQUG+PazoMath +/Flags 4 +/FontBBox [-40 -283 878 946] +/Ascent 0 +/CapHeight 0 +/Descent 0 +/ItalicAngle 0 +/StemV 95 +/XHeight 0 +/CharSet (/infinity/summation) +/FontFile 2247 0 R +>> +% 2250 0 obj +<< +/Type /FontDescriptor +/FontName /DUJUUF+PazoMath-Italic +/Flags 4 +/FontBBox [-70 -277 902 733] +/Ascent 482 +/CapHeight 0 +/Descent -276 +/ItalicAngle -9 +/StemV 65 +/XHeight 0 +/CharSet (/alpha/beta) +/FontFile 2249 0 R +>> +% 2252 0 obj +<< +/Type /FontDescriptor +/FontName /BDDEWM+URWPalladioL-Bold +/Flags 4 +/FontBBox [-152 -301 1000 935] +/Ascent 708 +/CapHeight 672 +/Descent -266 +/ItalicAngle 0 +/StemV 123 +/XHeight 471 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 2251 0 R +>> +% 2254 0 obj +<< +/Type /FontDescriptor +/FontName /GLTUCO+URWPalladioL-Roma +/Flags 4 +/FontBBox [-166 -283 1021 943] +/Ascent 715 +/CapHeight 680 +/Descent -282 +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 2253 0 R +>> +% 2256 0 obj +<< +/Type /FontDescriptor +/FontName /LHHPET+URWPalladioL-Ital +/Flags 4 +/FontBBox [-170 -305 1010 941] +/Ascent 722 +/CapHeight 693 +/Descent -261 +/ItalicAngle -9 +/StemV 78 +/XHeight 482 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 2255 0 R +>> +% 2227 0 obj +<< +/Type /Encoding +/Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] +>> +% 1856 0 obj +<< +/Type /Font +/Subtype /Type1 +/BaseFont /MNPEHI+CMEX10 +/FontDescriptor 2232 0 R +/FirstChar 114 +/LastChar 114 +/Widths 2217 0 R +/ToUnicode 2257 0 R +>> +% 1787 0 obj +<< +/Type /Font +/Subtype /Type1 +/BaseFont /SFGIZH+CMITT10 +/FontDescriptor 2234 0 R +/FirstChar 33 +/LastChar 121 +/Widths 2218 0 R +/ToUnicode 2258 0 R +>> + +endstream +endobj +2259 0 obj << /Length 1535 >> @@ -33295,16 +34000,16 @@ end endstream endobj -2241 0 obj +2261 0 obj << -/Length 1291 +/Length 1724 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmr10-lm-rep-cmrm-0) -%%Title: (TeX-cmr10-lm-rep-cmrm-0 TeX cmr10-lm-rep-cmrm 0) +%%BeginResource: CMap (TeX-cmr10-builtin-0) +%%Title: (TeX-cmr10-builtin-0 TeX cmr10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33312,23 +34017,24 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmr10-lm-rep-cmrm) +/Ordering (cmr10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmr10-lm-rep-cmrm-0 def +/CMapName /TeX-cmr10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -6 beginbfrange +7 beginbfrange <07> <08> <03A5> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <61> <7A> <0061> <7B> <7C> <2013> + <03A5> endbfrange -44 beginbfchar +78 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33373,6 +34079,40 @@ endbfrange <7D> <02DD> <7E> <02DC> <7F> <00A8> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <00660066> + <00660069> + <0066006C> + <006600660069> + <00660066006C> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33383,7 +34123,7 @@ end endstream endobj -2242 0 obj +2262 0 obj << /Length 2050 >> @@ -33529,16 +34269,16 @@ end endstream endobj -2243 0 obj +2263 0 obj << -/Length 1114 +/Length 1543 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt10-lm-rep-cmtt-0) -%%Title: (TeX-cmtt10-lm-rep-cmtt-0 TeX cmtt10-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt10-builtin-0) +%%Title: (TeX-cmtt10-builtin-0 TeX cmtt10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33546,21 +34286,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt10-lm-rep-cmtt) +/Ordering (cmtt10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt10-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33595,6 +34336,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33605,16 +34382,16 @@ end endstream endobj -2244 0 obj +2264 0 obj << -/Length 1109 +/Length 1538 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt8-lm-rep-cmtt-0) -%%Title: (TeX-cmtt8-lm-rep-cmtt-0 TeX cmtt8-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt8-builtin-0) +%%Title: (TeX-cmtt8-builtin-0 TeX cmtt8-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33622,21 +34399,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt8-lm-rep-cmtt) +/Ordering (cmtt8-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt8-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt8-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33671,6 +34449,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33681,16 +34495,16 @@ end endstream endobj -2245 0 obj +2265 0 obj << -/Length 1109 +/Length 1538 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt9-lm-rep-cmtt-0) -%%Title: (TeX-cmtt9-lm-rep-cmtt-0 TeX cmtt9-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt9-builtin-0) +%%Title: (TeX-cmtt9-builtin-0 TeX cmtt9-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33698,21 +34512,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt9-lm-rep-cmtt) +/Ordering (cmtt9-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt9-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt9-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33747,6 +34562,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33757,7 +34608,7 @@ end endstream endobj -2246 0 obj +2266 0 obj << /Length 853 >> @@ -33815,7 +34666,7 @@ end endstream endobj -2247 0 obj +2267 0 obj << /Length 1113 >> @@ -33893,7 +34744,7 @@ end endstream endobj -2248 0 obj +2268 0 obj << /Length 1477 >> @@ -33996,7 +34847,7 @@ end endstream endobj -2249 0 obj +2269 0 obj << /Length 1477 >> @@ -34099,7 +34950,7 @@ end endstream endobj -2250 0 obj +2270 0 obj << /Length 1482 >> @@ -34202,955 +35053,440 @@ end endstream endobj -2168 0 obj +2260 0 obj << /Type /ObjStm /N 100 -/First 973 -/Length 17544 ->> -stream -606 0 2163 57 2170 151 2172 269 610 328 614 386 618 444 622 502 626 560 630 618 -634 676 638 734 2169 792 2174 886 2176 1004 642 1062 646 1119 650 1176 654 1233 2173 1290 -2178 1384 2180 1502 2177 1561 2182 1629 2184 1747 2185 1805 2186 1863 931 1921 930 1977 890 2034 -891 2091 906 2148 887 2205 888 2262 2187 2319 883 2377 2188 2434 1046 2492 2181 2550 2191 2644 -2193 2762 918 2821 889 2879 886 2937 882 2995 2058 3053 885 3112 2194 3170 884 3229 2042 3287 -2043 3345 2190 3404 2195 3498 2197 3518 2198 3889 2199 3992 2200 4151 2202 4174 2203 4629 2205 4758 -2206 5056 2207 5702 2209 6173 2210 6804 2211 7275 2213 7850 2215 8075 2217 8319 2219 8667 2221 8893 -2223 9124 2225 9409 2227 9934 2229 10179 2231 10638 2233 10981 2235 11460 2237 12036 2208 12465 2196 12906 -2204 13124 2201 13246 1851 13652 1782 13815 1460 14005 915 14166 914 14356 913 14516 970 14706 1016 14895 -1254 15085 1127 15250 665 15420 667 15610 666 15800 668 15990 881 16103 971 16216 1028 16331 1062 16451 -% 606 0 obj -<< -/D [2164 0 R /XYZ 99.895 284.171 null] ->> -% 2163 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2170 0 obj -<< -/Type /Page -/Contents 2171 0 R -/Resources 2169 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R ->> -% 2172 0 obj -<< -/D [2170 0 R /XYZ 149.705 753.953 null] ->> -% 610 0 obj -<< -/D [2170 0 R /XYZ 150.705 720.077 null] ->> -% 614 0 obj -<< -/D [2170 0 R /XYZ 150.705 633.991 null] ->> -% 618 0 obj -<< -/D [2170 0 R /XYZ 150.705 559.861 null] ->> -% 622 0 obj -<< -/D [2170 0 R /XYZ 150.705 485.732 null] ->> -% 626 0 obj -<< -/D [2170 0 R /XYZ 150.705 411.602 null] ->> -% 630 0 obj -<< -/D [2170 0 R /XYZ 150.705 325.516 null] ->> -% 634 0 obj -<< -/D [2170 0 R /XYZ 150.705 251.386 null] ->> -% 638 0 obj -<< -/D [2170 0 R /XYZ 150.705 177.256 null] ->> -% 2169 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2174 0 obj -<< -/Type /Page -/Contents 2175 0 R -/Resources 2173 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R ->> -% 2176 0 obj -<< -/D [2174 0 R /XYZ 98.895 753.953 null] ->> -% 642 0 obj -<< -/D [2174 0 R /XYZ 99.895 720.077 null] ->> -% 646 0 obj -<< -/D [2174 0 R /XYZ 99.895 650.062 null] ->> -% 650 0 obj -<< -/D [2174 0 R /XYZ 99.895 580.047 null] ->> -% 654 0 obj -<< -/D [2174 0 R /XYZ 99.895 510.033 null] ->> -% 2173 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2178 0 obj -<< -/Type /Page -/Contents 2179 0 R -/Resources 2177 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R ->> -% 2180 0 obj -<< -/D [2178 0 R /XYZ 149.705 753.953 null] ->> -% 2177 0 obj -<< -/Font << /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2182 0 obj -<< -/Type /Page -/Contents 2183 0 R -/Resources 2181 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2189 0 R ->> -% 2184 0 obj -<< -/D [2182 0 R /XYZ 98.895 753.953 null] ->> -% 2185 0 obj -<< -/D [2182 0 R /XYZ 99.895 723.717 null] ->> -% 2186 0 obj -<< -/D [2182 0 R /XYZ 99.895 698.792 null] ->> -% 931 0 obj -<< -/D [2182 0 R /XYZ 99.895 638.64 null] ->> -% 930 0 obj -<< -/D [2182 0 R /XYZ 99.895 583.689 null] ->> -% 890 0 obj -<< -/D [2182 0 R /XYZ 99.895 523.438 null] ->> -% 891 0 obj -<< -/D [2182 0 R /XYZ 99.895 479.068 null] ->> -% 906 0 obj -<< -/D [2182 0 R /XYZ 99.895 433.422 null] ->> -% 887 0 obj -<< -/D [2182 0 R /XYZ 99.895 386.501 null] ->> -% 888 0 obj -<< -/D [2182 0 R /XYZ 99.895 340.855 null] ->> -% 2187 0 obj -<< -/D [2182 0 R /XYZ 99.895 295.209 null] ->> -% 883 0 obj -<< -/D [2182 0 R /XYZ 99.895 249.563 null] ->> -% 2188 0 obj -<< -/D [2182 0 R /XYZ 99.895 204.585 null] ->> -% 1046 0 obj -<< -/D [2182 0 R /XYZ 99.895 146.317 null] ->> -% 2181 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2191 0 obj -<< -/Type /Page -/Contents 2192 0 R -/Resources 2190 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2189 0 R ->> -% 2193 0 obj -<< -/D [2191 0 R /XYZ 149.705 753.953 null] ->> -% 918 0 obj -<< -/D [2191 0 R /XYZ 150.705 716.092 null] ->> -% 889 0 obj -<< -/D [2191 0 R /XYZ 150.705 664.064 null] ->> -% 886 0 obj -<< -/D [2191 0 R /XYZ 150.705 622.283 null] ->> -% 882 0 obj -<< -/D [2191 0 R /XYZ 150.705 577.073 null] ->> -% 2058 0 obj -<< -/D [2191 0 R /XYZ 150.705 543.917 null] ->> -% 885 0 obj -<< -/D [2191 0 R /XYZ 150.705 512.037 null] ->> -% 2194 0 obj -<< -/D [2191 0 R /XYZ 150.705 480.156 null] ->> -% 884 0 obj -<< -/D [2191 0 R /XYZ 150.705 438.971 null] ->> -% 2042 0 obj -<< -/D [2191 0 R /XYZ 150.705 380.53 null] ->> -% 2043 0 obj -<< -/D [2191 0 R /XYZ 150.705 336.754 null] ->> -% 2190 0 obj -<< -/Font << /F62 667 0 R /F60 666 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2195 0 obj -[1000] -% 2197 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2198 0 obj -[277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] -% 2199 0 obj -[853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] -% 2200 0 obj -[528 542] -% 2202 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2203 0 obj -[531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] -% 2205 0 obj -[388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -% 2206 0 obj -[777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] -% 2207 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2209 0 obj -[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] -% 2210 0 obj -[528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] -% 2211 0 obj -[611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] -% 2213 0 obj -<< -/Type /FontDescriptor -/FontName /MNPEHI+CMEX10 -/Flags 4 -/FontBBox [-24 -2960 1454 772] -/Ascent 40 -/CapHeight 0 -/Descent -600 -/ItalicAngle 0 -/StemV 47 -/XHeight 431 -/CharSet (/radicalbigg) -/FontFile 2212 0 R ->> -% 2215 0 obj -<< -/Type /FontDescriptor -/FontName /TPELEW+CMMI10 -/Flags 4 -/FontBBox [-32 -250 1048 750] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 72 -/XHeight 431 -/CharSet (/arrowhookleft/greater/less) -/FontFile 2214 0 R ->> -% 2217 0 obj -<< -/Type /FontDescriptor -/FontName /VKSUEJ+CMSY10 -/Flags 4 -/FontBBox [-29 -960 1116 775] -/Ascent 750 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 40 -/XHeight 431 -/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) -/FontFile 2216 0 R ->> -% 2219 0 obj -<< -/Type /FontDescriptor -/FontName /IKXQUG+PazoMath -/Flags 4 -/FontBBox [-40 -283 878 946] -/Ascent 0 -/CapHeight 0 -/Descent 0 -/ItalicAngle 0 -/StemV 95 -/XHeight 0 -/CharSet (/infinity/summation) -/FontFile 2218 0 R ->> -% 2221 0 obj -<< -/Type /FontDescriptor -/FontName /DUJUUF+PazoMath-Italic -/Flags 4 -/FontBBox [-70 -277 902 733] -/Ascent 482 -/CapHeight 0 -/Descent -276 -/ItalicAngle -9 -/StemV 65 -/XHeight 0 -/CharSet (/alpha/beta) -/FontFile 2220 0 R ->> -% 2223 0 obj -<< -/Type /FontDescriptor -/FontName /NCCVYE+LMRoman10-Regular -/Flags 4 -/FontBBox [-430 -290 1417 1127] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) -/FontFile 2222 0 R ->> -% 2225 0 obj -<< -/Type /FontDescriptor -/FontName /XKYJEW+LMMono10-Regular -/Flags 4 -/FontBBox [-451 -316 731 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2224 0 R ->> -% 2227 0 obj -<< -/Type /FontDescriptor -/FontName /XHVBMR+LMMono8-Regular -/Flags 4 -/FontBBox [-456 -320 743 1014] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle 0 -/StemV 76 -/XHeight 431 -/CharSet (/b/c/e/i/l/n/p/r/s/t) -/FontFile 2226 0 R ->> -% 2229 0 obj -<< -/Type /FontDescriptor -/FontName /TWMFXI+LMMono9-Regular -/Flags 4 -/FontBBox [-451 -318 734 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle 0 -/StemV 74 -/XHeight 431 -/CharSet (/D/E/I/K/N/P/S/T/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2228 0 R ->> -% 2231 0 obj -<< -/Type /FontDescriptor -/FontName /XVBOSG+LMMono10-Italic -/Flags 4 -/FontBBox [-491 -316 834 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle -14 -/StemV 69 -/XHeight 431 -/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) -/FontFile 2230 0 R ->> -% 2233 0 obj -<< -/Type /FontDescriptor -/FontName /BDDEWM+URWPalladioL-Bold -/Flags 4 -/FontBBox [-152 -301 1000 935] -/Ascent 708 -/CapHeight 672 -/Descent -266 -/ItalicAngle 0 -/StemV 123 -/XHeight 471 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2232 0 R ->> -% 2235 0 obj -<< -/Type /FontDescriptor -/FontName /GLTUCO+URWPalladioL-Roma -/Flags 4 -/FontBBox [-166 -283 1021 943] -/Ascent 715 -/CapHeight 680 -/Descent -282 -/ItalicAngle 0 -/StemV 84 -/XHeight 469 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2234 0 R ->> -% 2237 0 obj -<< -/Type /FontDescriptor -/FontName /LHHPET+URWPalladioL-Ital -/Flags 4 -/FontBBox [-170 -305 1010 941] -/Ascent 722 -/CapHeight 693 -/Descent -261 -/ItalicAngle -9 -/StemV 78 -/XHeight 482 -/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2236 0 R ->> -% 2208 0 obj -<< -/Type /Encoding -/Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] ->> -% 2196 0 obj -<< -/Type /Encoding -/Differences [33/exclam 40/parenleft/parenright 44/comma/hyphen/period/slash 65/A 67/C/D/E 72/H/I 75/K/L/M 80/P 84/T 86/V 97/a 99/c/d/e/f/g/h/i 107/k 109/m/n/o/p 114/r/s/t 119/w/x/y] ->> -% 2204 0 obj -<< -/Type /Encoding -/Differences [40/parenleft/parenright 43/plus 61/equal 91/bracketleft 93/bracketright] ->> -% 2201 0 obj -<< -/Type /Encoding -/Differences [13/quotesingle 37/percent/ampersand 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four 54/six 56/eight/nine/colon/semicolon/less/equal/greater 65/A/B/C/D/E/F 72/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/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 126/asciitilde] ->> -% 1851 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /MNPEHI+CMEX10 -/FontDescriptor 2213 0 R -/FirstChar 114 -/LastChar 114 -/Widths 2195 0 R -/ToUnicode 2238 0 R ->> -% 1782 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /XVBOSG+LMMono10-Italic -/FontDescriptor 2231 0 R -/FirstChar 33 -/LastChar 121 -/Widths 2197 0 R -/Encoding 2196 0 R -/ToUnicode 2239 0 R ->> -% 1460 0 obj +/First 940 +/Length 11768 +>> +stream +1465 0 920 161 919 320 918 480 975 641 1021 801 1259 962 1132 1127 669 1297 671 1487 +670 1677 672 1867 886 1980 976 2093 1033 2208 1068 2328 1097 2448 1139 2568 1185 2688 1227 2808 +1286 2928 1338 3048 1387 3168 1436 3288 1476 3408 1515 3528 1562 3648 1605 3768 1643 3888 1679 4008 +1718 4128 1759 4248 1788 4368 1822 4488 1860 4608 1895 4728 1933 4848 1971 4968 2007 5088 2053 5208 +2132 5328 2199 5448 2271 5550 2272 5668 2273 5789 2274 5910 2275 6031 2276 6152 2277 6227 2278 6332 +659 6401 655 6475 651 6563 647 6651 643 6739 639 6827 635 6915 631 7003 627 7091 623 7179 +619 7267 615 7355 611 7443 607 7531 602 7605 598 7717 594 7791 590 7879 586 7967 582 8041 +578 8166 574 8240 570 8314 566 8439 562 8513 558 8601 554 8689 550 8777 546 8865 542 8939 +538 9064 534 9138 530 9226 526 9314 522 9402 518 9490 514 9564 510 9689 506 9763 502 9851 +498 9939 494 10013 490 10138 486 10212 482 10300 478 10388 474 10476 470 10564 466 10652 462 10740 +% 1465 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TPELEW+CMMI10 -/FontDescriptor 2215 0 R +/FontDescriptor 2236 0 R /FirstChar 44 /LastChar 62 -/Widths 2198 0 R -/ToUnicode 2240 0 R +/Widths 2219 0 R +/ToUnicode 2259 0 R >> -% 915 0 obj +% 920 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /NCCVYE+LMRoman10-Regular -/FontDescriptor 2223 0 R +/BaseFont /SOSTRQ+CMR10 +/FontDescriptor 2238 0 R /FirstChar 40 /LastChar 93 -/Widths 2205 0 R -/Encoding 2204 0 R -/ToUnicode 2241 0 R +/Widths 2224 0 R +/ToUnicode 2261 0 R >> -% 914 0 obj +% 919 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VKSUEJ+CMSY10 -/FontDescriptor 2217 0 R +/FontDescriptor 2240 0 R /FirstChar 0 /LastChar 112 -/Widths 2206 0 R -/ToUnicode 2242 0 R +/Widths 2225 0 R +/ToUnicode 2262 0 R >> -% 913 0 obj +% 918 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /XKYJEW+LMMono10-Regular -/FontDescriptor 2225 0 R +/BaseFont /QGKXNM+CMTT10 +/FontDescriptor 2242 0 R /FirstChar 13 /LastChar 126 -/Widths 2207 0 R -/Encoding 2201 0 R -/ToUnicode 2243 0 R +/Widths 2226 0 R +/ToUnicode 2263 0 R >> -% 970 0 obj +% 975 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /XHVBMR+LMMono8-Regular -/FontDescriptor 2227 0 R +/BaseFont /HZGQIC+CMTT8 +/FontDescriptor 2244 0 R /FirstChar 98 /LastChar 116 -/Widths 2203 0 R -/Encoding 2201 0 R -/ToUnicode 2244 0 R +/Widths 2223 0 R +/ToUnicode 2264 0 R >> -% 1016 0 obj +% 1021 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /TWMFXI+LMMono9-Regular -/FontDescriptor 2229 0 R +/BaseFont /RQJPKO+CMTT9 +/FontDescriptor 2246 0 R /FirstChar 13 /LastChar 122 -/Widths 2202 0 R -/Encoding 2201 0 R -/ToUnicode 2245 0 R +/Widths 2222 0 R +/ToUnicode 2265 0 R >> -% 1254 0 obj +% 1259 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IKXQUG+PazoMath -/FontDescriptor 2219 0 R +/FontDescriptor 2248 0 R /FirstChar 165 /LastChar 229 -/Widths 2199 0 R -/ToUnicode 2246 0 R +/Widths 2220 0 R +/ToUnicode 2266 0 R >> -% 1127 0 obj +% 1132 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUJUUF+PazoMath-Italic -/FontDescriptor 2221 0 R +/FontDescriptor 2250 0 R /FirstChar 97 /LastChar 98 -/Widths 2200 0 R -/ToUnicode 2247 0 R +/Widths 2221 0 R +/ToUnicode 2267 0 R >> -% 665 0 obj +% 669 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BDDEWM+URWPalladioL-Bold -/FontDescriptor 2233 0 R +/FontDescriptor 2252 0 R /FirstChar 2 /LastChar 151 -/Widths 2211 0 R -/Encoding 2208 0 R -/ToUnicode 2248 0 R +/Widths 2230 0 R +/Encoding 2227 0 R +/ToUnicode 2268 0 R >> -% 667 0 obj +% 671 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GLTUCO+URWPalladioL-Roma -/FontDescriptor 2235 0 R +/FontDescriptor 2254 0 R /FirstChar 2 /LastChar 167 -/Widths 2209 0 R -/Encoding 2208 0 R -/ToUnicode 2249 0 R +/Widths 2228 0 R +/Encoding 2227 0 R +/ToUnicode 2269 0 R >> -% 666 0 obj +% 670 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LHHPET+URWPalladioL-Ital -/FontDescriptor 2237 0 R +/FontDescriptor 2256 0 R /FirstChar 2 /LastChar 122 -/Widths 2210 0 R -/Encoding 2208 0 R -/ToUnicode 2250 0 R +/Widths 2229 0 R +/Encoding 2227 0 R +/ToUnicode 2270 0 R >> -% 668 0 obj +% 672 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [658 0 R 671 0 R 717 0 R 774 0 R 821 0 R 861 0 R] +/Parent 2271 0 R +/Kids [662 0 R 675 0 R 721 0 R 778 0 R 825 0 R 866 0 R] >> -% 881 0 obj +% 886 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [879 0 R 898 0 R 910 0 R 923 0 R 935 0 R 940 0 R] +/Parent 2271 0 R +/Kids [884 0 R 903 0 R 915 0 R 928 0 R 940 0 R 945 0 R] >> -% 971 0 obj +% 976 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [953 0 R 975 0 R 986 0 R 994 0 R 1005 0 R 1021 0 R] +/Parent 2271 0 R +/Kids [958 0 R 980 0 R 991 0 R 999 0 R 1010 0 R 1026 0 R] >> -% 1028 0 obj +% 1033 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [1025 0 R 1030 0 R 1035 0 R 1042 0 R 1049 0 R 1054 0 R] +/Parent 2271 0 R +/Kids [1030 0 R 1035 0 R 1040 0 R 1047 0 R 1054 0 R 1059 0 R] >> -% 1062 0 obj +% 1068 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [1059 0 R 1065 0 R 1069 0 R 1073 0 R 1077 0 R 1083 0 R] +/Parent 2271 0 R +/Kids [1065 0 R 1070 0 R 1074 0 R 1078 0 R 1082 0 R 1088 0 R] >> - -endstream -endobj -2252 0 obj -<< -/Type /ObjStm -/N 100 -/First 923 -/Length 10703 ->> -stream -1092 0 1134 120 1180 240 1222 360 1281 480 1333 600 1382 720 1431 840 1471 960 1510 1080 -1557 1200 1600 1320 1638 1440 1674 1560 1713 1680 1754 1800 1783 1920 1817 2040 1855 2160 1890 2280 -1928 2400 1966 2520 2002 2640 2057 2760 2158 2880 2189 3000 2251 3084 2253 3202 2254 3323 2255 3444 -2256 3565 2257 3686 2258 3761 2259 3866 655 3935 651 4009 647 4097 643 4185 639 4273 635 4361 -631 4449 627 4537 623 4625 619 4713 615 4801 611 4889 607 4977 602 5065 598 5139 594 5251 -590 5325 586 5413 582 5501 578 5575 574 5700 570 5760 566 5885 562 5959 558 6047 554 6135 -550 6223 546 6311 542 6385 538 6510 534 6584 530 6672 526 6760 522 6848 518 6936 514 7010 -510 7135 506 7209 502 7297 498 7385 494 7459 490 7584 486 7658 482 7746 478 7834 474 7922 -470 8010 466 8098 462 8186 458 8274 454 8362 450 8450 446 8538 442 8626 438 8714 434 8802 -430 8890 426 8978 422 9052 418 9178 414 9252 410 9340 406 9428 401 9516 397 9604 393 9692 -% 1092 0 obj +% 1097 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [1089 0 R 1096 0 R 1103 0 R 1109 0 R 1113 0 R 1124 0 R] +/Parent 2271 0 R +/Kids [1094 0 R 1101 0 R 1108 0 R 1114 0 R 1118 0 R 1129 0 R] >> -% 1134 0 obj +% 1139 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1131 0 R 1141 0 R 1147 0 R 1158 0 R 1164 0 R 1171 0 R] +/Parent 2272 0 R +/Kids [1136 0 R 1146 0 R 1152 0 R 1164 0 R 1169 0 R 1176 0 R] >> -% 1180 0 obj +% 1185 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1176 0 R 1185 0 R 1193 0 R 1198 0 R 1206 0 R 1211 0 R] +/Parent 2272 0 R +/Kids [1181 0 R 1190 0 R 1198 0 R 1203 0 R 1211 0 R 1216 0 R] >> -% 1222 0 obj +% 1227 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1218 0 R 1224 0 R 1237 0 R 1244 0 R 1251 0 R 1262 0 R] +/Parent 2272 0 R +/Kids [1223 0 R 1229 0 R 1242 0 R 1249 0 R 1256 0 R 1267 0 R] >> -% 1281 0 obj +% 1286 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1278 0 R 1285 0 R 1296 0 R 1302 0 R 1313 0 R 1318 0 R] +/Parent 2272 0 R +/Kids [1283 0 R 1290 0 R 1301 0 R 1307 0 R 1318 0 R 1323 0 R] >> -% 1333 0 obj +% 1338 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1329 0 R 1335 0 R 1344 0 R 1350 0 R 1358 0 R 1365 0 R] +/Parent 2272 0 R +/Kids [1334 0 R 1340 0 R 1349 0 R 1355 0 R 1363 0 R 1370 0 R] >> -% 1382 0 obj +% 1387 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1379 0 R 1387 0 R 1396 0 R 1404 0 R 1408 0 R 1423 0 R] +/Parent 2272 0 R +/Kids [1384 0 R 1392 0 R 1401 0 R 1409 0 R 1413 0 R 1428 0 R] >> -% 1431 0 obj +% 1436 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1428 0 R 1435 0 R 1442 0 R 1446 0 R 1451 0 R 1457 0 R] +/Parent 2273 0 R +/Kids [1433 0 R 1440 0 R 1447 0 R 1451 0 R 1456 0 R 1462 0 R] >> -% 1471 0 obj +% 1476 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1463 0 R 1474 0 R 1479 0 R 1488 0 R 1496 0 R 1501 0 R] +/Parent 2273 0 R +/Kids [1468 0 R 1479 0 R 1484 0 R 1493 0 R 1501 0 R 1506 0 R] >> -% 1510 0 obj +% 1515 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1507 0 R 1512 0 R 1520 0 R 1525 0 R 1533 0 R 1539 0 R] +/Parent 2273 0 R +/Kids [1512 0 R 1517 0 R 1525 0 R 1530 0 R 1538 0 R 1544 0 R] >> -% 1557 0 obj +% 1562 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1548 0 R 1562 0 R 1566 0 R 1579 0 R 1585 0 R 1592 0 R] +/Parent 2273 0 R +/Kids [1553 0 R 1567 0 R 1571 0 R 1584 0 R 1590 0 R 1597 0 R] >> -% 1600 0 obj +% 1605 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1596 0 R 1604 0 R 1609 0 R 1618 0 R 1626 0 R 1630 0 R] +/Parent 2273 0 R +/Kids [1601 0 R 1610 0 R 1614 0 R 1623 0 R 1631 0 R 1635 0 R] >> -% 1638 0 obj +% 1643 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1635 0 R 1640 0 R 1647 0 R 1652 0 R 1658 0 R 1664 0 R] +/Parent 2273 0 R +/Kids [1640 0 R 1645 0 R 1652 0 R 1657 0 R 1663 0 R 1669 0 R] >> -% 1674 0 obj +% 1679 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1670 0 R 1677 0 R 1684 0 R 1691 0 R 1695 0 R 1705 0 R] +/Parent 2274 0 R +/Kids [1675 0 R 1682 0 R 1689 0 R 1696 0 R 1700 0 R 1710 0 R] >> -% 1713 0 obj +% 1718 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1710 0 R 1715 0 R 1728 0 R 1732 0 R 1738 0 R 1744 0 R] +/Parent 2274 0 R +/Kids [1715 0 R 1720 0 R 1733 0 R 1737 0 R 1743 0 R 1749 0 R] >> -% 1754 0 obj +% 1759 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1751 0 R 1756 0 R 1760 0 R 1764 0 R 1768 0 R 1772 0 R] +/Parent 2274 0 R +/Kids [1756 0 R 1761 0 R 1765 0 R 1769 0 R 1773 0 R 1777 0 R] >> -% 1783 0 obj +% 1788 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1776 0 R 1785 0 R 1789 0 R 1796 0 R 1800 0 R 1807 0 R] +/Parent 2274 0 R +/Kids [1781 0 R 1790 0 R 1794 0 R 1801 0 R 1805 0 R 1812 0 R] >> -% 1817 0 obj +% 1822 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1811 0 R 1819 0 R 1824 0 R 1831 0 R 1835 0 R 1842 0 R] +/Parent 2274 0 R +/Kids [1816 0 R 1825 0 R 1829 0 R 1836 0 R 1840 0 R 1847 0 R] >> -% 1855 0 obj +% 1860 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1846 0 R 1857 0 R 1862 0 R 1869 0 R 1875 0 R 1879 0 R] +/Parent 2274 0 R +/Kids [1851 0 R 1862 0 R 1867 0 R 1874 0 R 1880 0 R 1884 0 R] >> -% 1890 0 obj +% 1895 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1885 0 R 1892 0 R 1898 0 R 1904 0 R 1909 0 R 1916 0 R] +/Parent 2275 0 R +/Kids [1890 0 R 1897 0 R 1903 0 R 1909 0 R 1914 0 R 1921 0 R] >> -% 1928 0 obj +% 1933 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1923 0 R 1932 0 R 1939 0 R 1946 0 R 1952 0 R 1956 0 R] +/Parent 2275 0 R +/Kids [1928 0 R 1937 0 R 1944 0 R 1951 0 R 1957 0 R 1961 0 R] >> -% 1966 0 obj +% 1971 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1962 0 R 1972 0 R 1976 0 R 1984 0 R 1989 0 R 1993 0 R] +/Parent 2275 0 R +/Kids [1967 0 R 1977 0 R 1981 0 R 1989 0 R 1994 0 R 1998 0 R] >> -% 2002 0 obj +% 2007 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1999 0 R 2004 0 R 2011 0 R 2022 0 R 2027 0 R 2037 0 R] +/Parent 2275 0 R +/Kids [2004 0 R 2009 0 R 2016 0 R 2027 0 R 2032 0 R 2040 0 R] >> -% 2057 0 obj +% 2053 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [2052 0 R 2062 0 R 2073 0 R 2101 0 R 2121 0 R 2139 0 R] +/Parent 2275 0 R +/Kids [2050 0 R 2055 0 R 2065 0 R 2079 0 R 2088 0 R 2099 0 R] >> -% 2158 0 obj +% 2132 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [2155 0 R 2160 0 R 2164 0 R 2170 0 R 2174 0 R 2178 0 R] +/Parent 2275 0 R +/Kids [2127 0 R 2148 0 R 2166 0 R 2183 0 R 2187 0 R 2191 0 R] >> -% 2189 0 obj +% 2199 0 obj << /Type /Pages -/Count 2 -/Parent 2257 0 R -/Kids [2182 0 R 2191 0 R] +/Count 4 +/Parent 2276 0 R +/Kids [2196 0 R 2201 0 R 2205 0 R 2213 0 R] >> -% 2251 0 obj +% 2271 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [668 0 R 881 0 R 971 0 R 1028 0 R 1062 0 R 1092 0 R] +/Parent 2277 0 R +/Kids [672 0 R 886 0 R 976 0 R 1033 0 R 1068 0 R 1097 0 R] >> -% 2253 0 obj +% 2272 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1134 0 R 1180 0 R 1222 0 R 1281 0 R 1333 0 R 1382 0 R] +/Parent 2277 0 R +/Kids [1139 0 R 1185 0 R 1227 0 R 1286 0 R 1338 0 R 1387 0 R] >> -% 2254 0 obj +% 2273 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1431 0 R 1471 0 R 1510 0 R 1557 0 R 1600 0 R 1638 0 R] +/Parent 2277 0 R +/Kids [1436 0 R 1476 0 R 1515 0 R 1562 0 R 1605 0 R 1643 0 R] >> -% 2255 0 obj +% 2274 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1674 0 R 1713 0 R 1754 0 R 1783 0 R 1817 0 R 1855 0 R] +/Parent 2277 0 R +/Kids [1679 0 R 1718 0 R 1759 0 R 1788 0 R 1822 0 R 1860 0 R] >> -% 2256 0 obj +% 2275 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1890 0 R 1928 0 R 1966 0 R 2002 0 R 2057 0 R 2158 0 R] +/Parent 2277 0 R +/Kids [1895 0 R 1933 0 R 1971 0 R 2007 0 R 2053 0 R 2132 0 R] >> -% 2257 0 obj +% 2276 0 obj << /Type /Pages -/Count 2 -/Parent 2258 0 R -/Kids [2189 0 R] +/Count 4 +/Parent 2277 0 R +/Kids [2199 0 R] >> -% 2258 0 obj +% 2277 0 obj << /Type /Pages -/Count 182 -/Kids [2251 0 R 2253 0 R 2254 0 R 2255 0 R 2256 0 R 2257 0 R] +/Count 184 +/Kids [2271 0 R 2272 0 R 2273 0 R 2274 0 R 2275 0 R 2276 0 R] >> -% 2259 0 obj +% 2278 0 obj << /Type /Outlines /First 4 0 R /Last 4 0 R /Count 1 >> +% 659 0 obj +<< +/Title 660 0 R +/A 657 0 R +/Parent 602 0 R +/Prev 655 0 R +>> % 655 0 obj << /Title 656 0 R /A 653 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 651 0 R +/Next 659 0 R >> % 651 0 obj << /Title 652 0 R /A 649 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 647 0 R /Next 655 0 R >> @@ -35158,7 +35494,7 @@ stream << /Title 648 0 R /A 645 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 643 0 R /Next 651 0 R >> @@ -35166,7 +35502,7 @@ stream << /Title 644 0 R /A 641 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 639 0 R /Next 647 0 R >> @@ -35174,7 +35510,7 @@ stream << /Title 640 0 R /A 637 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 635 0 R /Next 643 0 R >> @@ -35182,7 +35518,7 @@ stream << /Title 636 0 R /A 633 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 631 0 R /Next 639 0 R >> @@ -35190,7 +35526,7 @@ stream << /Title 632 0 R /A 629 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 627 0 R /Next 635 0 R >> @@ -35198,7 +35534,7 @@ stream << /Title 628 0 R /A 625 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 623 0 R /Next 631 0 R >> @@ -35206,7 +35542,7 @@ stream << /Title 624 0 R /A 621 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 619 0 R /Next 627 0 R >> @@ -35214,7 +35550,7 @@ stream << /Title 620 0 R /A 617 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 615 0 R /Next 623 0 R >> @@ -35222,7 +35558,7 @@ stream << /Title 616 0 R /A 613 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 611 0 R /Next 619 0 R >> @@ -35230,7 +35566,7 @@ stream << /Title 612 0 R /A 609 0 R -/Parent 598 0 R +/Parent 602 0 R /Prev 607 0 R /Next 615 0 R >> @@ -35238,39 +35574,39 @@ stream << /Title 608 0 R /A 604 0 R -/Parent 598 0 R -/Prev 602 0 R +/Parent 602 0 R /Next 611 0 R >> % 602 0 obj << /Title 603 0 R /A 600 0 R -/Parent 598 0 R -/Next 607 0 R +/Parent 4 0 R +/Prev 582 0 R +/First 607 0 R +/Last 659 0 R +/Count -14 >> % 598 0 obj << /Title 599 0 R /A 596 0 R -/Parent 4 0 R -/Prev 578 0 R -/First 602 0 R -/Last 655 0 R -/Count -14 +/Parent 582 0 R +/Prev 594 0 R >> % 594 0 obj << /Title 595 0 R /A 592 0 R -/Parent 578 0 R +/Parent 582 0 R /Prev 590 0 R +/Next 598 0 R >> % 590 0 obj << /Title 591 0 R /A 588 0 R -/Parent 578 0 R +/Parent 582 0 R /Prev 586 0 R /Next 594 0 R >> @@ -35278,33 +35614,33 @@ stream << /Title 587 0 R /A 584 0 R -/Parent 578 0 R -/Prev 582 0 R +/Parent 582 0 R /Next 590 0 R >> % 582 0 obj << /Title 583 0 R /A 580 0 R -/Parent 578 0 R -/Next 586 0 R +/Parent 4 0 R +/Prev 570 0 R +/Next 602 0 R +/First 586 0 R +/Last 598 0 R +/Count -4 >> % 578 0 obj << /Title 579 0 R /A 576 0 R -/Parent 4 0 R -/Prev 570 0 R -/Next 598 0 R -/First 582 0 R -/Last 594 0 R -/Count -4 +/Parent 570 0 R +/Prev 574 0 R >> % 574 0 obj << /Title 575 0 R /A 572 0 R /Parent 570 0 R +/Next 578 0 R >> % 570 0 obj << @@ -35312,10 +35648,10 @@ stream /A 568 0 R /Parent 4 0 R /Prev 542 0 R -/Next 578 0 R +/Next 582 0 R /First 574 0 R -/Last 574 0 R -/Count -1 +/Last 578 0 R +/Count -2 >> % 566 0 obj << @@ -35535,6 +35871,27 @@ stream /Prev 458 0 R /Next 466 0 R >> + +endstream +endobj +2279 0 obj +<< +/Type /ObjStm +/N 100 +/First 875 +/Length 9655 +>> +stream +458 0 454 88 450 176 446 264 442 352 438 440 434 528 430 616 426 704 422 778 +418 904 414 978 410 1066 406 1154 401 1242 397 1330 393 1418 389 1506 385 1594 381 1682 +377 1770 373 1858 369 1946 365 2034 361 2122 357 2210 353 2298 349 2386 345 2474 341 2562 +337 2650 333 2738 329 2826 325 2914 321 3002 317 3090 313 3178 309 3252 305 3378 301 3452 +297 3540 293 3628 289 3702 285 3827 281 3901 277 3989 273 4077 269 4165 265 4253 261 4341 +257 4429 253 4517 249 4605 245 4693 241 4781 237 4869 233 4957 229 5045 225 5133 221 5207 +217 5332 213 5405 209 5492 205 5566 200 5654 196 5742 192 5830 188 5918 184 5992 180 6118 +176 6192 172 6280 168 6368 164 6456 160 6544 156 6632 152 6720 148 6808 144 6896 140 6984 +136 7072 132 7160 128 7248 124 7336 120 7424 116 7512 112 7600 108 7688 104 7762 100 7888 +96 7959 92 8042 88 8124 84 8206 80 8288 76 8370 72 8452 68 8534 64 8616 60 8698 % 458 0 obj << /Title 459 0 R @@ -35672,27 +36029,6 @@ stream /Prev 389 0 R /Next 397 0 R >> - -endstream -endobj -2260 0 obj -<< -/Type /ObjStm -/N 100 -/First 862 -/Length 9899 ->> -stream -389 0 385 88 381 176 377 264 373 352 369 440 365 528 361 616 357 704 353 792 -349 880 345 968 341 1056 337 1144 333 1232 329 1320 325 1408 321 1496 317 1584 313 1672 -309 1746 305 1872 301 1946 297 2034 293 2122 289 2196 285 2321 281 2395 277 2483 273 2571 -269 2659 265 2747 261 2835 257 2923 253 3011 249 3099 245 3187 241 3275 237 3363 233 3451 -229 3539 225 3627 221 3701 217 3826 213 3899 209 3986 205 4060 200 4148 196 4236 192 4324 -188 4412 184 4486 180 4612 176 4686 172 4774 168 4862 164 4950 160 5038 156 5126 152 5214 -148 5302 144 5390 140 5478 136 5566 132 5654 128 5742 124 5830 120 5918 116 6006 112 6094 -108 6182 104 6256 100 6382 96 6453 92 6536 88 6618 84 6700 80 6782 76 6864 72 6946 -68 7028 64 7110 60 7192 56 7274 52 7356 48 7438 44 7520 40 7589 36 7698 32 7818 -28 7887 24 7943 20 8062 16 8144 12 8213 8 8330 4 8395 2261 8488 2262 8684 2263 8857 % 389 0 obj << /Title 390 0 R @@ -36361,6 +36697,27 @@ stream /Prev 56 0 R /Next 64 0 R >> + +endstream +endobj +2280 0 obj +<< +/Type /ObjStm +/N 100 +/First 993 +/Length 18381 +>> +stream +56 0 52 82 48 164 44 246 40 315 36 424 32 544 28 613 24 669 20 788 +16 870 12 939 8 1056 4 1121 2281 1214 2282 1410 2283 1583 2284 1763 2285 1940 2286 2117 +2287 2297 2288 2475 2289 2655 2290 2833 2291 3010 2292 3175 2293 3341 2294 3510 2295 3682 2296 3852 +2297 4024 2298 4194 2299 4366 2300 4535 2301 4704 2302 4876 2303 5046 2304 5218 2305 5388 2306 5560 +2307 5749 2308 5939 2309 6162 2310 6383 2311 6588 2312 6778 2313 6960 2314 7156 2315 7382 2316 7602 +2317 7830 2318 8066 2319 8302 2320 8530 2321 8724 2322 8904 2323 9083 2324 9263 2325 9442 2326 9622 +2327 9800 2328 9978 2329 10158 2330 10337 2331 10517 2332 10696 2333 10876 2334 11055 2335 11235 2336 11405 +2337 11577 2338 11747 2339 11919 2340 12088 2341 12257 2342 12429 2343 12599 2344 12771 2345 12941 2346 13113 +2347 13283 2348 13455 2349 13625 2350 13797 2351 13970 2352 14168 2353 14367 2354 14560 2355 14747 2356 14927 +2357 15127 2358 15357 2359 15582 2360 15801 2361 16028 2362 16254 2363 16476 2364 16701 2365 16931 2366 17160 % 56 0 obj << /Title 57 0 R @@ -36474,725 +36831,717 @@ stream << /Title 5 0 R /A 1 0 R -/Parent 2259 0 R +/Parent 2278 0 R /First 8 0 R -/Last 598 0 R +/Last 602 0 R /Count -13 >> -% 2261 0 obj +% 2281 0 obj << -/Names [(Doc-Start) 664 0 R (Hfootnote.1) 916 0 R (Hfootnote.2) 917 0 R (Hfootnote.3) 969 0 R (Hfootnote.4) 1965 0 R (Hfootnote.5) 2017 0 R] +/Names [(Doc-Start) 668 0 R (Hfootnote.1) 921 0 R (Hfootnote.2) 922 0 R (Hfootnote.3) 974 0 R (Hfootnote.4) 1970 0 R (Hfootnote.5) 2022 0 R] /Limits [(Doc-Start) (Hfootnote.5)] >> -% 2262 0 obj +% 2282 0 obj << -/Names [(Item.1) 943 0 R (Item.10) 957 0 R (Item.100) 1698 0 R (Item.101) 1699 0 R (Item.102) 1700 0 R (Item.103) 1718 0 R] +/Names [(Item.1) 948 0 R (Item.10) 962 0 R (Item.100) 1703 0 R (Item.101) 1704 0 R (Item.102) 1705 0 R (Item.103) 1723 0 R] /Limits [(Item.1) (Item.103)] >> -% 2263 0 obj +% 2283 0 obj << -/Names [(Item.104) 1719 0 R (Item.105) 1720 0 R (Item.106) 1721 0 R (Item.107) 1722 0 R (Item.108) 1723 0 R (Item.109) 1724 0 R] +/Names [(Item.104) 1724 0 R (Item.105) 1725 0 R (Item.106) 1726 0 R (Item.107) 1727 0 R (Item.108) 1728 0 R (Item.109) 1729 0 R] /Limits [(Item.104) (Item.109)] >> - -endstream -endobj -2265 0 obj +% 2284 0 obj << -/Type /ObjStm -/N 100 -/First 1037 -/Length 20320 ->> -stream -2264 0 2266 177 2267 354 2268 534 2269 712 2270 892 2271 1070 2272 1247 2273 1412 2274 1578 -2275 1744 2276 1916 2277 2086 2278 2258 2279 2428 2280 2600 2281 2769 2282 2938 2283 3110 2284 3280 -2285 3452 2286 3622 2287 3794 2288 3983 2289 4173 2290 4396 2291 4617 2292 4822 2293 5012 2294 5194 -2295 5390 2296 5615 2297 5835 2298 6066 2299 6302 2300 6534 2301 6745 2302 6922 2303 7100 2304 7280 -2305 7459 2306 7639 2307 7818 2308 7998 2309 8177 2310 8357 2311 8536 2312 8716 2313 8894 2314 9072 -2315 9252 2316 9424 2317 9596 2318 9766 2319 9938 2320 10108 2321 10280 2322 10449 2323 10618 2324 10790 -2325 10960 2326 11132 2327 11302 2328 11474 2329 11644 2330 11816 2331 11986 2332 12182 2333 12379 2334 12575 -2335 12762 2336 12944 2337 13138 2338 13368 2339 13593 2340 13812 2341 14039 2342 14265 2343 14487 2344 14712 -2345 14942 2346 15171 2347 15399 2348 15621 2349 15849 2350 16075 2351 16297 2352 16519 2353 16760 2354 17022 -2355 17278 2356 17544 2357 17814 2358 18076 2359 18338 2360 18548 2361 18728 2362 18904 2363 19073 2364 19169 -% 2264 0 obj -<< -/Names [(Item.11) 958 0 R (Item.110) 1725 0 R (Item.111) 1726 0 R (Item.112) 1735 0 R (Item.113) 1736 0 R (Item.114) 1741 0 R] +/Names [(Item.11) 963 0 R (Item.110) 1730 0 R (Item.111) 1731 0 R (Item.112) 1740 0 R (Item.113) 1741 0 R (Item.114) 1746 0 R] /Limits [(Item.11) (Item.114)] >> -% 2266 0 obj +% 2285 0 obj << -/Names [(Item.115) 1742 0 R (Item.116) 1747 0 R (Item.117) 1748 0 R (Item.118) 1749 0 R (Item.119) 1779 0 R (Item.12) 959 0 R] +/Names [(Item.115) 1747 0 R (Item.116) 1752 0 R (Item.117) 1753 0 R (Item.118) 1754 0 R (Item.119) 1784 0 R (Item.12) 964 0 R] /Limits [(Item.115) (Item.12)] >> -% 2267 0 obj +% 2286 0 obj << -/Names [(Item.120) 1780 0 R (Item.121) 1781 0 R (Item.122) 1792 0 R (Item.123) 1793 0 R (Item.124) 1794 0 R (Item.125) 1803 0 R] +/Names [(Item.120) 1785 0 R (Item.121) 1786 0 R (Item.122) 1797 0 R (Item.123) 1798 0 R (Item.124) 1799 0 R (Item.125) 1808 0 R] /Limits [(Item.120) (Item.125)] >> -% 2268 0 obj +% 2287 0 obj << -/Names [(Item.126) 1804 0 R (Item.127) 1805 0 R (Item.128) 1814 0 R (Item.129) 1815 0 R (Item.13) 960 0 R (Item.130) 1816 0 R] +/Names [(Item.126) 1809 0 R (Item.127) 1810 0 R (Item.128) 1819 0 R (Item.129) 1820 0 R (Item.13) 965 0 R (Item.130) 1821 0 R] /Limits [(Item.126) (Item.130)] >> -% 2269 0 obj +% 2288 0 obj << -/Names [(Item.131) 1827 0 R (Item.132) 1828 0 R (Item.133) 1829 0 R (Item.134) 1838 0 R (Item.135) 1839 0 R (Item.136) 1840 0 R] +/Names [(Item.131) 1832 0 R (Item.132) 1833 0 R (Item.133) 1834 0 R (Item.134) 1843 0 R (Item.135) 1844 0 R (Item.136) 1845 0 R] /Limits [(Item.131) (Item.136)] >> -% 2270 0 obj +% 2289 0 obj << -/Names [(Item.137) 1849 0 R (Item.138) 1850 0 R (Item.139) 1852 0 R (Item.14) 961 0 R (Item.140) 1853 0 R (Item.141) 1854 0 R] +/Names [(Item.137) 1854 0 R (Item.138) 1855 0 R (Item.139) 1857 0 R (Item.14) 966 0 R (Item.140) 1858 0 R (Item.141) 1859 0 R] /Limits [(Item.137) (Item.141)] >> -% 2271 0 obj +% 2290 0 obj << -/Names [(Item.142) 1860 0 R (Item.143) 1865 0 R (Item.144) 2066 0 R (Item.145) 2067 0 R (Item.146) 2167 0 R (Item.15) 962 0 R] +/Names [(Item.142) 1865 0 R (Item.143) 1870 0 R (Item.144) 2092 0 R (Item.145) 2093 0 R (Item.146) 2194 0 R (Item.15) 967 0 R] /Limits [(Item.142) (Item.15)] >> -% 2272 0 obj +% 2291 0 obj << -/Names [(Item.16) 963 0 R (Item.17) 964 0 R (Item.18) 965 0 R (Item.19) 966 0 R (Item.2) 944 0 R (Item.20) 967 0 R] +/Names [(Item.16) 968 0 R (Item.17) 969 0 R (Item.18) 970 0 R (Item.19) 971 0 R (Item.2) 949 0 R (Item.20) 972 0 R] /Limits [(Item.16) (Item.20)] >> -% 2273 0 obj +% 2292 0 obj << -/Names [(Item.21) 968 0 R (Item.22) 978 0 R (Item.23) 979 0 R (Item.24) 980 0 R (Item.25) 981 0 R (Item.26) 982 0 R] +/Names [(Item.21) 973 0 R (Item.22) 983 0 R (Item.23) 984 0 R (Item.24) 985 0 R (Item.25) 986 0 R (Item.26) 987 0 R] /Limits [(Item.21) (Item.26)] >> -% 2274 0 obj +% 2293 0 obj << -/Names [(Item.27) 983 0 R (Item.28) 997 0 R (Item.29) 998 0 R (Item.3) 945 0 R (Item.30) 999 0 R (Item.31) 1000 0 R] +/Names [(Item.27) 988 0 R (Item.28) 1002 0 R (Item.29) 1003 0 R (Item.3) 950 0 R (Item.30) 1004 0 R (Item.31) 1005 0 R] /Limits [(Item.27) (Item.31)] >> -% 2275 0 obj +% 2294 0 obj << -/Names [(Item.32) 1001 0 R (Item.33) 1008 0 R (Item.34) 1009 0 R (Item.35) 1010 0 R (Item.36) 1011 0 R (Item.37) 1012 0 R] +/Names [(Item.32) 1006 0 R (Item.33) 1013 0 R (Item.34) 1014 0 R (Item.35) 1015 0 R (Item.36) 1016 0 R (Item.37) 1017 0 R] /Limits [(Item.32) (Item.37)] >> -% 2276 0 obj +% 2295 0 obj << -/Names [(Item.38) 1013 0 R (Item.39) 1014 0 R (Item.4) 946 0 R (Item.40) 1015 0 R (Item.41) 1057 0 R (Item.42) 1150 0 R] +/Names [(Item.38) 1018 0 R (Item.39) 1019 0 R (Item.4) 951 0 R (Item.40) 1020 0 R (Item.41) 1062 0 R (Item.42) 1155 0 R] /Limits [(Item.38) (Item.42)] >> -% 2277 0 obj +% 2296 0 obj << -/Names [(Item.43) 1179 0 R (Item.44) 1201 0 R (Item.45) 1227 0 R (Item.46) 1399 0 R (Item.47) 1400 0 R (Item.48) 1401 0 R] +/Names [(Item.43) 1184 0 R (Item.44) 1206 0 R (Item.45) 1232 0 R (Item.46) 1404 0 R (Item.47) 1405 0 R (Item.48) 1406 0 R] /Limits [(Item.43) (Item.48)] >> -% 2278 0 obj +% 2297 0 obj << -/Names [(Item.49) 1454 0 R (Item.5) 947 0 R (Item.50) 1461 0 R (Item.51) 1466 0 R (Item.52) 1467 0 R (Item.53) 1468 0 R] +/Names [(Item.49) 1459 0 R (Item.5) 952 0 R (Item.50) 1466 0 R (Item.51) 1471 0 R (Item.52) 1472 0 R (Item.53) 1473 0 R] /Limits [(Item.49) (Item.53)] >> -% 2279 0 obj +% 2298 0 obj << -/Names [(Item.54) 1469 0 R (Item.55) 1470 0 R (Item.56) 1482 0 R (Item.57) 1483 0 R (Item.58) 1484 0 R (Item.59) 1491 0 R] +/Names [(Item.54) 1474 0 R (Item.55) 1475 0 R (Item.56) 1487 0 R (Item.57) 1488 0 R (Item.58) 1489 0 R (Item.59) 1496 0 R] /Limits [(Item.54) (Item.59)] >> -% 2280 0 obj +% 2299 0 obj << -/Names [(Item.6) 948 0 R (Item.60) 1515 0 R (Item.61) 1516 0 R (Item.62) 1523 0 R (Item.63) 1528 0 R (Item.64) 1529 0 R] +/Names [(Item.6) 953 0 R (Item.60) 1520 0 R (Item.61) 1521 0 R (Item.62) 1528 0 R (Item.63) 1533 0 R (Item.64) 1534 0 R] /Limits [(Item.6) (Item.64)] >> -% 2281 0 obj +% 2300 0 obj << -/Names [(Item.65) 1530 0 R (Item.66) 1542 0 R (Item.67) 1543 0 R (Item.68) 1544 0 R (Item.69) 1545 0 R (Item.7) 949 0 R] +/Names [(Item.65) 1535 0 R (Item.66) 1547 0 R (Item.67) 1548 0 R (Item.68) 1549 0 R (Item.69) 1550 0 R (Item.7) 954 0 R] /Limits [(Item.65) (Item.7)] >> -% 2282 0 obj +% 2301 0 obj << -/Names [(Item.70) 1546 0 R (Item.71) 1551 0 R (Item.72) 1552 0 R (Item.73) 1553 0 R (Item.74) 1554 0 R (Item.75) 1555 0 R] +/Names [(Item.70) 1551 0 R (Item.71) 1556 0 R (Item.72) 1557 0 R (Item.73) 1558 0 R (Item.74) 1559 0 R (Item.75) 1560 0 R] /Limits [(Item.70) (Item.75)] >> -% 2283 0 obj +% 2302 0 obj << -/Names [(Item.76) 1556 0 R (Item.77) 1569 0 R (Item.78) 1570 0 R (Item.79) 1571 0 R (Item.8) 950 0 R (Item.80) 1572 0 R] +/Names [(Item.76) 1561 0 R (Item.77) 1574 0 R (Item.78) 1575 0 R (Item.79) 1576 0 R (Item.8) 955 0 R (Item.80) 1577 0 R] /Limits [(Item.76) (Item.80)] >> -% 2284 0 obj +% 2303 0 obj << -/Names [(Item.81) 1573 0 R (Item.82) 1574 0 R (Item.83) 1575 0 R (Item.84) 1588 0 R (Item.85) 1599 0 R (Item.86) 1612 0 R] +/Names [(Item.81) 1578 0 R (Item.82) 1579 0 R (Item.83) 1580 0 R (Item.84) 1593 0 R (Item.85) 1604 0 R (Item.86) 1617 0 R] /Limits [(Item.81) (Item.86)] >> -% 2285 0 obj +% 2304 0 obj << -/Names [(Item.87) 1613 0 R (Item.88) 1621 0 R (Item.89) 1622 0 R (Item.9) 956 0 R (Item.90) 1643 0 R (Item.91) 1644 0 R] +/Names [(Item.87) 1618 0 R (Item.88) 1626 0 R (Item.89) 1627 0 R (Item.9) 961 0 R (Item.90) 1648 0 R (Item.91) 1649 0 R] /Limits [(Item.87) (Item.91)] >> -% 2286 0 obj +% 2305 0 obj << -/Names [(Item.92) 1655 0 R (Item.93) 1661 0 R (Item.94) 1667 0 R (Item.95) 1673 0 R (Item.96) 1680 0 R (Item.97) 1681 0 R] +/Names [(Item.92) 1660 0 R (Item.93) 1666 0 R (Item.94) 1672 0 R (Item.95) 1678 0 R (Item.96) 1685 0 R (Item.97) 1686 0 R] /Limits [(Item.92) (Item.97)] >> -% 2287 0 obj +% 2306 0 obj << -/Names [(Item.98) 1687 0 R (Item.99) 1688 0 R (algocf.1) 2071 0 R (algocf.2) 2117 0 R (algocfline.1) 2056 0 R (algocfline.2) 2124 0 R] +/Names [(Item.98) 1692 0 R (Item.99) 1693 0 R (algocf.1) 2097 0 R (algocf.2) 2144 0 R (algocfline.1) 2083 0 R (algocfline.2) 2151 0 R] /Limits [(Item.98) (algocfline.2)] >> -% 2288 0 obj +% 2307 0 obj << -/Names [(cite.2007c) 930 0 R (cite.2007d) 931 0 R (cite.BLACS) 906 0 R (cite.BLAS1) 889 0 R (cite.BLAS2) 890 0 R (cite.BLAS3) 891 0 R] +/Names [(cite.2007c) 935 0 R (cite.2007d) 936 0 R (cite.BLACS) 911 0 R (cite.BLAS1) 894 0 R (cite.BLAS2) 895 0 R (cite.BLAS3) 896 0 R] /Limits [(cite.2007c) (cite.BLAS3)] >> -% 2289 0 obj +% 2308 0 obj << -/Names [(cite.CaFiRo:2014) 2042 0 R (cite.DesPat:11) 884 0 R (cite.DesignPatterns) 1046 0 R (cite.KIVA3PSBLAS) 2188 0 R (cite.METIS) 918 0 R (cite.MPI1) 2194 0 R] +/Names [(cite.CaFiRo:2014) 2069 0 R (cite.DesPat:11) 889 0 R (cite.DesignPatterns) 1051 0 R (cite.KIVA3PSBLAS) 2211 0 R (cite.METIS) 923 0 R (cite.MPI1) 2216 0 R] /Limits [(cite.CaFiRo:2014) (cite.MPI1)] >> -% 2290 0 obj +% 2309 0 obj << -/Names [(cite.MRC:11) 2058 0 R (cite.OurTechRep) 2043 0 R (cite.PARA04FOREST) 2186 0 R (cite.PSBLAS) 2187 0 R (cite.RouXiaXu:11) 885 0 R (cite.Sparse03) 883 0 R] +/Names [(cite.MRC:11) 2084 0 R (cite.OurTechRep) 2070 0 R (cite.PARA04FOREST) 2209 0 R (cite.PSBLAS) 2210 0 R (cite.RouXiaXu:11) 890 0 R (cite.Sparse03) 888 0 R] /Limits [(cite.MRC:11) (cite.Sparse03)] >> -% 2291 0 obj +% 2310 0 obj << -/Names [(cite.machiels) 886 0 R (cite.metcalf) 882 0 R (cite.sblas02) 888 0 R (cite.sblas97) 887 0 R (descdata) 989 0 R (equation.4.1) 1265 0 R] +/Names [(cite.machiels) 891 0 R (cite.metcalf) 887 0 R (cite.sblas02) 893 0 R (cite.sblas97) 892 0 R (descdata) 994 0 R (equation.4.1) 1270 0 R] /Limits [(cite.machiels) (equation.4.1)] >> -% 2292 0 obj +% 2311 0 obj << -/Names [(equation.4.2) 1266 0 R (equation.4.3) 1267 0 R (figure.1) 900 0 R (figure.2) 926 0 R (figure.3) 1368 0 R (figure.4) 1402 0 R] +/Names [(equation.4.2) 1271 0 R (equation.4.3) 1272 0 R (figure.1) 905 0 R (figure.2) 931 0 R (figure.3) 1373 0 R (figure.4) 1407 0 R] /Limits [(equation.4.2) (figure.4)] >> -% 2293 0 obj +% 2312 0 obj << -/Names [(figure.5) 2065 0 R (figure.6) 2060 0 R (figure.7) 2104 0 R (figure.8) 2116 0 R (figure.9) 2142 0 R (listing.1) 1017 0 R] +/Names [(figure.5) 2091 0 R (figure.6) 2086 0 R (figure.7) 2130 0 R (figure.8) 2143 0 R (figure.9) 2169 0 R (listing.1) 1022 0 R] /Limits [(figure.5) (listing.1)] >> -% 2294 0 obj +% 2313 0 obj << -/Names [(listing.2) 1047 0 R (listing.3) 1087 0 R (listing.4) 1107 0 R (listing.5) 1872 0 R (listing.6) 1873 0 R (lstlisting.-1) 1228 0 R] +/Names [(listing.2) 1052 0 R (listing.3) 1092 0 R (listing.4) 1112 0 R (listing.5) 1877 0 R (listing.6) 1878 0 R (lstlisting.-1) 1233 0 R] /Limits [(listing.2) (lstlisting.-1)] >> -% 2295 0 obj +% 2314 0 obj << -/Names [(lstlisting.-10) 1942 0 R (lstlisting.-11) 1949 0 R (lstlisting.-12) 2014 0 R (lstlisting.-13) 2076 0 R (lstlisting.-2) 1882 0 R (lstlisting.-3) 1888 0 R] -/Limits [(lstlisting.-10) (lstlisting.-3)] +/Names [(lstlisting.-10) 1947 0 R (lstlisting.-11) 1954 0 R (lstlisting.-12) 2019 0 R (lstlisting.-13) 2043 0 R (lstlisting.-14) 2102 0 R (lstlisting.-2) 1887 0 R] +/Limits [(lstlisting.-10) (lstlisting.-2)] >> -% 2296 0 obj +% 2315 0 obj << -/Names [(lstlisting.-4) 1895 0 R (lstlisting.-5) 1901 0 R (lstlisting.-6) 1912 0 R (lstlisting.-7) 1919 0 R (lstlisting.-8) 1926 0 R (lstlisting.-9) 1935 0 R] -/Limits [(lstlisting.-4) (lstlisting.-9)] +/Names [(lstlisting.-3) 1893 0 R (lstlisting.-4) 1900 0 R (lstlisting.-5) 1906 0 R (lstlisting.-6) 1917 0 R (lstlisting.-7) 1924 0 R (lstlisting.-8) 1931 0 R] +/Limits [(lstlisting.-3) (lstlisting.-8)] >> -% 2297 0 obj +% 2316 0 obj << -/Names [(lstnumber.-1.1) 1229 0 R (lstnumber.-1.2) 1230 0 R (lstnumber.-1.3) 1231 0 R (lstnumber.-1.4) 1232 0 R (lstnumber.-10.1) 1943 0 R (lstnumber.-11.1) 1950 0 R] -/Limits [(lstnumber.-1.1) (lstnumber.-11.1)] +/Names [(lstlisting.-9) 1940 0 R (lstnumber.-1.1) 1234 0 R (lstnumber.-1.2) 1235 0 R (lstnumber.-1.3) 1236 0 R (lstnumber.-1.4) 1237 0 R (lstnumber.-10.1) 1948 0 R] +/Limits [(lstlisting.-9) (lstnumber.-10.1)] >> -% 2298 0 obj +% 2317 0 obj << -/Names [(lstnumber.-12.1) 2015 0 R (lstnumber.-12.2) 2016 0 R (lstnumber.-13.1) 2077 0 R (lstnumber.-13.2) 2078 0 R (lstnumber.-13.3) 2079 0 R (lstnumber.-13.4) 2080 0 R] -/Limits [(lstnumber.-12.1) (lstnumber.-13.4)] +/Names [(lstnumber.-11.1) 1955 0 R (lstnumber.-12.1) 2020 0 R (lstnumber.-12.2) 2021 0 R (lstnumber.-13.1) 2044 0 R (lstnumber.-13.2) 2045 0 R (lstnumber.-14.1) 2103 0 R] +/Limits [(lstnumber.-11.1) (lstnumber.-14.1)] >> -% 2299 0 obj +% 2318 0 obj << -/Names [(lstnumber.-13.5) 2081 0 R (lstnumber.-13.6) 2082 0 R (lstnumber.-13.7) 2083 0 R (lstnumber.-2.1) 1883 0 R (lstnumber.-3.1) 1889 0 R (lstnumber.-4.1) 1896 0 R] -/Limits [(lstnumber.-13.5) (lstnumber.-4.1)] +/Names [(lstnumber.-14.2) 2104 0 R (lstnumber.-14.3) 2105 0 R (lstnumber.-14.4) 2106 0 R (lstnumber.-14.5) 2107 0 R (lstnumber.-14.6) 2108 0 R (lstnumber.-14.7) 2109 0 R] +/Limits [(lstnumber.-14.2) (lstnumber.-14.7)] >> -% 2300 0 obj +% 2319 0 obj << -/Names [(lstnumber.-5.1) 1902 0 R (lstnumber.-6.1) 1913 0 R (lstnumber.-7.1) 1920 0 R (lstnumber.-8.1) 1927 0 R (lstnumber.-9.1) 1936 0 R (page.1) 663 0 R] -/Limits [(lstnumber.-5.1) (page.1)] +/Names [(lstnumber.-2.1) 1888 0 R (lstnumber.-3.1) 1894 0 R (lstnumber.-4.1) 1901 0 R (lstnumber.-5.1) 1907 0 R (lstnumber.-6.1) 1918 0 R (lstnumber.-7.1) 1925 0 R] +/Limits [(lstnumber.-2.1) (lstnumber.-7.1)] >> -% 2301 0 obj +% 2320 0 obj << -/Names [(page.10) 996 0 R (page.100) 1654 0 R (page.101) 1660 0 R (page.102) 1666 0 R (page.103) 1672 0 R (page.104) 1679 0 R] -/Limits [(page.10) (page.104)] +/Names [(lstnumber.-8.1) 1932 0 R (lstnumber.-9.1) 1941 0 R (page.1) 667 0 R (page.10) 1001 0 R (page.100) 1659 0 R (page.101) 1665 0 R] +/Limits [(lstnumber.-8.1) (page.101)] >> -% 2302 0 obj +% 2321 0 obj << -/Names [(page.105) 1686 0 R (page.106) 1693 0 R (page.107) 1697 0 R (page.108) 1707 0 R (page.109) 1712 0 R (page.11) 1007 0 R] -/Limits [(page.105) (page.11)] +/Names [(page.102) 1671 0 R (page.103) 1677 0 R (page.104) 1684 0 R (page.105) 1691 0 R (page.106) 1698 0 R (page.107) 1702 0 R] +/Limits [(page.102) (page.107)] >> -% 2303 0 obj +% 2322 0 obj << -/Names [(page.110) 1717 0 R (page.111) 1730 0 R (page.112) 1734 0 R (page.113) 1740 0 R (page.114) 1746 0 R (page.115) 1753 0 R] -/Limits [(page.110) (page.115)] +/Names [(page.108) 1712 0 R (page.109) 1717 0 R (page.11) 1012 0 R (page.110) 1722 0 R (page.111) 1735 0 R (page.112) 1739 0 R] +/Limits [(page.108) (page.112)] >> -% 2304 0 obj +% 2323 0 obj << -/Names [(page.116) 1758 0 R (page.117) 1762 0 R (page.118) 1766 0 R (page.119) 1770 0 R (page.12) 1023 0 R (page.120) 1774 0 R] -/Limits [(page.116) (page.120)] +/Names [(page.113) 1745 0 R (page.114) 1751 0 R (page.115) 1758 0 R (page.116) 1763 0 R (page.117) 1767 0 R (page.118) 1771 0 R] +/Limits [(page.113) (page.118)] >> -% 2305 0 obj +% 2324 0 obj << -/Names [(page.121) 1778 0 R (page.122) 1787 0 R (page.123) 1791 0 R (page.124) 1798 0 R (page.125) 1802 0 R (page.126) 1809 0 R] -/Limits [(page.121) (page.126)] +/Names [(page.119) 1775 0 R (page.12) 1028 0 R (page.120) 1779 0 R (page.121) 1783 0 R (page.122) 1792 0 R (page.123) 1796 0 R] +/Limits [(page.119) (page.123)] >> -% 2306 0 obj +% 2325 0 obj << -/Names [(page.127) 1813 0 R (page.128) 1821 0 R (page.129) 1826 0 R (page.13) 1027 0 R (page.130) 1833 0 R (page.131) 1837 0 R] -/Limits [(page.127) (page.131)] +/Names [(page.124) 1803 0 R (page.125) 1807 0 R (page.126) 1814 0 R (page.127) 1818 0 R (page.128) 1827 0 R (page.129) 1831 0 R] +/Limits [(page.124) (page.129)] >> -% 2307 0 obj +% 2326 0 obj << -/Names [(page.132) 1844 0 R (page.133) 1848 0 R (page.134) 1859 0 R (page.135) 1864 0 R (page.136) 1871 0 R (page.137) 1877 0 R] -/Limits [(page.132) (page.137)] +/Names [(page.13) 1032 0 R (page.130) 1838 0 R (page.131) 1842 0 R (page.132) 1849 0 R (page.133) 1853 0 R (page.134) 1864 0 R] +/Limits [(page.13) (page.134)] >> -% 2308 0 obj +% 2327 0 obj << -/Names [(page.138) 1881 0 R (page.139) 1887 0 R (page.14) 1032 0 R (page.140) 1894 0 R (page.141) 1900 0 R (page.142) 1906 0 R] -/Limits [(page.138) (page.142)] +/Names [(page.135) 1869 0 R (page.136) 1876 0 R (page.137) 1882 0 R (page.138) 1886 0 R (page.139) 1892 0 R (page.14) 1037 0 R] +/Limits [(page.135) (page.14)] >> -% 2309 0 obj +% 2328 0 obj << -/Names [(page.143) 1911 0 R (page.144) 1918 0 R (page.145) 1925 0 R (page.146) 1934 0 R (page.147) 1941 0 R (page.148) 1948 0 R] -/Limits [(page.143) (page.148)] +/Names [(page.140) 1899 0 R (page.141) 1905 0 R (page.142) 1911 0 R (page.143) 1916 0 R (page.144) 1923 0 R (page.145) 1930 0 R] +/Limits [(page.140) (page.145)] >> -% 2310 0 obj +% 2329 0 obj << -/Names [(page.149) 1954 0 R (page.15) 1037 0 R (page.150) 1958 0 R (page.151) 1964 0 R (page.152) 1974 0 R (page.153) 1978 0 R] -/Limits [(page.149) (page.153)] +/Names [(page.146) 1939 0 R (page.147) 1946 0 R (page.148) 1953 0 R (page.149) 1959 0 R (page.15) 1042 0 R (page.150) 1963 0 R] +/Limits [(page.146) (page.150)] >> -% 2311 0 obj +% 2330 0 obj << -/Names [(page.154) 1986 0 R (page.155) 1991 0 R (page.156) 1995 0 R (page.157) 2001 0 R (page.158) 2006 0 R (page.159) 2013 0 R] -/Limits [(page.154) (page.159)] +/Names [(page.151) 1969 0 R (page.152) 1979 0 R (page.153) 1983 0 R (page.154) 1991 0 R (page.155) 1996 0 R (page.156) 2000 0 R] +/Limits [(page.151) (page.156)] >> -% 2312 0 obj +% 2331 0 obj << -/Names [(page.16) 1044 0 R (page.160) 2024 0 R (page.161) 2029 0 R (page.162) 2039 0 R (page.163) 2054 0 R (page.164) 2064 0 R] -/Limits [(page.16) (page.164)] +/Names [(page.157) 2006 0 R (page.158) 2011 0 R (page.159) 2018 0 R (page.16) 1049 0 R (page.160) 2029 0 R (page.161) 2034 0 R] +/Limits [(page.157) (page.161)] >> -% 2313 0 obj +% 2332 0 obj << -/Names [(page.165) 2075 0 R (page.166) 2103 0 R (page.167) 2123 0 R (page.168) 2141 0 R (page.169) 2157 0 R (page.17) 1051 0 R] -/Limits [(page.165) (page.17)] +/Names [(page.162) 2042 0 R (page.163) 2052 0 R (page.164) 2057 0 R (page.165) 2067 0 R (page.166) 2081 0 R (page.167) 2090 0 R] +/Limits [(page.162) (page.167)] >> -% 2314 0 obj +% 2333 0 obj << -/Names [(page.170) 2162 0 R (page.171) 2166 0 R (page.172) 2172 0 R (page.173) 2176 0 R (page.174) 2180 0 R (page.175) 2184 0 R] -/Limits [(page.170) (page.175)] +/Names [(page.168) 2101 0 R (page.169) 2129 0 R (page.17) 1056 0 R (page.170) 2150 0 R (page.171) 2168 0 R (page.172) 2185 0 R] +/Limits [(page.168) (page.172)] >> -% 2315 0 obj +% 2334 0 obj << -/Names [(page.176) 2193 0 R (page.18) 1056 0 R (page.19) 1061 0 R (page.2) 673 0 R (page.20) 1067 0 R (page.21) 1071 0 R] -/Limits [(page.176) (page.21)] +/Names [(page.173) 2189 0 R (page.174) 2193 0 R (page.175) 2198 0 R (page.176) 2203 0 R (page.177) 2207 0 R (page.178) 2215 0 R] +/Limits [(page.173) (page.178)] >> -% 2316 0 obj +% 2335 0 obj << -/Names [(page.22) 1075 0 R (page.23) 1079 0 R (page.24) 1085 0 R (page.25) 1091 0 R (page.26) 1098 0 R (page.27) 1105 0 R] -/Limits [(page.22) (page.27)] +/Names [(page.18) 1061 0 R (page.19) 1067 0 R (page.2) 677 0 R (page.20) 1072 0 R (page.21) 1076 0 R (page.22) 1080 0 R] +/Limits [(page.18) (page.22)] >> -% 2317 0 obj +% 2336 0 obj << -/Names [(page.28) 1111 0 R (page.29) 1115 0 R (page.3) 912 0 R (page.30) 1126 0 R (page.31) 1133 0 R (page.32) 1143 0 R] -/Limits [(page.28) (page.32)] +/Names [(page.23) 1084 0 R (page.24) 1090 0 R (page.25) 1096 0 R (page.26) 1103 0 R (page.27) 1110 0 R (page.28) 1116 0 R] +/Limits [(page.23) (page.28)] >> -% 2318 0 obj +% 2337 0 obj << -/Names [(page.33) 1149 0 R (page.34) 1160 0 R (page.35) 1166 0 R (page.36) 1173 0 R (page.37) 1178 0 R (page.38) 1187 0 R] -/Limits [(page.33) (page.38)] +/Names [(page.29) 1120 0 R (page.3) 917 0 R (page.30) 1131 0 R (page.31) 1138 0 R (page.32) 1148 0 R (page.33) 1154 0 R] +/Limits [(page.29) (page.33)] >> -% 2319 0 obj +% 2338 0 obj << -/Names [(page.39) 1195 0 R (page.4) 925 0 R (page.40) 1200 0 R (page.41) 1208 0 R (page.42) 1213 0 R (page.43) 1220 0 R] -/Limits [(page.39) (page.43)] +/Names [(page.34) 1166 0 R (page.35) 1171 0 R (page.36) 1178 0 R (page.37) 1183 0 R (page.38) 1192 0 R (page.39) 1200 0 R] +/Limits [(page.34) (page.39)] >> -% 2320 0 obj +% 2339 0 obj << -/Names [(page.44) 1226 0 R (page.45) 1239 0 R (page.46) 1246 0 R (page.47) 1253 0 R (page.48) 1264 0 R (page.49) 1280 0 R] -/Limits [(page.44) (page.49)] +/Names [(page.4) 930 0 R (page.40) 1205 0 R (page.41) 1213 0 R (page.42) 1218 0 R (page.43) 1225 0 R (page.44) 1231 0 R] +/Limits [(page.4) (page.44)] >> -% 2321 0 obj +% 2340 0 obj << -/Names [(page.5) 937 0 R (page.50) 1287 0 R (page.51) 1298 0 R (page.52) 1304 0 R (page.53) 1315 0 R (page.54) 1320 0 R] -/Limits [(page.5) (page.54)] +/Names [(page.45) 1244 0 R (page.46) 1251 0 R (page.47) 1258 0 R (page.48) 1269 0 R (page.49) 1285 0 R (page.5) 942 0 R] +/Limits [(page.45) (page.5)] >> -% 2322 0 obj +% 2341 0 obj << -/Names [(page.55) 1331 0 R (page.56) 1337 0 R (page.57) 1346 0 R (page.58) 1352 0 R (page.59) 1360 0 R (page.6) 942 0 R] -/Limits [(page.55) (page.6)] +/Names [(page.50) 1292 0 R (page.51) 1303 0 R (page.52) 1309 0 R (page.53) 1320 0 R (page.54) 1325 0 R (page.55) 1336 0 R] +/Limits [(page.50) (page.55)] >> -% 2323 0 obj +% 2342 0 obj << -/Names [(page.60) 1367 0 R (page.61) 1381 0 R (page.62) 1389 0 R (page.63) 1398 0 R (page.64) 1406 0 R (page.65) 1410 0 R] -/Limits [(page.60) (page.65)] +/Names [(page.56) 1342 0 R (page.57) 1351 0 R (page.58) 1357 0 R (page.59) 1365 0 R (page.6) 947 0 R (page.60) 1372 0 R] +/Limits [(page.56) (page.60)] >> -% 2324 0 obj +% 2343 0 obj << -/Names [(page.66) 1425 0 R (page.67) 1430 0 R (page.68) 1437 0 R (page.69) 1444 0 R (page.7) 955 0 R (page.70) 1448 0 R] -/Limits [(page.66) (page.70)] +/Names [(page.61) 1386 0 R (page.62) 1394 0 R (page.63) 1403 0 R (page.64) 1411 0 R (page.65) 1415 0 R (page.66) 1430 0 R] +/Limits [(page.61) (page.66)] >> -% 2325 0 obj +% 2344 0 obj << -/Names [(page.71) 1453 0 R (page.72) 1459 0 R (page.73) 1465 0 R (page.74) 1476 0 R (page.75) 1481 0 R (page.76) 1490 0 R] -/Limits [(page.71) (page.76)] +/Names [(page.67) 1435 0 R (page.68) 1442 0 R (page.69) 1449 0 R (page.7) 960 0 R (page.70) 1453 0 R (page.71) 1458 0 R] +/Limits [(page.67) (page.71)] >> -% 2326 0 obj +% 2345 0 obj << -/Names [(page.77) 1498 0 R (page.78) 1503 0 R (page.79) 1509 0 R (page.8) 977 0 R (page.80) 1514 0 R (page.81) 1522 0 R] -/Limits [(page.77) (page.81)] +/Names [(page.72) 1464 0 R (page.73) 1470 0 R (page.74) 1481 0 R (page.75) 1486 0 R (page.76) 1495 0 R (page.77) 1503 0 R] +/Limits [(page.72) (page.77)] >> -% 2327 0 obj +% 2346 0 obj << -/Names [(page.82) 1527 0 R (page.83) 1535 0 R (page.84) 1541 0 R (page.85) 1550 0 R (page.86) 1564 0 R (page.87) 1568 0 R] -/Limits [(page.82) (page.87)] +/Names [(page.78) 1508 0 R (page.79) 1514 0 R (page.8) 982 0 R (page.80) 1519 0 R (page.81) 1527 0 R (page.82) 1532 0 R] +/Limits [(page.78) (page.82)] >> -% 2328 0 obj +% 2347 0 obj << -/Names [(page.88) 1581 0 R (page.89) 1587 0 R (page.9) 988 0 R (page.90) 1594 0 R (page.91) 1598 0 R (page.92) 1606 0 R] -/Limits [(page.88) (page.92)] +/Names [(page.83) 1540 0 R (page.84) 1546 0 R (page.85) 1555 0 R (page.86) 1569 0 R (page.87) 1573 0 R (page.88) 1586 0 R] +/Limits [(page.83) (page.88)] >> -% 2329 0 obj +% 2348 0 obj << -/Names [(page.93) 1611 0 R (page.94) 1620 0 R (page.95) 1628 0 R (page.96) 1632 0 R (page.97) 1637 0 R (page.98) 1642 0 R] -/Limits [(page.93) (page.98)] +/Names [(page.89) 1592 0 R (page.9) 993 0 R (page.90) 1599 0 R (page.91) 1603 0 R (page.92) 1612 0 R (page.93) 1616 0 R] +/Limits [(page.89) (page.93)] >> -% 2330 0 obj +% 2349 0 obj << -/Names [(page.99) 1649 0 R (page.i) 719 0 R (page.ii) 776 0 R (page.iii) 823 0 R (page.iv) 863 0 R (precdata) 1106 0 R] -/Limits [(page.99) (precdata)] +/Names [(page.94) 1625 0 R (page.95) 1633 0 R (page.96) 1637 0 R (page.97) 1642 0 R (page.98) 1647 0 R (page.99) 1654 0 R] +/Limits [(page.94) (page.99)] >> -% 2331 0 obj +% 2350 0 obj << -/Names [(section*.1) 720 0 R (section*.10) 618 0 R (section*.11) 622 0 R (section*.12) 626 0 R (section*.13) 630 0 R (section*.14) 634 0 R] -/Limits [(section*.1) (section*.14)] +/Names [(page.i) 723 0 R (page.ii) 780 0 R (page.iii) 827 0 R (page.iv) 868 0 R (precdata) 1111 0 R (section*.1) 724 0 R] +/Limits [(page.i) (section*.1)] >> -% 2332 0 obj +% 2351 0 obj << -/Names [(section*.15) 638 0 R (section*.16) 642 0 R (section*.17) 646 0 R (section*.18) 650 0 R (section*.19) 654 0 R (section*.2) 2055 0 R] -/Limits [(section*.15) (section*.2)] +/Names [(section*.10) 622 0 R (section*.11) 626 0 R (section*.12) 630 0 R (section*.13) 634 0 R (section*.14) 638 0 R (section*.15) 642 0 R] +/Limits [(section*.10) (section*.15)] >> -% 2333 0 obj +% 2352 0 obj << -/Names [(section*.20) 2185 0 R (section*.3) 2084 0 R (section*.4) 2105 0 R (section*.5) 2125 0 R (section*.6) 601 0 R (section*.7) 606 0 R] -/Limits [(section*.20) (section*.7)] +/Names [(section*.16) 646 0 R (section*.17) 650 0 R (section*.18) 654 0 R (section*.19) 658 0 R (section*.2) 2082 0 R (section*.20) 2208 0 R] +/Limits [(section*.16) (section*.20)] >> -% 2334 0 obj +% 2353 0 obj << -/Names [(section*.8) 610 0 R (section*.9) 614 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 569 0 R (section.12) 577 0 R] -/Limits [(section*.8) (section.12)] +/Names [(section*.3) 2110 0 R (section*.4) 2131 0 R (section*.5) 2152 0 R (section*.6) 606 0 R (section*.7) 610 0 R (section*.8) 614 0 R] +/Limits [(section*.3) (section*.8)] >> -% 2335 0 obj +% 2354 0 obj << -/Names [(section.13) 597 0 R (section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R] -/Limits [(section.13) (section.6)] +/Names [(section*.9) 618 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 569 0 R (section.12) 581 0 R (section.13) 601 0 R] +/Limits [(section*.9) (section.13)] >> -% 2336 0 obj +% 2355 0 obj << -/Names [(section.7) 421 0 R (section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1052 0 R (spdata) 1045 0 R (subsection.10.1) 545 0 R] -/Limits [(section.7) (subsection.10.1)] +/Names [(section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R (section.7) 421 0 R] +/Limits [(section.2) (section.7)] >> -% 2337 0 obj +% 2356 0 obj << -/Names [(subsection.10.2) 549 0 R (subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.11.1) 573 0 R] -/Limits [(subsection.10.2) (subsection.11.1)] +/Names [(section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1057 0 R (spdata) 1050 0 R (subsection.10.1) 545 0 R (subsection.10.2) 549 0 R] +/Limits [(section.8) (subsection.10.2)] >> -% 2338 0 obj +% 2357 0 obj << -/Names [(subsection.12.1) 581 0 R (subsection.12.2) 585 0 R (subsection.12.3) 589 0 R (subsection.12.4) 593 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] +/Names [(subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.11.1) 573 0 R (subsection.11.2) 577 0 R] +/Limits [(subsection.10.3) (subsection.11.2)] +>> +% 2358 0 obj +<< +/Names [(subsection.12.1) 585 0 R (subsection.12.2) 589 0 R (subsection.12.3) 593 0 R (subsection.12.4) 597 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] /Limits [(subsection.12.1) (subsection.2.2)] >> -% 2339 0 obj +% 2359 0 obj << /Names [(subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R (subsection.3.4) 212 0 R] /Limits [(subsection.2.3) (subsection.3.4)] >> -% 2340 0 obj +% 2360 0 obj << /Names [(subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R (subsection.4.13) 272 0 R] /Limits [(subsection.3.5) (subsection.4.13)] >> -% 2341 0 obj +% 2361 0 obj << /Names [(subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R (subsection.4.4) 236 0 R] /Limits [(subsection.4.14) (subsection.4.4)] >> -% 2342 0 obj +% 2362 0 obj << /Names [(subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R (subsection.5.1) 292 0 R] /Limits [(subsection.4.5) (subsection.5.1)] >> -% 2343 0 obj +% 2363 0 obj << /Names [(subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R (subsection.6.11) 352 0 R] /Limits [(subsection.5.2) (subsection.6.11)] >> -% 2344 0 obj +% 2364 0 obj << /Names [(subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R (subsection.6.17) 376 0 R] /Limits [(subsection.6.12) (subsection.6.17)] >> -% 2345 0 obj +% 2365 0 obj << /Names [(subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R (subsection.6.22) 396 0 R] /Limits [(subsection.6.18) (subsection.6.22)] >> -% 2346 0 obj +% 2366 0 obj << /Names [(subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R (subsection.6.3) 320 0 R] /Limits [(subsection.6.23) (subsection.6.3)] >> -% 2347 0 obj + +endstream +endobj +2409 0 obj +<< + /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() +/CreationDate (D:20241111174717+01'00') +/ModDate (D:20241111174717+01'00') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) +>> +endobj +2368 0 obj +<< +/Type /ObjStm +/N 41 +/First 403 +/Length 6923 +>> +stream +2367 0 2369 222 2370 450 2371 676 2372 898 2373 1120 2374 1361 2375 1623 2376 1879 2377 2145 +2378 2415 2379 2677 2380 2939 2381 3149 2382 3329 2383 3505 2384 3674 2385 3770 2386 3884 2387 3996 +2388 4107 2389 4217 2390 4333 2391 4457 2392 4577 2393 4690 2394 4803 2395 4913 2396 5024 2397 5139 +2398 5260 2399 5386 2400 5512 2401 5643 2402 5766 2403 5832 2404 5953 2405 6076 2406 6188 2407 6272 +2408 6307 +% 2367 0 obj << /Names [(subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R (subsection.6.9) 344 0 R] /Limits [(subsection.6.4) (subsection.6.9)] >> -% 2348 0 obj +% 2369 0 obj << /Names [(subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R (subsection.7.14) 477 0 R] /Limits [(subsection.7.1) (subsection.7.14)] >> -% 2349 0 obj +% 2370 0 obj << /Names [(subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R (subsection.7.4) 437 0 R] /Limits [(subsection.7.15) (subsection.7.4)] >> -% 2350 0 obj +% 2371 0 obj << /Names [(subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R (subsection.8.1) 497 0 R] /Limits [(subsection.7.5) (subsection.8.1)] >> -% 2351 0 obj +% 2372 0 obj << /Names [(subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R (subsection.9.3) 525 0 R] /Limits [(subsection.8.2) (subsection.9.3)] >> -% 2352 0 obj +% 2373 0 obj << /Names [(subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R] /Limits [(subsection.9.4) (subsubsection.3.1.10)] >> -% 2353 0 obj +% 2374 0 obj << /Names [(subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R] /Limits [(subsubsection.3.1.11) (subsubsection.3.1.2)] >> -% 2354 0 obj +% 2375 0 obj << /Names [(subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R] /Limits [(subsubsection.3.1.3) (subsubsection.3.1.8)] >> -% 2355 0 obj +% 2376 0 obj << /Names [(subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R] /Limits [(subsubsection.3.1.9) (subsubsection.3.2.13)] >> -% 2356 0 obj +% 2377 0 obj << /Names [(subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R] /Limits [(subsubsection.3.2.14) (subsubsection.3.2.19)] >> -% 2357 0 obj +% 2378 0 obj << /Names [(subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R] /Limits [(subsubsection.3.2.2) (subsubsection.3.2.7)] >> -% 2358 0 obj +% 2379 0 obj << /Names [(subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R] /Limits [(subsubsection.3.2.8) (subsubsection.3.3.4)] >> -% 2359 0 obj +% 2380 0 obj << -/Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1099 0 R (table.10) 1247 0 R (table.11) 1255 0 R (table.12) 1268 0 R] +/Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1104 0 R (table.10) 1252 0 R (table.11) 1260 0 R (table.12) 1273 0 R] /Limits [(subsubsection.3.3.5) (table.12)] >> -% 2360 0 obj +% 2381 0 obj << -/Names [(table.13) 1288 0 R (table.14) 1316 0 R (table.15) 1332 0 R (table.16) 1347 0 R (table.17) 1361 0 R (table.18) 1390 0 R] +/Names [(table.13) 1293 0 R (table.14) 1321 0 R (table.15) 1337 0 R (table.16) 1352 0 R (table.17) 1366 0 R (table.18) 1395 0 R] /Limits [(table.13) (table.18)] >> -% 2361 0 obj +% 2382 0 obj << -/Names [(table.19) 1426 0 R (table.2) 1144 0 R (table.20) 1438 0 R (table.21) 2059 0 R (table.3) 1161 0 R (table.4) 1174 0 R] +/Names [(table.19) 1431 0 R (table.2) 1149 0 R (table.20) 1443 0 R (table.21) 2085 0 R (table.3) 1167 0 R (table.4) 1179 0 R] /Limits [(table.19) (table.4)] >> -% 2362 0 obj +% 2383 0 obj << -/Names [(table.5) 1188 0 R (table.6) 1196 0 R (table.7) 1209 0 R (table.8) 1221 0 R (table.9) 1240 0 R (title.0) 3 0 R] +/Names [(table.5) 1193 0 R (table.6) 1201 0 R (table.7) 1214 0 R (table.8) 1226 0 R (table.9) 1245 0 R (title.0) 3 0 R] /Limits [(table.5) (title.0)] >> -% 2363 0 obj +% 2384 0 obj << -/Names [(vbasedata) 1033 0 R (vdata) 1086 0 R] +/Names [(vbasedata) 1038 0 R (vdata) 1091 0 R] /Limits [(vbasedata) (vdata)] >> -% 2364 0 obj +% 2385 0 obj << -/Kids [2261 0 R 2262 0 R 2263 0 R 2264 0 R 2266 0 R 2267 0 R] +/Kids [2281 0 R 2282 0 R 2283 0 R 2284 0 R 2285 0 R 2286 0 R] /Limits [(Doc-Start) (Item.125)] >> - -endstream -endobj -2388 0 obj -<< - /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20240716132003+02'00') -/ModDate (D:20240716132003+02'00') -/Trapped /False -/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) ->> -endobj -2366 0 obj -<< -/Type /ObjStm -/N 22 -/First 209 -/Length 2765 ->> -stream -2365 0 2367 112 2368 223 2369 333 2370 449 2371 573 2372 693 2373 806 2374 918 2375 1029 -2376 1140 2377 1254 2378 1375 2379 1501 2380 1627 2381 1757 2382 1878 2383 1999 2384 2121 2385 2224 -2386 2308 2387 2343 -% 2365 0 obj +% 2386 0 obj << -/Kids [2268 0 R 2269 0 R 2270 0 R 2271 0 R 2272 0 R 2273 0 R] +/Kids [2287 0 R 2288 0 R 2289 0 R 2290 0 R 2291 0 R 2292 0 R] /Limits [(Item.126) (Item.26)] >> -% 2367 0 obj +% 2387 0 obj << -/Kids [2274 0 R 2275 0 R 2276 0 R 2277 0 R 2278 0 R 2279 0 R] +/Kids [2293 0 R 2294 0 R 2295 0 R 2296 0 R 2297 0 R 2298 0 R] /Limits [(Item.27) (Item.59)] >> -% 2368 0 obj +% 2388 0 obj << -/Kids [2280 0 R 2281 0 R 2282 0 R 2283 0 R 2284 0 R 2285 0 R] +/Kids [2299 0 R 2300 0 R 2301 0 R 2302 0 R 2303 0 R 2304 0 R] /Limits [(Item.6) (Item.91)] >> -% 2369 0 obj +% 2389 0 obj << -/Kids [2286 0 R 2287 0 R 2288 0 R 2289 0 R 2290 0 R 2291 0 R] +/Kids [2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R 2310 0 R] /Limits [(Item.92) (equation.4.1)] >> -% 2370 0 obj +% 2390 0 obj << -/Kids [2292 0 R 2293 0 R 2294 0 R 2295 0 R 2296 0 R 2297 0 R] -/Limits [(equation.4.2) (lstnumber.-11.1)] +/Kids [2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R 2316 0 R] +/Limits [(equation.4.2) (lstnumber.-10.1)] >> -% 2371 0 obj +% 2391 0 obj << -/Kids [2298 0 R 2299 0 R 2300 0 R 2301 0 R 2302 0 R 2303 0 R] -/Limits [(lstnumber.-12.1) (page.115)] +/Kids [2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R 2322 0 R] +/Limits [(lstnumber.-11.1) (page.112)] >> -% 2372 0 obj +% 2392 0 obj << -/Kids [2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R] -/Limits [(page.116) (page.148)] +/Kids [2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R 2328 0 R] +/Limits [(page.113) (page.145)] >> -% 2373 0 obj +% 2393 0 obj << -/Kids [2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R] -/Limits [(page.149) (page.21)] +/Kids [2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R 2334 0 R] +/Limits [(page.146) (page.178)] >> -% 2374 0 obj +% 2394 0 obj << -/Kids [2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R] -/Limits [(page.22) (page.54)] +/Kids [2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R 2340 0 R] +/Limits [(page.18) (page.5)] >> -% 2375 0 obj +% 2395 0 obj << -/Kids [2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R] -/Limits [(page.55) (page.87)] +/Kids [2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R 2346 0 R] +/Limits [(page.50) (page.82)] >> -% 2376 0 obj +% 2396 0 obj << -/Kids [2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R] -/Limits [(page.88) (section*.7)] +/Kids [2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R 2352 0 R] +/Limits [(page.83) (section*.20)] >> -% 2377 0 obj +% 2397 0 obj << -/Kids [2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R] -/Limits [(section*.8) (subsection.3.4)] +/Kids [2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R 2358 0 R] +/Limits [(section*.3) (subsection.2.2)] >> -% 2378 0 obj +% 2398 0 obj << -/Kids [2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R] -/Limits [(subsection.3.5) (subsection.6.22)] +/Kids [2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R 2364 0 R] +/Limits [(subsection.2.3) (subsection.6.17)] >> -% 2379 0 obj +% 2399 0 obj << -/Kids [2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R] -/Limits [(subsection.6.23) (subsection.9.3)] +/Kids [2365 0 R 2366 0 R 2367 0 R 2369 0 R 2370 0 R 2371 0 R] +/Limits [(subsection.6.18) (subsection.8.1)] >> -% 2380 0 obj +% 2400 0 obj << -/Kids [2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R] -/Limits [(subsection.9.4) (subsubsection.3.2.7)] +/Kids [2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R 2377 0 R] +/Limits [(subsection.8.2) (subsubsection.3.2.19)] >> -% 2381 0 obj +% 2401 0 obj << -/Kids [2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R] -/Limits [(subsubsection.3.2.8) (vdata)] +/Kids [2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R] +/Limits [(subsubsection.3.2.2) (title.0)] >> -% 2382 0 obj +% 2402 0 obj << -/Kids [2364 0 R 2365 0 R 2367 0 R 2368 0 R 2369 0 R 2370 0 R] -/Limits [(Doc-Start) (lstnumber.-11.1)] +/Kids [2384 0 R] +/Limits [(vbasedata) (vdata)] >> -% 2383 0 obj +% 2403 0 obj << -/Kids [2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R] -/Limits [(lstnumber.-12.1) (section*.7)] +/Kids [2385 0 R 2386 0 R 2387 0 R 2388 0 R 2389 0 R 2390 0 R] +/Limits [(Doc-Start) (lstnumber.-10.1)] >> -% 2384 0 obj +% 2404 0 obj << -/Kids [2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R] -/Limits [(section*.8) (vdata)] +/Kids [2391 0 R 2392 0 R 2393 0 R 2394 0 R 2395 0 R 2396 0 R] +/Limits [(lstnumber.-11.1) (section*.20)] >> -% 2385 0 obj +% 2405 0 obj << -/Kids [2382 0 R 2383 0 R 2384 0 R] +/Kids [2397 0 R 2398 0 R 2399 0 R 2400 0 R 2401 0 R 2402 0 R] +/Limits [(section*.3) (vdata)] +>> +% 2406 0 obj +<< +/Kids [2403 0 R 2404 0 R 2405 0 R] /Limits [(Doc-Start) (vdata)] >> -% 2386 0 obj +% 2407 0 obj << -/Dests 2385 0 R +/Dests 2406 0 R >> -% 2387 0 obj +% 2408 0 obj << /Type /Catalog -/Pages 2258 0 R -/Outlines 2259 0 R -/Names 2386 0 R +/Pages 2277 0 R +/Outlines 2278 0 R +/Names 2407 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels<>2<>6<>]>> -/OpenAction 657 0 R +/OpenAction 661 0 R >> endstream endobj -2389 0 obj +2410 0 obj << /Type /XRef -/Index [0 2390] -/Size 2390 +/Index [0 2411] +/Size 2411 /W [1 3 1] -/Root 2387 0 R -/Info 2388 0 R -/ID [<47BB61B7C67E5662CD653809E7A13A98> <47BB61B7C67E5662CD653809E7A13A98>] -/Length 11950 ->> -stream -ÿ]Ô`c#Ô_c-Ô^c5Ô]cAÔ\  -cJÔ[  ÌÔZ Ì ÔYÌÔXÌÔWÌ3ÔVÌ4ÔUÌ5ÔTÌ6ÔSÌ:ÔRÌ;ÔQ Ì<ÔP!"Ì@ÔO#$ÌAÔN%&ÌCÔM'(ÌDÔL)*ÌHÔK+,ÌIÔJ-.ÌJÔI/0ÌQÔH12ÌRÔG34ÌYÔF56ÌZÔE78Ì^ÔD9:Ì_ÔC;<ÌaÔB=>'ÔA?@'Ô@AB'Ô?CD'Ô>EF'Ô=GH' Ô<IJ' Ô;KL'Ô:MN'Ô9OP'Ô8QR'Ô7ST'Ô6UV'Ô5WX'Ô4YZ' Ô3[\'&Ô2]^''Ô1_`'(Ô0ab'.Ô/cË?%'3Ô.ËË'4Ô-ËË'5Ô,ËË'<Ô+ËË'@Ô*Ë Ë -'JÔ)Ë Ë 'ZÔ(Ë ËŠÔ'ËËŠÔ&ËËŠÔ%ËËŠ%Ô$ËËŠ1Ô#ËËŠ<Ô"ËËŠMÔ!ËËŠTÔ ËËŠ[ÔËË õÔË!Ë"õÔË#Ë$õ/ÔË%Ë&õ<ÔË'Ë(õKÔË)Ë*õQÔË+Ë,õXÔË-Ë.a ÔË/Ë0a)ÔË1Ë2a2ÔË3Ë4a=ÔË5Ë6a>ÔË7Ë8aUÔË9Ë:abÔË;Ë<ÔÔË=Ë>Ô -ÔË?Ë@ÔÔËAËBÔÔ ËCËDÔ&Ô ËEËFÔAÔ ËGËHÔQÔ -ËIËJÔWÔ ËKËLÔ^ÔËMËNGÔËOËPGÔËQËRGÔËSËTGÔËUËVG!ÔËWËXG+ÔËYËZG0ÔË[Ë\G6ÔË]Ë^G<ÌcË_Ë`GBÌbËaËbGHÌaËc”}ƒGOÌ`””GVÌ_””GcÌ^””¬Ì]””¬Ì\” ” -¬Ì[” ” ¬ÌZ” ”¬#ÌY””¬*ÌX””¬.ÌW””¬2ÌV””¬6ÌU””¬:ÌT””¬>ÌS””¬HÌR””¬RÌQ”” ¬\ÌP”!”"ÌO”#”$ ÌN”%”&ÌM”'”("ÌL”)”*'ÌK”+”,.ÌJ”-”.7ÌI”/”0=ÌH”1”2CÌG”3”4IÌF”5”6OÌE”7”8TÌD”9”:[ÌC”;”<bÌB”=”>‰ÌA”?”@‰ Ì@”A”B‰Ì?”C”D‰Ì>”E”F‰"Ì=”G”H‰+Ì<”I”J‰6Ì;”K”L‰;Ì:”M”N‰?Ì9”O”P‰EÌ8”Q”R‰IÌ7”S”T‰OÌ6”U”VùÌ5”W”XùÌ4”Y”Zù Ì3”[”\ùÌ2”]”^ù]Ì1”_”`ùaÌ0”a”bùbÌ/”c]üöxÌ.]]xÌ-]]xÌ,]]xÌ+]]xÌ*] ] -xÌ)] ] x Ì(] ]x -Ì']]x Ì&]]xÌ%]]xÌ$]]xÌ#]]xÌ"]]]À£]] ½Ž]]x\x^x]x_ÑO]#]!í]"]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]9];]<]=]>]?]@]A]B]C]E]G]I]J]K]L]M]N]O]P]Q]R]W]U]$‚w]S]T]8]:]D]F]H]X]Y]Z][]\]]]^]_]`]a]b]c           -                       ! % #]V¾¢ "°Â & ' ( ) * + , - . / 0 1 2 3 4 5 6 8 9 : ; < = > ? @ A B C D E F G H I J K M N P R W U $5¡ T 7 L O Q S Y [ ] ^ _ ` a b ccccccccccc c -c c c ccccccccc V}c X Z \ cccccccc c!c"c$cñx`x,x#x0x.x+x x!x*xxc*c+c,%Žc1c/c%½c.c&c'c(c)*Dxc2c3c8c05çc4xWxVxUc6c7x)c=c>iycBc9V_c?c@c:c;c<xxcDcEcGcCp#cFcUcScHƒžcIcKcLcMcNcOcPcQcRÌÌcT¤”cVcWcXcYcZc[c\c]c^c_c`cacbccÌxXxa ÌÌÌò²ÌÌÌÌ Ì -Ì Ì ÌÌÌóÌÌÌÌÌÌ Ì/*ÌÌÌÌÌÌÌ"Ì#Ì.Ì!GÌ$Ì%Ì&Ì'Ì(Ì)Ì*Ì+Ì,xYÌ-Ì0Ì1Ì7Ì/bÞÌ2Ì=Ì8vxÌ9xbÌEÌ>‡ÄÌ?ÌBÌKÌFš“ÌGÌMÌNÌOÌTÌL°ØÌPÌSx%ÌWÌ[ÌUÏÌVÌXÌbÌ\ì'Ì]Ì`'Ìcûx'xcbž' '1¢''' -HÚ' ''['''mo''''"'†`''!'%')'#¤`'$Ì'+','/'*¸e'-'K'1'9'7'0ǽ'2'6';'='8Ùj':'A'>ê1'?'C'D'E'F'G'H'N'L'Bë 'Ix['O'P'R'Mr'QÌ'T'U'V'W'X'\'S'Y'['^'a']0/'_'`'cŠŠŠŠŠŠ'bAŠŠª{Š Š ŒfŠ -Š ŠŠŠŠ ŽéŠŠŠŠ­‡ŠŠÌŠŠŠŠŠ¹§ŠŠŠ!Š"Š#Š'Š ÓŠ$Š&Š+Š(ð-Š)Š*Š-Š.Š/Š3Š,üPŠ0Š2Š6Š4ÛŠ5Š8Š9Š:Š>Š7_Š;Š=ÌŠGŠ?6»Š@ŠAŠBŠCŠDŠEŠFŠIŠJŠKŠOŠHGÚŠLŠNŠQŠRŠVŠP`{ŠSŠUŠXŠYŠ]ŠWuÁŠZxZŠ\Š_Š`ŠaŠbõõŠ^‹Šcõõõõ7¿õõ õ -õ õ õ õõõ×ÅõÌõõõõñ†õõõõõõõõõ õ_õõ"õ#õ%õ!.õ$õ'õ(õ)õ*õ+õ,õ-õ1õ&@õ.õ0õ4õ2]Ðõ3õ6õ7õ8õ9õ:õ@õAõ>õ5_Gõ;õ=ÌõCõ?|âõBõEõFõGõHõIõMõD‚'õJõLõOõRõNŸnõPõTõUõVõbõZõS¢õWõYÈ]õcaõ[¼Aaaõ\õ]õ^õ_õ`õaÖ¸ -'"Óaal`aÌaaa a ax…a -a a¼kaaaa—Maaaaa"aa¬Ñaa#aºía!aaaaaa Ë þxa%a&a'a+a$,a(a*a.a,Mza-Ìa0a6a4a/S@a1a3a7a8a:a5pa9a?a;€Na<aAaDa@™:aBaCaFaIaE²8aGxTaHaQaJÙvaKaLaMaNaOaPÌaSaVaRã®aTaXa]aWÿIaYaZa[a\a_a`Ôa^ Eaaac=ŠÔÔÔÔOŒÔÔÔ Ô\)Ô Ô ÔÔÔ dÝÔÌ ÔÔ{hÔÔÔÔÔÔÔqÔÔÔ#Ô—ñÔÔ Ô!Ô"Ô)Ô'Ô$œ£Ô%Ô*Ô+Ô2Ô(±ßÔ,Ô-Ô.Ô/Ô0Ô1Ô;Ô3ÌéÔ4Ô5Ô6Ô7Ô8Ô9Ô:Ì -Ô=Ô>Ô?ÔBÔ<ÞÝÔ@ÔLÔCùŸÔDÔEÔFÔGÔHÔIÔJÔKÔNÔOÔRÔM&ÔPÔTÔUÔYÔSÔVÔXÔ[Ô\Ô_ÔZ!]Ô]ÔcÔ`9°ÔaÔbÌ GGGGf(GsG -G%GGG G G GGG }GGGGGGG™¢GGG¦wGGG"G³FG Ì G'G#ËáG$G%G&G)G,G(ξG*G.G2G-äMG/G1G4G8G3ðëG5G7G:G>G9ãG;G=G@GDG?kGAGCÌ GFGKGE#YGGGIGJGMGRGL1ÕGNGPGQGTGWGS?”GUG]GXU9GYGZG[G\G_G`Ga¬G^c?Gb ÙÚ¬¬œ’¬Ì¬¬²É¬¬¬¬ ¬ -¬ ¬ ¬ ¬¬¬¬ÏŠ¬¬¬Ðr¬¬¬¬ ¬æ5¬¬¬¬'¬!÷Û¬"¬$¬%¬&¬+¬( l¬)̬/¬, U¬-¬3¬0 ›¬1¬7¬4 $[¬5¬;¬8 *¬9¬?¬< /D¬=¬E¬@ E¬A¬B¬C¬DxS̬I¬F Z%¬G¬O¬J q'¬K¬L¬M¬N¬S¬P „ȬQ¬Y¬T š±¬U¬V¬W¬X¬]¬Z ¯Y¬[¬c¬^ ÆK¬_¬`¬a¬bÌ þ0"F­ !]  -!) !?3!Sþ!jËxRÌ$ !ƒt!#)%!˜™&(+,/*!­Â-2340!Æ`1:5!îÛ689@;!ý -<>?ÌFA"{BDELG"®HJKPM"ËNRWQ"SUVY^X"% Z\]`‰_"8šac‰Ì#’Ú‰‰‰"kƉ‰‰‰ -‰‰ "|>‰ ‰ ‰‰‰‰"˜º‰‰‰‰‰"´˜‰‰‰"·d‰‰‰ ‰$‰"»ö‰!‰#̉&‰'‰(‰)‰,‰%"Ïˉ*‰/‰-"휉.‰1‰2‰3‰4‰7‰0"ñÖ‰5‰9‰<‰8#<‰:‰@‰=#´‰>‰B‰C‰F‰A#¾‰D̉J‰G#$Š‰H‰L‰M‰V‰T‰K#&ë‰N‰P‰Q‰R‰S‰W‰X‰Y‰[‰U#G^‰Z‰]‰_‰\#c)‰^‰a‰cùùùùù‰`#tïù‰b%•lx1x2ù ù -#óûù $!ù#ùùù#¿Ìù ùùÌx-ùù%ùù#áàùùùùùù$ù.ù0ù$’ù$ù&ù'ù(ù)ù*ù+ù,ù-ù/ùù$+]ùù ù!$,eù"$-[$.e$M?$uù8ù9ù:ù>ù1$Vqù;ù<ù=ù2ù3ù4ù5ù6$‚ù7$ƒ&$„$‘ØùHùJ$Ð3ùFùLù?$°®ùGùIùKù@ùAùBùCùD$Û<ùE$Ü8$ÝH$öå%&|ùTùWùM%ùUùVùNùO%3·ùPùQùR%5(ùS%6$%7D%TOùZùX%aùYÌù^ù[%dGù\xù_%êù`ùc)É,x x%È[xxx %ݦxxx%è„xx&x%éxxxx"x$Ìx3x'& x(x/x4xOx5x6x7x8xQx9x:xPx;x<x=xNx>x?x@&éxA&0ÈxB&NÕxC&vÍxD&‡*xE&–æxF&êÅxG'kVxH'¼+xI((¼xJ(pxK(ÎÐxL)4çxM)„‘)ˆ½){)“·)˜ÿ)¡>)¥Õ)ªg)®ù)²‹)·!)½#)Ã%Ì*ÌÌÌÌÌÌ Ì!*8=ÔaÔbÔcÙ*_EÙÙÙÙÙÙÙÙÙ Ù -Ù Ù Ù ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ Ù!Ù"Ù#Ù$Ù%Ù&Ù'Ù(Ù)Ù*Ù+Ù,Ù-Ù.Ù/Ù0Ù1Ù2Ù3Ù4Ù5Ù6Ù7Ù8Ù9Ù:Ù;Ù<Ù=Ù>Ù?Ù@Ù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Ù[Ù\Ù]Ù^Ù_Ù`ÙaÙbÙc >*±. > > > > > > > > >  > - >  >  >  > > > > > > > >*¯*¼W +/Root 2408 0 R +/Info 2409 0 R +/ID [ ] +/Length 12055 +>> +stream +ÿ]!è h&è h0è h8è +hDè   +hMè  Ñ è ÑèÑèÑèÑ6èÑ7èÑ8èÑ9èÑ=çcÑ>çb Ñ?ça!"ÑCç`#$ÑDç_%&ÑFç^'(ÑGç])*ÑKç\+,ÑLç[-.ÑMçZ/0ÑTçY12ÑUçX34Ñ\çW56Ñ]çV78ÑaçU9:ÑbçT;<'çS=>'çR?@'çQAB'çPCD' +çOEF' çNGH'çMIJ'çLKL'çKMN'çJOP'çIQR'çHST' çGUV'!çFWX'"çEYZ'#çD[\')çC]^'*çB_`'+çAab'1ç@cË?%'6ç?ËË'7ç>ËË'8ç=ËË'?ç<ËË'Cç;Ë Ë +'Mç:Ë Ë ']ç9Ë Ë„ ç8ËË„ç7ËË„ ç6ËË„(ç5ËË„4ç4ËË„?ç3ËË„Pç2ËË„Wç1ËË„^ç0ËË úç/Ë!Ë"úç.Ë#Ë$ú2ç-Ë%Ë&ú?ç,Ë'Ë(úNç+Ë)Ë*úTç*Ë+Ë,ú[ç)Ë-Ë.eç(Ë/Ë0e,ç'Ë1Ë2e5ç&Ë3Ë4e@ç%Ë5Ë6eAç$Ë7Ë8eXç#Ë9Ë:Ùç"Ë;Ë<Ùç!Ë=Ë>Ù ç Ë?Ë@ÙçËAËBÙçËCËDÙ)çËEËFÙDçËGËHÙTçËIËJÙZçËKËLÙaçËMËNFçËOËPFçËQËRFçËSËTFçËUËVF$çËWËXF.çËYËZF3çË[Ë\F9çË]Ë^F?çË_Ë`FEçËaËbFKçËc”}ƒFRç ””FYç ””±ç ””±ç +””±ç ” ” +±ç” ” ± ç” ”±&ç””±-ç””±1ç””±5ç””±9ç””±=ç””±Aç””±KÔc””±UÔb”” ±_Ôa”!”"Ô`”#”$Ô_”%”&Ô^”'”(%Ô]”)”**Ô\”+”,1Ô[”-”.:ÔZ”/”0@ÔY”1”2FÔX”3”4LÔW”5”6RÔV”7”8WÔU”9”:^ÔT”;”<ŽÔS”=”>ŽÔR”?”@ŽÔQ”A”BŽÔP”C”DŽÔO”E”FŽ%ÔN”G”HŽ.ÔM”I”JŽ9ÔL”K”LŽ>ÔK”M”NŽBÔJ”O”PŽHÔI”Q”RŽLÔH”S”TŽRÔG”U”VþÔF”W”XþÔE”Y”ZþÔD”[”\þ#ÔC”]”^þ$ÔB”_”`ÔA”a”bÔ@”c]ýñÔ?]]Ô>]]Ô=]]Ô<]]Ô;] ] +Ô:] ] Ô9] ]Ô8]] Ô7]]!Ô6]]%Ô5]]&Ô4]]'Ô3]](Ô2]]]Áž]]"¾‰]] ÔÔ +Ô Ô ÒJ]%]#‚è]$]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9];]=]>]?]@]A]B]C]D]E]G]I]K]L]M]N]O]P]Q]R]S]T]Y]W]&ƒr]U]V]:]<]F]H]J]Z][]\]]]^]_]`]a]b]c           +                       ! " # ' %]X¿ $²k ( ) * + , - . / 0 1 2 3 4 5 6 7 8 : ; < = > ? @ A B C D E F G H I J K L M O P R T Y W &5ø V 9 N Q S U [ ] _ ` a b chhhhhhhhhh h +h h h hhhhhhhhhhhh X}Zh Z \ ^õhhhhh h!h"h#h$h%h'hò½Ô ?6CA>34=01h-h.h/'7h4h2h(fh1h)h*h+h,+í2h5h6h;h37h7ÔÔÔh9h:<h@hAk"hEh<XhBhCh=h>h?/.hGhHhJhFqÌhIhXhVhK…GhLhNhOhPhQhRhShThUÑÑhW¦=hYhZh[h\h]h^h_h`hahbhcÑÑÑÑÔÔ þHÑÑÑõÑÑ +Ñ Ñ Ñ ÑÑÑÑÑÂÑÑÑÑÑÑ#Ñ1ùÑÑÑÑ Ñ!Ñ"Ñ%Ñ&Ñ1Ñ$IìÑ'Ñ(Ñ)Ñ*Ñ+Ñ,Ñ-Ñ.Ñ/ÔÑ0Ñ3Ñ4Ñ:Ñ2e®Ñ5Ñ@Ñ;yHÑ<ÔÑHÑAŠ”ÑBÑEÑNÑIcÑJÑPÑQÑRÑWÑO³¨ÑSÑV8ÑZÑ^ÑXÑáÑYÑ['Ñ_î÷Ñ`ÑcCŒ''"x'Ô' '4' '' KL''']‘'''oá''''%'ˆÒ''$'(','&¦Ò''Ô'.'/'2'-º×'0'N'4'<':'3Ê/'5'9'>'@';ÛÜ'='D'Aì£'B'F'G'H'I'J'K'Q'O'Eí~'LÔ'R'S'U'P +ä'TÔ'W'X'Y'Z'['_'V…'\'^'a„'`2¡'b'c¬F„„„„„„„ „l­„„ +„„ Ž1„ „„„„„´„„„„¯R„„Ô„„„„"„»r„„!„$„%„&„*„#ÔÏ„'„)„.„+ñø„,„-„0„1„2„6„/þ„3„5„9„7¦„8„;„<„=„A„:*„>„@Ô„J„B8†„C„D„E„F„G„H„I„L„M„N„R„KI¥„O„Q„T„U„Y„SbF„V„X„[„\„`„ZwŒ„]Ô„_„b„cúúú +ú„aŒåúúúúúØÝú ú ú úúúúúú ÙêúÔúúúúó«úúúúúúú ú!ú#ú„ú"ú%ú&ú(ú$0@ú'ú*ú+ú,ú-ú.ú/ú0ú4ú)B:ú1ú3ú7ú5_õú6ú9ú:ú;ú<ú=úCúDúAú8alú>ú@ÔúFúBúEúHúIúJúKúLúPúG„LúMúOúRúUúQ¡“úSúWúXúYeú]úV¤?úZú\Ê‚eeú^¾feeú_ú`úaúbúce È$B@7eemÏeÔe +e e ee yôe ee½Úeeee˜¼eeeee%ee®@ee&e¼\e$eee e!e"e#Ìxÿçe(e)e*e.e'-e+e-e1e/Née0Ôe3e9e7e2T¯e4e6e:e;e=e8qðe<eBe>½e?eDeGeCš©eEeFeIeLeH³§eJÔeKeTeMÚåeNeOePeQeReSÔeVeYeUåeWe[e`eZ¸e\e]e^e_ebecÙea ´ÙÙ@aÙÙÙ ÙRcÙÙ ÙÙ +_Ù ÙÙÙÙg´ÙÔÙÙ~?ÙÙÙÙÙÙ Ù„HÙÙÙ&Ù!šÈÙ"Ù#Ù$Ù%Ù,Ù*Ù'ŸzÙ(Ù-Ù.Ù5Ù+´¶Ù/Ù0Ù1Ù2Ù3Ù4Ù>Ù6ÏÀÙ7Ù8Ù9Ù:Ù;Ù<Ù=ÔÙ@ÙAÙBÙEÙ?á´ÙCÙOÙFüvÙGÙHÙIÙJÙKÙLÙMÙNÙQÙRÙUÙPýÙSÙWÙXÙ\ÙVåÙYÙ[Ù^Ù_ÙbÙ]$4Ù`FÙc<‡FFÔuÊFFFFhÛFF F ØF +F F FFFFF„0FFFFFFFœUFF F©*FF"F%F!µùF#ÔF*F&ΔF'F(F)F,F/F+ÑqF-F1F5F0çF2F4F7F;F6óžF8F:F=FAF<–F>F@FCFGFBFDFFÔFIFNFH& FJFLFMFPFUFO4ˆFQFSFTFWFZFVBGFXF`F[WìF\F]F^F_FbFc±±Faeò± ÜW±±Ÿ±Ô±±µF± ± +± ± ± ±±±±±±±Ò±±±Òï±±±±#±è²±±!±"±*±$úX±%±'±(±)±.±+ +é±,Ô±2±/ Ò±0±6±3 "±4±:±7 &ر8±>±; ,±<±B±? 1Á±@±H±C G”±D±E±F±GcÔ ±L±I \¢±J±R±M s¤±N±O±P±Q±V±S ‡E±T±\±W .±X±Y±Z±[±`±] ±Ö±^±a Èȱb±cÔ!"I6!¹ !æ  +  !+Œ!A¼!V‡"!mTb !Ô"'#!…ý$&,(!›")+./2-!°K05673!Èé4=8!ñd9;<C>!ÿ“?ABÔ#ID"EGHOJ" 7KMNSP"TQUZT"ŒVXY\a["'’]_`cŽb";#ŽŽŽÔ$#™¦ŽŽ Ž"nŸŽŽ Ž +Ž ŽŽ "ŽŽŽŽŽŽ"›“ŽŽŽŽŽ"·qŽŽ Ž"º=ŽŽ"Ž#Ž'Ž!"¾ÏŽ$Ž&Ô%Ž)Ž*Ž+Ž,Ž/Ž("Ò¤Ž-Ž2Ž0"ðuŽ1Ž4Ž5Ž6Ž7Ž:Ž3"ô¯Ž8Ž<Ž?Ž;# Ž=ŽCŽ@#ŽAŽEŽFŽIŽD#—ŽGÔ&ŽMŽJ#'cŽKŽOŽPŽYŽWŽN#)¶ŽQŽSŽTŽUŽVŽZŽ[Ž\Ž^ŽX#J)Ž]Ž`ŽbŽ_#eôŽaþþþþ +þŽc#wºþþþþ%h™þ þ þþ #Åþ Ô'þþ#ßlþþþþþþþþþ#ãîþþDEþþ $6þ!$cþ9þ+þ'þ$Ôþ"þ%þ&@þ-þ;þ1þ($#áþ,þ.þ/þ0þ)þ*$EþDþFþ2$F—þ:þ<þ=þ>þ?þ@þAþBþCþEþ3þ4$mlþ5þ6þ7$ntþ8$oj$pt$N$·ŽþNþOþPþTþG$˜€þQþRþSÔ(þHþIþJþKþL$ÄþM$Å3$Æ)$Óåþ^þ`%Gþ\þbþU$ò»þ]þ_þaþVþWþXþYþZ%Pþ[%L%\%8ù%›Ú þc%D,%©(ÝZ%ª†%«‚%¬¢%É­  +%Öî  %Ù¦%õI"& +ÈÔ))#& $9*&*ï+,-57F:&Cý;BGHIJKLMNOPaQRS&UÆT&r¥U&–•V&´¢W&ÓÏX&ûÇY'N]Z'^’['ž8\'®•]'¾Q^(_(ƒ`(ÒÈ(Öô))`y)$L)+E)3„)9È)@)FF)IØ)Nn)Tp)ZrÔ*Ô+Ô,Ô-Ô.Ô/Ô0Ô1)ŽÎ)´âèèèèèèèèèèèèèèèèèèè è!è"è#è$è%è&è'è(è)è*è+è,è-è.è/è0è1è2è3è4è5è6è7è8è9è:è;è<è=è>è?è@è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è[è\è]è^è_è`èaèbèc @)ÿ7 @ @ @ @ @ @ @ @ @  @ + @  @  @  @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @! @" @# @$ @% @& @' @()ý *ž endstream endobj startxref -2800727 +2759326 %%EOF diff --git a/docs/src/methods.tex b/docs/src/methods.tex index 4b2f8b66..55b7b4e0 100644 --- a/docs/src/methods.tex +++ b/docs/src/methods.tex @@ -2,8 +2,8 @@ \label{sec:methods} In this chapter we provide routines for preconditioners and iterative -methods. The interfaces for Krylov subspace methods are available in -the module \verb|psb_krylov_mod|. +methods. The interfaces for iterative methods are available in +the module \verb|psb_linsolve_mod|. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -146,6 +146,119 @@ An integer value; 0 means no error has been detected. \end{description} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Richardson driver routine +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\clearpage\subsection{psb\_richardson \label{richardson} --- + Richardson Iteration Driver Routine} + +This subroutine is a driver implementig a Richardson iteration +\[ x_{k+1} = M^-1 (b-Ax_k) +x_k,\] +with the preconditioner operator $M$ defined in the previous section. + +The stopping criterion can take the following values: +\begin{description} +\item[1] normwise backward error in the infinity +norm; the iteration is stopped when +\[ err = \frac{\|r_i\|}{(\|A\|\|x_i\|+\|b\|)} < eps \] +\item[2] Relative residual in the 2-norm; the iteration is stopped +when +\[ err = \frac{\|r_i\|}{\|b\|_2} < eps \] +\item[3] Relative residual reduction in the 2-norm; the iteration is stopped +when +\[ err = \frac{\|r_i\|}{\|r_0\|_2} < eps \] +\end{description} +The behaviour is controlled by the istop argument (see +later). In the above formulae, $x_i$ is the tentative solution and +$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. + + +\begin{lstlisting} +call psb_richardson(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) +\end{lstlisting} + +\begin{description} +\item[Type:] Synchronous. +\item[\bf On Entry] +\item[a] the local portion of global sparse matrix +$A$. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a structured data of type \spdata. +\item[prec] The data structure containing the preconditioner.\\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a structured data of type \precdata. +\item[b] The RHS vector. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a rank one array or an object of type \vdata. +\item[x] The initial guess. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf inout}.\\ +Specified as: a rank one array or an object of type \vdata. +\item[eps] The stopping tolerance. \\ +Scope: {\bf global} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a real number. +\item[desc\_a] contains data structures for communications.\\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a structured data of type \descdata. +\item[itmax] The maximum number of iterations to perform.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf in}.\\ +Default: $itmax = 1000$.\\ +Specified as: an integer variable $itmax \ge 1$. +\item[itrace] If $>0$ print out an informational message about + convergence every $itrace$ iterations. If $=0$ print a message in + case of convergence failure.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf in}.\\ +Default: $itrace = -1$.\\ + +\item[istop] An integer specifying the stopping criterion.\\ +Scope: {\bf global} \\ +Type: {\bf optional}.\\ +Intent: {\bf in}.\\ +Values: 1: use the normwise backward error, 2: use the scaled 2-norm +of the residual, 3: use the residual reduction in the 2-norm. Default: 2. +\item[\bf On Return] +\item[x] The computed solution. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf inout}.\\ +Specified as: a rank one array or an object of type \vdata. +\item[iter] The number of iterations performed.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf out}.\\ +Returned as: an integer variable. +\item[err] The convergence estimate on exit.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf out}.\\ +Returned as: a real number. +\item[info] Error code.\\ +Scope: {\bf local} \\ +Type: {\bf required} \\ +Intent: {\bf out}.\\ +An integer value; 0 means no error has been detected. +\end{description} + + %%% Local Variables: %%% mode: latex %%% TeX-master: "userguide" From ecc59b8a4b3067d0e3e40bd5337ce0c5de6f7e6e Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 13 Nov 2024 13:21:37 +0100 Subject: [PATCH 66/86] Fix test makefile for linsolve --- test/fileread/Makefile | 2 +- test/pargen/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/fileread/Makefile b/test/fileread/Makefile index 132a2e15..a7afaabc 100644 --- a/test/fileread/Makefile +++ b/test/fileread/Makefile @@ -6,7 +6,7 @@ include $(INCDIR)/Make.inc.psblas # Libraries used # LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/pargen/Makefile b/test/pargen/Makefile index c0a1c375..ecbda5d1 100644 --- a/test/pargen/Makefile +++ b/test/pargen/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(INSTALLDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such From 29f72195eff925a5255c48fa910f12f97b147780 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 13 Nov 2024 14:08:13 +0100 Subject: [PATCH 67/86] Fix GMRES convergence logs --- linsolve/impl/psb_crgmres.f90 | 9 +++------ linsolve/impl/psb_drgmres.f90 | 9 +++------ linsolve/impl/psb_srgmres.f90 | 9 +++------ linsolve/impl/psb_zrgmres.f90 | 9 +++------ 4 files changed, 12 insertions(+), 24 deletions(-) diff --git a/linsolve/impl/psb_crgmres.f90 b/linsolve/impl/psb_crgmres.f90 index e7799f70..bdba795d 100644 --- a/linsolve/impl/psb_crgmres.f90 +++ b/linsolve/impl/psb_crgmres.f90 @@ -344,19 +344,16 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(cone,w,cone,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -474,8 +473,6 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& end if end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr diff --git a/linsolve/impl/psb_drgmres.f90 b/linsolve/impl/psb_drgmres.f90 index 373c7a70..e6ca506b 100644 --- a/linsolve/impl/psb_drgmres.f90 +++ b/linsolve/impl/psb_drgmres.f90 @@ -344,19 +344,16 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(done,w,done,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -474,8 +473,6 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& end if end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr diff --git a/linsolve/impl/psb_srgmres.f90 b/linsolve/impl/psb_srgmres.f90 index 537d2f00..de5f9473 100644 --- a/linsolve/impl/psb_srgmres.f90 +++ b/linsolve/impl/psb_srgmres.f90 @@ -344,19 +344,16 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(sone,w,sone,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -474,8 +473,6 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& end if end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr diff --git a/linsolve/impl/psb_zrgmres.f90 b/linsolve/impl/psb_zrgmres.f90 index 39985518..236b2620 100644 --- a/linsolve/impl/psb_zrgmres.f90 +++ b/linsolve/impl/psb_zrgmres.f90 @@ -344,19 +344,16 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(zone,w,zone,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -474,8 +473,6 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& end if end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr From 0ed2c105ac79b9d45c1bf57b8fa89d055b54fd79 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 13 Nov 2024 16:16:07 +0100 Subject: [PATCH 68/86] Fix RGMRES log_conv --- linsolve/impl/psb_crgmres.f90 | 8 +++++++- linsolve/impl/psb_drgmres.f90 | 8 +++++++- linsolve/impl/psb_srgmres.f90 | 8 +++++++- linsolve/impl/psb_zrgmres.f90 | 8 +++++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/linsolve/impl/psb_crgmres.f90 b/linsolve/impl/psb_crgmres.f90 index bdba795d..84e407c1 100644 --- a/linsolve/impl/psb_crgmres.f90 +++ b/linsolve/impl/psb_crgmres.f90 @@ -471,7 +471,13 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(cone,w,cone,x,desc_a,info) end if - + + if (itx >= litmax) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + exit restart + end if + end do restart call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) diff --git a/linsolve/impl/psb_drgmres.f90 b/linsolve/impl/psb_drgmres.f90 index e6ca506b..a49e1603 100644 --- a/linsolve/impl/psb_drgmres.f90 +++ b/linsolve/impl/psb_drgmres.f90 @@ -471,7 +471,13 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(done,w,done,x,desc_a,info) end if - + + if (itx >= litmax) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + exit restart + end if + end do restart call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) diff --git a/linsolve/impl/psb_srgmres.f90 b/linsolve/impl/psb_srgmres.f90 index de5f9473..dfd6f09a 100644 --- a/linsolve/impl/psb_srgmres.f90 +++ b/linsolve/impl/psb_srgmres.f90 @@ -471,7 +471,13 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(sone,w,sone,x,desc_a,info) end if - + + if (itx >= litmax) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + exit restart + end if + end do restart call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) diff --git a/linsolve/impl/psb_zrgmres.f90 b/linsolve/impl/psb_zrgmres.f90 index 236b2620..2ac22cea 100644 --- a/linsolve/impl/psb_zrgmres.f90 +++ b/linsolve/impl/psb_zrgmres.f90 @@ -471,7 +471,13 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(zone,w,zone,x,desc_a,info) end if - + + if (itx >= litmax) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + exit restart + end if + end do restart call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) From e2605d5e487baeb4b2b88fd33e544c9f2069a3ab Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 13 Nov 2024 17:47:49 +0100 Subject: [PATCH 69/86] Final fix for log_conv in rgmres --- linsolve/impl/psb_crgmres.f90 | 2 +- linsolve/impl/psb_drgmres.f90 | 2 +- linsolve/impl/psb_srgmres.f90 | 2 +- linsolve/impl/psb_zrgmres.f90 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/linsolve/impl/psb_crgmres.f90 b/linsolve/impl/psb_crgmres.f90 index 84e407c1..918b63e9 100644 --- a/linsolve/impl/psb_crgmres.f90 +++ b/linsolve/impl/psb_crgmres.f90 @@ -472,7 +472,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(cone,w,cone,x,desc_a,info) end if - if (itx >= litmax) then + if ((itx >= litmax).and.(itrace_ > 0)) then if (mod(itx,itrace_)/=0) & & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart diff --git a/linsolve/impl/psb_drgmres.f90 b/linsolve/impl/psb_drgmres.f90 index a49e1603..d0bce3ae 100644 --- a/linsolve/impl/psb_drgmres.f90 +++ b/linsolve/impl/psb_drgmres.f90 @@ -472,7 +472,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(done,w,done,x,desc_a,info) end if - if (itx >= litmax) then + if ((itx >= litmax).and.(itrace_ > 0)) then if (mod(itx,itrace_)/=0) & & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart diff --git a/linsolve/impl/psb_srgmres.f90 b/linsolve/impl/psb_srgmres.f90 index dfd6f09a..1c622656 100644 --- a/linsolve/impl/psb_srgmres.f90 +++ b/linsolve/impl/psb_srgmres.f90 @@ -472,7 +472,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(sone,w,sone,x,desc_a,info) end if - if (itx >= litmax) then + if ((itx >= litmax).and.(itrace_ > 0)) then if (mod(itx,itrace_)/=0) & & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart diff --git a/linsolve/impl/psb_zrgmres.f90 b/linsolve/impl/psb_zrgmres.f90 index 2ac22cea..1377d765 100644 --- a/linsolve/impl/psb_zrgmres.f90 +++ b/linsolve/impl/psb_zrgmres.f90 @@ -472,7 +472,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(zone,w,zone,x,desc_a,info) end if - if (itx >= litmax) then + if ((itx >= litmax).and.(itrace_ > 0)) then if (mod(itx,itrace_)/=0) & & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart From d7cb13a2838c063cca1f9ecc8714510d1b18a70d Mon Sep 17 00:00:00 2001 From: sfilippone Date: Wed, 13 Nov 2024 18:12:34 +0100 Subject: [PATCH 70/86] Final fix for log_conv in rgmres --- linsolve/impl/psb_crgmres.f90 | 8 +++++--- linsolve/impl/psb_drgmres.f90 | 8 +++++--- linsolve/impl/psb_srgmres.f90 | 8 +++++--- linsolve/impl/psb_zrgmres.f90 | 8 +++++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/linsolve/impl/psb_crgmres.f90 b/linsolve/impl/psb_crgmres.f90 index 918b63e9..e0c0b38d 100644 --- a/linsolve/impl/psb_crgmres.f90 +++ b/linsolve/impl/psb_crgmres.f90 @@ -472,9 +472,11 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(cone,w,cone,x,desc_a,info) end if - if ((itx >= litmax).and.(itrace_ > 0)) then - if (mod(itx,itrace_)/=0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if exit restart end if diff --git a/linsolve/impl/psb_drgmres.f90 b/linsolve/impl/psb_drgmres.f90 index d0bce3ae..e0d78382 100644 --- a/linsolve/impl/psb_drgmres.f90 +++ b/linsolve/impl/psb_drgmres.f90 @@ -472,9 +472,11 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(done,w,done,x,desc_a,info) end if - if ((itx >= litmax).and.(itrace_ > 0)) then - if (mod(itx,itrace_)/=0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if exit restart end if diff --git a/linsolve/impl/psb_srgmres.f90 b/linsolve/impl/psb_srgmres.f90 index 1c622656..32129e35 100644 --- a/linsolve/impl/psb_srgmres.f90 +++ b/linsolve/impl/psb_srgmres.f90 @@ -472,9 +472,11 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(sone,w,sone,x,desc_a,info) end if - if ((itx >= litmax).and.(itrace_ > 0)) then - if (mod(itx,itrace_)/=0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if exit restart end if diff --git a/linsolve/impl/psb_zrgmres.f90 b/linsolve/impl/psb_zrgmres.f90 index 1377d765..c6bcc018 100644 --- a/linsolve/impl/psb_zrgmres.f90 +++ b/linsolve/impl/psb_zrgmres.f90 @@ -472,9 +472,11 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(zone,w,zone,x,desc_a,info) end if - if ((itx >= litmax).and.(itrace_ > 0)) then - if (mod(itx,itrace_)/=0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if exit restart end if From 961a315936c783a6fa73746621de1a0397715801 Mon Sep 17 00:00:00 2001 From: Fabio Durastante Date: Fri, 15 Nov 2024 16:41:05 +0100 Subject: [PATCH 71/86] Update README.md Updated the look of the README --- README.md | 197 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 120 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index 3cacfb93..c9e1b4cf 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,35 @@ -PSBLAS library, version 3.9 -=========================== +# PSBLAS library, version 3.9 -The architecture of the Fortran 2003 sparse BLAS is described in: ->S. Filippone, A. Buttari. Object-Oriented Techniques for Sparse Matrix ->Computations in Fortran 2003, ACM Trans. on Math. Software, vol. 38, No. -4, 2012. -The ideas are explored further with the paper: ->V. Cardellini, S. Filippone and D. Rouson. Design Patterns for ->sparse-matrix computations on hybrid CPU/GPU platforms, Scientific ->Programming, 22(2014), pp.1-19. +The PSBLAS library, developed with the aim to facilitate the parallelization of computationally intensive scientific applications, is designed to address parallel implementation of iterative solvers for sparse linear systems through the distributed memory paradigm. It includes routines for multiplying sparse matrices by dense matrices, solving block diagonal systems with triangular diagonal entries, preprocessing sparse matrices, and contains additional routines for dense matrix operations. The current implementation of PSBLAS addresses a distributed memory execution model operating with message passing. -Version 1.0 of the library is described in: ->S. Filippone, M. Colajanni. PSBLAS: A library for parallel linear ->algebra computation on sparse matrices, ACM Trans. on Math. Software, ->26(4), Dec. 2000, pp. 527-550. +The PSBLAS library version 3 is implemented in the Fortran 2003 programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. +## References -UTILITIES ---------- -The `test/util` directory contains some utilities to convert to/from -Harwell-Boeing and MatrixMarket file formats. +The architecture, philosophy and implementation details of the library are contained in the following papers: -DOCUMENTATION -------------- -See docs/psblas-3.9.pdf; an HTML version of the same document is -available in docs/html. Please consult the sample programs, especially -test/pargen/psb_[sd]_pde[23]d.f90 +- The architecture of the Fortran 2003 sparse BLAS is described in: + >S. Filippone, A. Buttari. Object-Oriented Techniques for Sparse Matrix + >Computations in Fortran 2003, ACM Trans. on Math. Software, vol. 38, No. + 4, 2012. + +- The ideas are explored further with the paper: + >V. Cardellini, S. Filippone and D. Rouson. Design Patterns for + >sparse-matrix computations on hybrid CPU/GPU platforms, Scientific + >Programming, 22(2014), pp.1-19. +- Version 1.0 of the library is described in: + >S. Filippone, M. Colajanni. PSBLAS: A library for parallel linear + >algebra computation on sparse matrices, ACM Trans. on Math. Software, + >26(4), Dec. 2000, pp. 527-550. + +PSBLAS is the backbone of the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper: +> D’Ambra, P., Durastante, F., & Filippone, S. (2023). Parallel Sparse Computation Toolkit. Software Impacts, 15, 100463. + +### Other Software credits -OTHER SOFTWARE CREDITS ----------------------- We originally included a modified implementation of some of the Sparker (serial sparse BLAS) material; this has been completely rewritten, way beyond the intention(s) and responsibilities of the original developers. @@ -40,27 +38,8 @@ The main reference for the serial sparse BLAS is: >linear algebra subprograms for sparse matrices: a user level interface, >ACM Trans. Math. Softw., 23(3), 379-401, 1997. -CUDA and GPU support --------------------- -This version of PSBLAS incorporates into a single package three -entities that were previouslty separated: -1. PSBLAS -- the base library -2. PSBLAS-EXT -- a library providing additional storage formats -3. SPGPU -- a package of kernels for NVIDIA GPUs originally - written by Davide Barbieri and Salvatore Filippone; - see the license file cuda/License-spgpu.md - -OpenACC -------------------- -There is a highly experimental version of an OpenACC interface, -you can access it by speficifying ---enable-openacc --with-extraopenacc="-foffload=nvptx-none=-march=sm_70" -where the argument to the extraopenacc option depends on the compiler -you are using (the example shown here is relevant for the GNU -compiler). - -INSTALLING ----------- +## Installing + To compile and run our software you will need the following prerequisites (see also SERIAL below): @@ -88,21 +67,27 @@ The configure script will generate a Make.inc file suitable for building the library. The script is capable of recognizing the needed libraries with their default names; if they are in unusual places consider adding the paths with `--with-libs`, or explicitly specifying the names in -`--with-blas`, etc. Please note that a common way for the configure script -to fail is to specify inconsistent MPI vs. plain compilers, either -directly or indirectly via environment variables; e.g. specifying the -Intel compiler with `FC=ifort` while at the same time having an -`MPIFC=mpif90` which points to GNU Fortran. The best way to avoid this -situation is (in our opinion) to use the environment modules package -(see http://modules.sourceforge.net/), and load the relevant -variables with (e.g.) -``` -module load gnu46 openmpi -``` -This will delegate to the modules setup to make sure that the version of -openmpi in use is the one compiled with the gnu46 compilers. After the -configure script has completed you can always tweak the Make.inc file -yourself. +`--with-blas`, etc. + +>[!CAUTION] +> Please note that a common way for the configure script +> to fail is to specify inconsistent MPI vs. plain compilers, either +> directly or indirectly via environment variables; e.g. specifying the +> Intel compiler with `FC=ifort` while at the same time having an +> `MPIFC=mpif90` which points to GNU Fortran. + +>[!TIP] +> The best way to avoid this +> situation is (in our opinion) to use the environment modules package +> (see [http://modules.sourceforge.net/](http://modules.sourceforge.net/)), and load the relevant +> variables with (e.g.) +> ``` +> module load gcc/13.2.0 openmpi/4.1.6 +> ``` +> This will delegate to the modules setup to make sure that the version of +> openmpi in use is the one compiled with the gnu46 compilers. After the +> configure script has completed you can always tweak the Make.inc file +> yourself. After you have Make.inc fixed, run ``` @@ -114,37 +99,97 @@ install and the libraries will be installed under `/path/lib`, while the module files will be installed under `/path/modules`. The regular and experimental C interface header files are under `/path/include`. -SERIAL ------- +### CUDA and GPU support + +This version of PSBLAS incorporates into a single package three +entities that were previouslty separated: +| Library | | +|---------|--------------------| +| PSBLAS | the base library | +| PSBLAS-EXT | a library providing additional storage formats for matrices and vectors | +| SPGPU | a package of kernels for NVIDIA GPUs originally written by Davide Barbieri and Salvatore Filippone; see the license file [cuda/License-spgpu.md](cuda/License-spgpu.md) | + +### OpenACC +There is a highly experimental version of an OpenACC interface, +you can access it by speficifying +```bash +--enable-openacc --with-extraopenacc="-foffload=nvptx-none=-march=sm_70" +``` +where the argument to the extraopenacc option depends on the compiler +you are using (the example shown here is relevant for the GNU +compiler). + +### Serial + Configuring with `--enable-serial` will provide a fake MPI stub library that enables running in pure serial mode; no MPI installation is needed in this case (but note that the fake MPI stubs are only guaranteed to cover what we use internally, it's not a complete replacement). -INTEGER SIZES -------------- +### Integers + We have two kind of integers: IPK for local indices, and LPK for global indices. They can be specified independently at configure time, e.g. +```bash --with-ipk=4 --with-lpk=8 +``` which is asking for 4-bytes local indices, and 8-bytes global indices (this is the default). - -TODO ----- -Fix all reamining bugs. Bugs? We dont' have any ! ;-) +## Documentation +Further information on installation and configuration can be found in the documentation. +See [docs/psblas-3.9.pdf](docs/psblas-3.9.pdf); an HTML version of the same document is +available in docs/html. Please consult the sample programs, especially +- [test/pargen/psb_s_pde2d.F90](test/pargen/psb_s_pde2d.F90) [test/pargen/psb_d_pde2d.F90](test/pargen/psb_d_pde2d.F90) +- [test/pargen/psb_s_pde2d.F90](test/pargen/psb_s_pde3d.F90) [test/pargen/psb_d_pde2d.F90](test/pargen/psb_d_pde3d.F90) + +which contain examples for the solution of linear systems obtained by the discretization of a generic second-order differential equation in two: +```math +- a_1 \frac{\partial^2 u}{\partial x^2} +- a_2 \frac{\partial^2 u}{\partial y^2} ++ b_1 \frac{\partial u}{\partial x} ++ b_2 \frac{\partial u}{\partial y} ++ c u = f +``` +or three +```math +- a_1 \frac{\partial^2 u}{\partial x^2} +- a_2 \frac{\partial^2 u}{\partial y^2} +- a_3 \frac{\partial^2 u}{\partial z^2} ++ b_1 \frac{\partial u}{\partial x} ++ b_2 \frac{\partial u}{\partial y} ++ b_3 \frac{\partial u}{\partial z} ++ c u = f +``` +dimensions on the unit square/cube with Dirichlet boundary conditions. + +### Utilities + +The [test/util](test/util) directory contains some utilities to convert to/from +Harwell-Boeing and MatrixMarket file formats. + +## TODO and bugs -The PSBLAS team. ---------------- -Project lead: +- [ ] Improving OpenACC support +- [ ] Improving OpenMP support +- [X] Fix all reamining bugs. Bugs? We dont' have any ! 🤓 + +> [!NOTE] +> To report bugs 🛠or issues â“ please use the [GitHub issue system](https://github.com/sfilippone/psblas3/issues). + + + +## The PSBLAS team. +**Project lead:** Salvatore Filippone -Contributors (roughly reverse cronological order): +**Contributors** (_roughly reverse cronological order_): Theophane Loloum +Fabio Durastante Dimitri Walther Andea Di Iorio Stefano Petrilli @@ -161,12 +206,10 @@ Stefano Maiolatesi Dario Pascucci - -RELATED SOFTWARE ----------------- +## RELATED SOFTWARE If you are looking for more sophisticated preconditioners, you may be interested in the package AMG4PSBLAS from - + and the whole [PSCTooolkit suite](https://psctoolkit.github.io/). Contact: From f35a9ec13c9e339333cc6bd8aaa59e6e62480143 Mon Sep 17 00:00:00 2001 From: Fabio Durastante Date: Fri, 15 Nov 2024 16:42:43 +0100 Subject: [PATCH 72/86] Update README.md --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index c9e1b4cf..141ce1e2 100644 --- a/README.md +++ b/README.md @@ -188,22 +188,22 @@ Salvatore Filippone **Contributors** (_roughly reverse cronological order_): -Theophane Loloum -Fabio Durastante -Dimitri Walther -Andea Di Iorio -Stefano Petrilli -Soren Rasmussen -Zaak Beekman -Ambra Abdullahi Hassan -Pasqua D'Ambra -Alfredo Buttari -Daniela di Serafino -Michele Martone -Michele Colajanni -Fabio Cerioni -Stefano Maiolatesi -Dario Pascucci +- Theophane Loloum +- Fabio Durastante +- Dimitri Walther +- Andea Di Iorio +- Stefano Petrilli +- Soren Rasmussen +- Zaak Beekman +- Ambra Abdullahi Hassan +- Pasqua D'Ambra +- Alfredo Buttari +- Daniela di Serafino +- Michele Martone +- Michele Colajanni +- Fabio Cerioni +- Stefano Maiolatesi +- Dario Pascucci ## RELATED SOFTWARE From 674391369017ff9a15ff4e3ad89056575defc4d6 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 15 Nov 2024 17:28:48 +0100 Subject: [PATCH 73/86] Update README Fortran 2003 to 2008 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 141ce1e2..62485d14 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ The PSBLAS library, developed with the aim to facilitate the parallelization of computationally intensive scientific applications, is designed to address parallel implementation of iterative solvers for sparse linear systems through the distributed memory paradigm. It includes routines for multiplying sparse matrices by dense matrices, solving block diagonal systems with triangular diagonal entries, preprocessing sparse matrices, and contains additional routines for dense matrix operations. The current implementation of PSBLAS addresses a distributed memory execution model operating with message passing. -The PSBLAS library version 3 is implemented in the Fortran 2003 programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. +The PSBLAS library version 3 is implemented in the Fortran 2008 programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. ## References From ef1cc4b321803edd39b677a680a97d22c25b792f Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 15 Nov 2024 17:48:11 +0100 Subject: [PATCH 74/86] Update CUDA description in README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 62485d14..952029de 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,8 @@ prerequisites (see also SERIAL below): We use the C interface to AMD. 5. If you have CUDA available, use - --with-cuda= to specify the CUDA toolkit location + --enable-cuda to compile CUDA-enabled methods + --with-cudadir= to specify the CUDA toolkit location --with-cudacc=XX,YY,ZZ to specify a list of target CCs (compute capabilities) to compile the CUDA code for. From eefc67bbdde3d61f2734ec56fda0cdf5265ab6f6 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 16 Nov 2024 10:50:31 +0100 Subject: [PATCH 75/86] Docs and krylov->linsolve changes --- docs/html/userhtml33x.png | Bin 1834 -> 1679 bytes docs/html/userhtml34x.png | Bin 0 -> 2164 bytes docs/html/userhtml35x.png | Bin 0 -> 1485 bytes docs/html/userhtml36x.png | Bin 0 -> 1499 bytes docs/html/userhtml7.html | 4 +- docs/html/userhtmlse2.html | 127 +- docs/html/userhtmlse3.html | 51 +- docs/psblas-3.9.pdf | 9629 +++++++++++++++-------------- docs/src/datastruct.tex | 13 +- docs/src/intro.tex | 41 +- test/hello/Makefile | 2 +- test/kernel/Makefile | 2 +- test/omp/Makefile | 2 +- test/omp/psb_tomp.F90 | 2 +- test/openacc/Makefile | 2 +- test/openacc/psb_d_oacc_pde3d.F90 | 2 +- test/serial/Makefile | 2 +- test/torture/Makefile | 2 +- test/util/Makefile | 2 +- 19 files changed, 4995 insertions(+), 4888 deletions(-) create mode 100644 docs/html/userhtml34x.png create mode 100644 docs/html/userhtml35x.png create mode 100644 docs/html/userhtml36x.png diff --git a/docs/html/userhtml33x.png b/docs/html/userhtml33x.png index b4a91874c3512d80a25fbccdafedf0e0be8d6074..334186383b6dac4acb0da710299eceacab054cab 100644 GIT binary patch delta 1676 zcmV;726OqU4v!5XiBL{Q4GJ0x0000DNk~Le0002^0000K2nGNE0H9a!@{u7Je?dt^ zK~#7F?VO8|6gLotyD0~N2>~+T5rK~kjGY0O0auQI!WkGxU?2l70|OaA2sRnW^~rxv zX=dlKv#d0G$Np7YyECJaTCILdcb-zRGj1Q;{bw`#no_#HNwahJyU?3b`dXWAcYk4K z?@~%%YLB%Q?rb&iO@X_=a`%t!f1da((e3UJqpiEYb@%5>@9Ybd*4^JPwRiUmGkaPp zH;Ti%?*1=yE%mV>KAPDtEyhnN{cdJ|gi*PT_~ABA>X=9=UAg;x1i{QM_`P89Q7&*L z0s1Cr>??H=eJ|lvO6gJANFMPi3T|eLMq&%d7{coZ4adJUvp>!3S;H}#f8ng)`vJwu z3T~DKa5SWguvlI0gvNMxGy82}$S)X`Xd`2S5b}P|FbN_K(YgZ}3qs%zI}bO8yl5y{ z4%1rz{<=HkUz8Eg8i?mFTcj0haaQpC@F=Bpi6BV9cOd0Kxu5bdrSxgoNcTdBYvFlH z>BouAF;L{?JG7kuFnk!Yf6r4qt_Tb#Ms>$1?+K!gd+>J8_RVn4!PkKWoC+Vq1E55Q z3d%P@5yafs7@t%0-Y7^!EASX)X$E<2(ywNbLo0M1TpozZD|jG}#dYLF)%V^We-J~YZ7jC3_WkU5;Tf>q6iS14?7d6nH>DI-e=`4W1l9@Y#kKVcV z@vQco7$@i8<-V@0IhO1%C>Vpbd+-KF%gN;>KPf+KT4b4myh!BVAaYgsgI6cYDZLLN zGKVKl5qR)nf0UL((sKPvNEX%{in%Vg_~szqLK9J28C67@1CN8>JsP)?QKhXxUkPaC z5Yd=EJe%TgdB4`2x*}VF2<0Ly&4ZW3s2H(Tp4r0;)8{bB^a0>SInNNd2y4r({wi?4oC~0cI=t6GYu-CBb41|1e;PUo<>VL@f0SklwPZBbcN7$!#~$cpAVuie z_ZLuQPIr{|a-=dC$|QzcDZ`18Yi2=aLC8b3+20&6ol{#YKl?7klOq3Stgz6LYsWQ+ zdy@*&0L*JH`swIZ6vmnl*S0#e>p&{g(NiGSrZZHHWR&gCF?y+iVl2w z#RCZtMUWguMZsYB9mO)W;~S4pK3m@7cdt;Ve=#>LvWZ4$WuDMo7SiBVH*d|8HnioO zH*@M0j)uHhbFD2S#-v~R51P2w(M6wH!%^O;ANpWTcivq?(;;nTT;Nm8p(|cSf1-;* zW$-fdy5PZ4Wi-a+TVwWQv3x%FTWizF#9Z5WR%=e`7un6l-fqAcc&`qTKm^81IQAMx^RnVdP5Cva5-vj29_41ITs^pq@2|`so zLaxLXr=!l;7H^a~ea~1cqtqcN`W*^V)T#3a$HLk@A~FVq8A-FUf!ky-_=;g|&0a#Y$I*Q5`Da4fl=D zr~ny83TWTEqAx=KKm%UYR?uc3nvVZPaEJ##(lLl29^;zTldDOvoBER?^{Z^RZf9j+X-q4Ozv`b|bN#?m4Ie*CK3cNTr{i)8#STI z0Uw(d%HJzm$drJAFjG)se*-1XARKqH@fSXN0PdYhX5FfIqv%e2#(nkj*32B2 z%WkD68c@Wum4Y1;0H21yuHGFnYMhOmt6dGV2Eu5tKQ*A&3`zrbe=Z4?^&a5o@a*bE zd-{D$%E><@w4vE;^idn5pHH-&1EJ<}ZMRVmCU9AS3odf}tw_W2wL*o0kelS0EjF zaN0s=ozcr9zRsXF7y~9_oxs^`7~4AaX2;;Y;kqzE`ByJQ=KhoBAwEO@ zF50=G^C+l2v?L17&6VSD5RqS(ITVW!fTg4}$7nbQf5Pw-9Zh(weB2>z#DHz& zp-~ItOTbSknvZ~XDhA)O3HOV`K1={8Hempe`R0_UQU;=<3Go!THL~)65YPh3FTQN4 z@WiD2Gd`S2CEpgs19E@2mHW1OdAjOvqRhV^?>M=bBM-e7T7?NFRwgm0ZX1un^azFA5)^2POX zcw&A_*JVD2JTwQG$Uz&Ews{o27Zc(^Bj1L1Q5xm)e>LQJDgeYgm-Ym_`&A`R<3%bH ztu)^8xFhToZBE|{zSWm`Y7V_y%8DKhd>^3IK zu(3cj5>UaQodfymtkkQ}E76W&Y6>|#P4%`#)A+&;E$rA>zmEEMAMv|vyT7>aIIVF2 z7Uq{{f3}%cy*^C1-L2YW2}axQ%v>0WH@IL6xue8bHW0uUn-;gZtw89CX8s{zU;13eN}Cw#o-90k2ijtTlgee~Ca0ge6it@H&2(5uD?fK3^;qGsnfE zJKTyg>ul_*P3ure7zh&y>RZh&jx$dd-1c`LiF`JZHFLZwRr|Y-Rhev*Vwx}#uU~A3 zLwJt9(1yY11-;q{iWeW+y&}FZ9J95%bE0JhwS&*>$}_Xj$3GkT%xYumOa{Va1_glD zf4}<(tO5@H#sA=i1|StV_AI&5&#jlrZK8JW6gh#YXrbS^KFu6QGpmUYTJS_<9J+1p z2ee>Z_C@(p?R6p0u?`IZZTmiC4&iAaY@X%Tn?M2#CX?{6e7H}*8|V=^E4lKAN?EmL z#AG0Bo=h|$H$j?$1DmvDI0vnGB7j!3f4+p;NnIV7;S#gn*VW#Z8wiuB@utxouqQ=b zSvE0)gZkz|z=MEUYT5^nVHXV;2v?=U+`S95tfv5o=EYBln}>f$V5fYZRe2^%FJ|%{TYU{_tj_`qput~AcnxitT>I1A zLRPI<`=y(ewHuvM1p{H>YzcIuY#!9kAB97hO|?S|6aI)Dy%RB+G%a1|VM07C^gKOF!S z@aOu+&el!2%x1-pW<9%wSXi7wfipZ6e(mQ&g zs*gnEQ%dPet6m-B9KrGV?f9n*8goTNt`^6vw_8vjv)&HQkP!YL=#&utAn243{vha- z5dI+Ol;1n;cUP$DO%eH1M6Rcl9;oVl5xFBG|BA@Fl+r(4-H;#?mcI|~rj(wF$W2wf zpv$(6LSTQ;AtC%L$E?0vc7_CpngEf!|HaC0L9m4o{tlo3NL8;R_#!`qoe-cd22$0x z78V36Cu07UQwTSefZvPlZ9I(}Kp%wV?}vLL@?l?hL-6|{EPp>>`L`zb%+)6}xRFwN z+|O<4m$3XDU`apX{ZY$r`2doEy#KI+TM~$b@OJ_h{mV9&p8YAMmm-42=QZenaQi#J zru*h8zk6Uh@Qpoff|U?%e~_`5{{vot7Xk(ACWJq5Sp4I=sy-2szkO#gA95Lls3Prqbufn z)i<{PtM<+180T0GCP&PnAkm7@UwY_tk1R55i#*;bCTcNSb4x_Nrj(wSH&ay^>3L=o zxiYy8YxvnZek6MkdTPIYU+#dt|HNKt!~XlW{h5-{scmQ%e{m1i_zak^zZJZJWYf2OL08%%_*t&a3!s+c zLeUPYie|u#C@a8l`?2U*_&I@f63c(9I$^%(eQknZO_(5I=>cneu+TdbWHAeJA&XRG z4#rPakxyzma{k6vUPf7<3|>>n<%%G?288x@@q?@2E<^ch?#Q=tU;Y1-HuYzg-nRbH z$M}nTF!>qS_gva6Nd#-d_1^cnUGLA8Mf-dX(fvF&lhgZ6Sdc@KGU12D*vFK~Aye9n zvXtAOQqs{A2Eh!>g5EP%{X$g#Ms&yQLB_rA?5$v_f?{O?6R z6m?*+2Rw=4vAt=xt&>AwN}C{9E5zOwYZGr{X+K-ceHo_6B8fg^aVW($tB&XKS8+1x z3+hBWa-MU0IpGII^${)y2c{!KJ-8kGSxSkq#8IZSITh?$S=?f9ky`yMl_i3B7|M~8 z%+zyCZP$uppKlv2uVc!wtfFy|MNHj*7UTWHv$l%~vdFMJ$3@AwBDm%?Iga(8M7}?V z*?7A_A7cLcgEdnohfHa63fN6yShFs^;O3w`oqBsJjGpl2jLnd%k6CX!_5OOhHTCi9 z?PF1&x8COaV;@;|EE^B=w#vl%v-LL5>~mFpuc{0gyO1=&vhb{yoQr)_m1nLTQ5$7K z8w@bN$GB6O*!x@C48q?Tgfm+`m^s)FW%6YYE?Ll)BGE?X+Q+=-fDw3Qmb5vh1ZqPw z2gdGecmC3N%-;>>Qq8_`W0*y9D}AhhPg=ECKb?uHpHDdWF81;nNae{iZBPIu#7UUYGn=VtJ~esA#UT>dNi6n>Sly zj$s-(TM<4M&bA6LBf zTz5bK%VE82X_roV**uDR)t%cmj!Rz&ao()(N%nZ(JuN_RSutmh$Hn(H=ksSpZ^Dl? zZt4Qt=mBH;CGL7I9rsh5QuYVWCg(J8e+fgX_qpCR{2bRk2@IbmEXigd5n#JRMOxxVW+_-pP$3!fygTk3oF*z;PU*MkC9#3}H z%X<>+rbpp#soAmke~egH5^xO3w6I1~aaVZAX`m2lVW_v~Fj66z!MkXXeA@-zVLfWY zJ+Jp2!eYw$)acFa=ZkIPirW|~v!lkWn?FD;70m{C9p=Kjf}y^k9{Tc{1KQswGj7&; z4Gj0)CX{g>hW;K1qa(v{*G_N3k5wcto`t#C4DFRkz7l_cmMrnb((~sJKY~9fHp@k1 z*VwMt6M$>T{$t@?=>eWbi*SN)ZKv~#m{kB-^&E+Y%GlXvA$gg^yc=%8=HC8 z6<*qm0-K`%Cqga767>{If+DSlY*$T>!q4Q54U5?cxWz~LIWD{(4>`^O3+K4*7NZ4c zLsxD;@KCBM3oHB-udf*kS(>`aD}r1|clV|{;Rl<+MZ%6Hj7x3rS$c=<*6!=nb4+d5 qiesN|8!fM6@3CxR&{=sZt@s})ZER3Efa{_F0000ptoRbPn6?;>(yW^YvWwTQeDk^e;GgPDCj;M?07VY&J_HM0v5d7-M8i1y_Tc3>sU&9v%5|QP$Sjs{ zixcsf>mybyCt8F1gmO)X;=)^1eJ3J+PH*OT3AZ>AkH_9j{Q9i;1cR9^dAY$E?ygy) za@|%Bnf-6ou}#^|(4${-h?Y0tow=}II$b1F9`Jxh_%zP|MSq;IcLw0tcQ`JVf}IEGxQ zH!SX-Cb#GohXZG3R+@AaD_f*&b$TlWyp0ECl1dMts+`BXuLBFo`I<+|9F{86(AQWk z6bi76|5od(pS;#BzdeOKik0-ntr&^r%cOli5_rdqnNR+dRx4?)UktfUlMC$~mC3TZ z-s0W&@iX=uyefl^<}=w+mDg$L>tun7zD}Mix8dIHs@O-lc)nOviYo6c7(#wBnZo>~ zzO9?n?|tX;u@;#u8{3E7TBTeo1A5By+qAF!`zb`q*Y~odJb-bVX&{udMPjKjS}Fxv zWL5~bxQe@)Gk0Z|s!B*QDS)q-)YnDb+Pzt+FWkTN^LRWyFO&9pkanImF>ih3bR%X+ zF3YoRktyZl?}x2d`F!RG=!g2JrLWyRmoAYw`MUZaag8?|%L+l9)qN?Q_z}#dS)lJT zHAQ>w`QWPIQJGSH*MDQK%bAY5@NV#|^Z(4*);iZkb`vG@n0lHXH^E*txrLCEay+J8%fdwXVP%4d5jf(pZ2T1}XjSMi+DCWa$ts zl>#j?`%V$(5SZpE`Cd{f*@dc-N*Z1MX^=sQ_;Hqdu~m(qAC&2oE4afg0;7~mg~X1WD8Lh(NA&<*}N|aA6SGpgBGckP_BMRryPXUniEeY5N`sp9D{5!;THSh zp}zN8E#Ost0_LM$YMMJ{4&|yS;w@4xDLD4o5W#(vG_OG@*D5*QDpL@+$P*NA9qUz; zq5yFW>7CKp+_4bKwMt*SgQ`H-mxyob5Oa%0+V7co27BN?z@~^|WuM1|F z-Y@1o$55_S$ZyrtaMsJ}V=dG_TteH6A>3j=UBRSV9^4}CaxHxJRl@IkE#@WKuw1KP zp~@JGywAoJuRi1a76JXTVV3xhTP#u!wQE}&Pe!utx3={=WWp_0_`-FWhS&&KQWP|` zNfx}vT^=Rj7Pp8eWO?O^r4;gH)VnRldWGfME~&WA3+*y3KX7ssgmP^WGy8dq&F?)+ nQ?4$>;IKdSRsK2KI!gWrnW^B*sj8|*00000NkvXXu0mjf%kA-XVLj@V91Ck0D z(*bl4pabXta0i?DE_=#7S$aC1H1GLY`^^|x(&>-&esA}7Z%?S1$<|TTGZDFGX76|w zs(K+JAISX*Em&vI@KFrnR_B~zc^=qeGU5O?5}T@5Mgk1LWIH52@wWICqx(= zou7|>2PcB6J{FPRMdYEGJy+FdBJxy3zKO^?Gy8fXf6A>REMYxoX7)-%9;@mlhxt0f zWP8v^h_C{;g4xoM%IR{7B5C`Ziqixmga|7kk*%r^5unKbqQf=!liI3!j_IZk8=_EFm*@>a2{a^=Yb_04MN-n+dWxJXEB_dcrmO&-qjw|spuT<(a0cBv1CfWoA z;f`0t`-C5`iaDVjOcNqp7m8r7RrRHa{ITw-mqWi*Ro~pUFG#rK74iP!^A%6I3LZ2O z)&EL#Z)StR)v?$SVR5rxMC1WC<>RC5s~W(sZFkGK?%faT-+SAZa)@i};GZYs+yqsK zZ+6;fLKCE{(8bfDsDli_6A}4hW`CA9q^e{WUVG6;BDGAZ`^hL%LU4dP?nVdp4d8qGL~XkvTHHkq zs(P|h3e8NX{zm^mv3!7aY8GF?lqQ&sNDzhqakKsORm!Ut=K}&G?(;24eKY$dZFO_X zhm=ffHl0IDH_tzY_LbXe+m*+}?`+vnxj`SSi)wp+cLXSYURGWHqPXu>V>RlZlZfba7yfp7exv$NP9MC9kYA4$rgG0ZHiZUO&--1ll1*6{#T#_aT6*5c6Do1#cO zQyt!AK3efUJf4vlpqVl-3GO(aPn|t#vIla1xYb2O0YlJ)TUA`}VlNUR3})lqj4nCu zeZFSG9S5_SQQ%ueh_HtzeB*T=2PE9_P2zPQ2PQ0Gfm^{`k+b)8AD%GxTCLYbQ9cLc-8MCEIYc#}I5Df&yGPuC#^z3zZns z+7uzeValrEKBHpG0-Zy4=>cyBJAO=F%7WycI|^8W-?c;^)|b9vny=%-Vw)jE z*anes8Nt$rBx0V8_am8$OPYs?K-ArB${I$VumKX&o*Sed5h&zrN>+Q-F_x5~;Y@$# z+MOmu*vMMJLpSYl!)#52{XQG(&A~(khrZrP@-I>Fo_v?OSQG#N002ovPDHLkV1f=g B*|q=x literal 0 HcmV?d00001 diff --git a/docs/html/userhtml7.html b/docs/html/userhtml7.html index f61a7dac..952f6340 100644 --- a/docs/html/userhtml7.html +++ b/docs/html/userhtml7.html @@ -11,7 +11,7 @@

    -

    3The subroutine style psb_precinit and psb_precbl _precbld are still supported for backward compatibility

    diff --git a/docs/html/userhtmlse2.html b/docs/html/userhtmlse2.html index b2cab256..2c1c4c11 100644 --- a/docs/html/userhtmlse2.html +++ b/docs/html/userhtmlse2.html @@ -432,18 +432,18 @@ matrix/vector creation and linear system solution as follows:
  • Initialize parallel environment with psb_init +class="cmtt-10">psb_init;

  • Initialize index space with psb_cdall +class="cmtt-10">psb_cdall;

  • Allocate sparse matrix and dense vectors with psb_spall and psb_geall +class="cmtt-10">psb_geall;

  • @@ -459,12 +459,12 @@ class="cmtt-10">psb_geins
  • psb_cdasb +class="cmtt-10">psb_cdasb,

  • psb_spasb +class="cmtt-10">psb_spasb, @@ -472,106 +472,118 @@ class="cmtt-10">psb_spasb

  • psb_geasb

  • +class="cmtt-10">psb_geasb;
  • Choose the preconditioner to be used with prec%init and build it with +class="cmtt-10">prec%init and prec%set, and build it with prec%build3 . + id="x4-6019f3"> ;

  • -

    Call the iterative driver psb_krylov with the method of choice, e.g. -

    Call one of the iterative drivers with the method of choice, e.g. psb_krylov + with bicgstab.

  • -

    This is the structure of the sample programs in the directory

    This is the structure of the sample programs in the directory test/pargen/. -

    For a simulation in which the same discretization mesh is used over multiple time +

    For a simulation in which the same discretization mesh is used over multiple time steps, the following structure may be more appropriate:

    1. -

      Initialize parallel environment with

      Initialize parallel environment with psb_init

    2. -

      Initialize index space with

      Initialize index space with psb_cdall

    3. -

      Loop over the topology of the discretization mesh and build the descriptor +

      Loop over the topology of the discretization mesh and build the descriptor with psb_cdins +class="cmtt-10">psb_cdins;

    4. -

      Assemble the descriptor with psb_cdasb +

      Assemble the descriptor with psb_cdasb;

    5. -

      Allocate the sparse matrices and dense vectors with

      Allocate the sparse matrices and dense vectors with; psb_spall and psb_geall +class="cmtt-10">psb_geall;

    6. -

      Loop over the time steps: +

      Loop over the time steps:

      1. -

        If after first time step, reinitialize the sparse matrix with

        If after first time step, reinitialize the sparse matrix with psb_sprn; also zero out the dense vectors;

      2. -

        Loop over the mesh, generate the coefficients and insert/update them +

        Loop over the mesh, generate the coefficients and insert/update them with psb_spins and psb_geins +class="cmtt-10">psb_geins;

      3. -

        Assemble with

        Assemble with psb_spasb and psb_geasb +class="cmtt-10">psb_geasb;

      4. -

        Choose and build preconditioner with prec%init and prec%build +

      5. -

        Call the iterative method of choice, e.g. psb_bicgstab

      +

      Choose the preconditioner to be used with prec%init and prec%set, + and build it with prec%build; +

    7. +
    8. +

      Call one of the iterative drivers with the method of choice, e.g. + psb_krylov with bicgstab.

    -

    The insertion routines will be called as many times as needed; they only need to be +

    The insertion routines will be called as many times as needed; they only need to be called on the data that is actually allocated to the current process, i.e. each process generates its own data. -

    In principle there is no specific order in the calls to

    In principle there is no specific order in the calls to psb_spins, nor is there a requirement to build a matrix row in its entirety before calling the routine; this allows the application programmer to walk through the discretization mesh element by element, generating the main part of a given matrix row but also contributions to the rows corresponding to neighbouring elements. -

    From a functional point of view it is even possible to execute one call for each +

    From a functional point of view it is even possible to execute one call for each nonzero coefficient; however this would have a substantial computational overhead. It is therefore advisable to pack a certain amount of data into each call to the insertion routine, say touching on a few tens of rows; the best + + + performng value would depend on both the architecture of the computer being used and on the problem structure. At the opposite extreme, it would be possible to generate the entire part of a coefficient matrix residing on a @@ -579,40 +591,37 @@ process and pass it in a single call to psb_spins; this, however, would entail a doubling of memory occupation, and thus would be almost always far from optimal. - - - -

    +

    2.3.1 User-defined index mappings
    -

    PSBLAS supports user-defined global to local index mappings, subject to the +

    PSBLAS supports user-defined global to local index mappings, subject to the constraints outlined in sec. 2.3:

    1. -

      The set of indices owned locally must be mapped to the set 1

      The set of indices owned locally must be mapped to the set 1nrowi;

    2. -

      The set of halo points must be mapped to the set

      The set of halo points must be mapped to the set nrowi + 1ncol i;

    -

    but otherwise the mapping is arbitrary. The user application is responsible to ensure +

    but otherwise the mapping is arbitrary. The user application is responsible to ensure consistency of this mapping; some errors may be caught by the library, but this is not guaranteed. The application structure to support this usage is as follows:

    1. -

      Initialize index +

      Initialize index space with psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors lidx(:) containing the corresponding local

    2. -

      Add the halo points

      Add the halo points ja(:) and their associated local indices lidx(:) with a(some) call(s) to psb_cdins(nz,ja,desc,info,lidx=lidx);

    3. -

      Assemble the descriptor with

      Assemble the descriptor with psb_cdasb;

    4. -

      Build the sparse matrices and vectors, optionally making use in

      Build the sparse matrices and vectors, optionally making use in psb_spins and psb_geins of the ia, ja and irw, respectively, are already local indices.

    - - - -

    +

    2.4 Programming model

    -

    The PSBLAS librarary is based on the Single Program Multiple Data (SPMD) +

    The PSBLAS librarary is based on the Single Program Multiple Data (SPMD) programming model: each process participating in the computation performs the same actions on a chunk of data. Parallelism is thus data-driven. -

    Because of this structure, many subroutines coordinate their action across the +

    Because of this structure, many subroutines coordinate their action across the various processes, thus providing an implicit synchronization point, and therefore must be called simultaneously by all processes participating in the computation. This is certainly true for the data allocation and assembly routines, for all the computational routines and for some of the tools routines. -

    However there are many cases where no synchronization, and indeed no +

    However there are many cases where no synchronization, and indeed no communication among processes, is implied; for instance, all the routines in sec. 3 are only acting on the local data structures, and thus may be called independently. @@ -667,21 +676,21 @@ The most important case is that of the coefficient insertion routines: since the number of coefficients in the sparse and dense matrices varies among the processors, and since the user is free to choose an arbitrary order in builiding the matrix entries, these routines cannot imply a synchronization. -

    Throughout this user’s guide each subroutine will be clearly indicated +

    Throughout this user’s guide each subroutine will be clearly indicated as:

    -

    +

    Synchronous:

    -

    must be called simultaneously by all the processes in the relevant +

    must be called simultaneously by all the processes in the relevant communication context;

    -

    +

    Asynchronous:

    -

    may be called in a totally independent manner.

    +

    may be called in a totally independent manner. diff --git a/docs/html/userhtmlse3.html b/docs/html/userhtmlse3.html index 016e8a9f..791a901e 100644 --- a/docs/html/userhtmlse3.html +++ b/docs/html/userhtmlse3.html @@ -2559,17 +2559,17 @@ Scaling or Block Jacobi with incomplete factorization ILU(0).

    A preconditioner is held in the psb_prec_Tprec_type data structure reported in figure 4. The psb_prec_type data type may contain a simple preconditioning matrix -with the associated communication descriptor.The internal preconditioner is +href="#x8-53001r4">4. The psb_Tprec_type data type may contain a simple preconditioning +matrix with the associated communication descriptor. The internal preconditioner is allocated appropriately with the dynamic type corresponding to the desired preconditioner. -


    @@ -2577,7 +2577,7 @@ preconditioner.
    -

    +

     
       type psb_Tprec_type
    @@ -2585,7 +2585,7 @@ preconditioner.
       end type psb_Tprec_type
     
     
    -

    +


    Listing 4: The PSBLAS defined data type that contains a preconditioner.
    @@ -2595,70 +2595,71 @@ class="content">The PSBLAS defined data type that contains a preconditioner.

    3.5 Heap data structure

    -

    Among the tools routines of sec. 

    Among the tools routines of sec. 6, we have a number of sorting utilities; the heap sort is implemented in terms of heaps having the following signatures:

    -

    +

    psb_T_heap

    -

    : a heap containing elements of type T, where T can be i,s,c,d,z for +

    : a heap containing elements of type T, where T can be i,s,c,d,z for integer, real and complex data;

    -

    +

    psb_T_idx_heap

    -

    : a heap containing elements of type T, as above, together with an integer +

    : a heap containing elements of type T, as above, together with an integer index.

    -

    Given a heap object, the following methods are defined on it: +

    Given a heap object, the following methods are defined on it:

    -

    +

    init

    -

    Initialize memory; also choose ascending or descending order; +

    Initialize memory; also choose ascending or descending order;

    -

    +

    howmany

    -

    Current heap occupancy; +

    Current heap occupancy;

    -

    +

    insert

    -

    Add an item (or an item and its index); +

    Add an item (or an item and its index);

    -

    +

    get_first

    -

    Remove and return the first element; +

    Remove and return the first element;

    -

    +

    dump

    -

    Print on file; +

    Print on file;

    -

    +

    free

    -

    Release memory.

    -

    These objects are used in AMG4PSBLAS to implement the factorization algorithms. +

    Release memory. +

    These objects are used to implement the factorization and approximate inversion +algorithms. diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf index fe0bb60b..f5ba78e8 100644 --- a/docs/psblas-3.9.pdf +++ b/docs/psblas-3.9.pdf @@ -4931,7 +4931,7 @@ endstream endobj 946 0 obj << -/Length 8378 +/Length 8496 >> stream 0 g 0 G @@ -4941,37 +4941,37 @@ BT 0 g 0 G 12.453 -20.571 Td [(1.)]TJ 0 g 0 G - [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F67 9.9626 Tf 171.465 0 Td [(psb_init)]TJ + [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F67 9.9626 Tf 171.465 0 Td [(psb_init)]TJ/F62 9.9626 Tf 41.843 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -171.465 -20.787 Td [(2.)]TJ + -213.308 -20.787 Td [(2.)]TJ 0 g 0 G - [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F67 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ + [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F67 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -130.489 -20.788 Td [(3.)]TJ + -177.562 -20.788 Td [(3.)]TJ 0 g 0 G - [-500(Allocate)-221(sparse)-221(matrix)-221(and)-221(dense)-221(vectors)-220(with)]TJ/F67 9.9626 Tf 215.843 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 49.274 0 Td [(and)]TJ/F67 9.9626 Tf 19.068 0 Td [(psb_geall)]TJ + [-500(Allocate)-193(sparse)-193(matrix)-193(and)-194(dense)-193(vectors)-193(with)]TJ/F67 9.9626 Tf 213.906 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 48.997 0 Td [(and)]TJ/F67 9.9626 Tf 18.791 0 Td [(psb_geall)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -284.185 -20.787 Td [(4.)]TJ + -328.767 -20.787 Td [(4.)]TJ 0 g 0 G - [-500(Loop)-320(over)-320(all)-320(local)-320(r)18(ows,)-338(generate)-320(matrix)-320(and)-320(vector)-320(entries,)-337(and)-320(insert)]TJ 12.454 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.849 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ + [-500(Loop)-320(over)-320(all)-320(local)-320(r)18(ows,)-338(generate)-320(matrix)-320(and)-320(vector)-320(entries,)-337(and)-320(insert)]TJ 12.453 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(psb_geins)]TJ 0 g 0 G -/F62 9.9626 Tf -129.225 -20.787 Td [(5.)]TJ +/F62 9.9626 Tf -129.224 -20.787 Td [(5.)]TJ 0 g 0 G [-500(Assemble)-250(the)-250(various)-250(entities:)]TJ 0 g 0 G 17.774 -20.787 Td [(\050a\051)]TJ 0 g 0 G -/F67 9.9626 Tf 16.597 0 Td [(psb_cdasb)]TJ +/F67 9.9626 Tf 16.597 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ 0 g 0 G -/F62 9.9626 Tf -17.125 -16.371 Td [(\050b\051)]TJ + -64.198 -16.371 Td [(\050b\051)]TJ 0 g 0 G -/F67 9.9626 Tf 17.125 0 Td [(psb_spasb)]TJ +/F67 9.9626 Tf 17.125 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ 0 g 0 G -/F62 9.9626 Tf -16.039 -16.371 Td [(\050c\051)]TJ + -63.112 -16.371 Td [(\050c\051)]TJ 0 g 0 G -/F67 9.9626 Tf 16.039 0 Td [(psb_geasb)]TJ +/F67 9.9626 Tf 16.039 0 Td [(psb_geasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf 122.541 -29.888 Td [(6)]TJ + 75.468 -29.888 Td [(6)]TJ 0 g 0 G ET @@ -4979,7 +4979,7 @@ endstream endobj 959 0 obj << -/Length 7484 +/Length 8091 >> stream 0 g 0 G @@ -4988,59 +4988,62 @@ stream BT /F62 9.9626 Tf 112.349 706.129 Td [(6.)]TJ 0 g 0 G - [-500(Choose)-301(the)-300(pr)18(econditioner)-301(to)-300(be)-301(used)-300(with)]TJ/F67 9.9626 Tf 205.537 0 Td [(prec%init)]TJ/F62 9.9626 Tf 50.068 0 Td [(and)-301(build)-300(it)-301(with)]TJ/F67 9.9626 Tf -243.152 -11.955 Td [(prec%build)]TJ + [-500(Choose)-216(t)1(he)-216(pr)18(econditioner)-216(t)1(o)-216(be)-216(used)-215(with)]TJ/F67 9.9626 Tf 199.607 0 Td [(prec%init)]TJ/F62 9.9626 Tf 49.22 0 Td [(and)]TJ/F67 9.9626 Tf 19.014 0 Td [(prec%set)]TJ/F62 9.9626 Tf 41.843 0 Td [(,)-222(and)]TJ -297.231 -11.955 Td [(build)-250(it)-250(with)]TJ/F67 9.9626 Tf 57.274 0 Td [(prec%build)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 52.303 3.616 Td [(3)]TJ +/F62 7.5716 Tf 52.304 3.616 Td [(3)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.616 Td [(.)]TJ +/F62 9.9626 Tf 4.284 -3.616 Td [(;)]TJ 0 g 0 G - -69.04 -22.307 Td [(7.)]TJ + -126.315 -18.801 Td [(7.)]TJ 0 g 0 G - [-500(Call)-190(the)-190(iterative)-190(driver)]TJ/F67 9.9626 Tf 115.326 0 Td [(psb_krylov)]TJ/F62 9.9626 Tf 54.196 0 Td [(with)-190(the)-190(method)-190(of)-190(choice,)-202(e.g.)]TJ/F67 9.9626 Tf 134.982 0 Td [(bicgstab)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -358.801 -21.712 Td [(This)-250(is)-250(the)-250(str)8(uctur)18(e)-250(of)-250(the)-250(sample)-250(pr)18(ograms)-250(in)-250(the)-250(dir)18(ectory)]TJ/F67 9.9626 Tf 266.418 0 Td [(test/pargen/)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ -314.238 -12.551 Td [(For)-257(a)-258(simulation)-257(in)-257(which)-257(the)-258(same)-257(discr)18(etization)-257(mesh)-257(is)-258(used)-257(over)-257(multi-)]TJ -14.944 -11.955 Td [(ple)-250(time)-250(steps,)-250(the)-250(following)-250(str)8(uctur)18(e)-250(may)-250(be)-250(mor)18(e)-250(appr)18(opriate:)]TJ + [-500(Call)-190(one)-190(of)-190(the)-190(iterative)-190(drivers)-190(with)-190(the)-190(method)-190(of)-190(choice,)-202(e.g.)]TJ/F67 9.9626 Tf 283.085 0 Td [(psb_krylov)]TJ/F62 9.9626 Tf -270.632 -11.955 Td [(with)]TJ/F67 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -89.494 -17.676 Td [(This)-250(is)-250(the)-250(str)8(uctur)18(e)-250(of)-250(the)-250(sample)-250(pr)18(ograms)-250(in)-250(the)-250(dir)18(ectory)]TJ/F67 9.9626 Tf 266.418 0 Td [(test/pargen/)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ -314.238 -11.955 Td [(For)-257(a)-258(simulation)-257(in)-257(which)-257(the)-258(same)-257(discr)18(etization)-257(mesh)-257(is)-258(used)-257(over)-257(multi-)]TJ -14.944 -11.955 Td [(ple)-250(time)-250(steps,)-250(the)-250(following)-250(str)8(uctur)18(e)-250(may)-250(be)-250(mor)18(e)-250(appr)18(opriate:)]TJ 0 g 0 G - 12.454 -21.712 Td [(1.)]TJ + 12.454 -17.676 Td [(1.)]TJ 0 g 0 G [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F67 9.9626 Tf 171.464 0 Td [(psb_init)]TJ 0 g 0 G -/F62 9.9626 Tf -171.464 -22.307 Td [(2.)]TJ +/F62 9.9626 Tf -171.464 -18.8 Td [(2.)]TJ 0 g 0 G [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F67 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ 0 g 0 G -/F62 9.9626 Tf -130.489 -22.307 Td [(3.)]TJ +/F62 9.9626 Tf -130.489 -18.801 Td [(3.)]TJ 0 g 0 G - [-500(Loop)-248(over)-248(the)-248(topology)-248(of)-248(the)-248(discr)18(eti)1(zation)-248(mesh)-248(and)-248(build)-248(the)-248(descrip-)]TJ 12.453 -11.955 Td [(tor)-250(with)]TJ/F67 9.9626 Tf 37.857 0 Td [(psb_cdins)]TJ + [-500(Loop)-248(over)-248(the)-248(topology)-248(of)-248(the)-248(discr)18(eti)1(zation)-248(mesh)-248(and)-248(build)-248(the)-248(descrip-)]TJ 12.453 -11.955 Td [(tor)-250(with)]TJ/F67 9.9626 Tf 37.857 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 47.074 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -50.31 -22.307 Td [(4.)]TJ + -97.384 -18.801 Td [(4.)]TJ 0 g 0 G - [-500(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F67 9.9626 Tf 144.386 0 Td [(psb_cdasb)]TJ + [-500(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F67 9.9626 Tf 144.386 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -144.386 -22.307 Td [(5.)]TJ + -191.459 -18.8 Td [(5.)]TJ 0 g 0 G - [-500(Allocate)-190(the)-190(sparse)-190(matrices)-190(and)-190(dense)-190(vectors)-190(with)]TJ/F67 9.9626 Tf 237.676 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 48.966 0 Td [(and)]TJ/F67 9.9626 Tf 18.759 0 Td [(psb_geall)]TJ + [-500(Allocate)-190(the)-190(sparse)-190(matrices)-190(and)-190(dense)-190(vectors)-190(with;)]TJ/F67 9.9626 Tf 240.366 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 48.966 0 Td [(and)]TJ/F67 9.9626 Tf 18.759 0 Td [(psb_geall)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -305.401 -22.308 Td [(6.)]TJ + -355.164 -18.801 Td [(6.)]TJ 0 g 0 G [-500(Loop)-250(over)-250(the)-250(time)-250(steps:)]TJ 0 g 0 G - 17.773 -22.307 Td [(\050a\051)]TJ + 17.773 -18.8 Td [(\050a\051)]TJ 0 g 0 G [-500(If)-297(after)-298(\002rst)-297(time)-298(step,)-309(r)18(einitialize)-297(the)-298(sparse)-297(matrix)-298(with)]TJ/F67 9.9626 Tf 269.151 0 Td [(psb_sprn)]TJ/F62 9.9626 Tf 41.843 0 Td [(;)]TJ -294.396 -11.955 Td [(also)-250(zer)18(o)-250(out)-250(the)-250(dense)-250(vectors;)]TJ 0 g 0 G - -17.126 -17.131 Td [(\050b\051)]TJ + -17.126 -14.816 Td [(\050b\051)]TJ +0 g 0 G + [-500(Loop)-428(over)-429(the)-428(mesh,)-473(generate)-429(the)-428(coef)18(\002cients)-429(and)-428(insert/update)]TJ 17.126 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.563 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ +0 g 0 G + -179.884 -14.815 Td [(\050c\051)]TJ 0 g 0 G - [-500(Loop)-428(over)-429(the)-428(mesh,)-473(generate)-429(the)-428(coef)18(\002cients)-429(and)-428(insert/update)]TJ 17.126 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.563 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ + [-500(Assemble)-250(with)]TJ/F67 9.9626 Tf 84.223 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(psb_geasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -132.811 -17.131 Td [(\050c\051)]TJ + -201.881 -14.816 Td [(\050d\051)]TJ 0 g 0 G - [-500(Assemble)-250(with)]TJ/F67 9.9626 Tf 84.223 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(psb_geasb)]TJ 0 g 0 G -/F62 9.9626 Tf -154.808 -17.132 Td [(\050d\051)]TJ + 1.315 -14.815 Td [(\050e\051)]TJ 0 g 0 G - [-500(Choose)-250(and)-250(build)-250(pr)18(econditioner)-250(with)]TJ/F67 9.9626 Tf 188.671 0 Td [(prec%init)]TJ/F62 9.9626 Tf 49.563 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(prec%build)]TJ + [-500(Choose)-190(the)-190(pr)18(econditioner)-190(to)-190(be)-190(used)-190(with)]TJ/F67 9.9626 Tf 201.761 0 Td [(prec%init)]TJ/F62 9.9626 Tf 48.966 0 Td [(and)]TJ/F67 9.9626 Tf 18.76 0 Td [(prec%set)]TJ/F62 9.9626 Tf 41.843 0 Td [(,)]TJ -294.941 -11.955 Td [(and)-250(build)-250(it)-250(with)]TJ/F67 9.9626 Tf 76.631 0 Td [(prec%build)]TJ/F62 9.9626 Tf 52.304 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -256.277 -17.131 Td [(\050e\051)]TJ + -143.869 -14.816 Td [(\050f\051)]TJ 0 g 0 G - [-500(Call)-250(the)-250(iterative)-250(method)-250(of)-250(choice,)-250(e.g.)]TJ/F67 9.9626 Tf 190.902 0 Td [(psb_bicgstab)]TJ/F62 9.9626 Tf -221.338 -22.307 Td [(The)-276(insertion)-275(r)18(outines)-276(will)-275(be)-276(called)-275(as)-276(many)-276(times)-275(as)-276(needed;)-288(they)-276(only)-275(need)]TJ 0 -11.955 Td [(to)-214(be)-213(called)-214(on)-213(the)-214(data)-214(t)1(hat)-214(is)-214(actually)-213(allocated)-214(to)-213(the)-214(curr)18(ent)-213(pr)18(ocess,)-221(i.e.)-298(each)]TJ 0 -11.955 Td [(pr)18(ocess)-250(generates)-250(its)-250(own)-250(data.)]TJ 14.944 -12.551 Td [(In)-219(principle)-218(ther)18(e)-219(is)-219(no)-218(speci\002c)-219(or)18(der)-219(in)-218(the)-219(calls)-219(to)]TJ/F67 9.9626 Tf 220.804 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)-225(nor)-219(is)-218(ther)18(e)-219(a)]TJ -282.821 -11.955 Td [(r)18(equir)18(ement)-243(to)-243(build)-243(a)-242(matrix)-243(r)18(ow)-243(in)-243(its)-243(entir)18(ety)-243(befor)18(e)-242(calling)-243(the)-243(r)18(outine;)-245(this)]TJ 0 -11.955 Td [(allows)-364(t)1(he)-364(application)-363(pr)18(ogrammer)-364(to)-363(walk)-364(thr)18(ough)-363(the)-364(discr)18(etization)-363(mesh)]TJ 0 -11.955 Td [(element)-316(by)-317(element,)-333(generating)-316(the)-316(main)-317(part)-316(of)-316(a)-317(given)-316(matrix)-316(r)18(ow)-317(but)-316(also)]TJ 0 -11.956 Td [(contributions)-250(to)-250(the)-250(r)18(ows)-250(corr)18(esponding)-250(to)-250(neighbouring)-250(elements.)]TJ 14.944 -12.55 Td [(Fr)18(om)-328(a)-329(func)1(tional)-329(point)-328(of)-328(view)-328(it)-329(is)-328(even)-328(possible)-328(to)-329(exe)1(cute)-329(one)-328(call)-328(for)]TJ -14.944 -11.955 Td [(each)-204(nonzer)18(o)-204(coef)18(\002cient;)-219(however)-203(this)-204(would)-204(have)-204(a)-204(subst)1(antial)-204(computational)]TJ 0 -11.955 Td [(over)18(head.)-457(It)-299(is)-299(ther)18(efor)18(e)-299(advisable)-299(to)-299(pack)-299(a)-299(certain)-299(amount)-299(of)-299(data)-299(into)-299(each)]TJ 0 -11.956 Td [(call)-303(to)-303(the)-302(insertion)-303(r)18(outine,)-316(say)-303(touching)-303(on)-302(a)-303(few)-303(tens)-303(of)-302(r)18(ows;)-330(the)-302(best)-303(per)18(-)]TJ 0 -11.955 Td [(formng)-342(value)-343(would)-342(depend)-342(on)-342(both)-343(the)-342(ar)18(chitectur)18(e)-342(of)-343(the)-342(computer)-342(being)]TJ 0 -11.955 Td [(used)-223(and)-223(on)-222(the)-223(pr)18(oblem)-223(str)8(uctur)18(e.)-301(At)-222(the)-223(opposite)-223(extr)18(eme,)-228(it)-223(would)-222(be)-223(possi-)]TJ 0 -11.955 Td [(ble)-267(to)-267(generate)-267(the)-267(entir)18(e)-267(part)-267(of)-267(a)-267(coef)18(\002cient)-267(matrix)-267(r)18(esiding)-267(on)-267(a)-267(pr)18(ocess)-267(and)]TJ 0 -11.955 Td [(pass)-275(it)-274(in)-275(a)-275(single)-274(call)-275(to)]TJ/F67 9.9626 Tf 108.421 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)-287(this,)-281(however)74(,)-281(would)-274(entail)-275(a)-275(doubling)-274(of)]TJ -155.494 -11.956 Td [(memory)-250(occupation,)-250(and)-250(thus)-250(would)-250(be)-250(almost)-250(always)-250(far)-250(fr)18(om)-250(optimal.)]TJ + [-500(Call)-190(one)-190(of)-190(the)-190(iterative)-190(drivers)-190(with)-190(the)-190(method)-190(of)-190(choice,)-202(e.g.)]TJ/F67 9.9626 Tf 285.566 0 Td [(psb_krylov)]TJ/F62 9.9626 Tf -270.632 -11.955 Td [(with)]TJ/F67 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -111.412 -18.801 Td [(The)-276(insertion)-275(r)18(outines)-276(will)-275(be)-276(called)-275(as)-276(many)-276(times)-275(as)-276(needed;)-288(they)-276(only)-275(need)]TJ 0 -11.955 Td [(to)-214(be)-213(called)-214(on)-213(the)-214(data)-214(t)1(hat)-214(is)-214(actually)-213(allocated)-214(to)-213(the)-214(curr)18(ent)-213(pr)18(ocess,)-221(i.e.)-298(each)]TJ 0 -11.955 Td [(pr)18(ocess)-250(generates)-250(its)-250(own)-250(data.)]TJ 14.944 -11.955 Td [(In)-219(principle)-218(ther)18(e)-219(is)-219(no)-218(speci\002c)-219(or)18(der)-219(in)-218(the)-219(calls)-219(to)]TJ/F67 9.9626 Tf 220.804 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)-225(nor)-219(is)-218(ther)18(e)-219(a)]TJ -282.821 -11.955 Td [(r)18(equir)18(ement)-243(to)-243(build)-243(a)-242(matrix)-243(r)18(ow)-243(in)-243(its)-243(entir)18(ety)-243(befor)18(e)-242(calling)-243(the)-243(r)18(outine;)-245(this)]TJ 0 -11.955 Td [(allows)-364(t)1(he)-364(application)-363(pr)18(ogrammer)-364(to)-363(walk)-364(thr)18(ough)-363(the)-364(discr)18(etization)-363(mesh)]TJ 0 -11.956 Td [(element)-316(by)-317(element,)-333(generating)-316(the)-316(main)-317(part)-316(of)-316(a)-317(given)-316(matrix)-316(r)18(ow)-317(but)-316(also)]TJ 0 -11.955 Td [(contributions)-250(to)-250(the)-250(r)18(ows)-250(corr)18(esponding)-250(to)-250(neighbouring)-250(elements.)]TJ 14.944 -11.955 Td [(Fr)18(om)-328(a)-329(funct)1(ional)-329(point)-328(of)-328(view)-328(it)-329(is)-328(even)-328(possible)-328(to)-329(exec)1(ute)-329(one)-328(call)-328(for)]TJ -14.944 -11.955 Td [(each)-204(nonzer)18(o)-204(coef)18(\002cient;)-219(however)-203(this)-204(would)-204(have)-204(a)-204(subst)1(antial)-204(computational)]TJ 0 -11.955 Td [(over)18(head.)-457(It)-299(is)-299(ther)18(efor)18(e)-299(advisable)-299(to)-299(pack)-299(a)-299(certain)-299(amount)-299(of)-299(data)-299(into)-299(each)]TJ 0 -11.955 Td [(call)-303(to)-303(the)-302(insertion)-303(r)18(outine,)-316(say)-303(touching)-303(on)-302(a)-303(few)-303(tens)-303(of)-302(r)18(ows;)-330(the)-302(best)-303(per)18(-)]TJ 0 -11.956 Td [(formng)-342(value)-343(would)-342(depend)-342(on)-342(both)-343(the)-342(ar)18(chitectur)18(e)-342(of)-343(the)-342(computer)-342(being)]TJ 0 -11.955 Td [(used)-223(and)-223(on)-222(the)-223(pr)18(oblem)-223(str)8(uctur)18(e.)-301(At)-222(the)-223(opposite)-223(extr)18(eme,)-228(it)-223(would)-222(be)-223(possi-)]TJ 0 -11.955 Td [(ble)-267(to)-267(generate)-267(the)-267(entir)18(e)-267(part)-267(of)-267(a)-267(coef)18(\002cient)-267(matrix)-267(r)18(esiding)-267(on)-267(a)-267(pr)18(ocess)-267(and)]TJ 0 -11.955 Td [(pass)-275(it)-274(in)-275(a)-275(single)-274(call)-275(to)]TJ/F67 9.9626 Tf 108.421 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)-287(this,)-281(however)74(,)-281(would)-274(entail)-275(a)-275(doubling)-274(of)]TJ -155.494 -11.955 Td [(memory)-250(occupation,)-250(and)-250(thus)-250(would)-250(be)-250(almost)-250(always)-250(far)-250(fr)18(om)-250(optimal.)]TJ 0 g 0 G ET q @@ -5048,21 +5051,21 @@ q []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 132.683 Td [(3)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(The)-260(subr)18(outine)-260(style)]TJ/F97 7.9701 Tf 74.235 0 Td [(psb)]TJ +/F62 5.9776 Tf 110.755 132.683 Td [(3)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(The)-341(subr)18(outine)-342(style)]TJ/F97 7.9701 Tf 76.182 0 Td [(psb)]TJ ET q -1 0 0 1 201.687 129.989 cm +1 0 0 1 203.634 129.989 cm []0 d 0 J 0.398 w 0 0 m 2.541 0 l S Q BT -/F97 7.9701 Tf 204.228 129.79 Td [(precinit)]TJ/F62 7.9701 Tf 35.946 0 Td [(and)]TJ/F97 7.9701 Tf 15.567 0 Td [(psb)]TJ +/F97 7.9701 Tf 206.175 129.79 Td [(precinit)]TJ/F62 7.9701 Tf 36.595 0 Td [(and)]TJ/F97 7.9701 Tf 16.216 0 Td [(psb)]TJ ET q -1 0 0 1 268.951 129.989 cm +1 0 0 1 272.196 129.989 cm []0 d 0 J 0.398 w 0 0 m 2.541 0 l S Q BT -/F97 7.9701 Tf 271.492 129.79 Td [(precbl)]TJ/F62 7.9701 Tf 27.478 0 Td [(ar)18(e)-260(still)-260(supported)-260(for)-260(backwar)18(d)-260(compat-)]TJ -199.075 -9.464 Td [(ibility)]TJ +/F97 7.9701 Tf 274.737 129.79 Td [(precbld)]TJ/F62 7.9701 Tf 32.361 0 Td [(ar)18(e)-342(still)-341(supported)-342(for)-341(backwar)18(d)-342(com-)]TJ -207.203 -9.464 Td [(patibility)]TJ 0 g 0 G 0 g 0 G /F62 9.9626 Tf 169.365 -29.888 Td [(7)]TJ @@ -5076,7 +5079,7 @@ endobj /Type /ObjStm /N 100 /First 910 -/Length 12656 +/Length 12655 >> stream 840 0 841 153 842 306 843 453 844 606 845 757 846 904 847 1057 848 1210 849 1363 @@ -5087,8 +5090,8 @@ stream 902 7407 915 7528 901 7678 912 7826 913 7975 917 8124 15 8180 921 8235 922 8292 914 8349 928 8481 932 8623 933 8737 934 8779 924 8848 925 8995 930 9143 931 9200 19 9257 927 9313 940 9460 937 9602 938 9749 942 9896 939 9952 945 10045 947 10159 23 10216 948 10272 949 10329 -950 10386 951 10443 952 10500 953 10557 954 10614 955 10671 944 10728 958 10847 943 10981 960 11130 -961 11186 962 11242 963 11298 964 11354 965 11410 966 11466 967 11522 968 11578 969 11634 970 11690 +950 10386 951 10443 952 10500 953 10557 954 10614 955 10671 944 10728 958 10847 943 10981 960 11129 +961 11185 962 11241 963 11297 964 11353 965 11409 966 11465 967 11521 968 11577 969 11633 970 11689 % 840 0 obj << /Type /Annot @@ -5691,7 +5694,7 @@ stream /Contents 959 0 R /Resources 957 0 R /MediaBox [0 0 595.276 841.89] -/Parent 976 0 R +/Parent 977 0 R /Annots [ 943 0 R ] >> % 943 0 obj @@ -5699,7 +5702,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [176.109 690.964 182.386 703.958] +/Rect [233.383 690.964 239.66 703.958] /A << /S /GoTo /D (Hfootnote.3) >> >> % 960 0 obj @@ -5712,44 +5715,44 @@ stream >> % 962 0 obj << -/D [958 0 R /XYZ 99.895 686.784 null] +/D [958 0 R /XYZ 99.895 688.537 null] >> % 963 0 obj << -/D [958 0 R /XYZ 99.895 618.259 null] +/D [958 0 R /XYZ 99.895 616.725 null] >> % 964 0 obj << -/D [958 0 R /XYZ 99.895 595.952 null] +/D [958 0 R /XYZ 99.895 597.924 null] >> % 965 0 obj << -/D [958 0 R /XYZ 99.895 573.645 null] +/D [958 0 R /XYZ 99.895 579.124 null] >> % 966 0 obj << -/D [958 0 R /XYZ 99.895 539.978 null] +/D [958 0 R /XYZ 99.895 548.963 null] >> % 967 0 obj << -/D [958 0 R /XYZ 99.895 517.075 null] +/D [958 0 R /XYZ 99.895 529.567 null] >> % 968 0 obj << -/D [958 0 R /XYZ 99.895 494.768 null] +/D [958 0 R /XYZ 99.895 510.767 null] >> % 969 0 obj << -/D [958 0 R /XYZ 99.895 469.873 null] +/D [958 0 R /XYZ 99.895 489.974 null] >> % 970 0 obj << -/D [958 0 R /XYZ 99.895 442.062 null] +/D [958 0 R /XYZ 99.895 464.479 null] >> endstream endobj -981 0 obj +982 0 obj << /Length 7173 >> @@ -5805,7 +5808,7 @@ ET endstream endobj -992 0 obj +993 0 obj << /Length 8187 >> @@ -5953,7 +5956,7 @@ ET endstream endobj -1000 0 obj +1001 0 obj << /Length 6070 >> @@ -6080,7 +6083,7 @@ ET endstream endobj -1011 0 obj +1012 0 obj << /Length 7045 >> @@ -6319,7 +6322,7 @@ ET endstream endobj -1027 0 obj +1028 0 obj << /Length 4957 >> @@ -6448,7 +6451,7 @@ ET endstream endobj -1031 0 obj +1032 0 obj << /Length 4367 >> @@ -6574,7 +6577,7 @@ ET endstream endobj -1036 0 obj +1037 0 obj << /Length 4754 >> @@ -6741,7 +6744,7 @@ ET endstream endobj -1041 0 obj +1042 0 obj << /Length 5640 >> @@ -6837,7 +6840,7 @@ ET endstream endobj -1048 0 obj +1049 0 obj << /Length 7676 >> @@ -7103,7 +7106,7 @@ ET endstream endobj -1055 0 obj +1056 0 obj << /Length 7385 >> @@ -7333,7 +7336,7 @@ ET endstream endobj -1060 0 obj +1061 0 obj << /Length 3860 >> @@ -7437,53 +7440,57 @@ ET endstream endobj -977 0 obj +978 0 obj << /Type /ObjStm /N 100 /First 915 -/Length 9172 ->> -stream -971 0 972 56 973 112 974 168 957 225 980 318 956 460 978 612 982 759 27 816 -983 872 984 929 985 984 986 1040 987 1097 988 1154 31 1211 979 1267 991 1386 989 1520 -993 1667 35 1723 39 1778 994 1833 990 1889 999 1982 995 2133 996 2279 997 2431 1001 2583 -1002 2641 1003 2699 1004 2757 1005 2815 1006 2873 998 2931 1010 3011 1007 3158 1008 3311 1012 3464 -1013 3522 1014 3580 1015 3638 1016 3696 1017 3754 1018 3812 1019 3870 1020 3928 1022 3986 1009 4044 -1026 4153 1023 4300 1024 4448 1028 4595 43 4654 47 4711 51 4768 55 4825 1025 4882 1030 5015 -1032 5133 59 5191 63 5247 67 5303 1029 5359 1035 5453 1037 5571 71 5630 75 5687 1038 5744 -79 5803 83 5858 1034 5915 1040 6009 1042 6127 87 6185 91 6241 95 6297 1039 6353 1047 6447 -1043 6604 1044 6762 1045 6914 1049 7062 99 7121 103 7178 1050 7236 1046 7295 1054 7389 1056 7507 -1052 7565 1057 7623 107 7682 111 7739 1053 7796 1059 7905 1061 8023 115 8082 119 8140 1062 8198 +/Length 9176 +>> +stream +971 0 972 56 973 112 974 168 975 224 957 281 981 374 956 516 979 668 983 815 +27 872 984 928 985 985 986 1040 987 1096 988 1153 989 1210 31 1267 980 1323 992 1442 +990 1576 994 1723 35 1779 39 1834 995 1889 991 1945 1000 2038 996 2190 997 2336 998 2488 +1002 2640 1003 2699 1004 2758 1005 2817 1006 2876 1007 2935 999 2994 1011 3074 1008 3221 1009 3374 +1013 3527 1014 3585 1015 3643 1016 3701 1017 3759 1018 3817 1019 3875 1020 3933 1021 3991 1023 4049 +1010 4107 1027 4216 1024 4363 1025 4511 1029 4658 43 4717 47 4774 51 4831 55 4888 1026 4945 +1031 5078 1033 5196 59 5254 63 5310 67 5366 1030 5422 1036 5516 1038 5634 71 5693 75 5750 +1039 5807 79 5866 83 5921 1035 5978 1041 6072 1043 6190 87 6248 91 6304 95 6360 1040 6416 +1048 6510 1044 6667 1045 6825 1046 6977 1050 7125 99 7184 103 7241 1051 7299 1047 7358 1055 7452 +1057 7570 1053 7628 1058 7686 107 7745 111 7802 1054 7859 1060 7968 1062 8086 115 8145 119 8203 % 971 0 obj << -/D [958 0 R /XYZ 99.895 412.296 null] +/D [958 0 R /XYZ 99.895 437.028 null] >> % 972 0 obj << -/D [958 0 R /XYZ 99.895 395.165 null] +/D [958 0 R /XYZ 99.895 422.213 null] >> % 973 0 obj << -/D [958 0 R /XYZ 99.895 377.438 null] +/D [958 0 R /XYZ 99.895 407.469 null] >> % 974 0 obj << +/D [958 0 R /XYZ 99.895 380.627 null] +>> +% 975 0 obj +<< /D [958 0 R /XYZ 114.242 139.255 null] >> % 957 0 obj << -/Font << /F62 671 0 R /F67 918 0 R /F97 975 0 R >> +/Font << /F62 671 0 R /F67 918 0 R /F97 976 0 R >> /ProcSet [ /PDF /Text ] >> -% 980 0 obj +% 981 0 obj << /Type /Page -/Contents 981 0 R -/Resources 979 0 R +/Contents 982 0 R +/Resources 980 0 R /MediaBox [0 0 595.276 841.89] -/Parent 976 0 R -/Annots [ 956 0 R 978 0 R ] +/Parent 977 0 R +/Annots [ 956 0 R 979 0 R ] >> % 956 0 obj << @@ -7493,7 +7500,7 @@ stream /Rect [269.647 674.054 284.093 683.464] /A << /S /GoTo /D (subsection.2.3) >> >> -% 978 0 obj +% 979 0 obj << /Type /Annot /Subtype /Link @@ -7501,57 +7508,57 @@ stream /Rect [168.073 254.848 175.046 266.907] /A << /S /GoTo /D (section.3) >> >> -% 982 0 obj +% 983 0 obj << -/D [980 0 R /XYZ 149.705 753.953 null] +/D [981 0 R /XYZ 149.705 753.953 null] >> % 27 0 obj << -/D [980 0 R /XYZ 150.705 716.092 null] ->> -% 983 0 obj -<< -/D [980 0 R /XYZ 150.705 671.065 null] +/D [981 0 R /XYZ 150.705 716.092 null] >> % 984 0 obj << -/D [980 0 R /XYZ 150.705 648.1 null] +/D [981 0 R /XYZ 150.705 671.065 null] >> % 985 0 obj << -/D [980 0 R /XYZ 150.705 573.59 null] +/D [981 0 R /XYZ 150.705 648.1 null] >> % 986 0 obj << -/D [980 0 R /XYZ 150.705 516.424 null] +/D [981 0 R /XYZ 150.705 573.59 null] >> % 987 0 obj << -/D [980 0 R /XYZ 150.705 483.864 null] +/D [981 0 R /XYZ 150.705 516.424 null] >> % 988 0 obj << -/D [980 0 R /XYZ 150.705 463.343 null] +/D [981 0 R /XYZ 150.705 483.864 null] +>> +% 989 0 obj +<< +/D [981 0 R /XYZ 150.705 463.343 null] >> % 31 0 obj << -/D [980 0 R /XYZ 150.705 408.307 null] +/D [981 0 R /XYZ 150.705 408.307 null] >> -% 979 0 obj +% 980 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 991 0 obj +% 992 0 obj << /Type /Page -/Contents 992 0 R -/Resources 990 0 R +/Contents 993 0 R +/Resources 991 0 R /MediaBox [0 0 595.276 841.89] -/Parent 976 0 R -/Annots [ 989 0 R ] +/Parent 977 0 R +/Annots [ 990 0 R ] >> -% 989 0 obj +% 990 0 obj << /Type /Annot /Subtype /Link @@ -7559,37 +7566,37 @@ stream /Rect [268.105 173.115 275.079 185.175] /A << /S /GoTo /D (section.6) >> >> -% 993 0 obj +% 994 0 obj << -/D [991 0 R /XYZ 98.895 753.953 null] +/D [992 0 R /XYZ 98.895 753.953 null] >> % 35 0 obj << -/D [991 0 R /XYZ 99.895 716.092 null] +/D [992 0 R /XYZ 99.895 716.092 null] >> % 39 0 obj << -/D [991 0 R /XYZ 99.895 279.545 null] +/D [992 0 R /XYZ 99.895 279.545 null] >> -% 994 0 obj +% 995 0 obj << -/D [991 0 R /XYZ 342.47 236.897 null] +/D [992 0 R /XYZ 342.47 236.897 null] >> -% 990 0 obj +% 991 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 999 0 obj +% 1000 0 obj << /Type /Page -/Contents 1000 0 R -/Resources 998 0 R +/Contents 1001 0 R +/Resources 999 0 R /MediaBox [0 0 595.276 841.89] -/Parent 976 0 R -/Annots [ 995 0 R 996 0 R 997 0 R ] +/Parent 977 0 R +/Annots [ 996 0 R 997 0 R 998 0 R ] >> -% 995 0 obj +% 996 0 obj << /Type /Annot /Subtype /Link @@ -7597,7 +7604,7 @@ stream /Rect [482.63 399.338 489.604 411.398] /A << /S /GoTo /D (section.6) >> >> -% 996 0 obj +% 997 0 obj << /Type /Annot /Subtype /Link @@ -7605,7 +7612,7 @@ stream /Rect [354.987 193.202 369.432 205.262] /A << /S /GoTo /D (subsection.3.3) >> >> -% 997 0 obj +% 998 0 obj << /Type /Annot /Subtype /Link @@ -7613,45 +7620,45 @@ stream /Rect [354.987 148.883 369.432 160.943] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1001 0 obj -<< -/D [999 0 R /XYZ 149.705 753.953 null] ->> % 1002 0 obj << -/D [999 0 R /XYZ 150.705 293.402 null] +/D [1000 0 R /XYZ 149.705 753.953 null] >> % 1003 0 obj << -/D [999 0 R /XYZ 150.705 278.496 null] +/D [1000 0 R /XYZ 150.705 293.402 null] >> % 1004 0 obj << -/D [999 0 R /XYZ 150.705 261.039 null] +/D [1000 0 R /XYZ 150.705 278.496 null] >> % 1005 0 obj << -/D [999 0 R /XYZ 150.705 244.857 null] +/D [1000 0 R /XYZ 150.705 261.039 null] >> % 1006 0 obj << -/D [999 0 R /XYZ 150.705 228.675 null] +/D [1000 0 R /XYZ 150.705 244.857 null] >> -% 998 0 obj +% 1007 0 obj +<< +/D [1000 0 R /XYZ 150.705 228.675 null] +>> +% 999 0 obj << /Font << /F62 671 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1010 0 obj +% 1011 0 obj << /Type /Page -/Contents 1011 0 R -/Resources 1009 0 R +/Contents 1012 0 R +/Resources 1010 0 R /MediaBox [0 0 595.276 841.89] -/Parent 976 0 R -/Annots [ 1007 0 R 1008 0 R ] +/Parent 977 0 R +/Annots [ 1008 0 R 1009 0 R ] >> -% 1007 0 obj +% 1008 0 obj << /Type /Annot /Subtype /Link @@ -7659,7 +7666,7 @@ stream /Rect [304.177 614.119 318.623 626.179] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1008 0 obj +% 1009 0 obj << /Type /Annot /Subtype /Link @@ -7667,61 +7674,61 @@ stream /Rect [304.177 568.778 318.623 580.837] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1012 0 obj -<< -/D [1010 0 R /XYZ 98.895 753.953 null] ->> % 1013 0 obj << -/D [1010 0 R /XYZ 99.895 716.092 null] +/D [1011 0 R /XYZ 98.895 753.953 null] >> % 1014 0 obj << -/D [1010 0 R /XYZ 99.895 702.226 null] +/D [1011 0 R /XYZ 99.895 716.092 null] >> % 1015 0 obj << -/D [1010 0 R /XYZ 99.895 684.257 null] +/D [1011 0 R /XYZ 99.895 702.226 null] >> % 1016 0 obj << -/D [1010 0 R /XYZ 99.895 667.564 null] +/D [1011 0 R /XYZ 99.895 684.257 null] >> % 1017 0 obj << -/D [1010 0 R /XYZ 99.895 650.871 null] +/D [1011 0 R /XYZ 99.895 667.564 null] >> % 1018 0 obj << -/D [1010 0 R /XYZ 99.895 541.236 null] +/D [1011 0 R /XYZ 99.895 650.871 null] >> % 1019 0 obj << -/D [1010 0 R /XYZ 99.895 524.542 null] +/D [1011 0 R /XYZ 99.895 541.236 null] >> % 1020 0 obj << -/D [1010 0 R /XYZ 99.895 507.849 null] +/D [1011 0 R /XYZ 99.895 524.542 null] >> -% 1022 0 obj +% 1021 0 obj << -/D [1010 0 R /XYZ 99.895 288.977 null] +/D [1011 0 R /XYZ 99.895 507.849 null] >> -% 1009 0 obj +% 1023 0 obj +<< +/D [1011 0 R /XYZ 99.895 288.977 null] +>> +% 1010 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1021 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1022 0 R >> /ProcSet [ /PDF /Text ] >> -% 1026 0 obj +% 1027 0 obj << /Type /Page -/Contents 1027 0 R -/Resources 1025 0 R +/Contents 1028 0 R +/Resources 1026 0 R /MediaBox [0 0 595.276 841.89] -/Parent 976 0 R -/Annots [ 1023 0 R 1024 0 R ] +/Parent 977 0 R +/Annots [ 1024 0 R 1025 0 R ] >> -% 1023 0 obj +% 1024 0 obj << /Type /Annot /Subtype /Link @@ -7729,7 +7736,7 @@ stream /Rect [352.861 524.509 359.835 537.101] /A << /S /GoTo /D (section.1) >> >> -% 1024 0 obj +% 1025 0 obj << /Type /Annot /Subtype /Link @@ -7737,136 +7744,136 @@ stream /Rect [186.147 314.537 193.12 327.129] /A << /S /GoTo /D (section.1) >> >> -% 1028 0 obj +% 1029 0 obj << -/D [1026 0 R /XYZ 149.705 753.953 null] +/D [1027 0 R /XYZ 149.705 753.953 null] >> % 43 0 obj << -/D [1026 0 R /XYZ 150.705 716.092 null] +/D [1027 0 R /XYZ 150.705 716.092 null] >> % 47 0 obj << -/D [1026 0 R /XYZ 150.705 696.532 null] +/D [1027 0 R /XYZ 150.705 696.532 null] >> % 51 0 obj << -/D [1026 0 R /XYZ 150.705 498.276 null] +/D [1027 0 R /XYZ 150.705 498.276 null] >> % 55 0 obj << -/D [1026 0 R /XYZ 150.705 288.305 null] +/D [1027 0 R /XYZ 150.705 288.305 null] >> -% 1025 0 obj +% 1026 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1030 0 obj +% 1031 0 obj << /Type /Page -/Contents 1031 0 R -/Resources 1029 0 R +/Contents 1032 0 R +/Resources 1030 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1033 0 R +/Parent 1034 0 R >> -% 1032 0 obj +% 1033 0 obj << -/D [1030 0 R /XYZ 98.895 753.953 null] +/D [1031 0 R /XYZ 98.895 753.953 null] >> % 59 0 obj << -/D [1030 0 R /XYZ 99.895 716.092 null] +/D [1031 0 R /XYZ 99.895 716.092 null] >> % 63 0 obj << -/D [1030 0 R /XYZ 99.895 529.559 null] +/D [1031 0 R /XYZ 99.895 529.559 null] >> % 67 0 obj << -/D [1030 0 R /XYZ 99.895 276.666 null] +/D [1031 0 R /XYZ 99.895 276.666 null] >> -% 1029 0 obj +% 1030 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1035 0 obj +% 1036 0 obj << /Type /Page -/Contents 1036 0 R -/Resources 1034 0 R +/Contents 1037 0 R +/Resources 1035 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1033 0 R +/Parent 1034 0 R >> -% 1037 0 obj +% 1038 0 obj << -/D [1035 0 R /XYZ 149.705 753.953 null] +/D [1036 0 R /XYZ 149.705 753.953 null] >> % 71 0 obj << -/D [1035 0 R /XYZ 150.705 716.092 null] +/D [1036 0 R /XYZ 150.705 716.092 null] >> % 75 0 obj << -/D [1035 0 R /XYZ 150.705 519.544 null] +/D [1036 0 R /XYZ 150.705 519.544 null] >> -% 1038 0 obj +% 1039 0 obj << -/D [1035 0 R /XYZ 397.537 356.277 null] +/D [1036 0 R /XYZ 397.537 356.277 null] >> % 79 0 obj << -/D [1035 0 R /XYZ 150.705 305.6 null] +/D [1036 0 R /XYZ 150.705 305.6 null] >> % 83 0 obj << -/D [1035 0 R /XYZ 150.705 194.578 null] +/D [1036 0 R /XYZ 150.705 194.578 null] >> -% 1034 0 obj +% 1035 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1040 0 obj +% 1041 0 obj << /Type /Page -/Contents 1041 0 R -/Resources 1039 0 R +/Contents 1042 0 R +/Resources 1040 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1033 0 R +/Parent 1034 0 R >> -% 1042 0 obj +% 1043 0 obj << -/D [1040 0 R /XYZ 98.895 753.953 null] +/D [1041 0 R /XYZ 98.895 753.953 null] >> % 87 0 obj << -/D [1040 0 R /XYZ 99.895 583.842 null] +/D [1041 0 R /XYZ 99.895 583.842 null] >> % 91 0 obj << -/D [1040 0 R /XYZ 99.895 466.211 null] +/D [1041 0 R /XYZ 99.895 466.211 null] >> % 95 0 obj << -/D [1040 0 R /XYZ 99.895 256.035 null] +/D [1041 0 R /XYZ 99.895 256.035 null] >> -% 1039 0 obj +% 1040 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1047 0 obj +% 1048 0 obj << /Type /Page -/Contents 1048 0 R -/Resources 1046 0 R +/Contents 1049 0 R +/Resources 1047 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1033 0 R -/Annots [ 1043 0 R 1044 0 R 1045 0 R ] +/Parent 1034 0 R +/Annots [ 1044 0 R 1045 0 R 1046 0 R ] >> -% 1043 0 obj +% 1044 0 obj << /Type /Annot /Subtype /Link @@ -7874,7 +7881,7 @@ stream /Rect [187.544 240.393 199.499 249.399] /A << /S /GoTo /D (cite.DesignPatterns) >> >> -% 1044 0 obj +% 1045 0 obj << /Type /Annot /Subtype /Link @@ -7882,7 +7889,7 @@ stream /Rect [267.981 240.293 279.936 249.399] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 1045 0 obj +% 1046 0 obj << /Type /Annot /Subtype /Link @@ -7890,88 +7897,84 @@ stream /Rect [458.483 237.643 465.457 249.703] /A << /S /GoTo /D (listing.2) >> >> -% 1049 0 obj +% 1050 0 obj << -/D [1047 0 R /XYZ 149.705 753.953 null] +/D [1048 0 R /XYZ 149.705 753.953 null] >> % 99 0 obj << -/D [1047 0 R /XYZ 150.705 544.277 null] +/D [1048 0 R /XYZ 150.705 544.277 null] >> % 103 0 obj << -/D [1047 0 R /XYZ 150.705 296.936 null] +/D [1048 0 R /XYZ 150.705 296.936 null] >> -% 1050 0 obj +% 1051 0 obj << -/D [1047 0 R /XYZ 170.328 265.359 null] +/D [1048 0 R /XYZ 170.328 265.359 null] >> -% 1046 0 obj +% 1047 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1054 0 obj +% 1055 0 obj << /Type /Page -/Contents 1055 0 R -/Resources 1053 0 R +/Contents 1056 0 R +/Resources 1054 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1033 0 R +/Parent 1034 0 R >> -% 1056 0 obj +% 1057 0 obj << -/D [1054 0 R /XYZ 98.895 753.953 null] +/D [1055 0 R /XYZ 98.895 753.953 null] >> -% 1052 0 obj +% 1053 0 obj << -/D [1054 0 R /XYZ 99.895 665.282 null] +/D [1055 0 R /XYZ 99.895 665.282 null] >> -% 1057 0 obj +% 1058 0 obj << -/D [1054 0 R /XYZ 409.052 603.446 null] +/D [1055 0 R /XYZ 409.052 603.446 null] >> % 107 0 obj << -/D [1054 0 R /XYZ 99.895 294.773 null] +/D [1055 0 R /XYZ 99.895 294.773 null] >> % 111 0 obj << -/D [1054 0 R /XYZ 99.895 276.048 null] +/D [1055 0 R /XYZ 99.895 276.048 null] >> -% 1053 0 obj +% 1054 0 obj << -/Font << /F102 1021 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R >> +/Font << /F102 1022 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1059 0 obj +% 1060 0 obj << /Type /Page -/Contents 1060 0 R -/Resources 1058 0 R +/Contents 1061 0 R +/Resources 1059 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1033 0 R +/Parent 1034 0 R >> -% 1061 0 obj +% 1062 0 obj << -/D [1059 0 R /XYZ 149.705 753.953 null] +/D [1060 0 R /XYZ 149.705 753.953 null] >> % 115 0 obj << -/D [1059 0 R /XYZ 150.705 716.092 null] +/D [1060 0 R /XYZ 150.705 716.092 null] >> % 119 0 obj << -/D [1059 0 R /XYZ 150.705 540.892 null] ->> -% 1062 0 obj -<< -/D [1059 0 R /XYZ 150.705 358.382 null] +/D [1060 0 R /XYZ 150.705 540.892 null] >> endstream endobj -1066 0 obj +1067 0 obj << /Length 4447 >> @@ -8128,7 +8131,7 @@ ET endstream endobj -1071 0 obj +1072 0 obj << /Length 5883 >> @@ -8314,7 +8317,7 @@ ET endstream endobj -1075 0 obj +1076 0 obj << /Length 4616 >> @@ -8435,7 +8438,7 @@ ET endstream endobj -1079 0 obj +1080 0 obj << /Length 4627 >> @@ -8566,7 +8569,7 @@ ET endstream endobj -1083 0 obj +1084 0 obj << /Length 6324 >> @@ -8720,7 +8723,7 @@ ET endstream endobj -1089 0 obj +1090 0 obj << /Length 7619 >> @@ -9003,7 +9006,7 @@ ET endstream endobj -1095 0 obj +1096 0 obj << /Length 5064 >> @@ -9163,7 +9166,7 @@ ET endstream endobj -1102 0 obj +1103 0 obj << /Length 3867 >> @@ -9245,9 +9248,9 @@ ET endstream endobj -1109 0 obj +1110 0 obj << -/Length 4464 +/Length 4480 >> stream 0 g 0 G @@ -9310,25 +9313,25 @@ BT 0 g 0 G /F59 9.9626 Tf -10.521 -21.361 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 11.9552 Tf -23.801 -31.176 Td [(3.4)-1000(Preconditioner)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -19.659 Td [(Our)-396(base)-397(l)1(ibrary)-397(of)18(fers)-396(support)-396(for)-396(simple)-397(well)-396(known)-396(pr)18(econditioners)-396(like)]TJ 0 -11.956 Td [(Diagonal)-250(Scaling)-250(or)-250(Block)-250(Jacobi)-250(with)-250(incomplete)-250(factorization)-250(ILU\0500\051.)]TJ 14.944 -12.314 Td [(A)-361(pr)18(econditioner)-361(is)-361(held)-361(in)-361(the)]TJ/F67 9.9626 Tf 143.781 0 Td [(psb)]TJ +/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 11.9552 Tf -23.801 -31.176 Td [(3.4)-1000(Preconditioner)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -19.659 Td [(Our)-396(base)-397(l)1(ibrary)-397(of)18(fers)-396(support)-396(for)-396(simple)-397(well)-396(known)-396(pr)18(econditioners)-396(like)]TJ 0 -11.956 Td [(Diagonal)-250(Scaling)-250(or)-250(Block)-250(Jacobi)-250(with)-250(incomplete)-250(factorization)-250(ILU\0500\051.)]TJ 14.944 -12.314 Td [(A)-309(pr)18(ec)1(onditioner)-309(is)-309(held)-308(in)-309(the)]TJ/F67 9.9626 Tf 140.643 0 Td [(psb)]TJ ET q -1 0 0 1 274.939 168.346 cm +1 0 0 1 271.801 168.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 278.077 168.146 Td [(prec)]TJ +/F67 9.9626 Tf 274.939 168.146 Td [(Tprec)]TJ ET q -1 0 0 1 299.626 168.346 cm +1 0 0 1 301.718 168.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 302.764 168.146 Td [(type)]TJ/F62 9.9626 Tf 24.519 0 Td [(data)-361(str)8(uctur)18(e)-361(r)18(eported)-361(in)]TJ -227.388 -11.955 Td [(\002gur)18(e)]TJ +/F67 9.9626 Tf 304.857 168.146 Td [(type)]TJ/F62 9.9626 Tf 23.995 0 Td [(data)-309(str)8(uct)1(ur)18(e)-309(r)18(eported)-309(in)]TJ -228.957 -11.955 Td [(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-282(4)]TJ + [-235(4)]TJ 0 g 0 G - [(.)-407(The)]TJ/F67 9.9626 Tf 59.933 0 Td [(psb_prec_type)]TJ/F62 9.9626 Tf 70.808 0 Td [(data)-282(type)-283(may)-282(contain)-282(a)-283(simple)-282(pr)18(econditioning)]TJ -130.741 -11.955 Td [(matrix)-376(with)-376(the)-376(associated)-376(communication)-375(descriptor)74(.The)-376(internal)-376(pr)18(econdi-)]TJ 0 -11.955 Td [(tioner)-317(is)-317(allocated)-318(appr)18(opriately)-317(with)-317(the)-317(dynamic)-318(type)-317(corr)18(esponding)-317(to)-317(the)]TJ 0 -11.955 Td [(desir)18(ed)-250(pr)18(econditioner)74(.)]TJ + [(.)-305(The)]TJ/F67 9.9626 Tf 57.981 0 Td [(psb_Tprec_type)]TJ/F62 9.9626 Tf 75.569 0 Td [(data)-235(type)-236(may)-235(contain)-235(a)-236(simple)-235(pr)18(econditioning)]TJ -133.55 -11.955 Td [(matrix)-307(with)-307(the)-307(associated)-308(commun)1(ication)-308(descriptor)74(.)-481(The)-307(internal)-307(pr)18(econdi-)]TJ 0 -11.955 Td [(tioner)-317(is)-317(allocated)-318(appr)18(opriately)-317(with)-317(the)-317(dynamic)-318(type)-317(corr)18(esponding)-317(to)-317(the)]TJ 0 -11.955 Td [(desir)18(ed)-250(pr)18(econditioner)74(.)]TJ 0 g 0 G 166.875 -29.888 Td [(27)]TJ 0 g 0 G @@ -9336,9 +9339,9 @@ ET endstream endobj -1115 0 obj +1116 0 obj << -/Length 4234 +/Length 4259 >> stream 0 g 0 G @@ -9465,7 +9468,7 @@ BT 0 g 0 G /F59 9.9626 Tf -32.099 -19.926 Td [(free)]TJ 0 g 0 G -/F62 9.9626 Tf 22.695 0 Td [(Release)-250(memory)111(.)]TJ -22.695 -19.925 Td [(These)-305(objects)-305(ar)18(e)-305(used)-305(in)-305(AMG4PSBLAS)-305(to)-305(implement)-305(the)-305(factorization)-305(algo-)]TJ 0 -11.955 Td [(rithms.)]TJ +/F62 9.9626 Tf 22.695 0 Td [(Release)-250(memory)111(.)]TJ -22.695 -19.925 Td [(These)-285(objects)-285(ar)18(e)-285(used)-285(to)-285(implement)-285(the)-285(factorization)-285(and)-285(appr)18(oximate)-285(inver)18(-)]TJ 0 -11.955 Td [(sion)-250(algorithms.)]TJ 0 g 0 G 166.874 -246.934 Td [(28)]TJ 0 g 0 G @@ -9473,7 +9476,7 @@ ET endstream endobj -1119 0 obj +1120 0 obj << /Length 158 >> @@ -9489,7 +9492,7 @@ ET endstream endobj -1130 0 obj +1131 0 obj << /Length 7465 >> @@ -9688,7 +9691,7 @@ ET endstream endobj -1137 0 obj +1138 0 obj << /Length 2404 >> @@ -9762,7 +9765,7 @@ ET endstream endobj -1147 0 obj +1148 0 obj << /Length 7647 >> @@ -9958,7 +9961,7 @@ ET endstream endobj -1153 0 obj +1154 0 obj << /Length 4270 >> @@ -10072,172 +10075,176 @@ ET endstream endobj -1063 0 obj +1064 0 obj << /Type /ObjStm /N 100 /First 956 -/Length 10436 ->> -stream -123 0 1058 57 1065 151 1067 269 127 327 131 384 135 441 1064 498 1070 592 1072 710 -139 769 143 827 1069 885 1074 979 1076 1097 147 1155 151 1212 1073 1269 1078 1363 1080 1481 -155 1540 159 1598 163 1656 1077 1714 1082 1808 1084 1926 167 1984 1081 2040 1088 2134 1085 2282 -1086 2428 1090 2576 171 2635 175 2693 179 2750 183 2807 1091 2865 1087 2924 1094 3018 1096 3136 -1092 3194 187 3252 191 3309 195 3366 1093 3423 1101 3532 1098 3680 1099 3826 1103 3971 199 4030 -1100 4088 1108 4182 1105 4321 1110 4469 204 4527 208 4584 212 4640 1111 4697 1107 4755 1114 4862 -1106 5001 1116 5148 1112 5207 216 5266 1113 5324 1118 5433 1120 5551 220 5609 1117 5666 1129 5747 -1121 5931 1122 6077 1123 6221 1124 6367 1125 6513 1126 6657 1131 6803 224 6862 1104 6920 1128 6979 -1136 7126 1127 7283 1133 7430 1134 7574 1138 7720 1135 7778 1146 7885 1140 8060 1141 8201 1142 8347 -1143 8491 1144 8636 1148 8783 228 8842 1149 8900 1145 8959 1152 9079 1150 9218 1154 9364 1155 9422 +/Length 10437 +>> +stream +1063 0 123 59 1059 116 1066 210 1068 328 127 386 131 443 135 500 1065 557 1071 651 +1073 769 139 828 143 886 1070 944 1075 1038 1077 1156 147 1214 151 1271 1074 1328 1079 1422 +1081 1540 155 1599 159 1657 163 1715 1078 1773 1083 1867 1085 1985 167 2043 1082 2099 1089 2193 +1086 2341 1087 2487 1091 2635 171 2694 175 2752 179 2809 183 2866 1092 2924 1088 2983 1095 3077 +1097 3195 1093 3253 187 3311 191 3368 195 3425 1094 3482 1102 3591 1099 3739 1100 3885 1104 4030 +199 4089 1101 4147 1109 4241 1106 4380 1111 4527 204 4585 208 4642 212 4698 1112 4755 1108 4814 +1115 4921 1107 5060 1117 5207 1113 5266 216 5325 1114 5383 1119 5492 1121 5610 220 5668 1118 5725 +1130 5806 1122 5990 1123 6136 1124 6280 1125 6426 1126 6572 1127 6716 1132 6862 224 6921 1105 6979 +1129 7038 1137 7185 1128 7342 1134 7489 1135 7633 1139 7779 1136 7837 1147 7944 1141 8119 1142 8260 +1143 8406 1144 8550 1145 8695 1149 8842 228 8901 1150 8959 1146 9018 1153 9138 1151 9277 1155 9423 +% 1063 0 obj +<< +/D [1060 0 R /XYZ 150.705 358.382 null] +>> % 123 0 obj << -/D [1059 0 R /XYZ 150.705 300.51 null] +/D [1060 0 R /XYZ 150.705 300.51 null] >> -% 1058 0 obj +% 1059 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1065 0 obj +% 1066 0 obj << /Type /Page -/Contents 1066 0 R -/Resources 1064 0 R +/Contents 1067 0 R +/Resources 1065 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1068 0 R +/Parent 1069 0 R >> -% 1067 0 obj +% 1068 0 obj << -/D [1065 0 R /XYZ 98.895 753.953 null] +/D [1066 0 R /XYZ 98.895 753.953 null] >> % 127 0 obj << -/D [1065 0 R /XYZ 99.895 716.092 null] +/D [1066 0 R /XYZ 99.895 716.092 null] >> % 131 0 obj << -/D [1065 0 R /XYZ 99.895 526.761 null] +/D [1066 0 R /XYZ 99.895 526.761 null] >> % 135 0 obj << -/D [1065 0 R /XYZ 99.895 326.359 null] +/D [1066 0 R /XYZ 99.895 326.359 null] >> -% 1064 0 obj +% 1065 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1070 0 obj +% 1071 0 obj << /Type /Page -/Contents 1071 0 R -/Resources 1069 0 R +/Contents 1072 0 R +/Resources 1070 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1068 0 R +/Parent 1069 0 R >> -% 1072 0 obj +% 1073 0 obj << -/D [1070 0 R /XYZ 149.705 753.953 null] +/D [1071 0 R /XYZ 149.705 753.953 null] >> % 139 0 obj << -/D [1070 0 R /XYZ 150.705 716.092 null] +/D [1071 0 R /XYZ 150.705 716.092 null] >> % 143 0 obj << -/D [1070 0 R /XYZ 150.705 474.131 null] +/D [1071 0 R /XYZ 150.705 474.131 null] >> -% 1069 0 obj +% 1070 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1074 0 obj +% 1075 0 obj << /Type /Page -/Contents 1075 0 R -/Resources 1073 0 R +/Contents 1076 0 R +/Resources 1074 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1068 0 R +/Parent 1069 0 R >> -% 1076 0 obj +% 1077 0 obj << -/D [1074 0 R /XYZ 98.895 753.953 null] +/D [1075 0 R /XYZ 98.895 753.953 null] >> % 147 0 obj << -/D [1074 0 R /XYZ 99.895 716.092 null] +/D [1075 0 R /XYZ 99.895 716.092 null] >> % 151 0 obj << -/D [1074 0 R /XYZ 99.895 376.562 null] +/D [1075 0 R /XYZ 99.895 376.562 null] >> -% 1073 0 obj +% 1074 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1078 0 obj +% 1079 0 obj << /Type /Page -/Contents 1079 0 R -/Resources 1077 0 R +/Contents 1080 0 R +/Resources 1078 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1068 0 R +/Parent 1069 0 R >> -% 1080 0 obj +% 1081 0 obj << -/D [1078 0 R /XYZ 149.705 753.953 null] +/D [1079 0 R /XYZ 149.705 753.953 null] >> % 155 0 obj << -/D [1078 0 R /XYZ 150.705 716.092 null] +/D [1079 0 R /XYZ 150.705 716.092 null] >> % 159 0 obj << -/D [1078 0 R /XYZ 150.705 484.709 null] +/D [1079 0 R /XYZ 150.705 484.709 null] >> % 163 0 obj << -/D [1078 0 R /XYZ 150.705 251.325 null] +/D [1079 0 R /XYZ 150.705 251.325 null] >> -% 1077 0 obj +% 1078 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1082 0 obj +% 1083 0 obj << /Type /Page -/Contents 1083 0 R -/Resources 1081 0 R +/Contents 1084 0 R +/Resources 1082 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1068 0 R +/Parent 1069 0 R >> -% 1084 0 obj +% 1085 0 obj << -/D [1082 0 R /XYZ 98.895 753.953 null] +/D [1083 0 R /XYZ 98.895 753.953 null] >> % 167 0 obj << -/D [1082 0 R /XYZ 99.895 476.15 null] +/D [1083 0 R /XYZ 99.895 476.15 null] >> -% 1081 0 obj +% 1082 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1088 0 obj +% 1089 0 obj << /Type /Page -/Contents 1089 0 R -/Resources 1087 0 R +/Contents 1090 0 R +/Resources 1088 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1068 0 R -/Annots [ 1085 0 R 1086 0 R ] +/Parent 1069 0 R +/Annots [ 1086 0 R 1087 0 R ] >> -% 1085 0 obj +% 1086 0 obj << /Type /Annot /Subtype /Link @@ -10245,7 +10252,7 @@ stream /Rect [248.894 164.341 255.868 176.4] /A << /S /GoTo /D (section.6) >> >> -% 1086 0 obj +% 1087 0 obj << /Type /Annot /Subtype /Link @@ -10253,78 +10260,78 @@ stream /Rect [343.512 128.475 350.485 140.535] /A << /S /GoTo /D (listing.3) >> >> -% 1090 0 obj +% 1091 0 obj << -/D [1088 0 R /XYZ 149.705 753.953 null] +/D [1089 0 R /XYZ 149.705 753.953 null] >> % 171 0 obj << -/D [1088 0 R /XYZ 150.705 716.092 null] +/D [1089 0 R /XYZ 150.705 716.092 null] >> % 175 0 obj << -/D [1088 0 R /XYZ 150.705 586.94 null] +/D [1089 0 R /XYZ 150.705 586.94 null] >> % 179 0 obj << -/D [1088 0 R /XYZ 150.705 402.59 null] +/D [1089 0 R /XYZ 150.705 402.59 null] >> % 183 0 obj << -/D [1088 0 R /XYZ 150.705 234.114 null] +/D [1089 0 R /XYZ 150.705 234.114 null] >> -% 1091 0 obj +% 1092 0 obj << -/D [1088 0 R /XYZ 170.799 204.012 null] +/D [1089 0 R /XYZ 170.799 204.012 null] >> -% 1087 0 obj +% 1088 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1094 0 obj +% 1095 0 obj << /Type /Page -/Contents 1095 0 R -/Resources 1093 0 R +/Contents 1096 0 R +/Resources 1094 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1097 0 R +/Parent 1098 0 R >> -% 1096 0 obj +% 1097 0 obj << -/D [1094 0 R /XYZ 98.895 753.953 null] +/D [1095 0 R /XYZ 98.895 753.953 null] >> -% 1092 0 obj +% 1093 0 obj << -/D [1094 0 R /XYZ 99.895 446.997 null] +/D [1095 0 R /XYZ 99.895 446.997 null] >> % 187 0 obj << -/D [1094 0 R /XYZ 99.895 387.147 null] +/D [1095 0 R /XYZ 99.895 387.147 null] >> % 191 0 obj << -/D [1094 0 R /XYZ 99.895 370.604 null] +/D [1095 0 R /XYZ 99.895 370.604 null] >> % 195 0 obj << -/D [1094 0 R /XYZ 99.895 194.093 null] +/D [1095 0 R /XYZ 99.895 194.093 null] >> -% 1093 0 obj +% 1094 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R >> /ProcSet [ /PDF /Text ] >> -% 1101 0 obj +% 1102 0 obj << /Type /Page -/Contents 1102 0 R -/Resources 1100 0 R +/Contents 1103 0 R +/Resources 1101 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1097 0 R -/Annots [ 1098 0 R 1099 0 R ] +/Parent 1098 0 R +/Annots [ 1099 0 R 1100 0 R ] >> -% 1098 0 obj +% 1099 0 obj << /Type /Annot /Subtype /Link @@ -10332,7 +10339,7 @@ stream /Rect [428.968 383.557 435.942 395.616] /A << /S /GoTo /D (table.1) >> >> -% 1099 0 obj +% 1100 0 obj << /Type /Annot /Subtype /Link @@ -10340,71 +10347,71 @@ stream /Rect [428.968 240.08 435.942 252.139] /A << /S /GoTo /D (table.1) >> >> -% 1103 0 obj +% 1104 0 obj << -/D [1101 0 R /XYZ 149.705 753.953 null] +/D [1102 0 R /XYZ 149.705 753.953 null] >> % 199 0 obj << -/D [1101 0 R /XYZ 150.705 610.712 null] +/D [1102 0 R /XYZ 150.705 610.712 null] >> -% 1100 0 obj +% 1101 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1108 0 obj +% 1109 0 obj << /Type /Page -/Contents 1109 0 R -/Resources 1107 0 R +/Contents 1110 0 R +/Resources 1108 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1097 0 R -/Annots [ 1105 0 R ] +/Parent 1098 0 R +/Annots [ 1106 0 R ] >> -% 1105 0 obj +% 1106 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [127.814 152.385 134.788 164.445] +/Rect [127.346 152.385 134.32 164.445] /A << /S /GoTo /D (listing.4) >> >> -% 1110 0 obj +% 1111 0 obj << -/D [1108 0 R /XYZ 98.895 753.953 null] +/D [1109 0 R /XYZ 98.895 753.953 null] >> % 204 0 obj << -/D [1108 0 R /XYZ 99.895 716.092 null] +/D [1109 0 R /XYZ 99.895 716.092 null] >> % 208 0 obj << -/D [1108 0 R /XYZ 99.895 430.41 null] +/D [1109 0 R /XYZ 99.895 430.41 null] >> % 212 0 obj << -/D [1108 0 R /XYZ 99.895 226.203 null] +/D [1109 0 R /XYZ 99.895 226.203 null] >> -% 1111 0 obj +% 1112 0 obj << -/D [1108 0 R /XYZ 258.62 168.146 null] +/D [1109 0 R /XYZ 255.482 168.146 null] >> -% 1107 0 obj +% 1108 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1114 0 obj +% 1115 0 obj << /Type /Page -/Contents 1115 0 R -/Resources 1113 0 R +/Contents 1116 0 R +/Resources 1114 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1097 0 R -/Annots [ 1106 0 R ] +/Parent 1098 0 R +/Annots [ 1107 0 R ] >> -% 1106 0 obj +% 1107 0 obj << /Type /Annot /Subtype /Link @@ -10412,54 +10419,54 @@ stream /Rect [297.461 580.64 304.435 592.699] /A << /S /GoTo /D (section.6) >> >> -% 1116 0 obj +% 1117 0 obj << -/D [1114 0 R /XYZ 149.705 753.953 null] +/D [1115 0 R /XYZ 149.705 753.953 null] >> -% 1112 0 obj +% 1113 0 obj << -/D [1114 0 R /XYZ 150.705 665.282 null] +/D [1115 0 R /XYZ 150.705 665.282 null] >> % 216 0 obj << -/D [1114 0 R /XYZ 150.705 613.372 null] +/D [1115 0 R /XYZ 150.705 613.372 null] >> -% 1113 0 obj +% 1114 0 obj << -/Font << /F102 1021 0 R /F62 671 0 R /F59 669 0 R /F67 918 0 R >> +/Font << /F102 1022 0 R /F62 671 0 R /F59 669 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1118 0 obj +% 1119 0 obj << /Type /Page -/Contents 1119 0 R -/Resources 1117 0 R +/Contents 1120 0 R +/Resources 1118 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1097 0 R +/Parent 1098 0 R >> -% 1120 0 obj +% 1121 0 obj << -/D [1118 0 R /XYZ 98.895 753.953 null] +/D [1119 0 R /XYZ 98.895 753.953 null] >> % 220 0 obj << -/D [1118 0 R /XYZ 99.895 716.092 null] +/D [1119 0 R /XYZ 99.895 716.092 null] >> -% 1117 0 obj +% 1118 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1129 0 obj +% 1130 0 obj << /Type /Page -/Contents 1130 0 R -/Resources 1128 0 R +/Contents 1131 0 R +/Resources 1129 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1097 0 R -/Annots [ 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R ] +/Parent 1098 0 R +/Annots [ 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R ] >> -% 1121 0 obj +% 1122 0 obj << /Type /Annot /Subtype /Link @@ -10467,7 +10474,7 @@ stream /Rect [428.968 413.274 435.942 425.334] /A << /S /GoTo /D (table.1) >> >> -% 1122 0 obj +% 1123 0 obj << /Type /Annot /Subtype /Link @@ -10475,7 +10482,7 @@ stream /Rect [419.358 345.063 495.412 357.123] /A << /S /GoTo /D (vdata) >> >> -% 1123 0 obj +% 1124 0 obj << /Type /Annot /Subtype /Link @@ -10483,7 +10490,7 @@ stream /Rect [381.755 333.108 388.729 345.168] /A << /S /GoTo /D (table.1) >> >> -% 1124 0 obj +% 1125 0 obj << /Type /Annot /Subtype /Link @@ -10491,7 +10498,7 @@ stream /Rect [428.968 252.942 435.942 265.002] /A << /S /GoTo /D (table.1) >> >> -% 1125 0 obj +% 1126 0 obj << /Type /Annot /Subtype /Link @@ -10499,7 +10506,7 @@ stream /Rect [419.358 184.731 495.412 196.791] /A << /S /GoTo /D (vdata) >> >> -% 1126 0 obj +% 1127 0 obj << /Type /Annot /Subtype /Link @@ -10507,33 +10514,33 @@ stream /Rect [397.868 172.776 404.842 184.835] /A << /S /GoTo /D (table.1) >> >> -% 1131 0 obj +% 1132 0 obj << -/D [1129 0 R /XYZ 149.705 753.953 null] +/D [1130 0 R /XYZ 149.705 753.953 null] >> % 224 0 obj << -/D [1129 0 R /XYZ 150.705 716.092 null] +/D [1130 0 R /XYZ 150.705 716.092 null] >> -% 1104 0 obj +% 1105 0 obj << -/D [1129 0 R /XYZ 150.705 558.947 null] +/D [1130 0 R /XYZ 150.705 558.947 null] >> -% 1128 0 obj +% 1129 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1136 0 obj +% 1137 0 obj << /Type /Page -/Contents 1137 0 R -/Resources 1135 0 R +/Contents 1138 0 R +/Resources 1136 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1139 0 R -/Annots [ 1127 0 R 1133 0 R 1134 0 R ] +/Parent 1140 0 R +/Annots [ 1128 0 R 1134 0 R 1135 0 R ] >> -% 1127 0 obj +% 1128 0 obj << /Type /Annot /Subtype /Link @@ -10541,7 +10548,7 @@ stream /Rect [256.048 690.368 323.106 702.428] /A << /S /GoTo /D (descdata) >> >> -% 1133 0 obj +% 1134 0 obj << /Type /Annot /Subtype /Link @@ -10549,7 +10556,7 @@ stream /Rect [368.549 600.704 444.603 612.764] /A << /S /GoTo /D (vdata) >> >> -% 1134 0 obj +% 1135 0 obj << /Type /Annot /Subtype /Link @@ -10557,25 +10564,25 @@ stream /Rect [344.963 588.749 351.937 600.809] /A << /S /GoTo /D (table.1) >> >> -% 1138 0 obj +% 1139 0 obj << -/D [1136 0 R /XYZ 98.895 753.953 null] +/D [1137 0 R /XYZ 98.895 753.953 null] >> -% 1135 0 obj +% 1136 0 obj << /Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1146 0 obj +% 1147 0 obj << /Type /Page -/Contents 1147 0 R -/Resources 1145 0 R +/Contents 1148 0 R +/Resources 1146 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1139 0 R -/Annots [ 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R ] +/Parent 1140 0 R +/Annots [ 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R ] >> -% 1140 0 obj +% 1141 0 obj << /Type /Annot /Subtype /Link @@ -10583,7 +10590,7 @@ stream /Rect [419.358 355.7 495.412 367.76] /A << /S /GoTo /D (vdata) >> >> -% 1141 0 obj +% 1142 0 obj << /Type /Annot /Subtype /Link @@ -10591,7 +10598,7 @@ stream /Rect [381.755 343.745 388.729 355.804] /A << /S /GoTo /D (table.2) >> >> -% 1142 0 obj +% 1143 0 obj << /Type /Annot /Subtype /Link @@ -10599,7 +10606,7 @@ stream /Rect [419.358 264.018 495.412 276.078] /A << /S /GoTo /D (vdata) >> >> -% 1143 0 obj +% 1144 0 obj << /Type /Annot /Subtype /Link @@ -10607,7 +10614,7 @@ stream /Rect [381.88 252.063 388.854 264.123] /A << /S /GoTo /D (table.2) >> >> -% 1144 0 obj +% 1145 0 obj << /Type /Annot /Subtype /Link @@ -10615,33 +10622,33 @@ stream /Rect [306.858 172.336 373.916 184.396] /A << /S /GoTo /D (descdata) >> >> -% 1148 0 obj +% 1149 0 obj << -/D [1146 0 R /XYZ 149.705 753.953 null] +/D [1147 0 R /XYZ 149.705 753.953 null] >> % 228 0 obj << -/D [1146 0 R /XYZ 150.705 716.092 null] +/D [1147 0 R /XYZ 150.705 716.092 null] >> -% 1149 0 obj +% 1150 0 obj << -/D [1146 0 R /XYZ 150.705 499.951 null] +/D [1147 0 R /XYZ 150.705 499.951 null] >> -% 1145 0 obj +% 1146 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1152 0 obj +% 1153 0 obj << /Type /Page -/Contents 1153 0 R -/Resources 1151 0 R +/Contents 1154 0 R +/Resources 1152 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1139 0 R -/Annots [ 1150 0 R ] +/Parent 1140 0 R +/Annots [ 1151 0 R ] >> -% 1150 0 obj +% 1151 0 obj << /Type /Annot /Subtype /Link @@ -10649,18 +10656,14 @@ stream /Rect [378.159 602.697 385.133 614.756] /A << /S /GoTo /D (table.2) >> >> -% 1154 0 obj -<< -/D [1152 0 R /XYZ 98.895 753.953 null] ->> % 1155 0 obj << -/D [1152 0 R /XYZ 99.895 512.639 null] +/D [1153 0 R /XYZ 98.895 753.953 null] >> endstream endobj -1165 0 obj +1166 0 obj << /Length 8519 >> @@ -10869,7 +10872,7 @@ ET endstream endobj -1170 0 obj +1171 0 obj << /Length 582 >> @@ -10888,7 +10891,7 @@ ET endstream endobj -1177 0 obj +1178 0 obj << /Length 7777 >> @@ -11072,7 +11075,7 @@ ET endstream endobj -1182 0 obj +1183 0 obj << /Length 3043 >> @@ -11166,7 +11169,7 @@ ET endstream endobj -1191 0 obj +1192 0 obj << /Length 6432 >> @@ -11339,7 +11342,7 @@ ET endstream endobj -1199 0 obj +1200 0 obj << /Length 7404 >> @@ -11523,7 +11526,7 @@ ET endstream endobj -1204 0 obj +1205 0 obj << /Length 3046 >> @@ -11617,7 +11620,7 @@ ET endstream endobj -1212 0 obj +1213 0 obj << /Length 7502 >> @@ -11786,7 +11789,7 @@ ET endstream endobj -1217 0 obj +1218 0 obj << /Length 583 >> @@ -11805,7 +11808,7 @@ ET endstream endobj -1224 0 obj +1225 0 obj << /Length 6687 >> @@ -11996,7 +11999,7 @@ ET endstream endobj -1230 0 obj +1231 0 obj << /Length 4322 >> @@ -12079,7 +12082,7 @@ ET endstream endobj -1243 0 obj +1244 0 obj << /Length 6244 >> @@ -12252,7 +12255,7 @@ ET endstream endobj -1250 0 obj +1251 0 obj << /Length 5385 >> @@ -12406,7 +12409,7 @@ ET endstream endobj -1257 0 obj +1258 0 obj << /Length 5404 >> @@ -12560,7 +12563,7 @@ ET endstream endobj -1268 0 obj +1269 0 obj << /Length 7972 >> @@ -12783,39 +12786,43 @@ ET endstream endobj -1156 0 obj +1157 0 obj << /Type /ObjStm /N 100 -/First 986 -/Length 11591 ->> -stream -1151 0 1164 107 1157 291 1158 435 1159 581 1160 725 1161 870 1162 1017 1166 1161 232 1220 -1167 1278 1163 1336 1169 1469 1171 1587 1168 1645 1176 1726 1172 1883 1173 2027 1174 2173 1178 2320 -236 2379 1179 2437 1175 2496 1181 2629 1183 2747 1184 2805 1180 2862 1190 2956 1186 3113 1187 3257 -1188 3403 1192 3550 240 3609 1193 3667 1189 3726 1198 3859 1194 4016 1195 4160 1196 4303 1200 4450 -244 4508 1201 4565 1197 4622 1203 4755 1205 4873 1206 4932 1202 4990 1211 5084 1207 5241 1208 5385 -1209 5531 1213 5678 248 5736 1214 5793 1210 5851 1216 5984 1218 6102 1215 6161 1223 6242 1219 6399 -1220 6542 1221 6688 1225 6835 252 6893 1226 6950 1222 7007 1229 7127 1231 7245 1232 7304 1233 7363 -1234 7422 1235 7481 1236 7540 1237 7599 1228 7658 1242 7765 1238 7922 1239 8066 1240 8212 1244 8359 -256 8417 1245 8474 1241 8532 1249 8665 1246 8813 1247 8958 1251 9105 260 9164 1252 9222 1248 9280 -1256 9400 1253 9548 1254 9693 1258 9840 264 9898 1260 9955 1255 10012 1267 10147 1261 10313 1262 10460 -% 1151 0 obj +/First 984 +/Length 11502 +>> +stream +1156 0 1152 58 1165 165 1158 349 1159 493 1160 639 1161 783 1162 928 1163 1075 1167 1219 +232 1278 1168 1336 1164 1394 1170 1527 1172 1645 1169 1703 1177 1784 1173 1941 1174 2085 1175 2231 +1179 2378 236 2437 1180 2495 1176 2554 1182 2687 1184 2805 1185 2863 1181 2920 1191 3014 1187 3171 +1188 3315 1189 3461 1193 3608 240 3667 1194 3725 1190 3784 1199 3917 1195 4074 1196 4218 1197 4361 +1201 4508 244 4566 1202 4623 1198 4680 1204 4813 1206 4931 1207 4990 1203 5048 1212 5142 1208 5299 +1209 5443 1210 5589 1214 5736 248 5794 1215 5851 1211 5909 1217 6042 1219 6160 1216 6219 1224 6300 +1220 6457 1221 6600 1222 6746 1226 6893 252 6951 1227 7008 1223 7065 1230 7185 1232 7303 1233 7362 +1234 7421 1235 7480 1236 7539 1237 7598 1238 7657 1229 7716 1243 7823 1239 7980 1240 8124 1241 8270 +1245 8417 256 8475 1246 8532 1242 8590 1250 8723 1247 8871 1248 9016 1252 9163 260 9222 1253 9280 +1249 9338 1257 9458 1254 9606 1255 9751 1259 9898 264 9956 1261 10013 1256 10070 1268 10205 1262 10371 +% 1156 0 obj +<< +/D [1153 0 R /XYZ 99.895 512.639 null] +>> +% 1152 0 obj << /Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1164 0 obj +% 1165 0 obj << /Type /Page -/Contents 1165 0 R -/Resources 1163 0 R +/Contents 1166 0 R +/Resources 1164 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1139 0 R -/Annots [ 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R ] +/Parent 1140 0 R +/Annots [ 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R ] >> -% 1157 0 obj +% 1158 0 obj << /Type /Annot /Subtype /Link @@ -12823,7 +12830,7 @@ stream /Rect [419.358 384.684 495.412 396.744] /A << /S /GoTo /D (vdata) >> >> -% 1158 0 obj +% 1159 0 obj << /Type /Annot /Subtype /Link @@ -12831,7 +12838,7 @@ stream /Rect [381.755 372.729 388.729 384.789] /A << /S /GoTo /D (table.3) >> >> -% 1159 0 obj +% 1160 0 obj << /Type /Annot /Subtype /Link @@ -12839,7 +12846,7 @@ stream /Rect [419.358 293.733 495.412 305.793] /A << /S /GoTo /D (vdata) >> >> -% 1160 0 obj +% 1161 0 obj << /Type /Annot /Subtype /Link @@ -12847,7 +12854,7 @@ stream /Rect [381.88 281.778 388.854 293.837] /A << /S /GoTo /D (table.3) >> >> -% 1161 0 obj +% 1162 0 obj << /Type /Annot /Subtype /Link @@ -12855,7 +12862,7 @@ stream /Rect [306.858 202.781 373.916 214.841] /A << /S /GoTo /D (descdata) >> >> -% 1162 0 obj +% 1163 0 obj << /Type /Annot /Subtype /Link @@ -12863,50 +12870,50 @@ stream /Rect [200.458 119.17 207.432 128.58] /A << /S /GoTo /D (table.2) >> >> -% 1166 0 obj +% 1167 0 obj << -/D [1164 0 R /XYZ 149.705 753.953 null] +/D [1165 0 R /XYZ 149.705 753.953 null] >> % 232 0 obj << -/D [1164 0 R /XYZ 150.705 716.092 null] +/D [1165 0 R /XYZ 150.705 716.092 null] >> -% 1167 0 obj +% 1168 0 obj << -/D [1164 0 R /XYZ 150.705 524.97 null] +/D [1165 0 R /XYZ 150.705 524.97 null] >> -% 1163 0 obj +% 1164 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1169 0 obj +% 1170 0 obj << /Type /Page -/Contents 1170 0 R -/Resources 1168 0 R +/Contents 1171 0 R +/Resources 1169 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1139 0 R +/Parent 1140 0 R >> -% 1171 0 obj +% 1172 0 obj << -/D [1169 0 R /XYZ 98.895 753.953 null] +/D [1170 0 R /XYZ 98.895 753.953 null] >> -% 1168 0 obj +% 1169 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1176 0 obj +% 1177 0 obj << /Type /Page -/Contents 1177 0 R -/Resources 1175 0 R +/Contents 1178 0 R +/Resources 1176 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1139 0 R -/Annots [ 1172 0 R 1173 0 R 1174 0 R ] +/Parent 1140 0 R +/Annots [ 1173 0 R 1174 0 R 1175 0 R ] >> -% 1172 0 obj +% 1173 0 obj << /Type /Annot /Subtype /Link @@ -12914,7 +12921,7 @@ stream /Rect [419.358 358.503 495.412 370.562] /A << /S /GoTo /D (vdata) >> >> -% 1173 0 obj +% 1174 0 obj << /Type /Annot /Subtype /Link @@ -12922,7 +12929,7 @@ stream /Rect [377.462 346.547 384.436 358.607] /A << /S /GoTo /D (table.4) >> >> -% 1174 0 obj +% 1175 0 obj << /Type /Annot /Subtype /Link @@ -12930,54 +12937,54 @@ stream /Rect [306.858 280.074 373.916 292.134] /A << /S /GoTo /D (descdata) >> >> -% 1178 0 obj +% 1179 0 obj << -/D [1176 0 R /XYZ 149.705 753.953 null] +/D [1177 0 R /XYZ 149.705 753.953 null] >> % 236 0 obj << -/D [1176 0 R /XYZ 150.705 716.092 null] +/D [1177 0 R /XYZ 150.705 716.092 null] >> -% 1179 0 obj +% 1180 0 obj << -/D [1176 0 R /XYZ 150.705 495.665 null] +/D [1177 0 R /XYZ 150.705 495.665 null] >> -% 1175 0 obj +% 1176 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1181 0 obj +% 1182 0 obj << /Type /Page -/Contents 1182 0 R -/Resources 1180 0 R +/Contents 1183 0 R +/Resources 1181 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1185 0 R +/Parent 1186 0 R >> -% 1183 0 obj +% 1184 0 obj << -/D [1181 0 R /XYZ 98.895 753.953 null] +/D [1182 0 R /XYZ 98.895 753.953 null] >> -% 1184 0 obj +% 1185 0 obj << -/D [1181 0 R /XYZ 99.895 632.19 null] +/D [1182 0 R /XYZ 99.895 632.19 null] >> -% 1180 0 obj +% 1181 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1190 0 obj +% 1191 0 obj << /Type /Page -/Contents 1191 0 R -/Resources 1189 0 R +/Contents 1192 0 R +/Resources 1190 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1185 0 R -/Annots [ 1186 0 R 1187 0 R 1188 0 R ] +/Parent 1186 0 R +/Annots [ 1187 0 R 1188 0 R 1189 0 R ] >> -% 1186 0 obj +% 1187 0 obj << /Type /Annot /Subtype /Link @@ -12985,7 +12992,7 @@ stream /Rect [419.358 411.694 495.412 423.754] /A << /S /GoTo /D (vdata) >> >> -% 1187 0 obj +% 1188 0 obj << /Type /Annot /Subtype /Link @@ -12993,7 +13000,7 @@ stream /Rect [377.462 399.739 384.436 411.798] /A << /S /GoTo /D (table.5) >> >> -% 1188 0 obj +% 1189 0 obj << /Type /Annot /Subtype /Link @@ -13001,33 +13008,33 @@ stream /Rect [306.858 331.993 373.916 344.052] /A << /S /GoTo /D (descdata) >> >> -% 1192 0 obj +% 1193 0 obj << -/D [1190 0 R /XYZ 149.705 753.953 null] +/D [1191 0 R /XYZ 149.705 753.953 null] >> % 240 0 obj << -/D [1190 0 R /XYZ 150.705 716.092 null] +/D [1191 0 R /XYZ 150.705 716.092 null] >> -% 1193 0 obj +% 1194 0 obj << -/D [1190 0 R /XYZ 150.705 555.856 null] +/D [1191 0 R /XYZ 150.705 555.856 null] >> -% 1189 0 obj +% 1190 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1198 0 obj +% 1199 0 obj << /Type /Page -/Contents 1199 0 R -/Resources 1197 0 R +/Contents 1200 0 R +/Resources 1198 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1185 0 R -/Annots [ 1194 0 R 1195 0 R 1196 0 R ] +/Parent 1186 0 R +/Annots [ 1195 0 R 1196 0 R 1197 0 R ] >> -% 1194 0 obj +% 1195 0 obj << /Type /Annot /Subtype /Link @@ -13035,7 +13042,7 @@ stream /Rect [368.549 362.555 444.603 374.615] /A << /S /GoTo /D (vdata) >> >> -% 1195 0 obj +% 1196 0 obj << /Type /Annot /Subtype /Link @@ -13043,7 +13050,7 @@ stream /Rect [326.652 350.6 333.626 362.66] /A << /S /GoTo /D (table.6) >> >> -% 1196 0 obj +% 1197 0 obj << /Type /Annot /Subtype /Link @@ -13051,54 +13058,54 @@ stream /Rect [256.048 283.114 323.106 295.173] /A << /S /GoTo /D (descdata) >> >> -% 1200 0 obj +% 1201 0 obj << -/D [1198 0 R /XYZ 98.895 753.953 null] +/D [1199 0 R /XYZ 98.895 753.953 null] >> % 244 0 obj << -/D [1198 0 R /XYZ 99.895 716.092 null] +/D [1199 0 R /XYZ 99.895 716.092 null] >> -% 1201 0 obj +% 1202 0 obj << -/D [1198 0 R /XYZ 99.895 505.29 null] +/D [1199 0 R /XYZ 99.895 505.29 null] >> -% 1197 0 obj +% 1198 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1203 0 obj +% 1204 0 obj << /Type /Page -/Contents 1204 0 R -/Resources 1202 0 R +/Contents 1205 0 R +/Resources 1203 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1185 0 R +/Parent 1186 0 R >> -% 1205 0 obj +% 1206 0 obj << -/D [1203 0 R /XYZ 149.705 753.953 null] +/D [1204 0 R /XYZ 149.705 753.953 null] >> -% 1206 0 obj +% 1207 0 obj << -/D [1203 0 R /XYZ 150.705 632.19 null] +/D [1204 0 R /XYZ 150.705 632.19 null] >> -% 1202 0 obj +% 1203 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1211 0 obj +% 1212 0 obj << /Type /Page -/Contents 1212 0 R -/Resources 1210 0 R +/Contents 1213 0 R +/Resources 1211 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1185 0 R -/Annots [ 1207 0 R 1208 0 R 1209 0 R ] +/Parent 1186 0 R +/Annots [ 1208 0 R 1209 0 R 1210 0 R ] >> -% 1207 0 obj +% 1208 0 obj << /Type /Annot /Subtype /Link @@ -13106,7 +13113,7 @@ stream /Rect [368.549 291.495 444.603 303.554] /A << /S /GoTo /D (vdata) >> >> -% 1208 0 obj +% 1209 0 obj << /Type /Annot /Subtype /Link @@ -13114,7 +13121,7 @@ stream /Rect [326.652 279.539 333.626 291.599] /A << /S /GoTo /D (table.7) >> >> -% 1209 0 obj +% 1210 0 obj << /Type /Annot /Subtype /Link @@ -13122,50 +13129,50 @@ stream /Rect [256.048 209.259 323.106 221.319] /A << /S /GoTo /D (descdata) >> >> -% 1213 0 obj +% 1214 0 obj << -/D [1211 0 R /XYZ 98.895 753.953 null] +/D [1212 0 R /XYZ 98.895 753.953 null] >> % 248 0 obj << -/D [1211 0 R /XYZ 99.895 716.092 null] +/D [1212 0 R /XYZ 99.895 716.092 null] >> -% 1214 0 obj +% 1215 0 obj << -/D [1211 0 R /XYZ 99.895 443.893 null] +/D [1212 0 R /XYZ 99.895 443.893 null] >> -% 1210 0 obj +% 1211 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1216 0 obj +% 1217 0 obj << /Type /Page -/Contents 1217 0 R -/Resources 1215 0 R +/Contents 1218 0 R +/Resources 1216 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1185 0 R +/Parent 1186 0 R >> -% 1218 0 obj +% 1219 0 obj << -/D [1216 0 R /XYZ 149.705 753.953 null] +/D [1217 0 R /XYZ 149.705 753.953 null] >> -% 1215 0 obj +% 1216 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1223 0 obj +% 1224 0 obj << /Type /Page -/Contents 1224 0 R -/Resources 1222 0 R +/Contents 1225 0 R +/Resources 1223 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1227 0 R -/Annots [ 1219 0 R 1220 0 R 1221 0 R ] +/Parent 1228 0 R +/Annots [ 1220 0 R 1221 0 R 1222 0 R ] >> -% 1219 0 obj +% 1220 0 obj << /Type /Annot /Subtype /Link @@ -13173,7 +13180,7 @@ stream /Rect [368.549 314.69 444.603 326.749] /A << /S /GoTo /D (vdata) >> >> -% 1220 0 obj +% 1221 0 obj << /Type /Annot /Subtype /Link @@ -13181,7 +13188,7 @@ stream /Rect [326.652 302.734 333.626 314.794] /A << /S /GoTo /D (table.8) >> >> -% 1221 0 obj +% 1222 0 obj << /Type /Annot /Subtype /Link @@ -13189,74 +13196,74 @@ stream /Rect [256.048 232.693 323.106 244.753] /A << /S /GoTo /D (descdata) >> >> -% 1225 0 obj +% 1226 0 obj << -/D [1223 0 R /XYZ 98.895 753.953 null] +/D [1224 0 R /XYZ 98.895 753.953 null] >> % 252 0 obj << -/D [1223 0 R /XYZ 99.895 716.092 null] +/D [1224 0 R /XYZ 99.895 716.092 null] >> -% 1226 0 obj +% 1227 0 obj << -/D [1223 0 R /XYZ 99.895 504.73 null] +/D [1224 0 R /XYZ 99.895 504.73 null] >> -% 1222 0 obj +% 1223 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1229 0 obj +% 1230 0 obj << /Type /Page -/Contents 1230 0 R -/Resources 1228 0 R +/Contents 1231 0 R +/Resources 1229 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1227 0 R ->> -% 1231 0 obj -<< -/D [1229 0 R /XYZ 149.705 753.953 null] +/Parent 1228 0 R >> % 1232 0 obj << -/D [1229 0 R /XYZ 150.705 564.444 null] +/D [1230 0 R /XYZ 149.705 753.953 null] >> % 1233 0 obj << -/D [1229 0 R /XYZ 150.705 504.067 null] +/D [1230 0 R /XYZ 150.705 564.444 null] >> % 1234 0 obj << -/D [1229 0 R /XYZ 175.611 506.876 null] +/D [1230 0 R /XYZ 150.705 504.067 null] >> % 1235 0 obj << -/D [1229 0 R /XYZ 175.611 494.921 null] +/D [1230 0 R /XYZ 175.611 506.876 null] >> % 1236 0 obj << -/D [1229 0 R /XYZ 175.611 482.966 null] +/D [1230 0 R /XYZ 175.611 494.921 null] >> % 1237 0 obj << -/D [1229 0 R /XYZ 175.611 471.011 null] +/D [1230 0 R /XYZ 175.611 482.966 null] >> -% 1228 0 obj +% 1238 0 obj +<< +/D [1230 0 R /XYZ 175.611 471.011 null] +>> +% 1229 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1242 0 obj +% 1243 0 obj << /Type /Page -/Contents 1243 0 R -/Resources 1241 0 R +/Contents 1244 0 R +/Resources 1242 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1227 0 R -/Annots [ 1238 0 R 1239 0 R 1240 0 R ] +/Parent 1228 0 R +/Annots [ 1239 0 R 1240 0 R 1241 0 R ] >> -% 1238 0 obj +% 1239 0 obj << /Type /Annot /Subtype /Link @@ -13264,7 +13271,7 @@ stream /Rect [368.549 416.057 444.603 428.117] /A << /S /GoTo /D (vdata) >> >> -% 1239 0 obj +% 1240 0 obj << /Type /Annot /Subtype /Link @@ -13272,7 +13279,7 @@ stream /Rect [326.652 404.102 333.626 416.161] /A << /S /GoTo /D (table.9) >> >> -% 1240 0 obj +% 1241 0 obj << /Type /Annot /Subtype /Link @@ -13280,33 +13287,33 @@ stream /Rect [256.048 336.356 323.106 348.415] /A << /S /GoTo /D (descdata) >> >> -% 1244 0 obj +% 1245 0 obj << -/D [1242 0 R /XYZ 98.895 753.953 null] +/D [1243 0 R /XYZ 98.895 753.953 null] >> % 256 0 obj << -/D [1242 0 R /XYZ 99.895 716.092 null] +/D [1243 0 R /XYZ 99.895 716.092 null] >> -% 1245 0 obj +% 1246 0 obj << -/D [1242 0 R /XYZ 99.895 560.219 null] +/D [1243 0 R /XYZ 99.895 560.219 null] >> -% 1241 0 obj +% 1242 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1249 0 obj +% 1250 0 obj << /Type /Page -/Contents 1250 0 R -/Resources 1248 0 R +/Contents 1251 0 R +/Resources 1249 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1227 0 R -/Annots [ 1246 0 R 1247 0 R ] +/Parent 1228 0 R +/Annots [ 1247 0 R 1248 0 R ] >> -% 1246 0 obj +% 1247 0 obj << /Type /Annot /Subtype /Link @@ -13314,7 +13321,7 @@ stream /Rect [306.858 340.341 384.376 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1247 0 obj +% 1248 0 obj << /Type /Annot /Subtype /Link @@ -13322,33 +13329,33 @@ stream /Rect [306.858 272.595 373.916 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1251 0 obj +% 1252 0 obj << -/D [1249 0 R /XYZ 149.705 753.953 null] +/D [1250 0 R /XYZ 149.705 753.953 null] >> % 260 0 obj << -/D [1249 0 R /XYZ 150.705 716.092 null] +/D [1250 0 R /XYZ 150.705 716.092 null] >> -% 1252 0 obj +% 1253 0 obj << -/D [1249 0 R /XYZ 150.705 517.78 null] +/D [1250 0 R /XYZ 150.705 517.78 null] >> -% 1248 0 obj +% 1249 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1256 0 obj +% 1257 0 obj << /Type /Page -/Contents 1257 0 R -/Resources 1255 0 R +/Contents 1258 0 R +/Resources 1256 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1227 0 R -/Annots [ 1253 0 R 1254 0 R ] +/Parent 1228 0 R +/Annots [ 1254 0 R 1255 0 R ] >> -% 1253 0 obj +% 1254 0 obj << /Type /Annot /Subtype /Link @@ -13356,7 +13363,7 @@ stream /Rect [256.048 340.341 333.567 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1254 0 obj +% 1255 0 obj << /Type /Annot /Subtype /Link @@ -13364,33 +13371,33 @@ stream /Rect [256.048 272.595 323.106 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1258 0 obj +% 1259 0 obj << -/D [1256 0 R /XYZ 98.895 753.953 null] +/D [1257 0 R /XYZ 98.895 753.953 null] >> % 264 0 obj << -/D [1256 0 R /XYZ 99.895 716.092 null] +/D [1257 0 R /XYZ 99.895 716.092 null] >> -% 1260 0 obj +% 1261 0 obj << -/D [1256 0 R /XYZ 99.895 517.78 null] +/D [1257 0 R /XYZ 99.895 517.78 null] >> -% 1255 0 obj +% 1256 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F104 1259 0 R /F67 918 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F104 1260 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1267 0 obj +% 1268 0 obj << /Type /Page -/Contents 1268 0 R -/Resources 1266 0 R +/Contents 1269 0 R +/Resources 1267 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1227 0 R -/Annots [ 1261 0 R 1262 0 R 1263 0 R 1264 0 R ] +/Parent 1228 0 R +/Annots [ 1262 0 R 1263 0 R 1264 0 R 1265 0 R ] >> -% 1261 0 obj +% 1262 0 obj << /Type /Annot /Subtype /Link @@ -13398,18 +13405,10 @@ stream /Rect [428.968 277.323 440.924 289.383] /A << /S /GoTo /D (table.12) >> >> -% 1262 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [306.858 208.877 384.376 220.936] -/A << /S /GoTo /D (spdata) >> ->> endstream endobj -1284 0 obj +1285 0 obj << /Length 6532 >> @@ -13539,7 +13538,7 @@ ET endstream endobj -1291 0 obj +1292 0 obj << /Length 8092 >> @@ -13711,7 +13710,7 @@ ET endstream endobj -1302 0 obj +1303 0 obj << /Length 7295 >> @@ -13869,7 +13868,7 @@ ET endstream endobj -1308 0 obj +1309 0 obj << /Length 4541 >> @@ -13928,7 +13927,7 @@ ET endstream endobj -1319 0 obj +1320 0 obj << /Length 7550 >> @@ -14157,7 +14156,7 @@ ET endstream endobj -1324 0 obj +1325 0 obj << /Length 314 >> @@ -14173,7 +14172,7 @@ ET endstream endobj -1335 0 obj +1336 0 obj << /Length 7518 >> @@ -14380,7 +14379,7 @@ ET endstream endobj -1341 0 obj +1342 0 obj << /Length 1288 >> @@ -14429,7 +14428,7 @@ ET endstream endobj -1350 0 obj +1351 0 obj << /Length 7434 >> @@ -14636,7 +14635,7 @@ ET endstream endobj -1356 0 obj +1357 0 obj << /Length 623 >> @@ -14656,7 +14655,7 @@ ET endstream endobj -1364 0 obj +1365 0 obj << /Length 6634 >> @@ -14851,7 +14850,7 @@ ET endstream endobj -1371 0 obj +1372 0 obj << /Length 3039 >> @@ -14904,20 +14903,20 @@ ET endstream endobj -1367 0 obj +1368 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1374 0 R +/PTEX.InfoDict 1375 0 R /BBox [0 0 498 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1375 0 R ->>/Font << /R8 1376 0 R/R10 1377 0 R>> +/R7 1376 0 R +>>/Font << /R8 1377 0 R/R10 1378 0 R>> >> /Length 3349 /Filter /FlateDecode @@ -14929,33 +14928,41 @@ U1 †¸úµ6ÔÉ–O¹¬ÌWbàzSE 0¬àË®—Ψxܳ>P…Uƒ|úˆò¬Öhˆ³>ÜÝâð^ðyÿÔŽX<‰ï’<ÂÇfÔ1â@aÐMŠC5Ú¢"mZ½!qVÖÆ¢4"{^›ëéŠÏúÜÐZÌÈ&ŒÐÅLh=ébnh#ü©n¶BUÌ„&×]Õ ÝÅFS5Cg_QUÍðӂȯZ£!ö²{U5'"ýÈCS5 žßÛæzÖæI¿®+®÷ó'MÕ <Ïû«Ö†:%>A©ªfè\dðy׎X<™§úºv¬¸Þ¡4U3ð<ï¯ZêD ùp¥ªš¡â³þ®±xOðuíXÉ×9/<ŠRUÍÀ‰¿|p+q¥ªš¡³¨Áçý];bñ$>žÖëÚ±âz?ŽÒTÍÀó¼¿jm¨“~/žú[™¯Ä<¸ë‘Ïú»vÄâÉ|Cú€‹‘¯s^x(¥ªšá]ú€[!ÎúðS)MÕ ÞPÌïms=k_’} ×ONËÌê˜Gd×X¥YgSjT3âÔr°-J#²{Ë®ç_ŤŒ¹¡µ˜‘M¡‹™ÐzÒÅÜÐFøSÝl…ª˜ M®÷Ó[ÎÏŸŸåùËãý¤†¿õ8šÇ÷‰<ÿÓ”ÿüúøýQ=Æ×oÏ?~}üøåzÖöüúχÿeK}ŽãýÜò±ž_{üôCýô¹Ï£üÐ>}¥”:~ü<ðóÄωŸ×§Ÿ¿þåíÝíýŸšÇóë/Îñé뿟ߟvñvÿ®Ý¾k×ïÚeoë»öõ]{Þí·¯??·~¢ûCÞŸ#²ÚaYïá÷…–aXŽí)Ãüã—÷'W¯û³êíãýŸ¼žkà®3Ô{οþõÝ*ŸþðøÓ×Çßßÿþ{Ü endstream endobj -1274 0 obj +1275 0 obj << /Type /ObjStm /N 100 /First 997 -/Length 13198 ->> -stream -1263 0 1264 142 1269 288 268 347 1270 405 1271 463 1272 522 1273 581 1266 640 1283 787 -1265 989 1275 1136 1276 1280 1277 1426 1278 1573 1279 1724 1280 1875 1281 2026 1285 2172 1282 2230 -1290 2364 1287 2503 1292 2648 272 2707 1293 2765 1289 2824 1301 2971 1288 3164 1294 3312 1295 3456 -1296 3603 1297 3750 1298 3893 1299 4040 1303 4185 1300 4243 1307 4377 1304 4525 1305 4672 1309 4819 -1306 4878 1318 4998 1310 5191 1311 5335 1312 5480 1313 5624 1314 5769 1315 5916 1316 6060 1320 6207 -276 6265 1321 6322 1317 6380 1323 6513 1325 6631 1322 6690 1334 6771 1326 6946 1327 7090 1328 7235 -1329 7379 1330 7524 1336 7671 280 7729 1337 7786 1333 7844 1340 7977 1331 8125 1332 8269 1342 8416 -1339 8475 1349 8569 1343 8744 1344 8886 1345 9031 1346 9178 1347 9322 1351 9469 284 9527 1352 9584 -1348 9642 1355 9775 1353 9914 1357 10062 288 10121 1354 10179 1363 10260 1358 10417 1359 10561 1360 10708 -1365 10855 292 10913 1366 10970 1362 11028 1370 11162 1374 11310 1375 11437 1376 11480 1377 11687 1378 11925 +/Length 13067 +>> +stream +1263 0 1264 145 1265 287 1270 433 268 492 1271 550 1272 608 1273 667 1274 726 1267 785 +1284 932 1266 1134 1276 1281 1277 1425 1278 1571 1279 1718 1280 1869 1281 2020 1282 2171 1286 2317 +1283 2375 1291 2509 1288 2648 1293 2793 272 2852 1294 2910 1290 2969 1302 3116 1289 3309 1295 3457 +1296 3601 1297 3748 1298 3895 1299 4038 1300 4185 1304 4330 1301 4388 1308 4522 1305 4670 1306 4817 +1310 4964 1307 5023 1319 5143 1311 5336 1312 5480 1313 5625 1314 5769 1315 5914 1316 6061 1317 6205 +1321 6352 276 6410 1322 6467 1318 6525 1324 6658 1326 6776 1323 6835 1335 6916 1327 7091 1328 7235 +1329 7380 1330 7524 1331 7669 1337 7816 280 7874 1338 7931 1334 7989 1341 8122 1332 8270 1333 8414 +1343 8561 1340 8620 1350 8714 1344 8889 1345 9031 1346 9176 1347 9323 1348 9467 1352 9614 284 9672 +1353 9729 1349 9787 1356 9920 1354 10059 1358 10207 288 10266 1355 10324 1364 10405 1359 10562 1360 10706 +1361 10853 1366 11000 292 11058 1367 11115 1363 11173 1371 11307 1375 11455 1376 11582 1377 11625 1378 11832 % 1263 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.858 208.877 384.376 220.936] +/A << /S /GoTo /D (spdata) >> +>> +% 1264 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 140.43 495.412 152.49] /A << /S /GoTo /D (vdata) >> >> -% 1264 0 obj +% 1265 0 obj << /Type /Annot /Subtype /Link @@ -14963,45 +14970,45 @@ stream /Rect [379.43 128.475 391.385 140.535] /A << /S /GoTo /D (table.12) >> >> -% 1269 0 obj +% 1270 0 obj << -/D [1267 0 R /XYZ 149.705 753.953 null] +/D [1268 0 R /XYZ 149.705 753.953 null] >> % 268 0 obj << -/D [1267 0 R /XYZ 150.705 716.092 null] ->> -% 1270 0 obj -<< -/D [1267 0 R /XYZ 290.728 674.17 null] +/D [1268 0 R /XYZ 150.705 716.092 null] >> % 1271 0 obj << -/D [1267 0 R /XYZ 287.931 654.041 null] +/D [1268 0 R /XYZ 290.728 674.17 null] >> % 1272 0 obj << -/D [1267 0 R /XYZ 287.193 633.911 null] +/D [1268 0 R /XYZ 287.931 654.041 null] >> % 1273 0 obj << -/D [1267 0 R /XYZ 150.705 447.252 null] +/D [1268 0 R /XYZ 287.193 633.911 null] >> -% 1266 0 obj +% 1274 0 obj +<< +/D [1268 0 R /XYZ 150.705 447.252 null] +>> +% 1267 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1283 0 obj +% 1284 0 obj << /Type /Page -/Contents 1284 0 R -/Resources 1282 0 R +/Contents 1285 0 R +/Resources 1283 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1286 0 R -/Annots [ 1265 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R ] +/Parent 1287 0 R +/Annots [ 1266 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R ] >> -% 1265 0 obj +% 1266 0 obj << /Type /Annot /Subtype /Link @@ -15009,7 +15016,7 @@ stream /Rect [378.159 654.503 390.114 666.562] /A << /S /GoTo /D (table.12) >> >> -% 1275 0 obj +% 1276 0 obj << /Type /Annot /Subtype /Link @@ -15017,7 +15024,7 @@ stream /Rect [368.549 588.085 444.603 600.145] /A << /S /GoTo /D (vdata) >> >> -% 1276 0 obj +% 1277 0 obj << /Type /Annot /Subtype /Link @@ -15025,7 +15032,7 @@ stream /Rect [328.746 576.13 340.701 588.189] /A << /S /GoTo /D (table.12) >> >> -% 1277 0 obj +% 1278 0 obj << /Type /Annot /Subtype /Link @@ -15033,7 +15040,7 @@ stream /Rect [256.048 497.757 323.106 509.817] /A << /S /GoTo /D (descdata) >> >> -% 1278 0 obj +% 1279 0 obj << /Type /Annot /Subtype /Link @@ -15041,7 +15048,7 @@ stream /Rect [338.139 460.563 345.113 472.623] /A << /S /GoTo /D (equation.4.1) >> >> -% 1279 0 obj +% 1280 0 obj << /Type /Annot /Subtype /Link @@ -15049,7 +15056,7 @@ stream /Rect [336.486 445.951 343.459 458.011] /A << /S /GoTo /D (equation.4.2) >> >> -% 1280 0 obj +% 1281 0 obj << /Type /Annot /Subtype /Link @@ -15057,7 +15064,7 @@ stream /Rect [337.034 431.339 344.007 443.399] /A << /S /GoTo /D (equation.4.3) >> >> -% 1281 0 obj +% 1282 0 obj << /Type /Annot /Subtype /Link @@ -15065,25 +15072,25 @@ stream /Rect [202.52 189.579 214.475 201.639] /A << /S /GoTo /D (table.12) >> >> -% 1285 0 obj +% 1286 0 obj << -/D [1283 0 R /XYZ 98.895 753.953 null] +/D [1284 0 R /XYZ 98.895 753.953 null] >> -% 1282 0 obj +% 1283 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F68 1132 0 R /F60 670 0 R /F67 918 0 R /F93 920 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F68 1133 0 R /F60 670 0 R /F67 918 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1290 0 obj +% 1291 0 obj << /Type /Page -/Contents 1291 0 R -/Resources 1289 0 R +/Contents 1292 0 R +/Resources 1290 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1286 0 R -/Annots [ 1287 0 R ] +/Parent 1287 0 R +/Annots [ 1288 0 R ] >> -% 1287 0 obj +% 1288 0 obj << /Type /Annot /Subtype /Link @@ -15091,33 +15098,33 @@ stream /Rect [428.968 116.52 440.924 128.58] /A << /S /GoTo /D (table.13) >> >> -% 1292 0 obj +% 1293 0 obj << -/D [1290 0 R /XYZ 149.705 753.953 null] +/D [1291 0 R /XYZ 149.705 753.953 null] >> % 272 0 obj << -/D [1290 0 R /XYZ 150.705 716.092 null] +/D [1291 0 R /XYZ 150.705 716.092 null] >> -% 1293 0 obj +% 1294 0 obj << -/D [1290 0 R /XYZ 150.705 268.704 null] +/D [1291 0 R /XYZ 150.705 268.704 null] >> -% 1289 0 obj +% 1290 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1301 0 obj +% 1302 0 obj << /Type /Page -/Contents 1302 0 R -/Resources 1300 0 R +/Contents 1303 0 R +/Resources 1301 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1286 0 R -/Annots [ 1288 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R ] +/Parent 1287 0 R +/Annots [ 1289 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R ] >> -% 1288 0 obj +% 1289 0 obj << /Type /Annot /Subtype /Link @@ -15125,7 +15132,7 @@ stream /Rect [305.144 654.503 312.117 666.562] /A << /S /GoTo /D (section.3) >> >> -% 1294 0 obj +% 1295 0 obj << /Type /Annot /Subtype /Link @@ -15133,7 +15140,7 @@ stream /Rect [368.549 586.032 444.603 598.092] /A << /S /GoTo /D (vdata) >> >> -% 1295 0 obj +% 1296 0 obj << /Type /Annot /Subtype /Link @@ -15141,7 +15148,7 @@ stream /Rect [328.621 574.077 340.576 586.136] /A << /S /GoTo /D (table.13) >> >> -% 1296 0 obj +% 1297 0 obj << /Type /Annot /Subtype /Link @@ -15149,7 +15156,7 @@ stream /Rect [378.159 493.651 390.114 505.711] /A << /S /GoTo /D (table.13) >> >> -% 1297 0 obj +% 1298 0 obj << /Type /Annot /Subtype /Link @@ -15157,7 +15164,7 @@ stream /Rect [368.549 425.181 444.603 437.24] /A << /S /GoTo /D (vdata) >> >> -% 1298 0 obj +% 1299 0 obj << /Type /Annot /Subtype /Link @@ -15165,7 +15172,7 @@ stream /Rect [328.746 413.225 340.701 425.285] /A << /S /GoTo /D (table.13) >> >> -% 1299 0 obj +% 1300 0 obj << /Type /Annot /Subtype /Link @@ -15173,25 +15180,25 @@ stream /Rect [256.048 332.8 323.106 344.859] /A << /S /GoTo /D (descdata) >> >> -% 1303 0 obj +% 1304 0 obj << -/D [1301 0 R /XYZ 98.895 753.953 null] +/D [1302 0 R /XYZ 98.895 753.953 null] >> -% 1300 0 obj +% 1301 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R /F68 1132 0 R /F93 920 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R /F68 1133 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1307 0 obj +% 1308 0 obj << /Type /Page -/Contents 1308 0 R -/Resources 1306 0 R +/Contents 1309 0 R +/Resources 1307 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1286 0 R -/Annots [ 1304 0 R 1305 0 R ] +/Parent 1287 0 R +/Annots [ 1305 0 R 1306 0 R ] >> -% 1304 0 obj +% 1305 0 obj << /Type /Annot /Subtype /Link @@ -15199,7 +15206,7 @@ stream /Rect [211.646 410.079 223.601 419.489] /A << /S /GoTo /D (table.13) >> >> -% 1305 0 obj +% 1306 0 obj << /Type /Annot /Subtype /Link @@ -15207,25 +15214,25 @@ stream /Rect [253.329 228.102 265.284 240.161] /A << /S /GoTo /D (table.13) >> >> -% 1309 0 obj +% 1310 0 obj << -/D [1307 0 R /XYZ 149.705 753.953 null] +/D [1308 0 R /XYZ 149.705 753.953 null] >> -% 1306 0 obj +% 1307 0 obj << /Font << /F62 671 0 R /F59 669 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1318 0 obj +% 1319 0 obj << /Type /Page -/Contents 1319 0 R -/Resources 1317 0 R +/Contents 1320 0 R +/Resources 1318 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1286 0 R -/Annots [ 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R ] +/Parent 1287 0 R +/Annots [ 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R ] >> -% 1310 0 obj +% 1311 0 obj << /Type /Annot /Subtype /Link @@ -15233,7 +15240,7 @@ stream /Rect [263.331 417.772 339.385 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1311 0 obj +% 1312 0 obj << /Type /Annot /Subtype /Link @@ -15241,7 +15248,7 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1312 0 obj +% 1313 0 obj << /Type /Annot /Subtype /Link @@ -15249,7 +15256,7 @@ stream /Rect [263.331 338.393 339.385 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1313 0 obj +% 1314 0 obj << /Type /Annot /Subtype /Link @@ -15257,7 +15264,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1314 0 obj +% 1315 0 obj << /Type /Annot /Subtype /Link @@ -15265,7 +15272,7 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1315 0 obj +% 1316 0 obj << /Type /Annot /Subtype /Link @@ -15273,7 +15280,7 @@ stream /Rect [263.331 171.988 339.385 184.048] /A << /S /GoTo /D (vdata) >> >> -% 1316 0 obj +% 1317 0 obj << /Type /Annot /Subtype /Link @@ -15281,50 +15288,50 @@ stream /Rect [242.868 160.033 254.823 172.093] /A << /S /GoTo /D (table.14) >> >> -% 1320 0 obj +% 1321 0 obj << -/D [1318 0 R /XYZ 98.895 753.953 null] +/D [1319 0 R /XYZ 98.895 753.953 null] >> % 276 0 obj << -/D [1318 0 R /XYZ 99.895 716.092 null] +/D [1319 0 R /XYZ 99.895 716.092 null] >> -% 1321 0 obj +% 1322 0 obj << -/D [1318 0 R /XYZ 99.895 560.161 null] +/D [1319 0 R /XYZ 99.895 560.161 null] >> -% 1317 0 obj +% 1318 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1323 0 obj +% 1324 0 obj << /Type /Page -/Contents 1324 0 R -/Resources 1322 0 R +/Contents 1325 0 R +/Resources 1323 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1286 0 R +/Parent 1287 0 R >> -% 1325 0 obj +% 1326 0 obj << -/D [1323 0 R /XYZ 149.705 753.953 null] +/D [1324 0 R /XYZ 149.705 753.953 null] >> -% 1322 0 obj +% 1323 0 obj << /Font << /F62 671 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1334 0 obj +% 1335 0 obj << /Type /Page -/Contents 1335 0 R -/Resources 1333 0 R +/Contents 1336 0 R +/Resources 1334 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1338 0 R -/Annots [ 1326 0 R 1327 0 R 1328 0 R 1329 0 R 1330 0 R ] +/Parent 1339 0 R +/Annots [ 1327 0 R 1328 0 R 1329 0 R 1330 0 R 1331 0 R ] >> -% 1326 0 obj +% 1327 0 obj << /Type /Annot /Subtype /Link @@ -15332,7 +15339,7 @@ stream /Rect [263.331 417.772 339.385 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1327 0 obj +% 1328 0 obj << /Type /Annot /Subtype /Link @@ -15340,7 +15347,7 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1328 0 obj +% 1329 0 obj << /Type /Annot /Subtype /Link @@ -15348,7 +15355,7 @@ stream /Rect [263.331 338.393 339.385 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1329 0 obj +% 1330 0 obj << /Type /Annot /Subtype /Link @@ -15356,7 +15363,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1330 0 obj +% 1331 0 obj << /Type /Annot /Subtype /Link @@ -15364,33 +15371,33 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1336 0 obj +% 1337 0 obj << -/D [1334 0 R /XYZ 98.895 753.953 null] +/D [1335 0 R /XYZ 98.895 753.953 null] >> % 280 0 obj << -/D [1334 0 R /XYZ 99.895 716.092 null] +/D [1335 0 R /XYZ 99.895 716.092 null] >> -% 1337 0 obj +% 1338 0 obj << -/D [1334 0 R /XYZ 99.895 560.161 null] +/D [1335 0 R /XYZ 99.895 560.161 null] >> -% 1333 0 obj +% 1334 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1340 0 obj +% 1341 0 obj << /Type /Page -/Contents 1341 0 R -/Resources 1339 0 R +/Contents 1342 0 R +/Resources 1340 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1338 0 R -/Annots [ 1331 0 R 1332 0 R ] +/Parent 1339 0 R +/Annots [ 1332 0 R 1333 0 R ] >> -% 1331 0 obj +% 1332 0 obj << /Type /Annot /Subtype /Link @@ -15398,7 +15405,7 @@ stream /Rect [314.141 702.323 390.195 714.383] /A << /S /GoTo /D (vdata) >> >> -% 1332 0 obj +% 1333 0 obj << /Type /Annot /Subtype /Link @@ -15406,25 +15413,25 @@ stream /Rect [293.677 690.368 305.632 702.428] /A << /S /GoTo /D (table.14) >> >> -% 1342 0 obj +% 1343 0 obj << -/D [1340 0 R /XYZ 149.705 753.953 null] +/D [1341 0 R /XYZ 149.705 753.953 null] >> -% 1339 0 obj +% 1340 0 obj << /Font << /F62 671 0 R /F67 918 0 R /F59 669 0 R >> /ProcSet [ /PDF /Text ] >> -% 1349 0 obj +% 1350 0 obj << /Type /Page -/Contents 1350 0 R -/Resources 1348 0 R +/Contents 1351 0 R +/Resources 1349 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1338 0 R -/Annots [ 1343 0 R 1344 0 R 1345 0 R 1346 0 R 1347 0 R ] +/Parent 1339 0 R +/Annots [ 1344 0 R 1345 0 R 1346 0 R 1347 0 R 1348 0 R ] >> -% 1343 0 obj +% 1344 0 obj << /Type /Annot /Subtype /Link @@ -15432,7 +15439,7 @@ stream /Rect [263.331 430.55 339.385 442.61] /A << /S /GoTo /D (vdata) >> >> -% 1344 0 obj +% 1345 0 obj << /Type /Annot /Subtype /Link @@ -15440,7 +15447,7 @@ stream /Rect [224.557 418.595 231.53 430.655] /A << /S /GoTo /D (table.2) >> >> -% 1345 0 obj +% 1346 0 obj << /Type /Annot /Subtype /Link @@ -15448,7 +15455,7 @@ stream /Rect [256.048 352.283 323.106 364.342] /A << /S /GoTo /D (descdata) >> >> -% 1346 0 obj +% 1347 0 obj << /Type /Annot /Subtype /Link @@ -15456,7 +15463,7 @@ stream /Rect [263.331 201.166 339.385 213.226] /A << /S /GoTo /D (vdata) >> >> -% 1347 0 obj +% 1348 0 obj << /Type /Annot /Subtype /Link @@ -15464,33 +15471,33 @@ stream /Rect [242.868 189.211 254.823 201.271] /A << /S /GoTo /D (table.16) >> >> -% 1351 0 obj +% 1352 0 obj << -/D [1349 0 R /XYZ 98.895 753.953 null] +/D [1350 0 R /XYZ 98.895 753.953 null] >> % 284 0 obj << -/D [1349 0 R /XYZ 99.895 716.092 null] +/D [1350 0 R /XYZ 99.895 716.092 null] >> -% 1352 0 obj +% 1353 0 obj << -/D [1349 0 R /XYZ 99.895 566.828 null] +/D [1350 0 R /XYZ 99.895 566.828 null] >> -% 1348 0 obj +% 1349 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1355 0 obj +% 1356 0 obj << /Type /Page -/Contents 1356 0 R -/Resources 1354 0 R +/Contents 1357 0 R +/Resources 1355 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1338 0 R -/Annots [ 1353 0 R ] +/Parent 1339 0 R +/Annots [ 1354 0 R ] >> -% 1353 0 obj +% 1354 0 obj << /Type /Annot /Subtype /Link @@ -15498,29 +15505,29 @@ stream /Rect [378.029 655.624 385.003 667.684] /A << /S /GoTo /D (section.6) >> >> -% 1357 0 obj +% 1358 0 obj << -/D [1355 0 R /XYZ 149.705 753.953 null] +/D [1356 0 R /XYZ 149.705 753.953 null] >> % 288 0 obj << -/D [1355 0 R /XYZ 150.705 716.092 null] +/D [1356 0 R /XYZ 150.705 716.092 null] >> -% 1354 0 obj +% 1355 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1363 0 obj +% 1364 0 obj << /Type /Page -/Contents 1364 0 R -/Resources 1362 0 R +/Contents 1365 0 R +/Resources 1363 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1338 0 R -/Annots [ 1358 0 R 1359 0 R 1360 0 R ] +/Parent 1339 0 R +/Annots [ 1359 0 R 1360 0 R 1361 0 R ] >> -% 1358 0 obj +% 1359 0 obj << /Type /Annot /Subtype /Link @@ -15528,7 +15535,7 @@ stream /Rect [368.549 344.818 444.603 356.877] /A << /S /GoTo /D (vdata) >> >> -% 1359 0 obj +% 1360 0 obj << /Type /Annot /Subtype /Link @@ -15536,7 +15543,7 @@ stream /Rect [326.652 332.863 338.608 344.922] /A << /S /GoTo /D (table.17) >> >> -% 1360 0 obj +% 1361 0 obj << /Type /Annot /Subtype /Link @@ -15544,47 +15551,47 @@ stream /Rect [291.943 264.733 359.001 276.793] /A << /S /GoTo /D (descdata) >> >> -% 1365 0 obj +% 1366 0 obj << -/D [1363 0 R /XYZ 98.895 753.953 null] +/D [1364 0 R /XYZ 98.895 753.953 null] >> % 292 0 obj << -/D [1363 0 R /XYZ 99.895 716.092 null] +/D [1364 0 R /XYZ 99.895 716.092 null] >> -% 1366 0 obj +% 1367 0 obj << -/D [1363 0 R /XYZ 99.895 513.636 null] +/D [1364 0 R /XYZ 99.895 513.636 null] >> -% 1362 0 obj +% 1363 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1132 0 R /F67 918 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1370 0 obj +% 1371 0 obj << /Type /Page -/Contents 1371 0 R -/Resources 1369 0 R +/Contents 1372 0 R +/Resources 1370 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1338 0 R -/Annots [ 1361 0 R 1368 0 R ] +/Parent 1339 0 R +/Annots [ 1362 0 R 1369 0 R ] >> -% 1374 0 obj +% 1375 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100645Z00'00') /ModDate (D:20180323100645Z00'00') >> -% 1375 0 obj +% 1376 0 obj << /Type /ExtGState /OPM 1 >> -% 1376 0 obj +% 1377 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1378 0 R +/FontDescriptor 1379 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -15592,10 +15599,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1377 0 obj +% 1378 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1379 0 R +/FontDescriptor 1380 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -15603,25 +15610,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1378 0 obj -<< -/Type /FontDescriptor -/FontName /XYUGDR+Times-Roman -/FontBBox [ 0 -14 476 688] -/Flags 65568 -/Ascent 688 -/CapHeight 688 -/Descent -14 -/ItalicAngle 0 -/StemV 71 -/MissingWidth 250 -/CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1380 0 R ->> endstream endobj -1380 0 obj +1382 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -15680,7 +15672,7 @@ r §¶¦^<ÜÛrc¨¯@vŒñ6@ì>Ƀ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ endstream endobj -1382 0 obj +1383 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -15753,7 +15745,7 @@ k ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1385 0 obj +1386 0 obj << /Length 3048 >> @@ -15773,7 +15765,7 @@ ET endstream endobj -1393 0 obj +1394 0 obj << /Length 7819 >> @@ -16038,7 +16030,7 @@ ET endstream endobj -1402 0 obj +1403 0 obj << /Length 5447 >> @@ -16092,7 +16084,7 @@ ET endstream endobj -1410 0 obj +1411 0 obj << /Length 3551 >> @@ -16112,7 +16104,7 @@ ET endstream endobj -1414 0 obj +1415 0 obj << /Length 321 >> @@ -16143,20 +16135,20 @@ ET endstream endobj -1397 0 obj +1398 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8_ov.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1416 0 R +/PTEX.InfoDict 1417 0 R /BBox [0 0 516 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1417 0 R ->>/Font << /R8 1418 0 R/R10 1419 0 R>> +/R7 1418 0 R +>>/Font << /R8 1419 0 R/R10 1420 0 R>> >> /Length 3413 /Filter /FlateDecode @@ -16170,7 +16162,7 @@ x >÷­ õïÅ7z3óm‘W=ò™¿ªOækª¨ù*óÕ#_e}0¾h;ׇ©›öÄ‚ÏýUm°xßPyPÇp}gZz®ŽÎâˆè«43©cˆŸLÂ̵1Y][V½üέ¦†5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½´â6Tl4©^lÉ]·íMª×µ6ÔNÉ‹»&ž%Ä›ºõ)ÕÃýÍ?Ô‹'ñQõ†:V\ïꛉÁ¿Ö†ÚU ñ¦n±Ý|îêˆÅ“ù zC+®wu‹mÐàƒ_kCí*¾Â\Ýb[=øÜ?Ô‹'ñ •Gè˜_ß™–ž«£³8"ºÇ*ÍÌÐ1ŸLÂ̵1Y=Æ¢zÚð¬÷mŒ,…uÑZMuÑ´úTYaUô„&Õ[ö…›:ÖZG¨žvõ_ºP=ß-Fü®5lËãouÃYË*ïoþ¦ŽX<‰½M+®7uÓy„àsÿ®µ¡6‰Ácü­n:±|îoêˆÅ“ù°§ÛÔ±âzS7¤>÷ïZj?˜|®bä+ÌT|æoêˆÅ“ø¸}ÛÔ±’¯2/P=ò™×ÚP[¿àƒŠ1þ` z¼¿ù›:bñ$>îÔ6u¬¸ÞÔM§W‚Ïý»Ö†Úå}qÇwf¾-òàªG>ó7uÄâÉ|Mõ#_e^ z䫬ÆïZ£ÁÎõaꦓ9Áçþ¦ŽX<‰o¨<¨c¸¾3-=WGgqDô«43©cˆŸLÂ̵1YÝö¬zy?¶¥ž5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½tNÆm¨ØÔn†]·ÚÍðÓ3ˆïZ£Áö, ífณguj7 ?ÏUõÒ‘Ø%ñ¹º ífàóÜßµ6Ô¡ðQņv3tè)øÜ?Õ‹'óAõ¦:V\ïê6´›Ïs×ÚPçcÈÚÍÐq-ñ™ª#Oâ£êMu¬ä«Ì Uoh7Ç_jðQõºÖnŒ?˜ªÞÔn†.â繪^:Óâ6Tlj7Cà‚Ïý]kCzyñÌÌ|[äª7µ›†|YõÒñ·k®W·¡Ý òUÖã»Öh°s}¸º ífðþõÁøy®ª§“*nRÇfìfÄàë,Žˆî±J33tlÄnFI ¶ÉÒˆèy.ª§Ó)žõ¾ í‘‘¥0¢.zB«©.ú‚ÖBŸÊ"+¬ŠžÐ¤zíÐn†Û®b­i7Cg _Vµ›á§ _µFƒmYbü­n81iYåýͨ#OâãAÀC+®7uÓ©ÈàsÕÚP‡Ácü­n:7|î?Ô‹'óáÌß¡Ž×›ºé®?Œ÷Æå‡ñ¶ŽùÃxü0î÷øúz~ÙëDõ¹žDí‡E]Ó×…aXŽí!Í>øïŸ×düoõ–‘¿Ö«\¯ç­ÜýÌ•çë»ýô—w-ÿ/Iÿõv×ï!o'ÈŸÿ`[G. endstream endobj -1422 0 obj +1423 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16229,7 +16221,7 @@ r §¶¦^<ÜÛrc¨¯@vŒñ6@ì>Ƀ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ endstream endobj -1423 0 obj +1424 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16302,7 +16294,7 @@ k ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1429 0 obj +1430 0 obj << /Length 8493 >> @@ -16556,7 +16548,7 @@ ET endstream endobj -1434 0 obj +1435 0 obj << /Length 1417 >> @@ -16590,7 +16582,7 @@ ET endstream endobj -1441 0 obj +1442 0 obj << /Length 7428 >> @@ -16792,7 +16784,7 @@ ET endstream endobj -1448 0 obj +1449 0 obj << /Length 3984 >> @@ -16925,7 +16917,7 @@ ET endstream endobj -1452 0 obj +1453 0 obj << /Length 6319 >> @@ -16982,7 +16974,7 @@ ET endstream endobj -1457 0 obj +1458 0 obj << /Length 6337 >> @@ -17060,7 +17052,7 @@ ET endstream endobj -1463 0 obj +1464 0 obj << /Length 9985 >> @@ -17131,7 +17123,7 @@ ET endstream endobj -1469 0 obj +1470 0 obj << /Length 2555 >> @@ -17166,7 +17158,7 @@ ET endstream endobj -1480 0 obj +1481 0 obj << /Length 7006 >> @@ -17251,7 +17243,7 @@ ET endstream endobj -1485 0 obj +1486 0 obj << /Length 3007 >> @@ -17294,7 +17286,7 @@ ET endstream endobj -1494 0 obj +1495 0 obj << /Length 5969 >> @@ -17432,23 +17424,38 @@ endobj << /Type /ObjStm /N 100 -/First 990 -/Length 11716 ->> -stream -1379 0 1361 236 1368 383 1372 530 1373 589 1369 648 1384 784 1386 902 1383 960 1392 1028 -1388 1185 1389 1329 1390 1474 1394 1621 296 1680 1395 1738 1391 1797 1401 1930 1396 2087 1398 2233 -1399 2379 1403 2524 1404 2582 1405 2640 1406 2698 1400 2756 1409 2863 1411 2981 1408 3040 1413 3108 -1416 3226 1417 3353 1418 3396 1419 3603 1420 3841 1421 4117 1415 4353 1407 4411 1412 4469 1428 4566 -1424 4723 1425 4864 1426 5011 1430 5158 300 5217 1431 5275 1427 5334 1433 5467 1435 5585 1432 5643 -1440 5737 1437 5876 1442 6023 304 6082 1443 6140 1439 6199 1447 6332 1438 6489 1444 6632 1445 6775 -1449 6922 1446 6980 1451 7087 1453 7205 308 7264 312 7322 1450 7379 1456 7512 1454 7651 1458 7798 -1459 7856 1455 7914 1462 8034 1460 8173 1464 8331 1466 8390 1461 8449 1468 8596 1470 8714 1471 8772 -1472 8830 1473 8888 1474 8946 1475 9004 1467 9062 1479 9143 1477 9282 1481 9427 316 9486 1478 9544 -1484 9664 1482 9803 1486 9961 1487 10019 1488 10077 1489 10135 1483 10193 1493 10287 1490 10435 1491 10580 +/First 993 +/Length 11849 +>> +stream +1379 0 1380 276 1362 512 1369 659 1373 806 1374 865 1370 924 1385 1060 1387 1178 1384 1236 +1393 1304 1389 1461 1390 1605 1391 1750 1395 1897 296 1956 1396 2014 1392 2073 1402 2206 1397 2363 +1399 2509 1400 2655 1404 2800 1405 2858 1406 2916 1407 2974 1401 3032 1410 3139 1412 3257 1409 3316 +1414 3384 1417 3502 1418 3629 1419 3672 1420 3879 1421 4117 1422 4393 1416 4629 1408 4687 1413 4745 +1429 4842 1425 4999 1426 5140 1427 5287 1431 5434 300 5493 1432 5551 1428 5610 1434 5743 1436 5861 +1433 5919 1441 6013 1438 6152 1443 6299 304 6358 1444 6416 1440 6475 1448 6608 1439 6765 1445 6908 +1446 7051 1450 7198 1447 7256 1452 7363 1454 7481 308 7540 312 7598 1451 7655 1457 7788 1455 7927 +1459 8074 1460 8132 1456 8190 1463 8310 1461 8449 1465 8607 1467 8666 1462 8725 1469 8872 1471 8990 +1472 9048 1473 9106 1474 9164 1475 9222 1476 9280 1468 9338 1480 9419 1478 9558 1482 9703 316 9762 +1479 9820 1485 9940 1483 10079 1487 10237 1488 10295 1489 10353 1490 10411 1484 10469 1494 10563 1491 10711 % 1379 0 obj << /Type /FontDescriptor +/FontName /XYUGDR+Times-Roman +/FontBBox [ 0 -14 476 688] +/Flags 65568 +/Ascent 688 +/CapHeight 688 +/Descent -14 +/ItalicAngle 0 +/StemV 71 +/MissingWidth 250 +/CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) +/FontFile3 1382 0 R +>> +% 1380 0 obj +<< +/Type /FontDescriptor /FontName /XISTAL+Times-Bold /FontBBox [ 0 -13 600 688] /Flags 65568 @@ -17459,9 +17466,9 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1382 0 R +/FontFile3 1383 0 R >> -% 1361 0 obj +% 1362 0 obj << /Type /Annot /Subtype /Link @@ -17469,7 +17476,7 @@ stream /Rect [231.023 625.272 242.978 634.682] /A << /S /GoTo /D (table.17) >> >> -% 1368 0 obj +% 1369 0 obj << /Type /Annot /Subtype /Link @@ -17477,47 +17484,47 @@ stream /Rect [458.157 276.439 465.131 290.202] /A << /S /GoTo /D (figure.3) >> >> -% 1372 0 obj +% 1373 0 obj << -/D [1370 0 R /XYZ 149.705 753.953 null] +/D [1371 0 R /XYZ 149.705 753.953 null] >> -% 1373 0 obj +% 1374 0 obj << -/D [1370 0 R /XYZ 150.705 326.444 null] +/D [1371 0 R /XYZ 150.705 326.444 null] >> -% 1369 0 obj +% 1370 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> -/XObject << /Im4 1367 0 R >> +/XObject << /Im4 1368 0 R >> /ProcSet [ /PDF /Text ] >> -% 1384 0 obj +% 1385 0 obj << /Type /Page -/Contents 1385 0 R -/Resources 1383 0 R +/Contents 1386 0 R +/Resources 1384 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1388 0 R >> -% 1386 0 obj +% 1387 0 obj << -/D [1384 0 R /XYZ 98.895 753.953 null] +/D [1385 0 R /XYZ 98.895 753.953 null] >> -% 1383 0 obj +% 1384 0 obj << /Font << /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1392 0 obj +% 1393 0 obj << /Type /Page -/Contents 1393 0 R -/Resources 1391 0 R +/Contents 1394 0 R +/Resources 1392 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R -/Annots [ 1388 0 R 1389 0 R 1390 0 R ] +/Parent 1388 0 R +/Annots [ 1389 0 R 1390 0 R 1391 0 R ] >> -% 1388 0 obj +% 1389 0 obj << /Type /Annot /Subtype /Link @@ -17525,7 +17532,7 @@ stream /Rect [419.358 345.485 495.412 357.545] /A << /S /GoTo /D (vdata) >> >> -% 1389 0 obj +% 1390 0 obj << /Type /Annot /Subtype /Link @@ -17533,7 +17540,7 @@ stream /Rect [377.462 333.53 389.417 345.59] /A << /S /GoTo /D (table.18) >> >> -% 1390 0 obj +% 1391 0 obj << /Type /Annot /Subtype /Link @@ -17541,33 +17548,33 @@ stream /Rect [342.753 266.146 409.811 278.205] /A << /S /GoTo /D (descdata) >> >> -% 1394 0 obj +% 1395 0 obj << -/D [1392 0 R /XYZ 149.705 753.953 null] +/D [1393 0 R /XYZ 149.705 753.953 null] >> % 296 0 obj << -/D [1392 0 R /XYZ 150.705 716.092 null] +/D [1393 0 R /XYZ 150.705 716.092 null] >> -% 1395 0 obj +% 1396 0 obj << -/D [1392 0 R /XYZ 150.705 510.975 null] +/D [1393 0 R /XYZ 150.705 510.975 null] >> -% 1391 0 obj +% 1392 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1401 0 obj +% 1402 0 obj << /Type /Page -/Contents 1402 0 R -/Resources 1400 0 R +/Contents 1403 0 R +/Resources 1401 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R -/Annots [ 1396 0 R 1398 0 R 1399 0 R ] +/Parent 1388 0 R +/Annots [ 1397 0 R 1399 0 R 1400 0 R ] >> -% 1396 0 obj +% 1397 0 obj << /Type /Annot /Subtype /Link @@ -17575,7 +17582,7 @@ stream /Rect [202.52 554.876 214.475 566.936] /A << /S /GoTo /D (table.18) >> >> -% 1398 0 obj +% 1399 0 obj << /Type /Annot /Subtype /Link @@ -17583,7 +17590,7 @@ stream /Rect [407.408 325.46 414.381 339.127] /A << /S /GoTo /D (figure.4) >> >> -% 1399 0 obj +% 1400 0 obj << /Type /Annot /Subtype /Link @@ -17591,67 +17598,67 @@ stream /Rect [309.226 301.825 316.2 313.885] /A << /S /GoTo /D (figure.3) >> >> -% 1403 0 obj -<< -/D [1401 0 R /XYZ 98.895 753.953 null] ->> % 1404 0 obj << -/D [1401 0 R /XYZ 99.895 464.818 null] +/D [1402 0 R /XYZ 98.895 753.953 null] >> % 1405 0 obj << -/D [1401 0 R /XYZ 99.895 430.343 null] +/D [1402 0 R /XYZ 99.895 464.818 null] >> % 1406 0 obj << -/D [1401 0 R /XYZ 99.895 386.508 null] +/D [1402 0 R /XYZ 99.895 430.343 null] >> -% 1400 0 obj +% 1407 0 obj +<< +/D [1402 0 R /XYZ 99.895 386.508 null] +>> +% 1401 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1409 0 obj +% 1410 0 obj << /Type /Page -/Contents 1410 0 R -/Resources 1408 0 R +/Contents 1411 0 R +/Resources 1409 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1388 0 R >> -% 1411 0 obj +% 1412 0 obj << -/D [1409 0 R /XYZ 149.705 753.953 null] +/D [1410 0 R /XYZ 149.705 753.953 null] >> -% 1408 0 obj +% 1409 0 obj << /Font << /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1413 0 obj +% 1414 0 obj << /Type /Page -/Contents 1414 0 R -/Resources 1412 0 R +/Contents 1415 0 R +/Resources 1413 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1388 0 R >> -% 1416 0 obj +% 1417 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100658Z00'00') /ModDate (D:20180323100658Z00'00') >> -% 1417 0 obj +% 1418 0 obj << /Type /ExtGState /OPM 1 >> -% 1418 0 obj +% 1419 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1420 0 R +/FontDescriptor 1421 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -17659,10 +17666,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1419 0 obj +% 1420 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1421 0 R +/FontDescriptor 1422 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -17670,7 +17677,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1420 0 obj +% 1421 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -17683,9 +17690,9 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1422 0 R +/FontFile3 1423 0 R >> -% 1421 0 obj +% 1422 0 obj << /Type /FontDescriptor /FontName /XISTAL+Times-Bold @@ -17698,32 +17705,32 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1423 0 R +/FontFile3 1424 0 R >> -% 1415 0 obj +% 1416 0 obj << -/D [1413 0 R /XYZ 98.895 753.953 null] +/D [1414 0 R /XYZ 98.895 753.953 null] >> -% 1407 0 obj +% 1408 0 obj << -/D [1413 0 R /XYZ 99.895 282.918 null] +/D [1414 0 R /XYZ 99.895 282.918 null] >> -% 1412 0 obj +% 1413 0 obj << /Font << /F62 671 0 R >> -/XObject << /Im5 1397 0 R >> +/XObject << /Im5 1398 0 R >> /ProcSet [ /PDF /Text ] >> -% 1428 0 obj +% 1429 0 obj << /Type /Page -/Contents 1429 0 R -/Resources 1427 0 R +/Contents 1430 0 R +/Resources 1428 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R -/Annots [ 1424 0 R 1425 0 R 1426 0 R ] +/Parent 1388 0 R +/Annots [ 1425 0 R 1426 0 R 1427 0 R ] >> -% 1424 0 obj +% 1425 0 obj << /Type /Annot /Subtype /Link @@ -17731,7 +17738,7 @@ stream /Rect [419.358 298.8 495.412 310.86] /A << /S /GoTo /D (vdata) >> >> -% 1425 0 obj +% 1426 0 obj << /Type /Annot /Subtype /Link @@ -17739,7 +17746,7 @@ stream /Rect [255.331 289.495 267.287 298.905] /A << /S /GoTo /D (table.19) >> >> -% 1426 0 obj +% 1427 0 obj << /Type /Annot /Subtype /Link @@ -17747,50 +17754,50 @@ stream /Rect [342.753 218.115 409.811 230.175] /A << /S /GoTo /D (descdata) >> >> -% 1430 0 obj +% 1431 0 obj << -/D [1428 0 R /XYZ 149.705 753.953 null] +/D [1429 0 R /XYZ 149.705 753.953 null] >> % 300 0 obj << -/D [1428 0 R /XYZ 150.705 716.092 null] +/D [1429 0 R /XYZ 150.705 716.092 null] >> -% 1431 0 obj +% 1432 0 obj << -/D [1428 0 R /XYZ 150.705 460.417 null] +/D [1429 0 R /XYZ 150.705 460.417 null] >> -% 1427 0 obj +% 1428 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1433 0 obj +% 1434 0 obj << /Type /Page -/Contents 1434 0 R -/Resources 1432 0 R +/Contents 1435 0 R +/Resources 1433 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1436 0 R +/Parent 1437 0 R >> -% 1435 0 obj +% 1436 0 obj << -/D [1433 0 R /XYZ 98.895 753.953 null] +/D [1434 0 R /XYZ 98.895 753.953 null] >> -% 1432 0 obj +% 1433 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1440 0 obj +% 1441 0 obj << /Type /Page -/Contents 1441 0 R -/Resources 1439 0 R +/Contents 1442 0 R +/Resources 1440 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1436 0 R -/Annots [ 1437 0 R ] +/Parent 1437 0 R +/Annots [ 1438 0 R ] >> -% 1437 0 obj +% 1438 0 obj << /Type /Annot /Subtype /Link @@ -17798,33 +17805,33 @@ stream /Rect [342.753 211.064 409.811 223.124] /A << /S /GoTo /D (descdata) >> >> -% 1442 0 obj +% 1443 0 obj << -/D [1440 0 R /XYZ 149.705 753.953 null] +/D [1441 0 R /XYZ 149.705 753.953 null] >> % 304 0 obj << -/D [1440 0 R /XYZ 150.705 716.092 null] +/D [1441 0 R /XYZ 150.705 716.092 null] >> -% 1443 0 obj +% 1444 0 obj << -/D [1440 0 R /XYZ 150.705 449.977 null] +/D [1441 0 R /XYZ 150.705 449.977 null] >> -% 1439 0 obj +% 1440 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1447 0 obj +% 1448 0 obj << /Type /Page -/Contents 1448 0 R -/Resources 1446 0 R +/Contents 1449 0 R +/Resources 1447 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1436 0 R -/Annots [ 1438 0 R 1444 0 R 1445 0 R ] +/Parent 1437 0 R +/Annots [ 1439 0 R 1445 0 R 1446 0 R ] >> -% 1438 0 obj +% 1439 0 obj << /Type /Annot /Subtype /Link @@ -17832,7 +17839,7 @@ stream /Rect [287.51 642.547 363.564 654.607] /A << /S /GoTo /D (vdata) >> >> -% 1444 0 obj +% 1445 0 obj << /Type /Annot /Subtype /Link @@ -17840,7 +17847,7 @@ stream /Rect [123.806 542.921 199.86 554.981] /A << /S /GoTo /D (vdata) >> >> -% 1445 0 obj +% 1446 0 obj << /Type /Annot /Subtype /Link @@ -17848,50 +17855,50 @@ stream /Rect [421.516 542.921 433.471 554.981] /A << /S /GoTo /D (table.20) >> >> -% 1449 0 obj +% 1450 0 obj << -/D [1447 0 R /XYZ 98.895 753.953 null] +/D [1448 0 R /XYZ 98.895 753.953 null] >> -% 1446 0 obj +% 1447 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1451 0 obj +% 1452 0 obj << /Type /Page -/Contents 1452 0 R -/Resources 1450 0 R +/Contents 1453 0 R +/Resources 1451 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1436 0 R +/Parent 1437 0 R >> -% 1453 0 obj +% 1454 0 obj << -/D [1451 0 R /XYZ 149.705 753.953 null] +/D [1452 0 R /XYZ 149.705 753.953 null] >> % 308 0 obj << -/D [1451 0 R /XYZ 150.705 716.092 null] +/D [1452 0 R /XYZ 150.705 716.092 null] >> % 312 0 obj << -/D [1451 0 R /XYZ 150.705 691.48 null] +/D [1452 0 R /XYZ 150.705 691.48 null] >> -% 1450 0 obj +% 1451 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1456 0 obj +% 1457 0 obj << /Type /Page -/Contents 1457 0 R -/Resources 1455 0 R +/Contents 1458 0 R +/Resources 1456 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1436 0 R -/Annots [ 1454 0 R ] +/Parent 1437 0 R +/Annots [ 1455 0 R ] >> -% 1454 0 obj +% 1455 0 obj << /Type /Annot /Subtype /Link @@ -17899,29 +17906,29 @@ stream /Rect [291.943 324.687 359.001 336.746] /A << /S /GoTo /D (descdata) >> >> -% 1458 0 obj +% 1459 0 obj << -/D [1456 0 R /XYZ 98.895 753.953 null] +/D [1457 0 R /XYZ 98.895 753.953 null] >> -% 1459 0 obj +% 1460 0 obj << -/D [1456 0 R /XYZ 99.895 234.157 null] +/D [1457 0 R /XYZ 99.895 234.157 null] >> -% 1455 0 obj +% 1456 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1462 0 obj +% 1463 0 obj << /Type /Page -/Contents 1463 0 R -/Resources 1461 0 R +/Contents 1464 0 R +/Resources 1462 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1436 0 R -/Annots [ 1460 0 R ] +/Parent 1437 0 R +/Annots [ 1461 0 R ] >> -% 1460 0 obj +% 1461 0 obj << /Type /Annot /Subtype /Link @@ -17929,66 +17936,66 @@ stream /Rect [405.298 215.702 427.216 227.166] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1464 0 obj +% 1465 0 obj << -/D [1462 0 R /XYZ 149.705 753.953 null] +/D [1463 0 R /XYZ 149.705 753.953 null] >> -% 1466 0 obj +% 1467 0 obj << -/D [1462 0 R /XYZ 150.705 133.283 null] +/D [1463 0 R /XYZ 150.705 133.283 null] >> -% 1461 0 obj +% 1462 0 obj << -/Font << /F67 918 0 R /F62 671 0 R /F59 669 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R /F69 1465 0 R >> +/Font << /F67 918 0 R /F62 671 0 R /F59 669 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R /F69 1466 0 R >> /ProcSet [ /PDF /Text ] >> -% 1468 0 obj +% 1469 0 obj << /Type /Page -/Contents 1469 0 R -/Resources 1467 0 R +/Contents 1470 0 R +/Resources 1468 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1476 0 R ->> -% 1470 0 obj -<< -/D [1468 0 R /XYZ 98.895 753.953 null] +/Parent 1477 0 R >> % 1471 0 obj << -/D [1468 0 R /XYZ 99.895 716.092 null] +/D [1469 0 R /XYZ 98.895 753.953 null] >> % 1472 0 obj << -/D [1468 0 R /XYZ 99.895 687.379 null] +/D [1469 0 R /XYZ 99.895 716.092 null] >> % 1473 0 obj << -/D [1468 0 R /XYZ 99.895 667.454 null] +/D [1469 0 R /XYZ 99.895 687.379 null] >> % 1474 0 obj << -/D [1468 0 R /XYZ 99.895 626.268 null] +/D [1469 0 R /XYZ 99.895 667.454 null] >> % 1475 0 obj << -/D [1468 0 R /XYZ 99.895 567.828 null] +/D [1469 0 R /XYZ 99.895 626.268 null] >> -% 1467 0 obj +% 1476 0 obj +<< +/D [1469 0 R /XYZ 99.895 567.828 null] +>> +% 1468 0 obj << /Font << /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1479 0 obj +% 1480 0 obj << /Type /Page -/Contents 1480 0 R -/Resources 1478 0 R +/Contents 1481 0 R +/Resources 1479 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1476 0 R -/Annots [ 1477 0 R ] +/Parent 1477 0 R +/Annots [ 1478 0 R ] >> -% 1477 0 obj +% 1478 0 obj << /Type /Annot /Subtype /Link @@ -17996,29 +18003,29 @@ stream /Rect [342.753 116.52 409.811 128.58] /A << /S /GoTo /D (descdata) >> >> -% 1481 0 obj +% 1482 0 obj << -/D [1479 0 R /XYZ 149.705 753.953 null] +/D [1480 0 R /XYZ 149.705 753.953 null] >> % 316 0 obj << -/D [1479 0 R /XYZ 150.705 716.092 null] +/D [1480 0 R /XYZ 150.705 716.092 null] >> -% 1478 0 obj +% 1479 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1484 0 obj +% 1485 0 obj << /Type /Page -/Contents 1485 0 R -/Resources 1483 0 R +/Contents 1486 0 R +/Resources 1484 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1476 0 R -/Annots [ 1482 0 R ] +/Parent 1477 0 R +/Annots [ 1483 0 R ] >> -% 1482 0 obj +% 1483 0 obj << /Type /Annot /Subtype /Link @@ -18026,56 +18033,48 @@ stream /Rect [278.165 401.451 300.083 413.511] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1486 0 obj -<< -/D [1484 0 R /XYZ 98.895 753.953 null] ->> % 1487 0 obj << -/D [1484 0 R /XYZ 99.895 496.698 null] +/D [1485 0 R /XYZ 98.895 753.953 null] >> % 1488 0 obj << -/D [1484 0 R /XYZ 99.895 474.179 null] +/D [1485 0 R /XYZ 99.895 496.698 null] >> % 1489 0 obj << -/D [1484 0 R /XYZ 99.895 430.343 null] +/D [1485 0 R /XYZ 99.895 474.179 null] >> -% 1483 0 obj +% 1490 0 obj +<< +/D [1485 0 R /XYZ 99.895 430.343 null] +>> +% 1484 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1493 0 obj +% 1494 0 obj << /Type /Page -/Contents 1494 0 R -/Resources 1492 0 R +/Contents 1495 0 R +/Resources 1493 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1476 0 R -/Annots [ 1490 0 R 1491 0 R ] ->> -% 1490 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 573.77 409.811 585.83] -/A << /S /GoTo /D (descdata) >> +/Parent 1477 0 R +/Annots [ 1491 0 R 1492 0 R ] >> % 1491 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 416.361 409.811 428.42] +/Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> endstream endobj -1502 0 obj +1503 0 obj << /Length 3168 >> @@ -18173,7 +18172,7 @@ ET endstream endobj -1507 0 obj +1508 0 obj << /Length 2167 >> @@ -18242,7 +18241,7 @@ ET endstream endobj -1513 0 obj +1514 0 obj << /Length 5710 >> @@ -18352,7 +18351,7 @@ ET endstream endobj -1518 0 obj +1519 0 obj << /Length 1484 >> @@ -18375,7 +18374,7 @@ ET endstream endobj -1526 0 obj +1527 0 obj << /Length 5699 >> @@ -18482,7 +18481,7 @@ ET endstream endobj -1531 0 obj +1532 0 obj << /Length 1141 >> @@ -18509,7 +18508,7 @@ ET endstream endobj -1539 0 obj +1540 0 obj << /Length 5375 >> @@ -18570,7 +18569,7 @@ ET endstream endobj -1545 0 obj +1546 0 obj << /Length 6861 >> @@ -18696,7 +18695,7 @@ ET endstream endobj -1554 0 obj +1555 0 obj << /Length 4535 >> @@ -18735,7 +18734,7 @@ ET endstream endobj -1568 0 obj +1569 0 obj << /Length 6789 >> @@ -18895,7 +18894,7 @@ ET endstream endobj -1572 0 obj +1573 0 obj << /Length 3146 >> @@ -18939,7 +18938,7 @@ ET endstream endobj -1585 0 obj +1586 0 obj << /Length 2987 >> @@ -19030,7 +19029,7 @@ ET endstream endobj -1591 0 obj +1592 0 obj << /Length 3858 >> @@ -19129,7 +19128,7 @@ ET endstream endobj -1598 0 obj +1599 0 obj << /Length 6166 >> @@ -19239,74 +19238,59 @@ ET endstream endobj -1602 0 obj -<< -/Length 925 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ -0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(Using)]TJ/F67 9.9626 Tf 41.798 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.28 0 Td [(is)-314(likely)-315(to)-315(cau)1(se)-315(a)-315(r)8(untime)-314(over)18(head)-315(at)-314(as-)]TJ -126.625 -11.955 Td [(sembly)-250(time;)]TJ -0 g 0 G - 141.968 -514.072 Td [(91)]TJ -0 g 0 G -ET - -endstream -endobj -1497 0 obj +1498 0 obj << /Type /ObjStm /N 100 -/First 976 -/Length 10269 +/First 977 +/Length 10298 +>> +stream +1492 0 1496 146 320 205 1497 263 1493 322 1502 416 1499 564 1500 709 1504 856 324 914 +1501 971 1507 1065 1505 1204 1509 1349 328 1408 1506 1466 1513 1560 1510 1708 1511 1853 1515 2000 +332 2058 1512 2115 1518 2235 1520 2353 1521 2412 1522 2471 1517 2530 1526 2611 1523 2759 1524 2906 +1528 3051 336 3109 1529 3166 1525 3224 1531 3318 1533 3436 1534 3495 1535 3554 1536 3613 1530 3672 +1539 3766 1541 3884 340 3942 1538 3999 1545 4119 1537 4276 1542 4419 1543 4564 1547 4707 1548 4766 +1549 4824 1550 4883 1551 4942 1552 5001 1544 5060 1554 5180 1556 5298 1557 5356 1558 5414 1559 5472 +1560 5530 1561 5588 1562 5646 1553 5704 1568 5824 1564 5981 1565 6128 1566 6273 1570 6419 344 6478 +1567 6536 1572 6630 1574 6748 1575 6806 1576 6864 1577 6922 1578 6980 1579 7038 1580 7096 1581 7154 +1571 7212 1585 7306 1582 7454 1583 7597 1587 7744 348 7803 1584 7861 1591 7955 1588 8103 1589 8248 +1593 8395 352 8453 1594 8510 1590 8568 1598 8662 1595 8810 1596 8953 1600 9097 356 9156 1597 9214 +% 1492 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 416.361 409.811 428.42] +/A << /S /GoTo /D (descdata) >> >> -stream -1495 0 320 59 1496 117 1492 176 1501 270 1498 418 1499 563 1503 710 324 768 1500 825 -1506 919 1504 1058 1508 1203 328 1262 1505 1320 1512 1414 1509 1562 1510 1707 1514 1854 332 1912 -1511 1969 1517 2089 1519 2207 1520 2266 1521 2325 1516 2384 1525 2465 1522 2613 1523 2760 1527 2905 -336 2963 1528 3020 1524 3078 1530 3172 1532 3290 1533 3349 1534 3408 1535 3467 1529 3526 1538 3620 -1540 3738 340 3796 1537 3853 1544 3973 1536 4130 1541 4273 1542 4418 1546 4561 1547 4620 1548 4678 -1549 4737 1550 4796 1551 4855 1543 4914 1553 5034 1555 5152 1556 5210 1557 5268 1558 5326 1559 5384 -1560 5442 1561 5500 1552 5558 1567 5678 1563 5835 1564 5982 1565 6127 1569 6273 344 6332 1566 6390 -1571 6484 1573 6602 1574 6660 1575 6718 1576 6776 1577 6834 1578 6892 1579 6950 1580 7008 1570 7066 -1584 7160 1581 7308 1582 7451 1586 7598 348 7657 1583 7715 1590 7809 1587 7957 1588 8102 1592 8249 -352 8307 1593 8364 1589 8422 1597 8516 1594 8664 1595 8807 1599 8951 356 9010 1596 9068 1601 9175 -% 1495 0 obj +% 1496 0 obj << -/D [1493 0 R /XYZ 149.705 753.953 null] +/D [1494 0 R /XYZ 149.705 753.953 null] >> % 320 0 obj << -/D [1493 0 R /XYZ 150.705 716.092 null] +/D [1494 0 R /XYZ 150.705 716.092 null] >> -% 1496 0 obj +% 1497 0 obj << -/D [1493 0 R /XYZ 150.705 326.302 null] +/D [1494 0 R /XYZ 150.705 326.302 null] >> -% 1492 0 obj +% 1493 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1501 0 obj +% 1502 0 obj << /Type /Page -/Contents 1502 0 R -/Resources 1500 0 R +/Contents 1503 0 R +/Resources 1501 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1476 0 R -/Annots [ 1498 0 R 1499 0 R ] +/Parent 1477 0 R +/Annots [ 1499 0 R 1500 0 R ] >> -% 1498 0 obj +% 1499 0 obj << /Type /Annot /Subtype /Link @@ -19314,7 +19298,7 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1499 0 obj +% 1500 0 obj << /Type /Annot /Subtype /Link @@ -19322,29 +19306,29 @@ stream /Rect [291.943 484.107 359.001 496.166] /A << /S /GoTo /D (descdata) >> >> -% 1503 0 obj +% 1504 0 obj << -/D [1501 0 R /XYZ 98.895 753.953 null] +/D [1502 0 R /XYZ 98.895 753.953 null] >> % 324 0 obj << -/D [1501 0 R /XYZ 99.895 716.092 null] +/D [1502 0 R /XYZ 99.895 716.092 null] >> -% 1500 0 obj +% 1501 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1506 0 obj +% 1507 0 obj << /Type /Page -/Contents 1507 0 R -/Resources 1505 0 R +/Contents 1508 0 R +/Resources 1506 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1476 0 R -/Annots [ 1504 0 R ] +/Parent 1477 0 R +/Annots [ 1505 0 R ] >> -% 1504 0 obj +% 1505 0 obj << /Type /Annot /Subtype /Link @@ -19352,29 +19336,29 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1508 0 obj +% 1509 0 obj << -/D [1506 0 R /XYZ 149.705 753.953 null] +/D [1507 0 R /XYZ 149.705 753.953 null] >> % 328 0 obj << -/D [1506 0 R /XYZ 150.705 716.092 null] +/D [1507 0 R /XYZ 150.705 716.092 null] >> -% 1505 0 obj +% 1506 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1512 0 obj +% 1513 0 obj << /Type /Page -/Contents 1513 0 R -/Resources 1511 0 R +/Contents 1514 0 R +/Resources 1512 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1515 0 R -/Annots [ 1509 0 R 1510 0 R ] +/Parent 1516 0 R +/Annots [ 1510 0 R 1511 0 R ] >> -% 1509 0 obj +% 1510 0 obj << /Type /Annot /Subtype /Link @@ -19382,7 +19366,7 @@ stream /Rect [291.943 452.321 369.462 464.381] /A << /S /GoTo /D (spdata) >> >> -% 1510 0 obj +% 1511 0 obj << /Type /Annot /Subtype /Link @@ -19390,54 +19374,54 @@ stream /Rect [291.943 209.193 359.001 221.252] /A << /S /GoTo /D (descdata) >> >> -% 1514 0 obj +% 1515 0 obj << -/D [1512 0 R /XYZ 98.895 753.953 null] +/D [1513 0 R /XYZ 98.895 753.953 null] >> % 332 0 obj << -/D [1512 0 R /XYZ 99.895 716.092 null] +/D [1513 0 R /XYZ 99.895 716.092 null] >> -% 1511 0 obj +% 1512 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1517 0 obj +% 1518 0 obj << /Type /Page -/Contents 1518 0 R -/Resources 1516 0 R +/Contents 1519 0 R +/Resources 1517 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1515 0 R ->> -% 1519 0 obj -<< -/D [1517 0 R /XYZ 149.705 753.953 null] +/Parent 1516 0 R >> % 1520 0 obj << -/D [1517 0 R /XYZ 150.705 716.092 null] +/D [1518 0 R /XYZ 149.705 753.953 null] >> % 1521 0 obj << -/D [1517 0 R /XYZ 150.705 663.469 null] +/D [1518 0 R /XYZ 150.705 716.092 null] >> -% 1516 0 obj +% 1522 0 obj +<< +/D [1518 0 R /XYZ 150.705 663.469 null] +>> +% 1517 0 obj << /Font << /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1525 0 obj +% 1526 0 obj << /Type /Page -/Contents 1526 0 R -/Resources 1524 0 R +/Contents 1527 0 R +/Resources 1525 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1515 0 R -/Annots [ 1522 0 R 1523 0 R ] +/Parent 1516 0 R +/Annots [ 1523 0 R 1524 0 R ] >> -% 1522 0 obj +% 1523 0 obj << /Type /Annot /Subtype /Link @@ -19445,7 +19429,7 @@ stream /Rect [291.943 571.679 359.001 583.739] /A << /S /GoTo /D (descdata) >> >> -% 1523 0 obj +% 1524 0 obj << /Type /Annot /Subtype /Link @@ -19453,83 +19437,83 @@ stream /Rect [291.943 227.887 369.462 239.946] /A << /S /GoTo /D (spdata) >> >> -% 1527 0 obj +% 1528 0 obj << -/D [1525 0 R /XYZ 98.895 753.953 null] +/D [1526 0 R /XYZ 98.895 753.953 null] >> % 336 0 obj << -/D [1525 0 R /XYZ 99.895 716.092 null] +/D [1526 0 R /XYZ 99.895 716.092 null] >> -% 1528 0 obj +% 1529 0 obj << -/D [1525 0 R /XYZ 99.895 136.374 null] +/D [1526 0 R /XYZ 99.895 136.374 null] >> -% 1524 0 obj +% 1525 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1530 0 obj +% 1531 0 obj << /Type /Page -/Contents 1531 0 R -/Resources 1529 0 R +/Contents 1532 0 R +/Resources 1530 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1515 0 R ->> -% 1532 0 obj -<< -/D [1530 0 R /XYZ 149.705 753.953 null] +/Parent 1516 0 R >> % 1533 0 obj << -/D [1530 0 R /XYZ 150.705 716.092 null] +/D [1531 0 R /XYZ 149.705 753.953 null] >> % 1534 0 obj << -/D [1530 0 R /XYZ 150.705 699.334 null] +/D [1531 0 R /XYZ 150.705 716.092 null] >> % 1535 0 obj << -/D [1530 0 R /XYZ 150.705 644.819 null] +/D [1531 0 R /XYZ 150.705 699.334 null] >> -% 1529 0 obj +% 1536 0 obj +<< +/D [1531 0 R /XYZ 150.705 644.819 null] +>> +% 1530 0 obj << /Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1538 0 obj +% 1539 0 obj << /Type /Page -/Contents 1539 0 R -/Resources 1537 0 R +/Contents 1540 0 R +/Resources 1538 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1515 0 R +/Parent 1516 0 R >> -% 1540 0 obj +% 1541 0 obj << -/D [1538 0 R /XYZ 98.895 753.953 null] +/D [1539 0 R /XYZ 98.895 753.953 null] >> % 340 0 obj << -/D [1538 0 R /XYZ 99.895 716.092 null] +/D [1539 0 R /XYZ 99.895 716.092 null] >> -% 1537 0 obj +% 1538 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1544 0 obj +% 1545 0 obj << /Type /Page -/Contents 1545 0 R -/Resources 1543 0 R +/Contents 1546 0 R +/Resources 1544 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1515 0 R -/Annots [ 1536 0 R 1541 0 R 1542 0 R ] +/Parent 1516 0 R +/Annots [ 1537 0 R 1542 0 R 1543 0 R ] >> -% 1536 0 obj +% 1537 0 obj << /Type /Annot /Subtype /Link @@ -19537,7 +19521,7 @@ stream /Rect [310.942 654.503 378 666.562] /A << /S /GoTo /D (descdata) >> >> -% 1541 0 obj +% 1542 0 obj << /Type /Annot /Subtype /Link @@ -19545,7 +19529,7 @@ stream /Rect [342.753 480.963 420.271 493.022] /A << /S /GoTo /D (spdata) >> >> -% 1542 0 obj +% 1543 0 obj << /Type /Annot /Subtype /Link @@ -19553,86 +19537,86 @@ stream /Rect [310.942 411.699 378 423.758] /A << /S /GoTo /D (descdata) >> >> -% 1546 0 obj -<< -/D [1544 0 R /XYZ 149.705 753.953 null] ->> % 1547 0 obj << -/D [1544 0 R /XYZ 150.705 306.27 null] +/D [1545 0 R /XYZ 149.705 753.953 null] >> % 1548 0 obj << -/D [1544 0 R /XYZ 150.705 272.927 null] +/D [1545 0 R /XYZ 150.705 306.27 null] >> % 1549 0 obj << -/D [1544 0 R /XYZ 150.705 236.878 null] +/D [1545 0 R /XYZ 150.705 272.927 null] >> % 1550 0 obj << -/D [1544 0 R /XYZ 150.705 167.614 null] +/D [1545 0 R /XYZ 150.705 236.878 null] >> % 1551 0 obj << -/D [1544 0 R /XYZ 150.705 146.171 null] +/D [1545 0 R /XYZ 150.705 167.614 null] >> -% 1543 0 obj +% 1552 0 obj +<< +/D [1545 0 R /XYZ 150.705 146.171 null] +>> +% 1544 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1553 0 obj +% 1554 0 obj << /Type /Page -/Contents 1554 0 R -/Resources 1552 0 R +/Contents 1555 0 R +/Resources 1553 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1562 0 R ->> -% 1555 0 obj -<< -/D [1553 0 R /XYZ 98.895 753.953 null] +/Parent 1563 0 R >> % 1556 0 obj << -/D [1553 0 R /XYZ 99.895 716.092 null] +/D [1554 0 R /XYZ 98.895 753.953 null] >> % 1557 0 obj << -/D [1553 0 R /XYZ 99.895 651.514 null] +/D [1554 0 R /XYZ 99.895 716.092 null] >> % 1558 0 obj << -/D [1553 0 R /XYZ 99.895 607.678 null] +/D [1554 0 R /XYZ 99.895 651.514 null] >> % 1559 0 obj << -/D [1553 0 R /XYZ 99.895 575.798 null] +/D [1554 0 R /XYZ 99.895 607.678 null] >> % 1560 0 obj << -/D [1553 0 R /XYZ 99.895 520.007 null] +/D [1554 0 R /XYZ 99.895 575.798 null] >> % 1561 0 obj << -/D [1553 0 R /XYZ 99.895 476.171 null] +/D [1554 0 R /XYZ 99.895 520.007 null] >> -% 1552 0 obj +% 1562 0 obj +<< +/D [1554 0 R /XYZ 99.895 476.171 null] +>> +% 1553 0 obj << /Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1567 0 obj +% 1568 0 obj << /Type /Page -/Contents 1568 0 R -/Resources 1566 0 R +/Contents 1569 0 R +/Resources 1567 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1562 0 R -/Annots [ 1563 0 R 1564 0 R 1565 0 R ] +/Parent 1563 0 R +/Annots [ 1564 0 R 1565 0 R 1566 0 R ] >> -% 1563 0 obj +% 1564 0 obj << /Type /Annot /Subtype /Link @@ -19640,7 +19624,7 @@ stream /Rect [342.753 572.168 409.811 584.228] /A << /S /GoTo /D (descdata) >> >> -% 1564 0 obj +% 1565 0 obj << /Type /Annot /Subtype /Link @@ -19648,7 +19632,7 @@ stream /Rect [342.753 276.913 420.271 288.973] /A << /S /GoTo /D (spdata) >> >> -% 1565 0 obj +% 1566 0 obj << /Type /Annot /Subtype /Link @@ -19656,74 +19640,74 @@ stream /Rect [345.92 208.672 412.978 220.731] /A << /S /GoTo /D (descdata) >> >> -% 1569 0 obj +% 1570 0 obj << -/D [1567 0 R /XYZ 149.705 753.953 null] +/D [1568 0 R /XYZ 149.705 753.953 null] >> % 344 0 obj << -/D [1567 0 R /XYZ 150.705 716.092 null] +/D [1568 0 R /XYZ 150.705 716.092 null] >> -% 1566 0 obj +% 1567 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1571 0 obj +% 1572 0 obj << /Type /Page -/Contents 1572 0 R -/Resources 1570 0 R +/Contents 1573 0 R +/Resources 1571 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1562 0 R ->> -% 1573 0 obj -<< -/D [1571 0 R /XYZ 98.895 753.953 null] +/Parent 1563 0 R >> % 1574 0 obj << -/D [1571 0 R /XYZ 99.895 701.929 null] +/D [1572 0 R /XYZ 98.895 753.953 null] >> % 1575 0 obj << -/D [1571 0 R /XYZ 99.895 667.454 null] +/D [1572 0 R /XYZ 99.895 701.929 null] >> % 1576 0 obj << -/D [1571 0 R /XYZ 99.895 647.529 null] +/D [1572 0 R /XYZ 99.895 667.454 null] >> % 1577 0 obj << -/D [1571 0 R /XYZ 99.895 603.693 null] +/D [1572 0 R /XYZ 99.895 647.529 null] >> % 1578 0 obj << -/D [1571 0 R /XYZ 99.895 547.902 null] +/D [1572 0 R /XYZ 99.895 603.693 null] >> % 1579 0 obj << -/D [1571 0 R /XYZ 99.895 527.977 null] +/D [1572 0 R /XYZ 99.895 547.902 null] >> % 1580 0 obj << -/D [1571 0 R /XYZ 99.895 496.097 null] +/D [1572 0 R /XYZ 99.895 527.977 null] >> -% 1570 0 obj +% 1581 0 obj +<< +/D [1572 0 R /XYZ 99.895 496.097 null] +>> +% 1571 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1584 0 obj +% 1585 0 obj << /Type /Page -/Contents 1585 0 R -/Resources 1583 0 R +/Contents 1586 0 R +/Resources 1584 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1562 0 R -/Annots [ 1581 0 R 1582 0 R ] +/Parent 1563 0 R +/Annots [ 1582 0 R 1583 0 R ] >> -% 1581 0 obj +% 1582 0 obj << /Type /Annot /Subtype /Link @@ -19731,7 +19715,7 @@ stream /Rect [342.753 573.77 420.271 585.83] /A << /S /GoTo /D (spdata) >> >> -% 1582 0 obj +% 1583 0 obj << /Type /Annot /Subtype /Link @@ -19739,29 +19723,29 @@ stream /Rect [342.753 506.024 409.811 518.084] /A << /S /GoTo /D (descdata) >> >> -% 1586 0 obj +% 1587 0 obj << -/D [1584 0 R /XYZ 149.705 753.953 null] +/D [1585 0 R /XYZ 149.705 753.953 null] >> % 348 0 obj << -/D [1584 0 R /XYZ 150.705 716.092 null] +/D [1585 0 R /XYZ 150.705 716.092 null] >> -% 1583 0 obj +% 1584 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1590 0 obj +% 1591 0 obj << /Type /Page -/Contents 1591 0 R -/Resources 1589 0 R +/Contents 1592 0 R +/Resources 1590 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1562 0 R -/Annots [ 1587 0 R 1588 0 R ] +/Parent 1563 0 R +/Annots [ 1588 0 R 1589 0 R ] >> -% 1587 0 obj +% 1588 0 obj << /Type /Annot /Subtype /Link @@ -19769,7 +19753,7 @@ stream /Rect [291.943 559.823 369.462 571.882] /A << /S /GoTo /D (spdata) >> >> -% 1588 0 obj +% 1589 0 obj << /Type /Annot /Subtype /Link @@ -19777,33 +19761,33 @@ stream /Rect [291.943 492.077 359.001 504.136] /A << /S /GoTo /D (descdata) >> >> -% 1592 0 obj +% 1593 0 obj << -/D [1590 0 R /XYZ 98.895 753.953 null] +/D [1591 0 R /XYZ 98.895 753.953 null] >> % 352 0 obj << -/D [1590 0 R /XYZ 99.895 716.092 null] +/D [1591 0 R /XYZ 99.895 716.092 null] >> -% 1593 0 obj +% 1594 0 obj << -/D [1590 0 R /XYZ 99.895 312.355 null] +/D [1591 0 R /XYZ 99.895 312.355 null] >> -% 1589 0 obj +% 1590 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1597 0 obj +% 1598 0 obj << /Type /Page -/Contents 1598 0 R -/Resources 1596 0 R +/Contents 1599 0 R +/Resources 1597 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1562 0 R -/Annots [ 1594 0 R 1595 0 R ] +/Parent 1563 0 R +/Annots [ 1595 0 R 1596 0 R ] >> -% 1594 0 obj +% 1595 0 obj << /Type /Annot /Subtype /Link @@ -19811,7 +19795,7 @@ stream /Rect [310.942 577.893 378 589.953] /A << /S /GoTo /D (descdata) >> >> -% 1595 0 obj +% 1596 0 obj << /Type /Annot /Subtype /Link @@ -19819,31 +19803,46 @@ stream /Rect [261.249 128.475 337.303 140.535] /A << /S /GoTo /D (vdata) >> >> -% 1599 0 obj +% 1600 0 obj << -/D [1597 0 R /XYZ 149.705 753.953 null] +/D [1598 0 R /XYZ 149.705 753.953 null] >> % 356 0 obj << -/D [1597 0 R /XYZ 150.705 716.092 null] +/D [1598 0 R /XYZ 150.705 716.092 null] >> -% 1596 0 obj +% 1597 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1601 0 obj + +endstream +endobj +1603 0 obj << -/Type /Page -/Contents 1602 0 R -/Resources 1600 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1605 0 R +/Length 925 >> +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +0 g 0 G +/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +0 g 0 G +/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +0 g 0 G + [-500(Using)]TJ/F67 9.9626 Tf 41.798 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.28 0 Td [(is)-314(likely)-315(to)-315(cau)1(se)-315(a)-315(r)8(untime)-314(over)18(head)-315(at)-314(as-)]TJ -126.625 -11.955 Td [(sembly)-250(time;)]TJ +0 g 0 G + 141.968 -514.072 Td [(91)]TJ +0 g 0 G +ET endstream endobj -1611 0 obj +1612 0 obj << /Length 6336 >> @@ -19957,7 +19956,7 @@ ET endstream endobj -1615 0 obj +1616 0 obj << /Length 539 >> @@ -19981,7 +19980,7 @@ ET endstream endobj -1624 0 obj +1625 0 obj << /Length 6120 >> @@ -20144,7 +20143,7 @@ ET endstream endobj -1632 0 obj +1633 0 obj << /Length 3224 >> @@ -20242,7 +20241,7 @@ ET endstream endobj -1636 0 obj +1637 0 obj << /Length 3218 >> @@ -20294,7 +20293,7 @@ ET endstream endobj -1641 0 obj +1642 0 obj << /Length 6238 >> @@ -20397,7 +20396,7 @@ ET endstream endobj -1646 0 obj +1647 0 obj << /Length 672 >> @@ -20420,7 +20419,7 @@ ET endstream endobj -1653 0 obj +1654 0 obj << /Length 5458 >> @@ -20519,7 +20518,7 @@ ET endstream endobj -1658 0 obj +1659 0 obj << /Length 3169 >> @@ -20603,7 +20602,7 @@ ET endstream endobj -1664 0 obj +1665 0 obj << /Length 4795 >> @@ -20695,7 +20694,7 @@ ET endstream endobj -1670 0 obj +1671 0 obj << /Length 3147 >> @@ -20779,7 +20778,7 @@ ET endstream endobj -1676 0 obj +1677 0 obj << /Length 4785 >> @@ -20871,7 +20870,7 @@ ET endstream endobj -1683 0 obj +1684 0 obj << /Length 3647 >> @@ -20952,7 +20951,7 @@ ET endstream endobj -1690 0 obj +1691 0 obj << /Length 3458 >> @@ -21033,7 +21032,7 @@ ET endstream endobj -1697 0 obj +1698 0 obj << /Length 5480 >> @@ -21122,7 +21121,7 @@ ET endstream endobj -1701 0 obj +1702 0 obj << /Length 3529 >> @@ -21161,7 +21160,7 @@ ET endstream endobj -1711 0 obj +1712 0 obj << /Length 3995 >> @@ -21278,43 +21277,51 @@ endobj << /Type /ObjStm /N 100 -/First 974 -/Length 10472 ->> -stream -1603 0 1604 58 1600 115 1610 209 1607 357 1608 503 1612 647 360 706 1609 764 1614 884 -1616 1002 1617 1060 1618 1118 1613 1176 1623 1257 1619 1414 1620 1555 1621 1698 1625 1842 364 1901 -1626 1959 1627 2018 1622 2077 1631 2184 1628 2332 1629 2475 1633 2622 368 2680 1630 2737 1635 2831 -1637 2949 372 3008 1634 3066 1640 3173 1638 3312 1642 3459 376 3517 1639 3574 1645 3681 1647 3799 -1648 3858 1649 3917 1644 3976 1652 4057 1650 4196 1654 4343 380 4401 1651 4458 1657 4565 1655 4704 -1659 4851 384 4910 1660 4968 1656 5027 1663 5134 1661 5273 1665 5420 388 5478 1666 5535 1662 5593 -1669 5700 1667 5839 1671 5986 392 6045 1672 6103 1668 6162 1675 6269 1673 6408 1677 6555 396 6613 -1678 6670 1674 6728 1682 6835 1680 6974 1684 7119 400 7178 1685 7236 1686 7295 1681 7354 1689 7448 -1687 7587 1691 7732 405 7790 1692 7847 1693 7905 1688 7963 1696 8057 1694 8196 1698 8341 409 8400 -1695 8458 1700 8579 1702 8697 1703 8755 1704 8813 1705 8871 1699 8929 1710 9049 1706 9206 1707 9351 -% 1603 0 obj +/First 975 +/Length 10444 +>> +stream +1602 0 1604 118 1605 176 1601 233 1611 327 1608 475 1609 621 1613 765 360 824 1610 882 +1615 1002 1617 1120 1618 1178 1619 1236 1614 1294 1624 1375 1620 1532 1621 1673 1622 1816 1626 1960 +364 2019 1627 2077 1628 2136 1623 2195 1632 2302 1629 2450 1630 2593 1634 2740 368 2798 1631 2855 +1636 2949 1638 3067 372 3126 1635 3184 1641 3291 1639 3430 1643 3577 376 3635 1640 3692 1646 3799 +1648 3917 1649 3976 1650 4035 1645 4094 1653 4175 1651 4314 1655 4461 380 4519 1652 4576 1658 4683 +1656 4822 1660 4969 384 5028 1661 5086 1657 5145 1664 5252 1662 5391 1666 5538 388 5596 1667 5653 +1663 5711 1670 5818 1668 5957 1672 6104 392 6163 1673 6221 1669 6280 1676 6387 1674 6526 1678 6673 +396 6731 1679 6788 1675 6846 1683 6953 1681 7092 1685 7237 400 7296 1686 7354 1687 7413 1682 7472 +1690 7566 1688 7705 1692 7850 405 7908 1693 7965 1694 8023 1689 8081 1697 8175 1695 8314 1699 8459 +409 8518 1696 8576 1701 8697 1703 8815 1704 8873 1705 8931 1706 8989 1700 9047 1711 9167 1707 9324 +% 1602 0 obj << -/D [1601 0 R /XYZ 98.895 753.953 null] +/Type /Page +/Contents 1603 0 R +/Resources 1601 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1607 0 R >> % 1604 0 obj << -/D [1601 0 R /XYZ 99.895 632.19 null] +/D [1602 0 R /XYZ 98.895 753.953 null] >> -% 1600 0 obj +% 1605 0 obj +<< +/D [1602 0 R /XYZ 99.895 632.19 null] +>> +% 1601 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1610 0 obj +% 1611 0 obj << /Type /Page -/Contents 1611 0 R -/Resources 1609 0 R +/Contents 1612 0 R +/Resources 1610 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1605 0 R -/Annots [ 1607 0 R 1608 0 R ] +/Parent 1607 0 R +/Annots [ 1608 0 R 1609 0 R ] >> -% 1607 0 obj +% 1608 0 obj << /Type /Annot /Subtype /Link @@ -21322,7 +21329,7 @@ stream /Rect [342.753 362.621 409.811 374.68] /A << /S /GoTo /D (descdata) >> >> -% 1608 0 obj +% 1609 0 obj << /Type /Annot /Subtype /Link @@ -21330,54 +21337,54 @@ stream /Rect [417.183 207.637 493.237 219.697] /A << /S /GoTo /D (vdata) >> >> -% 1612 0 obj +% 1613 0 obj << -/D [1610 0 R /XYZ 149.705 753.953 null] +/D [1611 0 R /XYZ 149.705 753.953 null] >> % 360 0 obj << -/D [1610 0 R /XYZ 150.705 716.092 null] +/D [1611 0 R /XYZ 150.705 716.092 null] >> -% 1609 0 obj +% 1610 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1614 0 obj +% 1615 0 obj << /Type /Page -/Contents 1615 0 R -/Resources 1613 0 R +/Contents 1616 0 R +/Resources 1614 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1605 0 R ->> -% 1616 0 obj -<< -/D [1614 0 R /XYZ 98.895 753.953 null] +/Parent 1607 0 R >> % 1617 0 obj << -/D [1614 0 R /XYZ 99.895 701.929 null] +/D [1615 0 R /XYZ 98.895 753.953 null] >> % 1618 0 obj << -/D [1614 0 R /XYZ 99.895 680.684 null] +/D [1615 0 R /XYZ 99.895 701.929 null] >> -% 1613 0 obj +% 1619 0 obj +<< +/D [1615 0 R /XYZ 99.895 680.684 null] +>> +% 1614 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1623 0 obj +% 1624 0 obj << /Type /Page -/Contents 1624 0 R -/Resources 1622 0 R +/Contents 1625 0 R +/Resources 1623 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1605 0 R -/Annots [ 1619 0 R 1620 0 R 1621 0 R ] +/Parent 1607 0 R +/Annots [ 1620 0 R 1621 0 R 1622 0 R ] >> -% 1619 0 obj +% 1620 0 obj << /Type /Annot /Subtype /Link @@ -21385,7 +21392,7 @@ stream /Rect [310.942 573.77 378 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1620 0 obj +% 1621 0 obj << /Type /Annot /Subtype /Link @@ -21393,7 +21400,7 @@ stream /Rect [322.33 482.114 398.384 494.174] /A << /S /GoTo /D (vdata) >> >> -% 1621 0 obj +% 1622 0 obj << /Type /Annot /Subtype /Link @@ -21401,37 +21408,37 @@ stream /Rect [225.165 380.495 301.219 392.555] /A << /S /GoTo /D (vdata) >> >> -% 1625 0 obj +% 1626 0 obj << -/D [1623 0 R /XYZ 149.705 753.953 null] +/D [1624 0 R /XYZ 149.705 753.953 null] >> % 364 0 obj << -/D [1623 0 R /XYZ 150.705 716.092 null] +/D [1624 0 R /XYZ 150.705 716.092 null] >> -% 1626 0 obj +% 1627 0 obj << -/D [1623 0 R /XYZ 150.705 278.482 null] +/D [1624 0 R /XYZ 150.705 278.482 null] >> -% 1627 0 obj +% 1628 0 obj << -/D [1623 0 R /XYZ 150.705 244.007 null] +/D [1624 0 R /XYZ 150.705 244.007 null] >> -% 1622 0 obj +% 1623 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1631 0 obj +% 1632 0 obj << /Type /Page -/Contents 1632 0 R -/Resources 1630 0 R +/Contents 1633 0 R +/Resources 1631 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1605 0 R -/Annots [ 1628 0 R 1629 0 R ] +/Parent 1607 0 R +/Annots [ 1629 0 R 1630 0 R ] >> -% 1628 0 obj +% 1629 0 obj << /Type /Annot /Subtype /Link @@ -21439,7 +21446,7 @@ stream /Rect [174.355 561.815 250.41 573.875] /A << /S /GoTo /D (vdata) >> >> -% 1629 0 obj +% 1630 0 obj << /Type /Annot /Subtype /Link @@ -21447,50 +21454,50 @@ stream /Rect [260.133 482.114 327.191 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1633 0 obj +% 1634 0 obj << -/D [1631 0 R /XYZ 98.895 753.953 null] +/D [1632 0 R /XYZ 98.895 753.953 null] >> % 368 0 obj << -/D [1631 0 R /XYZ 99.895 716.092 null] +/D [1632 0 R /XYZ 99.895 716.092 null] >> -% 1630 0 obj +% 1631 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1635 0 obj +% 1636 0 obj << /Type /Page -/Contents 1636 0 R -/Resources 1634 0 R +/Contents 1637 0 R +/Resources 1635 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1605 0 R +/Parent 1607 0 R >> -% 1637 0 obj +% 1638 0 obj << -/D [1635 0 R /XYZ 149.705 753.953 null] +/D [1636 0 R /XYZ 149.705 753.953 null] >> % 372 0 obj << -/D [1635 0 R /XYZ 150.705 716.092 null] +/D [1636 0 R /XYZ 150.705 716.092 null] >> -% 1634 0 obj +% 1635 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1640 0 obj +% 1641 0 obj << /Type /Page -/Contents 1641 0 R -/Resources 1639 0 R +/Contents 1642 0 R +/Resources 1640 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1643 0 R -/Annots [ 1638 0 R ] +/Parent 1644 0 R +/Annots [ 1639 0 R ] >> -% 1638 0 obj +% 1639 0 obj << /Type /Annot /Subtype /Link @@ -21498,54 +21505,54 @@ stream /Rect [291.943 483.894 359.001 495.954] /A << /S /GoTo /D (descdata) >> >> -% 1642 0 obj +% 1643 0 obj << -/D [1640 0 R /XYZ 98.895 753.953 null] +/D [1641 0 R /XYZ 98.895 753.953 null] >> % 376 0 obj << -/D [1640 0 R /XYZ 99.895 716.092 null] +/D [1641 0 R /XYZ 99.895 716.092 null] >> -% 1639 0 obj +% 1640 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1645 0 obj +% 1646 0 obj << /Type /Page -/Contents 1646 0 R -/Resources 1644 0 R +/Contents 1647 0 R +/Resources 1645 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1643 0 R ->> -% 1647 0 obj -<< -/D [1645 0 R /XYZ 149.705 753.953 null] +/Parent 1644 0 R >> % 1648 0 obj << -/D [1645 0 R /XYZ 150.705 716.092 null] +/D [1646 0 R /XYZ 149.705 753.953 null] >> % 1649 0 obj << -/D [1645 0 R /XYZ 150.705 687.379 null] +/D [1646 0 R /XYZ 150.705 716.092 null] >> -% 1644 0 obj +% 1650 0 obj +<< +/D [1646 0 R /XYZ 150.705 687.379 null] +>> +% 1645 0 obj << /Font << /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1652 0 obj +% 1653 0 obj << /Type /Page -/Contents 1653 0 R -/Resources 1651 0 R +/Contents 1654 0 R +/Resources 1652 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1643 0 R -/Annots [ 1650 0 R ] +/Parent 1644 0 R +/Annots [ 1651 0 R ] >> -% 1650 0 obj +% 1651 0 obj << /Type /Annot /Subtype /Link @@ -21553,29 +21560,29 @@ stream /Rect [291.943 482.114 359.001 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1654 0 obj +% 1655 0 obj << -/D [1652 0 R /XYZ 98.895 753.953 null] +/D [1653 0 R /XYZ 98.895 753.953 null] >> % 380 0 obj << -/D [1652 0 R /XYZ 99.895 716.092 null] +/D [1653 0 R /XYZ 99.895 716.092 null] >> -% 1651 0 obj +% 1652 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1657 0 obj +% 1658 0 obj << /Type /Page -/Contents 1658 0 R -/Resources 1656 0 R +/Contents 1659 0 R +/Resources 1657 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1643 0 R -/Annots [ 1655 0 R ] +/Parent 1644 0 R +/Annots [ 1656 0 R ] >> -% 1655 0 obj +% 1656 0 obj << /Type /Annot /Subtype /Link @@ -21583,33 +21590,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1659 0 obj +% 1660 0 obj << -/D [1657 0 R /XYZ 149.705 753.953 null] +/D [1658 0 R /XYZ 149.705 753.953 null] >> % 384 0 obj << -/D [1657 0 R /XYZ 150.705 716.092 null] +/D [1658 0 R /XYZ 150.705 716.092 null] >> -% 1660 0 obj +% 1661 0 obj << -/D [1657 0 R /XYZ 150.705 382.093 null] +/D [1658 0 R /XYZ 150.705 382.093 null] >> -% 1656 0 obj +% 1657 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1663 0 obj +% 1664 0 obj << /Type /Page -/Contents 1664 0 R -/Resources 1662 0 R +/Contents 1665 0 R +/Resources 1663 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1643 0 R -/Annots [ 1661 0 R ] +/Parent 1644 0 R +/Annots [ 1662 0 R ] >> -% 1661 0 obj +% 1662 0 obj << /Type /Annot /Subtype /Link @@ -21617,33 +21624,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1665 0 obj +% 1666 0 obj << -/D [1663 0 R /XYZ 98.895 753.953 null] +/D [1664 0 R /XYZ 98.895 753.953 null] >> % 388 0 obj << -/D [1663 0 R /XYZ 99.895 716.092 null] +/D [1664 0 R /XYZ 99.895 716.092 null] >> -% 1666 0 obj +% 1667 0 obj << -/D [1663 0 R /XYZ 99.895 258.556 null] +/D [1664 0 R /XYZ 99.895 258.556 null] >> -% 1662 0 obj +% 1663 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1669 0 obj +% 1670 0 obj << /Type /Page -/Contents 1670 0 R -/Resources 1668 0 R +/Contents 1671 0 R +/Resources 1669 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1643 0 R -/Annots [ 1667 0 R ] +/Parent 1644 0 R +/Annots [ 1668 0 R ] >> -% 1667 0 obj +% 1668 0 obj << /Type /Annot /Subtype /Link @@ -21651,33 +21658,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1671 0 obj +% 1672 0 obj << -/D [1669 0 R /XYZ 149.705 753.953 null] +/D [1670 0 R /XYZ 149.705 753.953 null] >> % 392 0 obj << -/D [1669 0 R /XYZ 150.705 716.092 null] +/D [1670 0 R /XYZ 150.705 716.092 null] >> -% 1672 0 obj +% 1673 0 obj << -/D [1669 0 R /XYZ 150.705 382.093 null] +/D [1670 0 R /XYZ 150.705 382.093 null] >> -% 1668 0 obj +% 1669 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1675 0 obj +% 1676 0 obj << /Type /Page -/Contents 1676 0 R -/Resources 1674 0 R +/Contents 1677 0 R +/Resources 1675 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1679 0 R -/Annots [ 1673 0 R ] +/Parent 1680 0 R +/Annots [ 1674 0 R ] >> -% 1673 0 obj +% 1674 0 obj << /Type /Annot /Subtype /Link @@ -21685,33 +21692,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1677 0 obj +% 1678 0 obj << -/D [1675 0 R /XYZ 98.895 753.953 null] +/D [1676 0 R /XYZ 98.895 753.953 null] >> % 396 0 obj << -/D [1675 0 R /XYZ 99.895 716.092 null] +/D [1676 0 R /XYZ 99.895 716.092 null] >> -% 1678 0 obj +% 1679 0 obj << -/D [1675 0 R /XYZ 99.895 258.556 null] +/D [1676 0 R /XYZ 99.895 258.556 null] >> -% 1674 0 obj +% 1675 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1682 0 obj +% 1683 0 obj << /Type /Page -/Contents 1683 0 R -/Resources 1681 0 R +/Contents 1684 0 R +/Resources 1682 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1679 0 R -/Annots [ 1680 0 R ] +/Parent 1680 0 R +/Annots [ 1681 0 R ] >> -% 1680 0 obj +% 1681 0 obj << /Type /Annot /Subtype /Link @@ -21719,37 +21726,37 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1684 0 obj +% 1685 0 obj << -/D [1682 0 R /XYZ 149.705 753.953 null] +/D [1683 0 R /XYZ 149.705 753.953 null] >> % 400 0 obj << -/D [1682 0 R /XYZ 150.705 716.092 null] +/D [1683 0 R /XYZ 150.705 716.092 null] >> -% 1685 0 obj +% 1686 0 obj << -/D [1682 0 R /XYZ 150.705 358.183 null] +/D [1683 0 R /XYZ 150.705 358.183 null] >> -% 1686 0 obj +% 1687 0 obj << -/D [1682 0 R /XYZ 150.705 314.403 null] +/D [1683 0 R /XYZ 150.705 314.403 null] >> -% 1681 0 obj +% 1682 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1689 0 obj +% 1690 0 obj << /Type /Page -/Contents 1690 0 R -/Resources 1688 0 R +/Contents 1691 0 R +/Resources 1689 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1679 0 R -/Annots [ 1687 0 R ] +/Parent 1680 0 R +/Annots [ 1688 0 R ] >> -% 1687 0 obj +% 1688 0 obj << /Type /Annot /Subtype /Link @@ -21757,37 +21764,37 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1691 0 obj +% 1692 0 obj << -/D [1689 0 R /XYZ 98.895 753.953 null] +/D [1690 0 R /XYZ 98.895 753.953 null] >> % 405 0 obj << -/D [1689 0 R /XYZ 99.895 716.092 null] +/D [1690 0 R /XYZ 99.895 716.092 null] >> -% 1692 0 obj +% 1693 0 obj << -/D [1689 0 R /XYZ 99.895 370.138 null] +/D [1690 0 R /XYZ 99.895 370.138 null] >> -% 1693 0 obj +% 1694 0 obj << -/D [1689 0 R /XYZ 99.895 338.313 null] +/D [1690 0 R /XYZ 99.895 338.313 null] >> -% 1688 0 obj +% 1689 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1696 0 obj +% 1697 0 obj << /Type /Page -/Contents 1697 0 R -/Resources 1695 0 R +/Contents 1698 0 R +/Resources 1696 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1679 0 R -/Annots [ 1694 0 R ] +/Parent 1680 0 R +/Annots [ 1695 0 R ] >> -% 1694 0 obj +% 1695 0 obj << /Type /Annot /Subtype /Link @@ -21795,58 +21802,58 @@ stream /Rect [342.753 491.971 420.271 504.031] /A << /S /GoTo /D (spdata) >> >> -% 1698 0 obj +% 1699 0 obj << -/D [1696 0 R /XYZ 149.705 753.953 null] +/D [1697 0 R /XYZ 149.705 753.953 null] >> % 409 0 obj << -/D [1696 0 R /XYZ 150.705 716.092 null] +/D [1697 0 R /XYZ 150.705 716.092 null] >> -% 1695 0 obj +% 1696 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1465 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1466 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1700 0 obj +% 1701 0 obj << /Type /Page -/Contents 1701 0 R -/Resources 1699 0 R +/Contents 1702 0 R +/Resources 1700 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1679 0 R ->> -% 1702 0 obj -<< -/D [1700 0 R /XYZ 98.895 753.953 null] +/Parent 1680 0 R >> % 1703 0 obj << -/D [1700 0 R /XYZ 99.895 496.698 null] +/D [1701 0 R /XYZ 98.895 753.953 null] >> % 1704 0 obj << -/D [1700 0 R /XYZ 99.895 438.313 null] +/D [1701 0 R /XYZ 99.895 496.698 null] >> % 1705 0 obj << -/D [1700 0 R /XYZ 99.895 418.388 null] +/D [1701 0 R /XYZ 99.895 438.313 null] >> -% 1699 0 obj +% 1706 0 obj +<< +/D [1701 0 R /XYZ 99.895 418.388 null] +>> +% 1700 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1710 0 obj +% 1711 0 obj << /Type /Page -/Contents 1711 0 R -/Resources 1709 0 R +/Contents 1712 0 R +/Resources 1710 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1679 0 R -/Annots [ 1706 0 R 1707 0 R 1708 0 R ] +/Parent 1680 0 R +/Annots [ 1707 0 R 1708 0 R 1709 0 R ] >> -% 1706 0 obj +% 1707 0 obj << /Type /Annot /Subtype /Link @@ -21854,18 +21861,10 @@ stream /Rect [342.753 527.942 420.271 540.002] /A << /S /GoTo /D (spdata) >> >> -% 1707 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 460.196 409.811 472.256] -/A << /S /GoTo /D (descdata) >> ->> endstream endobj -1716 0 obj +1717 0 obj << /Length 5626 >> @@ -21947,7 +21946,7 @@ ET endstream endobj -1721 0 obj +1722 0 obj << /Length 7300 >> @@ -22055,7 +22054,7 @@ ET endstream endobj -1734 0 obj +1735 0 obj << /Length 171 >> @@ -22071,7 +22070,7 @@ ET endstream endobj -1738 0 obj +1739 0 obj << /Length 5510 >> @@ -22145,7 +22144,7 @@ ET endstream endobj -1744 0 obj +1745 0 obj << /Length 4457 >> @@ -22201,7 +22200,7 @@ ET endstream endobj -1750 0 obj +1751 0 obj << /Length 4180 >> @@ -22254,7 +22253,7 @@ ET endstream endobj -1757 0 obj +1758 0 obj << /Length 2476 >> @@ -22312,7 +22311,7 @@ ET endstream endobj -1762 0 obj +1763 0 obj << /Length 3337 >> @@ -22374,7 +22373,7 @@ ET endstream endobj -1766 0 obj +1767 0 obj << /Length 1155 >> @@ -22411,7 +22410,7 @@ ET endstream endobj -1770 0 obj +1771 0 obj << /Length 1388 >> @@ -22448,7 +22447,7 @@ ET endstream endobj -1774 0 obj +1775 0 obj << /Length 1283 >> @@ -22485,7 +22484,7 @@ ET endstream endobj -1778 0 obj +1779 0 obj << /Length 5526 >> @@ -22541,7 +22540,7 @@ ET endstream endobj -1782 0 obj +1783 0 obj << /Length 5329 >> @@ -22667,7 +22666,7 @@ ET endstream endobj -1791 0 obj +1792 0 obj << /Length 5829 >> @@ -22727,7 +22726,7 @@ ET endstream endobj -1795 0 obj +1796 0 obj << /Length 4964 >> @@ -22850,7 +22849,7 @@ ET endstream endobj -1802 0 obj +1803 0 obj << /Length 5548 >> @@ -22906,7 +22905,7 @@ ET endstream endobj -1806 0 obj +1807 0 obj << /Length 5227 >> @@ -23032,7 +23031,7 @@ ET endstream endobj -1813 0 obj +1814 0 obj << /Length 5813 >> @@ -23092,7 +23091,7 @@ ET endstream endobj -1817 0 obj +1818 0 obj << /Length 4946 >> @@ -23215,527 +23214,531 @@ ET endstream endobj -1713 0 obj +1714 0 obj << /Type /ObjStm /N 100 -/First 971 -/Length 9221 ->> -stream -1708 0 1712 147 413 206 1709 264 1715 371 1717 489 417 547 1714 604 1720 711 1722 829 -1723 888 1724 947 1725 1006 1726 1065 1727 1124 1728 1183 1729 1242 1730 1301 1731 1360 1719 1419 -1733 1539 1735 1657 421 1715 1732 1772 1737 1853 1739 1971 425 2030 1740 2088 1741 2147 1736 2206 -1743 2339 1745 2457 429 2515 1746 2572 1747 2629 1742 2685 1749 2818 1751 2936 433 2995 1752 3053 -1753 3112 1754 3171 1748 3230 1756 3363 1758 3481 437 3539 1755 3596 1761 3690 1763 3808 441 3867 -1760 3925 1765 4045 1767 4163 445 4221 1764 4278 1769 4372 1771 4490 449 4549 1768 4607 1773 4701 -1775 4819 453 4877 1772 4934 1777 5028 1779 5146 457 5205 1776 5263 1781 5410 1783 5528 1784 5586 -1785 5644 1786 5702 1780 5760 1790 5897 1792 6015 461 6074 1789 6132 1794 6279 1796 6397 1797 6455 -1798 6513 1799 6571 1793 6629 1801 6766 1803 6884 465 6943 1800 7001 1805 7148 1807 7266 1808 7324 -1809 7382 1810 7440 1804 7497 1812 7634 1814 7752 469 7811 1811 7869 1816 8016 1818 8134 1819 8192 +/First 972 +/Length 9311 +>> +stream +1708 0 1709 147 1713 294 413 353 1710 411 1716 518 1718 636 417 694 1715 751 1721 858 +1723 976 1724 1035 1725 1094 1726 1153 1727 1212 1728 1271 1729 1330 1730 1389 1731 1448 1732 1507 +1720 1566 1734 1686 1736 1804 421 1862 1733 1919 1738 2000 1740 2118 425 2177 1741 2235 1742 2294 +1737 2353 1744 2486 1746 2604 429 2662 1747 2719 1748 2776 1743 2832 1750 2965 1752 3083 433 3142 +1753 3200 1754 3259 1755 3318 1749 3377 1757 3510 1759 3628 437 3686 1756 3743 1762 3837 1764 3955 +441 4014 1761 4072 1766 4192 1768 4310 445 4368 1765 4425 1770 4519 1772 4637 449 4696 1769 4754 +1774 4848 1776 4966 453 5024 1773 5081 1778 5175 1780 5293 457 5352 1777 5410 1782 5557 1784 5675 +1785 5733 1786 5791 1787 5849 1781 5907 1791 6044 1793 6162 461 6221 1790 6279 1795 6426 1797 6544 +1798 6602 1799 6660 1800 6718 1794 6776 1802 6913 1804 7031 465 7090 1801 7148 1806 7295 1808 7413 +1809 7471 1810 7529 1811 7587 1805 7644 1813 7781 1815 7899 469 7958 1812 8016 1817 8163 1819 8281 % 1708 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 460.196 409.811 472.256] +/A << /S /GoTo /D (descdata) >> +>> +% 1709 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] /Rect [371.126 404.405 438.184 416.465] /A << /S /GoTo /D (precdata) >> >> -% 1712 0 obj +% 1713 0 obj << -/D [1710 0 R /XYZ 149.705 753.953 null] +/D [1711 0 R /XYZ 149.705 753.953 null] >> % 413 0 obj << -/D [1710 0 R /XYZ 150.705 716.092 null] +/D [1711 0 R /XYZ 150.705 716.092 null] >> -% 1709 0 obj +% 1710 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1715 0 obj +% 1716 0 obj << /Type /Page -/Contents 1716 0 R -/Resources 1714 0 R +/Contents 1717 0 R +/Resources 1715 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1718 0 R +/Parent 1719 0 R >> -% 1717 0 obj +% 1718 0 obj << -/D [1715 0 R /XYZ 98.895 753.953 null] +/D [1716 0 R /XYZ 98.895 753.953 null] >> % 417 0 obj << -/D [1715 0 R /XYZ 99.895 716.092 null] +/D [1716 0 R /XYZ 99.895 716.092 null] >> -% 1714 0 obj +% 1715 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1720 0 obj +% 1721 0 obj << /Type /Page -/Contents 1721 0 R -/Resources 1719 0 R +/Contents 1722 0 R +/Resources 1720 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1718 0 R ->> -% 1722 0 obj -<< -/D [1720 0 R /XYZ 149.705 753.953 null] +/Parent 1719 0 R >> % 1723 0 obj << -/D [1720 0 R /XYZ 150.705 701.929 null] +/D [1721 0 R /XYZ 149.705 753.953 null] >> % 1724 0 obj << -/D [1720 0 R /XYZ 150.705 668.729 null] +/D [1721 0 R /XYZ 150.705 701.929 null] >> % 1725 0 obj << -/D [1720 0 R /XYZ 150.705 624.894 null] +/D [1721 0 R /XYZ 150.705 668.729 null] >> % 1726 0 obj << -/D [1720 0 R /XYZ 150.705 555.872 null] +/D [1721 0 R /XYZ 150.705 624.894 null] >> % 1727 0 obj << -/D [1720 0 R /XYZ 150.705 500.082 null] +/D [1721 0 R /XYZ 150.705 555.872 null] >> % 1728 0 obj << -/D [1720 0 R /XYZ 150.705 468.201 null] +/D [1721 0 R /XYZ 150.705 500.082 null] >> % 1729 0 obj << -/D [1720 0 R /XYZ 150.705 425.023 null] +/D [1721 0 R /XYZ 150.705 468.201 null] >> % 1730 0 obj << -/D [1720 0 R /XYZ 150.705 382.522 null] +/D [1721 0 R /XYZ 150.705 425.023 null] >> % 1731 0 obj << -/D [1720 0 R /XYZ 150.705 354.627 null] +/D [1721 0 R /XYZ 150.705 382.522 null] >> -% 1719 0 obj +% 1732 0 obj +<< +/D [1721 0 R /XYZ 150.705 354.627 null] +>> +% 1720 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1733 0 obj +% 1734 0 obj << /Type /Page -/Contents 1734 0 R -/Resources 1732 0 R +/Contents 1735 0 R +/Resources 1733 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1718 0 R +/Parent 1719 0 R >> -% 1735 0 obj +% 1736 0 obj << -/D [1733 0 R /XYZ 98.895 753.953 null] +/D [1734 0 R /XYZ 98.895 753.953 null] >> % 421 0 obj << -/D [1733 0 R /XYZ 99.895 716.092 null] +/D [1734 0 R /XYZ 99.895 716.092 null] >> -% 1732 0 obj +% 1733 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1737 0 obj +% 1738 0 obj << /Type /Page -/Contents 1738 0 R -/Resources 1736 0 R +/Contents 1739 0 R +/Resources 1737 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1718 0 R +/Parent 1719 0 R >> -% 1739 0 obj +% 1740 0 obj << -/D [1737 0 R /XYZ 149.705 753.953 null] +/D [1738 0 R /XYZ 149.705 753.953 null] >> % 425 0 obj << -/D [1737 0 R /XYZ 150.705 716.092 null] +/D [1738 0 R /XYZ 150.705 716.092 null] >> -% 1740 0 obj +% 1741 0 obj << -/D [1737 0 R /XYZ 150.705 222.691 null] +/D [1738 0 R /XYZ 150.705 222.691 null] >> -% 1741 0 obj +% 1742 0 obj << -/D [1737 0 R /XYZ 150.705 200.171 null] +/D [1738 0 R /XYZ 150.705 200.171 null] >> -% 1736 0 obj +% 1737 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1743 0 obj +% 1744 0 obj << /Type /Page -/Contents 1744 0 R -/Resources 1742 0 R +/Contents 1745 0 R +/Resources 1743 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1718 0 R +/Parent 1719 0 R >> -% 1745 0 obj +% 1746 0 obj << -/D [1743 0 R /XYZ 98.895 753.953 null] +/D [1744 0 R /XYZ 98.895 753.953 null] >> % 429 0 obj << -/D [1743 0 R /XYZ 99.895 716.092 null] +/D [1744 0 R /XYZ 99.895 716.092 null] >> -% 1746 0 obj +% 1747 0 obj << -/D [1743 0 R /XYZ 99.895 348.22 null] +/D [1744 0 R /XYZ 99.895 348.22 null] >> -% 1747 0 obj +% 1748 0 obj << -/D [1743 0 R /XYZ 99.895 313.8 null] +/D [1744 0 R /XYZ 99.895 313.8 null] >> -% 1742 0 obj +% 1743 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1749 0 obj +% 1750 0 obj << /Type /Page -/Contents 1750 0 R -/Resources 1748 0 R +/Contents 1751 0 R +/Resources 1749 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1718 0 R +/Parent 1719 0 R >> -% 1751 0 obj +% 1752 0 obj << -/D [1749 0 R /XYZ 149.705 753.953 null] +/D [1750 0 R /XYZ 149.705 753.953 null] >> % 433 0 obj << -/D [1749 0 R /XYZ 150.705 716.092 null] ->> -% 1752 0 obj -<< -/D [1749 0 R /XYZ 150.705 441.869 null] +/D [1750 0 R /XYZ 150.705 716.092 null] >> % 1753 0 obj << -/D [1749 0 R /XYZ 150.705 395.439 null] +/D [1750 0 R /XYZ 150.705 441.869 null] >> % 1754 0 obj << -/D [1749 0 R /XYZ 150.705 363.559 null] +/D [1750 0 R /XYZ 150.705 395.439 null] >> -% 1748 0 obj +% 1755 0 obj +<< +/D [1750 0 R /XYZ 150.705 363.559 null] +>> +% 1749 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1756 0 obj +% 1757 0 obj << /Type /Page -/Contents 1757 0 R -/Resources 1755 0 R +/Contents 1758 0 R +/Resources 1756 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1759 0 R +/Parent 1760 0 R >> -% 1758 0 obj +% 1759 0 obj << -/D [1756 0 R /XYZ 98.895 753.953 null] +/D [1757 0 R /XYZ 98.895 753.953 null] >> % 437 0 obj << -/D [1756 0 R /XYZ 99.895 716.092 null] +/D [1757 0 R /XYZ 99.895 716.092 null] >> -% 1755 0 obj +% 1756 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1761 0 obj +% 1762 0 obj << /Type /Page -/Contents 1762 0 R -/Resources 1760 0 R +/Contents 1763 0 R +/Resources 1761 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1759 0 R +/Parent 1760 0 R >> -% 1763 0 obj +% 1764 0 obj << -/D [1761 0 R /XYZ 149.705 753.953 null] +/D [1762 0 R /XYZ 149.705 753.953 null] >> % 441 0 obj << -/D [1761 0 R /XYZ 150.705 716.092 null] +/D [1762 0 R /XYZ 150.705 716.092 null] >> -% 1760 0 obj +% 1761 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1765 0 obj +% 1766 0 obj << /Type /Page -/Contents 1766 0 R -/Resources 1764 0 R +/Contents 1767 0 R +/Resources 1765 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1759 0 R +/Parent 1760 0 R >> -% 1767 0 obj +% 1768 0 obj << -/D [1765 0 R /XYZ 98.895 753.953 null] +/D [1766 0 R /XYZ 98.895 753.953 null] >> % 445 0 obj << -/D [1765 0 R /XYZ 99.895 716.092 null] +/D [1766 0 R /XYZ 99.895 716.092 null] >> -% 1764 0 obj +% 1765 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1769 0 obj +% 1770 0 obj << /Type /Page -/Contents 1770 0 R -/Resources 1768 0 R +/Contents 1771 0 R +/Resources 1769 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1759 0 R +/Parent 1760 0 R >> -% 1771 0 obj +% 1772 0 obj << -/D [1769 0 R /XYZ 149.705 753.953 null] +/D [1770 0 R /XYZ 149.705 753.953 null] >> % 449 0 obj << -/D [1769 0 R /XYZ 150.705 716.092 null] +/D [1770 0 R /XYZ 150.705 716.092 null] >> -% 1768 0 obj +% 1769 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1773 0 obj +% 1774 0 obj << /Type /Page -/Contents 1774 0 R -/Resources 1772 0 R +/Contents 1775 0 R +/Resources 1773 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1759 0 R +/Parent 1760 0 R >> -% 1775 0 obj +% 1776 0 obj << -/D [1773 0 R /XYZ 98.895 753.953 null] +/D [1774 0 R /XYZ 98.895 753.953 null] >> % 453 0 obj << -/D [1773 0 R /XYZ 99.895 716.092 null] +/D [1774 0 R /XYZ 99.895 716.092 null] >> -% 1772 0 obj +% 1773 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1777 0 obj +% 1778 0 obj << /Type /Page -/Contents 1778 0 R -/Resources 1776 0 R +/Contents 1779 0 R +/Resources 1777 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1759 0 R +/Parent 1760 0 R >> -% 1779 0 obj +% 1780 0 obj << -/D [1777 0 R /XYZ 149.705 753.953 null] +/D [1778 0 R /XYZ 149.705 753.953 null] >> % 457 0 obj << -/D [1777 0 R /XYZ 150.705 716.092 null] +/D [1778 0 R /XYZ 150.705 716.092 null] >> -% 1776 0 obj +% 1777 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1781 0 obj +% 1782 0 obj << /Type /Page -/Contents 1782 0 R -/Resources 1780 0 R +/Contents 1783 0 R +/Resources 1781 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1788 0 R ->> -% 1783 0 obj -<< -/D [1781 0 R /XYZ 98.895 753.953 null] +/Parent 1789 0 R >> % 1784 0 obj << -/D [1781 0 R /XYZ 99.895 528.579 null] +/D [1782 0 R /XYZ 98.895 753.953 null] >> % 1785 0 obj << -/D [1781 0 R /XYZ 99.895 494.104 null] +/D [1782 0 R /XYZ 99.895 528.579 null] >> % 1786 0 obj << -/D [1781 0 R /XYZ 99.895 403.265 null] +/D [1782 0 R /XYZ 99.895 494.104 null] >> -% 1780 0 obj +% 1787 0 obj +<< +/D [1782 0 R /XYZ 99.895 403.265 null] +>> +% 1781 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> /ProcSet [ /PDF /Text ] >> -% 1790 0 obj +% 1791 0 obj << /Type /Page -/Contents 1791 0 R -/Resources 1789 0 R +/Contents 1792 0 R +/Resources 1790 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1788 0 R +/Parent 1789 0 R >> -% 1792 0 obj +% 1793 0 obj << -/D [1790 0 R /XYZ 149.705 753.953 null] +/D [1791 0 R /XYZ 149.705 753.953 null] >> % 461 0 obj << -/D [1790 0 R /XYZ 150.705 716.092 null] +/D [1791 0 R /XYZ 150.705 716.092 null] >> -% 1789 0 obj +% 1790 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1794 0 obj +% 1795 0 obj << /Type /Page -/Contents 1795 0 R -/Resources 1793 0 R +/Contents 1796 0 R +/Resources 1794 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1788 0 R ->> -% 1796 0 obj -<< -/D [1794 0 R /XYZ 98.895 753.953 null] +/Parent 1789 0 R >> % 1797 0 obj << -/D [1794 0 R /XYZ 99.895 552.489 null] +/D [1795 0 R /XYZ 98.895 753.953 null] >> % 1798 0 obj << -/D [1794 0 R /XYZ 99.895 518.014 null] +/D [1795 0 R /XYZ 99.895 552.489 null] >> % 1799 0 obj << -/D [1794 0 R /XYZ 99.895 427.175 null] +/D [1795 0 R /XYZ 99.895 518.014 null] >> -% 1793 0 obj +% 1800 0 obj +<< +/D [1795 0 R /XYZ 99.895 427.175 null] +>> +% 1794 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> /ProcSet [ /PDF /Text ] >> -% 1801 0 obj +% 1802 0 obj << /Type /Page -/Contents 1802 0 R -/Resources 1800 0 R +/Contents 1803 0 R +/Resources 1801 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1788 0 R +/Parent 1789 0 R >> -% 1803 0 obj +% 1804 0 obj << -/D [1801 0 R /XYZ 149.705 753.953 null] +/D [1802 0 R /XYZ 149.705 753.953 null] >> % 465 0 obj << -/D [1801 0 R /XYZ 150.705 716.092 null] +/D [1802 0 R /XYZ 150.705 716.092 null] >> -% 1800 0 obj +% 1801 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1805 0 obj +% 1806 0 obj << /Type /Page -/Contents 1806 0 R -/Resources 1804 0 R +/Contents 1807 0 R +/Resources 1805 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1788 0 R ->> -% 1807 0 obj -<< -/D [1805 0 R /XYZ 98.895 753.953 null] +/Parent 1789 0 R >> % 1808 0 obj << -/D [1805 0 R /XYZ 99.895 540.534 null] +/D [1806 0 R /XYZ 98.895 753.953 null] >> % 1809 0 obj << -/D [1805 0 R /XYZ 99.895 506.059 null] +/D [1806 0 R /XYZ 99.895 540.534 null] >> % 1810 0 obj << -/D [1805 0 R /XYZ 99.895 415.22 null] +/D [1806 0 R /XYZ 99.895 506.059 null] >> -% 1804 0 obj +% 1811 0 obj +<< +/D [1806 0 R /XYZ 99.895 415.22 null] +>> +% 1805 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> /ProcSet [ /PDF /Text ] >> -% 1812 0 obj +% 1813 0 obj << /Type /Page -/Contents 1813 0 R -/Resources 1811 0 R +/Contents 1814 0 R +/Resources 1812 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1788 0 R +/Parent 1789 0 R >> -% 1814 0 obj +% 1815 0 obj << -/D [1812 0 R /XYZ 149.705 753.953 null] +/D [1813 0 R /XYZ 149.705 753.953 null] >> % 469 0 obj << -/D [1812 0 R /XYZ 150.705 716.092 null] +/D [1813 0 R /XYZ 150.705 716.092 null] >> -% 1811 0 obj +% 1812 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1816 0 obj +% 1817 0 obj << /Type /Page -/Contents 1817 0 R -/Resources 1815 0 R +/Contents 1818 0 R +/Resources 1816 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1822 0 R ->> -% 1818 0 obj -<< -/D [1816 0 R /XYZ 98.895 753.953 null] +/Parent 1823 0 R >> % 1819 0 obj << -/D [1816 0 R /XYZ 99.895 552.489 null] +/D [1817 0 R /XYZ 98.895 753.953 null] >> endstream endobj -1826 0 obj +1827 0 obj << /Length 5616 >> @@ -23791,7 +23794,7 @@ ET endstream endobj -1830 0 obj +1831 0 obj << /Length 5225 >> @@ -23915,7 +23918,7 @@ ET endstream endobj -1837 0 obj +1838 0 obj << /Length 5619 >> @@ -23971,7 +23974,7 @@ ET endstream endobj -1841 0 obj +1842 0 obj << /Length 5262 >> @@ -24097,7 +24100,7 @@ ET endstream endobj -1848 0 obj +1849 0 obj << /Length 5776 >> @@ -24157,7 +24160,7 @@ ET endstream endobj -1852 0 obj +1853 0 obj << /Length 6252 >> @@ -24293,7 +24296,7 @@ ET endstream endobj -1863 0 obj +1864 0 obj << /Length 5352 >> @@ -24350,7 +24353,7 @@ ET endstream endobj -1868 0 obj +1869 0 obj << /Length 5356 >> @@ -24406,7 +24409,7 @@ ET endstream endobj -1875 0 obj +1876 0 obj << /Length 6241 >> @@ -24430,7 +24433,7 @@ ET endstream endobj -1881 0 obj +1882 0 obj << /Length 10302 >> @@ -24881,7 +24884,7 @@ ET endstream endobj -1885 0 obj +1886 0 obj << /Length 3570 >> @@ -24992,7 +24995,7 @@ ET endstream endobj -1891 0 obj +1892 0 obj << /Length 1332 >> @@ -25035,7 +25038,7 @@ ET endstream endobj -1898 0 obj +1899 0 obj << /Length 1526 >> @@ -25092,7 +25095,7 @@ ET endstream endobj -1904 0 obj +1905 0 obj << /Length 2016 >> @@ -25163,7 +25166,7 @@ ET endstream endobj -1910 0 obj +1911 0 obj << /Length 507 >> @@ -25179,7 +25182,7 @@ ET endstream endobj -1915 0 obj +1916 0 obj << /Length 4553 >> @@ -25263,7 +25266,7 @@ ET endstream endobj -1922 0 obj +1923 0 obj << /Length 4948 >> @@ -25351,7 +25354,7 @@ ET endstream endobj -1929 0 obj +1930 0 obj << /Length 3542 >> @@ -25441,255 +25444,259 @@ ET endstream endobj -1823 0 obj +1824 0 obj << /Type /ObjStm /N 100 /First 971 -/Length 9484 ->> -stream -1820 0 1821 58 1815 116 1825 253 1827 371 473 430 1824 488 1829 635 1831 753 1832 811 -1833 869 1834 927 1828 985 1836 1122 1838 1240 477 1299 1835 1357 1840 1504 1842 1622 1843 1680 -1844 1738 1845 1796 1839 1854 1847 1991 1849 2109 481 2168 1846 2226 1851 2373 1853 2491 1854 2549 -1855 2607 1857 2664 1858 2722 1859 2780 1850 2838 1862 3017 1864 3135 485 3194 1865 3252 1861 3311 -1867 3458 1869 3576 489 3634 1870 3691 1866 3749 1874 3896 1871 4044 1872 4192 1876 4340 493 4399 -1873 4457 1880 4551 1882 4669 1877 4727 1878 4785 1879 4843 1884 4939 1886 5057 497 5116 1887 5174 -1888 5233 1883 5292 1890 5373 1892 5491 501 5549 1893 5606 1894 5663 1889 5721 1897 5802 1899 5920 -505 5979 1900 6037 1901 6096 1896 6155 1903 6236 1905 6354 509 6412 1906 6469 1907 6526 1902 6584 -1909 6678 1911 6796 513 6855 1908 6913 1914 7007 1912 7146 1916 7291 517 7349 1917 7406 1918 7464 -1913 7522 1921 7616 1919 7755 1923 7900 521 7959 1924 8017 1925 8076 1920 8135 1928 8229 1926 8368 +/Length 9397 +>> +stream +1820 0 1821 58 1822 116 1816 174 1826 311 1828 429 473 488 1825 546 1830 693 1832 811 +1833 869 1834 927 1835 985 1829 1043 1837 1180 1839 1298 477 1357 1836 1415 1841 1562 1843 1680 +1844 1738 1845 1796 1846 1854 1840 1912 1848 2049 1850 2167 481 2226 1847 2284 1852 2431 1854 2549 +1855 2607 1856 2665 1858 2722 1859 2780 1860 2838 1851 2896 1863 3075 1865 3193 485 3252 1866 3310 +1862 3369 1868 3516 1870 3634 489 3692 1871 3749 1867 3807 1875 3954 1872 4102 1873 4250 1877 4398 +493 4457 1874 4515 1881 4609 1883 4727 1878 4785 1879 4843 1880 4901 1885 4997 1887 5115 497 5174 +1888 5232 1889 5291 1884 5350 1891 5431 1893 5549 501 5607 1894 5664 1895 5721 1890 5779 1898 5860 +1900 5978 505 6037 1901 6095 1902 6154 1897 6213 1904 6294 1906 6412 509 6470 1907 6527 1908 6584 +1903 6642 1910 6736 1912 6854 513 6913 1909 6971 1915 7065 1913 7204 1917 7349 517 7407 1918 7464 +1919 7522 1914 7580 1922 7674 1920 7813 1924 7958 521 8017 1925 8075 1926 8134 1921 8193 1929 8287 % 1820 0 obj << -/D [1816 0 R /XYZ 99.895 518.014 null] +/D [1817 0 R /XYZ 99.895 552.489 null] >> % 1821 0 obj << -/D [1816 0 R /XYZ 99.895 427.175 null] +/D [1817 0 R /XYZ 99.895 518.014 null] >> -% 1815 0 obj +% 1822 0 obj +<< +/D [1817 0 R /XYZ 99.895 427.175 null] +>> +% 1816 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> /ProcSet [ /PDF /Text ] >> -% 1825 0 obj +% 1826 0 obj << /Type /Page -/Contents 1826 0 R -/Resources 1824 0 R +/Contents 1827 0 R +/Resources 1825 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1822 0 R +/Parent 1823 0 R >> -% 1827 0 obj +% 1828 0 obj << -/D [1825 0 R /XYZ 149.705 753.953 null] +/D [1826 0 R /XYZ 149.705 753.953 null] >> % 473 0 obj << -/D [1825 0 R /XYZ 150.705 716.092 null] +/D [1826 0 R /XYZ 150.705 716.092 null] >> -% 1824 0 obj +% 1825 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1829 0 obj +% 1830 0 obj << /Type /Page -/Contents 1830 0 R -/Resources 1828 0 R +/Contents 1831 0 R +/Resources 1829 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1822 0 R ->> -% 1831 0 obj -<< -/D [1829 0 R /XYZ 98.895 753.953 null] +/Parent 1823 0 R >> % 1832 0 obj << -/D [1829 0 R /XYZ 99.895 528.579 null] +/D [1830 0 R /XYZ 98.895 753.953 null] >> % 1833 0 obj << -/D [1829 0 R /XYZ 99.895 494.104 null] +/D [1830 0 R /XYZ 99.895 528.579 null] >> % 1834 0 obj << -/D [1829 0 R /XYZ 99.895 403.265 null] +/D [1830 0 R /XYZ 99.895 494.104 null] >> -% 1828 0 obj +% 1835 0 obj +<< +/D [1830 0 R /XYZ 99.895 403.265 null] +>> +% 1829 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> /ProcSet [ /PDF /Text ] >> -% 1836 0 obj +% 1837 0 obj << /Type /Page -/Contents 1837 0 R -/Resources 1835 0 R +/Contents 1838 0 R +/Resources 1836 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1822 0 R +/Parent 1823 0 R >> -% 1838 0 obj +% 1839 0 obj << -/D [1836 0 R /XYZ 149.705 753.953 null] +/D [1837 0 R /XYZ 149.705 753.953 null] >> % 477 0 obj << -/D [1836 0 R /XYZ 150.705 716.092 null] +/D [1837 0 R /XYZ 150.705 716.092 null] >> -% 1835 0 obj +% 1836 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1840 0 obj +% 1841 0 obj << /Type /Page -/Contents 1841 0 R -/Resources 1839 0 R +/Contents 1842 0 R +/Resources 1840 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1822 0 R ->> -% 1842 0 obj -<< -/D [1840 0 R /XYZ 98.895 753.953 null] +/Parent 1823 0 R >> % 1843 0 obj << -/D [1840 0 R /XYZ 99.895 528.579 null] +/D [1841 0 R /XYZ 98.895 753.953 null] >> % 1844 0 obj << -/D [1840 0 R /XYZ 99.895 494.104 null] +/D [1841 0 R /XYZ 99.895 528.579 null] >> % 1845 0 obj << -/D [1840 0 R /XYZ 99.895 403.265 null] +/D [1841 0 R /XYZ 99.895 494.104 null] >> -% 1839 0 obj +% 1846 0 obj +<< +/D [1841 0 R /XYZ 99.895 403.265 null] +>> +% 1840 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F60 670 0 R /F120 1787 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> /ProcSet [ /PDF /Text ] >> -% 1847 0 obj +% 1848 0 obj << /Type /Page -/Contents 1848 0 R -/Resources 1846 0 R +/Contents 1849 0 R +/Resources 1847 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1822 0 R +/Parent 1823 0 R >> -% 1849 0 obj +% 1850 0 obj << -/D [1847 0 R /XYZ 149.705 753.953 null] +/D [1848 0 R /XYZ 149.705 753.953 null] >> % 481 0 obj << -/D [1847 0 R /XYZ 150.705 716.092 null] +/D [1848 0 R /XYZ 150.705 716.092 null] >> -% 1846 0 obj +% 1847 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 1851 0 obj +% 1852 0 obj << /Type /Page -/Contents 1852 0 R -/Resources 1850 0 R +/Contents 1853 0 R +/Resources 1851 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1860 0 R ->> -% 1853 0 obj -<< -/D [1851 0 R /XYZ 98.895 753.953 null] +/Parent 1861 0 R >> % 1854 0 obj << -/D [1851 0 R /XYZ 99.895 564.444 null] +/D [1852 0 R /XYZ 98.895 753.953 null] >> % 1855 0 obj << -/D [1851 0 R /XYZ 99.895 529.97 null] +/D [1852 0 R /XYZ 99.895 564.444 null] >> -% 1857 0 obj +% 1856 0 obj << -/D [1851 0 R /XYZ 99.895 441.815 null] +/D [1852 0 R /XYZ 99.895 529.97 null] >> % 1858 0 obj << -/D [1851 0 R /XYZ 99.895 409.935 null] +/D [1852 0 R /XYZ 99.895 441.815 null] >> % 1859 0 obj << -/D [1851 0 R /XYZ 99.895 319.095 null] +/D [1852 0 R /XYZ 99.895 409.935 null] >> -% 1850 0 obj +% 1860 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F17 1856 0 R /F104 1259 0 R /F102 1021 0 R /F120 1787 0 R >> +/D [1852 0 R /XYZ 99.895 319.095 null] +>> +% 1851 0 obj +<< +/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F17 1857 0 R /F104 1260 0 R /F102 1022 0 R /F120 1788 0 R >> /ProcSet [ /PDF /Text ] >> -% 1862 0 obj +% 1863 0 obj << /Type /Page -/Contents 1863 0 R -/Resources 1861 0 R +/Contents 1864 0 R +/Resources 1862 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1860 0 R +/Parent 1861 0 R >> -% 1864 0 obj +% 1865 0 obj << -/D [1862 0 R /XYZ 149.705 753.953 null] +/D [1863 0 R /XYZ 149.705 753.953 null] >> % 485 0 obj << -/D [1862 0 R /XYZ 150.705 716.092 null] +/D [1863 0 R /XYZ 150.705 716.092 null] >> -% 1865 0 obj +% 1866 0 obj << -/D [1862 0 R /XYZ 150.705 222.691 null] +/D [1863 0 R /XYZ 150.705 222.691 null] >> -% 1861 0 obj +% 1862 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F69 1465 0 R /F93 920 0 R /F91 919 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F69 1466 0 R /F93 920 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1867 0 obj +% 1868 0 obj << /Type /Page -/Contents 1868 0 R -/Resources 1866 0 R +/Contents 1869 0 R +/Resources 1867 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1860 0 R +/Parent 1861 0 R >> -% 1869 0 obj +% 1870 0 obj << -/D [1867 0 R /XYZ 98.895 753.953 null] +/D [1868 0 R /XYZ 98.895 753.953 null] >> % 489 0 obj << -/D [1867 0 R /XYZ 99.895 716.092 null] +/D [1868 0 R /XYZ 99.895 716.092 null] >> -% 1870 0 obj +% 1871 0 obj << -/D [1867 0 R /XYZ 99.895 222.691 null] +/D [1868 0 R /XYZ 99.895 222.691 null] >> -% 1866 0 obj +% 1867 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1465 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1874 0 obj +% 1875 0 obj << /Type /Page -/Contents 1875 0 R -/Resources 1873 0 R +/Contents 1876 0 R +/Resources 1874 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1860 0 R -/Annots [ 1871 0 R 1872 0 R ] +/Parent 1861 0 R +/Annots [ 1872 0 R 1873 0 R ] >> -% 1871 0 obj +% 1872 0 obj << /Type /Annot /Subtype /Link @@ -25697,7 +25704,7 @@ stream /Rect [196.011 499.949 202.985 512.009] /A << /S /GoTo /D (listing.5) >> >> -% 1872 0 obj +% 1873 0 obj << /Type /Annot /Subtype /Link @@ -25705,191 +25712,191 @@ stream /Rect [196.625 344.532 203.599 356.591] /A << /S /GoTo /D (listing.6) >> >> -% 1876 0 obj +% 1877 0 obj << -/D [1874 0 R /XYZ 149.705 753.953 null] +/D [1875 0 R /XYZ 149.705 753.953 null] >> % 493 0 obj << -/D [1874 0 R /XYZ 150.705 716.092 null] +/D [1875 0 R /XYZ 150.705 716.092 null] >> -% 1873 0 obj +% 1874 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1880 0 obj +% 1881 0 obj << /Type /Page -/Contents 1881 0 R -/Resources 1879 0 R +/Contents 1882 0 R +/Resources 1880 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1860 0 R +/Parent 1861 0 R >> -% 1882 0 obj -<< -/D [1880 0 R /XYZ 98.895 753.953 null] ->> -% 1877 0 obj +% 1883 0 obj << -/D [1880 0 R /XYZ 99.895 411.235 null] +/D [1881 0 R /XYZ 98.895 753.953 null] >> % 1878 0 obj << -/D [1880 0 R /XYZ 99.895 182.902 null] +/D [1881 0 R /XYZ 99.895 411.235 null] >> % 1879 0 obj << -/Font << /F67 918 0 R /F120 1787 0 R /F62 671 0 R >> +/D [1881 0 R /XYZ 99.895 182.902 null] +>> +% 1880 0 obj +<< +/Font << /F67 918 0 R /F120 1788 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1884 0 obj +% 1885 0 obj << /Type /Page -/Contents 1885 0 R -/Resources 1883 0 R +/Contents 1886 0 R +/Resources 1884 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1860 0 R +/Parent 1861 0 R >> -% 1886 0 obj +% 1887 0 obj << -/D [1884 0 R /XYZ 149.705 753.953 null] +/D [1885 0 R /XYZ 149.705 753.953 null] >> % 497 0 obj << -/D [1884 0 R /XYZ 150.705 716.092 null] +/D [1885 0 R /XYZ 150.705 716.092 null] >> -% 1887 0 obj +% 1888 0 obj << -/D [1884 0 R /XYZ 150.705 690.058 null] +/D [1885 0 R /XYZ 150.705 690.058 null] >> -% 1888 0 obj +% 1889 0 obj << -/D [1884 0 R /XYZ 150.705 693.143 null] +/D [1885 0 R /XYZ 150.705 693.143 null] >> -% 1883 0 obj +% 1884 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1890 0 obj +% 1891 0 obj << /Type /Page -/Contents 1891 0 R -/Resources 1889 0 R +/Contents 1892 0 R +/Resources 1890 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1895 0 R +/Parent 1896 0 R >> -% 1892 0 obj +% 1893 0 obj << -/D [1890 0 R /XYZ 98.895 753.953 null] +/D [1891 0 R /XYZ 98.895 753.953 null] >> % 501 0 obj << -/D [1890 0 R /XYZ 99.895 716.092 null] +/D [1891 0 R /XYZ 99.895 716.092 null] >> -% 1893 0 obj +% 1894 0 obj << -/D [1890 0 R /XYZ 99.895 678.98 null] +/D [1891 0 R /XYZ 99.895 678.98 null] >> -% 1894 0 obj +% 1895 0 obj << -/D [1890 0 R /XYZ 99.895 679.195 null] +/D [1891 0 R /XYZ 99.895 679.195 null] >> -% 1889 0 obj +% 1890 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1897 0 obj +% 1898 0 obj << /Type /Page -/Contents 1898 0 R -/Resources 1896 0 R +/Contents 1899 0 R +/Resources 1897 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1895 0 R +/Parent 1896 0 R >> -% 1899 0 obj +% 1900 0 obj << -/D [1897 0 R /XYZ 149.705 753.953 null] +/D [1898 0 R /XYZ 149.705 753.953 null] >> % 505 0 obj << -/D [1897 0 R /XYZ 150.705 716.092 null] +/D [1898 0 R /XYZ 150.705 716.092 null] >> -% 1900 0 obj +% 1901 0 obj << -/D [1897 0 R /XYZ 150.705 689.963 null] +/D [1898 0 R /XYZ 150.705 689.963 null] >> -% 1901 0 obj +% 1902 0 obj << -/D [1897 0 R /XYZ 150.705 693.143 null] +/D [1898 0 R /XYZ 150.705 693.143 null] >> -% 1896 0 obj +% 1897 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1903 0 obj +% 1904 0 obj << /Type /Page -/Contents 1904 0 R -/Resources 1902 0 R +/Contents 1905 0 R +/Resources 1903 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1895 0 R +/Parent 1896 0 R >> -% 1905 0 obj +% 1906 0 obj << -/D [1903 0 R /XYZ 98.895 753.953 null] +/D [1904 0 R /XYZ 98.895 753.953 null] >> % 509 0 obj << -/D [1903 0 R /XYZ 99.895 716.092 null] +/D [1904 0 R /XYZ 99.895 716.092 null] >> -% 1906 0 obj +% 1907 0 obj << -/D [1903 0 R /XYZ 99.895 678.98 null] +/D [1904 0 R /XYZ 99.895 678.98 null] >> -% 1907 0 obj +% 1908 0 obj << -/D [1903 0 R /XYZ 99.895 679.195 null] +/D [1904 0 R /XYZ 99.895 679.195 null] >> -% 1902 0 obj +% 1903 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1909 0 obj +% 1910 0 obj << /Type /Page -/Contents 1910 0 R -/Resources 1908 0 R +/Contents 1911 0 R +/Resources 1909 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1895 0 R +/Parent 1896 0 R >> -% 1911 0 obj +% 1912 0 obj << -/D [1909 0 R /XYZ 149.705 753.953 null] +/D [1910 0 R /XYZ 149.705 753.953 null] >> % 513 0 obj << -/D [1909 0 R /XYZ 150.705 716.092 null] +/D [1910 0 R /XYZ 150.705 716.092 null] >> -% 1908 0 obj +% 1909 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1914 0 obj +% 1915 0 obj << /Type /Page -/Contents 1915 0 R -/Resources 1913 0 R +/Contents 1916 0 R +/Resources 1914 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1895 0 R -/Annots [ 1912 0 R ] +/Parent 1896 0 R +/Annots [ 1913 0 R ] >> -% 1912 0 obj +% 1913 0 obj << /Type /Annot /Subtype /Link @@ -25897,37 +25904,37 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1916 0 obj +% 1917 0 obj << -/D [1914 0 R /XYZ 98.895 753.953 null] +/D [1915 0 R /XYZ 98.895 753.953 null] >> % 517 0 obj << -/D [1914 0 R /XYZ 99.895 716.092 null] +/D [1915 0 R /XYZ 99.895 716.092 null] >> -% 1917 0 obj +% 1918 0 obj << -/D [1914 0 R /XYZ 99.895 676.015 null] +/D [1915 0 R /XYZ 99.895 676.015 null] >> -% 1918 0 obj +% 1919 0 obj << -/D [1914 0 R /XYZ 99.895 679.195 null] +/D [1915 0 R /XYZ 99.895 679.195 null] >> -% 1913 0 obj +% 1914 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1921 0 obj +% 1922 0 obj << /Type /Page -/Contents 1922 0 R -/Resources 1920 0 R +/Contents 1923 0 R +/Resources 1921 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1895 0 R -/Annots [ 1919 0 R ] +/Parent 1896 0 R +/Annots [ 1920 0 R ] >> -% 1919 0 obj +% 1920 0 obj << /Type /Annot /Subtype /Link @@ -25935,48 +25942,40 @@ stream /Rect [342.753 571.778 420.271 583.837] /A << /S /GoTo /D (spdata) >> >> -% 1923 0 obj +% 1924 0 obj << -/D [1921 0 R /XYZ 149.705 753.953 null] +/D [1922 0 R /XYZ 149.705 753.953 null] >> % 521 0 obj << -/D [1921 0 R /XYZ 150.705 716.092 null] ->> -% 1924 0 obj -<< -/D [1921 0 R /XYZ 150.705 676.015 null] +/D [1922 0 R /XYZ 150.705 716.092 null] >> % 1925 0 obj << -/D [1921 0 R /XYZ 150.705 679.195 null] +/D [1922 0 R /XYZ 150.705 676.015 null] >> -% 1920 0 obj +% 1926 0 obj +<< +/D [1922 0 R /XYZ 150.705 679.195 null] +>> +% 1921 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1928 0 obj +% 1929 0 obj << /Type /Page -/Contents 1929 0 R -/Resources 1927 0 R +/Contents 1930 0 R +/Resources 1928 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1933 0 R -/Annots [ 1926 0 R ] ->> -% 1926 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 438.278 369.462 450.338] -/A << /S /GoTo /D (spdata) >> +/Parent 1934 0 R +/Annots [ 1927 0 R ] >> endstream endobj -1938 0 obj +1939 0 obj << /Length 4155 >> @@ -26073,7 +26072,7 @@ ET endstream endobj -1945 0 obj +1946 0 obj << /Length 7231 >> @@ -26260,7 +26259,7 @@ ET endstream endobj -1952 0 obj +1953 0 obj << /Length 7073 >> @@ -26437,7 +26436,7 @@ ET endstream endobj -1958 0 obj +1959 0 obj << /Length 655 >> @@ -26475,7 +26474,7 @@ ET endstream endobj -1962 0 obj +1963 0 obj << /Length 1109 >> @@ -26499,7 +26498,7 @@ ET endstream endobj -1968 0 obj +1969 0 obj << /Length 5016 >> @@ -26587,7 +26586,7 @@ ET endstream endobj -1978 0 obj +1979 0 obj << /Length 7572 >> @@ -26805,7 +26804,7 @@ ET endstream endobj -1982 0 obj +1983 0 obj << /Length 1021 >> @@ -26824,7 +26823,7 @@ ET endstream endobj -1990 0 obj +1991 0 obj << /Length 5673 >> @@ -26974,7 +26973,7 @@ ET endstream endobj -1995 0 obj +1996 0 obj << /Length 3387 >> @@ -27037,7 +27036,7 @@ ET endstream endobj -1999 0 obj +2000 0 obj << /Length 973 >> @@ -27078,7 +27077,7 @@ ET endstream endobj -2005 0 obj +2006 0 obj << /Length 2703 >> @@ -27155,7 +27154,7 @@ ET endstream endobj -2010 0 obj +2011 0 obj << /Length 534 >> @@ -27171,7 +27170,7 @@ ET endstream endobj -2017 0 obj +2018 0 obj << /Length 8246 >> @@ -27321,7 +27320,7 @@ ET endstream endobj -2028 0 obj +2029 0 obj << /Length 7054 >> @@ -27461,7 +27460,7 @@ ET endstream endobj -2033 0 obj +2034 0 obj << /Length 4489 >> @@ -27528,207 +27527,63 @@ ET endstream endobj -2041 0 obj -<< -/Length 8623 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(11.2)-1000(psb)]TJ -ET -q -1 0 0 1 204.216 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 207.803 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F62 9.9626 Tf -57.098 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F60 9.9626 Tf 110.849 -22.171 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F93 7.8896 Tf 3.589 0 Td [(+)]TJ/F62 7.5716 Tf 6.227 0 Td [(1)]TJ/F93 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F60 9.9626 Tf 11.535 0 Td [(M)]TJ/F91 7.8896 Tf 9.673 4.115 Td [(\000)]TJ/F62 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(b)]TJ/F91 10.3811 Tf 6.799 0 Td [(\000)]TJ/F60 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.811 -2.085 Td [(k)]TJ/F93 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F60 9.9626 Tf 16.637 0 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F62 9.9626 Tf 3.992 2.085 Td [(,)]TJ -230.665 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F60 9.9626 Tf 147.599 0 Td [(M)]TJ/F62 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.725 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ -0 g 0 G -/F59 9.9626 Tf -14.944 -20.304 Td [(1)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(normwise)-222(backwar)18(d)-221(err)18(or)-222(in)-222(th)1(e)-222(in\002nity)-222(norm;)-231(the)-221(iteration)-222(is)-222(stopped)-221(when)]TJ/F60 9.9626 Tf 109.036 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ -ET -q -1 0 0 1 297.001 584.127 cm -[]0 d 0 J 0.398 w 0 0 m 74.372 0 l S -Q -BT -/F93 10.3811 Tf 297.125 574.802 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F60 9.9626 Tf 5.938 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F60 9.9626 Tf 11.048 0 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F93 10.3811 Tf 7.377 0 Td [(+)]TJ/F91 10.3811 Tf 10.255 0 Td [(k)]TJ/F60 9.9626 Tf 5.44 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F93 10.3811 Tf 5.439 0 Td [(\051)]TJ/F69 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ -0 g 0 G -/F59 9.9626 Tf -235.841 -32.142 Td [(2)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ -ET -q -1 0 0 1 324.174 523.428 cm -[]0 d 0 J 0.398 w 0 0 m 20.025 0 l S -Q -BT -/F91 10.3811 Tf 324.299 514.103 Td [(k)]TJ/F60 9.9626 Tf 5.439 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ -0 g 0 G -/F59 9.9626 Tf -208.667 -32.082 Td [(3)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 15.169 6.744 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ -ET -q -1 0 0 1 322.451 462.789 cm -[]0 d 0 J 0.398 w 0 0 m 23.472 0 l S -Q -BT -/F91 10.3811 Tf 322.575 453.464 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F62 7.5716 Tf 4 -1.744 Td [(0)]TJ/F91 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F62 9.9626 Tf -210.391 -32.083 Td [(The)-248(behaviour)-248(is)-248(contr)18(olled)-249(by)-248(the)-248(istop)-248(ar)18(gument)-248(\050see)-248(later\051.)-310(In)-248(the)-248(above)-248(for)18(-)]TJ 0 -11.955 Td [(mulae,)]TJ/F60 9.9626 Tf 32.809 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.304 1.96 Td [(is)-256(the)-256(tentative)-256(solution)-257(and)]TJ/F60 9.9626 Tf 125.144 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F93 10.3811 Tf 5.757 1.96 Td [(=)]TJ/F60 9.9626 Tf 11.201 0 Td [(b)]TJ/F91 10.3811 Tf 6.821 0 Td [(\000)]TJ/F60 9.9626 Tf 10.777 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(the)-256(corr)18(esponding)-256(r)18(esidual)]TJ -225.063 -11.955 Td [(at)-250(the)]TJ/F60 9.9626 Tf 27.083 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -18.186 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ -ET -q -1 0 0 1 201.407 386.32 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 205.52 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-112(o)-113(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ -ET -q -1 0 0 1 384.896 386.32 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 388.859 386.121 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -29.001 -28.653 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -20.431 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -20.431 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 178.414 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 257.028 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 256.829 Td [(Tspmat)]TJ -ET -q -1 0 0 1 395.216 257.028 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 398.354 256.829 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -268.57 -20.431 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 188.777 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 188.577 Td [(prec)]TJ -ET -q -1 0 0 1 384.755 188.777 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 387.893 188.577 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -258.11 -20.431 Td [(b)]TJ -0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ -ET -q -1 0 0 1 410.618 120.525 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 413.756 120.326 Td [(T)]TJ -ET -q -1 0 0 1 419.614 120.525 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 422.752 120.326 Td [(vect)]TJ -ET -q -1 0 0 1 444.301 120.525 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 447.439 120.326 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G - -153.273 -29.888 Td [(162)]TJ -0 g 0 G -ET - -endstream -endobj -1934 0 obj +1935 0 obj << /Type /ObjStm /N 100 -/First 971 -/Length 11010 +/First 972 +/Length 10999 +>> +stream +1927 0 1931 145 525 203 1932 260 1933 317 1928 375 1938 469 1936 608 1940 751 529 810 +1941 868 1942 926 1937 985 1945 1079 1943 1218 1947 1363 533 1421 1948 1478 1949 1536 1944 1594 +1952 1716 1950 1855 1954 1997 537 2056 1955 2114 1956 2173 1951 2232 1958 2354 1960 2472 1957 2530 +1962 2613 1964 2731 541 2790 1961 2848 1968 2942 1965 3090 1966 3237 1970 3385 545 3443 1971 3500 +1967 3558 1978 3678 1973 3844 1974 3989 1975 4135 1976 4282 1980 4429 549 4488 1977 4546 1982 4640 +1984 4758 1981 4816 1990 4910 1985 5076 1986 5221 1987 5364 1988 5510 1992 5654 553 5713 1989 5771 +1995 5865 1993 6004 1997 6149 557 6207 1994 6264 1999 6384 2001 6502 561 6561 1998 6619 2005 6713 +2002 6861 2003 7006 2007 7153 565 7211 2004 7268 2010 7362 2012 7480 569 7539 2009 7597 2017 7691 +2013 7839 2014 7988 2019 8133 573 8191 2020 8248 2021 8306 2022 8364 2023 8422 2016 8480 2028 8627 +2015 8793 2024 8940 2025 9084 2026 9228 2030 9373 2027 9432 2033 9579 2031 9718 2035 9862 2032 9920 +% 1927 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 438.278 369.462 450.338] +/A << /S /GoTo /D (spdata) >> >> -stream -1930 0 525 58 1931 115 1932 172 1927 230 1937 324 1935 463 1939 606 529 665 1940 723 -1941 781 1936 840 1944 934 1942 1073 1946 1218 533 1276 1947 1333 1948 1391 1943 1449 1951 1571 -1949 1710 1953 1852 537 1911 1954 1969 1955 2028 1950 2087 1957 2209 1959 2327 1956 2385 1961 2468 -1963 2586 541 2645 1960 2703 1967 2797 1964 2945 1965 3092 1969 3240 545 3298 1970 3355 1966 3413 -1977 3533 1972 3699 1973 3844 1974 3990 1975 4137 1979 4284 549 4343 1976 4401 1981 4495 1983 4613 -1980 4671 1989 4765 1984 4931 1985 5076 1986 5219 1987 5365 1991 5509 553 5568 1988 5626 1994 5720 -1992 5859 1996 6004 557 6062 1993 6119 1998 6239 2000 6357 561 6416 1997 6474 2004 6568 2001 6716 -2002 6861 2006 7008 565 7066 2003 7123 2009 7217 2011 7335 569 7394 2008 7452 2016 7546 2012 7694 -2013 7843 2018 7988 573 8046 2019 8103 2020 8161 2021 8219 2022 8277 2015 8335 2027 8482 2014 8648 -2023 8795 2024 8939 2025 9083 2029 9228 2026 9287 2032 9434 2030 9573 2034 9717 2031 9775 2040 9882 -% 1930 0 obj +% 1931 0 obj << -/D [1928 0 R /XYZ 98.895 753.953 null] +/D [1929 0 R /XYZ 98.895 753.953 null] >> % 525 0 obj << -/D [1928 0 R /XYZ 99.895 716.092 null] +/D [1929 0 R /XYZ 99.895 716.092 null] >> -% 1931 0 obj +% 1932 0 obj << -/D [1928 0 R /XYZ 99.895 678.98 null] +/D [1929 0 R /XYZ 99.895 678.98 null] >> -% 1932 0 obj +% 1933 0 obj << -/D [1928 0 R /XYZ 99.895 679.195 null] +/D [1929 0 R /XYZ 99.895 679.195 null] >> -% 1927 0 obj +% 1928 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1937 0 obj +% 1938 0 obj << /Type /Page -/Contents 1938 0 R -/Resources 1936 0 R +/Contents 1939 0 R +/Resources 1937 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1933 0 R -/Annots [ 1935 0 R ] +/Parent 1934 0 R +/Annots [ 1936 0 R ] >> -% 1935 0 obj +% 1936 0 obj << /Type /Annot /Subtype /Link @@ -27736,37 +27591,37 @@ stream /Rect [352.526 426.323 428.58 438.383] /A << /S /GoTo /D (vdata) >> >> -% 1939 0 obj +% 1940 0 obj << -/D [1937 0 R /XYZ 149.705 753.953 null] +/D [1938 0 R /XYZ 149.705 753.953 null] >> % 529 0 obj << -/D [1937 0 R /XYZ 150.705 716.092 null] +/D [1938 0 R /XYZ 150.705 716.092 null] >> -% 1940 0 obj +% 1941 0 obj << -/D [1937 0 R /XYZ 150.705 678.98 null] +/D [1938 0 R /XYZ 150.705 678.98 null] >> -% 1941 0 obj +% 1942 0 obj << -/D [1937 0 R /XYZ 150.705 679.195 null] +/D [1938 0 R /XYZ 150.705 679.195 null] >> -% 1936 0 obj +% 1937 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1944 0 obj +% 1945 0 obj << /Type /Page -/Contents 1945 0 R -/Resources 1943 0 R +/Contents 1946 0 R +/Resources 1944 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1933 0 R -/Annots [ 1942 0 R ] +/Parent 1934 0 R +/Annots [ 1943 0 R ] >> -% 1942 0 obj +% 1943 0 obj << /Type /Annot /Subtype /Link @@ -27774,37 +27629,37 @@ stream /Rect [291.943 574.778 369.462 586.838] /A << /S /GoTo /D (spdata) >> >> -% 1946 0 obj +% 1947 0 obj << -/D [1944 0 R /XYZ 98.895 753.953 null] +/D [1945 0 R /XYZ 98.895 753.953 null] >> % 533 0 obj << -/D [1944 0 R /XYZ 99.895 716.092 null] +/D [1945 0 R /XYZ 99.895 716.092 null] >> -% 1947 0 obj +% 1948 0 obj << -/D [1944 0 R /XYZ 99.895 679.441 null] +/D [1945 0 R /XYZ 99.895 679.441 null] >> -% 1948 0 obj +% 1949 0 obj << -/D [1944 0 R /XYZ 99.895 679.657 null] +/D [1945 0 R /XYZ 99.895 679.657 null] >> -% 1943 0 obj +% 1944 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1021 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1022 0 R >> /ProcSet [ /PDF /Text ] >> -% 1951 0 obj +% 1952 0 obj << /Type /Page -/Contents 1952 0 R -/Resources 1950 0 R +/Contents 1953 0 R +/Resources 1951 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1933 0 R -/Annots [ 1949 0 R ] +/Parent 1934 0 R +/Annots [ 1950 0 R ] >> -% 1949 0 obj +% 1950 0 obj << /Type /Annot /Subtype /Link @@ -27812,75 +27667,75 @@ stream /Rect [452.361 574.59 528.415 586.65] /A << /S /GoTo /D (vdata) >> >> -% 1953 0 obj +% 1954 0 obj << -/D [1951 0 R /XYZ 149.705 753.953 null] +/D [1952 0 R /XYZ 149.705 753.953 null] >> % 537 0 obj << -/D [1951 0 R /XYZ 150.705 716.092 null] +/D [1952 0 R /XYZ 150.705 716.092 null] >> -% 1954 0 obj +% 1955 0 obj << -/D [1951 0 R /XYZ 150.705 679.413 null] +/D [1952 0 R /XYZ 150.705 679.413 null] >> -% 1955 0 obj +% 1956 0 obj << -/D [1951 0 R /XYZ 150.705 679.628 null] +/D [1952 0 R /XYZ 150.705 679.628 null] >> -% 1950 0 obj +% 1951 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1021 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1022 0 R >> /ProcSet [ /PDF /Text ] >> -% 1957 0 obj +% 1958 0 obj << /Type /Page -/Contents 1958 0 R -/Resources 1956 0 R +/Contents 1959 0 R +/Resources 1957 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1933 0 R +/Parent 1934 0 R >> -% 1959 0 obj +% 1960 0 obj << -/D [1957 0 R /XYZ 98.895 753.953 null] +/D [1958 0 R /XYZ 98.895 753.953 null] >> -% 1956 0 obj +% 1957 0 obj << -/Font << /F102 1021 0 R /F62 671 0 R >> +/Font << /F102 1022 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1961 0 obj +% 1962 0 obj << /Type /Page -/Contents 1962 0 R -/Resources 1960 0 R +/Contents 1963 0 R +/Resources 1961 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1933 0 R +/Parent 1934 0 R >> -% 1963 0 obj +% 1964 0 obj << -/D [1961 0 R /XYZ 149.705 753.953 null] +/D [1962 0 R /XYZ 149.705 753.953 null] >> % 541 0 obj << -/D [1961 0 R /XYZ 150.705 716.092 null] +/D [1962 0 R /XYZ 150.705 716.092 null] >> -% 1960 0 obj +% 1961 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1967 0 obj +% 1968 0 obj << /Type /Page -/Contents 1968 0 R -/Resources 1966 0 R +/Contents 1969 0 R +/Resources 1967 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1971 0 R -/Annots [ 1964 0 R 1965 0 R ] +/Parent 1972 0 R +/Annots [ 1965 0 R 1966 0 R ] >> -% 1964 0 obj +% 1965 0 obj << /Type /Annot /Subtype /Link @@ -27888,7 +27743,7 @@ stream /Rect [320.317 442.264 387.374 454.323] /A << /S /GoTo /D (precdata) >> >> -% 1965 0 obj +% 1966 0 obj << /Type /Annot /Subtype /Link @@ -27896,33 +27751,33 @@ stream /Rect [171.257 352.6 177.533 366.303] /A << /S /GoTo /D (Hfootnote.4) >> >> -% 1969 0 obj +% 1970 0 obj << -/D [1967 0 R /XYZ 98.895 753.953 null] +/D [1968 0 R /XYZ 98.895 753.953 null] >> % 545 0 obj << -/D [1967 0 R /XYZ 99.895 716.092 null] +/D [1968 0 R /XYZ 99.895 716.092 null] >> -% 1970 0 obj +% 1971 0 obj << -/D [1967 0 R /XYZ 114.242 129.79 null] +/D [1968 0 R /XYZ 114.242 129.79 null] >> -% 1966 0 obj +% 1967 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> /ProcSet [ /PDF /Text ] >> -% 1977 0 obj +% 1978 0 obj << /Type /Page -/Contents 1978 0 R -/Resources 1976 0 R +/Contents 1979 0 R +/Resources 1977 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1971 0 R -/Annots [ 1972 0 R 1973 0 R 1974 0 R 1975 0 R ] +/Parent 1972 0 R +/Annots [ 1973 0 R 1974 0 R 1975 0 R 1976 0 R ] >> -% 1972 0 obj +% 1973 0 obj << /Type /Annot /Subtype /Link @@ -27930,7 +27785,7 @@ stream /Rect [365.487 576.377 443.006 588.437] /A << /S /GoTo /D (spdata) >> >> -% 1973 0 obj +% 1974 0 obj << /Type /Annot /Subtype /Link @@ -27938,7 +27793,7 @@ stream /Rect [451.902 505.741 518.96 517.801] /A << /S /GoTo /D (precdata) >> >> -% 1974 0 obj +% 1975 0 obj << /Type /Annot /Subtype /Link @@ -27946,7 +27801,7 @@ stream /Rect [422.264 435.105 489.322 447.165] /A << /S /GoTo /D (descdata) >> >> -% 1975 0 obj +% 1976 0 obj << /Type /Annot /Subtype /Link @@ -27954,46 +27809,46 @@ stream /Rect [368.227 128.475 435.285 140.535] /A << /S /GoTo /D (precdata) >> >> -% 1979 0 obj +% 1980 0 obj << -/D [1977 0 R /XYZ 149.705 753.953 null] +/D [1978 0 R /XYZ 149.705 753.953 null] >> % 549 0 obj << -/D [1977 0 R /XYZ 150.705 716.092 null] +/D [1978 0 R /XYZ 150.705 716.092 null] >> -% 1976 0 obj +% 1977 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1981 0 obj +% 1982 0 obj << /Type /Page -/Contents 1982 0 R -/Resources 1980 0 R +/Contents 1983 0 R +/Resources 1981 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1971 0 R +/Parent 1972 0 R >> -% 1983 0 obj +% 1984 0 obj << -/D [1981 0 R /XYZ 98.895 753.953 null] +/D [1982 0 R /XYZ 98.895 753.953 null] >> -% 1980 0 obj +% 1981 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 1989 0 obj +% 1990 0 obj << /Type /Page -/Contents 1990 0 R -/Resources 1988 0 R +/Contents 1991 0 R +/Resources 1989 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1971 0 R -/Annots [ 1984 0 R 1985 0 R 1986 0 R 1987 0 R ] +/Parent 1972 0 R +/Annots [ 1985 0 R 1986 0 R 1987 0 R 1988 0 R ] >> -% 1984 0 obj +% 1985 0 obj << /Type /Annot /Subtype /Link @@ -28001,7 +27856,7 @@ stream /Rect [371.126 573.77 438.184 585.83] /A << /S /GoTo /D (precdata) >> >> -% 1985 0 obj +% 1986 0 obj << /Type /Annot /Subtype /Link @@ -28009,7 +27864,7 @@ stream /Rect [393.303 517.98 469.357 530.039] /A << /S /GoTo /D (vdata) >> >> -% 1986 0 obj +% 1987 0 obj << /Type /Annot /Subtype /Link @@ -28017,7 +27872,7 @@ stream /Rect [374.822 462.189 441.88 474.248] /A << /S /GoTo /D (descdata) >> >> -% 1987 0 obj +% 1988 0 obj << /Type /Annot /Subtype /Link @@ -28025,29 +27880,29 @@ stream /Rect [393.303 272.899 469.357 284.958] /A << /S /GoTo /D (vdata) >> >> -% 1991 0 obj +% 1992 0 obj << -/D [1989 0 R /XYZ 149.705 753.953 null] +/D [1990 0 R /XYZ 149.705 753.953 null] >> % 553 0 obj << -/D [1989 0 R /XYZ 150.705 716.092 null] +/D [1990 0 R /XYZ 150.705 716.092 null] >> -% 1988 0 obj +% 1989 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 1994 0 obj +% 1995 0 obj << /Type /Page -/Contents 1995 0 R -/Resources 1993 0 R +/Contents 1996 0 R +/Resources 1994 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1971 0 R -/Annots [ 1992 0 R ] +/Parent 1972 0 R +/Annots [ 1993 0 R ] >> -% 1992 0 obj +% 1993 0 obj << /Type /Annot /Subtype /Link @@ -28055,50 +27910,50 @@ stream /Rect [320.317 573.77 387.374 585.83] /A << /S /GoTo /D (precdata) >> >> -% 1996 0 obj +% 1997 0 obj << -/D [1994 0 R /XYZ 98.895 753.953 null] +/D [1995 0 R /XYZ 98.895 753.953 null] >> % 557 0 obj << -/D [1994 0 R /XYZ 99.895 716.092 null] +/D [1995 0 R /XYZ 99.895 716.092 null] >> -% 1993 0 obj +% 1994 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> /ProcSet [ /PDF /Text ] >> -% 1998 0 obj +% 1999 0 obj << /Type /Page -/Contents 1999 0 R -/Resources 1997 0 R +/Contents 2000 0 R +/Resources 1998 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1971 0 R +/Parent 1972 0 R >> -% 2000 0 obj +% 2001 0 obj << -/D [1998 0 R /XYZ 149.705 753.953 null] +/D [1999 0 R /XYZ 149.705 753.953 null] >> % 561 0 obj << -/D [1998 0 R /XYZ 150.705 716.092 null] +/D [1999 0 R /XYZ 150.705 716.092 null] >> -% 1997 0 obj +% 1998 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 2004 0 obj +% 2005 0 obj << /Type /Page -/Contents 2005 0 R -/Resources 2003 0 R +/Contents 2006 0 R +/Resources 2004 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2007 0 R -/Annots [ 2001 0 R 2002 0 R ] +/Parent 2008 0 R +/Annots [ 2002 0 R 2003 0 R ] >> -% 2001 0 obj +% 2002 0 obj << /Type /Annot /Subtype /Link @@ -28106,7 +27961,7 @@ stream /Rect [320.317 573.77 387.374 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2002 0 obj +% 2003 0 obj << /Type /Annot /Subtype /Link @@ -28114,50 +27969,50 @@ stream /Rect [320.317 498.054 387.374 510.114] /A << /S /GoTo /D (precdata) >> >> -% 2006 0 obj +% 2007 0 obj << -/D [2004 0 R /XYZ 98.895 753.953 null] +/D [2005 0 R /XYZ 98.895 753.953 null] >> % 565 0 obj << -/D [2004 0 R /XYZ 99.895 716.092 null] +/D [2005 0 R /XYZ 99.895 716.092 null] >> -% 2003 0 obj +% 2004 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 2009 0 obj +% 2010 0 obj << /Type /Page -/Contents 2010 0 R -/Resources 2008 0 R +/Contents 2011 0 R +/Resources 2009 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2007 0 R +/Parent 2008 0 R >> -% 2011 0 obj +% 2012 0 obj << -/D [2009 0 R /XYZ 149.705 753.953 null] +/D [2010 0 R /XYZ 149.705 753.953 null] >> % 569 0 obj << -/D [2009 0 R /XYZ 150.705 716.092 null] +/D [2010 0 R /XYZ 150.705 716.092 null] >> -% 2008 0 obj +% 2009 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 2016 0 obj +% 2017 0 obj << /Type /Page -/Contents 2017 0 R -/Resources 2015 0 R +/Contents 2018 0 R +/Resources 2016 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2007 0 R -/Annots [ 2012 0 R 2013 0 R ] +/Parent 2008 0 R +/Annots [ 2013 0 R 2014 0 R ] >> -% 2012 0 obj +% 2013 0 obj << /Type /Annot /Subtype /Link @@ -28165,7 +28020,7 @@ stream /Rect [329.163 275.278 335.44 288.868] /A << /S /GoTo /D (Hfootnote.5) >> >> -% 2013 0 obj +% 2014 0 obj << /Type /Annot /Subtype /Link @@ -28173,45 +28028,45 @@ stream /Rect [291.943 134.696 369.462 146.755] /A << /S /GoTo /D (spdata) >> >> -% 2018 0 obj +% 2019 0 obj << -/D [2016 0 R /XYZ 98.895 753.953 null] +/D [2017 0 R /XYZ 98.895 753.953 null] >> % 573 0 obj << -/D [2016 0 R /XYZ 99.895 716.092 null] ->> -% 2019 0 obj -<< -/D [2016 0 R /XYZ 99.895 444.811 null] +/D [2017 0 R /XYZ 99.895 716.092 null] >> % 2020 0 obj << -/D [2016 0 R /XYZ 99.895 444.971 null] +/D [2017 0 R /XYZ 99.895 444.811 null] >> % 2021 0 obj << -/D [2016 0 R /XYZ 99.895 433.015 null] +/D [2017 0 R /XYZ 99.895 444.971 null] >> % 2022 0 obj << -/D [2016 0 R /XYZ 114.242 129.79 null] +/D [2017 0 R /XYZ 99.895 433.015 null] >> -% 2015 0 obj +% 2023 0 obj +<< +/D [2017 0 R /XYZ 114.242 129.79 null] +>> +% 2016 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1465 0 R /F67 918 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 2027 0 obj +% 2028 0 obj << /Type /Page -/Contents 2028 0 R -/Resources 2026 0 R +/Contents 2029 0 R +/Resources 2027 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2007 0 R -/Annots [ 2014 0 R 2023 0 R 2024 0 R 2025 0 R ] +/Parent 2008 0 R +/Annots [ 2015 0 R 2024 0 R 2025 0 R 2026 0 R ] >> -% 2014 0 obj +% 2015 0 obj << /Type /Annot /Subtype /Link @@ -28219,7 +28074,7 @@ stream /Rect [342.753 654.503 409.811 666.562] /A << /S /GoTo /D (precdata) >> >> -% 2023 0 obj +% 2024 0 obj << /Type /Annot /Subtype /Link @@ -28227,7 +28082,7 @@ stream /Rect [393.303 584.479 469.357 596.539] /A << /S /GoTo /D (vdata) >> >> -% 2024 0 obj +% 2025 0 obj << /Type /Annot /Subtype /Link @@ -28235,7 +28090,7 @@ stream /Rect [393.303 514.456 469.357 526.516] /A << /S /GoTo /D (vdata) >> >> -% 2025 0 obj +% 2026 0 obj << /Type /Annot /Subtype /Link @@ -28243,25 +28098,25 @@ stream /Rect [342.753 374.41 409.811 386.47] /A << /S /GoTo /D (descdata) >> >> -% 2029 0 obj +% 2030 0 obj << -/D [2027 0 R /XYZ 149.705 753.953 null] +/D [2028 0 R /XYZ 149.705 753.953 null] >> -% 2026 0 obj +% 2027 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1465 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R >> /ProcSet [ /PDF /Text ] >> -% 2032 0 obj +% 2033 0 obj << /Type /Page -/Contents 2033 0 R -/Resources 2031 0 R +/Contents 2034 0 R +/Resources 2032 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2007 0 R -/Annots [ 2030 0 R ] +/Parent 2008 0 R +/Annots [ 2031 0 R ] >> -% 2030 0 obj +% 2031 0 obj << /Type /Annot /Subtype /Link @@ -28269,28 +28124,171 @@ stream /Rect [342.493 554.876 418.548 566.936] /A << /S /GoTo /D (vdata) >> >> -% 2034 0 obj +% 2035 0 obj << -/D [2032 0 R /XYZ 98.895 753.953 null] +/D [2033 0 R /XYZ 98.895 753.953 null] >> -% 2031 0 obj +% 2032 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 2040 0 obj + +endstream +endobj +2042 0 obj << -/Type /Page -/Contents 2041 0 R -/Resources 2039 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2007 0 R -/Annots [ 2035 0 R 2036 0 R 2037 0 R ] +/Length 8623 >> +stream +0 g 0 G +0 g 0 G +BT +/F59 11.9552 Tf 150.705 706.129 Td [(11.2)-1000(psb)]TJ +ET +q +1 0 0 1 204.216 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F59 11.9552 Tf 207.803 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F62 9.9626 Tf -57.098 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F60 9.9626 Tf 110.849 -22.171 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F93 7.8896 Tf 3.589 0 Td [(+)]TJ/F62 7.5716 Tf 6.227 0 Td [(1)]TJ/F93 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F60 9.9626 Tf 11.535 0 Td [(M)]TJ/F91 7.8896 Tf 9.673 4.115 Td [(\000)]TJ/F62 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(b)]TJ/F91 10.3811 Tf 6.799 0 Td [(\000)]TJ/F60 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.811 -2.085 Td [(k)]TJ/F93 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F60 9.9626 Tf 16.637 0 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F62 9.9626 Tf 3.992 2.085 Td [(,)]TJ -230.665 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F60 9.9626 Tf 147.599 0 Td [(M)]TJ/F62 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.725 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ +0 g 0 G +/F59 9.9626 Tf -14.944 -20.304 Td [(1)]TJ +0 g 0 G +/F62 9.9626 Tf 9.962 0 Td [(normwise)-222(backwar)18(d)-221(err)18(or)-222(in)-222(th)1(e)-222(in\002nity)-222(norm;)-231(the)-221(iteration)-222(is)-222(stopped)-221(when)]TJ/F60 9.9626 Tf 109.036 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 297.001 584.127 cm +[]0 d 0 J 0.398 w 0 0 m 74.372 0 l S +Q +BT +/F93 10.3811 Tf 297.125 574.802 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F60 9.9626 Tf 5.938 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F60 9.9626 Tf 11.048 0 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F93 10.3811 Tf 7.377 0 Td [(+)]TJ/F91 10.3811 Tf 10.255 0 Td [(k)]TJ/F60 9.9626 Tf 5.44 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F93 10.3811 Tf 5.439 0 Td [(\051)]TJ/F69 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +0 g 0 G +/F59 9.9626 Tf -235.841 -32.142 Td [(2)]TJ +0 g 0 G +/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 324.174 523.428 cm +[]0 d 0 J 0.398 w 0 0 m 20.025 0 l S +Q +BT +/F91 10.3811 Tf 324.299 514.103 Td [(k)]TJ/F60 9.9626 Tf 5.439 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +0 g 0 G +/F59 9.9626 Tf -208.667 -32.082 Td [(3)]TJ +0 g 0 G +/F62 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 15.169 6.744 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 322.451 462.789 cm +[]0 d 0 J 0.398 w 0 0 m 23.472 0 l S +Q +BT +/F91 10.3811 Tf 322.575 453.464 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F62 7.5716 Tf 4 -1.744 Td [(0)]TJ/F91 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F62 9.9626 Tf -210.391 -32.083 Td [(The)-248(behaviour)-248(is)-248(contr)18(olled)-249(by)-248(the)-248(istop)-248(ar)18(gument)-248(\050see)-248(later\051.)-310(In)-248(the)-248(above)-248(for)18(-)]TJ 0 -11.955 Td [(mulae,)]TJ/F60 9.9626 Tf 32.809 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.304 1.96 Td [(is)-256(the)-256(tentative)-256(solution)-257(and)]TJ/F60 9.9626 Tf 125.144 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F93 10.3811 Tf 5.757 1.96 Td [(=)]TJ/F60 9.9626 Tf 11.201 0 Td [(b)]TJ/F91 10.3811 Tf 6.821 0 Td [(\000)]TJ/F60 9.9626 Tf 10.777 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(the)-256(corr)18(esponding)-256(r)18(esidual)]TJ -225.063 -11.955 Td [(at)-250(the)]TJ/F60 9.9626 Tf 27.083 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -18.186 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ +ET +q +1 0 0 1 201.407 386.32 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 205.52 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-112(o)-113(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +ET +q +1 0 0 1 384.896 386.32 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F62 9.9626 Tf 388.859 386.121 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +/F59 9.9626 Tf -29.001 -28.653 Td [(T)90(ype:)]TJ +0 g 0 G +/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F59 9.9626 Tf -29.828 -20.431 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.431 Td [(a)]TJ +0 g 0 G +/F62 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 178.414 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 257.028 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 363.206 256.829 Td [(Tspmat)]TJ +ET +q +1 0 0 1 395.216 257.028 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 398.354 256.829 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -268.57 -20.431 Td [(prec)]TJ +0 g 0 G +/F62 9.9626 Tf 24.348 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 188.777 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 363.206 188.577 Td [(prec)]TJ +ET +q +1 0 0 1 384.755 188.777 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 387.893 188.577 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F59 9.9626 Tf -258.11 -20.431 Td [(b)]TJ +0 g 0 G +/F62 9.9626 Tf 11.068 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 410.618 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 413.756 120.326 Td [(T)]TJ +ET +q +1 0 0 1 419.614 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 422.752 120.326 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F67 9.9626 Tf 447.439 120.326 Td [(type)]TJ +0 g 0 G +/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G + -153.273 -29.888 Td [(162)]TJ +0 g 0 G +ET endstream endobj -2051 0 obj +2052 0 obj << /Length 6698 >> @@ -28415,7 +28413,7 @@ ET endstream endobj -2056 0 obj +2057 0 obj << /Length 1093 >> @@ -28438,7 +28436,7 @@ ET endstream endobj -2066 0 obj +2067 0 obj << /Length 7593 >> @@ -28672,7 +28670,7 @@ ET endstream endobj -2080 0 obj +2081 0 obj << /Length 8656 >> @@ -28929,7 +28927,7 @@ ET endstream endobj -2089 0 obj +2090 0 obj << /Length 4578 >> @@ -28998,21 +28996,21 @@ ET endstream endobj -2073 0 obj +2074 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/mat.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2094 0 R +/PTEX.InfoDict 2095 0 R /BBox [0 0 438 395] /Resources << /ProcSet [ /PDF /ImageC ] /ExtGState << -/R7 2095 0 R +/R7 2096 0 R >>/XObject << -/R8 2096 0 R +/R8 2097 0 R >>>> /Length 3551 /Filter /FlateDecode @@ -29041,7 +29039,7 @@ r ´JXØxèóC¹ù[— S¬ë¹Ïæ^zÝ°.¼¯÷ëFÜ$ä 5`2. L£× 0 · æÁî# Z(Dô¿Sð÷žÅjý²¥¬³*'fÖåÃÝÖ;?buÞîR­rœ†þ—* Ýœ—"@„ÂúaËiý(ÿ« o^ÿ/o*o endstream endobj -2096 0 obj +2097 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29060,7 +29058,7 @@ stream & ÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÀ@ endstream endobj -2100 0 obj +2101 0 obj << /Length 7241 >> @@ -29210,22 +29208,22 @@ ET endstream endobj -2075 0 obj +2076 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/ell.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2111 0 R +/PTEX.InfoDict 2112 0 R /BBox [0 0 447 205] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2112 0 R +/R7 2113 0 R >>/XObject << -/R8 2113 0 R ->>/Font << /R9 2114 0 R/R11 2115 0 R>> +/R8 2114 0 R +>>/Font << /R9 2115 0 R/R11 2116 0 R>> >> /Length 2281 /Filter /FlateDecode @@ -29237,7 +29235,7 @@ x Íy-?ýíùï¯ßñGz·5®„ùËéOß}àMžså¾Atû·ÔÇÿ|THF endstream endobj -2113 0 obj +2114 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29256,7 +29254,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;Y¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà endstream endobj -2117 0 obj +2118 0 obj << /Filter /FlateDecode /Length 171 @@ -29265,7 +29263,7 @@ stream xœ]Mƒ F÷œ‚àOÛĸ±mš¶Àa0,‚¸èí; vÑ„ß›|ˆ~¸ÖD.ÁÁ #×ƪ€‹[ q2–•WâNy‡Yz&ú›ôïGNÔßåŒâYžóM¹9à.^i'dmQt­ÖC«þžªMõž¬)YŸ:2èDØ^26Y?‚iRªt4à°†€6æÞ¹Wêc,þ¾æO§Å¾=+V endstream endobj -2119 0 obj +2120 0 obj << /Filter /FlateDecode /Length 191 @@ -29275,7 +29273,7 @@ x â ±—Uˆ}íuT-mËüǸT¯)ÏuɺDÞyøýC ±¸(Š|iÑ_À endstream endobj -2120 0 obj +2121 0 obj << /Filter /FlateDecode /Length1 11124 @@ -29324,7 +29322,7 @@ B “žÑ endstream endobj -2121 0 obj +2122 0 obj << /Filter /FlateDecode /Length1 3512 @@ -29340,7 +29338,7 @@ a lþ'÷uþoL|E÷¾r«Ço¸ß9®ñߺӣú¾Á( endstream endobj -2128 0 obj +2129 0 obj << /Length 7889 >> @@ -29508,20 +29506,20 @@ ET endstream endobj -2122 0 obj +2123 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hll.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2133 0 R +/PTEX.InfoDict 2134 0 R /BBox [0 0 494 214] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2134 0 R ->>/Font << /R8 2135 0 R/R10 2136 0 R>> +/R7 2135 0 R +>>/Font << /R8 2136 0 R/R10 2137 0 R>> >> /Length 2880 /Filter /FlateDecode @@ -29543,7 +29541,7 @@ l Ù<øÇ×O?Ó‚•2.šg9_ÿ*×Ps ŸOøYT¨•®U¼v²rƈºŸÂãSóøbzh”8†Ñ½ÂXZÊü°ó`—ú矆@8èwàô)aÿ…¢ªküœËEvëñ»›šK°|dG˜s%´D YšVòÔ@( ázé‹ñCüÿæ׬á¿8Ç7•xVÇ‹ éÑi3kè4½ðw(Ölú¸V*|ik¬Ô¦âÓ*økµøåÀ—žÑÑ÷K•_á•Box:ÀÀ¯¿Æë‘HÏ+x´“êˆÆi[‡;¬<ž¿Á²ÐùÅ+i œ°ùŸø`8¼=ÿ³·‡ endstream endobj -2138 0 obj +2139 0 obj << /Filter /FlateDecode /Length 214 @@ -29552,7 +29550,7 @@ stream xœ]Á‚0 †ï{Š½Á@²ì¢£¾ÀÙ±L<øö¶EOK šp#Ý&ÉQZ]ŒV«ÓqA« ×͈ÆãøÝn ¸G6Š¨Ñë4(„‡ ÇéÍÍé~¹R6èõ&Ž{øaÎxÿ.[±D½˜ÐK·ÈQ7idZñ?:õ;> @@ -29950,20 +29948,20 @@ ET endstream endobj -2145 0 obj +2146 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/dia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2153 0 R +/PTEX.InfoDict 2154 0 R /BBox [0 0 499 211] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2154 0 R ->>/Font << /R8 2155 0 R/R10 2156 0 R>> +/R7 2155 0 R +>>/Font << /R8 2156 0 R/R10 2157 0 R>> >> /Length 2502 /Filter /FlateDecode @@ -29981,7 +29979,7 @@ $ rca™ñ8ÏzD—‹bH…°d'¥¢šÃ\LÀ/ó¹¬1ÙŒ,0F c¨)T#  7Ì,¥j7ß%Î¥šäÛæ›RÙ6ßq4›/ÉÙ¸g]åû\¦—×\ÃW\¬ò+3,êmó½Lr´›ïJŽ·Í7ñÅÓÐÈþ¶ù&þ?9³ù.y’QQШ» Ñ•Œ&Gs¼m¾7ì“LÏ‹I7=šûmóM¹m›/]”o›/ÉvóUQxT»ù._àlÛæ»òâ›QUÔÌá×.Ü$Rg{çæñÊØcé‚Lçúqçþú1º‡ç×><>¾bûJ:ªŠÞËÃ_ƽ:dº’·p>yºovª†ç¿‘ã¿ûîã·ÏÓ‘¯ì-u„縑óß¿Ë&& endstream endobj -2158 0 obj +2159 0 obj << /Filter /FlateDecode /Length 177 @@ -29991,7 +29989,7 @@ x ¢t s1#8ý÷ÕUÃlŽÉV‹"α’¡Cc×fÄb/Šû²íôåÅ9ሪ=Fp©œQbæxÖÁïÒàCvQùðY¢ endstream endobj -2160 0 obj +2161 0 obj << /Filter /FlateDecode /Length 197 @@ -30000,7 +29998,7 @@ stream xœ]Mƒ …÷œ‚ˆFmL»qѦi{ÄÁ° ꢷï0j]¼ Ìß#k»kçÝʳGœÍ Vn",ó ðFçY^ðÁ™õ ŠfÒeíM‡÷'Ç°;ßõÙ3¿ÐM¾×˜y€%hQû˜BIk?ü=Õ{AoÌ3“„ÀÈd™+’+Äš°Jh ›ËªP²*â ±Q$ĆFŸCÒÉι=7[ŒàWòLž’çá÷-a©Š£ØsÇbã endstream endobj -2161 0 obj +2162 0 obj << /Filter /FlateDecode /Length1 9528 @@ -30034,7 +30032,7 @@ E ó˜Ÿó_ ù[ØCÛ×,š0Z­ÊþÛ Ê+é×…¬Ã¿]úi ^gù\Þo´ùȯ›‰ò'/! `¢ìÁŠàÆ?GÿÁžÿ…&X‘³œ‰çI,¯ÖÆåbøQ ~¼ü÷8É߇㈭^×Ô:·éÛ š×ÕßZ½pÎ"£'ÛõDÊrms#×0F~6Mc£øÓ´ÎåBi6U ¯éÿðȾü?ôèGNÔÙý_XR‡=ñÑè—$=zC/]l»¼ÃQd‰E3ꊭÿîi endstream endobj -2162 0 obj +2163 0 obj << /Filter /FlateDecode /Length1 4304 @@ -30060,274 +30058,34 @@ Hp —øï}Ø».|wy endstream endobj -2167 0 obj +2047 0 obj << -/Length 9264 +/Type /ObjStm +/N 100 +/First 997 +/Length 13045 >> stream -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 99.895 706.129 Td [(vectorized,)-267(it)-264(does)-263(not)-264(necessarily)-263(make)-264(optimal)-264(use)-263(of)-264(the)-264(memory)-263(hierar)18(chy)111(.)]TJ 0 -11.955 Td [(While)-228(pr)18(ocessing)-229(each)-228(diagonal)-229(we)-228(ar)18(e)-229(updating)-228(entries)-228(in)-229(the)-228(output)-229(vector)]TJ/F67 9.9626 Tf 335.99 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)]TJ -341.221 -11.955 Td [(which)-290(is)-291(then)-290(accessed)-291(multiple)-290(times;)-311(if)-290(the)-290(vector)]TJ/F67 9.9626 Tf 229.536 0 Td [(y)]TJ/F62 9.9626 Tf 8.124 0 Td [(is)-290(too)-291(lar)18(ge)-290(to)-291(r)18(emain)-290(in)]TJ -237.66 -11.956 Td [(the)-250(cache)-250(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 14.944 -12.068 Td [(The)]TJ/F60 9.9626 Tf 20.923 0 Td [(hacked)-426(DIA)]TJ/F62 9.9626 Tf 53.49 0 Td [(\050)]TJ/F59 9.9626 Tf 3.318 0 Td [(HDIA)]TJ/F62 9.9626 Tf 28.224 0 Td [(\051)-426(format)-426(was)-426(designed)-426(to)-427(co)1(ntain)-427(the)-426(amount)-426(of)]TJ -120.899 -11.956 Td [(padding,)-416(by)-384(br)18(eaking)-383(the)-383(original)-383(matrix)-383(into)-383(equally)-384(sized)-383(gr)18(oups)-383(of)-383(r)18(ows)]TJ 0 -11.955 Td [(\050)]TJ/F60 9.9626 Tf 3.318 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-271(and)-266(then)-267(storing)-267(these)-266(gr)18(oups)-267(as)-267(independent)-266(matrices)-267(in)-267(DIA)-266(format.)]TJ -25.076 -11.955 Td [(This)-256(appr)18(oach)-256(is)-257(similar)-256(to)-256(that)-256(of)-257(HLL,)-256(and)-256(r)18(equir)18(es)-256(using)-257(an)-256(of)18(fset)-256(vector)-256(for)]TJ 0 -11.955 Td [(each)-284(submatri)1(x.)-411(Again,)-292(similarly)-283(to)-284(HLL,)-283(the)-284(various)-283(submatrices)-284(ar)18(e)-283(stacked)]TJ 0 -11.955 Td [(inside)-313(a)-314(linear)-313(array)-314(to)-313(impr)18(ove)-314(memory)-313(management.)-500(The)-314(fact)-313(that)-314(the)-313(ma-)]TJ 0 -11.955 Td [(trix)-337(is)-336(accessed)-337(in)-336(slices)-337(helps)-337(in)-336(r)18(educing)-337(cache)-336(misses,)-359(especially)-336(r)18(egar)18(ding)]TJ 0 -11.956 Td [(accesses)-250(to)-250(the)-250(vector)]TJ/F67 9.9626 Tf 95.959 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -86.246 -12.068 Td [(An)-246(additional)-246(vector)]TJ/F60 9.9626 Tf 93.666 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.567 0 Td [(is)-246(pr)18(ovided)-246(to)-246(complete)-246(the)-246(matrix)-245(format;)]TJ -157.177 -11.956 Td [(given)-321(that)]TJ/F60 9.9626 Tf 48.303 0 Td [(hackSize)]TJ/F62 9.9626 Tf 37.686 0 Td [(is)-321(the)-320(number)-321(of)-321(r)18(ows)-321(of)-320(each)-321(hack,)-339(the)]TJ/F60 9.9626 Tf 180.964 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 49.312 0 Td [(vector)]TJ -316.265 -11.955 Td [(is)-321(made)-322(b)1(y)-322(an)-321(array)-321(of)]TJ/F93 10.3811 Tf 105.045 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-235(+)]TJ/F62 9.9626 Tf 16.868 0 Td [(1)-321(elements,)-339(pointing)-321(to)-322(the)-321(\002rst)-321(diag-)]TJ -177.205 -11.955 Td [(onal)-289(of)18(fset)-290(of)-289(a)-289(submatrix)-289(inside)-290(the)-289(stacked)]TJ/F60 9.9626 Tf 198.567 0 Td [(offsets)]TJ/F62 9.9626 Tf 27.789 0 Td [(buf)18(fers,)-299(plus)-289(an)-290(additional)]TJ -226.356 -11.955 Td [(element)-350(equal)-350(to)-350(the)-351(number)-350(of)-350(nonzer)18(o)-350(diagonals)-350(in)-350(the)-351(whole)-350(matrix.)-610(W)92(e)]TJ 0 -11.955 Td [(thus)-315(have)-314(the)-315(pr)18(operty)-315(that)-315(the)-314(number)-315(of)-315(diagonals)-315(of)-314(the)]TJ/F60 9.9626 Tf 267.65 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.499 0 Td [(hack)]TJ/F62 9.9626 Tf 21.068 0 Td [(is)-315(given)]TJ -308.815 -11.955 Td [(by)]TJ/F60 9.9626 Tf 13.539 0 Td [(hackOffsets[k+1])-250(-)-250(hackOffsets[k])]TJ/F62 9.9626 Tf 133.667 0 Td [(.)]TJ -0 g 0 G -ET -1 0 0 1 146.769 381.801 cm -q -.4451 0 0 .4451 0 0 cm -q -1 0 0 1 0 0 cm -/Im10 Do -Q -Q -0 g 0 G -1 0 0 1 -146.769 -381.801 cm -BT -/F62 9.9626 Tf 147.941 359.883 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ -0 0 1 rg 0 0 1 RG - [-250(5)]TJ -0 g 0 G -0 g 0 G -0 g 0 G - -33.102 -24.137 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_hdia_sparse_mat)]TJ/F62 9.9626 Tf 109.837 0 Td [(:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 99.895 120.326 cm -0 0 343.711 203.238 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 112.299 312.904 Td [(type)]TJ -0 g 0 G - [-525(pm)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 14.122 -10.959 Td [(real)]TJ -0 g 0 G - [(\050psb_dpk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-1050(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(data)]TJ -0 g 0 G - [(\050:,:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(end)-525(type)]TJ -0 g 0 G - [-525(pm)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -21.918 Td [(type)]TJ -0 g 0 G - [-525(po)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 14.122 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-1050(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(off\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(end)-525(type)]TJ -0 g 0 G - [-525(po)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -21.918 Td [(type)]TJ -0 g 0 G - [(,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(extends)]TJ -0 g 0 G - [(\050psb_d_base_sparse_mat\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_d_hdia_sparse_mat)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(HDIA)-525(format,)-525(extended.)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.958 Td [(!)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf 0 -21.918 Td [(type)]TJ -0 g 0 G - [(\050pm\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(hdia\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ -0 g 0 G - [(\050po\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(offset\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(nblocks,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(nzeros)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(hack)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(64)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_long_int_k_\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(dim)]TJ -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(0)]TJ -0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0 g 0 G -/F62 9.9626 Tf 142.566 -36.164 Td [(171)]TJ -0 g 0 G -ET - -endstream -endobj -2046 0 obj +2041 0 2036 157 2037 302 2038 449 2043 591 577 650 2044 708 2045 767 2046 826 2040 885 +2051 1032 2039 1189 2048 1333 2049 1480 2053 1624 2050 1682 2056 1829 2058 1947 2055 2006 2066 2087 +2059 2280 2069 2456 2060 2632 2061 2815 2062 2968 2063 3123 2064 3275 2068 3426 581 3484 585 3541 +2065 3598 2080 3720 2072 3877 2073 4027 2075 4174 2082 4320 589 4379 593 4437 2083 4495 2084 4554 +2079 4613 2089 4750 2095 4889 2096 5069 2078 5112 2091 5259 2086 5317 2092 5375 2093 5434 2094 5492 +2088 5549 2100 5685 2112 5824 2113 6004 2115 6047 2116 6252 2117 6541 2119 6762 2077 6975 2102 7121 +2087 7180 2103 7239 2104 7298 2105 7357 2106 7416 2107 7475 2108 7534 2109 7593 2110 7651 2098 7710 +2111 7769 2099 7828 2128 8020 2134 8177 2135 8357 2136 8400 2137 8703 2138 8908 2140 9121 2124 9342 +2125 9489 2126 9636 2130 9781 2131 9839 2132 9898 2127 9956 2149 10162 2154 10301 2155 10481 2156 10524 +2157 10725 2158 11020 2160 11241 2147 11454 2151 11601 2144 11660 2152 11719 2145 11778 2153 11837 2148 11895 +% 2041 0 obj << -/Type /ObjStm -/N 100 -/First 998 -/Length 13028 ->> -stream -2035 0 2036 145 2037 292 2042 434 577 493 2043 551 2044 610 2045 669 2039 728 2050 875 -2038 1032 2047 1176 2048 1323 2052 1467 2049 1525 2055 1672 2057 1790 2054 1849 2065 1930 2058 2123 -2068 2299 2059 2475 2060 2658 2061 2811 2062 2966 2063 3118 2067 3269 581 3327 585 3384 2064 3441 -2079 3563 2071 3720 2072 3870 2074 4017 2081 4163 589 4222 593 4280 2082 4338 2083 4397 2078 4456 -2088 4593 2094 4732 2095 4912 2077 4955 2090 5102 2085 5160 2091 5218 2092 5277 2093 5335 2087 5392 -2099 5528 2111 5667 2112 5847 2114 5890 2115 6095 2116 6384 2118 6605 2076 6818 2101 6964 2086 7023 -2102 7082 2103 7141 2104 7200 2105 7259 2106 7318 2107 7377 2108 7436 2109 7494 2097 7553 2110 7612 -2098 7671 2127 7863 2133 8020 2134 8200 2135 8243 2136 8546 2137 8751 2139 8964 2123 9185 2124 9332 -2125 9479 2129 9624 2130 9682 2131 9741 2126 9799 2148 10005 2153 10144 2154 10324 2155 10367 2156 10568 -2157 10863 2159 11084 2146 11297 2150 11444 2143 11503 2151 11562 2144 11621 2152 11680 2147 11738 2166 11891 -% 2035 0 obj +/Type /Page +/Contents 2042 0 R +/Resources 2040 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2008 0 R +/Annots [ 2036 0 R 2037 0 R 2038 0 R ] +>> +% 2036 0 obj << /Type /Annot /Subtype /Link @@ -30335,7 +30093,7 @@ stream /Rect [342.753 253.023 420.271 265.083] /A << /S /GoTo /D (spdata) >> >> -% 2036 0 obj +% 2037 0 obj << /Type /Annot /Subtype /Link @@ -30343,7 +30101,7 @@ stream /Rect [342.753 184.772 409.811 196.831] /A << /S /GoTo /D (precdata) >> >> -% 2037 0 obj +% 2038 0 obj << /Type /Annot /Subtype /Link @@ -30351,41 +30109,41 @@ stream /Rect [393.303 116.52 469.357 128.58] /A << /S /GoTo /D (vdata) >> >> -% 2042 0 obj +% 2043 0 obj << -/D [2040 0 R /XYZ 149.705 753.953 null] +/D [2041 0 R /XYZ 149.705 753.953 null] >> % 577 0 obj << -/D [2040 0 R /XYZ 150.705 716.092 null] ->> -% 2043 0 obj -<< -/D [2040 0 R /XYZ 150.705 397.916 null] +/D [2041 0 R /XYZ 150.705 716.092 null] >> % 2044 0 obj << -/D [2040 0 R /XYZ 150.705 398.076 null] +/D [2041 0 R /XYZ 150.705 397.916 null] >> % 2045 0 obj << -/D [2040 0 R /XYZ 150.705 386.121 null] +/D [2041 0 R /XYZ 150.705 398.076 null] >> -% 2039 0 obj +% 2046 0 obj +<< +/D [2041 0 R /XYZ 150.705 386.121 null] +>> +% 2040 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1465 0 R /F67 918 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 2050 0 obj +% 2051 0 obj << /Type /Page -/Contents 2051 0 R -/Resources 2049 0 R +/Contents 2052 0 R +/Resources 2050 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2053 0 R -/Annots [ 2038 0 R 2047 0 R 2048 0 R ] +/Parent 2054 0 R +/Annots [ 2039 0 R 2048 0 R 2049 0 R ] >> -% 2038 0 obj +% 2039 0 obj << /Type /Annot /Subtype /Link @@ -30393,7 +30151,7 @@ stream /Rect [342.493 654.503 418.548 666.562] /A << /S /GoTo /D (vdata) >> >> -% 2047 0 obj +% 2048 0 obj << /Type /Annot /Subtype /Link @@ -30401,7 +30159,7 @@ stream /Rect [291.943 520.007 359.001 532.067] /A << /S /GoTo /D (descdata) >> >> -% 2048 0 obj +% 2049 0 obj << /Type /Annot /Subtype /Link @@ -30409,63 +30167,63 @@ stream /Rect [342.493 183.768 418.548 195.827] /A << /S /GoTo /D (vdata) >> >> -% 2052 0 obj +% 2053 0 obj << -/D [2050 0 R /XYZ 98.895 753.953 null] +/D [2051 0 R /XYZ 98.895 753.953 null] >> -% 2049 0 obj +% 2050 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1465 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R >> /ProcSet [ /PDF /Text ] >> -% 2055 0 obj +% 2056 0 obj << /Type /Page -/Contents 2056 0 R -/Resources 2054 0 R +/Contents 2057 0 R +/Resources 2055 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2053 0 R +/Parent 2054 0 R >> -% 2057 0 obj +% 2058 0 obj << -/D [2055 0 R /XYZ 149.705 753.953 null] +/D [2056 0 R /XYZ 149.705 753.953 null] >> -% 2054 0 obj +% 2055 0 obj << /Font << /F59 669 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 2065 0 obj +% 2066 0 obj << /Type /Page -/Contents 2066 0 R -/Resources 2064 0 R +/Contents 2067 0 R +/Resources 2065 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2053 0 R -/Annots [ 2058 0 R 2068 0 R 2059 0 R 2060 0 R 2061 0 R 2062 0 R 2063 0 R ] +/Parent 2054 0 R +/Annots [ 2059 0 R 2069 0 R 2060 0 R 2061 0 R 2062 0 R 2063 0 R 2064 0 R ] >> -% 2058 0 obj +% 2059 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [317.082 636.522 444.603 648.582] /Subtype/Link/A<> >> -% 2068 0 obj +% 2069 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [123.806 624.567 167.641 636.627] /Subtype/Link/A<> >> -% 2059 0 obj +% 2060 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [140.413 593.098 346.389 605.158] /Subtype/Link/A<> >> -% 2060 0 obj +% 2061 0 obj << /Type /Annot /Subtype /Link @@ -30473,7 +30231,7 @@ stream /Rect [216.758 552.736 228.713 561.692] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 2061 0 obj +% 2062 0 obj << /Type /Annot /Subtype /Link @@ -30481,7 +30239,7 @@ stream /Rect [232.191 552.835 244.146 561.841] /A << /S /GoTo /D (cite.CaFiRo:2014) >> >> -% 2062 0 obj +% 2063 0 obj << /Type /Annot /Subtype /Link @@ -30489,7 +30247,7 @@ stream /Rect [247.624 552.736 259.579 561.841] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 2063 0 obj +% 2064 0 obj << /Type /Annot /Subtype /Link @@ -30497,33 +30255,33 @@ stream /Rect [147.745 540.88 159.7 549.737] /A << /S /GoTo /D (cite.OurTechRep) >> >> -% 2067 0 obj +% 2068 0 obj << -/D [2065 0 R /XYZ 98.895 753.953 null] +/D [2066 0 R /XYZ 98.895 753.953 null] >> % 581 0 obj << -/D [2065 0 R /XYZ 99.895 716.092 null] +/D [2066 0 R /XYZ 99.895 716.092 null] >> % 585 0 obj << -/D [2065 0 R /XYZ 99.895 525.151 null] +/D [2066 0 R /XYZ 99.895 525.151 null] >> -% 2064 0 obj +% 2065 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1021 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1022 0 R >> /ProcSet [ /PDF /Text ] >> -% 2079 0 obj +% 2080 0 obj << /Type /Page -/Contents 2080 0 R -/Resources 2078 0 R +/Contents 2081 0 R +/Resources 2079 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2053 0 R -/Annots [ 2071 0 R 2072 0 R 2074 0 R ] +/Parent 2054 0 R +/Annots [ 2072 0 R 2073 0 R 2075 0 R ] >> -% 2071 0 obj +% 2072 0 obj << /Type /Annot /Subtype /Link @@ -30531,7 +30289,7 @@ stream /Rect [172.124 282.166 184.079 291.173] /A << /S /GoTo /D (cite.MRC:11) >> >> -% 2072 0 obj +% 2073 0 obj << /Type /Annot /Subtype /Link @@ -30539,7 +30297,7 @@ stream /Rect [304.646 246.183 316.601 255.592] /A << /S /GoTo /D (table.21) >> >> -% 2074 0 obj +% 2075 0 obj << /Type /Annot /Subtype /Link @@ -30547,53 +30305,53 @@ stream /Rect [365.616 176.296 372.59 188.355] /A << /S /GoTo /D (figure.6) >> >> -% 2081 0 obj +% 2082 0 obj << -/D [2079 0 R /XYZ 149.705 753.953 null] +/D [2080 0 R /XYZ 149.705 753.953 null] >> % 589 0 obj << -/D [2079 0 R /XYZ 150.705 349.244 null] +/D [2080 0 R /XYZ 150.705 349.244 null] >> % 593 0 obj << -/D [2079 0 R /XYZ 150.705 231.907 null] +/D [2080 0 R /XYZ 150.705 231.907 null] >> -% 2082 0 obj +% 2083 0 obj << -/D [2079 0 R /XYZ 150.705 211.056 null] +/D [2080 0 R /XYZ 150.705 211.056 null] >> -% 2083 0 obj +% 2084 0 obj << -/D [2079 0 R /XYZ 150.705 120.166 null] +/D [2080 0 R /XYZ 150.705 120.166 null] >> -% 2078 0 obj +% 2079 0 obj << -/Font << /F120 1787 0 R /F102 1021 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R /F60 670 0 R >> +/Font << /F120 1788 0 R /F102 1022 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 2088 0 obj +% 2089 0 obj << /Type /Page -/Contents 2089 0 R -/Resources 2087 0 R +/Contents 2090 0 R +/Resources 2088 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2053 0 R -/Annots [ 2077 0 R ] +/Parent 2054 0 R +/Annots [ 2078 0 R ] >> -% 2094 0 obj +% 2095 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133929+01'00') /ModDate (D:20140329133929+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2095 0 obj +% 2096 0 obj << /Type /ExtGState /OPM 1 >> -% 2077 0 obj +% 2078 0 obj << /Type /Annot /Subtype /Link @@ -30601,76 +30359,76 @@ stream /Rect [133.552 326.969 140.526 339.028] /A << /S /GoTo /D (algocf.1) >> >> -% 2090 0 obj -<< -/D [2088 0 R /XYZ 98.895 753.953 null] ->> -% 2085 0 obj +% 2091 0 obj << -/D [2088 0 R /XYZ 99.895 716.092 null] +/D [2089 0 R /XYZ 98.895 753.953 null] >> -% 2091 0 obj +% 2086 0 obj << -/D [2088 0 R /XYZ 346.697 408.774 null] +/D [2089 0 R /XYZ 99.895 716.092 null] >> % 2092 0 obj << -/D [2088 0 R /XYZ 99.895 264.598 null] +/D [2089 0 R /XYZ 346.697 408.774 null] >> % 2093 0 obj << -/D [2088 0 R /XYZ 99.895 232.98 null] +/D [2089 0 R /XYZ 99.895 264.598 null] >> -% 2087 0 obj +% 2094 0 obj +<< +/D [2089 0 R /XYZ 99.895 232.98 null] +>> +% 2088 0 obj << /Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> -/XObject << /Im6 2073 0 R >> +/XObject << /Im6 2074 0 R >> /ProcSet [ /PDF /Text ] >> -% 2099 0 obj +% 2100 0 obj << /Type /Page -/Contents 2100 0 R -/Resources 2098 0 R +/Contents 2101 0 R +/Resources 2099 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2053 0 R -/Annots [ 2076 0 R ] +/Parent 2054 0 R +/Annots [ 2077 0 R ] >> -% 2111 0 obj +% 2112 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2112 0 obj +% 2113 0 obj << /Type /ExtGState /OPM 1 >> -% 2114 0 obj +% 2115 0 obj << /BaseFont /YAZDUX+TimesNewRomanPSMT -/FontDescriptor 2116 0 R -/ToUnicode 2117 0 R +/FontDescriptor 2117 0 R +/ToUnicode 2118 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2115 0 obj +% 2116 0 obj << /BaseFont /NDNSMY+FreeSerif -/FontDescriptor 2118 0 R -/ToUnicode 2119 0 R +/FontDescriptor 2119 0 R +/ToUnicode 2120 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 0 0 0 0 0 385 0 0 0 0 0 0 0 667 529 0 0 0 0 0 701] /Subtype /TrueType >> -% 2116 0 obj +% 2117 0 obj << /Type /FontDescriptor /FontName /YAZDUX+TimesNewRomanPSMT @@ -30682,9 +30440,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2120 0 R +/FontFile2 2121 0 R >> -% 2118 0 obj +% 2119 0 obj << /Type /FontDescriptor /FontName /NDNSMY+FreeSerif @@ -30696,9 +30454,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2121 0 R +/FontFile2 2122 0 R >> -% 2076 0 obj +% 2077 0 obj << /Type /Annot /Subtype /Link @@ -30706,104 +30464,104 @@ stream /Rect [435.396 583.767 442.37 595.827] /A << /S /GoTo /D (figure.5) >> >> -% 2101 0 obj -<< -/D [2099 0 R /XYZ 149.705 753.953 null] ->> -% 2086 0 obj +% 2102 0 obj << -/D [2099 0 R /XYZ 440.026 621.446 null] +/D [2100 0 R /XYZ 149.705 753.953 null] >> -% 2102 0 obj +% 2087 0 obj << -/D [2099 0 R /XYZ 165.649 563.747 null] +/D [2100 0 R /XYZ 440.026 621.446 null] >> % 2103 0 obj << -/D [2099 0 R /XYZ 165.649 567.034 null] +/D [2100 0 R /XYZ 165.649 563.747 null] >> % 2104 0 obj << -/D [2099 0 R /XYZ 165.649 556.075 null] +/D [2100 0 R /XYZ 165.649 567.034 null] >> % 2105 0 obj << -/D [2099 0 R /XYZ 165.649 545.116 null] +/D [2100 0 R /XYZ 165.649 556.075 null] >> % 2106 0 obj << -/D [2099 0 R /XYZ 165.649 534.158 null] +/D [2100 0 R /XYZ 165.649 545.116 null] >> % 2107 0 obj << -/D [2099 0 R /XYZ 165.649 523.199 null] +/D [2100 0 R /XYZ 165.649 534.158 null] >> % 2108 0 obj << -/D [2099 0 R /XYZ 165.649 512.24 null] +/D [2100 0 R /XYZ 165.649 523.199 null] >> % 2109 0 obj << -/D [2099 0 R /XYZ 165.649 501.281 null] ->> -% 2097 0 obj -<< -/D [2099 0 R /XYZ 165.649 481.057 null] +/D [2100 0 R /XYZ 165.649 512.24 null] >> % 2110 0 obj << -/D [2099 0 R /XYZ 150.705 294.895 null] +/D [2100 0 R /XYZ 165.649 501.281 null] >> % 2098 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F102 1021 0 R /F120 1787 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> -/XObject << /Im7 2075 0 R >> +/D [2100 0 R /XYZ 165.649 481.057 null] +>> +% 2111 0 obj +<< +/D [2100 0 R /XYZ 150.705 294.895 null] +>> +% 2099 0 obj +<< +/Font << /F62 671 0 R /F59 669 0 R /F102 1022 0 R /F120 1788 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> +/XObject << /Im7 2076 0 R >> /ProcSet [ /PDF /Text ] >> -% 2127 0 obj +% 2128 0 obj << /Type /Page -/Contents 2128 0 R -/Resources 2126 0 R +/Contents 2129 0 R +/Resources 2127 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2132 0 R -/Annots [ 2123 0 R 2124 0 R 2125 0 R ] +/Parent 2133 0 R +/Annots [ 2124 0 R 2125 0 R 2126 0 R ] >> -% 2133 0 obj +% 2134 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2134 0 obj +% 2135 0 obj << /Type /ExtGState /OPM 1 >> -% 2135 0 obj +% 2136 0 obj << /BaseFont /MCSFLP+FreeSerif -/FontDescriptor 2137 0 R -/ToUnicode 2138 0 R +/FontDescriptor 2138 0 R +/ToUnicode 2139 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 385 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2136 0 obj +% 2137 0 obj << /BaseFont /AJRCAD+TimesNewRomanPSMT -/FontDescriptor 2139 0 R -/ToUnicode 2140 0 R +/FontDescriptor 2140 0 R +/ToUnicode 2141 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2137 0 obj +% 2138 0 obj << /Type /FontDescriptor /FontName /MCSFLP+FreeSerif @@ -30815,9 +30573,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2141 0 R +/FontFile2 2142 0 R >> -% 2139 0 obj +% 2140 0 obj << /Type /FontDescriptor /FontName /AJRCAD+TimesNewRomanPSMT @@ -30829,9 +30587,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2142 0 R +/FontFile2 2143 0 R >> -% 2123 0 obj +% 2124 0 obj << /Type /Annot /Subtype /Link @@ -30839,7 +30597,7 @@ stream /Rect [402.878 438.686 409.852 450.746] /A << /S /GoTo /D (figure.5) >> >> -% 2124 0 obj +% 2125 0 obj << /Type /Annot /Subtype /Link @@ -30847,7 +30605,7 @@ stream /Rect [312.155 188.317 319.129 200.376] /A << /S /GoTo /D (figure.8) >> >> -% 2125 0 obj +% 2126 0 obj << /Type /Annot /Subtype /Link @@ -30855,68 +30613,68 @@ stream /Rect [426.875 140.43 433.849 152.49] /A << /S /GoTo /D (algocf.2) >> >> -% 2129 0 obj -<< -/D [2127 0 R /XYZ 98.895 753.953 null] ->> % 2130 0 obj << -/D [2127 0 R /XYZ 396.732 476.365 null] +/D [2128 0 R /XYZ 98.895 753.953 null] >> % 2131 0 obj << -/D [2127 0 R /XYZ 99.895 223.169 null] +/D [2128 0 R /XYZ 396.732 476.365 null] >> -% 2126 0 obj +% 2132 0 obj << -/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R /F102 1021 0 R /F120 1787 0 R /F69 1465 0 R /F91 919 0 R /F59 669 0 R >> -/XObject << /Im8 2122 0 R >> +/D [2128 0 R /XYZ 99.895 223.169 null] +>> +% 2127 0 obj +<< +/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R /F102 1022 0 R /F120 1788 0 R /F69 1466 0 R /F91 919 0 R /F59 669 0 R >> +/XObject << /Im8 2123 0 R >> /ProcSet [ /PDF /Text ] >> -% 2148 0 obj +% 2149 0 obj << /Type /Page -/Contents 2149 0 R -/Resources 2147 0 R +/Contents 2150 0 R +/Resources 2148 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2132 0 R -/Annots [ 2146 0 R ] +/Parent 2133 0 R +/Annots [ 2147 0 R ] >> -% 2153 0 obj +% 2154 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133927+01'00') /ModDate (D:20140329133927+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2154 0 obj +% 2155 0 obj << /Type /ExtGState /OPM 1 >> -% 2155 0 obj +% 2156 0 obj << /BaseFont /BNRUAU+TimesNewRomanPSMT -/FontDescriptor 2157 0 R -/ToUnicode 2158 0 R +/FontDescriptor 2158 0 R +/ToUnicode 2159 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 500 0 0 0 0 500] /Subtype /TrueType >> -% 2156 0 obj +% 2157 0 obj << /BaseFont /ICFUKB+FreeSerif -/FontDescriptor 2159 0 R -/ToUnicode 2160 0 R +/FontDescriptor 2160 0 R +/ToUnicode 2161 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2157 0 obj +% 2158 0 obj << /Type /FontDescriptor /FontName /BNRUAU+TimesNewRomanPSMT @@ -30928,9 +30686,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2161 0 R +/FontFile2 2162 0 R >> -% 2159 0 obj +% 2160 0 obj << /Type /FontDescriptor /FontName /ICFUKB+FreeSerif @@ -30942,9 +30700,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2162 0 R +/FontFile2 2163 0 R >> -% 2146 0 obj +% 2147 0 obj << /Type /Annot /Subtype /Link @@ -30952,60 +30710,300 @@ stream /Rect [422.101 548.965 429.075 561.025] /A << /S /GoTo /D (figure.5) >> >> -% 2150 0 obj +% 2151 0 obj << -/D [2148 0 R /XYZ 149.705 753.953 null] +/D [2149 0 R /XYZ 149.705 753.953 null] >> -% 2143 0 obj +% 2144 0 obj << -/D [2148 0 R /XYZ 447.542 586.644 null] +/D [2149 0 R /XYZ 447.542 586.644 null] >> -% 2151 0 obj +% 2152 0 obj << -/D [2148 0 R /XYZ 150.705 537.967 null] +/D [2149 0 R /XYZ 150.705 537.967 null] >> -% 2144 0 obj +% 2145 0 obj << -/D [2148 0 R /XYZ 165.649 395.424 null] +/D [2149 0 R /XYZ 165.649 395.424 null] >> -% 2152 0 obj +% 2153 0 obj << -/D [2148 0 R /XYZ 150.705 199.14 null] +/D [2149 0 R /XYZ 150.705 199.14 null] >> -% 2147 0 obj +% 2148 0 obj << -/Font << /F62 671 0 R /F67 918 0 R /F102 1021 0 R /F59 669 0 R /F120 1787 0 R >> -/XObject << /Im9 2145 0 R >> +/Font << /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F59 669 0 R /F120 1788 0 R >> +/XObject << /Im9 2146 0 R >> /ProcSet [ /PDF /Text ] >> -% 2166 0 obj + +endstream +endobj +2168 0 obj << -/Type /Page -/Contents 2167 0 R -/Resources 2165 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2132 0 R -/Annots [ 2164 0 R ] +/Length 9264 >> +stream +0 g 0 G +0 g 0 G +BT +/F62 9.9626 Tf 99.895 706.129 Td [(vectorized,)-267(it)-264(does)-263(not)-264(necessarily)-263(make)-264(optimal)-264(use)-263(of)-264(the)-264(memory)-263(hierar)18(chy)111(.)]TJ 0 -11.955 Td [(While)-228(pr)18(ocessing)-229(each)-228(diagonal)-229(we)-228(ar)18(e)-229(updating)-228(entries)-228(in)-229(the)-228(output)-229(vector)]TJ/F67 9.9626 Tf 335.99 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)]TJ -341.221 -11.955 Td [(which)-290(is)-291(then)-290(accessed)-291(multiple)-290(times;)-311(if)-290(the)-290(vector)]TJ/F67 9.9626 Tf 229.536 0 Td [(y)]TJ/F62 9.9626 Tf 8.124 0 Td [(is)-290(too)-291(lar)18(ge)-290(to)-291(r)18(emain)-290(in)]TJ -237.66 -11.956 Td [(the)-250(cache)-250(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 14.944 -12.068 Td [(The)]TJ/F60 9.9626 Tf 20.923 0 Td [(hacked)-426(DIA)]TJ/F62 9.9626 Tf 53.49 0 Td [(\050)]TJ/F59 9.9626 Tf 3.318 0 Td [(HDIA)]TJ/F62 9.9626 Tf 28.224 0 Td [(\051)-426(format)-426(was)-426(designed)-426(to)-427(co)1(ntain)-427(the)-426(amount)-426(of)]TJ -120.899 -11.956 Td [(padding,)-416(by)-384(br)18(eaking)-383(the)-383(original)-383(matrix)-383(into)-383(equally)-384(sized)-383(gr)18(oups)-383(of)-383(r)18(ows)]TJ 0 -11.955 Td [(\050)]TJ/F60 9.9626 Tf 3.318 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-271(and)-266(then)-267(storing)-267(these)-266(gr)18(oups)-267(as)-267(independent)-266(matrices)-267(in)-267(DIA)-266(format.)]TJ -25.076 -11.955 Td [(This)-256(appr)18(oach)-256(is)-257(similar)-256(to)-256(that)-256(of)-257(HLL,)-256(and)-256(r)18(equir)18(es)-256(using)-257(an)-256(of)18(fset)-256(vector)-256(for)]TJ 0 -11.955 Td [(each)-284(submatri)1(x.)-411(Again,)-292(similarly)-283(to)-284(HLL,)-283(the)-284(various)-283(submatrices)-284(ar)18(e)-283(stacked)]TJ 0 -11.955 Td [(inside)-313(a)-314(linear)-313(array)-314(to)-313(impr)18(ove)-314(memory)-313(management.)-500(The)-314(fact)-313(that)-314(the)-313(ma-)]TJ 0 -11.955 Td [(trix)-337(is)-336(accessed)-337(in)-336(slices)-337(helps)-337(in)-336(r)18(educing)-337(cache)-336(misses,)-359(especially)-336(r)18(egar)18(ding)]TJ 0 -11.956 Td [(accesses)-250(to)-250(the)-250(vector)]TJ/F67 9.9626 Tf 95.959 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -86.246 -12.068 Td [(An)-246(additional)-246(vector)]TJ/F60 9.9626 Tf 93.666 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.567 0 Td [(is)-246(pr)18(ovided)-246(to)-246(complete)-246(the)-246(matrix)-245(format;)]TJ -157.177 -11.956 Td [(given)-321(that)]TJ/F60 9.9626 Tf 48.303 0 Td [(hackSize)]TJ/F62 9.9626 Tf 37.686 0 Td [(is)-321(the)-320(number)-321(of)-321(r)18(ows)-321(of)-320(each)-321(hack,)-339(the)]TJ/F60 9.9626 Tf 180.964 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 49.312 0 Td [(vector)]TJ -316.265 -11.955 Td [(is)-321(made)-322(b)1(y)-322(an)-321(array)-321(of)]TJ/F93 10.3811 Tf 105.045 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-235(+)]TJ/F62 9.9626 Tf 16.868 0 Td [(1)-321(elements,)-339(pointing)-321(to)-322(the)-321(\002rst)-321(diag-)]TJ -177.205 -11.955 Td [(onal)-289(of)18(fset)-290(of)-289(a)-289(submatrix)-289(inside)-290(the)-289(stacked)]TJ/F60 9.9626 Tf 198.567 0 Td [(offsets)]TJ/F62 9.9626 Tf 27.789 0 Td [(buf)18(fers,)-299(plus)-289(an)-290(additional)]TJ -226.356 -11.955 Td [(element)-350(equal)-350(to)-350(the)-351(number)-350(of)-350(nonzer)18(o)-350(diagonals)-350(in)-350(the)-351(whole)-350(matrix.)-610(W)92(e)]TJ 0 -11.955 Td [(thus)-315(have)-314(the)-315(pr)18(operty)-315(that)-315(the)-314(number)-315(of)-315(diagonals)-315(of)-314(the)]TJ/F60 9.9626 Tf 267.65 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.499 0 Td [(hack)]TJ/F62 9.9626 Tf 21.068 0 Td [(is)-315(given)]TJ -308.815 -11.955 Td [(by)]TJ/F60 9.9626 Tf 13.539 0 Td [(hackOffsets[k+1])-250(-)-250(hackOffsets[k])]TJ/F62 9.9626 Tf 133.667 0 Td [(.)]TJ +0 g 0 G +ET +1 0 0 1 146.769 381.801 cm +q +.4451 0 0 .4451 0 0 cm +q +1 0 0 1 0 0 cm +/Im10 Do +Q +Q +0 g 0 G +1 0 0 1 -146.769 -381.801 cm +BT +/F62 9.9626 Tf 147.941 359.883 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +0 0 1 rg 0 0 1 RG + [-250(5)]TJ +0 g 0 G +0 g 0 G +0 g 0 G + -33.102 -24.137 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_hdia_sparse_mat)]TJ/F62 9.9626 Tf 109.837 0 Td [(:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 99.895 120.326 cm +0 0 343.711 203.238 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F102 8.9664 Tf 112.299 312.904 Td [(type)]TJ +0 g 0 G + [-525(pm)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 14.122 -10.959 Td [(real)]TJ +0 g 0 G + [(\050psb_dpk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-1050(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(data)]TJ +0 g 0 G + [(\050:,:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.122 -10.959 Td [(end)-525(type)]TJ +0 g 0 G + [-525(pm)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -21.918 Td [(type)]TJ +0 g 0 G + [-525(po)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 14.122 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-1050(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(off\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.122 -10.959 Td [(end)-525(type)]TJ +0 g 0 G + [-525(po)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -21.918 Td [(type)]TJ +0 g 0 G + [(,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(extends)]TJ +0 g 0 G + [(\050psb_d_base_sparse_mat\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_d_hdia_sparse_mat)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.959 Td [(!)-525(HDIA)-525(format,)-525(extended.)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.958 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F102 8.9664 Tf 0 -21.918 Td [(type)]TJ +0 g 0 G + [(\050pm\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(hdia\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050po\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(offset\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(nblocks,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(nzeros)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(hack)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(64)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_long_int_k_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(dim)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(0)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F62 9.9626 Tf 142.566 -36.164 Td [(171)]TJ +0 g 0 G +ET endstream endobj -2163 0 obj +2164 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hdia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2170 0 R +/PTEX.InfoDict 2172 0 R /BBox [0 0 556 211] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2171 0 R +/R7 2173 0 R >>/XObject << -/R8 2172 0 R ->>/Font << /R9 2173 0 R/R11 2174 0 R>> +/R8 2174 0 R +>>/Font << /R9 2175 0 R/R11 2176 0 R>> >> /Length 3027 /Filter /FlateDecode @@ -31022,7 +31020,7 @@ mC àÕÀ–ÅèÚWšÙ‡ñZ1m¹©†CË8?¬¹e—¶Ühc·æÖó57‘-7ÖhhlABg–›Ä ŽQ ìYP×¾ÖÌÆZkaðfÃÞ%÷1#YSñüõtÃIoÃ`·FzT#Ô:ž©""ÒÒw+ ÄÁíj€eqA#Xƒ#͸g =з‰ 1€cP€D-¶,ÆZûJ3k-Í^Zn¢‘Ðrœ³ABÏqLË-‡9Ÿæ|S,›cÕphbABg–›Ä ‰Z lYŒµö•fF]æf^˜ò¨gÚ8ų7ÕÄŠýlT3"ª± Ú¿þV)Z?·¾ãf̺¡1Ö°X]]ƒùLÈ¿†ÙYáKjÏ¢ÖKedjˆ›<Ÿ®ð/o•¢‡‹í—çÛ>úéÆÅPó\+u¿Uóq™¿¨Ùñ¼(q|KàcÉtõ¼h|¤;ÓDŸ8TÜè3¦ÆÃYË«HŒÇŠ”Û+½’¬Q‹‰n¨û±ûìþǨÙ¡k£1*R$¢™®`˜jš“†Òè •f‘ª,vU#žÅûØ}JoÒ|íYÖ„5%sMè%Çxé?k‚SW-"RMXQ»Ö„G°Æ|d®ÉÕ§Ô„ì5kšéŠjÒãéÕwjt·n²¨VUÁne4;Ørô!”6t„A· ¡Y!éeB±:³h ¬yâJà×:ùD#†R[Dï°a§˜Ì–Isµ<H«eÕðd¡ èm8Ï% P§õ§#Þ´Ï·màxG¼ÎZË‘ýn9s…#Àƒjõ§á‚N5‚ÌcG,r©™®Çum”Ò|ûi¬½–»8¾PÃôE!øæ*]Šâ ÛæGR,_#ù¬ÝÍ?fCésöâÄñßâÝ´Ï·}$½”Ç®`Ly®…ÈR+Q—æ#­ÍK³ÙzT&zµ)ŠH_x6£=“¥O±ôù¢Og„ixLEð8•ˆÉ«KŽc³2žÙOO¦áU ¡òjSÃJ[êYâE,l^yÖÑgeƒ”´Ø¢þð™‰o² }DêBtôú§ëÏÎ'ºÖÑ"ý¨†ù‡Ç +Š}–é惄†Ì¶fbôBÍ™þïñùøÍÃí›7ýéxøñ6¿qžßŸ`Ú dœöPÀ‡çÛ{õð›Ïø%¥ƒ^w¬ã_îÎ…)ôzÜãÉŽ-îú ƒʪ#Oú! smèéRßa÷ý»;ÿê¾aÃì\º«¯þúð‡Û=–ŒsØﮆßÝݦ@ïwñÕ}Íî.ã?„NC ¬Ô,PŒ˜{¤ …áÛÔ…öJŸ«÷ôº8¬å¹×ô}¯ ÏHzw÷û׿ýãñ§ï¾{‹ÀU­áîÛ‡}±£ÇÀ„nbURA4Ûƒãǹ@7ú#Ãׯ"íW}¼{{¼~ófZÍÍã‡êðg)wæG?Üþ4º‘ endstream endobj -2172 0 obj +2174 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -31041,7 +31039,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0l?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@ endstream endobj -2177 0 obj +2178 0 obj << /Filter /FlateDecode /Length 177 @@ -31050,7 +31048,7 @@ stream xœ]1à EwNÁ €0´C”%]24ªÚ^€€‰ˆ¡·/8I‡¶ülë›õÃmð.SöHA¿ Së¼I°†-i ÌÎÑPãt>³^T$¬¿«øþD eìΣZ€=Å;b×è``JCR~ÒrÞµÖv¼ùÉ]0Ùc³1ç%“V¡KUP¼ J¼vêêáêð4Dõ–øŒo ÍjÏyø}C¬*Z‚|ïY› endstream endobj -2179 0 obj +2180 0 obj << /Filter /FlateDecode /Length 213 @@ -31062,7 +31060,7 @@ e ¦Y$àÅcÂß ó”yJê Ûál« endstream endobj -2180 0 obj +2181 0 obj << /Filter /FlateDecode /Length1 10604 @@ -31096,7 +31094,7 @@ b YÑF.þÎ X°bÍÒιKo˜ß¾¦ùúÚº9 ô,p÷xýÿÍg¼²xή`ŒÿK)ÄDÀl;Áy‚jö8Ô­ƒ¨[ßÿáí°×þÒï=2ØdqmŒëøá“žôèÕðÃú‹;­EÆP%ï÷ÿ=X endstream endobj -2181 0 obj +2182 0 obj << /Filter /FlateDecode /Length1 5080 @@ -31117,7 +31115,7 @@ Y2 pÓÇ}3ÇóyØà.”pÄ€×ÏôÁ›ýÿâqÁ%§t1Þ®onb©³eæÑM¸éÃáË0÷ǵ3kçéD ^ðoÛw# çô°'Ì?¸²rtåÁ3÷9#§þëò¾W|ÞÞ|¢ûïš«A†ûD¸Ÿàûe0¹bÎxõ¯`}u¤¸%üžÄ÷÷ðý\3“¹ÙZŸ­¾eÓ?¼|Odò?¸¯ðo2õU3ðÜÖÿãÿ­ðÿÍWúßÓ )' endstream endobj -2184 0 obj +2185 0 obj << /Length 635 >> @@ -31155,7 +31153,7 @@ ET endstream endobj -2188 0 obj +2189 0 obj << /Length 7014 >> @@ -31222,7 +31220,7 @@ ET endstream endobj -2192 0 obj +2193 0 obj << /Length 5442 >> @@ -31325,7 +31323,7 @@ ET endstream endobj -2197 0 obj +2198 0 obj << /Length 5383 >> @@ -31513,7 +31511,7 @@ ET endstream endobj -2202 0 obj +2203 0 obj << /Length 2726 >> @@ -31617,7 +31615,7 @@ ET endstream endobj -2206 0 obj +2207 0 obj << /Length 6353 >> @@ -31681,7 +31679,7 @@ ET endstream endobj -2214 0 obj +2215 0 obj << /Length 4492 >> @@ -31736,7 +31734,7 @@ ET endstream endobj -2231 0 obj +2235 0 obj << /Length1 1383 /Length2 5908 @@ -31807,124 +31805,7 @@ W ò6S&ªå_!“½SÎ|esU›FÌR™y† ¢Y‹¥ýžï­§N endstream endobj -2233 0 obj -<< -/Length1 1956 -/Length2 7144 -/Length3 0 -/Length 9100 ->> -stream -%!PS-AdobeFont-1.0: CMITT10 003.002 -%%Title: CMITT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMITT10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMITT10 known{/CMITT10 findfont dup/UniqueID known{dup -/UniqueID get 5000779 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /SFGIZH+CMITT10 def -/FontBBox {11 -233 669 696 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMITT10.) readonly def -/FullName (CMITT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 44 /comma put -dup 100 /d put -dup 101 /e put -dup 33 /exclam put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 45 /hyphen put -dup 105 /i put -dup 107 /k put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 40 /parenleft put -dup 41 /parenright put -dup 46 /period put -dup 114 /r put -dup 115 /s put -dup 47 /slash put -dup 116 /t put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÎ3Ã6Uöÿu4 -lã.ÂNk©4¡õ8•DPËh>®[M†E7wk9B½.…H‰ì.³CÍS†oøZçèqO«£­ OèÖ)9ú‚îOHl~Q:ÔɾD0j‚‡— J¿¶Ñù'JZ ¶ì÷­½`ÕÖÄB 5Ô†G -t²ðbY©7:¾Í¿2úh½K@¾À,¥Š 'çó,¥É÷ÙL’~## ê¥gˆyëMŽ¢iMæç?à úi8ðZ¼‡ý+ÐÕ’~Ëó[\3©èMn‚Àû=r=_­VxÎgpÄÁ÷¢%vïbÒ¨ˆSr\ËÆ©ˆµÉ*ó£'"$¶Æ9iVˆ«ð¬2Ý;äxÕ¿£ü§`e'ËôóÄ«fz•+‹;¥æ€îZÑ)¢Ëÿ˜ýæÓ£ÿ°¸¡4š¸ÍêYŽ,Œ1i$ÂWšºVÁC™oì _±S*`6 »Ij$¨I‹Ý/}„½!9'n0%3SV´ÝP}vÖÂqôsF}¶OTÓŒ+¼œO*½6ž½¸’I¤é*\-ÌRÚ3ª°ÚNÙœ:gd¿;p/V;aZþÀ6è©¡Ü:£“s–wQu+MÉô…àåF€Ãœ•Õ¡n>s ¯­›”Éå*ŸÁHPëix€†Î¡\x6²¥u±»j^tüâTg'Dà¦i&kò|í5Üé.Æ+ E¦0E,¼€ýâì»TÙ™~Ìçô#N™ƒa½¡X®Ï–Ý.-ÁŒüEæJ:êcx¶éΖçxh¯¤N ýT#O½£¤ #k]ºFÖ¼‚…XNÉá±D –Aj†ùvÕÊóìfú rÆ®–/*{âŸ,Ed),É# òƒ¶¿ñvihÓÓÍøÊ@ÂŽ áçÌ`ܲ ~êy)öΚgÙ‰Š•ïÇZln÷ñÙüÖv»´ªø×é̉˭0È2L7Š‡ÏçPkg÷¦ûøcWÇïãÏ%» Nç «|]§É¼Üûgñ¶n– ÉL¢è³>DšõC¶çj}§x›t¨7$ËÀ 1€Œìµ—ÏõTõ -"ç*v’OBdÌNÓÇ#™/Ãõ_,N¿Ð f/’.˜1fuU¤oëÄÝ«ÿøcýtÜݶ.±¹ÆãaÂÿLœEE¬Ô O´¾¼8NFôm|@*7Ȫë–q—–EïIu£eXÊŠ Hm{+¹œRZ¹¾“\ Düç¤o þºŠ6Ã;‚%GÉí÷ã‡þC`•]m%4B­Hi*Gßö§Fn‡Ó²Ý/‰Á„ðÕ.'¶…–1#F\ÚŒ£SÆÈàÅÖ†Ek˜Sò*KbÒ¯ix VA‹yÍqÊÎÜøô‹·iú,ki”X—¡¹áÕWø&ô`BAâ…:[2« ôºGÖ’—LQ2”}—O6É%ù™Ú‘ÊšX;îåäñýóa~ŠS?ø雂KoÚ»6lðúTyª6D¼È±óF‡D“ðï×¥À±±W‰Ó\g?¢""Ñv™|]íJÊz`¡“%i~üH £õ‘ Ä69Ûtö @Y¦ P˜a¾÷Ъ' ¸é› $|,ú­ŒÐúÏký¿©ß’2Ç{fÉåC,ý1ŸšiJŸ•Ý¹`zÑ$ïR·I½)ôO!À¢lG{žINÇüNù~zj"(¢:ÑË.AòØoÓnãÑߦvSÃw_#a\ ÏöQ½THÁÌ5̯EUSûOjŽ¾Dò¦1ì7£Ø³BKÿ­TÖ*u¢»ôNºEh†ZÝwïÐ…Â?’rÄ81…¶ÙÔÅ:›ËðAíðJОö»Qú¨÷[»“‘Í¡`첈ã~lÙ÷&P}Ǹ­™?p™µ?{ªêÛF§.§t@…í_ÌbÃïkîÏçqµÁí‚ÓÝ ¤¥·ü 7/# àio »jihŠ¿÷'`±“7ƒ]7DÏço·™¶VÍKN4Ÿµe˜ïÍîí©œu -Ÿrp²Úáòùnó×¼‘ñÁ!7PÑ“Ðœ€šžwe¡®ŸÇÁ(ùíB -ßþ•É ³€Õg‰»¶ì­ D¹ÂÄ -þߦ¹Ñ‡çPqË2t…•Î¾Xm7š+‹tº?a’ä­å}“iÒ/Êk±5Ýiªœð:ˆS`ƒ$‰¼¢u²”5³n2ù/Ä¿K‡ô #é&}ùî•Ø 6ªÓÑf -{a$ò6šÊŸwºAòKY¤ó0×tÒ…dšïž³Ât¸¤ åIÀZ´IÍýù+ñàcÄC­Öð'àÕ0ë@-hœ¢q—m -–÷™ÅæyšóÏ3ÒP^Ù>]¥©à†A•ÔÓ{G -ÚI7®Ðè{¹ðp™ìõrÈ œÝµóÕ(órècÐ(j|/ Gç‚ì%! ›.åÍ -.I›ãö~NžKõGd}ý ]l5Ï, j]~ "¨´CçxûÊôóCHt¥ x@¶x /ÛÄ[ìo=Î~¶‡h7 /°æOawÒ÷Ü>0xd);?uš^q#+ˆuI£Ö¦| -ĽT,ïG…f¬Ku(˜‘ÊU ’êcÉ]~n8:>NA ôn›”åíc´wŠvZ÷ý¼B3]%ãö#q×c)¸Á„!ñÿ56#ý¹D!Ø¡oC¨>ÎFb£™2§y° X˜pätl‘ÿ0;µ¸4bO¿Á˜÷³NÌœÄmo OöAgn£¨]¤µumÇíiMC]GE½ŠØýoé±nÝõÞX5ÀcI+Q] -Áqe@E¥±„•ç…+­LíNv{*Hï‘!¥‚AǯÛÈ™ð·÷å?=A%;W xBÂ6JŠ&@;éì§l ƽƒ&=ȘŠ˜eÌi±™æyΧ®ðñ‹ -.ü} ì Ê-˘ñ½xÝVJÜï{npJ¬F岨ÇuÝ:õJA/‡õ%È›šý ØVဿOÄb0¸SK¿Ê”‚ëÁ_äœõñ4C©ß–J`ÔìèÐ@©`ÅÇŽƒ%* M º©^ÃA{y뿱)æ—šØÄû’ˆ³ÿ’dô«=§UÁ'oXRxº/8ôÊ–Ý~TM> žÙ¢Lêi;g}c[Í«.òàìlýv—ÿœj˜g‡)G£©66„û[þ>kxÙÄ-´áöSð´Ã¿³ë,M®/sVðiæ«êÍúŽ‹‘ÌÒj£³jü]’wɶÿ“u/¢Ûº*º,y¸©LðC÷¡|ŽQÔø±qSA†ú™pFî~_U³—ó¯ÙÅ0øˆ«|6¹;è"å–s;1Î(—V¥Ã$ŸÅ -YGr®àÄ“çÊă‹ÄoX¬r6¡0ź3jî‚wÁ…8«6*ˆ¬Ì£ÁyáVK£­¡evëG=Œú€¢>‚N£lÖðÑNÊ -…Ñæ¬Æ£ñ+ª@ðËñòÞ²¦î–g5ƒ¿:ƒ0_D¡‚’*Ñ… açõÈ·½»7¦6¨å¾M·ÿxv.Tï­RG†»&µÚßÛ!'PM7>ˆ‡z-™ˆ~‡±¿}Iì”EH}YN8‘Ùlj"ÞS7n£˜£yN»½§£R¦á_c–êá½…›äÿý„£+˜ñ¤ÅgfQÉ›ƒì½æayî³áêø ÿâô@< zß~ÕCÍÐÞ̃ùú´D:®`12Y¹åzåÿÌ—›­ÀçK€D»|‰ænd­5Ç„à?MµÇ GÄ&¿Š”ì‡û¬³[®;ʱÍÖþ G­ŽxIÅd§‡°êXhX7 ¿`⟵ÄmR¬IŒhölüöQ¹ØÝó”:CÍ–õ‰¨æ;;EÞWrU–k&´‰8Óþ.®[Ôh% fäYBÅ‹èÕ5Q —Á¡2m'c ¢F #Êׇ žeDõ»”ÂFJ0î7Dņ¦¡¸󩔪°é\g¡W}Lj̉Xÿ€ÔíÎéwFuæè§ËÂœº¼¬³ž¡T0C"N¹^c*´<À¹’wÛ3|‹ñ™B<¢ÁaYˆ:…»¢¢ÉŇ…99tÎ8IÚEäL}w½…mxPiòV§<4àÆYzänOZ×aH8x¦m¥ùºQ¬—Í¡9EëË‚sr6íàï‰öþìTü?~N{3iÄ Lh±Å.*s®Úai9J1?Ç-B[\†SOSÞ[ Ø÷h‡ ÈŸ bïug2ã£JUlÿkí›vgÇUÚû X»=ç>CxíYEk4è Ø`½UçV©ìèˆ0N sÔö–,—KU þŒ–!ä¥ú„lÞj =òÊ”}ÝwfXƒ±"uŸ'ªÆ”BºéŠsŸµ]P{­b‚×ÿð­aáܱl7r^c¥JÝY% x~Ú@¦£„ŸtýÖ åN¿¨%½õ†=œßb½Wa[´¶pT7·°29w¦¡¦"ƒ£6œ3M‚"‹¬(žMÓÊlàúY¹Äl U½&F†ÙFãJ®å«‹™‡Çj#™È6åE¼Šú¾ù¼éÒæäMkðwæÃÑ-hÕ£lµ½%s󲘮K6‚}žu‰nYA(uƒ–nrïÎ]‚Û ŒæRø™Wù?¦8^•Áv_Ö%4ïÜÄ5…]Z÷oH0ò¢gÜ?ãÛˆ®¯½Å2f!‚¯zËq³*. Ós¨¦¿f'Üö:"¹ë5aãMóÔ“6Ù·Lcùø$¸KØtÎÌÈ…¯¶•Ar’SÞ'\sW°F¨•™6 û &™µoðíß›L‹ y¶JYÿRVRnðØZïT 8žÛ7´=ù”n4P’ëärŽZ\JÌ¢t¿7ô¦v½h¸˜P¤;?'’Á\©z¬òÀ*ÚÛÆ™ õmÕ⌟)ÿ‰õìÈØVÕlÆÅ\‹…IG/r›+sã÷íZ|Ÿâªá§ººÍ5Ë®­ÜDªàCt C ˜ @'h ézHê]/mÛ)”µzýk¿ÃtàÄ[寴ÉE {êä¥NX¥cŠ¨KyÀX—ÉþG¦R |ÿÎûØA=1WÓÈ‘EJŒÉ½<¸ºnYr[ÕTƒ ‰asÒϼ=£1Šá=‹r%SíÒ¤ÔZ6T’’Wa9¾Ý KÆK­ã®0ÅýWŸ1"mƒNÂü6d]w#t>6ç¬ïÏ‘*½^œvú´[¸S÷JÈàž†÷$ -úÝ`D/Ì>¼w³­°jêEÕ*¿*ᜠXú(H“‘ö ò¦|¬ r¤=ÌŸòéƒz¸#-1Õ_1¬kmàøG\Ëeò+Æ@T‚o3©'P’îjÞ~-cÎv~û H3Z¸êW»-Z×ëzÔ"d¼mŽ+:éäšZoǹ Oì@aØ[C¹*DôÈ3* fT,í¤1´‡ˆÑñœQÐÙĤÓjôçJ àzÔ6þh¿[Ù+J£ÍJ6L|Þö"?ŽÀ°äN|¼ûieÝÉÔsï{ïÝŒÚ -A¹ehX‘ª'v2d*U1‡¶ã{®¶¬d^ -_g\e+J`Ú¼uÜ4ã¤Éî– -þšÅˆÈÁß"þr?ÿ±¡iœ„'5´DÇ*,uƒ¯Îêžö àeòH%. $åÇfØß'ÛT¡Õìx„ ÂýÉ®3aâÐ\©<ò;3&“à.8‚±Ìoé aè­?shp/Ú`ȶB¨F–{ˆ·D1U#¡¢¦†ùžË'õ@/ÒwNwú¿öæ½O{WC°Sž2ºtP=‹'B—\n’ ‹m‹…$`ˆ¼Õ≲Xÿv¸G^¹Hf0@Ǽ„8Dz”gˆðtÛ…ôÕ×-4ŽÌ}ôýGW -Ú ýó£XêYÖ¾q¥7¾D(m‘Dç¶ ³¢‰"ögFA­uÏÁÛshB…!&«s–X¤Ó’ü}¼W·üTÅÃZÈsµæc@ŽŠÙ‰úø`9’ÈîzmÚ§ÊuËÀxç“leà :»wæšýÞn§­Êa`uú‚•ÑÃÏ©n¡ëtÕvóí87”JMS”rrdI8üMïÔƒi¯6ß?é.ôÎÃ"{O-|ä‘lòÕÊð ‘vÐ~6|¬gªÇ|P.³¾SD~nLjàyDZŠãÓÛÒ®o‹äåW™$ÃQp$³äÿ,;øøCÀ꺵nÝÆ­ó|ƶ法dÓ…ëw€ÝPÂw?WL²Iqß>\h(óÉFÚìÍS*Ñ—Qs¤ä™“Á3 -ŸÚª´ ®N«×À@I€ß;ƒi±eg¤Ü|F\•ÿ‘;;MÌZk±_çä`÷½£ý:BçY–±9 »LxqyKÕN,H`#øWè$ãV=U‘DxkU.¬Þ Ò"*4è´xSR‹è¹?õ €±ü¡§PrP#‚ä½ü”Ýý¤®>³½iª$!¨E–Ö°sG&làzÒ¿g$|oüëjÚ0ÑPˆëËsÕëffÊÄXú ô_ÏÉèÏç°»ÿ§‚ñ£^ û颤Ñþa9ïMh- téŸÏÁ¸\œZéZ³çŸ ™¯ßHzÅŒ°)XHm]cÕ&Aƒsl†¾ÛY³² x=VZ]wq½¢³ Ù¾fp™n‘v%\Ü*iš;ü2ýf<¸¢ž“ŒÙªÿÿcZ}‡Z‚;“É{,X¸]“T´ûÔ]ÐÙ4~jýr²d×.1º²…ò=ºâx%LE(‘ö“C_ÇïLлF»|zyå8ÓÅ‘;èênö—F+G'jDWTÓ2-ÚÁ–ÆhZîVÛ‡ôÐ »öcAÔA­^dÃùE¹É_{0âŸvÇÈŸ)Š‡Ë7Þèyëß΂€Lhé ³á§9‘SFúsþù¨Úàf†®³_-vAYµó}Ö1ï)GMÚoÑ\‘<¬Ÿ+Â’‘Xc?«[´ªÖl&/”ÿ’øÇ_®ï¤ÐÝiËÿºâÇœÓT%˜jéü¡Ì.2‚Õô­ÌF"C"Ç#«à¥UѸ 4?“h)DÞnkcœ7@ñÊ*üãY­ÇÄÌ7sáîùÕݹõ=°žœRµ½ï»9YçBÝ…TZÞGýàkÇJý‡`íÊž`­ \þj+@{“kF]ÆÓ Oì­ç‰`èwŸqŽrÇÁ¿1-—F8©ÿA(èpóÔžèÆ@f]‹ Å»ƒ#xq"ï»Tïã›À× -*!Ñî¿/Š°¾µ§ãñ’û½š®K¹ÝBdî$¶ɉڊêý`²ÀÅiõç‘ÉçÝjÍMz³Jü7âä]Äjœ[¹‡¼JXö¶p h¬핤>ðÉÃ’mþ@¿ž4G«ëÐ׆‡õÁ®7¤ -¥ý2‚˜3>nå–“ éjVwYˆ³»2¥8Qד%ÕÊuÍh@}y‚S€._6dž‚òw…Al‚Ÿé¥Œ?Ê¡- -4ö8ɹ ˆÁktÃ’ë:öÿ×Øý]XŒû¼|jÄ9ž' 7ˆ,¶} -öR±{>þ¸gºõ7,}ù™¬‰ÃP+Þzm5ÞÇ˺ÀHõÿ‚èU?iSÂr,+ -F½Aa´´ÿ.P’gvŸþì˜Çaósl ø¯ZBh·õ´gæÇ –Wµ Û-‹BѶ”N˜°ŠÜhú`˨[ÉW÷jßí)qˆ(µÎãÓÌý÷ÍŒþð.wYÕæ‹$ÞQ¬ÿ0±€®Ñ]Šü -endstream -endobj -2235 0 obj +2237 0 obj << /Length1 1442 /Length2 6151 @@ -32002,217 +31883,364 @@ n^ r sb¢VØb)l 2ÅþSŠ„T£­H+PMzjÔîëzËiÍfí$ŽDáŒMkV©° Ã?ã\Ù¼Ä>Ž¬߈ƶa¹<¡ÈèEE£ÜL½¦D…¯6=t¯–EÒ÷µ€ðàÀ.…(Á%FoÜ~­´ô6€rý¦\l•ù;séñ'$Öµ…ïß>ž4¹ÿr$ï2¨DZý~*®\R ù·Yi$=Þ¡¥k‡å'¯Öå“™úý.m…6¯Â–„tY0’O$ð)ºQñ’ršÈUQ…»+¶ßªúÔ4(¨«,‡°Qb8¬—mÓ©qý±âÀÁÝHä°=‘œ,YŠ8i  ÿ‡½ª”SZ6Žöã½mØ@ˆ»`é7~â"L7\ã¹ßFdN#FþýHR´K´KHpb40 2ÂÚ~HÇKε֊úøX endstream endobj -2237 0 obj +2239 0 obj << -/Length1 1478 -/Length2 6403 +/Length1 1688 +/Length2 8444 /Length3 0 -/Length 7881 +/Length 10132 >> stream -%!PS-AdobeFont-1.0: CMR10 003.002 -%%Title: CMR10 +%!PS-AdobeFont-1.0: CMSY10 003.002 +%%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR10. +%Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup -/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup +/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /SOSTRQ+CMR10 def -/FontBBox {-40 -250 1009 750 }readonly def +/FontName /VKSUEJ+CMSY10 def +/FontBBox {-29 -960 1116 775 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def -/FullName (CMR10) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def +/FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 66 /B put +dup 72 /H put +dup 73 /I put +dup 32 /arrowleft put +dup 33 /arrowright put +dup 3 /asteriskmath put +dup 106 /bar put +dup 107 /bardbl put +dup 102 /braceleft put +dup 103 /braceright put +dup 50 /element put +dup 21 /greaterequal put +dup 20 /lessequal put +dup 0 /minus put +dup 54 /negationslash put +dup 112 /radical put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÍßᾉYň5t&× {hLšGÒqB`d­Ë—PØ©†ÑÖ|*îøÎx\ÁœÞ–HŸtEÅãBð-¡ÉùóÁgedogÏ7—‰ãï‘Q`[['“WÖü…7Â3ç®æ¤ý¾sçZ9ë m ¦ö!–tAž¾ë‹Y!$átÊY\Žr[˜uTIUÏý‹iŽ÷B¼Œùyã[Ž™ÊÝÝÈœÆÅ—3ò¢Kï6­†zJ!žË’Ç‘œJ·s&B5öC©•"¥m†&Þ`7ÞûӢƻ‘Ç3uµgNC O~̶u³o5Ö=žÂÞò_ä›Tù/ ¸’‰h,°—$B%¯döʘï¯3lŸÃ ³¾ÛÿMÓo§¨÷YLÚ¶Œ~ƒ3^æÐø`š‘12]•=l8Çà£B6PlpËfWÚü<• %PIN!jáuË#,.õ£Åi«X“nôè¸È¼Ê‡ðo$îÒX½šëÄê‘·I5öÔV*E6t±K×o¿_)žÓRŸžP»¾G;Z@9ØÐ"V3¡T×TLç˜N Y:…A€Ókî©®Ú¬6Ì =‚¸=•8€0~ÛÐðDQì±ã QÂù^brð/2^KŸ¾Zh`§N'Jt4i¶ëüèBYÒð7ÖÞŸBþU_¨~\ŸfûŽõçôµïŸXA³ˆZl‰”¿Òã_£Ì½ZÆŽ˜ÀÐìý'•çxHµúöðbÊG:Ç"„¥l«¶5ºCÝƉU[ÆaL¼ô¸rÂÌf¶ôù 1[÷;4äp^èµNïpûªqBD 'Ø…93ã­M€&9{ ˆVD õ8 aе‚2Ön.hf¶ +äl?KÚ¢ë[$‹¸Š³úGpðöÃݺ±/JÇzc÷¥‚F8ûvP3Üà/XO6ÈyAo¿±î~ëç]WqD‚M¹ˆY4ߧ󆸢YÕÌ¢XPEðLý2ã_2¹ ­¹©oH•{ +1xÒÉê'¿¼u|»o øöúWNRšE”ò¦í™¹Óôû&”ã˜lFÿ\LRh1®Fžbñ¦­Ï}+‡l Cø] ¦¥ÛÂ(„vfÕoƒ+fÏœMëí³}÷l?c*Þˆ"î­^R¬æ]ªm†äÔi§„KªOÉÒŽ!I Œ²Ó²ûçõRþ_tÓW;™¿Ìñ˜Çu@(#ªt*̧Ó U œ{|ãõõQ}a3åF¨l•¾ó8x¬¤Òt’HWA¨Â­â;³!ÚVÞÐþ CºÊƒVo³—Ûvºžì’?³”;”œ±=ËÜ>,„Æ㧫¾\"«ù¶•šÑRívRC•Ø¥œQDh +Ó@_,žÇËœ½kbflçAIøP^ª³™wÙš¦dIÉHzk(c÷3ƒxûŠÉìSÊUPI³f{KΩÍs… îÍY¯¼¡í/ìvÁÏ[¡¹ûظL%O¡@ë™Hƒ†“<ÞP'ŽJ£ËÛv‘Õ,Æ$´"hU§M?ô³ë?á“p*Ö„7v×=ÛP1s}ãG“@¤N’5^ð3•‰Tå³8fº† yQ¦‡ƒ¹O)„´ ¬07ÓæÒ%… „G ¤ú’Rz£óófé{‡Ð^DhÜô<ä¢{™™âB•ËêÖ}úÀÆÙžs2f'CóyÞâ°_ǮӮ@]c8“±n7q'ƒæKˆü4kO=íþ«@ÖU ’¨Ül,ÝPoE‹ÞækÔ™*7q[Ú!ì÷ú·ÎØèÓ\o»‚^×$·&Œåóò]8l•ä·s¹&„„Á/ââ^)š!TåÄ€a óá¬îÙгá½S"¡;è•üu^S‰ +A5ò™6B=Û¢vnÛ™Tã­™±Ï¼"…Ñ÷©]/Í-}{ˆÑÆÉ@ŸÓ–+‹šiý©caÎpnÉÛã´ÓàÕ{ª N©‚ïh%sùªéðž ¹×áN¤‚äå¬VÚäÎǃ¿a©š]ôè?Õ, íòbt¡l“˜h6‘ÿOˆvÂ_§Ré̳9S ^Pí!Qp÷ Á÷¹r6÷¼Á;¥³Z–è¿ÆävØ9k yŽµH’yp;DÉ×ã “jí1œÐ:ðR„]¬Ý›bzGC?"%‚|eÝ¥w!è±–Í6Ë¥RPè$æ·¹:ÿ½Ô)ɽŽE#Øè¥d'¬Ãå¿-¹¶ È2/Å %ñŽ}‡Ù¿ŒØÜ mË…¯ZüÄ¢L8ÏÀôÙcËóµÏoÙ¬Š›LH¥ÔºKÜôó¶ž)˜õqž+×ÛcYy•ÅÍ»¥Ÿ› +_MÌŒý`-@³0Vý'ôœÏ±Ðö©tS¨É¤d?ݱX(ƒYƒ…Ä÷kNWµYÀíFØ<èB}³–ék³ÛÃßRí(ÚÕÏ^2Ø%0Aüýìm„»ŒÎél|mƒoÓÈì©4Q庭„¡y|“Úvï+~¤ŸÄ”EµcŽÔ²Ù’MÆë×/­öëtØ…üHeš†ÙPC´évNîç"G6} ¦ì ]µ1¡AÀŒ”+|ç°(ä¹VÕñߊG¨¬l7‚KfWzÞrŸ_í=ûG"{'ª4ˆXM ¦(¿Õ±†ïz/ܳ¶ÙzÒLÃZ„|¹‰DÆ4-ùá0Eíp¶ŠZSú¸óAÇᇬˆ³ÈáظA䔹Á½tl¾±ÎHý¡[TxsÎM¢…P‰*´ ee©¦f¦¾wkÚ‡øH1)7¨i"ÐÃï‚$0Øþ´«ÃV?i¿‰zóç8ÆÅ|¿¥>dÿjyTšÃµVmÇæ—áq§ÌgCÊ‘ó‘ïØÀºš9z»åTˆCÞ/Ät~º‘؆§o*í—9ŒÆrÏÕI‹¡oj¯UíKöxj¡º. ,Íø+b1°Ö²ñ ÃI›lDLïQZ3÷¶P-noô¼ò½'<ÐY½ße-ì1/øŒŸ7Œ*E5#—d‡ñ¤oŽ–{]Cª>$þF zg!Ј*£oºÓjŠÔ-Nûíͥͭoò8ÅKwQgÝpœ*1^‚.ÖŠˆÎÂë± LV‰~ôÈÿüøm laÎ ]%ì."¦`»©_®Q·iäpÀöÅŽÊs’5y.XƒÒÍ®)ñæ¢T¡í¦öd1KŸ¢k««ÌŠjÝ«¢n0zªG®áq‰·ëa©WQé%z„ÓJ²¹ØX¤¢Â3tIy0ľ£.Ó#‰Å[“#¤ƒD#EÔ‚’pp¯F*«¨õ±Þ˜vïrOÓdÎn7n ¤Òf9ƒ*¯ìX:õ¾ç>Ǽš:*ÍÞLfÍÃ9’&a’j;+{»0‡ )ÐÚA’gðK*êXKÂÛV¶'zÙZóÌAÚ) nîöÏ ³ÕT¼”ÙÛLÎßJëïòé^Di¨ý[¦ð:s<ܸ2Â!ñÞU‡ú|›–#ù5V„ëfÑUŠêqP}÷üÒ|=ÿŒš»¾GÂ5O|PÃèsš9ñ§Ž}äå“* ++gpA€,°,Á=|j«25CÉ‚7›õÕ ’ï–¯µ—Ø.é/F¨ɹË0¢–tRœáºŠ."we h¿P€ eäÖmpòîJ‡o´@°±â–ÿ_ðêAÒ3§âQé¿BVô~$ð9E¢ºj= +‹]? «è{w¯_53÷¥FîgÓ¿³4B™èä›ìA¨«á½q²ÏðËßÀÞÑ4µŠ‡¤Ðî1®PfÔ ¬ó,ÖSÅŸ6ôã¼ r¤§[‘ÝÁv`à ¼µ±ûô¿x÷G$ÿŸ„¥êÏ.}¡¹Î Ì”·¨ÜϾFÍ™”c°±š‘‚=­Áf!*˽ª./çwĉR8º(@ÙÙ‹šz c¸½@ÃN&Im—žÝ£>X!Èm•eñÊ@ÎlWÿ"ÒVCHèø8ÔkÕ‘ŨÍÀj]´nó3X>J¡z?ÙDí€=Nø…½bn {qbY(>"Ù8*苾ÉÍk¨y3øoâŠøÜ €ó‰Hã Dwâ¹ø]¤€ ½ëd {E’ʥËwÙá™.$Váçhtœözk$kk$]4ë¯ðcf¸¡ú¯»CW–@òËóû3ö—plQ¯ “Q晉bá¨/póµó T“q¾FÑ8_þÕA’¿nëQÔÿ¢mKŽ{&z;<Õ¿žmòã[i7Ìϴ뜣ñ'*ýqX€Tnòt<ÕŒkò/?©2m)žËÏfô¹¯í•áâ¢øy#(ã¯`%Ú{ª§!¼Qœ/0&sßx¹ôfçB«+¬Õr‹ïEßï[tÑÚgOKQ£$ú$²=à‚ל?êd@3c)]3ª–êÕÕ%*M}HÙ饞;Cd£á˜Érp½°1jýŸF¿ˆc…st•íG'÷âC\–ºp)­)öþœ_š¢)±Õ(¹ú›¥µ MMº +µ³„ qÆv&¶¯Ê÷Cßå3N¶LZs³wTPu{‘s¼ºÏ°øPž‹+-­©¡U‹—±FõUøP"»KΆ†+«¼ÒY¾e7?0«(•öidšL´;gk9Á(YI-Œl`®õî;`ÕçæAÐH:´® áYHb1“µâ»HÇ{¸wƒÇR^YÑš, + $F¨Ô–HDÙòV?pòyÑ—¹PÞ%F=»‚ÂÇÆB‡öÙö¡GKØPh³~N´[¸IÊ_ꈀCðTzÞÒf ç <Ó–”Œü`4|mƒE1ÖJ'¼ýáÝ$`}R ‚Ú\¨€âN2kf¢aóouJ73ê´òváê¿ôKÛW{œMÓÞ3?שMò]ù:W;v…˜Xâ;„B’ ‰§X.PáI;?Ÿ!T¤ˆ . ·sìöU]䮃’=ÑXŠþ ý’5´ÀŠ€r€Mt>y=¯†*ãbC¾~^ ½tÅAr±¡l'¶øŦ•üó\ô÷ØŸÉL냡P“&7ttöuGz;Kg4ÚóÑ;·u)"é³;úÜS•–Âv½ËðüõC~³?¿Jƒ»/’F"6U.°0>çô+ÜKQÓ„0"ÊÓ«Ñ=ëñséÞíƒxoJ]áת!Ìwü6OÝ.}‹ž€tëË5ð¢VâË©³+¬¥·¬­Àü7Š³Us‚š®Ö©ÆyçåÊÄ“TŸŒC5üGrgâUÄ5Ì$‡—Œ&|°µ¿Š~•ÝGªäØ8ž—ê ¡¯Mvåß(jt§ƒãß ñÏ¢nñí›]Î]ÅQÌW…OØ‘ˆm.Œ£Ž­ð R[¾ИoNÐngô IFç:?Ât”ØSUOÎcÆj2Cm[¥à«O7>kWúk¥¢©½ËX¯'ƒ²î¦œ ™#ñ–Ñt'X•d9+E7±ðNä™dŒ8{Å]òŒm¹/‡ Æñž»×Ž¥dv‹Y†Y–öþwopôé™!™EÄP7F?oÏÄjP9âò­"›Ág“BŠŒÎÅÙPîŽô;B^QO©“3ù¿*B 3³ƒun»$·ßIÆêÿŸ_Oeþ`Ô +˜$Àß`‚}-9Q/Ä¥åM³e€ž?ØÁÇÉêÒ°µìhä]Š¦bð¿ ýé»ê«_ê2<ÑøÍ–Æ+ìtª°[Ïœ±ˆJ¡þ©O@¤%M‘I‚Þé t¦µØvƒ†Õ\¹/bãÑÃòMVFÊ05ÿÎ+kIå2W9>f–}©· ÐøĶô3t‡¶«ÿº¡jª†¦Ã|"§´æôîÖ +ŸÇÉ[ÓLŠhŸŽY³)Øo57kßþ“#%H’\,¬xÎ|ôs¯sxí¥HžÍ†|¶;`Å vû%øÚ¯T[ícÖ]ï‚eŠ"G—Ujß«„yŠðtvxÕ:udQ‘uZy_²Td"“ª£b+çÁO†]Øl¯xà'6wòã6X²C¿DKOÁ‡f›(g@w]f¦V™ËÂ[ê~ëŒ1Fùé^A3v¬ ÇâO›vÒ¯¶2v +zúåT¸ÞúË0ÙÝb#ö›[›zyÏ’Õ$e1¬ÛkÕ5—dRAì`(Å…@{=yW>¿ðˆä>ú‘¯çy@æÅÿ¹Uáú;”œ±=ÃH;Çc{–ðÛ3û0´ü£^Õ®”)Õ™-{·O¹°OÖú2R¨Â´xÈèëˆQÅôwBgБâ¼ýSý»ž›"תl›bðöz;¹±˜IyÕ\E×ÁËê‰pr¨kM ·@@Âe&À 3•˜lÃʉtS÷æÄ%í)è/pRÇøÞÙÀª"2µu +˜Ee’5ø+ÄÙ°s§Zò'±¹§õ˜àçbˆQ²ôð°SlŸjÅö zvÞ€â~%.Kz\N¡Š„çüã÷Eê,ãeV2Ò=Mo)-JcÇVà¤:ÒUÙ2Ѹ>É1ˆ×È“"¿QWº ƒOýõÑ‘4*Ozûº.c¸ójc”«Y&üßÜØØÏìê=ë7”Y™´öøÈðê,A5nÊIßFŠ•/œ?üÌŠ™á ]as.´N/þCÕ»tÜýH…G50x}eb9—S&ùœ¬é0år¾à«J§H€‘ôN­\¿?^4'îœèb©É»ÏÀ':KÒ`wpcÏT–!ÜÛ_ÿ öH˜°øŠ¹ÝŠ†‘óþ{–ÅÚ}þH¿mZto”àÞê7Ê«¾ß‘ŸQžÇ·¾Ùbi>ÜœZO¤§ „Š“dºdFÕ¿cc +$"«˜ |ðhJQvB'\³Í%Ì6Âä²3è¯J)A‚g²+TÂò‰ªÀî§ø¼†ÊrnßãLì“O™ÁN”@µEzçHr$©d(|º÷Áµ*zˆÜtiF¾ Õˆ›º&«Öþ«Œ{Ó5rT[°)C÷ =t†<¢na‹´€ï3å—³b«m ~WåÒ¯Ò-ÿ¢-ã*_>Góe‡È¾ºJµö!De:ñ‘1˜´‹ 4Åæ*ørkd›«Tý^ï\ä”(^”å·|a›ÊuØÝj“íË•û‘ÇNø×–GÁÔß² ‚Óh$ èÇ™¼Op—H.'çHã •Æ"&+t +Õd[øÍZìÿÏ—ŒþEßÁ1Éøktê±èŸ/È”’Ë7ï\xßY +hÊ^IJvh>üã\/µ?1ªX½ ¶Ç½þnyWlÕ.ÀëŽýAñka«i»³Yè4!@¬ž.‰Sø§Eg_»ç’Ž;Ûâb$;ˆ ‡ëÂótO¯EN,×@ß}Ë€¡À°ù¢g~Ÿ ÕŒª ÿìÓf,ÚtäyÁÓô–¼yËV½Ðc) ¤ðävŠM‘/ã¶"{i è~?pÕ·uŠCùMãâ ÙD=Þϵ0íŽâsñίŸSÖ΄V"å'»„¬†B &ïä·!©U,)úÛö8®RîÞ’¼JRD0’õ˜]¨<±M£r|±98CÙ׫NnŸ3Œ®=Cøl·âÛ ¬¹?×NÛ©Y$£õçÌO6­¾f¥;çHÄ2¶h,°èbþ=&qfžN¢é]ŒÜŽbt¸íÑ)Œª~±ƒ2¾3ªØÈFG?‹ì¼ˆç¯[¡PöÝ«_²Nò2@´kÕ +ç=‘ûC:•æ¨ÞÛ‡uVÝÂ%Oÿ^øðí"¢….œ-ٛ冕ÅK =°‡¹G,üû[{uscˆœ–8`ÏÏ=ýŸ,†aÒ… 4` ÆÅ ú>,®Ò¶Ö!?îòy)ÃéFë°ËåðÜîá„ 6áò.sv¼¿×W«:iAaQ±Ãà²$gŒ§õp¬$~ÓɹPKx 8IöJ«cxîÈœ6ò‡Í¯MæHkbŒTþ':ËX¨ £¤ IÖ°(ý¥t#˜+Ëd‚Ô¶dó‘áÏS¿¨¸ëçTOöh†¯Ã¬tÙRŠ<%¢(•Ð^Ì0ƒ.9u¯»U€˜÷ÒŠo4jµѾ9fyï)œeYgSÆ¡’#åKçÅÚ)«šàAªÆ¾‰kW2«Ìê1#áÚE~Üì›—‡‘€"@q´¡Ñí ¼3ýÍõ•Ý|aTõçÑ ²õçýÜ=iï¬Péi~‡ô¶!zå ¿I·&;çXÃÔe”eg¥8:¨ÞæKäÓª¦Då‘K[h¾$Ñ)Zd‘7Ï’–íÁmQ¸õF*TÕ™<ƒÀ•çãDMI ÷%’ê¬w¨}Ö姞!‰zQl#9Éñkãt²_©¤#åJèôn}ƒcy6PoÀ Óq_eÝŒñU¶]6-Q +±ÄÕÎr™}—G~D"ØiŸfì=¤öóåºÄzиƒ“ÒhΚ¿(±0ÐóøEÕ‘çë17MæÔã1Zͬå +è-óÔÓ“<q­œžOvÉ™/$«ú—¶#9æuÀÙ®ywÓ ”}w|ê&ŽÏÓúÇ{×?M + –±Ï~x3Ï L'-@Zºkv•hcîåQ Ñßž†JˆˆQbù<¿ +w‘­q¤žÈ$vßKGš¹è¨„¶ù4Ý[ ß´g´<ôçæáŸìa’éÒø4Ð}×D+VWFº].ÈÙÌY3‚8:Þ­*£VtE§;Ôa‚£Æzv âäÂŽwâþê•žúT¬¶ÕƒU·ðÊT³Çd¹,lW³Þêa|‹h6*¡úšÿíA»TÒfÎ’*”•*òþð!#ÞÔY‡Ñ¬¶ù} ™©爳ܒ@ Ë\ÖÛæ mÏÈ©õÜüÍ—Ðh\‚§ÅÃ0jÉïzôÑdA7y,¾Y‘‰õŽM5?̶ÀÒí„´™¼Äðï•òa õ1@Ñê5~#uñÔÖ ð'µœYá! +5 +¡Gí´ž ¶ò +êN¨ /?|$Ŧm§®µØ<£¾$(Ò [ÎýxxGµÊt„Që¨WâÖ˳uÜu±_.3YôNò&ÍŽ”£3ôëãÜ¥OÛL'ÔŒP??赨ðÕT!Ã¥¿ÿQž2ð¾B#7<.*zÿš¢¹ÎWSá®6zÂçjÃQyºtˆH h´t«p1ÓÇ-Y£¤`ÑÊßòaÕóñ9·³Ö<‡còÊ¸í±¦½lXôüT"t:ój˜Y|… +ùÉ,»oêã%þ¥Ý|å.' õ@qÞ8Š‹¥;ÁÏ;Oƒ˜"!L’LÄpëÚ42ð»ûÓºKG||mHƒvÚ®Vka›WŒ£Ìè{9 ¦nRgÏëaZ87͈ºŒ,ÒKØçÚÐê¯`˜vÕ+ѯÊZôvÈø–˜Å^(!ñ|øÛ¢ç~†}Mr(îéÊÙîY|ÙÅ~v,§ ƒO5í³¸¤·«ÓØ€@ïÝŒzªé ?|1òá?º§êŠRâT*kqMèÜ+pª^ñ\¿u PÍoCàŠ½zž¿$Åt@ò[àB-ïE,ì9g"Ù#£.º±:N¦ßú=¸Bœ*×ÝjyqëÀl6Þ]{j?Ê"AsŸNŒÜ9 +p¿3úù¶ô4}|0IÇ•çÜ›‰Ó±ŠõͯHöûê¥=ÍÝY©É§ÿÂ`?ö.¼5‡=¯ØP?Ÿ9<¯N›¥;Içq×ÈW²s1nÙ„&mèÛÁLÖ§_&ÿßczÙqâ9lÁÉ£Øg^[Uz(ß@ °ï™üî]øbžéõ½|ŠÝæx‰LB=öÇÙ”6Wé€ÀîûÍ*Gçt.P/6œn¼ª±*Ç|›Dï¼ëäÑ'+T%^–Hho'«‰ÝÄE¬ÁÖZÑü©xøT*!i¦…ÍZ±w2l°f7ƒ*VÄÈš8Ÿîá+ÌzìïÀÿxŸâ67HÿÆ0 +bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ +endstream +endobj +2241 0 obj +<< +/Length1 1173 +/Length2 2916 +/Length3 0 +/Length 4089 +>> +stream +%!PS-AdobeFont-1.0: PazoMath 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math) readonly def +/FamilyName (PazoMath) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def +/Weight (Regular) readonly def end readonly def +/FontName /IKXQUG+PazoMath def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 91 /bracketleft put -dup 93 /bracketright put -dup 61 /equal put -dup 40 /parenleft put -dup 41 /parenright put -dup 43 /plus put +dup 165 /infinity put +dup 229 /summation put readonly def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-40 -283 878 946} readonly def currentdict end currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» -ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ -}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¥ÜÆØx¹<¥Ÿ ,—Ü-.è2›¯iR‹n·Ã±vÌÙ¾1ä • „'Æ䓱©·_r"O¯»_‹t±3keè¾fBݼöVÁfj—Ú9Ò³ÿ Ô Yh뀸Á{û´qÝÉÊÆ-÷†—ºøÉ·ÊãÁ}W§?Å?gw1*Eh[ŠÜÛ:›—ªtÍÀWeI,Úv•8üa…<{‚ñBú1â¤00Z8ÃÌî5 |ñŽ}­µðN¾àÔ×lw]ƒÿƒ6Nÿb¿—ðð¤h3E`œ†(¡›EÁ‰¡Þ'Q;²eµÔƒª/ðà­.D©yL’â5ØñÇ$¥4IGÃå׮Ɋ\‚yjù9£.îV­U»5£Q!äì‹-ÍèµÈBƒ…Ä9ödèâö««B^éoVùð­wˆBÉŽáT7„¡‰¾R€ŸÀsO™GA‹¦÷ãÕà b#íTBv!m·WT=úãÍÀ¦üw,ªID%'¥ÙMÅKé<‡|Ù]ØD¥Ã°€@‰õ·€2²½Oø( œÝŽ%œæÛ#_½É·VñþBSTø¢#zàÃ×ÒÍã!ËÑã${l­\§4ĸ ;5Œ™l‘&!×〚óß=(ŒŠþfŠ¸ÞUwA´Ú±›ÔÆeßìÈÌB#½30>ÎìH ¤©'œÞL¥+ÿÖ“žjâz@ú¸=®s\²Þõ<…«=\ÀY$ßD?ˆUê Ðæü6•ŸÒxG¡QnÇ«šŠäi¯%Ö”ž!×Ñ -L2±[žšôã¥)!Œf…X‚cè‹ã<Õ'Ȳ–ñRP3E¡!„-:±'àþÐAJ¯.ÙIJCJÎJtª&Ã{76± -#VÐÃÐÀëÕÖHÕ“ó‹/©ÊF×gw"F5”wñSˆ$|¯ÿoQ<ÎçΗ Ñ`~¶<10©|™ÿ<»émï´·ùØœÞÉhðÞ „߭逵µ°°›?É`?ó7–ë _Ì [•¾ó8xP<41Õó=tÏøHÚ ;6™¹¸}rKu1é3ûšUCiš´Ht­²ÑÓ}öyÖþ~c%\ßqï€\ººæ4O4v![›_÷Iº¢°ï³¯üÆæc‹0ß«òMJùMŸY0¬Ìv{6ß”Ö\øà rŸqÉš"3=÷”TÒYK.ÜKêÉ)Á,GÊK{aˆCZBGž½ -yÛ(ŠK'†Ã2O0ÓV—®6IP$$lûéú¬¸-“à[ÀëÔeÍÉ‹øÇKÌ×&2%g”b¯z‡÷JÌ™,uo~M¬2ÄzÞu’™ ‡Ô6*š»*¦ Å «Ñÿ9¿Î¨ß?Ä£K”c)ËÏ÷á\ðgŸt­&?©ãŽÏÄôûnTëw½“æ¼$ dN\C¸›¤ÎÚOöÖÏ@¥W2xè8q!LdÒ®ãoë~ä1V/ŒÈB=@±ôúí!0’ÁY¡ozù$íùÐ÷Ç€%Ä­¿ÑÉwáÞá2]oªÃß ®_ý?IhËuè¡BmîF:µ1Ø–d©Èy6÷‚ÀÚÞ F ¨„Ln5Sòw&©-ëÓ°¯žGzø¨9ê=È'’ä(Ìý¼IühNú´Ö{äO ˜1LvcÕmiµ¦À&È"MìêmÄ@·WÕ†­¤­mÜb%0Ù˜*ú`šëÄ¡“ß“/fõÃl½%PE2¡:VA)SBL/æ<ªî5ªCžA£ß÷l;®{ËÀ (#ºØXnF’"‹˜„8{RØo’ÁÄT(ä_WðbAþK|oM _ÖÓ—Wßþ‘½ yäMèÿ6€« ±^½÷atž@O1ë¡/Fñ”¶3y#™ãcMM×ÐGÅZýÝ[m¬ÿºzÏŒF lªù«"ÂJ>®eØVBWB}çV)ÜSÈÛi,¡ïÞ§ïR¸¥½»FǪ½P.è½LÑ€xø¦_[ÎXVˆÇóôQ ¯ TPÿõvƒ ù -eÊ,’pþÚƒrh“ú¸“uñ„Œ`+l{÷eQ÷Ö_@f63HßPavÑzUÍ_°ŸÍÆZ«1*ªäǯM+Çbp€†;{ÝªÌ ­Q3èVV;Ø¡¼ÍˆÓ ®O.Ožài,¼88«ÖƒìÆ…gŸ=\=à@"FàúKFøT¡bû˜‘¾VŽl(lg®ÁÚbÒ­Ý!¸èªÕ–ÕË\áýùa4Q1°Ì~ «9âqV¥¸§Ì¥ ’s^kí¢sdŽ›nz‘Á­£ç¤:ÖLžz]Žðªr Š¥¢ªƒvND¾‹MG79$ILiþ&“AØgánl6y‡J FOµò;ð,zÉ´Ñ% -o»¯ß xÈ0˜s‚ÖÈW1FxÏîÔè—ß gþm‘µxVyõµÚÑ"]#z~—§pvòÁ †‘™öØŨ.rB9‰$n¸YC­C1úÄtªd@#÷¨8ÐkN‡Ô‹K° Ó;£ÀêÔ“lFú( ØŒNóŠ¦;àá¥dþ¬Âûí’­üß*¼Š<Ʀ¡•ãÅ„ªsÀ¦9<µG CE`…Vé¢hà½ÉÄ%Q“ÎF¥oP½Äâу$ª½"Ñ33¼÷P9×9ìZs9‡'`ã­ ìrÚWù:N”¥ìÈsÓõÇ”·@fƒ œ^WÝ…&24w©lz æ$Ô2Wï²wÝ…ÆìO9bÿ£å"O¦ŸÊÍWÃ*F]Ý/¦`yªŒQ± ˆÉ”\Q•ÂF*ªÜiTñè^N öd_£M`ƒ¤†S%T³NºK7¯+R™Öì[r¥›üÈYõÅíYqe}¼±Ø ¥‹÷ØY‡Púô -ÎFUE¢ìóþŒðÓKƒÀÕHŒ'²µ>ZQ@ÎIÙàt%£äÿ–œÀ[¨)7Ä&¾ü hÎn ±éY'ÔÛa¶TÃñ'XrÔß™/n_n•JL¡ (–@ -²ç ËК -­µN{KFµßÛð^k›bÞÂnê~í`L¯£]Ûa¤U¡¹Å{üˆvâïLßܺæ¢4“ô1˜$rmAÿîs•ÂÆóònZß*™»=©÷Êsõðo›b@{‘yÖ !CC‹{c.WZ¶ìïæ0n àbp…gsP˜d$-Ñ\ö¯ÎÔ›&L27J»Býóµs/g(ô©xQ,t>[®â8Í“GsŸ:R$9]6&ˆúmy®)iµŠvÉéjÂöW¨‹LÄRB^RBal¿ëx³_ ×Y:²5M§¯ßæîÛ»­µ¨û/j¤…àÅÙ¡!}Þ`”îëD&W€ÈªäÖQX¹$HߧçÌtI¤­¼ ÈÕ.ÙYñ@Øn«r–_ôìnÜ ¾OüãtAN-L n–‹—?_Þ^_…Ûg’µ~žÆ;`°Ðí¨KB‡Þð6eĶÁܯ‘¸ ->”èl¿Qp‘†«¢Ó)À†¶ùµ¥ò/;S' ^¹õ:ätJ±j@êx«³ƒE(0GÊ;κÛQqŽ©Ç”kT'¹ðž;ž ÷ÉDHj‡¢ãsr‚xÜ– -æ.Â>ÚÐÖ¯¯¡Ïk—®ÚlÄ;&–¯#<çÚš°òe)fÑäFz›`·Ç·?¢ãIc@SH&–<ÿ¼’îevn8F‚\ãV±ª3Åóa­A!yy¼ã:ñÓ+žc!£xð–‚bÏMþÖ‰á/f}3ß–›ë˦Çã"G©–­ç'fMsÑÔXWUý}üöµ·¸Yĵ^ €Ô×%jÍÇ!H¾ï‹OHÿÉÍŽ_ù¶‹;臲Îò‘âJ¸v¡²]Ü# -$ÙªÛ'Ch?5™<„Sý»íË°Áñ@“­ ša¬´€-™AcŠ†éloW´M(òr·§#Û`×ÐnY{jÛ`3|lv®`º'Il ýà±!å´ü¡õÓPÂÊì{”¢E¯˜ï=Îpaè^ ØhëOk`·î›ãpøú ­8uyÜ$rò–Ýó•u -f}cqÃ+5Áy~!ýÝ]ÕúøÀìU,­¾t )æi:Hò ¾O…ÄÛ(®_eOéFV¾þqÐ>¬uèàÄ-G:ˆáñÄzƒž…›HZ\%UívØÀ Ðzã^àËBy%€NT⸶3=®Xëà?¼mJ’ø-Ó3„÷iã×H@Üfσýk¸R.ë›õýv'€Çm.'ÍSãÂD»ÌÙlyü7“¢ YõÖC³­Åméµ^¶¯Gu5_G›øµÙ1¦ût/ŒÔ þàÌâð -à4‰±1­nˆ_ûD>}p+æfªg9h$ú¨Å]@ïMù`Ø^Ò¹GKö;5«¤wÇë»äIrqïA¨3fA‚ßYiu¬€ÂÝäÃò½ÑïìÒYréDõö:ÚdR¥Ý “At ë-ª,)âºaª¤ÉºhâÏ9[Ô§uÿSç9K’„ÄTK©aX$äwgÉ“¶Oƒ[âx‹qǃ£yI(–ÿ¼j5L§ªIÀcµ}|hÀ$‘zDâUÏÂw»Y+½ý¬Z:ÎïçÄϤŜ1¿òµlÙeÀÇ`uø@|¬ìÖ܈贚Æ^Ú6î/žyÑû`að¡¦È Š[¯ÎŠ`Ò¾ÌEž£ÂwÁìa ¡zæiòLa„}jÊ°çÉ@û£Šå}ÅxæïW¶™ån‡sŽ˜0n*{¯l?Z©zó‹•Ê‹>¸ç8íp-LÑ&È£ûïK`> `´¨%Â`–¢îÝ¿Ésª?ºvË»Æ^\ü‰*’ÖýQÊá¨Nbf…+Û¼¾Þ„žo" Ù§U ¼zÑógêgÍaäŽu´F Ñ™<ÃXúyݸª¬Ðú*¼Ègöÿ4?X2]Â4¨HšÍ¢›×òš^ÁÐqLeo²œ˜Uíó~ ÷¥’’Ð7>ì)Ƥó™Hnžº¨­A7"é{D†Rj)ÿ×¢Éÿ~áeàíVDJÕ|—ººX}ѧCrŠÈÆTÈAÈè fý˜£’”P};Š"Ó¼KöÓ#ΑT ·F÷ú\çý÷^Ô“ ;™ À|êR D\Ä‚ HuÔ6ÿQÅýИ'Q3Èb;x#¸Ž3óSÌ:ªjbíÛ%¸tJ‘/>Ê¡OÿîœrVÞÂx]°¹¼>)âïŸÁµ]€lù5o¾[ç¡ÐF;,N&¨'i©Š\±NQÁIòHÔÍôÐÀ?T:í@ØFïçNÿ SXÁÝ0±<¬)»hàWÖ½4f¹FD·hÛ.سT)^SÑ-…nw}ý, ˆZN¸EÐCô¯÷ Y ReµzÂÔöð3¼Ò\ -¶ØtíþþYá5`F~_›xÁƒUž|‹'X’µÇ‡„G@UÖ6I \™„çÜö>ü:ÉV_ûÉ>Õ¦9*I0}Óµ\"{Øï3UÚzÆñÉuäFœfÌÙ¤…õPߨÊ)Eˆ8‚üU¥œúw)®ðgŠËqÔ:àdj#¥¹¯ÜˆhqÇ ¥œ¼so -¹@’ -KG7ã"­|QЇæªúå Zòzs|…‚}£ÄLÕ´SŠ¥:€fªÕm¼§ÂA3ïÖðS 2Ä=‘Ö[³d·Ø“üJœ\ܳ­òcìÚ€üù|Ët¾j1ÑÆ›AçrþŠ®ÀÑ®þÌJvÂ,K| ò´…Ï•VÞœ -˜ü›Q„´[ÜÞ‹ ÑãÛéA£EKS/Œˆzýÿ˜åKcÅ -OÞ,¨4¾•e|Ó{‹G»Êø#Rvðà©KÎýyÝ{ K1èEúŸÖýVËVw¯b´æûÙç6­«ÂªÎÖ=…»ºyeçŸÀeìÜ‘üÆ÷ uEØ>M%;,ˆš1–W}w ~hW¹ «—¦˜_èFÌâÑî9QcyƼ®E¸~ôÙf®áz\©a’:a<ÿÔ2eugg°SRŸ1ØEÜ’(=F™=Ž£ƒ;âq')^1>Çu6 -GÁ0ÿÑûòÿ¦œÿ+B°¸+›æ¸žb¥qGYÀðitâLxRIPv®Õ½·hÎÄÓÔ¥ºÒÏ‹^ž½:nwåòœÕp5¿Ð>^؉R¥Þä}ð4ü¸¿Œò™áùÞaŒgül}×^™(©t7ƒaÝÔ &ó½¶)±ZS«ˆ‘ ”¾8ÿn}@f0;­b.Û£ELì›7†%·¹›3Cª,ò@ä7¹Õï[I [1sI¬îÅXÚ<Æü[›fÜŒ¹¶Ýa¯:?yºÈç3"èu/'Ø\Ödñ ÁDÓ¹Ú=»qUü êškóκùH‚â$ y§ïQ7¼plŽ*žmhS]ADäÛäøù5Îã½üÆ«ü‹79µ +ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U +nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ +s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× +‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 +9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, +ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. +>Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH +ƒ$ü-UÒÛÊ3¤³# +endstream +endobj +2243 0 obj +<< +/Length1 1188 +/Length2 2740 +/Length3 0 +/Length 3928 +>> +stream +%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math Italic) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle -9.50 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def +end readonly def +/FontName /DUJUUF+PazoMath-Italic def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 97 /alpha put +dup 98 /beta put +readonly def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-70 -277 902 733} readonly def +currentdict end +currentfile eexec +ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û +…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 +¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ +UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp +‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq +1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú +T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: +wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ +AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V +6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ endstream endobj -2239 0 obj +2245 0 obj << -/Length1 1688 -/Length2 8444 +/Length1 1756 +/Length2 19614 /Length3 0 -/Length 10132 ->> -stream -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSY10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. +/Length 21370 +>> +stream +%!PS-AdobeFont-1.0: LMRoman10-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 806 194 0 %%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/LMRoman10-Regular known{/LMRoman10-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /VKSUEJ+CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def -/PaintType 0 def +17 dict begin /FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMRoman10-Regular)readonly def +/FamilyName(LMRoman10)readonly def +/Weight(Normal)readonly def /isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def +/ItalicAngle 0 def +/UnderlinePosition -146 def +/UnderlineThickness 40 def end readonly def +/FontName /NCCVYE+LMRoman10-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 66 /B put -dup 72 /H put -dup 73 /I put -dup 32 /arrowleft put -dup 33 /arrowright put -dup 3 /asteriskmath put -dup 106 /bar put -dup 107 /bardbl put -dup 102 /braceleft put -dup 103 /braceright put -dup 50 /element put -dup 21 /greaterequal put -dup 20 /lessequal put -dup 0 /minus put -dup 54 /negationslash put -dup 112 /radical put +dup 91 /bracketleft put +dup 93 /bracketright put +dup 61 /equal put +dup 40 /parenleft put +dup 41 /parenright put +dup 43 /plus put readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-430 -290 1417 1127}readonly def currentdict end currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÍßᾉYň5t&× {hLšGÒqB`d­Ë—PØ©†ÑÖ|*îøÎx\ÁœÞ–HŸtEÅãBð-¡ÉùóÁgedogÏ7—‰ãï‘Q`[['“WÖü…7Â3ç®æ¤ý¾sçZ9ë m ¦ö!–tAž¾ë‹Y!$átÊY\Žr[˜uTIUÏý‹iŽ÷B¼Œùyã[Ž™ÊÝÝÈœÆÅ—3ò¢Kï6­†zJ!žË’Ç‘œJ·s&B5öC©•"¥m†&Þ`7ÞûӢƻ‘Ç3uµgNC O~̶u³o5Ö=žÂÞò_ä›Tù/ ¸’‰h,°—$B%¯döʘï¯3lŸÃ ³¾ÛÿMÓo§¨÷YLÚ¶Œ~ƒ3^æÐø`š‘12]•=l8Çà£B6PlpËfWÚü<• %PIN!jáuË#,.õ£Åi«X“nôè¸È¼Ê‡ðo$îÒX½šëÄê‘·I5öÔV*E6t±K×o¿_)žÓRŸžP»¾G;Z@9ØÐ"V3¡T×TLç˜N Y:…A€Ókî©®Ú¬6Ì =‚¸=•8€0~ÛÐðDQì±ã QÂù^brð/2^KŸ¾Zh`§N'Jt4i¶ëüèBYÒð7ÖÞŸBþU_¨~\ŸfûŽõçôµïŸXA³ˆZl‰”¿Òã_£Ì½ZÆŽ˜ÀÐìý'•çxHµúöðbÊG:Ç"„¥l«¶5ºCÝƉU[ÆaL¼ô¸rÂÌf¶ôù 1[÷;4äp^èµNïpûªqBD 'Ø…93ã­M€&9{ ˆVD õ8 aе‚2Ön.hf¶ -äl?KÚ¢ë[$‹¸Š³úGpðöÃݺ±/JÇzc÷¥‚F8ûvP3Üà/XO6ÈyAo¿±î~ëç]WqD‚M¹ˆY4ߧ󆸢YÕÌ¢XPEðLý2ã_2¹ ­¹©oH•{ -1xÒÉê'¿¼u|»o øöúWNRšE”ò¦í™¹Óôû&”ã˜lFÿ\LRh1®Fžbñ¦­Ï}+‡l Cø] ¦¥ÛÂ(„vfÕoƒ+fÏœMëí³}÷l?c*Þˆ"î­^R¬æ]ªm†äÔi§„KªOÉÒŽ!I Œ²Ó²ûçõRþ_tÓW;™¿Ìñ˜Çu@(#ªt*̧Ó U œ{|ãõõQ}a3åF¨l•¾ó8x¬¤Òt’HWA¨Â­â;³!ÚVÞÐþ CºÊƒVo³—Ûvºžì’?³”;”œ±=ËÜ>,„Æ㧫¾\"«ù¶•šÑRívRC•Ø¥œQDh -Ó@_,žÇËœ½kbflçAIøP^ª³™wÙš¦dIÉHzk(c÷3ƒxûŠÉìSÊUPI³f{KΩÍs… îÍY¯¼¡í/ìvÁÏ[¡¹ûظL%O¡@ë™Hƒ†“<ÞP'ŽJ£ËÛv‘Õ,Æ$´"hU§M?ô³ë?á“p*Ö„7v×=ÛP1s}ãG“@¤N’5^ð3•‰Tå³8fº† yQ¦‡ƒ¹O)„´ ¬07ÓæÒ%… „G ¤ú’Rz£óófé{‡Ð^DhÜô<ä¢{™™âB•ËêÖ}úÀÆÙžs2f'CóyÞâ°_ǮӮ@]c8“±n7q'ƒæKˆü4kO=íþ«@ÖU ’¨Ül,ÝPoE‹ÞækÔ™*7q[Ú!ì÷ú·ÎØèÓ\o»‚^×$·&Œåóò]8l•ä·s¹&„„Á/ââ^)š!TåÄ€a óá¬îÙгá½S"¡;è•üu^S‰ -A5ò™6B=Û¢vnÛ™Tã­™±Ï¼"…Ñ÷©]/Í-}{ˆÑÆÉ@ŸÓ–+‹šiý©caÎpnÉÛã´ÓàÕ{ª N©‚ïh%sùªéðž ¹×áN¤‚äå¬VÚäÎǃ¿a©š]ôè?Õ, íòbt¡l“˜h6‘ÿOˆvÂ_§Ré̳9S ^Pí!Qp÷ Á÷¹r6÷¼Á;¥³Z–è¿ÆävØ9k yŽµH’yp;DÉ×ã “jí1œÐ:ðR„]¬Ý›bzGC?"%‚|eÝ¥w!è±–Í6Ë¥RPè$æ·¹:ÿ½Ô)ɽŽE#Øè¥d'¬Ãå¿-¹¶ È2/Å %ñŽ}‡Ù¿ŒØÜ mË…¯ZüÄ¢L8ÏÀôÙcËóµÏoÙ¬Š›LH¥ÔºKÜôó¶ž)˜õqž+×ÛcYy•ÅÍ»¥Ÿ› -_MÌŒý`-@³0Vý'ôœÏ±Ðö©tS¨É¤d?ݱX(ƒYƒ…Ä÷kNWµYÀíFØ<èB}³–ék³ÛÃßRí(ÚÕÏ^2Ø%0Aüýìm„»ŒÎél|mƒoÓÈì©4Q庭„¡y|“Úvï+~¤ŸÄ”EµcŽÔ²Ù’MÆë×/­öëtØ…üHeš†ÙPC´évNîç"G6} ¦ì ]µ1¡AÀŒ”+|ç°(ä¹VÕñߊG¨¬l7‚KfWzÞrŸ_í=ûG"{'ª4ˆXM ¦(¿Õ±†ïz/ܳ¶ÙzÒLÃZ„|¹‰DÆ4-ùá0Eíp¶ŠZSú¸óAÇᇬˆ³ÈáظA䔹Á½tl¾±ÎHý¡[TxsÎM¢…P‰*´ ee©¦f¦¾wkÚ‡øH1)7¨i"ÐÃï‚$0Øþ´«ÃV?i¿‰zóç8ÆÅ|¿¥>dÿjyTšÃµVmÇæ—áq§ÌgCÊ‘ó‘ïØÀºš9z»åTˆCÞ/Ät~º‘؆§o*í—9ŒÆrÏÕI‹¡oj¯UíKöxj¡º. ,Íø+b1°Ö²ñ ÃI›lDLïQZ3÷¶P-noô¼ò½'<ÐY½ße-ì1/øŒŸ7Œ*E5#—d‡ñ¤oŽ–{]Cª>$þF zg!Ј*£oºÓjŠÔ-Nûíͥͭoò8ÅKwQgÝpœ*1^‚.ÖŠˆÎÂë± LV‰~ôÈÿüøm laÎ ]%ì."¦`»©_®Q·iäpÀöÅŽÊs’5y.XƒÒÍ®)ñæ¢T¡í¦öd1KŸ¢k««ÌŠjÝ«¢n0zªG®áq‰·ëa©WQé%z„ÓJ²¹ØX¤¢Â3tIy0ľ£.Ó#‰Å[“#¤ƒD#EÔ‚’pp¯F*«¨õ±Þ˜vïrOÓdÎn7n ¤Òf9ƒ*¯ìX:õ¾ç>Ǽš:*ÍÞLfÍÃ9’&a’j;+{»0‡ )ÐÚA’gðK*êXKÂÛV¶'zÙZóÌAÚ) nîöÏ ³ÕT¼”ÙÛLÎßJëïòé^Di¨ý[¦ð:s<ܸ2Â!ñÞU‡ú|›–#ù5V„ëfÑUŠêqP}÷üÒ|=ÿŒš»¾GÂ5O|PÃèsš9ñ§Ž}äå“* -+gpA€,°,Á=|j«25CÉ‚7›õÕ ’ï–¯µ—Ø.é/F¨ɹË0¢–tRœáºŠ."we h¿P€ eäÖmpòîJ‡o´@°±â–ÿ_ðêAÒ3§âQé¿BVô~$ð9E¢ºj= -‹]? «è{w¯_53÷¥FîgÓ¿³4B™èä›ìA¨«á½q²ÏðËßÀÞÑ4µŠ‡¤Ðî1®PfÔ ¬ó,ÖSÅŸ6ôã¼ r¤§[‘ÝÁv`à ¼µ±ûô¿x÷G$ÿŸ„¥êÏ.}¡¹Î Ì”·¨ÜϾFÍ™”c°±š‘‚=­Áf!*˽ª./çwĉR8º(@ÙÙ‹šz c¸½@ÃN&Im—žÝ£>X!Èm•eñÊ@ÎlWÿ"ÒVCHèø8ÔkÕ‘ŨÍÀj]´nó3X>J¡z?ÙDí€=Nø…½bn {qbY(>"Ù8*苾ÉÍk¨y3øoâŠøÜ €ó‰Hã Dwâ¹ø]¤€ ½ëd {E’ʥËwÙá™.$Váçhtœözk$kk$]4ë¯ðcf¸¡ú¯»CW–@òËóû3ö—plQ¯ “Q晉bá¨/póµó T“q¾FÑ8_þÕA’¿nëQÔÿ¢mKŽ{&z;<Õ¿žmòã[i7Ìϴ뜣ñ'*ýqX€Tnòt<ÕŒkò/?©2m)žËÏfô¹¯í•áâ¢øy#(ã¯`%Ú{ª§!¼Qœ/0&sßx¹ôfçB«+¬Õr‹ïEßï[tÑÚgOKQ£$ú$²=à‚ל?êd@3c)]3ª–êÕÕ%*M}HÙ饞;Cd£á˜Érp½°1jýŸF¿ˆc…st•íG'÷âC\–ºp)­)öþœ_š¢)±Õ(¹ú›¥µ MMº -µ³„ qÆv&¶¯Ê÷Cßå3N¶LZs³wTPu{‘s¼ºÏ°øPž‹+-­©¡U‹—±FõUøP"»KΆ†+«¼ÒY¾e7?0«(•öidšL´;gk9Á(YI-Œl`®õî;`ÕçæAÐH:´® áYHb1“µâ»HÇ{¸wƒÇR^YÑš, - $F¨Ô–HDÙòV?pòyÑ—¹PÞ%F=»‚ÂÇÆB‡öÙö¡GKØPh³~N´[¸IÊ_ꈀCðTzÞÒf ç <Ó–”Œü`4|mƒE1ÖJ'¼ýáÝ$`}R ‚Ú\¨€âN2kf¢aóouJ73ê´òváê¿ôKÛW{œMÓÞ3?שMò]ù:W;v…˜Xâ;„B’ ‰§X.PáI;?Ÿ!T¤ˆ . ·sìöU]䮃’=ÑXŠþ ý’5´ÀŠ€r€Mt>y=¯†*ãbC¾~^ ½tÅAr±¡l'¶øŦ•üó\ô÷ØŸÉL냡P“&7ttöuGz;Kg4ÚóÑ;·u)"é³;úÜS•–Âv½ËðüõC~³?¿Jƒ»/’F"6U.°0>çô+ÜKQÓ„0"ÊÓ«Ñ=ëñséÞíƒxoJ]áת!Ìwü6OÝ.}‹ž€tëË5ð¢VâË©³+¬¥·¬­Àü7Š³Us‚š®Ö©ÆyçåÊÄ“TŸŒC5üGrgâUÄ5Ì$‡—Œ&|°µ¿Š~•ÝGªäØ8ž—ê ¡¯Mvåß(jt§ƒãß ñÏ¢nñí›]Î]ÅQÌW…OØ‘ˆm.Œ£Ž­ð R[¾ИoNÐngô IFç:?Ât”ØSUOÎcÆj2Cm[¥à«O7>kWúk¥¢©½ËX¯'ƒ²î¦œ ™#ñ–Ñt'X•d9+E7±ðNä™dŒ8{Å]òŒm¹/‡ Æñž»×Ž¥dv‹Y†Y–öþwopôé™!™EÄP7F?oÏÄjP9âò­"›Ág“BŠŒÎÅÙPîŽô;B^QO©“3ù¿*B 3³ƒun»$·ßIÆêÿŸ_Oeþ`Ô -˜$Àß`‚}-9Q/Ä¥åM³e€ž?ØÁÇÉêÒ°µìhä]Š¦bð¿ ýé»ê«_ê2<ÑøÍ–Æ+ìtª°[Ïœ±ˆJ¡þ©O@¤%M‘I‚Þé t¦µØvƒ†Õ\¹/bãÑÃòMVFÊ05ÿÎ+kIå2W9>f–}©· ÐøĶô3t‡¶«ÿº¡jª†¦Ã|"§´æôîÖ -ŸÇÉ[ÓLŠhŸŽY³)Øo57kßþ“#%H’\,¬xÎ|ôs¯sxí¥HžÍ†|¶;`Å vû%øÚ¯T[ícÖ]ï‚eŠ"G—Ujß«„yŠðtvxÕ:udQ‘uZy_²Td"“ª£b+çÁO†]Øl¯xà'6wòã6X²C¿DKOÁ‡f›(g@w]f¦V™ËÂ[ê~ëŒ1Fùé^A3v¬ ÇâO›vÒ¯¶2v -zúåT¸ÞúË0ÙÝb#ö›[›zyÏ’Õ$e1¬ÛkÕ5—dRAì`(Å…@{=yW>¿ðˆä>ú‘¯çy@æÅÿ¹Uáú;”œ±=ÃH;Çc{–ðÛ3û0´ü£^Õ®”)Õ™-{·O¹°OÖú2R¨Â´xÈèëˆQÅôwBgБâ¼ýSý»ž›"תl›bðöz;¹±˜IyÕ\E×ÁËê‰pr¨kM ·@@Âe&À 3•˜lÃʉtS÷æÄ%í)è/pRÇøÞÙÀª"2µu -˜Ee’5ø+ÄÙ°s§Zò'±¹§õ˜àçbˆQ²ôð°SlŸjÅö zvÞ€â~%.Kz\N¡Š„çüã÷Eê,ãeV2Ò=Mo)-JcÇVà¤:ÒUÙ2Ѹ>É1ˆ×È“"¿QWº ƒOýõÑ‘4*Ozûº.c¸ójc”«Y&üßÜØØÏìê=ë7”Y™´öøÈðê,A5nÊIßFŠ•/œ?üÌŠ™á ]as.´N/þCÕ»tÜýH…G50x}eb9—S&ùœ¬é0år¾à«J§H€‘ôN­\¿?^4'îœèb©É»ÏÀ':KÒ`wpcÏT–!ÜÛ_ÿ öH˜°øŠ¹ÝŠ†‘óþ{–ÅÚ}þH¿mZto”àÞê7Ê«¾ß‘ŸQžÇ·¾Ùbi>ÜœZO¤§ „Š“dºdFÕ¿cc -$"«˜ |ðhJQvB'\³Í%Ì6Âä²3è¯J)A‚g²+TÂò‰ªÀî§ø¼†ÊrnßãLì“O™ÁN”@µEzçHr$©d(|º÷Áµ*zˆÜtiF¾ Õˆ›º&«Öþ«Œ{Ó5rT[°)C÷ =t†<¢na‹´€ï3å—³b«m ~WåÒ¯Ò-ÿ¢-ã*_>Góe‡È¾ºJµö!De:ñ‘1˜´‹ 4Åæ*ørkd›«Tý^ï\ä”(^”å·|a›ÊuØÝj“íË•û‘ÇNø×–GÁÔß² ‚Óh$ èÇ™¼Op—H.'çHã •Æ"&+t -Õd[øÍZìÿÏ—ŒþEßÁ1Éøktê±èŸ/È”’Ë7ï\xßY -hÊ^IJvh>üã\/µ?1ªX½ ¶Ç½þnyWlÕ.ÀëŽýAñka«i»³Yè4!@¬ž.‰Sø§Eg_»ç’Ž;Ûâb$;ˆ ‡ëÂótO¯EN,×@ß}Ë€¡À°ù¢g~Ÿ ÕŒª ÿìÓf,ÚtäyÁÓô–¼yËV½Ðc) ¤ðävŠM‘/ã¶"{i è~?pÕ·uŠCùMãâ ÙD=Þϵ0íŽâsñίŸSÖ΄V"å'»„¬†B &ïä·!©U,)úÛö8®RîÞ’¼JRD0’õ˜]¨<±M£r|±98CÙ׫NnŸ3Œ®=Cøl·âÛ ¬¹?×NÛ©Y$£õçÌO6­¾f¥;çHÄ2¶h,°èbþ=&qfžN¢é]ŒÜŽbt¸íÑ)Œª~±ƒ2¾3ªØÈFG?‹ì¼ˆç¯[¡PöÝ«_²Nò2@´kÕ -ç=‘ûC:•æ¨ÞÛ‡uVÝÂ%Oÿ^øðí"¢….œ-ٛ冕ÅK =°‡¹G,üû[{uscˆœ–8`ÏÏ=ýŸ,†aÒ… 4` ÆÅ ú>,®Ò¶Ö!?îòy)ÃéFë°ËåðÜîá„ 6áò.sv¼¿×W«:iAaQ±Ãà²$gŒ§õp¬$~ÓɹPKx 8IöJ«cxîÈœ6ò‡Í¯MæHkbŒTþ':ËX¨ £¤ IÖ°(ý¥t#˜+Ëd‚Ô¶dó‘áÏS¿¨¸ëçTOöh†¯Ã¬tÙRŠ<%¢(•Ð^Ì0ƒ.9u¯»U€˜÷ÒŠo4jµѾ9fyï)œeYgSÆ¡’#åKçÅÚ)«šàAªÆ¾‰kW2«Ìê1#áÚE~Üì›—‡‘€"@q´¡Ñí ¼3ýÍõ•Ý|aTõçÑ ²õçýÜ=iï¬Péi~‡ô¶!zå ¿I·&;çXÃÔe”eg¥8:¨ÞæKäÓª¦Då‘K[h¾$Ñ)Zd‘7Ï’–íÁmQ¸õF*TÕ™<ƒÀ•çãDMI ÷%’ê¬w¨}Ö姞!‰zQl#9Éñkãt²_©¤#åJèôn}ƒcy6PoÀ Óq_eÝŒñU¶]6-Q -±ÄÕÎr™}—G~D"ØiŸfì=¤öóåºÄzиƒ“ÒhΚ¿(±0ÐóøEÕ‘çë17MæÔã1Zͬå -è-óÔÓ“<q­œžOvÉ™/$«ú—¶#9æuÀÙ®ywÓ ”}w|ê&ŽÏÓúÇ{×?M - –±Ï~x3Ï L'-@Zºkv•hcîåQ Ñßž†JˆˆQbù<¿ -w‘­q¤žÈ$vßKGš¹è¨„¶ù4Ý[ ß´g´<ôçæáŸìa’éÒø4Ð}×D+VWFº].ÈÙÌY3‚8:Þ­*£VtE§;Ôa‚£Æzv âäÂŽwâþê•žúT¬¶ÕƒU·ðÊT³Çd¹,lW³Þêa|‹h6*¡úšÿíA»TÒfÎ’*”•*òþð!#ÞÔY‡Ñ¬¶ù} ™©爳ܒ@ Ë\ÖÛæ mÏÈ©õÜüÍ—Ðh\‚§ÅÃ0jÉïzôÑdA7y,¾Y‘‰õŽM5?̶ÀÒí„´™¼Äðï•òa õ1@Ñê5~#uñÔÖ ð'µœYá! -5 -¡Gí´ž ¶ò -êN¨ /?|$Ŧm§®µØ<£¾$(Ò [ÎýxxGµÊt„Që¨WâÖ˳uÜu±_.3YôNò&ÍŽ”£3ôëãÜ¥OÛL'ÔŒP??赨ðÕT!Ã¥¿ÿQž2ð¾B#7<.*zÿš¢¹ÎWSá®6zÂçjÃQyºtˆH h´t«p1ÓÇ-Y£¤`ÑÊßòaÕóñ9·³Ö<‡còÊ¸í±¦½lXôüT"t:ój˜Y|… -ùÉ,»oêã%þ¥Ý|å.' õ@qÞ8Š‹¥;ÁÏ;Oƒ˜"!L’LÄpëÚ42ð»ûÓºKG||mHƒvÚ®Vka›WŒ£Ìè{9 ¦nRgÏëaZ87͈ºŒ,ÒKØçÚÐê¯`˜vÕ+ѯÊZôvÈø–˜Å^(!ñ|øÛ¢ç~†}Mr(îéÊÙîY|ÙÅ~v,§ ƒO5í³¸¤·«ÓØ€@ïÝŒzªé ?|1òá?º§êŠRâT*kqMèÜ+pª^ñ\¿u PÍoCàŠ½zž¿$Åt@ò[àB-ïE,ì9g"Ù#£.º±:N¦ßú=¸Bœ*×ÝjyqëÀl6Þ]{j?Ê"AsŸNŒÜ9 -p¿3úù¶ô4}|0IÇ•çÜ›‰Ó±ŠõͯHöûê¥=ÍÝY©É§ÿÂ`?ö.¼5‡=¯ØP?Ÿ9<¯N›¥;Içq×ÈW²s1nÙ„&mèÛÁLÖ§_&ÿßczÙqâ9lÁÉ£Øg^[Uz(ß@ °ï™üî]øbžéõ½|ŠÝæx‰LB=öÇÙ”6Wé€ÀîûÍ*Gçt.P/6œn¼ª±*Ç|›Dï¼ëäÑ'+T%^–Hho'«‰ÝÄE¬ÁÖZÑü©xøT*!i¦…ÍZ±w2l°f7ƒ*VÄÈš8Ÿîá+ÌzìïÀÿxŸâ67HÿÆ0 -bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿äŒ¥?ü‹(ä›:øE(ùqÞÚUé[‰s½ $ªgG '“\ +wšÃM•ˆÏ‘¤s¾u¢IÐC'žƒêµÑØú93ó|Y@TÛ‚—EìÛÂè—k$:™mGzR›†g»?·x= w;•*E ›¡ëJ²úM8Í›,õuøàý²èZmYË +þâøµÙ`Š”n›ë¿.Ë£†ýî/J +E:– €ÉB³Oà÷/g^Mj9Z6ñ¬ïF脨0 B‰KBÕˆ[—°GÓO¿rEÞ÷µå符õY8ÁÉà6ñ¹¹n¹XÕ”°*w„€FoÜt8CF :ÿg6}dPâ§Ék»©™]«!­ð$ú¼3h+Û†^]â;J˜ØRÛ*Ç-uCí4È⚈uŽðµ6Lj=!;Í`‰,7TàÈåìØÍZX Vʬ]w)ߧ±ÏÌɸ)Á²ê%NµLß±‹VÙŠüÓ’ôÚIþŸœü”|5ú…sBŽÏMedO&ÿNg°’$q&äàYשA Øuþ­(†@HÞV¦qûÃQyåï?>&_Ø@GKf¸0ÊZ E\¡¯¾±$ÿ3e­‚LÛá +°Ž:G(,æ fÔë‚Ë[MÆÜ]l¾n™ ±ô¨uEäÖÓì~0¿Rø÷š‡tö›»^¤S Pêþ–¿jÀòw¨£Wv6ä™ò!¦Ýé¬ +­Ðï‘1²nC22OÕœQµS ê³tyóžn”åG + óýµ¾Œ}=_÷Ž¨ÊóÎnŽW?^è‚2I·=>œÄÃ]ëL£¢‚‹-‹Í¬Iô®úq^ ͘´ EM +,|K93¼¬ðQÒbÖ¸Z×¹pu ÐÖòPÛ«%ÃFùj`(¡m-¦>¥ĸºtGT‹ïf• +ëb0UAã¤xð“>±¬|ïºz40 +—BŽèCGÒ¡ó Œº%"èânHè¯â¨#Ü•· diKs¿öýx‘²cî³"ÕÖHc öAå2Ÿ·¦áskÝ6¢.ab?ìÀCGZրݣêÞ~côc>U¤Ú”!«U ·ð…Îìæø‚ب ®Zl¡p;ÿ@6CñÖþá‘ÑžØOå.©a‰ÞˆRÙ&‹UÕ÷ìÕtºA’ó•²_Kã·Éfq +á(CŠÿ¿$gUà^½†«/¨—è"z ×RkÌf ÿž¦vPGÃyQ”}ƒiòî0Ïñ}ãÄ*‡Ïí+»z>³šnÓ ˜ˆy!2XÁŒô{”Z6’”ã0Ŭá‡Wë ZîxVêŽ*ü2'PÔ§ˆxh}·C}—«Bºû—²â•.†ÈŽ”ºp&…îj…Žÿ©×·ù—dãqŒõª×â'gº¶0ˆéù·!gzŒ”$Í…AÊ\/=Çj‘ÂëU˜EB·ÎÈÏm–/ºöðÄ §ÎÖy²]Â"Q²5Q.Žš_xÕ(çæº]ïnõ´R©Å{æj„Fæ.6Á‹SµÇå0&‹M…P!>æÞÉô>¾ú¾òÇ’Ü¡Q°Øá±A&%_¢ÆÍ¡¢°•¯ß ~æ›eài6œSËܯIƒ_1pº×$€$~á<À-’.Í/¦pY7jU‡Ëcd适™ÊM“Tj)9Z[æaì +ƒIjðŽÁàQЖÌ@é1¾°tªž2»ú6“Îh½e>}[ˆ’E»fagŸ~ùg¯$íP81lÎÑ_ÿŽh8é*îðµ5îCÑÕ,ý áUwF`‘àeүͿýå;;1"c%¢|PüPh\CMNñ½‹ Qn1:ü .«hÑ+±ÁUe‚w€5­¿Ï6e–õãÜKì0k‹º(@çs¤ìQ-rñ¹­DÉ%úÝ}òzz®®RüãÚÉ7ùušÌÑKfÉÒ ¶1óú(±Æ¾Hµ¹^PÁ(ÿó ôB'vhuŠ fgÀ›ó!ÓÆá±› ¬š>¡Ôgªã¦‰ZLºyå’ûM«SŒ({º’÷ÔCªE§‡]éûæ;ïþÇ&m±ûP†4 }:FkR‹{˜÷"¯KÅ ;\Çc¡‘/¤[ápUÝ)6)gÔsô‡ÔÁµ +„.Œ +wçøʘXóÔ¼Ï68…|%Ç;xõÃ_ðÝêÿò¼€jA÷ñw(¿šdŒÿ—BsÑŒð¼é’>„èú~è>‹­bÛ þûµa™‰5s8«Û÷èݯÿÃÐ>ןqˆ§ î!/‡ßÑÇjWKŸpDzÂ¥›Á™ùN=0óCÈ72K™¿¯0Ôër¦|]´*LÛí­Åø†Æxå\þÒ¨’ëü +üG:Æü—c{7&Lš3ÛÊP‡ÙàDúîfº$FV‰—ÒeŽ‘ü=…X`5 :cZ+ˆ2a ]ê.…D`©“KÊÇk^%÷ÂIh´MHžŸ—/F? A¸]bu¨\Ék)¹šT¾Ÿ¸@ú,³¡ÈØö®d[‹ñÏ¿ÐBí®‚, Hh«¤ÁŒª^Û¯ÏI±±*ˆ™qjT‘qûbx`J@̤HIæ{…¾€Û£;§qOÒ]ßûTe„7”xwy÷i”CåoQ.<èÈV¼ÓYx}½ +kLÞ‡1‡Ú†ÒÁµÒ'mȾ­ZzË\0©çž…Ë‹õ8FôXqàŽÕÝêTòt-1À¶ÝAºˆrz€†–&‚ +ß"iå/3 KÅKÓ¨÷å ÙŸ7bA-ÞÄ +œ¾Ë÷y“²#ĹÀWMN«ë¬]Jþ—ו¦ÀU *É;.Ï ‘ %wB©¡åy;h¢"1ӡ환%NÑ©p1ú ‚Œ‰ð@+VJ–ÅSƒ€).—¾&µ˜yš‘õ+¿p<l)Ùlw†ý¥?Ê̹”FfG•òµ ~r®#ßýÍ]%?£ÓöLh0R"1ƒY,”1ªÌì´¦ˆ`H+blb„›¶Uû¢—“Š<˜nÑ[s {åyA$ºÁÙNwtú•Œ&Bºˆ!L‹3e,DD12–r¿T5ˆ ÿ ¢Hù¬í{bLÔåëe/wyBQ~ªæíÉâÁÿOžQk6¥ÐðàÊüºñÂ$+æåB ^<‚HZ°~“ÓNp¼þ¬å#³j*µô¯gqWkM6z¥±½Ã·Ø2‰w¢õÙÖ8©”¡ùèýTèÚ|JÄÊÆ,ܱJÖŸUVzÅ%C/•Tü­R(x÷j‡‹Ø q?táÐhSÜõL陼æB\j äò¥Ei¥cB ßgŸb £š=e¨ÎáX2)ƒm ØÊ9 ý˜odšB°a%\“ìÙ¸Ü *sr“ê„7ìzóE±ë;~‡€ðPØÈÙ¨ê ѽ„Ð •Lù%*DCî̯Væªpdmô™›öÿo­Põû›B¬­6¨é9OsÉE‡Ríœ"(¶$@A.6'y[)GG¬˜`Ùšqè!ØùfGŒ—õÓ(OZEü2u[\îÓ澶-ËXu[é]’¼ËÉÄ…üe¡[þ£@×$@ù´¸zýJ&„ûäàŒíU, ͸ +Û«+û|äï¥íØø½ +¹ËF– +‘Ž6ždnú¨å‘§Ô[°E-x•þÔ»‘ïÙR¹,*[c—ŽPÇLCã 6'«ç»µûøÍ~ô8q!÷.ë:š¿÷©ÄkS´kúªn98@Ì?-±×Tùt¡B€Ô¬™Æ×Eš!3`yl& WAÁÑvïËØ8æª8 +˜Wç2¢4åCqMAÌa©Â·½qqYqfìžžœâÓö“õŸ¯„bۘDŽ5Ÿ(‰ZÊ$hÃߦ‘·m±­ÜÞ,Å·ð,ï]ªx¡óNõ8Û4 öøtè»G—= ØXv´Ògkñgc q¼ÜdfÜ%Mž› SG—øPïm©«É,,ÆÚÈî¯ÆåL ²åŽAvŠ¨9l1ð¤Hë€`™Cø⃗Æ!Tà¹!2RÅ9QN›õIuV;¯D\õ½ÖGCöhtAÀÚ†‡eS6ã ¤À[2ÆÑV$¨<¸oÄÚº®~ Òro1U>&=éþÓ³ö¸‡Ñ%<ÅìÊhh +Ð*8‰‚ƒeõ”NåakU±u%ãvH²EDÔÐÒŠ58ê‰võ"ȉª?H‚}Ù( 6Ö˜s[1O=xZ1ÁÏ[$Ñ'ÏÐ!Ö„¯„«W$†ê?ÒãضdsÇHˆ» \éfÖB–Ë6ÁEÌ%øXãKm'á:Nw;b%Ì÷šA5Q•¹ÑœyacP»)tLq=͘F.’ %O -¼Iˆhke¸ÏÌ!òw†™¬«ï(Lö<tÉÏl%"Én…Q´)ã4a +iw+ 2bgr8%#ÃnxTËG&yû«ñß1Ño¢•È0LäúewÕÈz¶ó3áÂî«Â +i„¡e9Y½o¥“÷ò÷'ºâ}zf *ê8!é¯ï6¹¶Ôï8S´("úÈ,7MXJ‰ªALìÎÃî©…ÎI1sëÚ6$)ϺÑøjbø¶ŽcÞZÉ͔զIG™'`þ#áÜ|ˆ5+…DÝ÷×bm6›iæ¹Û>‘]ÇÁ,2¹ÿ“Jó ÖàŠo5@|JK6!CõÉL&dxXñBÝ8À‚p9™j4¾ [ú™Ù‡èGtö´bú.Ô/ï _9"Å:Nªx ðèýùV¯ª)$›®ÕúÎÍÕ¥þ»tùV5è©çû4jô·°ðCYÈ­§ü·†Uçï-ÁÃi73)‚IF27¦øñsÓx¤ƒ:¤­ùqdAÃÙºXHzõÏlaV/Úõ·üDïû8š4&MÞ¬–ög¦V®1¡±Rü­¯„˜<éÍ8„Îí ì?Ðb¥ 6¸[êèZøŠ$ŸÛR ¨ÖvƒT-Á|âî0àV¿ ¿|Ð?Dµ£…7ê•Fê<Ǽ”i;zHèè­8Ùc,o“H_š‹³žK" oo%££&T€»ðT{ݱߎZ¼ï\Ù=øŽ`ì㬀:ŽÛzXÀî Ú ©›QDWn®*Ry£Ê£çW­^kDÑ!&™Ÿ§ÏÝp`|Oú*¾—W^¿k¸ˆWn\Ÿa^È0§AzÓk­@ñÚß66¢‹zOÈçË¢^ƒcb-!„zp$‰²Œö'he–÷WÅÁ}Êþ?'Ï˹Yp˜•2þ¡íÎü¸xþÌtÚÐßïD;9\”Äwè{d\’w¯ŒŒþª€*§VÒ•ä²³1Í }¥½÷¬FTîÂÑ/¿oôs€G‹Sú ÉþˆyI‚ˆzüÏÞxÄÙP¬OZãMŸAôÝ'FÚ·jf×zM†`7”U»˜µ‚ë*÷…0š†»@áW·ØòBÛßX€3Êo¹Ê•:c6˜‰Úø£÷R‘ôEÝÄ!Pÿܨ^F£θej]Ó¬¤!mð®=Ü¡ÙPàñ:4®ZIqõêvknåZUêûÓËšË]P$ÏT¶ËýÌØ%.‹þÔ3¡Óÿ‰8‰ƒå`®1ã!¡MxéRîíŠ ‰½š=ŸåN‹­ó#xPtâð#Ï&Tt·+i~®u“$Ž­zÝY(ê=ìÅÏ>T–q–ZÈ„›;ˆ[}ªp­ßa€~ô¿ Ë[pî‡ÖsŸ!c yÞ;àôÅ.e\éNhôéî]"óXˆRñ€‹‘’þ3å+w^Yë$àÍ­’÷a³a{›ÍÙcçFäSŽu1\ŽÁƒ,*ÛFD­ý6, ËeYÃÚÉ VOªñ~ÿ<‡Þ¹•5å0„Þ´Sc†YNr¹t¨E{óÖaœ°Šç,Å»:4 W ¿¦\…eXµÝ¿+ÆÖßWiæôÝ6çÇ :ÅŠ²ß£íÔ–ÁŒ‰tì˜ \1O|å³”åÄh”<“¢"­eøuÎ ß"¼¬¬k(Fî 9õ?ƒ?'y•Š‹xI“xCf&Ëó,»·èfö0ÆGû°Ã£¡^Ül‡5\_|‚*‰æõÑm 4ËIžÈd²3$)Éf˜ÕΦÔeÌžÁd<‰ùp3W¬KàNîmÊB˜‘' KÞ×<2†‘–§ÁxÓÑ3œJÜ‘j¦ôõþŠd-¢åOB$ìA9ÙáVtËÍÁ!- €¾/EJ}†ÐÏd¬[ÌyÚ{öÐÚH/ã8ÿqb³Žpí¦w?…àjù§¹Y¨Þ¨+?¯=Œ¡—ë²ôþÞˆ‡Fò›#¯N˜:îáznmy.!Ö‡¸ýA6q#Ïîà,Ænc+âžo +rCR²ß` +"h³ZSÏC×f'Öƒ|ë‰OÅJÑ¢Þ4qmպă0¼á×¹­‰ kÆFÅÏ›$y´çöýT÷ùÓJAê$碬¶e•’˜˜L||gBø|ÿ{Ý$·W“CÚ^UGè€!±ßÚ·‰¬ÐþZ/e‡ºj†³Î‰jž‡$,£:»©¼ê–CŒk¿)µÏ8SJc¸ ®¬ñãêŒzžÅÃëÓUM‘ùNðT§þû¬f»{¹·ÄK‰×ÏS‚?O~Ý¡8RÃR¾}Íó¦™Ô@‹“\aI:^·Àlââ†ÐyÛkH—@—¤Ý".,Ôÿ˜ÜyɉÌÀ†Ê©ûo!TïÚiâSPz8çC3öF.áÛÓJ¼·tÃà ^ ¾žâƒ3xv%¶£ ªn`ñ=Õ 7ˆ"¥^>hC2)+›qLvW¯ +g–ëZÏÙ­㦨̰ÀôÅBäƒ$é£@®Š‚ñvÉ…º&ÝvP²Š2o‹’ôát›8ã~v8ÙÍžc»d_MNö.¿lßÑvSÒÖ¥Û(ëﻺtÉW:HèëµàcÚ'l‰[“)ßUžä÷4–ýÒµ‹ G[^@Á^r\Åò‹¯ÑéLý:)®zpÌjm4ÕÝnx¡÷Ñ¢TúÙñ%²Y›Y¯COè…ĤșŠ ­b‚Øܤ!Ic=ô±¿Ä!Ä€ÎÉ?3¤—ÇÍZuv£ÞîàDI6ž!u±Ü¶ ÔM±?Çb5‰£zùp$EöÏìÜE¨Ùm{ƒ<燑 ˿ÆÔ摪‰œžoš¾.'W@/•|au‰û¨t’ ¯¸˜‰)muP#4ü«Ñ¹©Òß¬¤Á2ñðP|ˆZŸ9#^†.p×é40ïîôÊAÆ5&Íj|$mGô.1ˆ`Šò8Z@$9¨Õõ²Hà!Rá÷iŒ²Áƒ6©'ÎÎïÒ‰G¼»É1“tânkõnÌaÎô$¥Nb}*Ú@[œ´Ã“xB#Sí.ÿL?ôÀ˜öü¤'Ò¤S`©×‚vªŒz¹×Ö·#dº¯Øëf0Ì‹Káǯ—ʳc%ýÙñ¸ <á€dà!šl:ÀXKW0®m¦V—)-L%€½¦kRYMX Ùœ|,˜Àyž©.™B8ó¶ꄉï™çpî׊–Æ*ܾÛæô?ÞG.Q¡{åáQ&³;õ­ÕùÌ¿ 'öç!}·ˆƒî ¬ôo¹£/—܈í‚D-¯;)ø+lÊ”ÍÚ lT${Ñ‹zO‹Å”a¡NÚx¥¦¸R‹Ÿ+€G¤^»óá$:àÅÛ¿®ãÐå²Ñ‡ûj¶»}`˦zRÃa0› È—rmÆFbP¯4'ã#í´•š'0ç¨âô ™ ˆß¡š>Î:!C穤¯ýqG PjÑ]ŽÎ6yâROFË©éX¨m¶GºUß­tK®u‹GŽþ\»«Q8Öä«©:(vüIªe41“ù=ò9¡)’è`È™ÈxÂ|`ZÕxüŽ0«ÖϾöÉH©&û¹Éqáá å¾ü*@˜çp  7© Yy¦Bï͹xÝ¿¢™¶qß°Œ`ÁHšÂ»pÈÓHÇýÉj¶ÓÄX »DÕÿ±ÚÖ×µ`1’åéØE+yÿ88#¼‚Rõ}Å– •  û~ LÈ…"ðÿ¯´*¿nD<ÁNXºBŒØr%Çÿ(ýÍO¸˜ R ±¤ýd’úókðpEÖ+Úë€ÛHDòÆgæ$²MDí=?v(Í-Œ§¡±3¦‘¡=N½•­Ë÷rrËuH³aÒÎ ©¬!¨s¤¬»ä¾™Ww`'K´¢Ubúó“6‰¬Ò^ê*a%†~õ#ÂÖÏ'®(Q³ªp…AÄg8¡àÌÌ@@[k‹ÿ,2¢£ŽS“EôµkŽ>7 Ù¥\BŠîUIÓ¼£©”H0³L‡©.G³ ñ )œEæÛ<ŽžíMÝí ,£raá0‘ +]á¯XÊÃðmÑø?¥ FꛢcR9|=ÅZÍ•'ex‹WÃ4«-¼›rÃ×Å›o2•ÃkúƒÌ¸á[,÷þøÉœ)½1ᶪ¸Ÿ ³›¨ozqw‚÷¹¶à{]ü%ö ,pëˆÍç< ‰.>eë(ļydgÄQ‚£ý2=\bÙÉ8Z .xÙç««7­%M}ÈïÕ¯jÿãWvD ˜dçG¬¬…|D[ÜÕmh—ó|ø×çxðgúúàîjŽæ£»ùÁRLO+H©oâêå%ZF&Ÿ÷'ã`}ýŽ5+…DÝ÷×bm6›iæ¹Û>^­ÿWÂú¿5ÙðtÉŒm˜b°©‚ež†“D{ùýM§ë/µ‰ec@MÈH¸{q¸8‡B<ŽÀ•ïžB•hFÜ­ÓÔ÷½\‰÷éXµ„)ƃ1â…Ùªv‡(å£@—õßlä|÷Eä/ò9L{'\ðã}̳¦­=ßòõ|pI:ÿx8l¦ºsÛÔ>B¥ÇrÔÍ5)ٱģ Y—‡q¾]óÄ$&eT31ÚEŸÚ‘§ˆhÚñÈV+/YƤ(ã¨X¢–~E>¦¬š¦<&rïy|kVqÕ6Ò—í ¼uÍœ0éPÓÁÕ}g¼½ÄX´.ˆåHÒ.¢{aýl‰Ö[óNf4å0w kihxàŽ'…³œ¼_3bßÿ'QJC”z‰a â?¢]Ð$!:€‡ Žþ<ilì›­áÙxeøÂÙµ\KØ'{Ý.†‡¦¸Ô?ˆ>yK>鯊\Ñ +4~Ç9£Ÿ¿ðf+“² cUÝ$d¹íšïMejÏ¢jÃÅS]©6!W#u:$Ñ ÛN“ÆÔ•\Z?äžëoò‚[¶§oûÔöä½Ý‚AöŠ{ÊßË=$v>–òÃ…¹ùÃN‚ð.¸È¿Ÿ˜ÿß<.­ Õ­—å\¬ +åcVOÁìðåÈðš& üçÀ@ÑuKÀ‚·\ß•fšA•[,¼fp˜–ÖŸJìÒ~J%÷e¼µyTÄËZšBÆÏn Ø ly4D¥¢"ôš»#¼aï;³=Ä\d¤Qü§PsJo§]»„’yHN‰Le(“3Fªszˆ©É, ±K²Øz£•ïnŠj–pSäë—´€(^8Æ.þø–ox6®FWÌÉ Tú^|ÈܦBÏ天Jª¡SÐõõë<¼­èË +YXux›Ï—‹,#8 +4’ø~FšJ |Y&Ñ°låç iòB€EÍ`ž#Î7yb•·B O€»O÷y¶¤e²V²Ä;'âŽ%ãN6HDð¿¾PB`‰ìpq?QqLƒ\œ•Ö-€‰ä®{Fó;:‡=3󣬦‡û³ô*w»Ö‚;°‡í®ùZRE— &*TUrüÙöM**=`D“±ÂMYâ¦õ…XÊ'N@qxäæ¥?ê”Eûá*˜Ô›‰]¬yʃ?Üçv¬ŠõÓ©ÞˆÇÖ¸B7XmÔš)U¦tÆ Wtç~ÒNbõ¨]ËL¯•¾‚Ϫdà!ËSì2 +­lìÐdüõ¹Š ýóÞÈ­I3òš:ORB>¢EVp;'vnNŽ>6ùØK‹\qàëñ_4ýÙ»N’U–þMÚ“lÆ%¡[.ªê_1ؘ—‘%Ò¬4ŽÊH±Ñjw¤yeŸvhºD¶j„c®0…]8ªÐuɯü`b¬Žû9£ÅMÇ&Õ¯Š±}Ñ :ª~¼z¬é®•Ÿ{Âî#É£yý©÷¿¨Þ,ZíQ‰I>š`ÄÕ>ëD 6.V¿S³o0†ìr:x¡kÿ£°•|4ŠÎ¢G´ÊY +]wcÞ©u]k„ Áv©ôV—î‡úW¹ÍíÎ[åìò=°Oétw*"$ü;Êw–ß{Œ©´ÿŸçpK†é€–#ó㣮55RÆÖÒ¼ º·Ú–ž’™ó[&Þç>6 ¢F¦´#˜‰_•ÕöŒê -‹æÜÔž{b=i7fÞÞ‡5Öz®“ÃÔ˜§Ó¤- óy#tbci4Ýñ0-Î^èTH¥ÃÏYm}€%x¦¶ÙͺhŒ0A±:]øÄéT¶9[‡þXe7¢Jð„çTMŠvIB¬ÎÐ:w…؉5Júàþ€@¦À7à ¹`p»¢º„upÝ&œê9adœ ÏS(…¤•™ +œb1¡%™,hh2ÚzQ+$2%l@izɚϓ­g%sAâ8¯óÆM)¸Õ= §A‚þâ8ËÜT:XJâ+·;GýÑ5t‰…oå D+ëŠwù)Šu;C`øÞ~ºL%ƒ—Ím§bG T\æ¸ÜJŒ~7‘atðê© Ÿ„@ƒÏ•œ›œÇy‡½—š™qe™~Á-n‹ÜÒ?¬®%ÞÖéütÞñ*¯ã7š®†b{¡‚e(ƒ—‰¸äzaX ,Û[²‡®m¥×Y˜!»ªd ]’7ŽÚµiÃG^‚‡àQvĽž@Zÿã:¥3ú&Á*@šñ~nò1ìzÁ• A¸±Þ2>­¬GûÔ‘bl§q⶜åÊ«ªÓ§vvI™m²joX†¤6%Ʀw£}]ô>àþ6Þ_'¯VŒÁô,Û5ߨyO‘ÓTTÄ-æÿø¬†ƒÝbírq&ò6Ç]&…òý3N&`<vØÓ¼êì’XÕ«G“Ä M}Bg"Mu|ìõQ­ô³DÆ’dÌü.ŸE’b®±=“èD$h‘&Ÿ0þÖkÙ)‘Š)Pw†¦ÑdÂ:6›ûp¢ +J.Èã>rW•úrìi8(±ˆ¸¸P›š||”ŽnnJ mTpB”G‹LfJNŸ¡Uø®ÅBé„-yɘ—JÕ™Y~_§¬Ìã²Ð£”f€ßòá s›ÄÅlE'Þ‹1àõSþC†:T·ìFÁ Ç÷‘RÞÙW :py†¹s³ÍœZ[å‹YÀ ¸@==g~6ëˆôRõa“ÉÖÓW*ªÅZ@[ðô‚nid¡³É²Ø(D£šÿ_æ†UàÃv<Åøîaÿ$]á1êf° I“à©”L ´q‰¢°ÐD Ë„FߋПś•GB½²t+( +ï•ûI-_ï‘>xb!òijHèÞ¿9M’`챓öOîóœòßôž:š%Ig8ê:!zPÀ›QK~IÎf¡¶¹ rq›5It{²éãþ¼â‡“ÄD©‰†ž¸JHSuN‹Çf.>À›ÒíS©²Òv.P6)ÈÞø*CÖOFŒs¢N¢c|€ï É‘ÅÝÅqü³‹j‹i{‰tÎqÆY…¼0dbè­YÜãÿÇü–3BšÉYÜô%P"?6 +¾û}FrĘOð-Øe流Pz˜Aþ;,ÍÛdòÆ-†$áü¥Kµwô´Ò2¨ºj +eX¡è\kE*ÿ2(P†_?f Yä÷Æõž=ü}LO¯UáQßï‹Gä] J×ÒÊñwP—5zBuÜ9C$9<Ÿ–Šü3Úsu´ð´Òª-K°æ¦–Ô¢Ií×ó¶võ#Er¡q (àYܽ6Œ^!b’4˜„Þ.UÿòÖ×1Ä}`H‡ö½‚ͨžò=œ£þ:C…ëþyI¸CÕÜôœ³ÈÝ oXÛ¹›r"CPÉ]r¢vw2òž+6èÏÉ2¯-Ú(Ö1ÅY»Ìô(_ÔíùÃ2³Qiµà:m\5ëp = î‘YU&…xZòù^£°ˆªP²æãþQ‡Þ$ÝEèTÆd®S=”PºÛ†Lþ½|æÅïWké…¬xaÝW|œe×VÇSlaòU| …4ÐÊ’äT~ìïBÚxlb4û˜Û†˜ò”·Ú%+K«ï,aY3à$rçPq×ùÅ/æU2Û&p,Ü‚òÐÆç ðP€øz›`IMô ó”” N=Æ"(¡wÿ¾qŸmÒôBHÞf¶êÜÊj ÷+h²ÈM´A`¨+zx¶m×0% hRZ³œ‘Ö¡4A”Š¢ùÖ HÙ0`BžÜb=Ð,2=pd”M‰ë.l 0/¦àmµÆ‰ÛãsºŒœ ?ólˆª©½X_5aüX²X ƒÜbi«jMõq‰¤JWïügÏäß`£K°óÔoä/˜[Ï=”“­Ì³q}bÝG`ÚMÝ^°—³o¾¬©gLxê~!ÛqWS¡ÉñÍÆ7rÂú(‡Ro= +½((›F5‘|l.2@ÈgP#€'¹¸á)ã“—Yš­NåS“žîaïK7–öòWŸß}&gÅ +9ÐÆÎiîÞ% ÅŒ›5¶°"r2æþäaKÞ ù¨GI ‚î.ÚZ󆛾ßØ!cl§¿yµ¸À’^ȹp( >¬b …´ÀÆ7î)uv–Ãñ5©‰Õj*³Ä΃n™Þó*RPvZKI@.w»h!®9>xq<½QÈ©ÞáYkh£ÚÜþ _‡ûœScßjÞî©+±LkÅ)–6„ÜYåá?nWS yTHÄ& MÈ«*²=$OÛíà˜a5ê™™h¦Æ_¯¨@ô£“Ù¿Û›åÒM6îëC)¸Ú³SÉ"C.’9J•m© ,v"³e]*Õ×*X6ÊDŽžøù?®Û˜ÛÇþ¦ü L†ò˜M£¬D =¡Rnó]Y»—I€øÐG‰5ÅwªÎ&âU½Ÿ}9ôŽåØotÏéä<Âd2õ²=ˆë6¼.išìâŽo+87Î’»d<‡Ý”Ê+±…¼Ó|x ÷ž¯ «­~9oËÀZ mÅBûS-£k9àÄ•iºý¾d,–4p~AÚW+&T{¤t&+åÎ}(ç+ž”zÕ“´‹=Ð] +„¾oìæ +ÀÜéŒyãà5EÃÙX’UxR ðÂ]é¯Éò׃ ƒ°¸Ü§gl{ßâ4Å]ÓúŽkØ·™ShÍÐN⻦1¦\Ã(“TÑCÍžÜÑr8‘Ø´½Ç˳bíeqç¾1F…¡¶Êƈä]e;ÂŽ.{ñ:Êk;µNXrlè0Ž­y¦ù“š)³œÖ»$¦?ŠÓá»ì +bñøjù²¥³â¨ç­‰0ÉwzЫËtSK‰e«‡’{µì¡š·é9GB'süKb×f²WÛ.IG÷PP‹vßD0Ÿ=›¡mQÿîðKzõó‹!šÌ—Cãè€auLªcå&˜ +o•Á\tÚÆä(s% üDÜÊu/W€mpê» 5‡u„ŽŒ±¥ï_)CÚ¦'Ü‚ÇÏVé“rzË9ÈÕÇ ×ÁªáECápÑCyN/ãk¥¿éìˆç€ú•‡ÝÖ`9üßÎø»C‚1SæÂ=11!£ÇÆçš~Ęۺ‹4“ŸeãDù_‹(¾'Ëbß"* þ³‘¡x£Z%ˆ>ߊx¨a.]?a}°˜¸‰ŸË3Ø\”W2ë¹À·ŸhYÒçŸKOµ¸Ý$A‡U³@¶VÙä™d×ÁXV?ù¼À´Â­ãتI)4^NŪÂ×f¶pÚq+”s–Î&s}6ÿ1{H‚NC¢1&˜=~ ¡aÑĬ…ÁŠZ®é·$ð?1†]wô×OzR–?î~ f€X"Ëû2¨O«¼‰Õ/¹ê¡É•·Ñ ð÷;ƒÈ„>š0¹;n`ð!§ÒZæ?g¹±À.ÉhQ³³TºiÀ'Y.!í¤O$8²…·,ÈètßÞ,~õ³ÅB(ë¤ÒßT=š_ò5½Ý_$”œë‰©9Èk*çh¿osØãÈQÜ?1aLZ³õáŸ:9ìCæ‘ ÖN«çÃÆ+S8VöWWE^ŽH¦;ˆ†¾&R‚^ˆoJø¸‹¼ÙèssËnZ¢ãx˜e—mqâ-|2Ýj%AÈNݯg“ÚÝU©$…‚QC³êhk5ð-Ê¿R²l°mg®³Ç¡Ã½ß”ÌM¶Â.ÍõºH +èËÓ~©žaÌËÌ 91/#MMSÖL_A0§’Iöt_P–?Ž+4‰§å§lĦöú½:ΊÜE83ÎÑ$OÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:ukYµÐÊø¯âü÷ö×'´û?› +ågšª¬È« „Ë»)žÓQÍÌý2(|?òÀ¸#t+•Gº—²°â>šà›ßŽ«;0ÍO“0Nž µ]ÔØIt8³ªçú—CÝ 5üÛ¢¾ KtúA8ñ«|ºÕC?2à°‡¶˜ÊIâD¨§L‹9¦Ú8üøž¢¼üT»a-Û\¢–~E>¦¬š¦<&rïy|kVq×’z™Œ‹Žû©ök¾Î¡73{0rÄ‹v +¨á̆1ÜëÃ݃ԑ,oóZѨ!¶¾ËÍA*}j“¥|9â¿ +šé °/_Lz­F?òïò þÆ”..›ù£ZÐ +öO1PZ®ÉÓŒ$|!ð}ãLPþI÷Zê°8½0ëvA +ôT.rçdH¶Î*«%­¶¶²¯õ )I»Z½c„qï€C°-¥)—Ô:Úõ©A$«YÅ‚¶¶gn6gö¿a¿XO×ór)îÆRa,á¹tÊ{â@S jÊ"ZéEUåµY¿ g7ѳ钅»çlöó‚kævª9ùíKÎ5×pŸu#ä” ¥.˜>¿ÍDr”±ùnÔ¬[¯{ˆlÙõOïï›T +™¶hØÓη¿ëÞ +d}bJDZîÀ.ÿÔ~X] +ÝìO•Ã­g»A'X·Mt˜Äïå™Rh¯1ØQûJ"¨…(#‚ûTâ1z»aÙò‚g}ÐÙ£Ãx3kt¯‹™1¾ÀÄÏ‹Hu˜5ëbTþáR¸÷‰ú™ö´ñ•P£7äUÜ¿¯Ì„Ñë°«g+ÔZ„â’N䀣Š}Ë¿aíwiõÝ#aË“@ÅxíÛ^ +!ŒybT˜¯Ý¤Ròª<÷Ì("©ñ "kk5tf6H‚†*“ô6°µNáÎ2º’n4¨øÃ|£ŠAšÿ÷ßpe™+MVvEîM/Â1cJ6™†tøÍaSØ7À˜4"`Áœ~À8SÎ^¤Û¦r‰FÁ5¿§Z›d,)™ÏBN;ï­SA¨à¡›ër¼Ítê"æ@7ZœªREf}|•òÊ•™9 jÅ ÜÆÚG^$EÔg&¦ÔQ‹øQ ©òCaêLˆs1…âü[Ór ¯{.¿¸ØÐ5©êÔƉÑÅT¼s!†… >l:«–,¹áj$Í´óõpã±í„Bjø[66Ì࢓ù—J 7 ï4Kn‚:±Ô ²:ŒE[æïG¸å³¢™:µÐõ§Ü;㸅™›øÚ‡3R€·ÀÆrC²žXɸfVÅñȹŽ"PA:U4ø±Ä:‡7Ñ×0^sÒ£˜B—»QŠ‡DE2vœÞš–…obPÖ%þsÂÚ82 £q¥dÍÄàoTO Uö +ÍJ_ +¢yÆIa‹âÙ±á ì© fðŽívF±ò¹w“~p·!@i `Ù‡ÕïC' +_€£’yÅúÝb­ªE®ÖÛÎÆs¶»8ɯY” «V€¢n/`–>Œ³ñVÅ$á\~]ЄÙÃý²$Š­X=K>Ö¾.ð!‚)|Rb¬ªW‹ýƒØž`°½àd8ÎN.:ÈŸ–-"Ñôñ »Ë1‚^?ê;çQÝ8WbI¦‰I”¦ÿ@ì ïCÏäÀ\€Ãâ¹I¹=ÑJÄ +NB&õìÓÚêË&ê^ÉQÂ<ìT«îÉÐ"#H8ÐjJ"D“òò¡°Ñ?Ý÷æG®(² ½ž3^E¯4†à`v‹¥ê"‘SHÔ¸5ÿÐs(VVr¯äÒ`³ÅËÍÒâÁׂ"~‘eµ62p» tõ+”›A}»•ëÜp´3·A1µÉ5× éÞu@zéJÄ);Š}Y^ãùÇé°×‰î؇ôÇåâ`„XÈJ˼ñT*¤­sÔÝek\.ºM‚N{ƒ>ˆÐŸ"‘ú¦þŒLÍW§¨Éõ“â 7:œQÒÅû¥/ÙlVˆlzgRˆ!Œ¤‹Æˆû)œë0¨©•Ÿ7L&‘ÍTp-ò•’ë}4Á°<6¨PæÒò¾¾9#šÛG½+ †·P!n±ÓÙHå_àüFJ ->÷·÷dÂcM s x!…›±‘Õ3˜¢ma S®jZ˜›ÒëO!ËçuA£™F,– CS@#ÝÒZZÝ"À1¢&ˆ¾@ÑËüNÿßuá|¥šWº;r “Ð.>˜ª_ò2šÆAwVªØ š*2èô¯–’qÿRÙ¹žÿn*Ãh•À$”ñÑçýÐ2©9t-µ`As$àÇƨ>^£„tÆš:±Á)ñ+µK>¬œ3%ýô+븜œƸØØP þKø ˆ²Ùy/hû¹§–­ Bÿ‰¬„: @†Îø[$~j¥Œ{:eÙ E˜Þmòªß~@È“ÙBÁE Lü֥ƟïÂ[`äRp.,©QK„Ügj.Þ¶¯¯ôé'ÌцúÝ}z¿‘äyS~…BÅ™Ôæºdøý¾4„êÌ(º“5¥“da’<̓Ê’”3áòPLÜñ'E5šãâWàÕ¤ñù®ŽÆ[q‚½H­1EûjU[Ç&cœ~ý98U:ê¶Æý °â›ûâ5b5-c° æNW@$#¿ZTe¿BÉõÝE;88YÔ ›ÝæRJx7&4 Ÿ"ñn@J6—Ãhäàš![ä‰õâ%Å컿Ë}^Ü÷ßßG¹}‰ÜîG* ]…¶Ûe_dÙ#Ü°3Q–ÄõQw (Çüz3ö-?ä¦=Ið+oûÔãr³¸^Á¶µ9“&̯Núç ʪ´ÿÑ„ÿËîEÒˆ»Ž:²¨0â©t„8þòCx:1›/ÿfO¼á§°eÇÇzŠçöjꮕR¥ö)ÌÅš„ÝåÕÿ™]ëU  SÖ$}zÈ£îoþˆLúH5âÐaà†Ò{AÉQn°ZŽ¨¥½1âýJOǨû"³ÓA½´gð›úÓ^NUo¿ÁtӕйD* Ê TîJá_&§0Jš—°ä—úÜ¢ž¡1Ô‚™ ¶L dÒÑ=wsö­ñ$_àq—™¬1¨»NWrŒÊÞ n ©Íçeæ€GKŸ—“uñÚÖØ1БÀȯ¨ý\@û"„/æF¢Ÿ7|>ÐáR5³²Ä34A—tg 5&†v|§Q@3z Õs9\ËnÏy¤vÇŒŽÁDÞ_”ûºÃæßv¢jŠˆÄ`Fuês„ó9ŽI@Jüá›C]? ‡8¶ê<^A£ææêçf];ÑŒ§[LÀb*µJâ„ïAÿ.\”\=PPxesQŽ‰0û•ˆ3 xc1pŠðØ‚9#Φøzž4%÷A.’ %O -¼Iˆhke¸ÏÌ!÷yâËì¦Âçà¦ýÀÑZi¹›6Bò°T%=÷êñNÔÞ[ˆO§¯?\é¸m¹ùÁˆÿœ;§:Š…ˆz{':`Õe¤ϽgÌ|gu¡·¶¾ª|ù/Ü47\A ûŠÆɆeÍ~ø€ù’)ªÙ˜È‚¹URÅ!QƒåûQ`[ªyHÖå|×à0*?’:ìy/4Å©îJ(ƒ„ž|Ï5^O,MoU]¬šmÂcö=UÖBL^FÃР: +´ØË)Í#>Þƒ¦Ã £1„Ö”‚õuω®ô'Ènþ¦úNUûÍ]€´±%½+Œ?ov ‚E¡­ŸPŽ0BkCî÷UDëv•%ú}€´§Ø §lã û¥ ëâ¾(ýŽmåX"DH'Gs… ùðÍp'@ïÁ;mûÃÒ…¤™2ò\ ÆS7?.9R’¶^ue¬Zð&ïDsŒb»¢Æ­1 ÔKŸÓéèϼ0 +Ú€¼3…nÒ›š´1”Ÿÿ] ïÊÎgÝ‚Ñ¡Ò—Ñ—>a%ÿ€^ÓŒvõµñZÝ%óø¥3\7!o¿Ë{á%Uƒx.…b 8€£ÁŽÄP=?U£7DtñÔ¾rqüôN×çˆíÐC,—·Ï{¯˜3ÍJ™rºê£¬üæ qâùã­°pS:q‹òYº Òá“‚Ìßû%æo·d½ sýÌ{oôÜHÞ„z¤È¥béH\$è›ø |Ú÷Ù9ü}RCú¿|«ÑnBÆ +3ÀãC»D™aó 4Ñ“1wåêÚŠñv‘¯ãÊ{XoŒBjqߨÎÛãß|>²‹A’x$Ô÷Œ9ðDíjð<¤E“þoÆþéŽkųÅ’±Æm1JšJýèz²î]¯@3ð9Æ!M(‚ú•Dƒ˜ŸKójrMAHI¶=AŸKE»‡'ÌR\]•y-¦¿n «UüþŽ²ÖÏk¹5 WÙôÏÜLþøÒ°Ê.({í“ß×Í°ÀÔç¤`û!e0ª†Á 4mŸË,¢x+A…xb.j3Ëy¶tn…nÙTãªÙúA–bÙZWš¾Vfz›uÈKs²ÉõÝE;88YÔ ›ÝæRK9ü=ÛÎ@`hKðbCëI¼F‚[ƒ¡)šÀ¹i­Ò^¿wÛÃø£‹ÀbU:ÚÈuªVW ä¥X« ©0W—2èfm_hy…פœ~éÐH¾¬ +Ì¥-úøYÁ.ùëšÕ„“ZXgivÝÒ¶áý@–ýÊÅ› * §e/í±C‘ >4‘uˆ”¡lSPG‘0¶\ñ@QM}ë©›ñ“Ðb-£Ö%SËž³§GJï|wïý »‹³KQÉ´®z62j[K]²mÕ¶Êö>¶wÂY›ª&–Ýð 'Ùáª-œ‰ ñ¼ü˜ðð58ZI¥ÉÙ ö.6ô± }l1TêÉî$Ü_Ùßßñ¥¾ÎÇÐUªØÈ\a–Ü(lôÄ£º¯ÁËs IN*·wõ˜*öýT¸Ác“˜³Ò¬$À5f]ÙŽ&`l±£¨Åz‚KMP¹ë óÐJ;”i˜‚m“%צ‹ U6åVî!}îuˆNô¹ÀbΣqÄ|Р±4*±ØÍqLJMIÙt± oj^¢ð2 6¯%K:ï:»lå'›úO=»§Õ FN?)z,Â>´—St:™„ï6%M`w*íÊ€ #FšçêoÁÀ+_Ä®øÑ6IÂPGÕ£|Æ™™L§”# +UeêH‚Mž¬ ³Ž;þpn§[ÿ¤¤³QÌt¬¸²³ H(R¦‡‘ÚÿY™¨ ¢jF”@ÇZK¨nK)Kú×%ðÁ»ki'üÔÚ"•$ §ƒØ4¶îÌwÑc„~cÓɪA-T»ì-ݾ®I?íÓûîfgí¦¯$Ïî+˜óÛfD†Så6£Ø“†áCQR6¯êÔÏ6¦ä«V~Aþ¯ª_9&š¾šœÈˆi5ý÷²£±|dV¨oùÇ+Y«û©ê‹Ìdo97$!_S_é‘’†öWLŠwE¹«§Ùøû¢)¸uL“•˜•(~Éçt—3Œã ­áÅ¿íH60¿·1e)f{Û+y¦É{T¸¿è*m?è”æSa% R/Ź¹€×[6Îñò;•Œ%û‚Z\ýÙ¬ˆ<ÐzžÌg^j ¾Í¯óÝЪ«¨¶¾a ÏûÞŒÂE8Ñ"ÇS2Xh÷ßÒ“=_  »E«_vI°2sEÛÕPôÓ¨_ë àŸ@‹o°@€óÞˆÃej}•Zèž ¬”nü-¬¢sÆ®ù¥åðFtî:&jþ-é‡qÚ¦ÈhtsÀFq g”ÖêÑpŠîCñ o÷Û­8Єl%YvZ£{¡ÑÂÙûní0 +^©D0yK¯xYUŒyŒpÈx¢9*„ !^µsÇx[…ñ¶vxØãÈQÜ?1aLZ³õáŸ:9á«56{MØvrv_ÛÀ&àDª’N[ÁÜáú$9󯘛Ù˳¾ð‚eó×gñR!iæ L¿Xnf'µ–‹[ÆÀ׃¦ÈžÔºÀÅ ÝïRñ!™n$ƒéÄò#< @ö¯†¾—øÚ¨2n±¢´Q/j µæ$;(þhP3ÇáØ-Õ(ÍØÅ 3às!H­6=@üuë?”ýó§0u|˜!í5©H€܃L?%ZN:ÙžND‡œ•F§ÇºÞ+Yµº·Æ"ùt£×âžjÿ¤4·wÚqt(*µ]z–óî Ðþü‡Íä{„Øôò×ñu£è‚Áö¶à $¶Á.YÿÿqÛD²€G•£ßô<½$ðÄe{Óp*„ê7U–‚óÓ1v|ê/¸JZÌIOÉ Y!Ó·ì±öAk2WT<ËûUŽù—A‚•ëÇŠÔ@j ³ÖÁÆC* ´\4lCµó%—»ŒÒ¿cÚÚežqñÑеé$ÎoÑ}1ô‡¡øgܤ~önƒ+¶5-ÛuBlÏ<_YªµbXjr3F³ÖñßL0F*)WPg…¸ ­QeoرlHoÑI_–B`mæ]˜zñ ¹cŽ,àn›z;’Eñ;\¡Ñi>0ó$j5Íg¿„¡û©û¾$‹^æ.Hc =`h)e$¹¤—Ÿ¦ÿbE<]`QË&ôŸÎ‘SØc°WV`´ [u‰(³lå»J;Þù Ïó€åwþ´ÆŠD‚Lç,i©+G¦]1 „)ƒ „ßž Ï0‡{à g$*'|gùcjNí ¢ø7¹;Ñ%¯ìµß´±d=¤Ü4¡{cŒgÔzéæâlÁ'à'·ÖÝH3LY,k$ 1Ä~ÞÔ…§¶jOf;`§|^1j*=¥Ý•iÒ_˜›¨$¶‚³õnHͽæò%us1ÀXÚ8‚5^³¨¹ü¹©„R§6¤•>ÀmIeí¦r“îE„ú —ãÅ< ¤@¼­'[Õ}祠Ÿ˜Ô¥ØãIƒ/4>æ(«Ô„:ëo¤Ý”+L§òK  9'ìQܬµ$±bŒ0Øff4{lS²›„GõþˆZ‘od½Gû9Jᚤ¸y2—Њw³Ø=Lã£Òw|G¿¿q| endstream endobj -2241 0 obj +2247 0 obj << -/Length1 2589 -/Length2 18452 +/Length1 2854 +/Length2 29958 /Length3 0 -/Length 21041 ->> -stream -%!PS-AdobeFont-1.0: CMTT10 003.002 -%%Title: CMTT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. +/Length 32812 +>> +stream +%!PS-AdobeFont-1.0: LMMono10-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 %%EndComments -FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup -/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/LMMono10-Regular known{/LMMono10-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /QGKXNM+CMTT10 def -/FontBBox {-4 -233 537 696 }readonly def -/PaintType 0 def +17 dict begin /FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono10-Regular)readonly def +/FamilyName(LMMono10)readonly def +/Weight(Normal)readonly def /isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def +/ItalicAngle 0 def +/UnderlinePosition -167 def +/UnderlineThickness 69 def end readonly def +/FontName /XKYJEW+LMMono10-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put @@ -32275,7 +32303,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 13 /quotesingle put +dup 39 /quotesingle put dup 114 /r put dup 115 /s put dup 54 /six put @@ -32292,128 +32320,186 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-451 -316 731 1016}readonly def currentdict end currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» -ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ -}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¦Œß=מ0).ßÌÅ|Ë¿!í:[LI0lrÙ9GÌ$}»³/Xà œåS`p*²pë×+fwwFG¢O¸¦Ä^æȇ ÷ˆr+dMvNy{æáÙõYëõKëí²Ï[zÊ[fâ -âÜ·BÝDý‡q}Môæ8À|¤j›©$±{ÃjÏìpÓxæxS½Æ«Eîu -¤•™¤š¶7%É‘õ±4\ ¯9»b \Á)[ÉÚFUÛ.qñæþ4í¡ÌZ˜8Kûzwwµyl”ϦI5b·jc‘íZ¬™Š,“7Ÿ¤ÖɪK±:ø#@JÛd®@Ñ»FìÍM‡ç÷Á_ª¡ûd#g+²úë=·è>ëŠÔZ‡a¸·—WŠNõŠH5Y/ÚãìÜ .rå¬pf{0DÀ|6@«çŸé;]ê/¯¾h|ÏÐ.ø§RAÞÉ°KÔmœlö^Ü&WÜ€‹ÝÇ{·¢ðýmFÄÝï«´—¿ÚÕ™É3FK~I†¥7@T7AÜMûOPŠ.;ŽÝŒHÊ+i†X±ž;}²’øžæjÅYXõE×u«¼£5Ç»pÛBI¼¦á¡ŠS ü© 7pQ½40cH™ÔÕ4ðu[ì wY½Ã–šžå2¼[tÐÒÉÊ–Ú£Œ´œ?hô™Š¸bœáþ*Ù$€ -dÆ¥`Š$ P… …›‰:"‚ ñ©)Ž©|UÑïÆ©ëŒfù«Dµ¤tøÔd—§ =¬›œ5Íó¼+¶¤îj7Á%ëi@ÿ—âÈ)шËT/ÐqˆUÜÐFé±÷¹1”tEÏ‚Ò·Ý¢@ Ñ¢€1ã²F^R?–-•ò¦q„^œ!ûŒ*1gw÷ç2À¡4/¦ Ÿ¸3¿@«â\°7zÛazêÑ1é)‰·.à™ðó‹Ex‚Y'ºÈª÷ê5ˆFc=nj¾2â½ÕÖcèw1 üøÌè3€bŸI]‡œŠÁy¸²:ŽÌä fÖ¡©Üê‹“åêñ¦û¨fgì%¿p¡ûÑ^`´(•­Ó'm™ú K'KâÓ '>ŸœEàPN,:Mè{ŠS3G2R@6\Ÿà?-ðÕ^X'€ÛèõF.qh˜Ã÷YŸòûl‚aª¨wÌÙN®Upͧ`­­ôâšM9±ä_JgÒbw!◠̼sÄÊTÒ”­DÀb‚É:Wq!]iÆ¡w»“`ÿ褩Œ'åÂ`àh^ TTI«nH‰el䶢½Í’òŽ÷à`ÝöÖ㘀ö×Ý '¨pˆß(=«Y1¹æö«‰ U¿Ñ¬¨/ìOúT -%`&ì{„(KÅ:.CìiÍK9¢¿xHÅ-vâEüÔ4x_5ˆå ÙºüŠšÄ,ôž§dâl5'bËbÝq,–Hö. O“°è8Åá NNn÷ZÄGòquͷDZÖM”¾ôÁgûéÔd/.oí~*Ľ–ẾÊ¿epø˵ -1î²}o€Kì(–ï{AÐsMã`?  žµË}|òœ¨^ÒÚ§(ûÚ1¿vŸMXüØAj!Vóƒk5=êÆ&›Y¡ìiÙwó†Ë|¨†vC¯‹PezãF±Þé`FƒâJO!À«þzÆ¡ÇãE.)8£Aœt`+—ÎoêÙê”®­ €ƒz`æ!|þ­a*®ÍdçU ).tIhq‘×þˆ*0 q±€¯>ç„NÇU Å3ÆÈà7Ä€9Ot¶[3|ð5r0ó¹pÆØþûØ8ß•W˜qDLŽ¼Ž{Üí`²“Èdw”|ׄ GJÿz/·œèH'¾Z$„‰Ù™ØMΤ8¤àŽÆZ̈Ž¤<7ß{¯LpÞÃ÷V)%áèkÊÜ3ƒ„ì™To¤üCn}4>·ZÿrÈ°{»rÁUZÿ9EªŸÖÔG®áu‘49Ú>à`oq¾Í/‚¤á~éxâ–S…|œf9׬?ÀXñ.uÈBxfGbEü.wW;û…™o,À ¥BLkkKµ{9fggü,lé|«&¼€ÒMÈa*£Ô$ö‰¿v#ܶ>ì7UìcéÍö«'·‡n¸NЙÎ1Œšç¦WÞÆ«þ¨ÙÿVÜ ©˜Nu+9ÿÚ47‹yG(ÑÂþßß ¨ ÂÀŠ"­zÊâoOÂ_”|¬cZþzB¤æƒ@·Z€Aݾùà@a£ex–åb?ç>"ΕÿÉYÀ…ïîœÖ‰éT¦gB´lÙ9UýFêJ¯?"[p] ÚÊpÎhŒØÁ ÎÀ’¨ñ†U8€ÏÕ“z¡çÞ¾L†?³€ú“ü:K‹;®õú¡Wÿ%ÌX”„õ$؇:bÉ9pã´F^dšBÎÖJR(6[-T*í4!œÑyY`'Mµý( ­¯íÊM«PA#Æf‘€T"fŒ"?e÷—þX§&’R¾ÄEÇë ]¨2L€ê†Ä6 ñ?h)8&Ì/Bafƒö–“!º0ˆµðt·M<Å‹X0z½1ß$6$·}ûW<ß1jåiâ76çý$¾4±e°´³ ç©Lå,vΡTuQèo¹:Ýò=ñ}µE´Ë¨(ãSÊËÍ0.“¿¯Ž1Þ) dû‹ƒ#óÊIÍ;»€P]½Éµñ¹R¿þ•ü蕺I,”"È?›“öãbBŸÏÎÈü×8|ÜÛGÏžÞÝï\;ºH -nÆác2ˆß¯xXΠ1!?:àá¹–åt#Ãà?%¹Ñ÷•g„ŠS¿e[zšŸeÍ…} Êßh)—úDì j-ú…„ÄìO„6võzu¤@bƒ ‹Å ix´cÆÝ`rÛ&rÀç IìêÚ¹_> 1SêSdôåY$î…`)¤Â­õÑÄ×:Šî¿•] øR]ÐFI®Tkxð›jgbžH“d.(: -Áâï«œ.ŒÐ—%¤pq¿ªô>¬>^ézx,Ú{^’Íc]r›â6o®·†µ¹õ¡ÈÞ¬tH“TÜCýÏ× •O;Ðqâ]8ù$y¸·BˆoLr €{=fÀ¶¬$' FøÅ}*õƒ%ù*‹úªútds¢›CNzc¶»š§û‚5G~Íظže ê2‹Ôd«Šã]bsz'¿È:åÏaWA´ª™>4+ -ý¦5uß=JTòú­“Hˆ8¨Yá·n¸ÐÏ{ü±-¼øúžtÿÒ}Püì”tÄ¢§Jx³•8×ÈÓRÛá.\{Ê`uÝÿ[ˆµ§ô%é¹3Áˆü…7Â\Õrn‚†NJµêþ‹Ïò™ý F­k¬² ³ò¾Oj¿—½®ßÚæ+´WeÕÐs©MÕV—‹)ªø˜–óÁàªJñYVñË›8´ìÀ1Áýd#JL1?M´È?"Å›b§ÌQÁï¾¹fc·ÐÓŸr´½¯ ar¼4דÕ@ùd¾ª—Á”çv¯5³꺜5eÄDfR+·c=Piÿs«ÛX‘8þšÔÐmm‹€šÛ;E­¯LêÄ]œH|­S“°±‡· #õÈ¿¿§ðøË´§åç°À»Æªlçõ²ù™ã È÷¨ò„S6ùŠæðe¤îÁ¿!3€BYTg˜Ú±}T¡Ta˜Îˆ‚ˆŸ«Ïf›ÔgŸ¦»ÔþðX¦_+t”1¡2)AÖ{ߨøïãcƒ×° ‘«¨zP*QË©—S×Råd*çlNíØbjɇ©w½u_ŧ0ß3¥_¿mÃ=/èßQñô³ufô⢠-ñ'I N¢»â?Éqjªñ™) -ÊŽëšÓ²+ž¶¡AÇÑÐr¢â»©6&HДC9Ömr|Ã7r²óGù%:‡òJrþ¶<Þ(«gG^ÂÄ´³~¯xPé^€KâÞÔÁàYúY…DË“"ø¸”$?f·7—Úšß}¹’XËäoèˆç3üœ'â+T…e|7õ~Ÿxø9F¾’ÖÊ“ •u -Ìiãh -9Nt’…9‚»uicæsÍäJ€w -cZ|¶Á$CÈ[ÑiŠ×eðƒ Ò"÷û²à¾Æ;3|A‘zFáY4öWØSHʘJ᧞é)~ÿ%œ§b[¿O?ÃñÅ;ŸRw‡ß¹ÇE­5£?"žWå|€;Õ®I6î”X'\dŠèKùôs}2Œ{QA)wJêtXàŽi3uŒR3T›q5‘b|~ëú’<é2ûÀ7bA}…Ÿ™¥LXÔO6çû/'`:ÏÔñ½´¿´‘¨ºñ8gŒI$õG,•ÿÌM`y}GꦜÊ?)c’ÜÞó–šÿ7áK !8BʽŽlÉ.Ü oõϵÕuˆv -K·„S?Í0Z<ª¼òM^žoEáÖï” §´"1é¦í\­eάI¶ SsÉBIT·ŒÕÔvòÙe赡 R»kvl$|­i÷ì0qpð½ -QxÑroãHúQˆ³™vzñç›ÅƒðeˆÙñ4`¨ÇÌe©b÷˜º?«V'¯axð Â*áÍ Ç¡»~‹MåCCô¢‰®”õ0Ò"ršs›ÎSC®æ=ÂÒyÊ û[ÔûÔ^þÕ”Iî1‡d#œJ9î&™I…#± ÏÅgŽß¶c*»B+¨­ÜFWnd†M}ÏRYu™bP·‚­všçc?_gMk5ZoÄoÝ䨟³ƒÒf †~ßíGÂ>Ôüصë͈,Ÿ ¬˜ãgkÉ]E8·?˜ŸØ`aˆN/`p§çÎâé22i¨útË (/[Ä@ã|;C¦ß]ar6ãÕXõ „W¸,¼C‹ŠOö‰Qì‰Y`¨ç`J_B¯àh§Ôqñé8 !;É.òÏÇ¿*Ä¿LM÷¬Çïç›b¿”¦MK—a{boK›IænÑU„o¸wÕgò3’ÁÕ|‘R¾q?ð«'ú©æSúÖoIÖV\ÄÛ]iÖTgÈ‹[_ßZµ_ìj†®£þ”5¤¯¨'N8wMˆ%+E:vŒ -ŠÊ"„¸Óªï©á“a¦x;ÏY Ž`³m ÷±ÎÆeòïï©"bsàiq>,ÄZnÊè›3æÂŒeÐÌ(¥±gÆØoû¦¼ =$ìRù·ÿŸµþܬú¯Ÿ'âJ:cjª3¦‚f2 -N’µ:3CC;OÊv"<ȳA?9=¿Ô‡a’ÓÈ{úúMË»Š¶ö&}Lænu¦¥4ÛŸV[Ìà+.¢_…bê¨$tö«1ê.¶}ÉÖÇÓÁcÑü¯{ä«<<›vì÷ܸßÌzÖô‡<ú Íñ–ÈУÝ9ÌrÞµ"œb‚t¶™Ê˜$yéЪ֡Vì ]W–ÂÖÒÔ>£Ýã0žõP¤B’·W*ZCÉÆ›ŠOžêS€ ë0³é€Õaº‚ÎÖÀºåS„±5Ε÷-}7‰‚ÔÆÙ-Á›*¸IC®{1ȹ†AŠ˜ßZųä®rO‘(G n˜6ã¼¢9iã5ßbDýN÷²'wL å,²j"•éWv³yMÎbfv›¹¤ù&,Õ†H®†ƒѶ¼G[‚f…íÄ&“©PÀx¸´&Iš™ÿë¤i=(Ë— èz:‚[} š$êú>ÖÑ]´¡çIlv®yPôÙüdŒÓ[‚tºzÑwä;Ñhc¥9–¯éX S8ì{‘ÕY¬J4ks¹ð'$r+›tšý‡æ7)„)ßm&‹LWÌQÔ ãL7“)­³gö€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆE›ý*â -°MÊö‚:7¯õjm›˜ ª!µ'¦¿3¹xÄ<[r îä«ënÝ^™sºÉ:Ÿ^—M{Ã9E“Å·ÑÌ8ÑÝBãt<ÚW#ë³WsÛ 3’}Âæ~]ÏNAýÑx!¦ íf”ð%þÒ™ÄÇø°wÂÙ €ìˆëÃ˳,Ø¿QÖ㌴W싪ËŸ«D®t2ïó̉BŽ›°¸JD_æ£ 9b ʃ>,Šw©v­¯Ëà0ÍüV\åaµÙ4ŸT2G+¨óÿFä]ôÍ,Ùšå]©z ~aŒ1›æ›CÑÈãÓJU­Ús/ 'Ú«À±ÂìÅ“k‡¿[ÇM#I8ߦò’)¨´óq±U‹ë$ÔràCO>Å°½âŒtMÖý>úIóªŠV­Ì&¥õµ“€Mi`ªo k¾Öà ÊPìÅ^\ âm"¹eð¬]V¯D‘¶ÄÛ7uë\£»»~ò&øbÉìÀýOŽÄñ4˜ÃtÞ¡–KÛLôÔ¢”¸‡N\™-ÎvúaK’í¾D¹­~2W^€"á‰Ã¶¨ 8Y´JBX5Ó"ݵżo¬v›¹Föv$=MÁ ù˜}( ˆ7@L»&5ƒ|®L£.`Aù@‹{åšßhrÖõ£Y´i¸(ƒÀn$›we‡Bp{o‚ÙǔԽxM}TàÛ}Qž¿4ΑÈq’vÛBäfSDžét•Q…ë±¥t»y%שÊÙå &[ßÓ€£¾˜çIB¿|ÂBî8™ÞLMGÊU "ç<ÿ¾B­tbv@¢1~8·„[&Þç>6 ¢F¦´#˜‰_•Õñƒ¹>,òomðq™À;¥Fo£ï½w圠¼ŠGÐÇ€G+WÐ¥á©øQ¿®„‹wÕ]é6ÆÀ®:l¹‡áÀD-K¿ ¨!”c‘z¾íÚsVriÔ)¢˜tå8lÆÑQ€ÒC·+>p—o"Ù•ÎaÛîwÁCN“n“>¾nÊ&ZÛ*ò~µá¬ Bb”„0mòUsQ_#25}!ò¬PršS­Uj®ISDòÜ®ià•edð÷;#ëà…ñÅ>¬PîUþ^2w7©y…vÉÏŒ›±!nÚ{Éa•|¦˃{ºŠöÁ/9L0’€P+%[sÖÖ­ #ƒÝSôÑ_!’—`%J/v8G˜¿X·v@ß;#b!O®­ßs~¿ªa45LÙ×9߈6ÎûuŸÿ»Ø&ÆîÒe˜h_GrèópÉdv´œçöÃÎ<‡™¯„ÿ¢J_?žëqÙ. z¾‡ý„™dyoŽ»¢(áw/EUÁ¼€ýäÊý‰**î-|Ç ýXL$ž—†íÔƒµÀõÔ»ÉÌ`z -†Å#ÃnåÔ y•JüÄÿKÀt7Š7Ó«ŒÂ6bk^1bÝç -Øy:šM_£Á­ìvÿ×BènÂÖÄð¸QVECÉ:‘÷u‚þ®ÙÕ®$PO.’%S¥î™Ô Õè¨kéÜì€ÀE&Hõ=´Œ<Æ­ª¶4i Ú­07L'죉úp;™í;IàªXbÁ[¿-DÞ£CFi¤ÂµÑX°”lhÓli÷,¹ÂãŒæ¼¹öƒº®-†¯S¢£CeÒæ`¦˜EÁ‚ûï…I`ÊÝqv‰˜å¸ÿRMáSÌ@Ñô+¨Ë'Ìí÷>ÿQäe—ÆòYh…™@ —w¡Çuæ¢J@Ù]ÐT¶ƒç„J¼ -WÊ€«N’qžáQiS}Q”§ÜrÖýµ¶2yÁ¨]X’aXÐNý™.ç‘8Õ¹ýÔË×Ãxäpw‹xñ鸵º…ÛÓ4‘ÛûªjO¶Y‡æ´÷žÅ Ô«DùŸwFÔ>¥ß¬ì¾¥Xó„Ü'±4µÕ¯Ö›B‘‹2®’‡ _n€¿™ŽŽÕ#¦.ç¶ÝEœA{Sÿ›…ð*µsßcÜS¯ -ˆ\mãY.n² ±š\B2‚áúûE†¯ðOð<´_½˜ø”&Ó6Š ÇCöN&Y‘Ï2·1h I¾’Ü-Ĭ±ÝDœõ§œ¸&q(ã7q{é?º:9jà„ÝA‡Ná+?>í~Âx­¾rÞlt(+—–ƒÅšÐ ”ˆ3ZÌ2 ÖJ¶ÍÆïv8ÌHÔšx‚ÔQš>w$ô“<èZn:¤Cb¡•à„ËȨx]ªøg¢¢EϸÁ_ןž©Ím„Ä(célšø0/¸µÜü*•âMžÐ|‚PF–ñ¨bK—K•1O¬–Õ.åµbyÔmñ2&Ö.@ µ_S»¨0-hB#Ã+½ýÛ¡f2œ™°=žœ$É‹¢Þ–KŸ_Æb`,¸Y–[å„©´l„(hPú\|ë] -ˆöÄÀ*øcN¤À3kéìÓžÇrzþ-¤µ¾\ÿWÜöh« Xa:-i~O#kyö®Gд•¨ -JØÖ@;hÉÅ-‚ /ý‹F!?*Eô~öh2zû3 -µ…*Oô3£a½Dôu°Y[ò‘ns± ì]CÝ)uVŒJI6U5º0í[ц§îډϙñSÙ}›oÁxv¯²I‘lñG)Í«Ý¥WÆÓúz=UXÅíŠYÎk¹×_žÿ’6]ôäQò^bw8‰SŽægý!r+ól~ÌÆg«ß®¢…šŠºa\æ”.ڂˬÍs °¡Ô;3øzN¥‹oöý»PªJõʤÁRãçooªä -æ©õ ÷BeÅŒÔCD ŠïI2ñÜ·­£$ꤢþt#ÿCë¤W“¦õ1ÈÝ÷L 3ÝñƒÂa\éÀÛ•(çC²CÌÅþÏ@ -Hõ¾±¢ŠìÜüŒ©˜¨jlZ%Ú$è·*G¾Li#*‡ƒ5 -xÀ*‚z´~ šrà·Ð9ËëCˆt}'h–g½*æ6 ¹LÑì§ÿÑWM[”çXôüŒRÿ]MŸC‹–ÿ¡?È+kÿE!ÈK±µ,6T£ùùí ð姓j°a-C¥ç=‰òémô!Nz™û,ÿßYQÙS½’ËŒ’'ûènF4M1Ä…ÜøC„—sã¿U2jUxüE-v/Ô}%Â3A†ìÃ-ÿYd,0N ^(®B·P»SiÜÌ9" ä@çÔCúE͵íÎŽ:Óûß‹¡üìo|Ø‚®ŒÍ sóªlR-ð¸ùÀç~5ñÕ»ÁVåiQÚ¶”ÇxÔP«ú úÿ9Æ@/ CáNöóZÐfh!­›QëvK+Zœ–éxSV%ÍyßIæpûô$À{XØÄÿtûÛ¾Z¢Ò*Zâ×ɸÌ0¦Àžü9B«+ù¦œahÁ×ót9c)ÓÉWž‰¦œz§²þÃ/¦Å^i€lYˆo»gÅkæÅ(oÄQœ”4ÈVã~2>e°S¢ê¹=Ÿ°àô®ójHò'Q±í¾é‡ðßêà™ß~ýNÚÃuÏŒ¶ÿÌèü‚øQ¿Q+ÿ¦žÅXÒ H ÇÖàL7¦æ¿oú>Ã}¶'’ †¹Ÿô¶>.¾~çQº1+Å%ïcÏ»uÝ öݽ‹­WíQ5C³Èf?Jk!7Ø#ûå“÷—'èþÿ‡®NÊÓ\Nɹo­4,¦·rè©Ë®uñ>\Ê‹«EN"ñÈ€´2„Сëûäöä¸6IÖÛFà!YÞO#ÿæ/Ì’ ôÏ2wƒ0e œîÙ°ˆÓ -pE4S¨àg¥GT·¬œ"`šýshÅ´š¥bש¿/“0;m‚ˆTtѶ¶÷õPDA;Ú PÙ'<·)U”aŒ”˜w Ðf]XÈsUßSÂ&ݦ„]×gÝ 5{¦!¥òoÊã÷mÐô¼ÕT+tgì„ÉÄÊO®<¦¼=œ{¯ÁÝ=ù»1Qµp­zú/ä=ï>•»±»J2¹/Äٳ [(·¹Öôx/ m¦D:¹¿Ûá_EèZl‹“í.ṁ×ÀòõÁæTÏ+`*õAAšI‡&^yŽÞÜlCñ„gl1#;~0-bFI\ºÃ%¹Oî³Ir{¨Ê­qe/ýn›æZVDIœ2ÝÒÀGml$а Òà“}pl2p#cu„^æëSíK”dø=ã®&æ÷wðçíÞ€ÔÔ6_<ËÏ3m‹¾«š[ûû¢ß!þÒá`AÒA¤òØ@Ð÷DMÝ£¶iVj³©j=PMи½N/â#/Aã?ûÊë¨ ý͘Õ[^zM¶è¯ ·Å¼0n -Ÿ:ùÞ)ÓÉí+c;Æó¨f×N|G·º¢Ó‘èQØÏÞœ×Q3!e.«Ž#¢7%ˆàä:k(½më÷_@W ”:Zºîò˜R˜C¶¨v|h[ -[åó->#´íjá×md}\.âY²Ó„60“k´¬ÑfÈ%^h7÷ú?>Ãda÷XwL€÷¸‹ër$ÒãÄÓè¤w3ã]üú#2E2¡«hùñŇ–R) ñšú–V±%‡Êdz§"š6rGzšwv€WŒåJñˆ¡ú/7V° Hšíb1óõ{ãñ~¨™Èw¡÷õ·¾‹òÎj—µ‡ÉšæÝÌ$×ÛÊtèÆ@õÒª_‰3WÙ§u*yÙ3›ÑÉ@ž-9•jà‘u„§S>É$›ª§ƒPf ªÙsê>­ë5Ÿ¾g¼Q¿vª·´W\aaéK™üâyL,ãò‡É]f‹£6®>â’×íQj%[êýOê§Õòq©â\ÛÞ"ðyID»B‡fjªgÇ-¦¨(Y&tÖ³÷¯C‹€Üí’`Šušw­ð°&±§Gjl¢4ǧ٘7W”vN5NnmRänZ[QRä:¦ó»8ÛØ;õÐrS+üMàV\B2 &»JïàíÐM¬¾¶Ð=­÷¡R½^aùm!Þ­™@Ð3ÌSÛÑ¡ÜŸ9Íî`<&³FÑs‡h˜¶¥pREãVWÜÊøQÇ÷Ží­æ]± ÿÓŃÆp½H›H¿ç½14H×þ²•y¡Ãeœç/¥}z¥` Ìé÷)•èo ÜV$r§|Wt¾´ä‚ HÃÃyá«:ì†b>]ô1–#W/ŠµŒs‘•ü-ÿ~*Ÿ&¾YèÄêKÿc º¡Î¢U–˜¶”Œï^¶áÁûÀøèEBz5‹8Wð°5lçl‰T=.Hà«úÓ”òûhèqw“û•yÙzœ1îY»*²ÍpŠWù«PøÙ,¹^VJð¬Ù·hÉ{_ ?@‡ªšùÈ™N!ƒü•4—ü“žá.3ÇéXr%'9*¨û‘‚žAÉ"Jß²@].˜oXc I ï1úÅHè¶ý?õóY·öÑ,H9¡ÚYb/ Á²½l£åéƒRÊúy´çcЧ#¹îÑ$eŽe«1;]âkè²Í›™™ñý§W9URSß+@s -UÅ{d™úæh—P¿nü;àö·uñ1Dò„ìÕ*þ+˜¬‰lD¶¥³œ¹7ä[($íש¦j—?„ä¤*(àvñ÷hoÂÇÑÞ¢[Ò†®Ÿ¾/¹€­°aQÿ1U—l®³*;B$NøxQV§È*JÌˈ„®cæ“íËÏxF0²JÜ{ÑOz±²tí×תàñGØÒüºò|éd¸åX̹8*fÆE”üLþ¡=A91ãéÛüÌÜ[æ‹_óµ®ÎUõî«#˜JAû@aKgì¬}•ˆ'ZEóóu·C¼XÁÃ×®Â% ßô•áI–8pdM -âã÷9{ÄÒ{jpAû¯½o.Çx]ùü“|±$ýx},-tJ¡| ±Èô|ýÚ—åé¿Sµ0ûKý­°“¤¡§GUêY"™?DdøurO u€»O@¼ú$>Ñ·]Ú\H>{*X`À"gˬÀDw¦÷ÞµV€zÌÑë€ZˆçÔKqHì‘ž&À\Ö -”º}<†ñ{ì‡Yãp1‹³ÔZ4Þ–JÇÓÕ…UwÞ.ótž—0Š0sÃÇ޴uŒá$Ñcn×-uà£CQh@xˆ™â`ýÂßrÆeÊâ“H‡P؉Þñìñ1‘¶åa9ÎòÆQuq]Äé˜<°,íBò>z–PÒ €SuQŠÓ'n/3LÙV-&'o–†ºl va¼y\ä¾}É8Ñ,¿¤…ü2BÆUSÒ» ÐÙ8n>û1H”a°½Wê¥}$ý/$,èáú%žÞ´¡fÍë*¿‡s·Š©Î9¥TXJ[ž\¯ô¾â +ûøU¯¾©®í&„¬a‚Ök3i!$¿pÈ*‘ÏgñìèL‚„ ­ä—Öð/þpwìòœŽØ¯@Vó 3…=,TåÚºámc´÷ÛðÞ‹ÙÞNÖß.Ÿ4øŽ$ŽVV¥—7¬´6¢÷nø3î:þS$Õëò‡f/ -Á3Y“&0h8ñà2…æN©—xj®°ËcëSþ$G‰¤ÓcÒªY‡.yÆiG€C¯¸?–ÞÍ^¥”bþÀ^¶ñvsx| Û>­tÄï·õÛi1ñb¿„×^ÓÖÂ>ïù¡<«Ý¢l¬&‹Ûå8@é¿Éž\¹]á•ãÞ±¾húf}™Š%DHË E”AP¥•Jä•÷ÓéبÍû©™€Éƒ›Õ8÷tß²üÆÊQ =¨HEc°¦ΡкŸ(ɇÐT`ËðÖP2šÉÿ¥Ã8Iñÿ^.{¥WhõmKX%B´¾U©Ôä¸wÀ¥Á¢oá/ˆmòÖz{·#?)ÌV  s+Ò7yÁ -gh$àKq|¤ÂÙ¤c¦;nB\°Utû­âUÑI&¹¼š‹¯f}^`„°1Çšœç#ÌÑ~cA®,Ò0pW¸g1Ó=D¹C2;+o'}¢g9^uÀ*à•Ó×€‡ümµJ®ÐK‘Ýz;ËJÊd–­*:=>éjE‹À§ã0ˆ^¬sÉÂDëH—»š²DG2̆ÿô¹x‘ÚõâJ#O:»åé'J28ˠǺÝXÚI¾ té[1ÆÛ?WÇö‹<>/ýi¢Œ…$ÐÆà aäÄsÇc-Š8–ÑâúÊæ‡&jlR~>ün@ŒíízB÷ú9‚ÚÃaÛ÷R¢¼Ðp¾ïXT ^ÜÔJp4©Ø,¿9ç5Þ[~ʦÀä.·3gÊú‡_°²~`þ1ÒNq”5» -åe·ïC;#gŸ+¢†’ é”Ô<ÞóIK¤‘º19ˆÖÿZH¯ý:2Þ˘>DRrÄîaV òð{àÃL®*茌ȱ‰,rÄ °µpÀòX_ÞX1<ù’¯lå]ZZ µ¤ígt°oXgZ:òzk£÷8ì ŸÂ5šGƒñm±Ÿ^_Ú5F!Úð…X \OJCNU¿ÝÞöU”‹Þ艊âHbC›¸½;ï.ø X„:†V^ñ°a0ŠfÿY¯õ1Oš@N3%=FU`»¦.žÔ¶Âªz€Ï5¼À¸û©wZäyävbÈ#EÙ2k+gd]{èyüಠ-&‘»;IGº{ÜÞ‹ÇTbÂWþC›6QrÓ‰Åÿî1fZË ÷ -ÏQJ¡ü¼Û**û~]´û­ǶÂk6tõO‹+U›þÅлr3l92èéDòÈåWöl…£‹Uh5ˆçÖGÑ™iÆdÄihËzœÞ¥°‹¶Ãºû˜ÞÝE‘ôH÷‡AL\Þ[ñ/ küp᧼Œ¿Kc”úîðÑB ”>S²vvÔŠÌÕßìùšœ 9\£ ´`Ô-–Nú¯‹LéùdÌZOïTs†*£Jg'r31 8++g³,@döïr‹÷3ïmzRVô¯ãÚ6 -E‘‹N¥»Ò«”ƒsŸ53ñ>„çë.ÇFª!Ž!`h:þ›fbEêãü¢ በ-ÝI_+qÖ§9)jzuYkéëË­¤ùO+3¢N~;›_¿Ÿ/CÿT; "Y&'cAŽšð¹ -3üù>ü1=ê¿°€²á0Ñ¿ê|mÞ¯³ gY"æTjÍõΫÚ}YÉ0ÁyÆö=²|ää~Q(š ÝëŒTî<þÅôœ± ¢7ߌ.°ÿR†ÝÀo³ƒ>`F«áy©çœ?—dŽ·y=íñ‹ò -ðÉ%Ñ“/Ùš3îN9šKU[áôÞ¡¡}ߢŸ -ƒ…* zÆfÝ| ­4þ«µäÒœjšˆ_¥ðîîù´«B—¼¦ còÌ_&ÂDÛûLÛ,Äå†îœ@´„Zþ˜Ì—ú wg0?öºêy«‰]·ÑÒ×fêMº -ˆ'y<úb"{4pИ¸w÷ÙPè©-¤ýlû¢¨ÒÓJŸó›­øÆ›Åìg)#KÏöˆ/Ìõú€ÏïîPÖ]Åg×`Ø#)hËóÚ3þÙu4Ïí¢$y'`¥·+w´H°ç[(µU åñÐ$j½WÆÒ:hØáçìC`—„ƒ×}%•IˆB½‡úî •úßXÝò ¡ã)vX~Àûgÿ¥œI8/Ô©œ¥T¸Íëœ{IêÂð;’OMÌnÏ…6”{ÄAUv¶ó°$jGª`þQ3œR¸/ô§mi­—Ï%ÉTCS_×½~è‰Ï ÑBSʜƓz)©eBÙûvX— H}ºV_yE0­¡ Ý3wl>êjNN[QËÀ›ˆå¹VHåjLù–€ß4Á“ZuQæae8Mƒéiâ>Pÿ„D„MX —’~®Òâ¼ôv4ÐXAß Ç… -U<|>tU¼”­ó ²Òò®Ö³?SNˆ™½‚Žúl´=ÐõQœ»¯ùá~dMÑļãmhÙ˜dŠªœ_'u»x”Y¨b %ih»ø©¬î’Áõ˜5‹®V‰16^Í¿Ý#‹ƒCú½IžŸ¨ÜÊV%K>§PL¢TR¢éÐxUkݶ¦ÑÁ}\Ï7=+/ÙÛ£ŒÂC¨Áº¦ðJ”Vdà<Îÿu³™GÎÙ~^NPóÎ…Ñ`4ð•«9³öÝîð/Y“T~ÆgEAÏÔ5}º%¢üµˆ9XqèL¶îül¦Ì'Kk¶xCºà¬6BRšx‡ -Þ—?4 \PlL‘³Âü” V—ö,@JÖv]0¡ðì„RÎèœéßvz١ﬠS§8÷'èS%ó-g¤‹jfqÀœ‚$UÁÖ…5 –´DÈ­|5»ñÖ­nÏâ¢ÉHznÕæi;i©­®ó ›ˆê¬Â×Añ‡ª¾ÞÊWœ«¶+Jó:ô†0Æ„A£U9p¤öl¢‹#Ô4vv]1jâ8z»;’Ð~Ÿ‚ ¤̹¦Nóœ“2ôŠßg÷$)™¾Db¾|3$9ÔsÇ‚`¶ZaG®îh¤B3ˆû[Ã?н¨^¸£@\²[7)Ü@”€ÛR$Ö[¿bˆ]Nnc,ÇÎOH¬ñ#‡,ªqZØ°YP7=:cèÒ4ÉnݤõLÔ3xU_™Ô?ü=VJÿ©Í¦&é±Öø²ÎØ$÷Nr\K·øðÓ8?(”ª›'ôˆ¯ò»æÏÊ¥ÃJ¾®ÙFê'ŽæÀ8µ§Wåo@÷¾Æ¾î—™s›^p¾t÷!ÎÖ°œj°x¸í·ÖéÂœ.eÂZÍÎ.]Ã' ÍWvØED  -–Ê|cƒ±§‹‘^¾^iêÛŠ8lÈ⯷Ksú6{7Ñáéã´ð$€œ…Œ¾6D¸"‚NªK -¸2’ @GsŒ/´ª,óµBéOÏ_•—ëù,³•§ë2;îÚ~”Gêê°#ÆR““×ßÕÖ—=}gƒ¡!Äê™ØµKééï=¦f¬®ôïh–nëÄôýp˜Xô_Äà87»ª³%úd?¼Fü¬«*šîˆ|«Vv£8SGZêeª¯5MΠa$úd!»BúTJïZõ58wÔ¥Êâ6ê>©5XjG3Í Š®bù€~=¼F¾Rik0ÒúÁÑþHa¿ð½C[¸x0*yè;gáŹF)²2Å´-‡Ámr•u%öÀr›»ôÙ²«A4`"­}w;Q -Òj7e²ØáµÆ»ÈãKr ;Z‹i¬ÙøYp€F=Pðg)³K ã|K¤J¿š%Ï4*…^b̈‰ ŸEd‡·fæÅŸ¿ýàZ ‘6&±!Ñ¢7À~ZuŒÎwxЃWuñcØe¯å¨¤o=¸Ï<…e̸¼ˆÓS CXØ¿ò)/)<Âm›'õ[3ýT%߇ž3Yú÷Š¿èV€’}yóÿ=Ò}#YvÞN›°ElCc»¿-Ÿ²^¥7m#ƃi‡q?Ö2Øþ» Ø,™/ÁÓç1xHcuà·$éEy±0ô4âéj3xÃbZ{Ÿrï‡O]èœ÷Ô­YEÝg¦]éZ3yq7{µEüñÔÌ)cçDLnóZ/Žè›Tà¾û˜a4.IÖÍÙ«ŒòäÔ³nZä*/6ìÜM ð f¶â& ºŒùïnŒ²,*ü*ìÛÈOŸ¡“|[…¶·/î2ý÷|äÜ §Þ_ ?d.†×m½â/ÜчÅ!И¾®"ºP¨F×'/ØûBÇ ! #MËœ8Ùv\ÁŸ¾a ‘¹ß •¬8ê>]bE0ò¿ò,$«·:—©ÁîÛ¥(c™•ß"¨GU¹fí9©CéUÛpBø^ )]tdùÞÖ¬îFHñ£TrÐ4§Vc'"ZºPÆÝ"Éá¹ãX»­†n¾dïÿœæŠn»æ0ð%Du‰ó‰šZdñ4Á"”©™¢úE`«ú¨P²cãÈ ²~þó¡F1%…´úÖ·‡áâÑZ/ wr,uk¤iøÊë2ÃÌCÇmA¸d²^aÔ ‡¡öRÚÿ¿[:@nˆRêSZÕx•D©ŒPá‹vÅànRÕr -‘²‚îWfâÚwÊHC‹×µ>[âBÉô.¶ßµw0?où¨CË‘àÔžELB8òS?žFDtsÚ¿éTnæ+×½éEe¶¤‹ÊÎôJÆC.9œâÐHØ`~¸à$îÊØ;`¡¼|‘-G,é'湿zÐhGoMå´¡á‚ù= yˆ°©·þ˧ÖsÑ;¶VÏ9Ý¡P±íæIªo„Yü8ú}† 1o(EùØÉÁœÇ' -ã5hIõ]3 Ã^å'•qLÚ›ºõÐa‹  ÕwcñÃ}$ˆ7ÿ@.wEžöË¢Qëu—¥Ü ®Õ‹µ¨§Dd~ÆÙ8Ó§ñwmöÀu4åáwè­!ö,Õ¶sJ bÿnV˜Ž_ÊouÿQ>gÝ»bÀä!õ¥ƒ?µÍà¥äÔœáoâ¼~]´êÅl•%Ôd! Ø~iÕºø( Ž>¾m þNF3.­gû2 ’»@Å ä³Ió½º:ø´Á»DzN_êðTš`X©^^ôëág¬Mc›rƒp—•F»|ù„7¢²ßsÂT¢|Óÿ±å ©zHƪ Â1ăá¯00¢¹„qCÞ£·#S–˜åÆ@•ã‰ô`¬êí-¾è‰ú«3ÕŸÄñš¿Á…î°G1?ùßpýÒ+Xý•ö Ézfñi\ä%Æ#[Íl+udzä$ŠkþS)èý-”fÛ©|øˆ] OÔTÙÓJîNd̲¬ÊèØï*Ë<Ý‚Œ*`v×7«zá¡ÁŒŒùéY šuøؤõ?ÂÄò×%·š:$vÐØ×8KòPdµ W>úÔkT‚{ïYC³È= -§†,„eÄƺ.7š0q{sÅÑSKy„“e½WÜ Ç­²1Ó|Q0^—µf=Kúè©÷@=À}&l™/|óôô¶· Qfs5»FÌò8ó<ôÉyì¿ë{2xrÝ7tP´¯É^gžîúl¥d.…AÜ3xé# ]›Ù9ÒMÁƒyÞdŽÙ$sšØå7|Ⱦòtדּ逼:³(3{GÖŠ«’”±ätTäÁ†x¸1kæ;ÉX×Rà N%Ü’|z²: àDßgèô0ã=!…̲ÊŠ¾€5þ_¶€_:4‚|è*T=öþjyr2û›ÒIûÒÃeú%F².Ž÷‘OÞŸ§Što]UrÖÒT?6ö‹Ò>3ʦ•Ì/TCX¡U½+òÄ ú0tÜ’qÎÃ.Ö ÌgnÑIJiNd?sΔA±Í’À`« ¶"/åYa'e^Й%(æ„TZBø›X®×ÍÜ$m*5p°ÑBëNÛ·¤GÚL™f¶F •cÀ™Ø¬Ê9çÙܽ¾Æ/ÜüÞã¹ì8þoŸ´WO°ï¯zkxÇ!xAÓ‡¯o;kPþÆ7_ŒA;ä°% ä1:™º,ó÷¥¿›cz Çò±‡¿” -¾¦ad!¼ôoƒEZ]9z㹄öƒ‡”(âf½Âï’KG±Ž•ŽQ0¶ tIÅv`®60_÷Ä‹8•Ùxã1PÐ÷‹¤wq¾61%Ø÷ö.§}/idåYvK?Þ‹@_c´¹ÓNÑ/®áW§š^îT2Ó¥œÝÅçJú&zÏô2¸ÿ›IÂúè@jNG×±)à:Ž[Þ…ðM¾½suïT…öþ»ƒªëØFRË”Þßæ'–-VŒèK^¾ä×*6Ä¿7aTb­¹Þ¦™”tjýÃ…¹þWV\Ò8vœž¢ÇNÌ[9 -…õ°u•R¼âèWjcÞp«›0¿0 Xq-Ñß•¢yVPRŽñC7XIt†‡“EªõZ£«‰fν˜TFH_Q5YØ°NdâfçèOSPßibØå]Z”€¿¢j¸€‘L‚%èJM‰áïØD³X‖ÜÚ–Æò!ã;î‹r)#sG§ÚwŸ6äÞ⹑ۯº -Õc6Eó‡@›h‡N -&¯cü1ÓWNûêHÞèZìÏŽ,Í9kßO“ê(/c/o6ÍaÕPžßewcW­²•Íˆîù8ÌzâÁ -Q%“? -ËŽN¹h¬|ÇóWò+@Ü4–yŽקËJ,n -ê.¥§FùíÉyÓrÖ›Øt:£iµ°IÁ›£uLÞÇ*­nüOC|e!êU0Âñ@ö7ÈZx§îl«¤Ö¢kÚÈäh†•¶›˜!-´'¢`RcAl•sCmía +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ßZ4 +œ3<¥¯@žRî¥bš¨[‹ž£s¢Šilk˜Ð`LØ®_/É{ªS”µ&ÚQµR`øSZC^鶃?í\j!m,©Á€jêk3\Ð<‡Ë5](¯R¿•_4šÉÂQŸ¿†j|À«64Cÿ¤ƒŸ¯AÆt7Ò1[ CŒ-#‡Î×€°È—(¿PüÔNžƒú³GF¸©a|‚säpa¶³¨m6&bê» ß4NaŸaéמY÷ñ.Í!Õ +ª>\•¿rénóÜÙ±M0/¬ÞT*fáv×XòA္í Ý-wúÙrÒËOœ± +BÊæg(JCÅèIøÛÄeP•ð9Ûçúæz»‘ÖÿêÿgþVƒ¬"ÒÊzow$ïá¼È1¨¡Ç=ÄVèXqmû¤°­XNþ…¦kžMv!:´ÐäP3Œw¦€V?¤Zõd dCBß»ø1sŠ ¨VžÃA‹µ¥rÛXUÉ«l݈“œ>©ÐÚáç>è;¥…‡íÞFý4ǤàõΪÉÔMYŒ©]±ºôW‚ &R`92.:ªÄBàBä:ÏÇ? Ò‰ªs%D7ùΚð’Õ©vã(Oá+ÝÛÊ}šÓ8Ÿ©<Ð:ŽÖUy±ky€ +ºïeýJÍ&^VÂ-ó/gvDgPgç Õ²,ÍA·¬*-äˆ7püS˜¦+zZxU×)\<äQ˜AÆÙ6Z›*G@†„áó ç²n‰Z·' pÓEøŠT¶ Úô”pܹÍÅ9´Hò]Ycð}’vÃefP×m›£m¦˜õ¶ ¾q|?TC[OÝzÏ¡;^3¦Øщ!'ÔXÒ³S‹|cª"¢2ÑóÛÇ¢ +ó|!èf±´Lý¦8QR«Ž•j¿’Ï'òÌj([ûI’Š¡¯ŒÿMÃæ¤TY[Òèyg˜½Ÿ±gÈGq—yÞ 6¸_Pa²Ì™MAïêªZ*Aãú¾$ÎIòs-{¥ÍŠ‘ÀhI6ž—;‡tf€Mj©€A{7bfÅ…¶ó±{#ÂkByÃ{Šiˆih>¯ÈóA»DŸf}Ù…¶Ûe_dÙ#Þ=Ÿ"ƒRõþ£X¿LØv¡Lëë3ÑBòæjªŽ@ûÏÉâ=$edèKpëÔÈèwwFü b|3 e™òà\`æRït?!ËðdøkbÖ;À^m;·p¯›Zt~¿ –ÈUhçm4­]M1OÌS‰„íÇ ›n$£âzIÎŒé“ÿ5 ô 6Ȥ—šˆZ +J¢oø4ŽÆ!‰´"—†ŠÒĈkâ:¡ƒ=*RÁŸ†•©~z¸ ú˜Ù·ÐÛýéBÊp`³¶,€6ñ`CÜÆ»·¦ç®øËÇÿ›jÓ¼œ€â˜ød’³Aƒýãw¨è¿‚í¢/Ê'NŬWÀ#—¶?¢"b€º-DHÔ­K‰¶}ôÒÊVš^þ…âM”tàOÒÂe/ ž y_Šêòû4ïs z\¢ù×ÌgÏðPníƒî@ÍÝww˜yý7u ãçQ‡ÎÓÚ•6è W¦ð.ßCÅë *šIŠ;²…%E–E§Þ|±oš$AÑ¡6¬ÑÉx + ò_©iš”hA%£„ø¿fóGîm¹TaY\™8X!f=;ìbÊÓÀ'’ËD¢ %ŽÖq”«éÛ-yÜ<¼þ4šígþ¶Y>ì¼™q“¾À·•Zsr뇙ž”»Rø{MWíJ¶@®t¸Ù$䎎ê{«~ùÒ>Ä.KsM\Z §pæ5™B’_à„ã:Yg‚`ÌŒ ’ÎùÒ«qă.S+F – B¼¶³… ©,דÀcYhwRÙ>·ŒO,˜“+ŸfúûK}Ä|Р±4*1:½Ïç/´ +¯ôÔ¦sºI,ìPá>¤ ž¨+‚ðÀ¸p1#û!  º'¹ 4ÐwäîíPÁ9Ë1HGPA,;²€âÿûGºûù' Å N\T4×21Šç‘íÇGò«9£þf&ÑK/‘}ß#XF»ôù¦ðDÌÄ–«qÌD߬ïIA¸åYŽý”%A[OuDT¬¿DÜô–hÛ°dL„·æ•|*SSv\x›æé„î±tù-ÊP<ÿüåÌðA (w·`P°wJbÞ?o¯Ì·<T§®C#oèÂIäÁm¤?ÌÖ§µ"qöŒnáDUÿ¼WXÿ ‘» ¶âBÍ벑‹“é¹Z™ÇÄ÷óL°ºªù:ÙC[S"~ÐVïæˆ3*5÷Ž˜#«TŒ+îÏù äÿVVqÏ®¬Ä>c ¶×•Ð™•Ú2h©ƒ Ÿ›¨©¶Ôk‘cþµ¬KÄ@›š—Ì«¥ÇaHˆ0®Çì:핤>ðÉÃ’½ +RS”.+¸szàÌ%^ëdsOÓînË?‹YSy šê¶n÷ZÍ!_¡^)LB†[ÏT“PË£ºì¿xþÌtÚÐßïD;9\”Äwè{d\—z(f„D>¦ýlS²ÏïW¤ ¨à­¡å"©Ÿº™”+Ølä´oõÆ›«Ê|‘MD}ºæD¬Z›ö +xÍš;nâæg§žK4"ƒÇ3=Ï÷©ˆnóížáÓ´¤~¦ãfׄ§z‚6²û?«&«»¦¾ÝƒZü,XB%ZmËÜ•»2䨉 ss[¸`†:OˆSÔÎOb_WAÚ7âš•„ìv´kïÃÉ€ù¶…ªØw<™Ü@Å;°ð¦Œ|IÁ(Pd‚!·íŠ*V?hÁÂðo0¯¥Wy¦€.&-ðúÀíÜqú~G2—ž&KmàÎòÿS€€hÝÑÁJ~ܵ„ýxMœßÿ‚m£—ÇÐßmˆ­Äÿi|\Êí'] A׿ц؊¸}¾Ÿ)® Ÿ¹œ$2Ù`%ä–¬úTŸ  QÔ¾¶ Ÿµó‰h‡ðÛ ” Õá +_çNdŸP!É¥*„GžôìÎ9µfñá—4y¼Ê×+çø¨ý3Nb¦ª¨|K‹ 1z™hxºy„¼ðV©Ó‹:ï±Y,P¦ãÖ#„ùìÁg›eÁ׳¦ 'éû‹ 6³³E¯6) +—;ÚusWÕ`v'Ü“©oaÓVM Dé¸ßÚ‚ÓxL‚Ö…‡ÿá­ž³€ÅÂïæȃ†á„fÆ ê ÃÄÝs'3h«‰ jýäXòŒˆbK|ÑþÌäФò5ÙbV8ˆ¿¦·¿ùêµæè^{Ç5¾²ñ{.çz%qù;LÙëX<uZ1AHƒÂœhÃ&5ƒ\¤¨ŒÉà]{$úÜ+-2d`&º9.êð•Ï¾Ë ÿ/f=B’ »UmÕºJŽCεĽ¥ “ô“õRx‹E%¥ oMs®‚ª›HMo‹fÑPYü¢k½zŽPAÿzæ}¿Ô­}|EtððQW]=1C/]L¼1 ̶ŸPbn«ªé?UªAÙ‡ nÒŽ&Gm×úlI,ĨûS›}Û„A7«5èbÎË—aÔý5ÇaR¬2DÓ¼¡ÉÑP྄á”CXz8ÀRº ÝlT£jI§}©!'83Jýÿ• +í1æ]€H³ƒì$ +â×léĈz`DÞy÷;Àð¼¢mWÛ/ZP³ØâÏÿïf_ŽÉÅw†m’‡š¯/ðSÁ7Ÿ@?œ*É™êõѧƒ‡Ã,#‚ [öq j°—íå¾›—oÊÿL½†1@rW.•Scj‘5/o8cÄ(k/”ÜݶPÂ÷ƒYMæ9÷‡Àc†féE‹*¤`È»™²6ž’2íÏ¥* +VÙckb8x»¡¿ fª €R”ZÄ1ïÃáA' .ÃͳÈ~™-æÞKÉO£\Ái¯Öœ„¡é[;¤î.Õ@ÎÔÆ⯂«¿Yçටû¤÷âË'Užœ7.u¯äêùÍWY uñÕ?þÜKWwÎþ“ª¾kÄž°aô* ÙÕ›pÏ e`öG°~iJò Ÿž|n_GüÎœ>sÜän‚¿¬5iY¸2ÿ9c$ôÖdL.É pµs1³}yll×'c&ÝWLU +£†L­/äÀ9÷A·ÔücðeòxÛ!t’H݉Œ càÖµpeW¸1“J¾m=Ì6·b™PežPµW[.¸~þ ðƒ0†ØÕŸ`ëå€&ý§€– l ¸yÔ\åIs5Å=ö°Š(J)£r„J¹—U…/¼n›!4-æµãã„g¢©5 Òo.¸©_KŽÉØÐÙh.­3⦞ðYuLÌûíuÁ5}N£Þo¼Ðüõ;L@{ü=x0 ZåçÍLPªd–÷¹²èJÞ$—+ˆB–ª·ú2weU±`ê+Aûw3¼ÑÓë¿‚ÄOå.W¯HÖtÏ‹ž¶“ùËÇ–C€®óš³—AëvGŒ &Ã’"2ûmÕÅáó ³¾uénqÙ»¢½ÇZf˜73¶Ò±¨S[½=*9¼qôùl<­Rã üh–âô¸@Ôû—†ç‚²((Í_É™,¹ÇÎTåþа¾òµÆF1†qB°¥y”IHWÊšN´ RR¹Z_L[–ÚaÅ_m|ZßiL8ƒ»)”‚j”É +D-ï ¶œÐÜÕDd5Ï"¨¬‹Æàxijt0¯ˆ£øQ2Ú%ZN:ÙžGã•dw8† JÚöñƒ¼V“–OA‡þΪϡ‘‡ ¬®Œý6<á<¨™ ÍÝtÖ5R¦¼—‹e̶è¼ýÛ«ª KsË.N¼÷„ÅáÙÉãßm +·÷Ñú!(0:¿eG]½ò%|оn=k¶¶ÁN¾ñÒ™¡gÛrD,Ç]+eóî~Š¡ùF§{ê!Xßj@yÙ+P~Ýíí Mgv”:2HW/¨pF[pƒâè؆Ù??Ec6¼Ãø­ÑbÞ¢g}FÔx®+k­z­K³½+´ýÈç©Ôj …&¾ß&ñqÅôÈq¬×Í2|²E/fÜÁ@>©L›–Ì¢ ¶õ˜Ú×ÈöÓ¤Û÷bIëG³Ü©øÞ~(ø~69Б’/ÉдÜqÜ §€Ð3y~åt¡[š$+Õã4 N ÷í«)(C,‰œYÆß×à‰¦ÃðÁ‚>xYÖŒß Ü~†áºb¾]H/¿ËVŠC¯ìŸóZÿÈá5ð¾ÿ7n‚VýG®kòý4¡À÷æO›ï|[}@u6Ï[Ö‚¾`æŽT–”—oÞRuÜÌÎ.ŸÍ~»v¶)-Í*ïTßFa ’ö,\)»mðê˜Üg?¸v4ºû‘:‡2ÕϯpáÖCxLÊ_÷ƒó)Ä3¹]Æ’…£&Y-c}É÷ ½ÉÄ¥Œ+ì™èéf¯3ãûɨʴªv½ŒÚð¸c›ÕÒÇU*õA[6lÜú‘8çÆä±Ìf_K†7f¢A@ǯŒ=Ä”EÅþ¦÷ +@õ<@œbmnÒV›<´ý²§%ÍsÎ,fa‡ÝÎÑ:7: BµpxãotÐ0(”IZµŸE®ýÔmËŒû–àÔ8ŠÈOk&ŒŒ/Ân|/6Âû²0>_Á• í…ÑÍÁ"M³-¥Z¶my +eC,]OF¨è‘èÅ­0?ß´Xõ;Â-ŽÁÄ×ÇÂí…´föLRð² Ú»…ÒDRà†9L·{eO¨Æúá7« +êEêÀÞ•¢$$ž/‚(ìÔ4ìÍÚÓG²cfM}—Ï&ZNÖ¥¹·+·ÇÂ;{ƒÝ%.Iv_7|Q¨ÿ9*‚"DõU Ýâú”Š·ó¥=ݼ®0¶)k–LV¡»Òœ¶b˜œ®ßcàÖµpeW¸1“J¾m=Ì6·g†Ñ!C èz¦Á ƒ²š®©–ú’®ú€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆBy®+k­z­K³½+´ýÈç©×Šè,(PL¡ì ?F{3©¡ÞûsF'ÔÅ´%실Y ÓU\.K¶—û²2H{žf›ÃÜ,«—ôvÌ|ÜãÛ]ß“½l¯ª¥c¶¥›dx'¼o¼,<×Íïñ—ÒêÉÈB>û?:-,®y:‚ +%»-“ê7#¾Øܦ-vÅ;x¢‹Ä4¯L“¤”k°Mɺ¯¢2ï×ä=ê_°Nu3Ô°ëisèº[·6S… ì-í°û¦‰o ºæ‡¯îsñÓií?ŒNî¡&¡ žò.O% Ò4€€E¢44ƒ¯Uò  ©1Œ Èj<¶õH¯6ô!›Ï.¢)çb-Ò·ý&yЄqkFGìÍó£èËJ¹‰òÝÄcÝo„Ú¹cõ!1OR+ÏM—;n¥ÿDü%Ûè§ÛÑŠ‹ž‚loøA•Gß/7DPî~&ôcýfúÕaf¨øUaßHÚÄÅÛZ*¦°ЮMfä³D‘L¿ö„ßa%$øV¤ÃU8Ά͛²2V˜´8àdT¢ (‘{Ä–Öª*©Ÿ/ÙÄ•|z¼,Ëá-©Pp:ÃR˜=oˆ†‚ï;i0>#vNš]¾d ©……Ú*JùÞZPF²_XZÂÁ˲Ø{ýÿvÝ`i5À™RdXµo‹LÌj¸yf- -/Åx^ìç iòB€EÍ`ž#Î7yb•±«yuûa3X•ôb&´Úðšþ']Y`‚ê;5™ƒ®øcf8oàœSïuôù7Ë3¥q“ t§\Ø»sM- WÞÕ CU5<6 † _p8D ºE?tÐîŒ V™ëÂHºªø_‚€âÛmHÆ/È"ötø{Œd>â·ëòèð\4ZOø(?qëÆt¶¾X>14FO^mD.}‹X +` +ÖÍô#\’˜ï¨Q¹ZOÍhá9¡S Ò æu¯ /ÖQÁu§èKÿ±Ù>\¡Xí|›ùaXFî6n1ð÷MinU°‹g*Ú§,6ª9x‚ŸÝ÷‡X' wTw²:¶/KÇŸoš•½Û .µs+·t½:wðŸ¯\ ¶¤>òY‹s½S-ôÙ¯¼@‘x®b€“ƒl| ‰¡º¢Dg²í°£CpqÔ…½òùÑàviübu¥´‚íÆÛ… yÇ•°Ç£ žØn™ì½P€õ‡÷ˆÓ‹v;›6ʪÒÿ­ÞÛ#Èó#Ybã(‡ŠR˜©¬Ëß8=JУü¨4Ä.fxňCjiudZh½@'œ”ûûçV ¡ÁAù)Òž¯D ¨ µGDå¡¡\¦vï@ð±ý“kcWµdùŒ°‘·Q¥D©I¹æèËÉêªÝÎ6yd·±iªg>·‚âuí¿àξw 1Õ[¿Ú ‹ 9êðÛè׶bÌRt òø„„áIJþ!¡– §ÔÒ슎üÈOX0–ÖVÉy,áGÂéÕ½4•íR*7±MwCÙuèt¥Ð5_ ÝJ¥Y) +Ó;¥Uâ/´hœ˜ž´œ{ϼ¤( Ê{ +v6^m„á¾Þ{»,²qN7¯ËvÁã»aÛŠiALnܽuTZs.€'mÇzþý¬Ý„3†šÏ7[U¸lš +Æ_š¸tìþà™³?Ä€v–7JJH¬¢ô,›–<#ZY¼„¹¶¢Ø{…ò9𤻔ôBn]'5¦Ò„DDØ “ûH+$ôñi€U€ôëÿ‡¹*@@ùõ¦UˆÔ›¡­M@è%‚‹Û¦|©ˆ›1ª‹b?9þ–jÁ!NM£-*ÅSEø50⹶Oü]}¸_TJGV-‡“‰mFCœtÇæoÆþ(|Çoïý:XDý©¢Ù.ËÌ—pÐ&(×Êá#MM®‰ ¿$š!à‹’ éúŽãea:ÿŒ2¸"LHå½À"”Íщn>-ƒA‘+‘âÈp³:Y¶WÙ +·ŒiYñ®Tâ§GÔTU bŒ~ë]An#GŠÕl†\ô‡9—jµ¬/¡*oäEx'ëc[ûm\ŒfÃÑ„pL†4:É%‚C˜Â“zò±î¥ˆ2Ý|õÁâ‘g:ã Ú·6)¡Ü×ÀX­ M[æÊüÇÐOCAˆºBÓiz>(Q{ HRÅ3úT(’!cëìÖ¥jØ;Nŧ&6ÔitÞWp›M­5WÓä8ñ’¯Ê*ïÙ—­!ÅV7m!ûpm&%+‚Ê— ©ˆ€Â±‹²*wáÕêÁzŒ.Ó{ŸK⨚×-Ò¿‹Æ³Jܳ‡ÞpÇ(ò<Ú1akÿû³©¶*w0lT1H¯³.Ü×Hͺ¯ãァØúQ ZÞˆûòÖ¹Oäê:›Û([íƒ RPo—®åüw‡ 埭Qú°­ZÁ¦´Á–Lëƒ ¥&Mkd7w® T‚‰yH°V¨fyr’¬p#ÌÉ´uø’øh‚<Å]HYÀ‘HRŸºW£‘c1ˆ€{W›¶ ÈöœÙ㶭鷘Ö[ÄvâJO²Ž«n/„7³„â=iË1+B(%®—æ8å9Ñâ--F0Cwà–!!g­â+W(õù±æ‰Ù¬,riaŒ¹§,F=Ô')Ã|AÛsGÑkœBV˜_æÛuüï›°÷Fe¤_ ¯!4á’bUýF¬hx„£T} 8•ߧr$7H÷ —R›œD•¡öq5B˜ÍÃD“f-s6¦ÊìÛ]a—˜”Uy*dRwv>b¢x”µ¹7ú­4:aÿ7|_]pƒˆ³EÌÛéée,qª2qÕq£ñ:iª£9ã‚ë/¥å°UæbbX¢BÍq§öá4¬ácÅQ ›Yqà><ßÆÓË^Ø3â¢ì¢ÀÂ꿱VÜ…®©DA¯ƒ\…¼0dbè­YÜãÿÇü–3BšÎF•miII³µáÜ!~Š‘Ñ7ŒAº¸´umõP’»ÍÏy£‰}>ÃfÞú¤ v=Y½u(r`àúà“x\:Æᛎ«Pä]îOÍ,¸A^N8Uô™[Š%{>¹[ýJ’VLßß·>í‰7‘Z°Wí,Y›B:Å$ò1?3˜´’8pÑ6k]Ò:ñ; @}âàÆ»y‘ËneM6N5‚†åw<3dÏq^cFŒ°,=1Þ^g·ouuüµÖSÚÑJ‚0ÖÏú7ÿbGV¯øñ +,`1 ý×ØÍs²²¨ +·¹$ñ¾«Ÿ`Ú,@ï—æ“Ûñïš+4m™ÝµDµ•JØÌ„×Ò^åý¹¥_óŽåV²³ÅGo°övÕ'⾧uKôLì°9¸o´t×.ŸÞC¤¯x´!Æ~Q®jDÑ´½Wɇòb‹±ÊLXljôøÒ²Ò¸;óÏRvFûÐVÝÐÂœ’ÃɃ,ƒi‰ÈðÑU¬&Ë™­ãïð!1“éeÇÚqc°– +2Ö’d©œýºê8¸: #ÃmrëÙ” ¼êu1köHÃÔeá,ÓaÝH’\¢&¾aø†–fÅ8&®H€QãkžWk˜3nWÃy9@ñ~y{!‰«o¢ë$êAßd>Á¤"$Ë燡¯óà„<³2J¢œ+Rº(íØ»'w{H)Ìa,öwñíÇ9e†Ö¨!,`µÁ)×ÆBùœÖF8k;Ðe× ó¶tz4µ,M6@Ê:6#8£²ú­ã6‰¹QŽ;ã? ucMö%{vµá©®å›ëÃáÐÕ©2±¬ÂWBKùèõÕÛ×»2ùvâ®FŠ4ø'‚‘œÍ°îocc¾ïŠIåÀB©5È>"‡Þ¡Û( ·œ´[0Œ¹ê¾ÑMâ2œ;'µú»¬Hð6dêÎ×:ìʾ¢*0CUD‰ž›Àælu]p½^+ðÝ޲̿šæœ–¨¾§næ²VjöT©ÇÃKìôŒÙrlò¤Cà}=/æë3 +Sœ©]îuk#„rZ‡ÌÂ_¹!.ÖÖr¯•]½ic¿B{y!J¨çï8ÅýÅ>·fʈÁ‰(ûͨ,‹ñX–§±ƒFÍ~€í2²Š*f‚ŒL«~os¬ Ȭòïja`¼”zêÖÙg Ù–ªŸäÔ&Š?Ûøñ­Ó"l_}å‘j^Eq#l°^%À¶î(UÓ3Ì5‹£…s¹š«é)u-ZŠÁÍR³7GÒ…ó„‹¹ýÑ/1Àd£Ä°Fe $ ›^˜ÊZR pzŠ+.õ1¢øo«”ëÖµ%·XÀæ¡Ð”(lŒ ë KmbÚÿ”ŸWjV!Û³V"¼®§1ËD}ý`ùF¦`ÚÏrºqTgVnþ(ßç)Šßw‰C1í%¿iUá= ´ÙÊÊ„g% ñÚ—¨ƒÛî÷]š˜iÑa-X'm|óÎüà—{h»ï´¼Äss6ê×3Í'DRëàv¸ú¬õÚ0µ©s>ºÑQ$ÄÍ¿sEu#·!²¹ÀÆÈ@^Õ³1 ¦0Gè‚êørÈ}5 •ŸÖåŇØduKwM¹ÍÂÛÞ¯4dsÄñš ™¹@׳±Ñ¢îüz‰øîgü†¨jMåÅ‘˜õGÊàÀ¥qŽÆÙ‚Âl–C“’Wq”¾ÙqÇ##’$§UMwÊÓÿŠôøÍ;'|(œ†HWÁBÉÔý*.è¶=f9oŠéß ø4?àÅì].¹Z7Ôlƒ˜£t¼BŹ<Ũ0µÅÕísò÷ÑYÄ[(hwDzjáeŠUä+üJžüq“]í\WÏ‘ª/w`uMŽÎ£4î&rVr lä±ÿÊd¾L:ÉQñ"½ÕÇ$Ë€#5ø0¡ŒS¾Ó’äA™gàÕi[Ž/Së=§ò9:ÐQÖ€…­!É‚ÇÞT—°šZePÚìs_Žü@—6¦´yÓ_¥‘£Ì»é{Pü"–Fe¼&ïdù| TzÒX¬wͼ–cnª¶vç$ÈD¿¥ÿήž—fG2kcÔ7èNÜapr’åŦêüì»á6`Õ69òÕ™”.:&ÆtdæÒÎ? ~#Å,ç½V}§ñìdø…^€öÑŠ½Eÿg4pÝÁö9íx·ASt­W[*äÓáVÖy~WÆ ±æÕ¸(Œ§çú,i JF9vY…o“OSB`÷½Yj&uÁý¸äKþ î[vî>“*p- $rÉ…w­m`‰\(’`èx¬äöU6$ §ÖïYwî±…Ôâ®æ<¢WãÀ͖҆óbÅ«¾„×¥¸):RNB(2—äó–F ÜÈqE¹ÃÃÅÎ"ÔµÞ¡x†²ÏÞÍ|›æ·Ål˜­…ûv$õäŒö¤áDû3mó[Ô³"‰÷þŒf¦¨-}u`ÑÎ)a vi?¼b¥LKðbì_Jƒ®0¥Tê ÀâüèPaœÚK¬úJ•‰‘çŸS¢4óÜ.Ò«ú?aGxë¶)SµoŽýO¢ ¦&kš•,ªîýªÜâÔ/¯Nkc“4:ÝÈN…#ì^s®Îcxxx!„‹C¤Ö±ºìÃÚŽ¢Wck_A»©ÒT”žX…/Á,m┵›á5¨•úe«cd6® å§sS‚<Æ~6rjð¯Ùë«swn{&Š†^;¡Ì?ZÃyƒ_\¼£¡9ö '§âA/BÔƒx“Ò¿ ÏMm7À.©ÆàýÉ© +Iß,S—U +£2³4ƒ%Ân ôt ýuö¥:¥ ˆF¾arâ^|¸*VY/'ü'ñÔ_ô»Àáb1€~&‚ÝÒ‰ksÁdÃ-»½ Îó=Ô/‘#)âËã÷ÁDžOlŠçÖzî›éÍEì4$ +jËùÂÞf™,ôÚ³6ŠdÉ«Zv…Äfè—–rúÉjÈâFº†q½Þƒ¼bKàÿÓ‰"Í¥Lx’ùL1»õZlC‡'™F³­ªDèª}|\ýò…šty.á° à7åKn¾JrQDØ”–v”`œ“ ªö„Ž:rßк„D)½;Yv:ã9!Ú]?.D„ØŒï@Î1<‡T¸XÐZ¡³­r5…Dk×9 +°ã9'΄T2WLš[fÚ­ +” ù©ceº¦.% QáÏ&!)dÛ.ÑÏóé'…h„ÃÄÂþàP©“Ù«Âe£žä¤”¼ÞàuùJçÓ’à’wûN?ÐöÊà+¢9‹öâOmÌò×"xB1êlò‰‚¤G +qVþJ>pËd7ÁŠoæ3AЙ³‘Õ†b–¥drIˆxcb&¬4­¡Y{+#Ag¹ë=¯5ç•¢Ó!“Ü.åªìmþ,†t÷Øÿeܶ»ß—Ò»w@§Pžs“•Ð€ßŠx–ŸóÀ…bÞ@ºï3Üq÷G{†:ÇæÌÓÒrÅ€!3©Åáhè¶ HÁ "’;ÞöAˆ¿–(EßòÁÆÁIÁsÇ(-¼€rñ^˜Ë¯’{Â8"„ŽÅõÕ\¡“Õ<5I“¥U ÙÞ(B* ¼ÅÿŒb¸”àw Té•~dƒ=f¯‹]r]!õ1!€ÁØcòFÂý¾n(ùTòž°þww}¿þøb̔΀OªÈiŠçFpVÌò Ü×ZCüóftÿÚ¤âNx¡Ž(QÓ®ŒÿwÀÈÂþÿAèá¿~œ°/.F—kQNIk´ìŒpƒMÈ‘ðiÕ((UŸ¯ ©0Ô`ÀåV94¤ ‘…FV¯¦Ãê†&~žD³KõŒ‚ +ËýÇåóõÅÕvm‰ÒÚ µ»3M[2÷NpÛ1,)‹ë ñ2©©sÊR©¾…¸L¸2x/Å°²+pÎúW6a¹ªƒ®+‘ÀÆå‡æ2G˜lò™!âzŽe¹ör/™ žÑtÛÑ LV€ìJ‰z>b¢x”µEñãx[ÿâ޻㨬…4¿l´K&CïddL_ۢʪN&çBU7?J[Îþ/ çÆPt©Ÿ¡5ìÇAS:\Æâ5¶<ïL‹¢’“·êhr¥Â£«piÉÆ'Ä£ ‚3N|v‡éo—Œk+%™Ã°lyq謇È5ðžË¯Þ(z2áùj7Í̓ˆUÞíP˜¬Y0T[cªžÒo&kѲ=pci ž1Æ‚àÙ£»¯ÚY*o6a ñÀ‹õÆÈ·0$}‰4]QÅ=";s{~-z…ë‘QJ€øç"og ‰pX+“ŽØÚ1ºî¾sŸú2TP‰…nT³C3ßI 1(+úåŠëX±$r¯"ùÉ™îÔr²Â¸[`¦±>:9X»ÊQå°6m¿mY+{ ÉÌ2¢·¼ËrÖâÝxŒE±q›€04-GûÉÇ‘|qé›xºÁ†Þ.øHD³ß꙳DYç¿‚­Yý6nw_+߯‰ãpWÞ Å²y›Jkb©É»ÏÀ'<>–¡rc¹ð6›fºläA–í“Vç%ücUÕÝœÿ!ºégñ8›¬ùï§IahP²wP—>QaÝÕ¥Çhx˜ +¸HÂØ 'r°]¦=ÁZZk¯íÙÊô^%Ù£s§ú."ãy%®ÆÈv¨´ÀˆCkåx +95]!JYe«¿™[À¯B–¢7åpÖ뻺é†×“Ê@=ÓépŠL3\A| 3ëT·¢µ%'Ö?=„Ïn¹×aÖ”áGÇÑþpñËÆGD"FË'@V¯j!Ϫ;Ù?çhŠôeþ|(D¿ƒ.MTˆ ¯&JD1ˆCíh·õù¸+Ë-‚äëkÁÒc£÷žÈAëg–n›oOÝÿbè+ËãÔªÿJe;¥HLÆÂ߇ðñǘ‚Ö—…à€tô`'¸4é°9l•ÀE’z™ªAdSÞ|fÕÓGz•ÂI€>cÝœ–ø[.¯š@R±£‚ª.¢Dð Ýθe M.ö¢Z'HR¿E0à» ÆÏ[s +¦eèúåÏ–ìñH¨¡è»!/":ÙÖÙ-ÞK ¦¿C`þ¤dýéà¶öô’øÓª·â’Ž‡D=oàipŠ‚O³ N;7q v'—g®#1—ç'ÜEé(p…¢«qx;¤ß§{t«÷Z¬ ì‡ìxòº[~e¨Ë¯$ó+N1*GYGÅ~›6äÕrß²ò…;(DÃóÀÀû1XkELÏÞ0c&Áyëòd»ÕŒš¿œÜåDTøë2¦š"ÌžC9.K^ô:’Ž«´gGHø3O—%ôìÆñS3¦y+K¿•Ñß8]¹Ï€šÐ“]m,±€=†­‰-™0v}æÊVÆYn7¨} Åh•K.ý.¿•Ù¢¤HÙæV\½™EÚË0 +QÊaözÊ"±ã‡ó6óPú]ÑÎ6ÎUa-5f~­r[- Pò^Ïô3[Å. ˜Ãjy¤±XeTc˜9lÇåNëqó²ÖÇÝþýæC˜翴r晪?çé+xýk²*¼àÏáÃ1¯pß.‡"« Þ ˆU 0˜Åo³+ËÀ¿ Ž3WÀðXëÓ}®g¾âÄ+r•Ÿ{©Yò}Z;llÀü-’X”ù½™qŠœ³sþ>I ú\ÞŒÚàÏñ2ÃÏ3©¿Â…‡`XufI¤è°"c•ŒØzqðÈç„a-¼ð¼×šÉ2šÙ?HWÁ‰„Š;áú×)›.Õbª•LªmæÆS#?žÍº~îw³Ñ~íëŒeë|<±pNLO?ÁJ©éˆ«º²0Îøø¾ÌÃ_â‹~ÎnÑÐRþL¼ˆTTjÀå×Ód¾TærWÉîùyŒYØ1uô CjlfÓ_Û³•lF_E¹¯Ÿ”(ãi^rÆK<.ò;á¨axEçëCÔˆW…ÔÑð}Ý7<µzB&p¢• í˜ÉS(?£ËÖºY¡¬+¬ñWê=j›ì-™ö0…Ùh(ô!UöÈÁÈP¼COrŸy4Ë¢;Z¥¶Üõ±m% ÛžÒñ]<ë º!D¶îgÁLÜgç°³aŽìñ~ãzbg­ËFÕó Ê5Eºägë´eP2ÿ;6¥Ê÷™j. ÍÀ7XuÒ¢ (ÈÎÍ2„Ș #Æ$cèçWwÖ#1 ¸wo ±  Óo•·˜|1oòçaüº­d/5\ÀŽù²°96#lôÈ£W+÷¬|ýr…u`-ëþé>㤻8ÝÒî”g¼ÈÝnæâcÆ!ÜÓíÞPns´ã–úìcur?´ b]t(ƒnAI²×hÎRiÄD›¶L^äÎÏÒúõwA|5+: ±Ž+­Å§"(Û‰Es¤rã!Õ  +ˆ)î›ÖÖ}fÀî–²fÎ*o¤]‚y:«ÆC”LvRÀ|jÕ€Ý@õFÌ¥ù8DU›?QfÛP >EäoúßÒʤU›Œ˜x¹cDPï?æ8ÌKŽi6nC:‰˜S #ˆ®oÿPý$Ø~†½IØ»~E»gdøˆLÀ»ûû¶üå—Ãò)Õp+mÆ©Ô85¡/BDë2Ê+˜­¢¿‚Òà¨`šŠ™ýÔSWy`+Žé; ø·ÚÇ]‰ŒP~ùæ•ëyQçqËçßQÔfŽH)Hê­x•xm™åuÅ,Š],CLÝ»¡ƒUí>nOdv—IƒZëåˆhtòÖ#r8ãò»¥ò*ã.W/fBê•CÝo@4ƶR Nž_pI–¯;rÏ_²áË8áRh>gÒÏœWŸ^pºLUÀ{‹•¡ùVñLJ” ð‡mÿ^zÈCµÍ‘¶{î~\â‹åIy&Ÿsð>‘£kÚèër&Uç$ýå8Ëž•FD©9yáýº4ÅakÜ:byàéÆ "ú…é¥+Vî~'7{y‹.òÅ)j¿ÿ‹%¨Un5d¡ÍìñO\¥ºûÓúŸm4¥œ†ðVœörÝÓZ§¢ÊKUqA?üî)0%lR$íå"d°ÉÜbîc4¹‘šÖï/ÓŠ ¿NíÖߺºv#*iòär€œv’]UÆÇIDí!ôî!Â10>J\Ý•Åiœìw}9ç W¹„ìR=ä¾Âí¼}ÁÑ—ƒ}ÇɤEÜž§y°ˆú â횦)'íO²Ôxw.¦æn8nyBšI)·Ä*"¢&Œ¿Dë›ë_øTåláuÕÙ!­ìL1¥È¹ÕÈ rkÔñ }Á"„å¡=á­c"°Ž‚æ½òŸ%BÂ6ãnËÝóÆÜ’oäÀëþ“l¥Y¼,Žê¶õ-ò2ÊùÄ{d´pÆ·ZÌhdã=¿cGU´.ãŽi¡Ù(ù²Îþ ¨|tù.`!ÁמÍšLnSë£ÙŽÐä”fÞè‡ç£¨¾ì„¹’ÔZ&€ºÆ4—Å“É(±+xÒ¿h/è7—K¤¨UƨÍóQýi~”®õm7ÔŽiû>˜5—NT9“è€$‘x‰]"ºFà¤Ôm[îU#ßû`&ÅÔŽå@C3ZBþ'ñ£ÅŒDŠ¥S…•XpfÐcˆ.™‹ÜCQR®Üü˜o1£KÆ„£!VCKÌ*'óCv6i›_HYÑ=$§‚ÀÔ«„ff3Hº‰ñ«»8Ä„ÅN¶¨;Ĉõø†ãÅ}‡OåÇÄõlup¼ÜÓ_³"ëÌrƤ}Ä+T–MÅ0N{%9³A]_F|2n3$Œµ&1©Ã¹¨Ø|9fuewã“Ã}ÍÃѱ‚¬Øg} +z¤¨ð7Wü|ë}–Z°O|¨4¶?nï+QæƒT|ùÊwU9åòœ¼„‘=è×~SÚÎݬì +©„~ÌX¼ r1ˆ˜E'³¶Í¦Ž"žË†onÃ÷X±%Åu¦ÕUö ±‹XgØ~ǯÛSODGÀ5«zS†Xèú5™A¶lÐ0HÀ5÷ÀÅÇ34's+)boC¼(s +°×ÕSò"£°Ö½ÄrÓi3—O¬Ñ`×Î'¶§M^TßL¢/Ór³ØYƒÕ¯ g¡GP«„„µ, †Óåihë^²Òðüo SÐWèH߇…µí ×t°i7l~–¦‘$ñ"e—±LêïP|–“öf£ïG˜Tpi0Þ¸"ê˪ZÆx L‹/8CèŠà nZKäÜHcI Ïãì#ÿÇÁ_ÚWy;l´iÜqÃH‡QéÚ–”rCéq¬w7ôs*ƒ®´ðÓ/ÅÞ~Œ~2žR__L™•,@Ž(qØš03¡1øb*vŽ©YdblÚ},%§‹‰ˆošÜNã³O6IXØÞYæ{£¶#) ¶¡uùh¨u=:ƒTiV—>t£önq%³Õ¯DšÞYžÖ.O_(reÄbÅø@7"›÷8Ó›Œ`_¬ƒÉ%ˆ*FË{𕽙YÚµ¡¶r<àô­”Êó0iÖ( 5Ý¿íä9Üðň»PIÊ´Ñ‹ù³óà„/ßγWbz¾uc“i*c!jµj†îä†æ×ÝÐåŒø+ °Ê´&<·SÏ/í°€•k½ªŒSu«i±wH ¯D24@þ¹KùQ¹ðy"=²m¡ ¹+UR6Èy¥ò²ù/9+öúã„2ú Déµyœ$äNAÿ$ÍÓ;ÊDdÿ 6-A{ú¥ä1þƒ³µMjôm ‘a‡>šý4ÚòÚ±gØ}Ëê.‰>æž‚<~K=‰.,2z.àˆˆ1Ÿ!Nb_ ÍBH±]>¢7éÍ w°ZÁØ”½ì‡»–ÔìµL¹ç…À‡—«Eyщ> vS…Á">ö×ôÜñe(va߬ÏGŠ¶qLF*K(îã›÷b,0%u îN¹Ó±âɈÂ|xÖ­ËÅ8Ï·¨ÕlÞÏfýà½eªÓÕLRN6i96O@ßI)Ž5#©$ŠŽººï‰è,¦YYÇ3û%Ÿ'öŸz2ét„j¿¯ÒF½ÝóÃ^MìE—Y×ÓW_oüƲ”–ZŒ,:|ŽE¯€±~ .ärÎÒ’ôí bGAQ]”¢È)r”3¬ÝjYjkýCoQWï ¯7>œìªÿNMkÉH²wÒ YÐý—\ÒK©­Ù¿L¼6QN¼CX¬Û‹ó.Kð\nº£»ùÁRLO-úü6 Ïɺ*!; prц؆Û`¬^¨9>QµXíÚÜQ|e,þ$·/Òó¯ g}&w§½…ž%Ý}»\ïü|‚ɘÑ6¡;ÂWu^¤Öv®Oj0ºS¯‘åe÷ǯC{ŠÔòõ©^Í»Jõ6b!߈ó!¾Ý<á|Å%KTËé ãÐt·çTÄw¾t5²´•y¤ÑV–T®gŠ]ÜìDÌuyèɳÉtº={Å·ÙÛ " ®7ZñK7îðËM·œäsû€A¨s‰ƒ2¿¥hü˜é¤Å[¨® RŠuUaDë0¹ Žà +ÔÆM¡_èkL51ÿ%Šgµ  Js‘?³3,e‘œ…S/Goƒ®\í´e©ÕuðÖ¨GVh'e¯D$NÜyê +Êà@—mY\}±)À¨:{ÔÈ‘p3~X´Ÿ |5Ƶ´{±g6: +JMuÇ^” J&Üše†Ü¡Uzı42Ôm„ÑqNÆÿ+Aá +ÕuÝ,ë´iÔ 9§!•¹±—:}ÙSR¿2ë‡ÜsFý%ÚPŽ‘²î>€Ôà’رTøNmô=¾ø²#q&+E w lËßÁî÷¡ swGjGtYØ‹uH‹ï„áŽÁ|2ëá˧¿'–?ø#—¯ƒ(†IŸ™´Š’ó|4¥]£[÷„Ú 7Ç@ƒ›Wz!ÝÐ÷1³!TŽ)V~è•!¤ ´˜—8øuåAåõñðùÉÎH·zÑK¼(?%Ø¡ˆB+^Œo'Æ4 Í ?ìðúH¤NýÍ;t5°j½Š!uð2a†]ħۭ Ö¢gŸŠ7de×)I[œ-HÚj2¢wÁÀ~dþ¨.êP4¸á á΃y20·¶§ÕõØÕÐUƒD’¦]œdBc3ÈA{‹ÒìÅÐÛ®È_PÕÍ2aS"G¨W ‚6¬ƒ  ‰žáÑYì[xEv-þ7¾ñþò2ȤoïËõ‰¼ ôº¤ÕÙeVjôB?âM&%æFÎrX„x¿”p•Õ'ó¸Ö4qëõs–‰7)y ¸‘€ciý@#×q`’|ÿ•MêØäëÍo˜§ç>¦•Ø] 5£¯§ ÿ¸=\´y-n4¿ç„ ¯qåcVåh¬Êº~å6 ‰g»uêzÚ‘L +t.¨m¶,?.?3’z[79ê€Ýe¦?Ò 8à,qÈsŠÿDsm¸wIѶó—A=ùl²!àþ¸Ð*]VMY²?#˜®\/d„‹+á«e÷mˆœÔ{^š¿¶¬1åMظs÷eYÇaЫ1ÞØ™~*)Gg±B(2—äõ 8GÏŒ²1(aq7ݘâjsº”—DYÔ)kÃ¥„ac¯/ðSÁ7ŸD€#¬v¡óC»>aÏMÏÏØ}pj0‚|§BcnN/“± +o%¦]à¿/¶Û€ äùÇã늒îŸrê¿ÁÜ4É÷H4Ü4Î{!XéyOö‘ÏéGÎ\šQZÀ®*T©œ¥: E·31Ooá›dù¡É¾ªøÈÔVvjN=”>“çhâ!¾¥*2BC¶åÂØLůώ·yL€øÈêîŽÁy¾‡cüß RC‰›ô—KªJê2~óÚªé2¯qHm€¹ÔârÑU­TÞê‚b¶¨bÓGSŒKV<ùŠHY €‰èû;é^ø•†TUœÖÓ ³6¤è:²ífyv/Öƒ[mH¬¦. {‘k+õŠcYaq¤­°Ü-(£”w‘n$ÙœwÔH¬²Õûç~çŒõàµòjâçùÈèÄùñò®;•`Éß_æšs‡=“Ñ{_E£X§¡bgžR… +)*ÏÓeÈM‘Jq‡ÓXO×p19Ë9Á¿}—YÐ!:o6`|Ç!Ö¸¤SÐè&-\ľ!ýˆ©2|6 ؈E$‘{uau…“–S&5¹ŒP¡V„ù¼ÇšÖÛrUcY¨¶¿`Jýº¢hž™èú€™<(6ûY=§ÁÛÁ‹Ë‹¸FÁBÔ©K?Æó¥Fqª3vÌ),É# òƒ¶᪫};°ùÜ|ã­%ïcHã²Cø’Ä•š Ù¥/€Šgwšº…£Ø!ó%¨MÙÊú ®¯ +’}\}Üà=̲)ÄFxD=ïv1dbƸz6¨ÐRÒäz—%è2ùÅ/Yý½è‘Säá¼0bTË$U(Ë¿¤(»64Àe¤wxƒ•D¢âÑGØcgCRWcƒp±azuŒ¸ôž¥’ZáõqÒÔÈîID:ìÒºÍUµ1•] Ýt†9ÚÙù¿»î“¿+Îò5î9ÖÃÂì9ÜqO‰G›·‰\æó¦Ï‘2 ý û•s‚t„gC\ ì{¼ä´/7 d-¡tl)4JñüqRÌ †S^ŠjÑ,•ã^HùO—‘d'=N†Ž³†i¬¥wÝZ³¡”‚Ö”"ÒN´¤¨ýµ˜ä¶¶ +PUT?µ™àP[ÑVœÁ±ŠÓo2­2°W˜ þ"á&bWÚ¯ëÖz°ØMxÌ–DéÌŒ&:ПR~¬Oäë¶ûïƒøE; _äög! ¬·ù þwV‚5¡“õÓLõþR}5R•ÙVë›z“•IÙa9e˜dßö&Ìñ¢£b&gl\6©2‰Ûv[Qp2C|6Ð$Ì,>OrÿC†{¶"ãnNùPÒ‚%ÎFþ° ™@ù$× ¸¶Î*˜g°Û×X†§:¤][÷\JzœtÖ¢)¿æ¶¥+(àèõ*UNýÖruÃŒ¤ôaÆî‰nÈ…´;6ÌëŠËSl‚7íÂâÂI!’1ƒHrÜ{Aøh`Ý¡€ Ð~¸Ô˜Ö¶þR¥‹«hræδ!þp—±NJ[iÁouGˆ¶³ÃÂwmMÞ!ÇŒ\²ÆDÚ°&*I—‡Ð™¦`¶vbý=7|»ú3‡þ%ÏïCR’qJI*þ!Rü³‚j¬ôH›èÿ æ +ÿ„Ô_™F(Úåö߇O;èǹ +ŒDŒ;lB»Ç;q´KÖ¦µuÿ@¶ƒ™—Ïè_µ[V¬øäè­ûûÜ{K‡péb2'ŒI%s›£Ûã1Á!ù䤗{žùÁUÓ$È3¡®ôuJGU34n+Xa¯Võ‡4:¶¬åõMQ +Áqe@æZ.)G•z©¦3óŽ ×閺̱V†ÍºîöæC #T][™MýÞ\8³„YÒ ÌÁÁ‘Œ–½/þ` í4Dy¨a\/5:TîdÍ·i­`CNò‚BFÍK|u’u.¸c&;ýÏL±!Si¡ +o€§œ! ÂŸÀöí<çZ´àÁê Ön…Üešê–7V|ø/qŽ·ó¾±•êGÚQáèßYçÜ êÈuJâž®ZÈvÀÂhU•“üXÌç)lµÊÂGÝÉ6YýÎë‚ÎÖMùŒÈ@lXÿ XȆÒ€P=zyhq`.Ú1#7¾d*OèmË°i +À£”ëžòGõíóÎGï#qzÃ:”©K±¢œ¾fÕ*cqO}Ø…~öZô04yc.\µ¨V1¡ +ÐçD@Õs`Ñ1í‹”âüVMéœD|5ß×é¹lÝog•ÆOŬá‡Wë Zîr|Ë×/ݪ´`™{®Íäg +M.UÔ±8àž·Ò0Öî MüÐQTNìêC¯Ðp!l0ÀÎtº[X 6êÝ´O×Sis&õ +µNòÖ̲oà^1õâŽ[¬è „O~qð0ƒ»‰óó$Ý­e¼„HÉ7K#W]©¤3¡ŠA'Ês2åš*~2ò8’U°IR¹°Ýí1‹É©È©è×±¡Ö¿‰ÔÉ=¥…Ý/¥L ^a?t{ö£kŒ(´~¥¸ñ=È»!×¾2Ä‘x&Dˆ+l¾¿öGq +ôªuÃë]&LöF‘Ÿ>t‡™Ôœ0a*™2ñq,±¼ â á|CR;0̦Biª‘ +©ë–} 8,É’Ç”áv8v kþ²¹±fRÊ«6öZÄDΓ\º´1—5DœÂ«|Ÿe³.£:Ki‘»a*“ˆãLóšËKŒ"ëh€~°—Ä™mJê¬ëÞ=eêO6ÄÌÕç(Êx&¯$Ÿ”°»½Èù]Üÿð9Õàñzyv–eÇA~).÷™Ú‹\xb•uDèHD ~ܽýÓ{SÒE=Û‘ÝÂñg¸óƒB/“Û! i»jèœEP{á±dÁÒO³òè@‡ý/ÕG ˜#\ËBVv^ÌÌ´„½gÏ#ôôî:.¹‹ë\!PV“ý8 Bðw§_ÍÞå"³D_ ®i±‡övÍ/眊0ùÜÚ}ɤE…A5ÞÂ?6Ù©Rå.^iG‹ŒdY+Ή† +lºŠ±Ë2©îwA+žFçùË!‹á¶p묹Èwñ,û1ÚÛb­àf41`35 +¡?„tÃ"Þk¼ˆe•bÂA¢ñÏÖt-NÈ÷¿æŠ'Öå“‹˜µ/‘ô5ÍDu ,8OÜ/ôµÔ³½y6OEÝžT²±Ã¡%—RuäÓ“õó–ö{ŠÏCœ«þêÊHE?w옒¦;´­Á•3€{ÔÁÏÒŠ½£¤¹Œ%´ž®)£®Ûcð +ï¡|å5`}³*y—=ê±Ïð_à¾Ôy^@ÞïíûGÒ6ñßHŽ© Iš‡À­žML·³êx¾ÊMÚ9¤Ens4|Ã6ð"ˆSKd:d>Šƒ€)è2ð§ú'Êæd „ñêS™Šþ¬DGWDM'½Þˆ:Á(þlé<Î-þe‹ +rϱT7v%µ’OSpéÁ? +fˆÉOöñ©u;ìíûgCš÷Ó·°$ß]ì«£SòXCÁk&•D[•¦§Ht…¢uÕ«kýöj=Ê< *i’¿¬  ¦k†:…¥õ”×áýˆ³™<«¼™%Í㜠¦T×"Xðoµ+…ŠœŸ¾ ‰aÕ¼¼lŸ²³˜:Û“ŸÃݪÆ>–¬Ú¯,ùJmþÛ›Œ½ÀÑFÂÌtOW7|n•¬;t†5–ú4% 8Epdðt*-•ã@ 2› ø‘ÓÓÛUöM ;¶5ÓÆK ƒ_̤ÎÙH4G’yîÎ8ÓÛé“# +âJÈì°?ª©‹ý‰j:¦wÜ_Î6ÚXb²š2±„÷2u™Å (†9¹‡Ž¾4mÏxy7„H–â…:™"'Çæî?d[2ÀÆÅš†²bŽ»ŸˆÎ>Ú%Œ½C¨# +yzÎ87m°2}+3ÃzéâÏý°úÓaÄ• †Ê5g3ðIguTûãœÃÔ˜§Ó¤- óy#tbci4Ýñ2§½ŠÙ™N–2iÃÝñ¦qpËEò¬Ì]–ŒÞ#ƸòÒ< +ž üŸ‡£'?¸WZ`}çõÍ0(7ºIåŽ ù>Î÷9,ÍL=¼>âÖ¡…îjR£˜'W½…£{=cìüœˆ]cƒU×n Õážìz;¦ã¸¼z`„¤NýÍ;t5³ò3Þô à‚µD´¯q'êm[õ sVØt´åm?öPá¶ÆN%6;dl¸>yÕoå«® g©Wu—uÃòKµ=d<ŸrÑïVOJ{U„E¾5nË)»5Ѐ}Æ¡u¡Ìb§;4GƒÐe ¼³K:âwè?$S/’(À½àŽR‰ççjíù„ +‹td\7îiFŠÖHßuc ^)‘,×æ6.R‹ò!þJr¬‚+5²ç™ž\ÔÎZ_¯–"æ»ÔÁ1n^v&¡·¶ú¬t¥ØôwtÞ:Êá“jaê1¬¦O¤m¿Ì«uJvù^ÉvW/ä@×íÆëÍ*ðÕm\³Ù +è™S¯çΡXéž7äw;V\ÒîLÂÀVÅÿì0Ç~pôÒõÆ×ôFdÀ n×3 m õW'ÝTôWéÂÒÚ-Ò…³‚òÀ +àEk £6 +Ù™B m°ý‡(ÏG¡ƒÖ€˜à…v¾]{øhàe‹*¦pÔ‘•GÖb}šNíY86Ü”OFÒl>c|ÈX˜–ÖïëÉ™sÕWQןÁ;/§æv”^V’3P»¬ ÷Îñ{9û*—¬mˆ+ÚŒ&iø°qœ!­Õ.¶Åí‹Dð÷În0=*›æõs»¨’²§D–nA´%õñ®\Ô¢ýÐÝ𤞻Ÿ +سÔmᜣÎ,'õ‹Žl»iJzRW6—MÌ…çʹ=ëà›²;h…ö“˜oÅû9Aib&%òI:Ù^+ÿлé\Ó!OwãQu7 q“CºKAÉ¿nu_õ¥oï˜ÎWlÌ)§`UÆvLcÃç4Y ƒ&ú¡~«sOÓ0Ô¤KYñ¶ô~œŽ\))½ÇîöØhFD“ßF®ë-È"ötø{Œ~G¶4$CK† +ã® ïŸ 3ÄYë¨} +BO÷15=ËÛâH‘AøÅÏ’Xúé÷º2YÀrg2JWùb+é8Ñ“y—L¾ ïý–Ã¥¹b~Âÿï'ƒÄÌ5g€U?ŽÔnZˆ]ÏÊPBg+¡y¡%öTß[ù”µ®mh¶÷̉ê¯X[—î +…Ê—¶´ +ÀÕ-Š#«Z Ö¦XVÇ™IƒgÈìmk`j¼óßÜ£5§Z⤜Ðí㉠Œ̵ÿÙŽ¸Ôc-“yó16¿‘÷IÇkoŠyÄÙîop†…ƒ)ªÓDZÛÝ­áŒÌïf†®H/X€Š¨:Š3„Þ÷§÷<]KAåíú>QøÐbY¦{w§ OUØ„1˜žÅ#ŒUAk ß@Ø΢wÛzº{ +ÉùIb©Y)I£ÓÀcg³óÒCK$JŒ¥ù÷vð»"2º%ŸÉ .gmÀ„öÞ^½:Ò¿âÔ8Á¨p¯¾ŠI©Ñ¾ËŒY©ôv?%f§¥¦ÁTÚ-‰›vòUlíÆsò úBs@{\”=»Fôsõž•H#´ûk +§ˆŠ?Ie¦g¸*ÇÑüWY9>![õ¿@áªæ™¯7„«[EÙI"¥³Õáx¶#X¿^%öQÓõdK¶úl{]´Yvf Ì™ùTªÖñ„:Å©Y‹q½äoÀ´à±qn+ORN'¾Ç°Q¼WòBéðwÔ&ú@s¦…'ŒYˆÛ9iô.”ÏD×ÒKgŸ?8Jz-Aˆ+Ò0¿ +Sàp¨Õy½.+¼ÓŒo[+ /SºÇ¢¬T…½ÿ úÜ WµñO«"¥zfiVD#ñø£«ZìZTž¥psSõ ö„Ìþð¿±HázÂotŽÌ½Hwì–ïrÇIÍ(!M„ª zŽmY·²ª={²·Lߊ7œ"1r1††ížDŽ[Ê&Æ…âÇ%‚>åÒ``p×Ý`^R h½WÝ\Á[ŽP)1s¥‡19ûùdzÆn¿—Là‰`GVÚÔ*}îËuÂõtnü¥°.s óÊ¿yýTôÖ$ÉILz[$ }ãýWHy¥Öá·. áÿâ 0Âsê[ƒíjú\9BxC’¯ÁD°]ørëŠ+K¾t0ýf3È©—y=¬ŽÌmH[(úø¥”äß²3/7šåÀ{éçL#E»#;AIÃ`k±ü9Ë_ßçCÔÏ‘Œ_Xß6N)aQ`XøLÊxJõü>³òÙôû‡Ø‹1ê*¦ÄwQ˜†ý¬óˆƒKoã¼’'…IãÕã0nxQ¾¦b ÐÁÂÆïÒ)7’Èc²1’d kG20,?‡ô’71˜³`éÕÑî³ûßÞË< +…<–kü5€Ä]53µR_ƬۮôVxO¥9òJåw{ám™8že‰ 3ñÀõŽ;´Ò °²­©èy{‹‰@[T¯=·}Çw„–½(aÛ•-‘Õ?^ß›xyƒ–¤rfI áJ°J¹¦˜ŸòB¿¨›Ãý¿¬WÒ®á£M¥õ\SâÌ¡‰Ê™R$¶ÇDÎ[±§öê$X-mךl¾u¬iƒ`0íZèåaW_ÿb»óÔSÑR–Å-J&ö%ÞyŸ_!í>‹´ùJöÌÃüȃEÁ®ôßa„êñ X%”‹~Fz¯¨× +îQë +½î¬”¿6¦ÃV +)|½“Áøzèâïì`I¾­&½´^ÎSåÆ“wë¼Lº­¯Ià˜aG†$¡NÁ')ØÌ·‡NÁn>p±%=EÁMþâK+§„ñ3$ÛU‰£J}‚Ç[œdEjˆøuL?¥|XÞ¿´\z<>ÍÝ4pÄ•B åJ2Q—àÂ/ Æ%KÇanéÃD¡>coEZ%h«°ÀUä§ß.cÃTþíÏÕ|vÆHŸv;£=Ï€…éŸ/™)RŒèX‹‚RáÇNAûÏ¡‡úg¿ÓðôNŠgEžFävéÙ¶Bà“3b«\µƒ5³pÉBÍÁ._ã'ér‹|÷õèÖN|ûOš3.bž«ÉºEQûš ±H> +´½ðktôäšyN"S¥HOh}/9ôϘÞò•s æÅITîPÇ"~ï6Š-º¦-ÎLßÒÀeã)3j5Z›ØåÒÉW?“©éFî™ +w­‡tW&ÉTÇç›Ø'ðáí’TQ= ®ê8±c’”iTÊ8ÈjG=N¦íip@J-x„…îê³<54ŸÛÀèkGd%PY&½Îüb×(eÈ°&4ãàn³jO’Ô0Ó®Â2µ@ïj¥…ˆ ü`5ÙeþB|No¹Ít_šŒññjöØéDJpRsÖ’áÞ.š…ê´‘QI‚!Ö‰Ö²:e}eï½RÌ#sPŽ/õ5]ç"]í˜õÎÞ8é ^p ‚)äifVä6Fü”5¹eÎÀ¬àܘ#¼íëÁÙׯàæµÕƒÒÉÄ6{·L¢E\{†|6ŒîÐ){…Ö#$ÎYWÜl‘H™wé…H6Ûá8có¯ÄmTpZÈÇ¥Òøдï±uÿ¿’‘µšRWw.Q-ïæ §K,§ÌëI[¸Óäžø +Ôc\—2†¿dÞK*6ËÅ¢2_½=ý» 9x@÷¸ ‘%)ÁM¥ÝÇOL-²Æ›h&øùí÷jÍÕ5£2*aæ¼Z¢ÎA’ASe£{°lTLCøößb*â¡Óºn¡œ¥Š"vRŠXDÍó‘RÔÉãÙ^mIt0;™D KØQ¶ –!±h‘_„Ë×á€Îo«Ipör¡²Ýà¨jc°Õª“$‰EŽ~ ýÙ>YI!âcŸ6ñ¿0t’zb«þù(Xºh+¹YëWQ—™_Z»xL•\Àššò‹× °{mUÌ. ©sƒùÓÓé+ÛP ðÔÓMe¼û¢ âԢ͟6_Ñ^ è“f6 V\½ôqû[= W¤à=zèv¼ÙèssÀr‹kŸ,B:õW¼c¿Ã²t0§ªbÜLqáíüˆ&6#Έú^ ÁÑ&ÞrTMK_,óû¤:D §µ¨;»Ð˜÷¼À×ì°­[GЄœëBaFÛ¯8eì ι…ÜätV2‚e'+‚¾€ÁJ$¤„Ô“ÀÕµ…þ´•ëœ>LyPÏp:„9"q˜"nÚ«Ð|†*ÙêX?èýS‚²ÄÂjúN÷Él®M’€Õ)³ˆ`ñòcL7¹Ó«®ò.ͯ?àJläá +õ.a›31*.¾CoÖqW.{˜“©ÆÏäbÓàÞ•rM£” ¬ï ¢×cøIŒâq›µ—(ã%š`.AËDcyÙ‚BI½ƒˆg?ꃑÞd"·9,d£V³*xýþ£ëU…w{LÓ$tǦJcÝ ] +Ðç!VÝä ™j\yºút©¦4ÅØ-2W-™Ÿ%Tføòe³¾!†3VèqÏ!?H6`ŸÏŸ \V³Ö'ƒ–|µQËö¼­òZ4?ª¶‚ÓO3ͺ)ÅyóAýbj¯8&tÿôý”ÞL\y[Ãz¡–-ºÍ \©äÁr ö¨[>û^úE´?X„,^ÖÂܼt,K‡ÜÐ󔨾?¢¦ä´äixýç•`ÃË™ÅÉkÆ #ú–Uƒ"Ø$àcøèüƒõp˜@q® åñ’öBÚ Nq0úê­W?ÆRqŒspŸéð'~çØZhmëÌÂýç"ôÙ‹_º 5¹@M¬–?ù ê.æ*‹ ÊewµzºÉß™åž çP÷éüí¼XÏw‹ªq²»êþD$»úŒ>F*‰è§ÊÔ[eSù« ÀCŒ_š°ÎOþàaÍ¿Þ”Ú£Wn$ØžáôP¿SǺmíSý¸™sµ×´×~ØSÔHiCfÍ*rMä0Å,5bÕk0pÛurÂV'WfTn(Y¢Oì´ð˜,Ûb½ö±XŸ'dÇ—;@Ð!Â,ƒ-&%êÀYé°÷éž™K,Õ‹C^è+–ûˆõ ûBJo‡š˜e )ê>vÃ'”ðÊU²Û‡õ«ñ×%U¹A¯ãG˜hÂÛÝX?o½¥»Ðv¬%LìëÇÏàÙ[-x›Zfñ3,j«t\¤ æ‘SOcák!`¢¼„!º²c›#ä{|êÈÝÔ\éxT—ç dA¢’70þ•t3òb¨þbY¿Ç¬þ‰è!ýÔ¦”}š´Ãª×®US@vÌòc>Ü®¹¨IÖ'Ãò$8ÒÝÍ)(5›b1Æžm;º(±:ÑEPź/§Ü3‘Üù—ö(<¹ (_¬r‡5Yî1Ú¸ &–‹†3n¬âRkf¼8°Ì–ÇúÄìÄ€EÁ·Qgìâ(öf@Þ½¬Ä]GÖ.oëö‹ +ø›wäŽ]ïn8 'atò©KI}âÁ&øCüpß«•ôP ®™T'“2ôvÿ@e±ž¶ +s½³hû'@‡ÚÜRU3X˫ΑÐshwóþš³³ÚF‹™Ã”´°:ÚµáF2Ÿ[~„¼Zu%[ÌRL(fû€UÉì~ñíþfCü×õ^r”ûî r—¹-+:}:©½×÷]W.fm·¾÷QÒ +úZÒàü˜WÖÁT}©¨nSv+¹V†D0ˆk±Gã,ŒÊ‚kíw¹y`ç +ó»ßhÌ@4Áü p1fÁ%BÆGÌô˜«ýÙYBõî{ÿÊêGO&`“ +°¿?µ·ƒüâaXîˆg”HrdWGlM‚©Ìó2AËF<Ä*Îèb´ýP‹@•¡Àóᩈý§8áއĤÁ…¸x37ßN¼ ”ÐX¿ÙuÉ"?E¼zZá¬|qbuAX²€‡•ª‚’„÷BŽT2üAË$ˆCí{ÑhŠ¹*à,–bM^¨šøŠŒÿÞáa äh)©‰2ÍØ*M=·«Ñ -Ç¿YÝ4^à”`Ƚ 6¼ˆN­¹§lÞQ¬²Òy”É i®9'ÐÖªÆA~–£Hˆ$!’&û¶":] . ‰'13CÓ)“Ó·îX$¸$Ï~®Ö#g©³À$‘+/õTù€Ìê†e1¨!0BðJ¬TËò\”Á4æ†É+qù©Ýú B&åÔÅ% -È«ÆÄz¬­¤¬¿„„[a1ŠkDNž¤OƘc—®|#|{óa€ç}¸‡NŽ>F­6!—Ž ¡ºk,|Á­ñæh;/L+©ySŸáø¢ƒ,vjbß¹B "bîö3Iûä\½ÃsÉÕ/ßÞçì@ „ídiÀ|­wöëæü…ÈЩt'±ÓAÌ·x,[KëÖ–3LÛqp¤#øH‡ìàÕRV{õ„—ìé£%LŠŒQM[LJ§•YÊ‹5ÐfÉ;Å7º +£"ÙodIH +&Åd_$T–ó&œXòæŸA(Rœ?ƒ‰//¡€¦ïY @§Î‡5ñ#ÜC'­ÚrWVÈ hïi³Øö¸þ~7èÊ—icÒt>¹¿Cæ!µàÁóú0MBä1‚eÎþp[Ìj–>šQÚIFPBh,y;tEKër¡6#ÏõÿèuKÔR PšÓˆÔ#_ë¬È5#áýÐ0.:E™bá6ŒùÇêÀ ôIÝÞñ9Ôéaœ Ÿ»´\$&€tÐþÂ.KpàìθKа­j{ÂÊ â Å€<î¯ þRQ—.¿O/“àÿÕœdzó‘Ý“hN#«Å‹æ™æMÏ$îÝÁ}öy4šî@ËÿuµÚMÕT"¿1»wGjSôôœ¢ÃÖ~CstIZó ³š#uA͇8êr{gíÖš`¾LH7§˜’WŒ‚ÑOQÆNqýZÔ­ÌøP·ø= ¼ú¬š Ì~‹š%×RLõ@ц·óóÕ;ttûIPHjL± ô#O·º™o•Sw~3Cô ’«GÆctô«Ña ¿’tÌQÓîÇR"ò¥0mMvdq‰3ïì"ª)c'¢{´óF© ‹\hº(v³Oèc^FäµáÃI&”ÝøPôÞ§›“X{j›ÿä»ãdCfÚª¤uꉴ ÚÍVB;¿€Žjâd×r#?%rŠ»,Ø2T)¹‡©¿¸bïÚS±¨9Nþ¼@ ÌŶ]z„œºópžÃàm¨{UÊÈ‘“AãÙ¯¨ 8ey[µ-e)¯"zð°D«Òm~…òÞÃØÖ‡#ª÷?l¯vOý¥ µ7VÜTО¸hæ=|lM¥¯sDBçkîÂÔjt³!¼Ù9v—õÍVˀ̈¼½ÔKù¡W•]õk}!-cÑ¡õÃ?ž¦-wô·žöí¬Æt6¦ýï*iÐSß¡|Ɉ§¡ƒâkËåóí-SÎÖ[£¹Z­o@_ÞÓº˜,OÃ|ÉLœií¥þm>:Vf…$gú¿tžï¡ª«â£,¥{`— Ú”1 ³-unÈï¬ÕÏY³±^7RYMYáÄŠûÞo§3¹³ÀЭå¸.àƒ¸ÏXï£Øx­ºÅ¥}}òqä­·äØ‘e)²°KÏ»H_U÷#F£ÔyJŽXðÖÝZ†sà'‰îšÓcÅ< ç0ƒ‹Å¦/Èà ÿýÃïy»Ga`ê£?Ï¢, +JZRêÏ+–/¯¬º–2…Ëü.©j†ôìŠR +[—dXsFŸ‹¢:æ<àVÛ+b7וQ[úGèM¼–‹=Qìj°ÙÊÏë±g¼"œöÉÑõ† §×®Ý‰[n6?,Á¼_xôšçÅê“R'Ü»sÐÃà +?=MÃÏÐæFš½‰Ž@Â:Ì«2ËkKÖêQÁÄÉ ¡Ur C‰òNt*¾8)¶Ž… ,d¤F*¶‘'pQ>L„:Ÿ÷lÝL,j|'Õ7ˆ˜Ó9˵Ì3¢žliRVòÙ0":„=jGK¢Rá9ö²£òÚÁÅ'Nª×$;ø¹y˜dЃ©ñŒ#£ +æ r´`³m\J²ò´³3ò€%b´dëÞQ™¬0qrù“žÁB$Z¤ù$‚Zïò™ykÁGq0m¦ý tÒà¨Q³WuðéG endstream endobj -2243 0 obj +2249 0 obj << -/Length1 1494 -/Length2 2555 +/Length1 1776 +/Length2 19027 /Length3 0 -/Length 4049 ->> -stream -%!PS-AdobeFont-1.0: CMTT8 003.002 -%%Title: CMTT8 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT8. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. +/Length 20803 +>> +stream +%!PS-AdobeFont-1.0: LMMono8-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 %%EndComments -FontDirectory/CMTT8 known{/CMTT8 findfont dup/UniqueID known{dup -/UniqueID get 5000830 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/LMMono8-Regular known{/LMMono8-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /HZGQIC+CMTT8 def -/FontBBox {-5 -232 545 699 }readonly def -/PaintType 0 def +17 dict begin /FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT8.) readonly def -/FullName (CMTT8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono8-Regular)readonly def +/FamilyName(LMMono8)readonly def +/Weight(Normal)readonly def /isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def +/ItalicAngle 0 def +/UnderlinePosition -133 def +/UnderlineThickness 61 def end readonly def +/FontName /EOXOPS+LMMono8-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 98 /b put dup 99 /c put +dup 100 /d put dup 101 /e put dup 105 /i put dup 108 /l put @@ -32423,57 +32509,137 @@ dup 114 /r put dup 115 /s put dup 116 /t put readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-456 -320 743 1014}readonly def currentdict end currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÎ24 ÆòŠôWäEvçQ‚C<ùó3£‹ØAÀÔæ‹ùàë2¨ÿ·kX0k^ß|™‹:Ù´¼fbã,|Ð=úësLu2æK¿¿Z`3ndgï¸RÈwô@Ó),qñåÕœéG<&¸®÷­hï'¶ì. ΋883 „½Aœ½®B±AÓÔ¾I$sò@Îí“Féù™ÅË25âÆÚª,iá™êê pKôœê>˜èÂ6K`Ð Ó%äÂEû(‚ô¼„(bsÌP’ù,‰‚…³âW‹K¼T"0KDǯæ¯Ò–Š›¤‹kIU–ܨf/+WN/ƒÐr’±Ú4÷¨½qðÕW@À¹d³­ÌO ŽÅá¦G|Babhyè52+ÙÌ2›¿up·a²,-ôIÅ"‰³ðü±ŸMC㉮à0×’v\’›ÝàäG’‰\¯% ØŠZ\+;í7t›‹ÊaßmŒJsX÷€Œ´Pcû0ÛNqËL¬ÌÙÄì%®‚tãW‡tåį,ëœ×Çñ ‹);âbÈë»õõ&L¸î}NœÖ²òGÒi$ß²:[´<+s\6qõG•úq° Ô±%E~@‹kÖ´ðøÉÖÎþ„÷[iYKÆq[Ž‡× Pvø£brÒÔ~ÍÇã™Æà1zŽ¼6‚ð>)廄¾\û¯o¶xob÷Bi€n\!¸[ï(;¼"0¸¾ª:È÷7w…Ð yqMom¥D‰$cºqÎKRXr šÿÁc¶À3–m¢½ƒ‘œx]Ï€¦òï†â‚F†Ð…»í4_~nµ} VìF¤çuM;¹²[¹©)(6!^c«0Ü?;´´ïÜmÖXþ¯æBö󈊄±èÐ<ür#£ƒæ5ªö\ÇÖýAµÎçþÝzñ­‰¢ÄÝ!»±C`0î~°îȾÆUt[¡ijÛÏÖAsÞÅТ3X¥ñº´‘ûh‹ ŸQ‹;l:²´†hAßyÑPñw¢Š_R˜4žEwv½a¿XåäI› Íf£ö”JÀ{‰ï“ùþc -©šû“ÓTƒXЂ¯?6ß_×ãe—–?[=‰Ük³§ºDÅC³ÌàDר-'íÜþ¶Þ¥²_:mȹw‡à¬i)EÝ -É!Ã.¬â(’4G¶Å×gÿÐMwùÀÜŠeŸªãoðtn“¹Eí§Êy¡xÕ<ý¼PqÝ;AÌ÷Üâê >OÍÈ8‚}y•€f€2r¹ÏÇD§˜Õ’ù%Æs¾}w`À ÛÓ°ß’Ö/3x”Œ®‡Á6& ¨?ügçÙ‰¦óÊ.Ö\YEIIö~Å:Iß`àÔ‰ôŽž—Òµläæ±WI1‚{6oy"˜®Þ¤ûüW[ Í—¢#@xsä*¨·å®“dæÎ4]'oK·è›%~%j¼Ã{ž|FA1¨àà´@Æ*z}òÔ\1±ì3©¤%ÑÍuÖ}jyÌ<=í/Þ ê6l§@CC³À \+ýÄFè!} †kåŠ9ÓI ”F _’›îW˜ùÚª+Ìš~Ø"'K²È["ŞР˜öººß4§³±]#)Ÿ±¥»ý l'ª¹iÓ¥Úì¡åj§I:]Ïe± '®{—°½åͲ™}ÃÏÙÀŸïü¶Ù|€+¾ÁÙn­ Ð³Î™Yçòé0ܬªs¦d¨u¦;?äDz~Å!À3È·gÒÎǯ^@œ³¼Üe¥Ã×xƒ¯òÔVa؉ýåH±aÄŽqO*K{ŸÚà¼Ú‰¼ó Ð%½8;'FJŠ`‰K¼»!-%l•ëR,áܽ†x!öòÅz¤÷á ‡óóCêB!ê1¾ß@÷¾ãùÍ K¾=\ßߪðb•(m¿Å4ôwÇPòZh6?@„L½C@²äÊ8uwç1ÆrÇ¿è¶ù©Ì$ïÊBóKÅ„ÂØ -&Ì¡‰ç·Y5<1B îdlaà;À«9^¿'l„Hn,³ÛúºW˜÷ƒ{ÐÊY³µ¬Ô[œvñ +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿[úKª•LI5Œƒ(¬Ú¶Ÿª>H·Vhg!ÁM8óyiÆ4´óW~Ή\ef5S›ƒDy¼îè ™/ÇÓs©jeX¨Qö²yýsÜC´rny,qš€ÀwʘNó>~ï:Þ„¡Ó98ˆ>Æ0—jìÐõãºE™ Û¸t–†”=ÎøxÌqÚ¡×ÍæsaÐ2Ô… )–cH.#{2­ÐVí°”ñ#ØB¦9Ü;öà‡êT§ðÿO›z9R¸BѹŠ:µ2@)s¼UFìŒÒïÔÕEº’»+¹ÓöŸÑ~`Nc’ŒdÙ`À§XXyÿ¯R1ð×T›ŽuGxei}¯¯'h©YÌ°®ëC·s¤ +E€ˆåψ#†poyL0 !~DðûÍ,ÃîYÀÙJC–Þ}”¦rH6¿ÓŒeN Ó¸l¥HŸñ¸È>·Mtô·Ùn¨cÈð=¤,LØ¡ šÛv~ÉÞž(… v”w¥*B¤@nx̽J 9܇A•&oóĬ‚ßžßIŸdyz„Ézg ªðNž•ÏA¿î +ÿ})/Äþ¹Ñ‘Z=q·´çx +ÞxG~½ýÇÞÕÆ»xzòˆW™…5@CütÕ¾ÞЈTîG©=ظçð’½A¸DÁÅ\g1*mÃaXŒÃç‹ò΃Þf»Rý +žàåqõÎ÷uú`e(Å¡Ž"av‘. œ{‰ÔL¸¤#eå¼ÇÓ(ìvŸKL9’¯ëeÛLHAkά&™õI¡ú§á0Çï¢q\JL›hÞÑ(Y|o=æ£6¦‘[aEáðŒfÄ£àI>8É»{Oæ*dÉofkÒ¢fŸ8V”J:_#w¾’.yŽÿoPxY/Ûð±T‚0RÀ|K¸ °Yk+qœÅHfƺ'/,þá:Üõ¡¿rÌSW÷UÄŽIôtG`㚺ÏÓý +¥Û¦IÄB£î“á6mz ñ|ÝrÍ3|«=5­º#“y.‚ø•E\®!å.³î´Z&f>hn§<¤gØ:Ù7Œ¥SÈЋk4ûóÝŸìH™ŽÔ"ç{¹–¹§ â 1{—Z«ðß›Cp¶Ä1¯(:_H.VO1|€¬ÞeøôXFu£ÅýÅ>·fÊŒ PbÄ—¨ÅÁsqM?&ÉÓ§40%s»’CdŠâVœö÷ŽL¬¬Û>Ù½Íxņz±çÐ=5Õ …ˆ[R@r®v¦yêD{”Û\²rÐå\,‰À­µÊäçšwHç¼ £ÆM³vÔ†€`ù02¶Šîwšãñ%}ôfõ‘dUu$†¸xž”ÐÑô ñVú¨–E¡C¹Ò¥\J£¸Xóø%x¬oü’ n»NKPŠ1:¹ënIüFZ8„Äwö¯ÓîG‰£uuÔð…YS24¶—_Û¼¦7ÌÐh¨gs£ûtÐ}Õ—/¨+çS+ÑœýÖ’…¿r_²)úÅ°F3fä˜È(ÍåQì³ÈÜÉ0$ù%ØÒí±Â²EÍb*K”Vü‰˜0Ö Ã#x [Èô&ü&ÕQÕí>°Ñ"@ høILÆ´1ºð€MƒR~ÎzÊÊY¹æWúžì¿@÷Ÿ¾†_€¯Ž”, Ý„|‚`Ù mœîD™ØÂÄm3,ÝU°waÞsIz;H"žëšÅäð%¦)‰ÉNyŽàëtk#Ë¢¢•$ò¢žáˆUÒ/¢µG€ü»I8n¹<µjÝVõõ«3/Á~«Öä%ÊTE\·þÅ}@çve)°`_QÐf(IñO.»ì„ÉØ9Ï’1ÔÞ”+yQß>wîá'"ùq/šˆÛ¨3 dn˜_¢Ìûºy닇œ×/âµPŸÿBþkN[hý­†UmzIÆZ+(°0Ìëû’Æþ/ëë-AFà¥2²wȧ=¯€\U®Bwè[<‡†á•D›ÌFßÏË.Ô5fù Á²Í‹YAsM@FC=€ÞÎù×oÚ£;©Îܲ*;ŒS}2µbâ»*—0/çP‘aô…˶ÓxÀ¯†€ØŽtHa5#Qû΋Û+™òl_B§‰Ö"Ìâ@ŽÈOC*rÙù1Ün:ñ)lQ‹_{ϵXV°üv&Ô.{e¬zÜF•<ØÓpòâ×+^àÃð:`:!jù}Gyì¨1Rx°´Ñ£ÞžÁ;DŸË×ÖwLõêS*¨†ì ƒžMÞÖ°RÐuÄvçy+Wîð.ðÛ?I²+(Ž`›Cwc‚Ä8“b®§þNc{E)\:}WŒj3v¹w-wù’¸Œ=Ã-õT/‡zÈ[ÿ"yL•Û­ +· üñÒô/oªà>¥<´$ã·aéu­¸þ5Gž ÍÝàÑQ@çÄO0LÓàZ…’ Õ÷Ù>D¹É” +‘¥”õ¡ªŠ_âÍOæXÛçGsš ’ïnÇNºl² +ÃüÍãÆ»žýÔ°Óf{_Ük㣀Sx„Ã2c,ÜÇPþ`«ÐöMÁ›á6€Ë~Ȥ¡ãTKÀàa2YÓö–cÿÞ¦Mkb;c1nŽ=-îšøøîȺ—! HíñDyЫåä4‰~,%ÉlOxôÐd4`ì•&É*í4@Ý9¸(ºóæRjýX3;UnóØü­G”G:e1ïO#FWÐR²&©a ˆ¤šßÓÄ)Ò×gJbêÍË»8GôAh–Ì‘q¤^]ÏÞŸNÍiý2YÔÈXœüŸnñq©¤ú@ ¶W…‰ëˆôRõa“ÉÖÓW*ªÅZ@Xl¤ùeª*ûViik +HRÆsìÆ,¨øáJyYstÜK!]~À•ëèj9áîD˜·ø®¿h¦iL$VgÄmQn¬pJot$žŸ^·Ê7€žïÃ?Í¿ŸBö_àiNQ"1 Çø#ì)I@dJÖtD¤¨¸Rü\‹u^¦ÿXè\VÉ|4{çð¦ÿ#_ÈdQ$zÏŒ‚c³sywFeOÁnØéšãOÕ#-J£/ÈC•Zй?’F/•³¸Ï÷3ïÀ†MÄÍI› SM3È""oÁ™Òaéàn!(9„óÆE_ÅRG›qrm{+ÇÕ>&ÄðöBퟔmr4Å| dlv3=>õ­y9äçT¾°Kù\…Ú·¤¿M䜃HªËÜ=&!­Áx†Ï¨Ÿíké°Ä–Jè8Ë9â=מpíŠI"ŸÔOEÌlÈ\!4¤m®,ôm¦Ì°wë„¥?´ ®¯î ¹+ÆÑ…‘3ÿwö·»GøJž:•’i$e8IÀ(áÅ`.µÔÔ€¼çcÂ{¹¶Žƒg™¡ØýÆA±D]©Š|ÏWWøY½ËP·ˆ2›P`+®el¤¹ óç±Ðó ¡Jž-þp}°\§#Ùä0§yω9ù +¢ þŠÓâO=ä†y$ä*¢à?ý--!ÏsèÂmQÃC,É̯7¤F½-ľòbïÆë°®ëj{Ù¦`oDTDT+žÝ6n`pbúý¾søöù•P궗<^¡K0TùpV +³›ý#ŠYºW™ÊªAŸ^™ûc,ëÖ‘ÁòšýR˽%Šß°´¾_$q¦ ™QؤW¤ñË4DwצQa0Ÿ1R¸„ tÄÄDéÄA*«2kTK%’$³Ö5ªÏQÕ¤L„–Œéú½ä; pi~y¥ôö_Ü1…úÛò÷à9õ¶UúÌvÖº(çÉž­ðÀ±è¼«meE'‡À¬K0ªÑü ^C¬I’탾œ»F‹i¢r)݆ìꪤu½äcwÏüH,ü1] eǵO5­:WˆÃµHQQôÞ«ta`±;gN¹q,8Ùt>!ÉŒ­³PèÜ›ÛûBË‚¥µ¹;ûEL|Õ˜¼ÅúØ®u³òé[÷@¡­Q»ߺZ>e,‚ +-Œ‚r#áíKDë"élÅÑ…ôñeÏy¤vÇŒŽÁDÞ_”ûºÃæÙ@En-2l ïL€Y4²û~ú ©‹È;ñƒB/“Û! i»jèœEP{á¶i3…]8ªÐuɯü`b¬Žû9£ÅHÚibì*Á°é˜sÙS¥Æ”õ½ ¿ÕÎJ@ì<\pï˜$l ½×ð.tSUQ–óB¹üdÁ?6,‡!KlR×µž§Jd®‚;¡ñGI¶Ž+ù7§D"eóšÐ¼ëP·å-ë¶`q'2™o•räK ViHBA¨Ö¯Ì±:7º®çE÷çMGœ·w³‹îÁeíðŠ¡ª›‹@¾ñ6ç -(M({ó¬ƒM›w„œ7°côòQ•ƒ$þ&GĬ)U·qÉwìf†›ßŠ`-'tì¦ò•kðòÜßS&½†ƒ¶’ÛýÃi)š»‘öb¥nþgã4ø*˜×¾%¾."™9àŠ$y¾vG~Q“”CSym†ª^(„ÃÛ9à8tD/?å :³jb*j‰™VM؉Ÿ*Šþjñܕݽ¥ÅX<ןñ6ëD¨Þ‡Ú'Ÿ÷ÕK@ùT’ô@(6AmÅs3P[‹ÑÇV6÷÷tP_þ²€¾7JH¡ 'ßÓ-êº)>ì3k¥¬[_Ï:!!¡Z2ŒU˜ÕÁ›s>·}Ypöúô4%˜‚‹øŽôÿiôoÂΨK + ÈÍ'xK¾A|Ò'*Ï“l¼H’¼÷Ë¿8ÅŽOÅa¡-+ë´Jq÷bH„å9K»þiOÄÐsc¾MpÜkÒ*¼ÐC"K<Õ +Ío]|Ë8º@ú€˜-}LÐá×Ï"t›D_sUé&­úWWç<ñ#ÌîcŸ*ÙrOF+ݯôV`&¼)Ó™ì“DÊ.œ°A‘:þ´äW#3²Ž¦@ò3 ù™'®ýµã9Ó0¼Þù˜Þ V×Ò…¹ŠãíÉ'k|›å½ýscÀ’5Û¯*6ŽHl Níõ=ÚMKÐÅTµÇ“·%˜Û)â/röÎ -*Ò²Jv«H¥ó ¨ôKÃÈyKÛ´")°ÁS-ç·yRB«TrW2â´MU»R+e^ëÔˆb9,¬>Eç7q*Ü}.%b‹&Ä=dÊ|bJr Q4aÌ¡)õñlJ$ºO¡n„·9ä?ôVµÄ1ˆÖOÿÕOû.šøëìÎŲK“¢!y,§QDç ê6Š5”~Ñ1EÞ[âÝÍÌêШ:"þØY+‹B 3c ÁüJ¿9›‡PµTUü^C”!±$ÕÍè 5×Ò2­ÜH#iÿäé1è¢^±ì·vfîÙˆŠ’¥Ÿ*j wh¹‰fÈ9ƒÑyû°Gc5Ñ9Þ8ïÈ.„ç6 `ëGuÊòeI¹Ÿ6átxM!Ê“‹1Ø{›dbȘ£¤ŸÇ2·ç®ªE²õm’Еkó!­…Ÿ*”sóå&ÜéѲ¦½lƒý)Qæ~ ž¥ûR²u˜%ÌH6Ý[|u¸£ßV.xš1ÞÇèÙÕ¸Àpf09X”ËÍá“jaê1¬¦O¤m¿Ì«uJvþYÀ`·^ñJºˆŽŠ†¹ +Ú:þt!k}óšE©su{ÁlÅ1%Ò¦Š‘*º}WØši/Ô¿Ð6Wÿêï…yÞ®'ÎÎïÒ‰G¼»É1“tânk÷ú(^²””“¶omÜÑ=ŸŠÈÎÌ‘î0Gc»¡ªù×K$ú~¬ï¼¬rÞƒO>×ùõ\! Omø¢(mŒ~½œÑâ· +‚ó,· ÌÈ ÎÔï@§:ñh#™rÌó2dˆÝ³Õ¯k‚…ä´hÛùÈ®?´þìÇøö?ºàdˆ3¨¨å4Äû΂æ|ð–£³7kt|:Ûªh×¥@~ ¢cÎÊóOõÌ­@ÏWQÉps]_Hö÷‰ÿNs­Ÿ&°÷ï +Ù m°³Õõp~¾1þfã ­&âk"qM€ì$¦d©‚`l´³@•æ{²mT§ž÷W)û•(Gb5]üwTåƒFÙÊ[t66®ØQBÌ +y‡"6Îj}¡n4­Ô3-1Âf.¡œf6VTÄ-æÿø¬†ƒÝbírq&ò6ÇX0ÿ+þõ–Å$³'–šqEŸ›I®°jv(jÜh©¨§|4;dWWVÕ9¤s±³:¸ü…¬{¾%TRM•Š$ó%Ê71å@X™É§å +û¬]áテs嘭žN¿aÈ:H¬ÊyŽŒùMZñ¬ed£7 êž«Ò¡DòXëMe{íß°d»^o¢Å¸zw–6v šUЈ–xàz9iq^Ä‘;8#φ‰xª!Hú£R·ãå†íÐÌÖŒËÓð¦ÕWVZƒ5@\UöïîM„ŠžáÉVgêÎZtÖ桾12ôgÃ{¿yÔ8V•*_D½°î˜›H¹Dt­;ã:0í iÿ¡‘áziTÕ;‘ÑĸÂÅÔ¥¼ ˆ.©jKǪ¯ž«Ö»'+MÚ¢jýøœ©‹æWÂSu8¤Ú\FîÂZÿ&!Øeøiz܃‘r‹] ®Âÿ½ô2ø£Ë9>¹-<òObC¼Bç±ñõuÔ‡zÌ•Q96ÛèG¹m~ƒõê_·%˜Z¯çΡXéž7äw;V\ÒîLÂÄ™UË [ºYyZS(Ϩ˜ú%´Ù¼YªÖ>7ÉÆ2™äV|lÅE™v›/"ò°./aóBršž¾‡{Ti–ÆR]úO^¤ÿcv:1=3cŒ^ðVý«gXšRÖlÔÓ¾{iŒ²d9ó+œ +¼k\*+èõ®LpAR›EqŽ_jüŽæâî˜v93Ø޳ƵÞG´G[¥}´ªõéVl»`âÎ +2…ÕJW\áî=Šh·‰¿˜ZdéØ˼œÜÎŽ…šåKäM‘•9â<ÔÇçíÿQÆþ2¡"Ÿ} +wTÄÂv ÖÎY%Ÿ×:Ø3Å1E°^>úÅÓãëJhœ)]·&Ñ“òö×3q嵺ʒ4u ]ή›’«j¹¦G¤æY¡9ƒ–ü.khoºòfzww÷B=*=¬ì0:'&oÁÐäÁ¦ûW‡[ÄozQ™Úç¼~ëL\EÚ³[ŠŒŽû×’Ș«ø òÅñÍÓ§²ÇÅÛï^0ý…”‡ù\j!"Íác_NRq"LÁ›mAucxhÔ€ßlS ƒ¨t³*Láô v Ï€ÿÆyƒ²åÁ<ªÃUé•©bÙ’vk¶€_€1[ËÁ´Às~»b?y³ÇcÎô¨ØβGz·G…ÈÓéW'œ„çgÆ6ìïÀVø,¢åÛ Ä>b¾+ßHTª‰žÎFvØŠªSÑbÐ?!¶Ýúf°B{õ¾?|+HƒÇÈ!EÁwJO¥W{Ô²UÍaªj0\Œ&6‚ÐShÛ|`"¼Å£¦Yž„@Ü7ØS3ŠŽb%j“~@óÅcVbîâì†q!)<erLoVyXœƒ=LŒ›S‘.!}Ì 'ç$³S FÔ²4ÊZñB.õK ³Î!E ù`Ï ™ëK@øk’ó¥$ŽO4Ä’SDU— zH ÎÏ^y62ÅN¬ž¡S Kµ|„!NŸâQ`»jX:'"w‹E¶ÂÚ×Ëüc§¦u®z¬/´1 +â@hµ†ÆyЛþœ£kF±¤­UlÐ"âo¨:„û^ÑF^„ìTäF¥çÇÑÅÍH`tŸ‚ÿÚá95†ïÕyÖf !gßM±ŽX‘~Æ„$Qã÷DMàATcíú÷ßcÞ¾¿`;c²÷PÛ£CCwäf‡`d›nþ–aÕÑp7¦Ë;¡˜ê÷”7U¿L*Ú 0k¹è<Dz,hýpérîOkÒGˆ ÉÖûCv! UN¦ŒÒ'o#˜[AÃ2 nØí­T‡w6Ÿma˜ú ‰§7›Ù)nnå¦=´äóhÕÍ"§á, Η`"#EC}Ø‘Po‰¦=þ»ˆÏÐkO8XgTÒ-è‹QãéØ·¯¿Y¤FKÁ ¾Ül©Ë…5DvóSM{—WÄc«²z¶çFοœè³IÎ~/IøªàÏâµ³¥ UK†&Ó\çPôIrî×]…fÛr‰)nF„QÏÿ$\Q²ÓÑWÊlö~}ÛUp§ 921ßÑØZ½c„qï€C°-¥)—Ô:ÞAy¿yh E2×Î1&pŸðƒ¸hL–\DÇøé&к©'«Áƒ¥8%çÍí¡aATx—^%Ñé(ņzI_ˆV[£¼ÑÆL©|0·bÇò +Jº … +jûýºnOY¯×Nrz=;Øo8ÒÇ"#ŽðTjïøDgÓ\•íj +)^àŸô_- +õ9©» ÿ‡pCÍÝÉö¾¹4ê31RÂ\'ÃÇqµV£20šºûÇ#7È™h±ã±Òw +RoðÊt³ô<åGÀýP¹¾¡”|y2êc/ˆé­Š1Q> o*D/d>–õh`ŒjŽ535î'mžž›ÄTŸ4€§U>Í'³(ê„ÐS1USóÅø§&aeŒÝ3¾4í »ï•%ÛìþZ™J¹ %ó襠€Ùì柎e˜¸5 ¹=ˆQ×ÓÞ<\c{«T+]ݤ[aR6jaÔ–[˜‰cg† †7˜'î÷B–´õ^ç+*dòù‰¦×­|‡]ËÛ93äüKAú7‘mi%T#0Df—Ðh•Êßp3Oö×´Fö{÷ +ëóZ*àk ÙtϦ”ìÃì2ªqNe +ò„’nÆ—0¹ˆÝ‚ÿÔa ÍÞSî"Þûš„áÐÏøÿ æz¨È¨ qÁ?žn±xÞ;ºÂk_Y\­æñí¯²ò°´Ò­ø*ï5aèlewOlÑåkYtzßç®uûËcÞ&"eÒ£œÞ™^¨.=Mîî:”ÙJþÙ$C ˆÚ`ÕM«ðò‹pu7‰Æ9ÔϚЕཕ0Õ望D×­O¾ I”õ(åi À?þŸsPIX Œ›Px:ñ,ã“>P“u‡iрݓæ\>J/0“ *·>¸¤«¥a1ÃÃâÛ=’T6:¿²ò²ÿÈcþHè Ð +=Øé<œ'€ÿ­%¼sOߢÙáLôþïó¾íÛ ¶xkF¦!çláý'Cwñ£­ÊÛáQ™A®·g1î&-hF'܃žìíŠð§€ZÎK^óFöìÍMÍÍGÝwëÄk4X›X/uÕÊ·±°µ0ÈÌ\Ahe°~í&ì +ÿRöX}\g×®¿ Ó»0±ÊЬKú5½9ã‚ë/¥å°[žòZW½;U`‡× BQŒCÜá‘o}-l—Rç5nê¸à6äæqå%ˆâÖ-hêŸ]¿û×dáæFû£=ø¬ÃÜÇBÈ’å=ó­–‘Ô"5W/g¬\ åž´õ%ãlRnuIʉ-}-©Û+LÇì´äxÔ u|mDT–Ížf\L²³Í¦Ã¾²r½¥Éôþ÷9©@TcÖ šÝß6|?ÏS;‰Èm¯'½ËÚ¼WR@bs²q]7\Ô©D¼ýj•Ãô`;¶öñÁ3sÿÅ%% \šû°!ƒ¢híAxÌ݇¾Œ!ë:š¿÷©Äj£[«@aßN­‡x3ùÏ<@ƒðb ¦ø’J Ìa„.N0ÁO…šÉpÅÒDÄœ& +SÛÓC>›¤5i¿ó…ïÔù ®/#;(N»`¶-ŠŒ«“êeþ&j×®ªZ¦8"SË+¦ëÌûÂk5½HDA<625ÕÙŽ)¦În³W$Òàl†ÌgöÕ¡™‡±¿¨£Sã'{ê×ý®ý7¯vmO[‡Ã ÷íÐ? +"°N"/¨ïj1¹‚ z¯||•/zà+%9öÚ͈­™¢¶†ûì4¦ùìO…ì1|8s‹Ö©ßžÂxZ ±RP™sXÊš?Û°rĸšAKBäÂt@Q=:sƒ×øwñ´]š§ ÜT‚×Ѭ™xgë1³ t @C“ŽuEˆô%x&X½¯cèy-y4 "<’Ì,Æ•›A•(²ƒà> /9¯óuVSmF.45Á)­ôNpmà5ÓŸ—þL¾GfUI_Hi°ZŽ¨¥½1âýJOtãd›=P Ï9¡’¾‘øÔ¯€´C’ÚD&ièRIíD½l5®\×sI\GC¼¦Úq·¨ŒcSlgðb-2ÝšVîrsì9=5bSÆô;>R:¨1<*NÕ "ÅØå"ê6ºz]3GL’u}®ªUµ]¨è1ÆÞ$öµX-wWgüdk© C† iÐC©ð‚žž¿ö­<äZrNÕôWqS'7ÊÄþ&Rf+Úp×™h4*^Þ×L›ï= ‚Ãi4½îbéŸoè,Wш,õóR¬CŸ +LUÍhúÜòjM¢Ò1•O¹?·Æ¸êÔoçá‰v+¬ÛC –°E®µ”Ìþaõ#›·o?ø¾h»Å¢%^xšË×]ÓÙØ`§ ËL ‰NŠw–SÁén­‚Æ]y( 킲ùÕË]2¹?,¨úTm±¥¢¿3ÇuŽ ’QÝLh"o&|¤À霤èy"²œÈ(­Ù²X,öÇåm±Ësí%f9JZx‚ß+‡“_žƒÎ0â:Lö/=U©Ø¿bÌÉ•%Ð(Üðø••À•›A•(²ƒà> /9¯óuVSmF.1¯ROŽ$«ÜmóVÁÝ„MœeÃ¥°Ù+‡rªSF×Ý‘°KÉ‚ [ŸOcêù L;ÎUkjoRLÚ>"–^/¥ªæÝ¢üêü´¶5̈ØïÀ„ÈÞ£(ë`飸ƒåÑÄå‚‘f¸Û»ÙHF)QW¼ò\×O‘É#œôÁlR3R)¢¢ \GURûÅĨÿ® kÔú"‡h<Ó›§\(¬0·@ý†«ÍYMå/þœ$÷ÌOù>î“Ofs¿Å»›£9 æþ=²ãð[Â.€/ÍÄ Bˆ‹üÇÕÍc§Rø—œz\¥Õ/¡´Œñ@¹4ëXX Qª(¶kÌüxUFr´ÏTô·¼ðßMU5cêÒ¥Û—Š9\VÚK™”·L?À_覅¹‘ùÏÖ…†³|$¿´+·ÝÖ-€—ôÂè ×þ \ÐÐa+jåÖªê–iq›®4N_ ùÛ)GbSz„ÞÊëÔâ»é„±é0?BŠhÖ¡•’ˆÿ´JÏTnXÚË»·òVDSKÂþq²`Fyâshda-„çä´Ñ˜—<¯ömªaJö›7ª,xC§dÇs/Gª/MÖe‡†}ÓÔŸ_1° JØêîWaµ3è°WÃ,dáÏ­œ$ki ÀÕ¼z-gÊfµL}Ër†-‡®‡ù$›/Ï“.ß݆´UôÖ{“ëdX+}{ŽDì–Ê(ˆ´yâ^X[þš‘ù>íÒ¥€§¤4ÌG*Ù0÷÷$£ÄÛ{¾ž>oé¯gv)ÚlEƒ£#»~»Áõë¸%UŠô»oódí +ÿ3û†3AÑ'Ψ +³Ùo`öív‹Ø|» (Ïyí=U¦½%Œ R|5ò;/°d–êF, 1Õ©  5%9h¢ß±@`Û½×E¼96Æ«¾Ú–&MwA{ s™°$ÐÔœ;V‘Á¬'žë¤([¦ «9yø$òð +X«Ý jH­ +é»A^N8Uò##ü !^ÃM ÚkÝS&þfìÌÌ"ï)hÍñÊS8àq&. Kd:6¤BŒ£0ÕlþÂh´UÊ©½ +*2† Âýú«ÓpÕ8K4ÖŒ´á%hë +¦K\Ÿzñ ¹cŽÉæ_uÄýy/&…ó(((é1xa8CR~…Ÿ!–B–k¨®©òçñ«m5?S¹ø«{†8DDz£”üÿ +K K»ÁØõm\A<ÓaþŒ€Qc¦•}æªJ÷úicçzÉ¡šÖ*Èc“YTIõÝcxÅASÈÕlæGŽ›ã2bf²Õ=ŒD¿Dd+á¨×õwaäPÆ^ÎG5RüÚHOõ7 Tº_Nʃy÷÷¿ÙÍI~fËãr‹iº9Ö¥•Ý`6à¿^ŠÎ<’…™aUry›et'ÛuÿŽ}ßnž?G*{ž0(ÄðÅaŽcµ `û a<„8é¯_ñÁ¼ŸÁuB`ÿÀ­DQ“¿n_k1l~AHô?h´3ç6Òá\¾8³~ˆáƒ€•èˆ@÷é¿™~Šff‘œPú1ˆ…È"Ù0«½Ü,õ:Á‰Ê6oºŸè‚1Y”çpO%e1åÈ,®Ê…­v8óQ/BžŒì"ʼÍþx•¡±£œñêËÜŠ‡ì”ÛK»´ÞkL:îA@I#ˆg-¸9¬”%&h® O#2š–Ž8cÞeıï8{Xé(¯ ²W¤ +Â)³?,-"ZH—ï|c¿\jöÀL7/Wq™Uý¢-é`„×W÷ tË„‘.@j,š¿ó†à=œ›£ñ¨ÓáÊ!VöX§ÿ_‹ò`G Ylx2œµ +ÊârÐbÞÑüERÀ·îé¿+FžÏ—e¥ÙØï«PÂh••>I<ÕãQ›¥FA½Xðì8Ÿ¬­£¡r:\$’ºöí÷º 9: ºÂx‹6Z¤ÛnE¯B#‰ÎÏU2»×%»’{“j‰ è»åH¨É-mR»½WÝ¿t ?:²nEl³¨ +JÃø‘PY¼UßææG…$ÕŸTž +]E 5¨¥¬â‰Ï-n—”MµÂ™‘Ö÷ȘœQ- fÖÛ¼$ÕσNE¹D²*Ú °øV«QÌßÔT}¸Á¢ì}äW3Çë¨6¥‹J:©³?^¹·Ž™o¦hIwrC°Úð,ú¶ëÒ4±³’ž¡ZO¸Ñ)ÚæxMˆ9€Ä–$…ßèŒ ]FÂS%*÷€\¯ëßÿxëÙ@ñ³ÇÇ‚!°Îà`5@jlo*x¡f«¼.sEPo¿B8’p¬‰2K 8ü¢å²˜\û´ŽãÅ8¯0ú>Xe/¨‚z¾"›©”ûJ…ã€W¸G’¿Ì[ˆÒW‘0¡2äN甥ª§îòÒËÿ§}ˆ‚r6f`Áœ¨ºìo !¬wQ®qÇkw–¶µO'þ±Ùý$ï-„‹-Ÿ6€$ýƒvr¥Úöò×Ùö€yþ¶ÃTËex$dÒ¾BÀØêû舿±‰È®Xæf¹¬Íú"E6LÊd? §ÐÀ;üMItfÇ𑢇ûŒ0†^§I ú;L} ‡”àxÿ¤ŸdLÈÝ›f⤤-å¤×åRPÅ*³…ê™è@`ëJºòç! §dÛpÀ¶©(U>ÑÐrÄã¶O÷^wáåÕ–í€Hu½;e†ãÄJÐ^çÐÛ¥¾¦ßx–bÃÈÉ^2†!A:g® ñ7÷»ÁŶ‚>/BW›=OŒb¸‘ÄÆÿrø;)fÑ•P<1ßuWœÒLËZ|ég/4[œ,'C‹í£ßRš™^,â‡.“®Üâ–â>îAùñ­÷øÌS²úKÔ)+Ý40:Æ üÖ‘˜‘¤4 ªÎ†{áô“ÍWŸ1'ÑØÌøÛ•óŒ]µ}æUz™µÆzÜ>|Æ÷ÅÄT³¨¹Yfä÷ž*ÍÇpZ÷“U¤N§…âsíRl$…Å7xt  ìãpƒËSgÙüQ§~'EÛ‹¢+yÒá1]qo–¸PÖÿaOjžQÌŠ†£P‡Ì&\'¿òk>„J–AëóKI»brñýX=9ÛÐÅΤÏÞ^osì³çÞíîÔ¡;ɬ†x‡OÃHk^ÇÒx ÕÚ»{ûã2àÑùñä \d]DÀÙ½¹9$2êõ/-PKíBG+tèöáµAäHèðg¾:¿œß¦ëÞûʤ~|Òn)RE#³nZ‹bùAKBÚà‡{amjrØ×8g»>B·»ÉD¥üs[M`<ïëù“¶{ç€nˆº¸4oC®áѧBÔžý³®Öì"J¢Ê@!‚°› º›@ ³Ýj_éÊ£·ûõ‘š(“ºÓ›™þÇý²Oýrn­C®¥w\E®j/ž—¿„tp·¬èÞSvO‹¿ÿXúÏÕ‹'ëÅÊ éBsÏj û:<„³Ã^‰@XLxJöò#õÎ¥±°ûl…°]ëàPȶŸÑñ%ôN/îäAü°Àá¤æÖÑi%³Š§jËeWñŽVf§¹†{úY6¢«|ºB,áî›ÎÒùí¸¢a‡öwÃùüî8‘ 媰¬ÿ\Êÿt¯•“ý„ý“YÃ÷W<ñ–¿âß(WitOÓÌÚFÉî«®%T £f±fô›ÿ²#€p9Pä3( :'Zp¤\"Úý±aÊÿÊ’8EÄ¢ZtZ¾•0(>kÇ*ëîƒÏõ8½-¶•Â7°Ïï0#ìÊßÀí ˜ö dŸ‚Ô +'æW'@Ü;]¥sTk—þö@‘4*Y‚“kTã(ëðÌמc +{¹NÔÝ0z—ßÄÂ:ÁÏîÐlÞ‘Üü¦Ú¿4¬‘&ô‚Ûô?(ÓL~,¢ó‹gô ÷ÀIõp´eʾþÕÊ"¯5ý¡ìÔµÁXÆlÜåèqÔ4v€ïŠÝÛBRRÀRiŠf¡«E‰è°× 4èa ¡¹}“µG$m¼»4-¬©/x»8Qeê ñ4K®ƒñºJçp« _é“Ô#'-ejŒKZ %_ ñþw*C¾$Ð*ÿV±ìc#è|<‚̽¸¦7n_³é„ÛûŒq³Õ*Ó¼ê?†ü%×… A øú +V>/^ßù² +õ7Å8KÛy£¦#^i7¢Óbµ^r¿i<‚.È&Cºx5÷KJ#ÍÖxäñŸöEWÛBB~(ÊaCö;˜AÑ¡8}®NyèñG½Ûƈ^ûúsC™ +ÀªÀtÖ1nVx2xÆìµ8±¿fãÂæ;4¬%Ÿ„¬çÖJÐ 'R«+|¥Þb !àÏÞ¯žÒ EÝzlk=ÐØP !2êùƒìtnœÖ›Žê4õD‚ñ¡™“¼[˜{”· +–H›x¨!L£T1TŸ¶¤íBt™–׻Ǣó /î$ÜZÖ•;øà.d^»Pï[Ž{é×~ÌfÔr ÛíÀà…{}›´Äñ{yýÈ?e°æ¿zbûl/r§ëµæ[:¯Ø{é#ÿ‰Ó$TÖoµ.ƒ(¨¦Y˜hVá—tI}ÚøXH H¸}þôî«Bªpƒrà@$Ÿ÷öý)p•,EQýKGnÏÚLð’ UhRj³×»1$«…F+sRcÊbåÄæüá^¼ÛmLØÑø‹º¡§–ñ£#GÀ©¶6• ¿Â=¢ö‹I“†KÑÿ}Â+5ÈÕ±Ìý‘^ ›Ã_Êio:O3M&ªæ¶ÂQsþ Ö•Evµ&5ÐbÃK…"›>Z^F…±¼E¨Aë;’æË«Žv¤MÝ°õà^hÿø•C3n"ÕPóZAÄjÆÉ}  +Ï ¨!G"2û×› +^8[¼9°£=E„§ ï„òD³äþj + äÝw'€1Aœòµ”"Ü´"×sKç’õX?ÒÇéÅ4´KbØù{:½ÛºbѦºöÍGÕ¶£éF‰SO„u)=|r2Üö%ÏÙE(—x$Œ #ׂ æXØÕ ØҨâ4s•P‡“¹ ÆàÓF…=§0Uú«-­ÙÞkµ‘ FæÒFÖâ|Ä'´ÚþÇÇŒ‹«Œ+È@óïBtQò% +Yya¶ch5#ßd¦ï—ªˆ¡¯3&wSyÓ¸æ”ܲÊÛ^G´”V^È%T3ÂñÉU(ëN/ÀˆÍ'Xn5Pñ3FR@‚âoúY¯4ƒH9Åõy[ þ<¸RºŒ¬9^LfC)†+ælXRÈ8¼;ÛMfž…|r€`^Û) Û´q¹oÔÛ,Ç°$ظÉ;xRà† + +8DÅÉl?½ýG0ÕXQЄJCç°Ÿ]‘-–Vœ.EÏôe¯/Ý먢D죌}ðDŸY¹©(N„ ÓÈ ýH˜ÿî•^|Š’}”~çÝÊv7œi©‘qš]¬œÐ°î}åõr+×ß,ºQÿ`q­©jÂ( ›´é‘;ÅiÑf —祫Ô'>ÿ©i–jxŸ¢ó}qìß¼±|‰ q#+JåyWm9È=]4BpÆ©D Õ¶›þ +ž@i`þRø¢›@;Om·8?4ÒØ+f'GEEo @¼¾«Àø„AÖ"/‚˜â~Xl¿-–~F‹.Žv4ÒË8—¤æÓ ”FúÀ/Ôèó0 +ŠêÅ÷³#ÓÚßBÔ1$O +uŸiÖ÷ÑNü<tS%ÿ†>Äö)êjl¶mDdSÞ|fÕÓGz•ÂI€>cÝœ—«ÔKn7csaHñ€sý-®ð¿å!F§ø"{-Ó¥A8ûþwvOðó.@“©‰Ÿˆ\ÿü'»"Ô,œÉÃ5ý÷"ÔÉš²å¯·IøþÊXÖãš~Ί>¾~d_ÆÆÿ¶ú6(±ëžªQ¸aîÉHXL‰@z}*…Ž ™7€ç%ÓÛ Iø<¯é3ssoøc("a¨`g­~vÁ/ÿ à#ÄšÝ;¹]cö#õo ò™6B'A5Õ ²XS«%ü¦»†p–„êgY ÁÃÌ#áý„œ ~ç¾ÿâè`c¼±øyZˆ­o¼.p•håVËMˆ›•.p™´Ñ·p©P£oYrõ~9.ùqkïùî¸ò™ìÏØ1Ï|UL6_ç‡jaî’6]JÜ–f~(– ÇU;RŸÛù×Ù†5Ck8žða@jÛæ_—ˆV;lÓÙù¬ÐY˜3 EE‡÷†Ž‡5#4kÕ©‘Ð ®âò¨.-EÔ[•<­ÿ6¥‹·`æ۴KõKk‚1P'uíšËÙ©ñp¾E+uA«£€,¬:ÿ ˆeÎ$ž/ÕØ~Móˆ)–”ÂaDÇM¬oºÔŸ5vMæü âQ×ü”9öö$~ÿx º>Q˜Ó|ê?€r™‹´é*ç,fˆ%€juØ_ÞÿÌ°B«ÛÆ+® #ÔÍ6ŒÌ¯Ä&v¤|*PRBjÝ)ùÁ.ËtD@|­3 ï´ÒÝtâû.[†ø‘`ËDŠdq†­íë!”Áa^AÆ•/Šß<`^ HD=h°¢_‰6—€ ¤}&Œ0æ™UÙõ°Ãç‘R€iÒáÇÄ<¹Þt!’%›ú˜\„Ι ~e‚òd½¾Þø%ÁCÞÛÀT¶»úÐþwfí½|àjdÅT[×úåÔ¨–z2œüOÝ«tÐÌ%ÀìÞ¥ëÉÞ†k_þ륪wÁ‘qµ¹Ü÷šÂ "¡;¨2cWŽǵžkÛƒÖ°½_d$#•æÈ·ÐÌœ§pgÄ°n"Wöë€1AŒƒà¨ª ö;qfp×\}l#‹ jh¹f°˜“UuŸ˜Kï‰sU¿öâè·û¡öϘÏÆÅ4òJ±…‘o±ÆY KƒP|5.Mƒ¡kò¤ØÏ4=Šs¿+ ;©Š•çÑM£›5\÷ÏH +ßž‹¾£ìú>Ôl-º\±×N +ïÁê&BdúL5?;û|Wà£ÞÍB0,ÆTw”=”LVrû½Ùlˆy“¥y×Ê«QMÜfÆ–m”?Ĥ‰Ã\Q‹å‘-¸“}D—ü&+m+&o·4[ Ý.Ó~ÏóØÅœ ­Ú+èÆ,Zbü%í×ί.Æv¿Y·ÝTbº0Ùp>!rü †`Lˆ;Í­Ûnõ$'àµ9ýÌMtTšRókÝúðgTŸ,–Ä3¡öo“*šPÒ…zŠÕÎÏ(Ôôïwòx?¾ä 3:ÐÓ‰{ƒ®€@‘\a;žl >/«4!½àqªr2ÐR“„ë¿°€²á0’™xVsXŒ¾„0£©0è8rØ¿¬ ‘büüXÞÁa‹vMêAØ‘H˜@'û»ÝˆBûú Úüq9û¨.@BßcCCä¦fÇ¢~j¾Þv´ƒuKT<¥9… ª¡ù7ÆË…ª”8€Tå{®fÎDq#ß\CIV¼{¤Y9P³¡;ÑD½úª¾>?š+5T ´£~xü7y>(œ[svÙšcŠÀÜGâ‹ÿE^U÷Q„·9ä?ôVµÄ6ö¨$ªú9ÆáS ·F`ýOà­ó/ZÍG‚¦`0×)ÄÜòéàí*Š$£,­Ð &‚àrÇܾ½JWõLM]È“É"Iúi=ÉvëÃŒŒFê¤"$,hÈÚ‡îr•÷:¢¥§g%Ó«…MÝ}Áÿü L©]ugª(ƒS’ƒdMîDèS+,Ô%“ŸÖåŇØduKwM¹ÍÂÛÞ¯1ÙýÆ°lk+õÂغy¸YÅÍQóŸbh/Èf3X¨²ƒ(yîë¦059[piY1Übb¸zn¦iÊ|ÉÀÛßÚõãüú’ùf¥’#3Ñݳô*½5ð€Ì¹wí]7¹"QXXÖ—¤HDòÃÑèM;T(©U‚4Åi`DAiܬ` *Txh®)TÂ…ÙT¾¹Yá`¶í™éê292<½¬¨z^>g\ʱ'™÷l2 • ù£ôS_0“ûÖŽG´L Úxò'ûè 83ÞìxH×À»´zÇüɇ/—ÐãéÔfÌ´îÃád)×C^Ú×æßÊ,Í¡5±OOÐXqÄøÓ× `oËŠ„‚WÉsÇð* Z6!ígˆn 77§Ìب'ˆ¤Ê«4a%ÿ€^ÓŒvõ´ÂÜ­¶âÀÝeD¡:(3cú»q®´¢ŸUòa¡à¼Ž%|§Íô|á$‰éÇ á¾mQÔe™ØÂÝþ”¢_ÂؘßXØÄPVÃ$º¢Ç‘œ~f)écð¸T­æõÅÀñ±îÓÅ®N¶ß¥¢ñ÷üL|Ã2©Sñ!ÄåÔˆÐEïgôä‹þ©ñ¬©>L¤èÚ´8ýÌgx–ðß6¢—“nº€¿[*½56¢E +µw‹òhú+C/)µ"ýBZŸ`ä6ü3JGZÉF¢fxíÞà­Ê–cßçŒà[ü<„ÿúP\0MQNTs¤™ä…«®°ñª2—Hë’’XAj4ÑòOA,q)eÍ-ÏŒ[5/ÔN€õ°²^|·Ðˆ¬Køc#œ’ù´€´´J'ç(&xHnP ·˜HyˆvGy~.6ø[—ûHš]Ze¿ò]Y*Û¿mÑ(造bX Ÿ¡È:¼C|­p±{šþ. )åña¨Ý¹KK]z¹NL?&@Hów¡øFð‹ØS= J¡ªØvÕÚúÒxq œH`þr XÕ#?FäÓØ0éʃº¾’Ÿ,ÙKÑ(-ÑIõ¡!–\ü{,¶­#°qŠîY¤íHm[[ó“!ÍÆZâ«ßàB!û€×õ¨À†s3ülP!è= N•®»½Å2f!‚¯zËàðø9œÂàû͉vÏ«kŠÈ”ÓÞZDy•(F°­ž…´<Ú‰`0š†ÿt ŠÑRá#Ѓ È ”¯UõñÏô +)Ì\ÜQþùÖý£ÕéÎs0`é©Ýü¾«W‚õkæ? …%‚½±ëiqòëÌ S‹ŸGGæö‡v;ñˆ¡;~) ¿2m#ýËõ_X©±½£ð2ß¹HÐw¬I\]…õT;½KzC‰¿T0‹=ÉÑ8Ù»s„GÂôFœ¸ÑE=˜n$…˜*qÕÖiïNyNöÖ2 ¤ \ý»V€NûdïX3è¡y40rFð¤¿.êTÁêz".NtÄñé –ÕGmæ¾ü@(õ~2¯>~eªÂ‰zéñ™»Î +77mÓ„ïúøx¹$ål§ B[0%$í*ߺä£o’~8Í'w|BùqZv“îKF<¦cµ²¡ì¶&/ÚãW?g¥b6x3g?ñ4CFBˆ»Jb.½êÿþ¸ÅW÷^Ïç#‹Þh*ßzñKÒúbX”ŸeŒ½DG'ð*£ÌGô¹fõƒ[~ߺè·@ej ²<\1Î&ØóNŒ„øÏÉ"ªco8¯°G2:¬zÔé!~¯‘,†Ëlջ߶œ£¥nóŸü×በoeh=þi?ÌàC§<ÎÔ15ª i,>¤wŸk IF)ƒÂÚp[µŸ¥€uS»Öéͬ(&ZÂòîJ=÷re-½ú´3¡û«Žæè¡°©‹ˆ_ïÆ*“%Ô[Gýö²½CV‘OªŸ=.Åq˜x‹¹#ŸÁÔØ%KIU1®ˆ„ ªtN£u5ù?•à%‘¥09>ùýæ1Px9 Cµm°´o¶1y«ñÙžºÔøûÓhQè2»›qEêgŽ®t5Ç‚<¬EQ;*™³–´ŠýJP§øîÏqëÝi0:·É^O8x–ÊâÓ,;g§ÓBEƒ°‚î튰yÀÍ=îwóSŠ»ñ<ß)~½)Ãݵ˜YV7iuñØn&nºª¯Pó22s`Çy¾N$¸çe¯aºÕiåÔ³DåÒ +¡úG2‡Qu2Ã8Þÿñʈ=È°®Â=w„1aˆN+øð&abñÙª;|¥ß^Ò·y5â¥s<Û4¡!žk ²çC‚¥-’<¹\ë¶x'½”±³Ãó«éÜ­ -RšXE`°6  +Ò–£ø#{“FXªg;’<pÀ´Zƒƒn}ƒñœÍ­ÁÅ_¾^XNRÙ#û©|âÔ­B&Û©UÊÛé]¿‘>÷e8Ê÷o‡ùà³Oaj×dîŒqÚâ[Ëè Bâô "\ƒ Ž”κ[/¥)ôoþUÎÈôpPú¾9Žý Äõ$Ù¸Ië€b}cœÒ¯˜OiÆ$odp¨µNäl—S=á1 jŸCÊP3<§éfØ d‚ß+ +A{ÛT=}©˜¯­…OTJéÜ0¬*kùÛq§@½ýH2Ký eñÙƒ\Ô1ó„šr–à³F¬±–„íÞv†kv™4@1WÛsæ8›tqüf½ýxæ,œfZ}e—Nƒ4<£»Ä +iw3–>ÁAäœê#1“v3†ƒ=·Î¤0'=/Þ\É¥ÝVY¯\ŸFk[‚)6Œê=MÊ +3ýµìïæSù%f$¤Rû¶> -stream -%!PS-AdobeFont-1.0: CMTT9 003.002 -%%Title: CMTT9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT9. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. +/Length 27692 +>> +stream +%!PS-AdobeFont-1.0: LMMono9-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 %%EndComments -FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup -/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/LMMono9-Regular known{/LMMono9-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /RQJPKO+CMTT9 def -/FontBBox {-6 -233 542 698 }readonly def -/PaintType 0 def +17 dict begin /FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono9-Regular)readonly def +/FamilyName(LMMono9)readonly def +/Weight(Normal)readonly def /isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def +/ItalicAngle 0 def +/UnderlinePosition -150 def +/UnderlineThickness 67 def end readonly def +/FontName /TWMFXI+LMMono9-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 68 /D put @@ -32518,7 +32684,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 13 /quotesingle put +dup 39 /quotesingle put dup 114 /r put dup 115 /s put dup 59 /semicolon put @@ -32535,172 +32701,255 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def -currentdict end -currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» -ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ -}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¦Œß=מ0).ØnÁ¢ðBd^ö/¥!2-G×+~ò¦bÑ7³ Nø&lƒþdsõ˜á%o5·ð3N¸ûÍÐP±c9îU,”Y뱂0L²¿öç±Ê+OAÁd<¹Pgqíê‚!i\žhßx¤;B+üµX¹&ÜŸ)o²™ -û­¾aIñ`¥¦Aï.ËÁ…o_Å Ò‚«d™]Ùì©@s—p!ÃÛ×—;¿ù¿+üàî c¨M›)U *m¥žÁÒ‘¢4+o$¢U´ƒEc”E*­ü_G -‘õÊd.¬»U£Ó9ÏøöÚ¥#˜]æ8! —S}/a—§»¤«é"ÈöÒ48EV< >™N;œ¶ÓžÜåö½[9Ë“!¥"¤k_‹Ó†$RÑÓbÕ˜ÑgÅó ÉuŽx¨ÓVMhìÔL$3P˜ÛíÒÙy»5œ¬,¿o"Ð7'ˆçº*íE¤„<±ZÿÓé§c»ñªÍb8r$`FÀäÞ§/±úröôí¼…ÝøÂ]€“:BõóåI\$~—=Ô‘¢´ê€Ïˆƒ·¢Ž˜ÙËøȜȿ!äê–²Á±QÀ´S*_LÎyäXÊg*½!#B;Fdyú9 vF.ºxÂ&WÜ€ÏçÒc‰K[Òé¾­újô­ -ƒÜñ ²ßTœ-hj¸˜ÔÀ’:Ö²êÌbcÅÓ¢xù~Ðgk0š^£Z–]Ψ´&Œ33gŒñ3æêwm2÷ÀŽpBŒœIÌ€‰:~q¬Fà邉u<Ý^ðIE=Ï*ÑJÐ.­Zw†Òcî3Ö8ìY±Ö.1jKAs;¹¥ðÄ»Ž÷`ÎR^ÔyCQ4y»ˆŽÞÈå ¶Ç&{uðQgF -Ð¥vl²P¡ï¸©°¢ÌÁÀ -ÊeçÄ=Gylw -x]v¤ºŠ£&ú¿o9f·ÚiQ¼p´ÂÅÞÑymQÔrijËFÛ\ÍÀUBuª :sé燭™„Çy7ë䢼R'åT½‰»…ÐÐ{crœ/ðbìŠzfuÌyõ¸ÞÆ-_KýhÚ~ž sö‘£¬¸Ó­>a(—z•–‹fz!#ý¦…vÝZu¼ßZæ"VÃUEÉŸúw­øý-ô@»ã é¶Ùi äûaI+˜ RêÌ¿±P–ÿ¦¾;X¼C 6e½ë›À+îj‰e×Ê[µÀ7ñö-^j’¢â[ïÚ -g‰Ž°9‹‰3­ ØÃ…ÆD©Á’ùˆ‰ c% ±¸Ø™Ûy¯JC=©zê”íÒ[t v™™”Ê©>‚VæÅ3¨m™ÿ®9Á‚ð=Wp¦ˆ+ãlÖÁnׇ3g ¨#7Æ:ÊQÁ@µP~Ò-ìu@Ó±DïV\sS©’;þx; -ƒJ®¬Ï ®'p—ò -ºy?Ìþ^CÉõòùI ¶$HGY tÓ` „é\ÛLœj%ýf¬œÎxÇéìS›ÚŒrìÝܾ¨0þ;=žl;°äÀ MÑI>o Céµ" - mÆÞ³»ôªI•^:ÊO|¿u.^âÑNçuóœwb`ìÑ9º5>²¤øÞdJJ… °Äð0íôóX¦ðÉpöŸ[ÎtóÝàÉuè^%ئò`'õ -0T¡ I{ …6j=¡úÌwŠØ ɽ¥¿Ú‰»ËÅ7†øȘý¾ÏÛìÅùÚ:{ú¦©õŸº‡?lH´¼™)ò—ç8O®f¤¢mXn,Š³˜Ëß— Pš½iiþØÉ]X&•íBûx{˜5ǬfE¾ˆÞ®¾DtàçzÖ9nËy¡B…ÅÄ ›ãt+ ä4ŒˆþÊ, p×$¢@x&ý|ïĨ4H~4îŒJ7¨B‚àš<¢›Ð«C±ÉPæÐœÁ}uzèÂ|÷gÃr-š: èuäó¡ôà[ÃDè\; } ±bUûIS{™É27Ú=ñ©Òì FB›k„Þ' -¦ç€ ‡.~"ÄÈôätŸíOz-3RûŠæÙ·ZÍ[——‘“&ÒãÉhDþ÷|°AQßGCH :\'Š¸`aуã2¹ö{=o >uÐ&Ž0ý¹ß»”;e†®01]VÎÅ2c¨ø¤œŽ³`š †“CÄJ1/ŸÑL¯Wþ ˜Yckɲ¤¤‰Ð õÃ}c§8ÚLC|¨±Ågƒ%¼Y«9.Œ‘òµ?›óš»e‰²Ð+€‚ÕÃPÒöïI4,}# yE؇™ö]%TÌ>ÌýƒðÚ},ÁS ¤!*Á.ó¤ “˜v˜tåÐ7†÷ó[O·£Â±Rø«Y¶‡†Éìõ–SœSÔª5Õžl+>ÍŽ¼±¸l6¯åU®Yºï©'­¨ù_¢p%ï=°ü]^:k2 Åb¿3Ò²vu\þƒ—k!š†®çnúõ2Ì‹ƒ@Q‘*vÑ}Ô5z3màØšò/Æõ¨¯³¬Ÿ´_‰ó~¿éÐGfðG쪑“4”‚,¥­‹ê=¦5ûø%¡Ú¹]äEHŠfnÉÛ€x‹ÆR´òúŸL/'¹ 7.œ·ãñe÷Ͻ§„¯‡‡aÒG}å…èÂr²¡ -~÷) «]<$•ð¯2uµ¤<ýv<ò×NP|¢AÈüGk¤Ì .PY­ÆÑÓO;¨»½BRœ)­©o¬éVê°ÃðSþæ<Ä‚˜;aÅQ1Œuz0ˆKÄ%RÉvng;‘{®võk«ÅîÐä~؉nË^…‰À8@Þ»ªYö·Õ¸(Ø®xðÙ•(tÇ&XYò-»­7*«ò0ïx“)ÌEîtC¿w;ga"15Ä][f³l. àèZæ¤ÌIbŽgÕswàT&«©¦Z̸ý)D…H­†tªe ¶Ì6¢¸ ~Â5÷׶?œØ® ´ÏÇûáÁÂßkˆä…r.)¶•l´ö¡•Èx_²?ˆQ­WÑ32…š(l¨ãë ŠæÑ|O×b-F–çÑ].–®RPD”<Ô±ãDûOàD¸›]D®ÂL=/å™È¢ÀõÁKîÇõ­°¤`ÖàÉFƒgQ_ÊI -ânûqP¯»º·«_(˜gØGK&mĺt¸zÂéü­_ªo ×`4§z4¤-71kïds•w¨\x ZŸ’8´ éy\™šR¶¢ßÒìðÏlÌ@Ô€Û›…óÜæµ´$¨¯ðÍ#‹ÉÂa'·{Ô‚i³~KljÑåVBîñî“zU´/X1 S¡äq=¸þh&7uó«GôV¨èA_ÔÁ3ÄMüùâá~Â^…›tæ0‡²G&<ÇÈûÔו}Òðøh޵Ëäú0„ɤcÙÒ°ë•>„¶ô‘o6ˆ½)ß{QB”¬X[#ÞCÄI3jƒþeó’ˆ/N€ŸºUX+¤ëÖ`‡è‘"ŠP[\ûàƒºäAXºa|i¤–” Hn­k¹,· Ó? ‘J_y3^ÂcÍø}|at½ ü<â;1v’@¡Þ{EÒ¬«ÈË š¢Á/šEì7+?`µÔ+7ÂTԘɈ/¢Ÿ~£2’¢Fe匊·I›ó5)S®XÙvNŠ´eƒœ“…È BÒ®¿my‰Ä_1Ö4tüÅñí ÷Ôl—0w–ÿ -3Kq -TâùÜÏ­ÌÃ\¬Ó¼zlª‡]%b¥pýgÜ7G)½tâ°[àV‰ÑN¡¾Øþ~ÇO^¦‡˜çŒÔ v`Š«üv`чm -ňX h¸¨ý—>r±¿:ƒ9e1SôNCìà$cæØø% ‰Ìõ$¦,T¡M2ŠÏCOÝüV¡eŸ=•øÇS7áu£•_„{xœ •Ú$ì:#Zòi¾1ʇªlœ y ö^|Qûž¡°Lψc¿&ÐHn’)Ü ϨÊùÈ|heÃÝ À}ñ›IøºMÏô¢Ç•WÕð*+-Z¬ëß,dÞªyf¡¨mvÔ›]t þ;`Úo´Ø]”ŠWH¬°íàYÝ}'PN`ºSuBf$,ïÕ•ÓLöÔäó·=úwm³0mVÔå –l™ ˆTOnt£6×M"X˃ãöq¼åDŽf0Êms9?Äžš_šæmnH`ãA…A×mÒšº -ÖÜ­“a’èŒîjfnÌUØÛ™ŒÃCž›¹a£t·/ŒÜçÄæ½òvÛÜ×ßÚPqE$NP^_Ù…‚dùèv±¸ö§"TŸC[ þ¿|¨½¦wÒ1|7ô—B%Óÿ¶èf‚£W­"dÀá6QIa½÷Ò†ÅE.á<¾SiœùÁ—Õ™)Õ+µž Ì%ÐÅY`; —Š®5!‡KoLS»—NÕ’öhPhäDðÚ¶R‘™-¾„®¹Sòéæ‹„ç»? ò¦åÕ¤S8ûŠ!ª—,ÊÏ „«vÏN²[¼ `É"Baæ’Â5ÖÂ#ŽdwºéW%Yl‰¾~:/´‚>®Z¨;eÔFÁ{N# {Òí}Ê?7yøg -˜hS·…¢ à`tZ¦" *èQC&KsulÊÔJ·š|6×iÞ$rˆEÖFXggξß&vÊÈH_I«¦)³ÇÝLRá*Ž±·QÂgÉX¯ušV,Ð’"ª%_©L΄¤"4vܹ¥ÂÙ©v€Ã»ZÇõ! -åÕÌîûßY@øLŠ‰{Ìvߺ‘+‹ÎN*Y“Ë+qi]øî/^L)㊴Š’myß1=óˆ‡K굎 ™¯~{iµt{ÒnÚ?'†‡2²d,µä½›ÎÐrˆît‘ß³É÷”ö-¼FÜ…­¦Š¤ˆFl L y‰fÆæF?Mè€_¢‚Ý*aÁ–Œ¹ØÄÁ5ÕºäÓ½•ÂŒ!»¬‰£d§ 2‹ãΛiú¨w/"Ï;qfWò"Ž—^®ã0$go„ï¯aWó¡vêm.üÍ¢BÛÀ/c@ž{:¿d"€Aú·vÏø]P}Cð*&kxÊ;ô¡k€6܆ÒxɃ%ºÕ ^X2ÑLŒg]¡’øó…ÌVm¯·­¦Mhx÷äŸP&ï(Ð{Ÿæò‚gû¢Ð^Ö£Èý ĤԒË|í±º(ìdkÈå¿ì/¡ÎܺH€Ô”qÏJ'w¬Bî£t®½§€—žgOÝ`O± ¥ßcÔô¹“ ®\œK*ó/˜Íû´®¸™¼g²9Zö<0väB‘·ôWK=—äQ‘]a9<ÏÀV<-­Meb^|Þ€£q£À"Ä^ÏÌ×&l |ésêgiÿÑQ=¶ÀéõrÓå m[Ò:rL(Ó¸ó…„aXÂœšÃIlµ«eŠøÓý€wƽÑ?Z®Nm‚CU†´úØ ü‘Ö•;l€Àc;^=§ª÷¼/ÊE#ëà…q$SpÕ TÀð /.qKAEÍ æ6–ñ­¦ËêÃ`ÍQDAϪÐ'Ön¦6O¨ýGÒã$áDÍ’ô[Q»ç8s‰Ï2F£rïß$>•©.N©ãÝ:;f7÷ã0\ -^M -åaQ±u`8‚@jûk’¦p–XDS›<€–§µ×¶nh×yãDIÔ#!“‚MJF. 2E7'GìYN¡±}ÖÓN4Qs¤©Ë)­yÀ*ÿ>YAV`°upmSà6œƒ„ò)¤3F@ -k·Èqk‚‘áüû~ ¡©½Û]¦ -š¤Ù»”cÁM*i»[S.ƥʨ ýÍ5…M/ÕôgꦘÅ4i,ô–ãèü&ø=¶Eºáò*‚<¢» -&~ˆ Žfð”@ºa-Ò¥!Eî=3jŸd+aNé@#˜‚R/ëË甲’< öyo·‹¦oæ?”M˜*¤]ÿ¹ö¹„± -,ƒ™Ûsw[cöUŽørô¼IÔáû8#…ð0i·a³ÉFk‚4•5û7÷>ºók0ÒÇ v*êDÙi*”Ù°zu;åœÛÌÖ °\ -¬ oØ´úñó“ÐÑña;rÿÞ( Ö’ÚÈÀwz«KNB¨á˜“'Šgfä¤W?»Ä1Yr!k¯U`)´Ù˜íùÊ«µ\®$<Þ“€ŒX¡<9)ÜAžÈV”(`ú¶å­Ï©r›ëÞ).áUߊ]ýò–ëX/^¯Ó:bå²[BŒ'’‚ðA§’‹ÖÁ—«+u×}ƒì¯Ï"‡ñ -pæC3ˆ‘q'z}SdÉxÕBiؤ+GøFÅ.Y2µp£Ø8þo˜ªv}§áü@ÏÈëµ*‹QzöñI°DV `Ê¥ˆ—Ñkéʦèä.œÏ=­h9µ—8nA‚’@$` H¬Â@0ˆQ-HË1gýÜ­¾³«—уvÅËS›=í“áôç©]m¶¨;Ƭ›µÝ–V¡´Jêd™<*§ ¥Ov¯æIë<]_Žîcô‚K.Í&Ø CŒÈÊ­µE­] ÕW¿÷¡îšz7Ìöá=/ îè¾\­`ΫTÙ(~Ö°Ñ.øŠ)lšÆ$üÊaésZyñæ‹Þ§^ÜpÙõ2Bü™Cö [Àb€@ñØÎ1£X“<9µœyr0vƒË!êSsíÝK¨/æRú'ô»ÖÞââèÁ3eÛXÛ¸Øjótoåž+9n{Á„šcg@f)8}ÔE¾°€UØ9Ð_²¶£uð-¥Íyœj\}qÁëÑ¥Þ~¦'qêX™GÞ«kú`$ðq¢pï×vq•š&¾°"àŽ<Þ½¼ãK¤Üñ©‡Ð.Xo|%’Ñ}ŒÂ¯Ä|ãžû5®F½Z¹ãX»­ƒšKbµ X½p3Ÿß¨{é÷Ç/x+HˆvœE pº («ì -µL 4öæ–m¨(J«;¸Zs·r÷°%ÐPVúÏîR0©²?*ˆ=€ÒètÞ‘."¥¶)“¹$y8V+"V_•ËH‹BtUñ2.ÙßÃ?-–B'fFÐÐÛï̽ä"]çT‘+l#c-­Û°º´hn·rÁéQÈ‘"`Q4èÑ¥ˆO§Þ°æ†cþ¥7’?ÄÒ¯ÜnßÞ-y°šc¤(êœÝÚ¡gD¶»ŽB^Ù„ b~*àÐé 9 E?Å<‘‡mðdŠ¶Hö1ŒÙL'A­iFˆ»¨áIß_ẘèîTÃC¤6ÖôÓVÖ[)ÒB,øXÛv¦bÑ‚ð®$ØœPÃŲ w£«µ˜#Œ}&ˆÞ K<9èª^Óù—:tj@ yw´d†¶cW§+ÓBúqDå‘ ?ß+˜j3ž ëK,dd î3GLÂ÷¸±Ì‹e„®M$â/Å¢ø"gÉ7Wë`q`a¼“¹¸(Ãl²8ܹœE;ÿÕŸ–£º8ÞMî·ÏR‰€LžXý2d¼(o‘‡ÿ"„µ‹z¹c„û…æã/Ͳs\z* üeýô7àÃ>^mÁqºYÀá‰FgÑ€ue‰ºP/6þD¾úYÿ½DPßq‹ûæº|2I¾ÿSƒ¶°ðöî¯HFÃ1`<ŠÏF¶¾_J‰ÍÞô[@kÆÄ|m˜A]±ërˆÑßв¹ÿ4ÇZ'Låaóý‘DÅ;–6†[à!uyçd9/¾ÜP€E²–½®…KŒ}!n|<¬­}±-P{ýš÷°K¯–‹8TzY†‚Æ²Ê ¾9%˜t¬ÿz0¨ÝΤ‰rƒ¿jWɃ>¾¸¼Ž‹üvÚq…þV?Ç›²ëŸúÔP9~D£üèXʘøyˆ¥*0u¹˜žê&$G>HR§spXÏÅÏØ3DBª K[ØíÒB8ãJ s+5³t•P“ÝäíÙ‡ÉIw]+Ý~dI± -75V¼$.Ùa®drTàªÂúéÀ§$g–ËÃÐ,~â·…™°m0íx;éYfíõ‚£ØQÊÜÖ%¦D"IGi“¯×™z{BSá³ry>•¥j7‘üw<›÷OŽó¥I ð‹^E+G¦ÍwSÊžº‰Hq¡kiÈæ艨!ÂÆÃfÒÔ³{üÃé>±úLRÁ„®È-ÁúŸCIQ·m.NNT·Ü×\ò²Êo£=ÓuÊì~šðªÿ †ÒŸf*Ö;óJ._Zp¨3¢T‘_Í»rЕÉFÎÅÎhŒ°((t\ÄîJH‚ûå´zˆ Þÿî2æÑV ðèéQ#Fþ©U18Š8ü¡“'¤ â¹´üú.ÃA2eLfÚÙÌ@¯_Ž`‡4âýp“å2èÏ¡º§qˆÆúÐ  3Ñ+Í~ð*ߣo‚9•(ï>Û”T‘­Ž=_k Jâ9¯®ÿ¿¤+ø^æ}Ðîm{•~,÷1ag`;7TS.ãßÄòcîØW(°DÒ,Ê7q3oiNZ'-É8ÂÜI”t"öÏœŽæbߺÿZUÇnôíâ¡I4Æ`0jš!íá=¼L?Ò„*¶|?aöÈ’¤ëkü&T¶þ§QØwÖAñ2NœÜq€ðvAÚþénxb‰²]¶-¶uº‰¥¥ áÈvÚÞ–§Vï>ÉûxE.MýOͪ°RУÍÚ.ÎþÌašÙÔLŽwj;ç¶Ü ¶Â73SqhTlM‚1¯ˆv•RBaUbäó«ß:›²HŒÓüª®SŒliD71nœMIr oÁñwÛçxø¼Sºí×Ì£é@m Ó·ýì_&m•­ÀE†g}•`”Tt AÕS¬ú¯òÀ(^²ŒÜªÏÀí=5ÚX­¾&„NNqƱ¼s7©„>ãT@H¤‰»Á7a‚ôó%ü}Ǥ¡l pMØ…¸\ÔÐDÁ· Ÿ0]æð²ÍAŽ¢Ò[°±îv¶: -A0µÝ¶KÈ•ô“E5“7X·¢Ã|ÙŠ^åÖ’=“W1iqÎSw¸”V½]ò6KøzbêÔŸêz){ ë‰G`õÈ;Ÿt7Òzw"81ÕbàøÜ Õ¨,Oسì×NÚ¢CBÜ ´[’[¦ç;-¼²´Ó\é{;,ŽBò‡¶e,-:¹)³*ì îCÜUDÃV"¨/ä<{ÝÕ]ê;u9㢩9’^ ì0ÉùZM‘ ËVR£t+>¨[qh­wƒ^fôó®ŽÃø‚¥”1šuÆû¤=<)bÖ8Y•÷6”²¿“ü;û=U¦I<ºu­C»±Nö_ÔaÁ•–PŽi9[€a\PUá¾)ž”M`ÉR})”¿ýe>ÚÝ2VÆÖì¸/¾ÖHÂ’~“궉­S@­ Swu¸¿'¥¬²{—/$0UŸFÑï:›U–³³Ë°‘[M¦öÁ‡…}ø†‹(©ñ<½mõ «b˜xáýÂ,7\0F&º0*7ßnW3©­îýÿ»´9âF`Ä…v~b…#á»Ü~éÉ$€é_d¡ Šª6/ÄúÛHJVñÁe J_Óš2ÎCCtœO¥÷ü> -õNX¬Æ ¸Õyö W¢ÐSÞòKb3i:˜0/\©Ϩ†äH½§[ß/7]Ýreç;‹B'§Ð×ãåNk¼ÃY%>€ô¥)û‹ý€#-•Ø°w#“ÍÃø1Š¼\;ÝAèÐØË'‰—Ûâ”D¼u¦sÅi”ûßZqêö¼w§›Û=à@w`€Ÿxí†àüÿ$D«œà#øS>å´Z T† -V~éžHMÑ™Bëg÷?º¿;žµ®Ð"^m -ýUÖ÷æ -x)Ýw"×+öêyêý™ü¾#àÆ\ˆ¹­Å1«æþ¸3…W£âç">¦LWrô¤DKñ9³Êc¡êEÈGoÐE¾µY h -ݼ~§)(÷D(Ñ’c{/ Z´X(’&³axÑe‡pû¹-,ΙåÀSÃ=ÎLŠÈ8Ù–/GUÙx^2xˆnÈsO:‹Òvºì5ÉÍ3ŽŒäδ +cvö,wúª:ôØ!ü¹S?Üp–‰G!ìr–{ðŽªàʇÊu€c<ƒþ{ É*F븙ᦪÓ]eTZqu\ý“ k~dáwjRÌX6€;+šþÓû“í¶b÷÷:V§ãÂ,¡÷£`£:G>mcF"!«Þ`Så1hç~ó±€Âæ¶iÏ’à1îoõªèNÏ E,iXn ï -xhΡÔÞíçh.²›mdI-SF3œ†¸hu*:|çÊB{ UusC´®õ©Ùb]= -Q, -ÇŠ¥ì´þl¶za5ñ8 µAÒphÞ(Wü\‚ÿ¾™2×t©·¢wdOe³%(¿2 ´EpD»¬ -Š0ão6ˆ–Ž±NÇÝÍñƒlA·q»qäã”NÎ@ i®é@ÓÔ†Ê0OØ8sË\–¯}šrÑ_ÀDÈ1ŒÏ£RaÈòY _4„%L=ì‰õ<—±¡ÔÎxgUÕÝ Y¹:¶GÇE–*ºõ£6no¿ÌÂívµõ»á•ˆ/Q§Ëÿ.3dwòøüR8uÞæ"´c¿IÇãŠGZÝ9‰Í´ô곺>ÃÿEJQP¿bTžë6‡Ý–:¥š<„nˆUYÚ–†½Â±£tW_eÐqÀ®’[,m+7?Ϻ¡Ê&]ÓDN½ú£³BåÝÝS…’Dçë“zî´Ñõ‡?@!}öDÎ#“/Tò‘€¢5ñ¹´ß ¦ï@†r°ŒöäKþ®mEŒpè1°ÖÑù.HòFo$[îgt‹µõMBU+™ÑQŠ€:áúúH§¢´H¤›¤ªðªáñÝ“Â{ÌbçpyĆºÓU|ŠYðÃñ”AwB™ªXÜ{™ÿý±³Ã(2ôœ‡±wP’ýᣓà¦Y™_|«w Bµ¾$ÅíxæI6›öUV{ܕ̧$clàêpjÄysÝÅñ!¯Z 猇m·ZÓµ os‡» ^/ nT˜L…¥aó‘ÔZò2’g³ú†ï &Cºx5÷KTZr,«goHBN “Ò­½äÛ)ÇèØþç»Ó®ÝkZã¡Øê"ð]@Êñ­ëœ¸¬ö( yfŽÕ…¼HgË©ö}·T«_RF]»»Ú´›º»5K©Q™^Ò8D2%¤ ø™ ÆCý…q`V;âD†x?gºâMAÙA.Ûp·ûÙF2Pm5ŒÀœ¬Çîë¦Á @¨rµ-39RR#Ð?X‹pKµK¿žì¥‘*äU¶Ä°‡àbôÂ<Ç´p{â­úŠ"^Å‹¹ÌîÒsúC Ÿ ”šá‹âÛjø››ü•¨OÃýcŸDȦ„æ6#©”˜ínË"€¿ }w_€^75lØŠèÒY$ÀôÚ¡ãh²Ç“ìK¥ c0U¡ã+‰ϘŒ÷ot_ƒ–änË“'0”À*ÒCè2†4lÊ[(äEa¼Ê4'yPÏÉWÐÞ$[‹d½ùš£ZqšsX¼ ù<·XHøêû‚“î4>ì­Ô‡ÒÅöZBééýœ©mè/Ÿ¯Ât·`ûÈ{«NwNåçý¿¦"ñ¤˜"Žu3{±³¦1уæó18 -û虫Í ÇDh­œ]Dü¢Ó~ ÐmPDŠveY5¹Qö>ý¢>®iØVrSí~/qùï>U¢ø)Ÿä,Àþ'¤këAqòU©º‰Ó\ªc.D¼4œg$›n=b˜,o®e©h 8FM¾¼‹±Åg1°‚/qÎ0ü -®òÙ­e€c[Ö.¶?Rj^âÏ„êeàNx“l0•1Û‰<YäóöÍs—ã7™ ‡‡ï~]ìg%ÂüO#AÛæ½Ò”¦çáyûŸ˜-©ÏüÛ…áÐåŽÕôñ™â~” ¬X0‡Ñyö²n¶æ×\‡ŸK³ŠbF¹ÂåT{ô-aè.[DÃü}ÜÁyaºÌ0-%Hç÷E±5ªÝKàרß}¯“¼£âÉùqŸ†Ò5yG¹hÈïTåW=0ËÒ}•t(÷‘o -üÝ8ÂU+Œ`3|ÁHŠ¿q*ˆåG!h5v*b>›¼ƒ FÌñçVÇÔz½Éˆµidvî]ÁŠÏÐ=Ü<¢Ð8i¸ÿ²™b yºœ1*ß 6&>‰1ÐÄ·J¸cì(` •2±ø&a§%&]‡€œ*T:vFÓoi5.{|—í¹®2Ðâ°¦ð“Ø©&Û|TcýYRíýçù¦M3W\†0y8Ž÷¢HZúb7}íÀEʈ"è| É!^Ü©lf‹º‹ZÛÂ`ñžÈp+nøöYfƒ/3@/À%ïzùüÓÕ’ªF:}Wˆ–Ãoÿ0U!†¶nŽŒWꜵ¯ªŒ³ξä[ñ~KS™çÔ[³iÜ)3ŸMâèƒ(¾]7—_üÎçp0ÊÞzþOùšËà맕8-÷ýMìåbћœLåü|¡¾ÍüIxÁcóKo{ðÍH±hÅ=¤œÌ&;0£ wÓY¸3 ¢1ãL™'Ÿ³f†de­ý-«o—åÆO݇^ñ%&¹_ ƒë•¯=íI&Q óÞÑÉݵ¹¹÷`½÷ísj;zø Yã•óžI4/Š! P17cß±9½÷:Î/ºðaSøèêÈÏ´ØžsE]2©€ÌSCð1×Zü5 þ¼~šc‹8܇QOñ¹õ€ÓZ_1/Jå‘Ú£{rokÃ'Ñ&ÀºO`ÕŒ4P;@Ï/QÕ£­¿`7(z«ž öèS ]þPÿr?^h¼ã|è ÕedÒMÞ–á=“«åˆÆù-3ž5Ð’¾×u¿s ‡…嘗Ÿ7 ö7Š¯&ë¾r¹æ"óåc.µ#mU'Ö¹áZÓÝ?Åy`Y†¡!ÛxÞKc /™Z (ì-2å³×i¤¯ °¤ý4¹¼¶›hYË -CC'{¿…i‘ýF<Þ<±"TåJPÿraW?ëæ׬ð¼ ô*òõ5|ãË ˜¾a*ÿÒ‘^~!ð^ìF¤ÒlwÔ´u8éÙÑßXZÌ\¿½tHHKXžTí&àë¸mçî<Ì\Hnh"8SÉ 2v|§þRµóq”Å‘'¸QìÝÜÉû™=:.I¹xy»ÏxµdŒ¸W¤*lü{u™u®µJrôÖ ¬ÙbD42vi‘"-Åì“7K¼ÐLw¥@Å lÔþ4²¸×%>ml (£«ÙSÃÐÁ“þbc‚jøVÙÄßÀ©g¸þÎ7hð‹|ýt÷Át܇[ßhÑ"îì‰àº Ž ®"oÖ˜ç õ'œ—ÍTÁKŠ¢EA­2I”›ð8Ó€PT -ö@ã {ûÃ߬o[wr1žà÷úªå…|l‹¯¾§q8Í¢ê/ÖYxIJê›Ã”ÇGT×]2d©·Fô_8Q‹A¢~Cü–ñ1·ºÛ}ðý‹s»„,XõíT›/ÆôµÛÞèW%)¼ÐÁhú‡þÙçg¯÷"“^úêYÿ°‹(NPåÚ鑸øÛ Üëu÷ñ)Æ£—;–^|/êñª>¼‹ò¥§â°£(ŸCdŧŸ”bïÊÃä³Æ|t¥f‹pmÏûË]ù£év½«ÓT‹³äØm‹H›¸ö¶3!ž¬–40èêï•uª²b\áÓðI>ÞíUµ›ë{l`ÉèpÙàùµ„‚ª)ÊZ«òñÙßÙêÐ%š’$ã7Á}zqQøÉScõáR¹Ÿ-ñ”’º)ÃÂô”©g׶ iR³pN -îG|yTC£¢½c^;™[6Í,#«Œ¹33$ b4 ѧτ…ƒÿêóX¾ÒLÈAÊ’,IÞ„†Ø{Іϭt¯ëÓâqŸC<ìÛê5?ÞßHš˜/+ÀÔõ‰Ü & -Zƒ¾ëkþ`¡bŽ²ƒZ}ˆú utËÂqš;¾z$,|ãÒu\ϧˆ îO?Ú"ÍnùÔâºY0 ö2»Å{,˜yc-Œ#à«:Æc©Éž{“t‹{“)üím}}Gá\c q·öÜõ2ÿqAÒà"‹}¾Ï$‚T&š] -§f‡Ë€ºl²kü ßwC·~//v—¡d9øñèÄêÄÀ]ñ%íïmšfß-}V]ùe¸…b縥Ñt+î0  ¾Âõ¦Ç{ÒÕ†/J%,Ò|9*«™yBuŸ=M«ë”ù­×Œ oƒÈ¡”Õí>Aµ‚òMwOÐ§Ü -« ó7;Þ_:d:>OªoDÖ -ß\4 ‹Îÿ³?¯yÈàÉÝùÁò€ˆ–Lèqœô9ê‚ÁŒÏuýÈ·ÅÛ  -”Ä^ùF‰v2¥Áp›X†ò«ô !‰,x?‘%øÞáJ;·I†ù¶ò ûWdøéÒKC¾”–Ú(Éc?•”É„Üû-¡Ëy” ý^°ÂÆtQ`§-o23b$FíÞ#o”®ÐuÙm]AUYßwŽäሴÐÝí¼Ô rDäºiÅû@ˆÝþŸxììë„Þߎ\S%Ù oOb¼ç÷EÚÿ¦ ¦ÞÅ: ›ÝÌ}*±—ùEBÒ™`%YúyX¬›¹>+G‘ d«LeuáÁ„…“¦³Å…eÔ✓®á¢ÜâÓ6Ü]6&™mÙ9€Œ=nP‘;ÔO¬,^µƒTÃ乸s¢^å ÏVÀTK -P¸^à0WÇÔݶŸ'ñ S¾>¨üáPúŠô £CÚÝòØï¯í#tp'çJyB¦…v†“;äËKó™ØWÖTëwÛg ›k¾íTÙz¢Ø7ÃÛŒPB„/zÒœ9*)ÎåC³yöÀ€J¥®ѽaXèáX1ø¿jÎm‹Ù࣬1ÑK‘¨Ÿ¡Ê‡zT겟j&Š¦–[TtOáu‰¹¥ûãÀ!Å…9‡cÚP,c”0°©‡9׿»¶¥º5ŠÔ­åpáéL+1ÃCƒ † Óº ªõ@¶ˆç-Gø‚QPŸï”H$W”D%ÞôÇ4ô¢Ä{ ¾ Œ$9ÕMª|_y"×=ƒ–ÛyÝÉ·1ë^[ˆïƒN"yMc޲ܡ_~#†–ÿ 5"XÕíq¢O]xevKr -endstream -endobj -2247 0 obj -<< -/Length1 1173 -/Length2 2916 -/Length3 0 -/Length 4089 ->> -stream -%!PS-AdobeFont-1.0: PazoMath 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /IKXQUG+PazoMath def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 165 /infinity put -dup 229 /summation put -readonly def /PaintType 0 def /FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-40 -283 878 946} readonly def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-451 -318 734 1016}readonly def currentdict end currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U -nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ -s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× -‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 -9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, -ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. ->Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH -ƒ$ü-UÒÛÊ3¤³# +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ß]_ŽöÝW_ÝÉù(~ÿF†àv¶œñáWfE@ñ»Qëc»¯¢PNêd¥‡qclµY¿„§†]¾Ošå¡æ®kÖÔÁ r‹ lÈú¥n€8e‹ &ãy~¦8qE”<£ÍDÏb´]„Þþ$Ÿ<%ª¼GÜ¡Ìd`øF òž‡]æÍ"Ãb¶ZÊ9 'Nnð à¯]Œ½w¯ù90dÿQY°NS+Ý{M´>d¯Õó¡*Ÿf$_ÇÔÏ{}äþÎE¾ÊN5´Úw0Æÿa™ëmLÿ@°o²Ÿ­½praè,¿Yuš½vT fEC/øî -^°Ì[XâO¨åß2þêÿ WEƃØKQÙB:”ŠÒAvÑøy™°ug¶¯ÙíÏ=q“p5­—/¸…1[úÕÜ‚!l2T˜'9HCª¾a—€®ĉ€üw™±Š¯‰Cî3^—Cyœ’ÔÙ}^µÿ–…À 2ŸA‚ú3>ÑG|ºÂà”ãH.øˆç]¶J%KV`à8ß?½†Ã(Ì0Í÷ÌÌg¨óôƒêt,×OT7 Üà$n"JaoÕ82*tß®ìû‹¼Àç±.ÙøÄüÌÕ„ñøeÙþÌ]'2õçb×v–ó€Úè«ëþÐi“ß)kŸ+ã÷šT½:CY#M5×7¯^ÓkjÈþrcÖTÑDd¤;y9±§/ªä£EêÍœŽ‡îåÐIœ7K| òŽ”Sö­ÁÝ¿[l6ƒáå†ê«÷¥ +K|ßOV`bàÂß'EÙp…Öœ§höº‚ÒõÛ(Ñuóèfè*Ž†—âéþ­ñ؈{£s’G´Â(\–h‡M9?Šª¬5 ›gÀ|Ü 9û@£?ä +â…;ßò^;Z]“‚Ý_·pßêXÛæÆêì¯ô5Mlî•pCŠbØÁMDþ ¢¼›†âC³õ ![]¡ÒzºŒ>¼¦¤§¨Òn®žÔ¥ç˜R>X5 ks‚•Æ¾l© +yHRëàv¸ú,#«á#ymí­B[Ü! ºY¸‡Ÿ|+á´ˆÉÖÌ@w˜1Èy0¼–+[åÇç3Þ€ º©;ð.f¥Ká›ÕÒ$¶w:¼É; ×0´6‘áI@œÛ3úñù€Ð]…3Š}A‡íEêŽ:l9éÙñ;fQIïÜé1Ë×YÚÿuK­YßEXÒÖúñfhÚêƼ½mxâÓg{šG9ÆzÏ‚ªÁi¨{š£$ŸÍ@í½”–vœÖß2BG™4õê˜#­=„Ì-*n=׬>¹‘paŸ¬\ßµ ¨wQS©RÔ9 ~Rã~{ãŠûµ“,VN…Q:”¾‰BÞÊ/¿o©,ûS[-gÍ<õïCI³ÝÞŒ½¥¯Û$d…oS¹×줇µÔQøfD®Vôc’ÙÏH9>S9¾ÛjÞCa7Y¶‘FÄC;™ +²gÓƒS°Þ“¼Ú$2hè¨HùýìÆ`N}HŽÏ+iI9âHŽu»õ—ÛIãô&Õ–ÁÙ‡‹J&HPn‡Í…èLTä|DŠ°îÌËÆ쎂j²º'ŒÏjÙÊ‘?k.&~§wÿÖ% ‡ÅRF¶‘ÕϺ·Á¸o>Üa­Cþ›ÁwÇÚÈÚD²e]ŽÉ¡>#_Œ(Àµ-ËŠ;]‡lƒ׈ ‚î©S \Z+Jøú CÛ<¹ø;ê–É’Z[ H£9•Z<(*@‰ðLî5À´GÄ:ŠÜx×›úã¨òÖ{y’PÊñ ‡0˜µ„DyQ®‡»µ/%¥¥ß¤]°ýù¹O 3ž¬5ø–Hwê"ÙåÔ%o14·ó¦,ýŸÝ¶Ç 4Ù¸–Õ?F)CžkŠ²·Rûõ­nò©¬kêô5‹o +ul¢—!ÖxJ†óæ†p$ ¬ÍÅKNgßò»ŠG–´¾Zs6^m„á¾ÞûYës8磩}‹2š² ŠH¡UëÕ +]Á‘ŸO¸í$ËÆõÞîH;ºCié_Œ'6Õ[$K¢\xË;í^zÙ8?‡!7•‚&þ¼†¦•–ØdD•¹§tÌÒrjpÞ—D+Ɇ‰Ð¾µ¦9ZôÉ€Åã“Ãó3HTÅ×IVxÞuJð®Ú'8Òü®/,ûHÕO@afP²C4ûCobž­*³¿l7Ñ#×±? f)ó'WgÿsJñ’«+) ë‚c&y½n2l°PÕŠ‡€¯ŒÅÊ¢‡ ©Èð– ðP€øz›`IMô ó”” N0LùÎV0ækëÈ7%¿ãHBh5>¼ZY@U4½òœh‰9jD‰ÐFÍÖ|HVÛx6ÑÕ‚çA ´{MùhÐŒB«ü—à€|Worr‘6•û˜ìúBÊî4·B°Rlk‡*Øô6@æÖ—‹1_r:~‚–¯¿î‰ ŸŸ—å«a-‡:5 ËÌÉ5hÖ» ;”ÄüãzíåŦêüì»á6`Õ69øŽÞɺ²Ý±§ }×LM¨a3ë1>pÑ°‘M°ªŽ´‚q#Ó=4ëùnU ß›a5|”F¦#<¤“œ,çÙÜ ‡;N`,mJV ÛClòª¡Ã¶Ö˯·fuLŽ#ûÖi¿>£4~HÂm\ì=c+µt$¬eÞ&«X\ Š>À" ‚#ˆªTräêéE«ïð’®² šx\¾ºÇ5/WÇÒänT×Òqéæ)AŽªP¶É¯mn®DöBÞ®âaÕ?,&ú íäB]ô­]PE³bÁÑ–áþµ-ÊÖ½w¾)¥×2­ K½(]äil°?~6‡Å÷F kóó¥å"µÈ}áÙu° ^«ÉŠ±DlÞ½g‰œG™—`§³LÐ&¤Rfê`…V'3‚EïMÊ)‰LÛ–;'#gtI¡W#Dú]˜ö'…rÜ£¬Ù‚”OCXmÿ¤ŠðÉ6 õq%QmË =Gdb¿ºI6«…!#[Ó»¨>ýB6V ¡Éh’ÍcÔU´øíIF&i ¬%fd@#íaù§QÕ#02o£2©Äv`윊Oí줎 r´3åó,iàÔðPfQfroü3é“NY³ ¨¢Ò«5À½¯%çÐ/¤F‚–§*=(îV$"Ûð3s¡¸8;M&”êúøFz-Yqɉ#ð²~`þ1ÒNõVüýcqúìôÜ™Éåæ¼o71aiAûâ<¦è„‹1ÎôèüÅHæU×qnÅ÷4ëMN…üØÝ ƒf>g¸Òœö3 ùŠ´6‘$Û¿7Ê!£y§{NŸp|jš.Ôß ?CÓVÓX Ëà¬=½OZ{ÛÚC³Š8L-¿Y+ ^©šUØÞluJaÅ[Ï*ßðöŸõ€[TN$‘èCÔ‚]™¦8…®«ûö‘ý} /¥‚Ú}ëºbµ¾ÌèOWÞµðìrrM-¼ò€å×ú÷¶f.+’ÐŽ‰ðæ+ÏæXÂUt×96{ðW +g»aØGrI4£×ÁÿHarCœ+2è)Ñ©kìÍ©HL‚õ EŸ6No­¸·8׊G²XÏ»˜ÕH0Áþ’wDÊÓ/¾ƒøÁòˆ+$jÞn…oš¹ÑEÉ+’:Æ„ øž³‹ÿ[ëÅG^žä—.•$Ü>°“¢y=U3Ef©Ì¯$|pZ„îm¹| +ñ—†ñté>=ùRŸpÒL»Ç‡Â”)ýÓPÈá­^»qí— ¢7k•ÀþšÀ:Ø \•¶‹ãyý˜ +ºFÈáèÓaî„…u¥õ"ôÈɀе¨sv_¬T*Ï;Ɉi”¼õJPØi±s4¤E›\''†>…œø*UP Z‹™(ÌÓ³ Þ# û·.Œ?^f£ª¯Êæ 04â(ì÷´GÌW`’3ýೌÔì©ø­½÷¦XŽjzñ•Ã€U*5<ÎPáãÐO! ß—ƒÃ—XòÞµ‡.² ^<Çç›ÝHãÚïôãv +‹AÇvŒ·˜ +ØÙ…'µí[~P÷< ²'žÏráìy ]9®SDRwÈ™þ†åK‹Û¬vÿ„àÚbÜ©Q]n‘’ w*ÉÌù‘gcšt²ú~ü¡¨c³Uì\"X”ƒ›OíWé6ÇÀEz•qµ æ“)O!Š¹ø§Ô^_Ëšpü¡¨c³Uì\"X”ƒ›OíWé6Ľ +Ö nÙ‰Ú*W^¤^Ú.Û´dôÅLï%1<׿/GPíô´dF@¬B‹ý20ˆÌGÈ"‘vp0ðBy¹BáÝ{ÅÑ µ+p“×…ô=~÷»©!XÃÍ6î‰ØŠjæ pAûÃœ\³È£fk¿‹¿½$Ó“w§èjĉm@ŠMÇØà& ŸiÒä(áDÇw%ü|Ï”‡-Ïdã¿A4 m•`ðƒA®g[ùéî—X¸è8]kRâËO1MC€n‚VýG®kÿdô28gû|}/U¼R¢ùæ¦0¬AéûêrÃÿ 4Ø3Îö"ºº:‡òP¯œûÁ‘Iª:¹'óÓ+BÃbÆ\ú÷-%éXýSmž¨gk\DDøÞy‚k?”Î* ò<‰àf=Ei$n“WÌ!ØC—‰ýRýjì%¶`UåmJ³ì´¾¸Ò”=3(ÿ¨1좎†,x91*¬ @®}É;øÔÏðl[”n!Ðõ§™ÍÿäÏàNIâ?øEÏR]qƒñ ¬„u¥ÂLaéRr'ÞŸùaG÷P%láßdAÛÏ#²ƒ<¡5’>¨&Ì…ÌÉ!Þ¤&’÷§¦éÓ¯ô'ÂüѳFÝv–C‘"Wü>¢B²QL$ÍtÒ¦n›‰ˆoPüÜ'½ÿê'6Ñè)ü¶»fÆoàSƒ„üÙ<5ìx¼²‡óÓâ¸ò™ìÏS•ƒÖÇ~΄q@¯0z6¿a‚ñWGMœî +åñ0Š#ºë$l:Åô+jé£CŸsäy$¢I¨ìàÞÍ­.l³2åÉ-5 aŽ +çT”Ÿb);4ÿ–ç$XìˆÀ/rÝTJ4A‚i¥Õ’”ÒvRû(ˆX`ð–V,Û‚aûÐZŒå.6û^Ïû©½ã€¶€äÈ7'ù=¢ÖQsG`¨’9\>KŽÇ¶TÓÖkIϹ·3Z¯±²Y§±À›Ç\\òæ€.¬F 5*„rî& ý»éÞ›tœ_RBÓË%<6¨LÈ7×k+ Þ _“ q)ýO:«E^·ØWrÖ$:‰©À°»˜êÓµ­«¸0Æ…¥ßª´RýëýEow„OÂt8öàÁU }bÕ$ܺvä›­ÙK–nñPfBËïš×QÝAØ@B{ÔE|0Š<¼ðüüTÈ°ù Ì@Ï–ï><:ìeªTŒxªxΕøn°à³Eˆ‹gÎH*DˆŠÐ8Øyn¨ÒE=e¨ÉU%oÒJ.B·fÁ_¹•‘)€pr™ +äóIwÛá·ý9ŸVº]·ü¶Ÿ1)ѵëX„Ãe>`91ðT-è9’—oÝWÑ|µ–Š8KR ýˆ•¸NM09RÃÖ:?DêwÏV5ñÞLÖæ-ù×ñê¦Å§k¦³Bì’¢ûÏŸÚמ*t(4‰Ó4"¹ü2¢×Ú£ÈÇ;xñ÷<«L -[™Ý²QöáÊ.l´ý”ðB@ŒÆ#Vˆn›'¯±«þbŠegvÓ ¢ªïð’®² šx\¾ºÇ5/WÇÒäeØ–A/‚r:[úê +#X—å}Ÿ¦øºoDØ£  ëþß1—¥yj#¹'"~Që÷ü%à´Ë’ àSÊ‹p«ræ¾gk7cŽtåKÜdÄë¤ý"Æ}|:÷§®âÞ]éMëÐ|õ +^{sd{ÿpa6L +ë +¯ÏŸ%«tÔYFÄÔ Ÿ£Uêbì÷m'Áe³»+3Ú?¤A¢9£W½JF½ +†ªÏì|-LÏóŸ¬~µkâyãP4Iê­Ç‘E?8$Öû¸_ܵtjÀÓÊš…¸‹·²é%Û3eÈ VàstÍ"Ê~¥æ‘ÿײé;¿CVÊ›¨£Ow²üŒ÷=‡}f PVÿÕÄäáóàn>mðÒóB@G¥ËÛˆŒ„­*Âí®©7%J'ÛÙ¢  úk‘—§Æ4æ­k)ÉD‘©Lú›C€Ó*yÆÌi€$^ÿÚö$µ&…Ä+KÔŒ#¥Ç™1ÂYÏL÷_ö~pÑB`õ*ç<ÎìÀyè7ÜöGEñ¹F•Ô]…‚®Ç©•«=pºÊ@ÀØf£ž}¸ÉRA€é â®ìd"cÙ” D5…àBŠªÁÊà#å¦ý•Œòü/®õ"IPa]¢N³±Œ‡¼!ØšŒv’eÀ< +<¾æ$ éFç«s^ àÄÞ{Âs’סâ€Í–êÍ‹¥=!\j‹×—·Y€çõ@V\5be|Éì²Ñ3i³lã¦"¥Æ­øÆû+Ù4x5ßåãvÚy¢>‡v9-m€ÿ\ž®.2óÅ.P‚¢3·Ù ;ÃKq}}ÚÈ̪‰YKýziÃÞ3—åîíL@©±ÚßÆŨù…~NÄè9æirú|6Tœ—m¯9ŽßªÍu¥$) ‚Z­ŠìÀ.y3áœÚ–Z‰y¹¤ÕèÒtNþQv:k½A§­ƒ²'Íõa©AExGÅì À"À‰«<²¥Â}e$ÍÚ•óy)îU°2¥ûþY‘ºÂUjéš¹¬ºù¼ãØ,Äwr{·‚ ^üI”Ã:‡ÃÞY7ÔTY7Qí×òmÏæ¦Ëeµ5»FÌò8ó”ø½r'›Ã°ÒŽúO2è·”åÂ~Ū„Pr­ñ¸¹üæ‚B^Ì@Ô!;ñéãó´–¬w`C‘i$qE4F?%×Ë(áÃåhÐèõÝNTÌu²Ó“ºy¢)†,ÂôUð0»Üœè“rˆÛÄùfaÈÓý½l_ƒá'»à;ꆴSVøÞë{é]»øýp‰åÌÔ6‹ïUj(mEåÒ=×ûfG&!:×»$ çß½ü¸¢Ñ1AãXØõ>4× õÃ$Þµb?ÇÙîop†…ƒ)ªÓDZÛÝ­áŒÉJC¼´â…ç̨ê+½2D@ŸÉS~Z^è`Ú7G©ò}ÿ@ï6@É MmS_MÀªªŠrhçIÛ¬±HAo`œ'©¨C†%tÔ‹‹dKö!á·wWé.¢õðz(^&¤RôÒtm–~-M˜._§ õ~Çß|óž¨%æÝŽ§¤•ÜLã‡2`è(x—øÆR†Ù?À±¯‘ð$˜)7¦°¥£› +4«+mÖ1›Ø‹§(áDZ^x8p +š¡"‘UgŸa†o6Yf¯, µóôi¾8?G»Ž$“¤â¦`V»øÄ{×1ñrË/ª ý­@½:çÖG°ÿÉ+d{xš›Ô{] ÌÏÏòÃNpYÙk.vTe%¬Ÿ~æêt÷ÀyÇ·Vž`…ßPŽ½ bƒ‰EmNÎmpV­ÄŽã–u×Y³}n¦~S±ÔÝŽ™Î¶'vø¤\)@~½ð09ñ²ÏF&` ŸRD4½Ü»ÓTééÚÃG3 Þi}ó'’V!¬N値–±/Û5Ma£IðSb¶Žq(´ 9Uò•K!rdz~vˆ"?ÊÂä1î?a†øW²û/@;êÇ ôrËO>‹…$…ùt¢Ò[àZ燸*¦±6U•Ë¦Û‘‚$¯£ƒ{/ýÃqAª7Rï£xSq5ÛºDÌaö®EÜÇç…ë 6 œÐÙ¸D&ðêS^+õ +¢ü}KM*×¢úŒGt81Uÿ\ rö@K¦›ÊÏŠ³öuø%Oέ_˜3{sRu7¸úXøo2ŸM´4ÌÓE,Tþ")yï‡@ù"ñ ª:ÓÍs²²¨ +·¹$ñ¾«Ÿ`Ú,@ï–=R%­ìL1-dz\òÙðô’£ÈÛ#cÇ9¬ê´dït§Xyôo¦CDž>™?ßÜ"ÌÀ2ã‹^Äuí*a”š_/¡^°k¬)Wq}®ó˜mEZÛ¼_Ï÷¹XžñŽJ5ðG0 `tw½°þÅJৗ%ÚcUç×/ê¥Èp„gp‹ò£`£:G>mcÓW{,™¥ô] ûqý-´ßÇ—P=ö|´sw©ž»Ï;ï¥BM$:¨¼~‡gs#c%^p@õÞyÿ˪fè’²ä:¥¶É."#©ÖSÒ»iÓ_?Ÿu[ M]¨?áy˜!’AÀÚgå¾À@©X±K³×‚¢'›‘ŽŠè²ï.9R’¶^ue¬Zð"–th%Ë'¾(^g2–¾W|à làöPòXŸæ‹)š>—£ð³Z?èß[$Ð@ÖUG ìqÔžÌZšñ\6L ËˆÄïP›eðú‚ZáÕ^‘§ŸžýÎÃ/‰rßF _c™ +)‡~ÑÛ0zqÀaHÄøÄ=`àÖzC#ñ}‘xÓ$‚¹à“ò<ªÈ÷^¦q%Ç*N2FÑïô.#{B4£×ÁÿHarCœ+2è)Ñ©i«*v,¬ÞãƒaMVM>±¤ÝLF¹ÛÈŒÛkÅþìYgrô¾ºv‘H ~5 ˆI©n÷‡ISÂ$Ÿç a2E5‹ÓŠRóI#çÆ>œ¹â„Ús<§²‰¦h_8½Ô]7ÛâsëÔÕ%pÐÐ5‰[´©‘ÄV4´wÓ»72å¡+ò¡¤äÕþçL„æ=è†ÁÖýÖÓðÀçîRìZŠ +¹¥tš[ ž eüM£V©Z;Î;Ha)X³‰öC©âû&+ýw>†rWƒ#!CøIq;ô¨“2!ù]蔨ðû9 FI‡+”[yÕç1ê7%r²A®Å]4F L° y!vô‡ûö%ñ{Ú$¬S¹PÞØèò(Ü)Ì–•§p èeHn^á1™hü G™Oo; û‰ª£q{óÍRçü†Èþ>Ó?Dµ£…7ê•Fê<Ǽ”i:F‡,0@ÈàSÃñî °ª«Dh“œƒ«tD~š†…؇Š$émnX?©¹¢É}"+OÕé¸Kš&F¢h•qˆ8§|æ\¹¢ÿ´Ï@º¿šû©* Q® †”àƒáÓ}›ÑG¢×ÀÖ2xþŠL;q`Ð(¦¯ÅZdž»TQ¿¶ÅìÚ׺¨ÎÍÕƒ°($Þäí¯— +³™!e}²µQÿD*H½IüpÊöÿ¾· +èx¹ýFt;6à³Â¾v&R =[ZkoÏ¿þóN*4q&êÍ7rVГy8Uó6IRÆ“ò´•³Þ|p…K;ÿ:"Ù6Ö3Pôyló[ã‹û6ËòæÐ×0CDáu1ÐÆ" öKaS±«FÚ,AµÒXk'"ÈprüsG€ËÅA=dÖQs¬ríOô°åºÛnV÷´³¹Q;¼Ž:SG²šY²§x€ñíÜ7?S™ƒÎÂ$‡K·Ê˜¨pÁ=¼å Âe‘±ù¡+sÖmOcÌSW÷UÄŽIôñJ†E¦Cl@±¬ ųv‘}ÖªÄùXÛa´­L}¬êÏ%½ùÛÄ+è–Ð +5ZŒéÍ7ãшa⸅jÛÛõRTA[¼wdÈkÇ3xLjW|4#øi€GR²šaDFÎâ%Ñ~ +ÖãÖªXîá7e¬Å¸—m^=º£cýMø"dŸ²× Jü `ÕD&•K_:¥£çý þ .;.S%3e"PR쬅F9pþѬê[t³ÁFƺáeXYûX“KýÕîmïæn¤ ãš9·üm b+’^ÉN‘I7j}>%,&÷ŽCö;gˆ4åÔ~â*6vUû'ç¶ç'öþ°ñ¾&ú&Â÷æMY@Ôìn(Ž›¹ždYX麾vãÀ2}!ýèˆR„ÁÆH‘â^˜ƒ‘ÄT>½zÎa «Iš֢ýÉʽn! ¡ÝU4¢Lš ñ¡¡ÀÂ7 –®;%®ßr´’úˆîŽ‡à‹Ä8–œ.¸ÄdnHOzS¢¾v¸ï$øŒiB7Ê·w qp´ëº¥I¼ƒ*SEÃùæy§ Í[ ©>¾‡ã÷$Ø”¸H»ex(ßB]ÎrfÖ©Àñn«J2AòŒôYn¤qtä +¥t‹ÕÝmçN8®t ^gõt„¦4úü¹©¦ŠrÏÂ#ϪNZJþÖ@·À0Œä†=‰ÜbüXoàF±•–\󃧖,0VâüÊ9­x¶ ðíS¸ã壘^›)Ñwß ˜q8`ZdžK¤Ž{¹Ðð‹úXª7é }J=tëÛä(“Á/“}çÍׯ®gtô;‰­ÇäLìF³Ö~Ìj*ü•¢ŸÏcÛÇ6×8ñši+Q.afo¾Þ¢P(dÂÎ!m"Ì‚¶dºiIkÒ÷P!ÊCÓŸ¶3I"±ÍWY¿ã6›A‘?ýŸx›ž'Ä;qQËî_²QDj.‡ÔåÁ³på¶ÚÒÃ…ý´Þ‹9wðy*K©!Ï8K’Bk¿;Õdè!%"òi«gOæà‡þ ÿ}‰:t™MWgd©Y.y¿—øÌÎ68¡ò2ºîpŒž&––uõó¹Ã:±‹ïzM-­©Â–u¿Q?ÌÔWQ ’ý§¡yf±£ƒ¼Âý¼÷þ°O‹‡¤ŒcËü/B3Kþs5ÉÛ4õ>{ Â8öè"Ýyj‡¢ø©ï' øŸBØêŒIÐ\Û<ÄÌv§)†WUVÔOª'A¥ü@Aßzo †c poÕH³Èpúéy&ǰ󷣞ö0'Üs9Ð÷úét”]÷ƒ¦wÛ‹Þ°V½Víõú›MË÷YÉÿ¨è“ÂŽõIÊ<|nÈLÀNÙüF¦€ÞjÓлõïdJ:*4ÔOýp#Ö¬¦#ªÃYife†÷Ì’õQTi.ÔS¸1F<òÂQDʢŪàÿ©í$FÿCœ Öøú1çb´Ü·‡øËùC¹È~®€T>Òq˼'JôÈ°³­¿®’´)°n«Ð‡ÊhlÓ­ÕëªDòZü·Œ5ž»&ë2BIà«´Ô½¿Vbü¾i†@¯kABh!9ø_ÔOE §Á¢LïÈn ˆNà0M/ˆ×ºæ- Eø&µ'¼G!7çJ©ÀB¶šº{ךƒ=yü=Ð_×´xʹv:íˆÿ"Ž¥0€ÆH(MUËx0uϲÀ‹OЊSë†yCv#Ÿå@Ô¶1¢\I\ÞýK +Å:±7‘/³ˆùY&›±´·ˆ¾‚®½Ás0}wß?fPX·½Å„¦f_ŒYÁ¢ñOP­Ìn!I£ùåË¢<˧Äl~0ˆôÑÉ–¨2ë®`ªCfÂà ã³©0<É'f>F–2'.ÚõâaÇ}A0¾?Ðb€íë©vñÝP!^ pgñæ••r`2¤ØWÈÜÍ#l²†À£á \é°ÛP{Tغ,ß…žÜSÐ邘M’¥Ùf‘_Š©E§0Z4ïDÈ4¦zá1VŽX±àÌ‚¢B7¢õZÖw·6a„ùÓø\:CAvdS§ÅÐ7[Ñ£±H¯ +éR)vX*ê5¼@õ£î!¼–í€Hu¿ éI}Ï„Sç`¥gM0U#Ó>AUPƒ$wŽZJÝX¼Ç,¯®Ñë‡RrEÜñ­¯ ÷ÌÔÙ«P nî7ýûÈdùj@¢Ä³f÷§óaùGƒà^Ä‘ºä»¸„JPÄLš Ô6&Pn¤'‡uýÕâ– /Ã@õþVbð-`•Ñ+©5*Z–“³9TÃŒF _iži°¦É°…DòÓ¦ÚßÓ…ð°Ùº»À¿a[›«é}'•GŒáh;C …RÙNn5~„:¤Ò§ÜD«°™üäÚe¤ÊåÏ8ßLÐKK= _r Û«Þ÷—Q먖‘’÷Þ“31pWÿ1VÔ&êŠÜˆÅ=*t·ÖÄ“»RJÎ…AõUõòdK5^žqʯZÕYŽ‹·rïsäM¼}H<•Þ§e_‡…•tk$°ºEØá9ÇAFøaˆÑ†%z:jooÚ¯ NJvÔè½!¥Èá(“Yçò08ÖÞRm¾((?اG’n|õ¸‘Š,°$?gn âÇf…OèT€˜Þ+ÔÄ‘åœ3ä>;Âfö;*¢M‰½Ö"Mú| G©lÄC~_ÉŒD1ÎøkØ<\Sùéç{i‚çfùž…ÊT.Ëÿ²=zuÞ[l‹P d}îÃX‹t¡>/k«« +0sàÑu'âŒ#Çuȹ9‚§í¢„à·£köŸªÉênó92ײ( Q¸Ê­ƒ^®¡+0íߨ2•[è÷TÕ$RH¬ ƒ_I†l™,´DðÇÒw”ú¸,çäãçgÊkü +4¢Ñ—(ú³‚?¦«¶ÛcÙ`‰¾ŽÝrE®d­Ç!êãC ã°™³\AíÐWdö5Ù7=óZOI\ùÄÝyô‡Š:PŽRfã…Ù/ë\½ãñÉû8AëÏäw¬Î/à®ùlrsfçfƒ¸Sñ9éˆ<˜+K7\Þ<¦Ýq@Nm”QezÀr< íp%¤èàšÞýGÒgr,hó$_àq"3›ë&É\ž ™dh7Ýe²ìæÁbU\:‘ô÷æA=pÿŠ'*qq}¬ïzãùæI/à˜ˆ¨1§¤Ëa0C"\håÿ,ÔxÅ>q ÇäÇvõÙÎU'½}¯ÞŠÊ„MÓJ.ÁõÅÇrÿê§ÂÆþÕ„ÌöásÕo=<ÎÁÎøÀ e8ÎÒz¯á—©–|‰‚lËçq¥4¿Ö.}n<ˆjoQ¿²‡‘»õŸ°½ìc~—-:ÛÅ–Z¼g¸¥5U¬rHßýª·ÿ±wu#§ª&è¨ìSM¿ÔXòúƾLEÿ7—5KëZ-gÍ<õïCI³ÝÞŒ½¥¯Û$d…bË3”Áh‡ÞâËÃxìJÇk©ÛÚË¢xýéï°2u½JL …³¡m¨%ØõýI‹P H°3Éìh:°Í–Äg'Ã`ñQ*ЦÇgž¨_ïw$wÆ’Ï%Éšù5-0I†æt)‰ 5Þ¥_)(A1…'MÚ¤À@tC¿º~s¸T!u®qx'(¾Þ"·q\t­®Ñ ÂEÓ^¡™#ú»KcF`ù‰ü.o¶ŠC¡15-u#Ó0Ž%•âqŽ$/Ö}iå·Ñ‰ ”ÎβæåRÑö19=£ÌD¥ÁvÝõïÁäÓ¤ÖO‚Î\žu}'èvrº^/EGœ†ÿà~<Ø©BÖægvýí µÔB3ªÜóðÙËÙhh²?(ˆ¶X½òžøeØÏÿöcô&HUF×"»£&ÔãñÜ\Ý˱%JÒE9*ˆ#ÎðI©C““¬K©ò´¸éYè‡|‘²¢GWJÄ0Æ*ÝlÆû} .wù„ˆ¸åãVCA,zƒaÔ*Üð¥ùO$Œ( »Lƒ†¬èB?¶,öý’“‚4LÛ¥ _¯E±¡Ú®”ÍÀ=9ó‹5ç±àR'»öˆÃEøö·c~Ì h™¢þ¹ð4+Ä•(@ó[b¦.´££ZáølâðÀ R/l³¿µ  Ë¢†6°œÊq=_è_gƒù?š"(cí žd襒ï—Ö ßüÒÏðÛ.`¹; q÷?˵ ‘"áaù0UÃC,9ç²È„9¼OT±mh ¼†ECl?¯ª!Èo·´¹Öþ1˜|žÞÖ°ãEóiL”ÔKàZÀ µFd”:Æž#UÑœÍâ'qöÛµ7+¿È­Y³öcJ³,$U?zð×hÐãWÊ:GWB##ŒVS£¿Ÿ(ʽÎhÐ&ÁéŒ0$ !Jõ¢ð6ô%pã_8|@e.´ä7c«qìojæñpN*Øm¦s¿U~˜3Kººûý!(]=Ëú²ô¾f|jOÊÖiC𰽘¡¨P(¥Ù†¢µs˜TòFYCÒ~Ò%óa¼†)ù~£ä¨d¬šþðÜØTʔѕ<ûl,k–éíuoÊ€Q?¾bÓñ“uÖå¼%!¼°Ãž6ã3m®¡¢)ÞØÚ]=$‰£¶˜fãnC:)½èn5jˆ ¼à ioŽ{PÏZ¦àÀm^L:Ö ™WdõëƒÝôjt¬” `áÅH-.!)\†Ë`Äyu Å-‚t +Ó5žˆFcðBçj¥˜º£+¬2¾¥®ç°«É;AWÞ¸þ¦ ]Fô?½X¸Œ€Ë U!¤Ž#Î:‰¨íÕæF»ì·vR„ÜŽæ7Bܱ²å(Bø áì/4Â’=* U ”ø€q[‰³+q.*5rÝ E솬X Õ?§²C³Â‘½ÞC-¾Eœ<ÇšáÒ¯­¿]bZú)’cªpÈ9nŸ{:ÌdÛ®óýÍ:€À«”·¦sT¹VÃìº|øn +Å’3{Lé »`œe2ùÓ®sf;¤ &àå~—A!®„ûwCµ÷>ÝÏÞ(êaÇImؤð«ì§-m®, +eäæJÚ±ÝÕ7»UqlÝç>D¬qN‡i¥Ð\ù×Õf¤<`¾U"ý2.R>Q;Ù¨ÄEù8¸Ôa;ÐÛ*påð~À]mƒ÷¯ŽdIî…É•l¶ÎÉzT»ø#)DX-ߟ`$.înÀ­Ý‘'HøîT‹K‡±ê{`æC‡¢¶16d£\âìOÇ&ý“ì/®ÀúB$±´ªz^£òâÅz Ãk¶f}¯½ ì_(̘:®3X>«ž²MkG¥¡æP4ÐÌŸŸfÞ+ä\-oÒ†DEmc#(lë=ÌÓqKð0˜®Ó†‘Æ—™}vš2³Ès”}Ùß<ÓdŸ÷È-ö¢¡Ô\ƒ\°–ñ÷§¡^¬¡ôsÚ¡7õLÛ ØÐp›¹^Ù1jŽ äó%!¶_ƒñR‡#O ÃûÛºÐ=ªNé]5<ÞÒ^®÷1b¦—iŽÝ,6~Õr¼‘ }ȧÈ÷êèP*[ mÒ¡ú4XÓŒÒèQ”vƒàWaó­§/Ÿ%}‰ãÖ¥™Ì˜1l”pø‘›ïBl1.Œ Ë? ¦”ÚGˆ›áW ¢«ŒÎ…R)“aÖ*+ÂÀÙ›hh¹yiïƒÂí=bˆ¨ÓÕq æ×KjO¿¯rEØðuít—úMÇr {¼8Èz¬õmX4†èÝWã^HåŽÜ¨A]p½TcÜdеÚS$“•”´¼}öë:Õ¡þEzŒdÄŸS")´›ŒùãáVêÑ9?¡Sûñùãã.WÏmÝ?«!=Ú +Ssš¢&åJÇ.:äCeÓ1œ!4´c"÷ëp+âÊ …^SœÚ¹ŸH—q9‚˜jÇ<Þ³´v`I`ÂËrCU‰X½lGÍ)¾Åª3«…(Úm8µ‘ L@nÙ2„¦1é +ti}3vyU6óåeJûf2ÓÏÕ*ª4œÉªÊ7Ö—Ìþ¥ö.}Ý“wHt–·QéhVc ªÛ®ÿ04‚‡ÉÃú‹4§fTÝzÖ’p*ñì›^VÛ=ºœC«T +h/õo£í-ÇËw‚:$iݶTÝ;Ë6Åû·ÙôŠjŒ3Í€2lm°óݵí•nQ±_sKž\Iß(eó.ð‡~µw£\äðEå/ì`—Ä?5À5ÙÖ¹âVqù¬Yš@Ã{$9Àoۉ㘯câHàzÖÑ *[ˆ$£Ó\×T ÇaؼHÌr{qX“B7Š6n³eJÙ[ç^9¥y½æázÔUÓ´æJ (Jèù¸:±zy^+àÛBäfSDžésæû¦Ðü0R&Š”÷‡ãç&â=^¬”ós\ß8­Ñú@áÇ‹ŒvW7¢ Dòå ˜/OØ:h. t6@ˆ(»BP{RKb/¬‡±œèª'_†ŸÂG•…A6°íPêŽË¿|‘×KýÌKl¸ÃtàÄ[å¯ê +EbRÑDfHÁ'¿^Lu×¹BoAš1½ž>î ôµ(Ng GM¢ããúI¼ó,˜€¾e Ýä‘”uø‰(Ô¹¶‚þœÜéí¤´6‰ÑgÔÔ5Ì:(ÜѲù$ø˜<œûBýmK×wÈýYºLþÃ3¼ýZ ;«Dº†þ¿Ì¿ã{žqÒ§±øþ »0'þ«à@À—$aõ“Ô}à¢<<„Np÷&|Õ F¬Aɤ…àMÊsOÂ>O@ѯЭéoþw} iÒ~7¦ë{´QFŽú ý}ÌNX0J¬-šÒŠgçŠGÏ‹tEÛhÎ2ªÍo÷ìEò–¯}ÍRØÛù§RêˆU ;Røˆ]ƒrÁÁ¹hy¬g’èBj3Íx¨D [`Nlf£j]½ßn/jTLÏóoŠè™r*ÓÖ&GLjÊ~ÞCfÌtí ;è¢2ÜþK pª:BìÁb=25<×hJ5"mI)î|Æ>¨ùxc艱?²»Z¿…±7w(XѨšÒM­6{!Ô·KI“"V6™Ô' œo‘ƒÄã~™U¨; B*|ji’¥ +N$MäO2¸EJë­S©3éâìjxT5‚®ØúÞ´¹Õò/¯BB{¦ò•vë]XAÄ1^, eòôb‘AÏuoJHLSS¤$z $Ñ Â{ñðjæÿEªBùäR"‡+kzþe á9IÍq^HØæ‘Y6KirÔ’2Ò)£¤:˜v +WŸˆõžˆ¯éæimä㜠Z‘šLlÑ1&¿ÿ¶„C€ætD¤é9_Èÿó¡BqM`Ä»)èìɘñú2á")œ\è¯GÓ¢¹Vúì÷ Ø'7@VˆÏ’I6­hVý€†Ð[M\ˆØ‹ì>Ñ0ST½0—ùý”[oyÀaß¿½¾/¸¿K¦:6?XH±äïÒš½Ê7t„¾(D¸`½’œÌñ ¡*½õÆ<[‚;¿ÀÀ;zB„:̦,u5 œTm’&§òæ)²`cƒ’|ÂsE)é$Ïe"oôÃO &¯îíú¬^×3»Û‰RäMgwÙå|Z¸ëÉsÍ9Få SWå|ØðP÷`“ôJIsÝౕiÈ?ù9r=k–¾×áP°«Á”WÌl `6±RnyîžÎqÙNèpLí•4to³3 å8þç³J §W‹¡ÝÒ¸nHeñã+#VºCʘ Íèy‹ÏKÜmflÑóàÄ^rYóL.­àÁ+2O²K[¼wdÈkÇ3xLjW|4#ýkaì€|¾‰ˆ2<ÇN×ÍbÍ°ã¶BùŒÈ@lXÿ XȆÒ€P=zyhsÃ7TÊ&g¹‡)ï²€¨]í/l±æs'½“û = ø±ûàðÏ„lå‡ßüsFÓõqŸyAì‘#_Ÿ’v™*0Ö1²- t·l8Eî¡kR‚§7[é—ý êŸ<îò iò÷ÓRcX<žòï*  ±É>AÛ{ý´Ü\ã5ZP­Ë½DJÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:uo‘·WªíŒç–$i@F>-CX­³ïeHÎÄ4‘ Šê¢ôˆ8uêD.8võ'nÃeòQ@cøbW+¬š^ÑéÐ1zƒ|<{b¿/Ëk(Å'Ã/1ûG“¤ˆ„QMgíD±L!Šg+Oà]å}ä`Ÿï¡u_FçHÍR¯Ÿ~TojþbÜ•H¡‚z²atñÄÁ¸f¦G±¥ì›³)äÐtMÂóïhÞYBS=°í¦Fì ¯mÍ•ç8¥õêZx-x ã{g=>ÉÖÁŽòýµìPAÑôô2PvDK£˜7²@]Œ¾¬ÅÜãq΂Ze².h/xS‹HÝIW~òàèÙÀö@%ÇnP¹5À&ñvT÷1;­ÉÔ‰´Ϩj`M,*Ó©IÔ”ÂÝÄRj%qTù* +F¼½uv2 Í…°wÚ3p\àxýå6ú2i#;~sTw½:*LÓ¯D3Ÿx8tÔ™ýaMèZS·:©nH—¼œ íNy +yØ­g#J,“`yIg4éaÐëßdÛåb _ª—‘Hfó×Ù9À±¯É(iºÁêH’éâÍjºCÉ“$!Öî(ÑPƒäÜSî9f’þW ÐÉ»[3*Øø?o:eEgÓã|f$âÒþ´„¢ù*iÊÓÿ©®U0C׃Ñ>_íy5ÞÉd®ÛG!ñwü‰¥«¤¼il™*ŽÐà^D¿9O~ë‹8m8 ¢óWæλ£Õ6jªÂ§p¢¿P΂1hpBfá5jdô¼%c ¸0z–î2aS"G¨W !ÔÕ â©þøTÍb8j 2>n†¾:W)ŠLüŸhÁШ6¥J£Æôä©®à±|i R©ÆA5ÿ=OgêÍCl’hÕð¦q›fª>L÷RÑ ˜ƒ¨ä€g¥ý”»“E±U×Z9 •ü{'vÜ÷¡¹::£®“Q&ç.‡k;7uøä¼@ºx¼Á 4R¬£ubcþð8”Ó;0Pö]¦4oiŸ×Q]vø‹>ÇÔ‹Ûd/ â 3Ñ-W7 ›´½ñ] «C‘ý}ügÎ},¬ášt›/‡·*È}Fª@¢7 )јö•ø3Ï,ýÊšþáÒtJRå“W nÈä›ÔÙy1OÊÑ{,±Á$C`l—±z„F¦ÖÀ ÆìÀèóPÃOE~®§þNc{EžÐEÃýä‡Þ$CøïÒ2Njü¿¦6^RŠbÃÆ »è…O‡I`‚Hédûû™ÌCìþá|Y+O’%­Ð¾vÊ%­îÇS{}LháÓ0û+ýÙ¥r¬g·§¨KUåèiB«]´v× ¼Õ²[šJ'Ÿ»Ë¤]K?€Ù=‚ ÉNˆuØØæ÷n‚«te|‰êÛšü2%A€ta_t*é?µd@ß™æÜIäÐ’†á…ÖŽ¼2Ô“Üqy>„»óâ¾âë;i íõMV!¿Cw9~‰W^o #Ãkp<Ñö+ÞjÎöҕݑϬmUFýBž† ÆÎ@“âñ¨Åm®…œžþEÿˆKV@vGã~>²á©›Á1›w/{ØÉS*g¡òemsÅ'[É7TÈ¡ OPÆŸtד††4kË“»jMý‹ýP¡“…B U\;Óm¾v/2‘WJy&$IÍwE'd”…UÂG¡Þ¥âÛ“ÃjQ:x£ÚoS¨ 2¦æ0. ¨‹‘êÂÑø–»ÒQ è‚ëíièˆû¡â+m[RIûzŠ¶†[Ž?ÝØÏC¢±\o·Û–*¼­³0\>xƒ1-²!Ìu3︒c»‡¨sоäÀSƒ`#+±9ƒL”ˆ²xŠüPN‰=íÎGR%ˆ=· Q‡ šÝ¼SWî_XUV¶¶”¢‹µ"K>1Sdydæ¦ÝÜ:‹øFô̈KfyÚêX}6¢…B´M=:$ô¿ôü |~ìá,ˆÜìèŠ3¸×]º³gGb^!oŠö,†€v]K|ÓtäÉf®KïMsÊMßãkêlm¦ž+}w~ŠÛ’†ûî°ò8÷£„ €hÇáúªŒ»›]Ã.ÚÌ^4à˜êÉÚ!˜í÷Ò®›¾ØF§€G’×ð|âÖ»8Jìòëáµ8áéclUéÅÕ6J¥–ôï/ÀW\ÎM>ëô»Á‹èQsµVï@d Ô]:JÍ4ƒtQ·mçæš3#F#| J¡®˜ÿ‰~~&&;Ie-“]÷‘³š0f»*§$R}â}ç¬g=ª,âÙÃÖzC–¯#«aß1ºhoÜ"®êÓXgÌf\÷¢çõ ¡oìkÅCÉ/‚X…@œ€YWŽ}Jc¯§[‘ZN\]íõ³ÍŠÚ|ëÓS¼fÞ±­ç‰õ¡-IÁ¾%4ËdH&s†b(0ØïnÈãFÕïÕ Ûˆê<1¯J˜N×KÁIÕÏe9W¸ì²–&‰HðžP°vtâ}þ€­ŠTÓ£Ü'Š‡aUÆu½Î+ª*7RI‚EÝ"ÕÆ]µ}šÞM,"gß($ ‹ãKWJ$[¹. >èø­0-ÞËóÀQD}è5’‡A»œjNsbéª j)ì@PÑ™»ÈIªÅ’Þ-m´Épök`àkƒØ© 2¥j_mª¤%¿¯Î<Û©ˆn¡ïôšyîä•¢Áq…ØâìHÿ±ÆíR0<1Û¡-ïš/§Ê鬙Ñ";€XP¢3bØc ¿[WSé<4S78@^›z¶ay}7»Ñ!HÝ’ ½Žzd8NÞg,Ÿ`Sn¢Þ+`Sé%φx\1’8å‰rVï“å•b¥ÅŒ8A#¬Éß>0Hì£ò&©r‰ˆ¾‡ã WrØ1w-#±\¹ÐKÇ£$‡9ßáè“,ßiŽ¬L«zAŒï f§Ÿ3‘—+ûë£g‘à'¤žÁ¬*”#îoí0¸pµ6p_ M_ÆšžË‰#…=´Iÿ+³jT$.(¿”óæ²Zø`‚KòAM Áp‡ˆ§x|Ñ +»š•?s9ЄÜ8owÊí>Í<7ààò⇚ê÷ú|¢#dÃIY¶ÁDá²áAÀ1çàãsFF|ý|¼EœvîðKº?t”ã#bù·Š¶}ª’% Y 3ô#»…¥´:ÐqÒl9Wo«‰ jýäûˆøÇi¼àòs‹Làý©àâ­zx¡bxEr·“™Ø(¡å6T¤À-ÉØ¿ ö23ÝÚÁ¤€Úô¹„uÚB¦Ùyƒ dª @ˆû,Š¡ø¼ Å.I¯ +ÍèR‘ÌŸ–Ô£ÁÇo_e‡œ¥´úõcç¼ï”4JÎjÇ +†PЗ¬ÙG—h±† ëû¶ûe§T£lù½þ-ÄpͽƲ v,…{gï]ÌÕ¥\üÔ¯UÝ9N&ˆôx_²ºÞ‹¸¶ÒK§m‚p=‚ŸØÁHÄ‘wþþ˜)],í´T÷—Œvê@?àó#ýþù››‹¬"F–d‚ ){`ÊÆ!}ǡЦ2š‰¼…–uåF‚ $9 --G,AO¬7³}#ÕÖ_ê,‹màËG”­¢îÎÊ&}Ð õë°Àz}¸%6šk¯tºÄG @Ñ%¸#º† +¯Ä™Äp¡ÂÀœ:ƈk d–w¢p_H?ÿ4lþ Wz””æÿŠêÂ׆ËNu¹Îzk:ói8ÀŒ’™üR™àûï=Ð#*õ@Å>x™öÖÑ›sa =÷2h…¨í«%êÛZEµCù—¤(«ÜX[åÔr—ÖòÅs,3æýÉgçUWiØ´È8HÑvŽb+YÉý‹ñ7§©¢TIUº³ô Þ#Ø£¢€P?E`ýD&&6×({ *ÐëFÎ\ÍŠà_±¼FŒfxPS¯ ‚ôn²—ä– +¹/Ä)³Àà[‡…\¨êˆàt4 ëlbé餄¡Ÿçbï‰Aþ‡©ø×ÀÔXÑC£F€\d#›ºDèoº’³q‰Q¸l~vóøtF½]ö ïÞÄÚ r–l˜Úe6I‚*uäs‹.+àÑ«¸àUÒzù·ZÖ †e¦¿¸u|Mëñg259#\°Ó§”{´ºË¿a19ž:žÓCK\Jxß„ ¥‰™•Ò°†Tökû¤ï.b´=ã¾%0ûƒ`bóJœðí ƒ"Sý9Qšy;a^BœàÁ…á{,w</Žë~¢Oåx3†,ÿÞ%í„øµôrüoX6~=Ë„ºº@x!ñ#Àd^æŸ -õGFDeºØ¼&a¬n97‚}?`šÄ©¿wWâ÷«SS___°6š°¤~cè¹·°€ê·Ø²^²nèŒï[{ 3±<*v—Ô5kç”T+'ׂipщ>zÞ[Ì&ÆX;$- x}:lŠ0eÐ<({.Dö‹ªSßãÿWöl ‘eqRžrëò⚧;#/U÷Ãì[K¦åíìÕ¾È9/ï—ìz¦H¢ éÂ-$VñÊLÚF¤ÜEãƒAÀê{ü†›æ­›Àlµ X­==…¥Ñ ¥– X2¦I{“̺è3Mª„cú0÷Ç–â +¿SúGß. FËþRãš””‘eNè Q’dWRË-ßFIÈU;ÿ{)¹8™=3}ºnyu~‰ôCT·¦·^<ö]ˆõ\j‚mElDÆÄÂh¯—‹´{€ÄÞÿ³‰ÆM5Ëóìx¢Õ%—y:'|‹p¿ ™5ÿÍžg^)`Bò¡ƒÔ|îÌÙ¾1ä™O¥ílwv1'°rñ§‡ÞöLàrM©S¸-ëKÏù¤1i+a"•$®$ˆ +¼Ì|°Ûù;žÌ¸ô´XáºÙš“J#/•Ò1¿äÔA_Hù–ž.3hLâÚ ÓЫAM'¤Èbh€ÞNe— BµŠ'ƒ{Àt¡9,å4†¥ÁS–·2fü?;™ÒmÜPßÁŠ³ª½àﶵeÆ»ú²¬ZvÏFÁõÑñç#Ì1ä\Æ9ËI-¤ + 7%LMå‹n—ŸšzÅl¥½ýHݘU¸a´Š¡ûQtBK)®&¬Í盹j€‘@æAÿ&YwZp@mŽØ3ÑØä¡à éº¢O•*2n‚ÑÊÉÒTz÷dz¬±-‰à ÉE +?ZÌŽÊÿ,k¡|…-‚ýœ*ÿë6×÷õZöð öŠZ©w…Þœ¸]Öjñ?ñKÐNOƱãÞcƱstÑz%”ï¾KÇ<ûÓ-|Z¸ëÉsÍ— æ6µ¿+DWF§¶ˆ.†«[“OÝÞ†;'ü$«:vöÎk[¯hуÉ­¡ÀPjÄ%Aýû*YS—.q~üûQÓûÀ±QO­ˆz~¦Ãº> Ì6iû´à7}^äFò•CQ²šF'ãË}Áš§ôŠ3$½Zœö÷Ñ4ch¦‘np“ ǧ³LŒ‰’ó`¢x—R HêI<Ý>_¶ªud?Ÿ)9®Œxšc9÷ L´b(Å07DpGªœÄé¡+FQÃ(´Ie'0é’§ “B#õ +$Œ;Ô÷²õMÊg˜qÆÝäÑqZ$cI%å_ÂEñ/JZô Øž¸ÿZ1¬,Ì+_I3AäB%^¯‡GôæF†-6«øA¡úÐWL~=6Á>4ªê®æ¶P@æx +Ub]>Í̦ì¬*¢×ú4æüxmFû.›ÿLé!86Æ»ITÁé"P\¬Á¯ð) endstream endobj -2249 0 obj +2253 0 obj << -/Length1 1188 -/Length2 2740 +/Length1 2210 +/Length2 15959 /Length3 0 -/Length 3928 ->> -stream -%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math Italic) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle -9.50 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def +/Length 18169 +>> +stream +%!PS-AdobeFont-1.0: LMMono10-Italic 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 +%%EndComments +FontDirectory/LMMono10-Italic known{/LMMono10-Italic findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +17 dict begin +/FontInfo 9 dict dup begin +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono10-Italic)readonly def +/FamilyName(LMMono10)readonly def +/Weight(Normal)readonly def +/isFixedPitch true def +/ItalicAngle -14.0362 def +/UnderlinePosition -167 def +/UnderlineThickness 69 def end readonly def -/FontName /DUJUUF+PazoMath-Italic def +/FontName /XVBOSG+LMMono10-Italic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 97 /alpha put -dup 98 /beta put +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 80 /P put +dup 84 /T put +dup 86 /V put +dup 97 /a put +dup 99 /c put +dup 44 /comma put +dup 100 /d put +dup 101 /e put +dup 33 /exclam put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 45 /hyphen put +dup 105 /i put +dup 107 /k put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 40 /parenleft put +dup 41 /parenright put +dup 46 /period put +dup 114 /r put +dup 115 /s put +dup 47 /slash put +dup 116 /t put +dup 119 /w put +dup 120 /x put +dup 121 /y put readonly def /PaintType 0 def /FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-70 -277 902 733} readonly def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-491 -316 834 1016}readonly def currentdict end currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û -…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 -¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ -UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp -‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq -1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú -T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: -wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ -AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V -6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXì]› >:|s‡¬m’ºÍeaëŒØ„Œl¤·½v+¼¿:É‹£²D¾Ý([žÕˆÕÂG–ðúJJ¸£O´½Ä™I¦ªzÌ&ÀEnqšJâýEî†Ýðz€é¦&»CÍýªçx›h“+ ‘r‘nú«n¨»DœgúÃýEôŽ¼aw'À}ô”Ä|Ü ýꜱà$Ý%É—šš ד‘Z—VûgHTC(ûŠI_H‹áæÕ7}$¹%Ž\»yOaÛ‹'Oî¹ÀiÑÈ‘Ëi'Ç%Ïo2ê{´ô«PÉQÝwµåŒCÆX7%SëÃ?sê¯Íß~Õøu'iiqøúì³€þ€šN ÒÌ3w Q÷EŸ:šuÛ廕=šÓÛL•)M¿o¨i\ÉÑd·!Š®Ò<’ž0´ÎZEÑáR’Ë%qa‡´` ³õ°›Çkûâ)V&ìþ‰#û‚ÑÇRÇIœT´xMù‰k'ËeœkðŒ) ø}ƒÄIŽ¶³\ßqG¹#OÚëðv1ƒ;ÒdæpV5Ñ <Ô^¬c× ./#Q…E§UhÌÞZ»µµO÷¦GU˜c‡èeÿ¾5E«Ž„´»I©rô&÷¥¦v1Uçü4˜ÌSNä7èÌpk¤ÃÑøÁVe^qïÉT€†"šÚÄ•>î÷UѪ¯j "*ÚÈÉåá¯}”Iç’˜Ç]‹K•ÐÍÿŽ‡}Ø_p¸MVãÂ|~Ímv¤Ò5Ñ°¸žQ+-0"ô&'ƒ˜OºÖ`¶Âï iåÛmš¦h›¾)6¦k‹Ö¼eyˆj/ÿÛˆ…¨jú»Ýåo<“LÛÌC¹8ž&n°5Ì9È(àBüš,Á]©š;ˆ¼¯A‡4ÉXDÂÿ1Gv³èËJCò2ŒXÜ:.'I˜|ØÐ7ß©OŽãÖ—‹1_r:~‚–¯¿î‰ ŸŸ›8U ÐpÖ¡ýaErºÕ}Có±wú ¦{˱‚…½œ ƒ‡§l[]WóVëz,UŸ+gR訑²£hiLº¥][ƒcm>ǘ™b‰T08›°ÞÙ©ÿVAýx`üéðÇ!øä­ æŒÎw +.rmÏ){ìûz“´´"’ªý‰²5îxÂKå„0è9Ðu¤«@”ÅQ‚jS¾›_‰{•|Û'«¤€/å VF.¸ÄZ¤Á!z‹;ƒj”p.H‘¼R{ˆhBAŽ¡‡+Áiù*‰Ð?IŒ¢P„¸óøòaH‚È…Ár!ã‚~¢oë 2ÚßA9 SOœ}ÏÄž~4'±F§g»Cp’Ý|ºx{—ZÌ(HK›êÕ a[•…ï„,~m€3,£ÇÇñéTi”=¥EXò˜åa†©´}åÓÀËb9û-[Jã"O{R‡…ó1à*¤ã +–èÄÅl¢ë7H¯³.Ü×Hͺ¯ãァÝãÿ+2¾yÞºÊŦßÕkPG…v„´Õ”ƒ‘‹|¤q›+D€µè@i㻽IhJeþßH‘ìüõÍ=oÌu¦?ò6Ð0û+ýÙ¥r¨)têðÓlj»žñùÖR¤¾h§o1Wˆð”ÿLdO(üµb=¡5ÒâèN‡e@³cñ£¶H&Í•ð!™ïüôT¤ +Â)¿ˆWz½‚"˜_®×¶¡Ì‰VfíIfygñEŸYŽ<ºáÝ Q«JU÷»®œÄ$âwx‰SGZë…Éc¶µT* èOÁT¶ÿc bGn5ÀµÞ¦«¤ÞÖÞ2ñTMehXÖ=,Ðp8‚ W.©^ F¸`¸äz@}¶¤4奞3å¦Ò<ñT¿;0"eëø™Dï€Ï_9QÅŸ>  Y©cpìþéÅý‘ô³c÷†Qþa×馦î½m®+—rf]¸kLfzÆ/ÇZ=]n—Ì}Ùx·Ë8ƒìH’þ È›Q;}Ø7¦½ÿÓhG¼ñ šéZÈÇžE×£ÿjLÑ*m]Û´¿gN>ï2\s5ñ¶ÏŠ]k³âi'llG^}žU?fMUJÐìf&ŠŒcvRm¦a0$UnåÆÑ“IàjV;9ÌÛÏIº7¤®B›y`‡C‹Ù–ìgRËjQò‡bž»¢ºá6½0™þ” ·þyñµ› ý®,>vÏèîúÌ}J²b¾¦Xªg¸üPx|<ÂÍ’U%©ÀŸ`çÕ¬Uò.`ÒÙ +Ÿ´×½Yé)ìÕü “C Ã’ÁòýNþÖ‡0FñN… 0¼ý+jI¢‘&Ì +ØË{e~îØ_'ýX^®jRT´:3€Â䘙Ð7Ù9·rÖ—[X0%ŸlOX?VÁ'ãfmøGmZŠlÀ¥±B Òë⺵ˑ1§mêÁf§ÄI¥IêQõ¿yÛçwH(xtçÛY8fûRëžò±äb5j¼¼t‘ ë‹®‚ÉñNŸ;tKQÜ×Ò–_׃HÎ<‹c8GÞ`ŽdP]èj¢|é´Ô‡­j +ŽýÏ&»É¶©Ð¤c¼·•>(_Ö&áæ;óy¦¶ úÔã]À¡Ñè +‘±•·àòçÔª])J×b> w«’33ŠÀÚž¦ÙåŒÎ¾ç`ŠÅ¿„´¥Sçáævžmß¿LÆàoN"¡uÓoq”ÁðÓ–[˜‰cg† †7˜'î÷B–·wGɈ«é +üòUÝ|€$]žŸÔ4b€“©šak½ÌЃÙÄ Õ6ȆÒ[qÄz¶B³ªùv_÷ÿ.ÂÂAvÜô$ϱ€WäÍBÈ®á¼Ì¡ ÂÂÏmûœ÷~ð|Döôä^ʉÃ.ÈçÅ8Ì.Lõ¬ì´‚ü6¢2`dÆ…tû|Á¡]ÁE04ÿê$?ë¬kÔöJ!ÃËXg ^ûÞbÀÓ£JÛˆ ¦ä}3œfü$‰4P-dÔªÃuAz)] ±{'a[—Ï` Bwî~¶v9+„ÏA ^9Wƒ°fÕ¦[®J°8~@%|æñüF,ÈThÕ›Ú +rÆø<÷HÈ“ÙBÁE Lü֥ƟïÂ[`äÌëe—`€ÉÉ;Ì.‚sî4äï{8ùâ«=3bþ©¸1âiÄü‹,uáh¡1¯Çgs+Ã2¯Tpe:e$äýÏÜ­Ä +U;(©Ü3UŒIi”w>gª¤Å3î‹ý +ôîº,RŽâpØ‹¥4eÝH?6«j™Q¨xÔ[ßöÓ-ÆÄ-ظÜÞ÷y‡È¿’'˜„("î‘Ê_TÛ´Ú$Ñ4—ëæ3Ùà/×ò|…,—Îác +©šû“ÓTƒXЄá<±¯©©m5å­žÓ,ßð„ÑÀä‚…ë\×qÐE)CdW ©è0Àe„…Êcm|0Ü@ÂئïM…5^Yn&¶uå´6M—Xÿ¼%òÖ`Èñyƒp'ˆ°iÚffd¢ÜßCVì¿3%¢IK#ôsyöGð´ÞCh> Mú[’ÃèJÙC~Û}Pq_ýyóL+ ™ðŠ¬†Ý¢N~–׈Tr¡ó +]uÍÄ°Eþ)”‚bâçƒE±{‚–†Â=”ëêlžeÎݶ áø— +—;S I×W4Zi*I.á+ìNyqW· .U´>u}²’ ©­˜`l$ŽDSØë­ÁŸì3ÝoFo€3,£ÇÇñéTi”=¥EXò˜ã†tÐ94E%$â^FàÚé!‘}ÕØ7êØS7†ÐkDs#©ŽÛ+€6'1rf*gÒõ¦øoû¥Æ&z* ¸Ì{Nl'{{¬iªÁì5¯,>gJS³¥V~ó]X;©¼”ñ1íÉFÔ!´!üuÁ>ïìc+&Z¼Oqd4IGRiÎŒI‘ Șzw»ü úš’‰†ko|øÂÑi¶{2 [‰¡ÆÜ0B(Þ-àT¶ý½n¨¥/æµÃ¦e /´ÉçÕäôoèJò™–Ú~†ÐúP„IÒ!|‹Ñ!s©ÑdUg~2ØM¢CK”¬àöK…"Kƒî”…&”==~[÷Ëï†Û*±Ó¡ø™$‘Òvbж#šÉþǯhÓR|-‚âàu2 À¦SøôyÿHÌÃîº+uFXÞ±ø°{ž†A'âP7öò&O1UÔÝa´Ì´âOƒ_ˆ†ê.÷éÁesgO3LI¾ìõ×RÛÒÀUMDY’IãZEn&ñrÒ–?”sÝö%Lb?Ñ3Q*Bh{KfrØ岿QŠÊd Ô `uʼn³é~qvb©}´^Z– 0G>Ð…®"ʸœáìiXì»1($j2þjÈïn”›¼GưƃgNEÒÓ^•ÓÄ<ÜSàû“ê[á¸V îŸAý y¹º‡jÿ§hóàäÑ)E=̇ÒKî¹Ü£ñ½æ·ˆØÒ\rê_²9p«o%˜àaØ2áTue)ÝÒÁ$) òs6à ˜Ñ5àÖ×}ÉýTÏ!òÿ3ó'[Wýk"}!,ñ³Å\½·ðž³|Œ¨lœ‰Ù¹+4¢á²c« +Ãm‘»;qà@¿å#$Ï…Ðç n•x'á,Ë~"wEÛá\çš‘Á3+9|×¾õš ØèzŽ‚X‚À) -{¹•˜µt¹|@`qR"ÐÛ¡Œçæ˜#}Õ³|¡Ü®ˆ%ôÆG"hæo’p?OKÊx-"Ø¥ƒwõ±–äÑ\pîbÝ5™ƒyMõixÏ;ˆ°ó³ü77eìϘߒ’ßy^X5Ó‚~Œ9wgpÿ?¶ú^( Þœ±}A§’Hj0UE‰N + +ì8Dǧ›®ª©? Ix ù^{Ûi¨#ЛÒá Á»œ†BûÀ…F\ô%sÈxåáð©/&P\CXg¶ºJ;ѸI ½Þ9ÄYíx–*Њ wóx®¢“‘ ÊYé<`X’ÿ×$ÁöR%½OØKÙ89k3›ØgÓl˜õÄâÙD§¯iöÜ‹Lyp¤À:r Û©ÿá×I·6Ùjƒ9iûW2ÕÚøõ®®b›y/¥D=w3<‰(î¾ë1)Xqr¨}b0ûÇ™AÑDÎG9០+ß +&M›øì°kQ—æ¾4T¸Ê¶ÕòScS/½²O“â«+¤RRf‘%£è"Ž½Mƒ<.è¿b{ùôs¿À|î¿Iñ±/Oe“‹Å&{ú¿¤Íµ; UëC%N†X˜cL·hè]*¹Œ'jL‡pÓæ,~ê—YÓ7¨C~ Y®ž¡öl/ˆÀcUÆ#Lš¼zTË—!Ù±œ£ñÅ‹pÓ†Îñ_‚bzIš—NDÃ5¯ãÜÚ·-þÝl+›&æT.ƒáÈè¯E2U|§£+… +(éïy×òžy?oØõ;!Ÿ/1Ùã”F|Õƒ¯ngý6,¸/±Ì1nZïÈ.,xy°Ùj¦¸@>xl5Ûvðæß²ðɾä"“Ï”asÂÏRW‰Ô”’¿1õSbן6,0]8eÅ +Ã!ZË=µ‚Qo·$l{GáÈk‡Ø„ýyÅ|ž©”èù-ŠzW³‰þÌÜ¿·°ÍnE~#¶Ïs'¨úFpŽÛ^œ?”JÛàm7‚Eùψ™P—:n¬¾s/á€}Èò•úÙÏ묬Z†bÖ|QùðOdÝ¢}xnù­úÔæadWþ¾ûÐÉ/Œé×™UëhNo&›H}n¾fnW¸£übü8…`¬š+ s}³+R‹¥F5P÷§ªâwd˜ +åâ-4çLÇþ3²÷Ä<3väøjSfÃ}2³ÞdLs¾1$…ù}Û´XŽ=Ôøäþ“ëÑ\™ ÔÏV0'Þ– yÿŒçT-·Éåd(3k¸Ô%ÇR`ǺŠZGfîk‡˜ò‹‚º´'Ò³%ŽËxr +Ýžý*dúDâúì)!ºûØhü^Av΋Š˜l;«ê¸À¤â,X#R¢hœåæìÐJ ¦àH›ù!5£”8+È¢©Ky K]ÈR^BÕóï ¨¸<>ÄãÁ5(nÓ²bz){yîÍC¼á&ËF´ÝÍoõòÛs%›6) +–̱ÊOÇÝ|ú›%ã×ù†°#ºŒæ8|õlà%žYšÃniŸÕ7?Àb#@IF"MŒXúù¦ž ‘³êÝó}¶Ækxõ£z¾øÜáºAå)ê&¼#¤iá:»ÒA˜Löàëkip«¦?å? ã)ò` ¯hX)&ªÒ­ÃÐ"k[Œº+ÚÓñ^—pDÂGh61ÞøxÞQ™€—wŠ‰šn,/,·éñlØ Æ–þ[©˜OÇ1’2¹8j“#mGÄ'$¾zptr,ë•4q‘`=vsý»ñ´p’E”…Ú7=p¦HV^VÌF¢Ã[ˆà"áӯϑt¹+R÷õÚ_:9ýï­—è8›æ¶bw=EW ¼`â·q:³âP1qOL- !í˜1«=ë‘ÍO;R²ù‰‹=ÉdCƒ¥õ®6kº°t¯^X­¥›ÒÐPž¥ë‡}W¡yÿ4š8#?RóÊÐèCâºèT§v‰ód‚Ü7G«2Â"õÂ=´àX¶[¬ +%ÃܧRÖK{Ý©I}ˆÕ$óY/eÅÎT˜Èœ9ó{—CÓÕâÕƒ¿[*zQÙ ž(b%¢bÚ>³\†åBÿ#!¶mì/fß=_ŠL+¦C¿êÁZ\…=ÅŠ;à¶8áfÚ6,Çx‰T!ñ¦`=.¯·ÜPkœêxøy„ùp§yq>åFhRyß\Þ˜úÑ{ó t4<ô]lâØŽ'%¹*ÎÖÿ‰€ã}A` p Áz¹·ÛŠñ̤PR‹ iieDö±ñ)¨¤’~€Ÿ¶ÔÂ÷ú†&£Ú´o—Y0¿/ãx¿ê¬HÈØèì,`i¯:…òL¹"ç€eJ™é¹ ç¼w…ì< Ê GG"Ä°c¾]g;qdZ‘*Í<›¯Í³.Û¢óåÛŽi÷‚ÊÌUnMÙ’joƒÞ³áq—‘×ã£èo-ö¹Älÿ$Nc/·Ú7Úäò%ñÍÂÊàÏêiö#“î„;Ÿ‡¿T½’—[‰©}´׫„{¦Ê¾Îæ~B¸ôžÐh”~€­£ÄÊÓP¬67.Åp›Rà½ú Ó%ü”{™Ž¬=gnñ˜d´#ï$(ˆvå´š…æ '`¥HÇtRâù† Iž‘ƒ¸0ùFVÁ¤ð¥Ò²&GÙÁyL‰–FÛbÊ OpäûÁÅxMÊa‹ÁƒÐ6ÅêÎ<½™Où#'g‹P'JÐßr#R—Ì´|ý»bkTVrfê/Êe¼2ÂvyiÖ«â•/™€krÚ|ÃúüŠ÷‡Ž°«1PªLOmx,Á‰ï+Uv­TÉV냗Äâ‹ûÀlÉ!ä•DYÎ;üzªº1u.ÿÜÃÒq>î‚W·;²ItM8M‹ˆ»¡êúTFc÷: +Ø¥`Þó°í­žẆá<ŒV_“Ê>Òe!þSžKЯB '™==dÐHÎ4V ¿Äa⤿wÁ01tÙ%°zÌÌÐüˆÊú™ƒ–*ô€ÃÄÃQÞæsM à âh,ÏdÌl‚šJ®d…&e¼¦´Áƒþ•ïªÞ6vYƒQCBH»„%+"NÛn‹bÕ ædÍN„´Õ*É6Ça6é}°Q¾ý9-o :Õ,Š™GH€™£r±9’9[Âø U/°‡`lñóMTÝÄåt¥Ü[øWB«Õ†ècˆq™¬÷6ý‰¢s<‡ÐÜ@Nþ Aè‰ P.Δ–'F8QHëĆJã–7©M•j÷­¯o2jœðxŠrCÃF!Ë>eH{r¥N N̆Öýz]Òã<üÁJ 1üŠzo}D‘^)¾Ûïõí•Ó æÅN š93yõ2Hèöýb÷¾æÌ™¹½²~»ŒO=R{“oÖñïÿ˾J´ÃÍ3_>‹€Êô ·åYøòÇô­`É8÷s=¸5¯8òÚ­Ž§vUtÜÚýR«þÂ>gúÒi’‚tL(Ë @ññ;²ÄðïZ5Øbëð> +±»¡\‡˜l2ùô)ËíüøÙ/ µ*Jµ[X¾ã¥mц +sÒê‰(>†Ž]7ùc¡[ëdž3»àjŸVcwÒÞ læp¯0d¼œsȹ«@¼ŠžêÁ¹:äëoVÓôo.^ ÄЯ¾Ñ©¹ó%ÏÁ¡“´•–³»ºîšÿâôež: à}F*.Qé׌ «‚sž{–R ÕVbú¡8ŽßÃÌ+p¹sQØßë7ÿ˜ñq–ëYK¨—èªWÔ£ŽéèKðÚâõ®¶šŽë{£Rs¢@Iƒn\‹ÚïYõyµˆÞï¿ yÉAÃ-„JUÞÎ%XInkùGEt +í¥Cn0fœÚet.ÐŽFTÿsŠoX­Û‡Ý ˆ:öUu8P¦7V]Œ¢äœœ¡Í®Ìû,;.ð9l¾nEC¡L4ô×(éè ’y9)Ì=A—l£ð£<Ũ0µÅÕíøRÜûˆ¦ÉlOâï»RCs†ãéIbÍnYÃ$KÈœ)bØ¥0m¡Î\Ò A‰0˜ÜXíÏ9¬Î,{+H±Ú¢®ë¼DlF-¯õ­óxEN¶ñ4ªÉmÁÞÒ4ÃsP=5/0ŒwcТC¦Ï3ÑüW–®iüçn¡‘rÍ÷R͉˜P?‰( r’NAe‹½sÅ=«&Œ¤^5=_≽éZbõÖˆÒU5·ÏÜ¿Â6½Î›×u!“<¶?Œ)%ù‘o‹‚J‘÷ã‘FŠ–+ª|nÆ9¡p€3/èøFÆN7"$ÕP%køÚTé)qÎþè¹$û1œÙûy=ñ}<ù‹=ëÜÇFù®«´A#ðúÈY'ãºÑÌmk2o±h’~I%S&„¤)öSkyö”Á*ë{¬¯CW_²#í~¯[Ü2¯Øû1w¿+n«Ò [·}ÓTX¶b„Õ¢ätSŠRL;…³{h‘< ûíù¾,â¼jA }íЂ, qîYóíÆÉš´ÌP ÑEc‡¥"÷ÂU&ãÕàìŽï¼’™‰33˜'í„OàwóŸm¬£zÙ +£oÕ‚íÎiîÞ% ÅŒœâ©ŠŽæÓ8`Éê»xOç–TçÞ¶Õ–ý¢A61Yˆàw2ö™ó‚¶ÕC×´áN¦\`(ÎÍóË´n(DÕ< +µS‚EòÆ0Ô‹Ï8tV¾î›µÈ} µ¾ —‰ƒ¯ê¯o¶xob÷Biî½&ÿE=ÁM™ð$‘5JþÓ|ÒŠ¦¶¡ÐXkä„…«:ékº´,#±0礧V‘ËO£\Ái¯Öœ„¡é[;¤î.Õ@Í% ±,ܲÿ R& +ÕPoñìT8¯†€×µiY³ÃVy¤Ÿ³˜’Ôéú^ÇÁ,2¹ÿ“Jó ÖàŠo5áÙV¡ŽL¬oíšúsØÕ,°í‘AÑ`¼ Ó<êéYýS°N&îFŸ^I–¹k;ø¿òsCüšN3:…=À3åŸì€„>òEºC…¸Þ¼âPÚ2Ôý¶j¹MÝbè‰}¹Ìé£qpðÀ*œqC×"ÏÀ†wb'¯–fý‘ƒß…ºOKÖ§pDvu9Áý'ëÔ0ôf1be†ýw’yõuþ3>/¥/eË’[Ú\˜éŒ{¥â^áRþuocÀe "ò ¼“ˆð7{CåÜù„¢¸Ýk£JCq¦6#®eÓÊë€A:`D“±ÂMYâ¦õ…XÊ'N@q~šõ={Ó‡¸ýA6q#ς؈½ZÃCUŸ¼rÐSçטA¶Êxñ&³úk'%Y~æ.ø taŒÁÜZU˜CÓèlöÞ¼ð‰ÿ‘3`¶¾a쀅ómq’O¼zD#vÕdÊû_¶*Óî\^æÚ*8¿èÚô¬¼ÆQuÿ2'k¾”Aô¿Ýx¹L=ÍÝpãÃÎ7R¦h„l\YöðAn AÓkHe""] dÄsH )…-Î}mÿ‚ÅæcyýÑKqIrEÌ‘e#•Ä,Û™Gs;Û°K;ÀÔÞ6”o¿ÄÑ„Ë4qùXù‹]A3ÕÌ¢ByŒ«ìˆþ"v$‘yn•Ç“Àð•$B€­‡ eÓù´LŸ7[œù‚Ð<KÌTµÐµ)Ë®JÙ†ˆ?Ùâ³·Ø”À²:—ЀÂd¿ˆzKįÀ ¡6ãEÚ-æXƒOS—CÇÝÁ9˜®ƒÇcæ×E~¨ÍÏ.ªÙ|mšl'tS4àtTbv~ŽŽ¥<˜…>Ú§,)ćB·ËRDz_ÓÂ&_(e;1z‡´‡ßg)|Õ¸Ýò§M K­GÊÕî(ð¯U¤¸d¸"ä½Ë¾)ìS$‡e£Š¨ÅîÝ;GH%XHu\‡$æIùü‡t\,ôF^ñK¨2¶ÞÁ½…˜m ]Eu‚é ·£ëû¨p°øЗÌlŽ¿ê8H Ïe/`.$¥€0 Qɾ|ºb—惇¡a÷,‡PHÆa 1, +“S†}Ú Zâ}è9@+É)“Ý,8HÖUªè`qV)“ª;°kª€5‹ÓŠRóI#çÆ>œ¹â„Ús<¦Ž/ ýeÝÇ/è7\‘ûÙXAvrX¸&Äc«²z¶çFοœè³IÎ~/9Ó½ó“«Õý´ý(¦íAÕù¢XfPé.—jB`á ¸{»~Êh ¦Ä9µ§™^”½ª K’ðÉÆ"r<¬UôÕ#f(s–ØïZÍUÖxÿO‚páÀã6PâO5>B:’TÜNk^¥vŠ©â& +ùQf%Q§½oÇmW Öª¶Ý†rooØŠ¦yã>>ÜD²ŒÎu°ŽÈ]÷í–ú >2ëq<Êê8™]ñ04CÜdÅjæ¸þ¡P9QEO篢œÝï–éQª©¸î³ù·¢®-£iƒ¢—%\Ú™Z0¸JÆ´Iè gº5Æúûý˜Â–‚u4^«»é‡pm"§ 6Žyq*]Ø®’ß÷áá³”ôv×dE´å~ˆ(¶ j°Š=þ˜•'ùè2%–Âyz_†¢í‚Ñ_Ì?Ú—ÕÛ 99.5æ[ó+¥HjU +† å†y“—$=±òüZ‘Z᧲rÐ.=xâSQÀ”K*ßÁ'qÆÐáJRÙFR#³íž&¥Þ·¸“’—N ÂA>œQ"¡p1\9Q¥®ÅÖ¼÷Âé³ +b8v,¡LeØã/sÑ]¨zžQêÒÙ¤ÉÆ´žË¥MÑÄv®µÚûsš+C¿¢6<§O§&hüv¹À¾·MÃ@*¡ÞEü—„»i=¦ÖyÇ ©Ç=ðÇôQïÂ&Ë;ÄAQ‚ôR1ÛA–ÑyÚL\{äïõU³í€M%ïÙr—ņ$ŸãŸAo³üh¹îQüOjLß5/ßÔŽvÅsrSû]*㫽‹ZýC¢õÿ¤G h¥œát<Å=–¹@&¡>,R:ï™}5-i6T SÙçˆö×& J]°À^i¢9õ/XþA‡)=ê–¼p¹œÚ™Y^=f®ÜC3ùç U¶ ~sU>í4ߧšî=ý˜-.†³ËcÉhC•t˜Ì1SU3_¡ñ®éA××H3ËB÷—d+Ë{°½€j”¾nû(s<ãœóØ«ÞJ±Tì‡n +é§$£1 <è4Ç¿ ÈSª´|æÅl bÀª¹2ʾF%6r.•ÿ<)Øp–óNTvZó’øöšé—ØÂ+Uúí#¬Áêó™ßÆu|òÝ„ýRþëqP«›_~YÿC–æ7ÓC`0‡"ÞNÁBJ6RzZñÒý§¸Qoó)Wd] gå7À½aºfMÕǾ¹…. ö+²*:Q¾È»˜ßþ q[Lzk8dfåG`ÿ¥©üÖ{a‡´` ³õ°›Çkûâ)V&í©h +„X%†æ认?ÕEtde +Š_wRƒÎ<ž œ:Õ`»É§*P³Ÿ6z¶ká®RŒu&.öŶ Ø'p”]=ll;ï ŒÑXæû0/Û‡½ëÇqÔêbžTU\úæ„6™äÃ9O­4yºÿ¶†FêªÙúA–bÙZWš¾Vfz›uÈvµçÄò…ù½aJÞh%W!‰¡“­>|CºŒ[–„£Í—m!@¬Æú?`^éåXy´¡ÁG»F‚¦)õ;Â-ŽÁÄÕa³•µT¤J@ßp+E •ËÜ!õ”50XÛÛ‹‘±ÂH¥¿óû³Íèÿ³È!_¡^)LB†[ÏT“PË£ºè`bîÕjÔt™í_¡˜!–@&Ô€QWñÂ¥³kŠ l­©¹ó$jì ú_;«Rĵ’Ÿ#õ«O§@Åèg¿/pÕ³àélqGŸã¤¥ÌØgå5zœ!Ž ܾÅiÙøæÁÂÆ4è;epëŲZf>ŠeÞ¨ì7‘c˜ûŒéUá-Š‰­ë¤tØ™G^SÞu@P×ã6•FêÓ´²ásèFÞB”\¡õ¨ +gÒË_Ó‚™R  +)G1Ÿ±dërsizè0z V݈„H§éŠxù]ìXØGÜeéË7£û´ÔŸ?ÀA€šÍ¤UÆ*vµs Û=;@#Žiî›Îü‚Õ½‹ÆQ½-~èD¹¨îPäÄF«nÊìTQ˜ Òuè—hgGW1¿Ë÷y“²#ĹÀUÔäðÏÔ¥ýÉ„o+Sï{ó¹ Yd|­/|QíÃÏwRoõŸý`a#¤²ž  R}û•d믴)%e{ +©[”8N_¨ß?g£½on/ãÐ</…^é2´FlP›µ¼}f–c>µ÷<ÜC3xÍß›ÿ}7IŠn/ŠÂäÎó?hyÙç:”È*–R 2=ïMÈaùèÐà–¿8˜ê¤Á}SäÏÆ¡}ǘ™ë3Œ˜Àh©–'­Ø3¼Äü£RñA¹৻¹ …un»–µêN„Tˆ·–„„á‹ µª}±÷Œ^R_SRéTŒj3%w],·p¶Fj ¤v_]•ÌYûŒÌ&¨¼ ãZNdšwÉÓB²8§{Ú€ˆ‹¤HLq‘¼ 2ö ÜTnØM#ßèÄOãî€ÀØ•APÛ>,«!J’çÍš¢Çôɉv#µ&’°#ÆYíþ9б¹dZ<XL{ÚðùlÕpÕ™ Ù´Ê—&ÊÅ"L…?")ð³5t°L˜_f›Tl€ÛÉáÝçÄ£4ª»Òde£·ÄP ¶ÅìÚ׺¨ÎÍÕŒôjZÐ"å=ËuÚ#*¸¹ÚB2àå=«V½uŸªv¨ç¯I/cKµDçäºh†ODÅΠ¹Élw,}wQy~D f% 9ã97]`£FŸ÷£ê¾™o^vŸ„îÑXárˆG˜‰[Y.{•ñ÷Ñ9PàÊ…jÛ5·öcŽÅììcônÁF–`V|ÐEGõbDÜh8¹éÈ3‡×øš®æWh&2˜|=™YåŠêï}Tž!¤11Ă}Õ˜ÑÛé}ŽdÐéé/¶ú!”;©ÃªEéRWÔ´A5dXRFV›ÎEÒèº*%•&/Ü$±ç¾Ó…º Í­úŸ-¾Ö Jèä°\äF–‰m?L \vª@ŃÚÆ8<ÓÄÇç5£¬Ëk@⢒MeokÞþyš} ?ÏÖjƒý¡ BE“FÈžá+w¸b¹ñæcçS’z‡Ãü¹r˜Ê=Λެ /6Ào§²b—[1¾Ë¯+có ™B£c ýo&»Ö˜î“:É£ƒ„:8—ÙÒC!Õ°ˆ$Q8–Ÿõ3ˆ}<3`rÛ«8>§C¸æ¿ösIÁã&Ab ¦ÈJÎÙà-žÆæ.iüm³hbÚàË™‡ºqsʼnÚaV¸\Íuu#2eˆ8¹ñ(Ï÷Ÿe‹Äß–¢ØÉ.æõíDà!7ø€Fx‚cÿn  ãU›Rn" f™f´â$d ¾7š¶Ûž›Ýë³ßª]LòÚ-aú®þ ‡¦‡Y LÏU`ɼì"‹>F}?Œî2Z¶ÕiØ£²8ía4CúÈ^&èp…aa”釱çiÁ"Î +&¥–eIï*äXi®ŠÆfKJ™ÛÁ¼ËT‘Ë@9’tûÈÁ×Fžì(Ö±g·qôõÀÞØœ¬ï1Y2בY^þn+1n—È;þïyü¨Þ´9¬#¬~I 9ç ×.I/áב™¤.LÝ¥¾¤ý‚°èJAéæÿÃá-eÑ¢žwùAžN˜šçˆ¢Òø‡ƒpjïo¤5µ‡àµúÚR},D¢ë‚ƒ}cÚG¦K‰ŸO͈]Ká&îæ¸îQ„Ð!éeSV´¼›= +DÎG@|Skµ÷Šl;¸cêÒr Ùgý•He£úÅ<SZù&¡˜ÜBë–Vž€Ü×"—{Ò骴?>0¬“Àw¶ûòÎâ.”ÉàW›ØYŒuKa®ÿË„u×»)S÷pçõª *-³Iföv¢å´9õ÷&–¥ŒZMúPwÂvtê)Ч‹Õ÷R5°Ä6 ¾!?¡{o@«ñ½ŽŽjšâÚ3C†œÃáQtc%;¢¯^œsÏL‡_È{:“ç7û.éRÌêÆj–PyPê!3À±ÍÂ>šËr«f3þ×Y‚éh?ÄN” ¾¨' +ÛOò KDJøä1®ì*C¦÷%\lŸ1ÙHëJÌ3¯Â\’ÆklˆxJ¦ŒÆÅŸPLCô,ùþ­˜Ðêy ÛBa?ÒjÃ’'trú÷ÁGf̉‰-x’Úѽª¡J¸6æ wêeñGÖò1´a"]¾IR³›ëi¹úf¢É=afÙÊõwJ]Ü;¢Þˆ’·CîÒ©±e^S«BëäN}Ô^Mô+Ú‹[$ãäšXõÕJKÒ<Ïä웊ûMGÑzÄTظ'û j—è@61†™¿s¶?–(Úº˜oúü<ù¯4 å¶Wp VÈà.ƒÖxÔú^T­ãÙ@„¡Ü)¢|)È$w}ß}?½)ÁÜ\‚$Z·÷9ïùý­i•†ºMœÆûƽ’M[¤vÒ•¹Ã"8šR}J1·3,–÷C®@ +Ò/ëëZFRÞ¬ NËtZB=‹ü›ô¡Õ&%ßX1Cê €–ú†ñêœwwʳ&Ušã)Òc ‚’á2Ððž¹60ñô*­Þ´! k†Ñ¹OJ³KèÆ£wÊG4ÇKyã´ì5áP&¹=‘Ä£F1¾£º/Ñ2JãÆP…ciÐnýÆ—f"MƒFÌun§¾8VÁí.®¼%uy[i3vNµ#œ;2DZӈàž¾ÈùÎ1ÆoB8Š{áköJºãf€È­¥lÖž&A©Iñ`Ì)›–­ÂV{Ž[6í_Û$J©.¨Ýd®®ËöÇdÎAÉLá;Òy<]Àö eé¹×‘)Í6¸È~8AøÌmÇ9ÆGš¶CT3j[ëÁn7ìGïùÒa¶€º¿.îCD¿^’Ï5Zžóð(\A8æØ'_|Š¹˜@¤–Gù8gj\®Bé-? +"›‘§|gò3› p·B¸!ôÁ”°Ú§›èá)ÆéÆGØ%÷š°ÈJã9œÆlMoÙêœ ‚Z/ÞĮܑӦèÂZeÅ gM<¥ñí›gýâ}ÇU|Áð†”ìlr䳫~¦YÚd}âR•÷Ót”ÎùÝR—(¿ü1§›í•¢_*J§\Ñ-ÄÍyºu[J¥jrA%Z’׋=ÕÐïÿLês5'.ÒΕp\ +çýª–Ç´†ôlÛ\*’ŠO³ä_gŽ7·Jýbû ;lžE˦Oíú~7¼,'ù12¢…w?ÁÛö–d}ò³Æ5÷\ÂY…Ê¢²I(½ˆpmŒ –+_uÍu”­¦9—£cæ1¨{¶æ¨ÓQ·Zê%‚11áA´Ð\JëŠV;`öÿfsæXÌÆ;Î:M4ŠÑ/Þ  }‹íÞ¬œºj~Vè=kj•‘=ЊÉ‚gäÎéž$Ê'Åo»€*C2™_’ž.´´ +ý2ßÎ2&‚0DÙÜŸžæ¹ußb#”Š‹Y©Ó?&žOÄG'‘Ò7¯øE€´iØÍ”ÆÓ'Ð +z-Z)ÏÛýZpâ)¼ÒšrJ䱚jïc…û‚0ñí°D¬˜¡›#+‘kÉÔèÌo{.^›Éì[4Œ—‘âÿîœÔM)ñôv£Z(»ýSªÔã¹é$ksFUñmØØÖn8µpÎfŸeq Qx‘P‰R®ªe™ždÖ•ÿ endstream endobj -2251 0 obj +2255 0 obj << /Length1 1614 /Length2 22531 @@ -32820,7 +33069,7 @@ s ÿK=ö² ’á(ÛHfUïÎãrÒø¾IQ$W0LÇòÅÕµ8ŽÅX‘k¯ß‰ô¹­JÏMÐz{äPãÀ÷–¢Ô“‹¾>$ yò§ÑéÚ"Éjrº½¾‹Xf¯yÓLEœtnÖy“ÉŽœ‰ö•ƒQ]Ex.ò¢B‚…;®úˆ[„çðÂXánÍUîOýÅ›1Nd É¸&÷ïÎŒþ endstream endobj -2253 0 obj +2257 0 obj << /Length1 1616 /Length2 24418 @@ -32945,7 +33194,7 @@ c51 AÌø2C0ˆ¯5§Œƒñ¸ûoÔ]}‰I(&*㤠½;Ã@ar½’§×@ ž\-@óˆ…Ô|†5J¾ÏZ¬¬Ò¿ÖTÛÆâ¼ .áç1åT–€"aõJk:‘¹bÄ–D»| endstream endobj -2255 0 obj +2259 0 obj << /Length1 1620 /Length2 18673 @@ -33018,303 +33267,127 @@ nudJR +W¥)8÷´`Gx{Æôê«Ò~Úm_`ÚË{á¼û› jªùþæ·HàE'ÙU]Ž‡ô à%Ý™´­]É…ñ ÁϨú:¢Ð¿b ¥°«ø–úâ{*–ìpäûEì¬ôëŠÜniÈaψkšk°†V´ÿ5icj^‡g‹.æÁ>šÚŸù WQî¡aRD§ÃWG¨×í ÿùg§p‘ý€ý•ùApV=ƒüŸc%Z…¸€;bjvY²¯à¬Í~-ó¯²ÓøöG¿fÀü¯Ü.K.JÚÅzÄèƒN¥á÷tqqeºŒÿ0½ÉqŽ¨áÿí¢OÔ ÿzkkYR-Éß+eÃ;òUÂE+èC4;CÅÉ©ÿâd¼w] ˆ“À¢gÀ¼.ª…Ëük…¥œÝãÜŽÄä&ö³{Ç}z<Þ=膃,ž•}*:GS !åX‡-CÊך1eÞ Í"gYª-¿ËˆßØ(‡kÕ?¦<̤¬•–'g³wX;¬ËA† ¶†BŒj€Â|b⺽hKþÉÓ1™+$GkpBjÊ°×#G¬ÇoAñÀâ°¨¹8£g T¨¢Üõ´3ôXŠ"‰œ±ç×e…a”3¾ŽKó~?*WøUÈEÓ;&º.™ÌzØFo™Onò"¸ÕÊ Ñ0;™×Ç*¨ƒ|ÅèPO"ŸB‚—ÊëðÌ烃Hj4ÎæÏŸïÿ.RZÅç™F¬îc›‘*]‚{׉¾Y—?#,5fùÍ'®Á@ À‰åRõ3ýærijµ•>,\ϵjŒgÿœÂ]~²5;$÷PQɨ§çß­Sæ -r+‹eŽ@ñRZ -»îñÈYÅþÞÚv’ˆªŽ¯¸âiJdt˜«\`ª¦ž$BÐN„ö–¶„g—FÓâÅèšvŽZ~Þ\PNÈ#pÞ:ÂiMEA81$eiHrÒc|@Ï–™-JžX"ÀÓfÐQ÷D½éçI/ÄGXÛdÞÀ9A¹ý@F™b‡ÜЇ ¹}…óûïî!+èÆ*¿ow?ÿÙŠg;Âàk0¾~$·!yŽ5ç-a)ÎHÀ%@†rKL¥xÂÛ#µK¹»·KÕ9¥c.O;Å:R(óN½¿?Å*ꌘG×’§á©`=ø9Ì:i¾H0^Xê`,„ØPô÷åó£³[îÒK~ã,ed?!rH­2ͯ‹Òvßé…EWÚC<®Þ—¿÷õöꀞ‡ñêS™Dvq›Ö­8åÒƒQ~ð?‚ Z;0Â|ÇPyŸÄz.¨Ëñ±_æ#ˆƒ -Ú{Ïï‚8 (á¾5LÜÛÍ< -ñ¿+ôZ™VÕô»mJã{ÅWxOCدfÓŠíBÒå˜ãúÿHH8ÁêZ·\-ö¾ÑÖö9EÆ`»ÑMùIÄ5°•F÷In8ÓŸƒbGÌa@N äÖ²„Ñó#ºƒ±³Rãõ½ ÃbɘÀ(õÈ¢­ªJ7ÂFÁƒJÅwý“ôOÛw:}žÙ3æi¸y!)¿É.°]¯1.ƒ(¨¦Y˜l«øÄSŸ0Q¼Fo€ÌÅDñÔ ÛWSíÖu“![/#´˜© Â(ÂËrÉI’IºŒS&ªäA¸Só§xOø³Vb‘~Èô[©×BŒUªùÃÆ!j%Ïm3ÇL$8”õ,¼¥}èlðvgõ÷ôã>ýûP––඙Owtp%œÝ!\å´+y$péVñP­V $så g& Þì{€a¶·UÌÁ>û çloÑ5Ó¢[¦E¦½÷» /( ]ìÏjËýP•K:a6﹪C2KÈ­§ *w-äXWhš½@.A´’ŸìÎò»c7”  NÚPÿó„©i(¡)ýÀêä8s-a-?p•ÿu‘ç„Ù£E>,}k’ó·#CO¼rÃÔ´ÁîHgŠ5’8>¢þÝD"ŒÆ?±À“jð¸¡:…fÙyïFÂ(óÏ}ˆ~}á=ÜßD£,Au¶¿²yN®×!¦ÅF!ñk>F¹Âßyð‹æ±¥ê+ù…™/êÑŸB’Ž&?ÂŒ©bº¹ -˜A”&Ûèæ·›Aè饘YlÀ¿Ýw[´¦úmêšíHÁEÑErÀ¬áå64¥C|û?ûžÉ„!ªÈÇ%~ê„àSwÜDSbÇéöLÉrŸ~#zžÃ,„‘Ë¥îä–ï³Óy -%ªrðí®ØQgÞB -ŒÈKÀ<æ‹`hûž{õ¼"F7#Ù°š¸&6t1Jø -äÂ)+¸‹êœið®Ðx·ß –\X3…I#Ö ~3ók ”Ëwf襪¢Îß ¸Få%«%çp¼ü[ƒ&ý½;Ó~¦ -¦Þ¨‰ÊÆ16=Or ™Ïœ´ÁÅ 94w2›†Áy›yó;°œ¶wc~ ê´ ®®îz¬Ö>b3ü>FžgU0à‹c(û‘4`²Ø’4/#Ã×Îuo²:ïm´0B|X•Ptl£²n¨2…Œ2]æËYZ»vX£í<ªwË}ö#bã$Q¶› |¾ûU•ÿÉ;Ë·îÛ´3ók¦pÔî5ãô5*ŠºO깿F¡>ÌYG>Öœ…–Ú' tE͸}pÕûŽßHÂ¥+1Àå ¹š£6,ÅC&±Fcã>¥ßc¨ÑR.“ ¬Œèš:Ç-?àß2ñ§|²Nõýü¨¾8TšfÖQK"É”»þg±sqíaã+j 1Ý«=yD -ÙB½Âã:¾¬E «"´<žvcÎÔM¾@Ú„õðñƒ4»¬ @µÂ™‘ÖwÁ/RCú¿|«Ñh–%µ3ä*ó*ù‡µlßUÿWá[_õyŽem‚JnïŠýƒÿµ`ƹlÌZO(F8µgÕ5Ê€rݽíÑùñä \d—M‘?œ6¥C²pRÄtY†+?’ìÍ8F3ÃX={(’éD«¸÷¼‡Kì="ý )¶†MÀÖRWÒTc;½–ßÇã8Œ•sRHà`†P„¼=¸,íºü÷ëN0á°‰Jz:dV–›ÿ¥ô ˜¼¤·úª¼¹9>Þ–F²Ùù0á@¡ á -%¨Ž^Á•u°ÇK  ÜÒ¶N#F:3ý=¼^ä­¬t¶môñ^b RƒÇÇÆzTkX0ìi6kâfwš“{$~Dñ¶ãkæ\úæ ZRïysã:õÍ¿%ùFòŠGmJ›Ý*ÆÏèi5½kÇ$Di3è‡ÍŒh® ?p|cˆîF3(ú7 ÜþΑdÊ2uâVŒˆñe˜¸5 ¹>¶á=£–HmÌúI¬ e´Ì¸sÝc¡¿0뾯Ÿì,Z÷ÒEŽÕû¹J²®É[: Sí|(¯+ë¤s«E ºèìÕ²£Y24æ—îñV%ëvDá«5ú5õ¾~ÏI}ÑàÓIEb, o·Ë}!ˆ¶ÎÆ»Â,ëÕÃÍ×ÓtEÙÜUЦhu†BÌ”¼žFíŠ'ím…õL)Õ$ö¼ùÓ&•$a p&+ VUpc?Üå’')‡](=õÓí‚Eo_ðÝ©Û—)†Î4hxå±N,®½¾§“凙š¼{ÕÀ'D@‚J•¶ B~lü¼18$oó±¸ê€ÿÖ“aø¯g~lïû8‹mÒ¹¨ö†ÖªI,Úˆà=0cû}›r°°{GR®¬fû6gþB%,èëpiÉæ~–ê‚^»©.Æ! Oa=³ê½.mK!’B¹#`?z¤AL×SDòÜ®iàþ/Ãæ Øwí¶‡ü´Ç$¼þÙnh™éØd¾=ÜŒB0÷è÷|*D†]—î¹ïÔ«|AZå…5(;Ò²#¤œÚé„—ôú|PHÀ†!@ùÎV0ækëÈ7%¿ãHBh5>¶¤¶‰É/ÅHÏ–]õ.Ü£Æ_»¦± ß];1Q}Lrâ¾ß©æãåL’ßþP®Å8âÆòäa˜4þ±âB–pxÂö?µ†¿ß\|ûÍrëÉ™sÕWQÓ]e -G¬Î÷±‚ûÐÐTbj…àG -Rg6¹h›_ÇîüMåäu]ƒ¾Â¦m7‰oâT·¸,UF›’6ª³HŽKá2:Ö_y|=²Ã„[[ÚÙbˆÛ>uÚKŠÍL˜ Ê º×þ‰Ö¨K!&ÓëHwºp¥‹âsIÝ”ÀxÎL©ºj]¬×ÐKúáUïáíßI¬†håƒd½‰Ñ>$çK• ·ŸûÓ È–ûÆÓ£|D¥‹c¯å˜Ãfá(ásºÛ³d8¹MõbCqFµ™m !è˜rýVJË6ËðX¦ÇfÔJ/½ÄíÚÌÁݵ.mÞxÁtl&¢£D«fA˜S,Ëéþx¼äÔ%AÒ0ùušÌÑKfÉÒ ¶1óú(±ÆµPÝTÁßÃä@ø‚Ï€9MÙHm²>6ª[Á2nˆrn-og#R¡])ö™l;nº1Ý=“Õ0’µQè¹ØÓh4èGžhwžZ$»‚°$â^ Ê¤Ã¨8—‰¶ºn‹Ýòµ8¼$µ&ìÜ -ß -AzÍÞüö¶zl öóä‘èŽS yÆBwœMS¸ïóGF}u«Ÿ–—?7Ážä\û¬?›<šS´LÕ]47€€:OóÔc­° x‚àŒpP²à·ì›~$k<äNeðÄ h$ßÀû'Ÿ†®l î ñä5q“V•Úå³®Ó@0ßRi´Mª+ü«ª¨è~÷E’¶û4¿¥ËoT€e[ÂÝcÒ¿-¼éÆ£‡®LpAR›GëbÍož uõô¯#ZýJòb-¶à¿c~F3ÝKú¥öÀõÿjzØ·pÑP}nIx>ŸBºù0«6Án!ÈiY QÇÓ–‚Î"?•è&èÃdúq0QúTƒ#dŒ áì÷p8#Yª1b2 4 sZ† Ž­ÒÉßÔ,¬Zò¼D#òüMíjÓÒ²Ù§B"ÙǸê!S¾žæLÄÒTJcj€M/ÖàÖ8,6ò‡ÇàŠM¬ õ™@æÕç¬NÍB<Õâ¢ûOìá~CìxôA»áÁ=~®ÏB™yüÌ+s|̺ƒ:Ãmný³æ åO ¼Op´½ãàùàš®’•äRLŠè}ù©º­¹°ȼð˜t¦Ô­ -qOÅÜá¯s•ðžnrÇZ'ùD­#Tµ—ê©®kVB3ê&¹Äç´R;;óa«sµëPxVu¿{ÚúbYÞ9L°Œ|–ˆ! }eÞÂnÞÊ7iÃÞøX„ç#wlë4W3˜L6Uª€ÈK¥Ù¼æUZ-î^È¿APW¾¬ÊæQJH”ŸòêPƒIò“a }bþ‡;™^ˆn‘âx³ËúåR¶"¹-.È_µ§†nÞG¦]~0JšËVÌ P{ 4°JÊìÏâñkø/j"í'{£ã¨¶zê(’‘VŒÛ”àkp¯mׂZl½V‚»- Sˆ$Wú#ý×]d¸M>mÍî^NÙ˜ÙVçù3ð·ÅU #t†Ð/«„ÑšQ-”}dºÞRpã}ñø?V­íQBbOHWÖV(bÿÜÅm&Ò|¾¥–_Ùš‚ßL€ævìÐõ$íðBîmŸ”jwú„ød¡ñ{1Ø8xœ²$zA¤8ÈО±Z#9F>†õgûÔ?é05`ZÔ1WâNÚ¨áÚ#?Ìøpó¯A‡1ŒNI„ËÃH‰€¸j)^J‘ÿÔÝÆñû_?¥ôÑŽ]ÈQMK¼3âÂ+8›0AesÆrM{x²ÃÛÔC)u‰$ZK©’RÿÚ¨[ȹ“!·3ùÜþDÕûþÊà_(t¸œ¿5è’UO<. s¢±mÃz6º ZôDšõ - º}¦]ûkÔý>#“ùPó¡Þ¾ƒ2ºu 3vŠBI,ìt䢅BÔQº´vC³±½»0ÎxmQP½D\ÍÿdÒRØò(¶L?‹± GÉå.åðVV›“ -ÉŸG@vð}W©¥¢‘žDºåø–‚lÑß¿/©"fÙ뺨Ì5,ÄùEë™X×{çÂ÷»6ðìÞÝú=1+ØUxáÖ?Ž[ð/™£d·šÁᙟáFd—¤UD¢u_“9±‡KojÆE½§#Ù…¤ÿ6 ð`WÂêÛ¹9×· ‰¤{Ð0ˆú_RT*‰ï ™v.§ÝŸ ¬Ò·•7˜ -§Èèv%.JÉZÍ0ÇÔF= Šu -öÌfcÖw•C!!}«¢LaGxÑ`G -¼xP÷xšòLñUí=?¯S0ã®S&Þ^¯Ú›® õ¦HóЧ›¤\©ëÖMd¤§éx%‰ÿÝ땇îÏŽ•Q´÷E’Å”ªã÷mH âfîÿ»»ô°zm(qþñ6.Xê(ò|ºi3ž“>'›tÆ'EÔ¦3OîƇMÏë‰%·/ð˜íäôä¢.£n†ûýÊút™¦ôűìA &9p†„gµ>‹·l¨F¥Eò¹[äš[šMàÉN5]Œ$ÿ»– b„gí ª†5‘V…½hãÜðî)/Ò8#—Íl;ÓöòçC!Òì5O«Þ“IˆK³<\Åÿ ®SÌYø,nÂÞ¶|lס5!š’Ô· `Ö—7ZåÛk¤Ä;Ñù²'µh=œ^K9|ÙQ¢©ò÷ NÐŒy@®’áx¿LG﮼zÀMØC~rÞ -Ë%5&˜Vð>føXÒŽgÈ_…8eÖ&[©údWgê Â5ŸÜBrP2Ò„ŒÐi ¹yïkOfc¿Îæ­†ù»Ü]t¾3f f„ÓÜ,}UÖÙÇYã. ,Ãâið‘¤úÞ=ÅÕOG=gªNûpùD´FóƒgÜ…`Í2§¸àêK7}æ§R‰XѲÿ!œt#V/›Ÿ!mü‘¬.Â*5nçkSGåt¼q!ò8…èmŒ-kU²º­ ýzªðN½°>Æ7’BTpùWÓâ '\Ü…h˜¼íÅUøÏ>r>Ä$ôc‘÷rš†x¶HsʬÓˆZŠDåD6‹ÓÎpÀž -%ü„YÕ¢‚Íä›í8 Ä“È[¹«Þ}G*Aí³yEf2çýɈ*Î)U´¿“Ggšv@zP¬”ë—Œù£fFÀ¦'ãøh4 {ît¶Vä›sË*ñÄï;Ò1¬ÿÙim©±Ó+þÒ®úåE‚Éß]¿üßĨýŽ£´]g¸_jB¢¿°½u§Ô«±õè™óûû‹;AR¦6Íø@¿ñ: zÒåQ}¯“×!Èæ´™ÈôuB£þ€ysÔæ´Õfdù,¶ðçz[þ’!•½‚ Q|À…Ì¢Õ×D9¢z%ø˜øvŒ§Õô²fbó©cÇ”YFzA«rÈša†0¡Â6NYOïþE–#¶‡ŒËÝnotœ³Ì-W£Úγ>Ñ7Ûy|Îò™(:Úã ÛÕ@a -&~=íÂÓ"M;¾µ vŠëv9Œ4%«*r×AŠìÛƒýkåcgrú›6ÏÓ™‡OlË"ò–ŠpxA‹>ü½9t|^Æù‰Ä~ô´9³ÐTÂy½…•Êj?Ó°¯ñ’¾ì§ûÆ«@€TP 0_ûóVx %äÞu68[âÑ/yá&Û1ÓaÙt?^ xO&ä‡Oµ©t® nú`Õ„˜&Èfûûª$_òÄ¢‘:§> - n'æîÑ>(‚^å?Q-ñ€bwÒÌbo²ú»Ñé¼[˜”º=ñH²ÆvÉÿþ‹ÙžÜ«p ºV¨k°VÖêåþrs*ÛP°ÎfÝ1=)Ö ­ãlz×ê…%‡ ¢A"L£9#Éò8Hï³jÿ3×ñ:5å#:Yfv‚j¹OƒÅ&áÒþìLÔSƒB¬"è¦Aæãz€¾¢Ù¤||<´Ü%àÚûQ¡AÒ?ÂÇ‹WaßË0Ù“šcá¸^LábŽ÷ñ(äÐ.ò ×?¾dHª¤ôøðäÐ&ƒ‘Ÿò ¦å+3ÊòFÚÊ’Éw¶“{vŒîÙ4%t-—Ì¡ƒéÙh)A…xmâc“%$g-Þå"æöOƒüÈq¯çÍE3áËá®É2„åzåeä’ߘ¿ŠL­:’=Œ{̾‚U{ÍK%™\®êIKÞ†Æ/jbìwJeëG‚°›tsëBBÃøõˆŠß5‡P®ß…Æß"x£.ÎÊêûÖu u6P¸r”$š".Wõà$A ;æ+ -k ,ÜïÒf¯B³H¢-ÒàH©!äŠZµ£;ã˜üL}¯g]J^s¼KX-!rSáf -p–îs|¹*Á¡÷#}ñûtu(~ø?¤H‘02yÓÓ¡^àþzW'¹›jC°&fv»#œ ¼äg9YºûfžNåg@Ò~°¾^Û†«Évå0øs k÷ôJiøµ®^öSõA±òÛ0Š ÁŒ(*{’¼“ÒÿYÑÝ¢IŒrðýüKB°!o?¿”ÞX, £Ê6P4 ÿ(óõ}rö§bŽED¿Çrx3§„/§¹Ì´OÙd¨/ŠÃÙÇÙF¡»ÊI¢¼†RGd”Ç f á}åJß)}Ìø)‹Áy˜zô…›ÔÅÉ6ÿO‹o~/ê–ìƒï*tÒŽ¡n¯x ’“õ9Çï°Kš6{Ó)ãe€_ƒ.ÞÀŒ‡^èeÞ)ÖËz„¢]Èñá/ϤŠMàYoÈô9,¢œ—Þìg£×TE눮}qtôºšGÍÛeÅX‚¥Ä_wxÃël ñNUá¾=wÆU¥w*ú5ëqï6¸Ù±]tR4‚6Œ[@[LJ*8Þ*ñèŸÊj‘Òës]p*4P+ã5[šâ -ÏùÖ 9¦}v·5¤$H•à”úúVbàöëìjíFaõý®?ôÖ}÷­ÀÀ„ì#bÉ5ö]ò*ýÿS"^ò6>Øù­ÊÓ}uFÀø¤Àa›d~QÚ¡d™z’‹ €–ü‡—Iø¡¤áo>Šún}ÄŠárËÀ©o 'ª÷‘¦Xdü`C- ¾Ó’duÇ‚TÄ(n¿v8Ímë³ß͘•ƒUÖ67ˆ¨áBYgøåR>ï‰`±l–Ÿþd³õ- -×ýc%ÄÆË£7£ÓÜ×Pä1xÀÞp]ãÒw/F¸N¡ºNæö’0àqûìÃeÂ7¯ê±åëYÁæÍÏË?Ù*KùPÏôp\þ|Âi HÓÕ¨ ãYNUÓ0ŒWsK9àæC†­Úº¾¹pS^Þ"戺•v#†iÙ"ÙʆIúCã¨Á"ŒIPA{QmtÑ_ØZѦnzE¨]½ U5Pd"ó[ùÃ`$k¬=ú̪G­ÖäË¡Zï‡ÿÉþÏfŽþ;ÇÿöíšþFèLx5†÷±†@>ëÊ æ£ÙkhºæVë»7Üèï -óÌ T¦@rrz‚)(å°]Ùß K¸ù+ؘfi©ÛÂDøŠÄÈ:HÕ±ëù÷ÞÞ»¥Â¬í‡Ž²B£WU!|5c}æ¶5‰R¥#Ó_훎ì¢Me¥z4ºQû:àîФÜàåký#ý8œA Pbâ—ÉwÆ™µhfOŽokï‘Z9ëè\©¶¨g„$o­Îà×.ÞϲWO~T5 ¨Gˆ$f’œÜÏ‹”“k½=r“ Ë/3Gq† Þ¡¤s­»ÅíÍŒ§)»vx*ýP*ÏÿÑ=ßÀcÑÀè~ÓáVô¸zíä7dNS×4B®ÅÐæS}©RNaVÁªPÛm„>ÍQ¿i6h%8ÀZÖ½±ïPGQqºÇÈÌIâph,‰1¾-Ãã…Â(†Þ°ñâ±÷ùÁ„çì¬ÉluU<ìh¸õZ๬rÉ ~%>—Ö}Imkõ|Ëë›㢠=ĺ©Y#Z¹dàÂ$Ú¾öÃÑN¹TDŒé”(gÉÃ)†u ßÄÿTÀvû#à&å“,vžq÷¿͹ |ú8@\Nˆ®.ÒUè4”ÄÅߢ?A°QÉ^éÆóp+¥™¡tŒün(ÏÎI`¸#Ǧ¬H˜hÒâØŽÔÁˆ¢0$%,K“µ®¢à3å*Z耘®1̃±²ÝYº9åû^¾5~\Á³*ºê™já¾7£ ó“o]ßÛ-”©N÷–É»5×Úƒ…f1Š!MÔPK§‘¶‚«°™ 7fÍ ƒiEÅ:Èka¸áD‚SœV -ôᦠŽÞÑ«ª¸™BÜZ*p ¨‚ã"Ô»[´V{•»V!3ú6•Ö>ùæ&lÝŸhæΟv¯Çè6ÊG¾ýC™„êÅ&ÕL¾mÖç¼Ψ…™bÈОÉ{³ÓÐíî »6½nS=µîo–;J¶Û§.'ï£R’ËÈõN œ–È¢ßÓâ[÷šƒ‚\Z^ß…Ù„ õ™ -­%–ëXZÜÿçuqË -«ágÕµ~ƒúíÖVÆÂ…–ý»Ve;˜[ÝýÅÁ ÉLMÝ ±ôÐ}ÈfŒŸÏÑ`t‡š—Ÿ7Ë ‰Q˜È4úŠ¶‹VZ#¼ª -’  -ýƒíë.¦Wànd¨E¾³ŠK×™»ÅɶªQÃ\åÜàØŽ¬Ý°y -Æ4à£øÕèß|)’Úñ_ˆZ}ûóÐ> R¸õY -ST‡¼ax5¬ µFõÅzÕ>þa~zë[KÊQ÷ÔHD~YÖ­kÕ‘²‘Ûsø¢ÛŽ•Ø›¿¤´fœþwŒüÒw'Q½üÔ¡þø,À¬0ts‰Ý¼h:ŠSqÏW°Ò=E2Í'jˆþŸAr+…Dé’!}AÑO:YEÀöT:Š€¸¹²c=öóìn O¨}Æí¤C2wp£rA˜CšDêo Ò )Àse4›uNôã™}ü¦ŒÓx 1šåÓ~Xð³§΋[/B™ “BöøR -î~çsÕ¤4(¥ Þ²î‰`Cœé9’¹•ŒôÂ:E"²º–€IY~&4£‰RYæ¶&{2Šý$±GÇrV›ÀÚâ?É›ãµDVàêkÁ—Za¨Æ4ë%›O*tÉÏ”¯Æâ,!«–N²U¹ÿl×*‰ÖÌ[=a§»#*‚³–RZ -Šãø¹ y"]M¡ÐcØÙU…%˜»Žƒ/TJ ͹Æ2„PËH~ëH=yišÍÖ1÷9× x {ááyÚ½ë·Ù"“êÿú²S¦YÐ^{Ķ3þœž÷Pk<ÈZ?\û/ß2Üw)€%!Z?ÑúT0F :ƒ!WˆuùÖ „óá¾7Ìî8 O7±ów#ÀÄ¿¤ßzÂ)¹>×…VŠh&ksLÆÊcjYÇFír­ô|#3 #Õá:^7 X÷p²š¿lTŠï6#¯ð}«1¿½\]Ó=U¼·¸Cîd»øøä_t}ô¥ -åˆ3©•ä!š4wîQ+¯æITÝÁ —ÒŽÝR^n¼ÿ¤bÏάU#mÁ´¯;]§—Ho7Ò½éáŒJI[ͨ!ªNIÕú˜Œ¨÷|Lb–'æÄèDÐð3R@ñ#Ü;ÁÕÁ2¾˜šŸÿ—hÓŒLÎèŸÍ8ýÕ?/ 0|—¸!ó -Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: -endstream -endobj -2257 0 obj -<< -/Length 1007 ->> -stream -%!PS-Adobe-3.0 Resource-CMap -%%DocumentNeededResources: ProcSet (CIDInit) -%%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmex10-builtin-0) -%%Title: (TeX-cmex10-builtin-0 TeX cmex10-builtin 0) -%%Version: 1.000 -%%EndComments -/CIDInit /ProcSet findresource begin -12 dict begin -begincmap -/CIDSystemInfo -<< /Registry (TeX) -/Ordering (cmex10-builtin) -/Supplement 0 ->> def -/CMapName /TeX-cmex10-builtin-0 def -/CMapType 2 def -1 begincodespacerange -<00> -endcodespacerange -1 beginbfrange - <03A5> -endbfrange -31 beginbfchar -<30> -<31> -<32> -<33> -<34> -<35> -<36> -<37> -<38> -<39> -<3A> -<3B> -<3C> -<3D> -<3E> -<3F> -<40> -<41> -<42> -<43> -<9F> <221A> - <0020> - <0393> - <2206> - <0398> - <039B> - <039E> - <03A0> - <03A3> - <03A8> - <2126> -endbfchar -endcmap -CMapName currentdict /CMap defineresource pop -end -end -%%EndResource -%%EOF - -endstream -endobj -2258 0 obj -<< -/Length 1577 ->> -stream -%!PS-Adobe-3.0 Resource-CMap -%%DocumentNeededResources: ProcSet (CIDInit) -%%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmitt10-builtin-0) -%%Title: (TeX-cmitt10-builtin-0 TeX cmitt10-builtin 0) -%%Version: 1.000 -%%EndComments -/CIDInit /ProcSet findresource begin -12 dict begin -begincmap -/CIDSystemInfo -<< /Registry (TeX) -/Ordering (cmitt10-builtin) -/Supplement 0 ->> def -/CMapName /TeX-cmitt10-builtin-0 def -/CMapType 2 def -1 begincodespacerange -<00> -endcodespacerange -6 beginbfrange -<07> <08> <03A5> -<21> <23> <0021> -<25> <26> <0025> -<28> <5F> <0028> -<61> <7E> <0061> - <03A5> -endbfrange -71 beginbfchar -<00> <0393> -<01> <2206> -<02> <0398> -<03> <039B> -<04> <039E> -<05> <03A0> -<06> <03A3> -<09> <03A8> -<0A> <2126> -<0B> <2191> -<0C> <2193> -<0D> <0027> -<0E> <00A1> -<0F> <00BF> -<10> <0131> -<11> <0237> -<12> <0060> -<13> <00B4> -<14> <02C7> -<15> <02D8> -<16> <00AF> -<17> <02DA> -<18> <00B8> -<19> <00DF> -<1A> <00E6> -<1B> <0153> -<1C> <00F8> -<1D> <00C6> -<1E> <0152> -<1F> <00D8> -<20> <2423> -<24> <00A3> -<27> <2019> -<60> <2018> -<7F> <00A8> -<80> <2423> - <0020> - <0393> - <2206> - <0398> - <039B> - <039E> - <03A0> - <03A3> - <03A8> - <00AD> - <00A0> - <2126> - <2191> - <2193> - <0027> - <00A1> - <00BF> - <0131> - <0237> - <0060> - <00B4> - <02C7> - <02D8> - <00AF> - <02DA> - <00B8> - <00DF> - <00E6> - <0153> - <00F8> - <00C6> - <0152> - <00D8> - <2423> - <00A8> -endbfchar -endcmap -CMapName currentdict /CMap defineresource pop -end -end -%%EndResource -%%EOF - +r+‹eŽ@ñRZ +»îñÈYÅþÞÚv’ˆªŽ¯¸âiJdt˜«\`ª¦ž$BÐN„ö–¶„g—FÓâÅèšvŽZ~Þ\PNÈ#pÞ:ÂiMEA81$eiHrÒc|@Ï–™-JžX"ÀÓfÐQ÷D½éçI/ÄGXÛdÞÀ9A¹ý@F™b‡ÜЇ ¹}…óûïî!+èÆ*¿ow?ÿÙŠg;Âàk0¾~$·!yŽ5ç-a)ÎHÀ%@†rKL¥xÂÛ#µK¹»·KÕ9¥c.O;Å:R(óN½¿?Å*ꌘG×’§á©`=ø9Ì:i¾H0^Xê`,„ØPô÷åó£³[îÒK~ã,ed?!rH­2ͯ‹Òvßé…EWÚC<®Þ—¿÷õöꀞ‡ñêS™Dvq›Ö­8åÒƒQ~ð?‚ Z;0Â|ÇPyŸÄz.¨Ëñ±_æ#ˆƒ +Ú{Ïï‚8 (á¾5LÜÛÍ< +ñ¿+ôZ™VÕô»mJã{ÅWxOCدfÓŠíBÒå˜ãúÿHH8ÁêZ·\-ö¾ÑÖö9EÆ`»ÑMùIÄ5°•F÷In8ÓŸƒbGÌa@N äÖ²„Ñó#ºƒ±³Rãõ½ ÃbɘÀ(õÈ¢­ªJ7ÂFÁƒJÅwý“ôOÛw:}žÙ3æi¸y!)¿É.°]¯1.ƒ(¨¦Y˜l«øÄSŸ0Q¼Fo€ÌÅDñÔ ÛWSíÖu“![/#´˜© Â(ÂËrÉI’IºŒS&ªäA¸Só§xOø³Vb‘~Èô[©×BŒUªùÃÆ!j%Ïm3ÇL$8”õ,¼¥}èlðvgõ÷ôã>ýûP––඙Owtp%œÝ!\å´+y$péVñP­V $så g& Þì{€a¶·UÌÁ>û çloÑ5Ó¢[¦E¦½÷» /( ]ìÏjËýP•K:a6﹪C2KÈ­§ *w-äXWhš½@.A´’ŸìÎò»c7”  NÚPÿó„©i(¡)ýÀêä8s-a-?p•ÿu‘ç„Ù£E>,}k’ó·#CO¼rÃÔ´ÁîHgŠ5’8>¢þÝD"ŒÆ?±À“jð¸¡:…fÙyïFÂ(óÏ}ˆ~}á=ÜßD£,Au¶¿²yN®×!¦ÅF!ñk>F¹Âßyð‹æ±¥ê+ù…™/êÑŸB’Ž&?ÂŒ©bº¹ +˜A”&Ûèæ·›Aè饘YlÀ¿Ýw[´¦úmêšíHÁEÑErÀ¬áå64¥C|û?ûžÉ„!ªÈÇ%~ê„àSwÜDSbÇéöLÉrŸ~#zžÃ,„‘Ë¥îä–ï³Óy +%ªrðí®ØQgÞB +ŒÈKÀ<æ‹`hûž{õ¼"F7#Ù°š¸&6t1Jø +äÂ)+¸‹êœið®Ðx·ß –\X3…I#Ö ~3ók ”Ëwf襪¢Îß ¸Få%«%çp¼ü[ƒ&ý½;Ó~¦ +¦Þ¨‰ÊÆ16=Or ™Ïœ´ÁÅ 94w2›†Áy›yó;°œ¶wc~ ê´ ®®îz¬Ö>b3ü>FžgU0à‹c(û‘4`²Ø’4/#Ã×Îuo²:ïm´0B|X•Ptl£²n¨2…Œ2]æËYZ»vX£í<ªwË}ö#bã$Q¶› |¾ûU•ÿÉ;Ë·îÛ´3ók¦pÔî5ãô5*ŠºO깿F¡>ÌYG>Öœ…–Ú' tE͸}pÕûŽßHÂ¥+1Àå ¹š£6,ÅC&±Fcã>¥ßc¨ÑR.“ ¬Œèš:Ç-?àß2ñ§|²Nõýü¨¾8TšfÖQK"É”»þg±sqíaã+j 1Ý«=yD +ÙB½Âã:¾¬E «"´<žvcÎÔM¾@Ú„õðñƒ4»¬ @µÂ™‘ÖwÁ/RCú¿|«Ñh–%µ3ä*ó*ù‡µlßUÿWá[_õyŽem‚JnïŠýƒÿµ`ƹlÌZO(F8µgÕ5Ê€rݽíÑùñä \d—M‘?œ6¥C²pRÄtY†+?’ìÍ8F3ÃX={(’éD«¸÷¼‡Kì="ý )¶†MÀÖRWÒTc;½–ßÇã8Œ•sRHà`†P„¼=¸,íºü÷ëN0á°‰Jz:dV–›ÿ¥ô ˜¼¤·úª¼¹9>Þ–F²Ùù0á@¡ á +%¨Ž^Á•u°ÇK  ÜÒ¶N#F:3ý=¼^ä­¬t¶môñ^b RƒÇÇÆzTkX0ìi6kâfwš“{$~Dñ¶ãkæ\úæ ZRïysã:õÍ¿%ùFòŠGmJ›Ý*ÆÏèi5½kÇ$Di3è‡ÍŒh® ?p|cˆîF3(ú7 ÜþΑdÊ2uâVŒˆñe˜¸5 ¹>¶á=£–HmÌúI¬ e´Ì¸sÝc¡¿0뾯Ÿì,Z÷ÒEŽÕû¹J²®É[: Sí|(¯+ë¤s«E ºèìÕ²£Y24æ—îñV%ëvDá«5ú5õ¾~ÏI}ÑàÓIEb, o·Ë}!ˆ¶ÎÆ»Â,ëÕÃÍ×ÓtEÙÜUЦhu†BÌ”¼žFíŠ'ím…õL)Õ$ö¼ùÓ&•$a p&+ VUpc?Üå’')‡](=õÓí‚Eo_ðÝ©Û—)†Î4hxå±N,®½¾§“凙š¼{ÕÀ'D@‚J•¶ B~lü¼18$oó±¸ê€ÿÖ“aø¯g~lïû8‹mÒ¹¨ö†ÖªI,Úˆà=0cû}›r°°{GR®¬fû6gþB%,èëpiÉæ~–ê‚^»©.Æ! Oa=³ê½.mK!’B¹#`?z¤AL×SDòÜ®iàþ/Ãæ Øwí¶‡ü´Ç$¼þÙnh™éØd¾=ÜŒB0÷è÷|*D†]—î¹ïÔ«|AZå…5(;Ò²#¤œÚé„—ôú|PHÀ†!@ùÎV0ækëÈ7%¿ãHBh5>¶¤¶‰É/ÅHÏ–]õ.Ü£Æ_»¦± ß];1Q}Lrâ¾ß©æãåL’ßþP®Å8âÆòäa˜4þ±âB–pxÂö?µ†¿ß\|ûÍrëÉ™sÕWQÓ]e +G¬Î÷±‚ûÐÐTbj…àG +Rg6¹h›_ÇîüMåäu]ƒ¾Â¦m7‰oâT·¸,UF›’6ª³HŽKá2:Ö_y|=²Ã„[[ÚÙbˆÛ>uÚKŠÍL˜ Ê º×þ‰Ö¨K!&ÓëHwºp¥‹âsIÝ”ÀxÎL©ºj]¬×ÐKúáUïáíßI¬†håƒd½‰Ñ>$çK• ·ŸûÓ È–ûÆÓ£|D¥‹c¯å˜Ãfá(ásºÛ³d8¹MõbCqFµ™m !è˜rýVJË6ËðX¦ÇfÔJ/½ÄíÚÌÁݵ.mÞxÁtl&¢£D«fA˜S,Ëéþx¼äÔ%AÒ0ùušÌÑKfÉÒ ¶1óú(±ÆµPÝTÁßÃä@ø‚Ï€9MÙHm²>6ª[Á2nˆrn-og#R¡])ö™l;nº1Ý=“Õ0’µQè¹ØÓh4èGžhwžZ$»‚°$â^ Ê¤Ã¨8—‰¶ºn‹Ýòµ8¼$µ&ìÜ +ß +AzÍÞüö¶zl öóä‘èŽS yÆBwœMS¸ïóGF}u«Ÿ–—?7Ážä\û¬?›<šS´LÕ]47€€:OóÔc­° x‚àŒpP²à·ì›~$k<äNeðÄ h$ßÀû'Ÿ†®l î ñä5q“V•Úå³®Ó@0ßRi´Mª+ü«ª¨è~÷E’¶û4¿¥ËoT€e[ÂÝcÒ¿-¼éÆ£‡®LpAR›GëbÍož uõô¯#ZýJòb-¶à¿c~F3ÝKú¥öÀõÿjzØ·pÑP}nIx>ŸBºù0«6Án!ÈiY QÇÓ–‚Î"?•è&èÃdúq0QúTƒ#dŒ áì÷p8#Yª1b2 4 sZ† Ž­ÒÉßÔ,¬Zò¼D#òüMíjÓÒ²Ù§B"ÙǸê!S¾žæLÄÒTJcj€M/ÖàÖ8,6ò‡ÇàŠM¬ õ™@æÕç¬NÍB<Õâ¢ûOìá~CìxôA»áÁ=~®ÏB™yüÌ+s|̺ƒ:Ãmný³æ åO ¼Op´½ãàùàš®’•äRLŠè}ù©º­¹°ȼð˜t¦Ô­ +qOÅÜá¯s•ðžnrÇZ'ùD­#Tµ—ê©®kVB3ê&¹Äç´R;;óa«sµëPxVu¿{ÚúbYÞ9L°Œ|–ˆ! }eÞÂnÞÊ7iÃÞøX„ç#wlë4W3˜L6Uª€ÈK¥Ù¼æUZ-î^È¿APW¾¬ÊæQJH”ŸòêPƒIò“a }bþ‡;™^ˆn‘âx³ËúåR¶"¹-.È_µ§†nÞG¦]~0JšËVÌ P{ 4°JÊìÏâñkø/j"í'{£ã¨¶zê(’‘VŒÛ”àkp¯mׂZl½V‚»- Sˆ$Wú#ý×]d¸M>mÍî^NÙ˜ÙVçù3ð·ÅU #t†Ð/«„ÑšQ-”}dºÞRpã}ñø?V­íQBbOHWÖV(bÿÜÅm&Ò|¾¥–_Ùš‚ßL€ævìÐõ$íðBîmŸ”jwú„ød¡ñ{1Ø8xœ²$zA¤8ÈО±Z#9F>†õgûÔ?é05`ZÔ1WâNÚ¨áÚ#?Ìøpó¯A‡1ŒNI„ËÃH‰€¸j)^J‘ÿÔÝÆñû_?¥ôÑŽ]ÈQMK¼3âÂ+8›0AesÆrM{x²ÃÛÔC)u‰$ZK©’RÿÚ¨[ȹ“!·3ùÜþDÕûþÊà_(t¸œ¿5è’UO<. s¢±mÃz6º ZôDšõ + º}¦]ûkÔý>#“ùPó¡Þ¾ƒ2ºu 3vŠBI,ìt䢅BÔQº´vC³±½»0ÎxmQP½D\ÍÿdÒRØò(¶L?‹± GÉå.åðVV›“ +ÉŸG@vð}W©¥¢‘žDºåø–‚lÑß¿/©"fÙ뺨Ì5,ÄùEë™X×{çÂ÷»6ðìÞÝú=1+ØUxáÖ?Ž[ð/™£d·šÁᙟáFd—¤UD¢u_“9±‡KojÆE½§#Ù…¤ÿ6 ð`WÂêÛ¹9×· ‰¤{Ð0ˆú_RT*‰ï ™v.§ÝŸ ¬Ò·•7˜ +§Èèv%.JÉZÍ0ÇÔF= Šu +öÌfcÖw•C!!}«¢LaGxÑ`G +¼xP÷xšòLñUí=?¯S0ã®S&Þ^¯Ú›® õ¦HóЧ›¤\©ëÖMd¤§éx%‰ÿÝ땇îÏŽ•Q´÷E’Å”ªã÷mH âfîÿ»»ô°zm(qþñ6.Xê(ò|ºi3ž“>'›tÆ'EÔ¦3OîƇMÏë‰%·/ð˜íäôä¢.£n†ûýÊút™¦ôűìA &9p†„gµ>‹·l¨F¥Eò¹[äš[šMàÉN5]Œ$ÿ»– b„gí ª†5‘V…½hãÜðî)/Ò8#—Íl;ÓöòçC!Òì5O«Þ“IˆK³<\Åÿ ®SÌYø,nÂÞ¶|lס5!š’Ô· `Ö—7ZåÛk¤Ä;Ñù²'µh=œ^K9|ÙQ¢©ò÷ NÐŒy@®’áx¿LG﮼zÀMØC~rÞ +Ë%5&˜Vð>føXÒŽgÈ_…8eÖ&[©údWgê Â5ŸÜBrP2Ò„ŒÐi ¹yïkOfc¿Îæ­†ù»Ü]t¾3f f„ÓÜ,}UÖÙÇYã. ,Ãâið‘¤úÞ=ÅÕOG=gªNûpùD´FóƒgÜ…`Í2§¸àêK7}æ§R‰XѲÿ!œt#V/›Ÿ!mü‘¬.Â*5nçkSGåt¼q!ò8…èmŒ-kU²º­ ýzªðN½°>Æ7’BTpùWÓâ '\Ü…h˜¼íÅUøÏ>r>Ä$ôc‘÷rš†x¶HsʬÓˆZŠDåD6‹ÓÎpÀž -%ü„YÕ¢‚Íä›í8 Ä“È[¹«Þ}G*Aí³yEf2çýɈ*Î)U´¿“Ggšv@zP¬”ë—Œù£fFÀ¦'ãøh4 {ît¶Vä›sË*ñÄï;Ò1¬ÿÙim©±Ó+þÒ®úåE‚Éß]¿üßĨýŽ£´]g¸_jB¢¿°½u§Ô«±õè™óûû‹;AR¦6Íø@¿ñ: zÒåQ}¯“×!Èæ´™ÈôuB£þ€ysÔæ´Õfdù,¶ðçz[þ’!•½‚ Q|À…Ì¢Õ×D9¢z%ø˜øvŒ§Õô²fbó©cÇ”YFzA«rÈša†0¡Â6NYOïþE–#¶‡ŒËÝnotœ³Ì-W£Úγ>Ñ7Ûy|Îò™(:Úã ÛÕ@a +&~=íÂÓ"M;¾µ vŠëv9Œ4%«*r×AŠìÛƒýkåcgrú›6ÏÓ™‡OlË"ò–ŠpxA‹>ü½9t|^Æù‰Ä~ô´9³ÐTÂy½…•Êj?Ó°¯ñ’¾ì§ûÆ«@€TP 0_ûóVx %äÞu68[âÑ/yá&Û1ÓaÙt?^ xO&ä‡Oµ©t® nú`Õ„˜&Èfûûª$_òÄ¢‘:§> + n'æîÑ>(‚^å?Q-ñ€bwÒÌbo²ú»Ñé¼[˜”º=ñH²ÆvÉÿþ‹ÙžÜ«p ºV¨k°VÖêåþrs*ÛP°ÎfÝ1=)Ö ­ãlz×ê…%‡ ¢A"L£9#Éò8Hï³jÿ3×ñ:5å#:Yfv‚j¹OƒÅ&áÒþìLÔSƒB¬"è¦Aæãz€¾¢Ù¤||<´Ü%àÚûQ¡AÒ?ÂÇ‹WaßË0Ù“šcá¸^LábŽ÷ñ(äÐ.ò ×?¾dHª¤ôøðäÐ&ƒ‘Ÿò ¦å+3ÊòFÚÊ’Éw¶“{vŒîÙ4%t-—Ì¡ƒéÙh)A…xmâc“%$g-Þå"æöOƒüÈq¯çÍE3áËá®É2„åzåeä’ߘ¿ŠL­:’=Œ{̾‚U{ÍK%™\®êIKÞ†Æ/jbìwJeëG‚°›tsëBBÃøõˆŠß5‡P®ß…Æß"x£.ÎÊêûÖu u6P¸r”$š".Wõà$A ;æ+ +k ,ÜïÒf¯B³H¢-ÒàH©!äŠZµ£;ã˜üL}¯g]J^s¼KX-!rSáf +p–îs|¹*Á¡÷#}ñûtu(~ø?¤H‘02yÓÓ¡^àþzW'¹›jC°&fv»#œ ¼äg9YºûfžNåg@Ò~°¾^Û†«Évå0øs k÷ôJiøµ®^öSõA±òÛ0Š ÁŒ(*{’¼“ÒÿYÑÝ¢IŒrðýüKB°!o?¿”ÞX, £Ê6P4 ÿ(óõ}rö§bŽED¿Çrx3§„/§¹Ì´OÙd¨/ŠÃÙÇÙF¡»ÊI¢¼†RGd”Ç f á}åJß)}Ìø)‹Áy˜zô…›ÔÅÉ6ÿO‹o~/ê–ìƒï*tÒŽ¡n¯x ’“õ9Çï°Kš6{Ó)ãe€_ƒ.ÞÀŒ‡^èeÞ)ÖËz„¢]Èñá/ϤŠMàYoÈô9,¢œ—Þìg£×TE눮}qtôºšGÍÛeÅX‚¥Ä_wxÃël ñNUá¾=wÆU¥w*ú5ëqï6¸Ù±]tR4‚6Œ[@[LJ*8Þ*ñèŸÊj‘Òës]p*4P+ã5[šâ +ÏùÖ 9¦}v·5¤$H•à”úúVbàöëìjíFaõý®?ôÖ}÷­ÀÀ„ì#bÉ5ö]ò*ýÿS"^ò6>Øù­ÊÓ}uFÀø¤Àa›d~QÚ¡d™z’‹ €–ü‡—Iø¡¤áo>Šún}ÄŠárËÀ©o 'ª÷‘¦Xdü`C- ¾Ó’duÇ‚TÄ(n¿v8Ímë³ß͘•ƒUÖ67ˆ¨áBYgøåR>ï‰`±l–Ÿþd³õ- +×ýc%ÄÆË£7£ÓÜ×Pä1xÀÞp]ãÒw/F¸N¡ºNæö’0àqûìÃeÂ7¯ê±åëYÁæÍÏË?Ù*KùPÏôp\þ|Âi HÓÕ¨ ãYNUÓ0ŒWsK9àæC†­Úº¾¹pS^Þ"戺•v#†iÙ"ÙʆIúCã¨Á"ŒIPA{QmtÑ_ØZѦnzE¨]½ U5Pd"ó[ùÃ`$k¬=ú̪G­ÖäË¡Zï‡ÿÉþÏfŽþ;ÇÿöíšþFèLx5†÷±†@>ëÊ æ£ÙkhºæVë»7Üèï +óÌ T¦@rrz‚)(å°]Ùß K¸ù+ؘfi©ÛÂDøŠÄÈ:HÕ±ëù÷ÞÞ»¥Â¬í‡Ž²B£WU!|5c}æ¶5‰R¥#Ó_훎ì¢Me¥z4ºQû:àîФÜàåký#ý8œA Pbâ—ÉwÆ™µhfOŽokï‘Z9ëè\©¶¨g„$o­Îà×.ÞϲWO~T5 ¨Gˆ$f’œÜÏ‹”“k½=r“ Ë/3Gq† Þ¡¤s­»ÅíÍŒ§)»vx*ýP*ÏÿÑ=ßÀcÑÀè~ÓáVô¸zíä7dNS×4B®ÅÐæS}©RNaVÁªPÛm„>ÍQ¿i6h%8ÀZÖ½±ïPGQqºÇÈÌIâph,‰1¾-Ãã…Â(†Þ°ñâ±÷ùÁ„çì¬ÉluU<ìh¸õZ๬rÉ ~%>—Ö}Imkõ|Ëë›㢠=ĺ©Y#Z¹dàÂ$Ú¾öÃÑN¹TDŒé”(gÉÃ)†u ßÄÿTÀvû#à&å“,vžq÷¿͹ |ú8@\Nˆ®.ÒUè4”ÄÅߢ?A°QÉ^éÆóp+¥™¡tŒün(ÏÎI`¸#Ǧ¬H˜hÒâØŽÔÁˆ¢0$%,K“µ®¢à3å*Z耘®1̃±²ÝYº9åû^¾5~\Á³*ºê™já¾7£ ó“o]ßÛ-”©N÷–É»5×Úƒ…f1Š!MÔPK§‘¶‚«°™ 7fÍ ƒiEÅ:Èka¸áD‚SœV +ôᦠŽÞÑ«ª¸™BÜZ*p ¨‚ã"Ô»[´V{•»V!3ú6•Ö>ùæ&lÝŸhæΟv¯Çè6ÊG¾ýC™„êÅ&ÕL¾mÖç¼Ψ…™bÈОÉ{³ÓÐíî »6½nS=µîo–;J¶Û§.'ï£R’ËÈõN œ–È¢ßÓâ[÷šƒ‚\Z^ß…Ù„ õ™ +­%–ëXZÜÿçuqË +«ágÕµ~ƒúíÖVÆÂ…–ý»Ve;˜[ÝýÅÁ ÉLMÝ ±ôÐ}ÈfŒŸÏÑ`t‡š—Ÿ7Ë ‰Q˜È4úŠ¶‹VZ#¼ª +’  +ýƒíë.¦Wànd¨E¾³ŠK×™»ÅɶªQÃ\åÜàØŽ¬Ý°y +Æ4à£øÕèß|)’Úñ_ˆZ}ûóÐ> R¸õY +ST‡¼ax5¬ µFõÅzÕ>þa~zë[KÊQ÷ÔHD~YÖ­kÕ‘²‘Ûsø¢ÛŽ•Ø›¿¤´fœþwŒüÒw'Q½üÔ¡þø,À¬0ts‰Ý¼h:ŠSqÏW°Ò=E2Í'jˆþŸAr+…Dé’!}AÑO:YEÀöT:Š€¸¹²c=öóìn O¨}Æí¤C2wp£rA˜CšDêo Ò )Àse4›uNôã™}ü¦ŒÓx 1šåÓ~Xð³§΋[/B™ “BöøR +î~çsÕ¤4(¥ Þ²î‰`Cœé9’¹•ŒôÂ:E"²º–€IY~&4£‰RYæ¶&{2Šý$±GÇrV›ÀÚâ?É›ãµDVàêkÁ—Za¨Æ4ë%›O*tÉÏ”¯Æâ,!«–N²U¹ÿl×*‰ÖÌ[=a§»#*‚³–RZ +Šãø¹ y"]M¡ÐcØÙU…%˜»Žƒ/TJ ͹Æ2„PËH~ëH=yišÍÖ1÷9× x {ááyÚ½ë·Ù"“êÿú²S¦YÐ^{Ķ3þœž÷Pk<ÈZ?\û/ß2Üw)€%!Z?ÑúT0F :ƒ!WˆuùÖ „óá¾7Ìî8 O7±ów#ÀÄ¿¤ßzÂ)¹>×…VŠh&ksLÆÊcjYÇFír­ô|#3 #Õá:^7 X÷p²š¿lTŠï6#¯ð}«1¿½\]Ó=U¼·¸Cîd»øøä_t}ô¥ +åˆ3©•ä!š4wîQ+¯æITÝÁ —ÒŽÝR^n¼ÿ¤bÏάU#mÁ´¯;]§—Ho7Ò½éáŒJI[ͨ!ªNIÕú˜Œ¨÷|Lb–'æÄèDÐð3R@ñ#Ü;ÁÕÁ2¾˜šŸÿ—hÓŒLÎèŸÍ8ýÕ?/ 0|—¸!ó +Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: endstream endobj -2175 0 obj +2171 0 obj << /Type /ObjStm /N 100 -/First 978 -/Length 16473 ->> -stream -2170 0 2171 180 2173 223 2174 430 2176 731 2178 952 2164 1165 2168 1312 2169 1370 2165 1429 -2183 1609 2185 1727 2182 1786 2187 1869 2189 1987 597 2045 2186 2102 2191 2224 2193 2342 601 2401 -606 2458 2194 2516 610 2575 2190 2633 2196 2727 2198 2845 614 2903 618 2960 622 3017 626 3074 -630 3131 634 3188 638 3245 642 3302 2195 3359 2201 3453 2203 3571 646 3630 650 3688 654 3746 -658 3804 2200 3862 2205 3956 2207 4074 2208 4132 2209 4190 936 4248 935 4304 895 4361 896 4418 -911 4475 892 4532 893 4589 2210 4646 888 4704 2211 4761 1051 4819 2204 4877 2213 4971 2215 5089 -923 5148 894 5206 891 5264 887 5322 2084 5380 890 5439 2216 5497 889 5556 2069 5614 2070 5672 -2212 5731 2217 5825 2218 5845 2219 6216 2220 6319 2221 6478 2222 6501 2223 6956 2224 7085 2225 7383 -2226 8029 2228 8500 2229 9131 2230 9602 2232 10177 2234 10402 2236 10734 2238 10978 2240 11249 2242 11597 -2244 12109 2246 12341 2248 12787 2250 13013 2252 13244 2254 13723 2256 14299 2227 14728 1856 15169 1787 15332 -% 2170 0 obj +/First 977 +/Length 16569 +>> +stream +2167 0 2172 139 2173 319 2175 362 2176 569 2177 870 2179 1091 2165 1304 2169 1451 2170 1509 +2166 1568 2184 1748 2186 1866 2183 1925 2188 2008 2190 2126 597 2184 2187 2241 2192 2363 2194 2481 +601 2540 606 2597 2195 2655 610 2714 2191 2772 2197 2866 2199 2984 614 3042 618 3099 622 3156 +626 3213 630 3270 634 3327 638 3384 642 3441 2196 3498 2202 3592 2204 3710 646 3769 650 3827 +654 3885 658 3943 2201 4001 2206 4095 2208 4213 2209 4271 2210 4329 936 4387 935 4443 895 4500 +896 4557 911 4614 892 4671 893 4728 2211 4785 888 4843 2212 4900 1052 4958 2205 5016 2214 5110 +2216 5228 923 5287 894 5345 891 5403 887 5461 2085 5519 890 5578 2217 5636 889 5695 2070 5753 +2071 5811 2213 5870 2218 5964 2220 5984 2221 6355 2222 6458 2223 6617 2225 6640 2226 7095 2228 7224 +2229 7522 2230 8168 2232 8639 2233 9270 2234 9741 2236 10316 2238 10541 2240 10785 2242 11133 2244 11359 +2246 11590 2248 11875 2250 12400 2252 12647 2254 13106 2256 13449 2258 13928 2260 14504 2231 14933 2219 15374 +% 2167 0 obj +<< +/Type /Page +/Contents 2168 0 R +/Resources 2166 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2133 0 R +/Annots [ 2165 0 R ] +>> +% 2172 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2171 0 obj +% 2173 0 obj << /Type /ExtGState /OPM 1 >> -% 2173 0 obj +% 2175 0 obj << /BaseFont /PBIKKX+TimesNewRomanPSMT -/FontDescriptor 2176 0 R -/ToUnicode 2177 0 R +/FontDescriptor 2177 0 R +/ToUnicode 2178 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 0 500 500 500 500 500] /Subtype /TrueType >> -% 2174 0 obj +% 2176 0 obj << /BaseFont /ZBHFTP+FreeSerif -/FontDescriptor 2178 0 R -/ToUnicode 2179 0 R +/FontDescriptor 2179 0 R +/ToUnicode 2180 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2176 0 obj +% 2177 0 obj << /Type /FontDescriptor /FontName /PBIKKX+TimesNewRomanPSMT @@ -33326,9 +33399,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2180 0 R +/FontFile2 2181 0 R >> -% 2178 0 obj +% 2179 0 obj << /Type /FontDescriptor /FontName /ZBHFTP+FreeSerif @@ -33340,9 +33413,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2181 0 R +/FontFile2 2182 0 R >> -% 2164 0 obj +% 2165 0 obj << /Type /Annot /Subtype /Link @@ -33350,326 +33423,326 @@ stream /Rect [389.583 356.078 396.557 368.137] /A << /S /GoTo /D (figure.5) >> >> -% 2168 0 obj +% 2169 0 obj << -/D [2166 0 R /XYZ 98.895 753.953 null] +/D [2167 0 R /XYZ 98.895 753.953 null] >> -% 2169 0 obj +% 2170 0 obj << -/D [2166 0 R /XYZ 396.732 393.756 null] +/D [2167 0 R /XYZ 396.732 393.756 null] >> -% 2165 0 obj +% 2166 0 obj << -/Font << /F62 671 0 R /F67 918 0 R /F60 670 0 R /F59 669 0 R /F93 920 0 R /F102 1021 0 R /F120 1787 0 R >> -/XObject << /Im10 2163 0 R >> +/Font << /F62 671 0 R /F67 918 0 R /F60 670 0 R /F59 669 0 R /F93 920 0 R /F102 1022 0 R /F120 1788 0 R >> +/XObject << /Im10 2164 0 R >> /ProcSet [ /PDF /Text ] >> -% 2183 0 obj +% 2184 0 obj << /Type /Page -/Contents 2184 0 R -/Resources 2182 0 R +/Contents 2185 0 R +/Resources 2183 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2132 0 R +/Parent 2133 0 R >> -% 2185 0 obj +% 2186 0 obj << -/D [2183 0 R /XYZ 149.705 753.953 null] +/D [2184 0 R /XYZ 149.705 753.953 null] >> -% 2182 0 obj +% 2183 0 obj << -/Font << /F102 1021 0 R /F62 671 0 R >> +/Font << /F102 1022 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 2187 0 obj +% 2188 0 obj << /Type /Page -/Contents 2188 0 R -/Resources 2186 0 R +/Contents 2189 0 R +/Resources 2187 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2132 0 R +/Parent 2133 0 R >> -% 2189 0 obj +% 2190 0 obj << -/D [2187 0 R /XYZ 98.895 753.953 null] +/D [2188 0 R /XYZ 98.895 753.953 null] >> % 597 0 obj << -/D [2187 0 R /XYZ 99.895 716.092 null] +/D [2188 0 R /XYZ 99.895 716.092 null] >> -% 2186 0 obj +% 2187 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F102 1021 0 R /F67 918 0 R /F60 670 0 R >> +/Font << /F59 669 0 R /F62 671 0 R /F102 1022 0 R /F67 918 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 2191 0 obj +% 2192 0 obj << /Type /Page -/Contents 2192 0 R -/Resources 2190 0 R +/Contents 2193 0 R +/Resources 2191 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2132 0 R +/Parent 2133 0 R >> -% 2193 0 obj +% 2194 0 obj << -/D [2191 0 R /XYZ 149.705 753.953 null] +/D [2192 0 R /XYZ 149.705 753.953 null] >> % 601 0 obj << -/D [2191 0 R /XYZ 150.705 554.06 null] +/D [2192 0 R /XYZ 150.705 554.06 null] >> % 606 0 obj << -/D [2191 0 R /XYZ 150.705 527.944 null] +/D [2192 0 R /XYZ 150.705 527.944 null] >> -% 2194 0 obj +% 2195 0 obj << -/D [2191 0 R /XYZ 150.705 315.727 null] +/D [2192 0 R /XYZ 150.705 315.727 null] >> % 610 0 obj << -/D [2191 0 R /XYZ 150.705 284.171 null] +/D [2192 0 R /XYZ 150.705 284.171 null] >> -% 2190 0 obj +% 2191 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 2196 0 obj +% 2197 0 obj << /Type /Page -/Contents 2197 0 R -/Resources 2195 0 R +/Contents 2198 0 R +/Resources 2196 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2199 0 R +/Parent 2200 0 R >> -% 2198 0 obj +% 2199 0 obj << -/D [2196 0 R /XYZ 98.895 753.953 null] +/D [2197 0 R /XYZ 98.895 753.953 null] >> % 614 0 obj << -/D [2196 0 R /XYZ 99.895 720.077 null] +/D [2197 0 R /XYZ 99.895 720.077 null] >> % 618 0 obj << -/D [2196 0 R /XYZ 99.895 633.991 null] +/D [2197 0 R /XYZ 99.895 633.991 null] >> % 622 0 obj << -/D [2196 0 R /XYZ 99.895 559.861 null] +/D [2197 0 R /XYZ 99.895 559.861 null] >> % 626 0 obj << -/D [2196 0 R /XYZ 99.895 485.732 null] +/D [2197 0 R /XYZ 99.895 485.732 null] >> % 630 0 obj << -/D [2196 0 R /XYZ 99.895 411.602 null] +/D [2197 0 R /XYZ 99.895 411.602 null] >> % 634 0 obj << -/D [2196 0 R /XYZ 99.895 325.516 null] +/D [2197 0 R /XYZ 99.895 325.516 null] >> % 638 0 obj << -/D [2196 0 R /XYZ 99.895 251.386 null] +/D [2197 0 R /XYZ 99.895 251.386 null] >> % 642 0 obj << -/D [2196 0 R /XYZ 99.895 177.256 null] +/D [2197 0 R /XYZ 99.895 177.256 null] >> -% 2195 0 obj +% 2196 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 2201 0 obj +% 2202 0 obj << /Type /Page -/Contents 2202 0 R -/Resources 2200 0 R +/Contents 2203 0 R +/Resources 2201 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2199 0 R +/Parent 2200 0 R >> -% 2203 0 obj +% 2204 0 obj << -/D [2201 0 R /XYZ 149.705 753.953 null] +/D [2202 0 R /XYZ 149.705 753.953 null] >> % 646 0 obj << -/D [2201 0 R /XYZ 150.705 720.077 null] +/D [2202 0 R /XYZ 150.705 720.077 null] >> % 650 0 obj << -/D [2201 0 R /XYZ 150.705 650.062 null] +/D [2202 0 R /XYZ 150.705 650.062 null] >> % 654 0 obj << -/D [2201 0 R /XYZ 150.705 580.047 null] +/D [2202 0 R /XYZ 150.705 580.047 null] >> % 658 0 obj << -/D [2201 0 R /XYZ 150.705 510.033 null] +/D [2202 0 R /XYZ 150.705 510.033 null] >> -% 2200 0 obj +% 2201 0 obj << /Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> /ProcSet [ /PDF /Text ] >> -% 2205 0 obj +% 2206 0 obj << /Type /Page -/Contents 2206 0 R -/Resources 2204 0 R +/Contents 2207 0 R +/Resources 2205 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2199 0 R ->> -% 2207 0 obj -<< -/D [2205 0 R /XYZ 98.895 753.953 null] +/Parent 2200 0 R >> % 2208 0 obj << -/D [2205 0 R /XYZ 99.895 723.717 null] +/D [2206 0 R /XYZ 98.895 753.953 null] >> % 2209 0 obj << -/D [2205 0 R /XYZ 99.895 698.792 null] +/D [2206 0 R /XYZ 99.895 723.717 null] +>> +% 2210 0 obj +<< +/D [2206 0 R /XYZ 99.895 698.792 null] >> % 936 0 obj << -/D [2205 0 R /XYZ 99.895 638.64 null] +/D [2206 0 R /XYZ 99.895 638.64 null] >> % 935 0 obj << -/D [2205 0 R /XYZ 99.895 583.689 null] +/D [2206 0 R /XYZ 99.895 583.689 null] >> % 895 0 obj << -/D [2205 0 R /XYZ 99.895 523.438 null] +/D [2206 0 R /XYZ 99.895 523.438 null] >> % 896 0 obj << -/D [2205 0 R /XYZ 99.895 479.068 null] +/D [2206 0 R /XYZ 99.895 479.068 null] >> % 911 0 obj << -/D [2205 0 R /XYZ 99.895 433.422 null] +/D [2206 0 R /XYZ 99.895 433.422 null] >> % 892 0 obj << -/D [2205 0 R /XYZ 99.895 386.501 null] +/D [2206 0 R /XYZ 99.895 386.501 null] >> % 893 0 obj << -/D [2205 0 R /XYZ 99.895 340.855 null] +/D [2206 0 R /XYZ 99.895 340.855 null] >> -% 2210 0 obj +% 2211 0 obj << -/D [2205 0 R /XYZ 99.895 295.209 null] +/D [2206 0 R /XYZ 99.895 295.209 null] >> % 888 0 obj << -/D [2205 0 R /XYZ 99.895 249.563 null] +/D [2206 0 R /XYZ 99.895 249.563 null] >> -% 2211 0 obj +% 2212 0 obj << -/D [2205 0 R /XYZ 99.895 204.585 null] +/D [2206 0 R /XYZ 99.895 204.585 null] >> -% 1051 0 obj +% 1052 0 obj << -/D [2205 0 R /XYZ 99.895 146.317 null] +/D [2206 0 R /XYZ 99.895 146.317 null] >> -% 2204 0 obj +% 2205 0 obj << /Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> /ProcSet [ /PDF /Text ] >> -% 2213 0 obj +% 2214 0 obj << /Type /Page -/Contents 2214 0 R -/Resources 2212 0 R +/Contents 2215 0 R +/Resources 2213 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2199 0 R +/Parent 2200 0 R >> -% 2215 0 obj +% 2216 0 obj << -/D [2213 0 R /XYZ 149.705 753.953 null] +/D [2214 0 R /XYZ 149.705 753.953 null] >> % 923 0 obj << -/D [2213 0 R /XYZ 150.705 716.092 null] +/D [2214 0 R /XYZ 150.705 716.092 null] >> % 894 0 obj << -/D [2213 0 R /XYZ 150.705 664.064 null] +/D [2214 0 R /XYZ 150.705 664.064 null] >> % 891 0 obj << -/D [2213 0 R /XYZ 150.705 622.283 null] +/D [2214 0 R /XYZ 150.705 622.283 null] >> % 887 0 obj << -/D [2213 0 R /XYZ 150.705 577.073 null] +/D [2214 0 R /XYZ 150.705 577.073 null] >> -% 2084 0 obj +% 2085 0 obj << -/D [2213 0 R /XYZ 150.705 543.917 null] +/D [2214 0 R /XYZ 150.705 543.917 null] >> % 890 0 obj << -/D [2213 0 R /XYZ 150.705 512.037 null] +/D [2214 0 R /XYZ 150.705 512.037 null] >> -% 2216 0 obj +% 2217 0 obj << -/D [2213 0 R /XYZ 150.705 480.156 null] +/D [2214 0 R /XYZ 150.705 480.156 null] >> % 889 0 obj << -/D [2213 0 R /XYZ 150.705 438.971 null] +/D [2214 0 R /XYZ 150.705 438.971 null] >> -% 2069 0 obj +% 2070 0 obj << -/D [2213 0 R /XYZ 150.705 380.53 null] +/D [2214 0 R /XYZ 150.705 380.53 null] >> -% 2070 0 obj +% 2071 0 obj << -/D [2213 0 R /XYZ 150.705 336.754 null] +/D [2214 0 R /XYZ 150.705 336.754 null] >> -% 2212 0 obj +% 2213 0 obj << /Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R >> /ProcSet [ /PDF /Text ] >> -% 2217 0 obj -[1000] % 2218 0 obj +[1000] +% 2220 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2219 0 obj +% 2221 0 obj [277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] -% 2220 0 obj +% 2222 0 obj [853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] -% 2221 0 obj +% 2223 0 obj [528 542] -% 2222 0 obj +% 2225 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2223 0 obj +% 2226 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] -% 2224 0 obj +% 2228 0 obj [388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -% 2225 0 obj +% 2229 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] -% 2226 0 obj +% 2230 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2228 0 obj +% 2232 0 obj [605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] -% 2229 0 obj +% 2233 0 obj [528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] -% 2230 0 obj +% 2234 0 obj [611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] -% 2232 0 obj +% 2236 0 obj << /Type /FontDescriptor /FontName /MNPEHI+CMEX10 @@ -33682,24 +33755,9 @@ stream /StemV 47 /XHeight 431 /CharSet (/radicalbigg) -/FontFile 2231 0 R ->> -% 2234 0 obj -<< -/Type /FontDescriptor -/FontName /SFGIZH+CMITT10 -/Flags 4 -/FontBBox [11 -233 669 696] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle -14 -/StemV 69 -/XHeight 431 -/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) -/FontFile 2233 0 R +/FontFile 2235 0 R >> -% 2236 0 obj +% 2238 0 obj << /Type /FontDescriptor /FontName /TPELEW+CMMI10 @@ -33712,21 +33770,6 @@ stream /StemV 72 /XHeight 431 /CharSet (/arrowhookleft/greater/less) -/FontFile 2235 0 R ->> -% 2238 0 obj -<< -/Type /FontDescriptor -/FontName /SOSTRQ+CMR10 -/Flags 4 -/FontBBox [-40 -250 1009 750] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) /FontFile 2237 0 R >> % 2240 0 obj @@ -33747,79 +33790,109 @@ stream % 2242 0 obj << /Type /FontDescriptor -/FontName /QGKXNM+CMTT10 +/FontName /IKXQUG+PazoMath /Flags 4 -/FontBBox [-4 -233 537 696] -/Ascent 611 -/CapHeight 611 -/Descent -222 +/FontBBox [-40 -283 878 946] +/Ascent 0 +/CapHeight 0 +/Descent 0 /ItalicAngle 0 -/StemV 69 -/XHeight 431 -/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/StemV 95 +/XHeight 0 +/CharSet (/infinity/summation) /FontFile 2241 0 R >> % 2244 0 obj << /Type /FontDescriptor -/FontName /HZGQIC+CMTT8 +/FontName /DUJUUF+PazoMath-Italic /Flags 4 -/FontBBox [-5 -232 545 699] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle 0 -/StemV 76 -/XHeight 431 -/CharSet (/b/c/e/i/l/n/p/r/s/t) +/FontBBox [-70 -277 902 733] +/Ascent 482 +/CapHeight 0 +/Descent -276 +/ItalicAngle -9 +/StemV 65 +/XHeight 0 +/CharSet (/alpha/beta) /FontFile 2243 0 R >> % 2246 0 obj << /Type /FontDescriptor -/FontName /RQJPKO+CMTT9 +/FontName /NCCVYE+LMRoman10-Regular /Flags 4 -/FontBBox [-6 -233 542 698] -/Ascent 611 -/CapHeight 611 -/Descent -222 +/FontBBox [-430 -290 1417 1127] +/Ascent 694 +/CapHeight 683 +/Descent -194 /ItalicAngle 0 -/StemV 74 +/StemV 69 /XHeight 431 -/CharSet (/D/E/I/K/N/P/S/T/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) +/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) /FontFile 2245 0 R >> % 2248 0 obj << /Type /FontDescriptor -/FontName /IKXQUG+PazoMath +/FontName /XKYJEW+LMMono10-Regular /Flags 4 -/FontBBox [-40 -283 878 946] -/Ascent 0 -/CapHeight 0 -/Descent 0 +/FontBBox [-451 -316 731 1016] +/Ascent 611 +/CapHeight 611 +/Descent -222 /ItalicAngle 0 -/StemV 95 -/XHeight 0 -/CharSet (/infinity/summation) +/StemV 69 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) /FontFile 2247 0 R >> % 2250 0 obj << /Type /FontDescriptor -/FontName /DUJUUF+PazoMath-Italic +/FontName /EOXOPS+LMMono8-Regular /Flags 4 -/FontBBox [-70 -277 902 733] -/Ascent 482 -/CapHeight 0 -/Descent -276 -/ItalicAngle -9 -/StemV 65 -/XHeight 0 -/CharSet (/alpha/beta) +/FontBBox [-456 -320 743 1014] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 76 +/XHeight 431 +/CharSet (/b/c/d/e/i/l/n/p/r/s/t) /FontFile 2249 0 R >> -% 2252 0 obj +% 2252 0 obj +<< +/Type /FontDescriptor +/FontName /TWMFXI+LMMono9-Regular +/Flags 4 +/FontBBox [-451 -318 734 1016] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 74 +/XHeight 431 +/CharSet (/D/E/I/K/N/P/S/T/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2251 0 R +>> +% 2254 0 obj +<< +/Type /FontDescriptor +/FontName /XVBOSG+LMMono10-Italic +/Flags 4 +/FontBBox [-491 -316 834 1016] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle -14 +/StemV 69 +/XHeight 431 +/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) +/FontFile 2253 0 R +>> +% 2256 0 obj << /Type /FontDescriptor /FontName /BDDEWM+URWPalladioL-Bold @@ -33832,9 +33905,9 @@ stream /StemV 123 /XHeight 471 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2251 0 R +/FontFile 2255 0 R >> -% 2254 0 obj +% 2258 0 obj << /Type /FontDescriptor /FontName /GLTUCO+URWPalladioL-Roma @@ -33847,9 +33920,9 @@ stream /StemV 84 /XHeight 469 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2253 0 R +/FontFile 2257 0 R >> -% 2256 0 obj +% 2260 0 obj << /Type /FontDescriptor /FontName /LHHPET+URWPalladioL-Ital @@ -33862,39 +33935,170 @@ stream /StemV 78 /XHeight 482 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2255 0 R +/FontFile 2259 0 R >> -% 2227 0 obj +% 2231 0 obj << /Type /Encoding /Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] >> -% 1856 0 obj +% 2219 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /MNPEHI+CMEX10 -/FontDescriptor 2232 0 R -/FirstChar 114 -/LastChar 114 -/Widths 2217 0 R -/ToUnicode 2257 0 R +/Type /Encoding +/Differences [33/exclam 40/parenleft/parenright 44/comma/hyphen/period/slash 65/A 67/C/D/E 72/H/I 75/K/L/M 80/P 84/T 86/V 97/a 99/c/d/e/f/g/h/i 107/k 109/m/n/o/p 114/r/s/t 119/w/x/y] >> -% 1787 0 obj + +endstream +endobj +2262 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /SFGIZH+CMITT10 -/FontDescriptor 2234 0 R -/FirstChar 33 -/LastChar 121 -/Widths 2218 0 R -/ToUnicode 2258 0 R +/Length 1007 >> +stream +%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-cmex10-builtin-0) +%%Title: (TeX-cmex10-builtin-0 TeX cmex10-builtin 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (cmex10-builtin) +/Supplement 0 +>> def +/CMapName /TeX-cmex10-builtin-0 def +/CMapType 2 def +1 begincodespacerange +<00> +endcodespacerange +1 beginbfrange + <03A5> +endbfrange +31 beginbfchar +<30> +<31> +<32> +<33> +<34> +<35> +<36> +<37> +<38> +<39> +<3A> +<3B> +<3C> +<3D> +<3E> +<3F> +<40> +<41> +<42> +<43> +<9F> <221A> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <2126> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF endstream endobj -2259 0 obj +2263 0 obj +<< +/Length 1153 +>> +stream +%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-cmitt10-lm-rep-cmitt-0) +%%Title: (TeX-cmitt10-lm-rep-cmitt-0 TeX cmitt10-lm-rep-cmitt 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (cmitt10-lm-rep-cmitt) +/Supplement 0 +>> def +/CMapName /TeX-cmitt10-lm-rep-cmitt-0 def +/CMapType 2 def +1 begincodespacerange +<00> +endcodespacerange +5 beginbfrange +<07> <08> <03A5> +<21> <23> <0021> +<25> <26> <0025> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +35 beginbfchar +<00> <0393> +<01> <2206> +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<09> <03A8> +<0A> <2126> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<24> <00A3> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + +endstream +endobj +2264 0 obj << /Length 1535 >> @@ -34000,16 +34204,16 @@ end endstream endobj -2261 0 obj +2265 0 obj << -/Length 1724 +/Length 1291 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmr10-builtin-0) -%%Title: (TeX-cmr10-builtin-0 TeX cmr10-builtin 0) +%%BeginResource: CMap (TeX-cmr10-lm-rep-cmrm-0) +%%Title: (TeX-cmr10-lm-rep-cmrm-0 TeX cmr10-lm-rep-cmrm 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -34017,24 +34221,23 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmr10-builtin) +/Ordering (cmr10-lm-rep-cmrm) /Supplement 0 >> def -/CMapName /TeX-cmr10-builtin-0 def +/CMapName /TeX-cmr10-lm-rep-cmrm-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -7 beginbfrange +6 beginbfrange <07> <08> <03A5> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <61> <7A> <0061> <7B> <7C> <2013> - <03A5> endbfrange -78 beginbfchar +44 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -34079,40 +34282,6 @@ endbfrange <7D> <02DD> <7E> <02DC> <7F> <00A8> - <0020> - <0393> - <2206> - <0398> - <039B> - <039E> - <03A0> - <03A3> - <03A8> - <00AD> - <00A0> - <2126> - <00660066> - <00660069> - <0066006C> - <006600660069> - <00660066006C> - <0131> - <0237> - <0060> - <00B4> - <02C7> - <02D8> - <00AF> - <02DA> - <00B8> - <00DF> - <00E6> - <0153> - <00F8> - <00C6> - <0152> - <00D8> - <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -34123,7 +34292,7 @@ end endstream endobj -2262 0 obj +2266 0 obj << /Length 2050 >> @@ -34269,16 +34438,16 @@ end endstream endobj -2263 0 obj +2267 0 obj << -/Length 1543 +/Length 1114 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt10-builtin-0) -%%Title: (TeX-cmtt10-builtin-0 TeX cmtt10-builtin 0) +%%BeginResource: CMap (TeX-cmtt10-lm-rep-cmtt-0) +%%Title: (TeX-cmtt10-lm-rep-cmtt-0 TeX cmtt10-lm-rep-cmtt 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -34286,22 +34455,21 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt10-builtin) +/Ordering (cmtt10-lm-rep-cmtt) /Supplement 0 >> def -/CMapName /TeX-cmtt10-builtin-0 def +/CMapName /TeX-cmtt10-lm-rep-cmtt-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -5 beginbfrange +4 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> - <03A5> endbfrange -70 beginbfchar +34 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -34336,42 +34504,6 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> -<80> <2423> - <0020> - <0393> - <2206> - <0398> - <039B> - <039E> - <03A0> - <03A3> - <03A8> - <00AD> - <00A0> - <2126> - <2191> - <2193> - <0027> - <00A1> - <00BF> - <0131> - <0237> - <0060> - <00B4> - <02C7> - <02D8> - <00AF> - <02DA> - <00B8> - <00DF> - <00E6> - <0153> - <00F8> - <00C6> - <0152> - <00D8> - <2423> - <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -34382,16 +34514,16 @@ end endstream endobj -2264 0 obj +2268 0 obj << -/Length 1538 +/Length 1109 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt8-builtin-0) -%%Title: (TeX-cmtt8-builtin-0 TeX cmtt8-builtin 0) +%%BeginResource: CMap (TeX-cmtt8-lm-rep-cmtt-0) +%%Title: (TeX-cmtt8-lm-rep-cmtt-0 TeX cmtt8-lm-rep-cmtt 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -34399,22 +34531,21 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt8-builtin) +/Ordering (cmtt8-lm-rep-cmtt) /Supplement 0 >> def -/CMapName /TeX-cmtt8-builtin-0 def +/CMapName /TeX-cmtt8-lm-rep-cmtt-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -5 beginbfrange +4 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> - <03A5> endbfrange -70 beginbfchar +34 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -34449,42 +34580,6 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> -<80> <2423> - <0020> - <0393> - <2206> - <0398> - <039B> - <039E> - <03A0> - <03A3> - <03A8> - <00AD> - <00A0> - <2126> - <2191> - <2193> - <0027> - <00A1> - <00BF> - <0131> - <0237> - <0060> - <00B4> - <02C7> - <02D8> - <00AF> - <02DA> - <00B8> - <00DF> - <00E6> - <0153> - <00F8> - <00C6> - <0152> - <00D8> - <2423> - <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -34495,16 +34590,16 @@ end endstream endobj -2265 0 obj +2269 0 obj << -/Length 1538 +/Length 1109 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt9-builtin-0) -%%Title: (TeX-cmtt9-builtin-0 TeX cmtt9-builtin 0) +%%BeginResource: CMap (TeX-cmtt9-lm-rep-cmtt-0) +%%Title: (TeX-cmtt9-lm-rep-cmtt-0 TeX cmtt9-lm-rep-cmtt 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -34512,22 +34607,21 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt9-builtin) +/Ordering (cmtt9-lm-rep-cmtt) /Supplement 0 >> def -/CMapName /TeX-cmtt9-builtin-0 def +/CMapName /TeX-cmtt9-lm-rep-cmtt-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -5 beginbfrange +4 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> - <03A5> endbfrange -70 beginbfchar +34 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -34562,42 +34656,6 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> -<80> <2423> - <0020> - <0393> - <2206> - <0398> - <039B> - <039E> - <03A0> - <03A3> - <03A8> - <00AD> - <00A0> - <2126> - <2191> - <2193> - <0027> - <00A1> - <00BF> - <0131> - <0237> - <0060> - <00B4> - <02C7> - <02D8> - <00AF> - <02DA> - <00B8> - <00DF> - <00E6> - <0153> - <00F8> - <00C6> - <0152> - <00D8> - <2423> - <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -34608,7 +34666,7 @@ end endstream endobj -2266 0 obj +2270 0 obj << /Length 853 >> @@ -34666,7 +34724,7 @@ end endstream endobj -2267 0 obj +2271 0 obj << /Length 1113 >> @@ -34744,7 +34802,7 @@ end endstream endobj -2268 0 obj +2272 0 obj << /Length 1477 >> @@ -34847,7 +34905,7 @@ end endstream endobj -2269 0 obj +2273 0 obj << /Length 1477 >> @@ -34950,7 +35008,7 @@ end endstream endobj -2270 0 obj +2274 0 obj << /Length 1482 >> @@ -35053,45 +35111,79 @@ end endstream endobj -2260 0 obj +2261 0 obj +<< +/Type /ObjStm +/N 100 +/First 953 +/Length 12429 +>> +stream +2227 0 2224 122 1857 528 1788 691 1466 881 920 1042 919 1232 918 1392 976 1582 1022 1771 +1260 1961 1133 2126 669 2296 671 2486 670 2676 672 2866 886 2979 977 3092 1034 3208 1069 3328 +1098 3448 1140 3568 1186 3688 1228 3808 1287 3928 1339 4048 1388 4168 1437 4288 1477 4408 1516 4528 +1563 4648 1607 4768 1644 4888 1680 5008 1719 5128 1760 5248 1789 5368 1823 5488 1861 5608 1896 5728 +1934 5848 1972 5968 2008 6088 2054 6208 2133 6328 2200 6448 2275 6550 2276 6668 2277 6789 2278 6910 +2279 7031 2280 7152 2281 7227 2282 7332 659 7401 655 7475 651 7563 647 7651 643 7739 639 7827 +635 7915 631 8003 627 8091 623 8179 619 8267 615 8355 611 8443 607 8531 602 8605 598 8717 +594 8791 590 8879 586 8967 582 9041 578 9166 574 9240 570 9314 566 9439 562 9513 558 9601 +554 9689 550 9777 546 9865 542 9939 538 10064 534 10138 530 10226 526 10314 522 10402 518 10490 +514 10564 510 10689 506 10763 502 10851 498 10939 494 11013 490 11138 486 11212 482 11300 478 11388 +% 2227 0 obj +<< +/Type /Encoding +/Differences [40/parenleft/parenright 43/plus 61/equal 91/bracketleft 93/bracketright] +>> +% 2224 0 obj +<< +/Type /Encoding +/Differences [13/quotesingle 37/percent/ampersand 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four 54/six 56/eight/nine/colon/semicolon/less/equal/greater 65/A/B/C/D/E/F 72/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/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 126/asciitilde] +>> +% 1857 0 obj << -/Type /ObjStm -/N 100 -/First 940 -/Length 11768 ->> -stream -1465 0 920 161 919 320 918 480 975 641 1021 801 1259 962 1132 1127 669 1297 671 1487 -670 1677 672 1867 886 1980 976 2093 1033 2208 1068 2328 1097 2448 1139 2568 1185 2688 1227 2808 -1286 2928 1338 3048 1387 3168 1436 3288 1476 3408 1515 3528 1562 3648 1605 3768 1643 3888 1679 4008 -1718 4128 1759 4248 1788 4368 1822 4488 1860 4608 1895 4728 1933 4848 1971 4968 2007 5088 2053 5208 -2132 5328 2199 5448 2271 5550 2272 5668 2273 5789 2274 5910 2275 6031 2276 6152 2277 6227 2278 6332 -659 6401 655 6475 651 6563 647 6651 643 6739 639 6827 635 6915 631 7003 627 7091 623 7179 -619 7267 615 7355 611 7443 607 7531 602 7605 598 7717 594 7791 590 7879 586 7967 582 8041 -578 8166 574 8240 570 8314 566 8439 562 8513 558 8601 554 8689 550 8777 546 8865 542 8939 -538 9064 534 9138 530 9226 526 9314 522 9402 518 9490 514 9564 510 9689 506 9763 502 9851 -498 9939 494 10013 490 10138 486 10212 482 10300 478 10388 474 10476 470 10564 466 10652 462 10740 -% 1465 0 obj +/Type /Font +/Subtype /Type1 +/BaseFont /MNPEHI+CMEX10 +/FontDescriptor 2236 0 R +/FirstChar 114 +/LastChar 114 +/Widths 2218 0 R +/ToUnicode 2262 0 R +>> +% 1788 0 obj +<< +/Type /Font +/Subtype /Type1 +/BaseFont /XVBOSG+LMMono10-Italic +/FontDescriptor 2254 0 R +/FirstChar 33 +/LastChar 121 +/Widths 2220 0 R +/Encoding 2219 0 R +/ToUnicode 2263 0 R +>> +% 1466 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TPELEW+CMMI10 -/FontDescriptor 2236 0 R +/FontDescriptor 2238 0 R /FirstChar 44 /LastChar 62 -/Widths 2219 0 R -/ToUnicode 2259 0 R +/Widths 2221 0 R +/ToUnicode 2264 0 R >> % 920 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /SOSTRQ+CMR10 -/FontDescriptor 2238 0 R +/BaseFont /NCCVYE+LMRoman10-Regular +/FontDescriptor 2246 0 R /FirstChar 40 /LastChar 93 -/Widths 2224 0 R -/ToUnicode 2261 0 R +/Widths 2228 0 R +/Encoding 2227 0 R +/ToUnicode 2265 0 R >> % 919 0 obj << @@ -35101,366 +35193,369 @@ stream /FontDescriptor 2240 0 R /FirstChar 0 /LastChar 112 -/Widths 2225 0 R -/ToUnicode 2262 0 R +/Widths 2229 0 R +/ToUnicode 2266 0 R >> % 918 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /QGKXNM+CMTT10 -/FontDescriptor 2242 0 R +/BaseFont /XKYJEW+LMMono10-Regular +/FontDescriptor 2248 0 R /FirstChar 13 /LastChar 126 -/Widths 2226 0 R -/ToUnicode 2263 0 R +/Widths 2230 0 R +/Encoding 2224 0 R +/ToUnicode 2267 0 R >> -% 975 0 obj +% 976 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /HZGQIC+CMTT8 -/FontDescriptor 2244 0 R +/BaseFont /EOXOPS+LMMono8-Regular +/FontDescriptor 2250 0 R /FirstChar 98 /LastChar 116 -/Widths 2223 0 R -/ToUnicode 2264 0 R +/Widths 2226 0 R +/Encoding 2224 0 R +/ToUnicode 2268 0 R >> -% 1021 0 obj +% 1022 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /RQJPKO+CMTT9 -/FontDescriptor 2246 0 R +/BaseFont /TWMFXI+LMMono9-Regular +/FontDescriptor 2252 0 R /FirstChar 13 /LastChar 122 -/Widths 2222 0 R -/ToUnicode 2265 0 R +/Widths 2225 0 R +/Encoding 2224 0 R +/ToUnicode 2269 0 R >> -% 1259 0 obj +% 1260 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IKXQUG+PazoMath -/FontDescriptor 2248 0 R +/FontDescriptor 2242 0 R /FirstChar 165 /LastChar 229 -/Widths 2220 0 R -/ToUnicode 2266 0 R +/Widths 2222 0 R +/ToUnicode 2270 0 R >> -% 1132 0 obj +% 1133 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUJUUF+PazoMath-Italic -/FontDescriptor 2250 0 R +/FontDescriptor 2244 0 R /FirstChar 97 /LastChar 98 -/Widths 2221 0 R -/ToUnicode 2267 0 R +/Widths 2223 0 R +/ToUnicode 2271 0 R >> % 669 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BDDEWM+URWPalladioL-Bold -/FontDescriptor 2252 0 R +/FontDescriptor 2256 0 R /FirstChar 2 /LastChar 151 -/Widths 2230 0 R -/Encoding 2227 0 R -/ToUnicode 2268 0 R +/Widths 2234 0 R +/Encoding 2231 0 R +/ToUnicode 2272 0 R >> % 671 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GLTUCO+URWPalladioL-Roma -/FontDescriptor 2254 0 R +/FontDescriptor 2258 0 R /FirstChar 2 /LastChar 167 -/Widths 2228 0 R -/Encoding 2227 0 R -/ToUnicode 2269 0 R +/Widths 2232 0 R +/Encoding 2231 0 R +/ToUnicode 2273 0 R >> % 670 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LHHPET+URWPalladioL-Ital -/FontDescriptor 2256 0 R +/FontDescriptor 2260 0 R /FirstChar 2 /LastChar 122 -/Widths 2229 0 R -/Encoding 2227 0 R -/ToUnicode 2270 0 R +/Widths 2233 0 R +/Encoding 2231 0 R +/ToUnicode 2274 0 R >> % 672 0 obj << /Type /Pages /Count 6 -/Parent 2271 0 R +/Parent 2275 0 R /Kids [662 0 R 675 0 R 721 0 R 778 0 R 825 0 R 866 0 R] >> % 886 0 obj << /Type /Pages /Count 6 -/Parent 2271 0 R +/Parent 2275 0 R /Kids [884 0 R 903 0 R 915 0 R 928 0 R 940 0 R 945 0 R] >> -% 976 0 obj +% 977 0 obj << /Type /Pages /Count 6 -/Parent 2271 0 R -/Kids [958 0 R 980 0 R 991 0 R 999 0 R 1010 0 R 1026 0 R] +/Parent 2275 0 R +/Kids [958 0 R 981 0 R 992 0 R 1000 0 R 1011 0 R 1027 0 R] >> -% 1033 0 obj +% 1034 0 obj << /Type /Pages /Count 6 -/Parent 2271 0 R -/Kids [1030 0 R 1035 0 R 1040 0 R 1047 0 R 1054 0 R 1059 0 R] +/Parent 2275 0 R +/Kids [1031 0 R 1036 0 R 1041 0 R 1048 0 R 1055 0 R 1060 0 R] >> -% 1068 0 obj +% 1069 0 obj << /Type /Pages /Count 6 -/Parent 2271 0 R -/Kids [1065 0 R 1070 0 R 1074 0 R 1078 0 R 1082 0 R 1088 0 R] +/Parent 2275 0 R +/Kids [1066 0 R 1071 0 R 1075 0 R 1079 0 R 1083 0 R 1089 0 R] >> -% 1097 0 obj +% 1098 0 obj << /Type /Pages /Count 6 -/Parent 2271 0 R -/Kids [1094 0 R 1101 0 R 1108 0 R 1114 0 R 1118 0 R 1129 0 R] +/Parent 2275 0 R +/Kids [1095 0 R 1102 0 R 1109 0 R 1115 0 R 1119 0 R 1130 0 R] >> -% 1139 0 obj +% 1140 0 obj << /Type /Pages /Count 6 -/Parent 2272 0 R -/Kids [1136 0 R 1146 0 R 1152 0 R 1164 0 R 1169 0 R 1176 0 R] +/Parent 2276 0 R +/Kids [1137 0 R 1147 0 R 1153 0 R 1165 0 R 1170 0 R 1177 0 R] >> -% 1185 0 obj +% 1186 0 obj << /Type /Pages /Count 6 -/Parent 2272 0 R -/Kids [1181 0 R 1190 0 R 1198 0 R 1203 0 R 1211 0 R 1216 0 R] +/Parent 2276 0 R +/Kids [1182 0 R 1191 0 R 1199 0 R 1204 0 R 1212 0 R 1217 0 R] >> -% 1227 0 obj +% 1228 0 obj << /Type /Pages /Count 6 -/Parent 2272 0 R -/Kids [1223 0 R 1229 0 R 1242 0 R 1249 0 R 1256 0 R 1267 0 R] +/Parent 2276 0 R +/Kids [1224 0 R 1230 0 R 1243 0 R 1250 0 R 1257 0 R 1268 0 R] >> -% 1286 0 obj +% 1287 0 obj << /Type /Pages /Count 6 -/Parent 2272 0 R -/Kids [1283 0 R 1290 0 R 1301 0 R 1307 0 R 1318 0 R 1323 0 R] +/Parent 2276 0 R +/Kids [1284 0 R 1291 0 R 1302 0 R 1308 0 R 1319 0 R 1324 0 R] >> -% 1338 0 obj +% 1339 0 obj << /Type /Pages /Count 6 -/Parent 2272 0 R -/Kids [1334 0 R 1340 0 R 1349 0 R 1355 0 R 1363 0 R 1370 0 R] +/Parent 2276 0 R +/Kids [1335 0 R 1341 0 R 1350 0 R 1356 0 R 1364 0 R 1371 0 R] >> -% 1387 0 obj +% 1388 0 obj << /Type /Pages /Count 6 -/Parent 2272 0 R -/Kids [1384 0 R 1392 0 R 1401 0 R 1409 0 R 1413 0 R 1428 0 R] +/Parent 2276 0 R +/Kids [1385 0 R 1393 0 R 1402 0 R 1410 0 R 1414 0 R 1429 0 R] >> -% 1436 0 obj +% 1437 0 obj << /Type /Pages /Count 6 -/Parent 2273 0 R -/Kids [1433 0 R 1440 0 R 1447 0 R 1451 0 R 1456 0 R 1462 0 R] +/Parent 2277 0 R +/Kids [1434 0 R 1441 0 R 1448 0 R 1452 0 R 1457 0 R 1463 0 R] >> -% 1476 0 obj +% 1477 0 obj << /Type /Pages /Count 6 -/Parent 2273 0 R -/Kids [1468 0 R 1479 0 R 1484 0 R 1493 0 R 1501 0 R 1506 0 R] +/Parent 2277 0 R +/Kids [1469 0 R 1480 0 R 1485 0 R 1494 0 R 1502 0 R 1507 0 R] >> -% 1515 0 obj +% 1516 0 obj << /Type /Pages /Count 6 -/Parent 2273 0 R -/Kids [1512 0 R 1517 0 R 1525 0 R 1530 0 R 1538 0 R 1544 0 R] +/Parent 2277 0 R +/Kids [1513 0 R 1518 0 R 1526 0 R 1531 0 R 1539 0 R 1545 0 R] >> -% 1562 0 obj +% 1563 0 obj << /Type /Pages /Count 6 -/Parent 2273 0 R -/Kids [1553 0 R 1567 0 R 1571 0 R 1584 0 R 1590 0 R 1597 0 R] +/Parent 2277 0 R +/Kids [1554 0 R 1568 0 R 1572 0 R 1585 0 R 1591 0 R 1598 0 R] >> -% 1605 0 obj +% 1607 0 obj << /Type /Pages /Count 6 -/Parent 2273 0 R -/Kids [1601 0 R 1610 0 R 1614 0 R 1623 0 R 1631 0 R 1635 0 R] +/Parent 2277 0 R +/Kids [1602 0 R 1611 0 R 1615 0 R 1624 0 R 1632 0 R 1636 0 R] >> -% 1643 0 obj +% 1644 0 obj << /Type /Pages /Count 6 -/Parent 2273 0 R -/Kids [1640 0 R 1645 0 R 1652 0 R 1657 0 R 1663 0 R 1669 0 R] +/Parent 2277 0 R +/Kids [1641 0 R 1646 0 R 1653 0 R 1658 0 R 1664 0 R 1670 0 R] >> -% 1679 0 obj +% 1680 0 obj << /Type /Pages /Count 6 -/Parent 2274 0 R -/Kids [1675 0 R 1682 0 R 1689 0 R 1696 0 R 1700 0 R 1710 0 R] +/Parent 2278 0 R +/Kids [1676 0 R 1683 0 R 1690 0 R 1697 0 R 1701 0 R 1711 0 R] >> -% 1718 0 obj +% 1719 0 obj << /Type /Pages /Count 6 -/Parent 2274 0 R -/Kids [1715 0 R 1720 0 R 1733 0 R 1737 0 R 1743 0 R 1749 0 R] +/Parent 2278 0 R +/Kids [1716 0 R 1721 0 R 1734 0 R 1738 0 R 1744 0 R 1750 0 R] >> -% 1759 0 obj +% 1760 0 obj << /Type /Pages /Count 6 -/Parent 2274 0 R -/Kids [1756 0 R 1761 0 R 1765 0 R 1769 0 R 1773 0 R 1777 0 R] +/Parent 2278 0 R +/Kids [1757 0 R 1762 0 R 1766 0 R 1770 0 R 1774 0 R 1778 0 R] >> -% 1788 0 obj +% 1789 0 obj << /Type /Pages /Count 6 -/Parent 2274 0 R -/Kids [1781 0 R 1790 0 R 1794 0 R 1801 0 R 1805 0 R 1812 0 R] +/Parent 2278 0 R +/Kids [1782 0 R 1791 0 R 1795 0 R 1802 0 R 1806 0 R 1813 0 R] >> -% 1822 0 obj +% 1823 0 obj << /Type /Pages /Count 6 -/Parent 2274 0 R -/Kids [1816 0 R 1825 0 R 1829 0 R 1836 0 R 1840 0 R 1847 0 R] +/Parent 2278 0 R +/Kids [1817 0 R 1826 0 R 1830 0 R 1837 0 R 1841 0 R 1848 0 R] >> -% 1860 0 obj +% 1861 0 obj << /Type /Pages /Count 6 -/Parent 2274 0 R -/Kids [1851 0 R 1862 0 R 1867 0 R 1874 0 R 1880 0 R 1884 0 R] +/Parent 2278 0 R +/Kids [1852 0 R 1863 0 R 1868 0 R 1875 0 R 1881 0 R 1885 0 R] >> -% 1895 0 obj +% 1896 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [1890 0 R 1897 0 R 1903 0 R 1909 0 R 1914 0 R 1921 0 R] +/Parent 2279 0 R +/Kids [1891 0 R 1898 0 R 1904 0 R 1910 0 R 1915 0 R 1922 0 R] >> -% 1933 0 obj +% 1934 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [1928 0 R 1937 0 R 1944 0 R 1951 0 R 1957 0 R 1961 0 R] +/Parent 2279 0 R +/Kids [1929 0 R 1938 0 R 1945 0 R 1952 0 R 1958 0 R 1962 0 R] >> -% 1971 0 obj +% 1972 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [1967 0 R 1977 0 R 1981 0 R 1989 0 R 1994 0 R 1998 0 R] +/Parent 2279 0 R +/Kids [1968 0 R 1978 0 R 1982 0 R 1990 0 R 1995 0 R 1999 0 R] >> -% 2007 0 obj +% 2008 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [2004 0 R 2009 0 R 2016 0 R 2027 0 R 2032 0 R 2040 0 R] +/Parent 2279 0 R +/Kids [2005 0 R 2010 0 R 2017 0 R 2028 0 R 2033 0 R 2041 0 R] >> -% 2053 0 obj +% 2054 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [2050 0 R 2055 0 R 2065 0 R 2079 0 R 2088 0 R 2099 0 R] +/Parent 2279 0 R +/Kids [2051 0 R 2056 0 R 2066 0 R 2080 0 R 2089 0 R 2100 0 R] >> -% 2132 0 obj +% 2133 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [2127 0 R 2148 0 R 2166 0 R 2183 0 R 2187 0 R 2191 0 R] +/Parent 2279 0 R +/Kids [2128 0 R 2149 0 R 2167 0 R 2184 0 R 2188 0 R 2192 0 R] >> -% 2199 0 obj +% 2200 0 obj << /Type /Pages /Count 4 -/Parent 2276 0 R -/Kids [2196 0 R 2201 0 R 2205 0 R 2213 0 R] +/Parent 2280 0 R +/Kids [2197 0 R 2202 0 R 2206 0 R 2214 0 R] >> -% 2271 0 obj +% 2275 0 obj << /Type /Pages /Count 36 -/Parent 2277 0 R -/Kids [672 0 R 886 0 R 976 0 R 1033 0 R 1068 0 R 1097 0 R] +/Parent 2281 0 R +/Kids [672 0 R 886 0 R 977 0 R 1034 0 R 1069 0 R 1098 0 R] >> -% 2272 0 obj +% 2276 0 obj << /Type /Pages /Count 36 -/Parent 2277 0 R -/Kids [1139 0 R 1185 0 R 1227 0 R 1286 0 R 1338 0 R 1387 0 R] +/Parent 2281 0 R +/Kids [1140 0 R 1186 0 R 1228 0 R 1287 0 R 1339 0 R 1388 0 R] >> -% 2273 0 obj +% 2277 0 obj << /Type /Pages /Count 36 -/Parent 2277 0 R -/Kids [1436 0 R 1476 0 R 1515 0 R 1562 0 R 1605 0 R 1643 0 R] +/Parent 2281 0 R +/Kids [1437 0 R 1477 0 R 1516 0 R 1563 0 R 1607 0 R 1644 0 R] >> -% 2274 0 obj +% 2278 0 obj << /Type /Pages /Count 36 -/Parent 2277 0 R -/Kids [1679 0 R 1718 0 R 1759 0 R 1788 0 R 1822 0 R 1860 0 R] +/Parent 2281 0 R +/Kids [1680 0 R 1719 0 R 1760 0 R 1789 0 R 1823 0 R 1861 0 R] >> -% 2275 0 obj +% 2279 0 obj << /Type /Pages /Count 36 -/Parent 2277 0 R -/Kids [1895 0 R 1933 0 R 1971 0 R 2007 0 R 2053 0 R 2132 0 R] +/Parent 2281 0 R +/Kids [1896 0 R 1934 0 R 1972 0 R 2008 0 R 2054 0 R 2133 0 R] >> -% 2276 0 obj +% 2280 0 obj << /Type /Pages /Count 4 -/Parent 2277 0 R -/Kids [2199 0 R] +/Parent 2281 0 R +/Kids [2200 0 R] >> -% 2277 0 obj +% 2281 0 obj << /Type /Pages /Count 184 -/Kids [2271 0 R 2272 0 R 2273 0 R 2274 0 R 2275 0 R 2276 0 R] +/Kids [2275 0 R 2276 0 R 2277 0 R 2278 0 R 2279 0 R 2280 0 R] >> -% 2278 0 obj +% 2282 0 obj << /Type /Outlines /First 4 0 R @@ -35839,6 +35934,27 @@ stream /Prev 474 0 R /Next 482 0 R >> + +endstream +endobj +2283 0 obj +<< +/Type /ObjStm +/N 100 +/First 879 +/Length 9683 +>> +stream +474 0 470 88 466 176 462 264 458 352 454 440 450 528 446 616 442 704 438 792 +434 880 430 968 426 1056 422 1130 418 1256 414 1330 410 1418 406 1506 401 1594 397 1682 +393 1770 389 1858 385 1946 381 2034 377 2122 373 2210 369 2298 365 2386 361 2474 357 2562 +353 2650 349 2738 345 2826 341 2914 337 3002 333 3090 329 3178 325 3266 321 3354 317 3442 +313 3530 309 3604 305 3730 301 3804 297 3892 293 3980 289 4054 285 4179 281 4253 277 4341 +273 4429 269 4517 265 4605 261 4693 257 4781 253 4869 249 4957 245 5045 241 5133 237 5221 +233 5309 229 5397 225 5485 221 5559 217 5684 213 5757 209 5844 205 5918 200 6006 196 6094 +192 6182 188 6270 184 6344 180 6470 176 6544 172 6632 168 6720 164 6808 160 6896 156 6984 +152 7072 148 7160 144 7248 140 7336 136 7424 132 7512 128 7600 124 7688 120 7776 116 7864 +112 7952 108 8040 104 8114 100 8240 96 8311 92 8394 88 8476 84 8558 80 8640 76 8722 % 474 0 obj << /Title 475 0 R @@ -35871,27 +35987,6 @@ stream /Prev 458 0 R /Next 466 0 R >> - -endstream -endobj -2279 0 obj -<< -/Type /ObjStm -/N 100 -/First 875 -/Length 9655 ->> -stream -458 0 454 88 450 176 446 264 442 352 438 440 434 528 430 616 426 704 422 778 -418 904 414 978 410 1066 406 1154 401 1242 397 1330 393 1418 389 1506 385 1594 381 1682 -377 1770 373 1858 369 1946 365 2034 361 2122 357 2210 353 2298 349 2386 345 2474 341 2562 -337 2650 333 2738 329 2826 325 2914 321 3002 317 3090 313 3178 309 3252 305 3378 301 3452 -297 3540 293 3628 289 3702 285 3827 281 3901 277 3989 273 4077 269 4165 265 4253 261 4341 -257 4429 253 4517 249 4605 245 4693 241 4781 237 4869 233 4957 229 5045 225 5133 221 5207 -217 5332 213 5405 209 5492 205 5566 200 5654 196 5742 192 5830 188 5918 184 5992 180 6118 -176 6192 172 6280 168 6368 164 6456 160 6544 156 6632 152 6720 148 6808 144 6896 140 6984 -136 7072 132 7160 128 7248 124 7336 120 7424 116 7512 112 7600 108 7688 104 7762 100 7888 -96 7959 92 8042 88 8124 84 8206 80 8288 76 8370 72 8452 68 8534 64 8616 60 8698 % 458 0 obj << /Title 459 0 R @@ -36665,6 +36760,27 @@ stream /Prev 72 0 R /Next 80 0 R >> + +endstream +endobj +2284 0 obj +<< +/Type /ObjStm +/N 100 +/First 982 +/Length 17769 +>> +stream +72 0 68 82 64 164 60 246 56 328 52 410 48 492 44 574 40 643 36 752 +32 872 28 941 24 997 20 1116 16 1198 12 1267 8 1384 4 1449 2285 1542 2286 1738 +2287 1911 2288 2091 2289 2268 2290 2445 2291 2625 2292 2803 2293 2983 2294 3161 2295 3341 2296 3505 +2297 3671 2298 3838 2299 4010 2300 4180 2301 4352 2302 4522 2303 4694 2304 4864 2305 5036 2306 5205 +2307 5374 2308 5546 2309 5716 2310 5888 2311 6072 2312 6267 2313 6485 2314 6704 2315 6905 2316 7099 +2317 7279 2318 7467 2319 7693 2320 7913 2321 8138 2322 8374 2323 8610 2324 8840 2325 9040 2326 9220 +2327 9399 2328 9579 2329 9758 2330 9938 2331 10117 2332 10297 2333 10475 2334 10653 2335 10833 2336 11012 +2337 11192 2338 11371 2339 11551 2340 11723 2341 11895 2342 12065 2343 12237 2344 12407 2345 12579 2346 12748 +2347 12917 2348 13089 2349 13259 2350 13431 2351 13601 2352 13773 2353 13943 2354 14115 2355 14285 2356 14481 +2357 14678 2358 14874 2359 15061 2360 15243 2361 15437 2362 15667 2363 15894 2364 16112 2365 16338 2366 16565 % 72 0 obj << /Title 73 0 R @@ -36697,27 +36813,6 @@ stream /Prev 56 0 R /Next 64 0 R >> - -endstream -endobj -2280 0 obj -<< -/Type /ObjStm -/N 100 -/First 993 -/Length 18381 ->> -stream -56 0 52 82 48 164 44 246 40 315 36 424 32 544 28 613 24 669 20 788 -16 870 12 939 8 1056 4 1121 2281 1214 2282 1410 2283 1583 2284 1763 2285 1940 2286 2117 -2287 2297 2288 2475 2289 2655 2290 2833 2291 3010 2292 3175 2293 3341 2294 3510 2295 3682 2296 3852 -2297 4024 2298 4194 2299 4366 2300 4535 2301 4704 2302 4876 2303 5046 2304 5218 2305 5388 2306 5560 -2307 5749 2308 5939 2309 6162 2310 6383 2311 6588 2312 6778 2313 6960 2314 7156 2315 7382 2316 7602 -2317 7830 2318 8066 2319 8302 2320 8530 2321 8724 2322 8904 2323 9083 2324 9263 2325 9442 2326 9622 -2327 9800 2328 9978 2329 10158 2330 10337 2331 10517 2332 10696 2333 10876 2334 11055 2335 11235 2336 11405 -2337 11577 2338 11747 2339 11919 2340 12088 2341 12257 2342 12429 2343 12599 2344 12771 2345 12941 2346 13113 -2347 13283 2348 13455 2349 13625 2350 13797 2351 13970 2352 14168 2353 14367 2354 14560 2355 14747 2356 14927 -2357 15127 2358 15357 2359 15582 2360 15801 2361 16028 2362 16254 2363 16476 2364 16701 2365 16931 2366 17160 % 56 0 obj << /Title 57 0 R @@ -36831,449 +36926,429 @@ stream << /Title 5 0 R /A 1 0 R -/Parent 2278 0 R +/Parent 2282 0 R /First 8 0 R /Last 602 0 R /Count -13 >> -% 2281 0 obj +% 2285 0 obj << -/Names [(Doc-Start) 668 0 R (Hfootnote.1) 921 0 R (Hfootnote.2) 922 0 R (Hfootnote.3) 974 0 R (Hfootnote.4) 1970 0 R (Hfootnote.5) 2022 0 R] +/Names [(Doc-Start) 668 0 R (Hfootnote.1) 921 0 R (Hfootnote.2) 922 0 R (Hfootnote.3) 975 0 R (Hfootnote.4) 1971 0 R (Hfootnote.5) 2023 0 R] /Limits [(Doc-Start) (Hfootnote.5)] >> -% 2282 0 obj +% 2286 0 obj << -/Names [(Item.1) 948 0 R (Item.10) 962 0 R (Item.100) 1703 0 R (Item.101) 1704 0 R (Item.102) 1705 0 R (Item.103) 1723 0 R] +/Names [(Item.1) 948 0 R (Item.10) 962 0 R (Item.100) 1694 0 R (Item.101) 1704 0 R (Item.102) 1705 0 R (Item.103) 1706 0 R] /Limits [(Item.1) (Item.103)] >> -% 2283 0 obj +% 2287 0 obj << /Names [(Item.104) 1724 0 R (Item.105) 1725 0 R (Item.106) 1726 0 R (Item.107) 1727 0 R (Item.108) 1728 0 R (Item.109) 1729 0 R] /Limits [(Item.104) (Item.109)] >> -% 2284 0 obj -<< -/Names [(Item.11) 963 0 R (Item.110) 1730 0 R (Item.111) 1731 0 R (Item.112) 1740 0 R (Item.113) 1741 0 R (Item.114) 1746 0 R] -/Limits [(Item.11) (Item.114)] ->> -% 2285 0 obj -<< -/Names [(Item.115) 1747 0 R (Item.116) 1752 0 R (Item.117) 1753 0 R (Item.118) 1754 0 R (Item.119) 1784 0 R (Item.12) 964 0 R] -/Limits [(Item.115) (Item.12)] ->> -% 2286 0 obj -<< -/Names [(Item.120) 1785 0 R (Item.121) 1786 0 R (Item.122) 1797 0 R (Item.123) 1798 0 R (Item.124) 1799 0 R (Item.125) 1808 0 R] -/Limits [(Item.120) (Item.125)] ->> -% 2287 0 obj -<< -/Names [(Item.126) 1809 0 R (Item.127) 1810 0 R (Item.128) 1819 0 R (Item.129) 1820 0 R (Item.13) 965 0 R (Item.130) 1821 0 R] -/Limits [(Item.126) (Item.130)] ->> % 2288 0 obj << -/Names [(Item.131) 1832 0 R (Item.132) 1833 0 R (Item.133) 1834 0 R (Item.134) 1843 0 R (Item.135) 1844 0 R (Item.136) 1845 0 R] -/Limits [(Item.131) (Item.136)] +/Names [(Item.11) 963 0 R (Item.110) 1730 0 R (Item.111) 1731 0 R (Item.112) 1732 0 R (Item.113) 1741 0 R (Item.114) 1742 0 R] +/Limits [(Item.11) (Item.114)] >> % 2289 0 obj << -/Names [(Item.137) 1854 0 R (Item.138) 1855 0 R (Item.139) 1857 0 R (Item.14) 966 0 R (Item.140) 1858 0 R (Item.141) 1859 0 R] -/Limits [(Item.137) (Item.141)] +/Names [(Item.115) 1747 0 R (Item.116) 1748 0 R (Item.117) 1753 0 R (Item.118) 1754 0 R (Item.119) 1755 0 R (Item.12) 964 0 R] +/Limits [(Item.115) (Item.12)] >> % 2290 0 obj << -/Names [(Item.142) 1865 0 R (Item.143) 1870 0 R (Item.144) 2092 0 R (Item.145) 2093 0 R (Item.146) 2194 0 R (Item.15) 967 0 R] -/Limits [(Item.142) (Item.15)] +/Names [(Item.120) 1785 0 R (Item.121) 1786 0 R (Item.122) 1787 0 R (Item.123) 1798 0 R (Item.124) 1799 0 R (Item.125) 1800 0 R] +/Limits [(Item.120) (Item.125)] >> % 2291 0 obj << -/Names [(Item.16) 968 0 R (Item.17) 969 0 R (Item.18) 970 0 R (Item.19) 971 0 R (Item.2) 949 0 R (Item.20) 972 0 R] -/Limits [(Item.16) (Item.20)] +/Names [(Item.126) 1809 0 R (Item.127) 1810 0 R (Item.128) 1811 0 R (Item.129) 1820 0 R (Item.13) 965 0 R (Item.130) 1821 0 R] +/Limits [(Item.126) (Item.130)] >> % 2292 0 obj << -/Names [(Item.21) 973 0 R (Item.22) 983 0 R (Item.23) 984 0 R (Item.24) 985 0 R (Item.25) 986 0 R (Item.26) 987 0 R] -/Limits [(Item.21) (Item.26)] +/Names [(Item.131) 1822 0 R (Item.132) 1833 0 R (Item.133) 1834 0 R (Item.134) 1835 0 R (Item.135) 1844 0 R (Item.136) 1845 0 R] +/Limits [(Item.131) (Item.136)] >> % 2293 0 obj << -/Names [(Item.27) 988 0 R (Item.28) 1002 0 R (Item.29) 1003 0 R (Item.3) 950 0 R (Item.30) 1004 0 R (Item.31) 1005 0 R] -/Limits [(Item.27) (Item.31)] +/Names [(Item.137) 1846 0 R (Item.138) 1855 0 R (Item.139) 1856 0 R (Item.14) 966 0 R (Item.140) 1858 0 R (Item.141) 1859 0 R] +/Limits [(Item.137) (Item.141)] >> % 2294 0 obj << -/Names [(Item.32) 1006 0 R (Item.33) 1013 0 R (Item.34) 1014 0 R (Item.35) 1015 0 R (Item.36) 1016 0 R (Item.37) 1017 0 R] -/Limits [(Item.32) (Item.37)] +/Names [(Item.142) 1860 0 R (Item.143) 1866 0 R (Item.144) 1871 0 R (Item.145) 2093 0 R (Item.146) 2094 0 R (Item.147) 2195 0 R] +/Limits [(Item.142) (Item.147)] >> % 2295 0 obj << -/Names [(Item.38) 1018 0 R (Item.39) 1019 0 R (Item.4) 951 0 R (Item.40) 1020 0 R (Item.41) 1062 0 R (Item.42) 1155 0 R] -/Limits [(Item.38) (Item.42)] +/Names [(Item.15) 967 0 R (Item.16) 968 0 R (Item.17) 969 0 R (Item.18) 970 0 R (Item.19) 971 0 R (Item.2) 949 0 R] +/Limits [(Item.15) (Item.2)] >> % 2296 0 obj << -/Names [(Item.43) 1184 0 R (Item.44) 1206 0 R (Item.45) 1232 0 R (Item.46) 1404 0 R (Item.47) 1405 0 R (Item.48) 1406 0 R] -/Limits [(Item.43) (Item.48)] +/Names [(Item.20) 972 0 R (Item.21) 973 0 R (Item.22) 974 0 R (Item.23) 984 0 R (Item.24) 985 0 R (Item.25) 986 0 R] +/Limits [(Item.20) (Item.25)] >> % 2297 0 obj << -/Names [(Item.49) 1459 0 R (Item.5) 952 0 R (Item.50) 1466 0 R (Item.51) 1471 0 R (Item.52) 1472 0 R (Item.53) 1473 0 R] -/Limits [(Item.49) (Item.53)] +/Names [(Item.26) 987 0 R (Item.27) 988 0 R (Item.28) 989 0 R (Item.29) 1003 0 R (Item.3) 950 0 R (Item.30) 1004 0 R] +/Limits [(Item.26) (Item.30)] >> % 2298 0 obj << -/Names [(Item.54) 1474 0 R (Item.55) 1475 0 R (Item.56) 1487 0 R (Item.57) 1488 0 R (Item.58) 1489 0 R (Item.59) 1496 0 R] -/Limits [(Item.54) (Item.59)] +/Names [(Item.31) 1005 0 R (Item.32) 1006 0 R (Item.33) 1007 0 R (Item.34) 1014 0 R (Item.35) 1015 0 R (Item.36) 1016 0 R] +/Limits [(Item.31) (Item.36)] >> % 2299 0 obj << -/Names [(Item.6) 953 0 R (Item.60) 1520 0 R (Item.61) 1521 0 R (Item.62) 1528 0 R (Item.63) 1533 0 R (Item.64) 1534 0 R] -/Limits [(Item.6) (Item.64)] +/Names [(Item.37) 1017 0 R (Item.38) 1018 0 R (Item.39) 1019 0 R (Item.4) 951 0 R (Item.40) 1020 0 R (Item.41) 1021 0 R] +/Limits [(Item.37) (Item.41)] >> % 2300 0 obj << -/Names [(Item.65) 1535 0 R (Item.66) 1547 0 R (Item.67) 1548 0 R (Item.68) 1549 0 R (Item.69) 1550 0 R (Item.7) 954 0 R] -/Limits [(Item.65) (Item.7)] +/Names [(Item.42) 1063 0 R (Item.43) 1156 0 R (Item.44) 1185 0 R (Item.45) 1207 0 R (Item.46) 1233 0 R (Item.47) 1405 0 R] +/Limits [(Item.42) (Item.47)] >> % 2301 0 obj << -/Names [(Item.70) 1551 0 R (Item.71) 1556 0 R (Item.72) 1557 0 R (Item.73) 1558 0 R (Item.74) 1559 0 R (Item.75) 1560 0 R] -/Limits [(Item.70) (Item.75)] +/Names [(Item.48) 1406 0 R (Item.49) 1407 0 R (Item.5) 952 0 R (Item.50) 1460 0 R (Item.51) 1467 0 R (Item.52) 1472 0 R] +/Limits [(Item.48) (Item.52)] >> % 2302 0 obj << -/Names [(Item.76) 1561 0 R (Item.77) 1574 0 R (Item.78) 1575 0 R (Item.79) 1576 0 R (Item.8) 955 0 R (Item.80) 1577 0 R] -/Limits [(Item.76) (Item.80)] +/Names [(Item.53) 1473 0 R (Item.54) 1474 0 R (Item.55) 1475 0 R (Item.56) 1476 0 R (Item.57) 1488 0 R (Item.58) 1489 0 R] +/Limits [(Item.53) (Item.58)] >> % 2303 0 obj << -/Names [(Item.81) 1578 0 R (Item.82) 1579 0 R (Item.83) 1580 0 R (Item.84) 1593 0 R (Item.85) 1604 0 R (Item.86) 1617 0 R] -/Limits [(Item.81) (Item.86)] +/Names [(Item.59) 1490 0 R (Item.6) 953 0 R (Item.60) 1497 0 R (Item.61) 1521 0 R (Item.62) 1522 0 R (Item.63) 1529 0 R] +/Limits [(Item.59) (Item.63)] >> % 2304 0 obj << -/Names [(Item.87) 1618 0 R (Item.88) 1626 0 R (Item.89) 1627 0 R (Item.9) 961 0 R (Item.90) 1648 0 R (Item.91) 1649 0 R] -/Limits [(Item.87) (Item.91)] +/Names [(Item.64) 1534 0 R (Item.65) 1535 0 R (Item.66) 1536 0 R (Item.67) 1548 0 R (Item.68) 1549 0 R (Item.69) 1550 0 R] +/Limits [(Item.64) (Item.69)] >> % 2305 0 obj << -/Names [(Item.92) 1660 0 R (Item.93) 1666 0 R (Item.94) 1672 0 R (Item.95) 1678 0 R (Item.96) 1685 0 R (Item.97) 1686 0 R] -/Limits [(Item.92) (Item.97)] +/Names [(Item.7) 954 0 R (Item.70) 1551 0 R (Item.71) 1552 0 R (Item.72) 1557 0 R (Item.73) 1558 0 R (Item.74) 1559 0 R] +/Limits [(Item.7) (Item.74)] >> % 2306 0 obj << -/Names [(Item.98) 1692 0 R (Item.99) 1693 0 R (algocf.1) 2097 0 R (algocf.2) 2144 0 R (algocfline.1) 2083 0 R (algocfline.2) 2151 0 R] -/Limits [(Item.98) (algocfline.2)] +/Names [(Item.75) 1560 0 R (Item.76) 1561 0 R (Item.77) 1562 0 R (Item.78) 1575 0 R (Item.79) 1576 0 R (Item.8) 955 0 R] +/Limits [(Item.75) (Item.8)] >> % 2307 0 obj << -/Names [(cite.2007c) 935 0 R (cite.2007d) 936 0 R (cite.BLACS) 911 0 R (cite.BLAS1) 894 0 R (cite.BLAS2) 895 0 R (cite.BLAS3) 896 0 R] -/Limits [(cite.2007c) (cite.BLAS3)] +/Names [(Item.80) 1577 0 R (Item.81) 1578 0 R (Item.82) 1579 0 R (Item.83) 1580 0 R (Item.84) 1581 0 R (Item.85) 1594 0 R] +/Limits [(Item.80) (Item.85)] >> % 2308 0 obj << -/Names [(cite.CaFiRo:2014) 2069 0 R (cite.DesPat:11) 889 0 R (cite.DesignPatterns) 1051 0 R (cite.KIVA3PSBLAS) 2211 0 R (cite.METIS) 923 0 R (cite.MPI1) 2216 0 R] -/Limits [(cite.CaFiRo:2014) (cite.MPI1)] +/Names [(Item.86) 1605 0 R (Item.87) 1618 0 R (Item.88) 1619 0 R (Item.89) 1627 0 R (Item.9) 961 0 R (Item.90) 1628 0 R] +/Limits [(Item.86) (Item.90)] >> % 2309 0 obj << -/Names [(cite.MRC:11) 2084 0 R (cite.OurTechRep) 2070 0 R (cite.PARA04FOREST) 2209 0 R (cite.PSBLAS) 2210 0 R (cite.RouXiaXu:11) 890 0 R (cite.Sparse03) 888 0 R] -/Limits [(cite.MRC:11) (cite.Sparse03)] +/Names [(Item.91) 1649 0 R (Item.92) 1650 0 R (Item.93) 1661 0 R (Item.94) 1667 0 R (Item.95) 1673 0 R (Item.96) 1679 0 R] +/Limits [(Item.91) (Item.96)] >> % 2310 0 obj << -/Names [(cite.machiels) 891 0 R (cite.metcalf) 887 0 R (cite.sblas02) 893 0 R (cite.sblas97) 892 0 R (descdata) 994 0 R (equation.4.1) 1270 0 R] -/Limits [(cite.machiels) (equation.4.1)] +/Names [(Item.97) 1686 0 R (Item.98) 1687 0 R (Item.99) 1693 0 R (algocf.1) 2098 0 R (algocf.2) 2145 0 R (algocfline.1) 2084 0 R] +/Limits [(Item.97) (algocfline.1)] >> % 2311 0 obj << -/Names [(equation.4.2) 1271 0 R (equation.4.3) 1272 0 R (figure.1) 905 0 R (figure.2) 931 0 R (figure.3) 1373 0 R (figure.4) 1407 0 R] -/Limits [(equation.4.2) (figure.4)] +/Names [(algocfline.2) 2152 0 R (cite.2007c) 935 0 R (cite.2007d) 936 0 R (cite.BLACS) 911 0 R (cite.BLAS1) 894 0 R (cite.BLAS2) 895 0 R] +/Limits [(algocfline.2) (cite.BLAS2)] >> % 2312 0 obj << -/Names [(figure.5) 2091 0 R (figure.6) 2086 0 R (figure.7) 2130 0 R (figure.8) 2143 0 R (figure.9) 2169 0 R (listing.1) 1022 0 R] -/Limits [(figure.5) (listing.1)] +/Names [(cite.BLAS3) 896 0 R (cite.CaFiRo:2014) 2070 0 R (cite.DesPat:11) 889 0 R (cite.DesignPatterns) 1052 0 R (cite.KIVA3PSBLAS) 2212 0 R (cite.METIS) 923 0 R] +/Limits [(cite.BLAS3) (cite.METIS)] >> % 2313 0 obj << -/Names [(listing.2) 1052 0 R (listing.3) 1092 0 R (listing.4) 1112 0 R (listing.5) 1877 0 R (listing.6) 1878 0 R (lstlisting.-1) 1233 0 R] -/Limits [(listing.2) (lstlisting.-1)] +/Names [(cite.MPI1) 2217 0 R (cite.MRC:11) 2085 0 R (cite.OurTechRep) 2071 0 R (cite.PARA04FOREST) 2210 0 R (cite.PSBLAS) 2211 0 R (cite.RouXiaXu:11) 890 0 R] +/Limits [(cite.MPI1) (cite.RouXiaXu:11)] >> % 2314 0 obj << -/Names [(lstlisting.-10) 1947 0 R (lstlisting.-11) 1954 0 R (lstlisting.-12) 2019 0 R (lstlisting.-13) 2043 0 R (lstlisting.-14) 2102 0 R (lstlisting.-2) 1887 0 R] -/Limits [(lstlisting.-10) (lstlisting.-2)] +/Names [(cite.Sparse03) 888 0 R (cite.machiels) 891 0 R (cite.metcalf) 887 0 R (cite.sblas02) 893 0 R (cite.sblas97) 892 0 R (descdata) 995 0 R] +/Limits [(cite.Sparse03) (descdata)] >> % 2315 0 obj << -/Names [(lstlisting.-3) 1893 0 R (lstlisting.-4) 1900 0 R (lstlisting.-5) 1906 0 R (lstlisting.-6) 1917 0 R (lstlisting.-7) 1924 0 R (lstlisting.-8) 1931 0 R] -/Limits [(lstlisting.-3) (lstlisting.-8)] +/Names [(equation.4.1) 1271 0 R (equation.4.2) 1272 0 R (equation.4.3) 1273 0 R (figure.1) 905 0 R (figure.2) 931 0 R (figure.3) 1374 0 R] +/Limits [(equation.4.1) (figure.3)] >> % 2316 0 obj << -/Names [(lstlisting.-9) 1940 0 R (lstnumber.-1.1) 1234 0 R (lstnumber.-1.2) 1235 0 R (lstnumber.-1.3) 1236 0 R (lstnumber.-1.4) 1237 0 R (lstnumber.-10.1) 1948 0 R] -/Limits [(lstlisting.-9) (lstnumber.-10.1)] +/Names [(figure.4) 1408 0 R (figure.5) 2092 0 R (figure.6) 2087 0 R (figure.7) 2131 0 R (figure.8) 2144 0 R (figure.9) 2170 0 R] +/Limits [(figure.4) (figure.9)] >> % 2317 0 obj << -/Names [(lstnumber.-11.1) 1955 0 R (lstnumber.-12.1) 2020 0 R (lstnumber.-12.2) 2021 0 R (lstnumber.-13.1) 2044 0 R (lstnumber.-13.2) 2045 0 R (lstnumber.-14.1) 2103 0 R] -/Limits [(lstnumber.-11.1) (lstnumber.-14.1)] +/Names [(listing.1) 1023 0 R (listing.2) 1053 0 R (listing.3) 1093 0 R (listing.4) 1113 0 R (listing.5) 1878 0 R (listing.6) 1879 0 R] +/Limits [(listing.1) (listing.6)] >> % 2318 0 obj << -/Names [(lstnumber.-14.2) 2104 0 R (lstnumber.-14.3) 2105 0 R (lstnumber.-14.4) 2106 0 R (lstnumber.-14.5) 2107 0 R (lstnumber.-14.6) 2108 0 R (lstnumber.-14.7) 2109 0 R] -/Limits [(lstnumber.-14.2) (lstnumber.-14.7)] +/Names [(lstlisting.-1) 1234 0 R (lstlisting.-10) 1948 0 R (lstlisting.-11) 1955 0 R (lstlisting.-12) 2020 0 R (lstlisting.-13) 2044 0 R (lstlisting.-14) 2103 0 R] +/Limits [(lstlisting.-1) (lstlisting.-14)] >> % 2319 0 obj << -/Names [(lstnumber.-2.1) 1888 0 R (lstnumber.-3.1) 1894 0 R (lstnumber.-4.1) 1901 0 R (lstnumber.-5.1) 1907 0 R (lstnumber.-6.1) 1918 0 R (lstnumber.-7.1) 1925 0 R] -/Limits [(lstnumber.-2.1) (lstnumber.-7.1)] +/Names [(lstlisting.-2) 1888 0 R (lstlisting.-3) 1894 0 R (lstlisting.-4) 1901 0 R (lstlisting.-5) 1907 0 R (lstlisting.-6) 1918 0 R (lstlisting.-7) 1925 0 R] +/Limits [(lstlisting.-2) (lstlisting.-7)] >> % 2320 0 obj << -/Names [(lstnumber.-8.1) 1932 0 R (lstnumber.-9.1) 1941 0 R (page.1) 667 0 R (page.10) 1001 0 R (page.100) 1659 0 R (page.101) 1665 0 R] -/Limits [(lstnumber.-8.1) (page.101)] +/Names [(lstlisting.-8) 1932 0 R (lstlisting.-9) 1941 0 R (lstnumber.-1.1) 1235 0 R (lstnumber.-1.2) 1236 0 R (lstnumber.-1.3) 1237 0 R (lstnumber.-1.4) 1238 0 R] +/Limits [(lstlisting.-8) (lstnumber.-1.4)] >> % 2321 0 obj << -/Names [(page.102) 1671 0 R (page.103) 1677 0 R (page.104) 1684 0 R (page.105) 1691 0 R (page.106) 1698 0 R (page.107) 1702 0 R] -/Limits [(page.102) (page.107)] +/Names [(lstnumber.-10.1) 1949 0 R (lstnumber.-11.1) 1956 0 R (lstnumber.-12.1) 2021 0 R (lstnumber.-12.2) 2022 0 R (lstnumber.-13.1) 2045 0 R (lstnumber.-13.2) 2046 0 R] +/Limits [(lstnumber.-10.1) (lstnumber.-13.2)] >> % 2322 0 obj << -/Names [(page.108) 1712 0 R (page.109) 1717 0 R (page.11) 1012 0 R (page.110) 1722 0 R (page.111) 1735 0 R (page.112) 1739 0 R] -/Limits [(page.108) (page.112)] +/Names [(lstnumber.-14.1) 2104 0 R (lstnumber.-14.2) 2105 0 R (lstnumber.-14.3) 2106 0 R (lstnumber.-14.4) 2107 0 R (lstnumber.-14.5) 2108 0 R (lstnumber.-14.6) 2109 0 R] +/Limits [(lstnumber.-14.1) (lstnumber.-14.6)] >> % 2323 0 obj << -/Names [(page.113) 1745 0 R (page.114) 1751 0 R (page.115) 1758 0 R (page.116) 1763 0 R (page.117) 1767 0 R (page.118) 1771 0 R] -/Limits [(page.113) (page.118)] +/Names [(lstnumber.-14.7) 2110 0 R (lstnumber.-2.1) 1889 0 R (lstnumber.-3.1) 1895 0 R (lstnumber.-4.1) 1902 0 R (lstnumber.-5.1) 1908 0 R (lstnumber.-6.1) 1919 0 R] +/Limits [(lstnumber.-14.7) (lstnumber.-6.1)] >> % 2324 0 obj << -/Names [(page.119) 1775 0 R (page.12) 1028 0 R (page.120) 1779 0 R (page.121) 1783 0 R (page.122) 1792 0 R (page.123) 1796 0 R] -/Limits [(page.119) (page.123)] +/Names [(lstnumber.-7.1) 1926 0 R (lstnumber.-8.1) 1933 0 R (lstnumber.-9.1) 1942 0 R (page.1) 667 0 R (page.10) 1002 0 R (page.100) 1660 0 R] +/Limits [(lstnumber.-7.1) (page.100)] >> % 2325 0 obj << -/Names [(page.124) 1803 0 R (page.125) 1807 0 R (page.126) 1814 0 R (page.127) 1818 0 R (page.128) 1827 0 R (page.129) 1831 0 R] -/Limits [(page.124) (page.129)] +/Names [(page.101) 1666 0 R (page.102) 1672 0 R (page.103) 1678 0 R (page.104) 1685 0 R (page.105) 1692 0 R (page.106) 1699 0 R] +/Limits [(page.101) (page.106)] >> % 2326 0 obj << -/Names [(page.13) 1032 0 R (page.130) 1838 0 R (page.131) 1842 0 R (page.132) 1849 0 R (page.133) 1853 0 R (page.134) 1864 0 R] -/Limits [(page.13) (page.134)] +/Names [(page.107) 1703 0 R (page.108) 1713 0 R (page.109) 1718 0 R (page.11) 1013 0 R (page.110) 1723 0 R (page.111) 1736 0 R] +/Limits [(page.107) (page.111)] >> % 2327 0 obj << -/Names [(page.135) 1869 0 R (page.136) 1876 0 R (page.137) 1882 0 R (page.138) 1886 0 R (page.139) 1892 0 R (page.14) 1037 0 R] -/Limits [(page.135) (page.14)] +/Names [(page.112) 1740 0 R (page.113) 1746 0 R (page.114) 1752 0 R (page.115) 1759 0 R (page.116) 1764 0 R (page.117) 1768 0 R] +/Limits [(page.112) (page.117)] >> % 2328 0 obj << -/Names [(page.140) 1899 0 R (page.141) 1905 0 R (page.142) 1911 0 R (page.143) 1916 0 R (page.144) 1923 0 R (page.145) 1930 0 R] -/Limits [(page.140) (page.145)] +/Names [(page.118) 1772 0 R (page.119) 1776 0 R (page.12) 1029 0 R (page.120) 1780 0 R (page.121) 1784 0 R (page.122) 1793 0 R] +/Limits [(page.118) (page.122)] >> % 2329 0 obj << -/Names [(page.146) 1939 0 R (page.147) 1946 0 R (page.148) 1953 0 R (page.149) 1959 0 R (page.15) 1042 0 R (page.150) 1963 0 R] -/Limits [(page.146) (page.150)] +/Names [(page.123) 1797 0 R (page.124) 1804 0 R (page.125) 1808 0 R (page.126) 1815 0 R (page.127) 1819 0 R (page.128) 1828 0 R] +/Limits [(page.123) (page.128)] >> % 2330 0 obj << -/Names [(page.151) 1969 0 R (page.152) 1979 0 R (page.153) 1983 0 R (page.154) 1991 0 R (page.155) 1996 0 R (page.156) 2000 0 R] -/Limits [(page.151) (page.156)] +/Names [(page.129) 1832 0 R (page.13) 1033 0 R (page.130) 1839 0 R (page.131) 1843 0 R (page.132) 1850 0 R (page.133) 1854 0 R] +/Limits [(page.129) (page.133)] >> % 2331 0 obj << -/Names [(page.157) 2006 0 R (page.158) 2011 0 R (page.159) 2018 0 R (page.16) 1049 0 R (page.160) 2029 0 R (page.161) 2034 0 R] -/Limits [(page.157) (page.161)] +/Names [(page.134) 1865 0 R (page.135) 1870 0 R (page.136) 1877 0 R (page.137) 1883 0 R (page.138) 1887 0 R (page.139) 1893 0 R] +/Limits [(page.134) (page.139)] >> % 2332 0 obj << -/Names [(page.162) 2042 0 R (page.163) 2052 0 R (page.164) 2057 0 R (page.165) 2067 0 R (page.166) 2081 0 R (page.167) 2090 0 R] -/Limits [(page.162) (page.167)] +/Names [(page.14) 1038 0 R (page.140) 1900 0 R (page.141) 1906 0 R (page.142) 1912 0 R (page.143) 1917 0 R (page.144) 1924 0 R] +/Limits [(page.14) (page.144)] >> % 2333 0 obj << -/Names [(page.168) 2101 0 R (page.169) 2129 0 R (page.17) 1056 0 R (page.170) 2150 0 R (page.171) 2168 0 R (page.172) 2185 0 R] -/Limits [(page.168) (page.172)] +/Names [(page.145) 1931 0 R (page.146) 1940 0 R (page.147) 1947 0 R (page.148) 1954 0 R (page.149) 1960 0 R (page.15) 1043 0 R] +/Limits [(page.145) (page.15)] >> % 2334 0 obj << -/Names [(page.173) 2189 0 R (page.174) 2193 0 R (page.175) 2198 0 R (page.176) 2203 0 R (page.177) 2207 0 R (page.178) 2215 0 R] -/Limits [(page.173) (page.178)] +/Names [(page.150) 1964 0 R (page.151) 1970 0 R (page.152) 1980 0 R (page.153) 1984 0 R (page.154) 1992 0 R (page.155) 1997 0 R] +/Limits [(page.150) (page.155)] >> % 2335 0 obj << -/Names [(page.18) 1061 0 R (page.19) 1067 0 R (page.2) 677 0 R (page.20) 1072 0 R (page.21) 1076 0 R (page.22) 1080 0 R] -/Limits [(page.18) (page.22)] +/Names [(page.156) 2001 0 R (page.157) 2007 0 R (page.158) 2012 0 R (page.159) 2019 0 R (page.16) 1050 0 R (page.160) 2030 0 R] +/Limits [(page.156) (page.160)] >> % 2336 0 obj << -/Names [(page.23) 1084 0 R (page.24) 1090 0 R (page.25) 1096 0 R (page.26) 1103 0 R (page.27) 1110 0 R (page.28) 1116 0 R] -/Limits [(page.23) (page.28)] +/Names [(page.161) 2035 0 R (page.162) 2043 0 R (page.163) 2053 0 R (page.164) 2058 0 R (page.165) 2068 0 R (page.166) 2082 0 R] +/Limits [(page.161) (page.166)] >> % 2337 0 obj << -/Names [(page.29) 1120 0 R (page.3) 917 0 R (page.30) 1131 0 R (page.31) 1138 0 R (page.32) 1148 0 R (page.33) 1154 0 R] -/Limits [(page.29) (page.33)] +/Names [(page.167) 2091 0 R (page.168) 2102 0 R (page.169) 2130 0 R (page.17) 1057 0 R (page.170) 2151 0 R (page.171) 2169 0 R] +/Limits [(page.167) (page.171)] >> % 2338 0 obj << -/Names [(page.34) 1166 0 R (page.35) 1171 0 R (page.36) 1178 0 R (page.37) 1183 0 R (page.38) 1192 0 R (page.39) 1200 0 R] -/Limits [(page.34) (page.39)] +/Names [(page.172) 2186 0 R (page.173) 2190 0 R (page.174) 2194 0 R (page.175) 2199 0 R (page.176) 2204 0 R (page.177) 2208 0 R] +/Limits [(page.172) (page.177)] >> % 2339 0 obj << -/Names [(page.4) 930 0 R (page.40) 1205 0 R (page.41) 1213 0 R (page.42) 1218 0 R (page.43) 1225 0 R (page.44) 1231 0 R] -/Limits [(page.4) (page.44)] +/Names [(page.178) 2216 0 R (page.18) 1062 0 R (page.19) 1068 0 R (page.2) 677 0 R (page.20) 1073 0 R (page.21) 1077 0 R] +/Limits [(page.178) (page.21)] >> % 2340 0 obj << -/Names [(page.45) 1244 0 R (page.46) 1251 0 R (page.47) 1258 0 R (page.48) 1269 0 R (page.49) 1285 0 R (page.5) 942 0 R] -/Limits [(page.45) (page.5)] +/Names [(page.22) 1081 0 R (page.23) 1085 0 R (page.24) 1091 0 R (page.25) 1097 0 R (page.26) 1104 0 R (page.27) 1111 0 R] +/Limits [(page.22) (page.27)] >> % 2341 0 obj << -/Names [(page.50) 1292 0 R (page.51) 1303 0 R (page.52) 1309 0 R (page.53) 1320 0 R (page.54) 1325 0 R (page.55) 1336 0 R] -/Limits [(page.50) (page.55)] +/Names [(page.28) 1117 0 R (page.29) 1121 0 R (page.3) 917 0 R (page.30) 1132 0 R (page.31) 1139 0 R (page.32) 1149 0 R] +/Limits [(page.28) (page.32)] >> % 2342 0 obj << -/Names [(page.56) 1342 0 R (page.57) 1351 0 R (page.58) 1357 0 R (page.59) 1365 0 R (page.6) 947 0 R (page.60) 1372 0 R] -/Limits [(page.56) (page.60)] +/Names [(page.33) 1155 0 R (page.34) 1167 0 R (page.35) 1172 0 R (page.36) 1179 0 R (page.37) 1184 0 R (page.38) 1193 0 R] +/Limits [(page.33) (page.38)] >> % 2343 0 obj << -/Names [(page.61) 1386 0 R (page.62) 1394 0 R (page.63) 1403 0 R (page.64) 1411 0 R (page.65) 1415 0 R (page.66) 1430 0 R] -/Limits [(page.61) (page.66)] +/Names [(page.39) 1201 0 R (page.4) 930 0 R (page.40) 1206 0 R (page.41) 1214 0 R (page.42) 1219 0 R (page.43) 1226 0 R] +/Limits [(page.39) (page.43)] >> % 2344 0 obj << -/Names [(page.67) 1435 0 R (page.68) 1442 0 R (page.69) 1449 0 R (page.7) 960 0 R (page.70) 1453 0 R (page.71) 1458 0 R] -/Limits [(page.67) (page.71)] +/Names [(page.44) 1232 0 R (page.45) 1245 0 R (page.46) 1252 0 R (page.47) 1259 0 R (page.48) 1270 0 R (page.49) 1286 0 R] +/Limits [(page.44) (page.49)] >> % 2345 0 obj << -/Names [(page.72) 1464 0 R (page.73) 1470 0 R (page.74) 1481 0 R (page.75) 1486 0 R (page.76) 1495 0 R (page.77) 1503 0 R] -/Limits [(page.72) (page.77)] +/Names [(page.5) 942 0 R (page.50) 1293 0 R (page.51) 1304 0 R (page.52) 1310 0 R (page.53) 1321 0 R (page.54) 1326 0 R] +/Limits [(page.5) (page.54)] >> % 2346 0 obj << -/Names [(page.78) 1508 0 R (page.79) 1514 0 R (page.8) 982 0 R (page.80) 1519 0 R (page.81) 1527 0 R (page.82) 1532 0 R] -/Limits [(page.78) (page.82)] +/Names [(page.55) 1337 0 R (page.56) 1343 0 R (page.57) 1352 0 R (page.58) 1358 0 R (page.59) 1366 0 R (page.6) 947 0 R] +/Limits [(page.55) (page.6)] >> % 2347 0 obj << -/Names [(page.83) 1540 0 R (page.84) 1546 0 R (page.85) 1555 0 R (page.86) 1569 0 R (page.87) 1573 0 R (page.88) 1586 0 R] -/Limits [(page.83) (page.88)] +/Names [(page.60) 1373 0 R (page.61) 1387 0 R (page.62) 1395 0 R (page.63) 1404 0 R (page.64) 1412 0 R (page.65) 1416 0 R] +/Limits [(page.60) (page.65)] >> % 2348 0 obj << -/Names [(page.89) 1592 0 R (page.9) 993 0 R (page.90) 1599 0 R (page.91) 1603 0 R (page.92) 1612 0 R (page.93) 1616 0 R] -/Limits [(page.89) (page.93)] +/Names [(page.66) 1431 0 R (page.67) 1436 0 R (page.68) 1443 0 R (page.69) 1450 0 R (page.7) 960 0 R (page.70) 1454 0 R] +/Limits [(page.66) (page.70)] >> % 2349 0 obj << -/Names [(page.94) 1625 0 R (page.95) 1633 0 R (page.96) 1637 0 R (page.97) 1642 0 R (page.98) 1647 0 R (page.99) 1654 0 R] -/Limits [(page.94) (page.99)] +/Names [(page.71) 1459 0 R (page.72) 1465 0 R (page.73) 1471 0 R (page.74) 1482 0 R (page.75) 1487 0 R (page.76) 1496 0 R] +/Limits [(page.71) (page.76)] >> % 2350 0 obj << -/Names [(page.i) 723 0 R (page.ii) 780 0 R (page.iii) 827 0 R (page.iv) 868 0 R (precdata) 1111 0 R (section*.1) 724 0 R] -/Limits [(page.i) (section*.1)] +/Names [(page.77) 1504 0 R (page.78) 1509 0 R (page.79) 1515 0 R (page.8) 983 0 R (page.80) 1520 0 R (page.81) 1528 0 R] +/Limits [(page.77) (page.81)] >> % 2351 0 obj << -/Names [(section*.10) 622 0 R (section*.11) 626 0 R (section*.12) 630 0 R (section*.13) 634 0 R (section*.14) 638 0 R (section*.15) 642 0 R] -/Limits [(section*.10) (section*.15)] +/Names [(page.82) 1533 0 R (page.83) 1541 0 R (page.84) 1547 0 R (page.85) 1556 0 R (page.86) 1570 0 R (page.87) 1574 0 R] +/Limits [(page.82) (page.87)] >> % 2352 0 obj << -/Names [(section*.16) 646 0 R (section*.17) 650 0 R (section*.18) 654 0 R (section*.19) 658 0 R (section*.2) 2082 0 R (section*.20) 2208 0 R] -/Limits [(section*.16) (section*.20)] +/Names [(page.88) 1587 0 R (page.89) 1593 0 R (page.9) 994 0 R (page.90) 1600 0 R (page.91) 1604 0 R (page.92) 1613 0 R] +/Limits [(page.88) (page.92)] >> % 2353 0 obj << -/Names [(section*.3) 2110 0 R (section*.4) 2131 0 R (section*.5) 2152 0 R (section*.6) 606 0 R (section*.7) 610 0 R (section*.8) 614 0 R] -/Limits [(section*.3) (section*.8)] +/Names [(page.93) 1617 0 R (page.94) 1626 0 R (page.95) 1634 0 R (page.96) 1638 0 R (page.97) 1643 0 R (page.98) 1648 0 R] +/Limits [(page.93) (page.98)] >> % 2354 0 obj << -/Names [(section*.9) 618 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 569 0 R (section.12) 581 0 R (section.13) 601 0 R] -/Limits [(section*.9) (section.13)] +/Names [(page.99) 1655 0 R (page.i) 723 0 R (page.ii) 780 0 R (page.iii) 827 0 R (page.iv) 868 0 R (precdata) 1112 0 R] +/Limits [(page.99) (precdata)] >> % 2355 0 obj << -/Names [(section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R (section.7) 421 0 R] -/Limits [(section.2) (section.7)] +/Names [(section*.1) 724 0 R (section*.10) 622 0 R (section*.11) 626 0 R (section*.12) 630 0 R (section*.13) 634 0 R (section*.14) 638 0 R] +/Limits [(section*.1) (section*.14)] >> % 2356 0 obj << -/Names [(section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1057 0 R (spdata) 1050 0 R (subsection.10.1) 545 0 R (subsection.10.2) 549 0 R] -/Limits [(section.8) (subsection.10.2)] +/Names [(section*.15) 642 0 R (section*.16) 646 0 R (section*.17) 650 0 R (section*.18) 654 0 R (section*.19) 658 0 R (section*.2) 2083 0 R] +/Limits [(section*.15) (section*.2)] >> % 2357 0 obj << -/Names [(subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.11.1) 573 0 R (subsection.11.2) 577 0 R] -/Limits [(subsection.10.3) (subsection.11.2)] +/Names [(section*.20) 2209 0 R (section*.3) 2111 0 R (section*.4) 2132 0 R (section*.5) 2153 0 R (section*.6) 606 0 R (section*.7) 610 0 R] +/Limits [(section*.20) (section*.7)] >> % 2358 0 obj << -/Names [(subsection.12.1) 585 0 R (subsection.12.2) 589 0 R (subsection.12.3) 593 0 R (subsection.12.4) 597 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] -/Limits [(subsection.12.1) (subsection.2.2)] +/Names [(section*.8) 614 0 R (section*.9) 618 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 569 0 R (section.12) 581 0 R] +/Limits [(section*.8) (section.12)] >> % 2359 0 obj << -/Names [(subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R (subsection.3.4) 212 0 R] -/Limits [(subsection.2.3) (subsection.3.4)] +/Names [(section.13) 601 0 R (section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R] +/Limits [(section.13) (section.6)] >> % 2360 0 obj << -/Names [(subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R (subsection.4.13) 272 0 R] -/Limits [(subsection.3.5) (subsection.4.13)] +/Names [(section.7) 421 0 R (section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1058 0 R (spdata) 1051 0 R (subsection.10.1) 545 0 R] +/Limits [(section.7) (subsection.10.1)] >> % 2361 0 obj << -/Names [(subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R (subsection.4.4) 236 0 R] -/Limits [(subsection.4.14) (subsection.4.4)] +/Names [(subsection.10.2) 549 0 R (subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.11.1) 573 0 R] +/Limits [(subsection.10.2) (subsection.11.1)] >> % 2362 0 obj << -/Names [(subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R (subsection.5.1) 292 0 R] -/Limits [(subsection.4.5) (subsection.5.1)] +/Names [(subsection.11.2) 577 0 R (subsection.12.1) 585 0 R (subsection.12.2) 589 0 R (subsection.12.3) 593 0 R (subsection.12.4) 597 0 R (subsection.2.1) 15 0 R] +/Limits [(subsection.11.2) (subsection.2.1)] >> % 2363 0 obj << -/Names [(subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R (subsection.6.11) 352 0 R] -/Limits [(subsection.5.2) (subsection.6.11)] +/Names [(subsection.2.2) 19 0 R (subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R] +/Limits [(subsection.2.2) (subsection.3.3)] >> % 2364 0 obj << -/Names [(subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R (subsection.6.17) 376 0 R] -/Limits [(subsection.6.12) (subsection.6.17)] +/Names [(subsection.3.4) 212 0 R (subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R] +/Limits [(subsection.3.4) (subsection.4.12)] >> % 2365 0 obj << -/Names [(subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R (subsection.6.22) 396 0 R] -/Limits [(subsection.6.18) (subsection.6.22)] +/Names [(subsection.4.13) 272 0 R (subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R] +/Limits [(subsection.4.13) (subsection.4.3)] >> % 2366 0 obj << -/Names [(subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R (subsection.6.3) 320 0 R] -/Limits [(subsection.6.23) (subsection.6.3)] +/Names [(subsection.4.4) 236 0 R (subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R] +/Limits [(subsection.4.4) (subsection.4.9)] >> endstream endobj -2409 0 obj +2413 0 obj << /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20241111174717+01'00') -/ModDate (D:20241111174717+01'00') +/CreationDate (D:20241116104756+01'00') +/ModDate (D:20241116104756+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) >> @@ -37281,267 +37356,285 @@ endobj 2368 0 obj << /Type /ObjStm -/N 41 -/First 403 -/Length 6923 +/N 45 +/First 443 +/Length 7895 >> stream -2367 0 2369 222 2370 450 2371 676 2372 898 2373 1120 2374 1361 2375 1623 2376 1879 2377 2145 -2378 2415 2379 2677 2380 2939 2381 3149 2382 3329 2383 3505 2384 3674 2385 3770 2386 3884 2387 3996 -2388 4107 2389 4217 2390 4333 2391 4457 2392 4577 2393 4690 2394 4803 2395 4913 2396 5024 2397 5139 -2398 5260 2399 5386 2400 5512 2401 5643 2402 5766 2403 5832 2404 5953 2405 6076 2406 6188 2407 6272 -2408 6307 +2367 0 2369 224 2370 454 2371 683 2372 913 2373 1135 2374 1362 2375 1589 2376 1811 2377 2033 +2378 2268 2379 2532 2380 2788 2381 3052 2382 3322 2383 3586 2384 3848 2385 4068 2386 4248 2387 4425 +2388 4597 2389 4707 2390 4821 2391 4933 2392 5044 2393 5155 2394 5267 2395 5390 2396 5510 2397 5623 +2398 5736 2399 5848 2400 5958 2401 6072 2402 6194 2403 6320 2404 6446 2405 6577 2406 6701 2407 6765 +2408 6885 2409 7007 2410 7120 2411 7204 2412 7239 % 2367 0 obj << -/Names [(subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R (subsection.6.9) 344 0 R] -/Limits [(subsection.6.4) (subsection.6.9)] +/Names [(subsection.5.1) 292 0 R (subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R] +/Limits [(subsection.5.1) (subsection.6.10)] >> % 2369 0 obj << -/Names [(subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R (subsection.7.14) 477 0 R] -/Limits [(subsection.7.1) (subsection.7.14)] +/Names [(subsection.6.11) 352 0 R (subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R] +/Limits [(subsection.6.11) (subsection.6.16)] >> % 2370 0 obj << -/Names [(subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R (subsection.7.4) 437 0 R] -/Limits [(subsection.7.15) (subsection.7.4)] +/Names [(subsection.6.17) 376 0 R (subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R] +/Limits [(subsection.6.17) (subsection.6.21)] >> % 2371 0 obj << -/Names [(subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R (subsection.8.1) 497 0 R] -/Limits [(subsection.7.5) (subsection.8.1)] +/Names [(subsection.6.22) 396 0 R (subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R] +/Limits [(subsection.6.22) (subsection.6.27)] >> % 2372 0 obj << -/Names [(subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R (subsection.9.3) 525 0 R] -/Limits [(subsection.8.2) (subsection.9.3)] +/Names [(subsection.6.3) 320 0 R (subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R] +/Limits [(subsection.6.3) (subsection.6.8)] >> % 2373 0 obj << -/Names [(subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R] -/Limits [(subsection.9.4) (subsubsection.3.1.10)] +/Names [(subsection.6.9) 344 0 R (subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R] +/Limits [(subsection.6.9) (subsection.7.13)] >> % 2374 0 obj << -/Names [(subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R] -/Limits [(subsubsection.3.1.11) (subsubsection.3.1.2)] +/Names [(subsection.7.14) 477 0 R (subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R] +/Limits [(subsection.7.14) (subsection.7.3)] >> % 2375 0 obj << -/Names [(subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R] -/Limits [(subsubsection.3.1.3) (subsubsection.3.1.8)] +/Names [(subsection.7.4) 437 0 R (subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R] +/Limits [(subsection.7.4) (subsection.7.9)] >> % 2376 0 obj << -/Names [(subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R] -/Limits [(subsubsection.3.1.9) (subsubsection.3.2.13)] +/Names [(subsection.8.1) 497 0 R (subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R] +/Limits [(subsection.8.1) (subsection.9.2)] >> % 2377 0 obj << -/Names [(subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R] -/Limits [(subsubsection.3.2.14) (subsubsection.3.2.19)] +/Names [(subsection.9.3) 525 0 R (subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R] +/Limits [(subsection.9.3) (subsubsection.3.1.1)] >> % 2378 0 obj << -/Names [(subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R] -/Limits [(subsubsection.3.2.2) (subsubsection.3.2.7)] +/Names [(subsubsection.3.1.10) 79 0 R (subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R] +/Limits [(subsubsection.3.1.10) (subsubsection.3.1.15)] >> % 2379 0 obj << -/Names [(subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R] -/Limits [(subsubsection.3.2.8) (subsubsection.3.3.4)] +/Names [(subsubsection.3.1.2) 47 0 R (subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R] +/Limits [(subsubsection.3.1.2) (subsubsection.3.1.7)] >> % 2380 0 obj << -/Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1104 0 R (table.10) 1252 0 R (table.11) 1260 0 R (table.12) 1273 0 R] -/Limits [(subsubsection.3.3.5) (table.12)] +/Names [(subsubsection.3.1.8) 71 0 R (subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R] +/Limits [(subsubsection.3.1.8) (subsubsection.3.2.12)] >> % 2381 0 obj << -/Names [(table.13) 1293 0 R (table.14) 1321 0 R (table.15) 1337 0 R (table.16) 1352 0 R (table.17) 1366 0 R (table.18) 1395 0 R] -/Limits [(table.13) (table.18)] +/Names [(subsubsection.3.2.13) 155 0 R (subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R] +/Limits [(subsubsection.3.2.13) (subsubsection.3.2.18)] >> % 2382 0 obj << -/Names [(table.19) 1431 0 R (table.2) 1149 0 R (table.20) 1443 0 R (table.21) 2085 0 R (table.3) 1167 0 R (table.4) 1179 0 R] -/Limits [(table.19) (table.4)] +/Names [(subsubsection.3.2.19) 179 0 R (subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R] +/Limits [(subsubsection.3.2.19) (subsubsection.3.2.6)] >> % 2383 0 obj << -/Names [(table.5) 1193 0 R (table.6) 1201 0 R (table.7) 1214 0 R (table.8) 1226 0 R (table.9) 1245 0 R (title.0) 3 0 R] -/Limits [(table.5) (title.0)] +/Names [(subsubsection.3.2.7) 131 0 R (subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R] +/Limits [(subsubsection.3.2.7) (subsubsection.3.3.3)] >> % 2384 0 obj << -/Names [(vbasedata) 1038 0 R (vdata) 1091 0 R] -/Limits [(vbasedata) (vdata)] +/Names [(subsubsection.3.3.4) 199 0 R (subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1105 0 R (table.10) 1253 0 R (table.11) 1261 0 R] +/Limits [(subsubsection.3.3.4) (table.11)] >> % 2385 0 obj << -/Kids [2281 0 R 2282 0 R 2283 0 R 2284 0 R 2285 0 R 2286 0 R] -/Limits [(Doc-Start) (Item.125)] +/Names [(table.12) 1274 0 R (table.13) 1294 0 R (table.14) 1322 0 R (table.15) 1338 0 R (table.16) 1353 0 R (table.17) 1367 0 R] +/Limits [(table.12) (table.17)] >> % 2386 0 obj << -/Kids [2287 0 R 2288 0 R 2289 0 R 2290 0 R 2291 0 R 2292 0 R] -/Limits [(Item.126) (Item.26)] +/Names [(table.18) 1396 0 R (table.19) 1432 0 R (table.2) 1150 0 R (table.20) 1444 0 R (table.21) 2086 0 R (table.3) 1168 0 R] +/Limits [(table.18) (table.3)] >> % 2387 0 obj << -/Kids [2293 0 R 2294 0 R 2295 0 R 2296 0 R 2297 0 R 2298 0 R] -/Limits [(Item.27) (Item.59)] +/Names [(table.4) 1180 0 R (table.5) 1194 0 R (table.6) 1202 0 R (table.7) 1215 0 R (table.8) 1227 0 R (table.9) 1246 0 R] +/Limits [(table.4) (table.9)] >> % 2388 0 obj << -/Kids [2299 0 R 2300 0 R 2301 0 R 2302 0 R 2303 0 R 2304 0 R] -/Limits [(Item.6) (Item.91)] +/Names [(title.0) 3 0 R (vbasedata) 1039 0 R (vdata) 1092 0 R] +/Limits [(title.0) (vdata)] >> % 2389 0 obj << -/Kids [2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R 2310 0 R] -/Limits [(Item.92) (equation.4.1)] +/Kids [2285 0 R 2286 0 R 2287 0 R 2288 0 R 2289 0 R 2290 0 R] +/Limits [(Doc-Start) (Item.125)] >> % 2390 0 obj << -/Kids [2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R 2316 0 R] -/Limits [(equation.4.2) (lstnumber.-10.1)] +/Kids [2291 0 R 2292 0 R 2293 0 R 2294 0 R 2295 0 R 2296 0 R] +/Limits [(Item.126) (Item.25)] >> % 2391 0 obj << -/Kids [2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R 2322 0 R] -/Limits [(lstnumber.-11.1) (page.112)] +/Kids [2297 0 R 2298 0 R 2299 0 R 2300 0 R 2301 0 R 2302 0 R] +/Limits [(Item.26) (Item.58)] >> % 2392 0 obj << -/Kids [2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R 2328 0 R] -/Limits [(page.113) (page.145)] +/Kids [2303 0 R 2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R] +/Limits [(Item.59) (Item.90)] >> % 2393 0 obj << -/Kids [2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R 2334 0 R] -/Limits [(page.146) (page.178)] +/Kids [2309 0 R 2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R] +/Limits [(Item.91) (descdata)] >> % 2394 0 obj << -/Kids [2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R 2340 0 R] -/Limits [(page.18) (page.5)] +/Kids [2315 0 R 2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R] +/Limits [(equation.4.1) (lstnumber.-1.4)] >> % 2395 0 obj << -/Kids [2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R 2346 0 R] -/Limits [(page.50) (page.82)] +/Kids [2321 0 R 2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R] +/Limits [(lstnumber.-10.1) (page.111)] >> % 2396 0 obj << -/Kids [2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R 2352 0 R] -/Limits [(page.83) (section*.20)] +/Kids [2327 0 R 2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R] +/Limits [(page.112) (page.144)] >> % 2397 0 obj << -/Kids [2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R 2358 0 R] -/Limits [(section*.3) (subsection.2.2)] +/Kids [2333 0 R 2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R] +/Limits [(page.145) (page.177)] >> % 2398 0 obj << -/Kids [2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R 2364 0 R] -/Limits [(subsection.2.3) (subsection.6.17)] +/Kids [2339 0 R 2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R] +/Limits [(page.178) (page.49)] >> % 2399 0 obj << -/Kids [2365 0 R 2366 0 R 2367 0 R 2369 0 R 2370 0 R 2371 0 R] -/Limits [(subsection.6.18) (subsection.8.1)] +/Kids [2345 0 R 2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R] +/Limits [(page.5) (page.81)] >> % 2400 0 obj << -/Kids [2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R 2377 0 R] -/Limits [(subsection.8.2) (subsubsection.3.2.19)] +/Kids [2351 0 R 2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R] +/Limits [(page.82) (section*.2)] >> % 2401 0 obj << -/Kids [2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R] -/Limits [(subsubsection.3.2.2) (title.0)] +/Kids [2357 0 R 2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R] +/Limits [(section*.20) (subsection.2.1)] >> % 2402 0 obj << -/Kids [2384 0 R] -/Limits [(vbasedata) (vdata)] +/Kids [2363 0 R 2364 0 R 2365 0 R 2366 0 R 2367 0 R 2369 0 R] +/Limits [(subsection.2.2) (subsection.6.16)] >> % 2403 0 obj << -/Kids [2385 0 R 2386 0 R 2387 0 R 2388 0 R 2389 0 R 2390 0 R] -/Limits [(Doc-Start) (lstnumber.-10.1)] +/Kids [2370 0 R 2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R] +/Limits [(subsection.6.17) (subsection.7.9)] >> % 2404 0 obj << -/Kids [2391 0 R 2392 0 R 2393 0 R 2394 0 R 2395 0 R 2396 0 R] -/Limits [(lstnumber.-11.1) (section*.20)] +/Kids [2376 0 R 2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R] +/Limits [(subsection.8.1) (subsubsection.3.2.18)] >> % 2405 0 obj << -/Kids [2397 0 R 2398 0 R 2399 0 R 2400 0 R 2401 0 R 2402 0 R] -/Limits [(section*.3) (vdata)] +/Kids [2382 0 R 2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R] +/Limits [(subsubsection.3.2.19) (table.9)] >> % 2406 0 obj << -/Kids [2403 0 R 2404 0 R 2405 0 R] -/Limits [(Doc-Start) (vdata)] +/Kids [2388 0 R] +/Limits [(title.0) (vdata)] >> % 2407 0 obj << -/Dests 2406 0 R +/Kids [2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R] +/Limits [(Doc-Start) (lstnumber.-1.4)] >> % 2408 0 obj << +/Kids [2395 0 R 2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R] +/Limits [(lstnumber.-10.1) (section*.2)] +>> +% 2409 0 obj +<< +/Kids [2401 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R] +/Limits [(section*.20) (vdata)] +>> +% 2410 0 obj +<< +/Kids [2407 0 R 2408 0 R 2409 0 R] +/Limits [(Doc-Start) (vdata)] +>> +% 2411 0 obj +<< +/Dests 2410 0 R +>> +% 2412 0 obj +<< /Type /Catalog -/Pages 2277 0 R -/Outlines 2278 0 R -/Names 2407 0 R +/Pages 2281 0 R +/Outlines 2282 0 R +/Names 2411 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels<>2<>6<>]>> /OpenAction 661 0 R >> endstream endobj -2410 0 obj +2414 0 obj << /Type /XRef -/Index [0 2411] -/Size 2411 +/Index [0 2415] +/Size 2415 /W [1 3 1] -/Root 2408 0 R -/Info 2409 0 R -/ID [ ] -/Length 12055 ->> -stream -ÿ]!è h&è h0è h8è -hDè   -hMè  Ñ è ÑèÑèÑèÑ6èÑ7èÑ8èÑ9èÑ=çcÑ>çb Ñ?ça!"ÑCç`#$ÑDç_%&ÑFç^'(ÑGç])*ÑKç\+,ÑLç[-.ÑMçZ/0ÑTçY12ÑUçX34Ñ\çW56Ñ]çV78ÑaçU9:ÑbçT;<'çS=>'çR?@'çQAB'çPCD' -çOEF' çNGH'çMIJ'çLKL'çKMN'çJOP'çIQR'çHST' çGUV'!çFWX'"çEYZ'#çD[\')çC]^'*çB_`'+çAab'1ç@cË?%'6ç?ËË'7ç>ËË'8ç=ËË'?ç<ËË'Cç;Ë Ë -'Mç:Ë Ë ']ç9Ë Ë„ ç8ËË„ç7ËË„ ç6ËË„(ç5ËË„4ç4ËË„?ç3ËË„Pç2ËË„Wç1ËË„^ç0ËË úç/Ë!Ë"úç.Ë#Ë$ú2ç-Ë%Ë&ú?ç,Ë'Ë(úNç+Ë)Ë*úTç*Ë+Ë,ú[ç)Ë-Ë.eç(Ë/Ë0e,ç'Ë1Ë2e5ç&Ë3Ë4e@ç%Ë5Ë6eAç$Ë7Ë8eXç#Ë9Ë:Ùç"Ë;Ë<Ùç!Ë=Ë>Ù ç Ë?Ë@ÙçËAËBÙçËCËDÙ)çËEËFÙDçËGËHÙTçËIËJÙZçËKËLÙaçËMËNFçËOËPFçËQËRFçËSËTFçËUËVF$çËWËXF.çËYËZF3çË[Ë\F9çË]Ë^F?çË_Ë`FEçËaËbFKçËc”}ƒFRç ””FYç ””±ç ””±ç -””±ç ” ” -±ç” ” ± ç” ”±&ç””±-ç””±1ç””±5ç””±9ç””±=ç””±Aç””±KÔc””±UÔb”” ±_Ôa”!”"Ô`”#”$Ô_”%”&Ô^”'”(%Ô]”)”**Ô\”+”,1Ô[”-”.:ÔZ”/”0@ÔY”1”2FÔX”3”4LÔW”5”6RÔV”7”8WÔU”9”:^ÔT”;”<ŽÔS”=”>ŽÔR”?”@ŽÔQ”A”BŽÔP”C”DŽÔO”E”FŽ%ÔN”G”HŽ.ÔM”I”JŽ9ÔL”K”LŽ>ÔK”M”NŽBÔJ”O”PŽHÔI”Q”RŽLÔH”S”TŽRÔG”U”VþÔF”W”XþÔE”Y”ZþÔD”[”\þ#ÔC”]”^þ$ÔB”_”`ÔA”a”bÔ@”c]ýñÔ?]]Ô>]]Ô=]]Ô<]]Ô;] ] -Ô:] ] Ô9] ]Ô8]] Ô7]]!Ô6]]%Ô5]]&Ô4]]'Ô3]](Ô2]]]Áž]]"¾‰]] ÔÔ -Ô Ô ÒJ]%]#‚è]$]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9];]=]>]?]@]A]B]C]D]E]G]I]K]L]M]N]O]P]Q]R]S]T]Y]W]&ƒr]U]V]:]<]F]H]J]Z][]\]]]^]_]`]a]b]c           +/Root 2412 0 R +/Info 2413 0 R +/ID [ ] +/Length 12075 +>> +stream +ÿ]!ìh&ìh0ìh8ìhDì   +hMì   Ò +ì  Òì +Òì ÒìÒ7ìÒ8ìÒ9ìÒ:ìÒ>ìÒ?ì Ò@ì!"ÒDì#$ÒEëc%&ÒGëb'(ÒHëa)*ÒLë`+,ÒMë_-.ÒNë^/0ÒUë]12ÒVë\34Ò]ë[56Ò^ëZ78ÒbëY9:ÒcëX;<(ëW=>(ëV?@(ëUAB(ëTCD( ëSEF( ëRGH(ëQIJ(ëPKL(ëOMN(ëNOP(ëMQR(ëLST(!ëKUV("ëJWX(#ëIYZ($ëH[\(*ëG]^(+ëF_`(,ëEab(2ëDcË?%(7ëCËË(8ëBËË(9ëAËË(@ë@ËË(Dë?Ë Ë +(Në>Ë Ë (^ë=Ë Ë… +ë<ËË…ë;ËË…!ë:ËË…)ë9ËË…5ë8ËË…@ë7ËË…Që6ËË…Xë5ËË…_ë4ËË ûë3Ë!Ë"ûë2Ë#Ë$û3ë1Ë%Ë&û@ë0Ë'Ë(ûOë/Ë)Ë*ûUë.Ë+Ë,û\ë-Ë-Ë.eë,Ë/Ë0e-ë+Ë1Ë2e6ë*Ë3Ë4eAë)Ë5Ë6eBë(Ë7Ë8eYë'Ë9Ë:Úë&Ë;Ë<Ú ë%Ë=Ë>Úë$Ë?Ë@Úë#ËAËBÚë"ËCËDÚ*ë!ËEËFÚEë ËGËHÚUëËIËJÚ[ëËKËLÚbëËMËNFëËOËPFëËQËRFëËSËTF ëËUËVF%ëËWËXF/ëËYËZF4ëË[Ë\F:ëË]Ë^F@ëË_Ë`FFëËaËbFLëËc”}ƒFSë””FZë””²ë””²ë””²ë ” ” +²ë ” ” ²!ë ” ”²'ë +””².ë ””²2ë””²6ë””²:ë””²>ë””²Bë””²Lë””²Vë”” ²`ë”!”" ë”#”$ Õc”%”& Õb”'”( &Õa”)”* +Õ`”+”, 2Õ_”-”. ;Õ^”/”0 AÕ]”1”2 GÕ\”3”4 MÕ[”5”6 SÕZ”7”8 XÕY”9”: _ÕX”;”<ÕW”=”> ÕV”?”@ÕU”A”BÕT”C”D ÕS”E”F&ÕR”G”H/ÕQ”I”J:ÕP”K”L?ÕO”M”NCÕN”O”PIÕM”Q”RMÕL”S”TSÕK”U”VÿÕJ”W”XÿÕI”Y”ZÿÕH”[”\ÿ$ÕG”]”^ÿ%ÕF”_”`{ÕE”a”b{ÕD”c]ýñ{ÕC]]{ÕB]]{ÕA]]{Õ@]]{Õ?] ] +{Õ>] ] {Õ=] ]{ Õ<]]{!Õ;]]{"Õ:]]{&Õ9]]{'Õ8]]{(Õ7]]{)Õ6]]]Áž]]"¾‰]] Õ ÕÕ ÕÒJ]%]#‚è]$]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9];]=]>]?]@]A]B]C]D]E]G]I]K]L]M]N]O]P]Q]R]S]T]Y]W]&ƒr]U]V]:]<]F]H]J]Z][]\]]]^]_]`]a]b]c                                  ! " # ' %]X¿ $²k ( ) * + , - . / 0 1 2 3 4 5 6 7 8 : ; < = > ? @ A B C D E F G H I J K L M O P R T Y W &5ø V 9 N Q S U [ ] _ ` a b chhhhhhhhhh h -h h h hhhhhhhhhhhh X}Zh Z \ ^õhhhhh h!h"h#h$h%h'hò½Ô ?6CA>34=01h-h.h/'7h4h2h(fh1h)h*h+h,+í2h5h6h;h37h7ÔÔÔh9h:<h@hAk"hEh<XhBhCh=h>h?/.hGhHhJhFqÌhIhXhVhK…GhLhNhOhPhQhRhShThUÑÑhW¦=hYhZh[h\h]h^h_h`hahbhcÑÑÑÑÔÔ þHÑÑÑõÑÑ -Ñ Ñ Ñ ÑÑÑÑÑÂÑÑÑÑÑÑ#Ñ1ùÑÑÑÑ Ñ!Ñ"Ñ%Ñ&Ñ1Ñ$IìÑ'Ñ(Ñ)Ñ*Ñ+Ñ,Ñ-Ñ.Ñ/ÔÑ0Ñ3Ñ4Ñ:Ñ2e®Ñ5Ñ@Ñ;yHÑ<ÔÑHÑAŠ”ÑBÑEÑNÑIcÑJÑPÑQÑRÑWÑO³¨ÑSÑV8ÑZÑ^ÑXÑáÑYÑ['Ñ_î÷Ñ`ÑcCŒ''"x'Ô' '4' '' KL''']‘'''oá''''%'ˆÒ''$'(','&¦Ò''Ô'.'/'2'-º×'0'N'4'<':'3Ê/'5'9'>'@';ÛÜ'='D'Aì£'B'F'G'H'I'J'K'Q'O'Eí~'LÔ'R'S'U'P -ä'TÔ'W'X'Y'Z'['_'V…'\'^'a„'`2¡'b'c¬F„„„„„„„ „l­„„ -„„ Ž1„ „„„„„´„„„„¯R„„Ô„„„„"„»r„„!„$„%„&„*„#ÔÏ„'„)„.„+ñø„,„-„0„1„2„6„/þ„3„5„9„7¦„8„;„<„=„A„:*„>„@Ô„J„B8†„C„D„E„F„G„H„I„L„M„N„R„KI¥„O„Q„T„U„Y„SbF„V„X„[„\„`„ZwŒ„]Ô„_„b„cúúú -ú„aŒåúúúúúØÝú ú ú úúúúúú ÙêúÔúúúúó«úúúúúúú ú!ú#ú„ú"ú%ú&ú(ú$0@ú'ú*ú+ú,ú-ú.ú/ú0ú4ú)B:ú1ú3ú7ú5_õú6ú9ú:ú;ú<ú=úCúDúAú8alú>ú@ÔúFúBúEúHúIúJúKúLúPúG„LúMúOúRúUúQ¡“úSúWúXúYeú]úV¤?úZú\Ê‚eeú^¾feeú_ú`úaúbúce È$B@7eemÏeÔe -e e ee yôe ee½Úeeee˜¼eeeee%ee®@ee&e¼\e$eee e!e"e#Ìxÿçe(e)e*e.e'-e+e-e1e/Née0Ôe3e9e7e2T¯e4e6e:e;e=e8qðe<eBe>½e?eDeGeCš©eEeFeIeLeH³§eJÔeKeTeMÚåeNeOePeQeReSÔeVeYeUåeWe[e`eZ¸e\e]e^e_ebecÙea ´ÙÙ@aÙÙÙ ÙRcÙÙ ÙÙ -_Ù ÙÙÙÙg´ÙÔÙÙ~?ÙÙÙÙÙÙ Ù„HÙÙÙ&Ù!šÈÙ"Ù#Ù$Ù%Ù,Ù*Ù'ŸzÙ(Ù-Ù.Ù5Ù+´¶Ù/Ù0Ù1Ù2Ù3Ù4Ù>Ù6ÏÀÙ7Ù8Ù9Ù:Ù;Ù<Ù=ÔÙ@ÙAÙBÙEÙ?á´ÙCÙOÙFüvÙGÙHÙIÙJÙKÙLÙMÙNÙQÙRÙUÙPýÙSÙWÙXÙ\ÙVåÙYÙ[Ù^Ù_ÙbÙ]$4Ù`FÙc<‡FFÔuÊFFFFhÛFF F ØF -F F FFFFF„0FFFFFFFœUFF F©*FF"F%F!µùF#ÔF*F&ΔF'F(F)F,F/F+ÑqF-F1F5F0çF2F4F7F;F6óžF8F:F=FAF<–F>F@FCFGFBFDFFÔFIFNFH& FJFLFMFPFUFO4ˆFQFSFTFWFZFVBGFXF`F[WìF\F]F^F_FbFc±±Faeò± ÜW±±Ÿ±Ô±±µF± ± -± ± ± ±±±±±±±Ò±±±Òï±±±±#±è²±±!±"±*±$úX±%±'±(±)±.±+ -é±,Ô±2±/ Ò±0±6±3 "±4±:±7 &ر8±>±; ,±<±B±? 1Á±@±H±C G”±D±E±F±GcÔ ±L±I \¢±J±R±M s¤±N±O±P±Q±V±S ‡E±T±\±W .±X±Y±Z±[±`±] ±Ö±^±a Èȱb±cÔ!"I6!¹ !æ  -  !+Œ!A¼!V‡"!mTb !Ô"'#!…ý$&,(!›")+./2-!°K05673!Èé4=8!ñd9;<C>!ÿ“?ABÔ#ID"EGHOJ" 7KMNSP"TQUZT"ŒVXY\a["'’]_`cŽb";#ŽŽŽÔ$#™¦ŽŽ Ž"nŸŽŽ Ž -Ž ŽŽ "ŽŽŽŽŽŽ"›“ŽŽŽŽŽ"·qŽŽ Ž"º=ŽŽ"Ž#Ž'Ž!"¾ÏŽ$Ž&Ô%Ž)Ž*Ž+Ž,Ž/Ž("Ò¤Ž-Ž2Ž0"ðuŽ1Ž4Ž5Ž6Ž7Ž:Ž3"ô¯Ž8Ž<Ž?Ž;# Ž=ŽCŽ@#ŽAŽEŽFŽIŽD#—ŽGÔ&ŽMŽJ#'cŽKŽOŽPŽYŽWŽN#)¶ŽQŽSŽTŽUŽVŽZŽ[Ž\Ž^ŽX#J)Ž]Ž`ŽbŽ_#eôŽaþþþþ -þŽc#wºþþþþ%h™þ þ þþ #Åþ Ô'þþ#ßlþþþþþþþþþ#ãîþþDEþþ $6þ!$cþ9þ+þ'þ$Ôþ"þ%þ&@þ-þ;þ1þ($#áþ,þ.þ/þ0þ)þ*$EþDþFþ2$F—þ:þ<þ=þ>þ?þ@þAþBþCþEþ3þ4$mlþ5þ6þ7$ntþ8$oj$pt$N$·ŽþNþOþPþTþG$˜€þQþRþSÔ(þHþIþJþKþL$ÄþM$Å3$Æ)$Óåþ^þ`%Gþ\þbþU$ò»þ]þ_þaþVþWþXþYþZ%Pþ[%L%\%8ù%›Ú þc%D,%©(ÝZ%ª†%«‚%¬¢%É­  -%Öî  %Ù¦%õI"& -ÈÔ))#& $9*&*ï+,-57F:&Cý;BGHIJKLMNOPaQRS&UÆT&r¥U&–•V&´¢W&ÓÏX&ûÇY'N]Z'^’['ž8\'®•]'¾Q^(_(ƒ`(ÒÈ(Öô))`y)$L)+E)3„)9È)@)FF)IØ)Nn)Tp)ZrÔ*Ô+Ô,Ô-Ô.Ô/Ô0Ô1)ŽÎ)´âèèèèèèèèèèèèèèèèèèè è!è"è#è$è%è&è'è(è)è*è+è,è-è.è/è0è1è2è3è4è5è6è7è8è9è:è;è<è=è>è?è@è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è[è\è]è^è_è`èaèbèc @)ÿ7 @ @ @ @ @ @ @ @ @  @ - @  @  @  @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @! @" @# @$ @% @& @' @()ý *ž +h h h hhhhhhhhhhhh X}Zh Z \ ^ÆŠhhhhh h!h"h#h$h%h'hò½Õ{@{7{D{B{?{4{5{>{1{2h-h.h/'7h4h2h(fh1h)h*h+h,+í{3h5h6h;h37h7ÕÕÕh9h:{=h@hAk"hEh<XhBhCh=h>h?{0{/hGhHhJhFqÌhIhXhVhK…GhLhNhOhPhQhRhShThUÒÒhW¦³hYhZh[h\h]h^h_h`hahbhcÒÒÒÒÒÕÕÒÒÒøUÒ Ò Ò Ò ÒÒÒÒÒÒ–ÒÒÒÒÒÒ$Ò4ÍÒÒÒ Ò!Ò"Ò#Ò&Ò'Ò2Ò%LÀÒ(Ò)Ò*Ò+Ò,Ò-Ò.Ò/Ò0Õ Ò1Ò4Ò5Ò;Ò3h‚Ò6ÒAÒ<|Ò=ÕÒIÒBhÒCÒFÒOÒJ 7ÒKÒQÒRÒSÒXÒP¶|ÒTÒW{9Ò[Ò_ÒYÔµÒZÒ\(Ò`ñËÒa(F((%P(Õ( ( 6ì( +((N$(((`i(((r¹((((&(‹ª( (%()(-('©ª((Õ(/(0(3(.½¯(1(O(5(=(;(4Í(6(:(?(A(<ÞÄ(>(E(Bï¤(C(G(H(I(J(K(L(R(P(Fð(MÕ (S(T(V(Q å(UÕ(X(Y(Z([(\(`(W†(](_(b…(a5¢(c…¯H………………… …o¯… … …… ‘3………………“¶…………²T……Õ…………#…¾t… …"…%…&…'…+…$×Ñ…(…*…/…,ôú…-….…1…2…3…7…0…4…6…:…8¨…9…<…=…>…B…;!,…?…AÕ…K…C;ˆ…D…E…F…G…H…I…J…M…N…O…S…LL§…P…R…U…V…Z…TeH…W…Y…\…]…a…[zŽ…^Õ +…`…cûûûû û …bçûûûûûÛ†û û ûûûûûûû +Ü“ûÕûûûûöTûûûûûû û!û"û$û-û#û&û'û)û%2éû(û+û,û-û.û/û0û1û5û*Dãû2û4û8û6bžû7û:û;û<û=û>ûDûEûBû9dû?ûAÕûGûC°ûFûIûJûKûLûMûQûH†õûNûPûSûVûR¤<ûTûXûYûZeû^ûW¦èû[û]Í+eeû_Áeeû`ûaûbûcee&hîB]e eoõeÕe e e ee +|eeeÀeeeešâeeeee&ee°fee'e¾‚e%ee e!e"e#e$Ξ e)e*e+e/e(/¥e,e.e2e0Qe1Õe4e:e8e3VÕe5e7e;e<e>e9te=eCe?ƒãe@eEeHeDœÏeFeGeJeMeIµÍeKÕeLeUeNÝ eOePeQeReSeTÕeWeZeVçCeXe\eae[Þe]e^e_e`ecÚÚebÚÚÚ?2ÚÚÚ +ÚUÚÚ ÚÚ a«Ú ÚÚÚÚj_ÚÕÚÚ€êÚÚÚÚÚÚ!Ú†óÚÚ Ú'Ú"sÚ#Ú$Ú%Ú&Ú-Ú+Ú(¢%Ú)Ú.Ú/Ú6Ú,·aÚ0Ú1Ú2Ú3Ú4Ú5Ú?Ú7ÒkÚ8Ú9Ú:Ú;Ú<Ú=Ú>ÕÚAÚBÚCÚFÚ@ä_ÚDÚPÚGÿ!ÚHÚIÚJÚKÚLÚMÚNÚOÚRÚSÚVÚQ ¨ÚTÚXÚYÚ]ÚWÚZÚ\Ú_Ú`ÚcÚ^&ßÚaFFgÉFFx’ÕFFF Fk£FFF +„ F F F FFFFF†øFFFFFFFŸFF!F«òFF#F&F"¸ÁF$Õ F+F'Ñ\F(F)F*F-F0F,Ô9F.F2F6F1éÈF3F5F8F<F7öfF9F;F>FBF= ^F?FAFDFHFCæFEFGÕ!FJFOFI(ÔFKFMFNFQFVFP7PFRFTFUFXF[FWEFYFaF\Z´F]F^F_F`Fc²²²Fbhº² ß²²¡»²Õ"²² ·ò² +² ² ² ²²²²²²²²Ô³²²²Õ›²²²²$²ë^² ²"²#²+²%ý²&²(²)²*²/², •²-Õ#²3²0 ~²1²7²4 $IJ5²;²8 )„²9²?²< /-²=²C²@ 4m²A²I²D J@²E²F²G²HÕÕ$²M²J _N²K²S²N vP²O²P²Q²R²W²T ‰ñ²U²]²X ŸÚ²Y²Z²[²\²a²^ ´‚²_ ²b Ët²c   Õ%"L<  !¿   !ì  +    !.’   !D      !Y  # !pZ   Õ  ! "Õ& ( $!‰ % ' - )!ž( * , / 0 3 .!³Q 1 6 7 8 4!Ëï 5 > 9!ôj : < = D ?"™ @ B CÕ' J E" + F H I P K"= L N O T Q"Z R V [ U"’ W Y Z ] b \"*˜ ^ ` a c">)Õ(#zi "qN +  "Æ"žB"º !"¼ì#$(""Á~%'Õ)*+,-0)"ÕS.31"ó$25678;4"÷^9=@<# Ä>DA#<BFGJE#FHÕ*NK#*LPQZXO#,eRTUVW[\]_Y#LØ^ac`#h£bÿÿÿÿ ÿ ÿ#¥½ÿÿÿÿ%FÐÿ ÿ ÿÿ +#Ç©ÿÕ+ÿÿ#âÿÿÿÿÿÿÿÿÿ#æ’ÿÿ{E{Fÿ ÿ!$8¤ÿ"$eÁÿ:ÿ,ÿ(ÿ$xÿ#ÿ&ÿ'{Aÿ.ÿ<ÿ2ÿ)$&…ÿ-ÿ/ÿ0ÿ1ÿ*ÿ+$G¾ÿEÿGÿ3$I;ÿ;ÿ=ÿ>ÿ?ÿ@ÿAÿBÿCÿDÿFÿ4ÿ5$pÿ6ÿ7ÿ8$qÿ9$r$s$‘ò$º2ÿOÿPÿQÿUÿH$›$ÿRÿSÿTÕ,ÿIÿJÿKÿLÿM$ƶÿN$Ç×$ÈÍ$Ö‰ÿ_ÿa%ëÿ]ÿcÿV$õ_ÿ^ÿ`ÿbÿWÿXÿYÿZÿ[%ôÿ\% ð%"%;%ž{{ +{%z"{{ )Éö{{%«Ê{{{%­;{%®7%¯W%Ìb{ { %Ù£{ {{%Ü[{{{%÷þ{{{#{& }{Õ-{*{$&"Á{%{:{+&-¤{,{-{.{6{8{G{;&F²{<{C{H{c{I{J{K{LÕ{M{NÕ{O{P{Q{b{R{S{T&X{{U&uZ{V&“g{W&»_{X&˼{Y&Ûx{Z'/W{['¯è{\({](n!{^(µ{_)5{`)zL{a*O§* *8*ö*2*z*'¹*,P*0â*5t*9*=œ*Cž*I Õ.Õ/Õ0Õ1Õ2Õ3Õ4Õ5*€‘*¦Áììììììììììììììì ì!ì"ì#ì$ì%ì&ì'ì(ì)ì*ì+ì,ì-ì.ì/ì0ì1ì2ì3ì4ì5ì6ì7ì8ì9ì:ì;ì<ì=ì>ì?ì@ì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ì[ì\ì]ì^ì_ì`ìaìbìc @*î² @ @ @ @ @ @ @ @ @  @ + @  @  @  @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @! @" @# @$ @% @& @' @( @) @* @+ @,*ì‡+ å endstream endobj startxref -2759326 +2821605 %%EOF diff --git a/docs/src/datastruct.tex b/docs/src/datastruct.tex index 07fb6375..c9a4867b 100644 --- a/docs/src/datastruct.tex +++ b/docs/src/datastruct.tex @@ -1317,13 +1317,14 @@ like Diagonal Scaling or Block Jacobi with incomplete factorization ILU(0). A preconditioner is held in the \hypertarget{precdata}{{\tt - psb\_prec\_type}} data structure reported in -figure~\ref{fig:prectype}. The \fortinline|psb_prec_type| + psb\_Tprec\_type}} data structure reported in +figure~\ref{fig:prectype}. The \fortinline|psb_Tprec_type| data type may contain a simple preconditioning matrix with the -associated communication descriptor.%% which may be different than the +associated communication descriptor. +%% which may be different from the %% system communication descriptor in the case of parallel %% preconditioners like the Additive Schwarz one. Then the -%% \fortinline|psb_prec_type| may contain more than one preconditioning matrix +%% \fortinline|psb_Tprec_type| may contain more than one preconditioning matrix %% like in the case of Two-Level (in general Multi-Level) preconditioners. %% The user can choose the type of preconditioner to be used by means of %% the \fortinline|psb_precset| subroutine; once the type of preconditioning @@ -1407,8 +1408,8 @@ Given a heap object, the following methods are defined on it: \item[dump] Print on file; \item[free] Release memory. \end{description} -These objects are used in AMG4PSBLAS to implement the factorization -algorithms. +These objects are used to implement the factorization +and approximate inversion algorithms. %%% Local Variables: %%% mode: latex diff --git a/docs/src/intro.tex b/docs/src/intro.tex index ca0b47ad..f4a70cf9 100644 --- a/docs/src/intro.tex +++ b/docs/src/intro.tex @@ -344,24 +344,25 @@ A simple application structure will walk through the index space allocation, matrix/vector creation and linear system solution as follows: \begin{enumerate} -\item Initialize parallel environment with \verb|psb_init| -\item Initialize index space with \verb|psb_cdall| +\item Initialize parallel environment with \verb|psb_init|; +\item Initialize index space with \verb|psb_cdall|; \item Allocate sparse matrix and dense vectors with \verb|psb_spall| - and \verb|psb_geall| + and \verb|psb_geall|; \item Loop over all local rows, generate matrix and vector entries, and insert them with \verb|psb_spins| and \verb|psb_geins| \item Assemble the various entities: \begin{enumerate} -\item \verb|psb_cdasb| -\item \verb|psb_spasb| -\item \verb|psb_geasb| +\item \verb|psb_cdasb|, +\item \verb|psb_spasb|, +\item \verb|psb_geasb|; \end{enumerate} \item Choose the preconditioner to be used with \verb|prec%init| and + \verb|prec%set|, and build it with \verb|prec%build|\footnote{The subroutine style {\tt - psb\_precinit} and {\tt psb\_precbl} are still supported for - backward compatibility}. -\item Call the iterative driver \verb|psb_krylov| with the method of - choice, e.g. \verb|bicgstab|. + psb\_precinit} and {\tt psb\_precbld} are still supported for + backward compatibility}; +\item Call one of the iterative drivers with the method of + choice, e.g. \verb|psb_krylov| with \verb|bicgstab|. \end{enumerate} This is the structure of the sample programs in the directory \verb|test/pargen/|. @@ -372,21 +373,23 @@ multiple time steps, the following structure may be more appropriate: \item Initialize parallel environment with \verb|psb_init| \item Initialize index space with \verb|psb_cdall| \item Loop over the topology of the discretization mesh and build the - descriptor with \verb|psb_cdins| -\item Assemble the descriptor with \verb|psb_cdasb| -\item Allocate the sparse matrices and dense vectors with - \verb|psb_spall| and \verb|psb_geall| + descriptor with \verb|psb_cdins|; +\item Assemble the descriptor with \verb|psb_cdasb|; +\item Allocate the sparse matrices and dense vectors with; + \verb|psb_spall| and \verb|psb_geall|; \item Loop over the time steps: \begin{enumerate} \item If after first time step, reinitialize the sparse matrix with \verb|psb_sprn|; also zero out the dense vectors; \item Loop over the mesh, generate the coefficients and insert/update - them with \verb|psb_spins| and \verb|psb_geins| -\item Assemble with \verb|psb_spasb| and \verb|psb_geasb| -\item Choose and build preconditioner with \verb|prec%init| and - \verb|prec%build| -\item Call the iterative method of choice, e.g. \verb|psb_bicgstab| + them with \verb|psb_spins| and \verb|psb_geins|; +\item Assemble with \verb|psb_spasb| and \verb|psb_geasb|; +\item \item Choose the preconditioner to be used with \verb|prec%init| and + \verb|prec%set|, and + build it with \verb|prec%build|; +\item Call one of the iterative drivers with the method of + choice, e.g. \verb|psb_krylov| with \verb|bicgstab|. \end{enumerate} \end{enumerate} The insertion routines will be called as many times as needed; diff --git a/test/hello/Makefile b/test/hello/Makefile index cbdd358f..dd04768d 100644 --- a/test/hello/Makefile +++ b/test/hello/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(BASEDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such diff --git a/test/kernel/Makefile b/test/kernel/Makefile index 21851beb..7e413092 100644 --- a/test/kernel/Makefile +++ b/test/kernel/Makefile @@ -6,7 +6,7 @@ INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/omp/Makefile b/test/omp/Makefile index c35431c5..3eca17de 100644 --- a/test/omp/Makefile +++ b/test/omp/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(INSTALLDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such diff --git a/test/omp/psb_tomp.F90 b/test/omp/psb_tomp.F90 index 79097ca8..a2b21ef7 100644 --- a/test/omp/psb_tomp.F90 +++ b/test/omp/psb_tomp.F90 @@ -658,7 +658,7 @@ end module psb_d_pde3d_mod program psb_d_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde3d_mod #if defined(OPENMP) diff --git a/test/openacc/Makefile b/test/openacc/Makefile index d0bd4880..16673b35 100644 --- a/test/openacc/Makefile +++ b/test/openacc/Makefile @@ -9,7 +9,7 @@ INCDIR=$(TOPDIR)/include MODDIR=$(TOPDIR)/modules EXEDIR=./runs -PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBGPULDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) $(FMFLAG)$(PSBINCDIR) $(LIBRSB_DEFINES) diff --git a/test/openacc/psb_d_oacc_pde3d.F90 b/test/openacc/psb_d_oacc_pde3d.F90 index 7c0cb4ef..bc889b1f 100644 --- a/test/openacc/psb_d_oacc_pde3d.F90 +++ b/test/openacc/psb_d_oacc_pde3d.F90 @@ -653,7 +653,7 @@ end module psb_d_pde3d_mod program psb_d_oacc_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde3d_mod #if defined(OPENACC) diff --git a/test/serial/Makefile b/test/serial/Makefile index 0136949a..e714de4c 100644 --- a/test/serial/Makefile +++ b/test/serial/Makefile @@ -6,7 +6,7 @@ INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/torture/Makefile b/test/torture/Makefile index 8a98657e..a6dd3165 100644 --- a/test/torture/Makefile +++ b/test/torture/Makefile @@ -3,7 +3,7 @@ INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) CCOPT= -g FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/util/Makefile b/test/util/Makefile index 404170fb..5dbf305f 100644 --- a/test/util/Makefile +++ b/test/util/Makefile @@ -6,7 +6,7 @@ include $(INCDIR)/Make.inc.psblas # Libraries used # LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). From 9c4f4c4d15af84f197eba4200a36c5abe525dd6a Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 16 Nov 2024 12:03:28 +0100 Subject: [PATCH 76/86] Doc fixes --- docs/html/index.html | 20 +- docs/html/userhtml.css | 86 +- docs/html/userhtml.html | 20 +- docs/html/userhtml10x.png | Bin 1863 -> 1966 bytes docs/html/userhtml11x.png | Bin 1159 -> 1172 bytes docs/html/userhtml12x.png | Bin 1754 -> 1771 bytes docs/html/userhtml13x.png | Bin 1188 -> 1236 bytes docs/html/userhtml14x.png | Bin 1217 -> 1287 bytes docs/html/userhtml15x.png | Bin 1361 -> 1420 bytes docs/html/userhtml16.html | 10 +- docs/html/userhtml16x.png | Bin 968 -> 1021 bytes docs/html/userhtml17x.png | Bin 1099 -> 1103 bytes docs/html/userhtml18.html | 11 +- docs/html/userhtml18x.png | Bin 1176 -> 1220 bytes docs/html/userhtml19x.png | Bin 1311 -> 1375 bytes docs/html/userhtml1x.png | Bin 1025 -> 1066 bytes docs/html/userhtml20x.png | Bin 1308 -> 1413 bytes docs/html/userhtml21x.png | Bin 7727 -> 8458 bytes docs/html/userhtml22x.png | Bin 1296 -> 1390 bytes docs/html/userhtml23x.png | Bin 1075 -> 1236 bytes docs/html/userhtml24x.png | Bin 970 -> 978 bytes docs/html/userhtml25x.png | Bin 420 -> 399 bytes docs/html/userhtml26x.png | Bin 710 -> 700 bytes docs/html/userhtml27x.png | Bin 1734 -> 1848 bytes docs/html/userhtml28x.png | Bin 1809 -> 2035 bytes docs/html/userhtml29x.png | Bin 2031 -> 1971 bytes docs/html/userhtml2x.png | Bin 1016 -> 1040 bytes docs/html/userhtml30x.png | Bin 2164 -> 2273 bytes docs/html/userhtml31x.png | Bin 1491 -> 1600 bytes docs/html/userhtml32x.png | Bin 1503 -> 1613 bytes docs/html/userhtml33x.png | Bin 1679 -> 1731 bytes docs/html/userhtml34x.png | Bin 2164 -> 2273 bytes docs/html/userhtml35x.png | Bin 1485 -> 1612 bytes docs/html/userhtml36x.png | Bin 1499 -> 1619 bytes docs/html/userhtml3x.png | Bin 1028 -> 1078 bytes docs/html/userhtml4x.png | Bin 1630 -> 1756 bytes docs/html/userhtml5.html | 10 +- docs/html/userhtml5x.png | Bin 1306 -> 1372 bytes docs/html/userhtml6.html | 10 +- docs/html/userhtml6x.png | Bin 2191 -> 2326 bytes docs/html/userhtml7.html | 10 +- docs/html/userhtml7x.png | Bin 1863 -> 1966 bytes docs/html/userhtml8x.png | Bin 1070 -> 1082 bytes docs/html/userhtml9x.png | Bin 1761 -> 1798 bytes docs/html/userhtmlli1.html | 60 +- docs/html/userhtmlli2.html | 110 +- docs/html/userhtmlse1.html | 60 +- docs/html/userhtmlse10.html | 792 +- docs/html/userhtmlse11.html | 398 +- docs/html/userhtmlse12.html | 415 +- docs/html/userhtmlse13.html | 110 +- docs/html/userhtmlse2.html | 277 +- docs/html/userhtmlse3.html | 1005 +- docs/html/userhtmlse4.html | 1628 +-- docs/html/userhtmlse5.html | 1917 +-- docs/html/userhtmlse6.html | 2094 +-- docs/html/userhtmlse7.html | 1090 +- docs/html/userhtmlse8.html | 115 +- docs/html/userhtmlse9.html | 220 +- docs/psblas-3.9.pdf | 24440 +++++++++++++++++----------------- docs/src/precs.tex | 96 + docs/src/userguide.tex | 4 + docs/src/userhtml.tex | 10 +- test/pargen/runs/ppde.inp | 8 +- 64 files changed, 18122 insertions(+), 16904 deletions(-) diff --git a/docs/html/index.html b/docs/html/index.html index 2ccf61d9..7174fd18 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -10,16 +10,16 @@ -

    PSBLAS

    PSBLAS
    User’s and Reference Guide
    User’s and Reference Guide
    A reference guide for the Parallel Sparse BLAS library
    A reference guide for the Parallel Sparse BLAS library
    Salvatore Filippone
    Salvatore Filippone
    Alfredo Buttari
    Alfredo Buttari
    Software version: 3.9.0
    Aug 1st, 2024 @@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities
     10 Preconditioner routines
     11 Iterative Methods +href="userhtmlse11.html#x17-14300011" id="QQ2-17-175">Iterative Methods
     12 Extensions +href="userhtmlse12.html#x19-14600012" id="QQ2-19-178">Extensions
     13 CUDA Environment Routines +href="userhtmlse13.html#x20-15500013" id="QQ2-20-193">CUDA Environment Routines
     References +href="userhtmlli2.html#x21-170000" id="QQ2-21-222">References

    diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css index 9dc17886..55445be8 100644 --- a/docs/html/userhtml.css +++ b/docs/html/userhtml.css @@ -1,33 +1,69 @@ /* start css.sty */ -.cmr-7{font-size:70%;} -.cmmi-5{font-size:50%;font-style: italic;} -.cmmi-7{font-size:70%;font-style: italic;} -.cmmi-10{font-style: italic;} -.cmsy-7{font-size:70%;} -.cmbx-12x-x-144{font-size:172%; font-weight: bold;} -.cmbx-12x-x-144{ font-weight: bold;} -.cmbx-12x-x-144{ font-weight: bold;} -.cmti-10{ font-style: italic;} -.cmti-12{font-size:120%; font-style: italic;} -.cmbx-10{ font-weight: bold;} -.cmbx-10{ font-weight: bold;} -.cmbx-10{ font-weight: bold;} +.pplb7t-x-x-172{font-size:172%;font-weight: bold;} +.pplb7t-x-x-172{font-weight: bold;} +.pplb7t-x-x-172{font-weight: bold;} +.pplb7t-x-x-172{font-weight: bold;} +.pplri7t-{font-style: italic;} +.pplri7t-{font-style: italic;} +.pplri7t-x-x-120{font-size:120%;font-style: italic;} +.pplri7t-x-x-120{font-style: italic;} +.pplb7t-{font-weight: bold;} +.pplb7t-{font-weight: bold;} +.pplb7t-{font-weight: bold;} +.pplb7t-{font-weight: bold;} .cmtt-10{font-family: monospace,monospace;} .cmtt-10{font-family: monospace,monospace;} .cmtt-10{font-family: monospace,monospace;} -.cmr-9{font-size:90%;} -.cmr-8{font-size:80%;} -.cmbx-12{font-size:120%; font-weight: bold;} -.cmbx-12{ font-weight: bold;} -.cmbx-12{ font-weight: bold;} +.pplr7t-x-x-76{font-size:76%;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-x-x-76{font-size:76%;font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-60{font-size:60%;font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7y-x-x-76{font-size:76%;} +.zplmr7t-x-x-76{font-size:76%;} +.pplr7t-x-x-90{font-size:90%;} +.pplr7t-x-x-80{font-size:80%;} +.pplb7t-x-x-120{font-size:120%;font-weight: bold;} +.pplb7t-x-x-120{font-weight: bold;} +.pplb7t-x-x-120{font-weight: bold;} +.pplb7t-x-x-120{font-weight: bold;} .cmtt-8{font-size:80%;font-family: monospace,monospace;} .cmtt-8{font-family: monospace,monospace;} .cmtt-8{font-family: monospace,monospace;} .cmtt-9{font-size:90%;font-family: monospace,monospace;} .cmtt-9{font-family: monospace,monospace;} .cmtt-9{font-family: monospace,monospace;} -.cmmi-8{font-size:80%;font-style: italic;} +.pplr7t-x-x-70{font-size:70%;} +.zplmr7m-x-x-90{font-size:90%;font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7y-x-x-90{font-size:90%;} +.zplmr7m-x-x-80{font-size:80%;font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7t-x-x-80{font-size:80%;} +.pplrc7t-x-x-90{font-size:90%;} +.pplb7t-x-x-90{font-size:90%;font-weight: bold;} +.pplb7t-x-x-90{font-weight: bold;} +.pplb7t-x-x-90{font-weight: bold;} +.pplb7t-x-x-90{font-weight: bold;} +.small-caps{font-variant: small-caps; } p{margin-top:0;margin-bottom:0} p.indent{text-indent:0;} p + p{margin-top:1em;} @@ -158,5 +194,17 @@ pre.listings{font-family: monospace,monospace; white-space: pre-wrap; margin-top pre.lstlisting{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; } pre.lstinputlisting{ font-family: monospace,monospace; white-space: pre-wrap; } .lstinputlisting .label{margin-right:0.5em;} +#TBL-24-1{border-left: 1px solid black;} +#TBL-24-1{border-right:1px solid black;} +#TBL-24-2{border-right:1px solid black;} +#TBL-24-3{border-right:1px solid black;} +#TBL-24-4{border-right:1px solid black;} +#TBL-24-5{border-right:1px solid black;} +#TBL-25-1{border-left: 1px solid black;} +#TBL-25-1{border-right:1px solid black;} +#TBL-25-2{border-right:1px solid black;} +#TBL-25-3{border-right:1px solid black;} +#TBL-25-4{border-right:1px solid black;} +#TBL-25-5{border-right:1px solid black;} /* end css.sty */ diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index 2ccf61d9..7174fd18 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -10,16 +10,16 @@ -

    PSBLAS

    PSBLAS
    User’s and Reference Guide
    User’s and Reference Guide
    A reference guide for the Parallel Sparse BLAS library
    A reference guide for the Parallel Sparse BLAS library
    Salvatore Filippone
    Salvatore Filippone
    Alfredo Buttari
    Alfredo Buttari
    Software version: 3.9.0
    Aug 1st, 2024 @@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities
     10 Preconditioner routines
     11 Iterative Methods +href="userhtmlse11.html#x17-14300011" id="QQ2-17-175">Iterative Methods
     12 Extensions +href="userhtmlse12.html#x19-14600012" id="QQ2-19-178">Extensions
     13 CUDA Environment Routines +href="userhtmlse13.html#x20-15500013" id="QQ2-20-193">CUDA Environment Routines
     References +href="userhtmlli2.html#x21-170000" id="QQ2-21-222">References

    diff --git a/docs/html/userhtml10x.png b/docs/html/userhtml10x.png index 5db77543c69d274ad7afc3ec02925852d8ebc413..11f5ee764c82014298361322fd41af7ea52846eb 100644 GIT binary patch literal 1966 zcmV;f2T}NmP)88y*7bTCr}*G1C6y+4^@z)g%DzHbB%*NN?Xp_k)7Gh1_vg`LO<-G1D%VTGB*>sR2#Cf9(j|wZey|IUh3jnp1LUCQ zoI@4rhdyy0I5`|us%VL%Wnx&hV+L%PoSzm3d_dksm6Id+0HK)|ib4oT%m?B8ULv~3 zKU$eQlwxNy!v*Rxabc9a~+b@u8-nh5#Sl~(DNyFRoQejKaIt`q<7hb@tbmbELzIx&t!72D=^<` zUy8RUcGSG_+RO|2ng4_b<@n`yA6GnF%?For=vcyFj7OEhP+GdKNkf*W-cG_yp7ZUHpUv#aOoLXqGJ&>3JO`l&`NO2m zLJ(>p-x8EDy?;k1Is7`_Z9qOwmi#jRQ9FSCLkMj1DbHcc&&#Jfz+5TS4l#2Db9N*w zWzH<5$-Gx$7awwR;|WH@79hRjc`a^@G2T~POFT>nL(<8XR`%D7d6j6PjAp`VW;dm{ zlOX;lIn~ReJGFU#X()f04AZ(U9Y6|p&=+dw3t=t z2SBDRi|z$_#lcz~muL)DIwfrarzcEncIH_;2Qn-5+J zq@&hW#ANZ9BWPs-Dg-5ASp>D$qI2%y5Ri|Y0DbeKYL%RNZ{cI%aj`e}LuF3#mJ%&H!Xuod@9>^? zkrzPnVMkE8bk3Ih`JfD$*tA-*Q5eA_$ohw>iD$4X_jsKbg*UTtRSzbae>Ml6ua=*( zHk&FRocIaL9c2z86)e5c}(o6IgZ9wU!&@a;5am2Mvd~i933H!vq^j}SS zP~_6_q>xoL?xlVIU)s6RkC1n(9T_`wh)qX!YL0V!a5+6JIVXteC>gE=&n$Yw)o~VV zwIjfmd(Y>e zo)aPKPRUcpwZd9EvM9=TA6u}94`=t>K-n}^fm$X$g4%Fk%QNt=3aUO)Nmy0o*oc4E zmQv@i#*Rl}As>>Q7x@ik#}yQwQBAnFXRGd*qLcd?fTOK3#_43n$$eQ6lK7cs&OUQio*!EGxcdP72kHLb!RLEp?arqngm7+V_s5VN#2BBO z*^3aut*L$ONVsEWKdvE*F5QI??t~C7LkM3&2rt&?tA&wVNb}vC=w|jT#`vf;5fDQ7 zq?KEO`mf4@9h;!3JG^a-@xGa1j6SV3vL#&Dl<0CRLo1#TzD8n<4?CW-K%Uf#V8=JZknRXc*>|nBms-Mw%`Cb$F|${@ zV*2wrvAV3$j+q##J3^P)`kjI?Tu2r@gm7kNznR$`R*fd|vzh(V%5canVNL%sv)c?R z#>jn!2>6HENYLiNL4P0ori9-8)y#e}vo}2()hn}PIo_7Nlw=$?%PLQeHmhLEXu%ggl+ zi=?c_yJZ~|aPD=~M!xrQuG*k-C6#ztJ}bX7Hm_Tj_kAzt*H>@uGtH}>EAv2Rxcl5T zJa<`px#q;;PG#EAQSZ#l{E87Uvo9`Z5&uB$Ue~XBr`8plMmCn-C+#u^7AVi?BagjL zceH`Q)ZEgTC3D(=J72t?F;^egTrT*0Z^#mP97Wm*a=L}2oCznWF87a$)eR7ww?REt zGwmb`P^`*aM=7p<)7u5~?xl)wf8{$hXx}$IgHYQD-{*H7U`+Q)3#>UX&U(IhB<5Hn z&q*?*-ce>s7MnKTOU4+fUtI1J00Fc06_^A4!U;l<*Z!bOcLkDXC_EU(61hP3mqoo^ ztjUEGx}bQuE(Vf`-Ee)L(mNCB0j~KVY!S$%Vj2FF8?85;^pzGug^vhDietgFh~OZ! z!s-k{t`isE*WOzAST*GHgg7N?;v@4+XvrATBdf05Hz5pG{O_402OPlp7y&X(#y|$F zP6%}A&XEk1Wd73Iu0q!_Sd9xewQ2#RVwYSiqXYtYJ~UvgSqOoZi={}Xo*{&Xm6dD4 zg`#&yot6$kn@_?A#sMkjfS9+npj#+OQ{sr&H44iN!7)1MqtmO&YI2B1Xwj#;PE_8Q ze)(Xa=Hi}NTI|I3&yauF$5^b%g)+U!Djc&*Ce|E;ER%0&aH)LQT$aExbOFnj+#Jd; zCS9YG1P%zwNu9>Pf*X8iL$DC9O3xEQ=p0Vr`S?zVkUhdo92q>keM4qV-N_5_tlWGv zr`n@W!D23y=|v{!v2hogmI`5eD1)#?sszQuElUX5n(kO(lv^}F_NE0aMsrLxy z^kNkbS#%U|5aVhfxF&a-xUC%L3%pa4o%&tzHRT*56Xy~7bh%ObYNjY#kX2$K62@E? zP-<4}03dKCaRC;2g5*ocbJV7ONAiJrX(1zHNPASb2N*a$&I3rE$E2{YUU+@FYefdh z7-2tfP|VNxp6-<8lP=egHurN(%c(`f#_UuAiz zbI`s&=c*J|PGOeM`o5DM>w7-unHDYHf`O5aW3fXxxH z)BM#AAtPnHOPk!&W={V~AC&QoItOV)=B0jfx!U%=QVLP;qC-BpuFFN^YU)mNJxCj? z&%_CDLt{ZcjJ210OSs_k&4Vuo@U6a2&8e2-(t_&Dv6pr0?2h`!Y%CWxCAw0Er2dEzr-1suPkG_g!3J4>R7e}cQ^x|`)nE^{8EPVKD?tmojt)fi0GT?<2pk9`=)g*4wl(7$7Q zD8>7J==b?M=3#S-z9R#Vw(mKv3FS`!c5Dj{TGFYl4#_yQ;dkNnLEDZQ*e&|$0E_-n z=~hl2iKFug>5gUCWAqb%;&V diff --git a/docs/html/userhtml11x.png b/docs/html/userhtml11x.png index e168a57456f7be77e4e04b07a3cf76eb4ddc8963..223013a613e0d70a767a9230f6a509b804d669cc 100644 GIT binary patch delta 1165 zcmV;81akX_36u#TiBL{Q4GJ0x0000DNk~Le0001U0000L2nGNE0Cn!sp^+gNe@00} zK~!i3?U;*E6hRO`yD0-eLeLESL;z+08Ud1l6cJF80TO}5WdKH?k^y8Ol0jQbTqaZU1}J%w%d*^@WJ+n%PO;-m3aZL>6Xt(>HeA@Lu^jo8Rw~=GsZ7 zD09j`5!n=xi!pmLo_S;DOg&aae|ALVbL=Z3uSDcDzTf9(+g=+ynV54CIcVEcRd-bN zce1p<)NqmA^0XATY5D6V9Z{Bn*kjaco|~%)Xe}>%y}` zpZ`P)lPS}~CI!M(%UL>c@7z*Va?xm1_2a5@{}(D{QZ;(6qCnyMxvJtxe-$W1RZo2! zMM;IKZZcj~fBN&AdIT&wTI&p%qLW@0(o~96|t&bsH)}ib=mUnO}Pzb z!xv$JcV01)n@|+OzmAo#Yzh}MLnzw_HFB6+{E?X*dWhT;Nx3iQt%!Wje+a@5MC60d zyNzcJn9n&!;l@E8z8f|1e*y4T3;AN0I1o;N15w}+wJMp9<(Y`wq6FUr&qHY}j6xEw zG!*qResjXozllhd=gjQV!)gwN&DZ>g96tkl(|@*wV)kR5!MLC>6bx_A5 zm-Y6)8rw#;0E$9b^mA#$>>0v1MG`KYGZ8t-gpOs^DoxgCNRBZ@f6vJF!63RqG4ls2 z(<26kwx8{>R^l8{p?gtBKe{9v&QIDJdSE;=z(P=D?N-JGlG+9LUX+e-a__;)$d^YV z@&nHYoxsC3`6uQ0lI70;-lf&ZNmo7c zsFA8!_dY1)v=n}^&XPbp?52&q0E%$UXAWM4vf4;hYKN5q^CM69;?ZGWB!${pk;#0e zR;xs`CUG-Ua(65TkEoFqI7gw-3@omB{nl5!P;e!$EUXuBf0n_a7Th?96y*ImLFLXx zNUqolBAvHsgOwf1Bs>zoOQfPGdOuIfsTgt)a21NZ^2JM=;gWKk_M{Eg;8FmgSL-!k zeyzV9f_rGKKwAgiqti=c=*QWW<(Xe2gM2zRP_i)WYeV%HfUa!hIN5LyguQYaLg8~V9Q z#!na?Ww_y)Q^BEWUsi#6rI&uJ5XDBNlu4E8{TlgqV{lT3Xj>kz-5RQ=gPNj3SdO({u2F-zN3q<0!bIV3;cuaKEy{ao&~AOaWwO f&kMI`L2<7?l-myS^`-Yk00000NkvXXu0mjf(zGi{ delta 1152 zcmV-`1b_RK35N+GiBL{Q4GJ0x0000DNk~Le0001W0000K2nGNE0JE%eLy;jEe>q7+ zK~!i3?U{>F6hRP%yD0)d%>Xh$%m6X~$pA9IG6D-S5F-%C05cHCKr#@?psjDJdzqb^ zeNk|$6o1v#-R#b@Uw`+UnwiWERoxYldo%knv=>!95|IltyB+GgY^dtCh^(2}1#7G7 zfrwn0+0Aq8rE9&F=U8kCd}BLfe-sML>_kMqs_NR5b(RG7^fp_oY(F*1`BQs#rHaV0 znH_eWR#mUvJ9E(gTmIk`513V{s(OsqJ#426!fY!nN9c7ge?@`SqP=V!nAw}YMa^ul z<2}aksZ{tYWIj*zNJjn^L-p^>{@Ub67!)W~+I2P~z zMW7;yh&udFYUv^l2B;OLBFWilC@=?*Yxq!|BfFyeC(w^ z+wnbgf%&oSQSiApqmG;jIK`J@?Jcimkw27lR=l5t6n;6RhXgF8e^Fv3Nr^II(-jN| zzpc>gSXWi7@H-o=Bt)!L3o#Vy_ihLn2a4?i^nisA!pkD+;lBBn0WMDRbF=?MAMO|n ziDAfbtTC=;w;c$OTb;h!4>oX8aN`2tKvg~UP@QgzRCTY18yjQ?#-c~vG7Z5KBSJa* zfEFGD46|mulTbu7f1(T@48IR>Y#!x$k(V@B@R)2AJ{^Q#C`1AP=kg)($$__afeQu< z1EoL-xpn6lJS@skRYE#@z_Nj#ZT_yk;H` z88r(>u=$l*1E&HkIH-Uux&|`E>Yhq?lpwT03A4cEbnfQ^e;Dpnv6<#}jf@!DK&C~X zUL>WuLhza)Ple!Hoa7rM1C6k~l_?{@m{PIy@8UzA-(sPj>UV`F)~c38HMqrNbcEtL zfaCB9nWNCgu$?AS66JD@#EJ55G$Q=s6*og}4wtg9FP_R87k*=1t~?ScI1$i?vM7`u zz?)kJ67a-rf8Xc0tBehx{2@bZ!OTuomA&)Fz_JmUZBne)r^qvm3^}F9R*~1812>PX*C| z#Ah<_*2#lrfKv}yH#9W*taB?Bp3Ot|C`6($rbPPBRsm&Eh7q323yV$!r_KWSLscm^ z;F2lIg=ZFu^p^(b)ye0aRjI%)DkzEIp24KYt+u?T{8vzxSF{(dLZ1-T_5K2j2Fi7^ SYyIW`0000x#u>ajx)K_`UXC?FS@YN>VW{!MdT)>^d(T50PrRM-Tr^0f2z-eYwjEk zIyQ5!@21b~gPv@(dLSTu7Lm7+&?%+gQc6Emet%=v-t!-mI_|(p>1(s}%N_bLn+cy= zN;fuIH4s?3PvP%suEI8JJyccJ-m_8Fm%CnjYAn$)VyV6dfI1R?UDBJ4#z3H|uWfBU zh_9+2RF#M}Lg!TV!rD>5e;ZNN2een!zwP&1*BYeumwr$}>aVJwEv2f#wJa@mfpu`S z99fm6T8m8U2&(!?Ra0(5vmg4_Yy(U5?UKmnDmKEu853Xgj+)O?(<&#ZNneLkveB72 z2afT~D)X$x8RT^2vv-;ql>%Q%i2?P50qJXY6X86i^v2TqpX`%Kf60#`@@IL{gNTUy zV%J@lZ49pEJ!fHog}TGdtPA(dKD0KfIyyM9eF_`qThQFd6x}X&Jip|xW{<#Kefn7TaTs$lW^%^QMWk|e^{nMkb03l<7i~>utaO9 z>gf1${A+*}S=rOzI!Ew(v%WQKreyg@R&ugrTHNxv>^wR!9v-EX2&lk0vQ>hB`!^Xu z&1bu^5gCEQtU(ZX=O@4h(;$i&7bj+54qCRjgB7c!lWJ2X^bF!bOz9^Uxny^TX zGveH=?V7Hue?TVWj<7G5XbszR%)uT6_1s<&(UPnQn=!qHbIXq+s5u37pNCwdsw_oI zu2M>4#=4Nm=NRDVmOlsGnf>#3qQCjE)0K_#KtRW9#=~iyAye=J2eB+&V*O5Lz>KgF zRBTXIv84o2v=&_*oMYqpH7spoEj-jTvPgdl?5wrXf22Xyw$&+{^$lRR=raolO%#J_ z#OhDXyfvTP3z5&+auUtPAdnRU$4}qcxth;*WuxJ%LDr$#`h7@anH6h;$wb4Tmkd6u zBal*YT?sP|gT2NulWdu}xR!f2VOhxwkzsjo5-ia=V@k)7>{$e!7G~*Na>zk@AR?a| zCch#RfAqF_cF4JCb6i(8^3R9fp<4P#WE|48oU9ml?!h2~Xh^}agh3q5PDI}!vR3Zr zaP6%0)dC9{%250{0hVa(OzD_I<(rK{c~F>Qw!WPc`5c*TITrW|P|p0ci+r{#8+jn0 zL#!oh&>=oQ4H1!9#@2NX&ND6_ETtnmC`AK4e@h~04er5)p`i*}Yhc&j+P~0(Wd^s3 znMY)a)=sFS?ekzi27&l(R?U8Io2sUYc-UsPz8w?!9KK$T2hNqjfpf$DnS2ZwUD?P3 z0fV_Vg9B?K1~nU0SaUyRU6(l+-<~PPu~CJ4kSYzcPzCNY1e6NQ^aLH8w-!Wz6gT>9 ze;Xe?m>roVT02uZlD*-W=;-TI*4aFFTl&64-yVs4jwRAK9xOwpZ5brdm%p0Nc4ecX zSXkK~Fk;TcELO$Vg-rz=(sWh5CaWlG0aNb)zTPdbYh@xht;$qCw`uKc(QzzrIo9_m zI1envb`kA`q}oC93u!cz3&?IVxxZn7xhsS<-_y$00000 LNkvXXu0mjf0Fhwt delta 1752 zcmV;}1}FLJ4cZMMiBL{Q4GJ0x0000DNk~Le000340000K2nGNE0Eu;2T#+Fde~d{) zK~#7F?VF2{)J717rzrx!b_PcV7&3qiz+?a!;Bo{m$iU|acw}&7V7Lr?85my%U!+Vx|0Kfiqvrt0Wv)YU(W-`*O&eSZ5+*}9EZ4+bHGw=u@oLsk)yuR3bw zaQ>h9j_=fUY~-wU9q_d!srq^&C$rJ2!9YabGRlvLKswM%A1p=CNPG4)f9g2O7Io#> z?r;`(;A=~<2OHgA>S1T{D#rLj?b;aQi-F?=kzakFI8#P-oWRy}z0kDlcEU5vqT*{y zuz4G;HZ#ydN^iuUg4P(G&KWf{O8+l7R!7e!cRyLe`933Lp$kjdXIz_sSJMaFWbn`YkvtL{2W5~SSc=2p{IJE zD)$rMn$?)1cZ1f0I)Yx$Y7IQ3KBM-X#xHdnB z>E}~BNAJ;X+kU>asK__Vh*$Zs{BNx{P?YKIuWjegS37U+F|zeQTS0zSVl~Mq8xkEcu#gpcKFXJo{x{?qq(1Rf6&{T{?glL&!Bebv|iIj_jHu9HG7uCx;63;(taExq35#w+Kna{ z%kE(jmHVU-CyTz_IhqH4(_43FG``XuMBn@x5BFz;Yr-PEy#ufYt$Md=J*1;T;Qrk< zl*jtc1GXkj`(Ot$Ch6+I-i($a()rF7sri~7d#~-r$8Mb8e=rjus9u_%XQUZI23jBZ zy0RG?r8I$u)afJ-(HXE%P_gB_N9wGAD7_RxxeyVeDT0136bkt*KRpFr(7DwB!nBNl zFa&9gP1~yIRF3xX8Y>}F; z*)j7kA5@c;f4RQehrqvJwhJ5G&)$rqFq)hc~Qyz zJ2G*Jm`!gbj-drZrgOA|sofk1Xr-VxiA>)yy_>YI;bv=$ZhUOCI|=%HmPa=S1D!<> zL_D_ly^GJ4YpoP@)bl>7mVl#v zv5OS;m1x#=?=<*Y$xha3y8xBl$7Wu+&+fuTDHv#;N96L6&O_eR%ehqqs-YG=nLb%3 zHn_$I1kO(ZqyYPwn%(F!m#?aAwE~<-9Vsm@YNyRd7&<)# zMsj}O9F`|7SQyMgdV$5z0^3Wy$G5_@28Q&8suE+o6cO6aKRm6)sNRiQ!;p^X!b(93 ze+c@10k*S1h)s&K4-L|jbloc>zBXhh_V)%it&>qJ!|(Cg{N0yb*r;1guqyKyV?{Kb zj*mK$c1m*iB88QV9vXcq>J2$`jlti&3)E3^XDKqKH4N#fy5vE+>3&D*x=V(9ZOBeB zMqm3%RPMt7bl`Javr%3%Sc4DQ3}PxcfBJ#IEzp5l&f5{k=;)cP>xp1}erSz;Pi)>s zYX<|STD{S$1uKfRELENfvvl+If1~>#DgL4X828F)SU#;rd z-kzP=V|OiWNu%lMN4;M?#og@+=Ydknb2IyT9_lSTX+N)UVt8+6FWmjxiRtdZFFP|= zI0+~l*d;gtaCL<9!Cz)mMz{#Lf0l+bKq=*!nLTs&f7g;PrO?!I?g1Qn_K7;tp{LDosg6KH^lNx`C{WJv+TH)z zEb$qEEN5o-?*8|&Y)B{Hv!0HDiz^N4sA-65iqjY+0@TG-P)fOtd;8CVQp!y!h0HaA zo5yeh0XKxu&GA5KPkJ%x;luAH6((2;L`( zz&j}#Wj!eE5P?Kx)1amOTvcK}0uT*%X??2e!pE2^4reAv`zAc1e>H-*7Okp>iqg$Z z)DkGukm`TK*nIE#TX;9>4RjSmj{tb0p(J?t1&uRgpjY~mCwj03?-VJDOzJR3nIcewNo*4VdATWn#@^Ef?{q*<+-J?_?cu{+I#GJ z($x-+($7*h2)*I(f9M@wdC9$_!@MVtRieAR z%b)}qbkJQ5(u|`w9^#DyVwMQ6LMTgg4Iq!~u7Okdni?kNe|vM)F@m3X%b@VJMvnPcVy1do-J!5ydeN79qUyAAT&zH+F!FrW(=cgy(&@$ z1!-@tI$sA*7@qiy^ zK=^8O%~29?o_N^DvpP%6ojmjUGsemU$kym|A1yVRWDjJGlEQgprb6O0sGl&hs%q{>t zarfUFRAYd9gV7HE3}$u+;B=dee}ULVhz-Ha&Hy~?H3&0%1K<^auTp&H}J`8=NXXrWr@Ke3@Wx-=5Pqk5xlnWUFa=lPi z(-oLEqwVU!twa@hJ`MDj4*X-SlxVo7W^_=!#C;_A_3}vjO1^9%2Zgli2R>VCAJ*p2 z+!6U00Kc5EjX8{*0)Tz*S&T*hM!%$|)hBw=0XWgKl;cPYe_OS|^BA{&0q}D# zm1eKqq-o8UdbXY~F<0m|T7&krsk59R*F>T{QN2XtzasBaM<5yZTJ=K@|6rUHZ53-e zw2M$iN`?VY(PRL89*dT;t9a6g_(C=Yz0bL9j3Kl9)#fCFEaz9RXqI{={b~oI zCr`?6I0l_E@la~ye>m-x){>l5va&-?t)Y{D78KQceMrnvx!MoUl%h>fEtFr2Cl^xi zo2#ETVRfGyp08&NV*~nH!3mxWpJYCW1gbTn?x>>_i><-IM5L-^ z)?L`B8V|f5TVJGO8JB1F2<~V|m5eURu68=U(!-_FM~0@sZJxE*Y$%*dWFAthJWY z%Rkyq=6a%TVR%rqaDwe)`Xs6rYGvyeZB~P4>thP#@PiH8(A-=f4NCS zK~!i3?U{>>6h{z-t1Jg_*cm_u7-v8ThnxXq03rf(Az(r{XMi)XA%i0W3ujQ)*Zkdd z_fF4a_jYeBZAp7G{i^q?=R6|p0;dOee`;pGnc3^pQ=bRFIK{(&yMHvZHxcpqVK^AW z596f^91D~s>>M2exH!ebz*{rBe|Z?v%W!du6N9@yHnYbO@#j9I$ujPK>+a$1?}aac zyI;HeCwKqq?tAwtm!9IpfFaH7c3-Ce-2J(5JnGpO{+}Y^MZdNdE}7zl;O`6q7oMsWu)hQ6{QAGTU z1X-bSlot{4$D(9s24p%jyPGoPR-lnorsxe%AU%x;--@#VK3<*EPlmtgc`~z?W`?uu zto3{AvCg5WX8u0MW_E36f6wP|${`M>tBi>ru6langKTsVozhcqh0#@})a`1nx!zRs zX|JwG&AoeK&z1J!8yIHHxPs&)PHl?h`E(v%{bC^Lh?hXa&7awKRZhk&*` zdqFYUqcXwsVb(O4M?hd634QPY=B5QwjpWlb_S`m5Lbe|H&nl6M6oh9@9XpmARE zqE`kf=z6^Mc#cNGmp6+L#EMYL9y`WR)b7k@TnX_v#+#-`Oi#@fC#i7=4=EA8Rw-6I zqnxZf&hGOoO7D4^8Y`_sw?wfTzY=6q=lZ!dLDHYuI$olY5TbAytOx|5QOefdp|BOc zqF8w|NT=qCetDf=X)qvk=%M#h|~H}jxKZvv;LaUbtXG!l`jOf<%k z@tY{Fj5|!t8DA}cQs30vWIrK?m`tNJ-qE}GJgRbg+F5SN$~CnKvVMO*7SE*rMo;~| zL&j@pBmz@qq7txo6q?LQLuO`$uQ7llYi{vw<&wjPxSm9bF4lB;bxoX%!3+KvI=tMvcq}gq`@wYdOoxDxs^sD zphm3JS9*wwAq>;cGuM=qo=M@WjZDwNxiTjjL{w3R=5iMe6Qf^)r>9?!dxxvnj`c2s ruF4XUAKjG9AfD09te)5Mzm>*+ELxV8JFOH*00000NkvXXu0mjf?7(%U delta 1211 zcmV;s1VsCX3c(2>iBL{Q4GJ0x0000DNk~Le0001o0000L2nGNE0BlM9LXjaDe{)Gh zK~!i3?V68m6)_CPZNvaYYycbZX9L&(#00cKzeGvy za=q)j@?OQWbh=C8vmM9&65o3sLa;q;kKFyMnLXQ{1%0~PAKKGRle@n$v$GJw^PARn z9r8VLY>(XihnYPNAzWm7i5GGUY4?Y{Y&UpAO{)Y?nk;#bw5}#(H$dD z<8URLsC1}!TI%)Brk$@=1eJ$nmbv?>nf)@ed$VV{BjoNZ+V?fi8uATEe{xbzuh+kn zc0M@F>|+a=X7<|5KoG{(%D{g`*t_v|B6_6zTX+ARI?e2(FgDbDZJOk;%~)Pv=Vrv{}MG zmsogJ4Sd+@5xUnzy56~he<1wUGh!}9+x@>+bK&?7mstKS72JyCH=$8jyCcKf%->_|GBkAJj|yH^*Sry zOXwkfP-TN`kdt+YiQ*m)z>q%ra&RWSf92gQ>Wu+f_D?-)o?oYU))9HLl&-8yU)eH3U_`sG zB{a|&Fjw)98QzhbP^UtOGFwVrg)P-0^-!y|Lt6?#QR!>>)@p-n35E4Mi5jimvBbM6 z+oyD8!!((Ef8fDj!C}e(4nTPe(SBF)x093%1XX-JgJeTGv*bWPFR0SWFAr7iSld>H zEXv?k#@u$1jrrU#^{&tc-Wa?>w`v<)GS{_qrBW8>LseO%Ns)aFD$B@L)m;SaMa-<8LFj$EVB~K&_C95-Oi@gishc zb`8*^wV`d7l~+5qW?N`C@adQiAqReD?h$2GcH?)h)waVWy8gSL?D=b62x0J%YEMJ@ Z3m$L|5wumk2~Ge2002ovPDHLkV1l`pQ?>vA diff --git a/docs/html/userhtml15x.png b/docs/html/userhtml15x.png index feaec7612d624612134afc1110c39749b8285ae2..7e4a6663fded9e1764626b3948c2da591b5e330f 100644 GIT binary patch delta 1394 zcmV-&1£XBVo7YY>!1^@s6xAIqDks%m=K1oDDRA>d|nvZcDH5A6*^H4xY3D7}+ z3Sv5lp#n$;$+&_H>A<7{Chj1n0!TWrJ0Q4&$NZM39j#6)t#rG4p7@)&N$yTsNuR#= z*C%Esd%r~F8xeW6WL?HFe#zKVk4g8LzCU(^;bnTTA4_s9O*!&}dqOSoR+tYba`^ ztEza#0LC-#F{8*^4^GMTuEOJ>B64qLcLkyl++94z|9`KlFADR%SS;kN2PfltSK$$g zMC470Av62k%)ZNvdF}HbBdWah;FMf{?J!GR>PP>6GFL=(JM!CDMW>TP;SE$ z@E8;YX2u0RM*tz`a!+z;X0JU=UU=yr;|CG>EB+uLh*m^?_IaPfcL|u!KAYe|CU3lN znz#WlaIYLOB8(k_#n>qxhz29)juLNhhFE##B5cj|QhX&MpAn329*>5=AOZ0VaDgGJ zZ^LJf;6eTrkufhbvzv@1lF0sl5hkYaJ+StRLO5o_zSRMk%VKMG&7uomD z_466SDDj3NVoXix%T`>^fjdagb{2hrsJK`L4dg`MadB5X*e~*(h`fyig2hfMPM(o$ zgfUr<6Rm@IOW~OLi-qT&7^Cm|Rt6p_F2m>JZ9NcoSe|7oJCdk$>U&C_qvXAIyv4p&74Ovfih2UNeP<6Y`}YCygxqApuTm z!YcCCgSEMy0q3G72m0+nPjnP2FFot8VfQjR2$fQL>YhVsMgQg_{8K0Mc`IG+P z5_rBjDSl1?PqyiQRbrHHqA>K%8{A{^9buL?=jx!HLLarl(`H;3z`c&0k{~?9lX|EC z{=|idXnGPt&*|kwq*2n7yh8xbAnXp7oPcKx;++AW43Tposb~WTOLO1Va2<^2gdlQo z0h}@9ZsgVQkAdWJ>=JJW?Gz8;q$G45!Wt>I=6V9x#YLolnSFm2<$bGXoj=z>bhkZo z_n6~GwaL$-T6pu{)Zy_c?z+zIKk1s~y5+3y&<^fAc)Y!UC#2=l1LoyC>0>|(Z}5b7 zne%o_unO1i>4wzEQ#A6BwqadmS*e z)`slO%2c;iOuvUuBHUIzs07*qoM6N<$f{Veb A%>V!Z delta 1335 zcmV-71<3l03(*RY7YY;z1^@s6e6EDWks%m=14%?dRA>d|nvHSRMi7Q~GcJIT4(tvb z(t+t9gbHGJK!yq!=pac2!E``UL4Xc$2Y@@+%yYA=Ih}RV>AoMu@XTliedwgSS9|*> ztC`8xsOrxma%*OPFU>_&pNYsDGrL*3b_-PXLPQ>z*&Cj(s+S`2&dfgSV?JxN>ZL`0 z<6YPJUGL=fg)iW7i_w9Zy%Le%RrSHX=CEg&*Td|d<#{)2wd$o&<8oc)`7E0oo`}3O zv#Z)HRrS5^z#OjsGymZmVOFbNw$OM}!&B9lc&`P)2&tnG9AVZyz&AmoR=pfu-UBJBqE=tDo9m5b#L=gM1J5QW`_3}aD#a6_egls8t}Y-<0Qw& z{vskjipcd$;X$QH6`3l?6)-O=_8ea-CF|9?rV_oOU^zOx*ELE~A% z<6XGnoQF5?a~5106zzexF3hViI2SVK9}#(h7%s?Jk&|KUwHCv3Gy6j%8TRP;1@A=C z25H9E_o8{g0q~c8m1*-(RY@JlwOBWsjw6`U3c^^|a4?NqIB{?|mMdWkcA!rSU&< zug7{wL0)I`o74*YJ!p3AB8SvC$KN|q4_MbtXrDqY%})1N^kN1>n@BpNg@I>e7XqPn z$}63!>a~dcg^&|P1kcKiH=x;i>yyTSF}@n40x^$Syd}einY-VypaGtLubnldbip@p zSy0uq>g6CBPcUl#c-w}Q;OZpnsPmHfdQc00fItyCtB{kaDj|cNoxVz_>XVsVZ6JFg zjBWawv4n?LzIZSX@}VBsJX0HNHAQs56L7FWkHR4|u5d{Tk=YbZji`5(w^Q&0EmbB3 z#UkDmj)a+qaZoJeu#;i-r43PWU&=DNn)6&p#~e%w{EXj8L~p#sPzysmYqBLXg?kY;24QzA*x($YJ4QEbz)IC! z)yfUoyeb~xy{O*(J>wu6*YH1<_#EjTpU6!#)^UDI}`(>_#j6E zuF2zkfOj1kap1*&&eLqNVbmpvx3pPC(56vU=FT4*Y(Z44$@sjIMbp>}XjOXgs#Xpj zu^dCkfZy4icQ~ZRC0<333p@TSYO6y;zVtpjQiGoH6g@rTTE=)WHQZk$6*crpo5t6! z>(z?q*Y3IW`<%wD>-4C`W=hXv9RJR9ye)X0dB(NiWhoYaR^!d-`^GL>_0p{|cp652 zjz=f-6QNR++uHC5%Xye?!WV=AtqQaEoYh*nPK4Xl>`7x -
    -

    +

    4The string is case-insensitive

    - + id="x16-136002x10.1"> 4The string is case-insensitive
    + diff --git a/docs/html/userhtml16x.png b/docs/html/userhtml16x.png index 3f5b67d75c1613945ba8539a88590579ed382db8..19ca0c98d80bcbc5546828b868875ed183531db3 100644 GIT binary patch delta 1013 zcmVjiBL{Q4GJ0x0000DNk~Le0001c0000L2nGNE0A@LnRgobWf3HbI zK~!i3?U;>C6+sYyXNU!$C1?kT6(}8G31|lpD^l; zcYEQ4_a%h)?&i(@%{eB-S_q|;5Fsk}NL_UY4s;-I1 zPJHjl*s*49Y*qcFs^>j7Y_1TYf2wNypK6XTrc%5pzE~oIhwLIx9&OP}BKiEJ~g^-n~u#~R2t^3=@E#_E~^RV8!niO5?K z`6VJa`6SfHR@H4)z4E~e>DhK3Jv}ceR#gvGl?hh{WL917stSo9x98)Mf4-&w=b0oe zcH*0e?0PrPJg19nuaRsBHFDL=u9LSBS+!;+Squ}h$Nt+Akx3@&1F8+HuDxPX)N3Mr4XhgV#IPhn9a?#%lKkNP!k*zeJS>a{x#LV*A z%Q4fl-YC$as{54FP?V2ekv=x!rAYZalm>AE4E;69wxACuh!h1Fe|x=Y!ifCr-J|eL zWPvy)y~LvWc9N5J#hsB3{8Y7+!GNPCuulZaLby)$6{?Mju|4H608yF;;Ri!qEQYK~ zT9UqMXkQ>iX~@sAcaMUsB4W61aG1khf9T;LA;BM^E=`8%nh;pA@$ j{%S05c4>HXV=aFG521%W`~tz}00000NkvXXu0mjfoUQ2U delta 960 zcmV;x13&!z2gnB@iBL{Q4GJ0x0000DNk~Le0001b0000K2nGNE079oJ&XFM)e|kwo zK~!i3?V0gW6+sM#6NUm9?La#Ktw87iumkBp#tIzl0IYzK4xj^t4x|GeI*9Y_BxhLf zj>miZ^nASUALfp|>}|41etS>NOx7%ps_u%&mYH2(O;z8C$Tu^)d5m>c-D13%-PO-6 zGRH=3Y^td0zN%hM_5BF4h&)U0e^+16%C(3b4h*hs*4Kk<4*q8XsOk$5Irdi}V^$ik z0<8IE>xE7_&}MckB1bG*RZm4$H`rdX4?MtRYE%B3()|SZ5Sv=0WOY-XRG?M$q^b8B z;VmjE7$Pk9`X-dp?P_jYL|&WOLAr)L`eas*s>;~6>^vX8&$A-(Lqskpf4RxVs7+OU zFCx!f%&^!}s+Yu6`}_%h^fmunMn*@E-ZQgfRsF82Uqs~G%sw%(s`BTvi0mZi@22r& z$ydKdF(M=g)`K=x^;|^G;wYi2#{6b>mF8-KXYV5&kFvMiHZpBx9au>{=viX zS+8WOKg0NkdTF0c7CH3uy>Q3H6VHz_F!?sIff(>|S# zSM07V3IJstK_=t!f8>4RYx>4;?_TD5*~WHg1x>EEQJd+WLl<|LxZ)%QHS%77t zk~RGd8X1ifZ+c1_!feMKlttRm_{`84?sozXJnOFfTQBXQe{48cj|7Npq_5M@E>V+d zBh7?6cA01NQ3$aAD1%nm&Wbqjdr^4~eVzDgVM>qo9$ZRv=CSuPBhTjZctiRT zUd}c)=6nIa8OGZrf4@ZJz)KeE z>^#$#y^+9Bbfqh1_L!oPNX$XN0+Gc*A$#ucmX3CaK6HQc_X?6+(IrymVw~q6ZVcuN z8XOA`5PAUC-8=aD*31lB0GvJ$>|KCNzc(|E92X*T6Gk^PoOs}ih|CFD9DV1tiH78Z zi2QchkO_SeOz1<;g>Qb-f9Jiy;kjA!apvHe-^U^a>h@US`2ky%Ip`I^RfZlgED{*F z>`3^Ym}V&4nDiV39lga+*)iBp!8ucSP|~qqsg`mWSoH_&LV|RH;&i7*CMIk1K_+W;%k@HuU6^fc3H-UzB-w*t2ljV=4_4AH#@ zjSqC--ei>88c5DNe~Gac6n$0Z5I}8X1NGbyvTXtP1a3@fITYV3aEf6;wZnZZ%H@mh zBJhc-Ui%FnY*(6ZK2`MycJaT$=Hc|9@g~dDQK`;09D<`pIRt(6?_XLn7rCN87V3Z@ z+Qx^%*TV+uz?~bMu~<*TcrC!@Q)jx{jbNuAV;*!}`Z#mLe=yjY-(Z}^>1{L~HJm^mYRmXYcs6Z~6zUdq>vhSj@gk>-l-`Fqc41b(!Q_~G z?GDckHa*2=WIA+E(>1~@h(<2|7l}xUd*fk1UnApD$3g~5g*RW!!(~Ng6l9sZ9)Awb z5=+emPPf!*e-dZCN}2+fIr2LW{`mqelLV6jTbENn0{+5JG{ZIS$&SU}1U7Id9mYHE z*rWJ9%g^V`<<32idA$K9m~c9Qx5IBDg#oX5&PTQd{zGuuie}B36K0OvQ5r-Tgdl)P zH`wCB>2CmjN{S1x27dg0ax#dTzQ8-e!s(NPCi72vAB{$|bjYuOSDEWCq3rHet-|AR P00000NkvXXu0mjf46F&! delta 1093 zcmV-L1iJgr2+If|iBL{Q4GJ0x0000DNk~Le0001g0000K2nGNE0HluMijg4~e*^tV zL_t(&1?`!QO&mcCg>6IuDCr>S0Fnw4Isnqa(LoRuM5F^q1q3<>sUScH&_NI#IQmBR z%De34_LjT7AKjBs*vYJC)*e4U4{BzzK|iSKXA#*kvuiA<>PSRx&Fp>}i>kWAd^3A) zzBj8i+OX9&xIt$Sv^QyX^SLYTe?;VH%;cuc=5ueXRPa^xPF275{@Nvkv&B0Rc|Y{_ zRx0=+@+cxVLpy0+aJoNq`(*T>*dBDXSHjG~QR{+J5jhr-2a%HfgJRV(zZX>Xtk;Wk zgsMXI9B9}Kp_jG8ASjvdigH&(K9XJO8SIP5Nmj6`%G@uUR-b>syCU*ee?+eRgF4&w zI{p^r%z|b{HWWBDB8K)vIMa>}e61AGE)3W+$rppsH6Qa%pDY@s_Ic z&kuKg;B%T!R{im3R4c+If;Z8ws$Po7MYK7pYV08e`P6MA^iHO&`JVOPV&lsI)sif~ z(q72^!URKN%d?yS0590B}P2!*(`vnsy^2R**U*-uuG=HAXVTK%6e`ioCE{K zx}6XV*77}z#<7`Qq)n9mKKlKkK<0BP@$5kb%`Cy`wMz?}={1WWm0*KJV_=e90#Avk zE;gbLruD)G>ph=q=i^+mf4;dm~&usj$qpFopMT### zVcv1?&l*wl!HW#{+C&iI`Vxwd!@>M6!DzF~N0QCW_t6T44sldkYutD%Tq95}$gsmW zOiKXv^C^8-f%_S)f7QG0Ct+Ot+DuAk_DIAM&)n+qA5mWeDEbIIS(!K2HopyR^BAi# z9604;KlBGZa2}8HQpP92S%U1ssSAhekGp2z9g*z>Zfdyi5ao0YBAcB9CA9Dm|ad--xe_cp07`F1|3-Bl1b^j5O(LBCUqzKf?wn!0~+=0x@r(M=)`#xu84jq59 zhZ$;n;+@F+wML_-UPnA-ws7$Wo1l4My{lkO;J@EywZFlN!tY&19&|3x09_8{;6hbz z>3md`))jGy2Dsk@e@*Z|c5|JC2B={Z{MVr-v|L%!8*a@Kb6evdvk@yy!VqPl00000 LNkvXXu0mjfmq8Yv diff --git a/docs/html/userhtml18.html b/docs/html/userhtml18.html index 245d8cd5..679ab842 100644 --- a/docs/html/userhtml18.html +++ b/docs/html/userhtml18.html @@ -13,8 +13,11 @@

    5Note: the implementation is for FCG(1).

    + id="x18-144004x11.1"> 5Note: the implementation is for FCG(1).
    diff --git a/docs/html/userhtml18x.png b/docs/html/userhtml18x.png index d33d825c3b43bb1883af57650d877c62074343e0..f781e90cfca2b07325ccfc891404958276e9b98e 100644 GIT binary patch delta 1214 zcmV;v1VQ_l3B(B@iBL{Q4GJ0x0000DNk~Le0001h0000K2nGNE07c0)o{=FKe|AYk zK~!i3?U|2J)j$x&cNq&nOMnj04%7}%D-b$>u>warKr3*t1F!?21MEPdgL8g2-^NQ! z@-BHiKzZNHn}o~dZvWlxx4~0N_L$-BTV{4;X4@&HAOD&yB>yKfdu3+G|1za?Q>({D z?Zp2WC(>=_U(?auar~~Cy*INre`Z++#;WnC1Hj$)%GgT499f@CLn34#&?ad&JK zO#rZ{yPqnpw4m`x3!7!buC%7=Bwe}tMF_018smO3vyZC#$T^q+q<<=He?#qc&wEcw zxwnM3tfNz(p^S1|@|YT*<^XVa>PQfYmLYVCAsDB%!s7%8$rLg&6_V@F%t(DZB13=^ z{cLPK$+tuL)V#p}aQ6f0&OQe+Dgg#}xD%aH#dv7bYbYM-hL*whs^OcdpD zjbVUPj*ZI6%}A@GkYR}|Hal@gu30!tDZysPK+6;D8z2Bsig&xpHc)^< zp3bT3&4WKBgYw5(LpVpjlu{XdgAh}v9CndQl)LxY^)jV|e!Y+mfO%O~>3rnwuSEiz zQXt)ieHtl)t5V5ce~ihTL9jdBvK4J&QS9 zWsimXl<)N2FH-_!Y5cJBZ07b5{Esbty*r$<7 z3YJR>$DnLPI%!gE%&obWEWKua?VMojVzTf6f;7qkbsYn=QhBiEu{}hhn$Ci`vI8x0 z-bZ6Rz(#P1e_2d^$r3;Z)AEb-r-S=c>R9-2(5EfKmn}oo^K!u{_i{wjYE5}}Y_8fp zjL>qZoW=NVysyq642BU}24bG(MD1h%XJ@%}k73L9iU4EHR*=P>HP^WTPy{;iA{PPA zJ-}+WD&i zq`Hb&cL2$&YC*dg@@Wo$g5d@rJ7a`tjU~WGsPePz1n>{5viliCtxq@9D)0p(^b07*qoM6N<$g4;<%W&i*H delta 1169 zcmV;C1aAAp3782XiBL{Q4GJ0x0000DNk~Le0001g0000J2nGNE0J)3OGLaz|e@aP2 zK~!i3?U;>?6gd!us}KRKAcG?VAcQ3YxD0>{77+o04A>0#$zaI<*bE?pV>g33edd+r z>2ddT&kQ4A_DQ4eaogo`J=c%z5n;y+cRykM5pjKNcDQwH3+~{nnf=>o|Lx)Kr|$mR z-Ot?pgS$UoqV(-0o&Pqt`!h59f5*)3{b_5H?%yNgMe6SESMGip5#O_I3Pqtb}Y9y`)-y9T6Gwe<<&-L59vE>Rv=VS5cL9!qR#7 z0rWYS9*?9u`n+v9n!_o(AB8Xm&oeW-;5~o*m*Co#-+E7Enc3ssw_V%Vgl6`Q1*a@C zqiFlu{6EY0-V@yzli#$yf5`v&)TSzSp$(_N4$^^~ebvgzahsl!Q}y4}fB3!O3LRK` z{;CZa)ASqVlumdlIfQqJ#`Ei>9D(PODOoF)pu=& z_4;kwCZk>T#*4i4fKjhfRI2Nf-b5=wwmaQB`~pS1IKFlB=xmoW`r)0{RthcGq_ z`4CAVQTvU(D@xFR#e>HBFKO3~$2)7TZpSPCerwx?@5V9>vsWMl_(U?50gn#K5E2M0-W!e+^XTW9XfG3v^;3U-!H% zy}e$%5G8b7iZ=o71GqqGk#_`#1fJgmr=O1zaXI)n$!SYI135YsG-vhMmj)u~EqBc+ zXODnfjy4q{iJV=D5z!S2*?3Gh9Vlgh_KFuH7enhd4f*vhK(={RCpiGLjxU|{VQWZ! z+EHVYQ&(6^f8pe*^z?FujEL4Kv*7N8;Kk!ML3xzIt9me`Cc%na)DD+w%e;$MpL0%c z=VH~MVk`m?W$9%M(77H*B#&p5!dX9$-1aes$TiMs z=7-@^=jq8a^KeZ5AIr`8{g|KI=6sHxyV`BYX$kvyXMlEOfkF#mZY)$zVj{%e;Ad2s zs$KSiIhKzYj5XfXZkh$ zy7QEh9Wf1eM?mk)?30f-r{nSEzwzowKfr&oA9`0DYnvU|8Y2635Edd2GQeqm;R z=P9Kh^n51cIS8B_1edqNRrUJ!X7+dWjJLtd90ZP@WdVHZziQ_+@Mr4%S$I-2H`_{VQoLdKOhZA67~CmT>oHqH{Ccodo@q z@}3+lr9?vhXOoL{VQ`RzS~AWCbsvepL9E7lg!{XiY0$^j<5>tpA7ig6NLJ*3LB-80 zUx3y!c1QS;edJ9tIk2MrX-et0 zdY^9ntKI)ZcbLKI^0>z6TBdq`Z0@t%CZ|2GIX8FfcL+V+g*F*EN*T}|bLzX9-7r7K zbV$1Si}%Lv!Ltrr(1l0dBnu^_7h`+%jG1LUus;S2JzRX|u#`1|J{j{sh8TV5KYNzO z1Jq3@@KbM>QYZc|vhHThok4E2PBb|=ocdqPvbULp!oa)QEyroEywhfX1kZBu$Ptf( z@LQSQ6_5+Y@iL|4X7;t7DV@n>G8+0?T8sYM4lXYIpIAf!WJBEhETjmmkj<#)XXnr0 zRZ59$eF~I*QSt(e1%`O9WwbzsjDW7mE6NxDhb{7!;<9%D`Y}`=wPBA!6$_!eMGmR% zJ|_PU@f+0`#4li8=1cN_xpen)CAfodBw0-Bzi~&nsTVOOr7+gzMtN7RuWNqn(|d;w zxl&5O{GOP8AJ0>F(N%bhdDWVqeHU}K+$Fn3y5`otO&F3cZpPM^%s$hrWLxCW>VHrT z@on@Tln8R#u*}I5TSJKxjUPhMK9Cz@L8HLfY&E0AGw2(j;*Df~a3`ovHD39?Fjwj$ zvq1r(G8^RH)0qB?u~hE(lfn-Qz<~Z(!>!!z)t<`4Y!snjx$m4nPURdLCwItyE0_Ro zde-1pB8NrZsSM|?G0KnV!HAJbji@50^&f7k%HXMFPyn0Zs*1~xxjpx~V(FRRGbbt+ zW$5HB7;}Us@(=`nP~0eMMny2UzLLIDVa?5*`c5*V1(E5}-VlI13D2vmnp=h;s=k5# zBr7W3*DW8Fz9;oRV7@M$BL8R??R}QwN{QP0-rPKu$OvJed?||Y=kdNOq!1Va7!wdD zjDvwtxlr^bn)NPsR1a`4xpTd;>v$2dM zVI*gB3E>fU0GfwwYrYfwFdDz8FQQlfCn}lf=;bm`ojqLGX3IR{-hnQ=8jNf7e-d3i zdL!;mf_J?!(VCBVIG~d43SVpVKbhbj@#TWQPU`o$o#veX0Xu16<8K<7$^ZZW07*qo IM6N<$f+BL8Hvj+t delta 1285 zcmV+g1^W8m3ZDv)7YY^#1^@s6@ZoP_ks%j<1kp)EK~!i3?V62o6gd!uyD0}iK?aZk z2N{?Q3>U#289)&M1sUKB_{qRzU~mSI!C_~ht55Yb^lCLTn%zC0@$ReInvrJI`sr5p zQ_p%z$qrbDyT3HEKh5lmo<1_O2WIwJW$quPlpe0PzMVL_ozvP0o}`riD3aX$lbKzA zq?BG&b$f$5do$AoaCf}MhpNf3nVnU2=T-SuWABZ{-S6_NwVYBa;U>RhX8gWZ?+x$l z1NPon%Xd8Soa3quuJeC1joPcS#WNw_;Fxt}Sea7#|GFj42Z?!O4jm>`|?w60l`Dv)IGAy>}2YlO`l=3X7-)Q78zy+ zN&ObeFUx)F%GhXAo@sumlsCP9%4qXCB7;qbLNsPL$7Srdw;#zF=G)t@yccxK7+9YehSuvUMK&45yA zc(?U_Z=E*UAVW&d3eircpW*oexwPBbSnB?iGAMfQvH=?934}$@0uU~L<##P)%PZ9b z+@`F>zii2nvdfMcU08X&VSbt;o{%|?wrllS*VXOi0VfT&meDG2<5^^+E1RqIA;(a> zNtX>Ag;)<~xr%(nEXO#`=97Ft@thDwY$wUJ3BJS}Km%C+$3{J1eDE#Cf7*ISF&P3giJ@5LY1!hkr;sO(x!Pg%TR#S3n_ zE?at*re_OLB!})YC-pUI1M%n#d8|K-QCELFYeF809gETJ6k+#&aB>;L=yw{OY~T;A z-C4ZJ#)&VymeS|!RzUuy{*F{~I@bw2OADMPKR40=lQs~Ih3_65MKeOKq&sONrM}mH zL3Ry{fur95DGAOoC`N`cKp}x0)(lSyVPG!hKLwPM6{Bn^;~5fZTFW<60(K3}`)gx8 zpbHqqUyVK|ZNPDVK|sQZo5hplGx;We?s0cQ!ZwTFgyK3!=fOi@1jQia8R0$`VLtEx zyv8Yck0?0s1QrjOa3Tz=c$+SW57B?-YZ?<}azTJyyhvt&{ztPYc?OhMVWY!Cir2&$ zjOL2Mnze19#H;!$Hb0rOsN0nC7`G_T57%F*iMh4dl(TSfI-Qd}_q?`&9ER9ovfvE4 zF5Kvt>z>4f%RgW_;AvA_Z71llfx=mcxA~YCTq?)1!QCJ5|A5fBR1ebOQr*qkK;|rp vZ+H@78(d>?+&!rR00000NkvXXu0mjfqx^uJ diff --git a/docs/html/userhtml1x.png b/docs/html/userhtml1x.png index 933f19a7a5113d5f204d6e993f82de2e6dbdb81e..42bbd7ecef1f631c485c911e6286adca895cedca 100644 GIT binary patch delta 1058 zcmV+-1l{|A2&xDniBL{Q4GJ0x0000DNk~Le0001X0000K2nGNE09c#JK#?IBf80q# zK~!i3?U;>G6hRP$yD0-eLx2p>48#mjBM>rxG6cu~Gq5lNGy@<5%s?T7w!W!1TeDNQ zx3hb9U={bOj=dY^r~muSdPLY3{~z3a&&*JDf3IhIY`{aR(92aQkK*vwAU8#V@I$i2JY=0h}wfkq*{qSTq* z=AQPX96mKZaiFp^K^5RKBIvVuY}8lDvF=Vi&yAYs=%B2lfnRrnBfz*ge|1W;p9;x! zW@ePC1Cb3tK)o5;&)rX@6YEbE*aXCtncbP${n#EGz}qqz@b(+WG2LB{e1NPaacw<1otG zQm9W6F&uW~j$E^F77?((W#9@x$;`m9D8<@Z*%sU&cSMxIG6*qOf7(rr)B@ank-hFB z0=XBWAezie{ZzVKxcdi@r>-Qc-34f0{v@s2q!cejORrwFnIQs&j0?Bp+3RF%-`JzUZVOsGMDvSBNzu zIWPyC%3>lt1v8$4RKi(MIQcoSFfb((L04YCGV34qRZjVW9a2g$6bF(1UCGOHTb?Cr zZJFOXM+zbr{hU5a@a6Ih@xTCGJ6W`^^y7+`)-y-CqB}1Le`Yb;6-)6$ZExwtP364Q zqwvk3uX>7?6gv0Ia>FU#W#GdpYg*>&T7wa4s!uR7el)g^9E!opYXkwo`lUg!Z11^_ zEdmoAkc$B2JD*O*^6W8R^(I#fiH1=lm1|!5_Z1vVscn8&P}^De-=43^9@{~^iV`(; z?bxCZNM;k!c&q?9YPxFG81hwe>;lpNnHaotZLt`<<1JtRO~8I;xMOJb)sCn$Z#EL$ z*BcIc>#PXcVivG{_mY1IQ+&0P-)?aCbazC6+sk*?==)av;*k?wFB$`>_F%MVg&{}fDRBlfDS-AfDQyY81qfeZ00Sq zv-93QjK1tiHoH6jGw1$}hY)PWW?^fywzC;<_dPTFXlB37?1PzIgb;qT?#^dT{kP!m zhh}ykLby&VbN5Fxdly2uPh~Z{f2vi^XotI>y8Cu}kLPgrT{C;g2^DV54DD^gOzQgZ z*34c{9ByyG%tC0Vxnp<{QjyxRiDxXr-4Tjs=GEP=%R4lv?5eipTCTomepL`k zbN0)okSbwX5Y{xl6fJ3I6IWZAFT$rj<^EI&Fga7zUnwxc96Y%@f0DHdu0seXm5xa1 z_knuWM?Ap#&j;E>msO>F|OP`E~I#-!Q zpb34`3qd&QuHDeLw3_x+O&RK6E0-ikZ7j8uAG|Bo)ykyZ3);Wx`X_2?(NbjAGrE?v z7tJ-uRi4rigxt_0e*h^|y z-Gzbn{B@}FOF#m4+h4cN5b{13=B;wo-Ti8C{6*5tm@9=4f5_XGg1ci1m+m(P`7;8W z&TrvEwRXtG(%_r>k{zKOk9N`Tt1tgtoCCDt*#$rgumHNdJ2q<3$ha;d&1~w6J=M3x&z|LT( zZ+I<_<}{L4tNYv2tJ>18G?Kb|-t^zBrIc*@v~6H!$7c4%%#xX%o7t1Fmzg~`vr9Ak zWM-#v{vjM4B{z)2-Je08l+xGre@J(SOpjAaKi1a{8Ape#+={^KTr{5d#LWI~Tsv57 z#F>YuX7;f$6ym&ZTsv57#F>Y0mCFnP;Gzc+Aq z2=kAb{bH8A>07f*qLaBwJm^s6?k~*jUl|MUF$BUCCHBy2{BDSB*9EFO$-Ee<0%<9n zp;JofotgbxvY2oS23{G#7YR#f5r7C}0*SZE=X zK*##rC_3WsP?M+qr1nhX28rYDr)JsMgb4DP4Bjo5e-A-V^t>K)FE&HI zQ%wfr$*CY43HeQfMbIr~=|oZRdk8X{3+fy{(h+4~U)MHA>HkUksbAT*V-GQzd`^u#iKJ3wS8|A*a)JWsD;253coKS>8|9fW$n07m*cp2%Crm_ zl9x@EX_^qc6EAz?zPPpVGNnY8KL+-NqKpO*2c@{TRnK~Dx%&_DhF!>#P1;-t7sXMo>qVT? zxUea}}3Rl0{RAaCKeCeU*??;9M`Muc2f$WbC2PkK}Px z6e}IieVdr74!dGTWjn|{t|2aT#3|hMXN4#x0y6!vi?(vd=Vb}HGBQD8vgOuu(%H&U zbedQdLkDKjPHCp8A}QsfZ;fA2*T;6Be<&_FYIDti_?hqHs9H)bF0$l7yn!5#xlv#yJh0(2% zF|@dli8GM2k<5)Hk{fOTG%d^RfgQjGZu|>iR}^!(aHP_U&S5SW)j`Cq&1zO{xEEk< zCmWl)aN#JrhxA_Doy72BA*(msT~HxUhPYk0&`gdu91ir?SN0EA%US;eWFa8j=dMX3 P00000NkvXXu0mjfv|z8P delta 1303 zcmV+y1?c*P3!DleiBL{Q4GJ0x0000DNk~Le0001w0000M2nGNE0Qm~f7?B|te+14+ zL_t(&1?`%RaT75Rg?AYWV4wr&fS(Sa1AZz1I)I@9CUihL0MbF|fFvD22M{_C^J$)r zwJj+++kt@nW;{OYbgPwiwfnSZPbt|ReYpE$Gka-f_s#6k%-*MzzO~x>(*7U#-g(C0 z?w{zHQhE}fXtnPGuI<7kw}gjge|B7v)oTCmv3DLbqQ?zBEo-~`Z8PKk=h&y!zAL!C zD-*o{r)G8_K2yV8HNJHB@1es3Gy4hu32pxb+?|N|$jq1z^Z1ZbI+~;W&O490zc4c* z%bm``vB;lOO0Q!d@tuWe^e;ej{ubxs?&t1)HfJO3blOs?Dg?Nhw#=Hme};(kj>N(oqwd1mYx1Y^Bl%bJCB*Y(GeUFeO4f2ac^O@;JdL4noc5M=kQW`ztehhI4UU)}YnC z3>k|8Be;`Nf^hS@aICpHZwkgfln(GX^x#9$bHTnNKEaMcAr_Kv7VDVn@=grhOf=5w_%du_|I%yP8s zI(1K;^u*!T(oqh(u<6Qp3L2Acqdsvx@B}yy1+U1s$&1tjx?Dm8nUn`Nz>C+xN*$#F zqU6U)J3vP`8*||0sy8;I#hXrIK?%%1Ei}vPe>ye7IcmGMM4Mira2P~5s?Vhypjr||xCs8@@h3s#sex1LQKb|Cx;_z| zhdKtw-i%PIiD|408Th@9vX=pzgH$>}hJv$9#*w2;kP*r0)pVwm2YRn4<^V%wW2vHx zZc}kjYx{PNz)hg}pH$Wbs)2(%Z^-ZZ#Pok24M46fe~~8F0a8k{7u4NJAG4nuf%pJN z^(lhj6vaXGx&Z!k7Ul$hAgUZvYl-6oe!(Il6HbMrm1r~@;#TOA`JeRTcX_GGPMlQDGefHPC%ORs{u`cJ~ zBs@AsZLi<5Pvo@4?koR@0}5}1*;bhEqLUu>*bMN!9_QN{Mtq`h9`bWOMuw2f(Qir( zd;EQna_8Da_FTt~7y3lzJj#hg8uB4rWuu(G$JK$d2(`Ld9BafUegUXmR+3gIR$%}D N002ovPDHLkV1g?+g?In} diff --git a/docs/html/userhtml21x.png b/docs/html/userhtml21x.png index 10ebc4650ba9c587d9cf37f9bdf45bb3854b5a61..85e9af03a7a915df6005d32911f8072680fcb8c2 100644 GIT binary patch literal 8458 zcma)?XEa=Gw8x1=CrTotM-M@a-V;V0y@U}%j3GLscTop1dXE-061{hVF%m?JPQ>Un zh#G=BdEa&KUH9HE_rt8S*FO8K^PIExe*V9`=S1sjt5T3MkmBLtQK+ja>En(VJUo0x zVnUo1qIn6x9Y_#rChmB6l<2=d{M5&kjCgnt@zj+R41MtTa$;&Y`jU`s+*841JKcQ* zGY;L>vUpRs2=5|4-MS@fA-fbxL{7)Qgl~a=_ip{+q}6E=cyi>M&ejdPM-fNEi^<8< z=O(jezuyn8jYl0N>0j7<6U~#*I@(!t`+d=_>c*eTTqbEr%3I7T6jfqpE~<6(!=Ur= zMItOai&ZdP!~X61Nz2_8pU*1Q@ZN0FT756gm{ptuVJ|=xZ@#8^Om(8E=qF;5|wRy*$T~9yVTxuFz3kB|h!CSp0 zcGtcwQ1h<>YT&J`61zo;{v+w) z=1lvZ7Q18pO%zHTp3YnRWbefLRjL1wt9%r5UPISesOj4N-Zb}KTEgoYkyNF=^|L)W zzEheXraKK3Bgg0#S%<6Pg{wKI2fr^TqCEkqd&ZtdKfCOH0bK_%Uu_(^Haw%T;ld&p zBb6&9Uuf6U-3Ogd6zGK@+lfR~Kh6UEe(w%kKfkhE3g~Y#TajwhSKf!7`e_o+v$+VA zOI#-sE9>QgEI@%C5r~t`4_(#%sTUS)=ik2`wAPQkagW(i0zDo%O4DTp^w`klaM<_X zgga#V*RP2W)K)HX4}Ov8+-5arh$%r(ty#J04UH5(cz3IrP{{ixZ=TbO0>S0_l!-iy z7VVP8Q^|#18;m|`<0;ziy3q>sana;}qa)0qygbJf=D8gf%Q;ow4c}?cf6@RrNw_3ez(y}k6mG;H zyh)C$2{4rkeqPOXot2{)6=+3pK-mLD$%ZtvZo^ZfCdg~&`_DoXcNH2$YJ_3+KZ`#F zIgQ&Kv)L;cMkNp9Qwdmnc5Iqo_C#Gf9{Pj2U_3Fc7A$DlFv_q$r32>F zyu%#E6YiP3d8wK1L!915R$IJ!A8-}IH=jDmRe5Y&LkVJBXxB0qdjnvodvhs8=TSC2 zMfG%H`wSV>-&31CD(tA%yK)sj5ST&Thv1B@vzJ}-PQUm;9!mJ2_ZGyJ{!DWD7#!VloOEEreq`Yc(>U)3+0ZYJIbQ>8*$r@ zo1qH@y5ADkthBkq*65r(E5w%!``n=cj%E+_pJbmhW~C_Y|Wj|kknJ%2-6N*26{{(M{KM# z129}vobR&`OLis+#ZQ+1zMvd$hlGEiSNcH`?*`{6H>$_sCQnUQEGHIigMm?tB^?X! z$r^A&X~`^hNaT;m7t4|S4}xY}x3bMRi_sfv6*J{#&jL!!gpi4B_o+m#Orpf9T&n|< zxZlTvY#sSSicQ$vxqp9#h-u{c}2wpmd>lcRC>L{`rvlOX+M zS^_CSpyS+lCpX=JuJJgv9fHD8ZF zS9KK-o|4HVAvjomBr1`d&$>a^BQl#R{BoMNPO@BZ9Dj=OM>2w3j|Q-f4J@)XtD{7C zRxXrQ9Gt?O8TSaL$v}eh14g7PVw1rx8)9^ z!af^*H$%ev4|R^?`DG0l2%Qyn?`+b)J1P?B&LQm|Ejx*$V{83o|L%-g=E4zwuUECj ze3)O>{eEg~;R3XX;HR$SE6rRZX_oCa_hknQDK63(1=8RU;>DtCX)=z9AwbKBNhC8oPIogm2R zm0uR6NMKOHCUNpJ?be$o*bIqOt?wwBI1=g)j4--OlwqkRi>k7xCWmEJ)IBGd-eKl@ zrQ$}KTssN^f?18C-q>$>6>Pcsk{AYgmG&%=Qy~J zmbQBq6IOfp%rBUn^QE|!HVS!|aK3a8QXoGNBTq=SGr-SQ$4groZJkl>1fy`%8hfDA z?Vg-vA8yoN09pPC+JQ5T3u#7gzK`%=J+*k#s62eXA!Jiye_KK&ErmwoExn0a*>C&4 zH%INJb;R^cavdLf)#Oszo$pmVw(cxF1`-O%MVIGq{8NLP%5|YCB*q<{)@?05mNoLW zq9Bs_k1v=X2BIvt-f@B75zTT+_2g{9C4XYb#fH=&W@8SPK2ZFPODndjD@r6V<)p8x zzfoYk-zOQp4SwHUyKg2-GV^vsT%nkUB{kpWYwg6T*46oC+U;1%u*Bt$!vT!18+YUO zysxe*a=#+f45zX-1+4PgrCFY`V%_5y(;cRK-)14c?mV^{M19%xxeA)$PIq$78m=@< zlxcuE3I?JiDsR7a8M|NLUHtyqGW_MB*I}Efh`4EM{Jn}S;zjwQco-y!PupH96PhA3 z+5dS)iTZS+5n=57Su#*~p63$xXbDoSRRy_2Ioohaxc`n=zWdQ{P%70H{rL8$!h^)( z2U~FdPt3TJqF}&w#k7^C{h&fcTtdxwyxrZRc-Mz+cegrE6XaDw+JGH$r!QvIs#A<2 zkAaG}6)ym^CqP-@o;qdaII6_A#gnixo-Me~CNX@M0${F6w;qQ@%hd}Y zd~=H?$3$Beb~%uWu5F{2KG=SlHDBlEDaDoXeyX$RV_|-Fh_t{Lq=$*RiR-6rg7)Z|MRbp1k8SWE94vHcbCTGJ*OnB+Te^M3a zh#Y#%g-O(3*8Vo_H5L=|QuaLWVJD(p^g#=`U!p!Q^Xf;vGg}a46W$&*f zz{)>OT>!*?;El-nOHYlrWW?Y~0^!g&(f_%nOg84rEW}{LQt&OjycZV+SYG!n2*661+;B5u zM;u$wq2la-70N$Y84=?U*ozB*OVJcUiU}H=y*k4PjYY)5bOKQfck^+p9v3>0Sc$^Y zx^BVSU1cnZLSXG0zp6t9My3G;PXehVM~siY2o9IyB5|a+x2lsXr}DL^yh;^Hx&?Ra z|L0a>D5~cQ`}AQ;AvFOq-Wvu$vwfFc@Mhv?xiW7moALh5C07r@_2oJ*k=yL|l_HAb zso6m`Q~d`kK887DPp?0W7{83dzQEm|LTCQZEx9P+6fL5jO9|m_)zSW_Sgf9>pe3`W zZ_Z3JuGdKnD^3IzY%MF)#JDUxR?eLnn_(i-D-gZV2oacjl?|_-VIshHrH|MQ`)q`= zjEhkFUY^C$WS=!Fq?po!C9G`sfj#GIPQ{H*LW5c zO?A!U(S7Qem6PnkHf5=i6VviHn{{KsB!`>-Bd`B6(RC}AXzwCL#kX-_1!!ASWMI6% z3XaZD(_vsls-TE4Kb7B{@w?tN$b#%AiiwL_Mtv@AGiSx8$B-_yB@2b5zS49y@JrsA zy5`w;8V+=r9|gE1U@#sKwAIOJ`ecJmXXbEVRggwI$JsZ8X}y%`(iZ`u@%__IkndVtj_U-ktm?=5;BTOtL)26tfAx zZ9C+8uN2$rD>_8yvWuS=1C5nW-CGw1!&fXW7!F8YTYfa$fw&gVwdT!r*1>j56m+q} z$3P)e84}v9lN(QL)@-^y|0GlkqH5>Jr2CR!YHY?rk;a3Tin8Tx^~|bsvU;Xg_D@CD zUNrP0?T#b~IsL<`Z8>N7MwH+0hJe?DHz1krD5*xCEr%Ib>Tn;aGfBmD&B`uaZkBdu zf(Q8vh4bDlz+J_718qoAJWz)f?wIDz%4>TbxCEw%l`mV~LqqS)k#JBDnl)w$!LP*YPaPTy(rwShf~?g^$l#l_wBo+74UCHEC5j*vqXMSJTA1#Lm!Cvm;EUMlk9D0< ze^(@>e$I^cR-fzRhqb9WK`{d!3J>iMyS&1&=PMfBeA z-Ij$ZdD|z=VG{i>SXB33&u=X3vv(sVRVr#|126cl&22{t=gywP_HM6M=N|(X#UW%G zapV2f$dTy7QMQqQX;uLGYlq$;=Y<1VYF)>EjLPrT%YuL#gWT!S>7}y`1|&V6%qNQv zF5A)5vU9plvKZdIHW6AZ9m8!!rsr^uVc?4)qGWmG%&h`bAdPeyusfCyKIe^NIBP^v zJexSSlz|Z^b2ioo($tXfgt8^6dPn2lM5!H$VhvVM_WgpAFu{z79-f^p5ADtfNnr;E z$N$Hkz@s=vhXXcAUazvSdI2NF%83@(UI>R%%$>2nI>z$Or;6%~vIfGlVj_Z;{a44t z|J56wpR4iIF90yD(=l_?xzA;u{f*9-RC9DXV|$V>%=~@%VG+kb%Hcd$ zHk3edxbPK)dwBL9?p-IRmE8TsIq9Yg?AkQ*F<9F2aqbjRY=Z0YM@wYdT4Fw_Npdm<5e8n&N*6o<@!?u?iYj1T!E$508D8#|d<^mAcCJ2gkr4gUy zoM%CvEiBXkQLY{BX2PQu)li@jV=4ee*CHW~T~Oy0@4DzS)!erdN%Lou?|)I&KcU01VHt_&o-6 z_^Fb~EV6y4lm@asCrp&bX!6Hh*?qI}-nR8w$t{S-j#9x&BNs{ItV{VjTA6d(hoE2N zaACu%xnrurZST-I70&}vx4g~#{I>+E6N4=jY)n-CzQZu=I0u8NT>s{XQP=F5jKK+T zxsyM9R;6y)##)~2gYd`S1-1A@O}(EsXKcp{ZSY+RcXY%Pp=f#|RA(0>GaBLUGKo%?tiQc4#i z-UGcPCKr%8L6rjP75Sx3Hk|~co(fu3bu@y(3UG!$Xw#NfW(fc}v@3^@ugF_CDQ4Y# z!0X)??E_n3*!^r&3*0j zLiMYE9YBl*o~ljGiT<8Z8xKxITX~mp^g<%P^Z?Ud9ADD+ZDm1eE9QhXuCTW)*4;jT zkswI{HMWW9pE`@0Kk6+Z?w1v_6itcU|8U7lR+--xnM`7*P^cuL>%Hb*_Kkt?j))!= zvf}aXl>nJ)FCR}*K#b`_{*7jXyRGRW1TA zbm>x}Pn(P63U_A%3|F0rE_flf{^rLHBxoLsLcN`KD<25oxXa`SmRy? zk@>3f1O*pxgs&6M1nP;|#Vc;?LhZ@U5u$L(@CK#WvdG z~I~Q&|!d{~hJ0N1cJ2H@xNEaUVUMYkZX>JoaALYG==F(reC$F7?&+Qz__UY{n%` zoNHnA(U2!8gBf|m_+yTTB3l;```(qX4E)h^KnQR0OP=MM#(--XqibFd!P{Ly|vNOgsGa;USTTiTL(a`vfK@_d^DpR`=Zt%M)!j=HE=qXiI8`B z%YQD2eiX-tCz5VMcm0;XoDHo=rf#Z(X zoYZeROR_1t;LLw|x5?5Js`$A7+r_PPV=IZa92N=?6`v#_ANc}fgH_1!7t+{p201AB zSd7#PaI2_F@0}F#;4-zjx1oJ7mGKXY{>wtmJPx`~&WW!+Jd&&VVYKI+;3rOZ-Ct$H zd#JU%Rv{{0UY@e061H59<3Yn%3LF#92#j+YaEGxtq(2p8>=KhkMGpN8Ft1E2YFbo; zuT&n34LvHI=CQ*G@Kl7l0Mbo_-GZ2xOF!>gyHvFJIM)U%(l|cz3D0G~MrbZE+k#d$ zeb!)#;Lh(?M)^HEDKt58@iT>ztE-ok$3Q0U!jChbmwBo+{Y^?*i|~8L85ludhFeju zC=gonT}0Lg#$H9;hAmiM z&eCiXgM4Z+D)gx@%)H-WaFYuUl_Jv7*TLE!?qnG%N*&6R7M_SLkuxwB!-PUmbUIJ) za(J9bej2idEtYvNGZ#FnBJ`W9DI75$eHF0ExQYuj*5j2acI8aL|| z#D@KKCv(FIgHbui{~fM6SOT)9hL@V&F@k5@(TUf|2*lcvklr)MH<&UK}o zgw~l301qJ}Rn&5ft)s`HS7+MKU@9{v^?zU#r@>yKn?|TNan_pe3c<#vBS>m?GD^Lq z_$yYn#wE3XX!PvUk{Cy|E%uQB0H@3T!Nl7*jfNfSy%74_nGW|bFfjh@Kn)A^6=kLW zvlsoZq07Gx?YQulQwr0-pLir){P8NN%V7TqSyxk%CJiRB=pI-iY=MX-$OJ%-3H;<2 zUfFJl0;obC2ic1DLqaO*1(@2R<1jB7@Kp5f2i2HXt5XH*{dSrUiu`DU!ro|8#B&@O z2BKznf;K821cmRL?0+wbs6QFvw^yNWs30)?c7^LjPdp*}0m+c=DczfeCLPmxo!QEP zLGRtm&Y-{v>66YMbK4?=^v~=~$g?N%nT96)uJUVBNT$)knp2I{C&NVrTVV@o)|7mH z0owIvr-`qht0dCse05K*vkyo17ci-_t|TB~V5O&%w~e)X?m5NmUS|~OfA}a$xKNy> z;V!b(G%?bK&^0hkpEWnq%L zb$`+_n#SjK>4wQ|M(ufzH>y3`p}9oS)n`tjL@27<@0G~5$7`$S>ax$z`!*R}nVxvh zi|;ns(N6Sf>_E2mz63@9g(YSg$fpOv^y;LM;ifVJvCcc z<1C(&qH3f9y!m6Do29p?6WNnI<-&}NQ|)q4+Q6x#lyey^Dk4z#0SvAMY!;D3K}_z1Qgt)2)f;3&Wkd!u$M_b-gceIQW%_gjF21bL*Y$W##bMANB@=IjkF)tX(%Oj)*l z9=(iG)0#S{-b_9QE=MmepJbi@+k@ghI#Hu~_CtEWKFvWyBhb7}ax9p&(5|!I^nN&m z+5Nlj0ejc3tz&NQ*Ce~+^jl&A8It|BHBy8R5bFzV9B62i^Q1G9$x@RlA6JlPriuem xx0>YCSV4|&{x>Zn{?an`A6mAc2t?fwMNBYR4L+XH()Gran=0TQf~{P61>tsV1hC-!!-$J2R8?$#`Xgdwh zMZh>|Md)1Xv=^AhV}k9I@>#`5+OD6c+#0(gchda?O|s1(w$`_MzWRerKyG9 zo6jJUTVVKX*5+#c@-?pyMc$t{>G1HfNzy!ma7^XI%$@5V&q2yr;XG zwqyR-_fx_nt=$(^+I$n4zRkTxypu*~Gj*Pk_c6_iYJ(+NjKMjXU!gGDw*6vV{CXx2 z3Sz}ubr1-Ec^T0BI#=lxIOf;kJEHe|!7%b%vOz>P6v(=~INZSYzS2+@@}0GPQ!ej9 zFGzC6!YJrBmo=#xhFp-ocY?M)c5AukVW!~ z_oWx=Vd>~s9h3^-_5FtSI~X+Lxnyx zQXscCZy`zZcTNA8JIk?N^6u5cdh>f-JnTC;xevA^9?29k=mBz#W2qsM(_9q5nLzSc zCxY^*mnf`{nj^P`Y{hKpRfR)0z`R=TROSbV*l0u5*y6M)@(wg*&sOB;et0`+dZ#53 z4b!#5{!sxnK!#3NYfl?5XdU(o2urMZB^CA?Z75OdJY~TZ85sA@Fcxc;>Qpziai%Dj zh{~)sZg~bitf7s_cPi|hcD=pr4(L?6o)g1WpP%{TY&5VTZJPqnH7*eYhzAH`>o`a+ zzG<$_f!Rt6ZG|EEE?1#=H*7Pq((hPr*jF03v>nc@ zVq+qW7G;#;512RDW_IWWwy(Mxz24A|J`Qy7p1+KedD`Om#mQ)9Q&hz}cSmxECYkPO zBx@zOcydH>9%uNij-SvRm09;v?1ib%H$s2fc=*Z5PbFf6#^T2T$17%y-I8HJw@-h+ ze{V??>SHn8h?6;Fu6=62LRCEVUNI`@iEYA|dE0s{eK`Tz(`Y8hSoZ--802*hJapTZ z`=hF;5Z)6vVqJwC!4QH{65P?oOsz`q434wb=Yh9;oyIMPG(9T>9A9mg$|1wQ5;*Q6 zvjQW&a~}}0x#hz405MWqG!a9)4;*A3d6~KN2vAA#dybPrJvNzpj~87!WMl%x^0;3+ zvboEw5pGj=%Vi4P3r#<)o6p2<=i(u56z1zb%fVigz>Yd;eEqQ6CzR}OUCSJu5(z{E zFf0Cmz0FA|=4F!pC;`i7$x`8`7J>>hBV-QaT1bV*n*>fnp}IQs1NJ|KNDwyZUxQm{ z!4&J$zj;%dti00ZkGfMRz1p{?NvA5BU6H3PwB5YF!aYb#Wu3`z!BoGXeW$s2!O@X} zu6qQowPG9seQo4Dyk@GTq7-KGRdF;z0a3jvJUy;NPADbV`joBrV6(_fqFSq#4Y;+gh224$!cgkifSv0CM7 ze#Ghz`uWm3sfLMf*;EVoBmRgWlrOfGB298ox@#Y@o2(4K^qvUXGH0?vyY%j9H{*l( z6GLr*xgC#p0sHFuh5O|@KAdKw_wlaCjQ$M4(RtlGH_~5(&mcJ_A6f@uE6p1p{^C&zYZ1&|NJy!3aJ-&$T3CORj1ayhTu4$QB~>b42Jr zWORMg!hTscq5js>u=se+AXUnPg11bzy&H;py+cO~g>Ub$$LqZbQoxxF)y>)Dim!>l zZPX5yGaiDU%B)ke3J8$%Sfh}*hM>EB{6_odDcm_1tXn&ez~4Pxr3JoY>i z&th|u;0s>qL{0lVv08md z&8`Lq;^d@a9dI19t%VtobrGK(+Tx|~x;GVhO2K6}b~}~0TLFAS5`JL^LbHa_3@KO@ zYHIyGBSU@Jl?sxqhDy$m zgh=zUD&!XUr&A2UaYn|zfjzk_uIdO=c1h6hKP~8~G^KHXAjQS}cMT+I^50)xQj-6S zjiIEgUh4YM-XiF0!&>K|139eG24(S`gB-&BA$vQ=jQLNimh=VW?!X&hnb0YNX z9sztQ?oXZ5N!_A!s?-*1Z-x#;EYz9W!mA9PZs-&u=^-sz8znsy(Nr&T+-gGV1aMp>>0|GaM1D>_(06|-|56NZ0LN|=G7 zn2(DrBl;Ugv>-F}QE*gfSy%C(y&GSx_CW>EWTt6lw&qimeI(DHF?X5mu8}=S(S6lP z0$va#G}mX-YQ33K?&R$<{-4-kD9Xm-Yb7ai3(4@waF)X{wc)B06RtpSdvRNBg!p-? z%@Nws1nQjarE$yNhLjO=_bcbR-)yymBXVE|oL+wuQr_U;Yj^|&3<9y;tsQ5ms-IDAnl>;5sF!Iqy^cm!7 z=JpeF^^vU7N$kJm_x}jW|E^7WqUH=CCG`utH)y=HA`wo00e(8IDpZdeM0A zljI`nZVB?=L0tg70V@BbhSaAo7hAZ}t}+SNst;HqykucjK-BcCqJwIS+jD*OvAmK* z8n4vgQy7Q9kOm>Z@T5l@!S*}E%B}tHaAgmS;Fz!~&Q3MadIa@=!phuZ`DufHyPWAr z8k5p}uj^T30nB#N;4T6B8G{pqP+=9_x3FK~*XJ39Ky|5r+>8La&>`;L7hUo-%$B8a zZa|meFW9Qk>ZLyq=eJR8u34QPvG2I6fWiAv=jPtmA>3jJ9*}1cBi^x>NIfjtxj8yV z7DEc|VNUK+uOe2JCMkGzmzI;5Ou!;8QLrN5SiLD$9QH4hsh_975Ls(_&de& zMl;G$(j~7yK z^;St))$yuJYZi6a3^S3&Ys3Ve=qeTFg~P=0oose+RX++Yxuv@or*3cZVOsIllBoXj z2PPb-wFr5(9a=wu58HkXk-nku0#ld`(+eyL_MQGWO!yyhD&3OR+s33*1n8GHEmwUL z&{IJzKg5D6Y#rYCVbB-nBe1OUnZ?ryb1Qn=VLz;Q-6~bz0Ul`+M3|z*$dT|s`N(9m zI9EriVJEa?!Z5WXl#PP>Zqy}LiWbj6DtmM0eT;+5DT$0{6O00BChFE|bp1ic`Z{K} zL**`MRTOyfqr)F^sANd=J^DNY3YAV}6gY8PnC#4KI#k#DkR{n)6^y`hHOkjIVX5$- zyV?oyTRgat=i&BB`3A>FNf@+7f9obwJgkd}RLSw-p0J!%Jl}rtEYHz58u&7o2FSKn zs%<;DTgVenKf`HY7upAcTDS^7yLX14CaWwu!hj|L)1Kw)ao~agN6Y`5KPGG=FyVt` zl>ZKde#W*^e(r-8Lx9ocw?(Qnif|y^$9L&A6b1~6{Q($Q$@-+4-)GkD@2y5KsG|Bv zC9O>dLOK(wENloe#%IO(I^I*y*Zw3*({H!7iI;1SnK>#OfWEVVpXxvW?-y@>o<&w#%Z6jK~Xf+ zo2FyDO6toi^HCP2`nnl1znWjy|3eL*5-s-#1I?>*e0x5bKc;+|ko#|dKikZcWvAg; zO9JcJGYI`4A{RsKhCb|U$h6!)YBaJPKXaJwh4`sCM2gU=8MAsBlPP%`k&>*uKg?FA zJbv4bV_nFj$5k*SA|G!C@&pU(f{IAjl0b+Nxuya^-(jUN0gRZdA)xS6=EWLlTQj!; z=fuSpYhQ|(X_H0d?tf#6{|45vY7jB89@ClrPb|%1RIO52p@w2|La`@P-&9|~b)}7+ za;Gb*;ucf1j|KGCuZ_+V0#-Biql*hA@yA%*d_^)6>>|5!Xi(4ca9=3X;RKdzws%UT zT@Hw#OQ8Xif0IkMGXq}__Q^VhYR4Lc^uYVvgZC9l+Q+QR$y<$E6xI4=ch)B!Pjxq* zyu-l>ywA0kSYN`J3bvG1dIyWpp-I;$sN_(gb<-Akeelh4W!1~=`BO>x@9F0`$CN{p zT8roRO}?YvdCVdul={FA(98@&%|m4`9iM2VZ*^ovgYE7~;MUY)O}$+U7$$h$ImR1v zo7vkg?FgKr<;kD;DNI-Xvpq)!bT2J7?rY7-9HsO+>_7%1-#NCz zB|sAtWs6fg@`tUqx{IVi{|e=A%h(LVzg9beC)-nbhkgabhqb3VxDjGZ{drmrYi!#; z(K)6)ua?unYr!q5-ces>+)eo~gZ0lxfGx}5d-La8EGp|8yqyW0Q>0sh&B%75qNzJb z36rz-0Ow~_*1_71dl7@5`meX1H60wE<>X2>cKpNidI?NSe&z&-r+YZG(;35SnWDB! zeX=b$?sMCo&zt^DM@BIaFcKNnU9PVpDWVU@!KiDnqi$L~zlnwS(6lNqmUDI>a?cO| zw(+!CqAG>&HI752>dZgHv|sqCfDTWx_%ZsBKzvze9tm4TcA zv#`I+5Cl`esSqPBUiDIk}$oGZy(8p$9Uiwh^0DIkAJH$V~6Jy(m0?dhEaA3^^=W z-e9NzzKB1Lkdemmj2)Xg^k++g!h0Z-tKcN)G6v+SwY0{{&En6#A>U_B9!5ysxeJKL zl<aEhStiPn5&X+~!*5f6=MSqsH6-jPOm&|!k0 zG#=2^7jFKXIkuCBuFjA-WuyrYLf^AJ{}A`cer)GeKfwma;1zwF)CaIcF4&e;T!mw} zB6!gH<7GV}<+{3CQA+7CVKTq=N>3dnrV9A+2?JUoRnRtpS2^aH^(+Y|Oe6adXlil1 z4|ZOiE9nU|X3I^B+MZ^xkpD|L{4dX;9{oNXbADJ?nDVN~Q>lGnL{d@>#cH+uB!8Mm z+-i5hp~y@fCCTsGUUy#X*qRy^wTZ9cF{RJG*tj&@6EHW1P51+AzpM%NP{Y#P+WxSO zRVW%9AEmj+(8CC{Oe_z7Dh}f+Mp&+qddgbnjyd3n(V z$>_o)oK|8Jv=ODk<3F{o8V-qZ7YJl{%)u6yA|FQ;Cn=U7`5;8x4YQ=oY)t3FtJd0E z5>Da$pbxf?wHY!B_vS5?5_taltS~V&ELnQSN(0m(Ya->0U|e4hGjOt-5W2;>6oXD5|oE=nX>ZVjoj%k#D}s z(gfWh5;1?2rCFSWSZnrk_OvrRd)6vN7`33n$m8dBeq9TNccuy6qJ6%~me z1TJ_pT{wc!X8)WfG!TAdYsK*r3Q8@gY3IPBuFO1Y6dB6{0yJY7l#gEI6Lp46D>{d0 zH(c~WQ5Ro!KRpi&^9J@*G6xxAs#tnwCCvBf%?P>_cDZMRrEF6lOrP0iC6xW^F}h@W zH);;CH*46$!}L1+|K%YJxnXlpTx>W|O#CUnoNc@XRdEP#sj34j0LXaLfTD@ox+dc`1hFzilXZC8rfBUFfs6RUn$m z@d4|9;HSDzmKx&zl9K+x$JLZbBnsBxk*xXdJB{b~CQz_llAU=s?M&4p);-u(Enh@s zbKN=odIYCdk!RGl30j7a>)H2^|8QDQ{i6<95Vq5aog2_1B{Z z76KdR>H1sH&&j^(`@5`{I~M;D?tj=ibf8aib+yM5P9K2e$^T>cKC1IqaFL``;t6IJWCgv!LN%G zOA9(LFG)a`4cC$cT|+GEI`iH+RoV9bRiDmZ*0J9s=c1BAACu(fU-L7iY?4(MA|F1K z>8_oT8Ax}P?-|<~&0B~q!6uIQRc!RLDg8$N{cfuMuP20GLbGzAHUOn1=H0<-!|fgg zQ~hS06UgebL(UfBK-V|>52R#$ntBrmzJw~wpLyc_>XCFdjp)!HP#}n!wO(Dyl69fS z-Se|yr5fhz!7?c?zy^^yhwFqJL8Ne~ja6r-+9M87kA3A6-|4qXaeTq{h+bWD;QKdp zr;&Od&3wQdP7%SE4{?w%A%2?w3)Atxi?`IHB0l0wzg1$%n#}fvT^$qtqU_XX*=sKJ1{;8@ zc*k#l7gsDS?Dkz4k+ox0e_NAv_ZjVqxfSCQ)jEd-8lKG)n&X2{%1)g(=|$jx4xI*y ztW&gGLiEm`%X#n~b#L?rn>sn^W}Fh_6aIpQu}js|oEAd~;%iO5qz!GT##tXrO<4HU z306ZY*5(IkF7xYrH4+`*^()fk#<<<$qgtKW&VH8vG)A#-van$SI(to{fBb~s9bqes^ETFq{F%m_l^%w~>jm*AEGpH^95Z zhpm2RvEiytnZVF~S*u$mRaZN3%-_~Ix_0u=g5TaUNZ2Q?FfWXieecE`z}{jgLm!+fleFW&Le1Ngk8Gyh_ft`42c^oTec!+$?zpdiBnVC8h!blpS% zF~iBuSQ2!lI1AJ{1x0!1$TH~mCnR;4ctkpqEgN4h30S?qGUzb|dB##d|Ep-Yq9VWo z*ezKphO+`gjZ3u-jmf#pk|Z8*hT^At4v|=KxW}V{a<8AlqpsPFhIJq&%39w;B9ko* zPNP!5J*!BYBYsL7W=jGYQ-!Vq=Pef>0?;VgE&ee1kevIxmh83Z}Y6|x*~3K6F#q?IU{n5 zOxT`E*)|J~;}<_!n&*z6xvk1FkEl7_ fdDt(Uz(53;3@}81$iONhpdbT51R!T%I|5r|U}peQ219+r zoAvzP-b#y0#l0$(?q+9tUw2Rc%$$c1?1Xi2_s3@TO$gzaLo3|Ag~$LP#_)*Z9v(A+(Fe1h}=Q2t9I!OZS_ci%%0 z6hDl3yZcjjzgE;HFrRgIi6M^x2e69Aa5IDu{xq{U(t^)NgH-A6M8~}bMmDpX11X=`_eF`IKAo|)N|nLXLUe^ur7-IlfW zn!R}pGlTHN%-*Ii#~@3Wn=*sDpSe5l|EQ22kCiEphNAM(ZFTuCcodrf!lZR~5AOcX z%t((-i6HH{`=x5+Rp$5{$&s5jlj_`Vy-KDh*)IY;(A)jPn0lsHn$m^r!8+{K1M7=t z?*335miH%U{33l9C^bVKe=9hEhDVNNGpMe8XJ*er2ySNQnpi|On}G2U0`opi-EA&Z z$Ex2n#%7_hq9I)c8I}5bvueSS5I;C$9Qqm@13z?Q^AiXOG|{PdDxh^Z6T4Bb|1Ktc z0PDX_UuA37u|Zh3KpBMb!lr8G8y-h+00oZ*)FtX62FPoai1Khbe;TQWD2`VcQ@z15 zPckuVF*lb#`mD`GjV|Pk=5HBKvgHVL#P~#F^G?-i?iQMNrTJ!d_HTT&b6BVBve-9U z$ELf;WhZ;)W0HYQ8XlRfDTf}9`W-1VuuJQ-^i17xj7~)kj<4sX=zRpU4D9%(#LS?m zcx`6i@0ArmlAXG2e{FJ{l61*I#^{YNa?I@WSqj(sB?DCNsb!O8dgY+YBa?NAL&KxS z138(B24&bBWSgJzff-b%*=!hxeq=U%hVu}@i`j$<^fVkBM;mu> z;sn@grt7GD5I}z=x$3>JTkk&O5RXF~z=%i01G6XuXD-H|f0HNuRJD@YiP7qv++={P zb6#W~LI~kpO)G}@s`H+`fIc%r*ZLNa1F=;dBsp+;Pfi`}shRvEUo7<2N37%kMm!=Y z6GZmXwP%7st{?{M?JRb3T{^yCaVJ|$5kmNt5@8lg#qP*9Ejo;V&Nyv^m@)HU>VWl& zje#;Uh&ENze;fmA5C}6KYdC<0M-Dc_vO7hP$czz0-u{3pu%t3DzgJz;6?Cli>C*Ym^f1& z3%=4J+NJkSZfLbO9u)_3I9b(laX@-6nKgaqf~$GgjK>-d$n5>-D8KU%Uq!>j&5%gw z0nRKOt%b}*Ih1dXVtOgZpv_mfk}))H;<@F&xEH!*dc}>O%hj=acqOkp3GC6eg>)(2 zm*i`0e>__1czTtd)&FNa)^Hf{$o&7bd1+1J^gTvY*O_Z<)4RjztyAzUS$8mJS03q} z;eF-Ls=b@v?w;<~J$v$$lHFh#?*7Qk&QeP6mPWh#Gc!9)DSciVy9S%d zfD=spnb}h_``66ylwYRC{pjsxfA+x4PS)sYW^c{x&YC%MW4DxHc4LH+BcwS2r}}Ul zGy6K#|Gl&m2y?P3P@dIer2Ct?ZJ*Cu%5aO-7x1f@EmGhFpwKT9ecuJ#{RJ$rAS|@s z*eFtgyTc-TVRIRlypu>aYrTAFPV|csSJ7z9y)Msvm`oJ@c3)k#mSNV|f1)&U!qH_E zQ7!Rk?OZc^v3AZDTw*}Hg zU%04kbx{ZlAWO(~$ftBFEQ4bz-=kCL`!x2Ho)6-C{S3B}o{f#VanuuKPx|8fXl|cE zx00cjF&Bo44h(WkG_!L&B~*qy_`RaOz60asM_MO9^iM^{5LFbEf2cVyxbptht$ANe z_p{`EUG>wpQ`kyQu7ChNYg_cdp0G^DU~aHZ0M>}L!NFzNfjkoj_*8p`BBQAX6gfN5 zEp}jRi5js;iK=?-(dSWAjK=NL#$nX+6=hA7cKzto%%LCK#8WxH=v~j(7+A6}#oSz_ z4K^q>gw{W(484p|e-n@+U$SEb@*NZEdH^r2BP9?y{2v-rTVS9IF@df?7>k;Mms6L) zyOh%NxruRY17a;A^wr#)5h|91SuXSzF;LCLzWvVe1gVQmN;mqRE{j*f%9f6;jg6wx_&NR^fTJw|qD z>?YZYe{?EqO1|K=fwl2N3XC z#b8_oDcF8He;-w@iX0lzTOvxxP9-Pll^sHkc2ezsNZ{1`g-kd=Ibb^jn)weQBlRiN}tu!#%`isbGmPLUw5hKfVjT{Be;?>UzI~Wdf}wT*vnX;Wb#!+M zy`TD2A)8~%ht(@o89$CewHO!_DM=f{->XaJQk7D)|}A>ZCmaBRDCaR@EPIWoPda&h{&Tq zHPKy;gL#O^Rqq&RyJqh9rMpqye>8$F?p1}0$f1b*>{Zy`-i`}e^lF={_j-C=x54=N zn>=5(^nH{!#_8q$04*yx6Op%-`hNzh3S+)YDcuI7u{GTKdcNPO>QT_AhI`T765c>J z_sA+~K`^C#3IAV3;xEBpTRgo+q`Fm$%7T^s+>Vke9P3x zO!SZ}BWKF7mN!u4f4*e^+`A7_N*6hk7E(%QNTfKC=b6Rt5-_-yqGsN2-~zzYN*-vy zqJ=Vm0o~f?TE|Uz0Tf@tl-)Ou zi0Ioo(KL0(69O=KC5;Bg`z>&owY-5U_l*J2qM(dbH-A**e|h03whLhIgyOw1lz_#H zqQpz{ez!n5&^HXF1GEpMR6o#X%hFMwI}R(9$$)zSA_<~b_M zwG}iREv3oe_x3^=ZeZxYXmDq!SGe7DItH>6q>gk`R0U>Yizi3EF8a1O0v*4`csQ{ z1{-4v`frWr+t7o%b;t20N8|DHtC#2B*YbuejsC0d&5Mf^dN;#=m+s(=ek|qtZ7-e1gDN^(YdLq;$6;(#R*`%*^F2s3({C-?SZ tc5ZD(C7v!(MZ($T`Cfi6Z}b`A{tMY}tP%FFaUcKy002ovPDHLkV1nEkVj=(l delta 1069 zcmV+|1k(G|39|?xiBL{Q4GJ0x0000DNk~Le0001a0000K2nGNE0I86Y&5ISTanvvnealclfDS?jnUs)pkU$5agD_OUgbtDpAlCuufKLZW2PElWnP*mJ zPbbMbpLFDSGdE{Tvh=*G{mD>OQh>$f_6DXPh|& z5jg|!E!DRx5RoGQ$Etc$!&y~7e*w4@k-eJn0WD*Q6zfovf;lTzwZIA{VsE3GR0QmaJS=*%mBo5-nuaovYu);o4%; zS-9WDe*h12c{7I7I%}S9A*rb=jEON3ct-&?P z*-hG?YiwDx#M+W0^Xy67zUe(J%6kYVMiy_mA=&o;{0%PvZgcMt<}o*$b;&k=(JSR- zRa(Q6w96oqZE#(&WV(;qf0Dz)tl~gb7rwm_Sk8Tn<~meWTH8xYp1!z#w%xn?0mhM4 z193dzv6yr+(=K5}R*5y@#bG3HT3e^__U!HufE&pjB* z8iKLeEbMb`d=9Q8q-S`Xu+YH)dn5v68v_=>n@k<%kH~4`cbM zS4bz&-BCd!PbxmKZt2vD3c4acCP_}9F@~BsgDF{2p-VNmS#sP)bmcn6WM-&BtS+ zD_3GvvI%e4-E&};#InSf2Q5I$9ZDT5S*YMqffg>}q>NThfu_KAy3D%?WgRAz6fk;% z0?6T2=r^83Y{^}?nsMk*Dl!>jgPqsX#cTu-xm8tKK@%7^e};k~-mB`B3GA0Gu!vo? zeK6pM33`_mhzLtCTGV~68W0gCNH1bnUMnl}81xpwaw%K7_$Ar&;%Yo8vjv4lA<+7o z9AmbcXKp4Qp6hi~I9FCy5iETS>CJVVpBI}R&4tOH(!U*M%-Xn?TO`Y?8d=%e;%Jp7dZEn_WyYE1Dj$)nWg=Q67uPW}Q9D%y|n*I|rrtGQl- z&-`P|8Y2I4j9JilgjmDHVrb6ds*Zf^qXX+(hC#+<#^U1ot-1R3h|#V1j{oJ_1fI1b n|DL9ltU`LrswG$dUcUiuL)zo1_tLKb0000jlH&a z_8Tm$&me}(WN*Gj?9eP|9To0NSS@!_<9)f#@cG3pstRxknZ zwK9KjFqN3u)Xbg%e3PJkFoH3me~-2K-c>fI zAqDSr1@H=~8F)#|iSn;5J${6FHD6!)mS^oX`uZ5CNj8s4rcam4Jv|?jo>+~|d|l}; zD?0$(dmYTv$rc%*G#}kTtlS>+oY@7+%gnj+F8dCIP&SpntgarZG&4KrPmb_ciq7!? zz^{D3p}o8#zsSI^KDPnxfB&>GwnE8j3cI4kOY8G7c_{PpUZaOJdqxmbN>MiFSqdcq z7682Sin1t6u=iQhfp}Z&QK}Equt!+w432F@keSiLUQ3Z}Kf@%Y^pO2O zB)Z7`FB&vARtZ#WEzR9}^r#vvf%~`8oOoXKK|?ifUX8FM z_3wTC^`52a{5G;_4SN>$C0>ECl4C{6!fC5l;TYFP^i>UWKbiF^p+BVLAdwzh8=-ZhCgTwQ0m}ML(#Jv(+W-In07*qoM6N<$f*k^lez delta 962 zcmV;z13moG2g(N_iBL{Q4GJ0x0000DNk~Le0001D0000K2nGNE0CwK!(vcw;e|$+q zK~z`?)tQe`)Ib!*zsFbrQi61V*a36^Qi0fk4iz}i0d}C!0dyeR0dyeJ!E=7`?YWoR zO)i-n+?j_w1 z*?%foB>n8#mvN#XpA%>A%`C-;NEUSWCsulCxch^(1ls6_!C5xGzha+_1p?yBi z&I1umRlKT9tKJ64u_{V34A=_P-r{auoGrTT@4Fta_W39&Jtn5_-EWHB@94h#tFlJ+11k<)ka z;4C$t)QC%@zW0*e1~aRr&R?)CN!PLG97;8UO$ntzh#dN5&_k<7QI=31HRmFj&5oHN zGx_|h)F>9^Cg7YXvV=2tf9DxU1nH-SJ4x?qgC#>8ElbZ5q7d!5d(ql2h?*?ajkeS5 zyF1F>iCq3YJ2&?pv)>Iu?nI>zdol^chbSy!E;Yr%gOq7zG%avz4zf1rk>xr|I{=Sw z%fD$RBIk=Yt1yUy#kVRA? zIA;r!{sAUdGthrSf5d?rs}4nY5ARe+Q>zAPq^Oh(GY>6*2;f4A)CP<&Td%_Yh!*CS zz&IYf@7bn>^U4*SPTJYE)|hY#7boeJ>5jt k-isgrywhqI82<(Q1&_ve`*%J&o&W#<07*qoM6N<$g1k1r;s5{u diff --git a/docs/html/userhtml25x.png b/docs/html/userhtml25x.png index 51f10fd7be678e74d0f51ef84b66b14febf922f5..e1c548ac93453ef53a342dd1a6361d8eeea3b24a 100644 GIT binary patch delta 351 zcmV-l0igb*1CIlcIe$S(L_t(Y4ZW3tO#(p>Mc+3Tpe;}WEr=ax2|@=@10`q++5xcx zv;%BGIvDbGms~Cf&MNqm%Vy{P%>KKZ`KO5B)Q~g<))Dc3>e?AxRFb5Xq>!}i#72@f z-B=Pc;3LUx#!p)1FC}SSD&GPV;JWNzi?~%pJY`Oo8Ft=eE5wWnLc$R>hh;WVnz@XN>`x%nlLPlNFC`R%C zU*>Xl9M#(GS6IMyUd^IurfMC)|EOi%pKCp))v(Lmc@{d(Vh6N~S>U`?7_e#0$?&sU x4L^+MVgF^yTd)gGGl%s#C4bV7|8<|$x&t4`y7HHef}sEa002ovPDHLkV1mS$t(X7+ delta 372 zcmV-)0gL{R1Ed3xIe%73L_t(Y4YgI#O+zsZyh99t7@^$&R$v5XC>zib5F@lJzy>e^ zWrMN-DjOWS$axCT*CgV-`+0HfXP+I%p(M-!l8=(sbNH^|JR6W)0Jsf#Dd~=+W$!Nm ztR;PA`v%-J*mR?XC*q_o0JySQegd!oa0MjY0l+HjYhU|vfq!atz53u%<(ZSX_YXM; zkdoS2j+1hdgFf3G`vU2NUXJPhy9c!K%tj*kaLXPVKm+{AVGK>dA z&pN4VN$-QA0uP2r%J=T0Vm^k~*5PuJXPJ2ESaa z%(00lqXNDUZX1)@Mk1fV=sAdXf#hD2-?vFXGCeyjJpT-esX)^2+IA{`J@^KOZO9A< SV7&VP0000*wN zA4%6{cE%%#aQzo~+yyfubRXRPxog0DY+}f5=TPi`kPqncmz7Mr8wwEMf80%ym#ba- zj@?`=TEfF;|+7NGt=yE`e=1v8^;LWqRz&dj>TjbQ8UzenUbK1h1Z1vNxk11O<}QGdr4=2cEk z!QHoJ21&#IpBLm8z=5r|f8tTK;5)dphH-!M5Q_;}-R>M78Gn?|dHY+u$L_;}=Pi91 ze^e=<hh{sNSv=nx?>F>KvjfAKU~`5)tt?k{DZ zQ@`U#LFvZ!R9X0L+T82!n(s`01;zy-iBL{Q4GJ0x0000DNk~Le0000*0000I2nGNE01XBcW|1Kne|Skm zK~z`?-I#$<95D<>p#@5S5(phY2^r`Bs31c+fDV{T2P73F(19|~Bkzb~ zvuhuB3FOb*ti6_HNtVC7XYQ`I3^V&E=~&WZ@?%HRnY({a@0#(xS@M;^%y9fF%sO)S zAt({3rI{VN`)#l3?|LV^2AJ7Gf6@<0ckYhkLqLGLf0OiC(scx{3vVtc;p9@%t-GI3 zcuR(mO`j%YMzOV^nAzFriZ91?ID0gss`AP1jNCH}oDwN{5E8rYer#s+NmUe|uBPb> z_GiYs5nO@Z%LZFM!~)nqpv6zl9}_BD*FL*(Aqi$@?13~yw&e%&OFC$gf9;WhBcKfI znwuw;;30caWn2BMK{#PTn#|%$`jIImW$XCVGmN>Jl38~wHpg4$$EM=IewCNn{H#G) z)QLPL-AA48av&DnNbC}@(0000=iBL{Q4GJ0x0000DNk~Le0002a0000M2nGNE0Elv#KvDsw1DI66KnFkt#Oc7K0s&j_*J7#&`N$t#((ts~h_eg4?iRpYYz_cg{TtA-vh=xc?Qr_b;4tzl9La zjfOk+uoT|=yWaaF@BP~qeeZkkf1l9Td;fZA|J#ff-&=Ku0yH@1-sVbk9cWt%tp!kDLhEuh#&9?*G2Jd}H6AWyi_x>y`8w5V=lr^~u zV0D!cfiKWVj5oso@2Y%vu32ZiA;@L^9R=vn7d-^$+#fT7{{=2g%k6H_J+kf|eNF69 zR#@ZFOmQqj7D9L)Lik>SgmALSpEJrhF?N{fy^jG@2;pf6;alfoe@fJChgnLk4E!B3G%*jL>KEl>XY@URG8_FFJ8HO(aYGe>$C5>Ee)<*|QdQl)Phs z;NT<-)Y%viowPNDJhn2m{hBLdT3>s1F7{*NCMB%3P0J-fi~FTxj66%IX1q=NNqI+k zN4tsd**L|zRA>`JG11ebk2!j6G)Ivx_1~dwblttVQy%o5M`Xq1qBNG2IDEsCfDfAc z__%Ah6f?-Re*vkhX0b``=RTlemZId?CO&#M8~7i$t`zk403D1s+*d9lmJRoec&s-^ z4KG6oJ3KNdXok1NY?Cm=y9(bUYIRC@5M!RpWnn*_8LtNE1HCnr;@Bo_5<*awnFaKX zVnkN%6=*X2#Y3t%C=Dk;yq^)lWJ2(Vb3`S}Vggf!e>_frp}9cQ|JQU-`LGCo&cqQg zXLaLB;2w(DO_z0#vbF3JtQF)uNHNO065kEAI?HB(cZGF!=}WSWtu^HPo}xzE$hy1q zEksvVB!e|MM5!*);rVAdY$h&Jik~}Hxrk&_ zjlsjve~I_ZIrsZ;r{#zWot?NjMtN7_yP;Oc34@X2TdR_AkI)yDud@dBK2I1JYP5~4 zdxX9rTt-$Bu*UOAabSuvX#{KdcW)|;2Dlb^rVPfRjT4N})Fo3kCQfb*b-ED)t@$Vr zg|ky~jq+dsuKb(1JPVb$R$z#C6}}rvdjb%=f7!kO@q9vuK3w)_DCw8C71+-xvzScL9E_(+sY&#S}|zSl)2vCA-|*eTungq_T+G4f9*dTO1!yle2iS*N%)evq5Z ze{UF}j}wP6;48_W(#gddaJ^<|(JkZKlbI3vs#qc`l0`EBlVQ)m8cz|L=_iXuW{V6+ zF)gehkv3CS#>S8WP=`PxD8&@7TsPVk)2GRJ&{6s^K7FSwS~B-6Q)grK{;Gd9E7a@X zs!wP$-t6!tX;b7~hwoU&+Mb}G2sL~xfATw-yGWnh>Sp%Q=*#(F<;;=S@t(|GTzA%{ zNT1r2Ce^nZX zpBL|8Hf-oY_gTa&wZQsXLoq(IbAL2jgAN#6?09E~;*fE%fISC6;D@|$!-fWM?PDV3 z1|r_k5bGD*O_F9)*ur%=nnmD;YetO2T@Gd3>+lUx^;Ueth7x3*|JVO>z>))GUVf5W l_9r>}l{fesHrxvQ4WsFSG!a%h4Icmi002ovPDHLkV1m5$cIyBD delta 1732 zcmV;#20Qt<4#o{3iBL{Q4GJ0x0000DNk~Le0002Y0000K2nGNE0Krevu#q7ce|Skm zK~!i3?VEvdR5uWYcNq$Rqyy-HBpuitK&T+lL6}sKF&%_d5KITA1Hc`a4ghzc%%|Da ztloRldv|_!W6b+!Ja?zllUBcWSG#+%rj%sEhMPcDpNhzJO6mPg#<^`!)jvh#T}tV* z%XZJ-EQP9`sp^%g?rdqQ`ao4Le^m9Gs-7>M^G8RE^H%#Yp{ge$aym4Y+aTLbky3gs zBLASbKGuDIvlJ<%SE@>Ph}sD$rEAE=U_|6%r-y%Fv^a0IuL)IsBqE)sa)T2B5{Y*&55C&Fg%;bgn53mK0a3$7Sa(WfX6ANm$rGt+Eeq*0eKFB zz{izM@W2wug3zbOS&Q>lyYqxsWbU7tki4QyEV&P%G5b}?XUa~@4yWL`sxsGkNbaAD z$Orp=3O(6;-rkxcHCa|)Me^Ki0>uQvgzh;0J?n^T^Y%4f zO(ytw!gwY-p1Q~v`ZPJSXIq@N+B2uj>1(mI#(8|ddh)S<-+YYtYI}VW+v0oneP2Cc zoWM;}zBpfezqX#3e>~{fS(!*AlT#_KRl<-y63^#~C=(E6Erw;2xPj!2G6SqOz=&bY zvYB!5@x93yWx-&wL7F$@bNN0#JA7|zyBM~w@j37@G!8h53NXtV@|csUIB&HFKCAu% zCpB^|_FR$A#>c>mbBo-VbINOp?f!mB=D^FGo-C5j=Ni7Qf2k)vwmF>h++Yh~XNvcx zqjf4qG-W{64@IpE!P@a+43sy|POwTzF*573#9*pE=H)7xeSy7KBeasE*MHaVY@Mn1 zob_4486hJaR*s;v7kGC1b2|7RCu!ksiG0Z3JF$Cv){$)&J?Zi{!);lst%K9Ht0%@u zWyo<3*BQ@Ye}1J!MEbEN@hOr zUk`ig3Ay&H4!XfW4igPay|l+fk%d$QhTm1Dl#j%ae}aJ*2&OiG6Q&w-A&{jiPb16R zqU{GYLJhp`v$_7eVup{5nLb0#Mw}a3?EsHDiJ7@0aH89-FS z>B-DG9iL-a*_Aq@Q5M92a%IHJv0$1U?v^#8+WGn9F(52pmbrglL!iR&~*DBu}C zxg4|Oe*mlWPz54HSQRZk9IUz3r@`5Xb3?1W@Ec+LHRpDi41iOjI5OYw01WA;@Ht{6 z+tM|+`ZHsIXG8Rn^`Puz(8ewHwSkJAN~))X4zxbZ}gn(6Khp^EtEv_B_gn z2al%~8-Rg0yid=IIq($xF+LlDv6Kz74IPGie@)oNa8HQvY;C{?3Ri%k+ot$hmvRQC zIB&JX!Dw!a;e9Wb$Op2l#`my<%vkJ03sW*LUGq};rm$E~%=w~2=;iNIg9UKneo#w_ zc$m-#qCK?2TUW8VDHk>UFT)twl)*y*`cR&B<;XBY;$9BqW3lw{P4qrF+nfM*nFyn@ ze|-GHY)0a>{OVTeQgD$prGzZ2BJklJ|7%JKMJNb;K#MaBdc^t6UceK`rDYVqGxwx? zW+aS*Q=5{V(lwVZ^Bt>*8QE~eT|EJTo0fd5>50un_!-lW3U=A}VKJB?ti$LQ>Rp4X z&Ry@=&;XZcJC`!Q8qhbJ)$D?o`X;VUuhUB%2@s11F*HC_2` z;a7YxmWe#gL9~@mZE_f{M&#T8SX{@Kqoa1ih5-m+78P1Spzfe!dO2+)Btk9b#E%kt0NnQu78@63HZpXHVISG#LN$~oJP9mgQ0bluGE=A54% zbN@LZrS#Cu{>nLD__~ujPfF>knf+vDzvP@B_<$WddXT-m%sJobU0;J!ZBEYnqnWXW zPdVq`*UWn?QcADnAD^Icg+D1J7VyZ-xQGMo*s+9{W_EOt-N@z$`0Rf7&FuZsf;RyC z!goP&o}BZ$;I*&);*PHuq!EgQBg|df0x6~2iu5&wITTyi95l>~5BTDCtCa0iO6e{W z7Uu!lLcyEzcgNR`C&6%9%w5|8(0_a?p^a>gtjP`gGC*nw|NlErNY~txzd59o?kin5 zYbe(Tq}c<^UE2bpe_c`kRCtMSip~8z6GS$LcAsn5QQdjWiU(74b+=-+s+7{pl+wqP z(%Yb<3L;5L>6ym7$5`vd1(1TIlyXX`cr{>-lnR~t+le4&?eez;#Qzh?2RV(_y+%fo zH8MsX$gy>j5^c@wpU%4HuDMKIM+3S__gFWz1n20x<$;uCF+~y&%mW{MNcCE<){|^b zc3alN9I_*L=*`!~5w^#Cx1;mm!98UZAu?;unNHmIW~EST1&>f)nAtNk`+>He#w|i^ zKEvQi!o0}&bEjl$cmYi9m~*~KS4PEbg>vOt84-NU?3!pGYdSln zy8|REXaI~d8awUO?lqub_CVd#TNr?hoFIjh(6zdXjO4KBw3R(}GMn0q2keEpkOcvY z;7A~NTNd*fC)u1p!{AL=Kk~zNR&@c7v_1I01B2xwAwBeSKPta_<>wqRaC}LE<{U47 z-;5!u@C=~Rn))8-AP5LTuLxo4ocML9^k9Y&{iMr9oNhCZ74xB)O<@aJN66lk7@3G%y zEGVc7qopN<4~(oGnSLjbP4W=ui{IDSp6KIXb=UcP zGLAC7xHkIW=|vd9V+Rfv7j?*Y6~R1wo4ilaVW6Picts=>gfLP1v7bfWWHde(23Qrk zMn=JCs;p(qQ%2Walbm>PO#y_pp--{~cJ+ZnB0o7^-JK?6%D{oa$8nPJKsTCipi}7( zT9sd|VbSJ%KI!+PpZifVm|UZeYmaMek9%C6-|+|2Ho+25NG>_CRjT(8wI zxS=AMBUmFNj3(*;XF~SzH&7g5Lf%u?%6f9nyqncE{vi85$}H1hO{E(*0XmvA9B2+; zBREnoaGhdv4)`VgjQH)CXHbFvHMR%;7w$ZyZG-NafS~ZQ3ZFzqS>XocIHXk=0OKC9 zx=cVC*{^J;~-IlVZfa0PS+r;Y+(`4~w=J z0RJDZxHFj9O^izmaNtn1jfox(ghCtE;leJ42|Y!esMJX?R_#&@?Qw{xFZ5889KAqm zbLCZ`t%009^06flW{LVh@?sbA)M1T`pg~|DT63Sv4_UJdIhY5XAQx(zxRXp>Lsr~_ z!A2cLuoHA2RW!gR*d-?+!-fwWeS{5c4!8reZfJ6j4YujwBo48?2Jl}t8zMLb^`OY} zV#e%>P-*o(I1P14Enow^T6BlGSnsM%o8RL{(LK13^!uldD#E=f z0Y9TT0#98Td5hWQt2zm}w8cMZO1FEc-$&P=DP<#nXpTBj`h6ttmS?SNRHVmoY6ie3 z^Nm`@P6L_5`}}*56|(Hw9Ai~FxZFoPX-v=NyxDb-?S=Ifd#(Q@;auRUS9pQbDfLTMAua?hPg z4nzIHt6eemJZHdnsmssGd6Y|&wq1n0dB-J#uAOSA*tEf*sPkeC<{1JtmvTdS`4}%>$PKDBH-ijba`<7p*Chb(&5pW%2{B3Ewhj1{)$n1BizHgVxFcXaNrPs|) zBoImN-yj?+#E_^AcnRnnse~&{rx)*O) zA4K3@@S7@I6VGCdFIH&q5Dwyi%t-&mYKnlt>g}r&xmO+Ai~nyZV%|4Ep578>s%#Y~ znb33M*;s*t1dOB3LJsZwF4!A=>kruwvL9k?Sv*V7ChBZI`qZvh=uAa<{h|JpC>#$$F@Mtf>U4@YJ z1D={0HuO#PXj!@Gm(Gc%^zl87XkX&}Kc)Q`3<(#9}9Q~DcYqGXimf6qwsz4QB~-ecXf zHYGYT%~x%<_gcrYDfPA>0@EdZ(+->Fo$dJhy({AjAw21oukl=ZBzX8(7zgC{d)H@I zPsk{pr*;Y*+m9c9nTK6p?1Np|L4J;U}{ZyMiC(+_p>7|SyME$7bf zVNZOvw8tSFR4}1Ee*%S%CymkXd)KA>6GyLe!x~Vfh{AXk@d|-m;RB+}0U&=OOK$)? zm$6IY;Y7(v)fe}*-*?KB;+u8zMCSsSeDNtqN%qf#? zP<-1*YDeYC<_cgX`LRW1Q`M=SHF6MivtB5ZuK1DddLRdJf0!zm6ywYjKq;61UdlfO zmsi~ZX`m>q5=_sDrr8LJGSP+F_X=^!cN8J>%v6^7Z}nL@x0kh7DQOVJ+j@uI7sNns z%qE#2v^_^ps?!pVAVmWMqKd$yvvjXa5uf%TxBoHQxU;8z3Wpx_Tk1-(RW|f;1rqwI z>?s1~aTdB8f797q4pugn4d{DRwnE0Ld=CF)Pjq+dHz=@Lo~aViFGr!GQ(i{6G+-HP zP|xe{bKS#m)xdjw$XLkASXix<`_;`!ly=4d}hPkOJ?r7wNjey1YsjxuE1 zIVSZxAn=GBv^Q#x!Z|8OlpXRoWv4?qSk2UK`&QnmfBU)oqYV$velyq)6^#v|oD)$E zvGJ$HLA@zqdu3yW>lvumM*CcbWQ?PRZtJgcU+imU>#5LrHN$Fls-i41j_Jx}-%&Qp zUg~#rsp$Pk4%(}n#LGpr0g=U-GQce6U{40kCdAH8W|MN7+U+Bd&C03eJ<0|dSRh+qTSxA92axx>i8@t(omBQ> z4i?D$h<60|%$+gp%fAL>jqluvzfa7 z+A|67i<9Y+ptHb7wlPK`$f{6ug-AaBM8GE4xa?DUN@VtxfgF!^A$>Jw5uLgarqws^ zjFy37)IJy1K1cN0dXf}zr|mBp8^y#Imo>% zmvd(UMKz+>$0C}}#^yjr!{3^bGMFjby{qalqt00-o-){LG1GtjcJ7S86n&@ZW zWoKYAfO7^m8DM8H)Hi;uYH2mnNVoU1E4?b!N}B(fp6=H@+LUv)9d)FXo}1Zk^&IDm zoO6n!`!YW47{wDayPtFZG@800e6gXiuEm30P(EW9mIHOtCGy7mxp8qzpzx4dT%hg4SR&@r%}QJi@J9 za+wv)@2%FF1ZnQ|Rj~`pIEH*B!bvJv z%w1OEO2NTkG7n-#a3KVxMSweDfjp&@K5AE$N>WM(lOe+ON_l&YQVoW@1z;i2O3&C9h&bL%0U)aS{p2uPuV&fT*#kEPTdR z`MsI_9BmiROktpax7kIS_ElE z0}(3jbxP7pW;6^!H>*{~I&|CbWRfSc*-V?<+%?Vy+;v-`C6XKmvVv8|4Hp5AmT{4`prlh<(Vkr07NIb zUWmodMk-TEXesRS61>Yf&&CB-V#&u&oGybG%_p~YlsWcfxx4U2z??=9cZuE+9Fr69 z_|8#6_+uWA*8Pv1^EaM(5|Tbl%g35@$;2F_JE4{8?(Hm@wI+35Yxkz#YZtz1ZC56u zM>1Q>4)e*3_$fC+f`%^Smb_7;M-C$GgGWmy@(> z4?X}APYk7K0L205go93Whfw(b>;`F?Qv&1b#g1xF42nhlsg`F2I5b2^*zE-WN_<4` zehBq3-^6%W1GJ87Aha!7CW3Wg?NA8t7XKCpp38^|$;xOVP zJuV^}N~P3;|9(;$#dnhWK5N^9=g}jcUeB6e@gL@}+v(0tD$WG!QM81FihKtoR$2(p zsppWi^ilP)=A}&W(!cI{R;Mb=LK-20ipDI;8Y@@p8_5 zHCBbZJUk}8Fk1!A&RP%et_yRXkT}j)k<)D9PiE{6vjXJk`*=2+TesK`6isPN*D-t;BS?nsSEJB9qp^j$vJofRJ z_aeTF9FeovEIH?QDJ6ncoohdYOcg<`DY(|*^8pt8Drj=guL~M4o9F}Ph&gI$>#PZG zi1U>{u`xoyXmGz-9G?Rbk!($sf6I|8;QESLvAF!GoOCh3@bg%6VWqgN-8=Y*{Z3#Yxn zc?*2Sxy+TY;Mo6Uu{B|F;^{k|ui}mpO;tT;EIuZmisYUwHYF@UFrEZWa7;`d`=2^C zB`gBk1v4~xc(@YRQRkh(7KH_lg1NwbKAI;qJodjcD||$3QCR#0deQNG16CdTpAt3| zlmp=en*Yq;4ee;e<}^za6un3S`ccXVS;(uWfmyvDI+6n*w002ovPDHLk FV1j9Z!sq}1 literal 2031 zcmVf30>`>!%?EX)L3v&qUAM=_vny4DZX`)&{Rq?0(U1-)wXrfw%$nV0N zsp22)br{=bxL1$^AnrAkX9zyt2MBMkeX}(qw*7{T-1RQ>>2=Aw?>nvDDRsE7S3L(5n zKa0p?3oa&UqM9csN5wSgHC7L?81skR6#@zu`4$KkCaW>*+CDEi>P=MhEY?t2jaBMj zz5I^;5Wdda`AeFGD0Wnos(N1}Mx~39ZWGl6Yig)$s$%+aiuqT$n2_;zMn#bc!nq_$ zbJX#z;^49L$0V_w*mh#BWa0FY?Swz^NkrZZ=V-eCoK(W0S?30q%J;R~r9zdLe2Tt`^JA9=3=7aG)LP9L=+&@-TtkG)*i`{GT zRL>LP^8L`)`UZIg&$HMGk}-a0+gYCITa|*rE5K}*bifznlG2f?49G6g4j*W#_17_LJza&^{?}scn z4^_o_c%Qvi)t|i|N?_K4>9xBD9A7m)(9%s^x$P20{izTFOG>M`ZA!)bp~CoiOo^6F zr46d~7eX0YDNJfqw2hX|VvQa5h})(z={e`hNVe;z4|>)kXaBi2cI*#n8?#isdzahJ zk7E|;iGM!jZ@05eYnRMldT{F~e1+cjvClSIxlmr1=3SR1e?;Jo92w(y~}NvfXnfb~=%rSpcZOr`oG>SjbGx;_JjxNml?;q)} zS?$eJfm?m^Pm5jK*fdAK*?ozN+BSHxlzh>1Wrpp%&uyygoNtcd-}zr_69YKkHuX2= zscdBC{Kf;9S-BESeCtW8yI>Q>OY%ECO`tOx=(7}#JKX<{5J&q3q z3Eaa^3+>)}ySUdkVz6Uc7<+Q)`N)z@1P$1lW4!ONp2}-^hIK<@kbkl5F{HKnnl4JR zPGxz+qr)iHM0AH|tcEHF8(^eiew(@hr{aS+d1Q>fr@tAvOkr{G=C%V962~OKU>T;n zpE;OFxo&>{PAk$IVT-7ej>S1VJitkp zOislt6p_{`)dt0|Yb4Mjy7VCJ66v&Gg{YD+9}vwPi#1eWH=k&!*xI96J))>p(bvw9 z!eDKYWjRtxi=-L#v&KeRFUK>)BDl%QN5|UXm_I$mqS$e8hABH@iXr_1OHMAG(;BR>ncMhxx0-*M6Rfk(N#lEp3WaLMPAh$%HhoK5lB_IaC zI*f^DG4iuWkNtsajM5y&N^PY!QMm<}vPg?HR3*~}=SmfhdV)uFQ`Hi^V#CHZsuGng zw6Z4Y(^q2$suGofwYro5wT!S^vc?J2C@TD_>lV(Z;H0}F-#CF9MdiX7S}UCNW~mBL zqo`asL%#}3<sMS)%C7L7xEbdQPieh!u~6u7D| zF9)W)+^WfQqgGM5|Ad7Co{#fwrOBz9JS(acRr0vlU7G^^ak8T1R!yE8Rf@{MGLfs| z<+-cU;JdA=nmh+;jsAce&i{EJ3iK>{QEWojB zHa1eTs9Z>UMSay$t*DX|f{UwBh-yV;V5NK-Y!sq)QDLPH@g(p$@gH;y?&*R({c`{S N002ovPDHLkV1kM}>0$r? diff --git a/docs/html/userhtml2x.png b/docs/html/userhtml2x.png index bc929ca716072a45b250bf4a3327105deb39f389..4b12ea9e7c4b68e7e7302ac05c944c855cabf532 100644 GIT binary patch delta 1032 zcmV+j1o!*+2apIMiBL{Q4GJ0x0000DNk~Le000170000O2nGNE0Cy&uB9S2&f5J&b zK~!i3?V5p66hRP0yDb8s3;{DhjX=x*H3BgM2!WCe&I}YYKq64g05VX>V5~R(UV4{Z z?rv|d3X1zxC%1DwGd+KLdVb&Or4-wsAMOr0Kg{gL%y#tRdE3lhnb~nE<)puNKeqat zH*j}IJt?Ie!G^mZn%Ub@$~!&pe`*7k!n38UpB`pu$*;}qDm@eRMEg?MMEC$oDGNq`hkU~b0oH0naE(VU#{uC2EW+K{IG`dA}H4zCNdy1oPEP+1z{~RwE@`TEF07-qeM89w))5Ti~QC2tr}pFe)DYPduwfJT{XDo zjd9=SSr%#oUN5q}^RU5sKozc^;TqKxI(&nP5#pmOQ8$E7gb)x3T*meH&x{S>6F^Fi zFY&6zEg*62%iAb*!*{ibAFQK8`2)BT=5SGjQ++rp<-+R00001sfiBL{Q4GJ0x0000DNk~Le000180000M2nGNE0HW@YY>^=tf2v7D zK~!i3?U{{D+&~b8XHW`2q=G;PBy>PJfY1SS07?ZB>EO~qLOOsB2y_4)1n6L*Z}Zk# zFOJXlT?B}G5(2Mh|K5z>%q|`gwn8`D{n*S7%QBM1H+1_C{7rmrM#5XgWX|j3|bAhAW{eG_D z%fQDXp)Q18(ghMp&fa6OXJ&U}J3Ui$>G>oKA^lTF@)(MxMaNS@dQM`Ue;Rx(^pY+e zCwWYrY;ttC`)O;XPm2#sU+ei)wCZ$sr}#fIvl|Wg&^4Jn|Jlrb%Z|grNklxjJ4Em6 z5CIO{orph+h%wGfiR*tr!G!dIt%x{scb_tWjEbK&j3K;DJCp7Q-#;V_G?TJI>!Pfr8@m@LcO*x1Ne`ZzOEtGbTq8FRm zX>!=8i0O)sJomDGmw~~U`f8iVUu2%_tb)5Hh~*F_T+f=0o>7yRK$loVc^DuHf0RZ- z*57nmQ*IcQfTfp6654r{2Of!w@?NA1!reoa!^ms5*(OU%Eg5`f zjV2Wm@+f-I^HS5zf9!CIo+}y{tC6WiB5z*bu5~VBZb?=xE$nNiuPa4lOGfm9B%1WR zNDkQ5&dJhJ%TP0E?mv$N%}WrplJby#Lu~Zf6HLje3YI3YH2=a}LDuHro$mPyXdh^!~31Jial?n-&kF!P-{$_snIo0Vju)hDsRorHe1dxLB zE1P+?q`y?SMkgiMhzL&QJR@g(@$Yiw(tG!^!X!X)`j1l~XXLzGPOc(-+0Y#h$(bSp e4W}Av<-9-893z|ZhFd`Z0000p@XA?kaVETr>q=V=bvY+=euX^H^Xp#_LF~}cD33cSwjfo>;qN38$$S&?xx&c zOW9tz?d*e}_Hi4Isy-5t=jlnP>bZ!#OxtTYcKgoF!IgsJI6Yh`IF8f9m4f3qJzOa` zj?=@HLSv}v3swDFRnNF}RlQKvH;p|8X98CWjX?O&g#WRKoP`knQPtl?0@1YdTT6oXr**+|ab5;Gb zk;mc;aBJW*XWu+9h46OdHt&eYr;&Y51GrLX4>BFc6ap3n3c-~^!}#=}AuRP7J~njQ z&O%%%v<3AM_z=Dh-8S_Ns(P6z52ry~DYOOQ$S*^;Ovut4km-M?QCums1p-eP@(NaR zO+wSxJR0G&hdUY@B7{IVa*AKv$>_MH;N;+QAi2qD7*`5T#A+c3SCZ|>|IP-e>JyU1 z%%^iB=qUxukAG(cGrbXGu8?MKzjNauX^E`IM`O_mryiu46X_9&&fkamGJ12&$my9C zxpneuvPo3wN~S7<0W~qEm?)Hc((k-N&mt=8C^@Sb^?f;*xKZ|`n3r1a$C^yL0v$emo zmAFsJDd#{Jm<*#N(q|05A#G>JU6E(Sq_75}>0o9J+N_uLX7dqFG8opH+wV9n!Mxs- z!s`%19JSYwjr4PJiVUNKm=bg~F3Hl*<=3u}DF@R`lG-kqK9Z+E)m$Q$(x#09lt*`x z0p|8^j;i`gEu5-^5Ew|WgC%kbr6RhLgTgf2mhQ(Nh;ksvaE4Nd_4QNQEDKQ$7Shb^ zALH0Qg=_o)oyIYNW7K|WD_$`jA9La!!mOMcoD+G@Ukb#4&A-kUm;4V|RV>$ug>et1 zKqG{sdJt8}8lEhqAyR<}QcgMMut=Kio=gHA%LieMN#zW*3ekN7Dc%TFa-e&R) zTn|&5d}hGk7lb6^Dm-RJ#8KZy@SM>?8e?w%jln{wL{fV2dHzAUU6ZoyayzHoS8ms& zY`fgvn)3YR_EO64m)l?=!(Lxl3xa1+0HS%EgHS#T=yu`312{xZ0gHfh#I`MjNyM&v zTNwA)O-U@W@yRTQ7;PY`!2G+5LKI%gN$;tBZ?$(dKj$(2X2l^QC}rDb>2%Q+d$4Hq z>esR4TuY8!d#ziZ>yT?b^m@$Fjq~9$VwRuh(DwL_McF#fecn#3zllbe+%SsIo-6g; zDLJ)k=LXV0jz1r|W}=89LP!$X#wkkDT5RK%nGcNgqvRgTA?EhqAh`MNeT%iRktfc} z3RBHF9w>T7J%p^*Z%aG$l}Wi+gZUTU+erS0sy?0SGl$4&X8Clv2xC}eVlZ&fWi;*` zn;v1tbq<&#Ku3aT!a2vs{8(uYU1b?L>mwxWVSyYKlmpp>mHK7ucT0VHCCw-WOiK}Y zT|R(Xn8qg+7^==mPZ3+iiP3utk}%X%_{_mm_U@^GWwZJjG@%sCtRk9{MwF_UQ-=7h0%)lz9

    |JLaZb4qik*|@U|zC zwJatcK^dB-`_x9frC=$<-`6Y@o&^v(v0 zlhbB%rC=$nc$(?NG1O(&3qB4y3C_iQdttbG@NUn)G{X98kcVy;0Q;3ggim0k6=e5(9 z%@zC_QjWn|TCo)99My%xMy4*|!-%7D79Kh}N$```+#F=&Sq$DYf;6kzu4QG6Deh!&csNwHB`IJrJQq(ReUTH^(*l?sOnJe zK+QEVun@T4vaW!EVD0=mMU$GM6{RpZVy*<|BIT*Q&S-OaGR3ZIgqa=PvLcw(jMcAL zjGu^4^0gcboNL{JKVauZQLI&bD7Ittof}On(+4#E+WBRNIrb2UoC_!e-&&8qjCxJ5AAwQdpgYVjg>Z1(@a!@+6^z9Yc(qgclNrE-EC@ z%)z`D%O$UkXOxTrlh5f*kwphwHqAL%EZV>nE-jb-gvCuN-W$L5TEE1}(S)Os&ZDZ| z5!xbbbujk5+f!e#WAL^QdEAe}(8|`9z*5%FC$22Zb;_8dv-g`{8B?sgrWvJRYfzH@+mdI#hdJiB|D(Sej&R^mbmkN=-vkSv zl#8D>K{HChAY!oh;-D!~+}&RdHw}KFsp!(KX-X-W1B!(-%QYGaJN@u0*A}wmTuY9f v1xMq=tKq7is{*yJ=b-kiZ!CJ1+uryWU^R(C=nMcD00000NkvXXu0mjfSAA2n literal 2164 zcmV-)2#fcLP)|6aI)Dy%RB+G%a1|VM07C^gKOF!S z@aOu+&el!2%x1-pW<9%wSXi7wfipZ6e(mQ&g zs*gnEQ%dPet6m-B9KrGV?f9n*8goTNt`^6vw_8vjv)&HQkP!YL=#&utAn243{vha- z5dI+Ol;1n;cUP$DO%eH1M6Rcl9;oVl5xFBG|BA@Fl+r(4-H;#?mcI|~rj(wF$W2wf zpv$(6LSTQ;AtC%L$E?0vc7_CpngEf!|HaC0L9m4o{tlo3NL8;R_#!`qoe-cd22$0x z78V36Cu07UQwTSefZvPlZ9I(}Kp%wV?}vLL@?l?hL-6|{EPp>>`L`zb%+)6}xRFwN z+|O<4m$3XDU`apX{ZY$r`2doEy#KI+TM~$b@OJ_h{mV9&p8YAMmm-42=QZenaQi#J zru*h8zk6Uh@Qpoff|U?%e~_`5{{vot7Xk(ACWJq5Sp4I=sy-2szkO#gA95Lls3Prqbufn z)i<{PtM<+180T0GCP&PnAkm7@UwY_tk1R55i#*;bCTcNSb4x_Nrj(wSH&ay^>3L=o zxiYy8YxvnZek6MkdTPIYU+#dt|HNKt!~XlW{h5-{scmQ%e{m1i_zak^zZJZJWYf2OL08%%_*t&a3!s+c zLeUPYie|u#C@a8l`?2U*_&I@f63c(9I$^%(eQknZO_(5I=>cneu+TdbWHAeJA&XRG z4#rPakxyzma{k6vUPf7<3|>>n<%%G?288x@@q?@2E<^ch?#Q=tU;Y1-HuYzg-nRbH z$M}nTF!>qS_gva6Nd#-d_1^cnUGLA8Mf-dX(fvF&lhgZ6Sdc@KGU12D*vFK~Aye9n zvXtAOQqs{A2Eh!>g5EP%{X$g#Ms&yQLB_rA?5$v_f?{O?6R z6m?*+2Rw=4vAt=xt&>AwN}C{9E5zOwYZGr{X+K-ceHo_6B8fg^aVW($tB&XKS8+1x z3+hBWa-MU0IpGII^${)y2c{!KJ-8kGSxSkq#8IZSITh?$S=?f9ky`yMl_i3B7|M~8 z%+zyCZP$uppKlv2uVc!wtfFy|MNHj*7UTWHv$l%~vdFMJ$3@AwBDm%?Iga(8M7}?V z*?7A_A7cLcgEdnohfHa63fN6yShFs^;O3w`oqBsJjGpl2jLnd%k6CX!_5OOhHTCi9 z?PF1&x8COaV;@;|EE^B=w#vl%v-LL5>~mFpuc{0gyO1=&vhb{yoQr)_m1nLTQ5$7K z8w@bN$GB6O*!x@C48q?Tgfm+`m^s)FW%6YYE?Ll)BGE?X+Q+=-fDw3Qmb5vh1ZqPw z2gdGecmC3N%-;>>Qq8_`W0*y9D}AhhPg=ECKb?uHpHDdWF81;nNae{iZBPIu#7UUYGn=VtJ~esA#UT>dNi6n>Sly zj$s-(TM<4M&bA6LBf zTz5bK%VE82X_roV**uDR)t%cmj!Rz&ao()(N%nZ(JuN_RSutmh$Hn(H=ksSpZ^Dl? zZt4Qt=mBH;CGL7I9rsh5QuYVWCg(J8e+fgX_qpCR{2bRk2@IbmEXigd5n#JRMOxxVW+_-pP$3!fygTk3oF*z;PU*MkC9#3}H z%X<>+rbpp#soAmke~egH5^xO3w6I1~aaVZAX`m2lVW_v~Fj66z!MkXXeA@-zVLfWY zJ+Jp2!eYw$)acFa=ZkIPirW|~v!lkWn?FD;70m{C9p=Kjf}y^k9{Tc{1KQswGj7&; z4Gj0)CX{g>hW;K1qa(v{*G_N3k5wcto`t#C4DFRkz7l_cmMrnb((~sJKY~9fHp@k1 z*VwMt6M$>T{$t@?=>eWbi*SN)ZKv~#m{kB-^&E+Y%GlXvA$gg^yc=%8=HC8 z6<*qm0-K`%Cqga767>{If+DSlY*$T>!q4Q54U5?cxWz~LIWD{(4>`^O3+K4*7NZ4c zLsxD;@KCBM3oHB-udf*kS(>`aD}r1|clV|{;Rl<+MZ%6Hj7x3rS$c=<*6!=nb4+d5 qiesN|8!fM6@3CxR&{=sZt@s})ZER3Efa{_F0000O$nl2Vp^+H76 z`E{%63laIn*LUU6^`9E66IgIue?nlvK?#8c2PFg+9F!2)1gd(as`sk;oFb}vr>fTz z#e)e#U=@TEOh~Uq7^J zgE>NA6<93W^aBDjD|XBF;x{ba3swE6+C8XvR;>pQ{Al9(^}Td1RrPZr#9)FD*f@kJ{vP{@ zForq*z6@pvfsKQB2u%#IG#`SmpUP2XFitr6BczlFQOxmkIQVUZ1=|jMGy<`~0wJ&s zvAIb?7)1G5J{eT?4Z&aYe-obsJ%QOg+>K50_MXs|$={YTX8-|KqWu?Bqs(K&bQYsp zkvuqgRi=Y4G1un617#EaogS>68AbPIGOX;iiJU}%Yy6G;5fSFxt}REOCzE7-CU|jp z$s*tY$$rn@*~iuw%lL5~dnuBy?aI%?ug}+aT^_pr^87^P$|m4xe;+31d%rKOPqn%4 zXYEhjv^8zc;O3^o6|?`;CJm>l=N>%Mlmcdc#CF-+J4@t9UR zJ=i%?4oilS$qxZ>FtP@moR;D%6$o*1^4Dl7b2L;n-=U{We@aOo;rv?L9B5Pc-Ih)- z7MN1Hv{&|+1;JP`Sj^eLxj&zKA_~P1ESvAwQpU@c%kaUPtr!ETy>yZ0PtCTuw^41W z*j}`C_PNTgv)GTWob%07BKQ7-FH48b4l*d?Wm&eADa*(AHeuEG$^50AocxwH_v2dG z-k{35z|KcEf5CSC8T*>MbU_>}XKk8!qgx?UGb^uPa`LyJrOcyI2OsP8ZK&(0*AIbZ z){@fwlKL&HgBMhCchpErn>)FS^!hD@oO#&tZFsC}*XiW&0&Hh6@iXJITf1GEr&U(K?tXtTKHo~&?EXmmM z%nHu7x$kGXKpTA6XW%Az?`0YwNq``9uH%_y1Ymt8X_)+NDsuv01$Y{X^L77U@zhBv z-HOPqS(iUm^>Qwn-_qt#Smc*;vlc1kwDQpbU}RGia1&LPsUSGHbZ8fvo&P?_-Q%3N zmgvnze+C)9somc@tr&W?o$f;jY{*X}6Am}85*+ss*q*_H}002~Pdm;9l(X zu!RL1f|LJO@%I6YC~^L02SR7c>na?vG2!GF6bXcMlONo>3zZ5@*^P4^*y=5Lh297w<#XLw&4Qe<`?Tm=&=}cQQN^*`Uokp8+ATJ~*|# zf6%dM4@9?dT+F&$tRinI@$Wncmz3fh3Rwdous#gS$-62cE#-Z=VFM7?JEH0~hv>5d z-Mrno6HdNiJ`!DF7x%HL5>iqwz1$|GlUcKMRvn7 ze^$su*vg+fMM7YPH99_$zXC>jGLyzr8NSU#t_Kj@Q!0KE=75HU9%x6H;b_+B_!P00000NkvXXu0mjfFc1~q delta 1487 zcmV;=1u*)+4AToCiBL{Q4GJ0x0000DNk~Le0001&0000l2nGNE0PY4@VUZyie}zdz zK~#7F?VO8|6gLn+yIl?dLk5rmXEM0U089o)21gNr>zo001k{lMgaBj!85k~uc0JJ= z>$IAk&+gpa?)0nLnw3VQ`KY(M)vZ}IGg%X=dMY9h%3S_sjzkd06yWm-j*4XI)+ee`^%3;FbvC3Kk=TD_D#Wu3#~KU99H=Mpd7R$V(A< zY-TT1^|^>V6On&K9H9~W>IW@D_BJxyKFKOas1djS(1R-1%uC=meB4p9U z#6(j4+v<>@hY+p?1Xxw|F@h!Xzc67U>tL&@Ub)!}D#GWgD1?Vd{&i9Af8%xdU~NKk z^>Zd7ANzOzBm}FU&|LkXxq6*t}wW?l-$e;7O*&Td9e^q^Z--JBO;!NBhdolCyz2FlIX0*REvo*8k1mv!`Aza19 zeie~NT$Jb3*f*HW9n?cwi*3kPpdYn^)idFRn-p8~nQe9oh#p{Zt@zY$}N)4Q#*GYB4bkRd?f@%0bp{W3EGFzxJ zBgQ%jN-@@CAi5v0sxtn>0F%GzZ#p522-`aX%URHpYQweii|W}+vTievfM0xW$4n31ygiK`ASTpvFW12N`Jy~endCzr} zQ`8_|vkP1@i^-vfBD#ypByK@+w#%=%%6nsG#5$UcX>*tC^ELZ@_BEHev&a!+O;`%k zhSQFqArFso%roQ90Hu>73~41vp6qqPwFX@HANq<0f68cVWsdqVTtvEv1>4|N9`$eJp97KnT|++21Nd5SU0-d!|()n}@V1 z);R&1kJ#bPp@Kspglm(Qzctq+65;Mb1guCPhE&!aGvRY>g668@Tl{@ejwemw+>_23 zVn?fa&oP8+la#`!s!7Jybz`XixP-n}Lzu-je>qo%DI<4=S)7~-DRZ+9|L?V$muN$C zZGwg>eJp~CJ1?j98Rz$K=+_Oi#D8345qhXi+hjb_&HD+HwcjBVX0gH(*JT)DCtOGo z(9|a>mWH`JO2RBIhzDeOpN~8paWee3)o8EKT+5PHZu%Qz(1CbA zF*36JA#1&fv%B+qZ=cteEPwqyl15``2tiI6RsAA_@FCrUa(yjjdFA>k^T{b+ysDmy z$eVNzRQ0)te4p0W^3dfUIwvhYe`i}evJa356lwTRq`$fqLm zZhlv%hKp|oES)8PiTKR=-LO4N!$Lk+)jwy7az=PIvdtOtl?m_1VN&EXe-Zh0BF&k= z#kUMbKBk0+g+zERzDB&-tzbiL@V1iGX~e}>hw)$9c<;xuGJdP7cbQ0?g}C_Y;AZ(_ zEE}#E>xiVK(}0Vw4#L8{GQdKya6G@yd%w;yyu(o;gn*l6j&HrQu^Vpr)#k@1tY>(NOm!ZlphC-KPw|$Y%e{P zIkvPD=B;e`-Hw&z+oC9V9*Bbb*}YV)_a;T{r2TR|ur1RB$KiOnu#(}5c`g4vFLo-= zw!Kb&x|20QVK%!0e=Rf0M&+XyWkQ-v&kyYX+pJLSewoGQ`S2W9*EYF$r}SW&K#6Fj zGcsn?Vhx$j+brZjH;|M{6^r%aB0AM(1#pn=ZAjbG(oSMBJ>~P|-i3z`l4ldE#I^Ug zK@T*y5MNJJrlFn=%uh;QEFcCdz99Jdh}cNPaG|tPfJi3?f7k7#=h7b?RgHDTAreB+ zjn2D85Abtwo&&#U2;ss$BW1J*BS)u}Cc=Mhgt<2+dm9E8k^O4vQ)PRbZ$DOWpVjUX zJ=imkZT$S%W;*EFcX^eZ@>;b{4I9n&eM(5nyn$$@bdV>@%ZW^;r+mKLkJzT}qqWag zbvTyjf#X}ge_rR$s?@Tt!1;7-Lfe;S!a07v7@=!sk*bQQ+^EWo$-#A_mcBWqbG2OG zCuP~?`a@w6)`b1P;20Kd!^cmtid)DMJpj!xjuFeYPYf92E@yn8ZP-=iIJ+5+v>3?P zJ*N?foV#9c{&v~+$zD_~JuhpE|JDQR-blM~*AHrCFgH$vE&lzS)j4~&3ex2 zf&EM`{NYFbsU}&h6-^^_j&R7wGM-s929|4*+TeOE-Pw*1!i|XBm}UA+RWIg7IhN=l zv*a&oBRe6)PY*^rqP^iY=XgPcAq2$I&B(QaSmoA)SHs2U>;g6AY7x8moL!&;;o{pj zCmNm8e+t#^=r=7bcqFr7jc6u{j$lH}qyOww zaPehi4}UNXq%lCiwOh;q7U_|DbTow;bAIWp5Nqx$~ruCcGa`QF!3u zTZpyCm=*(HUxJTi%Bb%}nD7X~U%0*yWS}eY^%K!iX delta 1499 zcmV<11tj{-4BrbOiBL{Q4GJ0x0000DNk~Le0001?0000l2nGNE0E_FY9+4p!f00Q< zK~#7F?VXQx)J718XYx`2fexSp2p!lRK+=Kf03H?OIUSHxz%v~{2LU=D9R%FL*>JF~Mw%}mygs-B6+Ju`d9vryFw5&39lpO<-8n5&sndpf0htoaCAb1!O;m321h4E7#y7+kA4Ryf~r0ikzYmR zp_x5b)n_8|R7Cy}k#}bH_lf)|w~nxc?VOp}D-n6Ds+Sz*>j;zWK_?-?2HXl}OGhea zlT#E)+ut;tCKw?^*a(SiRegv6MgA8ZuDMQXtLl}z>!5+?6E;wYjFFY=e`0-%SJ6jo zCoJJS&PC+I)FC0jd4wgL2bOR&2yqvT%YI~LFXo+ky@Vxf#Df$1gM*gP`-=oE?Ej_l zw1G&7a0Xbo&ttBZ?Pm6eh+qL(291O}Zp6#HQmNMjlz}~(XcH8KJ6;g)6Mn!d=7e@I zO^9$=D1yCK)t4gj+p?$Le;@j-s`}=(eL=ze}M0Qf9Xrwu>F~@e_|M` zIHsvxZXe74p7oN?!9{l^l0F*>FS^bzGO3A6&h6KEk0A54MC4o6NU;sAl=@=K{VZ8R zw_a>GH?#5^iva0lqxQ)G{ML43&|h(vF$czO^S!N_0n69zb{jN-6-0P|rF~lsXMXh3 zw>)`__6RWP%dH~$f7HwDj{o$NQKp380C&6@9oRL1@9h(fOYB? zU%`|nn2ksfh5)&KoxVzW)#7|WV8ngCC8=*_Kc%g1PO+)Uv}V&ev~=_QZD?P)t+icw z%=i4AuI;J*v^*CV0aj_tCAJ(p*2bS#wJBtgk=KJ>O zIb~CdZ7DKlUHJ!!EP6`Q5DoiyY2J@=Uz-^@pi$h^PPRJ+hkg~up|3YaZ`9nN3DSDF zRD#nSpghRA<%~ZEj9AXRpf3WG6u4|exCZtQxKv63oOa0EOufDqs^kn2`2|}{`;ZXvlwGI;W%Js_d*DdV~l?vheT~)W|tv^H!;R9 zZAMrRc5>+BfSH|z5Uyg3zvU9if60FiA#nUU#`rWpe_LT@Z$k)AVvN_vq=O%hNtn4{ zW{=J6%FMp;8gpMW`)p=Wf6vE!XAI2joO_PA_9}#MQMe9ACvr2VG51*o5Rdf7T$cd4 zLT5*XlS3B}VV8LO3%sB3u zg$!Q`X)yQu9AmstYRLF~!0G?&xga^oR%=EP;#bXoPlt_xo=Lsm95RlG^xpRp_?$R7 zbOnmaL_AVf>d#`M$;@yje_o_;Zj=c``a_HbN6x0zTjQxl#;E!T=hp#3S`DiG(cgm* z!p9K8{iP-Y!I{}z)_OpHHDDXOHiKQtO(akagK`s;`cWJ1j@=><6-iNf6(gja>5&+k zg}ssTE&x)-p;Vd(ovtCOXsziF6y;hNuR;jVls%xoYJ_fNqt*3oe~lLMB!^ZTpVR~4 zE@4gYnu^&s+e~Q)Qsvi5$)rFNt#^l*!9eKW%#r$(1gYIF@kWR}t} zGxMm+c)PS#4*oSuf7OW4dnxxqz*!-lA~GVv@n8FVCD+>NA^`(CbD-;5ld6@CR!O8W zn#hwJ+MQN41yLqN9zX7oabVaqat>-FbfL7>n?TOgz39}KEr5(EMHSKE$lW@cRPiB$ zivYkH5gMoL8`o1{mK22=B8#-6oOvN2A9Hi0Qp7)~D@(L*r zi_euDy2@BAf0&u^H)qu%It`;5-tuHqXHmC+-_><>;N0{Uyc>EEW27tV@YHqCI2yo7 zr3PyMfAW*sPQ!qT>nNhi<(nI1H&44HBO>8Jo*|N&#YTm}-bXDXlpe_@zBd@nCeNNj zXZ2R80p#cVm~#>iRYVVC_F)ubiinuoPEHITA|snHe>0k8&pHEnWEpa<7Jx*YP)eX5 z;ty>&N-``0HG|M;H)G%!eH`XdC6fj=itcu6y)@>QXSZ!7u+Y@A`9L`^j>PKP{$NXs z2Gyc~G4(_iPi2jL<;|Bq)V6_;o79RZ-R&Q^L#+{^F~(v6$OV{bX$ysXWmpG36dQu4m zAp47aT%G6FOuP9=7hLZz^f-$gA{F$K-v4Or{D&~zZTOB# z9QO5Zg}fy>r`V{j#i5J$+QRWE^7wow)zDKQ27~}^>^Gj!2GaTIe~Jx2k?kn|7pK^N XbD<_5VJ9tm00000NkvXXu0mjfm)}5Z delta 1676 zcmV;726Oqt4UY{WiBL{Q4GJ0x0000DNk~Le0002^0000K2nGNE0H9a!@{u7Je?dt^ zK~#7F?VO8|6gLotyD0~N2>~+T5rK~kjGY0O0auQI!WkGxU?2l70|OaA2sRnW^~rxv zX=dlKv#d0G$Np7YyECJaTCILdcb-zRGj1Q;{bw`#no_#HNwahJyU?3b`dXWAcYk4K z?@~%%YLB%Q?rb&iO@X_=a`%t!f1da((e3UJqpiEYb@%5>@9Ybd*4^JPwRiUmGkaPp zH;Ti%?*1=yE%mV>KAPDtEyhnN{cdJ|gi*PT_~ABA>X=9=UAg;x1i{QM_`P89Q7&*L z0s1Cr>??H=eJ|lvO6gJANFMPi3T|eLMq&%d7{coZ4adJUvp>!3S;H}#f8ng)`vJwu z3T~DKa5SWguvlI0gvNMxGy82}$S)X`Xd`2S5b}P|FbN_K(YgZ}3qs%zI}bO8yl5y{ z4%1rz{<=HkUz8Eg8i?mFTcj0haaQpC@F=Bpi6BV9cOd0Kxu5bdrSxgoNcTdBYvFlH z>BouAF;L{?JG7kuFnk!Yf6r4qt_Tb#Ms>$1?+K!gd+>J8_RVn4!PkKWoC+Vq1E55Q z3d%P@5yafs7@t%0-Y7^!EASX)X$E<2(ywNbLo0M1TpozZD|jG}#dYLF)%V^We-J~YZ7jC3_WkU5;Tf>q6iS14?7d6nH>DI-e=`4W1l9@Y#kKVcV z@vQco7$@i8<-V@0IhO1%C>Vpbd+-KF%gN;>KPf+KT4b4myh!BVAaYgsgI6cYDZLLN zGKVKl5qR)nf0UL((sKPvNEX%{in%Vg_~szqLK9J28C67@1CN8>JsP)?QKhXxUkPaC z5Yd=EJe%TgdB4`2x*}VF2<0Ly&4ZW3s2H(Tp4r0;)8{bB^a0>SInNNd2y4r({wi?4oC~0cI=t6GYu-CBb41|1e;PUo<>VL@f0SklwPZBbcN7$!#~$cpAVuie z_ZLuQPIr{|a-=dC$|QzcDZ`18Yi2=aLC8b3+20&6ol{#YKl?7klOq3Stgz6LYsWQ+ zdy@*&0L*JH`swIZ6vmnl*S0#e>p&{g(NiGSrZZHHWR&gCF?y+iVl2w z#RCZtMUWguMZsYB9mO)W;~S4pK3m@7cdt;Ve=#>LvWZ4$WuDMo7SiBVH*d|8HnioO zH*@M0j)uHhbFD2S#-v~R51P2w(M6wH!%^O;ANpWTcivq?(;;nTT;Nm8p(|cSf1-;* zW$-fdy5PZ4Wi-a+TVwWQv3x%FTWizF#9Z5WR%=e`7un6l-fqAcc&`qTKm^81IQAMx^RnVdP5Cva5-vj29_41ITs^pq@2|`so zLaxLXr=!l;7H^a~ea~1cqtqcN`W*^V)T#3a$HLk@A~FVq8A-FUf!ky-_=;g|&0a#Y$I*Q5`Da4fl=D zr~ny83TWTEqAx=KKm%UYR?uc3nvVZPaEJ##p@XA?kaVETr>q=V=bvY+=euX^H^Xp#_LF~}cD33cSwjfo>;qN38$$S&?xx&c zOW9tz?d*e}_Hi4Isy-5t=jlnP>bZ!#OxtTYcKgoF!IgsJI6Yh`IF8f9m4f3qJzOa` zj?=@HLSv}v3swDFRnNF}RlQKvH;p|8X98CWjX?O&g#WRKoP`knQPtl?0@1YdTT6oXr**+|ab5;Gb zk;mc;aBJW*XWu+9h46OdHt&eYr;&Y51GrLX4>BFc6ap3n3c-~^!}#=}AuRP7J~njQ z&O%%%v<3AM_z=Dh-8S_Ns(P6z52ry~DYOOQ$S*^;Ovut4km-M?QCums1p-eP@(NaR zO+wSxJR0G&hdUY@B7{IVa*AKv$>_MH;N;+QAi2qD7*`5T#A+c3SCZ|>|IP-e>JyU1 z%%^iB=qUxukAG(cGrbXGu8?MKzjNauX^E`IM`O_mryiu46X_9&&fkamGJ12&$my9C zxpneuvPo3wN~S7<0W~qEm?)Hc((k-N&mt=8C^@Sb^?f;*xKZ|`n3r1a$C^yL0v$emo zmAFsJDd#{Jm<*#N(q|05A#G>JU6E(Sq_75}>0o9J+N_uLX7dqFG8opH+wV9n!Mxs- z!s`%19JSYwjr4PJiVUNKm=bg~F3Hl*<=3u}DF@R`lG-kqK9Z+E)m$Q$(x#09lt*`x z0p|8^j;i`gEu5-^5Ew|WgC%kbr6RhLgTgf2mhQ(Nh;ksvaE4Nd_4QNQEDKQ$7Shb^ zALH0Qg=_o)oyIYNW7K|WD_$`jA9La!!mOMcoD+G@Ukb#4&A-kUm;4V|RV>$ug>et1 zKqG{sdJt8}8lEhqAyR<}QcgMMut=Kio=gHA%LieMN#zW*3ekN7Dc%TFa-e&R) zTn|&5d}hGk7lb6^Dm-RJ#8KZy@SM>?8e?w%jln{wL{fV2dHzAUU6ZoyayzHoS8ms& zY`fgvn)3YR_EO64m)l?=!(Lxl3xa1+0HS%EgHS#T=yu`312{xZ0gHfh#I`MjNyM&v zTNwA)O-U@W@yRTQ7;PY`!2G+5LKI%gN$;tBZ?$(dKj$(2X2l^QC}rDb>2%Q+d$4Hq z>esR4TuY8!d#ziZ>yT?b^m@$Fjq~9$VwRuh(DwL_McF#fecn#3zllbe+%SsIo-6g; zDLJ)k=LXV0jz1r|W}=89LP!$X#wkkDT5RK%nGcNgqvRgTA?EhqAh`MNeT%iRktfc} z3RBHF9w>T7J%p^*Z%aG$l}Wi+gZUTU+erS0sy?0SGl$4&X8Clv2xC}eVlZ&fWi;*` zn;v1tbq<&#Ku3aT!a2vs{8(uYU1b?L>mwxWVSyYKlmpp>mHK7ucT0VHCCw-WOiK}Y zT|R(Xn8qg+7^==mPZ3+iiP3utk}%X%_{_mm_U@^GWwZJjG@%sCtRk9{MwF_UQ-=7h0%)lz9

    |JLaZb4qik*|@U|zC zwJatcK^dB-`_x9frC=$<-`6Y@o&^v(v0 zlhbB%rC=$nc$(?NG1O(&3qB4y3C_iQdttbG@NUn)G{X98kcVy;0Q;3ggim0k6=e5(9 z%@zC_QjWn|TCo)99My%xMy4*|!-%7D79Kh}N$```+#F=&Sq$DYf;6kzu4QG6Deh!&csNwHB`IJrJQq(ReUTH^(*l?sOnJe zK+QEVun@T4vaW!EVD0=mMU$GM6{RpZVy*<|BIT*Q&S-OaGR3ZIgqa=PvLcw(jMcAL zjGu^4^0gcboNL{JKVauZQLI&bD7Ittof}On(+4#E+WBRNIrb2UoC_!e-&&8qjCxJ5AAwQdpgYVjg>Z1(@a!@+6^z9Yc(qgclNrE-EC@ z%)z`D%O$UkXOxTrlh5f*kwphwHqAL%EZV>nE-jb-gvCuN-W$L5TEE1}(S)Os&ZDZ| z5!xbbbujk5+f!e#WAL^QdEAe}(8|`9z*5%FC$22Zb;_8dv-g`{8B?sgrWvJRYfzH@+mdI#hdJiB|D(Sej&R^mbmkN=-vkSv zl#8D>K{HChAY!oh;-D!~+}&RdHw}KFsp!(KX-X-W1B!(-%QYGaJN@u0*A}wmTuY9f v1xMq=tKq7is{*yJ=b-kiZ!CJ1+uryWU^R(C=nMcD00000NkvXXu0mjfSAA2n literal 2164 zcmV-)2#fcLP)|6aI)Dy%RB+G%a1|VM07C^gKOF!S z@aOu+&el!2%x1-pW<9%wSXi7wfipZ6e(mQ&g zs*gnEQ%dPet6m-B9KrGV?f9n*8goTNt`^6vw_8vjv)&HQkP!YL=#&utAn243{vha- z5dI+Ol;1n;cUP$DO%eH1M6Rcl9;oVl5xFBG|BA@Fl+r(4-H;#?mcI|~rj(wF$W2wf zpv$(6LSTQ;AtC%L$E?0vc7_CpngEf!|HaC0L9m4o{tlo3NL8;R_#!`qoe-cd22$0x z78V36Cu07UQwTSefZvPlZ9I(}Kp%wV?}vLL@?l?hL-6|{EPp>>`L`zb%+)6}xRFwN z+|O<4m$3XDU`apX{ZY$r`2doEy#KI+TM~$b@OJ_h{mV9&p8YAMmm-42=QZenaQi#J zru*h8zk6Uh@Qpoff|U?%e~_`5{{vot7Xk(ACWJq5Sp4I=sy-2szkO#gA95Lls3Prqbufn z)i<{PtM<+180T0GCP&PnAkm7@UwY_tk1R55i#*;bCTcNSb4x_Nrj(wSH&ay^>3L=o zxiYy8YxvnZek6MkdTPIYU+#dt|HNKt!~XlW{h5-{scmQ%e{m1i_zak^zZJZJWYf2OL08%%_*t&a3!s+c zLeUPYie|u#C@a8l`?2U*_&I@f63c(9I$^%(eQknZO_(5I=>cneu+TdbWHAeJA&XRG z4#rPakxyzma{k6vUPf7<3|>>n<%%G?288x@@q?@2E<^ch?#Q=tU;Y1-HuYzg-nRbH z$M}nTF!>qS_gva6Nd#-d_1^cnUGLA8Mf-dX(fvF&lhgZ6Sdc@KGU12D*vFK~Aye9n zvXtAOQqs{A2Eh!>g5EP%{X$g#Ms&yQLB_rA?5$v_f?{O?6R z6m?*+2Rw=4vAt=xt&>AwN}C{9E5zOwYZGr{X+K-ceHo_6B8fg^aVW($tB&XKS8+1x z3+hBWa-MU0IpGII^${)y2c{!KJ-8kGSxSkq#8IZSITh?$S=?f9ky`yMl_i3B7|M~8 z%+zyCZP$uppKlv2uVc!wtfFy|MNHj*7UTWHv$l%~vdFMJ$3@AwBDm%?Iga(8M7}?V z*?7A_A7cLcgEdnohfHa63fN6yShFs^;O3w`oqBsJjGpl2jLnd%k6CX!_5OOhHTCi9 z?PF1&x8COaV;@;|EE^B=w#vl%v-LL5>~mFpuc{0gyO1=&vhb{yoQr)_m1nLTQ5$7K z8w@bN$GB6O*!x@C48q?Tgfm+`m^s)FW%6YYE?Ll)BGE?X+Q+=-fDw3Qmb5vh1ZqPw z2gdGecmC3N%-;>>Qq8_`W0*y9D}AhhPg=ECKb?uHpHDdWF81;nNae{iZBPIu#7UUYGn=VtJ~esA#UT>dNi6n>Sly zj$s-(TM<4M&bA6LBf zTz5bK%VE82X_roV**uDR)t%cmj!Rz&ao()(N%nZ(JuN_RSutmh$Hn(H=ksSpZ^Dl? zZt4Qt=mBH;CGL7I9rsh5QuYVWCg(J8e+fgX_qpCR{2bRk2@IbmEXigd5n#JRMOxxVW+_-pP$3!fygTk3oF*z;PU*MkC9#3}H z%X<>+rbpp#soAmke~egH5^xO3w6I1~aaVZAX`m2lVW_v~Fj66z!MkXXeA@-zVLfWY zJ+Jp2!eYw$)acFa=ZkIPirW|~v!lkWn?FD;70m{C9p=Kjf}y^k9{Tc{1KQswGj7&; z4Gj0)CX{g>hW;K1qa(v{*G_N3k5wcto`t#C4DFRkz7l_cmMrnb((~sJKY~9fHp@k1 z*VwMt6M$>T{$t@?=>eWbi*SN)ZKv~#m{kB-^&E+Y%GlXvA$gg^yc=%8=HC8 z6<*qm0-K`%Cqga767>{If+DSlY*$T>!q4Q54U5?cxWz~LIWD{(4>`^O3+K4*7NZ4c zLsxD;@KCBM3oHB-udf*kS(>`aD}r1|clV|{;Rl<+MZ%6Hj7x3rS$c=<*6!=nb4+d5 qiesN|8!fM6@3CxR&{=sZt@s})ZER3Efa{_F0000%cj8;G_aO?!fLKzI1@h zLw0!}NJ@|>$&$ElMnjPT!5@5DfV&GxQ%bTlRQ0En(pSIkdVMZ+ef9d1_+d#G3#xi4 zBCq_qRrNwde)sjc?7RL`V{rlte-29sEZ8d{uwbu*z=FLJ0-HcpuT}M4RUcDCRqs^w zW}vc32WOLw8Fe^zbZG;8e4#sFWVuLk= zz&6BUlejSO^0N$95CYpAe;llM`!A=SGQSt9`hw_!J%}6yJ%L%E_pN0S^tynS?1Gju zN5D4``KLG!#Ny$hwJ^v}DLqLk-A)vqRsS{+FU4&llAnH`mGceOv8v4hi*1=CogS>6 zantldWmfjaL{28k4L2;mM1-L3jZFf<^fMcT3<930NK@ee$v)5Tf7!>@*Ou|)#Pa|9 zy^H%GBG;DTLHm&Tu~EHKZSM70`%^b#nY6DeHFMX>{(_^|sgT=|{f52?S+a6x+OA zITpt(1=MMT@*;ANe=+iXZQDzK)19nc0H&|2%nGAiR6Kc6CYF_D$`gq9?H0#+654>a z%00)N`&SBds?EKAvtVc<3y$q(p>mIA>uelo16+w%F)R=l(W$sN2nXmC@7v3z$oev6 z`F+2)8^eVk?W^S;nA4a0-*sOt`%RT;ZFBZFVGqP(TIuv)f9FU!EEz^7e+h83l9uA+ zyeD6&K!}ss1x8DmgOO6wgB|R&Xl-+#P2s&Qou0EfrF3O;LJ6~Btaw<=>E^jVpHjQ2 z*sa{aviW|+w_>u4mo1ku25ajkciBbScxq*vdmGi3itR;P=P_5=br$>4mD3yMnA^R7 z;LCErW(OIRfAO*`TgsH>5BMq1k3$z7z^Z*vp~^p`)kfSao8e|B;B600RC6M?<9!0iWf*5RRk zRXOV>vkMAZ${ag164!wn1`~g@n9$x>V4iU^9(h$13qE4$ zOzdQ#kV}^Z_{dUDus)MCWEV7*Id%yBs4Af#IGJ>4iz?ijb@@wGuPOu4qovKE2su4n z6&6b=f6rSOeE{r*ih@k;5>_?Pv4YT2N{FHRX{wp{y%^2xZ6O3U6xy}FFn&=|?V7&k@clpibf5~!|+oI8Za8%3{7lgq2V7c(&)X9Wc zuTpT$nA0`~fmJn;tk=Br84v>N!xX6=T4Cjm|>017|CbokUdIFZz=(E8xZVP z*6>t`F0z0ulJZ|bb_r9z5Z4algeO5*umfP?dc8DpL0GUoW8xx@iubrDayrm9ZjVzW z1hz*kGniyOUNwuDkg}96av#(A*Vbv7AHmA(rutQ@?Ogc}P=W?%4O87k00000NkvXX Hu0mjfFWMUl delta 1481 zcmV;)1vdK349yE6iBL{Q4GJ0x0000DNk~Le0001&0000l2nGNE0PY4@VUZyie}73t zK~#7F?VN#i+eQpPfxZloHXAq_B+Ul)21&btvqAhiL7%%p(+T>V4V)3;Y>;fw#2cXR zUvTvKM4Bgxk|h!UJw2KvbToN50EYvmW+qEQRZm6ashNG?zE$;HL_V3>=eeH4F0OG1 z{B#Ka-{;X+pPB&f58%!E7%dCT*1}|GLf?A za$+Ls_}|r6f&oIgdLY57swXIx$el9bBI{(Us$RL<3@Re#swk9)O#W@Le?P=U#9;k| z8B`jAD9@GOj5;N>`}BxeN5b)JvNES7MK6Y-eqBUUUYT7&z9 za!rTg!dq2+CnA4NZ{~Ojf44XhkH_9j{Q9i;1cR9^dAY$E?ygy)a@|%Bnf-6ou}#^< zHA%VX6f0Y#Y;}4o1-y+1Ws*t{psJk5ysrZb$@!W`%N&*})6mygEffl{jQ>{atDn5q zEx$d5Jc^a{#;q8Mf91=heLfO+$Bdaz{*+cLX|7)kxlWS{?H!fLvb)~m-S_b`_8hz_ zgO27i*;19)Y3S=@fr`FPo-4QE-tDT`N4a>uSX7EC?<^QXelnTD{H4CFo73-o=kl=@ znJgRIhuvDGTq^^5%JbW_ul@TeM9SCqvZOqKahqu%l(R)*f2lEADg|0(RtUGaio2RK zcV(BVN=Py(fUlU;*G1jhy;-R*+`skncsxEYllFO#cAhmcZ++x+BW6f0%d>5fDdpqu zhpkuneC7z~hx(_buiZVDE|EC-y80h+jW-<23PGIJeJP#z5zM7opzkv^MSJe~;Hu$K znNoh&e`Bu8f0>TE@NV#|^Z(4*);iZkb`vG@n0lHXH^E*txrLCEay+J8%fdwXVP%4d5jf(pZ2Te+DW2?nW1LuJ7x~$swmK`7TMIo>K$5V*(_6mK2tRg|ItaSZ95 z(b?Rw5X!YmU%Z84Oo1e1H;Yr%8iiZlSDx~(!?~{uW|-bD<~_$y zu2sly)zfg+%j#n-)IVH8+lwLGVn1EMq+1@`e!tZ-6<|W#&T&rNA${35h z&&Cz6KI8lr0sXRJmiUibEK(1(Yg-#nMzZd=w)Hz?!Yx+#!gZO3*a%lr6g0I-7QDw@ z9wp%xw}>ZXdF6_w6!K)$yDi3gh2`2VskqJy?J_MtaB>uca%~Ya`+1Aa?>$RXt}eyk jAFx05RsK2KI!gWrnW^B*sj8|*00000NkvXXu0mjf=wII6 diff --git a/docs/html/userhtml36x.png b/docs/html/userhtml36x.png index 2a93b40f0ab9899c6c7022e7f698d6075eeeda79..269291b5b4980abeba27d4fc57014dd30455bfd7 100644 GIT binary patch delta 1617 zcmV-X2Cn(r3)2iCiBL{Q4GJ0x0000DNk~Le0001=0000m2nGNE01r{9+mRs`e+C6f zL_t(|0qvZPapg1+$9I`4AV3Gu!5vgUu7k@^0e2mQ5}43ILIqst0H^@C4suk$g$~60 z#L6ejAF`jF=e&4-GjIHC$@16VD`~Zsh7e@WsOlFXg!kzlliOAi^uFeEpeB*owA>evJaPL+1wTRq`$fqLm zc6?W-hKp|mES)8PiTKR=-LO4N!$Lk+)xSoHa(Z~yv(4%9l?m_1Zc^kke-Zg@Ak7)T z#WxK`K8A#cg+zERzL|KnTfv6h;O9zKXC^MbI*k9)#(US7mGN6uy~{-EOvJ@k2RF-~ zec5ouSVtr+of)|J>L4uKD;+Ep3&-=jy!Y!&!#f-mLI}87#`xAd8;9YRZ#lFHaY8#Y zaq%s{#(HtXF#5sr(W0uae{h6bJM~e}5}%D_UfUpg>us(LuGi9^C^(lH1vww;4Q~xY zg7n5kV#n#5{F8wi6+N6;fJLJd(*QmH&S(!WD&yq#0uZEeMVlu6M1*n6EBmH{x0sJR z7(l1NO#}xA36>uJ+diY|sr<*d6p7b)na(X;Yg%8reCYDW&QC-xe=YcdXGc)PX#O&N zNDt&QT~ID7Xn{`Gb+NrUrrn3;zVfohPFz;lT{;2FOu>jS7Lr{IBIU;cK>Iowr%Yj&2|+l`0nN#YHr#%?jWk&D)T+r=^|5V0y~u%hiR450YmStHh=E zcZMElZXv#ws7ymG9hje#yjVaCRD413^AWL;h~YwMr2vr*e-5tONspx;9aW8W#3>R& z(2dS}jvnBb;ygQk&k(|eeMZV?5k`(qElq^~+X!QCO!hW(EF$~W(ud0SHs3l{aLsCW ziXQBl$2NZcY%?7+?Yq26PI;|br-qGY`#vS4W!^wEQ`*Us<>f>M(^EcQt|PXg`)KX6 zMIDYQdf@n$f3MZ~vnsXhD{wwdo6z>9nQ)GuFGlE^S){5WDmSV!V{mZYsHJaC>0B+> z*Q6}FTz@Dm!kV!E7aYT)ZTR>pR&f)Vq6eTE#xY{q_K5*w+~tf9v<;i89A`Jfkro3P zyXQ0lk#p1Q&EGEDKG=(@rRQaB@!xu2%^PVq?)o9lf906RnsWZ;7E3OXmIdnD->m1T z9@x+H!XJL*A8L}tTG2E@=Lm;-ksSU2z(w*%HA>4?_jajDORrO+Qlw*n> zGE4rVHnI~!{Pdu=Bib5XbDl1UFob|uni;tk5Ubpp@M^gDoI{|dTr6T2pK}OwAY6QF zv(xCDf4NZY_I}ec2ajYntP#ybk=$5%g=uPx)&!DHrk-syy!z^&*+t@RK zmBB>6D_neCXiPIU+2@=32@gI(4Iwa~&MXDZf1J)!v5GUUU2bs zK>%f>27;lgEqi!>Sd_+G5Z)VnZYJa;;AR+V4|tm|BeOhxQ)3`Xs@fdH$afsGFss=| z@5kv+6}NnCux>+BV|?Du8X@*^&Y*oSW>p!KU+lg(C0u-M4vEeg3cj5KVMncA^&W8X zf3=}4);l$ZMP-y#ELN{<2hM`e4-wu zHxX-(F*5eZwJcH`5$8fq zZ1v&L(Q)z3z=XEAV-Q00>m}dbZrMwL^MpO1bACxWUz7LngY zE2=iO4%M`+6dO%B>?TVLfMN_DVz^tLi0(`8vX6d(cRTumZP&+0v29 z>2iu9Y5SXs(*z@g2rD6xt*Q?ZpveEC!!`Gl+Nyfx?mDO-`h*n}B4cFbf4W#7<5lz# z>j_IZk8=_EFm*@>a2{a^=Yb_04MN-n+dWxJXEB_dcrmO&-qjw|spuT<(a0cBv1CfWoA;f`0t`-C5`iaDVj zOcNqp7m8r7RrRHa{ITw-f0skQRaM{Iwl7Gy;}!A#;`0?xxe6XM5!L@nbZ=&Z!PT+Y z5n*w&Uqs{qH|67_?5i5UuWfhBxbEE#>)(6ZmU4(|?BJg#9d$7hZeOMz^3L zDvqgYm)pnkzh}MXb8yjJiKNel!i%Q!i%e?bl5_iY-Xq9-EfM*VHBxLtE2X{|b3aR# z(5)96&dsd+#v(vE*{FST0Kc}~81z@%Wz2!G+k9`EX29|_yWI*+UhBH5U z>06#WMtcO9^yOBOe|+j?cE^AF$tY7oaDY4RMhEr{;CuT-ZMz{_+(iwlda_dr%}l5M zM*l#ue1LUo7GJ@XCYXQYG8v;Fi{%BvRV0|F!N^DRkzGy5fNb#uyxluT+vnxj`SSi)wp+cLXSYURGWHqPXu>V>RlZlZfba7vLHmMv*E_pb2O9uFwQ&JzOfm zX%0{xo z@jg7Bkr<$vGB645IG#_PJ!-NCa(}qhMMMEZ(1cr6T<~Hq5+V#{j1rWo2}+Y%t=C0SJ_qF8HZ^ZKL^#Z76_Dr05NsZT0$ez*w1xf)l^D|66d}T4 z%BtZ$qhiYfokMo%1w`hXnmivO?BT944Y2oif9-=HW-?c;^)|b9vny=%-Vw)jE*anes z8Nt$rBx0V8_am8$OPYs?K-ArB${I$VumKX&o*Sed5h&zrN>+Q-F_x5~;Y@$#+MOmu yF4)Lg!9zFgal>p)g#A7n>&?ML1&6-gN%AjI@Sc2^x>ytd0000e5nSpT=F%U)nGASUWgwR2N z3J4t-sDPw{qyz>!FdabXAW#8>4w4Qa=|IfW>>fJVx^o;GGH`z;u`TUMtFOJ?uREob zH2t+XkaQsFOj43Gm$V;zNt#KzkaR8SB-&T~Gz=#U!^{rZfRxh1+S1I}kiC@Bi@I-r z3=hT(CS(x(-x^%(OZwXA8^lEZYIr2+s$mNG-y3~{Xp(Pc`(`#XvokY0864%`#}m)( z%K-VUjTywwK<}=kr(RS(4A}h-fZ$^@dtNP;b_(oTMcQfrci2R#>wRcu}yKX+bM1m47x^sK%+Ad$nc1Zz^zG7#i(-6jW)}t7fgr9W z(Z+Cmm#7*;u}<#J3>O)fX207cJsyym+!ZZ;c72X+{D8O5yZq$&3&Wh-ihO^6Sm!W5 z@y()L5*u|{{3h3P>LXXu$M=Pt8TR$3Z#svXg}zO+aT@hM?#i6cJ-2gOlfyLnpBkX$|Id@%u>9e1hxo(yh;|(2oJ~2_B9jh*8gL*~Oo$T4VQ$4$KoYwb( zgx&?mp%qpv_;y1P$n$|cs7WZgrMdf#AQ*qd7+x2D;e~pZ4_S~5 zaoyx74Zr>CN*>a)-pyW=7b>M2a||h^Q!ny3_Ne8ZZ00EZ4xCqVZ(AV$=5$+Z#HJ8D-FQGlJUsLs z)lfWW%)ChHG@rvRwGQi+AmpRh%Qh$)E& z6Zu=flHyHKUwFqmk-uTMI^;oPmal$hBG)gRc_#8V4A=1QIIHjqmM5Z>4Dav@fh7?2 ULr$!#00000NkvWtM6N<$g5#3{jsO4v delta 999 zcmVe5nSoIhK@df|DFZ-^K*#_! z1Iz$40wDt^Bd{=oBLl?@AOpn=AOnF6+IqvEt=Z+~c9&ZV)caL%$81kePfyS9?!_X) zRzGzgnAxtGotfE?r!XsErSQ z!piwQaQ96!TQ{@wQnWTc2G14=yZgSG9hlj+nQcYH)gt+S6zm-wxce`C2XD;mb{U`a za=s2=77<=7JP3-8i->qWXu=bOyU&zl-+@6j9@KZp8Ox z3?AbAca>x_1Vl@VEB_|AJ6sRvxAstf8y|~>&YvKu)S{*r?oLhp*uZ{D%%2@YYU88O zO1SRMRU*M&O3N*u-NkkCAI&T$pe-{yiilfx$1v()A_ly7cW%IGM6@EP2Wf*-LjeUH z0*VL{DSu;cxsO9^C#kyoVMKgp0^jG2cOf6a8qjuY@AA=h(~+rT!|Cg4yts0IbaiKC z*QUw`xzy=N7K2Evr9Q@P%CVu})k*FSl^-gnlJPjp;}kO^p%Qd?zx(<5GN0^$`DV!v zT_4gh&(Z=qbtHGn1?7BBJ%6MU zDR8BdDVLPr^iCr|&v4X#UWcC2Tz=_r26uuwxe+#D7ZTX0Co2y zP@rH_$|n(VB4;##)!oOkkY6cfQ>4qEP-@y&?~Ap^0x$G%&||Gq|0h5|DOm3sHi&

    C(>M4!tiTq0{fc@nyxB@Eehy Vf&T*NyVL*x002ovPDHLkV1l1~;I;q& diff --git a/docs/html/userhtml4x.png b/docs/html/userhtml4x.png index e17fca31197f49818c3b7b75c6572b8d6a45fdaa..157b057a0ba8e1f61998a97c1a896a035ed2cc07 100644 GIT binary patch delta 1754 zcmV<01||944BQPNiBL{Q4GJ0x0000DNk~Le0002E0000O2nGNE07)-5DUl%iAOPT=iI40#Uv<4`N@JuiWV+YwHP$x)OtL z`B7YV)6%Dz-B7Qk&M}nj;i5;c7XHkPc>MdGerk2L(v$vkU8_RXggx}We*`$KwF9|k zc1PS7%P0nHniR3_r~Ey|MUU)<@FzpWN)~k{Tj>d3xvgv(qB!R;-h4^S!4k=`xLY>$ z``$VCEH8Yln8`&C4&jfC349+Ml0A{OE{k15Zb2l8Aq@0N_^l9QkhS7`#_#;HQe;w;sKRggw{hg7^jFMYx@^ctA6I;l0ODo?>V*CYEQsYpX@;^Z*1pH%OkQaRN}&L(KWERyaj0q3BN6r_^YWU_OBa&2a;SUVntF)rYN zNkN;la43I?4REM)e;&s*hwdXEPG&H^vH|X=j<2dG&?K3yYlEHuTMM=lcFYWn1_DFo z!vMu+!PsM*Wfq7a*a`7;p7l^1bP>zzn%wHM^j`d(^h3Ws-p{||q|5J*T}u!8UNke1 z_8HsOpu-CTjVCMiskpSp1zeLwnw_eP{b<}4<*%YA6ZR^5e}?@G`X1Ahx*E^fy3W-z zY5Vph*)e~uC7eO|RR;iZH_faKOOHI$8y)Y)c$&$;!0bR9yNd@MIAYr|+hg{?SG-@q7#DB7_g{JM$9NbZ>1R>?awPqLd@NagbD67p z0`J>&P5PhGe>2K=n!bxd{DpB3UaFCiU{oKqY%&orm}uPKEraTuyVNG-x?tdQ4D&}` z>9I((;KMnOysAv-eR`KZ4;0GfhUk>_S1Oj#WXk2s4lOmWeJ#rZ2Cj(7Bs za%@cKe-8yG@>qI;U@I|A2syQ772%l;1IS~5%S7o2CIT6R6d2~1XCw0xymz6!2;RZBzqoaFBx`?%K;h{WJ|V3-aWH zP4H5H3v}k(K>rv3U*L@nmrCirDi^iX8D|RdL%Emnnd<kk2y)xtQKkYVj_uoBmGf7gKBMi#~df`WcX- ze{887t-q!7KrUrb;H1VW-o400DRq{lWnb0gTbsYMU-cEzgi1{okN0Pc`5+~_l%B{c z8P5iSr%J5xJ9gUBwv=zmf%o*YRh`N!m3LQmRHbsg<+ zOqiZ$@=l}>o9oL{77s^y+I#FeEnKu7fBckmTZ2D^CZkSgYdz6D)iuW8n?U(w;`y-+ z*dDYI!F!eByraZiE_C)ldN$wF%*Imu6~>JiJpAuw4O{97_H-@H_BHRtn7*YCZLYeP z=a#;a$UO!o1@fN87*yt&1$W@;@~07*qoM6N<$f>(}XbpQYW delta 1627 zcmV-h2Bi7i4c-hPiBL{Q4GJ0x0000DNk~Le0002I0000N2nGNE0I`xKhLIr{e-KGT zK~#7F?VF2n6h{z-dt3?t>JSBkw+r(!S1_p^3grSz#kGtet@@*2{62cIXe}?+uxrn@qe|0R7x`}0{ zdOgO!g;$I0MC2M}X&Jw-?OL3t@ZHpE>j8$R_&XMnC z7M`G`wA^!`s^p5#?d8mZe_5GL(aOIC6J+;{{#Q`;rgwfQBHx^cPbqQ0z=6XfRlT&A z@mxgy<si@LtJh^oL~^npZ#52c0PCie>*gmWk+`AzXs=_IruzH9_ZiInOXN71d7Pdrlf8$DW_tF)#d(0 zuv7qL_da}eqwLw5g;mI6axm66zj2sl@WT%L^RC|t=pXAj3Bl@gCx;6HL-0q@-!rrF z%#mH{eRy8w4@_<;)SZMiWmlpymhW5+cF{|}F)YftGKWdJf5NuIe0V8b6f5F2bd{?lx%%{(PpA7RwSscs*SL+abEaQ}jVu!q8ie zSgU+bd1nrFRzc_=JuBx>Mf`Y-NlsBN0@YElm5Yc6ZR`U4x(|~K_^N%NJ&Oi~?cAdZ zhPJT`6g8!Uo5UPgc%y9^v1dF8Xe;9m@o&LmvYUXKf8M~qPnXuMw zX&ES_`S)C3n{s7XgkSTSQ969OJy^B_3+eF#*`6B6d{pOD!gdOLO5ChPVf=4w-hdZS zeuF|;L@)mqtRcG*u|U6KWkKTJED4MSKbIxS-YsTxsmg%1m%l9_#dyR? zBI}g)%L}X`y8*x>r=~$T^0)rzi*}u%2<7;zrF+=HzGGiSb|uW=)Z?!8!7cKKvGVZ>#EOUJEPFxVDPs=*795l8?t*iT Z?|&7}(<(W&{3!qc002ovPDHLkV1faHIF$eZ diff --git a/docs/html/userhtml5.html b/docs/html/userhtml5.html index 8231fcf4..a407f8e2 100644 --- a/docs/html/userhtml5.html +++ b/docs/html/userhtml5.html @@ -10,10 +10,10 @@ -

    - + id="x5-3003x2"> 1In our prototype implementation we provide sample scatter/gather routines.
    -

    +

    1In our prototype implementation we provide sample scatter/gather routines.

    + diff --git a/docs/html/userhtml5x.png b/docs/html/userhtml5x.png index 324d7f453a3b14051f930972e7d0eee37ff5f3b5..e94d3514199f1e80cfffee4db245eb9af72f36bd 100644 GIT binary patch delta 1368 zcmV-e1*iI&3fu}IiBL{Q4GJ0x0000DNk~Le0001z0000U2nGNE0LKYOEs-G?e+3Rn zL_t(|0qvTBaosiyhJjuNNHRjZftyZHcLS%LpveaDWrCi&fjdId4V-LHdxLm`Cf)$O zkM~1I(UP8?{oMELi1SCsM~w@Z=N8f8F1>`_WFk)iH}vBDwpCyI;C{xce7(zo=Wf`#X34 z=I+m-b9MKR&>Fro@l6JBg`Nx9aF%k}9muAEwi0j6>_K)cKz0rNPr4e<+1s%UilvB4g`T?UrP=@5}}pNhWN>W`d7TupPfl(T{6c z^6NP?wI@+Z`y(`Wad=6BM(`2O`IBRCPDwEF zrW5P-CAqR)UX_G3Uv^-mr{X7>v2F5w^0ikvck6booHfr1YC8xCe=bp;qo38Xb5J%k zd^j~2Q}zY?@=r;sx_y10!LDiTy(W%XpQTSH+A+BtKhyMyaUb9oPPs+|OGyp*ZX)7! zMI;$sMFh1-f?1?~W*TLruGN$HNBUYjW}&5(5zTT&{WiVe-Uf-6jTYxEVdOQ;x9A% z-ON63)o>5c0A*(Rirs4xpF+P{LGInh`}jIRA~E7i&}AUgIkeHP!OVV{NG_72%~JRZ zO-@Rz)stX{SeDqTqpP81`CLogA%g+R62>fAgYw`Ov@?6HQi8#9lsm+GVA0pwk+LgX z9MoCR=I#P!f2ug1>!O-bQ+5_vaH&9R3rE^AMVBJ1;Vm+hsJHY;Cp$X|`rJ{JqE$=q zU{A{3bR|HWc<%FFz8Y;Tlo;4OqNAtfSKY`95{cx={?q5EZIj=K*RVsYc8FycUGwLC z8w=S%98%Y;ucebo02>Frt!x+x8i7w?1ei{Z49kvIe*$t84Kx`@M~6hH_&4fNJ9H1b zG&up8!)`BSuDMP*aZS5TJWA{m>`V?N5X(-|(-*_8O1!jzKezB~4&dci2BzM_M{I}* zLBHh(>4XmNXi#S#rhKrCuciOijt%)K+x5`#grVh~R5y}Of0R}OT~6iqyqo}(&6GEf`drTn5czk4~99A?ASjRPmOnge|0vv zHFO@xNBlVy*}d5A*a`a5*0B@xMA|dfo*ExI`qH*XRR1-}A?%Aa-`NfoeMZ_NRLJs$ z;Oa3a5$K7ufAGQdPAATXgq}$I$Hr6R$ADfVF6|LIHRgls5Bg|6d*FBI=rhuOvFg1ZeDW%WR&fQ;_8SS2@ zluoL5@Y2lQrIdcU`&%=6Y-UGPq?C}`!4!SK-AMpnsq+(LxjXNaKatKkry0hu7&Hz} zRmf$W*W!rr!&S`*z~(Vd;4Sdn%+69umr>yEr)G8{UFdn4Qo2_8nVG@EeXRL%f1lo&^_^g@^^N`3 zig9ZJCEGRvK!MyDzuLmpV6dp3l{j{f4yQ53$`4Hb;-{z|dWPfcy4p9CD_FO3EIIv& zk^?q!DvU3Alkl1+`B4;9x3Da=*VTLA8TmuJ2*|!+-;V;3wNoFc`)S`NNWWIHc0!3c zv+>5=ar{0YPw9_se+Xl_-JhYxHQYUKLt4pMwcx(ytpnw*pR~0WKh4FS9Fr#w+V)V6 z0?eEmB;6%J?18$@AS4G;`h7@Ta{!67xXqoTFF-I8phY)&#|9T57~CCwIP7Fs`#S^y z|1+fozZvcxKQ|yg;e_9;dK-tKJur#mZ5(o?5HqMBbqLRne;+u4m%0jJOp!CNvb>+8 z57ONIyb63s`%&oxlZey_iW3n_^y;7!B&+a;o^de=X~Sw;LXD3!zT0+P&LV{ zJbfpOLbL0ve;VJ?fGhr{fN_+uRDiP#O(rJ&hDVQXdrZnWKj$sEfbY{vIF zJsN}(GX}y8W+w2*JGl_i*h$z_-Z`O221|E2N=G6nx!kRkq)zg8>JypRK>vIs*A`an z3_Ww6{X@x|zC&%5Ff$&qT#{yN#<>JNyim@n&p3kXe`rg;e0mLT)jxA4IUG)qNnd30 zPXChV%WstBgA8p)Y(-zG+lOP>(uoUn$=AoOmxBTqh4qE*A%S#4m$4;HnG1I(g1Ch4 z$Ozd7`I+WW18NEAO9m%lZt+tPtdl% z6+yS;e1Vwq;d-@bLA4@`T`Jx;wC!&tm~yFjU(kYTJ=l4vcwg`j*Oui(I@1QA00000 LNkvXXu0mjf-$rzF diff --git a/docs/html/userhtml6.html b/docs/html/userhtml6.html index d6dbd1dc..6f264aaf 100644 --- a/docs/html/userhtml6.html +++ b/docs/html/userhtml6.html @@ -13,12 +13,12 @@

    2This is the normal situation when the pattern of the sparse matrix is symmetric, which is + id="x6-4002x2.1"> 2This is the normal situation when the pattern of the sparse matrix is symmetric, which is equivalent to equivalent to say that the interaction between two variables is reciprocal. If the matrix pattern is +class="pplr7t-x-x-80">say that the interaction between two variables is reciprocal. If the matrix pattern is non-symmetric we may non-symmetric we may have one-way interactions, and these could cause a situation in which a +class="pplr7t-x-x-80">have one-way interactions, and these could cause a situation in which a boundary point is not a halo point boundary point is not a halo point for its neighbour.

    +class="pplr7t-x-x-80">for its neighbour.
    diff --git a/docs/html/userhtml6x.png b/docs/html/userhtml6x.png index 72a36e5d6f9c0fbc77d77c8f10ca674ced9fd3ee..6f595d911ea8d03063e6b09ee9c3fa5b1a210511 100644 GIT binary patch literal 2326 zcmV+x3F-EUP)-pQK&A=R*jt;p)J9|Fd)MUI^iZ zoi*(tgfF&jZ4A*~0`L7}=iIv*@5h+i5cZ~B()AKdkvAyKyV#ci)LvIZ2F|(b&bjv` zeLLr#JLi5c{kBG1jrP*Y`3J% zoEZPC;JyFdd;d*4!?kg$^6u%X1)wVejNLi+y>?XD3R~0GoW6VS?`<`QjldD<%i20Q zWqIeiY60l#fFstkou+#X+D~-cSsmJ`JY0L=5W=ev!mn$OD>-bf>m~B;`d<0~}(}{Gsla_=jf0h;A1_03-X@p zW9K68sH-jjdGB93=Wc3Cc!PX_Ui^mhV|0J2+Q4}m!O_-pK0QYpL5eXt)MzBAREH76 zAOQ~rFcwKQR`Ad1*)fPm&e%OZ)_`_a1YY=gs%?7wE@wiXkp~6n)ZTO6ge)+#0N|9} zs>|=HAka?fxr2=Mz?cnwbIyG*-$!9|e%I(6y}(DO1LQzrJA^=>ze4~JuL)J!YwBBb zgx`~e>^b=oIiRmFYvjGi$DBJGd1H@v*$%-pM)lE_6P^@PTo0=D{*+>TBN>0O563KRd?QXTu{736Jnh&_E{e zj$BIZy>hqY`VxBTPk@R2a~|aU{Kk=r?*x1356%ORQeoWw)NR~io+(D(!zUd%7q zLkvcVNAUtvw@h1=wi#=Yz9owuKZXbFv71|JpZYHUh`unjPkOE*S7aH?b4jM~dLbWU ztTA05L*C+}D)Y3Er5(^yIZ6c4ScVq2?Pdo-JI5Ie?A?#2V;fN%hj^tnoFeu$sM1JC zv{JU*IOpVDjPd~gIOiUu@wR|?1XP#U1*F{;Nj88?O6~b7{Xsj3IDcIdj9XNVV{u_nMVtWS#_#$?^kcykDeq9E7AP{H3ulvdD*aYw+?S%QaPLr?IB!8@-Yu(ELk) zFKqN=k>=~1Bl+C3jcoQl9Ky;wYkO0qNfXN8}0=u0Y zNWgK}l1I#>Vezl%O-`Qb2*|3<1j$#}@#f%(39@6zb4=+w{9B}UjHH95W0I)w-+K`W8HUxWWGe+u`fq3l7x2EB3KZeY#WFMXIE?GXG(4ClB@$wrP09zG8|wQbQFBx zTs(%IG-PxfE54>9&KSc={H7f%N6j&y&x7667>o}7Dm)vHX4u0>ke@``(3-7p1LkP$ z?o<(XS%ux=5+6%A7kNir5r9}lqtay94YRX2WyB+ntt<(pqX4p?{k~Rff-HHFln)vL`b7tG0WB7jd@%xy$12u? zR(Ff3w5$47m61wcEkMB&4tVO|6p{M~z;|+4PxY~cRpbpO$b5;sW8V~jD4k-&2qmqQ z2#MWL0>+qc_i4)oMjNGb96xQ-AvQ__9#oE|di2cfqF$@)-77zjK|3KTBS(b^yax^{ z*!JWwkEC$!Vln>%$hr9~9)qLtj&|79fmv?I7F`V1PmQLqi=W{3WS5Sr|Mht zPL9R<5SSzMP969KmnN-`fF(Ybuvp$;qRf}byX%WV!*nVGvcixZCQ9jM1+3O}~l1Vt^I@ap6qQ+xMk&TRQ+* z-nRI>hP>gcCUXV4qP$JtE|}VR+P>)?P{ZX1`7|nLdteRP98cJB4S~7EoZ$wbFfdvi zI3cVdZ%~u@5_xxhTL8KuP`-$q4LgOSVkvFq)Zm*tM+f{XU%_!EU5;H9l%kbSJPRz9 zH>k;ciM;c^EdcEdC2woDd)EZXYtH6-UP1A;kOO18}+X<=$04`*a->Bs<8X7Jo z+74(Z=+8{JInBRwXu+r9N}>gzeZe1K9;E`-&~S=q0cc;;ZkjeUTza$|&`!`zQ~rpQ w|Et3--qHoThK5UxwgcJ^wVS354OasH12>>o0>HD?EdT%j07*qoM6N<$f@iO9+5i9m literal 2191 zcmV;A2ypj_P)k0c3z70v{O|I|4%nb~yqUWB`tU zM+V>s;K;x@0^4LD*Qe{2d$gL_8ST98R)5v8w=*Mk>u+_dTbjd#5M28?KMtI8-#h0n ztnHn1&zy62?6swSFUg-nmUHfB=iJ?)zSbP4)nhBUnGOebxA$v)ujRbd?iN=Y&I{iA z3+LRU5W@RxHZY9 z-^xkMOJ!fuV4izOL^t2TBUYsl!Y8SPzv0w|8>KyqG4g=-o>d8F0{7@kNap%IkvVq7 zVncUU$T%p4=$o3D)EkZ%KcAKpfX;oK*gb@Ylvj51*?a%QImb$hEab2`{aLQF(!j&} zp4Ik8=iG-WgO{<kcQ@U=C0ujTxzogVXv!!wcMv9AP@f1Pvh^cg-mx|C0zeM39FFUNS7 z@|lj0nU@mSYUB~nqD+yCOdJnGaSt6yM^oQ@zss>}(zoxq+Uw$o=$4Mtg$uaq=qQ|Y zbdhl}DWeWDKDfKD*Ys1kXY6V(CNJD4-t}4i6#bHJdR;%I&(4uK`g32}5_F@^B8y-d z+cQ3SCdn7RQ-4G9WvsK<+318VQlI8Jb13Ph*T;O8I2zNAXG(2VKba>>`5N=DX!p5! zmpMF{b8Qz(Hd&c4($f&GG7bGCAn^~7Z0MDIB|G^XLa?ikW&|%ydqp~i9V<`3ME^~{ z2p*7y$q_Xr$ZNgP2hHR%edh+*3A)*`h%5%K{>g-)KN)2Xo{bO=d5)~B1Id8s^AA~N z2^QZKc(>q4Ki8udk{zKxpe?~h?ag%@UZ3OlG=Bs*y|xEK@@KJg2JDge+#6(0s(&#T z5?6EinqW=dYdMeYv}9v46I_xb$s{L;q-)N(k4$)(s2~p%WG$rebRHqW2jEzWvGPEt zKgo=uQ^;gLx)CVlBc)9#0L+b#S%=Dn9X~h-47RKlj&UYzz=SG+v6B`3H6j=R`ci#H zfdC{nq-_j9AS(&=i2c5q8!S$?TmwV$C)?S3&m#KD1j!tfmCVV#Lj4I|$Z+la)O)Ib zt*?PKd9UR>w$p&bzChY15>VGN@scB%Koj>b%y-3u!X%{cFWE{tN}kBKs|F6rk7j8{ zA)DCj%MeI$-WsqclRH-*`W*fs0Oc^54r9dm;XaK&hwRnyA|T~pveR5JePVBH*e3(0 zc`h%yRl&{=34mkl%-&otKc~QZ5C6>P9O(7Vdtb8i<0<+W{~@Pf6k{+({wO;S+1;QjVD)h+S=royu;U{p z7=dbE%lcW9_bSd=eAz?Nl{@c*NfCoa;ix>_Gtfzt`YA-*U#G~!;g|p>Xkxg$Bs%JZ zvhq;gkmBzWrbNqAa}D4;V^81!r4r-f=ZWk)3<2Au{wAPgZ;Mj4p!U;}0~F;?wKFGu za3NXD5ID^&>b4gcAJK9cAF(KLKi1b2Yw}*pd2Dw}qA1x;N>9zi=lGt;N_`h$_6YJ! zsI-cb-o{j4H}EFPgLr;aF2N`{lmyD$fs2sUl)rJxoqA5d)tHqCFpe}912~J2$;yIp z(5E=#2gW4X6+;e>14$83GYwRq1bmpeY(NEzca;w+)ERECNANqZXwk01CJ+c1*_fvdL z`oSg#c3*<`TF$lIAo)XvxvuwcitDQT9C{Nl`}#S>+4}m-uMf%3pB?%x6SxyR?emgZ zci!vK`=^X^tG23p?dKZ2*K%&#o!y^~gz*1c=Vyx7@>cg&I9a}wHk^D?=8%<@z}{lt zy;DF5t^2Om32X3P%Xw;db^)m&?lm1f2v`v8b)71oJrQ2xpfo(#LzI0c7N4PguPSi* zmYrT*7c9zqE$4Z=7LaxZIaOruU=fHj@hSv+QmbPQ`LdDED;&K0R60dtY(K3&xE*5! z-fKDUv}*xrf8ZS#{qu}PAejR%_r()T1CECmFGmLCpA5;Gj%6{cjI)5P

    3The subroutine style 3The subroutine style psb_precinit and and psb_precbld are still supported for backward +class="pplr7t-x-x-80">are still supported for backward compatibility

    +class="pplr7t-x-x-80">compatibility
    diff --git a/docs/html/userhtml7x.png b/docs/html/userhtml7x.png index 5db77543c69d274ad7afc3ec02925852d8ebc413..11f5ee764c82014298361322fd41af7ea52846eb 100644 GIT binary patch literal 1966 zcmV;f2T}NmP)88y*7bTCr}*G1C6y+4^@z)g%DzHbB%*NN?Xp_k)7Gh1_vg`LO<-G1D%VTGB*>sR2#Cf9(j|wZey|IUh3jnp1LUCQ zoI@4rhdyy0I5`|us%VL%Wnx&hV+L%PoSzm3d_dksm6Id+0HK)|ib4oT%m?B8ULv~3 zKU$eQlwxNy!v*Rxabc9a~+b@u8-nh5#Sl~(DNyFRoQejKaIt`q<7hb@tbmbELzIx&t!72D=^<` zUy8RUcGSG_+RO|2ng4_b<@n`yA6GnF%?For=vcyFj7OEhP+GdKNkf*W-cG_yp7ZUHpUv#aOoLXqGJ&>3JO`l&`NO2m zLJ(>p-x8EDy?;k1Is7`_Z9qOwmi#jRQ9FSCLkMj1DbHcc&&#Jfz+5TS4l#2Db9N*w zWzH<5$-Gx$7awwR;|WH@79hRjc`a^@G2T~POFT>nL(<8XR`%D7d6j6PjAp`VW;dm{ zlOX;lIn~ReJGFU#X()f04AZ(U9Y6|p&=+dw3t=t z2SBDRi|z$_#lcz~muL)DIwfrarzcEncIH_;2Qn-5+J zq@&hW#ANZ9BWPs-Dg-5ASp>D$qI2%y5Ri|Y0DbeKYL%RNZ{cI%aj`e}LuF3#mJ%&H!Xuod@9>^? zkrzPnVMkE8bk3Ih`JfD$*tA-*Q5eA_$ohw>iD$4X_jsKbg*UTtRSzbae>Ml6ua=*( zHk&FRocIaL9c2z86)e5c}(o6IgZ9wU!&@a;5am2Mvd~i933H!vq^j}SS zP~_6_q>xoL?xlVIU)s6RkC1n(9T_`wh)qX!YL0V!a5+6JIVXteC>gE=&n$Yw)o~VV zwIjfmd(Y>e zo)aPKPRUcpwZd9EvM9=TA6u}94`=t>K-n}^fm$X$g4%Fk%QNt=3aUO)Nmy0o*oc4E zmQv@i#*Rl}As>>Q7x@ik#}yQwQBAnFXRGd*qLcd?fTOK3#_43n$$eQ6lK7cs&OUQio*!EGxcdP72kHLb!RLEp?arqngm7+V_s5VN#2BBO z*^3aut*L$ONVsEWKdvE*F5QI??t~C7LkM3&2rt&?tA&wVNb}vC=w|jT#`vf;5fDQ7 zq?KEO`mf4@9h;!3JG^a-@xGa1j6SV3vL#&Dl<0CRLo1#TzD8n<4?CW-K%Uf#V8=JZknRXc*>|nBms-Mw%`Cb$F|${@ zV*2wrvAV3$j+q##J3^P)`kjI?Tu2r@gm7kNznR$`R*fd|vzh(V%5canVNL%sv)c?R z#>jn!2>6HENYLiNL4P0ori9-8)y#e}vo}2()hn}PIo_7Nlw=$?%PLQeHmhLEXu%ggl+ zi=?c_yJZ~|aPD=~M!xrQuG*k-C6#ztJ}bX7Hm_Tj_kAzt*H>@uGtH}>EAv2Rxcl5T zJa<`px#q;;PG#EAQSZ#l{E87Uvo9`Z5&uB$Ue~XBr`8plMmCn-C+#u^7AVi?BagjL zceH`Q)ZEgTC3D(=J72t?F;^egTrT*0Z^#mP97Wm*a=L}2oCznWF87a$)eR7ww?REt zGwmb`P^`*aM=7p<)7u5~?xl)wf8{$hXx}$IgHYQD-{*H7U`+Q)3#>UX&U(IhB<5Hn z&q*?*-ce>s7MnKTOU4+fUtI1J00Fc06_^A4!U;l<*Z!bOcLkDXC_EU(61hP3mqoo^ ztjUEGx}bQuE(Vf`-Ee)L(mNCB0j~KVY!S$%Vj2FF8?85;^pzGug^vhDietgFh~OZ! z!s-k{t`isE*WOzAST*GHgg7N?;v@4+XvrATBdf05Hz5pG{O_402OPlp7y&X(#y|$F zP6%}A&XEk1Wd73Iu0q!_Sd9xewQ2#RVwYSiqXYtYJ~UvgSqOoZi={}Xo*{&Xm6dD4 zg`#&yot6$kn@_?A#sMkjfS9+npj#+OQ{sr&H44iN!7)1MqtmO&YI2B1Xwj#;PE_8Q ze)(Xa=Hi}NTI|I3&yauF$5^b%g)+U!Djc&*Ce|E;ER%0&aH)LQT$aExbOFnj+#Jd; zCS9YG1P%zwNu9>Pf*X8iL$DC9O3xEQ=p0Vr`S?zVkUhdo92q>keM4qV-N_5_tlWGv zr`n@W!D23y=|v{!v2hogmI`5eD1)#?sszQuElUX5n(kO(lv^}F_NE0aMsrLxy z^kNkbS#%U|5aVhfxF&a-xUC%L3%pa4o%&tzHRT*56Xy~7bh%ObYNjY#kX2$K62@E? zP-<4}03dKCaRC;2g5*ocbJV7ONAiJrX(1zHNPASb2N*a$&I3rE$E2{YUU+@FYefdh z7-2tfP|VNxp6-<8lP=egHurN(%c(`f#_UuAiz zbI`s&=c*J|PGOeM`o5DM>w7-unHDYHf`O5aW3fXxxH z)BM#AAtPnHOPk!&W={V~AC&QoItOV)=B0jfx!U%=QVLP;qC-BpuFFN^YU)mNJxCj? z&%_CDLt{ZcjJ210OSs_k&4Vuo@U6a2&8e2-(t_&Dv6pr0?2h`!Y%CWxCAw0Er2dEzr-1suPkG_g!3J4>R7e}cQ^x|`)nE^{8EPVKD?tmojt)fi0GT?<2pk9`=)g*4wl(7$7Q zD8>7J==b?M=3#S-z9R#Vw(mKv3FS`!c5Dj{TGFYl4#_yQ;dkNnLEDZQ*e&|$0E_-n z=~hl2iKFug>5gUCWAqb%;&V diff --git a/docs/html/userhtml8x.png b/docs/html/userhtml8x.png index 221e309e23afe02f34958a3ca53d3dec8de74e81..4a85f66baf11efe9a328434e28084d2b8fa8e20b 100644 GIT binary patch delta 1075 zcmV-31kC%c2)YO%iBL{Q4GJ0x0000DNk~Le0001S0000L2nGNE0C5`uoRJ|If9y#_ zK~!i3?U{{H6hRP$yDb7hLck0VBM>t{jR431iU=so0L?(i0F3}41IR!jgR#D;*Hg2@ z?cD-b-qpFU>e!pvp1*$mH;1Q`Y{bjp?wcv4yO^bI&lBz3v|r70f&UTizGG$wadvm# zGP9#-&l7!XjU=uBMiN&5BZ(`3f0ZZE-S?HJRu&x+-F?^HuiZVl`>nfQwkLP@b$36N z+&$lG87YmiB=`b%KXdo<(qTs5p?jWVU2Wz*r>~J?J=W^XIS>>brE**((5G};bVhY4 zU6;P6qL7G^&1@s3^w!K?o7sat1ybU1O6f>)AI)qNfgsnc^fA81Co{XEe?uEb_OqF- zr<5L4dC^yhs^sW{=yuMj(42S7KUMG_0E0C%oZ^R>VZ0bDXTq>=%F=)yP8HwV6?-@9G@~19;=boe!u%WO!2x|&|C2xpS^4BBFN7>3V zALNk~D};kD)oPHCb0474k!N-0(>ll&0;|I1B<8F7I^+95zNS#nuPE;)S^5$H1LN!y zky7HUgU$;Gr|%jse+i{`tVBxB3#hPpqfp2*qf&Stt9A~JHL=1r&&Jv#?A9JYA67fK z!c=tFGs_`$sZi;NC^Q#9A_~q5lGmU>`Y4BU=`S2NZIDA&2oMJOgTj?pX-CX&Eemh% z7>W#Pl3ebauzoKTs)!Wio@D|Rc}`aqp#?-bT{#Am93(Q3e@Y2u1#yHqyfOf>nIyoS z5_!3PfTD(XD2{5A!X!3>5!4FB!^jOa=xd3kFW*h;^@l*~cM7pZKzC&B;28W#6;;0J zUQG^1E*vVJg8+#TN5~_QN66xN+2lI%9EAcGc{W3cYk#fB>ll00jE%lpKJG{v@-p_( z{=mSTd^mjTf2Bikp*+4wP^e&poFO6;bp&K#Y`Lb8{?W@#B{vh!J!Zu75rtkDv_j-T zQ(X^6M5~yuM&DX^;)vw}>7$KCQ!$dbL{LhhhM+KvT4E+f5|<0)PIBhXlpg{ffy@4g tmw{sJcQr*6Vo!z&8~*vwhly+b1v~v=o`q0Y1poj52>?k&PDHLkV1k>D_5c6? delta 1062 zcmV+>1ljw#2(AbriBL{Q4GJ0x0000DNk~Le0001V0000K2nGNE09t=`$a zWjWB3yZx)S?slek9^L=+W7N!K!qcIudm^%7X6KBis)r(SX=YbXAH9oN^R0D7C(MZr z5!p=N*6+`adi?S}8Fa}o8Fa}oe;IViuu=w9)#D|zUkB^CMOAl1+*4#1fsRpH1y6qdF&zCdHUQ) zhw-hixwS^uY0(XGzF+hPfkWTT7%^7g@2vTX%XQYE%p$NH+51#B> z)&D4j%Z0rtGrL9<#?!P_*iuzUfI%+I>=pg0dW-Vi$QTc!7Pw0XF(!pKvf*Ou&C-6J zjp^hAqY8F+)%#}FtYd*_?ZwGjE+WkAMnn$kwS|tyk}(X5yRG9SeG|fX)f$Aqfifec#sxXm1h6*VX4CNQMge@B)bx z9bgDmWnZif!i`qUe?I^uhM3L1*>kngYM91|&|6u~Yo4f4xE9Y394a>MHpfgtHtX z;(iwe2+9+C#+c3BuZM?{L%4n-Nh+alEFy-&;A1x)AW&lv+DRy~vG~7}41~ccLmJoN zKrWO>%wz*Fkmow;P_MtPdRz;}%k!4grm8%|Zj!H(P>cb!w5n1Xm0EcLfUsn+#i(9? zqVpgbI*i-`eBHBN4o;oh3_`sgS_wdezDttlfL{)5#`tb1h+2D|(NI;2RW2WzuoIXy z-%4Hmg|c4)++bwbgs3Kmc?c_I&=&?m808i&xvtM=B4X%-{|xSCI~NTPVKV6Rp}yke gJxapAf!_K4075B+2l96$1ONa407*qoM6N<$g0YVLZvX%Q diff --git a/docs/html/userhtml9x.png b/docs/html/userhtml9x.png index 72555397876e8e580ed18ed351158f61082df235..cdd3f219bac5d3d0b8e4194d288f6dad0d5d2b4b 100644 GIT binary patch delta 1796 zcmV+f2mAQp4TcUOiBL{Q4GJ0x0000DNk~Le000300000L2nGNE0EyQ)E|DP^f4E6R zK~#7F?VEvdTQ>}bfu09wGD5mRnof{pgS4F>$p+1Nf?TpenhDx?gSZo<^#;iXb-e+5 z9}nQ+!B5hYo@9x#{yX3K(R|<|@dE@vT1zQ%!sbxbN2Qc+E+Ief0*oOdFG?xzH<7QZ zzlq32{O&R2x#Z_VL;k+}e3xMCe?!;NcXzoU#|Bk>CL*tWUaI<7MBe!GE}*L4i^zvf z4IkLMA57LL_A$3PIHd3GMMo#&?+>4%!ub=|tqAg+dQRs~%<#@jDQ~RL&muK%;&0U{h_p7|jrc`GzIcNXlK#Kq=}Rf( zo+yI0X5gV8Z8(T5cOgt3Io;%Uc7ZU5=V7iGHbnXAW8yd|Lx32TPaC0b}>C7>6+?dTDB3h&7IubFhv(Of=urK2;OJVbnA#3LNU7+IV@ z0wewsk(MKsQZB7e1x~>T{45qx%xOTvxNBWo|GFEQq2dHy+m3f-ZG^eVr61onX%{!r z^A1L|Z}?m}TW1%>f5H*p-fa=RfD{*tKs)oeh>}oJ0df6CMJ&a1Oqpjv88pg^vAMEXen`lmcl1 zZFpo1zsk30AUcnQFlU3KdKtcJZwTLjVKY~pTs742H%M34f8QL}M-h1+*KAef_ z675u(-o6C%on`#CbCTNO;0_jHE#PV6Q)r*dM{Hzar0L@vijK~VY=qT+2CdbLDv5j; zC%HF{;%|1ZV4MyN-Hq5m|LhPPjEfPpUC@Zwq7Vae+hv+Xum}MHq5yKWMO{~cT{zEU zF4&1N{K2g}e{)uqbY?s_2^?2mvvmv<{jjcC#u#eoyD2PEs}3HAHARl4nEp=0LmpIh zOxIV5Cv!j=I(BL@myccPh_Ih9wB^R;3|O4z837A#p*Z;=5kS2mmdMQHV{VUZ$Tg4! zY#jPG!#6_!O);VEmW&Jw>Bwzs-t3erwqeBR&q)$6+-3>lCc4}RyEN1t!8z9WZP*4MyV4QHk8xJzTQQ1omo|=#oNVXecL$y;9^d)m z5x(+1&+ZAwc5NbvtNT@W!ZV_PXsGohzzmK` zD#beAeQ+Mx5HSdH(+JwKL!ix%603um0vmr&pxh%MR-UT^!Z1JPSq;{7k-;$@&hZxL zk523^#oKTy@)3u=q7aA7e5c@;0f)HQ1Ro=xw!z1)bcFF^z<7Sb`5FOOBtS0bxfgjn ze+4uyMzGtni{<}bW0&XsFX26xMO*HVlWCEI?dp6-CL(hAfz;92Ou>a4)t-U#Y;#SZ zzQMeRw5V5bRLXh3>%u{w>L5ly#l3hfMcv}=F>L#*p-gX zas|~w=9bF?Bab_RQJ8TL41C#p`ApkLe>)i0#^%D&Mi_B8dqJLSgw31CU@6dxs$LVy z=PG{IAsEv~hNlHt-Z5j5E^_-OeC$m}?EEM61Dq>Ir`rOu1`d1A@F=fmbfcq_@pl9} z1))CRwUmwFM_%bY>h<0ex&nn*>IW-Rg%zN{+wNFwT8eP@ z1Bb-*WkhkaFxM>Z6S~mRY3H8@ibwwj5jziCEf?i~AU3{AYwuE2^y1(cCe1C}{m@d% m18NO>GW<#3dl%?MNB;wRJPt$iV7u!80000 zK~#7F?VF2n6h{z-yD0*|b_OB?88Q$VfXM(du*(s+AOqtFjK}~oFpvStz?cli^^Lp7 zy?wj7-Mf`;_jG^N)#-NU+3)TdX(>fc*dMBTAtDb-Deo9fRbPn6$5P7Y{YT#pRedTV z-%2STwzuv=Reu(dccql8?wkK{f9U;9!4lWHWd7WnLfjLs#RC!fKD5ZcZww~%Pj)c? zpp^1jM1EIQ);xr~pZt4C$ZN~LZxu`D&&dcJ2VRv@UhcUS`v0-#7^{S;ezIujrm$%K zoQ%NAp{lR&;`?sHQvvf@2M7Dw5}C{i(xAy{)EKORKljIMO#VvZ^qsChJ(}@IB^<1Rp zhF^?3RJt!pDQ_~jOi+Fmk-z<&6`1_pPa^W8h+M{km4%zo z;O7U6+l^f8cd4Z#(9jx#IX^ z`iyPExFR+5t9@+Eoi*}|@r=%GEw;x-6Klf}W8;TCqYnnefAhXGM|cPSDj%#bw1r0q zxAT@zwe_)fv}yhP{h0lE+c~~X7TR8?j5%hlzQ+L>b@|;(CXIiK=TA)s%wr%VFH8B) zGx)bDZ3pJ9QOfE?e}YxLvUeytz>{ZBgO{oAt?i%I7VmWB=j;Z&A42=a=L)D1!B}{N zk;cC@SQOyr@Ej$!I|b}J7Wb?z%Gmf}Kq-6-z&Kz1WdcUzxAg3h-CLj^X~f&~9>6bn zu@jI5qBd1!{fk78j5eCiER(C?kEa887!mof2OJ!4wU$V7pGM9D++7< zQFshNg$XzCF}X}bTMz%U(DIxxxfv2OSYY%e97`oQM{jF61Ta9he(2hiq^B_DM|J0c zHW;CV+Wg2&8j;8II9SVS9vX}v&sRh7N5zP*HJCJfOagM4%h@HX49VR)c# z6vTv`6>KVo3cMC&QWU<)wOl7lbIIi5`9n>>bIMF?1jloC6sQ8rZAw*PId-3y#FFRA zb?=xKe+gtG3A6c!nL}V`uN^=e6xEcK^+IC=HhXWPr;f2OU}UKLS3_X;0~pT@Ap9Eg_9(|T zBei;1k@k6zr6|8ce3~kgtKd&H0;YhuT8t6cP%;axw+e}knFTZwy22E>Z=P6RXy~b= zPen^@ZW}{;?L#uWy)dJ;u^&_Lj=>l+f1X8GvABEG7?PzSK9w>}CfCBBJ9llk@Al)$ z@is(d`vSwUVN?zTYE@pZS~C{UpF3v+ju50w9k0I&yohL#-cBHwwiJfzviuJMDM(F8 zrh*janv`WtSUi8cCUC+^fug7?$Dri-`xpa?y*VYE1ivRRsnd~T4g5J7f%%XNHEsO9 zm2ejCZO4M#Q{P&z$*_XqHqU#o{q2B7t##@A`4>Gf#AQ$cZ_oe$002ovPDHLkV1mwE BSqA_B diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html index 40ffe257..1a48b7aa 100644 --- a/docs/html/userhtmlli1.html +++ b/docs/html/userhtmlli1.html @@ -10,7 +10,7 @@ - diff --git a/docs/html/userhtmlli2.html b/docs/html/userhtmlli2.html index f31a33cf..08bf60fc 100644 --- a/docs/html/userhtmlli2.html +++ b/docs/html/userhtmlli2.html @@ -16,31 +16,31 @@ href="userhtmlse13.html#tailuserhtmlse13.html" >prev-tail] [tail] [up]

    References

    + id="x21-170000">References

    [1]   G. Bella, S. Filippone, A. De Maio and M. Testa, A Simulation Model +class="pplri7t-">A Simulation Model for Forest Fires, in J. Dongarra, K. Madsen, J. Wasniewski, editors, +class="pplri7t-">for Forest Fires, in J. Dongarra, K. Madsen, J. Wasniewski, editors, Proceedings of PARA 04 Workshop on State of the Art in Scientific Computing, pp. 546–553, Lecture Notes in Computer Science, Springer, 2005.

    [2]   A. Buttari, D. di Serafino, P. D’Ambra, S. Filippone, 2LEV-D2P4: + id="X2007d">A. Buttari, D. di Serafino, P. D’Ambra, S. Filippone, 2LEV-D2P4: a package of high-performance preconditioners, Applicable Algebra in - Engineering, Communications and Computing, Volume 18, Number 3, May, - 2007, pp. 223-239 + Engineering, Communications and Computing, Volume 18, Number 3, + May, 2007, pp. 223-239

    [3]   P. D’Ambra, S. Filippone, D. Di Serafino On the Development - of PSBLAS-based Parallel Two-level Schwarz Preconditioners Applied - Numerical Mathematics, Elsevier Science, Volume 57, Issues 11-12, + id="X2007c">P. D’Ambra, S. Filippone, D. Di Serafino On the Development of + PSBLAS-based Parallel Two-level Schwarz Preconditioners Applied + Numerical Mathematics, Elsevier Science, Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196.

    @@ -57,11 +57,11 @@ class="cmti-10">for Forest Fires, in J. Dongarra, K. M

    [6]   J. J. Dongarra and R. C. Whaley, A User’s Guide to the BLACS + id="XBLACS">J. J. Dongarra and R. C. Whaley, A User’s Guide to the BLACS v. 1.1, Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of +class="pplri7t-">v. 1.1, Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of Tennessee, March 1995 (updated May 1997). @@ -70,61 +70,59 @@ class="cmti-10"> 1.1, Lapack Working Note 94, Tech. Rep.&#x

    [7]   I. Duff, M. Marrone, G. Radicati and C. Vittoli, Level 3 Basic Linear +class="pplri7t-">Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: a User Level Interface, ACM +class="pplri7t-">Algebra Subprograms for Sparse Matrices: a User Level Interface, ACM Transactions on Mathematical Software, 23(3), pp. 379–401, 1997.

    [8]   I. Duff, M. Heroux and R. Pozo, An Overview of the Sparse Basic +class="pplri7t-">An Overview of the Sparse Basic Linear Linear Algebra Subprograms: the New Standard from the BLAS Technical - Forum, ACM Transactions on Mathematical Software, 28(2), pp. 239–267, - 2002. +class="pplri7t-">Algebra Subprograms: the New Standard from the BLAS Technical Forum, ACM + Transactions on Mathematical Software, 28(2), pp. 239–267, 2002.

    [9]   S. Filippone and M. Colajanni, PSBLAS: A Library for Parallel + id="XPSBLAS">S. Filippone and M. Colajanni, PSBLAS: A Library for Parallel Linear Algebra Computation on Sparse Matrices, ACM Transactions on +class="pplri7t-">Linear Algebra Computation on Sparse Matrices, ACM Transactions on Mathematical Software, 26(4), pp. 527–550, 2000.

    [10]   S. Filippone and A. Buttari, Object-Oriented Techniques for Sparse + id="XSparse03">S. Filippone and A. Buttari, Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, ACM Transactions on Mathematical +class="pplri7t-">Matrix Computations in Fortran 2003, ACM Transactions on Mathematical Software, 38(4), 2012.

    [11]   S. Filippone, P. D’Ambra, M. Colajanni, Using a Parallel Library +class="pplri7t-">Using a Parallel Library of of Sparse Linear Algebra in a Fluid Dynamics Applications Code on +class="pplri7t-">Sparse Linear Algebra in a Fluid Dynamics Applications Code on Linux Linux Clusters, in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, +class="pplri7t-">Clusters, in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, Parallel Computing - Advances & Current Issues, pp. 441–448, Imperial College Press, 2002.

    [12]    Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design + id="XDesignPatterns"> Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. +class="pplri7t-">Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.

    [13]   Karypis, G. and Kumar, V., METIS: Unstructured Graph Partitioning + id="XMETIS">Karypis, G. and Kumar, V., METIS: Unstructured Graph Partitioning and Sparse Matrix Ordering System. Minneapolis, MN 55455: University +class="pplri7t-">and Sparse Matrix Ordering System. Minneapolis, MN 55455: University of Minnesota, Department of Computer Science, 1995. Internet Address: http://www.cs.umn.edu/~karypis. @@ -140,54 +138,54 @@ class="cmtt-10">http://www.cs.umn.edu/~karypis.

    [15]   Machiels, L. and Deville, M. Fortran 90: An entry to object-oriented + id="Xmachiels">Machiels, L. and Deville, M. Fortran 90: An entry to object-oriented programming for the solution of partial differential equations. ACM Trans. +class="pplri7t-">programming for the solution of partial differential equations. ACM Trans. Math. Softw. vol. 23, 32–49.

    [16]   Metcalf, M., Reid, J. and Cohen, M. Fortran 95/2003 explained. Oxford +class="pplri7t-">Fortran 95/2003 explained. Oxford University Press, 2004.

    [17]   Metcalf, M., Reid, J. and Cohen, M. Modern Fortran explained. Oxford +class="pplri7t-">Modern Fortran explained. Oxford University Press, 2011.

    [18]   Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The + id="XRouXiaXu:11">Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The Object-Oriented Way. Cambridge University Press (2011)

    [19]   M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, - MIT Press, 1998. +class="pplri7t-">MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, MIT + Press, 1998.

    - [20]    - D. Barbieri, V. Cardellini, S. Filippone and D. Rouson Design Patterns + [20]   D. Barbieri, V. Cardellini, + S. Filippone and D. Rouson Design Patterns for Scientific Computations for Scientific Computations on Sparse Matrices, HPSS 2011, Algorithms - and Programming Tools for Next-Generation High-Performance Scientific - Software, Bordeaux, Sep. 2011 +class="pplri7t-">on Sparse Matrices, HPSS 2011, Algorithms and Programming Tools for + Next-Generation High-Performance Scientific Software, Bordeaux, Sep. + 2011

    [21]    Cardellini, V., Filippone, S., and Rouson, D. 2014, Design patterns + id="XCaFiRo:2014"> Cardellini, V., Filippone, S., and Rouson, D. 2014, Design patterns for sparse-matrix computations on hybrid CPU/GPU platforms, Scientific +class="pplri7t-">Scientific Programming 22, 1, 1–19. +class="pplri7t-">Programming 22, 1, 1–19.

    [22]   22, 1, 1–19. -

    -

    1 1 Introduction

    The PSBLAS library, developed with the aim to facilitate the parallelization of computationally intensive scientific applications, is designed to address parallel -implementation of iterative solvers for sparse linear systems through the distributed -memory paradigm. It includes routines for multiplying sparse matrices by dense -matrices, solving block diagonal systems with triangular diagonal entries, -preprocessing sparse matrices, and contains additional routines for dense matrix -operations. The current implementation of PSBLAS addresses a distributed memory -execution model operating with message passing. +implementation of iterative solvers for sparse linear systems through the +distributed memory paradigm. It includes routines for multiplying sparse +matrices by dense matrices, solving block diagonal systems with triangular +diagonal entries, preprocessing sparse matrices, and contains additional +routines for dense matrix operations. The current implementation of PSBLAS +addresses a distributed memory execution model operating with message +passing.

    The PSBLAS library version 3 is implemented in the Fortran 2003 [16] programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. -

    The use of Fortran 2003 offers a number of advantages over Fortran 95, mostly in -the handling of requirements for evolution and adaptation of the library to new -computing architectures and integration of new algorithms. For a detailed discussion -of our design see [10]; other works discussing advanced programming in Fortran 2003 -include [

    The use of Fortran 2003 offers a number of advantages over Fortran 95, mostly +in the handling of requirements for evolution and adaptation of the library to new +computing architectures and integration of new algorithms. For a detailed +discussion of our design see [10]; other works discussing advanced programming in +Fortran 2003 include [2018]; sufficient support for Fortran 2003 is now available from many -compilers, including the GNU Fortran compiler from the Free Software Foundation -(as of version 4.8). +href="userhtmlli2.html#XRouXiaXu:11">18]; sufficient support for Fortran 2003 is now available +from many compilers, including the GNU Fortran compiler from the Free Software +Foundation (as of version 4.8).

    Previous approaches have been based on mixing Fortran 95, with its support for -object-based design, with other languages; these have been advocated by a number of -authors, e.g. [[15]. Moreover, the Fortran 95 facilities for dynamic memory management and interface overloading greatly enhance the usability of the PSBLAS subroutines. In this way, the library can take care of runtime memory requirements @@ -56,24 +57,25 @@ BLAS on dense matrices [1445]. -

    The applicability of sparse iterative solvers to many different areas causes some -terminology problems because the same concept may be denoted through different -names depending on the application area. The PSBLAS features presented in this -document will be discussed referring to a finite difference discretization of a Partial -Differential Equation (PDE). However, the scope of the library is wider than that: for -example, it can be applied to finite element discretizations of PDEs, and even to -different classes of problems such as nonlinear optimization, for example in optimal -control problems. +

    The applicability of sparse iterative solvers to many different areas causes +some terminology problems because the same concept may be denoted +through different names depending on the application area. The PSBLAS +features presented in this document will be discussed referring to a finite +difference discretization of a Partial Differential Equation (PDE). However, +the scope of the library is wider than that: for example, it can be applied +to finite element discretizations of PDEs, and even to different classes of +problems such as nonlinear optimization, for example in optimal control +problems.

    The design of a solver for sparse linear systems is driven by many conflicting objectives, such as limiting occupation of storage resources, exploiting regularities in the input data, exploiting hardware characteristics of the parallel platform. To achieve an optimal communication to computation ratio on distributed memory -machines it is essential to keep the data locality as high as possible; this can be -done through an appropriate data allocation strategy. The choice of the +machines it is essential to keep the data locality as high as possible; this can +be done through an appropriate data allocation strategy. The choice of the preconditioner is another very important factor that affects efficiency of the implemented application. Optimal data distribution requirements for a given preconditioner may conflict with distribution requirements of the rest of the solver. diff --git a/docs/html/userhtmlse10.html b/docs/html/userhtmlse10.html index e99244c4..0ba3cd87 100644 --- a/docs/html/userhtmlse10.html +++ b/docs/html/userhtmlse10.html @@ -15,7 +15,7 @@ href="userhtmlse9.html" >prev] [prev-tail] [tail] [up]

    -

    10 10 Preconditioner routines

    The base PSBLAS library contains the implementation of two simple preconditioning techniques: @@ -29,12 +29,12 @@ techniques: psb_prec_mod. The old interfaces psb_precinit and psb_precbld are still -supported for backward compatibility +class="cmtt-10">psb_precbld are still supported +for backward compatibility -

    10.1 10.1 init — Initialize a preconditioner

    @@ -47,57 +47,57 @@ call prec%init(icontxt,ptype, info)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    icontxt

    icontxt

    the communication context.
    Scope:global.
    global.
    Type:required.
    required.
    Intent: in.
    in.
    Specified as: an integer value.

    ptype

    ptype

    the type of preconditioner. Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a character string, see usage notes.

    On Exit

    On Exit

    prec

    prec

    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a preconditioner data structure psb_type.

    info

    info

    Scope: global
    global
    Type: required
    required
    Intent: out.
    out.
    Error code: if no error, 0 is returned.

    Notes Legal inputs to this subroutine are interpreted depending on the ptype string as +class="pplb7t-x-x-120">Notes Legal inputs to this subroutine are interpreted depending on the ptype string as follows4 :

    NONE

    NONE

    No preconditioning, i.e. the preconditioner is just a copy operator.

    DIAG

    DIAG

    Diagonal scaling; each entry of the input vector is multiplied by the reciprocal of the sum of the absolute values of the coefficients in the corresponding row of matrix A; +class="zplmr7m-">A;

    BJAC

    BJAC

    Precondition by a factorization of the block-diagonal of matrix A, where +class="zplmr7m-">A, where block boundaries are determined by the data allocation boundaries for each process; requires no communication. Only the incomplete factorization ILU(0) is currently implemented.

    +class="zplmr7m-">ILU(0) is currently implemented. -

    10.2 build — Builds a preconditioner

    +

    10.2 Set — set preconditioner parameters

    +
    +

    +

    call p%set(what,val,info)

    +

    This method sets the parameters defining the subdomain solver when the +preconditioner type is BJAC. More precisely, the parameter identified by what is +assigned the value contained in val. +

    Arguments +

    + + + + +

    what

    character(len=*).

    The parameter to be set. It can be specified through its name; the string is +case-insensitive. See Tables ??-22.

    val

    integer or character(len=*) or real(psb_spk_) or real(psb_dpk_), +intent(in).

    The value of the parameter to be set. The list of allowed values and the +corresponding data types is given in Tables ??-22. When the value is of type +character(len=*), it is also treated as case insensitive.

    info

    integer, intent(out).

    Error code. If no error, 0 is returned. See Section ?? for details.

    +

    A number of subdomain solvers can be chosen with this method; a list of the +parameters that can be set, along with their allowed and default values, is given in +Tables ??-22.
    +

    + + + +


    + + + +
    +

    +

    +





    what

    data type

    val

    default

    comments






    SUB_SOLVE

    character(len=*)

    ILU +

    ILUT +

    INVT +

    INVK +

    AINV

    The local solver to be used with the smoother +or one-level preconditioner ILU(p), ILU(p, t), +Approximate Inverses +INVK(p, q), INVT(p1, p2, t1, t2) and AINV(t); +note that approximate inverses are specifically +suited for GPUs since they do not employ +triangular system solve kernels, see [?].











    +
    Table 21: Parameters defining the solver or the details of the one-level +preconditioner.
    + + + +

    +
    +
    + + + +


    + + + +
    +

    +

    + +





    what

    data type

    val

    default

    comments






    SUB_FILLIN

    integer

    Any integer +

    number 0

    0

    Fill-in level p of the incomplete LU +factorizations.






    SUB_ILUTHRS

    real(kind_parameter)

    Any real +number 0

    0

    Drop tolerance t in the ILU(p, t) factorization.











    +
    Table 22: Parameters defining the smoother or the details of the one-level +preconditioner (continued).
    + + + +

    +
    + + + +

    10.3 build — Builds a preconditioner

     call prec%build(a, desc_a, info[,amold,vmold,imold])
     
    -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Synchronous. +

    Synchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    the system sparse matrix. Scope: local

    the system sparse matrix. Scope: local
    Type: required
    required
    Intent: in, target.
    in, target.
    Specified as: a sparse matrix data structure psb_Tspmat_type.

    -

    +

    prec

    prec
    -

    the preconditioner.

    the preconditioner.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an already initialized precondtioner data structure _prec_type

    -

    +

    desc_a

    desc_a
    -

    the problem communication descriptor. Scope: local

    the problem communication descriptor. Scope: local
    Type: required
    required
    Intent: in, target.
    in, target.
    Specified as: a communication descriptor data structure psb_desc_type.

    -

    +

    amold

    amold
    -

    The desired dynamic type for the internal matrix storage.

    The desired dynamic type for the internal matrix storage.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an object of a class derived from psb_base_sparse_mat.

    -

    +

    vmold

    vmold
    -

    The desired dynamic type for the internal vector storage.

    The desired dynamic type for the internal vector storage.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an object of a class derived from psb_base_vect_type.

    -

    +

    imold

    imold
    -

    The desired dynamic type for the internal integer vector storage.

    The desired dynamic type for the internal integer vector storage.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    Specified as: an object of a class derived from (integer) +class="pplb7t-">in.
    Specified as: an object of a class derived from (integer) psb_T_base_vect_type.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    prec

    prec
    -

    the preconditioner.

    the preconditioner.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a precondtioner data structure psb_prec_type

    -

    +

    info

    info
    -

    Error code.

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    The

    The amold, vmold and imold arguments may be employed to interface with special @@ -337,8 +631,8 @@ devices, such as GPUs and other accelerators. -

    10.3 apply — Preconditioner application routine

    +

    10.4 apply — Preconditioner application routine

    @@ -346,47 +640,47 @@ devices, such as GPUs and other accelerators. call prec%apply(x,y,desc_a,info,trans,work) call prec%apply(x,desc_a,info,trans) -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Synchronous. +

    Synchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    prec

    prec
    -

    the preconditioner. Scope: local

    the preconditioner. Scope: local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a preconditioner data structure psb_prec_type.

    -

    +

    x

    x
    -

    the source vector. Scope: local

    the source vector. Scope: local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one array or an object of type psb_T_vect_type.

    -

    +

    desc_a

    desc_a
    -

    the problem communication descriptor. Scope: local

    the problem communication descriptor. Scope: local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a communication data structure psb_desc_type.

    -

    +

    trans

    trans
    -

    Scope:

    Scope:
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: a character.

    -

    +

    work

    work
    -

    an optional work space Scope: local

    an optional work space Scope: local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a double precision array.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    y

    y
    -

    the destination vector. Scope: local

    the destination vector. Scope: local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one array or an object of type psb_T_vect_type.

    -

    +

    info

    info
    -

    Error code.

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    10.4 descr — Prints a description of current preconditioner

    +

    10.5 descr — Prints a description of current preconditioner

    @@ -485,218 +779,218 @@ class="newline" />An integer value; 0 means no error has been detected. -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    prec

    prec
    -

    the preconditioner. Scope: local

    the preconditioner. Scope: local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a preconditioner data structure psb_prec_type.

    -

    +

    iout

    iout
    -

    output unit. Scope: local

    output unit. Scope: local
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: an integer number. Default: default output unit.

    -

    +

    root

    root
    -

    Process from which to print Scope: local

    Process from which to print Scope: local
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: an integer number between 0 and np - 1, in which case +class="zplmr7m-">np- 1, in which case the specified process will print the description, or -1, in which case all +class="zplmr7y-">-1, in which case all processes will print. Default: 0.

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    info

    info
    -

    Error code.

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    10.5 clone — clone current preconditioner

    +

    10.6 clone — clone current preconditioner

     call  prec%clone(precout,info)
     
    -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    prec

    prec
    -

    the preconditioner.

    the preconditioner.
    Scope: local.
    local.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    precout

    precout
    -

    A copy of the input object. +

    A copy of the input object.

    -

    +

    info

    info
    -

    Return code.

    +

    Return code. -

    10.6 free — Free a preconditioner

    +

    10.7 free — Free a preconditioner

     call prec%free(info)
     
    -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    prec

    prec
    -

    the preconditioner.

    the preconditioner.
    Scope: local.
    local.
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a preconditioner data structure psb_prec_type.

    -

    +

    On Exit

    On Exit
    -

    +

    -

    +

    prec

    prec
    -

    Scope: local

    Scope: local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a preconditioner data structure psb_prec_type.

    -

    +

    info

    info
    -

    Scope: global

    Scope: global
    Type: required
    required
    Intent: out.
    out.
    Error code: if no error, 0 is returned.

    -

    Notes Releases all internal storage. +

    Notes Releases all internal storage. diff --git a/docs/html/userhtmlse11.html b/docs/html/userhtmlse11.html index c99d4e40..460347a4 100644 --- a/docs/html/userhtmlse11.html +++ b/docs/html/userhtmlse11.html @@ -15,48 +15,48 @@ href="userhtmlse10.html" >prev] [prev-tail] [tail] [up]

    -

    11 Iterative Methods

    +

    11 Iterative Methods

    In this chapter we provide routines for preconditioners and iterative methods. The interfaces for iterative methods are available in the module psb_linsolve_mod. -

    11.1 psb_krylov — Krylov Methods Driver Routine

    +

    11.1 psb_krylov — Krylov Methods Driver Routine

    This subroutine is a driver that provides a general interface for all the Krylov-Subspace family methods implemented in PSBLAS version 2.

    The stopping criterion can take the following values:

    1

    1

    normwise backward error in the infinity norm; the iteration is stopped when

          -----∥ri∥------
-err = (∥A∥∥xi∥+ ∥b∥) < eps
+src=

    2

    2

    Relative residual in the 2-norm; the iteration is stopped when

          ∥ri∥-
-err = ∥b∥2 < eps
+src=

    3

    3

    Relative residual reduction in the 2-norm; the iteration is stopped when

    @@ -66,23 +66,24 @@ err = ∥r0∥2 < eps " class="math-display" >

    The behaviour is controlled by the istop argument (see later). In the above formulae, xi +class="zplmr7m-">xi is the tentative solution and ri = b - Axi the corresponding residual at the i-th +class="zplmr7m-">ri = b-Axi the corresponding residual at the i-th iteration. -

    call psb_krylov(,info,& 
        )

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    method

    method

    a string that defines the iterative method to be used. Supported values are:

    CG:

    CG:

    the Conjugate Gradient method;

    CGS:

    CGS:

    the Conjugate Gradient Stabilized method;

    GCR:

    GCR:

    the Generalized Conjugate Residual method;

    FCG:

    FCG:

    the Flexible Conjugate Gradient method5 ; + id="x17-144003f5"> ;

    BICG:

    BICG:

    the Bi-Conjugate Gradient method;

    BICGSTAB:

    BICGSTAB:

    the Bi-Conjugate Gradient Stabilized method; @@ -188,28 +189,28 @@ class="description">

    BICGSTABL:

    BICGSTABL:

    the Bi-Conjugate Gradient Stabilized method with restarting;

    RGMRES:

    RGMRES:

    the Generalized Minimal Residual method with restarting.

    a

    a

    the local portion of global sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    prec

    prec

    The data structure containing the preconditioner.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    b

    b

    The RHS vector.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one array or an object of type psb_type.

    x

    x

    The initial guess.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one array or an object of type psb_type.

    eps

    eps

    The stopping tolerance.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a real number.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    itmax

    itmax

    The maximum number of iterations to perform.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: itmax = 1000.
    itmax = 1000.
    Specified as: an integer variable itmax 1. +class="zplmr7m-">itmax 1.

    itrace

    itrace

    If > 0 print out an informational message about convergence every itrace - iterations. If = 0 print a message in case of convergence failure.
    > 0 print out an informational message about convergence every itrace + iterations. If = 0 print a message in case of convergence failure.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: itrace = -1.
    itrace = -1.

    irst

    irst

    An integer specifying the restart parameter.
    Scope: global
    global
    Type: optional.
    optional.
    Intent: in.
    in.
    Values: irst > 0. This is employed for the BiCGSTABL or RGMRES methods, +class="zplmr7m-">irst > 0. This is employed for the BiCGSTABL or RGMRES methods, otherwise it is ignored.

    istop

    istop

    An integer specifying the stopping criterion.
    Scope: global
    global
    Type: optional.
    optional.
    Intent: in.
    in.
    Values: 1: use the normwise backward error, 2: use the scaled 2-norm of the residual, 3: use the residual reduction in the 2-norm. Default: 2.

    On Return

    On Return

    x

    x

    The computed solution.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one array or an object of type psb_type.

    iter

    iter

    The number of iterations performed.
    Scope: global
    global
    Type: optional
    optional
    Intent: out.
    out.
    Returned as: an integer variable.

    err

    err

    The convergence estimate on exit.
    Scope: global
    global
    Type: optional
    optional
    Intent: out.
    out.
    Returned as: a real number.

    cond

    cond

    An estimate of the condition number of matrix A; only available with the CG +class="zplmr7m-">A; only available with the CG method on real data.
    Scope: global
    global
    Type: optional
    optional
    Intent: out.
    out.
    Returned as: a real number. A correct result will be greater than or equal to one; if specified for non-real data, or an error occurred, zero is returned.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    11.2 psb_richardson — Richardson Iteration Driver Routine

    +

    11.2 psb_richardson — Richardson Iteration Driver Routine

    This subroutine is a driver implementig a Richardson iteration

    x   = M - 1(b - Ax )+ x ,
  k+1             k    k

    with the preconditioner operator M defined in the previous section. +class="zplmr7m-">M defined in the previous section.

    The stopping criterion can take the following values:

    1

    1

    normwise backward error in the infinity norm; the iteration is stopped when

          -----∥ri∥------
-err = (∥A∥∥xi∥+ ∥b∥) < eps
+src=

    2

    2

    Relative residual in the 2-norm; the iteration is stopped when

          ∥ri∥-
-err = ∥b∥2 < eps
+err = ∥b∥ 2 < eps

    3

    3

    Relative residual reduction in the 2-norm; the iteration is stopped when

    @@ -507,20 +511,21 @@ err = ∥r0∥2 < eps

    The behaviour is controlled by the istop argument (see later). In the above formulae, xi +class="zplmr7m-">xi is the tentative solution and ri = b - Axi the corresponding residual at the i-th +class="zplmr7m-">ri = b-Axi the corresponding residual at the i-th iteration. -

    call psb_richardson(,info,& 
        )

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    a

    a

    the local portion of global sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    prec

    prec

    The data structure containing the preconditioner.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    b

    b

    The RHS vector.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one array or an object of type psb_type.

    x

    x

    The initial guess.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one array or an object of type psb_type.

    eps

    eps

    The stopping tolerance.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a real number.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    itmax

    itmax

    The maximum number of iterations to perform.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: itmax = 1000.
    itmax = 1000.
    Specified as: an integer variable itmax 1. +class="zplmr7m-">itmax 1.

    itrace

    itrace

    If > 0 print out an informational message about convergence every itrace - iterations. If = 0 print a message in case of convergence failure.
    > 0 print out an informational message about convergence every itrace + iterations. If = 0 print a message in case of convergence failure.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: itrace = -1.
    itrace = -1.

    istop

    istop

    An integer specifying the stopping criterion.
    Scope: global
    global
    Type: optional.
    optional.
    Intent: in.
    in.
    Values: 1: use the normwise backward error, 2: use the scaled 2-norm of the residual, 3: use the residual reduction in the 2-norm. Default: 2.

    On Return

    On Return

    x

    x

    The computed solution.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one array or an object of type psb_type.

    iter

    iter

    The number of iterations performed.
    Scope: global
    global
    Type: optional
    optional
    Intent: out.
    out.
    Returned as: an integer variable.

    err

    err

    The convergence estimate on exit.
    Scope: global
    global
    Type: optional
    optional
    Intent: out.
    out.
    Returned as: a real number.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    diff --git a/docs/html/userhtmlse12.html b/docs/html/userhtmlse12.html index 180aa0dd..d5ab2548 100644 --- a/docs/html/userhtmlse12.html +++ b/docs/html/userhtmlse12.html @@ -15,17 +15,17 @@ href="userhtmlse11.html" >prev] [prev-tail] [tail] [up]

    -

    12 Extensions

    +

    12 Extensions

    The EXT, CUDA and RSB subdirectories contains a set of extensions to the base library. The extensions provide additional storage formats beyond the ones already contained in the base library, as well as interfaces to:

    SPGPU

    SPGPU
    -

    a CUDA library originally +

    a CUDA library originally published as https://code.google.com/p/spgpu/ and now included @@ -34,11 +34,11 @@ class="cmtt-10">cuda subdir, for computations on NVIDIA GPU

    LIBRSB

    LIBRSB

    http://sourceforge.net/projects/librsb/, for computations on +class="cmtt-10">http://sourceforge.net/projects/librsb/, for computations on multicore parallel machines.

    The infrastructure laid out in the base library to allow for these extensions is detailed in the references [10]; the CUDA-specific data formats in [22].

    -

    12.1 Using the extensions

    +

    12.1 Using the extensions

    A sample application using the PSBLAS extensions will contain the following steps:

      @@ -60,16 +60,16 @@ class="cmtt-10">psb_ext_mod, psb_cuda_mod);
    • -

      Declare a mold variable of the necessary type (e.g. +

      Declare a mold variable of the necessary type (e.g. psb_d_ell_sparse_mat, psb_d_hlg_sparse_mat, psb_d_vect_cuda);

    • -

      Pass the mold variable to the base library interface where needed to ensure - the appropriate dynamic type.

    +

    Pass the mold variable to the base library interface where needed to + ensure the appropriate dynamic type.

@@ -141,126 +141,128 @@ class="cmtt-10">test/cuda/kernel subdirectories, where we provide sample speed of the sparse matrix-vector product with the various data structures included in the library.

-

12.2 Extensions’ Data Structures

+

12.2 Extensions’ Data Structures

Access to the facilities provided by the EXT library is mainly achieved through the data types that are provided within. The data classes are derived from the base classes in PSBLAS, through the Fortran 2003 mechanism of type +class="pplri7t-">type extension [extension [17].

The data classes are divided between the general purpose CPU extensions, the GPU interfaces and the RSB interfaces. In the description we will make use of the notation introduced in Table 21. +href="#x19-148001r23">23.



Table 21: Notation for parameters describing a sparse matrix
+>Table 23: Notation for parameters describing a sparse matrix

-

+class="pplr7t-x-x-80">Description - +class="pplr7t-x-x-80">Average number of nonzeros per row +class="pplr7t-x-x-80">Maximum number of nonzeros per row +class="pplr7t-x-x-80">Numero of nonzero diagonals +class="pplr7t-x-x-80">Coefficients array +class="pplr7t-x-x-80">Row indices array +class="pplr7t-x-x-80">Column indices array +class="pplr7t-x-x-80">Row start pointers array +class="pplr7t-x-x-80">Column start pointers array +class="pplr7t-x-x-80">Number of nonzeros per row array +class="pplr7t-x-x-80">Offset for diagonals


Name Name Description


M M Number of rows in matrix
Number of rows in matrix
N N Number of columns in matrix
NZ Number of columns in matrix
NZ Number of nonzeros in matrix
Number of nonzeros in matrix
AVGNZR AVGNZR Average number of nonzeros per row
MAXNZRMAXNZRMaximum number of nonzeros per row
NDIAG NDIAG Numero of nonzero diagonals
AS AS Coefficients array
IA IA Row indices array
JA JA Column indices array
IRP IRP Row start pointers array
JCP JCP Column start pointers array
NZR NZR Number of nonzeros per row array
OFFSET OFFSET Offset for diagonals


@@ -274,7 +276,7 @@ class="td11"> + id="x19-148002r5"> @@ -283,18 +285,18 @@ src="mat.png" alt="PIC" width="147" height="147" >
Figure 5: Example of sparse matrix
+class="content">Example of sparse matrix


-

12.3 CPU-class extensions

+

12.3 CPU-class extensions

ELLPACK
+ id="x19-150000">ELLPACK

The ELLPACK/ITPACK format (shown in Figure 6) comprises two 2-dimensional +href="#x19-150001r6">6) comprises two 2-dimensional arrays AS and JA with M rows and MAXNZR columns, where MAXNZR is the maximum number of nonzeros in any row [?]. Each row of the arrays ?]. Each row of the arrays AS and JA contains the coefficients and column indices; rows shorter than + id="x19-150001r6"> @@ -325,13 +327,13 @@ width="233" height="233" >

Figure 6: ELLPACK compression of matrix in Figure 5
+href="#x19-148002r5">5


+ id="x19-150002r1"> @@ -341,9 +343,8 @@ href="#x19-147002r5">5 -
    i=1,n 
      t=0 
     j=1,maxnzr 
     ,j)) 
      end do 
     ) = t 
     end do
+ id="x19-150010r1"> - Algorithm 1:  Matrix-Vector product in ELL format + id="x19-150011"> + Algorithm 1:  Matrix-Vector product in ELL format

The matrix-vector product y = Ax can be computed with the code shown in +class="zplmr7m-">y = Ax can be computed with the code shown in Alg. 1; it costs one memory write per outer iteration, plus three memory reads and +href="#x19-150010r1">1; it costs one memory write per outer iteration, plus three memory reads and two floating-point operations per inner iteration. -

Unless all rows have exactly the same number of nonzeros, some of the coefficients -in the AS array will be zeros; therefore this data structure will have an overhead both -in terms of memory space and redundant operations (multiplications by zero). The -overhead can be acceptable if: +

Unless all rows have exactly the same number of nonzeros, some of the +coefficients in the AS array will be zeros; therefore this data structure will have an +overhead both in terms of memory space and redundant operations (multiplications +by zero). The overhead can be acceptable if:

  1. + class="enumerate" id="x19-150013x1">

    The maximum number of nonzeros per row is not much larger than the average;

  2. + class="enumerate" id="x19-150015x2">

    The regularity of the data structure allows for faster code, e.g. by allowing vectorization, thereby offsetting the additional storage requirements.

In the extreme case where the input matrix has one full row, the ELLPACK @@ -492,62 +488,72 @@ class="cmtt-10">psb_T_ell_sparse_mat:

Hacked ELLPACK
-

The hacked ELLPACK (HLL) format alleviates the main problem of the ELLPACK -format, that is, the amount of memory required by padding for sparse matrices in -which the maximum row length is larger than the average. + id="x19-151000">Hacked ELLPACK +

The hacked ELLPACK (HLL) format alleviates the main problem of the ELLPACK +format, that is, the amount of memory required by padding for sparse matrices in +which the maximum row length is larger than the average.

The number of elements allocated to padding is -[(m*maxNR) - (m*avgNR) = m* (maxNR-avgNR)] for both [(m*maxNR) - (m*avgNR) = m* (maxNR-avgNR)] for both AS and JA arrays, where m is equal to the number of rows of the matrix, maxNR is the maximum +class="zplmr7m-">m is equal to the number of rows of the matrix, maxNR is the maximum number of nonzero elements in every row and avgNR is the average number of +class="zplmr7m-">avgNR is the average number of nonzeros. Therefore a single densely populated row can seriously affect the total size of the allocation.

To limit this effect, in the HLL format we break the original matrix into equally sized groups of rows (called hacks), and then store these groups as independent +class="pplri7t-">hacks), and then store these groups as independent matrices in ELLPACK format. The groups can be arranged selecting rows in an arbitrarily manner; indeed, if the rows are sorted by decreasing number of nonzeros we obtain essentially the JAgged Diagonals format. If the rows are not in the original order, then an additional vector rIdx is required, storing the actual row index for -each row in the data structure. +class="pplri7t-">rIdx is required, storing the actual row index for each +row in the data structure.

The multiple ELLPACK-like buffers are stacked together inside a single, one dimensional array; an additional vector hackOffsets is provided to keep track of the +class="pplri7t-">hackOffsets is provided to keep track of the individual submatrices. All hacks have the same number of rows hackSize; hence, the +class="pplri7t-">hackSize; hence, the hackOffsets vector is an array of (m∕hackSize) + 1 elements, each one pointing to -the first index of a submatrix inside the stacked cM/rP buffers, plus an additional +class="pplri7t-">hackOffsets vector is an array of (m/hackSize) + 1 elements, each one pointing to the +first index of a submatrix inside the stacked cM/rP buffers, plus an additional element pointing past the end of the last block, where the next one would begin. We thus have the property that the elements of the k-th hack are stored between +class="zplmr7m-">k-th hack are stored between hackOffsets[k] and hackOffsets[k+1], similarly to what happens in the CSR @@ -558,7 +564,7 @@ format. + id="x19-151001r7"> @@ -568,7 +574,7 @@ width="248" height="248" >

Figure 7: Hacked ELLPACK compression of matrix in Figure 5
+href="#x19-148002r5">5 @@ -595,9 +601,9 @@ class="cmtt-10">psb_T_hll_sparse_mat:

Diagonal storage
+ id="x19-152000">Diagonal storage

The DIAgonal (DIA) format (shown in Figure 8) has a 2-dimensional array 8) has a 2-dimensional array AS containing in each column the coefficients along a diagonal of the matrix, and an integer array OFFSET that determines where each diagonal class="cmtt-10">AS are padded with zeros as necessary.

The code to compute the matrix-vector product y = Ax is shown in Alg. 2; it +class="zplmr7m-">y = Ax is shown in Alg. 2; it costs one memory read per outer iteration, plus three memory reads, one memory write and two floating-point operations per inner iteration. The accesses to + id="x19-152001r8"> @@ -630,13 +637,13 @@ width="248" height="248" >

Figure 8: DIA compression of matrix in Figure 5
+href="#x19-148002r5">5


+ id="x19-152002r2"> @@ -662,12 +669,12 @@ href="#x19-147002r5">5

+ id="x19-152003r2"> - Algorithm 2:  Matrix-Vector product in DIA format + id="x19-152004"> + Algorithm 2:  Matrix-Vector product in DIA format @@ -691,7 +698,7 @@ class="cmtt-10">psb_T_dia_sparse_mat:

Hacked DIA
+ id="x19-153000">Hacked DIA

Storage by DIAgonals is an attractive option for matrices whose coefficients are located on a small set of diagonals, since they do away with storing explicitly the indices and therefore reduce significantly memory traffic. However, having a few @@ -705,40 +712,44 @@ class="cmtt-10">y is too large to remain in the cache memory, the associated cache miss penalty is paid multiple times.

The hacked DIA (HDIA) format was designed to contain the amount of padding, +class="pplri7t-">hacked DIA (HDIA) format was designed to contain the amount of padding, by breaking the original matrix into equally sized groups of rows (hacks), and then -storing these groups as independent matrices in DIA format. This approach is similar -to that of HLL, and requires using an offset vector for each submatrix. Again, +class="pplri7t-">hacks), and then +storing these groups as independent matrices in DIA format. This approach is +similar to that of HLL, and requires using an offset vector for each submatrix. Again, similarly to HLL, the various submatrices are stacked inside a linear array to improve memory management. The fact that the matrix is accessed in slices helps in reducing cache misses, especially regarding accesses to the vector y.

An additional vector hackOffsets is provided to complete the matrix format; given +class="pplri7t-">hackOffsets is provided to complete the matrix format; given that hackSize is the number of rows of each hack, the hackOffsets vector is made by -an array of (m∕hackSize) + 1 elements, pointing to the first diagonal offset of a +class="pplri7t-">hackSize is the number of rows of each hack, the hackOffsets vector is made by an +array of (m/hackSize) + 1 elements, pointing to the first diagonal offset of a submatrix inside the stacked offsets buffers, plus an additional element equal to the -number of nonzero diagonals in the whole matrix. We thus have the property that -the number of diagonals of the k-th hack is given by hackOffsets[k+1] - +class="pplri7t-">offsets buffers, plus an additional element equal to the +number of nonzero diagonals in the whole matrix. We thus have the property +that the number of diagonals of the k-th hack is given by hackOffsets[k+1] - hackOffsets[k]. +class="pplri7t-">hackOffsets[k].


+ id="x19-153001r9"> @@ -748,7 +759,7 @@ width="248" height="248" >
Figure 9: Hacked DIA compression of matrix in Figure 5
+href="#x19-148002r5">5
@@ -792,8 +803,8 @@ class="cmtt-10">psb_T_hdia_sparse_mat: -

12.4 CUDA-class extensions

+

12.4 CUDA-class extensions

For computing with CUDA we define a dual memorization strategy in which each variable on the CPU (“host”) side has a GPU (“device”) side. When a GPU-type variable is initialized, the data contained is (usually) the same on both sides. Each @@ -801,10 +812,10 @@ operator invoked on the variable may change the data so that only the host side the device side are up-to-date.

Keeping track of the updates to data in the variables is essential: we want to perform most computations on the GPU, but we cannot afford the time needed to -move data between the host memory and the device memory because the bandwidth -of the interconnection bus would become the main bottleneck of the computation. -Thus, each and every computational routine in the library is built according to the -following principles: +move data between the host memory and the device memory because the +bandwidth of the interconnection bus would become the main bottleneck of the +computation. Thus, each and every computational routine in the library is built +according to the following principles:

  • If the data type being handled is GPU-enabled, make sure that its device @@ -818,20 +829,20 @@ following principles:

    explicitly

    explicitly

    by invoking a synchronization method;

    implicitly

    implicitly

    by invoking a method that involves other data items that are not GPU-enabled, e.g., by assignment ov a vector to a normal array.

In this way, data items are put on the GPU memory “on demand” and remain there as -long as “normal” computations are carried out. As an example, the following call to a -matrix-vector product +long as “normal” computations are carried out. As an example, the following call to +a matrix-vector product

@@ -850,11 +861,11 @@ then

The first kernel invocation will find the data in main memory, and will copy it to the GPU memory, thus incurring a significant overhead; the result is however not copied back, and therefore: +class="pplri7t-">not copied back, and therefore:

  • -

    Subsequent kernel invocations involving the same vector will find the data - on the GPU side so that they will run at full speed.

  • +

    Subsequent kernel invocations involving the same vector will find the + data on the GPU side so that they will run at full speed.

    For all invocations after the first the only data that will have to be transferred to/from the main memory will be the scalars alpha and beta, and the return code info. @@ -862,7 +873,7 @@ the main memory will be the scalars

    Vectors:

    Vectors:

    The data type psb_T_vect_gpu provides a GPU-enabled extension of the inner type psb_T_base_vect_type, and must be used together with @@ -871,23 +882,23 @@ class="description">

    CSR:

    CSR:

    The data type psb_T_csrg_sparse_mat provides an interface to the GPU version of CSR available in the NVIDIA CuSPARSE library;

    HYB:

    HYB:

    The data type psb_T_hybg_sparse_mat provides an interface to the HYB - GPU storage available in the NVIDIA CuSPARSE library. The internal + GPU storage available in the NVIDIA CuSPARSE library. The internal structure is opaque, hence the host side is just CSR; the HYB data format is only available up to CUDA version 10.

    ELL:

    ELL:

    The data type psb_T_elg_sparse_mat provides an interface to the ELLPACK implementation from SPGPU; @@ -897,14 +908,14 @@ class="description">

    HLL:

    HLL:
    -

    The data type psb_T_hlg_sparse_mat provides an interface to the Hacked - ELLPACK implementation from SPGPU; +

    The data type psb_T_hlg_sparse_mat provides an interface to the + Hacked ELLPACK implementation from SPGPU;

    HDIA:

    HDIA:

    The data type psb_T_hdiag_sparse_mat provides an interface to the Hacked DIAgonals implementation from SPGPU;

    diff --git a/docs/html/userhtmlse13.html b/docs/html/userhtmlse13.html index 90d399e0..82617f4b 100644 --- a/docs/html/userhtmlse13.html +++ b/docs/html/userhtmlse13.html @@ -15,13 +15,13 @@ href="userhtmlse12.html" >prev] [prev-tail] [tail] [up]

    -

    13 CUDA Environment Routines

    +

    13 CUDA Environment Routines

    psb_cuda_init — Initializes PSBLAS-CUDA environment

    + id="x20-156000">psb_cuda_init — Initializes PSBLAS-CUDA environment + id="Q1-20-195">

    @@ -33,44 +33,44 @@ call psb_cuda_init(ctxt [, device])

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    device

    device

    ID of CUDA device to attach to.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer value.  Default: use mod(iam,ngpu) where iam is the calling process index and ngpu is the total number of CUDA devices available on the current node.

    Notes +class="pplb7t-x-x-120">Notes

    1. + class="enumerate" id="x20-156002x1">

      A call to this routine must precede any other PSBLAS-CUDA call.

    psb_cuda_exit — Exit from PSBLAS-CUDA environment

    + id="x20-157000">psb_cuda_exit — Exit from PSBLAS-CUDA environment + id="Q1-20-197">

    @@ -82,33 +82,33 @@ call psb_cuda_exit(ctxt)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    ctxt

    ctxt

    the communication context identifying the virtual parallel machine.
    Scope: global.
    global.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer variable.

    psb_cuda_DeviceSync — Synchronize CUDA device

    + id="x20-158000">psb_cuda_DeviceSync — Synchronize CUDA device + id="Q1-20-199"> @@ -123,9 +123,9 @@ call psb_cuda_DeviceSync() CUDA-side code, have completed.

    psb_cuda_getDeviceCount

    + id="x20-159000">psb_cuda_getDeviceCount + id="Q1-20-201">

    @@ -136,9 +136,9 @@ ngpus =  psb_cuda_getDeviceCount()

    Get number of devices available on current computing node.

    psb_cuda_getDevice

    + id="x20-160000">psb_cuda_getDevice + id="Q1-20-203">

    @@ -147,14 +147,14 @@ ngpus =  psb_cuda_getDevice()

    Get device in use by current process. -

    -

    psb_cuda_setDevice

    - +

    +

    psb_cuda_setDevice

    +

    @@ -165,9 +165,9 @@ info = psb_cuda_setDevice(dev)

    Set device to be used by current process.

    psb_cuda_DeviceHasUVA

    + id="x20-162000">psb_cuda_DeviceHasUVA + id="Q1-20-207">

    @@ -178,9 +178,9 @@ hasUva = psb_cuda_DeviceHasUVA()

    Returns true if device currently in use supports UVA (Unified Virtual Addressing).

    psb_cuda_WarpSize

    + id="x20-163000">psb_cuda_WarpSize + id="Q1-20-209">

    @@ -189,14 +189,14 @@ nw = psb_cuda_WarpSize()

    Returns the warp size. -

    -

    psb_cuda_MultiProcessors

    - +

    +

    psb_cuda_MultiProcessors

    +

    @@ -207,9 +207,9 @@ nmp = psb_cuda_MultiProcessors()

    Returns the number of multiprocessors in the CUDA device.

    psb_cuda_MaxThreadsPerMP

    + id="x20-165000">psb_cuda_MaxThreadsPerMP + id="Q1-20-213">

    @@ -220,9 +220,9 @@ nt = psb_cuda_MaxThreadsPerMP()

    Returns the maximum number of threads per multiprocessor.

    psb_cuda_MaxRegistersPerBlock

    + id="x20-166000">psb_cuda_MaxRegistersPerBlock + id="Q1-20-215">

    @@ -231,14 +231,14 @@ nr = psb_cuda_MaxRegistersPerBlock()

    Returns the maximum number of register per thread block. -

    -

    psb_cuda_MemoryClockRate

    - +

    +

    psb_cuda_MemoryClockRate

    +

    @@ -249,9 +249,9 @@ cl = psb_cuda_MemoryClockRate()

    Returns the memory clock rate in KHz, as an integer.

    psb_cuda_MemoryBusWidth

    + id="x20-168000">psb_cuda_MemoryBusWidth + id="Q1-20-219">

    @@ -262,9 +262,9 @@ nb = psb_cuda_MemoryBusWidth()

    Returns the memory bus width in bits.

    psb_cuda_MemoryPeakBandwidth

    + id="x20-169000">psb_cuda_MemoryPeakBandwidth + id="Q1-20-221">

    @@ -282,10 +282,6 @@ bw = psb_cuda_MemoryPeakBandwidth() -

    - - - diff --git a/docs/html/userhtmlse2.html b/docs/html/userhtmlse2.html index 2c1c4c11..f9fb994e 100644 --- a/docs/html/userhtmlse2.html +++ b/docs/html/userhtmlse2.html @@ -16,20 +16,20 @@ href="userhtmlse1.html" >prev] [prev-tail] [tail] [up]

    -

    2 2 General overview

    The PSBLAS library is designed to handle the implementation of iterative solvers for sparse linear systems on distributed memory parallel computers. The system coefficient matrix A must be square; it may be real or complex, nonsymmetric, and +class="zplmr7m-">A must be square; it may be real or complex, nonsymmetric, and its sparsity pattern needs not to be symmetric. The serial computation parts are -based on the serial sparse BLAS, so that any extension made to the data structures -of the serial kernels is available to the parallel version. The overall design and +based on the serial sparse BLAS, so that any extension made to the data structures of +the serial kernels is available to the parallel version. The overall design and parallelization strategy have been influenced by the structure of the ScaLAPACK parallel library. The layered structure of the PSBLAS library is shown in figure 1; -lower layers of the library indicate an encapsulation relationship with upper -layers. The ongoing discussion focuses on the Fortran 2003 layer immediately +lower layers of the library indicate an encapsulation relationship with upper layers. +The ongoing discussion focuses on the Fortran 2003 layer immediately below the application layer. The serial parts of the computation on each process are executed through calls to the serial sparse BLAS subroutines. In a similar way, the inter-process message exchanges are encapsulated in an @@ -76,7 +76,7 @@ mesh. process that will own the corresponding row in the coefficient matrix and will carry out all related computations. This allocation strategy is equivalent to a partition of the discretization mesh into sub-domains. Our library supports any +class="pplri7t-">sub-domains. Our library supports any distribution that keeps together the coefficients of each matrix row; there are no other constraints on the variable assignment. This choice is consistent with simple data distributions such as 1 , -even though the resulting memory bottleneck would make this option unattractive in -most cases. -

    2.1 2.1 Basic Nomenclature

    Our computational model implies that the data allocation on the parallel distributed -memory machine is guided by the structure of the physical model, and specifically by -the discretization mesh of the PDE. +memory machine is guided by the structure of the physical model, and specifically +by the discretization mesh of the PDE.

    Each point of the discretization mesh will have (at least) one associated equation/variable, and therefore one index. We say that point i depends on point j if +class="zplmr7m-">i depends on point j if the equation for a variable associated with i contains a term in j, or equivalently if +class="zplmr7m-">i contains a term in j, or equivalently if aij0. After the partition of the discretization mesh into sub-domains assigned +class="zplmr7m-">aij0. After the partition of the discretization mesh into sub-domains assigned to the parallel processes, we classify the points of a given sub-domain as following.

    Internal.

    Internal.

    An internal point of a given domain depends only on points of the same +class="pplri7t-">depends only on points of the same domain. If all points of a domain are assigned to one process, then a computational step (e.g., a matrix-vector product) of the equations @@ -133,22 +133,22 @@ class="cmti-10">depends only on points of the same

    Boundary.

    Boundary.
    -

    A point of a given domain is a boundary point if it depends on points +

    A point of a given domain is a boundary point if it depends on points belonging to other domains.

    Halo.

    Halo.

    A halo point for a given domain is a point belonging to another domain such that there is a boundary point which depends on it. Whenever performing +class="pplri7t-">depends on it. Whenever performing a computational step, such as a matrix-vector product, the values associated - with halo points are requested from other domains. A boundary point of a - given domain is usually a halo point for some other domain2 ; therefore the cardinality of the boundary points set denotes the amount @@ -156,10 +156,10 @@ href="userhtml6.html#fn2x0">2

    Overlap.

    Overlap.

    An overlap point is a boundary point assigned to multiple domains. Any - operation that involves an overlap point has to be replicated for each + operation that involves an overlap point has to be replicated for each assignment.

    Overlap points do not usually exist in the basic data distributions; however they are a feature of Domain Decomposition Schwarz preconditioners which are the subject of @@ -168,38 +168,41 @@ href="userhtmlli2.html#X2007c">32].

    We denote the sets of internal, boundary and halo points for a given subdomain by I, B and H. Each subdomain is assigned to one process; each process usually owns -one subdomain, although the user may choose to assign more than one subdomain to -a process. If each process i owns one subdomain, the number of rows in -the local sparse matrix is |Ii| + |Bi|, and the number of local columns (i.e. +class="zplmr7y-">I, B and H. Each subdomain is assigned to one process; each process usually +owns one subdomain, although the user may choose to assign more than one +subdomain to a process. If each process i owns one subdomain, the number of rows +in the local sparse matrix is |Ii| + |Bi|, and the number of local columns (i.e. those for which there exists at least one non-zero entry in the local rows) is |Ii| + |Bi| + |Hi|. +class="zplmr7y-">|Ii| + |Bi| + |Hi|.


    @@ -226,13 +229,13 @@ class="content">Point classfication.

    This classification of mesh points guides the naming scheme that we adopted in the library internals and in the data structures. We explicitly note that “Halo” points are also often called “ghost” points in the literature. -

    2.2 2.2 Library contents

    The PSBLAS library consists of various classes of subroutines:

    Computational routines

    Computational routines

    comprising:

      @@ -253,13 +256,13 @@ class="description">

    Communication routines

    Communication routines

    handling halo and overlap communications;

    Data management and auxiliary routines

    Data management and auxiliary routines

    including:

      @@ -283,17 +286,17 @@ class="description">

    Preconditioner routines

    Preconditioner routines

    Iterative methods

    Iterative methods

    a subset of Krylov subspace iterative methods

    -

    The following naming scheme has been adopted for all the symbols internally defined in -the PSBLAS software package: +

    The following naming scheme has been adopted for all the symbols internally defined +in the PSBLAS software package:

    • all symbols (i.e. subroutine names, data types...) are prefixed by

      global

      global

      For input arguments, the value must be the same on all processes - participating in the subroutine call; for output arguments the value is + participating in the subroutine call; for output arguments the value is guaranteed to be the same.

      local

      local

      Each process has its own value(s) independently.

      To finish our general description, we define a version string with the constant @@ -360,36 +363,36 @@ src="userhtml0x.png" alt="psb_version_string_

      whose current value is 3.8.0

      -

      2.3 2.3 Application structure

      The main underlying principle of the PSBLAS library is that the library objects are created and exist with reference to a discretized space to which there corresponds an index space and a matrix sparsity pattern. As an example, consider a cell-centered finite-volume discretization of the Navier-Stokes equations on a simulation domain; the index space 1n is isomorphic to the set of cell centers, +class="zplmr7m-">…n is isomorphic to the set of cell centers, whereas the pattern of the associated linear system matrix is isomorphic to the adjacency graph imposed on the discretization mesh by the discretization stencil.

      Thus the first order of business is to establish an index space, and this is done with a call to psb_cdall in which we specify the size of the index space n and the +class="zplmr7m-">n and the allocation of the elements of the index space to the various processes making up the MPI (virtual) parallel machine.

      The index space is partitioned among processes, and this creates a mapping from the “global” numbering 1n to a numbering “local” to each process; each process i +class="zplmr7m-">…n to a numbering “local” to each process; each process i will own a certain subset 1nrowi, each element of which corresponds to a certain +class="zplmr7m-">…nrowi, each element of which corresponds to a certain element of 1n. The user does not set explicitly this mapping; when the application +class="zplmr7m-">…n. The user does not set explicitly this mapping; when the application needs to indicate to which element of the index space a certain item is related, such as the row and column index of a matrix coefficient, it does so in the “global” numbering, and the library will translate into the appropriate “local” @@ -398,8 +401,8 @@ numbering.

      For a given index space 1n there are many possible associated topologies, i.e. +class="zplmr7m-">…n there are many possible associated topologies, i.e. many different discretization stencils; thus the description of the index space is not completed until the user has defined a sparsity pattern, either explicitly through psb_cdasb and a sparse matrix with a call t class="cmtt-10">psb_spasb. After psb_cdasb each process i will have defined a set of “halo” (or “ghost”) indices nrowi + 1ncol +class="zplmr7m-">i will have defined a set of “halo” (or “ghost”) indices nrowi + 1ncol i, +class="zplmr7m-x-x-60">i, denoting elements of the index space that are not assigned to process i; however the +class="pplri7t-">not assigned to process i; however the variables associated with them are needed to complete computations associated with the sparse matrix A, and thus they have to be fetched from (neighbouring) +class="zplmr7m-">A, and thus they have to be fetched from (neighbouring) processes. The descriptor of the index space is built exactly for the purpose of properly sequencing the communication steps required to achieve this objective. @@ -492,8 +496,8 @@ class="cmtt-10">psb_krylov class="cmtt-10">bicgstab.

    • This is the structure of the sample programs in the directory test/pargen/. -

      For a simulation in which the same discretization mesh is used over multiple time -steps, the following structure may be more appropriate: +

      For a simulation in which the same discretization mesh is used over multiple +time steps, the following structure may be more appropriate:

      1. @@ -507,8 +511,8 @@ class="cmtt-10">psb_cdall
      2. -

        Loop over the topology of the discretization mesh and build the descriptor - with

        Loop over the topology of the discretization mesh and build the + descriptor with psb_cdins;

      3. psb_sprn;
      4. -

        Loop over the mesh, generate the coefficients and insert/update them - with

        Loop over the mesh, generate the coefficients and insert/update + them with psb_spins and psb_geins;

      5. @@ -555,10 +559,10 @@ class="cmtt-10">psb_geasb;
      6. -

        Choose the preconditioner to be used with prec%init and prec%set, - and build it with

        Choose the preconditioner to be used with prec%init and + prec%set, and build it with prec%build;

      7. psb_spins; this, however, would entail a doubling of memory occupation, and thus would be almost always far from optimal.

        -

        2.3.1 2.3.1 User-defined index mappings

        PSBLAS supports user-defined global to local index mappings, subject to the constraints outlined in sec. 2.3:

      8. The set of indices owned locally must be mapped to the set 1nrowi; +class="zplmr7m-">…nrowi;

      9. The set of halo points must be mapped to the set nrowi + 1ncol +class="zplmr7m-">nrowi + 1ncol i;

      +class="zplmr7m-x-x-60">i;

      but otherwise the mapping is arbitrary. The user application is responsible to ensure consistency of this mapping; some errors may be caught by the library, but this is not guaranteed. The application structure to support this usage is as @@ -621,7 +626,7 @@ follows:

      1. -

        Initialize index +

        Initialize index space with psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors lidx(:) containing the corresponding local

      2. -

        Add the halo points ja(:) and their associated local indices lidx(:) with - a(some) call(s) to

        Add the halo points ja(:) and their associated local indices lidx(:) + with a(some) call(s) to psb_cdins(nz,ja,desc,info,lidx=lidx);

      3. psb_cdasb; -

        Build the sparse matrices and vectors, optionally making use in psb_spins - and psb_geins of the local argument specifying that the indices in ia, +

        Build the sparse matrices and vectors, optionally making use in psb_spins and psb_geins of the local argument specifying that the + indices in ia, ja and irw, respectively, are already local indices.

      -

      2.4 2.4 Programming model

      The PSBLAS librarary is based on the Single Program Multiple Data (SPMD) programming model: each process participating in the computation performs the @@ -665,30 +670,30 @@ same actions on a chunk of data. Parallelism is thus data-driven.

      Because of this structure, many subroutines coordinate their action across the various processes, thus providing an implicit synchronization point, and therefore must be called simultaneously by all processes participating in the computation. This +class="pplri7t-">must be called simultaneously by all processes participating in the computation. This is certainly true for the data allocation and assembly routines, for all the computational routines and for some of the tools routines.

      However there are many cases where no synchronization, and indeed no communication among processes, is implied; for instance, all the routines in sec. 3 are only acting on the local data structures, and thus may be called independently. -The most important case is that of the coefficient insertion routines: since the -number of coefficients in the sparse and dense matrices varies among the processors, -and since the user is free to choose an arbitrary order in builiding the matrix entries, +The most important case is that of the coefficient insertion routines: since the number +of coefficients in the sparse and dense matrices varies among the processors, and +since the user is free to choose an arbitrary order in builiding the matrix entries, these routines cannot imply a synchronization.

      Throughout this user’s guide each subroutine will be clearly indicated as:

      Synchronous:

      Synchronous:

      must be called simultaneously by all the processes in the relevant communication context;

      Asynchronous:

      Asynchronous:

      may be called in a totally independent manner.

      diff --git a/docs/html/userhtmlse3.html b/docs/html/userhtmlse3.html index 791a901e..8e02cccb 100644 --- a/docs/html/userhtmlse3.html +++ b/docs/html/userhtmlse3.html @@ -16,7 +16,7 @@ href="userhtmlse2.html" >prev] [prev-tail] [tail] [up]

    -

    3 3 Data Structures and Classes

    In this chapter we illustrate the data structures used for definition of routines interfaces. They include data structures for sparse matrices, communication @@ -30,44 +30,44 @@ the library as follows:

    psb_spk_

    psb_spk_
    -

    Kind parameter for short precision real and complex data; corresponds to - a REAL declaration and is normally 4 bytes; +

    Kind parameter for short precision real and complex data; corresponds + to a REAL declaration and is normally 4 bytes;

    psb_dpk_

    psb_dpk_

    Kind parameter for long precision real and complex data; corresponds to a DOUBLE PRECISION declaration and is normally 8 bytes;

    psb_mpk_

    psb_mpk_

    Kind parameter for 4-bytes integer data, as is always used by MPI;

    psb_epk_

    psb_epk_

    Kind parameter for 8-bytes integer data, as is always used by the sizeof methods;

    psb_ipk_

    psb_ipk_

    Kind parameter for “local” integer indices and data; with default build options this is a 4 bytes integer; @@ -77,22 +77,22 @@ class="description">

    psb_lpk_

    psb_lpk_

    Kind parameter for “global” integer indices and data; with default build options this is an 8 bytes integer;

    The integer kinds for local and global indices can be chosen at configure time to hold 4 -or 8 bytes, with the global indices at least as large as the local ones. Together with -the classes attributes we also discuss their methods. Most methods detailed here only -act on the local variable, i.e. their action is purely local and asynchronous unless +or 8 bytes, with the global indices at least as large as the local ones. Together with the +classes attributes we also discuss their methods. Most methods detailed here only act +on the local variable, i.e. their action is purely local and asynchronous unless otherwise stated. The list of methods here is not completely exhaustive; many methods, especially those that alter the contents of the various objects, are usually not needed by the end-user, and therefore are described in the developer’s documentation.

    -

    3.1 3.1 Descriptor data structure

    All the general matrix informations and elements to be exchanged among processes are stored within a data structure of the type psb_desc_type. Every structure of this -type is associated with a discretization pattern and enables data communications and -other operations that are necessary for implementing the various algorithms of +type is associated with a discretization pattern and enables data communications +and other operations that are necessary for implementing the various algorithms of interest to us.

    The data structure itself psb_desc_type can be treated as an opaque object handled via the tools routines of Sec. 6 or the query routines detailed below; nevertheless we include here a description for the curious reader. -

    First we describe the psb_indx_map type. This is a data structure that keeps -track of a certain number of basic issues such as: +

    First we describe the psb_indx_map type. This is a data structure that keeps track +of a certain number of basic issues such as:

    • The value of the communication context; @@ -138,12 +138,12 @@ object whose dynamic type can be any of the extended types. The methods associated with this data type answer the following queries:

      • -

        For a given set of local indices, find the corresponding indices in the global - numbering; +

        For a given set of local indices, find the corresponding indices in the + global numbering;

      • -

        For a given set of global indices, find the corresponding indices in the local - numbering, if any, or return an invalid +

        For a given set of global indices, find the corresponding indices in the + local numbering, if any, or return an invalid

      • Add a global index to the set of halo indices; @@ -160,7 +160,7 @@ href="userhtmlse6.html#x11-770006">6).

        indxmap

        indxmap

        A polymorphic variable of a type that is any extension of the indx_map type described above.

        halo_index

        halo_index

        A list of the halo and boundary elements for the current process to be - exchanged with other processes; for each processes with which it is necessary to - communicate: + exchanged with other processes; for each processes with which it is necessary + to communicate: @@ -202,8 +202,8 @@ href="#x8-460003.3">3.3.

        ext_index

        ext_index

        A list of element indices to be exchanged to implement the mapping between a base descriptor and a descriptor with overlap.
        3.3.

        ovrlap_index

        ovrlap_index

        A list of the overlap elements for the current process, organized in groups like the previous vector: @@ -245,9 +245,9 @@ href="#x8-460003.3">3.3.

        ovr_mst_idx

        ovr_mst_idx

        A list to retrieve the value of each overlap element from the respective master process.
        3.3.

        ovrlap_elem

        ovrlap_elem

        For all overlap points belonging to th ecurrent process:

          @@ -276,8 +276,8 @@ class="description">

        bnd_elem

        bnd_elem

        A list of all boundary points, i.e. points that have a connection with other processes.

        @@ -304,8 +304,8 @@ end type psb_desc_type


    Listing 1: The PSBLAS defined data type that contains the communication +>Listing 1: The PSBLAS defined data type that contains the communication descriptor.
    @@ -316,7 +316,7 @@ can take the following values:

    Build:

    Build:

    State entered after the first allocation, and before the first assembly; in this state it is possible to add communication requirements among different @@ -324,14 +324,15 @@ class="description">

    Assembled:

    Assembled:
    -

    State entered after the assembly; computations using the associated sparse - matrix, such as matrix-vector products, are only possible in this state.

    -
    3.1.1

    State entered after the assembly; computations using the associated + sparse matrix, such as matrix-vector products, are only possible in this + state. +

    3.1.1 Descriptor Methods

    -

    3.1.2 3.1.2 get_local_rows — Get number of local rows
    @@ -344,50 +345,51 @@ nr = desc%get_local_rows()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of local rows, i.e. the number of rows owned by the current process; as explained in 1, it is equal to |Ii| + |Bi|. The returned value is +class="zplmr7y-">|Ii| + |Bi|. The returned value is specific to the calling process.

    -

    3.1.3 3.1.3 get_local_cols — Get number of local cols
    @@ -400,54 +402,57 @@ nc = desc%get_local_cols()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of local cols, i.e. the number of indices used by the current - process, including both local and halo indices; as explained in 1, it is equal - to |Ii| + |Bi| + |Hi|. The returned value is specific to the calling process.

    + process, including both local and halo indices; as explained in 1, it is + equal to |Ii| + |Bi| + |Hi|. The returned value is specific to the calling + process.

    -

    3.1.4 3.1.4 get_global_rows — Get number of global rows
    @@ -460,39 +465,39 @@ nr = desc%get_global_rows()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of global rows, i.e. the size of the global index space.

    -

    3.1.5 3.1.5 get_global_cols — Get number of global cols
    @@ -505,40 +510,40 @@ nr = desc%get_global_cols()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of global cols; usually this is equal to the number of global rows.

    -

    3.1.6 3.1.6 get_global_indices — Get vector of global indices
    @@ -551,53 +556,53 @@ myidx = desc%get_global_indices([owned])

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.
    Type: required.
    required.

    owned

    owned
    -

    Choose if you only want owned indices (owned=.true.) or also halo indices - (owned=.false.). Scope: local.

    Choose if you only want owned indices (owned=.true.) or also halo + indices (owned=.false.). Scope: local.
    Type: optional; default: .true..
    optional; default: .true..

    On Return

    On Return

    Function value

    Function value

    The global indices, returned as an allocatable integer array of kind psb_lpk_ and rank 1.

    -

    3.1.7 3.1.7 get_context — Get communication context
    @@ -610,39 +615,39 @@ ctxt = desc%get_context()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The communication context.

    -

    3.1.8 3.1.8 Clone — clone current object
    @@ -655,45 +660,45 @@ call  desc%clone(descout,info)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    descout

    descout

    A copy of the input object.

    info

    info

    Return code.

    -

    3.1.9 3.1.9 CNV — convert internal storage format
    @@ -706,33 +711,33 @@ call  desc%cnv(mold)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    mold

    mold

    the desired integer storage format.
    Scope: local.
    Specified as: a object of type derived from (integer) +class="pplb7t-">local.
    Specified as: a object of type derived from (integer) psb_type.

    The mold arguments may be employed to interface with special devices, such as GPUs and other accelerators.

    -

    3.1.10 3.1.10 psb_cd_get_large_threshold — Get threshold for index mapping switch
    @@ -757,24 +762,24 @@ ith = psb_cd_get_large_threshold()

    Type:

    Type:

    Asynchronous.

    On Return

    On Return

    Function value

    Function value

    The current value for the size threshold.

    -

    3.1.11 3.1.11 psb_cd_set_large_threshold — Set threshold for index mapping switch
    @@ -788,34 +793,34 @@ call psb_cd_set_large_threshold(ith)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    ith

    ith

    the new threshold for communication descriptors.
    Scope: global.
    global.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer value greater than zero.

    -

    Note: the threshold value is only queried by the library at the time a call to psb_cdall -is executed, therefore changing the threshold has no effect on communication +

    Note: the threshold value is only queried by the library at the time a call to psb_cdall is +executed, therefore changing the threshold has no effect on communication descriptors that have already been initialized. Moreover the threshold must have the same value on all processes.

    -

    3.1.12 3.1.12 get_p_adjcncy — Get process adjacency list
    @@ -828,25 +833,25 @@ list =  desc%get_p_adjcncy()

    Type:

    Type:

    Asynchronous.

    On Return

    On Return

    Function value

    Function value
    -

    The current list of adjacent processes, i.e. processes with which the current - one has to exchange halo data. +

    The current list of adjacent processes, i.e. processes with which the + current one has to exchange halo data.

    -

    3.1.13 3.1.13 set_p_adjcncy — Set process adjacency list
    @@ -859,34 +864,34 @@ call desc%set_p_adjcncy(list)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    list

    list

    the list of adjacent processes.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: a one-dimensional array of integers of kind psb_ipk_.

    -

    Note: this method can be called after a call to psb_cdall and before a call to -psb_cdasb. The user is specifying here some knowledge about which processes are -topological neighbours of the current process. The availability of this information -may speed up the execution of the assembly call psb_cdasb. +

    Note: this method can be called after a call to psb_cdall and before a call to psb_cdasb. +The user is specifying here some knowledge about which processes are topological +neighbours of the current process. The availability of this information may speed up +the execution of the assembly call psb_cdasb.

    -

    3.1.14 3.1.14 fnd_owner — Find the owner process of a set of indices
    @@ -899,46 +904,46 @@ call desc%fnd_owner(idx,iprc,info)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    idx

    idx

    the list of global indices for which we need the owning processes.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: a one-dimensional array of integers of kind psb_lpk_.

    On Return

    On Return

    iprc

    iprc

    the list of processes owning the indices in idx.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an allocatable one-dimensional array of integers of kind psb_ipk_.

    Note: this method may or may not actually require communications, depending on the @@ -949,82 +954,82 @@ processes.

    -

    3.1.15 3.1.15 Named Constants

    psb_none_

    psb_none_

    Generic no-op;

    psb_root_

    psb_root_

    Default root process for broadcast and scatter operations;

    psb_nohalo_

    psb_nohalo_

    Do not fetch halo elements;

    psb_halo_

    psb_halo_

    Fetch halo elements from neighbouring processes;

    psb_sum_

    psb_sum_

    Sum overlapped elements

    psb_avg_

    psb_avg_

    Average overlapped elements

    psb_comm_halo_

    psb_comm_halo_

    Exchange data based on the halo_index list;

    psb_comm_ext_

    psb_comm_ext_

    Exchange data based on the ext_index list;

    psb_comm_ovr_

    psb_comm_ovr_

    Exchange data based on the ovrlap_index list; @@ -1033,15 +1038,15 @@ class="description">

    psb_comm_mov_

    psb_comm_mov_

    Exchange data based on the ovr_mst_idx list;

    -

    3.2 3.2 Sparse Matrix class

    The [12] as detailed in [10]; the type declaration is shown in figure 2 where T is a -placeholder for the data type and precision variants +href="#x8-26001r2">2 where T is +a placeholder for the data type and precision variants

    S

    S

    Single precision real;

    D

    D

    Double precision real;

    C

    C

    Single precision complex;

    Z

    Z

    Double precision complex;

    LS,LD,LC,LZ

    LS,LD,LC,LZ

    Same numeric type as above, but with psb_lpk_ integer indices.

    The actual data is contained in the polymorphic component a%a of type @@ -1092,8 +1097,8 @@ class="cmtt-10">_T_base_sparse_mat; its specific layout can be chosen dynamically among the -predefined types, or an entirely new storage layout can be implemented and passed to -the library at runtime via the psb_spasb routine. +predefined types, or an entirely new storage layout can be implemented and passed +to the library at runtime via the psb_spasb routine.


    @@ -1109,7 +1114,7 @@ the library at runtime via the
    -
    Listing 2: The PSBLAS defined data type that contains a sparse matrix.
    @@ -1121,31 +1126,31 @@ always available:

    psb_T_coo_sparse_mat

    psb_T_coo_sparse_mat

    Coordinate storage;

    psb_T_csr_sparse_mat

    psb_T_csr_sparse_mat

    Compressed storage by rows;

    psb_T_csc_sparse_mat

    psb_T_csc_sparse_mat

    Compressed storage by columns;

    The inner sparse matrix has an associated state, which can take the following @@ -1153,32 +1158,32 @@ values:

    Build:

    Build:

    State entered after the first allocation, and before the first assembly; in this state it is possible to add nonzero entries.

    Assembled:

    Assembled:

    State entered after the assembly; computations using the sparse matrix, such as matrix-vector products, are only possible in this state;

    Update:

    Update:
    -

    State entered after a reinitalization; this is used to handle applications +

    State entered after a reinitalization; this is used to handle applications in which the same sparsity pattern is used multiple times with different coefficients. In this state it is only possible to enter coefficients for already existing nonzero entries.

    The only storage variant supporting the build state is COO; all other variants are obtained by conversion to/from it. -

    3.2.1 3.2.1 Sparse Matrix Methods

    -

    3.2.2 3.2.2 get_nrows — Get number of rows in a sparse matrix
    @@ -1191,39 +1196,39 @@ nr = a%get_nrows()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The number of rows of sparse matrix a.

    -

    3.2.3 3.2.3 get_ncols — Get number of columns in a sparse matrix
    @@ -1236,39 +1241,39 @@ nc = a%get_ncols()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The number of columns of sparse matrix a.

    -

    3.2.4 3.2.4 get_nnzeros — Get number of nonzero elements in a sparse matrix
    @@ -1281,47 +1286,47 @@ nz = a%get_nnzeros()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The number of nonzero elements stored in sparse matrix a.

    Notes +class="pplb7t-">Notes

    1. -

      The function value is specific to the storage format of matrix a; some +

      The function value is specific to the storage format of matrix a; some storage formats employ padding, thus the returned value for the same matrix may be different for different storage choices.

    -

    3.2.5 3.2.5 get_size — Get maximum number of nonzero elements in a sparse matrix
    @@ -1335,40 +1340,40 @@ maxnz = a%get_size()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The maximum number of nonzero elements that can be stored in sparse matrix a using its current memory allocation.

    -

    3.2.6 3.2.6 sizeof — Get memory occupation in bytes of a sparse matrix
    @@ -1381,46 +1386,46 @@ memory_size = a%sizeof()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The memory occupation in bytes.

    -

    3.2.7 3.2.7 get_fmt — Short description of the dynamic type

    write(*,*) a%get_fmt()

    Type:

    Type:

    Asynchronous. @@ -1429,34 +1434,34 @@ class="description">

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value
    -

    A short string describing the dynamic type of the matrix. Predefined values - include NULL, COO, CSR and CSC.

    +

    A short string describing the dynamic type of the matrix. Predefined + values include NULL, COO, CSR and CSC.

    -

    3.2.8 3.2.8 is_bld, is_upd, is_asb — Status check

    if (a%is_bld()) then
    if (a%is_upd()) then
    if<

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    @@ -1490,18 +1495,18 @@ class="newline" />

    On Return

    On Return

    Function value

    Function value

    A logical value indicating whether the matrix is in the Build, Update or Assembled state, respectively.

    -

    3.2.9 3.2.9 is_lower, is_upper, is_triangle, is_unit — Format check
    @@ -1517,41 +1522,41 @@ if (a%is_unit()) then

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value
    -

    A logical value indicating whether the matrix is triangular; if +

    A logical value indicating whether the matrix is triangular; if is_triangle() returns .true. check also if it is lower, upper and with a unit (i.e. assumed) diagonal.

    -

    3.2.10 3.2.10 cscnv — Convert to a different storage format
    @@ -1565,46 +1570,46 @@ call  a%cscnv(info [, type, mold, dupl

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    type

    type

    a string requesting a new format.
    Type: optional.

    mold

    mold

    a variable of class(psb_T_base_sparse_mat) requesting a new format.
    Type: optional.

    dupl

    dupl
    -

    an integer value specifing how to handle duplicates (see Named Constants - below)

    +

    an integer value specifing how to handle duplicates (see Named + Constants below)

    @@ -1612,26 +1617,26 @@ class="description">

    On Return

    On Return

    b,a

    b,a

    A copy of a with a new storage format.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    The mold arguments may be employed to interface with special devices, such as GPUs and other accelerators.

    -

    3.2.11 3.2.11 csclip — Reduce to a submatrix
    @@ -1646,43 +1651,43 @@ indices to the range 1:

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    imin,imax,jmin,jmax

    imin,imax,jmin,jmax

    Minimum and maximum row and column indices.
    Type: optional.

    rscale,cscale

    rscale,cscale

    Whether to rescale row/column indices. Type: optional.

    On Return

    On Return

    @@ -1691,18 +1696,18 @@ class="description">

    b

    b

    A copy of a submatrix of a.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    -

    3.2.12 3.2.12 clean_zeros — Eliminate zero coefficients

    call a%clean_zeros(info)

    Eliminates zero coefficients in the input matrix. Note that depending on the @@ -1712,30 +1717,30 @@ output.

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    On Return

    On Return

    @@ -1744,54 +1749,54 @@ class="description">

    a

    a

    The matrix a without zero coefficients.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    -

    3.2.13 3.2.13 get_diag — Get main diagonal

    call a%get_diag(d,info)

    Returns a copy of the main diagonal.

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    On Return

    On Return

    d

    d

    A copy of the main diagonal.
    A one-dimensional array of the appropriate type. @@ -1801,61 +1806,61 @@ class="newline" />A one-dimensional array of the appropriate type.

    info

    info

    Return code.

    -

    3.2.14 3.2.14 clip_diag — Cut out main diagonal

    call a%clip_diag(b,info)

    Returns a copy of a without the main diagonal.

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    On Return

    On Return

    b

    b

    A copy of a without the main diagonal.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    -

    3.2.15 3.2.15 tril — Return the lower triangle
    @@ -1866,48 +1871,48 @@ class="description">

    Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), -optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1 and -returing the complementary upper triangle. +optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1 +and returing the complementary upper triangle.

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    diag

    diag

    Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

    imin,imax,jmin,jmax

    imin,imax,jmin,jmax

    Minimum and maximum row and column indices.
    Type: optional.

    rscale,cscale

    rscale,cscale

    Whether to rescale row/column indices. Type: optional.

    @@ -1917,31 +1922,31 @@ class="description">

    On Return

    On Return

    l

    l

    A copy of the lower triangle of a.
    A variable of type psb_Tspmat_type.

    u

    u

    (optional) A copy of the upper triangle of a.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    -

    3.2.16 3.2.16 triu — Return the upper triangle
    @@ -1957,43 +1962,43 @@ and returing the complementary lower triangle.

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    diag

    diag

    Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

    imin,imax,jmin,jmax

    imin,imax,jmin,jmax

    Minimum and maximum row and column indices.
    Type: optional.

    rscale,cscale

    rscale,cscale

    Whether to rescale row/column indices. Type: optional.

    @@ -2003,50 +2008,50 @@ class="description">

    On Return

    On Return

    u

    u

    A copy of the upper triangle of a.
    A variable of type psb_Tspmat_type.

    l

    l

    (optional) A copy of the lower triangle of a.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    -

    3.2.17 3.2.17 psb_set_mat_default — Set default storage format

    call psb_set_mat_default(a)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    a variable of class(psb_T_base_sparse_mat) requesting a new default storage format.
    Type: required.

    -

    3.2.18 3.2.18 clone — Clone current object

    call a%clone(b,info)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    Scope: local.
    local.

    On Return

    On Return

    b

    b

    A copy of the input object.

    info

    info

    Return code.

    -

    3.2.19 3.2.19 Named Constants

    psb_dupl_ovwrt_

    psb_dupl_ovwrt_

    Duplicate coefficients should be overwritten (i.e. ignore duplications) @@ -2118,51 +2123,51 @@ class="description">

    psb_dupl_add_

    psb_dupl_add_

    Duplicate coefficients should be added;

    psb_dupl_err_

    psb_dupl_err_

    Duplicate coefficients should trigger an error conditino

    psb_upd_dflt_

    psb_upd_dflt_

    Default update strategy for matrix coefficients;

    psb_upd_srch_

    psb_upd_srch_

    Update strategy based on search into the data structure;

    psb_upd_perm_

    psb_upd_perm_

    Update strategy based on additional permutation data (see tools routine description).

    -

    3.3 3.3 Dense Vector Data Structure

    The

    I

    I

    Integer;

    S

    S

    Single precision real; @@ -2203,19 +2208,19 @@ class="description">

    D

    D

    Double precision real;

    C

    C

    Single precision complex;

    Z

    Z

    Double precision complex.

    The actual data is contained in the polymorphic component v%v; the separation between @@ -2243,56 +2248,56 @@ memory.

    -
    Listing 3: The PSBLAS defined data type that contains a dense vector.

    -
    3.3.1 3.3.1 Vector Methods

    -

    3.3.2 3.3.2 get_nrows — Get number of rows in a dense vector

    nr = v%get_nrows()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    v

    v

    the dense vector
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The number of rows of dense vector v.

    -

    3.3.3 3.3.3 sizeof — Get memory occupation in bytes of a dense vector

    memory_size = v%sizeof()

    @@ -2302,39 +2307,39 @@ class="description">

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    v

    v

    the dense vector
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The memory occupation in bytes.

    -

    3.3.4 3.3.4 set — Set contents of the vector
    @@ -2349,66 +2354,66 @@ class="description">

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    v

    v

    the dense vector
    Scope: local
    local

    alpha

    alpha

    A scalar value.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    first,last

    first,last

    Boundaries for setting in the vector.
    Scope: local
    local
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: integers.

    vect

    vect

    An array
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call @@ -2418,20 +2423,20 @@ kind.

    On Return

    On Return

    v

    v

    the dense vector, with updated entries
    Scope: local
    local

    -

    3.3.5 3.3.5 get_vect — Get a copy of the vector contents
    @@ -2444,61 +2449,61 @@ extv = v%get_vect([n])

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    v

    v

    the dense vector
    Scope: local
    local

    n

    n

    Size to be returned
    Scope: local.
    local.
    Type: optional; default: entire vector.
    optional; default: entire vector.

    On Return

    On Return

    Function value

    Function value
    -

    An allocatable array holding a copy of the dense vector contents. If the - argument n is specified, the size of the returned array equals the minimum - between n and the internal size of the vector, or 0 if n is negative; - otherwise, the size of the array is the same as the internal size of the - vector.

    +

    An allocatable array holding a copy of the dense vector contents. If + the argument n is specified, the size of the returned array equals the + minimum between n and the internal size of the vector, or 0 if n is + negative; otherwise, the size of the array is the same as the internal size + of the vector.

    -

    3.3.6 3.3.6 clone — Clone current object
    @@ -2511,48 +2516,48 @@ call  x%clone(y,info)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    x

    x

    the dense vector.
    Scope: local.
    local.

    On Return

    On Return

    y

    y

    A copy of the input object.

    info

    info

    Return code.

    -

    3.4 3.4 Preconditioner data structure

    Our base library offers support for simple well known preconditioners like Diagonal Scaling or Block Jacobi with incomplete factorization ILU(0). @@ -2593,7 +2598,7 @@ class="content">The PSBLAS defined data type that contains a preconditioner.


    -

    3.5 3.5 Heap data structure

    Among the tools routines of sec. 6, we have a number of sorting utilities; the heap @@ -2605,7 +2610,7 @@ class="cmtt-10">psb_T_heap

    -

    : a heap containing elements of type T, where T can be i,s,c,d,z for +

    : a heap containing elements of type T, where T can be i,s,c,d,z for integer, real and complex data;

    @@ -2621,32 +2626,32 @@ class="description">

    init

    init

    Initialize memory; also choose ascending or descending order;

    howmany

    howmany

    Current heap occupancy;

    insert

    insert

    Add an item (or an item and its index);

    get_first

    get_first

    Remove and return the first element;

    dump

    dump

    Print on file; @@ -2655,7 +2660,7 @@ class="description">

    free

    free

    Release memory.

    These objects are used to implement the factorization and approximate inversion diff --git a/docs/html/userhtmlse4.html b/docs/html/userhtmlse4.html index a23f021f..ca615bb1 100644 --- a/docs/html/userhtmlse4.html +++ b/docs/html/userhtmlse4.html @@ -16,12 +16,12 @@ href="userhtmlse3.html" >prev] [prev-tail] [tail] [up]

    -

    4 4 Computational routines

    -

    4.1 4.1 psb_geaxpby — General Dense Matrix Sum

    This subroutine is an interface to the computational kernel for dense matrix sum: @@ -44,7 +44,7 @@ src="userhtml1x.png" alt="y ← α x+ βy

    -

    +class="pplb7t-">Subroutine


    x, y, α, β x, y, α, β Subroutine


    Short Precision Real Short Precision Real psb_geaxpby
    Long Precision Real Long Precision Real psb_geaxpby
    Short Precision Complexpsb_geaxpby
    Long Precision Complex Long Precision Complexpsb_geaxpby


    -
    Table 1: Data types
    @@ -90,43 +90,43 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    alpha

    alpha

    the scalar α.
    α.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 1. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    beta

    beta

    the scalar β.
    β.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    y

    y

    the local portion of the global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of the type indicated in Table 1. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    y

    y

    the local portion of result submatrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type 1.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.2 4.2 psb_gedot — Dot Product

    This function computes dot product between two vectors x and y.
    x and y.
    If x and y are real vectors it computes dot-product as: +class="zplmr7m-">x and y are real vectors it computes dot-product as:

    dot ← xTy

    Else if x and y are complex vectors then it computes dot-product as: +class="zplmr7m-">x and y are complex vectors then it computes dot-product as:

    dot ← xHy

    -

    psb_gedot(x, y, desc_a, info [,global])

    +

    psb_gedot(x, y, desc_a, info [,global])

    @@ -272,7 +272,7 @@ src="userhtml3x.png" alt="dot ← xHy

    -

    +class="pplb7t-">Function


    dot, x, y dot, x, y Function


    Short Precision Real Short Precision Real psb_gedot
    Long Precision Real Long Precision Real psb_gedot
    Short Precision Complexpsb_gedot
    Long Precision Complex Long Precision Complexpsb_gedot


    -
    Table 2: Data types
    @@ -317,28 +317,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 2. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 2. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    global

    global
    @@ -403,53 +403,53 @@ class="description">

    Specifies whether the computation should include the global reduction across all processes.
    Scope: global
    global
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: a logical scalar. Default: global=.true.

    On Return

    On Return

    Function value

    Function value

    is the dot product of vectors x and y.
    x and y.
    Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
    Specified as: a number of the data type indicated in Table 2.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    Notes +class="pplb7t-x-x-120">Notes

    1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to - compute multiple dot products at the same time; in this case, it is + entails a significant overhead. It may be necessary and/or advisable + to compute multiple dot products at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

      (1:3))
      -

      4.3 4.3 psb_gedots — Generalized Dot Product

      This subroutine computes a series of dot products among the columns of two dense matrices x and y: +class="zplmr7m-">x and y:

      res(i) ← x(:,i)Ty(:,i)

      If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of x is used. If x and y are of rank one, then res is a scalar, else it is a rank +class="zplmr7m-">x is used. If x and y are of rank one, then res is a scalar, else it is a rank one array.

      call psb_gedots(res, x, y, desc_a, info)

      @@ -567,7 +567,7 @@ one array.

      -

      +class="pplb7t-">Subroutine +class="td11">Short Precision Real +class="td11">Long Precision Real +class="td11">psb_gedots +class="td11">Long Precision Complex


      res, x, y res, x, y Subroutine


      Short Precision Real psb_gedots psb_gedots
      Long Precision Real psb_gedots psb_gedots
      Short Precision Complexpsb_gedots
      Long Precision Complex psb_gedots psb_gedots


      -
      Table 3: Data types
      @@ -612,28 +612,28 @@ class="content">Data types

      Type:

      Type:

      Synchronous.

      On Entry

      On Entry

      x

      x

      the local portion of global dense matrix x.
      x.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 3. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

      y

      y

      the local portion of global dense matrix y.
      y.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 3. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

      desc_a

      desc_a

      contains data structures for communications.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: an object of type psb_type.

      On Return

      On Return

      @@ -699,50 +699,50 @@ class="description">

      res

      res

      is the dot product of vectors x and y.
      x and y.
      Scope: global
      global
      Intent: out.
      out.
      Specified as: a number or a rank-one array of the data type indicated in Table 2.

      info

      info

      Error code.
      Scope: local
      local
      Type: required
      required
      Intent: out.
      out.
      An integer value; 0 means no error has been detected.

      -

      4.4 4.4 psb_normi — Infinity-Norm of Vector

      This function computes the infinity-norm of a vector x.
      x.
      If x is a real vector it computes infinity norm as: +class="zplmr7m-">x is a real vector it computes infinity norm as:

      amax  ← max |xi|
+src=

      else if x is a complex vector then it computes the infinity-norm as: +class="zplmr7m-">x is a complex vector then it computes the infinity-norm as:

      amax ← maxi (|re(xi)|+ |im(xi)|)
+src=

      psb_geamax(x, desc_a, info [,global])
      psb_normi<

      -

      Function



      amax amax x x Function



      Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geamax
      Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geamax
      Short Precision Complexpsb_geamax
      Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geamax



      -
      Table 4: Data types
      @@ -809,28 +810,28 @@ class="content">Data types

      Type:

      Type:

      Synchronous.

      On Entry

      On Entry

      x

      x

      the local portion of global dense matrix x.
      x.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: a rank one or two array or an object of type 4.

      desc_a

      desc_a

      contains data structures for communications.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: an object of type psb_type.

      global

      global

      Specifies whether the computation should include the global reduction across all processes.
      Scope: global
      global
      Type: optional.
      optional.
      Intent: in.
      in.
      Specified as: a logical scalar. Default: global=.true.

      On Return

      On Return

      @@ -884,36 +885,36 @@ class="description">

      Function value

      Function value

      is the infinity norm of vector x.
      x.
      Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
      Specified as: a long precision real number.

      info

      info

      Error code.
      Scope: local
      local
      Type: required
      required
      Intent: out.
      out.
      An integer value; 0 means no error has been detected.

      Notes +class="pplb7t-x-x-120">Notes

      1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to compute - multiple norms at the same time; in this case, it is possible to improve the - runtime efficiency by using the following scheme: + entails a significant overhead. It may be necessary and/or advisable to + compute multiple norms at the same time; in this case, it is possible to improve + the runtime efficiency by using the following scheme:

         (1:3))
        -

        4.5 4.5 psb_geamaxs — Generalized Infinity Norm

        This subroutine computes a series of infinity norms on the columns of a dense matrix x: +class="zplmr7m-">x:

        res(i) ← max|x(k,i)|
+src=

        @@ -1017,7 +1018,7 @@ src="userhtml7x.png" alt="res(i) ← max|x(k,i)|

        -

        Subroutine



        res res x x Subroutine



        Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geamaxs
        Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geamaxs
        Short Precision Complexpsb_geamaxs
        Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geamaxs



        -
        Table 5: Data types
        @@ -1066,28 +1068,28 @@ class="content">Data types

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        x

        x

        the local portion of global dense matrix x.
        x.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a rank one or two array or an object of type 5.

        desc_a

        desc_a

        contains data structures for communications.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: an object of type psb_type.

        On Return

        On Return

        res

        res

        is the infinity norm of the columns of x.
        x.
        Scope: global
        global
        Intent: out.
        out.
        Specified as: a number or a rank-one array of long precision real numbers.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        4.6 4.6 psb_norm1 — 1-Norm of Vector

        This function computes the 1-norm of a vector x.
        x.
        If x is a real vector it computes 1-norm as: +class="zplmr7m-">x is a real vector it computes 1-norm as:

        asum ←  ∥xi∥
+src=

        else if x is a complex vector then it computes 1-norm as: +class="zplmr7m-">x is a complex vector then it computes 1-norm as:

        asum ←  ∥re(x)∥1 + ∥im (x)∥1
+src=

        -

        psb_geasum(x, desc_a, info [,global]) psb_norm1(x, desc_a, info [,global]) +

        psb_geasum(x, desc_a, info [,global])psb_norm1(x, desc_a, info [,global])

        @@ -1182,7 +1184,7 @@ src="userhtml9x.png" alt="asum ← ∥re(x)∥1 + ∥im (x)

        -

        Function



        asum asum x x Function



        Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geasum
        Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geasum
        Short Precision Complexpsb_geasum
        Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geasum



        -
        Table 6: Data types
        @@ -1231,28 +1234,28 @@ class="content">Data types

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        x

        x

        the local portion of global dense matrix x.
        x.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a rank one or two array or an object of type 6.

        desc_a

        desc_a

        contains data structures for communications.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: an object of type psb_type.

        global

        global

        Specifies whether the computation should include the global reduction across all processes.
        Scope: global
        global
        Type: optional.
        optional.
        Intent: in.
        in.
        Specified as: a logical scalar. Default: global=.true.

        On Return

        On Return

        @@ -1306,36 +1309,36 @@ class="description">

        Function value

        Function value

        is the 1-norm of vector x.
        x.
        Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
        Specified as: a long precision real number.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to compute - multiple norms at the same time; in this case, it is possible to improve the - runtime efficiency by using the following scheme: + entails a significant overhead. It may be necessary and/or advisable to + compute multiple norms at the same time; in this case, it is possible to improve + the runtime efficiency by using the following scheme:

           (1:3))
          -

          4.7 4.7 psb_geasums — Generalized 1-Norm of Vector

          This subroutine computes a series of 1-norms on the columns of a dense matrix x: +class="zplmr7m-">x:

          res(i) ← max|x(k,i)|
+src=

          This function computes the 1-norm of a vector x.
          x.
          If x is a real vector it computes 1-norm as: +class="zplmr7m-">x is a real vector it computes 1-norm as:

          res(i) ← ∥xi∥

          else if x is a complex vector then it computes 1-norm as: +class="zplmr7m-">x is a complex vector then it computes 1-norm as:

          res(i) ← ∥re(x )∥1 +∥im (x )∥1
+src=

          call psb_geasums(res, x, desc_a, info) @@ -1453,7 +1457,7 @@ src="userhtml12x.png" alt="res(i) ← ∥re(x )∥1 +∥im (

          -

          Subroutine



          res res x x Subroutine



          Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geasums
          Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geasums
          Short Precision Complexpsb_geasums
          Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geasums



          -
          Table 7: Data types
          @@ -1502,28 +1507,28 @@ class="content">Data types

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          x

          x

          the local portion of global dense matrix x.
          x.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a rank one or two array or an object of type 7.

          desc_a

          desc_a

          contains data structures for communications.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: an object of type psb_type.

          On Return

          On Return

          res

          res

          contains the 1-norm of (the columns of) x.
          x.
          Scope: global
          global
          Intent: out.
          out.
          Short as: a long precision real number. Specified as: a long precision real number. @@ -1575,35 +1580,36 @@ class="newline" />Short as: a long precision real number. Specified as: a long p

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          -

          4.8 4.8 psb_norm2 — 2-Norm of Vector

          This function computes the 2-norm of a vector x.
          x.
          If x is a real vector it computes 2-norm as: +class="zplmr7m-">x is a real vector it computes 2-norm as:

          nrm2  ← √xT-x-
+src=

          else if x is a complex vector then it computes 2-norm as: +class="zplmr7m-">x is a complex vector then it computes 2-norm as:

                  √----
-nrm2 ←   xHx
+nrm 2 ←  xHx

          @@ -1619,7 +1625,7 @@ nrm2 ← xHx

          -

          Function



          nrm2 nrm2 x x Function



          Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_genrm2
          Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_genrm2
          Short Precision Complexpsb_genrm2
          Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_genrm2



          -
          Table 8: Data types
          @@ -1671,28 +1678,28 @@ class="newline" />

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          x

          x

          the local portion of global dense matrix x.
          x.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a rank one or two array or an object of type 8.

          desc_a

          desc_a

          contains data structures for communications.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: an object of type psb_type.

          global

          global

          Specifies whether the computation should include the global reduction across all processes.
          Scope: global
          global
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: a logical scalar. Default: global=.true.

          On Return

          On Return
          @@ -1746,38 +1753,38 @@ class="description">

          Function Value

          Function Value

          is the 2-norm of vector x.
          x.
          Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
          Type: required
          required
          Specified as: a long precision real number.

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to compute - multiple norms at the same time; in this case, it is possible to improve the - runtime efficiency by using the following scheme: + entails a significant overhead. It may be necessary and/or advisable to + compute multiple norms at the same time; in this case, it is possible to improve + the runtime efficiency by using the following scheme:

             (1:3))
            -

            4.9 4.9 psb_genrm2s — Generalized 2-Norm of Vector

            This subroutine computes a series of 2-norms on the columns of a dense matrix x: +class="zplmr7m-">x:

            res(i) ← ∥x(:,i)∥2
@@ -1880,7 +1887,7 @@ src=

            -

            Subroutine



            res res x x Subroutine



            Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_genrm2s
            Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_genrm2s
            Short Precision Complexpsb_genrm2s
            Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_genrm2s



            -
            Table 9: Data types
            @@ -1929,28 +1937,28 @@ class="content">Data types

            Type:

            Type:

            Synchronous.

            On Entry

            On Entry

            x

            x

            the local portion of global dense matrix x.
            x.
            Scope: local
            local
            Type: required
            required
            Intent: in.
            in.
            Specified as: a rank one or two array or an object of type 9.

            desc_a

            desc_a

            contains data structures for communications.
            Scope: local
            local
            Type: required
            required
            Intent: in.
            in.
            Specified as: an object of type psb_type.

            On Return

            On Return

            res

            res

            contains the 1-norm of (the columns of) x.
            x.
            Scope: global
            global
            Intent: out.
            out.
            Specified as: a long precision real number.

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            -

            4.10 4.10 psb_norm1 — 1-Norm of Sparse Matrix

            This function computes the 1-norm of a matrix A:
            A:

            nrm1 ← ∥A ∥1
      <dl class=

            A

            A

            represents the global matrix A

    +class="zplmr7m-">A
    @@ -2044,7 +2052,7 @@ class="cmmi-10">A

    -

    Function


    A A Function


    Short Precision Real Short Precision Real psb_spnrm1
    Long Precision Real Long Precision Real psb_spnrm1
    Short Precision Complexpsb_spnrm1
    Long Precision Complex Long Precision Complexpsb_spnrm1


    -
    Table 10: Data types
    @@ -2094,28 +2103,28 @@ psb_norm1(A, desc_a, info)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    a

    a

    the local portion of the global sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    Function value

    Function value

    is the 1-norm of sparse submatrix A.
    A.
    Scope: global
    global
    Specified as: a long precision real number. @@ -2161,23 +2170,23 @@ class="newline" />Specified as: a long precision real number.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.11 4.11 psb_normi — Infinity Norm of Sparse Matrix

    This function computes the infinity-norm of a matrix A:
    A:

    nrmi ←  ∥A∥∞
      <dl class=

    A

    A

    represents the global matrix A

    +class="zplmr7m-">A
    @@ -2204,7 +2213,7 @@ class="cmmi-10">A

    -

    Function


    A A Function


    Short Precision Real Short Precision Real psb_spnrmi
    Long Precision Real Long Precision Real psb_spnrmi
    Short Precision Complexpsb_spnrmi
    Long Precision Complex Long Precision Complexpsb_spnrmi


    -
    Table 11: Data types
    @@ -2254,28 +2264,28 @@ psb_normi(A, desc_a, info)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    a

    a

    the local portion of the global sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    Function value

    Function value

    is the infinity-norm of sparse submatrix A.
    A.
    Scope: global
    global
    Specified as: a long precision real number. @@ -2321,27 +2331,27 @@ class="newline" />Specified as: a long precision real number.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.12 4.12 psb_spmm — Sparse Matrix by Dense Matrix Product

    This subroutine computes the Sparse Matrix by Dense Matrix Product:
    y ← αAx + βy
+src=
    (1)
    @@ -2372,30 +2382,30 @@ src="userhtml20x.png" alt="y ← αAHx + βy

    x

    x

    is the global dense matrix x:,: +class="zplmr7m-">x:,:

    y

    y

    is the global dense matrix y:,: +class="zplmr7m-">y:,:

    A

    A

    is the global sparse matrix A

    +class="zplmr7m-">A
    @@ -2409,7 +2419,7 @@ class="cmmi-10">A

    -

    +class="pplb7t-">Subroutine +class="td11">Short Precision Real +class="td11">Long Precision Real +class="td11">psb_spmm +class="td11">Long Precision Complex


    A, x, y, α, β A, x, y, α, β Subroutine


    Short Precision Real psb_spmm psb_spmm
    Long Precision Real psb_spmm psb_spmm
    Short Precision Complexpsb_spmm
    Long Precision Complex psb_spmm psb_spmm


    -
    Table 12: Data types
    @@ -2458,43 +2468,43 @@ class="newline" />call

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    alpha

    alpha

    the scalar α.
    α.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 12.

    a

    a

    the local portion of the sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 12. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    beta

    beta

    the scalar β.
    β.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 12.

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 12. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    trans

    trans

    indicates what kind of operation to perform.

    trans = N

    trans = N

    the operation is specified by equation 1

    trans = T

    trans = T

    the operation is specified by equation 2

    trans = C

    trans = C

    the operation is specified by equation 3

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: trans = N
    trans = N
    Specified as: a character variable. @@ -2627,108 +2638,109 @@ class="newline" />Specified as: a character variable.

    work

    work

    work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a rank one array of the same type of x and y with the TARGET +class="zplmr7m-">x and y with the TARGET attribute.

    On Return

    On Return

    y

    y

    the local portion of result matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an array of rank one or two containing numbers of type specified in Table 12.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.13 4.13 psb_spsm — Triangular System Solve

    This subroutine computes the Triangular System Solve:

    y  ←   αT- 1x + βy
-y  ←   αDT -1x +βy
-         - 1
-y  ←   αT  Dx  +βy
-y  ←   αT- Tx+ βy
-y  ←   αDT -Tx + βy
-y  ←   αT- TDx + βy
-         - H
-y  ←   αT   x +βy
-y  ←   αDT -Hx + βy
-y  ←   αT- HDx + βy
+           -1
+y  ←   αDT   x+ βy
+y  ←   αT- 1Dx + βy
+y  ←   αT-T x+ βy
+           -T
+y  ←   αDT   x + βy
+y  ←   αT-T Dx + βy
+y  ←   αT-Hx + βy
+           -H
+y  ←   αDT   x + βy
+y  ←   αT-HDx  + βy

    where:

    x

    x

    is the global dense matrix x:,: +class="zplmr7m-">x:,:

    y

    y

    is the global dense matrix y:,: +class="zplmr7m-">y:,:

    T

    T

    is the global sparse block triangular submatrix T +class="zplmr7m-">T

    D

    D

    is the scaling diagonal matrix.

    @@ -2750,7 +2762,7 @@ class="newline" />

    -

    +class="pplb7t-">Subroutine +class="td11">Short Precision Real +class="td11">Long Precision Real +class="td11">psb_spsm +class="td11">Long Precision Complex


    T, x, y, D, α, β T, x, y, D, α, β Subroutine


    Short Precision Real psb_spsm psb_spsm
    Long Precision Real psb_spsm psb_spsm
    Short Precision Complexpsb_spsm
    Long Precision Complex psb_spsm psb_spsm


    -
    Table 13: Data types
    @@ -2798,59 +2810,59 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    alpha

    alpha

    the scalar α.
    α.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 13.

    t

    t

    the global portion of the sparse matrix T.
    T.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object type specified in § § 3.

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 13. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    beta

    beta

    the scalar β.
    β.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 13. @@ -2883,16 +2895,16 @@ href="#x9-68002r13">13.

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 13. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    trans

    trans

    specify with unitd the operation to perform. +class="pplri7t-">unitd the operation to perform.

    trans = ’N’

    trans = ’N’

    the operation is with no transposed matrix

    trans = ’T’

    trans = ’T’

    the operation is with transposed matrix.

    trans = ’C’

    trans = ’C’

    the operation is with conjugate transposed matrix.

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: trans = N
    trans = N
    Specified as: a character variable.

    unitd

    unitd

    specify with trans the operation to perform. +class="pplri7t-">trans the operation to perform.

    unitd = ’U’

    unitd = ’U’

    the operation is with no scaling

    unitd = ’L’

    unitd = ’L’

    the operation is with left scaling

    unitd = ’R’

    unitd = ’R’

    the operation is with right scaling.

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: unitd = U
    unitd = U
    Specified as: a character variable.

    choice

    choice

    specifies the update of overlap elements to be performed on exit:

    @@ -3022,11 +3036,11 @@ class="description"> class="description">

    psb_square_root_

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: psb_avg_
    Specified as: an integer variable. @@ -3035,80 +3049,84 @@ class="newline" />Specified as: an integer variable.

    diag

    diag

    the diagonal scaling matrix.
    Scope: local
    local
    Type: optional
    optional
    Intent: in.
    in.
    Default: diag(1) = 1(noscaling)
    diag(1) = 1(noscaling)
    Specified as: a rank one array containing numbers of the type indicated in Table 13.

    work

    work

    a work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a rank one array of the same type of x with the TARGET +class="zplmr7m-">x with the TARGET attribute.

    On Return

    On Return

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an array of rank one or two containing numbers of type specified in Table 13.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.14 4.14 psb_gemlt — Entrywise Product

    This function computes the entrywise product between two vectors x and +class="zplmr7m-">x and y +class="zplmr7m-">y

    dot ← x(i)y(i).
@@ -3128,7 +3146,7 @@ src=

    -

    +class="pplb7t-">Function


    dot, x, y dot, x, y Function


    Short Precision Real Short Precision Real psb_gemlt
    Long Precision Real Long Precision Real psb_gemlt
    Short Precision Complexpsb_gemlt
    Long Precision Complex Long Precision Complexpsb_gemlt


    -
    Table 14: Data types
    @@ -3173,28 +3191,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense vector x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    y

    y

    the local portion of global dense vector y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    @@ -3254,16 +3272,16 @@ class="description">

    y

    y

    the local portion of result submatrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an object of type psb14.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.15 4.15 psb_gediv — Entrywise Division

    This function computes the entrywise division between two vectors x and +class="zplmr7m-">x and y +class="zplmr7m-">y

    ∕ ← x(i)∕y(i).
+src=

    psb_gediv(x, y, desc_a, info, [flag) @@ -3313,7 +3331,7 @@ src="userhtml23x.png" alt="∕ ← x(i)∕y(i).

    -

    +class="pplb7t-">Function


    , x, y /, x, y Function


    Short Precision Real Short Precision Real psb_gediv
    Long Precision Real Long Precision Real psb_gediv
    Short Precision Complexpsb_gediv
    Long Precision Complex Long Precision Complexpsb_gediv


    -
    Table 15: Data types
    @@ -3358,28 +3376,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense vector x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    y

    y

    the local portion of global dense vector y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    flag

    flag

    check if any of the y(i) = 0, and in case returns error halting the +class="zplmr7m-">y(i) = 0, and in case returns error halting the computation.
    Scope: local
    local
    Type: optional Intent: in.
    optional Intent: in.
    Specified as: the logical value flag=.true. @@ -3448,22 +3468,22 @@ class="newline" />Specified as: the logical value

    On Return

    On Return

    x

    x

    the local portion of result submatrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an object of type psb14.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.16 4.16 psb_geinv — Entrywise Inversion

    This function computes the entrywise inverse of a vector x and puts it into +class="zplmr7m-">x and puts it into y +class="zplmr7m-">y

    ∕ ← 1∕x(i).
+src=

    psb_geinv(x, y, desc_a, info, [flag) @@ -3513,7 +3533,7 @@ src="userhtml24x.png" alt="∕ ← 1∕x(i).

    -

    +class="pplb7t-">Function


    , x, y /, x, y Function


    Short Precision Real Short Precision Real psb_geinv
    Long Precision Real Long Precision Real psb_geinv
    Short Precision Complexpsb_geinv
    Long Precision Complex Long Precision Complexpsb_geinv


    -
    Table 16: Data types
    @@ -3558,28 +3578,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense vector x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    flag

    flag

    check if any of the x(i) = 0, and in case returns error halting the +class="zplmr7m-">x(i) = 0, and in case returns error halting the computation.
    Scope: local
    local
    Type: optional Intent: in.
    optional Intent: in.
    Specified as: the logical value flag=.true.

    On Return

    On Return

    @@ -3633,16 +3655,16 @@ class="description">

    y

    y

    the local portion of result submatrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    Specified as: an object of type psb16.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    diff --git a/docs/html/userhtmlse5.html b/docs/html/userhtmlse5.html index 6b87e4b3..f2e2d33c 100644 --- a/docs/html/userhtmlse5.html +++ b/docs/html/userhtmlse5.html @@ -16,7 +16,7 @@ href="userhtmlse4.html" >prev] [prev-tail] [tail] [up]

    -

    5 5 Communication routines

    The routines in this chapter implement various global communication operators on vectors associated with a discretization mesh. For auxiliary communication routines @@ -25,7 +25,7 @@ href="userhtmlse6.html#x11-770006">6. -

    5.1 5.1 psb_halo — Halo Data Communication

    These subroutines gathers the values of the halo elements:

    @@ -36,7 +36,7 @@ src="userhtml25x.png" alt="x ← x

    x

    x

    is a global dense submatrix.

    @@ -60,22 +60,22 @@ id="TBL-17-2">

    α, x α, x Subroutine +class="pplb7t-">Subroutine

    Integer Integer psb_halo Short Precision Real Short Precision Real psb_halo Long Precision Real Long Precision Real psb_halo Short Precision Complexpsb_halo Long Precision Complex Long Precision Complexpsb_halo

    -
    Table 17: Data types
    @@ -102,28 +102,28 @@ class="newline" />call

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type 17.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    work

    work

    the work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a rank one array of the same type of x. +class="zplmr7m-">x.

    data

    data

    index list selector.
    Scope: global
    global
    Type: optional
    optional
    Specified - as: an integer. Values:psb_comm_halo_,psb_comm_mov_, psb_comm_ext_, - default: psb_comm_halo_. Chooses the index list on which to base the data - exchange. + as: an integer. Values:psb_comm_halo_,psb_comm_mov_, psb_comm_ext_, + default: psb_comm_halo_. Chooses the index list on which to base the + data exchange.

    On Return

    On Return

    x

    x

    global dense result matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    Returned as: a rank one or two array containing numbers of type specified - in Table inout.
    Returned as: a rank one or two array containing numbers of type + specified in Table 
    17.

    info

    info

    the local portion of result submatrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value that contains an error code.


    class="content">Sample discretization mesh.


    Usage Example Consider the discretization mesh depicted in fig. Usage Example Consider the discretization mesh depicted in fig. 3, partitioned among two processes as shown by the dashed line; the data distribution is such that each process will own 32 entries in the index space, with a halo made of 8 entries -placed at local indices 33 through 40. If process 0 assigns an initial value of 1 to -its entries in the x vector, and process 1 assigns a value of 2, then after +placed at local indices 33 through 40. If process 0 assigns an initial value of 1 +to its entries in the x vector, and process 1 assigns a value of 2, then after a call to psb_halo the contents of the local vectors will be the following:

    @@ -262,574 +262,574 @@ id="TBL-18-5">
    Process 0
    Process 1
    -Process 0
    Process 1
    I IGLOB(I)GLOB(I)X(I)X(I) IIGLOB(I)GLOB(I)X(I) +class="pplr7t-x-x-90">X(I) 1 11 1 1.01.0 1 331 33 2.02.0 22 22 1.01.0 22 3434 2.0 +class="pplr7t-x-x-90">2.0 3 33 3 1.01.0 3 353 35 2.02.0 44 44 1.01.0 44 3636 2.0 +class="pplr7t-x-x-90">2.0 5 55 5 1.01.0 5 375 37 2.02.0 66 66 1.01.0 66 3838 2.0 +class="pplr7t-x-x-90">2.0 7 77 7 1.01.0 7 397 39 2.02.0 88 88 1.01.0 88 4040 2.0 +class="pplr7t-x-x-90">2.0 9 99 9 1.01.0 9 419 41 2.02.01010 1010 1.01.01010 4242 2.0 +class="pplr7t-x-x-90">2.0 11 1111 11 1.01.011 4311 43 2.02.01212 1212 1.01.01212 4444 2.0 +class="pplr7t-x-x-90">2.0 13 1313 13 1.01.013 4513 45 2.02.01414 1414 1.01.01414 4646 2.0 +class="pplr7t-x-x-90">2.0 15 1515 15 1.01.015 4715 47 2.02.01616 1616 1.01.01616 4848 2.0 +class="pplr7t-x-x-90">2.0 17 1717 17 1.01.017 4917 49 2.02.01818 1818 1.01.01818 5050 2.0 +class="pplr7t-x-x-90">2.0 19 1919 19 1.01.019 5119 51 2.0 +class="pplr7t-x-x-90">2.0 20 2020 20 1.01.020 5220 52 2.0 +class="pplr7t-x-x-90">2.0 21 2121 21 1.01.021 5321 53 2.0 +class="pplr7t-x-x-90">2.0 22 2222 22 1.01.022 5422 54 2.0 +class="pplr7t-x-x-90">2.0 23 2323 23 1.01.023 5523 55 2.0 +class="pplr7t-x-x-90">2.0 24 2424 24 1.01.024 5624 56 2.0 +class="pplr7t-x-x-90">2.0 25 2525 25 1.01.025 5725 57 2.0 +class="pplr7t-x-x-90">2.0 26 2626 26 1.01.026 5826 58 2.0 +class="pplr7t-x-x-90">2.0 27 2727 27 1.01.027 5927 59 2.0 +class="pplr7t-x-x-90">2.0 28 2828 28 1.01.028 6028 60 2.0 +class="pplr7t-x-x-90">2.0 29 2929 29 1.01.029 6129 61 2.0 +class="pplr7t-x-x-90">2.0 30 3030 30 1.01.030 6230 62 2.0 +class="pplr7t-x-x-90">2.0 31 3131 31 1.01.031 6331 63 2.0 +class="pplr7t-x-x-90">2.0 32 3232 32 1.01.032 6432 64 2.0 +class="pplr7t-x-x-90">2.0 33 3333 33 2.02.033 2533 25 1.0 +class="pplr7t-x-x-90">1.0 34 3434 34 2.02.034 2634 26 1.0 +class="pplr7t-x-x-90">1.0 35 3535 35 2.02.035 2735 27 1.0 +class="pplr7t-x-x-90">1.0 36 3636 36 2.02.036 2836 28 1.0 +class="pplr7t-x-x-90">1.0 37 3737 37 2.02.037 2937 29 1.0 +class="pplr7t-x-x-90">1.0 38 3838 38 2.02.038 3038 30 1.0 +class="pplr7t-x-x-90">1.0 39 3939 39 2.02.039 3139 31 1.0 +class="pplr7t-x-x-90">1.0 40 4040 40 2.02.040 3240 32 1.0 +class="pplr7t-x-x-90">1.0
    @@ -841,7 +841,7 @@ class="td11"> -

    5.2 5.2 psb_ovrl — Overlap Update

    These subroutines applies an overlap operator to the input vector:

    @@ -852,20 +852,20 @@ src="userhtml26x.png" alt="x ← Qx

    x

    x

    is the global dense submatrix x +class="zplmr7m-">x

    Q

    Q

    is the overlap operator; it is the composition of two operators Pa and PT.

    +class="zplmr7m-">Pa and PT.
    @@ -887,30 +887,31 @@ id="TBL-19-2">

    x x SubroutineSubroutine

    Short Precision Real psb_ovrl +class="td +11">Short Precision Real psb_ovrl Long Precision Real psb_ovrl +class="td11">Long Precision Real psb_ovrl Short Precision Complexpsb_ovrl +class="td11">psb_ovrl Long Precision Complex psb_ovrl +class="td11">Long Precision Complexpsb_ovrl

    -
    Table 18: Data types
    @@ -923,28 +924,28 @@ class="newline" />call

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type 18.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    update

    update

    Update operator.

    update = psb_none_

    update = psb_none_

    Do nothing;

    update = psb_add_

    update = psb_add_

    Sum overlap entries, i.e. apply PT; +class="zplmr7m-">PT;

    update = psb_avg_

    update = psb_avg_

    Average overlap entries, i.e. apply PaPT;

    +class="zplmr7m-">PaPT;

    Scope: global
    global
    Intent: in.
    in.
    Default: update_type = psb_avg_
    update_type = psb_avg_
    Scope: global
    global
    Specified as: a integer variable.

    work

    work

    the work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a one dimensional array of the same type of x. +class="zplmr7m-">x.

    On Return

    On Return

    x

    x

    global dense result matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an array of rank one or two containing numbers of type specified in Table 18.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    Notes +class="pplb7t-x-x-120">Notes

    1. @@ -1086,20 +1088,21 @@ class="cmbx-12">Notes
    2. The operator PT performs the reduction sum of overlap elements; it is a +class="zplmr7m-">PT performs the reduction sum of overlap elements; it is a “prolongation” operator PT that replicates overlap elements, accounting +class="zplmr7m-">PT that replicates overlap elements, accounting for the physical replication of data;

    3. The operator Pa performs a scaling on the overlap elements by the +class="zplmr7m-">Pa performs a scaling on the overlap elements by the amount of replication; thus, when combined with the reduction operator, - it implements the average of replicated elements over all of their instances.

    + it implements the average of replicated elements over all of their + instances.


    @@ -1124,18 +1127,18 @@ class="content">Sample discretization mesh.


    Example of use Consider the discretization mesh depicted in fig. Example of use Consider the discretization mesh depicted in fig. 4, partitioned -among two processes as shown by the dashed lines, with an overlap of 1 extra layer -with respect to the partition of fig. 3; the data distribution is such that each process will own 40 entries in the index space, with an overlap of 16 entries placed at local indices 25 through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries in the x vector, and process 1 assigns a value of 2, then after a -call to psb_ovrl with psb_avg_ and a call to psb_halo_ the contents of -the local vectors will be the following (showing a transition among the two +class="zplmr7m-">x vector, and process 1 assigns a value of 2, then after a +call to psb_ovrl with psb_avg_ and a call to psb_halo_ the contents of the +local vectors will be the following (showing a transition among the two subdomains)

    @@ -1160,687 +1163,687 @@ id="TBL-20-5">
    Process 0
    Process 1
    -Process 0
    Process 1
    I IGLOB(I)GLOB(I)X(I)X(I) IIGLOB(I)GLOB(I)X(I) +class="pplr7t-x-x-80">X(I) 1 11 1 1.01.0 1 331 33 1.51.5 22 22 1.01.0 22 3434 1.5 +class="pplr7t-x-x-80">1.5 3 33 3 1.01.0 3 353 35 1.51.5 44 44 1.01.0 44 3636 1.5 +class="pplr7t-x-x-80">1.5 5 55 5 1.01.0 5 375 37 1.51.5 66 66 1.01.0 66 3838 1.5 +class="pplr7t-x-x-80">1.5 7 77 7 1.01.0 7 397 39 1.51.5 88 88 1.01.0 88 4040 1.5 +class="pplr7t-x-x-80">1.5 9 99 9 1.01.0 9 419 41 2.02.01010 1010 1.01.01010 4242 2.0 +class="pplr7t-x-x-80">2.0 11 1111 11 1.01.011 4311 43 2.02.01212 1212 1.01.01212 4444 2.0 +class="pplr7t-x-x-80">2.0 13 1313 13 1.01.013 4513 45 2.02.01414 1414 1.01.01414 4646 2.0 +class="pplr7t-x-x-80">2.0 15 1515 15 1.01.015 4715 47 2.02.01616 1616 1.01.01616 4848 2.0 +class="pplr7t-x-x-80">2.0 17 1717 17 1.01.017 4917 49 2.02.01818 1818 1.01.01818 5050 2.0 +class="pplr7t-x-x-80">2.0 19 1919 19 1.01.019 5119 51 2.02.02020 2020 1.01.02020 5252 2.0 +class="pplr7t-x-x-80">2.0 21 2121 21 1.01.021 5321 53 2.02.02222 2222 1.01.02222 5454 2.0 +class="pplr7t-x-x-80">2.0 23 2323 23 1.01.023 5523 55 2.0 +class="pplr7t-x-x-80">2.0 24 2424 24 1.01.024 5624 56 2.0 +class="pplr7t-x-x-80">2.0 25 2525 25 1.51.525 5725 57 2.0 +class="pplr7t-x-x-80">2.0 26 2626 26 1.51.526 5826 58 2.0 +class="pplr7t-x-x-80">2.0 27 2727 27 1.51.527 5927 59 2.0 +class="pplr7t-x-x-80">2.0 28 2828 28 1.51.528 6028 60 2.0 +class="pplr7t-x-x-80">2.0 29 2929 29 1.51.529 6129 61 2.0 +class="pplr7t-x-x-80">2.0 30 3030 30 1.51.530 6230 62 2.0 +class="pplr7t-x-x-80">2.0 31 3131 31 1.51.531 6331 63 2.0 +class="pplr7t-x-x-80">2.0 32 3232 32 1.51.532 6432 64 2.0 +class="pplr7t-x-x-80">2.0 33 3333 33 1.51.533 2533 25 1.5 +class="pplr7t-x-x-80">1.5 34 3434 34 1.51.534 2634 26 1.5 +class="pplr7t-x-x-80">1.5 35 3535 35 1.51.535 2735 27 1.5 +class="pplr7t-x-x-80">1.5 36 3636 36 1.51.536 2836 28 1.5 +class="pplr7t-x-x-80">1.5 37 3737 37 1.51.537 2937 29 1.5 +class="pplr7t-x-x-80">1.5 38 3838 38 1.51.538 3038 30 1.5 +class="pplr7t-x-x-80">1.5 39 3939 39 1.51.539 3139 31 1.5 +class="pplr7t-x-x-80">1.5 40 4040 40 1.51.540 3240 32 1.5 +class="pplr7t-x-x-80">1.5 41 4141 41 2.02.041 1741 17 1.0 +class="pplr7t-x-x-80">1.0 42 4242 42 2.02.042 1842 18 1.0 +class="pplr7t-x-x-80">1.0 43 4343 43 2.02.043 1943 19 1.0 +class="pplr7t-x-x-80">1.0 44 4444 44 2.02.044 2044 20 1.0 +class="pplr7t-x-x-80">1.0 45 4545 45 2.02.045 2145 21 1.0 +class="pplr7t-x-x-80">1.0 46 4646 46 2.02.046 2246 22 1.0 +class="pplr7t-x-x-80">1.0 47 4747 47 2.02.047 2347 23 1.0 +class="pplr7t-x-x-80">1.0 48 4848 48 2.02.048 2448 24 1.0 +class="pplr7t-x-x-80">1.0
    +class="td11">
    @@ -1849,41 +1852,43 @@ class="td11"> -

    5.3 5.3 psb_gather — Gather Global Dense Matrix

    These subroutines collect the portions of global dense matrix distributed over all process into one single array stored on one process.

    glob-x ← collect(loc-xi)
+src=

    where:

    glob_x

    glob_x

    is the global submatrix glob_x1:m,1:n +class="zplmr7m-">glob_x1:m,1:n

    loc_xi

    loc_xi

    is the local portion of global dense matrix on process i. +class="zplmr7m-">i.

    collect

    collect

    is the collect function.

    @@ -1907,37 +1912,37 @@ id="TBL-21-2">

    xi,y xi, y Subroutine +class="pplb7t-">Subroutine

    Integer psb_gather +class="td11">Integer psb_gather Short Precision Real psb_gather +class="td11">Short Precision Real psb_gather Long Precision Real psb_gather +class="td11">Long Precision Real psb_gather Short Precision Complexpsb_gather +class="td11">psb_gather Long Precision Complex psb_gather +class="td11">Long Precision Complexpsb_gather

    -
    Table 19: Data types
    @@ -1950,30 +1955,30 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    loc_x

    loc_x

    the local portion of global dense matrix glob_x.
    glob_x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type 19.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    root

    root

    The process that holds the global copy. If root = -1 all the processes will +class="zplmr7m-">root = -1 all the processes will have a copy of the global vector.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: an integer variable -1 root np - 1, default -1. +class="zplmr7y-">-1 root np- 1, default -1.

    On Return

    On Return

    @@ -2035,34 +2041,34 @@ class="description">

    glob_x

    glob_x

    The array where the local parts must be gathered.
    Scope: global
    global
    Type: required
    required
    Intent: out.
    out.
    Specified as: a rank one or two array with the ALLOCATABLE attribute.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    5.4 5.4 psb_scatter — Scatter Global Dense Matrix

    These subroutines scatters the portions of global dense matrix owned by a process to all the processes in the processes grid. @@ -2074,29 +2080,31 @@ src="userhtml28x.png" alt="loc-xi ← scatter(glob-x)

    glob_x

    glob_x

    is the global matrix glob_x1:m,1:n +class="zplmr7m-">glob_x1:m,1:n

    loc_xi

    loc_xi

    is the local portion of global dense matrix on process i. +class="zplmr7m-">i.

    scatter

    scatter

    is the scatter function.

    @@ -2120,37 +2128,37 @@ id="TBL-22-2">

    xi,y xi, y Subroutine +class="pplb7t-">Subroutine

    Integer psb_scatter +class="td11">Integer psb_scatter Short Precision Real psb_scatter +class="td11">Short Precision Real psb_scatter Long Precision Real psb_scatter +class="td11">Long Precision Real psb_scatter Short Precision Complexpsb_scatter +class="td11">psb_scatter Long Precision Complex psb_scatter +class="td11">Long Precision Complexpsb_scatter

    -
    Table 20: Data types
    @@ -2162,42 +2170,42 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    glob_x

    glob_x

    The array that must be scattered into local pieces.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    root

    root

    The process that holds the global copy. If root = -1 all the processes have +class="zplmr7m-">root = -1 all the processes have a copy of the global vector.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: an integer variable -1 root np - 1, default psb_root_, +class="zplmr7y-">-1 root np- 1, default psb_root_, i.e. process 0.

    mold

    mold

    The desired dynamic type for the internal vector storage.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an object of a class derived from psb_type.

    On Return

    On Return

    loc_x

    loc_x

    the local portion of global dense matrix glob_x.
    glob_x.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    Specified as: a rank one or two ALLOCATABLE array or an object of type 20.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    diff --git a/docs/html/userhtmlse6.html b/docs/html/userhtmlse6.html index 19fb0f5d..382f28d3 100644 --- a/docs/html/userhtmlse6.html +++ b/docs/html/userhtmlse6.html @@ -16,10 +16,10 @@ href="userhtmlse5.html" >prev] [prev-tail] [tail] [up]

    -

    6 6 Data management routines

    -

    6.1 6.1 psb_cdall — Allocates a communication descriptor

    @@ -32,89 +32,90 @@ call psb_cdall(icontxt, desc_a, info,nl=nl) call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)

    -

    This subroutine initializes the communication descriptor associated with an index -space. One of the optional arguments

    This subroutine initializes the communication descriptor associated with an +index space. One of the optional arguments parts, vg, vl, nl or repl must be specified, -thereby choosing the specific initialization strategy. +class="cmtt-10">repl must be +specified, thereby choosing the specific initialization strategy.

    On Entry

    On Entry

    Type:

    Type:

    Synchronous.

    icontxt

    icontxt

    the communication context.
    Scope:global.
    global.
    Type:required.
    required.
    Intent: in.
    in.
    Specified as: an integer value.

    vg

    vg

    Data allocation: each index i ∈{1mg} is allocated to process vg(i).
    i ∈{1mg} is allocated to process vg(i).
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array.

    flag

    flag

    Specifies whether entries in vg are zero- or one-based.
    vg are zero- or one-based.
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    Specified as: an integer value 0,1, default 0. +class="pplb7t-">in.
    Specified as: an integer value 0, 1, default 0.

    mg

    mg

    the (global) number of rows of the problem.
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer value. It is required if parts or repl is specified, @@ -123,58 +124,61 @@ class="cmtt-10">vg is specified.

    parts

    parts

    the subroutine that defines the partitioning scheme.
    Scope:global.
    global.
    Type:required.
    required.
    Specified as: a subroutine.

    vl

    vl

    Data allocation: the set of global indices vl(1 : nl) belonging to the calling +class="zplmr7m-">vl(1 : nl) belonging to the calling process.
    Scope:local.
    local.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array.

    nl

    nl

    Data allocation: in a generalized block-row distribution the number of indices belonging to the current process.
    Scope:local.
    local.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer value. May be specified together with vl.

    repl

    repl

    Data allocation: build a replicated index space (i.e. all processes own all indices).
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: the logical value .true. @@ -183,55 +187,58 @@ class="cmtt-10">.true.

    globalcheck

    globalcheck

    Data allocation: do global checks on the local index lists vl
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: a logical value, default: .false.

    lidx

    lidx

    Data allocation: the set of local indices lidx(1 : nl) to be assigned to the +class="zplmr7m-">lidx(1 : nl) to be assigned to the global indices vl.
    vl.
    Scope:local.
    local.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array.

    On Return

    On Return

    desc_a

    desc_a

    the communication descriptor.
    Scope:local.
    local.
    Type:required.
    required.
    Intent: out.
    out.
    Specified as: a structured data of type psb_type.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    Notes +class="pplb7t-x-x-120">Notes

    1. @@ -268,7 +275,7 @@ class="cmtt-10">repl must be specified,

      parts

      parts

      In this case we have a subroutine specifying the mapping between global indices and process/local index pairs. If this optional argument is @@ -290,70 +297,78 @@ class="cmtt-10">mg as well. The

      glob_index

      glob_index

      The global index to be mapped;

      np

      np

      The number of processes in the mapping;

      mg

      mg

      The total number of global rows in the mapping;

      The output arguments are:

      nv

      nv

      The number of entries in pv;

      pv

      pv

      A vector containing the indices of the processes to which the global index should be assigend; each entry must satisfy 0 +class="zplmr7y-">≤ pv(i) < np; if nv > 1 we have an index assigned to multiple +class="zplmr7m-">pv(i) < np; if nv > 1 we have an index assigned to multiple processes, i.e. we have an overlap among the subdomains.

      vg

      vg

      In this case the association between an index and a process is specified via an integer vector vg(1:mg); each index i ∈{1mg} is assigned to process +class="zplmr7m-">i ∈{1mg} is assigned to process vg(i). The vector vg(i). The vector vg must be identical on all calling processes; its - entries may have the ranges (0np - 1) or (1np) according to the - value of (0np- 1) or (1np) according to + the value of flag. The size mg may be specified via the optional +class="zplmr7m-">mg may be specified via the optional argument mg; the default is to use the entire vector vg, thus having @@ -362,7 +377,7 @@ class="cmtt-10">mg=size(vg).

      vl

      vl
      @@ -370,7 +385,7 @@ class="description">

      In this case we are specifying the list of indices vl(1:nl) assigned to the current process; thus, the global problem size mg is given by the range of +class="zplmr7m-">mg is given by the range of the aggregate of the individual vectors vl specified in the calling processes. The size may be specified via the optional argument vl, thus having < class="cmtt-10">nl=size(vl). If globalcheck=.true. the subroutine will check how many times each - entry in the global index space (1mg) is specified in the input lists (1mg) is specified in the input lists vl, thus allowing for the presence of overlap in the input, and checking for “orphan” indices. If globalcheck=.false., the subroutine will no

      lidx

      lidx

      The optional argument lidx is available for those cases in which the user @@ -414,20 +431,21 @@ href="userhtmlse2.html#x4-70002.3.1">2.3.1.

      nl

      nl

      If this argument is specified alone (i.e. without vl) the result is a generalized row-block distribution in which each process I gets assigned a - consecutive chunk of NI = nl global indices. +class="zplmr7m-">I gets assigned + a consecutive chunk of NI = nl global indices.

      repl

      repl

      This arguments specifies to replicate all indices on all processes. This is a special purpose data allocation that is useful in the construction of some @@ -464,23 +482,24 @@ class="cmtt-10">globalcheck=.true.,

    2. When the subroutine is invoked with vl in conjunction with globalcheck=.false., - no index space scan will take place. Thus it is the responsibility of the user to - make sure that the indices specified in vl have neither orphans nor overlaps; if - this assumption fails, results will be unpredictable. +class="cmtt-10">vl in conjunction with + globalcheck=.false., no index space scan will take place. Thus it is the + responsibility of the user to make sure that the indices specified in vl have + neither orphans nor overlaps; if this assumption fails, results will be + unpredictable.

    3. -

      Orphan and overlap indices are impossible by construction when the subroutine - is invoked with

      Orphan and overlap indices are impossible by construction when the + subroutine is invoked with nl (alone), or vg.

    -

    6.2 6.2 psb_cdins — Communication descriptor insert routine

    @@ -494,77 +513,85 @@ call psb_cdins(nz,ja,desc,info[,jla,mask,lidx]) discretization mesh (and isomorphic to the sparsity pattern of a linear system coefficient matrix), storing them as necessary into the communication descriptor. In the first form the edges are specified as pairs of indices ia(i),ja(i); the starting index -ia(i) should belong to the current process. In the second form only the remote indices -ja(i) are specified. +class="zplmr7m-">ia(i), ja(i); the starting index +ia(i) should belong to the current process. In the second form only the remote +indices ja(i) are specified.

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    nz

    nz

    the number of points being inserted.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer value.

    ia

    ia

    the indices of the starting vertex of the edges being inserted.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    ja

    ja

    the indices of the end vertex of the edges being inserted.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    mask

    mask

    Mask entries in ja, they are inserted only when the corresponding mask entries are .true.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: a logical array of length nz, default nz, default .true..

    lidx

    lidx

    User defined local indices for ja.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array of length nz.

    +class="zplmr7m-">nz.

    On Return

    On Return

    desc_a

    desc_a

    the updated communication descriptor.
    Scope:local.
    local.
    Type:required.
    required.
    Intent: inout.
    inout.
    Specified as: a structured data of type psb_type.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected. @@ -639,34 +666,34 @@ class="newline" />An integer value; 0 means no error has been detected.

    ila

    ila

    the local indices of the starting vertex of the edges being inserted.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: out.
    out.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    jla

    jla

    the local indices of the end vertex of the edges being inserted.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: out.
    out.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    Notes +class="pplb7t-x-x-120">Notes

    1. @@ -686,7 +713,7 @@ href="userhtmlse2.html#x4-70002.3.1">2.3.1.< -

      6.3 6.3 psb_cdasb — Communication descriptor assembly routine

      @@ -699,28 +726,28 @@ call psb_cdasb(desc_a, info [, mold])

      Type:

      Type:

      Synchronous.

      On Entry

      On Entry

      desc_a

      desc_a

      the communication descriptor.
      Scope:local.
      local.
      Type:required.
      required.
      Intent: inout.
      inout.
      Specified as: a structured data of type psb_type.

      mold

      mold

      The desired dynamic type for the internal index storage.
      Scope: local.
      local.
      Type: optional.
      optional.
      Intent: in.
      Specified as: a object of type derived from (integer) +class="pplb7t-">in.
      Specified as: a object of type derived from (integer) psb_type.

      On Return

      On Return

      desc_a

      desc_a

      the communication descriptor.
      Scope:local.
      local.
      Type:required.
      required.
      Intent: inout.
      inout.
      Specified as: a structured data of type psb_type.

      info

      info

      Error code.
      Scope: local
      local
      Type: required
      required
      Intent: out.
      out.
      An integer value; 0 means no error has been detected.

      Notes +class="pplb7t-x-x-120">Notes

      1. @@ -807,7 +834,7 @@ class="cmtt-10">psb_cdasb. -

        6.4 6.4 psb_cdcpy — Copies a communication descriptor

        @@ -820,28 +847,28 @@ call psb_cdcpy(desc_in, desc_out, info)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        desc_in

        desc_in

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        On Return

        On Return

        desc_out

        desc_out

        the communication descriptor copy.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: out.
        out.
        Specified as: a structured data of type psb_type.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.5 6.5 psb_cdfree — Frees a communication descriptor

        @@ -905,28 +932,28 @@ call psb_cdfree(desc_a, info)

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        desc_a

        desc_a

        the communication descriptor to be freed.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: inout.
        inout.
        Specified as: a structured data of type psb_type.

        On Return

        On Return

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.6 6.6 psb_cdbldext — Build an extended communication descriptor

        @@ -964,48 +991,48 @@ class="newline" />An integer value; 0 means no error has been detected.

        -

        This subroutine builds an extended communication descriptor, based on the input -descriptor

        This subroutine builds an extended communication descriptor, based on the +input descriptor desc_a and on the stencil specified through the input sparse matrix a.

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        a

        a

        A sparse matrix Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data type.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        nl

        nl

        the number of additional layers desired.
        Scope:global.
        global.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: an integer value nl 0. +class="zplmr7m-">nl 0.

        extype

        extype

        the kind of estension required.
        Scope:global.
        global.
        Type:optional .
        optional .
        Intent: in.
        in.
        Specified as: an integer value psb_ovt_xhal_, psb_ovt_asov_, default: @@ -1051,22 +1078,22 @@ class="cmtt-10">psb_ovt_xhal_

        On Return

        On Return

        desc_out

        desc_out

        the extended communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: inout.
        inout.
        Specified as: a structured data of type psb_type.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. Specifying psb_ovt_xhal_ for the extype argument the user will obtain a - descriptor for a domain partition in which the additional layers are fetched - as part of an (extended) halo; however the index-to-process mapping is - identical to that of the base descriptor; +class="cmtt-10">extype argument the user will obtain + a descriptor for a domain partition in which the additional layers are + fetched as part of an (extended) halo; however the index-to-process + mapping is identical to that of the base descriptor;

        2. @@ -1111,7 +1138,7 @@ class="cmtt-10">extype argument the user will obtain -

          6.7 6.7 psb_spall — Allocates a sparse matrix

          @@ -1124,28 +1151,28 @@ call psb_spall(a, desc_a, info [, nnz, 

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          desc_a

          desc_a

          the communication descriptor.
          Scope:local.
          local.
          Type:required.
          required.
          Intent: in.
          in.
          Specified as: a structured data of type psb_type.

          nnz

          nnz

          An estimate of the number of nonzeroes in the local part of the assembled matrix.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: an integer value.

          dupl

          dupl

          How to handle duplicate coefficients.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: integer, possible values: psb_dupl_ovwrt_, psb_dupl_add_, @@ -1188,17 +1215,17 @@ class="cmtt-10">psb_dupl_err_.

          bldmode

          bldmode

          Whether to keep track of matrix entries that do not belong to the current process.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          Specified as: +class="pplb7t-">in.
          Specified as: an integer value psb_matbld_noremote_, psb_matbld_remote_. Default: @@ -1208,21 +1235,21 @@ class="cmtt-10">psb_matbld_noremote_.

          On Return

          On Return

          a

          a

          the matrix to be allocated.
          Scope:local
          local
          Type:required
          required
          Intent: out.
          out.
          Specified as: a structured data of type psb_type.

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. @@ -1258,7 +1285,7 @@ class="cmbx-12">Notes
          2. Providing a good estimate for the number of nonzeroes nnz in the +class="zplmr7m-">nnz in the assembled matrix may substantially improve performance in the matrix build phase, as it will reduce or eliminate the need for (potentially multiple) data reallocations; @@ -1271,7 +1298,7 @@ class="cmtt-10">psb_matbld_remote_ is likely to cause a -

            6.8 6.8 psb_spins — Insert a set of coefficients into a sparse matrix

            @@ -1285,53 +1312,53 @@ call psb_spins(nr, irw, irp, ja, val, 

            Type:

            Type:

            Asynchronous.

            On Entry

            On Entry

            nz

            nz

            the number of coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer scalar.

            nr

            nr

            the number of rows to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer scalar.

            irw

            irw

            the first row to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer scalar. @@ -1339,74 +1366,75 @@ class="newline" />Specified as: an integer scalar.

            ia

            ia

            the row indices of the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array of size nz. +class="zplmr7m-">nz.

            irp

            irp

            the row pointers of the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array of size nr + 1. +class="zplmr7m-">nr + 1.

            ja

            ja

            the column indices of the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array of size nz. +class="zplmr7m-">nz.

            val

            val

            the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an array of size nz. Must be of the same type and kind of - the coefficients of the sparse matrix a. +class="zplmr7m-">nz. Must be of the same type and kind of the + coefficients of the sparse matrix a.

            desc_a

            desc_a

            The communication descriptor.
            Scope: local.
            local.
            Type: required.
            required.
            Intent: inout.
            inout.
            Specified as: a variable of type psb

            local

            local
            -

            Whether the entries in the indices vectors ia, ja are already in local +

            Whether the entries in the indices vectors ia, ja are already in local numbering.
            Scope:local.
            local.
            Type:optional.
            optional.
            Specified as: a logical value; default: .false..

            @@ -1436,21 +1464,21 @@ class="cmtt-10">.false..

            On Return

            On Return

            a

            a

            the matrix into which coefficients will be inserted.
            Scope:local
            local
            Type:required
            required
            Intent: inout.
            inout.
            Specified as: a structured data of type
            psb_type.

            desc_a

            desc_a

            The communication descriptor.
            Scope: local.
            local.
            Type: required.
            required.
            Intent: inout.
            inout.
            Specified as: a variable of type psb

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            Notes +class="pplb7t-x-x-120">Notes

            1. -

              On entry to this routine the descriptor may be in either the build or +

              On entry to this routine the descriptor may be in either the build or assembled state.

            2. psb_cdins class="enumerate" id="x11-85010x5">

              In COO format the coefficients to be inserted are represented by the ordered triples ia(i),ja(i),val(i), for i = 1,,nz; these triples are +class="zplmr7m-">ia(i), ja(i), val(i), for i = 1, , nz; these triples are arbitrary;

            3. In CSR format the coefficients to be inserted for each input row i = 1,nr - are represented by the ordered triples (i + irw - 1),ja(j),val(j), for +class="zplmr7m-">i = 1, nr + are represented by the ordered triples (i + irw- 1), ja(j), val(j), for j = j = irp(i),,irp(i + 1) - 1; these triples should belong to the current - process, i.e. i+irw-1 should be one of the local indices, but are otherwise +class="zplmr7m-">irp(i), , irp(i + 1) - 1; these triples should belong to the current process, + i.e. i + irw - 1 should be one of the local indices, but are otherwise arbitrary;

            4. -1 should be one of the local indices, but are otherwise
            5. -

              Coefficients from matrix rows not owned by the calling process are treated - according to the value of bldmode specified at allocation time; if bldmode - was chosen as psb_matbld_remote_ the library will keep track of them, - otherwise they are silently ignored; +

              Coefficients from matrix rows not owned by the calling process are + treated according to the value of bldmode specified at allocation time; if + bldmode was chosen as psb_matbld_remote_ the library will keep track + of them, otherwise they are silently ignored;

            6. @@ -1598,7 +1646,7 @@ class="cmtt-10">psb_matbld_remote_ the library will keep tr -

              6.9 6.9 psb_spasb — Sparse matrix assembly routine

              @@ -1611,28 +1659,28 @@ call psb_spasb(a, desc_a, info [, afmt,

              Type:

              Type:

              Synchronous.

              On Entry

              On Entry

              desc_a

              desc_a

              the communication descriptor.
              Scope:local.
              local.
              Type:required.
              required.
              Intent: in/out.
              in/out.
              Specified as: a structured data of type psb_type.

              afmt

              afmt

              the storage format for the sparse matrix.
              Scope: local.
              local.
              Type: optional.
              optional.
              Intent: in.
              in.
              Specified as: an array of characters. Defalt: ’CSR’.

              upd

              upd

              Provide for updates to the matrix coefficients.
              Scope: global.
              global.
              Type: optional.
              optional.
              Intent: in.
              in.
              Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_

              mold

              mold

              The desired dynamic type for the internal matrix storage.
              Scope: local.
              local.
              Type: optional.
              optional.
              Intent: in.
              in.
              Specified as: an object of a class derived from psb_mat.

              On Return

              On Return

              a

              a

              the matrix to be assembled.
              Scope:local
              local
              Type:required
              required
              Intent: inout.
              inout.
              Specified as: a structured data of type psb_type.

              desc_a

              desc_a

              the communication descriptor.
              Scope:local.
              local.
              Type:required.
              required.
              Intent: in/out.
              in/out.
              Specified as: a structured data of type psbbldmode=psb_matbld_remote_, then the descri

              info

              info

              Error code.
              Scope: local
              local
              Type: required
              required
              Intent: out.
              out.
              An integer value; 0 means no error has been detected.

              Notes +class="pplb7t-x-x-120">Notes

              1. -

                On entry to this routine the descriptor must be in the assembled state, - i.e.

                On entry to this routine the descriptor must be in the assembled state, i.e. + psb_cdasb must already have been called. @@ -1764,17 +1812,18 @@ class="cmtt-10">psb_cdasb must already have been called.

              2. -

                Duplicate entries are detected and handled in both build and update state, - with the exception of the error action that is only taken in the build state, - i.e. on the first assembly; +

                Duplicate entries are detected and handled in both build and update + state, with the exception of the error action that is only taken in the build + state, i.e. on the first assembly;

              3. -

                If the update choice is psb_upd_perm_, then subsequent calls to psb_spins - to update the matrix must be arranged in such a way as to produce exactly - the same sequence of coefficient values as encountered at the first assembly; +

                If the update choice is psb_upd_perm_, then subsequent calls to + psb_spins to update the matrix must be arranged in such a way as to + produce exactly the same sequence of coefficient values as encountered + at the first assembly;

              4. @@ -1782,23 +1831,23 @@ class="cmtt-10">psb_spins
              5. -

                On exit from this routine the matrix is in the assembled state, and thus - is suitable for the computational routines; +

                On exit from this routine the matrix is in the assembled state, and thus is + suitable for the computational routines;

              6. If the bldmode=psb_matbld_remote_ value was specified at allocation time, contributions defined on the current process but belonging to a - remote process will be handled accordingly. This is most likely to occur in - finite element applications, with dupl=psb_dupl_add_; it is necessary to - check for possible updates needed in the descriptor, hence there will be a - runtime overhead.

              + remote process will be handled accordingly. This is most likely to occur + in finite element applications, with dupl=psb_dupl_add_; it is necessary + to check for possible updates needed in the descriptor, hence there will + be a runtime overhead.
            -

            6.10 6.10 psb_spfree — Frees a sparse matrix

            @@ -1811,27 +1860,27 @@ call psb_spfree(a, desc_a, info)

            Type:

            Type:

            Synchronous.

            On Entry

            On Entry

            a

            a

            the matrix to be freed.
            Scope:local
            local
            Type:required
            required
            Intent: inout.
            inout.
            Specified as: a structured data of type psb_type.

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            On Return

            On Return

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            -

            6.11 6.11 psb_sprn — Reinit sparse matrix structure for psblas routines.

            @@ -1894,27 +1943,27 @@ call psb_sprn(a, decsc_a, info, clear)

            Type:

            Type:

            Synchronous.

            On Entry

            On Entry

            a

            a

            the matrix to be reinitialized.
            Scope:local
            local
            Type:required
            required
            Intent: inout.
            inout.
            Specified as: a structured data of type psb_type.

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            clear

            clear

            Choose whether to zero out matrix coefficients
            Scope:local.
            local.
            Type:optional.
            optional.
            Intent: in.
            in.
            Default: true.

            @@ -1958,24 +2007,24 @@ class="newline" />Default: true.

        On Return

        On Return

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. @@ -1983,7 +2032,7 @@ class="cmbx-12">Notes -

          6.12 6.12 psb_geall — Allocates a dense matrix

          @@ -1996,28 +2045,28 @@ call psb_geall(x, desc_a, info[, dupl, bldmod

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          desc_a

          desc_a

          The communication descriptor.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a variable of type psb

          n

          n

          The number of columns of the dense matrix to be allocated.
          Scope: local
          local
          Type: optional
          optional
          Intent: in.
          in.
          Specified as: Integer scalar, default 1. It is not a valid argument if x is a +class="zplmr7m-">x is a rank-1 array.

          lb

          lb

          The lower bound for the column index range of the dense matrix to be allocated.
          Scope: local
          local
          Type: optional
          optional
          Intent: in.
          in.
          Specified as: Integer scalar, default 1. It is not a valid argument if x is a +class="zplmr7m-">x is a rank-1 array. @@ -2061,15 +2110,15 @@ class="cmmi-10">x is a

          dupl

          dupl

          How to handle duplicate coefficients.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: integer, possible values: psb_dupl_ovwrt_, psb_dupl_add_; @@ -2078,17 +2127,17 @@ class="cmtt-10">psb_dupl_err_ has no effect.

          bldmode

          bldmode

          Whether to keep track of matrix entries that do not belong to the current process.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          Specified as: +class="pplb7t-">in.
          Specified as: an integer value psb_matbld_noremote_, psb_matbld_remote_. Default: @@ -2098,21 +2147,21 @@ class="cmtt-10">psb_matbld_noremote_.

          On Return

          On Return

          x

          x

          The dense matrix to be allocated.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          Specified as: a rank one or two array with the ALLOCATABLE attribute or an object of type

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. @@ -2148,7 +2197,7 @@ class="cmtt-10">psb_matbld_remote_ is likely to cause a -

            6.13 6.13 psb_geins — Dense matrix insertion routine

            @@ -2161,59 +2210,61 @@ call psb_geins(m, irw, val, x, desc_a, 

            Type:

            Type:

            Asynchronous.

            On Entry

            On Entry

            m

            m

            Number of rows in val to be inserted.
            val to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer value.

            irw

            irw

            Indices of the rows to be inserted. Specifically, row i of val will be +class="zplmr7m-">i of val will be inserted into the local row corresponding to the global row index irw(i). +class="zplmr7m-">irw(i). Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array.

            val

            val

            the dense submatrix to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a rank 1 or 2 array. Specified as: an integer value. @@ -2221,16 +2272,16 @@ class="newline" />Specified as: a rank 1 or 2 array. Specified as: an integer va

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            local

            local

            Whether the entries in the index vector irw, are already in local numbering.
            Scope:local.
            local.
            Type:optional.
            optional.
            Specified as: a logical value; default: .false..

            @@ -2255,21 +2306,21 @@ class="cmtt-10">.false..

            On Return

            On Return

            x

            x

            the output dense matrix.
            Scope: local
            local
            Type: required
            required
            Intent: inout.
            inout.
            Specified as: a rank one or two array or an object of type

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            Notes +class="pplb7t-x-x-120">Notes @@ -2303,12 +2354,12 @@ class="cmbx-12">Notes

          2. -

            Duplicate entries are either overwritten or added, there is no provision for - raising an error condition.

          +

          Duplicate entries are either overwritten or added, there is no provision + for raising an error condition.

        -

        6.14 6.14 psb_geasb — Assembly a dense matrix

        @@ -2321,28 +2372,28 @@ call psb_geasb(x, desc_a, info, mold)

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        desc_a

        desc_a

        The communication descriptor.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a variable of type psb

        mold

        mold

        The desired dynamic type for the internal vector storage.
        Scope: local.
        local.
        Type: optional.
        optional.
        Intent: in.
        in.
        Specified as: an object of a class derived from
        psb_base_vect_type; this is only allowed when x is of type x is of type psb_T_type.

        On Return

        On Return

        x

        x

        The dense matrix to be assembled.
        Scope: local
        local
        Type: required
        required
        Intent: inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an +class="pplb7t-">inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an object of type psb

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. -

          On entry to this routine the descriptor must be in the assembled state, - i.e.

          On entry to this routine the descriptor must be in the assembled state, i.e. + psb_cdasb must already have been called.

        2. psb_cdasb must already have been called.

          If the bldmode=psb_matbld_remote_ value was specified at allocation time, contributions defined on the current process but belonging to a - remote process will be handled accordingly. This is most likely to occur in - finite element applications, with dupl=psb_dupl_add_.

        -

        6.15 6.15 psb_gefree — Frees a dense matrix

        @@ -2451,28 +2502,28 @@ call psb_gefree(x, desc_a, info)

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        x

        x

        The dense matrix to be freed.
        Scope: local
        local
        Type: required
        required
        Intent: inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an +class="pplb7t-">inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an object of type psb

        desc_a

        desc_a

        The communication descriptor.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a variable of type
        psb

        On Return

        On Return

        @@ -2512,20 +2563,20 @@ class="description">

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.16 6.16 psb_gelp — Applies a left permutation to a dense matrix

        @@ -2538,61 +2589,61 @@ call psb_gelp(trans, iperm, x, info)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        trans

        trans

        A character that specifies whether to permute A or AT.
        A or AT.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a single character with value ’N’ for A or ’T’ for AT.
        A or ’T’ for AT.

        iperm

        iperm

        An integer array containing permutation information.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: an integer one-dimensional array.

        x

        x

        The dense matrix to be permuted.
        Scope: local
        local
        Type: required
        required
        Intent: inout.
        inout.
        Specified as: a one or two dimensional array.

        @@ -2602,26 +2653,26 @@ class="newline" />

        On Return

        On Return

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.17 6.17 psb_glob_to_loc — Global to local indices convertion

        @@ -2635,42 +2686,42 @@ call psb_glob_to_loc(x, desc_a, info, iact,owned)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        x

        x

        An integer vector of indices to be converted.
        Scope: local
        local
        Type: required
        required
        Intent: in, inout.
        in, inout.
        Specified as: a rank one integer array.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        iact

        iact

        specifies action to be taken in case of range errors. Scope: global
        global
        Type: optional
        optional
        Intent: in.
        in.
        Specified as: a character variable Ignore, Warning or Ignore.

        owned

        owned

        Specfies valid range of input Scope: global
        global
        Type: optional
        optional
        Intent: in.
        in.
        If true, then only indices strictly owned by the current process are - considered valid, if false then halo indices are also accepted. Default: false.

        + considered valid, if false then halo indices are also accepted. Default: + false.

        On Return

        On Return

        x

        x
        -

        If y is not present, then x is overwritten with the translated integer indices. - Scope: global

        If y is not present, then x is overwritten with the translated integer + indices. Scope: global
        Type: required
        required
        Intent: inout.
        inout.
        Specified as: a rank one integer array.

        y

        y

        If y is present, then y is overwritten with the translated integer indices, +class="zplmr7m-">y is present, then y is overwritten with the translated integer indices, and x is left unchanged. Scope: global
        x is left unchanged. Scope: global
        Type: optional
        optional
        Intent: out.
        out.
        Specified as: a rank one integer array.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. -

          If an input index is out of range, then the corresponding output index is - set to a negative number; +

          If an input index is out of range, then the corresponding output index is + set to a negative number;

        2. -

          The default Ignore means that the negative output is the only action +

          The default Ignore means that the negative output is the only action taken on an out-of-range input.

        -

        6.18 6.18 psb_loc_to_glob — Local to global indices conversion

        @@ -2792,42 +2844,42 @@ call psb_loc_to_glob(x, desc_a, info, iact)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        x

        x

        An integer vector of indices to be converted.
        Scope: local
        local
        Type: required
        required
        Intent: in, inout.
        in, inout.
        Specified as: a rank one integer array.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        iact

        iact

        specifies action to be taken in case of range errors. Scope: global
        global
        Type: optional
        optional
        Intent: in.
        in.
        Specified as: a character variable Ignore, Warning or Ignore.

        On Return

        On Return

        x

        x
        -

        If y is not present, then x is overwritten with the translated integer indices. - Scope: global

        If y is not present, then x is overwritten with the translated integer + indices. Scope: global
        Type: required
        required
        Intent: inout.
        inout.
        Specified as: a rank one integer array.

        y

        y
        -

        If y is not present, then y is overwritten with the translated integer indices, - and x is left unchanged. Scope: global

        If y is not present, then y is overwritten with the translated integer + indices, and x is left unchanged. Scope: global
        Type: optional
        optional
        Intent: out.
        out.
        Specified as: a rank one integer array.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.19 6.19 psb_is_owned —

        @@ -2919,42 +2971,42 @@ call psb_is_owned(x, desc_a)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        x

        x

        Integer index.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a scalar integer.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        On Return

        On Return

        Function value

        Function value

        A logical mask which is true if x is owned by the current process Scope: +class="zplmr7m-">x is owned by the current process Scope: local
        local
        Type: required
        required
        Intent: out.
        out.

        Notes +class="pplb7t-x-x-120">Notes

        1. @@ -2995,7 +3047,7 @@ class="cmtt-10">.true. value for an index that is strictly -

          6.20 6.20 psb_owned_index —

          @@ -3008,42 +3060,42 @@ call psb_owned_index(y, x, desc_a, info)

          Type:

          Type:

          Asynchronous.

          On Entry

          On Entry

          x

          x

          Integer indices.
          Scope: local
          local
          Type: required
          required
          Intent: in, inout.
          in, inout.
          Specified as: a scalar or a rank one integer array.

          desc_a

          desc_a

          the communication descriptor.
          Scope:local.
          local.
          Type:required.
          required.
          Intent: in.
          in.
          Specified as: a structured data of type psb_type.

          iact

          iact

          specifies action to be taken in case of range errors. Scope: global
          global
          Type: optional
          optional
          Intent: in.
          in.
          Specified as: a character variable Ignore, Warning or Ignore.

          On Return

          On Return

          y

          y

          A logical mask which is true for all corresponding entries of x that are +class="zplmr7m-">x that are owned by the current process Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          Specified as: a scalar or rank one logical array.

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. -

            This routine returns a .true. value for those indices that are strictly +

            This routine returns a .true. value for those indices that are strictly owned by the current process, excluding the halo indices

          -

          6.21 6.21 psb_is_local —

          @@ -3126,42 +3178,42 @@ call psb_is_local(x, desc_a)

          Type:

          Type:

          Asynchronous.

          On Entry

          On Entry

          x

          x

          Integer index.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a scalar integer.

          desc_a

          desc_a

          the communication descriptor.
          Scope:local.
          local.
          Type:required.
          required.
          Intent: in.
          in.
          Specified as: a structured data of type psb_type.

          On Return

          On Return

          Function value

          Function value

          A logical mask which is true if x is local to the current process Scope: +class="zplmr7m-">x is local to the current process Scope: local
          local
          Type: required
          required
          Intent: out.
          out.

          Notes +class="pplb7t-x-x-120">Notes

          1. @@ -3202,7 +3254,7 @@ class="cmtt-10">.true. value for an index that is local to -

            6.22 6.22 psb_local_index —

            @@ -3215,42 +3267,42 @@ call psb_local_index(y, x, desc_a, info)

            Type:

            Type:

            Asynchronous.

            On Entry

            On Entry

            x

            x

            Integer indices.
            Scope: local
            local
            Type: required
            required
            Intent: in, inout.
            in, inout.
            Specified as: a scalar or a rank one integer array.

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            iact

            iact

            specifies action to be taken in case of range errors. Scope: global
            global
            Type: optional
            optional
            Intent: in.
            in.
            Specified as: a character variable Ignore, Warning or Ignore.

            On Return

            On Return

            y

            y

            A logical mask which is true for all corresponding entries of x that are +class="zplmr7m-">x that are local to the current process Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            Specified as: a scalar or rank one logical array.

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            Notes +class="pplb7t-x-x-120">Notes

            1. @@ -3320,7 +3372,7 @@ class="cmtt-10">.true. value for those indices that are loc -

              6.23 6.23 psb_get_boundary — Extract list of boundary elements

              @@ -3333,27 +3385,27 @@ call psb_get_boundary(bndel, desc, info)

              Type:

              Type:

              Asynchronous.

              On Entry

              On Entry

              desc

              desc

              the communication descriptor.
              Scope:local.
              local.
              Type:required.
              required.
              Intent: in.
              in.
              Specified as: a structured data of type psb_type.

              On Return

              On Return

              bndel

              bndel

              The list of boundary elements on the calling process, in local numbering.
              Scope: local
              local
              Type: required
              required
              Intent: out.
              out.
              Specified as: a rank one array with the ALLOCATABLE attribute, of type integer.

              info

              info

              Error code.
              Scope: local
              local
              Type: required
              required
              Intent: out.
              out.
              An integer value; 0 means no error has been detected.

              Notes +class="pplb7t-x-x-120">Notes

              1. If there are no boundary elements (i.e., if the local part of the connectivity - graph is self-contained) the output vector is set to the “not allocated” + graph is self-contained) the output vector is set to the “not allocated” state.

              2. bndel will be exactly equal to the nu -

                6.24 6.24 psb_get_overlap — Extract list of overlap elements

                @@ -3427,27 +3479,27 @@ call psb_get_overlap(ovrel, desc, info)

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                desc

                desc

                the communication descriptor.
                Scope:local.
                local.
                Type:required.
                required.
                Intent: in.
                in.
                Specified as: a structured data of type psb_type.

                On Return

                On Return

                ovrel

                ovrel

                The list of overlap elements on the calling process, in local numbering.
                Scope: local
                local
                Type: required
                required
                Intent: out.
                out.
                Specified as: a rank one array with the ALLOCATABLE attribute, of type integer.

                info

                info

                Error code.
                Scope: local
                local
                Type: required
                required
                Intent: out.
                out.
                An integer value; 0 means no error has been detected.

                Notes +class="pplb7t-x-x-120">Notes

                1. @@ -3507,7 +3559,7 @@ class="cmtt-10">ovrel will be exactly equal to the number o -

                  6.25 6.25 psb_sp_getrow — Extract row(s) from a sparse matrix

                  @@ -3521,41 +3573,41 @@ call psb_sp_getrow(row, a, nz, ia, ja, 

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  row

                  row

                  The (first) row to be extracted.
                  Scope:local
                  local
                  Type:required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer > 0. +class="zplmr7m-">> 0.

                  a

                  a

                  the matrix from which to get rows.
                  Scope:local
                  local
                  Type:required
                  required
                  Intent: in.
                  in.
                  Specified as: a structured data of type psb_type.

                  append

                  append

                  Whether to append or overwrite existing output.
                  Scope:local
                  local
                  Type:optional
                  optional
                  Intent: in.
                  in.
                  Specified as: a logical value default: false (overwrite). @@ -3580,123 +3632,124 @@ class="newline" />Specified as: a logical value default: false (overwrite).

                  nzin

                  nzin

                  Input size to be appended to.
                  Scope:local
                  local
                  Type:optional
                  optional
                  Intent: in.
                  in.
                  Specified as: an integer > 0. When append is true, specifies how many +class="zplmr7m-">> 0. When append is true, specifies how many entries in the output vectors are already filled.

                  lrw

                  lrw

                  The last row to be extracted.
                  Scope:local
                  local
                  Type:optional
                  optional
                  Intent: in.
                  in.
                  Specified as: an integer > 0, default: row. +class="zplmr7m-">> 0, default: row.

                  On Return

                  On Return

                  nz

                  nz

                  the number of elements returned by this call.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: out.
                  out.
                  Returned as: an integer scalar.

                  ia

                  ia

                  the row indices.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: an integer array with the ALLOCATABLE attribute.

                  ja

                  ja

                  the column indices of the elements to be inserted.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: an integer array with the ALLOCATABLE attribute.

                  val

                  val

                  the elements to be inserted.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: a real array with the ALLOCATABLE attribute.

                  info

                  info

                  Error code.
                  Scope: local
                  local
                  Type: required
                  required
                  Intent: out.
                  out.
                  An integer value; 0 means no error has been detected.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. The output nz is always the size of the output generated by the current +class="zplmr7m-">nz is always the size of the output generated by the current call; thus, if append=.true., the total output size will be nzin + nz, with +class="zplmr7m-">nzin + nz, with the newly extracted coefficients stored in entries nzin+1:nzin+nz of the array arguments; @@ -3715,7 +3768,7 @@ class="cmtt-10">psb_loc_to_glob routine on the output.

                  2. -

                    6.26 6.26 psb_sizeof — Memory occupation

                    This function computes the memory occupation of a PSBLAS object. @@ -3731,28 +3784,28 @@ isz = psb_sizeof(prec)

                    Type:

                    Type:

                    Asynchronous.

                    On Entry

                    On Entry

                    a

                    a

                    A sparse matrix A.
                    A.
                    Scope: local
                    local
                    Type: required
                    required
                    Intent: in.
                    in.
                    Specified as: a structured data of type psb_type.

                    desc_a

                    desc_a

                    Communication descriptor.
                    Scope: local
                    local
                    Type: required
                    required
                    Intent: in.
                    in.
                    Specified as: a structured data of type psb_type.

                    prec

                    prec

                    Scope: local
                    local
                    Type: required
                    required
                    Intent: in.
                    in.
                    Specified as: a preconditioner data structure psb_type.

                    On Return

                    On Return

                    Function value

                    Function value

                    The memory occupation of the object specified in the calling sequence, in bytes.
                    Scope: local
                    local
                    Returned as: an integer(psb_long_int_k_) number.

                    -

                    6.27 6.27 Sorting utilities —

                    psb_msort — Sorting by the Merge-sort algorithm +class="pplb7t-x-x-120">psb_msort — Sorting by the Merge-sort algorithm

                    psb_qsort — Sorting by the Quicksort algorithm +class="pplb7t-x-x-120">psb_qsort — Sorting by the Quicksort algorithm

                    psb_hsort — Sorting by the Heapsort algorithm +class="pplb7t-x-x-120">psb_hsort — Sorting by the Heapsort algorithm @@ -3836,57 +3889,57 @@ call psb_hsort(x,ix,dir,flag)

                    These serial routines sort a sequence X into ascending or descending order. The +class="zplmr7m-">X into ascending or descending order. The argument meaning is identical for the three calls; the only difference is the algorithm used to accomplish the task (see Usage Notes below).

                    Type:

                    Type:

                    Asynchronous.

                    On Entry

                    On Entry

                    x

                    x

                    The sequence to be sorted.
                    Type:required.
                    required.
                    Specified as: an integer, real or complex array of rank 1.

                    ix

                    ix

                    A vector of indices.
                    Type:optional.
                    optional.
                    Specified as: an integer array of (at least) the same size as X. +class="zplmr7m-">X.

                    dir

                    dir

                    The desired ordering.
                    Type:optional.
                    optional.
                    Specified as: an integer value:

                    Integer and real data:

                    Integer and real data:

                    psb_sort_up_, psb_sort_down_, psb_sort_up_, psb_sort_down_, psb_asort_up_, psb_asort_down_; default psb_sort_up_.

                    Complex data:

                    Complex data:

                    psb_lsort_up_, psb_lsort_down_, psb_lsort_up_, psb_lsort_down_, psb_asort_up_, psb_asort_down_; default psb_lsort_up_.

                    flag

                    flag

                    Whether to keep the original values in IX.
                    IX.
                    Type:optional.
                    optional.
                    Specified as: an integer value psb_sort_ovw_idx_ or psb_sort_keep_idx_; @@ -3925,31 +3978,31 @@ class="cmtt-10">psb_sort_ovw_idx_.

                    On Return

                    On Return

                    x

                    x

                    The sequence of values, in the chosen ordering.
                    Type:required.
                    required.
                    Specified as: an integer, real or complex array of rank 1.

                    ix

                    ix

                    A vector of indices.
                    Type: Optional
                    Optional
                    An integer array of rank 1, whose entries are moved to the same position as the corresponding entries in x.

                    +class="zplmr7m-">x.

                    Notes +class="pplb7t-x-x-120">Notes

                    1. @@ -3967,85 +4020,104 @@ class="cmbx-12">Notes
                    2. -

                      The routines return the items in the chosen ordering; the output difference - is the handling of ties (i.e. items with an equal value) in the original input. - With the merge-sort algorithm ties are preserved in the same relative - order as they had in the original sequence, while this is not guaranteed for - quicksort or heapsort; +

                      The routines return the items in the chosen ordering; the output + difference is the handling of ties (i.e. items with an equal value) in the + original input. With the merge-sort algorithm ties are preserved in the + same relative order as they had in the original sequence, while this is not + guaranteed for quicksort or heapsort;

                    3. If flag = psb_sort_ovw_idx_ then the entries in ix(1 : n) where n is the size +class="zplmr7m-">flag = psb_sort_ovw_idx_ then the entries in ix(1 : n) where n is the size of x are initialized to ix(i) i; thus, upon return from the subroutine, +class="zplmr7m-">x are initialized to ix(i) i; thus, upon return from the subroutine, for each index i we have in ix(i) the position that the item x(i) occupied +class="zplmr7m-">i we have in ix(i) the position that the item x(i) occupied in the original data sequence;

                    4. If flag = psb_sort_keep_idx_ the routine will assume that the entries in +class="zplmr7m-">flag = psb_sort_keep_idx_ the routine will assume that the entries in ix(:) have already been initialized by the user; +class="zplmr7m-">ix(:) have already been initialized by the user;

                    5. The three sorting algorithms have a similar O(nlog n) expected running time; +class="zplmr7m-">O(n log n) expected running time; in the average case quicksort will be the fastest and merge-sort the slowest. However note that:

                      1. -

                        The worst case running time for quicksort is O(n2); the algorithm - implemented here follows the well-known median-of-three heuristics, - but the worst case may still apply; +

                        The worst case running time + for quicksort is O(n2); the algorithm implemented here follows the + well-known median-of-three heuristics, but the worst case may still + apply;

                      2. The worst case running time for merge-sort and heap-sort is O(nlog n) as the average case; +class="zplmr7m-">O(n log n) as the average case;

                      3. The merge-sort algorithm is implemented to take advantage of subsequences that may be already in the desired ordering prior to the subroutine call; this situation is relatively common when dealing - with groups of indices of sparse matrix entries, thus merge-sort is the - preferred choice when a sorting is needed by other routines in the - library.

                      + with groups of indices of sparse matrix entries, thus merge-sort is + the preferred choice when a sorting is needed by other routines in + the library.
                  diff --git a/docs/html/userhtmlse7.html b/docs/html/userhtmlse7.html index 6e245159..04c4c5dc 100644 --- a/docs/html/userhtmlse7.html +++ b/docs/html/userhtmlse7.html @@ -16,12 +16,12 @@ href="userhtmlse6.html" >prev] [prev-tail] [tail] [up]

                  -

                  7 7 Parallel environment routines

                  -

                  7.1 7.1 psb_init — Initializes PSBLAS parallel environment

                  @@ -35,61 +35,63 @@ parallel machine.

                  Type:

                  Type:

                  Synchronous.

                  On Entry

                  On Entry

                  np

                  np

                  Number of processes in the PSBLAS virtual parallel machine.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value.  Default: use all available processes.

                  basectxt

                  basectxt

                  the initial communication context. The new context will be defined from the processes participating in the initial one.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value.  Default: use MPI_COMM_WORLD.

                  ids

                  ids
                  -

                  Identities of the processes to use for the new context; the argument is +

                  Identities of the processes to use for the new context; the argument is ignored when np is not specified. This allows the processes in the new environment to be in an order different from the original one.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  Specified as: an integer array.  Default: use the indices (0np - 1).

                  +class="pplb7t-">in.
                  Specified as: an integer array.  Default: use the indices (0np- 1). @@ -97,29 +99,29 @@ class="cmsy-10">- 1).

                  On Return

                  On Return

                  ctxt

                  ctxt
                  -

                  the communication context identifying the virtual parallel machine, type - psb_ctxt_type. Note that this is always a duplicate of

                  the communication context identifying the virtual parallel machine, + type psb_ctxt_type. Note that this is always a duplicate of basectxt, so that library communications are completely separated from other communication operations.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: out.
                  out.
                  Specified as: an integer variable.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. @@ -128,12 +130,12 @@ class="cmbx-12">Notes
                  2. It is an error to specify a value for np greater than the number of processes +class="zplmr7m-">np greater than the number of processes available in the underlying base parallel environment.

                  -

                  7.2 7.2 psb_info — Return information about PSBLAS parallel environment

                  @@ -147,82 +149,82 @@ defining a virtual parallel machine.

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  ctxt

                  ctxt

                  the communication context identifying the virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: in.
                  in.
                  Specified as: an integer variable.

                  On Return

                  On Return

                  iam

                  iam

                  Identifier of current process in the PSBLAS virtual parallel machine.
                  Scope: local.
                  local.
                  Type: required.
                  required.
                  Intent: out.
                  out.
                  Specified as: an integer value. -1 iam np - 1  +class="zplmr7y-">-1 iam np-

                  np

                  np

                  Number of processes in the PSBLAS virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: out.
                  out.
                  Specified as: an integer variable.  

                  Notes +class="pplb7t-x-x-120">Notes

                  1. -

                    For processes in the virtual parallel machine the identifier will satisfy +

                    For processes in the virtual parallel machine the identifier will satisfy 0 iam np - 1; +class="zplmr7y-">≤ iam np- 1;

                  2. @@ -230,15 +232,16 @@ class="cmsy-10">- 1; class="cmtt-10">psb_init a number of processes less than the total available in the parallel execution environment, the remaining processes will have on return iam = -1; the only call involving iam = -1; the only call involving ctxt that any such process may execute is to psb_exit.
                  -

                  7.3 7.3 psb_exit — Exit from PSBLAS parallel environment

                  @@ -252,53 +255,54 @@ call psb_exit(ctxt,close)

                  Type:

                  Type:

                  Synchronous.

                  On Entry

                  On Entry

                  ctxt

                  ctxt

                  the communication context identifying the virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: in.
                  in.
                  Specified as: an integer variable.

                  close

                  close
                  -

                  Whether to close all data structures related to the virtual parallel machine, - besides those associated with ctxt.

                  Whether to close all data structures related to the virtual parallel + machine, besides those associated with ctxt.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: a logical variable, default value: true.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. -

                    This routine may be called even if a previous call to psb_info has returned - with iam = -1; indeed, it it is the only routine that may be called with - argument

                    This routine may be called even if a previous call to psb_info has + returned with iam = -1; indeed, it it is the only routine that may be + called with argument ctxt in this situation. @@ -315,15 +319,16 @@ class="cmtt-10">MPI_Finalize, class="enumerate" id="x12-108006x3">

                    If the user whishes to use multiple communication contexts in the same program, or to enter and exit multiple times into the parallel - environment, this routine may be called to selectively close the contexts + environment, this routine may be called to selectively close the + contexts with close=.false., while on the last call it should be called with close=.false., while on the last call it should be called with - close=.true. to shutdown in a clean way the entire parallel environment.

                  +class="cmtt-10">close=.true. to shutdown in a clean way the entire parallel + environment.
                -

                7.4 7.4 psb_get_mpi_comm — Get the MPI communicator

                @@ -337,57 +342,57 @@ context

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                On Return

                On Return

                Function value

                Function value

                The MPI communicator associated with the PSBLAS virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: out.
                out.

                Notes The subroutine version Notes The subroutine version psb_get_mpicomm is still available but is deprecated. -

                7.5 7.5 psb_get_mpi_rank — Get the MPI rank

                @@ -397,81 +402,81 @@ rank = psb_get_mpi_rank(ctxt, id)

                This function returns the MPI rank of the PSBLAS process id +class="zplmr7m-">id

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                id

                id

                Identifier of a process in the PSBLAS virtual parallel machine.
                Scope: local.
                local.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer value. 0 id np -

                +class="zplmr7y-">≤ id np-

                On Return

                On Return

                Funciton value

                Funciton value

                The MPI rank associated with the PSBLAS process id.
                id.
                Scope: local.
                local.
                Type: required.
                required.
                Intent: out.
                out.

                Notes The subroutine version Notes The subroutine version psb_get_rank is still available but is deprecated. -

                7.6 7.6 psb_wtime — Wall clock timing

                @@ -485,19 +490,19 @@ on the underlying parallel environment implementation.

                Type:

                Type:

                Asynchronous.

                On Exit

                On Exit

                Function value

                Function value

                the elapsed time in seconds.
                Returned as: a real(psb_dpk_) variable.

                -

                7.7 7.7 psb_barrier — Sinchronization point parallel environment

                @@ -519,32 +524,32 @@ virtual machine.

                Type:

                Type:

                Synchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                -

                7.8 7.8 psb_abort — Abort a computation

                @@ -557,32 +562,32 @@ call psb_abort(ctxt)

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                -

                7.9 7.9 psb_bcast — Broadcast data

                @@ -596,80 +601,82 @@ communication library.

                Type:

                Type:

                Synchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                dat

                dat

                On the root process, the data to be broadcast.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: inout.
                inout.
                Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical variable, which may be - a scalar or rank 1 array.  Type, kind, rank and size must agree on all + a scalar or rank 1 array.  Type, kind, rank and size must agree on all processes.

                root

                root

                Root process holding data to be broadcast.
                Scope: global.
                global.
                Type: optional.
                optional.
                Intent: in.
                in.
                Specified as: an integer value 0 <= root <= np - 1, default 0   +class="zplmr7m-"><= root <= np- 1, default 0  

                mode

                mode

                Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                Scope: global.
                global.
                Type: optional.
                optional.
                Intent: in.
                in.
                Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -678,15 +685,15 @@ class="newline" />

                request

                request

                A request variable to check for operation completion.
                Scope: local.
                local.
                Type: optional.
                optional.
                Intent: inout.
                inout.
                If mode does not specify synchronous completion, then this variable must be present.

                @@ -694,41 +701,41 @@ class="cmtt-10">mode does not specify synchronous completio

                On Return

                On Return

                dat

                dat

                On all processes other than root, the broadcasted data.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: inout.
                inout.
                Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical scalar.  Type, kind, rank and size must agree on all processes.

                request

                request

                A request variable to check for operation completion.
                Scope: local.
                local.
                Type: optional.
                optional.
                Intent: inout.
                inout.
                If mode does not specify synchronous completion, then this variable must be present.

                Notes +class="pplb7t-x-x-120">Notes

                1. @@ -756,7 +763,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-114006x3">

                  When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                  @@ -771,7 +778,7 @@ class="cmti-10">must not be -

                  7.10 7.10 psb_sum — Global sum

                  @@ -785,80 +792,83 @@ communication library.

                  Type:

                  Type:

                  Synchronous.

                  On Entry

                  On Entry

                  ctxt

                  ctxt

                  the communication context identifying the virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: in.
                  in.
                  Specified as: an integer variable.

                  dat

                  dat

                  The local contribution to the global sum.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: inout.
                  Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                  Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                  root

                  root

                  Process to hold the final sum, or -1 to make it available on all processes.
                  -1 to make it available on all processes.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value -1 <= root <= np - 1, default -1.   +class="zplmr7y-">-1 <= root <= np- 1, default -1.  

                  mode

                  mode

                  Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -867,15 +877,15 @@ class="newline" />

                  request

                  request

                  A request variable to check for operation completion.
                  Scope: local.
                  local.
                  Type: optional.
                  optional.
                  Intent: inout.
                  inout.
                  If mode does not specify synchronous completion, then this variable must be present.

                  @@ -883,41 +893,41 @@ class="cmtt-10">mode does not specify synchronous completio

                  On Return

                  On Return

                  dat

                  dat

                  On destination process(es), the result of the sum operation.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array.
                  Type, kind, rank and size must agree on all processes.

                  request

                  request

                  A request variable to check for operation completion.
                  Scope: local.
                  local.
                  Type: optional.
                  optional.
                  Intent: inout.
                  inout.
                  If mode does not specify synchronous completion, then this variable must be present.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. @@ -945,7 +955,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-115006x3">

                    When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                    @@ -960,7 +970,7 @@ class="cmti-10">must not be -

                    7.11 7.11 psb_max — Global maximum

                    @@ -974,62 +984,64 @@ underlying communication library.

                    Type:

                    Type:

                    Synchronous.

                    On Entry

                    On Entry

                    ctxt

                    ctxt

                    the communication context identifying the virtual parallel machine.
                    Scope: global.
                    global.
                    Type: required.
                    required.
                    Intent: in.
                    in.
                    Specified as: an integer variable.

                    dat

                    dat

                    The local contribution to the global maximum.
                    Scope: local.
                    local.
                    Type: required.
                    required.
                    Intent: inout.
                    inout.
                    Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes.

                    root

                    root
                    -

                    Process to hold the final maximum, or -1 to make it available on all +

                    Process to hold the final maximum, or -1 to make it available on all processes.
                    Scope: global.
                    global.
                    Type: optional.
                    optional.
                    Intent: in.
                    in.
                    Specified as: an integer value -1 <= root <= np - 1, default -1.
                    -1 <= root <= np- 1, default -1.
                    @@ -1037,19 +1049,19 @@ class="newline" />

                    mode

                    mode

                    Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                    Scope: global.
                    global.
                    Type: optional.
                    optional.
                    Intent: in.
                    in.
                    Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1058,15 +1070,15 @@ class="newline" />

                    request

                    request

                    A request variable to check for operation completion.
                    Scope: local.
                    local.
                    Type: optional.
                    optional.
                    Intent: inout.
                    inout.
                    If mode does not specify synchronous completion, then this variable must be present.

                    @@ -1074,35 +1086,35 @@ class="cmtt-10">mode does not specify synchronous completio

                    On Return

                    On Return

                    dat

                    dat

                    On destination process(es), the result of the maximum operation.
                    Scope: global.
                    global.
                    Type: required.
                    required.
                    Intent: in.
                    in.
                    Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes.

                    request

                    request

                    A request variable to check for operation completion.
                    Scope: local.
                    local.
                    Type: optional.
                    optional.
                    Intent: inout.
                    inout.
                    If mode does not specify synchronous completion, then this variable must be present.

                    @@ -1110,7 +1122,7 @@ class="cmtt-10">mode does not specify synchronous completio

                    Notes +class="pplb7t-x-x-120">Notes

                    1. @@ -1138,7 +1150,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-116006x3">

                      When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                      @@ -1153,7 +1165,7 @@ class="cmti-10">must not be -

                      7.12 7.12 psb_min — Global minimum

                      @@ -1167,61 +1179,63 @@ underlying communication library.

                      Type:

                      Type:

                      Synchronous.

                      On Entry

                      On Entry

                      ctxt

                      ctxt

                      the communication context identifying the virtual parallel machine.
                      Scope: global.
                      global.
                      Type: required.
                      required.
                      Intent: in.
                      in.
                      Specified as: an integer variable.

                      dat

                      dat

                      The local contribution to the global minimum.
                      Scope: local.
                      local.
                      Type: required.
                      required.
                      Intent: inout.
                      inout.
                      Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes.

                      root

                      root

                      Process to hold the final value, or -1 to make it available on all processes.
                      -1 to make it available on all processes.
                      Scope: global.
                      global.
                      Type: optional.
                      optional.
                      Intent: in.
                      in.
                      Specified as: an integer value -1 <= root <= np - 1, default -1.
                      -1 <= root <= np- 1, default -1.
                      @@ -1229,19 +1243,19 @@ class="newline" />

                      mode

                      mode

                      Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                      Scope: global.
                      global.
                      Type: optional.
                      optional.
                      Intent: in.
                      in.
                      Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1250,15 +1264,15 @@ class="newline" />

                      request

                      request

                      A request variable to check for operation completion.
                      Scope: local.
                      local.
                      Type: optional.
                      optional.
                      Intent: inout.
                      inout.
                      If mode does not specify synchronous completion, then this variable must be present.

                      @@ -1266,41 +1280,41 @@ class="cmtt-10">mode does not specify synchronous completio

                      On Return

                      On Return

                      dat

                      dat

                      On destination process(es), the result of the minimum operation.
                      Scope: global.
                      global.
                      Type: required.
                      required.
                      Intent: inout.
                      inout.
                      Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.
                      Type, kind, rank and size must agree on all processes.

                      request

                      request

                      A request variable to check for operation completion.
                      Scope: local.
                      local.
                      Type: optional.
                      optional.
                      Intent: inout.
                      inout.
                      If mode does not specify synchronous completion, then this variable must be present.

                      Notes +class="pplb7t-x-x-120">Notes

                      1. @@ -1328,7 +1342,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-117006x3">

                        When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                        @@ -1343,7 +1357,7 @@ class="cmti-10">must not be -

                        7.13 7.13 psb_amx — Global maximum absolute value

                        @@ -1352,66 +1366,69 @@ class="cmti-10">must not be call psb_amx(ctxt, dat [, root, mode, request])

                        -

                        This subroutine implements a maximum absolute value reduction operation based -on the underlying communication library. +

                        This subroutine implements a maximum absolute value reduction operation +based on the underlying communication library.

                        Type:

                        Type:

                        Synchronous.

                        On Entry

                        On Entry

                        ctxt

                        ctxt

                        the communication context identifying the virtual parallel machine.
                        Scope: global.
                        global.
                        Type: required.
                        required.
                        Intent: in.
                        in.
                        Specified as: an integer variable.

                        dat

                        dat

                        The local contribution to the global maximum.
                        Scope: local.
                        local.
                        Type: required.
                        required.
                        Intent: inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                        root

                        root

                        Process to hold the final value, or -1 to make it available on all processes.
                        -1 to make it available on all processes.
                        Scope: global.
                        global.
                        Type: optional.
                        optional.
                        Intent: in.
                        in.
                        Specified as: an integer value -1 <= root <= np - 1, default -1.
                        -1 <= root <= np- 1, default -1.
                        @@ -1419,19 +1436,19 @@ class="newline" />

                        mode

                        mode

                        Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                        Scope: global.
                        global.
                        Type: optional.
                        optional.
                        Intent: in.
                        in.
                        Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1440,15 +1457,15 @@ class="newline" />

                        request

                        request

                        A request variable to check for operation completion.
                        Scope: local.
                        local.
                        Type: optional.
                        optional.
                        Intent: inout.
                        inout.
                        If mode does not specify synchronous completion, then this variable must be present.

                        @@ -1456,43 +1473,41 @@ class="cmtt-10">mode does not specify synchronous completio

                        On Return

                        On Return

                        dat

                        dat

                        On destination process(es), the result of the maximum operation.
                        Scope: global.
                        global.
                        Type: required.
                        required.
                        Intent: inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                        request

                        request

                        A request variable to check for operation completion.
                        Scope: local.
                        local.
                        Type: optional.
                        optional.
                        Intent: inout.
                        inout.
                        If mode does not specify synchronous completion, then this variable must be present.

                        - - -

                        Notes +class="pplb7t-x-x-120">Notes

                        1. @@ -1520,7 +1535,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-118006x3">

                          When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                          @@ -1535,7 +1550,7 @@ class="cmti-10">must not be -

                          7.14 7.14 psb_amn — Global minimum absolute value

                          @@ -1544,66 +1559,69 @@ class="cmti-10">must not be call psb_amn(ctxt, dat [, root, mode, request])

                          -

                          This subroutine implements a minimum absolute value reduction operation based -on the underlying communication library. +

                          This subroutine implements a minimum absolute value reduction operation +based on the underlying communication library.

                          Type:

                          Type:

                          Synchronous.

                          On Entry

                          On Entry

                          ctxt

                          ctxt

                          the communication context identifying the virtual parallel machine.
                          Scope: global.
                          global.
                          Type: required.
                          required.
                          Intent: in.
                          in.
                          Specified as: an integer variable.

                          dat

                          dat

                          The local contribution to the global minimum.
                          Scope: local.
                          local.
                          Type: required.
                          required.
                          Intent: inout.
                          Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                          Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                          root

                          root

                          Process to hold the final value, or -1 to make it available on all processes.
                          -1 to make it available on all processes.
                          Scope: global.
                          global.
                          Type: optional.
                          optional.
                          Intent: in.
                          in.
                          Specified as: an integer value -1 <= root <= np - 1, default -1.
                          -1 <= root <= np- 1, default -1.
                          @@ -1611,19 +1629,19 @@ class="newline" />

                          mode

                          mode

                          Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                          Scope: global.
                          global.
                          Type: optional.
                          optional.
                          Intent: in.
                          in.
                          Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1632,15 +1650,15 @@ class="newline" />

                          request

                          request

                          A request variable to check for operation completion.
                          Scope: local.
                          local.
                          Type: optional.
                          optional.
                          Intent: inout.
                          inout.
                          If mode does not specify synchronous completion, then this variable must be present.

                          @@ -1648,41 +1666,41 @@ class="cmtt-10">mode does not specify synchronous completio

                          On Return

                          On Return

                          dat

                          dat

                          On destination process(es), the result of the minimum operation.
                          Scope: global.
                          global.
                          Type: required.
                          required.
                          Intent: inout.
                          inout.
                          Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array.
                          Type, kind, rank and size must agree on all processes.

                          request

                          request

                          A request variable to check for operation completion.
                          Scope: local.
                          local.
                          Type: optional.
                          optional.
                          Intent: inout.
                          inout.
                          If mode does not specify synchronous completion, then this variable must be present.

                          Notes +class="pplb7t-x-x-120">Notes

                          1. @@ -1710,7 +1728,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-119006x3">

                            When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                            @@ -1725,7 +1743,7 @@ class="cmti-10">must not be -

                            7.15 7.15 psb_nrm2 — Global 2-norm reduction

                            @@ -1739,61 +1757,63 @@ underlying communication library.

                            Type:

                            Type:

                            Synchronous.

                            On Entry

                            On Entry

                            ctxt

                            ctxt

                            the communication context identifying the virtual parallel machine.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: in.
                            in.
                            Specified as: an integer variable.

                            dat

                            dat

                            The local contribution to the global minimum.
                            Scope: local.
                            local.
                            Type: required.
                            required.
                            Intent: inout.
                            Specified as: a real variable, which may be a scalar, or a rank 1 array. +class="pplb7t-">inout.
                            Specified as: a real variable, which may be a scalar, or a rank 1 array.  Kind, rank and size must agree on all processes.

                            root

                            root

                            Process to hold the final value, or -1 to make it available on all processes.
                            -1 to make it available on all processes.
                            Scope: global.
                            global.
                            Type: optional.
                            optional.
                            Intent: in.
                            in.
                            Specified as: an integer value -1 <= root <= np - 1, default -1.
                            -1 <= root <= np- 1, default -1.
                            @@ -1801,19 +1821,19 @@ class="newline" />

                            mode

                            mode

                            Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                            Scope: global.
                            global.
                            Type: optional.
                            optional.
                            Intent: in.
                            in.
                            Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1822,15 +1842,15 @@ class="newline" />

                            request

                            request

                            A request variable to check for operation completion.
                            Scope: local.
                            local.
                            Type: optional.
                            optional.
                            Intent: inout.
                            inout.
                            If mode does not specify synchronous completion, then this variable must be present.

                            @@ -1838,35 +1858,35 @@ class="cmtt-10">mode does not specify synchronous completio

                            On Return

                            On Return

                            dat

                            dat

                            On destination process(es), the result of the 2-norm reduction.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: inout.
                            inout.
                            Specified as: a real variable, which may be a scalar, or a rank 1 array.
                            Kind, rank and size must agree on all processes.

                            request

                            request

                            A request variable to check for operation completion.
                            Scope: local.
                            local.
                            Type: optional.
                            optional.
                            Intent: inout.
                            inout.
                            If mode does not specify synchronous completion, then this variable must be present.

                            @@ -1874,7 +1894,7 @@ class="cmtt-10">mode does not specify synchronous completio

                            Notes +class="pplb7t-x-x-120">Notes

                            1. @@ -1884,17 +1904,17 @@ class="cmbx-12">Notes
                            2. Denoting by dati the value of the variable dat on process i, the output res +class="zplmr7m-">dati the value of the variable dat on process i, the output res is equivalent to the computation of

                                    ∘ ∑------
-res =      dat2i,
-         i
+src=

                              with care taken to avoid unnecessary overflow.

                            3. @@ -1924,7 +1944,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-120010x5">

                              When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls: @@ -1942,7 +1962,7 @@ class="cmti-10">must not be -

                              7.16 7.16 psb_snd — Send data

                              @@ -1955,62 +1975,64 @@ call psb_snd(ctxt, dat, dst, m)

                              Type:

                              Type:

                              Synchronous: see usage notes.

                              On Entry

                              On Entry

                              ctxt

                              ctxt

                              the communication context identifying the virtual parallel machine.
                              Scope: global.
                              global.
                              Type: required.
                              required.
                              Intent: in.
                              in.
                              Specified as: an integer variable.

                              dat

                              dat

                              The data to be sent.
                              Scope: local.
                              local.
                              Type: required.
                              required.
                              Intent: in.
                              in.
                              Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical scalar.  Type, kind and rank must agree on sender and receiver process; if m is not specified, size +class="zplmr7m-">m is not specified, size must agree as well.

                              dst

                              dst

                              Destination process.
                              Scope: global.
                              global.
                              Type: required.
                              required.
                              Intent: in.
                              in.
                              Specified as: an integer value 0 <= dst <= np - 1.
                              <= dst <= np- 1.
                              @@ -2018,45 +2040,51 @@ class="newline" />

                              m

                              m

                              Number of rows.
                              Scope: global.
                              global.
                              Type: Optional.
                              Optional.
                              Intent: in.
                              in.
                              Specified as: an integer value 0 <= m <= size(dat,1).
                              <= m <= size(dat, 1).
                              When dat is a rank 2 array, specifies the number of rows to be sent +class="zplmr7m-">dat is a rank 2 array, specifies the number of rows to be sent independently of the leading dimension size(dat,1); must have the same +class="zplmr7m-">size(dat, 1); must have the same value on sending and receiving processes.

                              On Return

                              On Return

                              Notes +class="pplb7t-x-x-120">Notes

                              1. This subroutine implies a synchronization, but only between the calling process and the destination process dst.

                              +class="zplmr7m-">dst.
                            -

                            7.17 7.17 psb_rcv — Receive data

                            @@ -2069,68 +2097,76 @@ call psb_rcv(ctxt, dat, src, m)

                            Type:

                            Type:

                            Synchronous: see usage notes.

                            On Entry

                            On Entry

                            ctxt

                            ctxt

                            the communication context identifying the virtual parallel machine.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: in.
                            in.
                            Specified as: an integer variable.

                            src

                            src

                            Source process.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: in.
                            in.
                            Specified as: an integer value 0 <= src <= np - 1.
                            <= src <= np- 1.

                            m

                            m

                            Number of rows.
                            Scope: global.
                            global.
                            Type: Optional.
                            Optional.
                            Intent: in.
                            in.
                            Specified as: an integer value 0 <= m <= size(dat,1).
                            <= m <= size(dat, 1).
                            When dat is a rank 2 array, specifies the number of rows to be sent +class="zplmr7m-">dat is a rank 2 array, specifies the number of rows to be sent independently of the leading dimension size(dat,1); must have the same +class="zplmr7m-">size(dat, 1); must have the same value on sending and receiving processes.

                            @@ -2139,34 +2175,34 @@ class="cmmi-10">dat,1); must have the same

                            On Return

                            On Return

                            dat

                            dat

                            The data to be received.
                            Scope: local.
                            local.
                            Type: required.
                            required.
                            Intent: inout.
                            inout.
                            Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical scalar.  Type, kind and rank must agree on sender and receiver process; if m is not specified, size +class="zplmr7m-">m is not specified, size must agree as well.

                            Notes +class="pplb7t-x-x-120">Notes

                            1. This subroutine implies a synchronization, but only between the calling process and the source process src.

                            +class="zplmr7m-">src.
                          diff --git a/docs/html/userhtmlse8.html b/docs/html/userhtmlse8.html index 2e6b2ff0..447f8627 100644 --- a/docs/html/userhtmlse8.html +++ b/docs/html/userhtmlse8.html @@ -16,21 +16,21 @@ href="userhtmlse7.html" >prev] [prev-tail] [tail] [up]

                          -

                          8 8 Error handling

                          The PSBLAS library error handling policy has been completely rewritten in version 2.0. The idea behind the design of this new error handling strategy is to keep error messages on a stack allowing the user to trace back up to the point where the first error message has been generated. Every routine in the PSBLAS-2.0 library has, as last non-optional argument, an integer info variable; whenever, inside the routine, an -error is detected, this variable is set to a value corresponding to a specific -error code. Then this error code is also pushed on the error stack and then -either control is returned to the caller routine or the execution is aborted, -depending on the users choice. At the time when the execution is aborted, -an error message is printed on standard output with a level of verbosity -than can be chosen by the user. If the execution is not aborted, then, the -caller routine checks the value returned in the info variable; whenever, inside the +routine, an error is detected, this variable is set to a value corresponding to a +specific error code. Then this error code is also pushed on the error stack +and then either control is returned to the caller routine or the execution is +aborted, depending on the users choice. At the time when the execution is +aborted, an error message is printed on standard output with a level of +verbosity than can be chosen by the user. If the execution is not aborted, then, +the caller routine checks the value returned in the info variable and, if not zero, an error condition is raised. This process continues on all the levels of nested calls until the level where the user decides to abort the program @@ -100,7 +100,6 @@ class="cmtt-9">      info=      call psb_errpush      goto 9999 @@ -178,7 +175,6 @@ class="cmtt-9">      info=      call psb_errpush      goto 9999 @@ -246,7 +240,6 @@ class="cmtt-9">then class="cmtt-9">     call psb_error) class="cmtt-9">     return else class="cmtt-9">     return -

                      +


                  Listing 6:
                  )

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  err_c

                  err_c

                  the error code
                  Scope: local
                  local
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer.

                  r_name

                  r_name

                  the soutine where the error has been caught.
                  Scope: local
                  local
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: a string.

                  i_err

                  i_err

                  addional info for error code
                  Scope: local
                  local
                  Type: optional
                  optional
                  Specified as: an integer array

                  a_err

                  a_err

                  addional info for error code
                  Scope: local
                  local
                  Type: optional
                  optional
                  Specified as: a string.

                  -

                  8.2 8.2 psb_error — Prints the error stack content and aborts execution

                  )

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  icontxt

                  icontxt

                  the communication context.
                  Scope: global
                  global
                  Type: optional
                  optional
                  Intent: in.
                  in.
                  Specified as: an integer.

                  -

                  8.3 8.3 psb_set_errverbosity — Sets the verbosity of error messages

                  )

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  v

                  v

                  the verbosity level
                  Scope: global
                  global
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer.

                  -

                  8.4 8.4 psb_set_erraction — Set the type of action to be taken upon error condition

                  @@ -537,28 +528,28 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  err_act

                  err_act

                  the type of action.
                  Scope: global
                  global
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer. Possible values: psb_act_ret, psb_act_abort.

                  diff --git a/docs/html/userhtmlse9.html b/docs/html/userhtmlse9.html index f0fa9516..fba09a3a 100644 --- a/docs/html/userhtmlse9.html +++ b/docs/html/userhtmlse9.html @@ -16,7 +16,7 @@ href="userhtmlse8.html" >prev] [prev-tail] [tail] [up]

                  -

                  9 9 Utilities

                  We have some utilities available for input and output of sparse matrices; the interfaces to these routines are available in the module psb_util_mod. -

                  9.1 9.1 hb_read — Read a sparse matrix from a file in the Harwell–Boeing format

                  @@ -50,53 +50,53 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  filename

                  filename

                  The name of the file to be read.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  a

                  a

                  the sparse matrix read from file.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  b

                  b

                  Rigth hand side(s).
                  Type: Optional
                  Optional
                  An array of type real or complex, rank 2 and having the ALLOCATABLE attribute; will be allocated and filled in if the input file contains a right hand side, otherwise will be left in the UNALLOCATED state.

                  mtitle

                  mtitle

                  Matrix title.
                  Type: Optional
                  Optional
                  A charachter variable of length 72 holding a copy of the matrix title as specified by the Harwell-Boeing format and contained in the input file.

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.2 9.2 hb_write — Write a sparse matrix to a file in the Harwell–Boeing format

                  @@ -166,23 +166,23 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  a

                  a

                  the sparse matrix to be written.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  b

                  b

                  Rigth hand side.
                  Type: Optional
                  Optional
                  An array of type real or complex, rank 1 and having the ALLOCATABLE attribute; will be allocated and filled in if the input file contains a right hand side.

                  filename

                  filename

                  The name of the file to be written to.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default output unit 6 (i.e. standard output in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -. @@ -228,43 +228,43 @@ class="cmtt-10">-.

                  key

                  key

                  Matrix key.
                  Type: Optional
                  Optional
                  A charachter variable of length 8 holding the matrix key as specified by the Harwell-Boeing format and to be written to file.

                  mtitle

                  mtitle

                  Matrix title.
                  Type: Optional
                  Optional
                  A charachter variable of length 72 holding the matrix title as specified by the Harwell-Boeing format and to be written to file.

                  On Return

                  On Return

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.3 9.3 mm_mat_read — Read a sparse matrix from a file in the MatrixMarket format

                  @@ -286,53 +286,53 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  filename

                  filename

                  The name of the file to be read.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  a

                  a

                  the sparse matrix read from file.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.4 9.4 mm_array_read — Read a dense array from a file in the MatrixMarket format

                  @@ -375,54 +375,54 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  filename

                  filename

                  The name of the file to be read.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  b

                  b

                  Rigth hand side(s).
                  Type: required
                  An array of type real or complex, rank 1 or 2 and having the +class="pplb7t-">required
                  An array of type real or complex, rank 1 or 2 and having the @@ -431,24 +431,24 @@ href="userhtmlse3.html#vdata">psb_T_vect_type, of - type real or complex.
                  _type, of type + real or complex.
                  Will be allocated and filled in if the input file contains a right hand side, otherwise will be left in the UNALLOCATED state.

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.5 9.5 mm_mat_write — Write a sparse matrix to a file in the MatrixMarket format

                  @@ -472,23 +472,23 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  a

                  a

                  the sparse matrix to be written.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  mtitle

                  mtitle

                  Matrix title.
                  Type: required
                  required
                  A charachter variable holding a descriptive title for the matrix to be written to file.

                  filename

                  filename

                  The name of the file to be written to.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default output unit 6 (i.e. standard output in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  @@ -534,27 +534,27 @@ class="cmtt-10">-.

                  On Return

                  On Return

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  Notes +class="pplb7t-x-x-120">Notes

                  If this function is called on a matrix a on a distributed communicator only the local part is written in output. To get a single MatrixMarket file with the whole matrix when appropriate, e.g. for debugging purposes, one could gather the whole +class="pplri7t-">gather the whole matrix on a single rank and then write it. Consider the following example for a double precision matrix +class="pplri7t-">double precision matrix

                  @@ -581,7 +581,7 @@ psb_i_t psb_c_<s,d,c,z>global_mat_write(ah,cdh); -

                  9.6 9.6 mm_array_write — Write a dense array from a file in the MatrixMarket format

                  @@ -605,23 +605,23 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  b

                  b

                  Rigth hand side(s).
                  Type: required
                  required
                  An array of type real or complex, rank 1 or 2, or an object of type

                  filename

                  filename

                  The name of the file to be written.

                  vtitle

                  vtitle

                  Matrix title.
                  Type: required
                  A charachter variable holding a descriptive title for the vector to be written - to file. Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">required
                  A charachter variable holding a descriptive title for the vector to be + written to file. Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  Notes +class="pplb7t-x-x-120">Notes

                  If this function is called on a vector v on a distributed communicator only the local part is written in output. To get a single MatrixMarket file with the whole vector when appropriate, e.g. for debugging purposes, one could gather the whole +class="pplri7t-">gather the whole vector on a single rank and then write it. Consider the following example for a double +class="pplri7t-">double precision vector

                  diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf index f5ba78e8..3779ddf4 100644 --- a/docs/psblas-3.9.pdf +++ b/docs/psblas-3.9.pdf @@ -447,7 +447,7 @@ endobj /Type /ObjStm /N 100 /First 928 -/Length 16554 +/Length 16628 >> stream 403 0 407 48 408 376 411 424 412 766 415 814 416 1030 419 1078 420 1241 423 1283 @@ -457,9 +457,9 @@ stream 484 6009 487 6057 488 6218 491 6266 492 6442 495 6484 496 6593 499 6640 500 6994 503 7041 504 7435 507 7482 508 7853 511 7900 512 8366 515 8408 516 8489 519 8536 520 8990 523 9037 524 9483 527 9530 528 9986 531 10033 532 10489 535 10536 536 10992 539 11039 540 11505 543 11548 -544 11707 547 11755 548 11991 551 12039 552 12260 555 12308 556 12584 559 12632 560 12977 563 13025 -564 13271 567 13319 568 13525 571 13568 572 13697 575 13745 576 14035 579 14083 580 14423 583 14466 -584 14557 587 14605 588 14762 591 14810 592 15002 595 15050 596 15204 599 15252 600 15411 603 15454 +544 11707 547 11755 548 11991 551 12039 552 12280 555 12328 556 12549 559 12597 560 12873 563 12921 +564 13266 567 13314 568 13560 571 13608 572 13814 575 13857 576 13986 579 14034 580 14324 583 14372 +584 14712 587 14755 588 14846 591 14894 592 15051 595 15099 596 15291 599 15339 600 15493 603 15541 % 403 0 obj << /S /GoTo /D (subsection.6.24) >> % 407 0 obj @@ -607,63 +607,63 @@ stream % 548 0 obj << /S /GoTo /D (subsection.10.2) >> % 551 0 obj -(\376\377\0001\0000\000.\0002\000\040\000b\000u\000i\000l\000d\000\040\040\024\000\040\000B\000u\000i\000l\000d\000s\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0002\000\040\000S\000e\000t\000\040\040\024\000\040\000s\000e\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r\000\040\000p\000a\000r\000a\000m\000e\000t\000e\000r\000s) % 552 0 obj << /S /GoTo /D (subsection.10.3) >> % 555 0 obj -(\376\377\0001\0000\000.\0003\000\040\000a\000p\000p\000l\000y\000\040\040\024\000\040\000P\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r\000\040\000a\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n\000\040\000r\000o\000u\000t\000i\000n\000e) +(\376\377\0001\0000\000.\0003\000\040\000b\000u\000i\000l\000d\000\040\040\024\000\040\000B\000u\000i\000l\000d\000s\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 556 0 obj << /S /GoTo /D (subsection.10.4) >> % 559 0 obj -(\376\377\0001\0000\000.\0004\000\040\000d\000e\000s\000c\000r\000\040\040\024\000\040\000P\000r\000i\000n\000t\000s\000\040\000a\000\040\000d\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n\000\040\000o\000f\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0004\000\040\000a\000p\000p\000l\000y\000\040\040\024\000\040\000P\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r\000\040\000a\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n\000\040\000r\000o\000u\000t\000i\000n\000e) % 560 0 obj << /S /GoTo /D (subsection.10.5) >> % 563 0 obj -(\376\377\0001\0000\000.\0005\000\040\000c\000l\000o\000n\000e\000\040\040\024\000\040\000c\000l\000o\000n\000e\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0005\000\040\000d\000e\000s\000c\000r\000\040\040\024\000\040\000P\000r\000i\000n\000t\000s\000\040\000a\000\040\000d\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n\000\040\000o\000f\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 564 0 obj << /S /GoTo /D (subsection.10.6) >> % 567 0 obj -(\376\377\0001\0000\000.\0006\000\040\000f\000r\000e\000e\000\040\040\024\000\040\000F\000r\000e\000e\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0006\000\040\000c\000l\000o\000n\000e\000\040\040\024\000\040\000c\000l\000o\000n\000e\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 568 0 obj -<< /S /GoTo /D (section.11) >> +<< /S /GoTo /D (subsection.10.7) >> % 571 0 obj -(\376\377\0001\0001\000\040\000I\000t\000e\000r\000a\000t\000i\000v\000e\000\040\000M\000e\000t\000h\000o\000d\000s) +(\376\377\0001\0000\000.\0007\000\040\000f\000r\000e\000e\000\040\040\024\000\040\000F\000r\000e\000e\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 572 0 obj -<< /S /GoTo /D (subsection.11.1) >> +<< /S /GoTo /D (section.11) >> % 575 0 obj -(\376\377\0001\0001\000.\0001\000\040\000p\000s\000b\000\137\000k\000r\000y\000l\000o\000v\000\040\000\040\040\024\000\040\000K\000r\000y\000l\000o\000v\000\040\000M\000e\000t\000h\000o\000d\000s\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) +(\376\377\0001\0001\000\040\000I\000t\000e\000r\000a\000t\000i\000v\000e\000\040\000M\000e\000t\000h\000o\000d\000s) % 576 0 obj -<< /S /GoTo /D (subsection.11.2) >> +<< /S /GoTo /D (subsection.11.1) >> % 579 0 obj -(\376\377\0001\0001\000.\0002\000\040\000p\000s\000b\000\137\000r\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000\040\040\024\000\040\000R\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000I\000t\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) +(\376\377\0001\0001\000.\0001\000\040\000p\000s\000b\000\137\000k\000r\000y\000l\000o\000v\000\040\000\040\040\024\000\040\000K\000r\000y\000l\000o\000v\000\040\000M\000e\000t\000h\000o\000d\000s\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) % 580 0 obj -<< /S /GoTo /D (section.12) >> +<< /S /GoTo /D (subsection.11.2) >> % 583 0 obj -(\376\377\0001\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0001\000.\0002\000\040\000p\000s\000b\000\137\000r\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000\040\040\024\000\040\000R\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000I\000t\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) % 584 0 obj -<< /S /GoTo /D (subsection.12.1) >> +<< /S /GoTo /D (section.12) >> % 587 0 obj -(\376\377\0001\0002\000.\0001\000\040\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 588 0 obj -<< /S /GoTo /D (subsection.12.2) >> +<< /S /GoTo /D (subsection.12.1) >> % 591 0 obj -(\376\377\0001\0002\000.\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000'\000\040\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000s) +(\376\377\0001\0002\000.\0001\000\040\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 592 0 obj -<< /S /GoTo /D (subsection.12.3) >> +<< /S /GoTo /D (subsection.12.2) >> % 595 0 obj -(\376\377\0001\0002\000.\0003\000\040\000C\000P\000U\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000.\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000'\000\040\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000s) % 596 0 obj -<< /S /GoTo /D (subsection.12.4) >> +<< /S /GoTo /D (subsection.12.3) >> % 599 0 obj -(\376\377\0001\0002\000.\0004\000\040\000C\000U\000D\000A\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000.\0003\000\040\000C\000P\000U\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 600 0 obj -<< /S /GoTo /D (section.13) >> +<< /S /GoTo /D (subsection.12.4) >> % 603 0 obj -(\376\377\0001\0003\000\040\000C\000U\000D\000A\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000R\000o\000u\000t\000i\000n\000e\000s) +(\376\377\0001\0002\000.\0004\000\040\000C\000U\000D\000A\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) endstream endobj -666 0 obj +670 0 obj << /Length 729 >> @@ -674,14 +674,14 @@ stream 0 g 0 G 0 g 0 G BT -/F59 24.7871 Tf 169.511 626.367 Td [(PSBLAS)-250(3.9.0)-250(User)-55(')55(s)-250(guide)]TJ +/F75 24.7871 Tf 169.511 626.367 Td [(PSBLAS)-250(3.9.0)-250(User)-55(')55(s)-250(guide)]TJ ET q 1 0 0 1 125.3 609.739 cm 0 0 343.711 4.981 re f Q BT -/F60 14.3462 Tf 156.541 586.546 Td [(A)-250(r)18(efer)18(ence)-250(guide)-250(for)-250(the)-250(Parallel)-250(Sparse)-250(BLAS)-250(library)]TJ +/F78 14.3462 Tf 156.541 586.546 Td [(A)-250(r)18(efer)18(ence)-250(guide)-250(for)-250(the)-250(Parallel)-250(Sparse)-250(BLAS)-250(library)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -701,14 +701,14 @@ Q 0 g 0 G 1 0 0 1 -168.637 -345.042 cm BT -/F59 9.9626 Tf 365.51 263.977 Td [(by)-250(Salvatore)-250(Filippone)]TJ 14.396 -11.956 Td [(and)-250(Alfredo)-250(Buttari)]TJ/F62 9.9626 Tf 29.957 -11.955 Td [(Aug)-250(1st,)-250(2024)]TJ +/F75 9.9626 Tf 365.51 263.977 Td [(by)-250(Salvatore)-250(Filippone)]TJ 14.396 -11.956 Td [(and)-250(Alfredo)-250(Buttari)]TJ/F84 9.9626 Tf 29.957 -11.955 Td [(Aug)-250(1st,)-250(2024)]TJ 0 g 0 G 0 g 0 G ET endstream endobj -663 0 obj +667 0 obj << /Type /XObject /Subtype /Image @@ -716,14 +716,14 @@ endobj /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB -/SMask 673 0 R +/SMask 677 0 R /Length 921600 >> stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýûûûûûûûûûûûûúúúúúúøøø÷÷÷÷÷÷÷÷÷öööõõõõõõððððððððððððððððððíííùùùþþþÿÿÿÿÿÿþþþùùùæææäääááááááááááááááááááÝÝÝÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛÛÛÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÔÔÔÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌËËËÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÄÄĽ½½½½½½½½½½½½½½½½½ººº¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÿÿÿÿÿÿþþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿÿÿÿþþþøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüüÿÿÿÿÿÿþþþççç³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôþþþÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿûûû¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿþþþôôô´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøÿÿÿÿÿÿÿÿÿÿÿÿöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÿÿÿÿÿÿþþþÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿÿÿÿäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþúúú···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüüÿÿÿÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ôôôþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿÿÿÿÕÕÕ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿþþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿþþþøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÿÿÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿþþþççç³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿþþþûûû¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüüÿÿÿÿÿÿþþþôôô´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ôôôþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¼¼¼ýýýþþþÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööþþþÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿþþþÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···üüüûûýüüþýýþýýþüüþüüþüüþüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûýòòøòòøòòøòòøòñøòñøéèóäãñäãñäãñãâðâáïàßîÓÑçÓÑçÓÑçÓÑçÑÏæÑÏæÉÇâ¿Þ¿Þ¿Þûûýÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄýýþÑÎ棟ͣŸÍ£ŸÍ£ŸÍ£ŸÍ™”ȔŔŔŔŔŒŽÄ…€½…€½…€½…€½…€½…€½~x¹vpµvpµvpµvpµvpµvpµhb­f`¬f`¬f`¬f`¬f`¬b[ªWP¤WP¤WP¤WP¤WP¤WP¤LDžH@œH@œH@œH@œH@œF>›90”90”90”90”90”90”0') ‹) ‹) ‹) ‹) ‹) ‹„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•Æÿÿÿÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³õõõùùü7.“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰éèóýýþÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ’ŽÄƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ùùúîíö'ŠƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáüüýÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÞÞÞÿÿÿvpµƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB9˜üüýÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ûûüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿZS¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿üüþ½ºÛƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³òòòýýþA8˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉþþþŸ›ËƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùóòø,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒª¦ÑýýþÿÿÿÿÿÿÿÿÿÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿ|»ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žôôùþþÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµûûüãâ𠆃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€{ºÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…Ø×êüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üûýÌÊッƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVO¤ÿÿÿÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ïïïþþÿJBƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ²×ýýþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆþýþ«§Ñƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ4+‘÷÷ûþþþÿÿÿþþþððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³öö÷ùøû5,’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹†ÀÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ †àßîûûýÿÿÿÿÿÿþþþùùù¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³úúûêéô$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒaZ©ÿÿÿÿÿÿÿÿÿþþþÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿpj²ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¾¼ÜýýþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûýÖÔ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ:2•ûúýÿÿÿÿÿÿþþþììì³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëÿÿÿWP¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÆÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀýüþ·³Øƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰éèóýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ôôôüüý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌþþÿš•ÈƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáüüýÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùòñø+"ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB9˜üüýÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµûûüÞÝí…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççÿÿÿ_X¨ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½üüýÅÃàƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ñññþþþG?›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆþþþ¥¡Îƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š$Š,#+"$Š†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒª¦ÑýýþÿÿÿÿÿÿÿÿÿÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³÷÷÷ööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$ŠJC¤fa·~Ê—•Ù¨§äµ´í¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é«ªæ›ÜŠ‡ÐxtÃgb¸UO«B;Ÿ) ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žôôùþþÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÕÕÕÿÿÿˆƒ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ2*”gb¸š˜Ú··î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æÓvrÂYT¯=5›†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€{ºÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµúúûèçò#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒIB£‘ŽÔ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³²ë’Õlh¼H@¡#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…Ø×êüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ãããÿÿÿkd¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ;3™”’׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¶¶îlg»ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVO¤ÿÿÿÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººüüýÐÎ僃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„id¹¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtõ²×ýýþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííÿÿÿPH ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆŒÒ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ4+‘÷÷ûþþþÿÿÿþþþððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š—•Ù¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtˆÀÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³õõõûûý91”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ŒÒ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtà †àßîûûýÿÿÿÿÿÿþþþùùù¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎþþÿ”Ńƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒql¾¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃaZ©ÿÿÿÿÿÿÿÿÿþþþÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ùùúïîö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ<5›¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtþ¼ÜýýþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿwq¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ“‘Ö¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ:2•ûúýÿÿÿÿÿÿþþþîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ûúüÜÚì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC<Ÿ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÕÆÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿZS¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒʸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï£¢áŽ‹ÒyuÄni¼gb¸d_¶d_¶hc¸rm¿|É‘ŽÔª©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ%‰éèóýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿ýüþ¾»Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï•“×UO«*!Žƒƒƒƒƒƒƒƒƒƒƒƒ) G?¡d_¶~Ê©¨å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³òòòýýþB9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒIB£¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï©¨åF?¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„;3šid¹—•Ø··î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃÇÅáüüýÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉþþþ œËƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmi½¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç/&‘ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) \V°›™Û¸¸ï¸¸ï¸¸ïxtÃB9˜üüýÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùõõú/&ŽƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠˆÐ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïTN«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ;4š{wÅ°°êxtàœËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿƒ~¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ žÞ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­è†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰91˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµûûüäã𠆃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï”’׃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»ûûýÍË䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ‡¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï”’׃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ïïïþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì$Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒª¦ÑýýþÿÿÿÿÿÿÿÿÿÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆýýþ¬¨Òƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ´í¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïrnÀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žôôùþþÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³öööùøû5,’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¦¥ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïd_¶„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€{ºÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ’Õ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï—•ØMF¦…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…Ø×êüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ùùúíìõ&‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsoÀ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï©¨åzvÄLE¥&‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVO¤ÿÿÿÿÿÿÿÿÿÿÿÿááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒNH§¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïœÝ{wÅ[U°<5›†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ²×ýýþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûü×Õ鄃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´íš˜Û{wÅ[U¯:2™„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ4+‘÷÷ûþþþÿÿÿþþþððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëÿÿÿWP¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ€}ɸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ëŽ‹Òid¹D= †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹†ÀÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀüüý¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ;4š··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°ê}yÇE>¡„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ †àßîûûýÿÿÿÿÿÿþþþùùù¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³óóóüüý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„€Ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï©¨årnÀ1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒaZ©ÿÿÿÿÿÿÿÿÿþþþÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌþþÿš–Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ*!Ž¬«æ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··îƒÊ1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¾¼ÜýýþÿÿÿÿÿÿþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³øøùòñø+"ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@¡µµí¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ìoj½†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ:2•ûúýÿÿÿÿÿÿþþþîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿ~x¹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒUO¬¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï›Ü1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÆÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµúúüâàƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒLE¥°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«ç<5›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰éèóýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççÿÿÿ`Y©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3*“š˜Ú¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç4+”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒle¯ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½üüýÈÅჃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…`Z²­¬ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáüüýÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ñññþþþH@œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰hc¸¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB9˜üüýÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆýýþ¦¢Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„HA¢…‚̵´í¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œËþþþÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³÷÷÷ööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&ŒQJ¨{wÅ¥¤â¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ðï÷üüþÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿ‰„¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0(“YS®}yÆŸžß··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï«ªæ„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvqµÿÿÿÿÿÿÿÿÿÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµúúûéèó#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$ŠH@¡jeºŠÑ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï?7œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÐÎæüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿþþþýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿmf°ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…;3šb]´‘ŽÔ¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_µƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒPH¡ÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûûûûûûûûûûúúúúúúøøø÷÷÷÷÷÷÷÷÷õõõõõõõõõððððððððððððððððððíííëëëëëëëëëëëëëëëîîîÿÿÿÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµ½½½½½½½½½½½½½½½½½½ÇÇÇüüýÑÏ惃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ(`Z²¢¡à¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï„€Ëƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¦¢ÏÿÿÿçççááááááÝÝÝÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛÛÛÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÔÔÔÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌËËËÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÄÄĽ½½½½½½½½½½½½½½½½½»»»¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþØØØÎÎÎÒÒÒÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝßßßããããããããããããããããããèèèééééééééééééééééééïïïïïïïïïïïïïïïïïïñññóóóóóóóóóóóóóóóóóóööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷úúúúúúúúúúúúúúúúúúûûûüüüûûûúùûúùûúùûúúûüûüüûüûûýúúüúúüúúüûûüýüýýüýüûýüûýüûýüûýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaZ©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„`Z²²²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïš˜Úƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ-#üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿýüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýþóòøóòøóòøóòøòñøòñøêéóåäñåäñåäñãâðâáïâáïÕÓèÕÓèÕÓèÕÓèÒÐæÑÏæÌÊã¿Þ¿Þ¿Þ¿Þ¿Þ¿޶³Ø³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö°­Ô£ŸÍ£ŸÍ£ŸÍ£ŸÍ£ŸÍ£ŸÍš–ɔŔŔŔŔŔŅ€½…€½…€½…€½…€½…€½y¹vpµŠ„¿ýýþ²¯ÕƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒA:ž³²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïª©åƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿÿÿÿ‡¾WP¤WP¤WP¤WP¤WP¤WP¤OG H@œH@œH@œH@œH@œH@œ91”90”90”90”90”90”3*‘) ‹) ‹) ‹) ‹) ‹) ‹…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÄàÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒid¹¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³³ìƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿüüýÍË䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'Œ¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàßïþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿþþÿIAœƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–’Æÿÿÿ~x¹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒœ›Ý¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´íƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿýýþª¦Ðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëõõôù0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠÑ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯®éƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷ùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅþþþÿÿÿþþþùøü4+‘ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ§£ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMF¦MF¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–“׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¥¤âƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ˜”ÇÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï›™ÛLE¥„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…­¬ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰úùüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿýýþéèó$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¡ŸßZT¯ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒKD¤¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï|ȃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¹ÚÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ£ Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«çrm¿5,•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰£¡à¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïb]´ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿÿÿÿüüþÕÓ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒñð÷ðð÷+"Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï–”Ø^X±+"ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ)“‘Ö¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï?7œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒØÖéþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿVO¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿœ˜Êƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï–”Øid¹A9ž†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†^X±©©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\U¦ÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿýýþ¶³ØƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙØëýýþD<šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³²ë—”ØxtÃ\V°G?¡5,•#‰ƒƒƒƒƒ(>6›XR®ƒʯ®é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï|Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëôüüüººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿûûý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ûûýÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ë®­è±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïG?¡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|»ÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿþþþ˜“ǃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±­Õÿÿÿhb­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïœšÜƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …÷÷úöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿüüþññ÷*!Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùèçò%‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïLE¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ­ªÓÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿÿÿÿÿÿÿ{u¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒwqµÿÿÿ’ŽÄƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‹ˆÐƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(üüýîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿüüýßÝî…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒâáïûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¨§ä*!ŽƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÌÊäÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿÿÿÿ]V§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC:šüüýÁ¾Ýƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ë;3šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒKCžþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿüüýÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¼ºÛÿÿÿ^W¨ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êC<Ÿƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒäãðýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿþþÿG?›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰÷÷ûâáï!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\V°¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞ6.–ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsm³ÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþÿ¤ Îƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„¼ÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0(“d_¶—•Ø··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ítpÁ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒóòøùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿþþþööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçóøøû6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ-$`[³“‘Ö¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµµí„€Ë2*”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ›ËÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰G?¡lg»‘Ô²²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞjeº+"ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ(‹ûûüñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿýýþéèó#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…<4š`Z²wsÊѣ¢á¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î¢ ß|È\V°2*”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÁ¾ÝÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿÿÿÿjc®ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†2*”HA¢WQ­b]µmi½xtÃxtÃ}yÆ~ÊxtÃxtÃql¾fa·YS®KD¤6-•†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜þþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿüüýÏÍ僃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÛÚìþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿþþþPH ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëõõôù0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒb[ªÿÿÿÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅþþþÿÿÿÿÿÿýýþ°­Ôƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒîíõûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿûúý91”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŽ‰ÂÿÿÿÕÕÕ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿÿÿÿ’ŽÄƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡ùùüõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿþþÿîíö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¤ Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ´±ÖÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿÿÿÿÿÿÿvpµƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒñð÷îíö(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ5-’ýýýììì³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿÿÿÿüüþÛÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿœ˜ÊƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿÿÿÿZS¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÚØëýýþD<šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒSL¢þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿýýþ¾»Ûƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ6.–:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™:2™80˜0'’)„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ûûýÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿýýþA8˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¶¶î©©å•“×zvÄ`[³<4š…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±­Õÿÿÿhb­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒzt·ÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿþþÿŸ›Ëƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êˆ…ÏSLª#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùèçò%‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õõùøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿþþÿôôù/&Žƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì~{È3*“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒwqµÿÿÿ‘ăƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¥¡ÎÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿÿÿÿ‚}»ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î~{È'Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒâáïûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ûûüñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿýýþãâ𠆃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æJC£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC:šüüýÁ¾ÝƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïni¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ½ºÛÿÿÿ]V§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿüüþÎÌ䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï|É…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰÷÷ûâáï!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàÞîþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþJBƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï{wŃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„¼ÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿýýþ«§Ñƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒéèóøøû6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒðï÷úúú¸¸¸³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿùøü5,’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì5-–ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–‘ÆÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿÿÿÿŽ‰Âƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï•“׃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰úùüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿüüþêéô$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïG@¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒº·ÚÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿqk²ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï}yÇNH§NH§NH§NH§NH§NH§NH§NH§NH§UO«_Y²lh¼ŠÑ¯¯é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ80“ýýþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿüüýÖÔ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒ†UO«œÝ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï0'’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒììõõôù0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÖÔéþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿWP¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†rm¿¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ[T¦ÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿýýþ¸µÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmi¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŒ‰ÑƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒëêôüüüººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ“‘Ö¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°ê„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|»ÿÿÿ××׳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿÿÿÿþþþš•Èƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒA9¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï/&‘ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¥¡Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ø÷û÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿþþÿòòø+"Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïC<Ÿƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒñð÷îíö(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¬©ÒÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïSLªƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿœ˜Êƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&üüýïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿüüýßÝî…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒlh¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïYT¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÚØëýýþC;™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒËÉãÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¾¾¾þþþÿÿÿÿÿÿÿÿÿ_X¨ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ`[³¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ûûýÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒIAþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿüüýÆÄჃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒgb¸¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï]W±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ±­Õÿÿÿhb­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒãâðýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿþþÿH@œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒtpÁ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïVP¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …õõúèçò%‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒrl³ÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿÿÿÿýýþ¥¡Îƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–”ظ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïLE¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒxr¶ÿÿÿ‘ăƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒóòøùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿþþþööú0'ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&Œ¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï7/—ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒâáïûûý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ˜ÊÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿÿÿÿˆƒ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒni¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC:šüüýÁ¾Ýƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'Šúúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿýýþéèó#ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ6.–³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ½ºÛÿÿÿ]V§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÀ½ÝÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿÿÿÿÿÿÿle¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’§¦ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃ$‰ø÷ûâáï!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜þþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿüüýÐÎ惃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…XR®¯¯é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïHA¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„½ÿÿÿˆ‚¾ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÚÙëþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿÿÿÿPH ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒ"ˆC< jeº¦¥ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒéèóøøû6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ_X¨ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿýýþ³¯Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«ç¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à©¨å³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïmi¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸýýþ±®Õƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿúúü:2•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ë'ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÈÅáÿÿÿTM£ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŒ‡ÁÿÿÿÕÕÕ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿþþþ”Ńƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïc^µƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ùùüÛÚë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …ùùüõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿþþÿïîö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï—•Ø…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿ}w¸ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ²®ÕÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿÿÿÿwq¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æ/'’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒììõõôù0&ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ5-’ýýýîîî³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿüüþÜÚì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é<5›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^V¨þþþ¦¢ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÎæÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³åååþþþÿÿÿÿÿÿÿÿÿ[S¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç<5›ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþKDžƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒSL¢þþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿýýþ¾¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï—•Ø/'’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÓÑ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒæåñýýý»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿýýþB9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ëgb¸…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¤ Îÿÿÿsm³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3)7/“7/“7/“7/“7/“>6–SL¢SL¢–‘ÆÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççþþþÿÿÿÿÿÿþþÿ¡Ìƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì{wÅ,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒòñ÷ñð÷†¾„¼„¼„¼„¼„¼ˆÁ™•È™•È™•È™•È™•È™•Èª¦Ñ­©Ó­©Ó­©Ó­©Ó­©Ó±­Õ¾»Ü¾»Ü¾»Ü¾»Ü¾»Ü¾»ÜÈÆáÍËäÍËäÍËäÍËäÍËäÎÌåÚÙëÚÙëÚÙëÚÙëÚÙëÚÙëàÞîæäñæäñæäñæäñæäñæäñíìõïîöïîöïîöïîöïîöñð÷öõúöõúõôúôôùôôùôôù÷÷ûùùüùøûøøüøøüøøü÷÷ûüüýüüýûûýûûýûûýûûýýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÿÿÿþþÿôôù.%Žƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŸžßhc¸)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–’ÆþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöõúóòøóòøóòøòñøòñøïïöåäñåäñåäñåäñâáïâáïÛÙëÕÓèÕÓèÕÓèÓÑçÑÏæÑÏæ¿Þ¿Þ¿Þ¿Þ¿Þ¿޽ºÛ³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö§£Ï£ŸÍ£ŸÍ£ŸÍ£ŸÍ£ŸÍ¡Ì”ŔŔŔŔŔŋ†À…€½…€½…€½…€½…€½…€½vpµvpµvpµvpµ½ºÛÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþÿÿÿÿÿÿÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïª©å‡„Î`[³5-–ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒìëôôóù\U§WP¤WP¤WP¤TM£H@œH@œH@œH@œH@œH@œ@7—90”90”90”90”90”90”*!Œ) ‹) ‹) ‹) ‹) ‹$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒòò÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿ@7—ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï›™Û„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€Ë„€ËƒÊxtÃrnÀc^µUO«A9&Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…½ÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿýýþ¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …ööúäãð!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ®«Ôÿÿÿf`¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(úúüÍË䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââþþþÿÿÿÿÿÿÿÿÿ…€½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÍËäþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁÿÿÿÿÿÿþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒQI¡ýýþ­©ÒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ìììÿÿÿÿÿÿÿÿÿýýþ®«Óƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒåãñùøü6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒáàïþþþ¿¿¿³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsm³ÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB:˜þþþêêê³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´õõõþþþÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷íìõ'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸ÚÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ œÌÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡øøûõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúÿÿÿüüþòòø-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ)‹ùùü×Õ鄃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ~¼ÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßþþþÿÿÿÿÿÿþþÿ£ŸÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÂ¿ÞÿÿÿXQ¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜üüý¹¶ÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿÿÿÿüüýÒÐ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÜÛìüüý<4•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒf`­þþÿ›—Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ûúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññþþþÿÿÿÿÿÿüüþíìõ(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒííöòñø+"Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÅÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþš•Èƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠÂÿÿÿy¹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùÿÿÿÿÿÿÿÿÿüüýB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡÷öúáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒWQ¤þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿÿÿÿÿÿÿüüþÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒµ²×ÿÿÿaZ©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÍæÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüÿÿÿÿÿÿÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ7/“ûûýÈÅჃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääÿÿÿÿÿÿÿÿÿýýþèçò$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÒÐçþþþH@œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ£žÍÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÃÃÃþþþÿÿÿÿÿÿÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒTL£ýýþ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿûúý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòööú1(ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÍÍÍÿÿÿÿÿÿÿÿÿýýþ¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`[³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ}w¹ÿÿÿŠ…ÀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµöööÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùéèó$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ§£Ïÿÿÿmf°ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûûÿÿÿÿÿÿÿÿÿ…€½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ+!ŒúùüÕÓ脃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÇÅáÿÿÿQI¡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿýýþ®«ÓƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œýýþ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒáàïþþþ¿¿¿³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàßîûûý:2•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB:˜þþþêêê³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉÿÿÿÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®þþÿ–‘ƃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸ÚÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒðð÷ïîö'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡øøûõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿÿÿÿüüþòòø-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’Æÿÿÿys·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ~¼ÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿþþÿ£ŸÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰øøûÜÛì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒèçòýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿÿÿÿþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸Úÿÿÿ\T¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿüüýÒÐ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”üûýÅÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³æææþþþÿÿÿÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ×ÕéýýþB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹ûúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿüüþíìõ(‹ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\U¦þþþ¢žÌƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•ÅÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþÿÿÿÿÿÿþþþš•Èƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒëêôõõú0&ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÎÎÎÿÿÿÿÿÿÿÿÿüüýB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|»ÿÿÿ…€½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒWQ¤þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿüüþÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ …ööúåãñ!‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÍæÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ØØØÿÿÿÿÿÿÿÿÿÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ­ªÓÿÿÿga­ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûþþþÿÿÿýýþèçò$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ1(ûûýÎÌ䃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ£žÍÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââÿÿÿÿÿÿÿÿÿÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÌÊäþþÿOG ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁþþþÿÿÿÿÿÿûúý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒKCžýýþ¯«Óƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëþþþÿÿÿÿÿÿýýþ¹¶Ùƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒäãðùùü6-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsm³ÿÿÿ‘ŒÃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´õõõþþþÿÿÿÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒòñ÷ííõ'Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒž™Êÿÿÿtn´ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ(‹ùùü×Õ鄃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÞÞÞþþþÿÿÿÿÿÿýýþ®«ÓƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÁ¾ÝÿÿÿXQ¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒáàïþþþ¿¿¿³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ@8˜üüýº·ÚƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒB:˜þþþêêê³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèÿÿÿÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÛÙìüüþA8˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸ÚÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ_X¨þþþœ˜Êƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡øøûõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿüüþòòø-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒíìõòòø,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ0'’91˜A:žA9:2™3*“(ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ~¼ÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿÿÿÿÿÿÿþþÿ£ŸÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŽ‰ÂÿÿÿzºƒƒƒƒƒtpÁxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃni¼lg»d_¶]W±G?¡0(“…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&ŒxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃ[U°ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ>6›xtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃMF¦ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š\V°ƒÊ£¢á¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ì£¡àŽ‹ÒsoÀXR®;4š†ƒƒƒƒƒƒƒƒƒƒèçòýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿþþÿJCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡÷÷ûâáï †ƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï´³ìŠÑ`[³,#ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„̸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ+"~{ȳ²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³³ì‘Õlg» ‡ƒƒƒƒƒƒƒMEŸþþþæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿÿÿÿÿÿÿüüýÒÐ焃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ³°Öÿÿÿb[ªƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ìvrÂ) ƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‹´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï;3™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒWQ­¯®é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!ŽƒƒƒƒƒƒƒƒÆÄàÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿÿÿÿoi±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ5-’ûûýÇÅჃƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¨§ä80—ƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\V°¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïtpÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ`Z²¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!Žƒƒƒƒƒƒƒƒ* ‹ûúüóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääÿÿÿÿÿÿÿÿÿüüþíìõ'ŠƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæþþþIAœƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï­¬ç*!Žƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—”ظ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«æ†ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒTMª··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!Žƒƒƒƒƒƒƒƒƒ•ÅÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂÿÿÿÿÿÿÿÿÿþþþ™”ȃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒSL¢ýýþ©¥Ðƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï†ƒÍƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3*“¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïLE¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰ª©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!Žƒƒƒƒƒƒƒƒƒƒíìõûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííþþþÿÿÿÿÿÿüüýB:™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒçæòùøû4+‘ƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï0(“ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmi¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï†ƒÍƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjeº¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î«ªæ¢¡à®­è··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï*!ŽƒƒƒƒƒƒƒƒƒƒWQ¤þþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿÿÿÿÿÿÿüüþÄÂ߃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿ‹†Àƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï§¦ã0'’0'’0'’0'’0'’2*”C< `[³¥¤â¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïb]µƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„§¦ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì&ŒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒžÞ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïƒÊG@¢'Œƒƒƒƒƒ+"IB£fa·Œ‰Ñ³²ë¸¸ï¸¸ï¸¸ï¸¸ï*!ŽƒƒƒƒƒƒƒƒƒƒƒÐÍæÿÿÿÄÄij³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõÿÿÿÿÿÿÿÿÿÿÿÿe_¬ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ôôùéèó$ˆƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒ#‰š˜Û¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï„̃ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï^X±ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&‘¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïOI¨ƒƒƒƒƒƒƒƒƒƒƒƒ!‡KD¤~Ê´³ì¸¸ï*!Žƒƒƒƒƒƒƒƒƒƒƒ1(üüýððð´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿÿÿÿÿÿÿýýþèçò$ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¥¡Îÿÿÿnh±ƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¢ ß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–ÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒG@¢¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&Œa\´$Šƒƒƒƒƒƒƒƒƒƒƒƒ£žÍÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹ûûûÿÿÿÿÿÿÿÿÿŠÂƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ* ‹úùüÕÓ脃ƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ†··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŸžßƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA:ž³³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï5,•ƒƒƒƒƒƒƒƒƒƒƒƒƒUO¬¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïfa·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒññ÷úúú¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿûúý;3•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÆÄàÿÿÿRJ¡ƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ„¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–Ùƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒVP¬¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¡Ÿßƒ„€Ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk½ƒƒƒƒƒƒƒƒƒƒƒƒƒ`[³¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïmi½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒjc®ÿÿÿßßß³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿýýþ¹¶ÙƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒH@œýýþµ²×ƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ4+”¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï~ʃƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‘ŽÔ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïkfºƒNH§¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¨§ä„ƒƒƒƒƒƒƒƒƒƒƒƒXR®¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¥¤â"ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÙ×êþþþÁÁÁ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêÿÿÿÿÿÿÿÿÿÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒßÞîûûý;3•ƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ~zǸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïWQ­ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ.%‘··ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï4+”ƒ†°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïG?¡ƒƒƒƒƒƒƒƒƒƒƒƒKD¤¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïœšÜJC¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”ýýýííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÇÇÇÿÿÿÿÿÿÿÿÿüüýáàï †ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒib­þþÿ—’ǃƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒ4+”~{ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï«ªæ"ˆƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒgb¸¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïœšÜƒƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï~ʃƒƒƒƒƒƒƒƒƒƒƒ) ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï§¦ã}yÇTMª1)“ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¯«ÔÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´òòòþþþÿÿÿÿÿÿÿÿÿ„¼ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒïî÷ñð÷*!Œƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì˜–Ù˜–Ù˜–Ù˜–Ù˜–Ù žÞ´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïRK©ƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¢ ß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_¶ƒƒƒIB£¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï³³ì#‰ƒƒƒƒƒƒƒƒƒƒƒƒœ›Ý¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯®éÓpk½LE¥&Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…õôùøøø···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÒÒÒÿÿÿÿÿÿþþþööú2)ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–‘Æÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïa\´ƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ?7œ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï0'’ƒƒƒ†­¬ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïXR®ƒƒƒƒƒƒƒƒƒƒƒƒWQ­¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ïœ›Ýkfº2*”ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒvpµÿÿÿÛÛÛ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿýýþ®«Óƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$‰øøûÝÜì…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–ÙA9ƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒxtø¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï–“׃ƒƒƒƒ{wŸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï“‘Öƒƒƒƒƒƒƒƒƒƒƒƒ…š˜Ú¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‘ÕA9ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒàßïþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹¹¹½½½½½½½½½½½½½½½ÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿSK¢ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¹·Ùÿÿÿ\U§ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´íxtÃ6.–ƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†®­è¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï`Z²ƒƒƒƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï/'’ƒƒƒƒƒƒƒƒƒƒƒƒ.%‘«ªæ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï„€Ë#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒC;™þþþëëëÇÇÇÇÇÇÇÇÇÉÉÉÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÓÓÓÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÙÙÙÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜááááááááááááááááááãããææææææææææææææææææêêêëëëëëëëëëëëëëëëìììððððððñññðððððððððôôôõõõööö÷÷÷÷÷÷÷÷÷öööúúúúúúûûûûûûûûûûûûýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüýÚÙë…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ91”üüý¿Þƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··îws†ƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒPJ¨¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î*!Žƒƒƒƒƒ„©¨å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïid¹ƒƒƒƒƒƒƒƒƒƒƒƒƒ/&‘›Ü¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¡Ÿß) ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÌÊãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿþþþýýýýýýýýýýýýÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzt·ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&7/“7/“7/“7/“7/“;2•SL¢SL¢SL¢SL¢SL¢SL¢`Y©mf°mf°mf°mf°mf°mf°‚}¼„¼„¼„¼„¼„¼‹…¿™•È™•È™•È™•È™•È™•È§£Ï­©Ó­©Ó­©Ó­©Ó­©Ó®ªÓ¾»ÜðïöýýþC;™ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‘Ô†ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠˆÐ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‘ŽÔƒƒƒƒƒƒƒvr¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï£¢áƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†f`¶°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï•“׆ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ+"ŒòòøþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüþøøûÍËäÙØêÚÙëÚÙëÚÙëÚÙëÚÙëÞÝíæäñæäñæäñæäñæäñæäñììõïîöïîöïîöïîöïîöðï÷öõúöõúöõùööúööúööúøøûúúüúúüûûýûûýûûýûûýýýþýýþýýþýýýýýýýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµµí¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à©¨å¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï}yǃƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) µµí¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïYT¯ƒƒƒƒƒƒƒ?7œ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&‹`[³œÝ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïZT¯ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ™Êþþþÿÿÿÿÿÿÿÿÿûûûûûûûûûûûûúúúúúú÷÷÷÷÷÷÷÷÷÷÷÷õõõõõõóóóñññññññññðððððððððìììëëëëëëëëëëëëëëëêêêææææææææææææææææææâââáááááááááááááááàààÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÙÙÙÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÒÒÒÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÐÐÐÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÉÉÉÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÀÀÀ½½½½½½½½½½½½½½½½½½¹¹¹¸¸¸¸¸¸ÎÎÎÿÿÿµ±×ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒ ‡F?¡Œ‰Ð¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒb]´¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´í&Œƒƒƒƒƒƒƒ„¦¥ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï{wŃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0(“YT¯„€Ë¨§ä¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ=5–ûûýÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒoj½¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‡„΃ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ›Ü¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŠˆÐƒƒƒƒƒƒƒƒƒql¾¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¯¯é ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ,#OI¨tpÁ¡Ÿß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï5,•ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¼¹Úýýþÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒ…£¡à¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´í ‡ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ80˜¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŠ‡Ðd_¶d_¶d_¶d_¶d_¶d_¶d_¶d_¶d_¶|xƸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïSL©ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’c^µ©¨å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïYT¯ƒƒƒƒƒƒƒƒƒƒƒƒƒUN£ÿÿÿÿÿÿÿÿÿÿÿÿÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒrm¿¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï>6›ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒsoÀ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŒ‰Ñƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ$Š•“׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïjeºƒƒƒƒƒƒƒƒƒƒƒƒ„ÔÒèüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒ_Y²¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïPI¨ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ª©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¶¶î*!Žƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ4+”¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïvrƒƒƒƒƒƒƒƒƒƒƒƒuo´ÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ¨¤Ðƒƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒd_¶¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïZT¯ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒJC¤¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïd_¶ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ«ªæ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïql¾ƒƒƒƒƒƒƒƒƒƒƒ%‰ëêôüüþÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒƒ€}ɸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïOI¨ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„̸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïžÞƒƒƒƒƒƒƒ) b]´"ˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¬«ç¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïe_µƒƒƒƒƒƒƒƒƒƒƒ‘ÄÿÿÿÿÿÿÿÿÿÿÿÿÊÊʳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒƒ) °°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9žƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‹´³ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï;3šƒƒƒƒƒƒ0'’¸¸ï­¬çjeº&Œƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ:2™¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïWQ­ƒƒƒƒƒƒƒƒƒƒ3*‘øøûÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£áƒƒƒƒƒƒƒƒƒ)–“׸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··î) ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïˆ…΃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ[U°¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïvrƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï´³ì†ƒÍMF¦†ƒƒƒƒƒƒƒƒƒƒƒ)›Ü¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï4+”ƒƒƒƒƒƒƒƒƒƒ¯¬Óýýþÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúòñ÷ƒƒƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï§¦ã0'’0'’0'’0'’0'’1)“;3™NH§vr¯®é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï”’׃ƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ë¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à¢¡à›Üƒƒƒƒ—”ظ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­èxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtÃxtâ ß¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¬«ç†ƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­èˆ…Îf`¶C<Ÿ'Œƒƒƒƒ…5-–hc¸«ªæ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¦¥ãƒƒƒƒƒƒƒƒƒƒKDžþþþÿÿÿÿÿÿþþþááá³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿš–Ƀƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïZT¯ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒƒ3*“¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïxtÃZT¯¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïMF¦ƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï··ï¬«æ¢¡à§¦ãµ´ì¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïsoÀƒƒƒƒƒƒƒƒƒƒËÉãüüýÿÿÿþþþüüüººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññüüý-$ƒƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï˜–Ù„ƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒƒmi¼¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïA9ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&Œµµí¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï‡„΃ƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï²²ë-$ƒƒƒƒƒƒƒƒƒib®ÿÿÿÿÿÿÿÿÿÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÊÈ⃃ƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïª©å5,•ƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒ„§¦ã¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¦¥ã„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹‰Ñ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´í'Œƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï_Y²ƒƒƒƒƒƒƒƒƒ†âáïýýþÿÿÿÿÿÿÿÿÿøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþÿYR¥ƒƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¤£á2*”ƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒD= ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïpk½ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒUO«¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï^X±ƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïwsÆ€½ÿÿÿÿÿÿÿÿÿÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûêê󃃃ƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êgb¸ ‡ƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒƒ|ȸ¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï91˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ#‰³²ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï™—Úƒƒƒƒ&‹Ó¶¶î¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°ê^X±ƒƒƒƒƒƒƒƒƒƒ.%Žóóøþþÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿˆÁƒƒƒƒƒƒƒ°°ê¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï®­è†ƒÍSL©#‰ƒƒƒƒƒƒƒƒƒƒƒƒƒ0'’¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï°°êƒ"ˆ±±ë¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïŸžßƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†ƒÍ¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï6-•ƒƒƒƒƒ'ŒYS®Š‡Ð¯¯é¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï±±ë}yÆ,#ƒƒƒƒƒƒƒƒƒƒƒ¢žÍþþÿÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôúúü'Šƒƒƒƒƒƒjeºni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼d_¶^X±WQ­C< ) ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‹ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼jeºƒ3*“ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼KD¤ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ=5›ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼ni¼A9ƒƒƒƒƒƒƒƒ„80—^X±}yÆ”’ת©å¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ï¸¸ïµ´ì™—Ú|xÆTN«"ˆƒƒƒƒƒƒƒƒƒƒƒƒ@7—üüýÿÿÿÿÿÿÿÿÿæææ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿ¿¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"ˆ0'’7/—>6›D= ;4š4+”+"…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÀ½Ýüüýÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþNGŸƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\U§ÿÿÿÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½ýýýäãðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÛÚìüüýÿÿÿÿÿÿúúú···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿzºƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒzt·ÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööùùü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'Šíìõüüþÿÿÿÿÿÿþþþóóó´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ—’ÇþþþÿÿÿÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ8/“ûúýÿÿÿÿÿÿÿÿÿééé³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ´±ÖýýþÿÿÿÿÿÿÿÿÿÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÑÏæüüþÿÿÿÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ§£Ïƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒnh±ÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡çæòýýþÿÿÿÿÿÿÿÿÿöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‹†ÀÿÿÿÿÿÿÿÿÿÿÿÿÌÌ̳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žõõùþþþÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúòñ÷ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¨¤ÐýýþÿÿÿÿÿÿþþþÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿš–ɃƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒE=šþþÿÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññüüý-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÄÁßüüýÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒb[ªÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþÿYR¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…àÞîüüþÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûêê󃃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒzºÿÿÿÿÿÿÿÿÿÿÿÿÐÐг³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ) ‹ñð÷þþÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôúúü&‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒœ˜ÊþþþÿÿÿÿÿÿÿÿÿÈÈȳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿ¿¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ=5–ûûýÿÿÿÿÿÿþþþèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþNGŸƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ»¸Úýýþÿÿÿÿÿÿþþþ¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½ýýýäãðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒTM£ÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿzºƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÓÑçüüýÿÿÿÿÿÿûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööùùü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒtn´ÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰ëêôüüþÿÿÿÿÿÿþþþöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‘ŒÃÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ3*‘øøûÿÿÿÿÿÿþþþííí³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ­ªÓþþÿÿÿÿÿÿÿÿÿÿ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒJCþþþÿÿÿÿÿÿþþþâââ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ§£ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÊÈâüüþÿÿÿþþþüüü»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³íííýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒga­ÿÿÿÿÿÿÿÿÿÿÿÿØØس³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†âáïýýþÿÿÿÿÿÿþþþøøø¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿe^«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…€½ÿÿÿÿÿÿÿÿÿÿÿÿÎÎγ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúòñ÷ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ-$óóøþþÿÿÿÿþþþñññ´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿš–Ƀƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¢žÌþþþÿÿÿÿÿÿÿÿÿÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññüüý-$ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ?6—üüýÿÿÿÿÿÿþþþççç³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÅÅÅÿÿÿÊÈ⃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ¿½Üýýþÿÿÿÿÿÿýýý¾¾¾³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþÿYR¥ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ\T¦ÿÿÿÿÿÿÿÿÿþþþÜÜܳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûêê󃃃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ÙØêüüþÿÿÿÿÿÿúúú···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÖÖÖÿÿÿˆÁƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒys·ÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµôôôúúü&‰ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ&‰íìõüüþÿÿÿÿÿÿþþþôôô´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÈÈÈÿÿÿ¿¼Üƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ–‘ÆÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèþþþNGŸƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ8/“ûúýÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½ýýýäãðƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ³¯ÕýýþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿzºƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMEŸþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶öööùùü"‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÐÎæüüýÿÿÿÿÿÿûûûººº³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÌÌÌÿÿÿ´±Öƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒmf°ÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþA9˜ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"‡çæòýýþÿÿÿÿÿÿÿÿÿöööµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÜÚ샃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŠ…ÀÿÿÿÿÿÿÿÿÿÿÿÿÍÍͳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝÿÿÿrl³ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ/&Žõõúþþþÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···øøøöõù…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ§£ÏþþÿÿÿÿÿÿÿþþþÅÅų³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÐÐÐÿÿÿ§£ÏƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒD<šýýþÿÿÿÿÿÿÿÿÿäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³îîîýýý5-’ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÂ¿Þüüýÿÿÿÿÿÿýýý¼¼¼³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÂÂÂþþþÓÑ烃ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒaZ©ÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿd]«ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ%‰) ‹) ‹) ‹) ‹) ‹+"Œ90”90”90”90”90”90”A8˜H@œH@œH@œH@œH@œH@œUN£WP¤WP¤WP¤WP¤WP¤\T¦f`¬f`¬f`¬f`¬f`¬f`¬qk²vpµvpµvpµvpµvpµwq¶…€½…€½…€½…€½àßîüüýÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¹¹¹úúúõôù£ŸÍ£ŸÍ£ŸÍ£ŸÍ¨¤Ð³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö³¯Ö½»Û¿Þ¿Þ¿Þ¿Þ¿ÞÃÀÞÑÏæÑÏæÓÑçÓÑçÓÑçÓÑçÛÚìâáïâáïäãñäãñäãñäãññð÷òñøòòøòòøòòøòòøööúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÑѳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþýýþýýþýýþùùüùùüùùüùùüüüýýýþûûýûûþûûþûûþûûýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÍÍÍÿÿÿÿÿÿÿÿÿþþþôôôµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµ÷÷÷þþþÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³×××ÿÿÿÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿþþþäää³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³áááÿÿÿÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÀÀÀþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþÿÿÿÿÿÿÿÿÿÓÓÓ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÊÊÊÿÿÿÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´óóóþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúþþþÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÝÝÝþþþÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³çççþþþÿÿÿÿÿÿþþþÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüþþþÿÿÿýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ãããþþþÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ìììþþþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµõõõþþþÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÕÕÕÿÿÿÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸ûûûÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ßßßÿÿÿÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³éééÿÿÿÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ñññþþþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùÿÿÿÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÛÛÛÿÿÿÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»üüüÿÿÿÿÿÿþþþÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääþþþÿÿÿÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÃÃÃþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³îîîþþþÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÍÍÍÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³µµµöööÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³×××ÿÿÿÿÿÿÿÿÿýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³àààÿÿÿÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¿¿¿þþþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³êêêþþþÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÉÉÉÿÿÿÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´óóóþþþÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÓÓÓÿÿÿÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³æææþþþÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÄÄÄþþþÿÿÿÿÿÿÿÿÿÃÃó³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ðððþþþÿÿÿÿÿÿþþþïïï³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÏÏϳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¶¶¶÷÷÷ÿÿÿÿÿÿÿÿÿþþþùùù···³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÙÙÙÿÿÿÿÿÿÿÿÿþþþÝÝݳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ºººûûûþþþÿÿÿþþþÀÀÀ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³âââþþþÿÿÿÿÿÿþþþëëë³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÁÁÁÿÿÿÿÿÿÿÿÿÿÿÿËË˳³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ëëëþþþÿÿÿÿÿÿÿÿÿ÷÷÷¶¶¶³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ËËËÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´õõõþþþÿÿÿÿÿÿýýý½½½³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿèèè³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³¸¸¸úúúÿÿÿÿÿÿÿÿÿÉÉɳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÞÞÞþþþÿÿÿÿÿÿþþþõõõµµµ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³½½½þþþÿÿÿÿÿÿÿÿÿÖÖÖ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³èèèÿÿÿÿÿÿÿÿÿûûû»»»³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÆÆÆÿÿÿÿÿÿÿÿÿþþþããã³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´ðððþþþÿÿÿÿÿÿþþþÆÆƳ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÑÑÑÿÿÿÿÿÿÿÿÿþþþòòò´´´³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³···ùùùþþþÿÿÿÿÿÿÿÿÿÒÒÒ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³ÚÚÚÿÿÿÿÿÿþþþûûû¹¹¹³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³»»»ýýýÿÿÿÿÿÿÿÿÿààà³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³äääÿÿÿÿÿÿÿÿÿþþþ³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³´´´¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸»»»½½½½½½½½½½½½½½½½½½ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÄÄÄÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇËËËÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÍÍÍÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÔÔÔÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÞÞÞááááááááááááááááááäääæææææææææææææææçççëëëëëëëëëëëëëëëëëëîîîððððððþþþÿÿÿÿÿÿþþþüüüúúúúúúûûûûûûûûûûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿþþþýýýýýýýýýþþþÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ endstream endobj -673 0 obj +677 0 obj << /Type /XObject /Subtype /Image @@ -759,7 +759,7 @@ stream ãýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüËXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<Áüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý¨+üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú#’þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ‰íþýýüüüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýññññððéâââáßßÑÏÏÏÍÌÇ»»»»µN™™™™™ˆˆˆˆˆˆxwwwwwqffffffZUUUUUSDDDDDD;333333$""""" endstream endobj -676 0 obj +680 0 obj << /Length 78 >> @@ -768,617 +768,616 @@ stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 320.07 90.438 Td [(2)]TJ +/F84 9.9626 Tf 320.07 90.438 Td [(2)]TJ 0 g 0 G ET endstream endobj -722 0 obj +727 0 obj << -/Length 15343 +/Length 15914 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 706.042 Td [(Contents)]TJ +/F75 14.3462 Tf 99.895 706.042 Td [(Contents)]TJ 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf 0 -22.894 Td [(1)-1000(Introduction)]TJ +/F75 9.9626 Tf 0 -22.889 Td [(1)-1000(Introduction)]TJ 0 g 0 G [-26723(1)]TJ 0 0 1 rg 0 0 1 RG - 0 -22.116 Td [(2)-1000(General)-250(overview)]TJ + 0 -22.112 Td [(2)-1000(General)-250(overview)]TJ 0 g 0 G [-24361(2)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.074 Td [(2.1)-1050(Basic)-250(Nomenclatur)18(e)]TJ +/F84 9.9626 Tf 14.944 -12.071 Td [(2.1)-1050(Basic)-250(Nomenclatur)18(e)]TJ 0 g 0 G [-339(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(3)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(2.2)-1050(Library)-250(contents)]TJ + 0 -12.072 Td [(2.2)-1050(Library)-250(contents)]TJ 0 g 0 G [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(4)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(2.3)-1050(Application)-250(str)8(uctur)18(e)]TJ + 0 -12.071 Td [(2.3)-1011(Application)-250(str)8(uctur)18(e)]TJ 0 g 0 G - [-480(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-519(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(6)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.074 Td [(2.3.1)-1200(User)18(-de\002ned)-250(index)-250(mappings)]TJ + 22.914 -12.071 Td [(2.3.1)-1200(User)18(-de\002ned)-250(index)-250(mappings)]TJ 0 g 0 G [-325(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(8)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.074 Td [(2.4)-1050(Pr)18(ogramming)-250(model)]TJ + -22.914 -12.072 Td [(2.4)-1050(Pr)18(ogramming)-250(model)]TJ 0 g 0 G [-717(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(8)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -22.116 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ +/F75 9.9626 Tf -14.944 -22.111 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ 0 g 0 G [-19810(9)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.074 Td [(3.1)-1050(Descriptor)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 14.944 -12.071 Td [(3.1)-1050(Descriptor)-250(data)-250(str)8(uctur)18(e)]TJ 0 g 0 G [-369(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(9)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.074 Td [(3.1.1)-1200(Descriptor)-250(Methods)]TJ + 22.914 -12.072 Td [(3.1.1)-1200(Descriptor)-250(Methods)]TJ 0 g 0 G [-911(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.1.2)-1200(get)]TJ + 0 -12.071 Td [(3.1.2)-1200(get)]TJ ET q -1 0 0 1 183.79 542.523 cm +1 0 0 1 183.79 542.558 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 542.324 Td [(local)]TJ +/F84 9.9626 Tf 186.779 542.359 Td [(local)]TJ ET q -1 0 0 1 208.019 542.523 cm +1 0 0 1 208.019 542.558 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 211.008 542.324 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(r)18(ows)]TJ +/F84 9.9626 Tf 211.008 542.359 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(r)18(ows)]TJ 0 g 0 G [-471(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.255 -12.074 Td [(3.1.3)-1200(get)]TJ + -73.255 -12.072 Td [(3.1.3)-1200(get)]TJ ET q -1 0 0 1 183.79 530.449 cm +1 0 0 1 183.79 530.487 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 530.25 Td [(local)]TJ +/F84 9.9626 Tf 186.779 530.287 Td [(local)]TJ ET q -1 0 0 1 208.019 530.449 cm +1 0 0 1 208.019 530.487 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 211.008 530.25 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ +/F84 9.9626 Tf 211.008 530.287 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ 0 g 0 G [-673(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.255 -12.074 Td [(3.1.4)-1200(get)]TJ + -73.255 -12.071 Td [(3.1.4)-1200(get)]TJ ET q -1 0 0 1 183.79 518.375 cm +1 0 0 1 183.79 518.415 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 518.176 Td [(global)]TJ +/F84 9.9626 Tf 186.779 518.216 Td [(global)]TJ ET q -1 0 0 1 214.644 518.375 cm +1 0 0 1 214.644 518.415 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 217.633 518.176 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(r)18(ows)]TJ +/F84 9.9626 Tf 217.633 518.216 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(r)18(ows)]TJ 0 g 0 G [-641(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -79.88 -12.074 Td [(3.1.5)-1200(get)]TJ + -79.88 -12.071 Td [(3.1.5)-1200(get)]TJ ET q -1 0 0 1 183.79 506.301 cm +1 0 0 1 183.79 506.344 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 506.102 Td [(global)]TJ +/F84 9.9626 Tf 186.779 506.145 Td [(global)]TJ ET q -1 0 0 1 214.644 506.301 cm +1 0 0 1 214.644 506.344 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 217.633 506.102 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ +/F84 9.9626 Tf 217.633 506.145 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ 0 g 0 G [-843(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -79.88 -12.075 Td [(3.1.6)-1200(get)]TJ + -79.88 -12.072 Td [(3.1.6)-1200(get)]TJ ET q -1 0 0 1 183.79 494.227 cm +1 0 0 1 183.79 494.273 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 494.027 Td [(global)]TJ +/F84 9.9626 Tf 186.779 494.073 Td [(global)]TJ ET q -1 0 0 1 214.644 494.227 cm +1 0 0 1 214.644 494.273 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 217.633 494.027 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ +/F84 9.9626 Tf 217.633 494.073 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ 0 g 0 G [-999(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -79.88 -12.074 Td [(3.1.7)-1200(get)]TJ + -79.88 -12.071 Td [(3.1.7)-1200(get)]TJ ET q -1 0 0 1 183.79 482.153 cm +1 0 0 1 183.79 482.201 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 481.953 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ +/F84 9.9626 Tf 186.779 482.002 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ 0 g 0 G [-852(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.1.8)-1200(Clone)-250(\227)-250(clone)-250(curr)18(ent)-250(object)]TJ + -49.026 -12.071 Td [(3.1.8)-1200(Clone)-250(\227)-250(clone)-250(curr)18(ent)-250(object)]TJ 0 g 0 G [-763(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.1.9)-1200(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ + 0 -12.072 Td [(3.1.9)-1200(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ 0 g 0 G [-496(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.1.10)-700(psb)]TJ + 0 -12.071 Td [(3.1.10)]TJ 1.02 0 0 1 169.335 445.788 Tm [(psb)]TJ ET q -1 0 0 1 185.952 445.93 cm +1 0 0 1 185.968 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 188.941 445.731 Td [(cd)]TJ +/F84 9.9626 Tf 1.02 0 0 1 188.957 445.788 Tm [(cd)]TJ ET q -1 0 0 1 200.049 445.93 cm +1 0 0 1 200.275 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 203.038 445.731 Td [(get)]TJ +/F84 9.9626 Tf 1.02 0 0 1 203.264 445.788 Tm [(get)]TJ ET q -1 0 0 1 217.195 445.93 cm +1 0 0 1 217.692 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 220.184 445.731 Td [(lar)18(ge)]TJ +/F84 9.9626 Tf 1.02 0 0 1 220.681 445.788 Tm [(lar)18(ge)]TJ ET q -1 0 0 1 242.729 445.93 cm +1 0 0 1 243.668 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 245.718 445.731 Td [(thr)18(eshold)-190(\227)-190(Get)-190(thr)18(eshold)-190(for)-190(index)-190(map-)]TJ -76.084 -11.955 Td [(ping)-250(switch)]TJ +/F84 9.9626 Tf 1.02 0 0 1 246.657 445.788 Tm [(thr)18(eshold)-430(\227)-430(Get)-430(thr)18(eshold)-430(for)-430(index)]TJ 1 0 0 1 169.634 433.833 Tm [(mapping)-250(switch)]TJ 0 g 0 G - [-819(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-335(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.1.11)-700(psb)]TJ + -31.881 -12.072 Td [(3.1.11)]TJ 0.98 0 0 1 169.335 421.761 Tm [(psb)]TJ ET q -1 0 0 1 185.952 421.901 cm +1 0 0 1 185.339 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 188.941 421.702 Td [(cd)]TJ +/F84 9.9626 Tf 0.98 0 0 1 188.328 421.761 Tm [(cd)]TJ ET q -1 0 0 1 200.049 421.901 cm +1 0 0 1 199.226 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 203.038 421.702 Td [(set)]TJ +/F84 9.9626 Tf 0.98 0 0 1 202.215 421.761 Tm [(set)]TJ ET q -1 0 0 1 215.88 421.901 cm +1 0 0 1 214.812 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 218.869 421.702 Td [(lar)18(ge)]TJ +/F84 9.9626 Tf 0.98 0 0 1 217.8 421.761 Tm [(lar)18(ge)]TJ ET q -1 0 0 1 241.414 421.901 cm +1 0 0 1 239.903 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 244.403 421.702 Td [(thr)18(eshold)-190(\227)-190(Set)-190(thr)18(eshold)-190(for)-190(index)-190(map-)]TJ -74.769 -11.955 Td [(ping)-250(switch)]TJ +/F84 9.9626 Tf 0.98 0 0 1 242.892 421.761 Tm [(thr)18(eshold)-215(\227)-215(Set)-215(thr)19(eshold)-215(for)-215(index)-215(map-)]TJ 1 0 0 1 169.335 409.806 Tm [(ping)-250(switch)]TJ 0 g 0 G - [-819(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-849(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.1.12)-700(get)]TJ + -31.582 -12.071 Td [(3.1.12)-700(get)]TJ ET q -1 0 0 1 183.79 397.872 cm +1 0 0 1 183.79 397.934 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 397.673 Td [(p)]TJ +/F84 9.9626 Tf 186.779 397.735 Td [(p)]TJ ET q -1 0 0 1 193.364 397.872 cm +1 0 0 1 193.364 397.934 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 196.353 397.673 Td [(adjcncy)-250(\227)-250(Get)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ +/F84 9.9626 Tf 196.353 397.735 Td [(adjcncy)-250(\227)-250(Get)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ 0 g 0 G [-652(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -58.6 -12.074 Td [(3.1.13)-700(set)]TJ + -58.6 -12.072 Td [(3.1.13)-700(set)]TJ ET q -1 0 0 1 182.475 385.798 cm +1 0 0 1 182.475 385.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 185.464 385.599 Td [(p)]TJ +/F84 9.9626 Tf 185.464 385.663 Td [(p)]TJ ET q -1 0 0 1 192.049 385.798 cm +1 0 0 1 192.049 385.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 195.038 385.599 Td [(adjcncy)-250(\227)-250(Set)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ +/F84 9.9626 Tf 195.038 385.663 Td [(adjcncy)-250(\227)-250(Set)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ 0 g 0 G [-272(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -57.285 -12.074 Td [(3.1.14)-700(fnd)]TJ + -57.285 -12.071 Td [(3.1.14)-700(fnd)]TJ ET q -1 0 0 1 185.434 373.724 cm +1 0 0 1 185.434 373.791 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 188.423 373.524 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(pr)18(ocess)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ +/F84 9.9626 Tf 188.423 373.592 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(pr)18(ocess)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ 0 g 0 G [-361(.)]TJ 0 g 0 G [-1500(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -50.67 -12.074 Td [(3.1.15)-700(Named)-250(Constants)]TJ + -50.67 -12.071 Td [(3.1.15)-700(Named)-250(Constants)]TJ 0 g 0 G [-277(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(16)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.074 Td [(3.2)-1050(Sparse)-250(Matrix)-250(class)]TJ + -22.914 -12.072 Td [(3.2)-1050(Sparse)-250(Matrix)-250(class)]TJ 0 g 0 G [-719(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(16)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.074 Td [(3.2.1)-1200(Sparse)-250(Matrix)-250(Methods)]TJ + 22.914 -12.071 Td [(3.2.1)-1200(Sparse)-250(Matrix)-250(Methods)]TJ 0 g 0 G [-938(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.2)-1200(get)]TJ + 0 -12.071 Td [(3.2.2)-1200(get)]TJ ET q -1 0 0 1 183.79 325.427 cm +1 0 0 1 183.79 325.506 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 325.228 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 186.779 325.307 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G [-286(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.3)-1200(get)]TJ + -49.026 -12.072 Td [(3.2.3)-1200(get)]TJ ET q -1 0 0 1 183.79 313.353 cm +1 0 0 1 183.79 313.434 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 313.154 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 186.779 313.235 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G [-670(.)]TJ 0 g 0 G [-1500(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.4)-1200(get)]TJ + -49.026 -12.071 Td [(3.2.4)]TJ 1.02 0 0 1 169.634 301.164 Tm [(get)]TJ ET q -1 0 0 1 183.79 301.279 cm +1 0 0 1 184.062 301.363 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 301.08 Td [(nnzer)18(os)-190(\227)-190(Get)-190(number)-190(of)-190(nonzer)18(o)-190(elements)-190(in)-190(a)-190(sparse)]TJ -17.145 -11.955 Td [(matrix)]TJ +/F84 9.9626 Tf 1.02 0 0 1 187.05 301.164 Tm [(nnzer)18(os)-424(\227)-423(Get)-423(number)-424(of)-423(nonzer)18(o)-423(elements)-424(in)-423(a)]TJ 1 0 0 1 169.634 289.209 Tm [(sparse)-250(matrix)]TJ 0 g 0 G - [-839(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-766(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.2.5)-1200(get)]TJ + -31.881 -12.072 Td [(3.2.5)]TJ 0.983 0 0 1 169.634 277.137 Tm [(get)]TJ ET q -1 0 0 1 183.79 277.25 cm +1 0 0 1 183.56 277.336 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 277.051 Td [(size)-354(\227)-354(Get)-355(maximum)-354(number)-354(of)-354(nonzer)18(o)-354(elements)]TJ -17.145 -11.955 Td [(in)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 0.983 0 0 1 186.549 277.137 Tm [(size)-254(\227)-254(Get)-254(maximum)-254(number)-254(of)-254(nonzer)19(o)-254(elements)-254(in)]TJ 1 0 0 1 169.634 265.182 Tm [(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-393(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-766(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.2.6)-1200(sizeof)-206(\227)-205(Get)-206(memory)-205(occupation)-206(in)-205(bytes)-206(of)-205(a)-206(sparse)-205(ma-)]TJ 31.881 -11.956 Td [(trix)]TJ + -31.881 -12.071 Td [(3.2.6)]TJ 0.98 0 0 1 169.634 253.111 Tm [(sizeof)-239(\227)-239(Get)-239(memory)-239(occupation)-239(in)-239(bytes)-239(of)-239(a)-239(sparse)-239(matrix)]TJ 0 g 0 G - [-722(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1500(19)]TJ + 1 0 0 1 433.644 253.111 Tm [(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.2.7)-1200(get)]TJ + -295.891 -12.072 Td [(3.2.7)-1200(get)]TJ ET q -1 0 0 1 183.79 229.192 cm +1 0 0 1 183.79 241.239 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 228.992 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ +/F84 9.9626 Tf 186.779 241.039 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ 0 g 0 G [-278(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.8)-1200(is)]TJ + -49.026 -12.071 Td [(3.2.8)-1200(is)]TJ ET q -1 0 0 1 177.355 217.117 cm +1 0 0 1 177.355 229.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 180.344 216.918 Td [(bld,)-250(is)]TJ +/F84 9.9626 Tf 180.344 228.968 Td [(bld,)-250(is)]TJ ET q -1 0 0 1 207.541 217.117 cm +1 0 0 1 207.541 229.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.53 216.918 Td [(upd,)-250(is)]TJ +/F84 9.9626 Tf 210.53 228.968 Td [(upd,)-250(is)]TJ ET q -1 0 0 1 241.314 217.117 cm +1 0 0 1 241.314 229.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 244.303 216.918 Td [(asb)-250(\227)-250(Status)-250(check)]TJ +/F84 9.9626 Tf 244.303 228.968 Td [(asb)-250(\227)-250(Status)-250(check)]TJ 0 g 0 G [-569(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -106.55 -12.074 Td [(3.2.9)-1200(is)]TJ + -106.55 -12.071 Td [(3.2.9)-1200(is)]TJ ET q -1 0 0 1 177.355 205.043 cm +1 0 0 1 177.355 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 180.344 204.844 Td [(lower)74(,)-250(is)]TJ +/F84 9.9626 Tf 180.344 216.897 Td [(lower)74(,)-250(is)]TJ ET q -1 0 0 1 217.663 205.043 cm +1 0 0 1 217.663 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 220.652 204.844 Td [(upper)74(,)-250(is)]TJ +/F84 9.9626 Tf 220.652 216.897 Td [(upper)74(,)-250(is)]TJ ET q -1 0 0 1 259.306 205.043 cm +1 0 0 1 259.306 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 262.295 204.844 Td [(triangle,)-250(is)]TJ +/F84 9.9626 Tf 262.295 216.897 Td [(triangle,)-250(is)]TJ ET q -1 0 0 1 309.069 205.043 cm +1 0 0 1 309.069 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 312.058 204.844 Td [(unit)-250(\227)-250(Format)-250(check)]TJ +/F84 9.9626 Tf 312.058 216.897 Td [(unit)-250(\227)-250(Format)-250(check)]TJ 0 g 0 G [-441(.)-500(.)]TJ 0 g 0 G [-1500(20)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -174.305 -12.074 Td [(3.2.10)-700(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(fer)18(ent)-250(storage)-250(format)]TJ + -174.305 -12.072 Td [(3.2.10)-700(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(fer)18(ent)-250(storage)-250(format)]TJ 0 g 0 G [-815(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(20)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.11)-700(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ + 0 -12.071 Td [(3.2.11)-700(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ 0 g 0 G [-358(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(21)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.12)-700(clean)]TJ + 0 -12.072 Td [(3.2.12)-700(clean)]TJ ET q -1 0 0 1 193.106 168.821 cm +1 0 0 1 193.106 180.882 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 196.094 168.622 Td [(zer)18(os)-250(\227)-250(Eliminate)-250(zer)18(o)-250(coef)18(\002cients)]TJ +/F84 9.9626 Tf 196.094 180.682 Td [(zer)18(os)-250(\227)-250(Eliminate)-250(zer)18(o)-250(coef)18(\002cients)]TJ 0 g 0 G [-677(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(21)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -58.341 -12.074 Td [(3.2.13)-700(get)]TJ + -58.341 -12.071 Td [(3.2.13)-700(get)]TJ ET q -1 0 0 1 183.79 156.747 cm +1 0 0 1 183.79 168.81 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 156.548 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ +/F84 9.9626 Tf 186.779 168.611 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ 0 g 0 G [-870(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(22)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.14)-700(clip)]TJ + -49.026 -12.071 Td [(3.2.14)-700(clip)]TJ ET q -1 0 0 1 186.44 144.673 cm +1 0 0 1 186.44 156.739 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 189.429 144.474 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ +/F84 9.9626 Tf 189.429 156.54 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ 0 g 0 G [-309(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(22)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -51.676 -12.074 Td [(3.2.15)-700(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ + -51.676 -12.072 Td [(3.2.15)-700(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ 0 g 0 G [-292(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(22)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.16)-700(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ + 0 -12.071 Td [(3.2.16)-700(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ 0 g 0 G [-596(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(23)]TJ 0 g 0 G -0 g 0 G - 132.548 -29.888 Td [(i)]TJ -0 g 0 G -ET - -endstream -endobj -779 0 obj -<< -/Length 15896 ->> -stream -0 g 0 G -0 g 0 G 0 0 1 rg 0 0 1 RG -BT -/F62 9.9626 Tf 188.563 706.129 Td [(3.2.17)-700(psb)]TJ + 0 -12.071 Td [(3.2.17)-670(psb)]TJ ET q -1 0 0 1 236.762 706.328 cm +1 0 0 1 185.654 120.525 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 239.751 706.129 Td [(set)]TJ +/F84 9.9626 Tf 188.642 120.326 Td [(set)]TJ ET q -1 0 0 1 252.592 706.328 cm +1 0 0 1 201.484 120.525 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 255.581 706.129 Td [(mat)]TJ +/F84 9.9626 Tf 204.473 120.326 Td [(mat)]TJ ET q -1 0 0 1 273.205 706.328 cm +1 0 0 1 222.096 120.525 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 276.194 706.129 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ +/F84 9.9626 Tf 225.085 120.326 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ 0 g 0 G - [-829(.)-500(.)-500(.)-500(.)]TJ + [-859(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(24)]TJ 0 g 0 G +0 g 0 G + 45.216 -29.888 Td [(i)]TJ +0 g 0 G +ET + +endstream +endobj +783 0 obj +<< +/Length 15815 +>> +stream +0 g 0 G +0 g 0 G 0 0 1 rg 0 0 1 RG - -87.631 -12.08 Td [(3.2.18)-700(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ +BT +/F84 9.9626 Tf 188.563 706.129 Td [(3.2.18)-700(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ 0 g 0 G [-763(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1392,16 +1391,16 @@ BT [-1500(24)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.079 Td [(3.3)-1050(Dense)-250(V)111(ector)-250(Data)-250(Str)8(uctur)18(e)]TJ + -22.914 -12.08 Td [(3.3)-1050(Dense)-250(V)111(ector)-250(Data)-250(Str)8(uctur)18(e)]TJ 0 g 0 G [-491(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(24)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.08 Td [(3.3.1)-1200(V)111(ector)-250(Methods)]TJ + 22.914 -12.079 Td [(3.3.1)-1164(V)111(ector)-250(Methods)]TJ 0 g 0 G - [-535(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-571(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(25)]TJ 0 g 0 G @@ -1409,24 +1408,24 @@ BT 0 -12.08 Td [(3.3.2)-1200(get)]TJ ET q -1 0 0 1 234.6 645.93 cm +1 0 0 1 234.6 658.009 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 237.589 645.73 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(dense)-250(vector)]TJ +/F84 9.9626 Tf 237.589 657.81 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(dense)-250(vector)]TJ 0 g 0 G [-690(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(25)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.079 Td [(3.3.3)-1200(sizeof)-226(\227)-227(Get)-226(memory)-227(occupation)-226(in)-226(bytes)-227(of)-226(a)-227(dense)-226(vector)]TJ + -49.026 -12.08 Td [(3.3.3)]TJ 0.99 0 0 1 220.443 645.73 Tm [(sizeof)-253(\227)-252(Get)-253(memory)-252(occupation)-253(in)-252(bytes)-253(of)-252(a)-253(dense)-252(vector)]TJ 0 g 0 G 0 g 0 G - [-550(25)]TJ + 1 0 0 1 484.453 645.73 Tm [(25)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.08 Td [(3.3.4)-1200(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ + -295.89 -12.079 Td [(3.3.4)-1200(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ 0 g 0 G [-461(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1436,25 +1435,25 @@ BT 0 -12.08 Td [(3.3.5)-1200(get)]TJ ET q -1 0 0 1 234.6 609.691 cm +1 0 0 1 234.6 621.77 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 237.589 609.491 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ +/F84 9.9626 Tf 237.589 621.571 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ 0 g 0 G [-770(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(27)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.079 Td [(3.3.6)-1200(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ + -49.026 -12.08 Td [(3.3.6)-1200(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ 0 g 0 G [-763(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(27)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.08 Td [(3.4)-1050(Pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ + -22.914 -12.079 Td [(3.4)-1050(Pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 g 0 G [-741(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1468,467 +1467,481 @@ BT [-1500(28)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -22.125 Td [(4)-1000(Computational)-250(routines)]TJ +/F75 9.9626 Tf -14.944 -22.125 Td [(4)-1000(Computational)-250(routines)]TJ 0 g 0 G [-21085(29)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.08 Td [(4.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.08 Td [(4.1)-1020(psb)]TJ ET q -1 0 0 1 204.881 539.246 cm +1 0 0 1 204.583 551.326 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 539.047 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ +/F84 9.9626 Tf 207.571 551.127 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ 0 g 0 G - [-539(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-569(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(30)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.2)-1050(psb)]TJ + -41.922 -12.08 Td [(4.2)-1020(psb)]TJ ET q -1 0 0 1 204.881 527.167 cm +1 0 0 1 204.583 539.246 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 526.967 Td [(gedot)-250(\227)-250(Dot)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 539.047 Td [(gedot)-250(\227)-250(Dot)-250(Pr)18(oduct)]TJ 0 g 0 G - [-837(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-867(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(32)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.3)-1050(psb)]TJ + -41.922 -12.08 Td [(4.3)-1020(psb)]TJ ET q -1 0 0 1 204.881 515.087 cm +1 0 0 1 204.583 527.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 514.888 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 526.967 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Pr)18(oduct)]TJ 0 g 0 G - [-793(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-823(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(34)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.4)-1050(psb)]TJ + -41.922 -12.079 Td [(4.4)-1020(psb)]TJ ET q -1 0 0 1 204.881 503.007 cm +1 0 0 1 204.583 515.087 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 502.808 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 514.888 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-868(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-898(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(36)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.5)-1050(psb)]TJ + -41.922 -12.08 Td [(4.5)-1020(psb)]TJ ET q -1 0 0 1 204.881 490.928 cm +1 0 0 1 204.583 503.007 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 490.728 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ +/F84 9.9626 Tf 207.571 502.808 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ 0 g 0 G - [-600(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-630(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(38)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.6)-1050(psb)]TJ + -41.922 -12.08 Td [(4.6)-1020(psb)]TJ ET q -1 0 0 1 204.881 478.848 cm +1 0 0 1 204.583 490.928 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 478.649 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 490.728 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-438(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(39)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.7)-1050(psb)]TJ + -41.922 -12.079 Td [(4.7)-1020(psb)]TJ ET q -1 0 0 1 204.881 466.768 cm +1 0 0 1 204.583 478.848 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 466.569 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 478.649 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-605(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-635(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(41)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.8)-1050(psb)]TJ + -41.922 -12.08 Td [(4.8)-1020(psb)]TJ ET q -1 0 0 1 204.881 454.688 cm +1 0 0 1 204.583 466.768 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 454.489 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 466.569 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-438(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(43)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.9)-1050(psb)]TJ + -41.922 -12.08 Td [(4.9)-1020(psb)]TJ ET q -1 0 0 1 204.881 442.609 cm +1 0 0 1 204.583 454.688 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 442.409 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 454.489 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-655(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-685(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(45)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.10)-550(psb)]TJ + -41.922 -12.08 Td [(4.10)-520(psb)]TJ ET q -1 0 0 1 204.881 430.529 cm +1 0 0 1 204.583 442.609 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 430.33 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 442.409 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ 0 g 0 G - [-841(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-871(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(46)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.11)-550(psb)]TJ + -41.922 -12.079 Td [(4.11)-520(psb)]TJ ET q -1 0 0 1 204.881 418.449 cm +1 0 0 1 204.583 430.529 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 418.25 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 430.33 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ 0 g 0 G - [-604(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-634(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(47)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.12)-550(psb)]TJ + -41.922 -12.08 Td [(4.12)-520(psb)]TJ ET q -1 0 0 1 204.881 406.37 cm +1 0 0 1 204.583 418.449 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 406.17 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 418.25 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct)]TJ 0 g 0 G - [-491(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-521(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(48)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.13)-550(psb)]TJ + -41.922 -12.08 Td [(4.13)-520(psb)]TJ ET q -1 0 0 1 204.881 394.29 cm +1 0 0 1 204.583 406.37 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 394.091 Td [(spsm)-250(\227)-250(T)90(riangular)-250(System)-250(Solve)]TJ +/F84 9.9626 Tf 207.571 406.17 Td [(spsm)-250(\227)-250(T)90(riangular)-250(System)-250(Solve)]TJ 0 g 0 G - [-945(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-975(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(50)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.14)-550(psb)]TJ + -41.922 -12.079 Td [(4.14)-520(psb)]TJ ET q -1 0 0 1 204.881 382.21 cm +1 0 0 1 204.583 394.29 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 382.011 Td [(gemlt)-250(\227)-250(Entrywise)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 394.091 Td [(gemlt)-250(\227)-250(Entrywise)-250(Pr)18(oduct)]TJ 0 g 0 G - [-968(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-998(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(53)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.15)-550(psb)]TJ + -41.922 -12.08 Td [(4.15)-520(psb)]TJ ET q -1 0 0 1 204.881 370.131 cm +1 0 0 1 204.583 382.21 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 369.931 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ +/F84 9.9626 Tf 207.571 382.011 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ 0 g 0 G - [-748(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-778(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(55)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.16)-550(psb)]TJ + -41.922 -12.08 Td [(4.16)-520(psb)]TJ ET q -1 0 0 1 204.881 358.051 cm +1 0 0 1 204.583 370.131 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 357.852 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ +/F84 9.9626 Tf 207.571 369.931 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ 0 g 0 G - [-340(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-370(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(57)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.165 -22.126 Td [(5)-1000(Communication)-250(routines)]TJ +/F75 9.9626 Tf -56.866 -22.125 Td [(5)-1000(Communication)-250(routines)]TJ 0 g 0 G [-20585(58)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.079 Td [(5.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.08 Td [(5.1)-1020(psb)]TJ ET q -1 0 0 1 204.881 323.846 cm +1 0 0 1 204.583 335.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 323.647 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ +/F84 9.9626 Tf 207.571 335.726 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ 0 g 0 G - [-888(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-918(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(59)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(5.2)-1050(psb)]TJ + -41.922 -12.08 Td [(5.2)-1020(psb)]TJ ET q -1 0 0 1 204.881 311.766 cm +1 0 0 1 204.583 323.846 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 311.567 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ +/F84 9.9626 Tf 207.571 323.647 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ 0 g 0 G - [-553(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-583(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(62)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(5.3)-1050(psb)]TJ + -41.922 -12.08 Td [(5.3)-1020(psb)]TJ ET q -1 0 0 1 204.881 299.686 cm +1 0 0 1 204.583 311.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 299.487 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 311.567 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ 0 g 0 G - [-973(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-253(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(66)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(5.4)-1050(psb)]TJ + -41.922 -12.08 Td [(5.4)-1020(psb)]TJ ET q -1 0 0 1 204.881 287.607 cm +1 0 0 1 204.583 299.686 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 287.407 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 299.487 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ 0 g 0 G - [-967(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-997(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(68)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.165 -22.125 Td [(6)-1000(Data)-250(management)-250(routines)]TJ +/F75 9.9626 Tf -56.866 -22.125 Td [(6)-1000(Data)-250(management)-250(routines)]TJ 0 g 0 G [-19668(70)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.08 Td [(6.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.08 Td [(6.1)-1020(psb)]TJ ET q -1 0 0 1 204.881 253.402 cm +1 0 0 1 204.583 265.481 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 253.202 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 265.282 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-363(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-393(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(70)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.2)-1050(psb)]TJ + -41.922 -12.08 Td [(6.2)-1020(psb)]TJ ET q -1 0 0 1 204.881 241.322 cm +1 0 0 1 204.583 253.402 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 241.123 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(r)18(outine)]TJ +/F84 9.9626 Tf 207.571 253.202 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(r)18(outine)]TJ 0 g 0 G - [-261(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-291(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(74)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.3)-1050(psb)]TJ + -41.922 -12.079 Td [(6.3)-1020(psb)]TJ ET q -1 0 0 1 204.881 229.242 cm +1 0 0 1 204.583 241.322 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 229.043 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(r)18(outine)]TJ +/F84 9.9626 Tf 207.571 241.123 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(r)18(outine)]TJ 0 g 0 G - [-718(.)-500(.)-500(.)]TJ + [-748(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(76)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.4)-1050(psb)]TJ + -41.922 -12.08 Td [(6.4)-1020(psb)]TJ ET q -1 0 0 1 204.881 217.163 cm +1 0 0 1 204.583 229.242 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 216.963 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 229.043 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-873(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-903(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(77)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.5)-1050(psb)]TJ + -41.922 -12.08 Td [(6.5)-1020(psb)]TJ ET q -1 0 0 1 204.881 205.083 cm +1 0 0 1 204.583 217.163 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 204.884 Td [(cdfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 216.963 Td [(cdfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-791(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-821(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(78)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.6)-1050(psb)]TJ + -41.922 -12.079 Td [(6.6)-1020(psb)]TJ ET q -1 0 0 1 204.881 193.003 cm +1 0 0 1 204.583 205.083 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 192.804 Td [(cdbldext)-250(\227)-250(Build)-250(an)-250(extended)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 204.884 Td [(cdbldext)-250(\227)-250(Build)-250(an)-250(extended)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-676(.)]TJ + [-706(.)]TJ 0 g 0 G [-1500(79)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.7)-1050(psb)]TJ + -41.922 -12.08 Td [(6.7)-1020(psb)]TJ ET q -1 0 0 1 204.881 180.923 cm +1 0 0 1 204.583 193.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 180.724 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 192.804 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-842(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-872(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(81)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.8)-1050(psb)]TJ + -41.922 -12.08 Td [(6.8)-1020(psb)]TJ ET q -1 0 0 1 204.881 168.844 cm +1 0 0 1 204.583 180.923 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 168.644 Td [(spins)-250(\227)-250(Insert)-250(a)-250(set)-250(of)-250(coef)18(\002cients)-250(into)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 180.724 Td [(spins)-250(\227)-250(Insert)-250(a)-250(set)-250(of)-250(coef)18(\002cients)-250(into)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-625(.)-500(.)-500(.)]TJ + [-655(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(83)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.9)-1050(psb)]TJ + -41.922 -12.08 Td [(6.9)-1020(psb)]TJ ET q -1 0 0 1 204.881 156.764 cm +1 0 0 1 204.583 168.844 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 156.565 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(r)18(outine)]TJ +/F84 9.9626 Tf 207.571 168.644 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(r)18(outine)]TJ 0 g 0 G - [-611(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-641(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(86)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.10)-550(psb)]TJ + -41.922 -12.079 Td [(6.10)-520(psb)]TJ ET q -1 0 0 1 204.881 144.684 cm +1 0 0 1 204.583 156.764 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 144.485 Td [(spfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 156.565 Td [(spfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-520(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-550(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(88)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.11)-550(psb)]TJ + -41.922 -12.08 Td [(6.11)-520(psb)]TJ ET q -1 0 0 1 204.881 132.605 cm +1 0 0 1 204.583 144.684 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 132.405 Td [(sprn)-250(\227)-250(Reinit)-250(sparse)-250(matrix)-250(str)8(uctur)18(e)-250(for)-250(psblas)-250(r)18(outines.)]TJ +/F84 9.9626 Tf 207.571 144.485 Td [(sprn)-250(\227)-250(Reinit)-250(sparse)-250(matrix)-250(str)8(uctur)18(e)-250(for)-250(psblas)-250(r)18(outines.)]TJ 0 g 0 G - [-725(.)]TJ + [-755(.)]TJ 0 g 0 G [-1500(89)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.12)-550(psb)]TJ + -41.922 -12.08 Td [(6.12)-520(psb)]TJ ET q -1 0 0 1 204.881 120.525 cm +1 0 0 1 204.583 132.605 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 120.326 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 132.405 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-330(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-360(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(90)]TJ 0 g 0 G +0 0 1 rg 0 0 1 RG + -41.922 -12.079 Td [(6.13)-520(psb)]TJ +ET +q +1 0 0 1 204.583 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 207.571 120.326 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(r)18(outine)]TJ +0 g 0 G + [-441(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1500(92)]TJ +0 g 0 G 0 g 0 G - 111.791 -29.888 Td [(ii)]TJ + 112.09 -29.888 Td [(ii)]TJ 0 g 0 G ET @@ -1938,1353 +1951,1326 @@ endobj << /Type /ObjStm /N 100 -/First 901 -/Length 14251 ->> -stream -604 0 608 43 609 137 612 180 613 274 616 317 617 441 620 484 621 628 624 672 -625 791 628 835 629 954 632 998 633 1132 636 1176 637 1290 640 1334 641 1483 644 1527 -645 1676 648 1720 649 1889 652 1933 653 2082 656 2126 657 2270 660 2314 661 2483 662 2528 -664 2657 667 2763 668 2819 3 2875 665 2929 675 3058 677 3172 674 3229 721 3296 678 3790 -679 3936 680 4082 681 4234 682 4386 683 4538 684 4693 685 4845 686 4988 687 5140 688 5297 -689 5454 690 5611 691 5766 692 5923 693 6080 694 6237 695 6394 696 6547 725 6705 697 6860 -726 7018 698 7175 699 7333 700 7491 701 7649 702 7807 703 7958 704 8115 705 8271 706 8428 -727 8585 707 8741 728 8898 708 9053 729 9210 709 9366 710 9523 711 9680 712 9837 713 9995 -714 10151 715 10309 716 10467 717 10625 718 10783 723 10938 724 10994 720 11050 778 11130 719 11632 -730 11790 731 11948 732 12106 733 12257 734 12414 735 12571 736 12727 737 12884 738 13041 739 13198 +/First 903 +/Length 14167 +>> +stream +604 0 608 43 609 215 612 258 613 352 616 395 617 489 620 532 621 656 624 699 +625 843 628 887 629 1006 632 1050 633 1169 636 1213 637 1347 640 1391 641 1505 644 1549 +645 1698 648 1742 649 1891 652 1935 653 2104 656 2148 657 2297 660 2341 661 2485 664 2529 +665 2698 666 2743 668 2872 671 2978 672 3034 3 3090 669 3144 679 3273 681 3387 678 3444 +726 3511 682 4005 683 4151 684 4297 685 4449 686 4601 687 4753 688 4908 689 5060 690 5206 +691 5358 692 5515 693 5672 694 5829 695 5984 696 6141 697 6298 698 6455 699 6612 700 6769 +730 6927 701 7084 731 7242 702 7394 703 7552 704 7710 705 7868 706 8026 707 8178 708 8335 +709 8490 710 8647 732 8804 711 8960 733 9117 712 9273 713 9430 714 9587 715 9744 716 9901 +717 10058 718 10216 719 10374 720 10532 721 10690 722 10848 723 11005 728 11161 729 11217 725 11273 +782 11353 724 11855 734 12013 735 12171 736 12323 737 12479 738 12636 739 12793 740 12950 741 13107 % 604 0 obj -<< /S /GoTo /D (section*.6) >> +<< /S /GoTo /D (section.13) >> % 608 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000i\000n\000i\000t) +(\376\377\0001\0003\000\040\000C\000U\000D\000A\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000R\000o\000u\000t\000i\000n\000e\000s) % 609 0 obj -<< /S /GoTo /D (section*.7) >> +<< /S /GoTo /D (section*.6) >> % 612 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000e\000x\000i\000t) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000i\000n\000i\000t) % 613 0 obj -<< /S /GoTo /D (section*.8) >> +<< /S /GoTo /D (section*.7) >> % 616 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000S\000y\000n\000c) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000e\000x\000i\000t) % 617 0 obj -<< /S /GoTo /D (section*.9) >> +<< /S /GoTo /D (section*.8) >> % 620 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e\000C\000o\000u\000n\000t) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000S\000y\000n\000c) % 621 0 obj -<< /S /GoTo /D (section*.10) >> +<< /S /GoTo /D (section*.9) >> % 624 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e\000C\000o\000u\000n\000t) % 625 0 obj -<< /S /GoTo /D (section*.11) >> +<< /S /GoTo /D (section*.10) >> % 628 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000s\000e\000t\000D\000e\000v\000i\000c\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e) % 629 0 obj -<< /S /GoTo /D (section*.12) >> +<< /S /GoTo /D (section*.11) >> % 632 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000H\000a\000s\000U\000V\000A) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000s\000e\000t\000D\000e\000v\000i\000c\000e) % 633 0 obj -<< /S /GoTo /D (section*.13) >> +<< /S /GoTo /D (section*.12) >> % 636 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000W\000a\000r\000p\000S\000i\000z\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000H\000a\000s\000U\000V\000A) % 637 0 obj -<< /S /GoTo /D (section*.14) >> +<< /S /GoTo /D (section*.13) >> % 640 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000u\000l\000t\000i\000P\000r\000o\000c\000e\000s\000s\000o\000r\000s) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000W\000a\000r\000p\000S\000i\000z\000e) % 641 0 obj -<< /S /GoTo /D (section*.15) >> +<< /S /GoTo /D (section*.14) >> % 644 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000T\000h\000r\000e\000a\000d\000s\000P\000e\000r\000M\000P) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000u\000l\000t\000i\000P\000r\000o\000c\000e\000s\000s\000o\000r\000s) % 645 0 obj -<< /S /GoTo /D (section*.16) >> +<< /S /GoTo /D (section*.15) >> % 648 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000R\000e\000g\000i\000s\000t\000e\000r\000P\000e\000r\000B\000l\000o\000c\000k) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000T\000h\000r\000e\000a\000d\000s\000P\000e\000r\000M\000P) % 649 0 obj -<< /S /GoTo /D (section*.17) >> +<< /S /GoTo /D (section*.16) >> % 652 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000C\000l\000o\000c\000k\000R\000a\000t\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000R\000e\000g\000i\000s\000t\000e\000r\000P\000e\000r\000B\000l\000o\000c\000k) % 653 0 obj -<< /S /GoTo /D (section*.18) >> +<< /S /GoTo /D (section*.17) >> % 656 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000B\000u\000s\000W\000i\000d\000t\000h) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000C\000l\000o\000c\000k\000R\000a\000t\000e) % 657 0 obj -<< /S /GoTo /D (section*.19) >> +<< /S /GoTo /D (section*.18) >> % 660 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000P\000e\000a\000k\000B\000a\000n\000d\000w\000i\000d\000t\000h) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000B\000u\000s\000W\000i\000d\000t\000h) % 661 0 obj -<< /S /GoTo /D [662 0 R /Fit] >> -% 662 0 obj +<< /S /GoTo /D (section*.19) >> +% 664 0 obj +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000P\000e\000a\000k\000B\000a\000n\000d\000w\000i\000d\000t\000h) +% 665 0 obj +<< /S /GoTo /D [666 0 R /Fit] >> +% 666 0 obj << /Type /Page -/Contents 666 0 R -/Resources 665 0 R +/Contents 670 0 R +/Resources 669 0 R /MediaBox [0 0 595.276 841.89] -/Parent 672 0 R -/Group 664 0 R +/Parent 676 0 R +/Group 668 0 R >> -% 664 0 obj +% 668 0 obj %PTEX Group needed for transparent pngs <> -% 667 0 obj +% 671 0 obj << -/D [662 0 R /XYZ 98.895 753.953 null] +/D [666 0 R /XYZ 98.895 753.953 null] >> -% 668 0 obj +% 672 0 obj << -/D [662 0 R /XYZ 99.895 716.092 null] +/D [666 0 R /XYZ 99.895 716.092 null] >> % 3 0 obj << -/D [662 0 R /XYZ 99.895 716.092 null] +/D [666 0 R /XYZ 99.895 716.092 null] >> -% 665 0 obj +% 669 0 obj << -/Font << /F59 669 0 R /F60 670 0 R /F62 671 0 R >> -/XObject << /Im1 663 0 R >> +/Font << /F75 673 0 R /F78 674 0 R /F84 675 0 R >> +/XObject << /Im1 667 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> -% 675 0 obj +% 679 0 obj << /Type /Page -/Contents 676 0 R -/Resources 674 0 R +/Contents 680 0 R +/Resources 678 0 R /MediaBox [0 0 595.276 841.89] -/Parent 672 0 R +/Parent 676 0 R >> -% 677 0 obj +% 681 0 obj << -/D [675 0 R /XYZ 149.705 753.953 null] +/D [679 0 R /XYZ 149.705 753.953 null] >> -% 674 0 obj +% 678 0 obj << -/Font << /F62 671 0 R >> +/Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 721 0 obj +% 726 0 obj << /Type /Page -/Contents 722 0 R -/Resources 720 0 R +/Contents 727 0 R +/Resources 725 0 R /MediaBox [0 0 595.276 841.89] -/Parent 672 0 R -/Annots [ 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R 695 0 R 696 0 R 725 0 R 697 0 R 726 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 727 0 R 707 0 R 728 0 R 708 0 R 729 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R ] +/Parent 676 0 R +/Annots [ 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 730 0 R 701 0 R 731 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 732 0 R 711 0 R 733 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R ] >> -% 678 0 obj +% 682 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 681.973 173.389 691.303] +/Rect [98.899 681.977 173.389 691.307] /A << /S /GoTo /D (section.1) >> >> -% 679 0 obj +% 683 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 659.857 196.921 669.187] +/Rect [98.899 659.866 196.921 669.196] /A << /S /GoTo /D (section.2) >> >> -% 680 0 obj +% 684 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 647.803 227.028 657.212] +/Rect [113.843 647.814 227.028 657.224] /A << /S /GoTo /D (subsection.2.1) >> >> -% 681 0 obj +% 685 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 633.079 211.078 645.138] +/Rect [113.843 633.093 211.078 645.152] /A << /S /GoTo /D (subsection.2.2) >> >> -% 682 0 obj +% 686 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 621.004 233.094 633.064] +/Rect [113.843 621.021 232.706 633.081] /A << /S /GoTo /D (subsection.2.3) >> >> -% 683 0 obj +% 687 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 608.93 301.886 620.99] +/Rect [136.757 608.95 301.886 621.01] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 684 0 obj +% 688 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 596.856 230.734 608.916] +/Rect [113.843 596.879 230.734 608.938] /A << /S /GoTo /D (subsection.2.4) >> >> -% 685 0 obj +% 689 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 577.37 242.261 586.7] +/Rect [98.899 577.397 242.261 586.727] /A << /S /GoTo /D (section.3) >> >> -% 686 0 obj +% 690 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 562.666 249.144 574.726] +/Rect [113.843 562.696 249.144 574.755] /A << /S /GoTo /D (subsection.3.1) >> >> -% 687 0 obj +% 691 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 550.592 258.689 562.652] +/Rect [136.757 550.624 258.689 562.684] /A << /S /GoTo /D (subsubsection.3.1.1) >> >> -% 688 0 obj +% 692 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 538.518 360.207 550.578] +/Rect [136.757 538.553 360.207 550.613] /A << /S /GoTo /D (subsubsection.3.1.2) >> >> -% 689 0 obj +% 693 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 526.444 350.723 538.504] +/Rect [136.757 526.482 350.723 538.541] /A << /S /GoTo /D (subsubsection.3.1.3) >> >> -% 690 0 obj +% 694 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 514.37 373.457 526.43] +/Rect [136.757 514.41 373.457 526.47] /A << /S /GoTo /D (subsubsection.3.1.4) >> >> -% 691 0 obj +% 695 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 502.296 363.973 514.355] +/Rect [136.757 502.339 363.973 514.399] /A << /S /GoTo /D (subsubsection.3.1.5) >> >> -% 692 0 obj +% 696 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 490.222 384.834 502.281] +/Rect [136.757 490.268 384.834 502.327] /A << /S /GoTo /D (subsubsection.3.1.6) >> >> -% 693 0 obj +% 697 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 478.148 356.411 490.013] +/Rect [136.757 478.196 356.411 490.062] /A << /S /GoTo /D (subsubsection.3.1.7) >> >> -% 694 0 obj +% 698 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 466.074 297.523 478.133] +/Rect [136.757 466.125 297.523 478.185] /A << /S /GoTo /D (subsubsection.3.1.8) >> >> -% 695 0 obj +% 699 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 454 345.014 466.059] +/Rect [136.757 454.054 345.014 466.113] /A << /S /GoTo /D (subsubsection.3.1.9) >> >> -% 696 0 obj +% 700 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 441.925 444.603 453.985] +/Rect [136.757 441.982 444.603 454.042] /A << /S /GoTo /D (subsubsection.3.1.10) >> >> -% 725 0 obj +% 730 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 429.97 222.246 442.03] +/Rect [98.899 430.027 242.012 442.087] /A << /S /GoTo /D (subsubsection.3.1.10) >> >> -% 697 0 obj +% 701 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 417.896 444.603 429.956] +/Rect [136.757 417.956 444.603 430.015] /A << /S /GoTo /D (subsubsection.3.1.11) >> >> -% 726 0 obj +% 731 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 405.941 222.246 418.001] +/Rect [98.899 406 221.947 418.06] /A << /S /GoTo /D (subsubsection.3.1.11) >> >> -% 698 0 obj +% 702 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 393.867 358.404 405.927] +/Rect [136.757 393.929 358.404 405.989] /A << /S /GoTo /D (subsubsection.3.1.12) >> >> -% 699 0 obj +% 703 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 381.793 354.718 393.853] +/Rect [136.757 381.858 354.718 393.917] /A << /S /GoTo /D (subsubsection.3.1.13) >> >> -% 700 0 obj +% 704 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 369.719 413.607 381.778] +/Rect [136.757 369.786 413.607 381.846] /A << /S /GoTo /D (subsubsection.3.1.14) >> >> -% 701 0 obj +% 705 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 360.295 250.062 369.704] +/Rect [136.757 360.365 250.062 369.775] /A << /S /GoTo /D (subsubsection.3.1.15) >> >> -% 702 0 obj +% 706 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 345.571 223.242 357.63] +/Rect [113.843 345.644 223.242 357.703] /A << /S /GoTo /D (subsection.3.2) >> >> -% 703 0 obj +% 707 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 333.497 273.364 345.556] +/Rect [136.757 333.572 273.364 345.632] /A << /S /GoTo /D (subsubsection.3.2.1) >> >> -% 704 0 obj +% 708 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 321.423 399.41 333.482] +/Rect [136.757 321.501 399.41 333.56] /A << /S /GoTo /D (subsubsection.3.2.2) >> >> -% 705 0 obj +% 709 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 309.348 410.528 321.408] +/Rect [136.757 309.429 410.528 321.489] /A << /S /GoTo /D (subsubsection.3.2.3) >> >> -% 706 0 obj +% 710 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 297.274 444.603 309.334] +/Rect [136.757 297.358 444.603 309.418] /A << /S /GoTo /D (subsubsection.3.2.4) >> >> -% 727 0 obj +% 732 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 287.969 199.631 297.075] +/Rect [98.899 285.403 230.246 297.159] /A << /S /GoTo /D (subsubsection.3.2.4) >> >> -% 707 0 obj +% 711 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 273.245 444.603 285.305] +/Rect [136.757 273.332 444.603 285.391] /A << /S /GoTo /D (subsubsection.3.2.5) >> >> -% 728 0 obj +% 733 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 261.29 248.906 273.046] +/Rect [98.899 261.376 237.718 273.132] /A << /S /GoTo /D (subsubsection.3.2.5) >> >> -% 708 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 249.216 444.603 261.276] -/A << /S /GoTo /D (subsubsection.3.2.6) >> ->> -% 729 0 obj +% 712 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 239.911 185.853 249.016] +/Rect [136.757 249.305 429.161 261.365] /A << /S /GoTo /D (subsubsection.3.2.6) >> >> -% 709 0 obj +% 713 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 225.187 384.545 237.246] +/Rect [136.757 237.234 384.545 249.293] /A << /S /GoTo /D (subsubsection.3.2.7) >> >> -% 710 0 obj +% 714 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 213.113 329.343 225.172] +/Rect [136.757 225.162 329.343 237.222] /A << /S /GoTo /D (subsubsection.3.2.8) >> >> -% 711 0 obj +% 715 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 201.038 405.337 213.098] +/Rect [136.757 213.091 405.337 225.151] /A << /S /GoTo /D (subsubsection.3.2.9) >> >> -% 712 0 obj +% 716 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 188.964 371.724 201.024] +/Rect [136.757 201.02 371.724 213.079] /A << /S /GoTo /D (subsubsection.3.2.10) >> >> -% 713 0 obj +% 717 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 176.89 309.029 188.95] +/Rect [136.757 188.948 309.029 201.008] /A << /S /GoTo /D (subsubsection.3.2.11) >> >> -% 714 0 obj +% 718 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 167.466 350.683 176.876] +/Rect [136.757 179.527 350.683 188.936] /A << /S /GoTo /D (subsubsection.3.2.12) >> >> -% 715 0 obj +% 719 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 152.742 303.929 164.802] +/Rect [136.757 164.805 303.929 176.865] /A << /S /GoTo /D (subsubsection.3.2.13) >> >> -% 716 0 obj +% 720 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 140.668 324.462 152.728] +/Rect [136.757 152.734 324.462 164.794] /A << /S /GoTo /D (subsubsection.3.2.14) >> >> -% 717 0 obj +% 721 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 128.594 309.687 140.654] +/Rect [136.757 140.663 309.687 152.722] /A << /S /GoTo /D (subsubsection.3.2.15) >> >> -% 718 0 obj +% 722 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 116.52 314.13 128.58] +/Rect [136.757 128.591 314.13 140.651] /A << /S /GoTo /D (subsubsection.3.2.16) >> >> % 723 0 obj << -/D [721 0 R /XYZ 98.895 753.953 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.757 116.52 386.229 128.58] +/A << /S /GoTo /D (subsubsection.3.2.17) >> +>> +% 728 0 obj +<< +/D [726 0 R /XYZ 98.895 753.953 null] >> -% 724 0 obj +% 729 0 obj << -/D [721 0 R /XYZ 99.895 723.975 null] +/D [726 0 R /XYZ 99.895 723.975 null] >> -% 720 0 obj +% 725 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 778 0 obj +% 782 0 obj << /Type /Page -/Contents 779 0 R -/Resources 777 0 R +/Contents 783 0 R +/Resources 781 0 R /MediaBox [0 0 595.276 841.89] -/Parent 672 0 R -/Annots [ 719 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R ] +/Parent 676 0 R +/Annots [ 724 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R 776 0 R 777 0 R 778 0 R 779 0 R ] >> -% 719 0 obj +% 724 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 702.323 437.338 714.383] -/A << /S /GoTo /D (subsubsection.3.2.17) >> +/Rect [187.567 702.323 348.332 714.383] +/A << /S /GoTo /D (subsubsection.3.2.18) >> >> -% 730 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 690.243 348.332 702.303] -/A << /S /GoTo /D (subsubsection.3.2.18) >> ->> -% 731 0 obj +% 734 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 680.814 300.871 690.223] +/Rect [187.567 692.894 300.871 702.303] /A << /S /GoTo /D (subsubsection.3.2.19) >> >> -% 732 0 obj +% 735 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 668.734 313.682 677.95] +/Rect [164.653 680.814 313.682 690.029] /A << /S /GoTo /D (subsection.3.3) >> >> -% 733 0 obj +% 736 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 656.654 290.829 666.064] +/Rect [187.567 668.734 290.47 678.144] /A << /S /GoTo /D (subsubsection.3.3.1) >> >> -% 734 0 obj +% 737 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 641.925 446.194 653.984] +/Rect [187.567 654.004 446.194 666.064] /A << /S /GoTo /D (subsubsection.3.3.2) >> >> -% 735 0 obj +% 738 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 629.845 479.97 641.905] +/Rect [187.567 641.925 479.958 653.984] /A << /S /GoTo /D (subsubsection.3.3.3) >> >> -% 736 0 obj +% 739 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 620.415 358.813 629.825] +/Rect [187.567 632.495 358.813 641.905] /A << /S /GoTo /D (subsubsection.3.3.4) >> >> -% 737 0 obj +% 740 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 605.686 415.509 617.745] +/Rect [187.567 617.765 415.509 629.825] /A << /S /GoTo /D (subsubsection.3.3.5) >> >> -% 738 0 obj +% 741 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 593.606 348.332 605.666] +/Rect [187.567 605.686 348.332 617.745] /A << /S /GoTo /D (subsubsection.3.3.6) >> >> -% 739 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 584.176 318.663 593.586] -/A << /S /GoTo /D (subsection.3.4) >> ->> endstream endobj -826 0 obj +830 0 obj << -/Length 18214 +/Length 18648 >> stream 0 g 0 G 0 g 0 G 0 0 1 rg 0 0 1 RG BT -/F62 9.9626 Tf 114.839 706.129 Td [(6.13)-550(psb)]TJ -ET -q -1 0 0 1 154.072 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 157.061 706.129 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(r)18(outine)]TJ -0 g 0 G - [-411(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ -0 g 0 G - [-1500(92)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(6.14)-550(psb)]TJ +/F84 9.9626 Tf 114.839 706.129 Td [(6.14)-520(psb)]TJ ET q -1 0 0 1 154.072 694.234 cm +1 0 0 1 153.773 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 694.035 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 156.762 706.129 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-376(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-406(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(94)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(6.15)-550(psb)]TJ + -41.923 -12.094 Td [(6.15)-520(psb)]TJ ET q -1 0 0 1 154.072 682.14 cm +1 0 0 1 153.773 694.234 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 681.941 Td [(gefr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 156.762 694.035 Td [(gefr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-758(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-788(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(95)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(6.16)-550(psb)]TJ + -41.923 -12.094 Td [(6.16)-520(psb)]TJ ET q -1 0 0 1 154.072 670.046 cm +1 0 0 1 153.773 682.14 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 669.846 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 156.762 681.941 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-801(.)-500(.)-500(.)-500(.)]TJ + [-831(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(96)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(6.17)-550(psb)]TJ + -41.923 -12.095 Td [(6.17)-520(psb)]TJ ET q -1 0 0 1 154.072 657.951 cm +1 0 0 1 153.773 670.046 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 657.752 Td [(glob)]TJ +/F84 9.9626 Tf 156.762 669.846 Td [(glob)]TJ ET q -1 0 0 1 177.046 657.951 cm +1 0 0 1 176.747 670.046 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 180.034 657.752 Td [(to)]TJ +/F84 9.9626 Tf 179.735 669.846 Td [(to)]TJ ET q -1 0 0 1 189.319 657.951 cm +1 0 0 1 189.02 670.046 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 192.308 657.752 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ +/F84 9.9626 Tf 192.009 669.846 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ 0 g 0 G - [-427(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-457(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(97)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -77.469 -12.094 Td [(6.18)-550(psb)]TJ + -77.17 -12.094 Td [(6.18)-520(psb)]TJ ET q -1 0 0 1 154.072 645.857 cm +1 0 0 1 153.773 657.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 645.658 Td [(loc)]TJ +/F84 9.9626 Tf 156.762 657.752 Td [(loc)]TJ ET q -1 0 0 1 170.42 645.857 cm +1 0 0 1 170.122 657.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 173.409 645.658 Td [(to)]TJ +/F84 9.9626 Tf 173.11 657.752 Td [(to)]TJ ET q -1 0 0 1 182.694 645.857 cm +1 0 0 1 182.395 657.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 185.683 645.658 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ +/F84 9.9626 Tf 185.384 657.752 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ 0 g 0 G - [-966(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-996(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(99)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -70.844 -12.094 Td [(6.19)-550(psb)]TJ + -70.545 -12.094 Td [(6.19)-520(psb)]TJ ET q -1 0 0 1 154.072 633.763 cm +1 0 0 1 153.773 645.857 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 633.564 Td [(is)]TJ +/F84 9.9626 Tf 156.762 645.658 Td [(is)]TJ ET q -1 0 0 1 164.782 633.763 cm +1 0 0 1 164.483 645.857 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 167.771 633.564 Td [(owned)-250(\227)]TJ +/F84 9.9626 Tf 167.472 645.658 Td [(owned)-250(\227)]TJ 0 g 0 G - [-1135(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-1165(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(100)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -52.932 -12.094 Td [(6.20)-550(psb)]TJ + -52.633 -12.094 Td [(6.20)-520(psb)]TJ ET q -1 0 0 1 154.072 621.669 cm +1 0 0 1 153.773 633.763 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 621.47 Td [(owned)]TJ +/F84 9.9626 Tf 156.762 633.564 Td [(owned)]TJ ET q -1 0 0 1 188.064 621.669 cm +1 0 0 1 187.765 633.763 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 191.053 621.47 Td [(index)-250(\227)]TJ +/F84 9.9626 Tf 190.754 633.564 Td [(index)-250(\227)]TJ 0 g 0 G - [-871(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-901(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(101)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -76.214 -12.095 Td [(6.21)-550(psb)]TJ + -75.915 -12.094 Td [(6.21)-520(psb)]TJ ET q -1 0 0 1 154.072 609.575 cm +1 0 0 1 153.773 621.669 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 609.375 Td [(is)]TJ +/F84 9.9626 Tf 156.762 621.47 Td [(is)]TJ ET q -1 0 0 1 164.782 609.575 cm +1 0 0 1 164.483 621.669 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 167.771 609.375 Td [(local)-250(\227)]TJ +/F84 9.9626 Tf 167.472 621.47 Td [(local)-250(\227)]TJ 0 g 0 G - [-615(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-645(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(102)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -52.932 -12.094 Td [(6.22)-550(psb)]TJ + -52.633 -12.095 Td [(6.22)-520(psb)]TJ ET q -1 0 0 1 154.072 597.481 cm +1 0 0 1 153.773 609.575 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 597.281 Td [(local)]TJ +/F84 9.9626 Tf 156.762 609.375 Td [(local)]TJ ET q -1 0 0 1 178.301 597.481 cm +1 0 0 1 178.002 609.575 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 181.29 597.281 Td [(index)-250(\227)]TJ +/F84 9.9626 Tf 180.991 609.375 Td [(index)-250(\227)]TJ 0 g 0 G - [-1101(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-1131(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(103)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -66.451 -12.094 Td [(6.23)-550(psb)]TJ + -66.152 -12.094 Td [(6.23)-520(psb)]TJ ET q -1 0 0 1 154.072 585.386 cm +1 0 0 1 153.773 597.481 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 585.187 Td [(get)]TJ +/F84 9.9626 Tf 156.762 597.281 Td [(get)]TJ ET q -1 0 0 1 171.217 585.386 cm +1 0 0 1 170.919 597.481 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 585.187 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ +/F84 9.9626 Tf 173.907 597.281 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ 0 g 0 G - [-827(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-857(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(104)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -59.367 -12.094 Td [(6.24)-550(psb)]TJ + -59.068 -12.094 Td [(6.24)-520(psb)]TJ ET q -1 0 0 1 154.072 573.292 cm +1 0 0 1 153.773 585.386 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 573.093 Td [(get)]TJ +/F84 9.9626 Tf 156.762 585.187 Td [(get)]TJ ET q -1 0 0 1 171.217 573.292 cm +1 0 0 1 170.919 585.386 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 573.093 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ +/F84 9.9626 Tf 173.907 585.187 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ 0 g 0 G - [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-545(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(105)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -59.367 -12.094 Td [(6.25)-550(psb)]TJ + -59.068 -12.094 Td [(6.25)-520(psb)]TJ ET q -1 0 0 1 154.072 561.198 cm +1 0 0 1 153.773 573.292 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 560.999 Td [(sp)]TJ +/F84 9.9626 Tf 156.762 573.093 Td [(sp)]TJ ET q -1 0 0 1 167.87 561.198 cm +1 0 0 1 167.571 573.292 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 170.859 560.999 Td [(getr)18(ow)-250(\227)-250(Extract)-250(r)18(ow\050s\051)-250(fr)18(om)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 170.56 573.093 Td [(getr)18(ow)-250(\227)-250(Extract)-250(r)18(ow\050s\051)-250(fr)18(om)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-671(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-701(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(106)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -56.02 -12.094 Td [(6.26)-550(psb)]TJ + -55.721 -12.094 Td [(6.26)-520(psb)]TJ ET q -1 0 0 1 154.072 549.104 cm +1 0 0 1 153.773 561.198 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 548.905 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ +/F84 9.9626 Tf 156.762 560.999 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ 0 g 0 G - [-251(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-281(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(108)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(6.27)-550(Sorting)-250(utilities)-250(\227)]TJ + -41.923 -12.094 Td [(6.27)-550(Sorting)-250(utilities)-250(\227)]TJ 0 g 0 G [-1157(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(109)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -22.149 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ +/F75 9.9626 Tf -14.944 -22.15 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ 0 g 0 G [-17835(111)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.094 Td [(7.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.094 Td [(7.1)-1020(psb)]TJ ET q -1 0 0 1 154.072 502.766 cm +1 0 0 1 153.773 514.86 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 502.567 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ +/F84 9.9626 Tf 156.762 514.661 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ 0 g 0 G - [-766(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-796(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(112)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(7.2)-1050(psb)]TJ + -41.923 -12.094 Td [(7.2)]TJ 0.98 0 0 1 137.455 502.567 Tm [(psb)]TJ ET q -1 0 0 1 154.072 490.672 cm +1 0 0 1 153.459 502.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 490.472 Td [(info)-264(\227)-264(Return)-264(information)-264(abou)1(t)-264(PSBLAS)-264(parallel)-264(envir)18(on-)]TJ -19.308 -11.955 Td [(ment)]TJ +/F84 9.9626 Tf 0.98 0 0 1 156.448 502.567 Tm [(info)-218(\227)-219(Return)-218(information)-219(abou)1(t)-219(PSBLAS)-218(parallel)-219(envir)19(onment)]TJ 0 g 0 G - [-930(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(113)]TJ + 1 0 0 1 428.663 502.567 Tm [(113)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.094 Td [(7.3)-1050(psb)]TJ + -313.824 -12.095 Td [(7.3)-1020(psb)]TJ ET q -1 0 0 1 154.072 466.622 cm +1 0 0 1 153.773 490.672 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 466.423 Td [(exit)-250(\227)-250(Exit)-250(fr)18(om)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ +/F84 9.9626 Tf 156.762 490.472 Td [(exit)-250(\227)-250(Exit)-250(fr)18(om)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ 0 g 0 G - [-823(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-853(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(114)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.4)-1050(psb)]TJ + -41.923 -12.094 Td [(7.4)-1020(psb)]TJ ET q -1 0 0 1 154.072 454.528 cm +1 0 0 1 153.773 478.578 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 454.329 Td [(get)]TJ +/F84 9.9626 Tf 156.762 478.378 Td [(get)]TJ ET q -1 0 0 1 171.217 454.528 cm +1 0 0 1 170.919 478.578 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 454.329 Td [(mpi)]TJ +/F84 9.9626 Tf 173.907 478.378 Td [(mpi)]TJ ET q -1 0 0 1 192.487 454.528 cm +1 0 0 1 192.189 478.578 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 195.476 454.329 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ +/F84 9.9626 Tf 195.177 478.378 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ 0 g 0 G - [-615(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-645(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(115)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -80.637 -12.094 Td [(7.5)-1050(psb)]TJ + -80.338 -12.094 Td [(7.5)-1020(psb)]TJ ET q -1 0 0 1 154.072 442.434 cm +1 0 0 1 153.773 466.483 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 442.235 Td [(get)]TJ +/F84 9.9626 Tf 156.762 466.284 Td [(get)]TJ ET q -1 0 0 1 171.217 442.434 cm +1 0 0 1 170.919 466.483 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 442.235 Td [(mpi)]TJ +/F84 9.9626 Tf 173.907 466.284 Td [(mpi)]TJ ET q -1 0 0 1 192.487 442.434 cm +1 0 0 1 192.189 466.483 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 195.476 442.235 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ +/F84 9.9626 Tf 195.177 466.284 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ 0 g 0 G - [-498(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-528(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(116)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -80.637 -12.094 Td [(7.6)-1050(psb)]TJ + -80.338 -12.094 Td [(7.6)-1020(psb)]TJ ET q -1 0 0 1 154.072 430.34 cm +1 0 0 1 153.773 454.389 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 430.141 Td [(wtime)-250(\227)-250(W)92(all)-250(clock)-250(timing)]TJ +/F84 9.9626 Tf 156.762 454.19 Td [(wtime)-250(\227)-250(W)92(all)-250(clock)-250(timing)]TJ 0 g 0 G - [-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-529(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(117)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(7.7)-1050(psb)]TJ + -41.923 -12.094 Td [(7.7)-1020(psb)]TJ ET q -1 0 0 1 154.072 418.246 cm +1 0 0 1 153.773 442.295 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 418.046 Td [(barrier)-250(\227)-250(Sinchr)18(onization)-250(point)-250(parallel)-250(envir)18(onment)]TJ +/F84 9.9626 Tf 156.762 442.096 Td [(barrier)-250(\227)-250(Sinchr)18(onization)-250(point)-250(parallel)-250(envir)18(onment)]TJ 0 g 0 G - [-903(.)-500(.)-500(.)]TJ + [-933(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(118)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.8)-1050(psb)]TJ + -41.923 -12.094 Td [(7.8)-1020(psb)]TJ ET q -1 0 0 1 154.072 406.151 cm +1 0 0 1 153.773 430.201 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 405.952 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ +/F84 9.9626 Tf 156.762 430.002 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ 0 g 0 G - [-946(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-976(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(119)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.9)-1050(psb)]TJ + -41.923 -12.095 Td [(7.9)-1020(psb)]TJ ET q -1 0 0 1 154.072 394.057 cm +1 0 0 1 153.773 418.107 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 393.858 Td [(bcast)-250(\227)-250(Br)18(oadcast)-250(data)]TJ +/F84 9.9626 Tf 156.762 417.907 Td [(bcast)-250(\227)-250(Br)18(oadcast)-250(data)]TJ 0 g 0 G - [-739(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-769(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(120)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.10)-550(psb)]TJ + -41.923 -12.094 Td [(7.10)-520(psb)]TJ ET q -1 0 0 1 154.072 381.963 cm +1 0 0 1 153.773 406.012 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 381.764 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ +/F84 9.9626 Tf 156.762 405.813 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ 0 g 0 G - [-998(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-278(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(122)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.11)-550(psb)]TJ + -41.923 -12.094 Td [(7.11)-520(psb)]TJ ET q -1 0 0 1 154.072 369.869 cm +1 0 0 1 153.773 393.918 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 369.67 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ +/F84 9.9626 Tf 156.762 393.719 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ 0 g 0 G - [-610(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-640(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(124)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(7.12)-550(psb)]TJ + -41.923 -12.094 Td [(7.12)-520(psb)]TJ ET q -1 0 0 1 154.072 357.775 cm +1 0 0 1 153.773 381.824 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 357.575 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ +/F84 9.9626 Tf 156.762 381.625 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ 0 g 0 G - [-896(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-926(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(126)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.13)-550(psb)]TJ + -41.923 -12.094 Td [(7.13)-520(psb)]TJ ET q -1 0 0 1 154.072 345.681 cm +1 0 0 1 153.773 369.73 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 345.481 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ +/F84 9.9626 Tf 156.762 369.531 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ 0 g 0 G - [-700(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-730(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(128)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.14)-550(psb)]TJ + -41.923 -12.095 Td [(7.14)-520(psb)]TJ ET q -1 0 0 1 154.072 333.586 cm +1 0 0 1 153.773 357.636 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 333.387 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ +/F84 9.9626 Tf 156.762 357.436 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ 0 g 0 G - [-777(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-807(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(130)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.15)-550(psb)]TJ + -41.923 -12.094 Td [(7.15)-520(psb)]TJ ET q -1 0 0 1 154.072 321.492 cm +1 0 0 1 153.773 345.542 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 321.293 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(r)18(eduction)]TJ +/F84 9.9626 Tf 156.762 345.342 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(r)18(eduction)]TJ 0 g 0 G - [-710(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-740(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(132)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.16)-550(psb)]TJ + -41.923 -12.094 Td [(7.16)-520(psb)]TJ ET q -1 0 0 1 154.072 309.398 cm +1 0 0 1 153.773 333.447 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 309.199 Td [(snd)-250(\227)-250(Send)-250(data)]TJ +/F84 9.9626 Tf 156.762 333.248 Td [(snd)-250(\227)-250(Send)-250(data)]TJ 0 g 0 G - [-511(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-541(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(134)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.17)-550(psb)]TJ + -41.923 -12.094 Td [(7.17)-520(psb)]TJ ET q -1 0 0 1 154.072 297.304 cm +1 0 0 1 153.773 321.353 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 297.105 Td [(r)18(cv)-250(\227)-250(Receive)-250(data)]TJ +/F84 9.9626 Tf 156.762 321.154 Td [(r)18(cv)-250(\227)-250(Receive)-250(data)]TJ 0 g 0 G - [-284(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-314(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(135)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.166 -22.15 Td [(8)-1000(Error)-250(handling)]TJ +/F75 9.9626 Tf -56.867 -22.15 Td [(8)-1000(Error)-250(handling)]TJ 0 g 0 G [-24750(136)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.094 Td [(8.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.094 Td [(8.1)-1020(psb)]TJ ET q -1 0 0 1 154.072 263.06 cm +1 0 0 1 153.773 287.11 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 262.861 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(err)18(or)-250(code)-250(onto)-250(the)-250(err)18(or)-250(stack)]TJ +/F84 9.9626 Tf 156.762 286.91 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(err)18(or)-250(code)-250(onto)-250(the)-250(err)18(or)-250(stack)]TJ 0 g 0 G - [-734(.)-500(.)-500(.)-500(.)]TJ + [-764(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(138)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(8.2)-1050(psb)]TJ + -41.923 -12.094 Td [(8.2)-1020(psb)]TJ ET q -1 0 0 1 154.072 250.966 cm +1 0 0 1 153.773 275.015 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 250.767 Td [(err)18(or)-250(\227)-250(Prints)-250(the)-250(err)18(or)-250(stack)-250(content)-250(and)-250(aborts)-250(execution)]TJ +/F84 9.9626 Tf 156.762 274.816 Td [(err)18(or)-250(\227)-250(Prints)-250(the)-250(err)18(or)-250(stack)-250(content)-250(and)-250(aborts)-250(execution)]TJ 0 g 0 G 0 g 0 G - [-1381(139)]TJ + [-1411(139)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(8.3)-1050(psb)]TJ + -41.923 -12.094 Td [(8.3)-1020(psb)]TJ ET q -1 0 0 1 154.072 238.872 cm +1 0 0 1 153.773 262.921 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 238.673 Td [(set)]TJ +/F84 9.9626 Tf 156.762 262.722 Td [(set)]TJ ET q -1 0 0 1 169.902 238.872 cm +1 0 0 1 169.604 262.921 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 172.891 238.673 Td [(errverbosity)-250(\227)-250(Sets)-250(the)-250(verbosity)-250(of)-250(err)18(or)-250(messages)]TJ +/F84 9.9626 Tf 172.592 262.722 Td [(errverbosity)-250(\227)-250(Sets)-250(the)-250(verbosity)-250(of)-250(err)18(or)-250(messages)]TJ 0 g 0 G - [-253(.)-500(.)-500(.)]TJ + [-283(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(140)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -58.052 -12.095 Td [(8.4)-1050(psb)]TJ + -57.753 -12.094 Td [(8.4)]TJ 0.994 0 0 1 137.455 250.628 Tm [(psb)]TJ ET q -1 0 0 1 154.072 226.778 cm +1 0 0 1 153.679 250.827 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 226.578 Td [(set)]TJ +/F84 9.9626 Tf 0.994 0 0 1 156.668 250.628 Tm [(set)]TJ ET q -1 0 0 1 169.902 226.778 cm +1 0 0 1 169.436 250.827 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 172.891 226.578 Td [(erraction)-232(\227)-231(Set)-232(the)-231(type)-232(of)-231(action)-232(to)-232(b)1(e)-232(taken)-232(upon)-231(err)18(or)]TJ -35.138 -11.955 Td [(condition)]TJ +/F84 9.9626 Tf 0.994 0 0 1 172.425 250.628 Tm [(erraction)-251(\227)-251(Set)-252(the)-251(type)-251(of)-251(action)-251(to)-252(b)1(e)-252(taken)-251(upon)-251(err)18(or)]TJ 1 0 0 1 137.753 238.673 Tm [(condition)]TJ 0 g 0 G [-481(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(141)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -37.858 -22.149 Td [(9)-1000(Utilities)]TJ +/F75 9.9626 Tf -37.858 -22.15 Td [(9)-1000(Utilities)]TJ 0 g 0 G [-27780(142)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.095 Td [(9.1)-1450(hb)]TJ +/F84 9.9626 Tf 14.944 -12.094 Td [(9.1)]TJ 0.98 0 0 1 137.753 204.429 Tm [(hb)]TJ ET q -1 0 0 1 153.644 180.579 cm +1 0 0 1 149.432 204.628 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 156.633 180.38 Td [(r)18(ead)-400(\227)-400(Read)-400(a)-400(sparse)-400(matrix)-400(fr)18(om)-400(a)-400(\002le)-400(in)-400(the)-400(Harwell\226)]TJ -18.88 -11.956 Td [(Boeing)-250(format)]TJ +/F84 9.9626 Tf 0.98 0 0 1 152.421 204.429 Tm [(r)18(ead)-209(\227)-209(Read)-210(a)-209(sparse)-210(matr)1(ix)-210(fr)19(om)-210(a)-209(\002le)-210(in)-209(the)-209(Harwell\226Boeing)]TJ 1 0 0 1 137.753 192.474 Tm [(format)]TJ 0 g 0 G - [-652(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-967(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(143)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.094 Td [(9.2)-1050(hb)]TJ + -22.914 -12.094 Td [(9.2)]TJ 0.99 0 0 1 137.753 180.38 Tm [(hb)]TJ ET q -1 0 0 1 149.659 156.529 cm +1 0 0 1 149.546 180.579 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 152.647 156.33 Td [(write)-226(\227)-226(W)74(rite)-226(a)-226(sparse)-226(matrix)-226(to)-226(a)-225(\002le)-226(in)-226(the)-226(Harwell\226Boeing)]TJ -14.894 -11.955 Td [(format)]TJ +/F84 9.9626 Tf 0.99 0 0 1 152.534 180.38 Tm [(write)-252(\227)-251(W)75(rite)-252(a)-251(sparse)-252(matrix)-251(to)-252(a)-251(\002le)-252(in)-251(the)-252(Harwell\226Boeing)]TJ 1 0 0 1 137.753 168.424 Tm [(format)]TJ 0 g 0 G [-967(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(144)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.094 Td [(9.3)-1050(mm)]TJ + -22.914 -12.094 Td [(9.3)]TJ 1.014 0 0 1 137.753 156.33 Tm [(mm)]TJ ET q -1 0 0 1 155.945 132.48 cm +1 0 0 1 156.191 156.529 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 158.934 132.281 Td [(mat)]TJ +/F84 9.9626 Tf 1.014 0 0 1 159.18 156.33 Tm [(mat)]TJ ET q -1 0 0 1 176.558 132.48 cm +1 0 0 1 177.042 156.529 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 179.546 132.281 Td [(r)18(ead)-265(\227)-265(Read)-265(a)-265(sparse)-265(matrix)-265(fr)18(om)-265(a)-265(\002le)-265(in)-265(the)-265(Matrix-)]TJ -41.793 -11.955 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 1.014 0 0 1 180.031 156.33 Tm [(r)18(ead)-246(\227)-245(Read)-246(a)-245(sparse)-245(matrix)-246(fr)18(om)-245(a)-246(\002le)-245(in)-246(the)-245(Matrix-)]TJ 1 0 0 1 137.753 144.375 Tm [(Market)-250(format)]TJ 0 g 0 G [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(145)]TJ 0 g 0 G -0 g 0 G - 129.649 -29.888 Td [(iii)]TJ -0 g 0 G -ET - -endstream -endobj -867 0 obj -<< -/Length 13525 ->> -stream -0 g 0 G -0 g 0 G 0 0 1 rg 0 0 1 RG -BT -/F62 9.9626 Tf 165.649 706.129 Td [(9.4)-1050(mm)]TJ + -22.914 -12.094 Td [(9.4)]TJ 1.02 0 0 1 137.753 132.281 Tm [(mm)]TJ ET q -1 0 0 1 206.755 706.328 cm +1 0 0 1 156.297 132.48 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.743 706.129 Td [(array)]TJ +/F84 9.9626 Tf 1.02 0 0 1 159.286 132.281 Tm [(array)]TJ ET q -1 0 0 1 233.713 706.328 cm +1 0 0 1 183.723 132.48 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 236.702 706.129 Td [(r)18(ead)-281(\227)-281(Read)-281(a)-281(dense)-281(array)-281(fr)18(om)-281(a)-281(\002le)-281(in)-281(the)-281(Matrix-)]TJ -48.139 -11.955 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 1.02 0 0 1 186.712 132.281 Tm [(r)18(ead)-247(\227)-247(Read)-247(a)-247(dense)-247(array)-246(fr)17(om)-247(a)-247(\002le)-246(in)-247(the)-247(Matrix-)]TJ 1 0 0 1 137.753 120.326 Tm [(Market)-250(format)]TJ 0 g 0 G [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(146)]TJ 0 g 0 G +0 g 0 G + 129.649 -29.888 Td [(iii)]TJ +0 g 0 G +ET + +endstream +endobj +871 0 obj +<< +/Length 13169 +>> +stream +0 g 0 G +0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -11.955 Td [(9.5)-1050(mm)]TJ +BT +/F84 9.9626 Tf 165.649 706.129 Td [(9.5)]TJ 0.98 0 0 1 188.563 706.129 Tm [(mm)]TJ ET q -1 0 0 1 206.755 682.418 cm +1 0 0 1 206.403 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.743 682.219 Td [(mat)]TJ +/F84 9.9626 Tf 0.98 0 0 1 209.392 706.129 Tm [(mat)]TJ ET q -1 0 0 1 227.367 682.418 cm +1 0 0 1 226.675 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 230.356 682.219 Td [(write)-333(\227)-333(W)74(rite)-334(a)-333(sparse)-333(matrix)-333(to)-333(a)-334(\002le)-333(in)-333(the)-333(Matrix-)]TJ -41.793 -11.956 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 0.98 0 0 1 229.664 706.129 Tm [(write)-234(\227)-234(W)76(rite)-234(a)-234(sparse)-234(matrix)-234(to)-234(a)-234(\002le)-234(in)-234(the)-234(MatrixMar)19(-)]TJ 1 0 0 1 188.563 694.174 Tm [(ket)-250(format)]TJ 0 g 0 G - [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-856(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(147)]TJ 0 g 0 G @@ -3292,157 +3278,185 @@ BT -22.914 -11.955 Td [(9.6)-1050(mm)]TJ ET q -1 0 0 1 206.755 658.507 cm +1 0 0 1 206.755 682.418 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.743 658.308 Td [(array)]TJ +/F84 9.9626 Tf 209.743 682.219 Td [(array)]TJ ET q -1 0 0 1 233.713 658.507 cm +1 0 0 1 233.713 682.418 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 236.702 658.308 Td [(write)-234(\227)-234(W)74(rite)-234(a)-234(dense)-234(array)-234(fr)18(om)-234(a)-234(\002le)-234(in)-234(the)-234(Matrix-)]TJ -48.139 -11.955 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 236.702 682.219 Td [(write)-249(\227)-249(W)74(rite)-249(a)-249(dense)-250(array)-249(fr)18(om)-249(a)-249(\002le)-249(in)-249(the)-249(Matrix-)]TJ -48.139 -11.956 Td [(Market)-250(format)]TJ 0 g 0 G [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(148)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -37.858 -21.918 Td [(10)-500(Preconditioner)-250(routines)]TJ +/F75 9.9626 Tf -37.858 -21.917 Td [(10)-500(Preconditioner)-250(routines)]TJ 0 g 0 G [-20696(150)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(10.1)-550(init)-250(\227)-250(Initialize)-250(a)-250(pr)18(econditioner)]TJ +/F84 9.9626 Tf 14.944 -11.956 Td [(10.1)-550(init)-250(\227)-250(Initialize)-250(a)-250(pr)18(econditioner)]TJ 0 g 0 G [-772(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(151)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.2)-550(build)-250(\227)-250(Builds)-250(a)-250(pr)18(econditioner)]TJ + 0 -11.955 Td [(10.2)-550(Set)-250(\227)-250(set)-250(pr)18(econditioner)-250(parameters)]TJ 0 g 0 G - [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-609(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(152)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.3)-550(apply)-250(\227)-250(Pr)18(econditioner)-250(application)-250(r)18(outine)]TJ + 0 -11.955 Td [(10.3)-550(build)-250(\227)-250(Builds)-250(a)-250(pr)18(econditioner)]TJ +0 g 0 G + [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1000(155)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + 0 -11.955 Td [(10.4)-550(apply)-250(\227)-250(Pr)18(econditioner)-250(application)-250(r)18(outine)]TJ 0 g 0 G [-421(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(154)]TJ + [-1000(157)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.4)-550(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(curr)18(ent)-250(pr)18(econditioner)]TJ + 0 -11.955 Td [(10.5)-550(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(curr)18(ent)-250(pr)18(econditioner)]TJ 0 g 0 G [-350(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(155)]TJ + [-1000(158)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.956 Td [(10.5)-550(clone)-250(\227)-250(clone)-250(curr)18(ent)-250(pr)18(econditioner)]TJ + 0 -11.955 Td [(10.6)-550(clone)-250(\227)-250(clone)-250(curr)18(ent)-250(pr)18(econditioner)]TJ 0 g 0 G [-260(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(156)]TJ + [-1000(159)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.6)-550(fr)18(ee)-250(\227)-250(Fr)18(ee)-250(a)-250(pr)18(econditioner)]TJ + 0 -11.956 Td [(10.7)-550(fr)18(ee)-250(\227)-250(Fr)18(ee)-250(a)-250(pr)18(econditioner)]TJ 0 g 0 G [-341(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(157)]TJ + [-1000(160)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -21.918 Td [(11)-500(Iterative)-250(Methods)]TJ +/F75 9.9626 Tf -14.944 -21.917 Td [(11)-500(Iterative)-250(Methods)]TJ 0 g 0 G - [-23362(158)]TJ + [-23362(161)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(11.1)-550(psb)]TJ +/F84 9.9626 Tf 14.944 -11.956 Td [(11.1)-520(psb)]TJ ET q -1 0 0 1 204.881 519.031 cm +1 0 0 1 204.583 530.986 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 518.831 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ +/F84 9.9626 Tf 207.571 530.786 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ 0 g 0 G - [-716(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-746(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(159)]TJ + [-1000(162)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -11.955 Td [(11.2)-550(psb)]TJ + -41.922 -11.955 Td [(11.2)-520(psb)]TJ ET q -1 0 0 1 204.881 507.075 cm +1 0 0 1 204.583 519.031 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 506.876 Td [(richar)18(dson)-250(\227)-250(Richar)18(dson)-250(Iteration)-250(Driver)-250(Routine)]TJ +/F84 9.9626 Tf 207.571 518.831 Td [(richar)18(dson)-250(\227)-250(Richar)18(dson)-250(Iteration)-250(Driver)-250(Routine)]TJ 0 g 0 G - [-809(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-839(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(162)]TJ + [-1000(165)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.165 -21.918 Td [(12)-500(Extensions)]TJ +/F75 9.9626 Tf -56.866 -21.918 Td [(12)-500(Extensions)]TJ 0 g 0 G - [-26557(165)]TJ + [-26557(168)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(12.1)-550(Using)-250(the)-250(extensions)]TJ +/F84 9.9626 Tf 14.944 -11.955 Td [(12.1)-550(Using)-250(the)-250(extensions)]TJ 0 g 0 G [-783(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(165)]TJ + [-1000(168)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.2)-550(Extensions')-250(Data)-250(Str)8(uctur)18(es)]TJ 0 g 0 G [-797(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(166)]TJ + [-1000(169)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.3)-550(CPU-class)-250(extensions)]TJ 0 g 0 G [-544(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(166)]TJ + [-1000(169)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.4)-550(CUDA-class)-250(extensions)]TJ 0 g 0 G [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(176)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG +/F75 9.9626 Tf -14.944 -21.918 Td [(13)-500(CUDA)-250(Environment)-250(Routines)]TJ 0 g 0 G + [-17779(177)]TJ 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -21.918 Td [(13)-500(CUDA)-250(Environment)-250(Routines)]TJ +/F84 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ +ET +q +1 0 0 1 181.967 415.419 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 184.956 415.22 Td [(cuda)]TJ +ET +q +1 0 0 1 207.053 415.419 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 210.042 415.22 Td [(init)]TJ +0 g 0 G + [-304(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1000(177)]TJ 0 g 0 G - [-17779(174)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ + -44.393 -11.955 Td [(psb)]TJ ET q 1 0 0 1 181.967 403.464 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 403.265 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 403.265 Td [(cuda)]TJ ET q 1 0 0 1 207.053 403.464 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 403.265 Td [(init)]TJ +/F84 9.9626 Tf 210.042 403.265 Td [(exit)]TJ 0 g 0 G - [-304(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-932(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(174)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.956 Td [(psb)]TJ @@ -3452,18 +3466,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 391.309 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 391.309 Td [(cuda)]TJ ET q 1 0 0 1 207.053 391.509 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 391.309 Td [(exit)]TJ +/F84 9.9626 Tf 210.042 391.309 Td [(DeviceSync)]TJ 0 g 0 G - [-932(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-405(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(174)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3473,18 +3487,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 379.354 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 379.354 Td [(cuda)]TJ ET q 1 0 0 1 207.053 379.554 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 379.354 Td [(DeviceSync)]TJ +/F84 9.9626 Tf 210.042 379.354 Td [(getDeviceCount)]TJ 0 g 0 G - [-405(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-635(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3494,18 +3508,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 367.399 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 367.399 Td [(cuda)]TJ ET q 1 0 0 1 207.053 367.598 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 367.399 Td [(getDeviceCount)]TJ +/F84 9.9626 Tf 210.042 367.399 Td [(getDevice)]TJ 0 g 0 G - [-635(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-401(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3515,18 +3529,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 355.444 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 355.444 Td [(cuda)]TJ ET q 1 0 0 1 207.053 355.643 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 355.444 Td [(getDevice)]TJ +/F84 9.9626 Tf 210.042 355.444 Td [(setDevice)]TJ 0 g 0 G - [-401(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-533(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3536,18 +3550,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 343.489 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 343.489 Td [(cuda)]TJ ET q 1 0 0 1 207.053 343.688 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 343.489 Td [(setDevice)]TJ +/F84 9.9626 Tf 210.042 343.489 Td [(DeviceHasUV)111(A)]TJ 0 g 0 G - [-533(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-839(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3557,18 +3571,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 331.534 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 331.534 Td [(cuda)]TJ ET q 1 0 0 1 207.053 331.733 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 331.534 Td [(DeviceHasUV)111(A)]TJ +/F84 9.9626 Tf 210.042 331.534 Td [(W)92(arpSize)]TJ 0 g 0 G - [-839(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-595(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.956 Td [(psb)]TJ @@ -3578,18 +3592,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 319.578 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 319.578 Td [(cuda)]TJ ET q 1 0 0 1 207.053 319.778 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 319.578 Td [(W)92(arpSize)]TJ +/F84 9.9626 Tf 210.042 319.578 Td [(MultiPr)18(ocessors)]TJ 0 g 0 G - [-595(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-674(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3599,18 +3613,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 307.623 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 307.623 Td [(cuda)]TJ ET q 1 0 0 1 207.053 307.823 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 307.623 Td [(MultiPr)18(ocessors)]TJ +/F84 9.9626 Tf 210.042 307.623 Td [(MaxThr)18(eadsPerMP)]TJ 0 g 0 G - [-674(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-718(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3620,18 +3634,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 295.668 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 295.668 Td [(cuda)]TJ ET q 1 0 0 1 207.053 295.867 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 295.668 Td [(MaxThr)18(eadsPerMP)]TJ +/F84 9.9626 Tf 210.042 295.668 Td [(MaxRegisterPerBlock)]TJ 0 g 0 G - [-718(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-538(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(175)]TJ + [-1000(179)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3641,18 +3655,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 283.713 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 283.713 Td [(cuda)]TJ ET q 1 0 0 1 207.053 283.912 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 283.713 Td [(MaxRegisterPerBlock)]TJ +/F84 9.9626 Tf 210.042 283.713 Td [(MemoryClockRate)]TJ 0 g 0 G - [-538(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(176)]TJ + [-1000(179)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3662,18 +3676,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 271.758 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 271.758 Td [(cuda)]TJ ET q 1 0 0 1 207.053 271.957 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 271.758 Td [(MemoryClockRate)]TJ +/F84 9.9626 Tf 210.042 271.758 Td [(MemoryBusW)55(idth)]TJ 0 g 0 G - [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(176)]TJ + [-1000(179)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3683,893 +3697,872 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 259.803 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 259.803 Td [(cuda)]TJ ET q 1 0 0 1 207.053 260.002 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 259.803 Td [(MemoryBusW)55(idth)]TJ -0 g 0 G - [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ -0 g 0 G - [-1000(176)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - -44.393 -11.956 Td [(psb)]TJ -ET -q -1 0 0 1 181.967 248.047 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 184.956 247.847 Td [(cuda)]TJ -ET -q -1 0 0 1 207.053 248.047 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 210.042 247.847 Td [(MemoryPeakBandwidth)]TJ +/F84 9.9626 Tf 210.042 259.803 Td [(MemoryPeakBandwidth)]TJ 0 g 0 G [-652(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(176)]TJ + [-1000(179)]TJ 0 g 0 G 0 g 0 G - 108.254 -157.409 Td [(iv)]TJ + 108.254 -169.365 Td [(iv)]TJ 0 g 0 G ET endstream endobj -781 0 obj +785 0 obj << /Type /ObjStm /N 100 /First 926 -/Length 16374 ->> -stream -740 0 741 152 742 298 743 450 744 602 745 754 746 906 747 1058 748 1210 749 1362 -750 1514 751 1665 752 1818 753 1971 754 2124 755 2277 756 2430 757 2583 758 2736 759 2883 -760 3033 761 3185 762 3337 763 3489 764 3636 765 3788 766 3940 767 4092 768 4244 769 4396 -770 4548 771 4700 772 4852 773 5004 774 5157 775 5308 780 5459 777 5516 825 5596 776 6098 -782 6251 783 6403 784 6556 785 6707 786 6860 787 7013 788 7166 789 7318 790 7470 791 7623 -792 7776 793 7929 794 8082 795 8234 796 8387 797 8533 798 8685 828 8837 799 8988 800 9140 -801 9292 802 9444 803 9596 804 9746 805 9898 806 10050 807 10203 808 10356 809 10507 810 10659 -811 10812 812 10965 813 11118 814 11271 815 11417 816 11569 817 11721 818 11873 829 12025 819 12176 -820 12322 830 12474 821 12625 831 12777 822 12928 832 13080 827 13229 824 13285 866 13365 823 13779 -869 13931 833 14083 870 14235 834 14387 871 14539 835 14691 836 14836 837 14989 838 15142 839 15295 -% 740 0 obj +/Length 16358 +>> +stream +742 0 743 152 744 304 745 450 746 602 747 754 748 906 749 1058 750 1210 751 1362 +752 1514 753 1666 754 1818 755 1969 756 2122 757 2275 758 2428 759 2581 760 2734 761 2887 +762 3033 763 3184 764 3334 765 3486 766 3638 767 3785 768 3937 769 4089 770 4241 771 4393 +772 4545 773 4697 774 4849 775 5001 776 5153 777 5306 778 5458 779 5609 784 5760 781 5817 +829 5897 780 6399 786 6552 787 6705 788 6858 789 7009 790 7161 791 7314 792 7467 793 7620 +794 7772 795 7925 796 8078 797 8230 798 8383 799 8536 800 8681 801 8832 802 8984 803 9136 +804 9288 805 9440 806 9592 807 9742 808 9894 809 10046 810 10199 811 10351 812 10504 813 10657 +814 10809 815 10962 816 11115 817 11268 818 11414 819 11566 820 11716 821 11868 832 12020 822 12171 +823 12317 833 12469 824 12620 834 12772 825 12923 835 13075 826 13226 836 13378 831 13527 828 13583 +870 13663 827 14069 873 14221 837 14373 874 14525 838 14677 839 14821 840 14974 841 15126 842 15279 +% 742 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 596.256 318.663 605.666] +/A << /S /GoTo /D (subsection.3.4) >> +>> +% 743 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 569.446 277.409 581.506] +/Rect [164.653 581.526 277.409 593.586] /A << /S /GoTo /D (subsection.3.5) >> >> -% 741 0 obj +% 744 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 547.56 275.386 559.281] +/Rect [149.709 559.64 275.386 571.361] /A << /S /GoTo /D (section.4) >> >> -% 742 0 obj +% 745 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 535.241 380.451 547.301] +/Rect [164.653 547.321 380.152 559.381] /A << /S /GoTo /D (subsection.4.1) >> >> -% 743 0 obj +% 746 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 523.162 302.763 535.221] +/Rect [164.653 535.241 302.465 547.301] /A << /S /GoTo /D (subsection.4.2) >> >> -% 744 0 obj +% 747 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 511.082 362.977 523.142] +/Rect [164.653 523.162 362.678 535.221] /A << /S /GoTo /D (subsection.4.3) >> >> -% 745 0 obj +% 748 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 499.002 354.758 511.062] +/Rect [164.653 511.082 354.459 523.142] /A << /S /GoTo /D (subsection.4.4) >> >> -% 746 0 obj +% 749 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 486.923 379.844 498.982] +/Rect [164.653 499.002 379.545 511.062] /A << /S /GoTo /D (subsection.4.5) >> >> -% 747 0 obj +% 750 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 474.843 329.154 486.903] +/Rect [164.653 486.923 328.856 498.982] /A << /S /GoTo /D (subsection.4.6) >> >> -% 748 0 obj +% 751 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 462.763 394.738 474.823] +/Rect [164.653 474.843 394.439 486.903] /A << /S /GoTo /D (subsection.4.7) >> >> -% 749 0 obj +% 752 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 450.684 329.154 462.743] +/Rect [164.653 462.763 328.856 474.823] /A << /S /GoTo /D (subsection.4.8) >> >> -% 750 0 obj +% 753 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 438.604 394.24 450.663] +/Rect [164.653 450.684 393.941 462.743] /A << /S /GoTo /D (subsection.4.9) >> >> -% 751 0 obj +% 754 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 426.524 362.499 438.584] +/Rect [164.653 438.604 362.2 450.663] /A << /S /GoTo /D (subsection.4.10) >> >> -% 752 0 obj +% 755 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 414.444 387.276 426.504] +/Rect [164.653 426.524 386.977 438.584] /A << /S /GoTo /D (subsection.4.11) >> >> -% 753 0 obj +% 756 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 402.365 425.761 414.424] +/Rect [164.653 414.444 425.462 426.504] /A << /S /GoTo /D (subsection.4.12) >> >> -% 754 0 obj +% 757 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 390.285 353.991 402.345] +/Rect [164.653 402.365 353.692 414.424] /A << /S /GoTo /D (subsection.4.13) >> >> -% 755 0 obj +% 758 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 378.205 331.346 390.265] +/Rect [164.653 390.285 331.047 402.345] /A << /S /GoTo /D (subsection.4.14) >> >> -% 756 0 obj +% 759 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 366.126 333.538 378.185] +/Rect [164.653 378.205 333.239 390.265] /A << /S /GoTo /D (subsection.4.15) >> >> -% 757 0 obj +% 760 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 354.046 337.602 366.106] +/Rect [164.653 366.126 337.303 378.185] /A << /S /GoTo /D (subsection.4.16) >> >> -% 758 0 obj +% 761 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 334.551 280.368 343.701] +/Rect [149.709 346.63 280.368 355.781] /A << /S /GoTo /D (section.5) >> >> -% 759 0 obj +% 762 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 319.841 362.031 331.9] +/Rect [164.653 331.921 361.732 343.98] /A << /S /GoTo /D (subsection.5.1) >> >> -% 760 0 obj +% 763 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 307.761 313.065 319.821] +/Rect [164.653 319.841 312.766 331.9] /A << /S /GoTo /D (subsection.5.2) >> >> -% 761 0 obj +% 764 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 295.681 376.127 307.741] +/Rect [164.653 307.761 375.828 319.821] /A << /S /GoTo /D (subsection.5.3) >> >> -% 762 0 obj +% 765 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 283.602 376.187 295.661] +/Rect [164.653 295.681 375.888 307.741] /A << /S /GoTo /D (subsection.5.4) >> >> -% 763 0 obj +% 766 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 261.636 289.504 273.257] +/Rect [149.709 273.716 289.504 285.337] /A << /S /GoTo /D (section.6) >> >> -% 764 0 obj +% 767 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 249.397 412.092 261.456] +/Rect [164.653 261.476 411.793 273.536] /A << /S /GoTo /D (subsection.6.1) >> >> -% 765 0 obj +% 768 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 237.317 428.052 249.377] +/Rect [164.653 249.397 427.753 261.456] /A << /S /GoTo /D (subsection.6.2) >> >> -% 766 0 obj +% 769 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 225.237 445.915 237.297] +/Rect [164.653 237.317 445.616 249.377] /A << /S /GoTo /D (subsection.6.3) >> >> -% 767 0 obj +% 770 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 213.158 407.011 225.217] +/Rect [164.653 225.237 406.712 237.297] /A << /S /GoTo /D (subsection.6.4) >> >> -% 768 0 obj +% 771 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 201.078 400.356 213.138] +/Rect [164.653 213.158 400.057 225.217] /A << /S /GoTo /D (subsection.6.5) >> >> -% 769 0 obj +% 772 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 188.998 461.277 201.058] +/Rect [164.653 201.078 460.978 213.138] /A << /S /GoTo /D (subsection.6.6) >> >> -% 770 0 obj +% 773 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 176.918 355.017 188.978] +/Rect [164.653 188.998 354.718 201.058] /A << /S /GoTo /D (subsection.6.7) >> >> -% 771 0 obj +% 774 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 164.839 446.841 176.898] +/Rect [164.653 176.918 446.543 188.978] /A << /S /GoTo /D (subsection.6.8) >> >> -% 772 0 obj +% 775 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 152.759 387.206 164.819] +/Rect [164.653 164.839 386.907 176.898] /A << /S /GoTo /D (subsection.6.9) >> >> -% 773 0 obj +% 776 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 140.679 343.281 152.739] +/Rect [164.653 152.759 342.982 164.819] /A << /S /GoTo /D (subsection.6.10) >> >> -% 774 0 obj +% 777 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 128.6 460.789 140.659] +/Rect [164.653 140.679 460.49 152.739] /A << /S /GoTo /D (subsection.6.11) >> >> -% 775 0 obj +% 778 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 116.52 352.646 128.58] +/Rect [164.653 128.6 352.347 140.659] /A << /S /GoTo /D (subsection.6.12) >> >> -% 780 0 obj +% 779 0 obj << -/D [778 0 R /XYZ 149.705 753.953 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 116.52 381.427 128.58] +/A << /S /GoTo /D (subsection.6.13) >> >> -% 777 0 obj +% 784 0 obj +<< +/D [782 0 R /XYZ 149.705 753.953 null] +>> +% 781 0 obj << -/Font << /F62 671 0 R /F59 669 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 825 0 obj +% 829 0 obj << /Type /Page -/Contents 826 0 R -/Resources 824 0 R +/Contents 830 0 R +/Resources 828 0 R /MediaBox [0 0 595.276 841.89] -/Parent 672 0 R -/Annots [ 776 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 828 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R 829 0 R 819 0 R 820 0 R 830 0 R 821 0 R 831 0 R 822 0 R 832 0 R ] ->> -% 776 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 702.323 330.917 714.383] -/A << /S /GoTo /D (subsection.6.13) >> +/Parent 676 0 R +/Annots [ 780 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R 819 0 R 820 0 R 821 0 R 832 0 R 822 0 R 823 0 R 833 0 R 824 0 R 834 0 R 825 0 R 835 0 R 826 0 R 836 0 R ] >> -% 782 0 obj +% 780 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 690.229 308.85 702.289] +/Rect [113.843 702.323 308.551 714.383] /A << /S /GoTo /D (subsection.6.14) >> >> -% 783 0 obj +% 786 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 678.135 290.101 690.194] +/Rect [113.843 690.229 289.802 702.289] /A << /S /GoTo /D (subsection.6.15) >> >> -% 784 0 obj +% 787 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 666.041 386.806 678.1] +/Rect [113.843 678.135 386.507 690.194] /A << /S /GoTo /D (subsection.6.16) >> >> -% 785 0 obj +% 788 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 653.946 368.116 666.006] +/Rect [113.843 666.041 367.818 678.1] /A << /S /GoTo /D (subsection.6.17) >> >> -% 786 0 obj +% 789 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 641.852 370.219 653.912] +/Rect [113.843 653.946 369.92 666.006] /A << /S /GoTo /D (subsection.6.18) >> >> -% 787 0 obj +% 790 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 629.758 214.116 641.818] +/Rect [113.843 641.852 213.818 653.912] /A << /S /GoTo /D (subsection.6.19) >> >> -% 788 0 obj +% 791 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 617.664 231.69 629.724] +/Rect [113.843 629.758 231.391 641.818] /A << /S /GoTo /D (subsection.6.20) >> >> -% 789 0 obj +% 792 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 605.57 204.353 617.629] +/Rect [113.843 617.664 204.054 629.724] /A << /S /GoTo /D (subsection.6.21) >> >> -% 790 0 obj +% 793 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 593.476 221.927 605.535] +/Rect [113.843 605.57 221.628 617.629] /A << /S /GoTo /D (subsection.6.22) >> >> -% 791 0 obj +% 794 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 581.381 379.076 593.441] +/Rect [113.843 593.476 378.777 605.535] /A << /S /GoTo /D (subsection.6.23) >> >> -% 792 0 obj +% 795 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 569.287 359.768 581.347] +/Rect [113.843 581.381 359.469 593.441] /A << /S /GoTo /D (subsection.6.24) >> >> -% 793 0 obj +% 796 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 557.193 373.158 569.253] +/Rect [113.843 569.287 372.86 581.347] /A << /S /GoTo /D (subsection.6.25) >> >> -% 794 0 obj +% 797 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 545.099 287.68 557.158] +/Rect [113.843 557.193 287.381 569.253] /A << /S /GoTo /D (subsection.6.26) >> >> -% 795 0 obj +% 798 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 533.005 221.369 545.064] +/Rect [113.843 545.099 221.369 557.158] /A << /S /GoTo /D (subsection.6.27) >> >> -% 796 0 obj +% 799 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 513.485 251.974 522.815] +/Rect [98.899 525.58 251.974 534.909] /A << /S /GoTo /D (section.7) >> >> -% 797 0 obj +% 800 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 498.761 364.739 510.821] +/Rect [113.843 510.855 364.44 522.915] /A << /S /GoTo /D (subsection.7.1) >> >> -% 798 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 486.667 444.603 498.726] -/A << /S /GoTo /D (subsection.7.2) >> ->> -% 828 0 obj +% 801 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 477.362 161.365 486.467] +/Rect [113.843 498.761 429.161 510.821] /A << /S /GoTo /D (subsection.7.2) >> >> -% 799 0 obj +% 802 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 462.617 364.172 474.677] +/Rect [113.843 486.667 363.873 498.726] /A << /S /GoTo /D (subsection.7.3) >> >> -% 800 0 obj +% 803 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 450.523 358.772 462.583] +/Rect [113.843 474.573 358.473 486.632] /A << /S /GoTo /D (subsection.7.4) >> >> -% 801 0 obj +% 804 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 438.429 307.635 450.489] +/Rect [113.843 462.478 307.336 474.538] /A << /S /GoTo /D (subsection.7.5) >> >> -% 802 0 obj +% 805 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 426.335 277.737 438.395] +/Rect [113.843 450.384 277.438 462.444] /A << /S /GoTo /D (subsection.7.6) >> >> -% 803 0 obj +% 806 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 414.241 393.262 426.3] +/Rect [113.843 438.29 392.963 450.35] /A << /S /GoTo /D (subsection.7.7) >> >> -% 804 0 obj +% 807 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 402.147 288.227 414.206] +/Rect [113.843 426.196 287.928 438.256] /A << /S /GoTo /D (subsection.7.8) >> >> -% 805 0 obj +% 808 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 390.052 260.403 402.112] +/Rect [113.843 414.102 260.104 426.161] /A << /S /GoTo /D (subsection.7.9) >> >> -% 806 0 obj +% 809 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 377.958 242.878 390.018] +/Rect [113.843 402.008 242.579 414.067] /A << /S /GoTo /D (subsection.7.10) >> >> -% 807 0 obj +% 810 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 365.864 269.159 377.924] +/Rect [113.843 389.913 268.86 401.973] /A << /S /GoTo /D (subsection.7.11) >> >> -% 808 0 obj +% 811 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 353.77 266.31 365.829] +/Rect [113.843 377.819 266.011 389.879] /A << /S /GoTo /D (subsection.7.12) >> >> -% 809 0 obj +% 812 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 341.676 335.51 353.735] +/Rect [113.843 365.725 335.211 377.785] /A << /S /GoTo /D (subsection.7.13) >> >> -% 810 0 obj +% 813 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 329.581 334.742 341.641] +/Rect [113.843 353.631 334.444 365.69] /A << /S /GoTo /D (subsection.7.14) >> >> -% 811 0 obj +% 814 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 317.487 305.523 329.547] +/Rect [113.843 341.537 305.224 353.596] /A << /S /GoTo /D (subsection.7.15) >> >> -% 812 0 obj +% 815 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 305.393 232.786 317.453] +/Rect [113.843 329.442 232.488 341.502] /A << /S /GoTo /D (subsection.7.16) >> >> -% 813 0 obj +% 816 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 293.299 242.519 305.359] +/Rect [113.843 317.348 242.221 329.408] /A << /S /GoTo /D (subsection.7.17) >> >> -% 814 0 obj +% 817 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 271.309 183.083 283.109] +/Rect [98.899 295.358 183.083 307.159] /A << /S /GoTo /D (section.8) >> >> -% 815 0 obj +% 818 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 259.055 387.474 271.115] +/Rect [113.843 283.105 387.175 295.164] /A << /S /GoTo /D (subsection.8.1) >> >> -% 816 0 obj +% 819 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 246.961 415.897 259.021] +/Rect [113.843 271.01 415.598 283.07] /A << /S /GoTo /D (subsection.8.2) >> >> -% 817 0 obj +% 820 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 234.867 399.738 246.926] +/Rect [113.843 258.916 399.439 270.976] /A << /S /GoTo /D (subsection.8.3) >> >> -% 818 0 obj +% 821 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 222.773 444.603 234.832] +/Rect [113.843 246.822 444.603 258.882] /A << /S /GoTo /D (subsection.8.4) >> >> -% 829 0 obj +% 832 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 213.468 180.781 222.877] +/Rect [98.899 237.517 180.781 246.926] /A << /S /GoTo /D (subsection.8.4) >> >> -% 819 0 obj +% 822 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 191.298 152.896 200.628] +/Rect [98.899 215.348 152.896 224.677] /A << /S /GoTo /D (section.9) >> >> -% 820 0 obj +% 823 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 176.574 444.603 188.633] +/Rect [113.843 200.623 444.603 212.683] /A << /S /GoTo /D (subsection.9.1) >> >> -% 830 0 obj +% 833 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 164.619 201.494 176.678] +/Rect [98.899 191.318 168.468 200.728] /A << /S /GoTo /D (subsection.9.1) >> >> -% 821 0 obj +% 824 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 152.524 444.603 164.584] +/Rect [113.843 176.574 444.603 188.633] /A << /S /GoTo /D (subsection.9.2) >> >> -% 831 0 obj +% 834 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 143.219 168.468 152.629] +/Rect [98.899 167.269 168.468 176.678] /A << /S /GoTo /D (subsection.9.2) >> >> -% 822 0 obj +% 825 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 128.475 444.603 140.535] +/Rect [113.843 152.524 444.603 164.584] /A << /S /GoTo /D (subsection.9.3) >> >> -% 832 0 obj +% 835 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 119.17 202.859 128.58] +/Rect [98.899 143.219 202.859 152.629] /A << /S /GoTo /D (subsection.9.3) >> >> -% 827 0 obj -<< -/D [825 0 R /XYZ 98.895 753.953 null] ->> -% 824 0 obj -<< -/Font << /F62 671 0 R /F59 669 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 866 0 obj -<< -/Type /Page -/Contents 867 0 R -/Resources 865 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 672 0 R -/Annots [ 823 0 R 869 0 R 833 0 R 870 0 R 834 0 R 871 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R ] ->> -% 823 0 obj +% 826 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 702.323 495.412 714.383] +/Rect [113.843 128.475 444.603 140.535] /A << /S /GoTo /D (subsection.9.4) >> >> -% 869 0 obj +% 836 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 693.018 253.668 702.428] +/Rect [98.899 119.17 202.859 128.58] /A << /S /GoTo /D (subsection.9.4) >> >> -% 833 0 obj +% 831 0 obj +<< +/D [829 0 R /XYZ 98.895 753.953 null] +>> +% 828 0 obj +<< +/Font << /F84 675 0 R /F75 673 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 870 0 obj +<< +/Type /Page +/Contents 871 0 R +/Resources 869 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 676 0 R +/Annots [ 827 0 R 873 0 R 837 0 R 874 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R 865 0 R 866 0 R 867 0 R 868 0 R ] +>> +% 827 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 678.413 495.412 690.472] +/Rect [164.653 702.323 495.412 714.383] /A << /S /GoTo /D (subsection.9.5) >> >> -% 870 0 obj +% 873 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 669.108 253.668 678.517] +/Rect [149.709 693.018 235.327 702.428] /A << /S /GoTo /D (subsection.9.5) >> >> -% 834 0 obj +% 837 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 654.503 495.412 666.562] +/Rect [164.653 678.413 495.412 690.472] /A << /S /GoTo /D (subsection.9.6) >> >> -% 871 0 obj +% 874 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 645.197 253.668 654.607] +/Rect [149.709 669.108 253.668 678.517] /A << /S /GoTo /D (subsection.9.6) >> >> -% 835 0 obj +% 838 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 623.26 274.28 632.59] +/Rect [149.709 647.17 274.28 656.5] /A << /S /GoTo /D (section.10) >> >> -% 836 0 obj +% 839 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 608.674 333.298 620.734] +/Rect [164.653 632.585 333.298 644.644] /A << /S /GoTo /D (subsection.10.1) >> >> -% 837 0 obj +% 840 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 596.719 331.326 608.779] +/Rect [164.653 620.63 349.866 632.689] /A << /S /GoTo /D (subsection.10.2) >> >> -% 838 0 obj +% 841 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 584.764 381.626 596.824] +/Rect [164.653 608.674 331.326 620.734] /A << /S /GoTo /D (subsection.10.3) >> >> -% 839 0 obj +% 842 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 572.809 427.165 584.869] +/Rect [164.653 596.719 381.626 608.779] /A << /S /GoTo /D (subsection.10.4) >> >> endstream endobj -885 0 obj +888 0 obj << -/Length 8045 +/Length 9121 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(1)-1000(Introduction)]TJ/F62 9.9626 Tf 0 -22.913 Td [(The)-272(PSBLAS)-271(library)111(,)-277(developed)-272(with)-272(t)1(he)-272(aim)-272(to)-271(facilitate)-272(the)-272(parallelization)-271(of)]TJ 0 -11.955 Td [(computationally)-348(intensive)-347(scienti\002c)-348(applications,)-372(is)-347(designed)-348(to)-348(addr)18(ess)-347(par)18(-)]TJ 0 -11.955 Td [(allel)-282(implementation)-283(of)-282(iterative)-282(solvers)-283(for)-282(sparse)-282(linear)-283(systems)-282(thr)18(ough)-282(the)]TJ 0 -11.955 Td [(distributed)-232(memory)-232(paradigm.)-304(It)-232(includes)-233(r)18(outines)-232(for)-232(multiplying)-232(sparse)-232(ma-)]TJ 0 -11.955 Td [(trices)-211(by)-211(dense)-211(matrices,)-219(solving)-211(block)-211(diagonal)-211(systems)-211(with)-211(triangular)-211(diago-)]TJ 0 -11.956 Td [(nal)-229(entries,)-233(pr)18(epr)18(ocessing)-228(sparse)-229(matrices,)-233(and)-228(contains)-229(additional)-229(r)18(outines)-228(for)]TJ 0 -11.955 Td [(dense)-292(matrix)-292(operations.)-436(The)-292(curr)18(ent)-292(implementation)-292(of)-292(PSBLAS)-292(addr)18(esses)-292(a)]TJ 0 -11.955 Td [(distributed)-250(memory)-250(execution)-250(model)-250(operating)-250(with)-250(message)-250(passing.)]TJ 14.944 -12.064 Td [(The)-267(PSBLAS)-267(library)-268(version)-267(3)-267(is)-267(implemented)-267(in)-267(the)-268(Fortran)-267(2003)-267([)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(1)-1000(Introduction)]TJ/F84 9.9626 Tf 1.009 0 0 1 99.587 682.871 Tm [(The)-247(PSBLAS)-247(library)110(,)-247(developed)-246(with)-247(the)-247(aim)-247(to)-247(facilitate)-246(the)-247(parallelization)-247(of)]TJ 0.98 0 0 1 99.895 670.916 Tm [(computationally)-246(intensive)-247(scienti\002c)-246(applications,)-248(is)-246(designed)-247(to)-246(addr)18(ess)-246(parallel)]TJ 1.02 0 0 1 99.895 658.961 Tm [(implementation)-250(of)-250(iterative)-251(solvers)-250(for)-250(sparse)-250(linear)-250(systems)-251(thr)18(ough)-250(the)-250(dis-)]TJ 0.98 0 0 1 99.895 647.006 Tm [(tributed)-232(memory)-232(paradigm.)-309(It)-232(includes)-232(r)18(outines)-232(for)-232(multiplying)-232(sparse)-232(matrices)]TJ 1.02 0 0 1 99.895 635.051 Tm [(by)-305(dense)-305(matrices,)-320(solving)-305(block)-305(diagonal)-305(systems)-306(with)-305(triangular)-305(diagonal)]TJ 1.02 0 0 1 99.895 623.095 Tm [(entries,)-366(pr)18(epr)18(ocessing)-342(sparse)-342(matrices,)-365(and)-342(contains)-342(additional)-341(r)17(outines)-341(for)]TJ 1.015 0 0 1 99.895 611.14 Tm [(dense)-245(matrix)-244(operations.)-305(The)-245(curr)18(ent)-245(implementation)-244(of)-245(PSBLAS)-244(addr)17(esses)-244(a)]TJ 1 0 0 1 99.895 599.185 Tm [(distributed)-250(memory)-250(execution)-250(model)-250(operating)-250(with)-250(message)-250(passing.)]TJ 1.013 0 0 1 114.839 587.121 Tm [(The)-247(PSBLAS)-246(library)-247(version)-246(3)-247(is)-247(implemented)-246(in)-247(the)-246(Fortran)-247(2003)-247([)]TJ 1 0 0 rg 1 0 0 RG - [(16)]TJ + 1 0 0 1 410.705 587.121 Tm [(16)]TJ 0 g 0 G - [(])-267(pr)18(o-)]TJ -14.944 -11.955 Td [(gramming)-278(language,)-284(with)-277(r)18(euse)-278(and/or)-278(adaptation)-277(of)-278(existing)-277(Fortran)-278(77)-277(and)]TJ 0 -11.955 Td [(Fortran)-250(95)-250(softwar)18(e,)-250(plus)-250(a)-250(handful)-250(of)-250(C)-250(r)18(outines.)]TJ 14.944 -12.064 Td [(The)-391(use)-392(of)-391(Fortran)-392(2003)-391(of)18(fers)-392(a)-391(number)-391(of)-392(advantages)-391(over)-392(Fortran)-391(95,)]TJ -14.944 -11.955 Td [(mostly)-385(in)-385(the)-385(handling)-385(of)-385(r)18(equir)18(ements)-385(for)-385(evolution)-385(and)-385(adaptation)-385(of)-385(the)]TJ 0 -11.956 Td [(library)-431(to)-432(new)-431(computing)-432(ar)18(chitectur)18(es)-431(and)-432(integration)-431(of)-432(new)-431(algorithms.)]TJ 0 -11.955 Td [(For)-365(a)-365(detail)1(ed)-365(discussion)-365(of)-365(our)-364(design)-365(see)-365([)]TJ + 1.013 0 0 1 420.668 587.121 Tm [(])-247(pr)18(o-)]TJ 1.009 0 0 1 99.895 575.166 Tm [(gramming)-247(language,)-248(with)-247(r)17(e)1(use)-248(and/or)-247(adaptation)-248(of)-247(existing)-248(Fortran)-247(77)-247(and)]TJ 1 0 0 1 99.895 563.211 Tm [(Fortran)-250(95)-250(softwar)18(e,)-250(plus)-250(a)-250(handful)-250(of)-250(C)-250(r)18(outines.)]TJ 1.02 0 0 1 114.839 551.147 Tm [(The)-348(use)-347(of)-348(Fortran)-348(2003)-348(of)18(fers)-347(a)-348(number)-348(of)-348(advant)1(ages)-348(over)-348(Fortran)-348(95,)]TJ 1.02 0 0 1 99.895 539.192 Tm [(mostly)-323(in)-324(the)-323(handling)-324(of)-323(r)17(equir)18(ements)-323(for)-324(evolution)-323(and)-324(adaptation)-323(of)-324(the)]TJ 0.995 0 0 1 99.895 527.237 Tm [(library)-252(to)-252(new)-252(computin)1(g)-252(ar)18(chitectur)18(es)-252(and)-252(integration)-252(of)-251(new)-252(algorithms.)-314(For)]TJ 1.011 0 0 1 99.895 515.281 Tm [(a)-247(detailed)-247(discussion)-247(of)-248(our)-247(design)-247(see)-247([)]TJ 1 0 0 rg 1 0 0 RG - [(10)]TJ + 1 0 0 1 276.552 515.281 Tm [(10)]TJ 0 g 0 G - [(];)-422(other)-365(works)-364(discussing)-365(ad-)]TJ 0 -11.955 Td [(vanced)-361(pr)18(ogramming)-362(in)-361(Fortran)-362(2003)-361(include)-362([)]TJ + 1.011 0 0 1 286.514 515.281 Tm [(];)-247(other)-247(works)-248(discussi)1(ng)-248(advanced)]TJ 0.98 0 0 1 99.596 503.326 Tm [(pr)18(ogramming)-202(in)-203(Fortran)-202(2003)-203(include)-202([)]TJ 1 0 0 rg 1 0 0 RG - [(20)]TJ + 1 0 0 1 265.469 503.326 Tm [(20)]TJ 0 g 0 G - [(,)]TJ + 0.98 0 0 1 275.432 503.326 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - [-361(18)]TJ + 1 0 0 1 279.85 503.326 Tm [(18)]TJ 0 g 0 G - [(];)-417(suf)18(\002cient)-362(support)-361(for)]TJ 0 -11.955 Td [(Fortran)-314(2003)-314(is)-313(now)-314(available)-314(fr)18(om)-314(many)-313(compilers,)-330(including)-314(the)-313(GNU)-314(For)18(-)]TJ 0 -11.955 Td [(tran)-250(compiler)-250(fr)18(om)-250(the)-250(Fr)18(ee)-250(Softwar)18(e)-250(Foundation)-250(\050as)-250(of)-250(version)-250(4.8\051.)]TJ 14.944 -12.064 Td [(Pr)18(evious)-311(appr)18(oaches)-312(have)-311(been)-311(based)-311(on)-312(mixing)-311(Fortran)-311(95,)-327(with)-311(its)-311(sup-)]TJ -14.944 -11.955 Td [(port)-249(for)-249(object-based)-249(design,)-249(with)-249(other)-249(languages;)-249(these)-249(have)-249(been)-249(advocated)]TJ 0 -11.956 Td [(by)-346(a)-346(number)-346(of)-347(authors,)-370(e.g.)-346([)]TJ + 0.98 0 0 1 289.813 503.326 Tm [(];)-220(suf)18(\002cient)-203(suppor)1(t)-203(for)-203(Fortran)-202(2003)]TJ 1.02 0 0 1 99.895 491.371 Tm [(is)-269(now)-268(available)-269(fr)18(om)-269(many)-268(compilers,)-275(including)-269(the)-268(GNU)-269(Fortran)-268(compiler)]TJ 1 0 0 1 99.895 479.416 Tm [(fr)18(om)-250(the)-250(Fr)18(ee)-250(Softwar)18(e)-250(Foundation)-250(\050as)-250(of)-250(version)-250(4.8\051.)]TJ 0.98 0 0 1 114.839 467.352 Tm [(Pr)18(evious)-234(appr)19(oaches)-234(have)-234(been)-234(based)-234(on)-234(mixing)-234(Fortran)-234(95,)-239(with)-234(its)-234(support)]TJ 1.02 0 0 1 99.895 455.397 Tm [(for)-260(object-based)-260(design,)-264(with)-260(other)-260(languages;)-267(these)-260(have)-260(been)-260(advocated)-260(by)]TJ 1.016 0 0 1 99.895 443.442 Tm [(a)-246(number)-246(of)-247(aut)1(hors,)-247(e.g.)-246([)]TJ 1 0 0 rg 1 0 0 RG - [(15)]TJ + 1 0 0 1 217.299 443.442 Tm [(15)]TJ 0 g 0 G - [(].)-598(Mor)18(eover)74(,)-371(the)-346(Fortran)-346(95)-346(facilities)-346(for)-346(dy-)]TJ 0 -11.955 Td [(namic)-411(memory)-410(management)-411(and)-410(interface)-411(overloading)-410(gr)18(eatly)-411(enhance)-410(the)]TJ 0 -11.955 Td [(usability)-397(of)-398(the)-397(PSBLAS)-398(subr)18(outines.)-752(In)-398(this)-397(way)111(,)-434(the)-398(library)-397(can)-398(take)-397(car)18(e)]TJ 0 -11.955 Td [(of)-267(r)8(untime)-266(memory)-267(r)18(equir)18(ements)-266(that)-267(ar)18(e)-266(quite)-267(dif)18(\002cult)-267(or)-266(even)-267(impossible)-266(to)]TJ 0 -11.955 Td [(pr)18(edict)-250(at)-250(implementation)-250(or)-250(compilation)-250(time.)]TJ 14.944 -12.064 Td [(The)-249(pr)18(esentation)-250(of)-249(the)-250(PSBLAS)-249(library)-249(follows)-250(the)-249(general)-249(str)8(uctur)18(e)-250(of)-249(the)]TJ -14.944 -11.955 Td [(pr)18(oposal)-207(for)-206(serial)-207(Sparse)-207(BLAS)-207([)]TJ + 1.016 0 0 1 227.261 443.442 Tm [(].)-305(Mor)17(eover)73(,)-246(the)-246(Fortran)-246(95)-247(facil)1(ities)-247(for)-246(dynamic)]TJ 1.006 0 0 1 99.895 431.486 Tm [(memory)-248(management)-248(and)-247(interface)-248(overloading)-248(gr)18(eatly)-248(enhance)-247(the)-248(usability)]TJ 1.02 0 0 1 99.895 419.531 Tm [(of)-287(the)-287(PSBLAS)-288(su)1(br)17(outines.)-430(In)-287(this)-287(way)109(,)-298(the)-287(library)-288(can)-287(take)-287(car)18(e)-287(of)-288(r)8(untime)]TJ 1.02 0 0 1 99.895 407.576 Tm [(memory)-248(r)17(equ)1(ir)17(ements)-248(that)-248(ar)18(e)-249(quite)-248(dif)18(\002cult)-248(or)-248(even)-248(impossible)-248(to)-248(pr)17(edict)-248(at)]TJ 1 0 0 1 99.895 395.621 Tm [(implementation)-250(or)-250(compilation)-250(time.)]TJ 14.944 -12.064 Td [(The)-249(pr)18(esentation)-250(of)-249(the)-250(PSBLAS)-249(library)-249(follows)-250(the)-249(general)-249(str)8(uctur)18(e)-250(of)-249(the)]TJ 0.98 0 0 1 99.596 371.602 Tm [(pr)18(oposal)-255(for)-255(serial)-254(Sparse)-255(BLAS)-255([)]TJ 1 0 0 rg 1 0 0 RG - [(7)]TJ + 1 0 0 1 242.106 371.602 Tm [(7)]TJ 0 g 0 G - [(,)]TJ + 0.98 0 0 1 247.087 371.602 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - [-206(8)]TJ + 1 0 0 1 252.017 371.602 Tm [(8)]TJ 0 g 0 G - [(],)-216(which)-206(in)-207(its)-207(turn)-206(is)-207(based)-207(on)-207(t)1(he)-207(pr)18(oposal)]TJ 0 -11.956 Td [(for)-250(BLAS)-250(on)-250(dense)-250(matrices)-250([)]TJ + 0.98 0 0 1 256.998 371.602 Tm [(],)-255(which)-255(in)-255(its)-255(turn)-255(is)-255(based)-255(on)-255(the)-255(pr)19(oposal)]TJ 1 0 0 1 99.895 359.647 Tm [(for)-250(BLAS)-250(on)-250(dense)-250(matrices)-250([)]TJ 1 0 0 rg 1 0 0 RG [(14)]TJ 0 g 0 G @@ -4581,31 +4574,31 @@ BT 1 0 0 rg 1 0 0 RG [-250(5)]TJ 0 g 0 G - [(].)]TJ 14.944 -12.063 Td [(The)-297(applicability)-297(of)-298(sparse)-297(iterative)-297(solvers)-297(to)-297(many)-298(dif)18(fer)18(ent)-297(ar)18(eas)-297(causes)]TJ -14.944 -11.956 Td [(some)-190(terminology)-190(pr)18(oblems)-190(because)-190(the)-190(same)-190(concept)-190(may)-190(be)-190(denoted)-190(thr)18(ough)]TJ 0 -11.955 Td [(dif)18(fer)18(ent)-271(names)-271(depending)-272(on)-271(the)-271(application)-271(ar)18(ea.)-374(The)-271(PSBLAS)-271(featur)18(es)-271(pr)18(e-)]TJ 0 -11.955 Td [(sented)-332(in)-333(this)-332(document)-332(will)-333(be)-332(discussed)-332(r)18(eferring)-333(to)-332(a)-333(\002ni)1(te)-333(dif)18(fer)18(ence)-332(dis-)]TJ 0 -11.955 Td [(cr)18(etization)-284(of)-285(a)-284(Partial)-285(Dif)18(fer)18(ential)-284(Equation)-284(\050PDE\051.)-285(However)74(,)-293(the)-284(scope)-285(of)-284(the)]TJ 0 -11.955 Td [(library)-283(is)-283(wider)-283(than)-284(that:)-376(for)-283(example,)-291(it)-283(can)-284(be)-283(applied)-283(to)-283(\002nite)-283(element)-283(dis-)]TJ 0 -11.956 Td [(cr)18(etizations)-267(of)-267(PDEs,)-271(and)-267(even)-266(to)-267(dif)18(fer)18(ent)-267(classes)-267(of)-267(pr)18(oblems)-267(such)-266(as)-267(nonlin-)]TJ 0 -11.955 Td [(ear)-250(optimization,)-250(for)-250(example)-250(in)-250(optimal)-250(contr)18(ol)-250(pr)18(oblems.)]TJ 14.944 -12.064 Td [(The)-383(design)-383(of)-383(a)-383(solver)-383(for)-384(sparse)-383(linear)-383(systems)-383(is)-383(driven)-383(by)-383(many)-383(con-)]TJ -14.944 -11.955 Td [(\003icting)-271(objectives,)-277(such)-272(as)-271(limiting)-271(occupation)-272(of)-271(storage)-271(r)18(esour)18(ces,)-277(exploiting)]TJ 0 -11.955 Td [(r)18(egularities)-274(in)-274(the)-275(input)-274(data,)-280(exploiting)-274(har)18(dwar)18(e)-275(characteristi)1(cs)-275(of)-274(the)-274(paral-)]TJ 0 -11.955 Td [(lel)-350(platform.)-610(T)92(o)-350(achieve)-350(an)-350(optimal)-350(communication)-350(to)-350(computation)-350(ratio)-350(on)]TJ 0 -11.955 Td [(distributed)-379(memory)-378(machines)-379(it)-378(is)-379(essential)-379(to)-378(keep)-379(the)]TJ/F60 9.9626 Tf 256.501 0 Td [(data)-379(locality)]TJ/F62 9.9626 Tf 54.198 0 Td [(as)-379(high)]TJ -310.699 -11.956 Td [(as)-315(possible;)-346(this)-315(can)-314(be)-315(done)-315(thr)18(ough)-314(an)-315(appr)18(opriate)-314(data)-315(allocation)-314(strategy)111(.)]TJ 0 -11.955 Td [(The)-323(choice)-323(of)-324(the)-323(pr)18(econditioner)-323(is)-323(another)-323(very)-324(important)-323(factor)-323(that)-323(af)18(fects)]TJ 0 -11.955 Td [(ef)18(\002ciency)-300(of)-300(the)-300(im)1(plemented)-300(application.)-460(Optimal)-300(data)-299(distribution)-300(r)18(equir)18(e-)]TJ 0 -11.955 Td [(ments)-300(for)-299(a)-300(given)-300(pr)18(econditioner)-299(may)-300(con\003ict)-300(with)-300(distribution)-299(r)18(equir)18(ements)]TJ 0 -11.955 Td [(of)-356(the)-356(r)18(est)-356(of)-357(the)-356(solver)74(.)-628(Finding)-356(the)-357(o)1(ptimal)-357(trade-of)18(f)-356(may)-356(be)-356(very)-356(dif)18(\002cult)]TJ 0 -11.955 Td [(because)-292(it)-291(is)-292(application)-291(dependent.)-435(Possible)-292(solutions)-291(to)-292(these)-292(pr)18(oblems)-291(and)]TJ 0 -11.956 Td [(other)-342(important)-342(inputs)-342(to)-342(the)-342(development)-342(of)-341(the)-342(PSBLAS)-342(softwar)18(e)-342(package)]TJ + [(].)]TJ 1.016 0 0 1 114.839 347.583 Tm [(The)-245(applicability)-245(of)-246(sparse)-245(iterative)-245(solvers)-245(to)-245(many)-246(dif)18(fe)1(r)17(ent)-245(ar)18(eas)-245(causes)]TJ 0.98 0 0 1 99.895 335.627 Tm [(some)-251(terminology)-252(pr)19(oblems)-252(because)-251(the)-252(same)-251(concept)-251(may)-252(be)-251(denoted)-252(thr)19(ough)]TJ 1.013 0 0 1 99.895 323.672 Tm [(dif)18(fer)18(ent)-248(names)-247(depending)-247(on)-248(the)-247(application)-248(ar)18(ea.)-308(The)-247(PSBLAS)-247(featur)17(es)-247(pr)18(e-)]TJ 1.02 0 0 1 99.895 311.717 Tm [(sented)-290(in)-289(this)-289(document)-290(will)-289(be)-290(discussed)-289(r)17(eferring)-289(to)-290(a)-289(\002nite)-290(dif)18(fer)18(ence)-289(dis-)]TJ 1.012 0 0 1 99.895 299.762 Tm [(cr)18(etization)-248(of)-248(a)-248(Partial)-248(Dif)18(fer)18(ential)-248(Equation)-248(\050PDE\051.)-248(Howe)1(ver)73(,)-248(the)-248(scope)-248(of)-248(the)]TJ 1.02 0 0 1 99.895 287.807 Tm [(library)-249(is)-249(wider)-249(than)-249(that:)-312(for)-250(example,)-250(it)-249(can)-249(be)-249(applied)-249(to)-249(\002nite)-249(element)-249(dis-)]TJ 0.98 0 0 1 99.895 275.852 Tm [(cr)18(etizations)-240(of)-241(PDEs,)-244(and)-240(even)-241(to)-240(dif)18(fer)18(ent)-241(classes)-240(of)-241(pr)18(oblems)-240(such)-241(as)-241(nonlinear)]TJ 1 0 0 1 99.895 263.896 Tm [(optimization,)-250(for)-250(example)-250(in)-250(optimal)-250(contr)18(ol)-250(pr)18(oblems.)]TJ 1.02 0 0 1 114.839 251.832 Tm [(The)-346(design)-346(of)-346(a)-345(solver)-346(for)-346(sparse)-346(linear)-346(systems)-346(is)-345(driven)-346(by)-346(many)-346(con-)]TJ 1.006 0 0 1 99.895 239.877 Tm [(\003icting)-250(objectives,)-250(such)-249(as)-250(limiting)-249(occupation)-250(of)-250(storage)-249(r)18(esour)17(ces,)-249(exploiting)]TJ 1.013 0 0 1 99.895 227.922 Tm [(r)18(egularities)-247(in)-247(the)-247(input)-247(data,)-247(exploiting)-246(har)17(dwar)18(e)-247(characteristics)-247(of)-246(the)-247(paral-)]TJ 1.02 0 0 1 99.895 215.967 Tm [(lel)-293(platform.)-447(T)90(o)-292(achieve)-293(an)-293(optimal)-293(communication)-292(to)-293(computation)-293(ratio)-293(on)]TJ 1.02 0 0 1 99.895 204.012 Tm [(distributed)-322(memory)-322(machines)-323(it)-322(is)-322(essential)-322(to)-323(keep)-322(the)]TJ/F78 9.9626 Tf 1.02 0 0 1 356.37 204.012 Tm [(data)-322(locality)]TJ/F84 9.9626 Tf 1.02 0 0 1 410.507 204.012 Tm [(as)-322(high)]TJ 1.02 0 0 1 99.895 192.057 Tm [(as)-270(possible;)-283(this)-270(can)-270(be)-270(done)-271(thr)18(ough)-270(an)-270(appr)17(opriate)-270(data)-270(allocation)-270(strategy)109(.)]TJ 1.02 0 0 1 99.587 180.101 Tm [(The)-264(choice)-265(of)-264(the)-265(pr)18(econditioner)-264(is)-265(another)-264(very)-265(important)-264(factor)-265(that)-264(af)18(fects)]TJ 1.02 0 0 1 99.895 168.146 Tm [(ef)18(\002ciency)-248(of)-247(the)-248(implemented)-247(application.)-311(Optimal)-248(data)-247(distribution)-248(r)18(equir)18(e-)]TJ 1.014 0 0 1 99.895 156.191 Tm [(ments)-247(for)-246(a)-247(given)-247(pr)18(econditioner)-247(may)-246(con\003ict)-247(with)-247(distribution)-246(r)17(equir)18(ements)]TJ 1.02 0 0 1 99.895 144.236 Tm [(of)-310(the)-311(r)18(est)-310(of)-311(the)-310(solver)72(.)-499(Finding)-311(the)-310(optimal)-310(trade-of)17(f)-310(may)-310(be)-310(very)-311(dif)18(\002cult)]TJ 1.016 0 0 1 99.895 132.281 Tm [(because)-246(it)-245(is)-246(application)-246(depende)1(nt.)-305(Possible)-246(solutions)-246(to)-245(these)-246(pr)18(oblems)-246(and)]TJ 1.02 0 0 1 99.895 120.326 Tm [(other)-274(important)-274(inputs)-275(to)-274(the)-274(development)-274(of)-275(the)-274(PSBLAS)-274(softwar)18(e)-275(package)]TJ 0 g 0 G - 169.365 -29.887 Td [(1)]TJ + 1 0 0 1 269.26 90.438 Tm [(1)]TJ 0 g 0 G ET endstream endobj -904 0 obj +907 0 obj << -/Length 5269 +/Length 5731 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 150.705 706.129 Td [(have)-292(come)-291(fr)18(om)-292(an)-292(established)-291(experience)-292(in)-292(applying)-291(the)-292(PSBLAS)-291(solvers)-292(to)]TJ 0 -11.955 Td [(computational)-250(\003uid)-250(dynamics)-250(applications.)]TJ/F59 14.3462 Tf 0 -33.474 Td [(2)-1000(General)-250(overview)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-190(PSBLAS)-190(library)-190(is)-190(designed)-190(to)-190(handle)-190(the)-190(implementation)-190(of)-190(iterative)-190(solvers)]TJ 0 -11.955 Td [(for)-275(sparse)-275(linear)-275(systems)-275(on)-275(distributed)-275(memory)-274(parallel)-275(computers.)-385(The)-275(sys-)]TJ 0 -11.955 Td [(tem)-307(coef)18(\002cient)-308(matrix)]TJ/F60 9.9626 Tf 100.571 0 Td [(A)]TJ/F62 9.9626 Tf 10.381 0 Td [(must)-307(be)-308(squar)18(e;)-336(it)-308(may)-307(be)-308(r)18(eal)-307(or)-307(complex,)-322(nonsym-)]TJ -110.952 -11.955 Td [(metric,)-301(and)-291(its)-291(sparsity)-291(pattern)-291(needs)-291(not)-291(to)-291(be)-291(symmetric.)-433(The)-291(serial)-291(compu-)]TJ 0 -11.955 Td [(tation)-240(parts)-239(ar)18(e)-240(based)-240(on)-239(the)-240(serial)-240(sparse)-239(BLAS,)-240(so)-240(that)-239(any)-240(extension)-239(made)-240(to)]TJ 0 -11.956 Td [(the)-258(data)-258(str)8(uctur)18(es)-259(of)-258(the)-258(serial)-258(kernels)-258(is)-259(available)-258(to)-258(the)-258(parallel)-258(version.)-335(The)]TJ 0 -11.955 Td [(overall)-294(design)-294(and)-294(parallelization)-294(strategy)-294(have)-294(been)-294(in\003uenced)-294(by)-294(the)-294(str)8(uc-)]TJ 0 -11.955 Td [(tur)18(e)-306(of)-307(the)-306(ScaLAP)92(ACK)-306(parallel)-307(library)111(.)-479(The)-306(layer)18(ed)-306(str)8(uctur)18(e)-306(of)-307(the)-306(PSBLAS)]TJ 0 -11.955 Td [(library)-349(is)-349(shown)-348(in)-349(\002gur)18(e)]TJ +/F84 9.9626 Tf 1.015 0 0 1 150.705 706.129 Tm [(have)-245(come)-246(fr)18(om)-245(an)-245(established)-246(experience)-245(in)-245(applying)-245(the)-246(PSBLAS)-245(solvers)-245(to)]TJ 1 0 0 1 150.705 694.174 Tm [(computational)-250(\003uid)-250(dynamics)-250(applications.)]TJ/F75 14.3462 Tf 0 -37.746 Td [(2)-1000(General)-250(overview)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 632.548 Tm [(The)-390(PSBLAS)-390(library)-391(is)-390(designed)-390(to)-390(handle)-390(the)-391(implementation)-390(of)-390(iterative)]TJ 1.02 0 0 1 150.705 620.593 Tm [(solvers)-293(for)-294(sparse)-293(linear)-294(systems)-293(on)-294(distributed)-293(memory)-294(parallel)-293(computers.)]TJ 1.02 0 0 1 150.396 608.638 Tm [(The)-332(system)-332(coef)18(\002cient)-332(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 288.366 608.638 Tm [(A)]TJ/F84 9.9626 Tf 1.02 0 0 1 299.058 608.638 Tm [(must)-332(be)-332(squar)18(e;)-376(it)-332(may)-332(be)-332(r)18(eal)-332(or)-332(complex,)]TJ 1.02 0 0 1 150.705 596.683 Tm [(nonsymmetric,)-250(and)-249(its)-248(sparsity)-249(pattern)-249(needs)-249(not)-249(to)-249(be)-249(symmetric.)-315(The)-249(serial)]TJ 1.02 0 0 1 150.705 584.728 Tm [(computation)-245(parts)-246(ar)18(e)-246(based)-245(on)-246(the)-245(serial)-246(sparse)-246(BLAS,)-245(so)-246(that)-245(any)-246(extension)]TJ 1.02 0 0 1 150.705 572.772 Tm [(made)-355(to)-355(the)-356(data)-355(str)8(uctur)18(es)-355(of)-356(the)-355(serial)-355(kernels)-355(is)-355(available)-355(to)-356(th)1(e)-356(parallel)]TJ 1.015 0 0 1 150.426 560.817 Tm [(version.)-305(The)-245(overall)-245(design)-245(and)-245(parallelization)-245(strategy)-245(have)-245(been)-245(in\003uenced)]TJ 1.02 0 0 1 150.705 548.862 Tm [(by)-281(the)-281(str)8(uctur)18(e)-281(of)-281(the)-281(ScaLAP)90(ACK)-281(parallel)-281(library)109(.)-412(The)-281(layer)18(ed)-281(str)8(uctur)17(e)-281(of)]TJ 1 0 0 1 150.705 536.907 Tm [(the)-251(PSBLAS)-250(library)-251(is)-251(sh)1(own)-251(in)-251(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-349(1)]TJ + [-250(1)]TJ 0 g 0 G - [(;)-398(lower)-349(layers)-349(of)-349(the)-349(library)-349(in)1(dicate)-349(an)-349(encapsu-)]TJ 0 -11.955 Td [(lation)-314(r)18(elationship)-314(with)-313(upper)-314(layers.)-502(The)-314(ongoing)-314(discussion)-313(focuses)-314(on)-314(the)]TJ 0 -11.955 Td [(Fortran)-244(2003)-244(layer)-245(immediately)-244(below)-244(the)-244(application)-244(layer)74(.)-308(The)-245(serial)-244(parts)-244(of)]TJ 0 -11.956 Td [(the)-230(computation)-230(on)-230(each)-230(pr)18(ocess)-230(ar)18(e)-230(executed)-230(thr)18(ough)-230(calls)-230(to)-230(the)-230(serial)-230(sparse)]TJ 0 -11.955 Td [(BLAS)-307(subr)18(outines.)-482(In)-307(a)-307(similar)-308(way)111(,)-321(the)-307(inter)18(-pr)18(ocess)-308(message)-307(exchanges)-307(ar)18(e)]TJ 0 -11.955 Td [(encapsulated)-244(in)-243(an)-244(applicaiton)-244(layer)-243(that)-244(has)-244(been)-243(str)18(ongly)-244(inspir)18(ed)-244(by)-243(the)-244(Ba-)]TJ 0 -11.955 Td [(sic)-314(Linear)-313(Algebra)-314(Communication)-313(Subr)18(outines)-314(\050BLACS\051)-314(library)-313([)]TJ + [(;)-251(lower)-251(layers)-251(of)-250(the)-251(library)-251(indi)1(cate)-251(an)]TJ 1.005 0 0 1 150.705 524.952 Tm [(encapsulation)-247(r)18(elationship)-247(with)-247(upper)-247(layers.)-308(The)-247(ongoing)-247(discussion)-246(focuses)]TJ 1.018 0 0 1 150.705 512.997 Tm [(on)-244(the)-245(Fortran)-244(2003)-245(layer)-244(immediately)-245(below)-244(the)-245(application)-244(layer)73(.)-305(The)-244(serial)]TJ 0.98 0 0 1 150.406 501.041 Tm [(parts)-246(of)-245(the)-246(computation)-246(on)-245(each)-246(pr)18(ocess)-245(ar)18(e)-246(executed)-245(thr)18(ough)-246(calls)-245(to)-246(the)-246(serial)]TJ 0.98 0 0 1 150.705 489.086 Tm [(sparse)-243(BLAS)-243(subr)18(outines.)-312(In)-243(a)-243(similar)-243(way)113(,)-245(the)-243(inter)18(-pr)19(ocess)-243(message)-243(exchanges)]TJ 1 0 0 1 150.705 477.131 Tm [(ar)18(e)-251(encapsulated)-251(in)-251(an)-251(applicaiton)-251(layer)-251(that)-251(has)-251(been)-251(str)18(ongly)-251(inspir)18(ed)-251(by)-251(the)]TJ 0.987 0 0 1 150.705 465.176 Tm [(Basic)-251(Linear)-252(Algebra)-251(Communication)-251(Subr)18(outines)-251(\050BLACS\051)-252(library)-251([)]TJ 1 0 0 rg 1 0 0 RG - [(6)]TJ + 1 0 0 1 447.153 465.176 Tm [(6)]TJ 0 g 0 G - [(].)-501(Usually)]TJ 0 -11.955 Td [(ther)18(e)-315(is)-314(no)-315(need)-315(to)-314(deal)-315(dir)18(ectly)-314(with)-315(MPI;)-315(however)74(,)-330(in)-315(some)-315(cases,)-331(MPI)-314(r)18(ou-)]TJ 0 -11.955 Td [(tines)-219(ar)18(e)-219(used)-218(dir)18(ectly)-219(to)-219(impr)18(ove)-219(ef)18(\002ciency)111(.)-299(For)-219(further)-219(details)-219(on)-218(our)-219(commu-)]TJ 0 -11.956 Td [(nication)-250(layer)-250(see)-250(Sec.)]TJ + 0.987 0 0 1 452.135 465.176 Tm [(].)-313(Usually)]TJ 0.98 0 0 1 150.705 453.221 Tm [(ther)18(e)-240(is)-241(no)-241(need)-240(to)-241(deal)-241(dir)19(ectly)-241(with)-240(MPI;)-241(however)75(,)-243(in)-241(some)-240(cases,)-244(MPI)-241(r)19(outines)]TJ 0.98 0 0 1 150.705 441.266 Tm [(ar)18(e)-199(used)-198(dir)18(ectly)-199(to)-199(impr)18(o)1(ve)-199(ef)18(\002ciency)113(.)-298(For)-199(further)-199(det)1(ails)-199(on)-199(our)-199(communication)]TJ 1 0 0 1 150.705 429.31 Tm [(layer)-250(see)-250(Sec.)]TJ 0 0 1 rg 0 0 1 RG [-250(7)]TJ 0 g 0 G @@ -4614,7 +4607,7 @@ BT 0 g 0 G 0 g 0 G ET -1 0 0 1 258.536 281.98 cm +1 0 0 1 258.536 273.582 cm q .65 0 0 .65 0 0 cm q @@ -4623,33 +4616,33 @@ q Q Q 0 g 0 G -1 0 0 1 -258.536 -281.98 cm +1 0 0 1 -258.536 -273.582 cm BT -/F62 9.9626 Tf 216.385 250.1 Td [(Figur)18(e)-250(1:)-310(PSBLAS)-250(library)-250(components)-250(hierar)18(chy)111(.)]TJ +/F84 9.9626 Tf 216.385 241.701 Td [(Figur)18(e)-250(1:)-310(PSBLAS)-250(library)-250(components)-250(hierar)18(chy)111(.)]TJ 0 g 0 G 0 g 0 G - -50.736 -22.178 Td [(The)-370(type)-369(of)-370(linear)-369(system)-370(matrices)-370(that)-369(we)-370(addr)18(ess)-369(typically)-370(arise)-370(in)-369(the)]TJ -14.944 -11.955 Td [(numerical)-260(solution)-261(of)-260(PDEs;)-266(in)-260(such)-260(a)-261(context,)-263(it)-260(is)-261(necessary)-260(to)-260(pay)-261(special)-260(at-)]TJ 0 -11.955 Td [(tention)-297(to)-298(the)-297(str)8(uctur)18(e)-298(of)-297(the)-298(pr)18(oblem)-297(fr)18(om)-298(which)-297(the)-298(application)-297(originates.)]TJ 0 -11.955 Td [(The)-277(nonzer)18(o)-276(pattern)-277(of)-277(a)-276(matrix)-277(arising)-277(fr)18(om)-276(the)-277(discr)18(etization)-276(of)-277(a)-277(PDE)-276(is)-277(in-)]TJ 0 -11.956 Td [(\003uenced)-232(by)-232(various)-231(factors,)-236(such)-232(as)-232(the)-231(shape)-232(of)-232(the)-232(domain,)-235(the)-232(discr)18(etization)]TJ 0 -11.955 Td [(strategy)111(,)-313(and)-301(the)-300(equation/unknown)-301(or)18(dering.)-461(The)-301(matrix)-301(it)1(self)-301(can)-301(be)-300(inter)18(-)]TJ 0 -11.955 Td [(pr)18(eted)-291(as)-291(the)-291(adjacency)-291(matrix)-292(of)-291(the)-291(graph)-291(associated)-291(with)-291(the)-291(discr)18(etization)]TJ 0 -11.955 Td [(mesh.)]TJ 14.944 -11.955 Td [(The)-308(distribution)-308(of)-308(the)-309(coef)18(\002cient)-308(matrix)-308(for)-308(the)-308(linear)-309(system)-308(is)-308(based)-308(on)]TJ -14.944 -11.955 Td [(the)-314(\223owner)-314(computes\224)-314(r)8(ule:)-438(the)-314(variable)-314(associated)-314(to)-314(each)-314(mesh)-314(point)-314(is)-314(as-)]TJ + 1.02 0 0 1 165.649 216.575 Tm [(The)-316(type)-315(of)-316(linear)-316(system)-315(matrices)-316(that)-315(we)-316(addr)18(ess)-316(typically)-316(arise)-315(in)-316(the)]TJ 0.98 0 0 1 150.705 204.62 Tm [(numerical)-223(solution)-223(of)-223(PDEs;)-234(in)-223(such)-223(a)-223(context,)-229(it)-223(is)-223(necessary)-223(to)-224(pay)-223(special)-223(atten-)]TJ 0.998 0 0 1 150.705 192.665 Tm [(tion)-249(to)-250(the)-249(str)8(uctur)18(e)-250(of)-249(the)-250(pr)18(oblem)-249(fr)18(om)-250(which)-249(the)-250(application)-249(originates.)-310(The)]TJ 0.98 0 0 1 150.705 180.709 Tm [(nonzer)18(o)-213(pattern)-214(of)-214(a)-214(matrix)-214(arising)-213(fr)18(om)-214(the)-214(discr)19(etization)-214(of)-214(a)-214(PDE)-213(is)-214(in\003uenced)]TJ 1.001 0 0 1 150.705 168.754 Tm [(by)-249(various)-248(factors,)-249(such)-249(as)-249(the)-248(shape)-249(of)-249(the)-248(domain,)-249(the)-249(discr)18(etization)-248(strategy)110(,)]TJ 1.02 0 0 1 150.705 156.799 Tm [(and)-263(the)-262(equation/unknown)-263(or)18(dering.)-357(The)-263(matrix)-263(itself)-262(can)-263(be)-263(interpr)18(eted)-263(as)]TJ 1 0 0 1 150.705 144.844 Tm [(the)-250(adjacency)-250(matrix)-250(of)-250(the)-250(graph)-250(associated)-250(with)-250(the)-250(discr)18(etization)-250(mesh.)]TJ 1.02 0 0 1 165.649 132.281 Tm [(The)-380(distribution)-380(of)-380(the)-380(coef)18(\002cient)-380(matri)1(x)-380(for)-380(the)-380(linear)-380(system)-380(is)-380(based)]TJ 1.02 0 0 1 150.705 120.326 Tm [(on)-272(the)-271(\223owner)-272(computes\224)-271(r)7(ule:)-356(the)-272(variable)-272(associated)-271(to)-272(each)-271(mesh)-272(point)-272(is)]TJ 0 g 0 G - 169.365 -29.888 Td [(2)]TJ + 1 0 0 1 320.07 90.438 Tm [(2)]TJ 0 g 0 G ET endstream endobj -900 0 obj +903 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/psblas.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 906 0 R +/PTEX.InfoDict 909 0 R /BBox [0 0 197 215] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 907 0 R ->>/Font << /R8 908 0 R>> +/R7 910 0 R +>>/Font << /R8 911 0 R>> >> /Length 898 /Filter /FlateDecode @@ -4670,7 +4663,7 @@ x «Ͻ'ƒÇ›ÇÇùaÚ>=|9Êh±Büuæ¹£$îËLËàq·–ÑÃÊŸ5×k^Þ½;>íN÷Ûi™ZŠ\V+9D£­8îNËLÓG™÷×»~0+¾’”àŠ'¢ˆ±íúmw>o÷;{·=ŸŽûEý—»a¥ÃѲîîÝâ8SË4Â%ÕÇ¥_¾œžNÛ#OαéƒùüÐ endstream endobj -910 0 obj +913 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -4690,39 +4683,39 @@ p IZ¹t4¤w!}^€gì½—ú€h9@±^è Ò…s2•=3B2H>ÉçynÞÌû7ŠC‰#ˆþhñÚï-whèÇGtBŒV²Õºø`uÞ1èFæ3ÑvðøçÓ÷à´ÛoÝ34\z"ž“,P&+š´®¿Ú»oB03¼å㣶xsÉÝä!FáŽ/†m'~¼êŒn?àßvaÝDëÑ÷ì+°¥¸5ïšôt0Ü ¶æ+ÉÔ·ÆsRz…t¥J–xFzëþƒöÁQîè`û¼/dŠº2›åž™j@7GÛú.º?Üwyc$O‘œÀI‘(S¥ME®ƒßŒô| Áõ^`‚2!-›’"VîIN™"Ì‚B-ÌÎe³/uV9:Î6:.Ç°ÿMɪH endstream endobj -916 0 obj +919 0 obj << -/Length 8252 +/Length 9352 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 99.895 706.129 Td [(signed)-263(to)-264(a)-263(pr)18(ocess)-263(that)-263(will)-264(own)-263(the)-263(corr)18(esponding)-263(r)18(ow)-263(in)-264(the)-263(coef)18(\002cient)-263(ma-)]TJ 0 -11.955 Td [(trix)-406(and)-406(will)-406(carry)-405(out)-406(all)-406(r)18(elated)-406(computations.)-778(This)-406(all)1(ocation)-406(strategy)-406(is)]TJ 0 -11.955 Td [(equivalent)-353(to)-353(a)-353(partition)-353(of)-353(the)-353(discr)18(etization)-353(mesh)-353(in)1(to)]TJ/F60 9.9626 Tf 253.543 0 Td [(sub-domains)]TJ/F62 9.9626 Tf 51.107 0 Td [(.)-619(Our)-353(li-)]TJ -304.65 -11.956 Td [(brary)-220(supports)-220(any)-220(distribution)-220(that)-220(keeps)-220(together)-220(the)-220(coef)18(\002cients)-220(of)-220(each)-220(ma-)]TJ 0 -11.955 Td [(trix)-244(r)18(ow;)-245(ther)18(e)-244(ar)18(e)-243(no)-244(other)-243(constraints)-244(on)-243(the)-243(variable)-244(assignment.)-308(This)-243(choice)]TJ 0 -11.955 Td [(is)-324(consistent)-324(with)-324(simple)-324(data)-325(distributions)-324(such)-324(as)]TJ/F67 9.9626 Tf 232.237 0 Td [(CYCLIC\050N\051)]TJ/F62 9.9626 Tf 50.302 0 Td [(and)]TJ/F67 9.9626 Tf 20.095 0 Td [(BLOCK)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)-324(as)]TJ -328.786 -11.955 Td [(well)-310(as)-309(completely)-310(arbitrary)-310(assignments)-309(of)-310(equation)-310(indices)-309(to)-310(pr)18(ocesses.)-489(In)]TJ 0 -11.955 Td [(particular)-250(it)-250(is)-251(consistent)-250(with)-250(the)-250(usage)-250(of)-251(graph)-250(partitioning)-250(tools)-250(commonly)]TJ 0 -11.956 Td [(available)-333(in)-332(the)-333(literatur)18(e,)-353(e.g.)-558(METIS)-332([)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.895 706.129 Tm [(assigned)-295(to)-294(a)-295(pr)17(ocess)-294(that)-295(will)-295(own)-294(the)-295(corr)18(esponding)-295(r)17(ow)-294(in)-295(the)-295(coef)18(\002cient)]TJ 1.02 0 0 1 99.895 694.174 Tm [(matrix)-247(and)-247(will)-246(carry)-247(out)-247(all)-247(r)18(elated)-247(computations.)-309(T)1(his)-247(allocation)-247(strategy)-247(is)]TJ 0.98 0 0 1 99.895 682.219 Tm [(equivalent)-251(to)-251(a)-251(partition)-252(of)-251(the)-251(discr)18(etizati)1(on)-252(mesh)-251(into)]TJ/F78 9.9626 Tf 0.98 0 0 1 339.419 682.219 Tm [(sub-domains)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.504 682.219 Tm [(.)-315(Our)-251(library)]TJ 1.02 0 0 1 99.895 670.263 Tm [(supports)-297(any)-298(distribution)-297(that)-297(keeps)-298(together)-297(the)-297(coef)17(\002)1(cients)-298(of)-297(each)-297(matrix)]TJ 1.02 0 0 1 99.895 658.308 Tm [(r)18(ow;)-366(ther)18(e)-326(ar)18(e)-325(no)-326(other)-325(constraints)-325(on)-326(the)-325(variable)-326(assignment.)-544(This)-326(choice)]TJ 1.02 0 0 1 99.895 646.353 Tm [(is)-276(consistent)-275(with)-276(simple)-276(data)-276(distributi)1(ons)-276(such)-276(as)]TJ/F131 9.9626 Tf 1 0 0 1 332.842 646.353 Tm [(CYCLIC\050N\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 382.717 646.353 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 402.723 646.353 Tm [(BLOCK)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.874 646.353 Tm [(,)-276(as)]TJ 1.02 0 0 1 99.477 634.398 Tm [(well)-256(as)-256(completely)-256(arbitrary)-256(assignments)-256(of)-256(equation)-256(indices)-256(to)-256(pr)18(ocesses.)-337(In)]TJ 1.002 0 0 1 99.596 622.443 Tm [(particular)-250(it)-250(is)-251(consistent)-250(with)-250(the)-250(usage)-250(of)-251(graph)-250(partitioning)-250(tools)-250(commonly)]TJ 1.02 0 0 1 99.895 610.488 Tm [(available)-288(in)-289(the)-288(literatur)18(e,)-299(e.g.)-434(METIS)-288([)]TJ 1 0 0 rg 1 0 0 RG - [(13)]TJ + 1 0 0 1 276.029 610.488 Tm [(13)]TJ 0 g 0 G - [(].)-558(Dense)-333(ve)1(ctors)-333(conform)-333(to)-332(sparse)]TJ 0 -11.955 Td [(matrices,)-257(that)-255(is,)-257(the)-255(entries)-255(of)-256(a)-255(vector)-255(follow)-256(the)-255(same)-255(distribution)-256(of)-255(the)-255(ma-)]TJ 0 -11.955 Td [(trix)-250(r)18(ows.)]TJ 14.944 -12.648 Td [(W)92(e)-343(assume)-344(that)-343(the)-344(sparse)-343(matrix)-343(is)-344(built)-343(in)-344(parallel,)-366(wher)18(e)-344(each)-343(pr)18(ocess)]TJ -14.944 -11.955 Td [(generates)-254(its)-254(own)-255(portion.)-322(W)92(e)-255(never)-254(r)18(equir)18(e)-254(that)-254(the)-255(entir)18(e)-254(matrix)-254(be)-254(available)]TJ 0 -11.955 Td [(on)-288(a)-288(single)-288(node.)-423(However)74(,)-298(it)-287(is)-288(possible)-288(to)-288(hold)-288(the)-288(entir)18(e)-288(matrix)-287(in)-288(one)-288(pr)18(o-)]TJ 0 -11.955 Td [(cess)-241(and)-242(distribute)-241(it)-241(explicitly)]TJ + 1.02 0 0 1 285.992 610.488 Tm [(].)-433(Dense)-289(vectors)-288(conform)-288(to)-288(sparse)]TJ 0.98 0 0 1 99.895 598.532 Tm [(matrices,)-228(that)-222(is,)-228(the)-221(entries)-221(of)-222(a)-221(vector)-222(follow)-221(the)-221(same)-222(distribution)-221(of)-221(the)-222(matrix)]TJ 1 0 0 1 99.895 586.577 Tm [(r)18(ows.)]TJ 1.02 0 0 1 114.839 573.93 Tm [(W)90(e)-290(assume)-290(that)-291(the)-290(sparse)-290(matrix)-290(is)-291(built)-290(in)-290(parallel,)-302(wher)18(e)-290(each)-291(pr)18(ocess)]TJ 1.002 0 0 1 99.895 561.974 Tm [(generates)-249(its)-249(own)-250(port)1(ion.)-310(W)92(e)-249(never)-249(r)18(equir)18(e)-250(th)1(at)-250(the)-249(entir)18(e)-249(matrix)-249(be)-249(available)]TJ 0.98 0 0 1 99.895 550.019 Tm [(on)-244(a)-244(single)-244(node.)-313(However)76(,)-247(it)-244(is)-244(possible)-244(to)-244(hold)-244(the)-244(entir)19(e)-244(matrix)-245(in)-244(one)-244(pr)19(ocess)]TJ 0.98 0 0 1 99.895 538.064 Tm [(and)-199(distr)1(ibute)-199(it)-198(explicitly)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 133.807 3.616 Td [(1)]TJ +/F84 7.5716 Tf 1 0 0 1 210.127 541.68 Tm [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.616 Td [(,)-243(even)-241(though)-242(the)-241(r)18(esulting)-241(memory)-241(bottleneck)]TJ -138.091 -11.955 Td [(would)-250(make)-250(this)-250(option)-250(unattractive)-250(in)-250(most)-250(cases.)]TJ/F59 11.9552 Tf 0 -33.074 Td [(2.1)-1000(Basic)-250(Nomenclature)]TJ/F62 9.9626 Tf 0 -20.306 Td [(Our)-301(computational)-301(model)-301(implies)-301(that)-301(the)-301(data)-301(al)1(location)-301(on)-301(the)-301(parallel)-301(dis-)]TJ 0 -11.955 Td [(tributed)-370(memory)-369(machine)-370(is)-370(guided)-370(by)-369(the)-370(str)8(uctur)18(e)-370(of)-370(the)-369(physical)-370(model,)]TJ 0 -11.955 Td [(and)-250(speci\002cally)-250(by)-250(the)-250(discr)18(etization)-250(mesh)-250(of)-250(the)-250(PDE.)]TJ 14.944 -12.648 Td [(Each)-400(point)-400(of)-400(the)-399(discr)18(etization)-400(mesh)-400(will)-400(have)-400(\050at)-400(least)1(\051)-400(one)-400(associated)]TJ -14.944 -11.955 Td [(equation/variable,)-416(and)-384(ther)18(efor)18(e)-383(one)-383(index.)-710(W)92(e)-383(say)-383(that)-384(point)]TJ/F60 9.9626 Tf 289.765 0 Td [(i)-403(depends)]TJ/F62 9.9626 Tf 42.709 0 Td [(on)]TJ -332.474 -11.955 Td [(point)]TJ/F60 9.9626 Tf 26.955 0 Td [(j)]TJ/F62 9.9626 Tf 6.004 0 Td [(if)-312(the)-312(equation)-312(for)-312(a)-312(variable)-313(associated)-312(with)]TJ/F60 9.9626 Tf 202.502 0 Td [(i)]TJ/F62 9.9626 Tf 6.074 0 Td [(contains)-312(a)-312(term)-312(in)]TJ/F60 9.9626 Tf 84.153 0 Td [(j)]TJ/F62 9.9626 Tf 2.894 0 Td [(,)-328(or)]TJ -328.582 -11.955 Td [(equivalently)-291(if)]TJ/F60 9.9626 Tf 67.321 0 Td [(a)]TJ/F60 7.5716 Tf 4.59 -1.96 Td [(i)-67(j)]TJ/F91 10.3811 Tf 8.967 1.96 Td [(6)]TJ/F93 10.3811 Tf 0.249 0 Td [(=)]TJ/F62 9.9626 Tf 11.726 0 Td [(0.)-434(After)-292(the)-291(partition)-292(of)-291(the)-292(discr)18(etization)-291(mesh)-292(into)]TJ/F60 9.9626 Tf 233.514 0 Td [(sub-)]TJ -326.367 -11.955 Td [(domains)]TJ/F62 9.9626 Tf 37.559 0 Td [(assigned)-381(to)-381(the)-381(parallel)-381(pr)18(ocesses,)-413(we)-381(classify)-381(the)-381(points)-381(of)-381(a)-381(given)]TJ -37.559 -11.955 Td [(sub-domain)-250(as)-250(following.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 214.41 538.064 Tm [(,)-210(even)-198(though)-199(the)-198(r)18(esulting)-198(memory)-199(bottleneck)-198(would)]TJ 1 0 0 1 99.895 526.109 Tm [(make)-250(this)-250(option)-250(unattractive)-250(in)-250(most)-250(cases.)]TJ/F75 11.9552 Tf 0 -33.074 Td [(2.1)-1000(Basic)-250(Nomenclature)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 472.73 Tm [(Our)-254(computational)-254(model)-255(implies)-254(that)-254(the)-254(data)-255(allocation)-254(on)-254(the)-254(parallel)-254(dis-)]TJ 0.981 0 0 1 99.895 460.774 Tm [(tributed)-254(memory)-253(machine)-254(is)-253(guided)-254(by)-253(the)-254(str)8(uctur)19(e)-254(of)-253(the)-254(physical)-254(model,)-253(and)]TJ 1 0 0 1 99.895 448.819 Tm [(speci\002cally)-250(by)-250(the)-250(discr)18(etization)-250(mesh)-250(of)-250(the)-250(PDE.)]TJ 1.02 0 0 1 114.839 436.172 Tm [(Each)-341(point)-341(of)-341(the)-341(discr)18(etization)-341(mesh)-341(will)-341(have)-341(\050at)-341(least\051)-341(one)-341(associated)]TJ 1.02 0 0 1 99.895 424.216 Tm [(equation/variable,)-353(and)-332(ther)18(efor)17(e)-331(one)-332(index.)-564(W)90(e)-331(say)-332(that)-332(point)]TJ/F78 9.9626 Tf 1 0 0 1 389.687 424.216 Tm [(i)]TJ 1.02 0 0 1 396.022 424.216 Tm [(depends)]TJ/F84 9.9626 Tf 1.02 0 0 1 432.144 424.216 Tm [(on)]TJ 1.02 0 0 1 99.596 412.261 Tm [(point)]TJ/F78 9.9626 Tf 1 0 0 1 126.7 412.261 Tm [(j)]TJ/F84 9.9626 Tf 1.02 0 0 1 132.384 412.261 Tm [(if)-275(the)-274(equation)-275(for)-274(a)-275(variable)-275(associated)-274(with)]TJ/F78 9.9626 Tf 1 0 0 1 335.887 412.261 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 341.641 412.261 Tm [(contains)-275(a)-274(term)-275(in)]TJ/F78 9.9626 Tf 1 0 0 1 425.943 412.261 Tm [(j)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.837 412.261 Tm [(,)-282(or)]TJ 1.02 0 0 1 99.895 400.306 Tm [(equivalently)-262(if)]TJ/F78 9.9626 Tf 1 0 0 1 167.957 400.306 Tm [(a)]TJ/F78 7.5716 Tf 4.59 -1.96 Td [(i)-67(j)]TJ/F179 10.3811 Tf 8.519 1.96 Td [(6)]TJ/F181 10.3811 Tf 0.249 0 Td [(=)]TJ/F84 9.9626 Tf 1.02 0 0 1 192.593 400.306 Tm [(0.)-355(After)-261(the)-262(partition)-262(of)-262(the)-262(discr)17(etizat)1(ion)-262(mesh)-262(into)]TJ/F78 9.9626 Tf 1.02 0 0 1 427.569 400.306 Tm [(sub-)]TJ 1.02 0 0 1 99.895 388.351 Tm [(domains)]TJ/F84 9.9626 Tf 1.02 0 0 1 137.642 388.351 Tm [(assigned)-326(to)-325(the)-326(parallel)-325(pr)17(ocesses,)-346(we)-325(classify)-326(the)-325(points)-326(of)-326(a)-325(given)]TJ 1 0 0 1 99.895 376.396 Tm [(sub-domain)-250(as)-250(following.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.003 Td [(Internal.)]TJ +/F75 9.9626 Tf 0 -22.003 Td [(Internal.)]TJ 0 g 0 G -/F62 9.9626 Tf 43.995 0 Td [(An)-359(internal)-359(poi)1(nt)-359(of)-359(a)-359(given)-359(domain)]TJ/F60 9.9626 Tf 168.65 0 Td [(depends)]TJ/F62 9.9626 Tf 35.684 0 Td [(only)-359(on)-359(points)-358(of)-359(the)]TJ -223.422 -11.955 Td [(same)-264(domain.)-351(If)-264(all)-264(points)-264(of)-264(a)-264(domain)-263(ar)18(e)-264(assigned)-264(to)-264(one)-264(pr)18(ocess,)-267(then)]TJ 0 -11.956 Td [(a)-196(computational)-196(step)-195(\050e.g.,)-207(a)-196(matrix-vector)-196(pr)18(oduct\051)-196(of)-195(the)-196(equations)-196(asso-)]TJ 0 -11.955 Td [(ciated)-214(with)-213(the)-214(internal)-214(points)-214(r)18(equir)18(es)-213(no)-214(data)-214(items)-214(fr)18(om)-213(other)-214(domains)]TJ 0 -11.955 Td [(and)-250(no)-250(communications.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 143.502 354.393 Tm [(An)-313(internal)-313(poin)1(t)-313(of)-313(a)-313(given)-313(domain)]TJ/F78 9.9626 Tf 1.02 0 0 1 312.255 354.393 Tm [(depends)]TJ/F84 9.9626 Tf 1.02 0 0 1 348.185 354.393 Tm [(only)-313(on)-313(points)-312(of)-313(the)]TJ 1.02 0 0 1 124.802 342.438 Tm [(same)-387(domain.)-729(If)-387(all)-387(points)-387(of)-386(a)-387(domain)-387(ar)18(e)-387(assigned)-387(to)-387(one)-387(pr)18(ocess,)]TJ 0.991 0 0 1 124.802 330.483 Tm [(then)-252(a)-252(computational)-251(step)-252(\050e.g.,)-252(a)-252(matrix-vector)-252(pr)19(oduct\051)-252(of)-252(the)-252(equations)]TJ 1.02 0 0 1 124.802 318.527 Tm [(associated)-369(wit)1(h)-369(the)-369(internal)-368(points)-369(r)18(equir)18(es)-369(no)-368(data)-369(items)-368(fr)17(om)-368(other)]TJ 1 0 0 1 124.802 306.572 Tm [(domains)-250(and)-250(no)-250(communications.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.695 Td [(Boundary)92(.)]TJ +/F75 9.9626 Tf -24.907 -22.695 Td [(Boundary)92(.)]TJ 0 g 0 G -/F62 9.9626 Tf 51.397 0 Td [(A)-192(point)-191(of)-192(a)-192(given)-191(domain)-192(is)-192(a)-191(boundary)-192(point)-192(if)-191(it)]TJ/F60 9.9626 Tf 217.552 0 Td [(depends)]TJ/F62 9.9626 Tf 34.019 0 Td [(on)-192(points)]TJ -278.061 -11.955 Td [(belonging)-250(to)-250(other)-250(domains.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 150.904 283.877 Tm [(A)-237(point)-237(of)-238(a)-237(given)-237(domain)-238(is)-237(a)-237(boundary)-237(point)-238(if)-237(it)]TJ/F78 9.9626 Tf 0.98 0 0 1 369.449 283.877 Tm [(depends)]TJ/F84 9.9626 Tf 0.98 0 0 1 403.233 283.877 Tm [(on)-237(points)]TJ 1 0 0 1 124.802 271.922 Tm [(belonging)-250(to)-250(other)-250(domains.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.696 Td [(Halo.)]TJ +/F75 9.9626 Tf -24.907 -22.695 Td [(Halo.)]TJ 0 g 0 G -/F62 9.9626 Tf 29.609 0 Td [(A)-389(halo)-389(point)-389(for)-389(a)-389(given)-389(domain)-389(i)1(s)-389(a)-389(point)-389(belonging)-389(to)-389(another)-389(do-)]TJ -4.702 -11.955 Td [(main)-267(such)-267(that)-266(ther)18(e)-267(is)-267(a)-267(boundary)-267(point)-266(which)]TJ/F60 9.9626 Tf 212.474 0 Td [(depends)]TJ/F62 9.9626 Tf 34.767 0 Td [(on)-267(it.)-360(Whenever)]TJ -247.241 -11.955 Td [(performing)-360(a)-361(computational)-360(step,)-388(such)-361(as)-360(a)-361(matrix-vector)-360(pr)18(oduct,)-388(the)]TJ 0 -11.955 Td [(values)-274(associated)-273(with)-274(halo)-274(points)-274(ar)18(e)-274(r)18(equested)-273(fr)18(om)-274(other)-274(domains.)-381(A)]TJ 0 -11.955 Td [(boundary)-259(point)-258(of)-259(a)-258(given)-259(domain)-258(is)-259(usually)-258(a)-259(halo)-258(point)-259(for)-259(some)-258(other)]TJ 0 -11.956 Td [(domain)]TJ +/F84 9.9626 Tf 1.02 0 0 1 129.116 249.227 Tm [(A)-357(halo)-357(point)-356(for)-357(a)-357(given)-357(domain)-357(is)-357(a)-357(point)-356(belonging)-357(to)-357(another)-357(do-)]TJ 1.009 0 0 1 124.802 237.271 Tm [(main)-247(such)-248(that)-247(ther)17(e)-247(is)-248(a)-247(boundary)-248(poi)1(nt)-248(which)]TJ/F78 9.9626 Tf 1.009 0 0 1 337.442 237.271 Tm [(depends)]TJ/F84 9.9626 Tf 1.009 0 0 1 372.328 237.271 Tm [(on)-248(it)1(.)-308(Whenever)]TJ 1.02 0 0 1 124.503 225.316 Tm [(performing)-297(a)-297(computational)-298(step,)-310(such)-297(as)-297(a)-297(matrix-vector)-298(pr)18(oduct,)-310(the)]TJ 1.012 0 0 1 124.523 213.361 Tm [(values)-247(associated)-247(with)-247(halo)-248(points)-247(ar)18(e)-247(r)18(equested)-248(fr)18(om)-247(other)-247(domains.)-307(A)]TJ 1.005 0 0 1 124.802 201.406 Tm [(boundary)-248(point)-248(of)-247(a)-248(given)-248(domain)-248(is)-248(usually)-248(a)-247(halo)-248(point)-248(for)-248(some)-248(other)]TJ 0.994 0 0 1 124.802 189.451 Tm [(domain)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 34.002 3.617 Td [(2)]TJ +/F84 7.5716 Tf 1 0 0 1 158.6 193.067 Tm [(2)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.617 Td [(;)-238(ther)18(efor)18(e)-232(the)-233(car)18(dinality)-232(of)-232(the)-232(boundary)-233(p)1(oints)-233(set)-232(denotes)-232(the)]TJ -38.286 -11.955 Td [(amount)-250(of)-250(data)-250(sent)-250(to)-250(other)-250(domains.)]TJ +/F84 9.9626 Tf 0.994 0 0 1 162.884 189.451 Tm [(;)-252(ther)18(efor)18(e)-252(the)-252(car)18(dinality)-251(of)-252(the)-252(boundary)-252(points)-252(set)-252(denotes)-252(the)]TJ 1 0 0 1 124.802 177.496 Tm [(amount)-250(of)-250(data)-250(sent)-250(to)-250(other)-250(domains.)]TJ 0 g 0 G ET q @@ -4730,27 +4723,27 @@ q []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 161.427 Td [(1)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(In)-250(our)-250(pr)18(ototype)-250(implementation)-250(we)-250(pr)18(ovide)-250(sample)-250(scatter/gather)-250(r)18(outines.)]TJ/F62 5.9776 Tf -3.487 -6.922 Td [(2)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(This)-401(is)-402(the)-401(normal)-402(situation)-401(when)-402(the)-401(pattern)-402(of)-401(the)-402(sparse)-401(matrix)-402(is)-401(symmetric,)-440(which)-401(is)]TJ -14.347 -9.464 Td [(equivalent)-358(to)-358(say)-358(that)-358(the)-357(interaction)-358(between)-358(two)-358(variables)-358(is)-358(r)18(ecipr)18(ocal.)-634(If)-357(the)-358(matrix)-358(pattern)]TJ 0 -9.465 Td [(is)-241(non-symmetric)-241(we)-242(may)-241(have)-241(one-way)-241(interactions,)-243(and)-241(these)-241(could)-241(cause)-242(a)-241(situation)-241(in)-241(which)-241(a)]TJ 0 -9.464 Td [(boundary)-250(point)-250(is)-250(not)-250(a)-250(halo)-250(point)-250(for)-250(its)-250(neighbour)74(.)]TJ +/F84 5.9776 Tf 110.755 161.427 Td [(1)]TJ/F84 7.9701 Tf 3.487 -2.893 Td [(In)-250(our)-250(pr)18(ototype)-250(implementation)-250(we)-250(pr)18(ovide)-250(sample)-250(scatter/gather)-250(r)18(outines.)]TJ/F84 5.9776 Tf -3.487 -6.922 Td [(2)]TJ/F84 7.9701 Tf 1.02 0 0 1 113.995 148.719 Tm [(This)-350(is)-350(the)-351(normal)-350(situation)-350(when)-350(the)-351(pattern)-350(of)-350(the)-350(sparse)-351(matrix)-350(is)-350(symmetric,)-377(which)-350(is)]TJ 1.02 0 0 1 99.895 139.255 Tm [(equivalent)-244(to)-245(say)-244(that)-245(t)1(he)-245(interaction)-244(between)-245(two)-244(variables)-244(is)-245(r)18(ecipr)18(ocal.)-304(If)-244(the)-245(matrix)-244(pattern)-244(is)]TJ 1.02 0 0 1 99.895 129.79 Tm [(non-symmetric)-249(we)-249(may)-249(have)-249(one-way)-250(interact)1(ions,)-251(and)-249(these)-249(could)-249(cause)-249(a)-249(situation)-249(in)-249(which)-249(a)]TJ 1 0 0 1 99.895 120.326 Tm [(boundary)-250(point)-250(is)-250(not)-250(a)-250(halo)-250(point)-250(for)-250(its)-250(neighbour)74(.)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 169.365 -29.888 Td [(3)]TJ +/F84 9.9626 Tf 169.365 -29.888 Td [(3)]TJ 0 g 0 G ET endstream endobj -929 0 obj +932 0 obj << -/Length 4830 +/Length 5244 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(Overlap.)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(Overlap.)]TJ 0 g 0 G -/F62 9.9626 Tf 44.553 0 Td [(An)-245(overlap)-244(point)-245(is)-245(a)-245(boundary)-244(point)-245(assigned)-245(to)-244(multiple)-245(domains.)]TJ -19.647 -11.955 Td [(Any)-204(operation)-204(that)-204(involves)-204(an)-204(overlap)-204(point)-204(has)-204(to)-204(be)-204(r)18(eplicated)-204(for)-204(each)]TJ 0 -11.955 Td [(assignment.)]TJ -24.906 -18.943 Td [(Overlap)-358(points)-359(do)-358(not)-358(usually)-359(exist)-358(in)-359(the)-358(basic)-358(data)-359(distributions;)-412(however)]TJ 0 -11.955 Td [(they)-325(ar)18(e)-326(a)-325(featur)18(e)-326(of)-325(Domain)-326(Decomposition)-325(Schwarz)-326(pr)18(econditioners)-325(which)]TJ 0 -11.956 Td [(ar)18(e)-250(the)-250(subject)-250(of)-250(r)18(elated)-250(r)18(esear)18(ch)-250(work)-250([)]TJ +/F84 9.9626 Tf 1.006 0 0 1 194.869 706.129 Tm [(An)-248(overlap)-248(point)-248(is)-248(a)-248(boundary)-248(point)-249(assigned)-248(to)-248(multiple)-248(domains.)]TJ 0.983 0 0 1 175.223 694.174 Tm [(Any)-253(operation)-254(that)-253(involves)-254(an)-253(overlap)-254(point)-253(has)-254(to)-253(be)-254(r)19(eplicated)-254(for)-253(each)]TJ 1 0 0 1 175.611 682.219 Tm [(assignment.)]TJ 0.98 0 0 1 150.705 663.276 Tm [(Overlap)-232(points)-233(do)-232(not)-233(usually)-232(exist)-233(in)-232(the)-233(basic)-232(data)-233(distributions;)-240(however)-232(they)]TJ 0.989 0 0 1 150.705 651.321 Tm [(ar)18(e)-251(a)-252(featur)19(e)-252(of)-251(Domain)-251(Decomposition)-252(Schwarz)-251(pr)18(econditioners)-251(which)-252(ar)19(e)-252(the)]TJ 1 0 0 1 150.705 639.365 Tm [(subject)-250(of)-250(r)18(elated)-250(r)18(esear)18(ch)-250(work)-250([)]TJ 1 0 0 rg 1 0 0 RG [(3)]TJ 0 g 0 G @@ -4758,7 +4751,7 @@ BT 1 0 0 rg 1 0 0 RG [-250(2)]TJ 0 g 0 G - [(].)]TJ 14.944 -11.955 Td [(W)92(e)-225(denote)-225(the)-225(sets)-225(of)-225(internal,)-230(boundary)-225(and)-225(halo)-225(points)-225(for)-225(a)-225(given)-225(subdo-)]TJ -14.944 -11.955 Td [(main)-251(by)]TJ/F91 10.3811 Tf 38.66 0 Td [(I)]TJ/F62 9.9626 Tf 6.53 0 Td [(,)]TJ/F91 10.3811 Tf 5.125 0 Td [(B)]TJ/F62 9.9626 Tf 9.753 0 Td [(and)]TJ/F91 10.3811 Tf 19.497 0 Td [(H)]TJ/F62 9.9626 Tf 8.972 0 Td [(.)-314(Each)-252(subdomain)-251(is)-252(assigned)-251(to)-252(one)-251(pr)18(ocess;)-253(each)-251(pr)18(ocess)]TJ -88.537 -11.955 Td [(usually)-346(owns)-346(one)-346(su)1(bdomain,)-370(although)-346(the)-346(user)-346(may)-346(choose)-345(to)-346(assign)-346(mor)18(e)]TJ 0 -11.955 Td [(than)-302(one)-301(subdomain)-302(to)-301(a)-302(pr)18(ocess.)-465(If)-302(each)-301(pr)18(ocess)]TJ/F60 9.9626 Tf 222.767 0 Td [(i)]TJ/F62 9.9626 Tf 5.968 0 Td [(owns)-302(one)-301(subdomain,)-315(the)]TJ -228.735 -11.956 Td [(number)-221(of)-221(r)18(ows)-221(in)-221(the)-221(local)-221(sparse)-221(matrix)-221(is)]TJ/F91 10.3811 Tf 192.655 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 4.799 0 Td [(+)]TJ/F91 10.3811 Tf 9.989 0 Td [(j)-24(B)]TJ/F60 7.5716 Tf 10.108 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.003 0 Td [(,)-227(and)-221(the)-221(number)-221(of)-221(local)]TJ -235.248 -11.955 Td [(columns)-207(\050i.e.)-296(those)-207(for)-207(which)-207(ther)18(e)-208(exists)-207(at)-207(least)-207(one)-207(non-zer)18(o)-208(entry)-207(in)-207(the)-207(local)]TJ 0 -11.955 Td [(r)18(ows\051)-250(is)]TJ/F91 10.3811 Tf 37.275 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.066 0 Td [(+)]TJ/F91 10.3811 Tf 10.255 0 Td [(j)-24(B)]TJ/F60 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.066 0 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(j)-24(H)]TJ/F60 7.5716 Tf 12.051 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.004 0 Td [(.)]TJ + [(].)]TJ 0.995 0 0 1 165.649 627.41 Tm [(W)92(e)-251(denote)-251(the)-251(sets)-251(of)-251(internal,)-251(boundary)-251(and)-251(halo)-251(points)-251(for)-251(a)-251(given)-251(subdo-)]TJ 1.001 0 0 1 150.705 615.455 Tm [(main)-249(by)]TJ/F179 10.3811 Tf 1 0 0 1 189.363 615.455 Tm [(I)]TJ/F84 9.9626 Tf 1.001 0 0 1 195.893 615.455 Tm [(,)]TJ/F179 10.3811 Tf 1 0 0 1 201 615.455 Tm [(B)]TJ/F84 9.9626 Tf 1.001 0 0 1 210.736 615.455 Tm [(and)]TJ/F179 10.3811 Tf 1 0 0 1 230.232 615.455 Tm [(H)]TJ/F84 9.9626 Tf 1.001 0 0 1 239.203 615.455 Tm [(.)-310(Each)-249(subdomain)-250(is)-249(assigned)-249(to)-250(one)-249(pr)18(ocess;)-250(each)-249(pr)17(oc)1(ess)]TJ 1.02 0 0 1 150.705 603.5 Tm [(usually)-286(owns)-285(one)-286(subdomain,)-295(although)-286(the)-285(user)-286(may)-286(choose)-285(to)-286(assign)-285(mor)17(e)]TJ 1.02 0 0 1 150.705 591.545 Tm [(than)-257(one)-257(subdomain)-257(to)-257(a)-257(pr)18(ocess.)-340(If)-257(each)-257(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 373.028 591.545 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 378.603 591.545 Tm [(owns)-257(one)-257(subdomain,)-260(the)]TJ 0.983 0 0 1 150.705 579.589 Tm [(number)-255(of)-255(r)19(ows)-255(in)-255(the)-255(local)-255(sparse)-255(matrix)-255(is)]TJ/F179 10.3811 Tf 1 0 0 1 343.065 579.589 Tm [(j)-24(I)]TJ/F78 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.068 0 Td [(+)]TJ/F179 10.3811 Tf 10.258 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.108 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F84 9.9626 Tf 0.983 0 0 1 386.196 579.589 Tm [(,)-255(and)-255(the)-255(number)-255(of)-254(local)]TJ 0.982 0 0 1 150.705 567.634 Tm [(columns)-254(\050i.e.)-316(those)-254(for)-255(which)-254(ther)18(e)-254(exists)-254(at)-255(least)-254(one)-254(non-zer)18(o)-254(entry)-255(in)-254(the)-255(local)]TJ 1 0 0 1 150.705 555.679 Tm [(r)18(ows\051)-250(is)]TJ/F179 10.3811 Tf 37.275 0 Td [(j)-24(I)]TJ/F78 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.066 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.066 0 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(j)-24(H)]TJ/F78 7.5716 Tf 12.051 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf 3.004 0 Td [(.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -4777,14 +4770,14 @@ Q 0 g 0 G 1 0 0 1 -222.462 -541.675 cm BT -/F62 9.9626 Tf 260.803 335.398 Td [(Figur)18(e)-250(2:)-310(Point)-250(class\002cation.)]TJ +/F84 9.9626 Tf 260.803 335.398 Td [(Figur)18(e)-250(2:)-310(Point)-250(class\002cation.)]TJ 0 g 0 G 0 g 0 G - -95.154 -23.688 Td [(This)-190(classi\002cation)-190(of)-190(mesh)-190(points)-190(guides)-190(the)-190(naming)-190(scheme)-190(that)-190(we)-190(adopted)]TJ -14.944 -11.956 Td [(in)-190(the)-190(library)-190(internals)-190(and)-190(in)-190(the)-190(data)-190(str)8(uctur)18(es.)-290(W)92(e)-190(explicitly)-190(note)-190(that)-190(\223Halo\224)]TJ 0 -11.955 Td [(points)-250(ar)18(e)-250(also)-250(often)-250(called)-250(\223ghost\224)-250(points)-250(in)-250(the)-250(literatur)18(e.)]TJ/F59 11.9552 Tf 0 -28.902 Td [(2.2)-1000(Library)-250(contents)]TJ/F62 9.9626 Tf 0 -18.964 Td [(The)-250(PSBLAS)-250(library)-250(consists)-250(of)-250(various)-250(classes)-250(of)-250(subr)18(outines:)]TJ + 0.98 0 0 1 165.649 311.71 Tm [(This)-211(classi\002cation)-211(of)-211(mesh)-211(points)-211(guides)-211(the)-211(naming)-211(scheme)-211(that)-212(we)-211(adopted)]TJ 0.982 0 0 1 150.705 299.754 Tm [(in)-256(the)-255(library)-256(internals)-255(and)-256(in)-255(the)-256(data)-255(str)8(uctur)18(es.)-319(W)94(e)-256(explici)1(tly)-256(note)-256(that)-255(\223Halo\224)]TJ 1 0 0 1 150.406 287.799 Tm [(points)-250(ar)18(e)-250(also)-250(often)-250(called)-250(\223ghost\224)-250(points)-250(in)-250(the)-250(literatur)18(e.)]TJ/F75 11.9552 Tf 0.299 -28.902 Td [(2.2)-1000(Library)-250(contents)]TJ/F84 9.9626 Tf -0.309 -18.964 Td [(The)-250(PSBLAS)-250(library)-250(consists)-250(of)-250(various)-250(classes)-250(of)-250(subr)18(outines:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -18.943 Td [(Computational)-250(routines)]TJ +/F75 9.9626 Tf 0.309 -18.943 Td [(Computational)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 113.723 0 Td [(comprising:)]TJ +/F84 9.9626 Tf 113.723 0 Td [(comprising:)]TJ 0 g 0 G -77.917 -19.434 Td [(\225)]TJ 0 g 0 G @@ -4796,7 +4789,7 @@ BT 0 g 0 G 0 -15.449 Td [(\225)]TJ 0 g 0 G - [-500(V)111(ector)-250(and)-250(matrix)-250(norms;)]TJ + [-464(V)111(ector)-250(and)-250(matrix)-250(norms;)]TJ 0 g 0 G 0 -15.449 Td [(\225)]TJ 0 g 0 G @@ -4806,9 +4799,9 @@ BT 0 g 0 G [-500(Dot)-250(pr)18(oducts.)]TJ 0 g 0 G -/F59 9.9626 Tf -35.806 -19.434 Td [(Communication)-250(routines)]TJ +/F75 9.9626 Tf -35.806 -19.434 Td [(Communication)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 118.704 0 Td [(handling)-250(halo)-250(and)-250(overlap)-250(communications;)]TJ +/F84 9.9626 Tf 118.704 0 Td [(handling)-250(halo)-250(and)-250(overlap)-250(communications;)]TJ 0 g 0 G 50.661 -29.888 Td [(4)]TJ 0 g 0 G @@ -4816,20 +4809,20 @@ ET endstream endobj -926 0 obj +929 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/points.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 932 0 R +/PTEX.InfoDict 935 0 R /BBox [0 0 274 308] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 933 0 R ->>/Font << /R8 934 0 R>> +/R7 936 0 R +>>/Font << /R8 937 0 R>> >> /Length 1397 /Filter /FlateDecode @@ -4839,18 +4832,18 @@ x – 󣄠¹3ÊBü=®§«æ±bA‡HŒ}Ï©c·í²»?­é”ׄÿäïÍeùö]_?ü¾¤Ó©d êwßGüðaù´d"®òçæ²¾¾ä}ÍíëÕûe4­ß ,äýÔ×sÿ»º,_ýx÷Ç/w×·¯®~[¾»ZÞ.ø›Œ1¸ð™âuóâ¯ïÿ¼ûùúáoO*žþx/þÃõí½Î22Tø<ᜇd†&Âoî/×ïV˜âÿõèCê1V^õd¨æõãR ¬Û9ŸÎç¶^–ºµÓ¾ÍšÚýÝz¦zõ¯7‹!€S®ûj짔êJÚR¿–ðWZSöN•m˜´ ide«3çûfyÿõROÛú×|J_F¿~]~z2ò–}×òVÐÕämë¦Î€sQ<I<³¦uiüd¸r͵9.Ö¤¢ÆR’ÉÑãY~ОÐCÑÝ¥Ÿ}öçÙ^â<3LA ‰c‹YÒ¶®ôçY¯qž&mCÙØâÌû懣ç—Ñ#|H–_rƧšÇÒ³,wš0s>}yüÇ5ÒNóË p%U¤ –ðW@E’§$§•|¡pxõE`&ÆøåU ™¤ó«›%AÝIUÍ0Gš]ý‘&ûÖM’ î Jšx÷¬…T.ù)~¼C²8˜}~‚­ÛÍWÛ¢íÁvKÑö¶K,8ÛÍ—&†`[C*—ü¨ONÔÇs­ƒ ½m‚ê ò9؆Áu¶!×`{P9¦m‚êKI7oÛB*—ü¨O샹~ñ̳·Ç'­¡Á^ÝIaÏvRy!œzw'ó¤`Íx"0.Ѥb'…iÄù|ùÌs¼žP:-%X/[´^º“#Àa°há…dÞPÓY/)Z‡Ýqˆ&-VŠÖ½ON¬Çtnƒ®G±À¹ÍY–& é›Ë’וB¿Ìœ¤¡¹M…ÁnngäŽ%¤Ò#ØœÃÉÙÇ‚"d;’Àô)ùÃ(˜\X‹³Ž¥²£0}Z¡pø#`Ó†Sò‹%Hvt§Ð̧f£`ú`-Î+”ÐŽQ4ó9ƒ…Ç,x›O/,îf,z»âißn«ªÝìv«$½úæ-ÜŒå`?›“禩™|,ˆ7cïó™;Ìñº@!osõé]Š¦?ݲta0€yýÒ¥¤Zdy›«OïRÜ<%9­äƒ€[}拇ú6m8uõIPžþhǃf>m))…YÞæê“ Ò<%9­äƒ€[}ækçÿÜæ“WO’rõ= A} £ Ñ0'Ë 9‘S,irêÕ÷+\_ã­uâÝ¿›ÑÆE?æóé{¦ƒÙÇá'È‹ÎB#4_²$&†`[–’qq‘‘&/> Mõ5^_'†`[Bý˜OõºÖÁ–%©¡ ª/]07o[šqq ’&/M Íõ5^_'nÞ¶†4.ú1Ÿ6ØsýÜ¥%]Š!ƒCÞgVe@Ù–‹’…$)š5-ƒÃØ5}‡ä²?ÖLg+‡ |>{é>hO‘jøX5~,ê>–0àxÕ},1’š¬ác ”ø±ŠûX€5‹ûXb$3òø³ Ú…t¡í¡=Å>tpº8Õ‡’Ô$iÎ>´-ö¡Ç%ÀšTÔXJR#ÞgL¼í“-J/0®jãȶw.Þâªick£Z,”Ô¤š^”Ñk·ì«éUÝ ‹¯WjÇ‚µÛçƒ.ÁºUE³zÉgýãPˆ,é"›Ñe±ûÌ‹:t˜!*%~ Ö *«QÊÒ@emPMÓ1:¾Þ’àX¼÷(˜®4æ ¤Nƒ¾]þÎJ¦' endstream endobj -941 0 obj +944 0 obj << -/Length 4927 +/Length 5268 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(Data)-250(management)-250(and)-250(auxiliary)-250(routines)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(Data)-250(management)-250(and)-250(auxiliary)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 190.375 0 Td [(including:)]TJ +/F84 9.9626 Tf 190.375 0 Td [(including:)]TJ 0 g 0 G -154.569 -24.208 Td [(\225)]TJ 0 g 0 G @@ -4872,104 +4865,104 @@ BT 0 g 0 G [-500(Sparse)-250(matrix)-250(and)-250(data)-250(distribution)-250(pr)18(epr)18(ocessing.)]TJ 0 g 0 G -/F59 9.9626 Tf -35.806 -24.207 Td [(Preconditioner)-250(routines)]TJ +/F75 9.9626 Tf -35.806 -24.207 Td [(Preconditioner)-250(routines)]TJ 0 g 0 G 0 g 0 G 0 -24.208 Td [(Iterative)-250(methods)]TJ 0 g 0 G -/F62 9.9626 Tf 84.951 0 Td [(a)-250(subset)-250(of)-250(Krylov)-250(subspace)-250(iterative)-250(methods)]TJ -84.951 -23.137 Td [(The)-262(following)-263(naming)-262(scheme)-262(has)-262(been)-263(adopted)-262(for)-262(all)-263(the)-262(symbols)-262(internally)]TJ 0 -11.955 Td [(de\002ned)-250(in)-250(the)-250(PSBLAS)-250(softwar)18(e)-250(package:)]TJ +/F84 9.9626 Tf 84.951 0 Td [(a)-250(subset)-250(of)-250(Krylov)-250(subspace)-250(iterative)-250(methods)]TJ 1.007 0 0 1 99.587 538.043 Tm [(The)-247(following)-247(naming)-246(scheme)-247(has)-247(been)-247(adopted)-247(for)-246(all)-247(the)-247(symbols)-247(internally)]TJ 1 0 0 1 99.895 526.088 Tm [(de\002ned)-250(in)-250(the)-250(PSBLAS)-250(softwar)18(e)-250(package:)]TJ 0 g 0 G 13.888 -23.137 Td [(\225)]TJ 0 g 0 G - [-500(all)-250(symbols)-250(\050i.e.)-310(subr)18(outine)-250(names,)-250(data)-250(types...\051)-310(ar)18(e)-250(pr)18(e\002xed)-250(by)]TJ/F67 9.9626 Tf 294.184 0 Td [(psb_)]TJ + [-500(all)-250(symbols)-250(\050i.e.)-310(subr)18(outine)-250(names,)-250(data)-250(types...\051)-310(ar)18(e)-250(pr)18(e\002xed)-250(by)]TJ/F131 9.9626 Tf 294.184 0 Td [(psb_)]TJ 0 g 0 G -/F62 9.9626 Tf -294.184 -24.208 Td [(\225)]TJ +/F84 9.9626 Tf -294.184 -24.208 Td [(\225)]TJ 0 g 0 G - [-500(all)-250(data)-250(type)-250(names)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F67 9.9626 Tf 166.604 0 Td [(_type)]TJ + [-500(all)-250(data)-250(type)-250(names)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F131 9.9626 Tf 166.604 0 Td [(_type)]TJ 0 g 0 G -/F62 9.9626 Tf -166.604 -24.208 Td [(\225)]TJ +/F84 9.9626 Tf -166.604 -24.208 Td [(\225)]TJ 0 g 0 G - [-500(all)-250(constants)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F67 9.9626 Tf 135.59 0 Td [(_)]TJ + [-500(all)-250(constants)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F131 9.9626 Tf 135.591 0 Td [(_)]TJ 0 g 0 G -/F62 9.9626 Tf -135.59 -24.208 Td [(\225)]TJ +/F84 9.9626 Tf -135.591 -24.208 Td [(\225)]TJ 0 g 0 G - [-500(all)-279(top-level)-279(subr)18(outine)-279(names)-279(follow)-279(the)-279(r)8(ule)]TJ/F67 9.9626 Tf 216.11 0 Td [(psb_xxname)]TJ/F62 9.9626 Tf 55.083 0 Td [(wher)18(e)]TJ/F67 9.9626 Tf 30.187 0 Td [(xx)]TJ/F62 9.9626 Tf 13.241 0 Td [(can)]TJ -303.602 -11.955 Td [(be)-250(either:)]TJ + 1.013 0 0 1 124.802 430.327 Tm [(all)-246(top-level)-246(subr)18(outine)-246(names)-246(follow)-246(the)-246(r)8(ule)]TJ/F131 9.9626 Tf 1 0 0 1 330.228 430.327 Tm [(psb_xxname)]TJ/F84 9.9626 Tf 1.013 0 0 1 385.014 430.327 Tm [(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 415.263 430.327 Tm [(xx)]TJ/F84 9.9626 Tf 1.013 0 0 1 428.206 430.327 Tm [(can)]TJ 1 0 0 1 124.802 418.372 Tm [(be)-250(either:)]TJ 0 g 0 G -/F59 9.9626 Tf 11.955 -24.208 Td [(\226)]TJ +/F75 9.9626 Tf 11.955 -24.208 Td [(\226)]TJ 0 g 0 G -/F67 9.9626 Tf 9.963 0 Td [(ge)]TJ/F62 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(dense)-250(data,)]TJ +/F131 9.9626 Tf 9.963 0 Td [(ge)]TJ/F84 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(dense)-250(data,)]TJ 0 g 0 G -/F59 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ +/F75 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ 0 g 0 G -/F67 9.9626 Tf 9.963 0 Td [(sp)]TJ/F62 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(sparse)-250(data,)]TJ +/F131 9.9626 Tf 9.963 0 Td [(sp)]TJ/F84 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(sparse)-250(data,)]TJ 0 g 0 G -/F59 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ +/F75 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ 0 g 0 G -/F67 9.9626 Tf 9.963 0 Td [(cd)]TJ/F62 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(communication)-250(descriptor)-250(\050see)]TJ +/F131 9.9626 Tf 9.963 0 Td [(cd)]TJ/F84 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(communication)-250(descriptor)-250(\050see)]TJ 0 0 1 rg 0 0 1 RG [-250(3)]TJ 0 g 0 G - [(\051.)]TJ -32.378 -24.208 Td [(For)-215(example)-215(the)]TJ/F67 9.9626 Tf 72.515 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ/F67 9.9626 Tf 4.704 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.218 0 Td [(and)]TJ/F67 9.9626 Tf 19.011 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 49.218 0 Td [(perform)-215(the)-215(same)]TJ -241.739 -11.955 Td [(action)-247(\050see)]TJ + [(\051.)]TJ 0.981 0 0 1 124.802 333.794 Tm [(For)-254(example)-255(the)]TJ/F131 9.9626 Tf 1 0 0 1 197.086 333.794 Tm [(psb_geins)]TJ/F84 9.9626 Tf 0.981 0 0 1 244.159 333.794 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 249.09 333.794 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.981 0 0 1 298.649 333.794 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 317.681 333.794 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 0.981 0 0 1 367.241 333.794 Tm [(perform)-254(the)-255(same)]TJ 1.02 0 0 1 124.802 321.839 Tm [(action)-359(\050see)]TJ 0 0 1 rg 0 0 1 RG - [-246(6)]TJ + [-359(6)]TJ 0 g 0 G - [(\051)-247(on)-246(dense)-247(matrices,)-247(sparse)-247(matric)1(es)-247(and)-247(communication)-246(de-)]TJ 0 -11.956 Td [(scriptors)-222(r)18(espectively)111(.)-301(Interface)-222(overloading)-223(allows)-222(the)-222(usage)-222(of)-223(the)-222(same)]TJ 0 -11.955 Td [(subr)18(outine)-250(names)-250(for)-250(both)-250(r)18(eal)-250(and)-250(complex)-250(data.)]TJ -24.907 -23.137 Td [(In)-288(the)-288(description)-288(of)-289(the)-288(subr)18(outines,)-297(ar)18(guments)-289(or)-288(ar)18(gument)-288(entries)-288(ar)18(e)-288(clas-)]TJ 0 -11.955 Td [(si\002ed)-250(as:)]TJ + [(\051)-360(on)-359(dense)-359(matrices,)-388(sparse)-359(matrices)-359(and)-360(communication)]TJ 1.02 0 0 1 124.802 309.883 Tm [(descriptors)-308(r)18(espectively)109(.)-492(Interface)-307(overloading)-308(allows)-308(the)-307(usage)-308(of)-308(the)]TJ 1 0 0 1 124.802 297.928 Tm [(same)-250(subr)18(outine)-250(names)-250(for)-250(both)-250(r)18(eal)-250(and)-250(complex)-250(data.)]TJ 0.996 0 0 1 99.895 274.791 Tm [(In)-252(the)-252(description)-251(of)-252(the)-252(subr)18(outines,)-252(ar)18(guments)-251(or)-252(ar)18(gument)-252(entries)-252(ar)18(e)-251(classi-)]TJ 1 0 0 1 99.895 262.836 Tm [(\002ed)-250(as:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -23.137 Td [(global)]TJ +/F75 9.9626 Tf 0 -23.137 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(For)-270(input)-270(ar)18(guments,)-275(the)-270(value)-271(must)-270(be)-270(the)-270(same)-270(on)-270(all)-270(pr)18(ocesses)-270(par)18(-)]TJ -8.856 -11.955 Td [(ticipating)-276(in)-277(the)-276(subr)18(outine)-277(call;)-289(for)-277(output)-276(ar)18(guments)-277(the)-276(value)-277(is)-276(guar)18(-)]TJ 0 -11.955 Td [(anteed)-250(to)-250(be)-250(the)-250(same.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 133.659 239.699 Tm [(For)-223(input)-223(ar)19(guments,)-230(the)-223(value)-222(must)-223(be)-223(the)-223(same)-223(on)-223(all)-223(pr)18(ocesses)-222(partici-)]TJ 0.98 0 0 1 124.503 227.744 Tm [(pating)-220(in)-219(the)-220(subr)18(outine)-219(call;)-232(for)-220(output)-219(ar)18(guments)-220(the)-219(value)-220(is)-220(guaranteed)]TJ 1 0 0 1 124.802 215.789 Tm [(to)-250(be)-250(the)-250(same.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.208 Td [(local)]TJ +/F75 9.9626 Tf -24.907 -24.208 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(Each)-250(pr)18(ocess)-250(has)-250(its)-250(own)-250(value\050s\051)-250(independently)111(.)]TJ -26.56 -23.137 Td [(T)92(o)-250(\002nish)-250(our)-250(general)-250(description,)-250(we)-250(de\002ne)-250(a)-250(version)-250(string)-250(with)-250(the)-250(constant)]TJ/F67 9.9626 Tf 122.168 -24.059 Td [(psb_version_string_)]TJ/F62 9.9626 Tf -122.168 -24.059 Td [(whose)-250(curr)18(ent)-250(value)-250(is)]TJ/F67 9.9626 Tf 101.857 0 Td [(3.8.0)]TJ +/F84 9.9626 Tf 26.561 0 Td [(Each)-250(pr)18(ocess)-250(has)-250(its)-250(own)-250(value\050s\051)-250(independently)111(.)]TJ -26.869 -23.137 Td [(T)92(o)-250(\002nish)-250(our)-250(general)-250(description,)-250(we)-250(de\002ne)-250(a)-250(version)-250(string)-250(with)-250(the)-250(constant)]TJ/F131 9.9626 Tf 122.476 -24.059 Td [(psb_version_string_)]TJ/F84 9.9626 Tf -122.586 -24.059 Td [(whose)-250(curr)18(ent)-250(value)-250(is)]TJ/F131 9.9626 Tf 101.857 0 Td [(3.8.0)]TJ 0 g 0 G -/F62 9.9626 Tf 67.508 -29.888 Td [(5)]TJ +/F84 9.9626 Tf 67.926 -29.888 Td [(5)]TJ 0 g 0 G ET endstream endobj -946 0 obj +949 0 obj << -/Length 8496 +/Length 9679 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(2.3)-1000(Application)-250(structure)]TJ/F62 9.9626 Tf 0 -19.381 Td [(The)-244(main)-244(underlyi)1(ng)-244(principle)-244(of)-244(the)-244(PSBLAS)-243(library)-244(is)-244(that)-244(the)-243(library)-244(objects)]TJ 0 -11.956 Td [(ar)18(e)-236(cr)18(eated)-235(and)-236(exist)-235(with)-236(r)18(efer)18(ence)-235(to)-236(a)-235(discr)18(etized)-236(space)-236(t)1(o)-236(which)-236(ther)18(e)-235(corr)18(e-)]TJ 0 -11.955 Td [(sponds)-258(an)-257(index)-258(space)-257(and)-258(a)-258(matrix)-257(sparsity)-258(pattern.)-332(As)-258(an)-258(example,)-259(consider)]TJ 0 -11.955 Td [(a)-310(cell-center)18(ed)-309(\002nite-volume)-310(discr)18(etization)-310(of)-309(the)-310(Navier)18(-Stokes)-310(e)1(quations)-310(on)]TJ 0 -11.955 Td [(a)-234(simulation)-235(domain;)-239(the)-234(index)-235(space)-234(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 185.595 0 Td [(n)]TJ/F62 9.9626 Tf 7.998 0 Td [(is)-234(isomorphic)-235(to)-234(the)-234(set)-235(of)-234(cell)-234(cen-)]TJ -193.593 -11.955 Td [(ters,)-210(wher)18(eas)-200(the)-201(pattern)-200(of)-200(the)-201(associated)-200(linear)-200(system)-200(matrix)-201(is)-200(isomorphic)-200(to)]TJ 0 -11.956 Td [(the)-294(adjacency)-294(graph)-294(imposed)-294(on)-294(the)-294(discr)18(et)1(ization)-294(mesh)-294(by)-294(the)-294(discr)18(etization)]TJ 0 -11.955 Td [(stencil.)]TJ 14.944 -12.17 Td [(Thus)-343(the)-343(\002rst)-343(or)18(der)-344(of)-343(business)-343(is)-343(to)-343(establish)-343(an)-343(index)-343(space,)-367(and)-343(this)-343(is)]TJ -14.944 -11.955 Td [(done)-287(with)-287(a)-287(call)-287(to)]TJ/F67 9.9626 Tf 85.52 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 49.932 0 Td [(in)-287(which)-287(we)-287(specify)-287(the)-287(size)-287(of)-287(the)-287(index)-287(space)]TJ/F60 9.9626 Tf -135.328 -11.956 Td [(n)]TJ/F62 9.9626 Tf 8.041 0 Td [(and)-238(the)-239(allocation)-238(of)-239(the)-239(ele)1(ments)-239(of)-239(the)-238(index)-239(space)-238(to)-239(the)-238(various)-239(pr)18(ocesses)]TJ -8.165 -11.955 Td [(making)-250(up)-250(the)-250(MPI)-250(\050virtual\051)-250(parallel)-250(machine.)]TJ 14.944 -12.17 Td [(The)-366(index)-367(space)-366(is)-366(partitioned)-367(among)-366(pr)18(ocesses,)-396(and)-366(this)-366(cr)18(eates)-367(a)-366(map-)]TJ -14.944 -11.956 Td [(ping)-301(fr)18(om)-300(the)-301(\223global\224)-301(numbering)-300(1)-180(.)-191(.)-192(.)]TJ/F60 9.9626 Tf 176.584 0 Td [(n)]TJ/F62 9.9626 Tf 8.659 0 Td [(to)-301(a)-300(numbering)-301(\223local\224)-301(to)-301(each)-300(pr)18(o-)]TJ -185.243 -11.955 Td [(cess;)-230(each)-221(pr)18(ocess)]TJ/F60 9.9626 Tf 79.682 0 Td [(i)]TJ/F62 9.9626 Tf 5.162 0 Td [(will)-221(own)-220(a)-221(certain)-220(subset)-221(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 130.532 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -1.494 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.537 -1.649 Td [(i)]TJ/F62 9.9626 Tf 2.775 3.143 Td [(,)-226(each)-221(element)-221(of)-220(which)]TJ -241.352 -11.955 Td [(corr)18(esponds)-258(to)-259(a)-258(certain)-258(element)-258(of)-259(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 177.035 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 0 Td [(.)-335(The)-258(user)-259(doe)1(s)-259(not)-258(set)-258(explicitly)-259(this)]TJ -182.699 -11.955 Td [(mapping;)-225(when)-212(the)-212(application)-212(needs)-213(to)-212(indicate)-212(to)-212(which)-213(el)1(ement)-213(of)-212(the)-212(index)]TJ 0 -11.955 Td [(space)-305(a)-306(certain)-305(item)-306(is)-305(r)18(elated,)-320(such)-305(as)-306(the)-305(r)18(ow)-306(and)-305(column)-306(index)-305(of)-306(a)-305(matrix)]TJ 0 -11.956 Td [(coef)18(\002cient,)-283(it)-276(does)-277(so)-276(in)-277(the)-276(\223global\224)-277(numb)1(ering,)-284(and)-276(the)-276(library)-277(will)-276(translate)]TJ 0 -11.955 Td [(into)-250(the)-250(appr)18(opriate)-250(\223local\224)-250(numbering.)]TJ 14.944 -12.17 Td [(For)-324(a)-325(given)-324(index)-324(space)-325(1)-179(.)-191(.)-192(.)]TJ/F60 9.9626 Tf 129.74 0 Td [(n)]TJ/F62 9.9626 Tf 8.895 0 Td [(ther)18(e)-324(ar)18(e)-325(many)-324(possible)-324(associated)-325(topolo-)]TJ -153.579 -11.956 Td [(gies,)-213(i.e.)-295(many)-204(dif)18(fer)18(ent)-204(discr)18(etization)-204(stencils;)-220(thus)-204(the)-204(description)-204(of)-204(the)-204(index)]TJ 0 -11.955 Td [(space)-277(is)-278(not)-277(completed)-278(until)-277(the)-277(user)-278(has)-277(de\002ned)-278(a)-277(sparsity)-278(p)1(attern,)-285(either)-277(ex-)]TJ 0 -11.955 Td [(plicitly)-263(thr)18(ough)]TJ/F67 9.9626 Tf 71.63 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 49.698 0 Td [(or)-264(im)1(plicitly)-264(thr)18(ough)]TJ/F67 9.9626 Tf 95.326 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)-351(T)1(he)-264(descriptor)-263(is)]TJ -263.727 -11.955 Td [(\002nalized)-225(with)-225(a)-225(call)-226(to)]TJ/F67 9.9626 Tf 98.787 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 49.316 0 Td [(and)-225(a)-225(sparse)-225(matrix)-226(with)-225(a)-225(call)-225(to)]TJ/F67 9.9626 Tf 146.044 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)]TJ -341.22 -11.955 Td [(After)]TJ/F67 9.9626 Tf 26.16 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 50.21 0 Td [(each)-315(pr)18(ocess)]TJ/F60 9.9626 Tf 59.13 0 Td [(i)]TJ/F62 9.9626 Tf 6.101 0 Td [(will)-315(have)-315(de\002ned)-315(a)-314(set)-315(of)-315(\223halo\224)-315(\050or)-315(\223ghost\224\051)]TJ -141.601 -11.955 Td [(indices)]TJ/F60 9.9626 Tf 34.731 0 Td [(n)]TJ/F62 9.9626 Tf 5.663 -1.495 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.538 -1.648 Td [(i)]TJ/F93 10.3811 Tf 5.211 3.143 Td [(+)]TJ/F62 9.9626 Tf 10.506 0 Td [(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -3.831 Td [(col)]TJ/F60 5.9776 Tf 12.794 -1.648 Td [(i)]TJ/F62 9.9626 Tf 2.775 5.479 Td [(,)-377(denoting)-352(elements)-351(of)-352(the)-352(index)-351(space)-352(that)-351(ar)18(e)]TJ/F60 9.9626 Tf 215.582 0 Td [(not)]TJ/F62 9.9626 Tf -330.431 -13.79 Td [(assigned)-289(to)-290(pr)18(ocess)]TJ/F60 9.9626 Tf 88.744 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(;)-309(however)-290(t)1(he)-290(variables)-289(associated)-290(with)-289(them)-290(ar)18(e)-289(needed)]TJ -91.708 -11.955 Td [(to)-289(complete)-289(computations)-289(associated)-289(with)-290(the)-289(sparse)-289(matrix)]TJ/F60 9.9626 Tf 269.662 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(,)-299(and)-289(thus)-289(they)]TJ -276.98 -11.955 Td [(have)-266(to)-266(be)-266(fetched)-265(fr)18(om)-266(\050neighbouring\051)-266(pr)18(ocesses.)-358(The)-266(descriptor)-265(of)-266(the)-266(index)]TJ 0 -11.956 Td [(space)-294(is)-293(built)-294(exactly)-294(for)-293(the)-294(purpose)-294(of)-293(pr)18(operly)-294(sequencing)-294(the)-293(communica-)]TJ 0 -11.955 Td [(tion)-250(steps)-250(r)18(equir)18(ed)-250(to)-250(achieve)-250(this)-250(objective.)]TJ 14.944 -12.17 Td [(A)-197(simple)-197(application)-197(str)8(uctur)18(e)-197(will)-197(walk)-197(thr)18(ough)-197(the)-197(index)-197(space)-197(allocation,)]TJ -14.944 -11.956 Td [(matrix/vector)-250(cr)18(eation)-250(and)-250(linear)-250(system)-250(solution)-250(as)-250(follows:)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(2.3)-1000(Application)-250(structure)]TJ/F84 9.9626 Tf 0.999 0 0 1 150.396 686.748 Tm [(The)-249(main)-249(underlying)-250(principle)-249(of)-249(the)-249(PSBLAS)-250(library)-249(is)-249(that)-249(the)-250(l)1(ibrary)-250(objects)]TJ 0.999 0 0 1 150.705 674.792 Tm [(ar)18(e)-251(cr)18(eated)-251(and)-251(exist)-251(with)-251(r)18(efer)18(ence)-251(to)-251(a)-251(discr)18(etized)-251(space)-251(to)-251(which)-251(ther)18(e)-251(corr)18(e-)]TJ 0.98 0 0 1 150.705 662.837 Tm [(sponds)-255(an)-254(index)-255(space)-255(and)-254(a)-255(matrix)-255(sparsity)-254(pattern.)-316(As)-255(an)-255(example,)-255(consi)1(der)-255(a)]TJ 1.015 0 0 1 150.705 650.882 Tm [(cell-center)18(ed)-246(\002nite-volume)-246(discr)18(etization)-246(of)-246(the)-246(Navier)18(-Stokes)-246(equations)-245(on)-246(a)]TJ 0.98 0 0 1 150.705 638.927 Tm [(simulation)-233(domain;)-240(the)-233(index)-233(space)-232(1)]TJ 1 0 0 1 312.466 638.927 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 333.604 638.927 Tm [(is)-233(isomorphic)-233(to)-232(the)-233(set)-233(of)-233(cell)-233(centers,)]TJ 1.02 0 0 1 150.286 626.972 Tm [(wher)18(eas)-332(the)-332(pattern)-332(of)-332(the)-332(associated)-332(linear)-332(system)-332(matrix)-332(is)-332(isomorphic)-332(to)]TJ 1.014 0 0 1 150.705 615.017 Tm [(the)-246(adjacency)-246(graph)-247(imposed)-246(on)-246(the)-246(discr)17(etization)-246(mesh)-246(by)-246(the)-247(discr)18(etization)]TJ 1 0 0 1 150.705 603.061 Tm [(stencil.)]TJ 1.02 0 0 1 165.649 590.891 Tm [(Thus)-298(the)-297(\002rst)-298(or)18(der)-298(of)-297(business)-298(is)-298(to)-297(establish)-298(an)-297(index)-298(space,)-311(and)-297(this)-298(is)]TJ 0.989 0 0 1 150.705 578.936 Tm [(done)-253(with)-253(a)-253(call)-253(to)]TJ/F131 9.9626 Tf 1 0 0 1 233.611 578.936 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 0.989 0 0 1 283.177 578.936 Tm [(in)-253(which)-253(we)-253(specify)-253(the)-253(size)-253(of)-253(the)-253(index)-253(space)]TJ/F78 9.9626 Tf 1 0 0 1 488.752 578.936 Tm [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 566.98 Tm [(and)-249(the)-250(allocation)-249(of)-250(the)-249(elements)-250(of)-249(the)-250(index)-249(space)-250(to)-249(the)-250(various)-249(pr)17(ocesses)]TJ 1 0 0 1 150.705 555.025 Tm [(making)-250(up)-250(the)-250(MPI)-250(\050virtual\051)-250(parallel)-250(machine.)]TJ 0.987 0 0 1 165.649 542.855 Tm [(The)-254(index)-255(space)-254(is)-254(partitioned)-254(among)-255(pr)19(ocesses,)-255(and)-254(this)-254(cr)18(eates)-254(a)-255(mapping)]TJ 1.02 0 0 1 150.705 530.899 Tm [(fr)18(om)-313(the)-312(\223global\224)-313(numbering)-312(1)]TJ 1 0 0 1 294.115 530.899 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 316.154 530.899 Tm [(to)-312(a)-313(numbering)-312(\223local\224)-313(to)-312(each)-312(pr)17(ocess;)]TJ 1.02 0 0 1 150.705 518.944 Tm [(each)-357(pr)17(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 211.881 518.944 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 218.474 518.944 Tm [(will)-357(own)-357(a)-358(certain)-357(subset)-357(1)]TJ 1 0 0 1 345.057 518.944 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(n)]TJ/F84 9.9626 Tf 5.664 -1.494 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.649 Td [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.233 518.944 Tm [(,)-385(each)-357(element)-358(of)-357(which)]TJ 1.004 0 0 1 150.705 506.989 Tm [(corr)18(esponds)-250(to)-249(a)-250(certain)-249(element)-250(of)-249(1)]TJ 1 0 0 1 314.664 506.989 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(n)]TJ/F84 9.9626 Tf 1.004 0 0 1 333.528 506.989 Tm [(.)-311(The)-249(user)-250(does)-249(not)-250(set)-249(explicitly)-250(this)]TJ 0.987 0 0 1 150.705 495.034 Tm [(mapping;)-253(when)-254(the)-253(application)-253(needs)-254(to)-253(indicate)-253(to)-254(which)-253(element)-253(of)-254(the)-253(index)]TJ 1.02 0 0 1 150.705 483.079 Tm [(space)-263(a)-262(certain)-263(item)-263(is)-262(r)17(elated,)-267(such)-262(as)-263(the)-263(r)18(ow)-263(and)-262(column)-263(index)-263(of)-262(a)-263(matrix)]TJ 1.011 0 0 1 150.705 471.124 Tm [(coef)18(\002cient,)-246(it)-247(does)-246(so)-246(in)-246(the)-246(\223global\224)-247(numbering,)-246(and)-246(the)-246(library)-247(will)-246(translate)]TJ 1 0 0 1 150.705 459.168 Tm [(into)-250(the)-250(appr)18(opriate)-250(\223local\224)-250(numbering.)]TJ 0.98 0 0 1 165.649 446.998 Tm [(For)-242(a)-242(given)-241(index)-242(space)-242(1)]TJ 1 0 0 1 275.866 446.998 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 297.092 446.998 Tm [(ther)18(e)-241(ar)18(e)-242(many)-242(possible)-241(associated)-242(topologies,)]TJ 0.98 0 0 1 150.705 435.043 Tm [(i.e.)-308(many)-230(dif)18(fer)18(ent)-230(discr)19(etization)-230(stencils;)-239(thus)-230(the)-230(description)-230(of)-230(the)-230(index)-230(space)]TJ 1.011 0 0 1 150.705 423.087 Tm [(is)-247(not)-247(completed)-248(until)-247(the)-247(user)-247(has)-247(de\002ned)-248(a)-247(sparsity)-247(pattern,)-247(either)-247(explicitly)]TJ 0.98 0 0 1 150.705 411.132 Tm [(thr)18(ough)]TJ/F131 9.9626 Tf 1 0 0 1 187.885 411.132 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 0.98 0 0 1 237.267 411.132 Tm [(or)-237(implicit)1(ly)-237(thr)18(ough)]TJ/F131 9.9626 Tf 1 0 0 1 329.893 411.132 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.98 0 0 1 376.967 411.132 Tm [(.)-310(The)-237(descriptor)-236(is)-237(\002nalized)]TJ 1.02 0 0 1 150.286 399.177 Tm [(with)-294(a)-294(call)-293(to)]TJ/F131 9.9626 Tf 1 0 0 1 212.338 399.177 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 262.397 399.177 Tm [(and)-294(a)-294(sparse)-293(matrix)-294(with)-294(a)-294(call)-294(to)]TJ/F131 9.9626 Tf 1 0 0 1 416.944 399.177 Tm [(psb_spasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 464.017 399.177 Tm [(.)-450(After)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 387.222 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.001 0 0 1 200.273 387.222 Tm [(each)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 258.173 387.222 Tm [(i)]TJ/F84 9.9626 Tf 1.001 0 0 1 263.632 387.222 Tm [(will)-250(have)-250(de\002ned)-251(a)-250(set)-250(of)-250(\223halo\224)-250(\050or)-251(\223ghost\224\051)-250(indices)]TJ/F78 9.9626 Tf 1 0 0 1 150.829 375.267 Tm [(n)]TJ/F84 9.9626 Tf 5.664 -1.495 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F181 10.3811 Tf 4.655 3.143 Td [(+)]TJ/F84 9.9626 Tf 0.98 0 0 1 188.635 375.267 Tm [(1)]TJ 1 0 0 1 195.301 375.267 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 5.663 -3.831 Td [(col)]TJ/F78 5.9776 Tf 12.795 -1.648 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 229.735 375.267 Tm [(,)-239(denoting)-235(elements)-235(of)-235(the)-235(index)-235(space)-235(that)-235(ar)18(e)]TJ/F78 9.9626 Tf 0.98 0 0 1 430.544 375.267 Tm [(not)]TJ/F84 9.9626 Tf 0.98 0 0 1 445.853 375.267 Tm [(assigned)-235(to)]TJ 1.01 0 0 1 150.406 361.477 Tm [(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 186.098 361.477 Tm [(i)]TJ/F84 9.9626 Tf 1.01 0 0 1 189.062 361.477 Tm [(;)-247(however)-246(the)-247(variables)-246(associated)-247(with)-246(them)-247(ar)18(e)-247(needed)-246(to)-247(complete)]TJ 1.02 0 0 1 150.705 349.522 Tm [(computations)-284(associated)-284(with)-285(the)-284(sparse)-284(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 369.566 349.522 Tm [(A)]TJ/F84 9.9626 Tf 1.02 0 0 1 376.883 349.522 Tm [(,)-294(and)-284(thus)-284(they)-285(have)-284(to)-284(be)]TJ 1.02 0 0 1 150.705 337.567 Tm [(fetched)-303(fr)18(om)-304(\050neighbouring)1(\051)-304(pr)18(ocesses.)-478(The)-303(descriptor)-303(of)-303(the)-303(index)-304(space)-303(is)]TJ 1.007 0 0 1 150.705 325.612 Tm [(built)-249(exactly)-248(for)-249(the)-249(purpose)-249(of)-248(pr)18(operly)-249(sequencing)-249(the)-249(communication)-248(steps)]TJ 1 0 0 1 150.705 313.656 Tm [(r)18(equir)18(ed)-250(to)-250(achieve)-250(this)-250(objective.)]TJ 0.987 0 0 1 165.649 301.486 Tm [(A)-253(simple)-253(application)-254(str)9(uctur)18(e)-253(will)-254(walk)-253(thr)18(ough)-253(the)-253(index)-253(space)-253(allocation,)]TJ 1 0 0 1 150.705 289.531 Tm [(matrix/vector)-250(cr)18(eation)-250(and)-250(linear)-250(system)-250(solution)-250(as)-250(follows:)]TJ 0 g 0 G - 12.453 -20.571 Td [(1.)]TJ + 12.453 -20.572 Td [(1.)]TJ 0 g 0 G - [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F67 9.9626 Tf 171.465 0 Td [(psb_init)]TJ/F62 9.9626 Tf 41.843 0 Td [(;)]TJ + [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F131 9.9626 Tf 171.465 0 Td [(psb_init)]TJ/F84 9.9626 Tf 41.843 0 Td [(;)]TJ 0 g 0 G -213.308 -20.787 Td [(2.)]TJ 0 g 0 G - [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F67 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F131 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -177.562 -20.788 Td [(3.)]TJ + -177.562 -20.787 Td [(3.)]TJ 0 g 0 G - [-500(Allocate)-193(sparse)-193(matrix)-193(and)-194(dense)-193(vectors)-193(with)]TJ/F67 9.9626 Tf 213.906 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 48.997 0 Td [(and)]TJ/F67 9.9626 Tf 18.791 0 Td [(psb_geall)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + 0.983 0 0 1 175.223 227.385 Tm [(Allocate)-254(sparse)-255(matrix)-254(and)-254(dense)-254(vectors)-255(with)]TJ/F131 9.9626 Tf 1 0 0 1 377.444 227.385 Tm [(psb_spall)]TJ/F84 9.9626 Tf 0.983 0 0 1 427.008 227.385 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 446.079 227.385 Tm [(psb_geall)]TJ/F84 9.9626 Tf 0.983 0 0 1 493.152 227.385 Tm [(;)]TJ 0 g 0 G - -328.767 -20.787 Td [(4.)]TJ + 1 0 0 1 163.158 206.597 Tm [(4.)]TJ 0 g 0 G - [-500(Loop)-320(over)-320(all)-320(local)-320(r)18(ows,)-338(generate)-320(matrix)-320(and)-320(vector)-320(entries,)-337(and)-320(insert)]TJ 12.453 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(psb_geins)]TJ + 1.02 0 0 1 175.611 206.597 Tm [(Loop)-265(over)-265(all)-266(local)-265(r)18(ows,)-270(generate)-266(matrix)-265(and)-265(vector)-265(entries,)-271(and)-265(insert)]TJ 1 0 0 1 175.611 194.642 Tm [(them)-250(with)]TJ/F131 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F84 9.9626 Tf 49.564 0 Td [(and)]TJ/F131 9.9626 Tf 19.357 0 Td [(psb_geins)]TJ 0 g 0 G -/F62 9.9626 Tf -129.224 -20.787 Td [(5.)]TJ +/F84 9.9626 Tf -129.224 -20.787 Td [(5.)]TJ 0 g 0 G - [-500(Assemble)-250(the)-250(various)-250(entities:)]TJ + [-461(Assemble)-250(the)-250(various)-250(entities:)]TJ 0 g 0 G 17.774 -20.787 Td [(\050a\051)]TJ 0 g 0 G -/F67 9.9626 Tf 16.597 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ +/F131 9.9626 Tf 16.597 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(,)]TJ 0 g 0 G -64.198 -16.371 Td [(\050b\051)]TJ 0 g 0 G -/F67 9.9626 Tf 17.125 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ +/F131 9.9626 Tf 17.125 0 Td [(psb_spasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(,)]TJ 0 g 0 G -63.112 -16.371 Td [(\050c\051)]TJ 0 g 0 G -/F67 9.9626 Tf 16.039 0 Td [(psb_geasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ +/F131 9.9626 Tf 16.039 0 Td [(psb_geasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G 75.468 -29.888 Td [(6)]TJ 0 g 0 G @@ -4977,73 +4970,73 @@ ET endstream endobj -959 0 obj +962 0 obj << -/Length 8091 +/Length 8953 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 112.349 706.129 Td [(6.)]TJ +/F84 9.9626 Tf 112.349 706.129 Td [(6.)]TJ 0 g 0 G - [-500(Choose)-216(t)1(he)-216(pr)18(econditioner)-216(t)1(o)-216(be)-216(used)-215(with)]TJ/F67 9.9626 Tf 199.607 0 Td [(prec%init)]TJ/F62 9.9626 Tf 49.22 0 Td [(and)]TJ/F67 9.9626 Tf 19.014 0 Td [(prec%set)]TJ/F62 9.9626 Tf 41.843 0 Td [(,)-222(and)]TJ -297.231 -11.955 Td [(build)-250(it)-250(with)]TJ/F67 9.9626 Tf 57.274 0 Td [(prec%build)]TJ + 0.984 0 0 1 124.802 706.129 Tm [(Choose)-254(the)-254(pr)19(econditioner)-254(to)-254(be)-253(used)-254(with)]TJ/F131 9.9626 Tf 1 0 0 1 311.582 706.129 Tm [(prec%init)]TJ/F84 9.9626 Tf 0.984 0 0 1 361.143 706.129 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 380.228 706.129 Tm [(prec%set)]TJ/F84 9.9626 Tf 0.984 0 0 1 422.07 706.129 Tm [(,)-254(and)]TJ 1 0 0 1 124.802 694.174 Tm [(build)-250(it)-250(with)]TJ/F131 9.9626 Tf 57.274 0 Td [(prec%build)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 52.304 3.616 Td [(3)]TJ +/F84 7.5716 Tf 52.304 3.616 Td [(3)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.616 Td [(;)]TJ +/F84 9.9626 Tf 4.284 -3.616 Td [(;)]TJ 0 g 0 G - -126.315 -18.801 Td [(7.)]TJ + -126.315 -18.137 Td [(7.)]TJ 0 g 0 G - [-500(Call)-190(one)-190(of)-190(the)-190(iterative)-190(drivers)-190(with)-190(the)-190(method)-190(of)-190(choice,)-202(e.g.)]TJ/F67 9.9626 Tf 283.085 0 Td [(psb_krylov)]TJ/F62 9.9626 Tf -270.632 -11.955 Td [(with)]TJ/F67 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -89.494 -17.676 Td [(This)-250(is)-250(the)-250(str)8(uctur)18(e)-250(of)-250(the)-250(sample)-250(pr)18(ograms)-250(in)-250(the)-250(dir)18(ectory)]TJ/F67 9.9626 Tf 266.418 0 Td [(test/pargen/)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ -314.238 -11.955 Td [(For)-257(a)-258(simulation)-257(in)-257(which)-257(the)-258(same)-257(discr)18(etization)-257(mesh)-257(is)-258(used)-257(over)-257(multi-)]TJ -14.944 -11.955 Td [(ple)-250(time)-250(steps,)-250(the)-250(following)-250(str)8(uctur)18(e)-250(may)-250(be)-250(mor)18(e)-250(appr)18(opriate:)]TJ + 0.98 0 0 1 124.802 676.037 Tm [(Call)-204(one)-203(of)-204(the)-204(iterative)-203(drivers)-204(with)-204(the)-203(method)-204(of)-204(choice,)-214(e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 391.565 676.037 Tm [(psb_krylov)]TJ/F84 9.9626 Tf -267.181 -11.955 Td [(with)]TJ/F131 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ -89.384 -16.347 Td [(This)-250(is)-250(the)-250(str)8(uctur)18(e)-250(of)-250(the)-250(sample)-250(pr)18(ograms)-250(in)-250(the)-250(dir)18(ectory)]TJ/F131 9.9626 Tf 266.417 0 Td [(test/pargen/)]TJ/F84 9.9626 Tf 62.764 0 Td [(.)]TJ 0.98 0 0 1 114.839 635.78 Tm [(For)-227(a)-227(simulation)-227(in)-227(which)-227(the)-227(same)-226(discr)18(etization)-227(mesh)-227(is)-227(used)-227(over)-227(multiple)]TJ 1 0 0 1 99.895 623.824 Tm [(time)-250(steps,)-250(the)-250(following)-250(str)8(uctur)18(e)-250(may)-250(be)-250(mor)18(e)-250(appr)18(opriate:)]TJ 0 g 0 G - 12.454 -17.676 Td [(1.)]TJ + 12.454 -16.347 Td [(1.)]TJ 0 g 0 G - [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F67 9.9626 Tf 171.464 0 Td [(psb_init)]TJ + [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F131 9.9626 Tf 171.464 0 Td [(psb_init)]TJ 0 g 0 G -/F62 9.9626 Tf -171.464 -18.8 Td [(2.)]TJ +/F84 9.9626 Tf -171.464 -18.136 Td [(2.)]TJ 0 g 0 G - [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F67 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ + [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F131 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ 0 g 0 G -/F62 9.9626 Tf -130.489 -18.801 Td [(3.)]TJ +/F84 9.9626 Tf -130.489 -18.137 Td [(3.)]TJ 0 g 0 G - [-500(Loop)-248(over)-248(the)-248(topology)-248(of)-248(the)-248(discr)18(eti)1(zation)-248(mesh)-248(and)-248(build)-248(the)-248(descrip-)]TJ 12.453 -11.955 Td [(tor)-250(with)]TJ/F67 9.9626 Tf 37.857 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 47.074 0 Td [(;)]TJ + 0.98 0 0 1 124.802 571.204 Tm [(Loop)-224(over)-225(the)-224(topology)-224(of)-224(the)-225(discr)19(etization)-225(me)1(sh)-225(and)-224(build)-224(the)-225(descriptor)]TJ 1 0 0 1 124.384 559.249 Tm [(with)]TJ/F131 9.9626 Tf 22.744 0 Td [(psb_cdins)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -97.384 -18.801 Td [(4.)]TJ + -81.852 -18.136 Td [(4.)]TJ 0 g 0 G - [-500(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F67 9.9626 Tf 144.386 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + [-461(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F131 9.9626 Tf 143.998 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -191.459 -18.8 Td [(5.)]TJ + -191.071 -18.136 Td [(5.)]TJ 0 g 0 G - [-500(Allocate)-190(the)-190(sparse)-190(matrices)-190(and)-190(dense)-190(vectors)-190(with;)]TJ/F67 9.9626 Tf 240.366 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 48.966 0 Td [(and)]TJ/F67 9.9626 Tf 18.759 0 Td [(psb_geall)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + 1.02 0 0 1 124.413 522.977 Tm [(Allocate)-408(t)1(he)-408(sparse)-407(matrices)-408(and)-407(dense)-408(vectors)-407(with;)]TJ/F131 9.9626 Tf 1 0 0 1 375.188 522.977 Tm [(psb_spall)]TJ/F84 9.9626 Tf 1.02 0 0 1 426.402 522.977 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 511.021 Tm [(psb_geall)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -355.164 -18.801 Td [(6.)]TJ + -59.526 -18.136 Td [(6.)]TJ 0 g 0 G [-500(Loop)-250(over)-250(the)-250(time)-250(steps:)]TJ 0 g 0 G - 17.773 -18.8 Td [(\050a\051)]TJ + 17.773 -18.136 Td [(\050a\051)]TJ 0 g 0 G - [-500(If)-297(after)-298(\002rst)-297(time)-298(step,)-309(r)18(einitialize)-297(the)-298(sparse)-297(matrix)-298(with)]TJ/F67 9.9626 Tf 269.151 0 Td [(psb_sprn)]TJ/F62 9.9626 Tf 41.843 0 Td [(;)]TJ -294.396 -11.955 Td [(also)-250(zer)18(o)-250(out)-250(the)-250(dense)-250(vectors;)]TJ + 1.02 0 0 1 146.72 474.749 Tm [(If)-260(after)-261(\002rst)-260(time)-260(step,)-264(r)18(einitialize)-261(the)-260(sparse)-260(matrix)-260(with)]TJ/F131 9.9626 Tf 1 0 0 1 400.469 474.749 Tm [(psb_sprn)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.311 474.749 Tm [(;)]TJ 1 0 0 1 146.72 462.794 Tm [(also)-250(zer)18(o)-250(out)-250(the)-250(dense)-250(vectors;)]TJ 0 g 0 G - -17.126 -14.816 Td [(\050b\051)]TJ + -17.126 -14.152 Td [(\050b\051)]TJ 0 g 0 G - [-500(Loop)-428(over)-429(the)-428(mesh,)-473(generate)-429(the)-428(coef)18(\002cients)-429(and)-428(insert/update)]TJ 17.126 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.563 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + 1.02 0 0 1 146.72 448.642 Tm [(Loop)-357(over)-358(the)-357(mesh,)-386(generate)-357(the)-358(coef)18(\002cients)-357(and)-358(insert/update)]TJ 1 0 0 1 146.72 436.687 Tm [(them)-250(with)]TJ/F131 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F84 9.9626 Tf 49.564 0 Td [(and)]TJ/F131 9.9626 Tf 19.357 0 Td [(psb_geins)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -179.884 -14.815 Td [(\050c\051)]TJ + -179.884 -14.151 Td [(\050c\051)]TJ 0 g 0 G - [-500(Assemble)-250(with)]TJ/F67 9.9626 Tf 84.223 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(psb_geasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + [-461(Assemble)-250(with)]TJ/F131 9.9626 Tf 83.835 0 Td [(psb_spasb)]TJ/F84 9.9626 Tf 49.563 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(psb_geasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -201.881 -14.816 Td [(\050d\051)]TJ + -201.493 -14.151 Td [(\050d\051)]TJ 0 g 0 G 0 g 0 G - 1.315 -14.815 Td [(\050e\051)]TJ + 1.316 -14.152 Td [(\050e\051)]TJ 0 g 0 G - [-500(Choose)-190(the)-190(pr)18(econditioner)-190(to)-190(be)-190(used)-190(with)]TJ/F67 9.9626 Tf 201.761 0 Td [(prec%init)]TJ/F62 9.9626 Tf 48.966 0 Td [(and)]TJ/F67 9.9626 Tf 18.76 0 Td [(prec%set)]TJ/F62 9.9626 Tf 41.843 0 Td [(,)]TJ -294.941 -11.955 Td [(and)-250(build)-250(it)-250(with)]TJ/F67 9.9626 Tf 76.631 0 Td [(prec%build)]TJ/F62 9.9626 Tf 52.304 0 Td [(;)]TJ + 0.98 0 0 1 146.72 394.233 Tm [(Choose)-245(the)-246(pr)18(eco)1(nditioner)-246(to)-245(be)-246(used)-245(with)]TJ/F131 9.9626 Tf 1 0 0 1 332.173 394.233 Tm [(prec%init)]TJ/F84 9.9626 Tf 0.98 0 0 1 381.642 394.233 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 400.568 394.233 Tm [(prec%set)]TJ/F84 9.9626 Tf 0.98 0 0 1 442.411 394.233 Tm [(,)]TJ 1 0 0 1 146.72 382.278 Tm [(and)-250(build)-250(it)-250(with)]TJ/F131 9.9626 Tf 76.631 0 Td [(prec%build)]TJ/F84 9.9626 Tf 52.304 0 Td [(;)]TJ 0 g 0 G - -143.869 -14.816 Td [(\050f\051)]TJ + -143.869 -14.151 Td [(\050f\051)]TJ 0 g 0 G - [-500(Call)-190(one)-190(of)-190(the)-190(iterative)-190(drivers)-190(with)-190(the)-190(method)-190(of)-190(choice,)-202(e.g.)]TJ/F67 9.9626 Tf 285.566 0 Td [(psb_krylov)]TJ/F62 9.9626 Tf -270.632 -11.955 Td [(with)]TJ/F67 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -111.412 -18.801 Td [(The)-276(insertion)-275(r)18(outines)-276(will)-275(be)-276(called)-275(as)-276(many)-276(times)-275(as)-276(needed;)-288(they)-276(only)-275(need)]TJ 0 -11.955 Td [(to)-214(be)-213(called)-214(on)-213(the)-214(data)-214(t)1(hat)-214(is)-214(actually)-213(allocated)-214(to)-213(the)-214(curr)18(ent)-213(pr)18(ocess,)-221(i.e.)-298(each)]TJ 0 -11.955 Td [(pr)18(ocess)-250(generates)-250(its)-250(own)-250(data.)]TJ 14.944 -11.955 Td [(In)-219(principle)-218(ther)18(e)-219(is)-219(no)-218(speci\002c)-219(or)18(der)-219(in)-218(the)-219(calls)-219(to)]TJ/F67 9.9626 Tf 220.804 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)-225(nor)-219(is)-218(ther)18(e)-219(a)]TJ -282.821 -11.955 Td [(r)18(equir)18(ement)-243(to)-243(build)-243(a)-242(matrix)-243(r)18(ow)-243(in)-243(its)-243(entir)18(ety)-243(befor)18(e)-242(calling)-243(the)-243(r)18(outine;)-245(this)]TJ 0 -11.955 Td [(allows)-364(t)1(he)-364(application)-363(pr)18(ogrammer)-364(to)-363(walk)-364(thr)18(ough)-363(the)-364(discr)18(etization)-363(mesh)]TJ 0 -11.956 Td [(element)-316(by)-317(element,)-333(generating)-316(the)-316(main)-317(part)-316(of)-316(a)-317(given)-316(matrix)-316(r)18(ow)-317(but)-316(also)]TJ 0 -11.955 Td [(contributions)-250(to)-250(the)-250(r)18(ows)-250(corr)18(esponding)-250(to)-250(neighbouring)-250(elements.)]TJ 14.944 -11.955 Td [(Fr)18(om)-328(a)-329(funct)1(ional)-329(point)-328(of)-328(view)-328(it)-329(is)-328(even)-328(possible)-328(to)-329(exec)1(ute)-329(one)-328(call)-328(for)]TJ -14.944 -11.955 Td [(each)-204(nonzer)18(o)-204(coef)18(\002cient;)-219(however)-203(this)-204(would)-204(have)-204(a)-204(subst)1(antial)-204(computational)]TJ 0 -11.955 Td [(over)18(head.)-457(It)-299(is)-299(ther)18(efor)18(e)-299(advisable)-299(to)-299(pack)-299(a)-299(certain)-299(amount)-299(of)-299(data)-299(into)-299(each)]TJ 0 -11.955 Td [(call)-303(to)-303(the)-302(insertion)-303(r)18(outine,)-316(say)-303(touching)-303(on)-302(a)-303(few)-303(tens)-303(of)-302(r)18(ows;)-330(the)-302(best)-303(per)18(-)]TJ 0 -11.956 Td [(formng)-342(value)-343(would)-342(depend)-342(on)-342(both)-343(the)-342(ar)18(chitectur)18(e)-342(of)-343(the)-342(computer)-342(being)]TJ 0 -11.955 Td [(used)-223(and)-223(on)-222(the)-223(pr)18(oblem)-223(str)8(uctur)18(e.)-301(At)-222(the)-223(opposite)-223(extr)18(eme,)-228(it)-223(would)-222(be)-223(possi-)]TJ 0 -11.955 Td [(ble)-267(to)-267(generate)-267(the)-267(entir)18(e)-267(part)-267(of)-267(a)-267(coef)18(\002cient)-267(matrix)-267(r)18(esiding)-267(on)-267(a)-267(pr)18(ocess)-267(and)]TJ 0 -11.955 Td [(pass)-275(it)-274(in)-275(a)-275(single)-274(call)-275(to)]TJ/F67 9.9626 Tf 108.421 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)-287(this,)-281(however)74(,)-281(would)-274(entail)-275(a)-275(doubling)-274(of)]TJ -155.494 -11.955 Td [(memory)-250(occupation,)-250(and)-250(thus)-250(would)-250(be)-250(almost)-250(always)-250(far)-250(fr)18(om)-250(optimal.)]TJ + 1.02 0 0 1 146.72 368.127 Tm [(Call)-416(one)-415(of)-416(the)-415(iterative)-416(drivers)-416(with)-415(the)-416(method)-415(of)-416(choice,)-458(e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 146.72 356.172 Tm [(psb_krylov)]TJ/F84 9.9626 Tf 54.794 0 Td [(with)]TJ/F131 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0.98 0 0 1 99.587 338.035 Tm [(The)-247(insertion)-247(r)19(outines)-247(will)-247(be)-247(called)-247(as)-247(many)-247(times)-247(as)-246(needed;)-250(they)-247(only)-247(need)-247(to)]TJ 1.02 0 0 1 99.895 326.08 Tm [(be)-245(called)-245(on)-245(the)-245(data)-245(that)-246(is)-245(actually)-245(allocated)-245(to)-245(the)-245(curr)18(ent)-245(pr)17(ocess,)-245(i.e.)-304(each)]TJ 1 0 0 1 99.596 314.125 Tm [(pr)18(ocess)-250(generates)-250(its)-250(own)-250(data.)]TJ 0.981 0 0 1 114.839 302.17 Tm [(In)-256(principle)-255(ther)18(e)-256(is)-255(no)-256(speci\002c)-255(or)18(der)-256(in)-255(the)-256(calls)-256(to)]TJ/F131 9.9626 Tf 1 0 0 1 335.416 302.17 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.981 0 0 1 382.49 302.17 Tm [(,)-256(nor)-255(is)-256(ther)18(e)-255(a)]TJ 0.997 0 0 1 99.895 290.215 Tm [(r)18(equir)18(ement)-251(to)-251(build)-251(a)-251(matrix)-251(r)18(ow)-251(in)-251(its)-251(entir)18(ety)-251(befor)18(e)-251(calling)-251(the)-251(r)18(outine;)-251(this)]TJ 1.02 0 0 1 99.895 278.26 Tm [(allows)-288(the)-288(application)-289(pr)18(ogrammer)-288(to)-288(walk)-288(thr)17(ough)-288(the)-288(discr)17(etizati)1(on)-289(mesh)]TJ 1.02 0 0 1 99.895 266.304 Tm [(element)-265(by)-265(element,)-271(generating)-265(the)-265(main)-265(part)-265(of)-265(a)-266(given)-265(matrix)-265(r)18(ow)-266(but)-265(also)]TJ 1 0 0 1 99.895 254.349 Tm [(contributions)-250(to)-250(the)-250(r)18(ows)-250(corr)18(esponding)-250(to)-250(neighbouring)-250(elements.)]TJ 1.02 0 0 1 114.839 242.394 Tm [(Fr)18(om)-284(a)-283(functional)-284(point)-283(of)-283(view)-284(it)-283(is)-283(even)-284(possible)-283(to)-284(execute)-283(one)-283(call)-284(for)]TJ 0.988 0 0 1 99.895 230.439 Tm [(each)-252(nonzer)18(o)-252(coef)18(\002cient;)-252(however)-252(this)-252(would)-252(have)-252(a)-252(substantial)-252(computational)]TJ 0.98 0 0 1 99.895 218.484 Tm [(over)18(head.)-306(It)-224(is)-225(ther)19(efor)18(e)-224(advisable)-225(to)-224(pack)-225(a)-224(certain)-225(amount)-224(of)-225(data)-224(into)-225(each)-224(call)]TJ 0.988 0 0 1 99.895 206.529 Tm [(to)-253(the)-254(insertion)-253(r)18(outine,)-253(say)-253(touching)-254(on)-253(a)-253(few)-254(tens)-253(of)-253(r)18(ows;)-254(the)-253(best)-253(performng)]TJ 1.009 0 0 1 99.616 194.573 Tm [(value)-248(woul)1(d)-248(depend)-247(on)-248(both)-247(the)-248(ar)18(chitectur)18(e)-248(of)-247(the)-248(computer)-247(being)-248(used)-247(and)]TJ 1.02 0 0 1 99.895 182.618 Tm [(on)-333(the)-333(pr)18(oblem)-333(str)8(uctur)18(e.)-567(At)-333(the)-333(opposite)-333(extr)18(eme,)-355(it)-332(would)-333(be)-333(possible)-333(to)]TJ 0.996 0 0 1 99.895 170.663 Tm [(generate)-250(the)-251(entir)18(e)-250(part)-251(of)-250(a)-250(coef)18(\002cient)-251(matrix)-250(r)18(esiding)-251(on)-250(a)-251(pr)19(ocess)-251(and)-250(pass)-251(it)]TJ 0.981 0 0 1 99.895 158.708 Tm [(in)-255(a)-255(single)-254(call)-255(to)]TJ/F131 9.9626 Tf 1 0 0 1 174.836 158.708 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.981 0 0 1 221.909 158.708 Tm [(;)-255(this,)-255(however)76(,)-255(would)-255(entail)-254(a)-255(doubling)-255(of)-255(memory)]TJ 1 0 0 1 99.895 146.753 Tm [(occupation,)-250(and)-250(thus)-250(would)-250(be)-250(almost)-250(always)-250(far)-250(fr)18(om)-250(optimal.)]TJ 0 g 0 G ET q @@ -5051,322 +5044,330 @@ q []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 132.683 Td [(3)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(The)-341(subr)18(outine)-342(style)]TJ/F97 7.9701 Tf 76.182 0 Td [(psb)]TJ +/F84 5.9776 Tf 110.755 132.683 Td [(3)]TJ/F84 7.9701 Tf 0.981 0 0 1 113.995 129.79 Tm [(The)-255(subr)18(outine)-255(style)]TJ/F207 7.9701 Tf 1 0 0 1 186.708 129.79 Tm [(psb)]TJ ET q -1 0 0 1 203.634 129.989 cm +1 0 0 1 199.919 129.989 cm []0 d 0 J 0.398 w 0 0 m 2.541 0 l S Q BT -/F97 7.9701 Tf 206.175 129.79 Td [(precinit)]TJ/F62 7.9701 Tf 36.595 0 Td [(and)]TJ/F97 7.9701 Tf 16.216 0 Td [(psb)]TJ +/F207 7.9701 Tf 202.459 129.79 Td [(precinit)]TJ/F84 7.9701 Tf 0.981 0 0 1 238.33 129.79 Tm [(and)]TJ/F207 7.9701 Tf 1 0 0 1 253.565 129.79 Tm [(psb)]TJ ET q -1 0 0 1 272.196 129.989 cm +1 0 0 1 266.775 129.989 cm []0 d 0 J 0.398 w 0 0 m 2.541 0 l S Q BT -/F97 7.9701 Tf 274.737 129.79 Td [(precbld)]TJ/F62 7.9701 Tf 32.361 0 Td [(ar)18(e)-342(still)-341(supported)-342(for)-341(backwar)18(d)-342(com-)]TJ -207.203 -9.464 Td [(patibility)]TJ +/F207 7.9701 Tf 269.316 129.79 Td [(precbld)]TJ/F84 7.9701 Tf 0.981 0 0 1 300.952 129.79 Tm [(ar)18(e)-255(still)-256(supported)-255(for)-256(b)1(ackwar)18(d)-256(compati-)]TJ 1 0 0 1 99.895 120.326 Tm [(bility)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 169.365 -29.888 Td [(7)]TJ +/F84 9.9626 Tf 169.365 -29.888 Td [(7)]TJ 0 g 0 G ET endstream endobj -872 0 obj +875 0 obj << /Type /ObjStm /N 100 -/First 910 -/Length 12655 ->> -stream -840 0 841 153 842 306 843 453 844 606 845 757 846 904 847 1057 848 1210 849 1363 -850 1516 851 1664 852 1812 853 1960 854 2108 855 2255 856 2404 857 2553 858 2702 859 2851 -860 3000 861 3149 862 3298 863 3447 864 3596 868 3744 865 3801 884 3881 873 4087 874 4237 -875 4388 876 4540 877 4694 878 4844 879 4994 880 5144 881 5292 882 5440 7 5588 883 5642 -903 5735 906 5885 907 6126 908 6168 909 6554 897 6854 898 7000 899 7147 11 7294 905 7350 -902 7407 915 7528 901 7678 912 7826 913 7975 917 8124 15 8180 921 8235 922 8292 914 8349 -928 8481 932 8623 933 8737 934 8779 924 8848 925 8995 930 9143 931 9200 19 9257 927 9313 -940 9460 937 9602 938 9749 942 9896 939 9952 945 10045 947 10159 23 10216 948 10272 949 10329 -950 10386 951 10443 952 10500 953 10557 954 10614 955 10671 944 10728 958 10847 943 10981 960 11129 -961 11185 962 11241 963 11297 964 11353 965 11409 966 11465 967 11521 968 11577 969 11633 970 11689 -% 840 0 obj +/First 911 +/Length 12758 +>> +stream +843 0 844 153 845 306 846 459 847 606 848 758 849 911 850 1058 851 1211 852 1364 +853 1517 854 1670 855 1817 856 1965 857 2113 858 2261 859 2408 860 2557 861 2706 862 2855 +863 3004 864 3153 865 3302 866 3451 867 3600 868 3749 872 3897 869 3954 887 4034 876 4240 +877 4390 878 4541 879 4693 880 4847 881 4998 882 5148 883 5298 884 5446 885 5594 7 5742 +886 5796 906 5889 909 6039 910 6280 911 6322 912 6708 900 7008 901 7154 902 7301 11 7448 +908 7503 905 7560 918 7681 904 7831 915 7979 916 8127 920 8275 15 8331 924 8386 925 8443 +917 8500 931 8635 935 8777 936 8891 937 8933 927 9002 928 9149 933 9297 934 9354 19 9411 +930 9467 943 9616 940 9758 941 9905 945 10051 942 10107 948 10201 950 10315 23 10372 951 10428 +952 10485 953 10542 954 10599 955 10656 956 10713 957 10770 958 10827 947 10884 961 11005 946 11139 +963 11287 964 11343 965 11399 966 11455 967 11511 968 11567 969 11623 970 11679 971 11735 972 11791 +% 843 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 560.854 353.343 572.913] +/Rect [164.653 584.764 427.165 596.824] /A << /S /GoTo /D (subsection.10.5) >> >> -% 841 0 obj +% 844 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 548.899 315.177 560.958] +/Rect [164.653 572.809 353.343 584.869] /A << /S /GoTo /D (subsection.10.6) >> >> -% 842 0 obj +% 845 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 560.854 315.177 572.913] +/A << /S /GoTo /D (subsection.10.7) >> +>> +% 846 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 529.611 247.72 538.941] +/Rect [149.709 541.566 247.72 550.896] /A << /S /GoTo /D (section.11) >> >> -% 843 0 obj +% 847 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 515.026 393.631 527.085] +/Rect [164.653 526.981 393.332 539.04] /A << /S /GoTo /D (subsection.11.1) >> >> -% 844 0 obj +% 848 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 503.07 430.065 515.13] +/Rect [164.653 515.026 429.766 527.085] /A << /S /GoTo /D (subsection.11.2) >> >> -% 845 0 obj +% 849 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 483.783 215.89 492.933] +/Rect [149.709 495.738 215.89 504.888] /A << /S /GoTo /D (section.12) >> >> -% 846 0 obj +% 850 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 469.197 280.885 481.257] +/Rect [164.653 481.153 280.885 493.212] /A << /S /GoTo /D (subsection.12.1) >> >> -% 847 0 obj +% 851 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 459.892 310.634 469.108] +/Rect [164.653 471.847 310.634 481.063] /A << /S /GoTo /D (subsection.12.2) >> >> -% 848 0 obj +% 852 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 447.937 283.267 457.347] +/Rect [164.653 459.892 283.267 469.302] /A << /S /GoTo /D (subsection.12.3) >> >> -% 849 0 obj +% 853 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 435.982 292.711 445.392] +/Rect [164.653 447.937 292.711 457.347] /A << /S /GoTo /D (subsection.12.4) >> >> -% 850 0 obj +% 854 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 414.044 303.341 423.195] +/Rect [149.709 425.999 303.341 435.15] /A << /S /GoTo /D (section.13) >> >> -% 851 0 obj +% 855 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 399.459 225.882 411.519] +/Rect [164.653 411.414 225.882 423.474] /A << /S /GoTo /D (section*.6) >> >> -% 852 0 obj +% 856 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 387.504 227.098 399.563] +/Rect [164.653 399.459 227.098 411.519] /A << /S /GoTo /D (section*.7) >> >> -% 853 0 obj +% 857 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 375.549 262.236 387.608] +/Rect [164.653 387.504 262.236 399.563] /A << /S /GoTo /D (section*.8) >> >> -% 854 0 obj +% 858 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 363.593 282.36 375.653] +/Rect [164.653 375.549 282.36 387.608] /A << /S /GoTo /D (section*.9) >> >> -% 855 0 obj +% 859 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 351.638 254.803 363.698] +/Rect [164.653 363.593 254.803 375.653] /A << /S /GoTo /D (section*.10) >> >> -% 856 0 obj +% 860 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 339.683 253.488 351.743] +/Rect [164.653 351.638 253.488 363.698] /A << /S /GoTo /D (section*.11) >> >> -% 857 0 obj +% 861 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 327.728 280.328 339.788] +/Rect [164.653 339.683 280.328 351.743] /A << /S /GoTo /D (section*.12) >> >> -% 858 0 obj +% 862 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 315.773 252.871 327.832] +/Rect [164.653 327.728 252.871 339.788] /A << /S /GoTo /D (section*.13) >> >> -% 859 0 obj +% 863 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 303.818 281.971 315.877] +/Rect [164.653 315.773 281.971 327.832] /A << /S /GoTo /D (section*.14) >> >> -% 860 0 obj +% 864 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 291.862 296.477 303.922] +/Rect [164.653 303.818 296.477 315.877] /A << /S /GoTo /D (section*.15) >> >> -% 861 0 obj +% 865 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 279.907 305.742 291.967] +/Rect [164.653 291.862 305.742 303.922] /A << /S /GoTo /D (section*.16) >> >> -% 862 0 obj +% 866 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 267.952 293.966 280.012] +/Rect [164.653 279.907 293.966 291.967] /A << /S /GoTo /D (section*.17) >> >> -% 863 0 obj +% 867 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 255.997 292.711 268.057] +/Rect [164.653 267.952 292.711 280.012] /A << /S /GoTo /D (section*.18) >> >> -% 864 0 obj +% 868 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 244.042 319.55 256.101] +/Rect [164.653 255.997 319.55 268.057] /A << /S /GoTo /D (section*.19) >> >> -% 868 0 obj +% 872 0 obj << -/D [866 0 R /XYZ 149.705 753.953 null] +/D [870 0 R /XYZ 149.705 753.953 null] >> -% 865 0 obj +% 869 0 obj << -/Font << /F62 671 0 R /F59 669 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 884 0 obj +% 887 0 obj << /Type /Page -/Contents 885 0 R -/Resources 883 0 R +/Contents 888 0 R +/Resources 886 0 R /MediaBox [0 0 595.276 841.89] -/Parent 886 0 R -/Annots [ 873 0 R 874 0 R 875 0 R 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R ] +/Parent 889 0 R +/Annots [ 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R ] >> -% 873 0 obj +% 876 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [408.168 585.966 420.123 595.071] +/Rect [409.709 585.966 421.664 595.071] /A << /S /GoTo /D (cite.metcalf) >> >> -% 874 0 obj +% 877 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [300.381 514.126 312.336 523.231] +/Rect [275.556 514.126 287.511 523.231] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 875 0 obj +% 878 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [311.368 502.171 323.323 511.127] +/Rect [264.473 502.171 276.428 511.127] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 876 0 obj +% 879 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [327.422 502.171 339.378 511.276] +/Rect [278.854 502.171 290.809 511.276] /A << /S /GoTo /D (cite.RouXiaXu:11) >> >> -% 877 0 obj +% 880 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [234.17 442.286 246.125 451.392] +/Rect [216.302 442.286 228.257 451.392] /A << /S /GoTo /D (cite.machiels) >> >> -% 878 0 obj +% 881 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [241.917 370.546 248.891 379.402] +/Rect [241.109 370.546 248.083 379.402] /A << /S /GoTo /D (cite.sblas97) >> >> -% 879 0 obj +% 882 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [251.448 370.446 258.422 379.402] +/Rect [251.021 370.446 257.995 379.402] /A << /S /GoTo /D (cite.sblas02) >> >> -% 880 0 obj +% 883 0 obj << /Type /Annot /Subtype /Link @@ -5374,7 +5375,7 @@ stream /Rect [226.689 358.591 238.644 367.597] /A << /S /GoTo /D (cite.BLAS1) >> >> -% 881 0 obj +% 884 0 obj << /Type /Annot /Subtype /Link @@ -5382,7 +5383,7 @@ stream /Rect [241.633 358.591 248.606 367.597] /A << /S /GoTo /D (cite.BLAS2) >> >> -% 882 0 obj +% 885 0 obj << /Type /Annot /Subtype /Link @@ -5392,23 +5393,23 @@ stream >> % 7 0 obj << -/D [884 0 R /XYZ 99.895 716.092 null] +/D [887 0 R /XYZ 99.895 716.092 null] >> -% 883 0 obj +% 886 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 903 0 obj +% 906 0 obj << /Type /Page -/Contents 904 0 R -/Resources 902 0 R +/Contents 907 0 R +/Resources 905 0 R /MediaBox [0 0 595.276 841.89] -/Parent 886 0 R -/Annots [ 897 0 R 898 0 R 899 0 R ] +/Parent 889 0 R +/Annots [ 900 0 R 901 0 R 902 0 R ] >> -% 906 0 obj +% 909 0 obj << /Producer (GPL Ghostscript 9.04) /CreationDate (D:20111215145523+01'00') @@ -5417,15 +5418,15 @@ stream /Creator (fig2dev Version 3.2 Patchlevel 5d) /Author (sfilippo@donald \(Salvatore Filippone\)) >> -% 907 0 obj +% 910 0 obj << /Type /ExtGState /OPM 1 >> -% 908 0 obj +% 911 0 obj << /BaseFont /JEJNJE+Times-Roman -/FontDescriptor 909 0 R +/FontDescriptor 912 0 R /Type /Font /FirstChar 32 /LastChar 116 @@ -5433,7 +5434,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 909 0 obj +% 912 0 obj << /Type /FontDescriptor /FontName /JEJNJE+Times-Roman @@ -5447,170 +5448,170 @@ stream /MissingWidth 500 /XHeight 460 /CharSet (/A/B/F/I/L/M/P/S/a/c/e/f/g/i/l/n/o/p/r/s/space/t/three/two/zero) -/FontFile3 910 0 R +/FontFile3 913 0 R >> -% 897 0 obj +% 900 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [268.275 538.551 275.249 550.611] +/Rect [318.599 533.101 325.573 545.161] /A << /S /GoTo /D (figure.1) >> >> -% 898 0 obj +% 901 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [443.339 469.47 450.312 478.427] +/Rect [446.157 464.02 453.131 472.977] /A << /S /GoTo /D (cite.BLACS) >> >> -% 899 0 obj +% 902 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.969 430.955 254.943 443.014] +/Rect [209.992 425.505 216.966 437.564] /A << /S /GoTo /D (section.7) >> >> % 11 0 obj << -/D [903 0 R /XYZ 150.705 675.823 null] +/D [906 0 R /XYZ 150.705 672.16 null] >> -% 905 0 obj +% 908 0 obj << -/D [903 0 R /XYZ 150.705 272.018 null] +/D [906 0 R /XYZ 150.705 263.619 null] >> -% 902 0 obj +% 905 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F60 670 0 R >> -/XObject << /Im2 900 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F78 674 0 R >> +/XObject << /Im2 903 0 R >> /ProcSet [ /PDF /Text ] >> -% 915 0 obj +% 918 0 obj << /Type /Page -/Contents 916 0 R -/Resources 914 0 R +/Contents 919 0 R +/Resources 917 0 R /MediaBox [0 0 595.276 841.89] -/Parent 886 0 R -/Annots [ 901 0 R 912 0 R 913 0 R ] +/Parent 889 0 R +/Annots [ 904 0 R 915 0 R 916 0 R ] >> -% 901 0 obj +% 904 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [275.119 609.332 287.074 618.438] +/Rect [275.033 609.332 286.988 618.438] /A << /S /GoTo /D (cite.METIS) >> >> -% 912 0 obj +% 915 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [232.706 534.258 238.983 547.962] +/Rect [209.13 534.258 215.407 547.962] /A << /S /GoTo /D (Hfootnote.1) >> >> -% 913 0 obj +% 916 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.808 185.645 164.084 199.235] +/Rect [157.604 185.645 163.88 199.235] /A << /S /GoTo /D (Hfootnote.2) >> >> -% 917 0 obj +% 920 0 obj << -/D [915 0 R /XYZ 98.895 753.953 null] +/D [918 0 R /XYZ 98.895 753.953 null] >> % 15 0 obj << -/D [915 0 R /XYZ 99.895 504.866 null] +/D [918 0 R /XYZ 99.895 504.866 null] >> -% 921 0 obj +% 924 0 obj << -/D [915 0 R /XYZ 114.242 167.999 null] +/D [918 0 R /XYZ 114.242 167.999 null] >> -% 922 0 obj +% 925 0 obj << -/D [915 0 R /XYZ 114.242 158.184 null] +/D [918 0 R /XYZ 114.242 158.184 null] >> -% 914 0 obj +% 917 0 obj << -/Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R /F59 669 0 R /F91 919 0 R /F93 920 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R /F75 673 0 R /F179 922 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 928 0 obj +% 931 0 obj << /Type /Page -/Contents 929 0 R -/Resources 927 0 R +/Contents 932 0 R +/Resources 930 0 R /MediaBox [0 0 595.276 841.89] -/Parent 886 0 R -/Annots [ 924 0 R 925 0 R ] +/Parent 889 0 R +/Annots [ 927 0 R 928 0 R ] >> -% 932 0 obj +% 935 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070123225315) /ModDate (D:20070123225315) >> -% 933 0 obj +% 936 0 obj << /Type /ExtGState /OPM 1 >> -% 934 0 obj +% 937 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> -% 924 0 obj +% 927 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [327.281 638.21 334.255 647.166] +/Rect [294.972 638.21 301.946 647.166] /A << /S /GoTo /D (cite.2007c) >> >> -% 925 0 obj +% 928 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [337.243 638.309 344.217 647.166] +/Rect [304.935 638.309 311.909 647.166] /A << /S /GoTo /D (cite.2007d) >> >> -% 930 0 obj +% 933 0 obj << -/D [928 0 R /XYZ 149.705 753.953 null] +/D [931 0 R /XYZ 149.705 753.953 null] >> -% 931 0 obj +% 934 0 obj << -/D [928 0 R /XYZ 150.705 353.614 null] +/D [931 0 R /XYZ 150.705 353.614 null] >> % 19 0 obj << -/D [928 0 R /XYZ 150.705 270.035 null] +/D [931 0 R /XYZ 150.705 270.035 null] >> -% 927 0 obj +% 930 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> -/XObject << /Im3 926 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R >> +/XObject << /Im3 929 0 R >> /ProcSet [ /PDF /Text ] >> -% 940 0 obj +% 943 0 obj << /Type /Page -/Contents 941 0 R -/Resources 939 0 R +/Contents 944 0 R +/Resources 942 0 R /MediaBox [0 0 595.276 841.89] -/Parent 886 0 R -/Annots [ 937 0 R 938 0 R ] +/Parent 889 0 R +/Annots [ 940 0 R 941 0 R ] >> -% 937 0 obj +% 940 0 obj << /Type /Annot /Subtype /Link @@ -5618,86 +5619,86 @@ stream /Rect [404.739 354.196 411.713 366.255] /A << /S /GoTo /D (section.3) >> >> -% 938 0 obj +% 941 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.593 318.033 179.567 330.093] +/Rect [175.86 318.033 182.933 330.093] /A << /S /GoTo /D (section.6) >> >> -% 942 0 obj +% 945 0 obj << -/D [940 0 R /XYZ 98.895 753.953 null] +/D [943 0 R /XYZ 98.895 753.953 null] >> -% 939 0 obj +% 942 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 945 0 obj +% 948 0 obj << /Type /Page -/Contents 946 0 R -/Resources 944 0 R +/Contents 949 0 R +/Resources 947 0 R /MediaBox [0 0 595.276 841.89] -/Parent 886 0 R +/Parent 889 0 R >> -% 947 0 obj +% 950 0 obj << -/D [945 0 R /XYZ 149.705 753.953 null] +/D [948 0 R /XYZ 149.705 753.953 null] >> % 23 0 obj << -/D [945 0 R /XYZ 150.705 716.092 null] +/D [948 0 R /XYZ 150.705 716.092 null] >> -% 948 0 obj +% 951 0 obj << -/D [945 0 R /XYZ 150.705 282.521 null] +/D [948 0 R /XYZ 150.705 282.521 null] >> -% 949 0 obj +% 952 0 obj << -/D [945 0 R /XYZ 150.705 261.733 null] +/D [948 0 R /XYZ 150.705 261.733 null] >> -% 950 0 obj +% 953 0 obj << -/D [945 0 R /XYZ 150.705 240.946 null] +/D [948 0 R /XYZ 150.705 240.946 null] >> -% 951 0 obj +% 954 0 obj << -/D [945 0 R /XYZ 150.705 220.159 null] +/D [948 0 R /XYZ 150.705 220.159 null] >> -% 952 0 obj +% 955 0 obj << -/D [945 0 R /XYZ 150.705 188.012 null] +/D [948 0 R /XYZ 150.705 188.012 null] >> -% 953 0 obj +% 956 0 obj << -/D [945 0 R /XYZ 150.705 167.072 null] +/D [948 0 R /XYZ 150.705 167.072 null] >> -% 954 0 obj +% 957 0 obj << -/D [945 0 R /XYZ 150.705 148.646 null] +/D [948 0 R /XYZ 150.705 148.646 null] >> -% 955 0 obj +% 958 0 obj << -/D [945 0 R /XYZ 150.705 132.275 null] +/D [948 0 R /XYZ 150.705 132.275 null] >> -% 944 0 obj +% 947 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 958 0 obj +% 961 0 obj << /Type /Page -/Contents 959 0 R -/Resources 957 0 R +/Contents 962 0 R +/Resources 960 0 R /MediaBox [0 0 595.276 841.89] -/Parent 977 0 R -/Annots [ 943 0 R ] +/Parent 980 0 R +/Annots [ 946 0 R ] >> -% 943 0 obj +% 946 0 obj << /Type /Annot /Subtype /Link @@ -5705,62 +5706,58 @@ stream /Rect [233.383 690.964 239.66 703.958] /A << /S /GoTo /D (Hfootnote.3) >> >> -% 960 0 obj -<< -/D [958 0 R /XYZ 98.895 753.953 null] ->> -% 961 0 obj -<< -/D [958 0 R /XYZ 99.895 716.092 null] ->> -% 962 0 obj -<< -/D [958 0 R /XYZ 99.895 688.537 null] ->> % 963 0 obj << -/D [958 0 R /XYZ 99.895 616.725 null] +/D [961 0 R /XYZ 98.895 753.953 null] >> % 964 0 obj << -/D [958 0 R /XYZ 99.895 597.924 null] +/D [961 0 R /XYZ 99.895 716.092 null] >> % 965 0 obj << -/D [958 0 R /XYZ 99.895 579.124 null] +/D [961 0 R /XYZ 99.895 688.869 null] >> % 966 0 obj << -/D [958 0 R /XYZ 99.895 548.963 null] +/D [961 0 R /XYZ 99.895 619.713 null] >> % 967 0 obj << -/D [958 0 R /XYZ 99.895 529.567 null] +/D [961 0 R /XYZ 99.895 601.577 null] >> % 968 0 obj << -/D [958 0 R /XYZ 99.895 510.767 null] +/D [961 0 R /XYZ 99.895 583.441 null] >> % 969 0 obj << -/D [958 0 R /XYZ 99.895 489.974 null] +/D [961 0 R /XYZ 99.895 553.945 null] >> % 970 0 obj << -/D [958 0 R /XYZ 99.895 464.479 null] +/D [961 0 R /XYZ 99.895 535.213 null] +>> +% 971 0 obj +<< +/D [961 0 R /XYZ 99.895 505.717 null] +>> +% 972 0 obj +<< +/D [961 0 R /XYZ 99.895 484.993 null] >> endstream endobj -982 0 obj +985 0 obj << -/Length 7173 +/Length 7868 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(2.3.1)-1000(User)18(-de\002ned)-250(index)-250(mappings)]TJ/F62 9.9626 Tf 0 -18.964 Td [(PSBLAS)-316(supports)-315(user)18(-de\002ned)-316(global)-316(to)-315(local)-316(index)-316(mappings,)-332(subject)-315(to)-316(the)]TJ 0 -11.955 Td [(constraints)-250(outlined)-250(in)-250(sec.)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(2.3.1)-1000(User)18(-de\002ned)-250(index)-250(mappings)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 687.165 Tm [(PSBLAS)-250(sup)1(ports)-250(user)18(-de\002ned)-250(global)-249(to)-250(local)-249(index)-250(mappings,)-251(subject)-249(to)-250(the)]TJ 1 0 0 1 150.705 675.21 Tm [(constraints)-250(outlined)-250(in)-250(sec.)]TJ 0 0 1 rg 0 0 1 RG [-250(2.3)]TJ 0 g 0 G @@ -5768,64 +5765,64 @@ BT 0 g 0 G 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-250(set)-250(of)-250(indices)-250(owned)-250(locally)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)-250(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 294.494 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -1.495 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F62 9.9626 Tf 2.775 3.143 Td [(;)]TJ + [-469(The)-250(set)-250(of)-250(indices)-250(owned)-250(locally)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)-250(1)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 294.185 0 Td [(n)]TJ/F84 9.9626 Tf 5.664 -1.495 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F84 9.9626 Tf 2.775 3.143 Td [(;)]TJ 0 g 0 G - -320.47 -19.926 Td [(2.)]TJ + -320.161 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-250(set)-250(of)-250(halo)-250(points)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)]TJ/F60 9.9626 Tf 228.286 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -1.494 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F93 10.3811 Tf 4.836 3.142 Td [(+)]TJ/F62 9.9626 Tf 10.132 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.966 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -3.83 Td [(col)]TJ/F60 5.9776 Tf 12.795 -1.649 Td [(i)]TJ/F62 9.9626 Tf 2.774 5.479 Td [(;)]TJ -320.107 -21.759 Td [(but)-289(otherwise)-289(the)-288(mapping)-289(is)-289(arbitrary)111(.)-426(The)-289(user)-289(application)-289(is)-288(r)18(esponsible)-289(to)]TJ 0 -11.956 Td [(ensur)18(e)-262(consistency)-261(of)-262(this)-262(mapping;)-267(some)-262(err)18(ors)-262(may)-261(be)-262(caught)-262(by)-261(the)-262(library)111(,)]TJ 0 -11.955 Td [(but)-236(this)-236(is)-236(not)-236(guaranteed.)-305(The)-236(application)-236(str)8(uctur)18(e)-236(to)-236(support)-236(this)-236(usage)-236(is)-236(as)]TJ 0 -11.955 Td [(follows:)]TJ + [-469(The)-250(set)-250(of)-250(halo)-250(points)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)]TJ/F78 9.9626 Tf 227.978 0 Td [(n)]TJ/F84 9.9626 Tf 5.663 -1.494 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F181 10.3811 Tf 4.837 3.142 Td [(+)]TJ/F84 9.9626 Tf 10.131 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 19.966 0 Td [(n)]TJ/F84 9.9626 Tf 5.664 -3.83 Td [(col)]TJ/F78 5.9776 Tf 12.795 -1.649 Td [(i)]TJ/F84 9.9626 Tf 2.775 5.479 Td [(;)]TJ 1.016 0 0 1 150.705 613.6 Tm [(but)-246(otherwise)-247(the)-246(mapping)-246(is)-246(arbitrary)109(.)-306(The)-246(user)-247(application)-246(is)-246(r)17(esponsibl)1(e)-247(to)]TJ 1.009 0 0 1 150.705 601.644 Tm [(ensur)18(e)-247(consistency)-247(of)-246(this)-247(mapping;)-247(some)-247(err)18(ors)-247(may)-246(be)-247(caught)-247(by)-247(the)-246(library)110(,)]TJ 0.994 0 0 1 150.705 589.689 Tm [(but)-253(this)-252(is)-253(not)-252(guaranteed.)-315(The)-253(application)-252(str)8(uctur)18(e)-253(to)-252(support)-253(this)-252(usage)-253(is)-252(as)]TJ 1 0 0 1 150.705 577.734 Tm [(follows:)]TJ 0 g 0 G 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(Initialize)-190(index)-190(space)-190(with)]TJ/F67 9.9626 Tf 128.098 0 Td [(psb_cdall\050ictx,desc,info,vl=vl,lidx=lidx\051)]TJ/F62 9.9626 Tf -115.645 -11.955 Td [(passing)-292(the)-293(vectors)]TJ/F67 9.9626 Tf 87.882 0 Td [(vl\050:\051)]TJ/F62 9.9626 Tf 29.064 0 Td [(containing)-292(the)-293(set)-292(of)-293(global)-292(indices)-292(owned)-293(by)]TJ -116.946 -11.956 Td [(the)-327(curr)18(ent)-328(pr)18(ocess)-327(and)]TJ/F67 9.9626 Tf 108.493 0 Td [(lidx\050:\051)]TJ/F62 9.9626 Tf 39.873 0 Td [(containing)-327(the)-327(corr)18(esponding)-328(local)-327(in-)]TJ -148.366 -11.955 Td [(dices;)]TJ + 0.98 0 0 1 175.611 557.809 Tm [(Initialize)-194(index)-194(space)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 289.095 557.809 Tm [(psb_cdall\050ictx,desc,info,vl=vl,lidx=lidx\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.313 545.854 Tm [(passing)-205(the)-205(vectors)]TJ/F131 9.9626 Tf 1 0 0 1 258.875 545.854 Tm [(vl\050:\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 287.028 545.854 Tm [(containing)-205(the)-205(set)-205(of)-205(global)-205(indices)-205(owned)-205(by)-204(the)]TJ 1 0 0 1 175.611 533.898 Tm [(curr)18(ent)-250(pr)18(ocess)-250(and)]TJ/F131 9.9626 Tf 89.105 0 Td [(lidx\050:\051)]TJ/F84 9.9626 Tf 39.103 0 Td [(containing)-250(the)-250(corr)18(esponding)-250(local)-250(indices;)]TJ 0 g 0 G - -12.453 -19.925 Td [(2.)]TJ + -140.661 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Add)-412(the)-412(halo)-412(points)]TJ/F67 9.9626 Tf 109.326 0 Td [(ja\050:\051)]TJ/F62 9.9626 Tf 30.256 0 Td [(and)-412(their)-412(associated)-412(local)-412(indices)]TJ/F67 9.9626 Tf 155.064 0 Td [(lidx\050:\051)]TJ/F62 9.9626 Tf -282.193 -11.955 Td [(with)-250(a\050some\051)-250(call\050s\051)-250(to)]TJ/F67 9.9626 Tf 99.815 0 Td [(psb_cdins\050nz,ja,desc,info,lidx=lidx\051)]TJ/F62 9.9626 Tf 188.292 0 Td [(;)]TJ + 0.98 0 0 1 175.223 513.973 Tm [(Add)-241(the)-241(halo)-241(points)]TJ/F131 9.9626 Tf 1 0 0 1 263.482 513.973 Tm [(ja\050:\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 291.986 513.973 Tm [(and)-241(their)-241(associated)-241(local)-241(indices)]TJ/F131 9.9626 Tf 1 0 0 1 435.602 513.973 Tm [(lidx\050:\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 474.567 513.973 Tm [(with)]TJ 1 0 0 1 175.611 502.018 Tm [(a\050some\051)-250(call\050s\051)-250(to)]TJ/F131 9.9626 Tf 77.071 0 Td [(psb_cdins\050nz,ja,desc,info,lidx=lidx\051)]TJ/F84 9.9626 Tf 188.292 0 Td [(;)]TJ 0 g 0 G - -300.56 -19.926 Td [(3.)]TJ + -277.816 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F67 9.9626 Tf 144.387 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + [-461(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F131 9.9626 Tf 143.998 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -191.46 -19.925 Td [(4.)]TJ + -191.071 -19.926 Td [(4.)]TJ 0 g 0 G - [-500(Build)-190(the)-190(sparse)-190(matrices)-190(and)-190(vectors,)-202(optionally)-190(making)-190(use)-190(in)]TJ/F67 9.9626 Tf 288.117 0 Td [(psb_spins)]TJ/F62 9.9626 Tf -275.664 -11.955 Td [(and)]TJ/F67 9.9626 Tf 19.958 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 50.163 0 Td [(of)-310(the)]TJ/F67 9.9626 Tf 28.756 0 Td [(local)]TJ/F62 9.9626 Tf 29.243 0 Td [(ar)18(gument)-310(specifying)-310(that)-310(the)-311(indices)-310(in)]TJ/F67 9.9626 Tf 177.734 0 Td [(ia)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf -316.314 -11.955 Td [(ja)]TJ/F62 9.9626 Tf 12.952 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(irw)]TJ/F62 9.9626 Tf 15.691 0 Td [(,)-250(r)18(espectively)111(,)-250(ar)18(e)-250(alr)18(eady)-250(local)-250(indices.)]TJ/F59 11.9552 Tf -72.906 -29.133 Td [(2.4)-1000(Programming)-250(model)]TJ/F62 9.9626 Tf 0 -18.964 Td [(The)-316(PSBLAS)-315(librarary)-316(is)-315(based)-316(on)-315(the)-316(Single)-315(Pr)18(ogram)-316(Multiple)-316(Data)-315(\050SPMD\051)]TJ 0 -11.955 Td [(pr)18(ogramming)-277(model:)-364(each)-277(pr)18(ocess)-277(participatin)1(g)-277(in)-277(the)-277(computation)-277(performs)]TJ 0 -11.955 Td [(the)-250(same)-250(actions)-250(on)-250(a)-250(chunk)-250(of)-250(data.)-310(Parallelism)-250(is)-250(thus)-250(data-driven.)]TJ 14.944 -11.956 Td [(Because)-313(of)-313(this)-312(str)8(uctur)18(e,)-329(many)-313(subr)18(outines)-313(coor)18(dinate)-312(their)-313(action)-313(acr)18(oss)]TJ -14.944 -11.955 Td [(the)-336(various)-336(pr)18(ocesses,)-358(thus)-336(pr)18(oviding)-336(an)-336(implicit)-336(synchr)18(onization)-336(point,)-358(and)]TJ 0 -11.955 Td [(ther)18(efor)18(e)]TJ/F60 9.9626 Tf 43.283 0 Td [(must)]TJ/F62 9.9626 Tf 24.136 0 Td [(be)-367(called)-366(simultaneously)-367(by)-366(all)-367(pr)18(ocesses)-367(participating)-366(in)-367(the)]TJ -67.419 -11.955 Td [(computation.)-525(This)-321(is)-322(certainly)-322(tr)8(ue)-321(for)-322(the)-322(data)-321(allocation)-322(and)-322(assembl)1(y)-322(r)18(ou-)]TJ 0 -11.955 Td [(tines,)-250(for)-250(all)-250(the)-250(computational)-250(r)18(outines)-250(and)-250(for)-250(some)-250(of)-250(the)-250(tools)-250(r)18(outines.)]TJ 14.944 -11.955 Td [(However)-333(ther)18(e)-332(ar)18(e)-333(many)-333(cases)-332(wher)18(e)-333(no)-333(synchr)18(onizati)1(on,)-354(and)-332(indeed)-333(no)]TJ -14.944 -11.956 Td [(communication)-344(among)-343(pr)18(ocesses,)-367(is)-344(implied;)-390(for)-344(instance,)-367(all)-344(the)-343(r)18(outines)-344(in)]TJ 0 -11.955 Td [(sec.)]TJ + 0.98 0 0 1 175.611 462.167 Tm [(Build)-206(the)-207(sparse)-206(matrices)-207(and)-206(vectors,)-216(optionally)-207(making)-206(use)-206(in)]TJ/F131 9.9626 Tf 1 0 0 1 447.343 462.167 Tm [(psb_spins)]TJ/F84 9.9626 Tf 1.02 0 0 1 175.611 450.212 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 195.653 450.212 Tm [(psb_geins)]TJ/F84 9.9626 Tf 1.02 0 0 1 245.564 450.212 Tm [(of)-279(the)]TJ/F131 9.9626 Tf 1 0 0 1 274.266 450.212 Tm [(local)]TJ/F84 9.9626 Tf 1.02 0 0 1 303.255 450.212 Tm [(ar)18(gument)-280(specifying)-279(that)-279(the)-279(indices)-280(in)]TJ/F131 9.9626 Tf 1 0 0 1 482.66 450.212 Tm [(ia)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 450.212 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 438.257 Tm [(ja)]TJ/F84 9.9626 Tf 12.952 0 Td [(and)]TJ/F131 9.9626 Tf 19.357 0 Td [(irw)]TJ/F84 9.9626 Tf 15.691 0 Td [(,)-250(r)18(espectively)111(,)-250(ar)18(e)-250(alr)18(eady)-250(local)-250(indices.)]TJ/F75 11.9552 Tf -72.906 -29.133 Td [(2.4)-1000(Programming)-250(model)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 390.16 Tm [(The)-266(PSBLAS)-265(librarary)-266(is)-266(based)-266(on)-265(the)-266(Single)-266(Pr)18(ogram)-266(Multiple)-265(Data)-266(\050SPMD\051)]TJ 1.008 0 0 1 150.406 378.205 Tm [(pr)18(ogramming)-250(model:)-310(each)-250(pr)18(ocess)-250(participating)-249(in)-250(the)-250(computat)1(ion)-250(performs)]TJ 1 0 0 1 150.705 366.25 Tm [(the)-250(same)-250(actions)-250(on)-250(a)-250(chunk)-250(of)-250(data.)-310(Parallelism)-250(is)-250(thus)-250(data-driven.)]TJ 1.019 0 0 1 165.649 354.295 Tm [(Because)-246(of)-246(this)-246(str)8(uctur)17(e,)-246(many)-246(subr)18(outines)-246(coor)18(dinate)-246(their)-246(action)-246(acr)17(oss)]TJ 1.02 0 0 1 150.705 342.34 Tm [(the)-265(various)-264(pr)18(ocesses,)-270(thus)-264(pr)17(oviding)-264(an)-265(implicit)-264(synchr)17(onization)-264(point,)-270(and)]TJ 1.02 0 0 1 150.705 330.384 Tm [(ther)18(efor)17(e)]TJ/F78 9.9626 Tf 1.02 0 0 1 194.173 330.384 Tm [(must)]TJ/F84 9.9626 Tf 1.02 0 0 1 218.103 330.384 Tm [(be)-299(called)-299(simultaneously)-299(by)-298(all)-299(pr)17(ocesses)-299(p)1(articipating)-299(in)-299(the)]TJ 0.98 0 0 1 150.705 318.429 Tm [(computation.)-306(This)-225(is)-225(certainly)-225(tr)9(ue)-225(for)-225(the)-225(data)-225(allocation)-224(and)-225(assembly)-225(r)18(outines,)]TJ 1 0 0 1 150.705 306.474 Tm [(for)-250(all)-250(the)-250(computational)-250(r)18(outines)-250(and)-250(for)-250(some)-250(of)-250(the)-250(tools)-250(r)18(outines.)]TJ 1.02 0 0 1 165.649 294.519 Tm [(However)-269(ther)17(e)-269(ar)18(e)-269(many)-270(cases)-269(wher)18(e)-270(no)-269(synchr)18(onization,)-276(and)-269(indeed)-269(no)]TJ 1.02 0 0 1 150.705 282.564 Tm [(communication)-282(among)-281(pr)17(ocesses,)-290(is)-282(implied;)-300(for)-282(instance,)-290(all)-282(the)-282(r)18(outines)-282(in)]TJ 1.02 0 0 1 150.705 270.609 Tm [(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-246(3)]TJ + [-377(3)]TJ 0 g 0 G - [-247(ar)18(e)-246(only)-246(acting)-246(on)-247(the)-246(local)-246(data)-247(str)8(uctur)18(es,)-247(and)-246(thus)-246(may)-247(be)-246(called)-246(inde-)]TJ 0 -11.955 Td [(pendently)111(.)-306(The)-238(most)-238(important)-237(case)-238(is)-238(that)-238(of)-238(the)-238(coef)18(\002cient)-237(insertion)-238(r)18(outines:)]TJ 0 -11.955 Td [(since)-231(the)-231(number)-231(of)-230(coef)18(\002cients)-231(in)-231(the)-231(sparse)-231(and)-231(dense)-230(matrices)-231(varies)-231(among)]TJ 0 -11.955 Td [(the)-248(pr)18(ocessors,)-249(and)-249(since)-248(the)-249(user)-248(is)-249(fr)18(ee)-248(to)-249(choose)-248(an)-249(arbitrary)-248(or)18(der)-249(in)-248(builid-)]TJ 0 -11.955 Td [(ing)-250(the)-250(matrix)-250(entries,)-250(these)-250(r)18(outines)-250(cannot)-250(imply)-250(a)-250(synchr)18(onization.)]TJ 14.944 -11.956 Td [(Thr)18(oughout)-250(this)-250(user)-74('s)-250(guide)-250(each)-250(subr)18(outine)-250(will)-250(be)-250(clearly)-250(indicated)-250(as:)]TJ + [-377(ar)17(e)-377(only)-377(acting)-377(on)-378(the)-377(local)-377(data)-377(str)8(uctur)17(es,)-410(and)-377(thus)-377(may)-377(be)-378(called)]TJ 1.02 0 0 1 150.705 258.653 Tm [(independently)109(.)-657(The)-362(most)-363(important)-363(case)-362(is)-363(that)-363(of)-362(the)-363(coef)18(\002cient)-363(insertion)]TJ 0.98 0 0 1 150.705 246.698 Tm [(r)18(outines:)-296(since)-215(the)-215(number)-216(of)-215(coef)19(\002)-1(cients)-215(in)-215(the)-215(sparse)-216(and)-215(dense)-215(matrices)-215(varies)]TJ 0.996 0 0 1 150.705 234.743 Tm [(among)-252(the)-251(pr)18(ocessors,)-252(and)-252(since)-252(the)-251(user)-252(is)-252(fr)18(ee)-251(to)-252(choose)-252(an)-251(arbitrary)-252(or)18(der)-252(in)]TJ 1 0 0 1 150.705 222.788 Tm [(builiding)-250(the)-250(matrix)-250(entries,)-250(these)-250(r)18(outines)-250(cannot)-250(imply)-250(a)-250(synchr)18(onization.)]TJ 14.944 -11.955 Td [(Thr)18(oughout)-250(this)-250(user)-74('s)-250(guide)-250(each)-250(subr)18(outine)-250(will)-250(be)-250(clearly)-250(indicated)-250(as:)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(Synchronous:)]TJ +/F75 9.9626 Tf -14.944 -19.926 Td [(Synchronous:)]TJ 0 g 0 G -/F62 9.9626 Tf 67.247 0 Td [(must)-307(be)-307(called)-308(simultaneously)-307(by)-307(all)-307(the)-308(pr)18(ocesses)-307(in)-307(the)-307(r)18(ele-)]TJ -42.341 -11.955 Td [(vant)-250(communication)-250(context;)]TJ +/F84 9.9626 Tf 0.98 0 0 1 217.952 190.907 Tm [(must)-200(be)-200(called)-200(simultaneously)-200(by)-200(all)-200(the)-199(pr)18(ocesses)-200(in)-200(the)-200(r)18(el)1(evant)]TJ 1 0 0 1 175.611 178.952 Tm [(communication)-250(context;)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(Asynchronous:)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(Asynchronous:)]TJ 0 g 0 G -/F62 9.9626 Tf 73.334 0 Td [(may)-250(be)-250(called)-250(in)-250(a)-250(totally)-250(independent)-250(manner)74(.)]TJ +/F84 9.9626 Tf 73.334 0 Td [(may)-250(be)-250(called)-250(in)-250(a)-250(totally)-250(independent)-250(manner)74(.)]TJ 0 g 0 G - 96.031 -56.634 Td [(8)]TJ + 96.031 -68.589 Td [(8)]TJ 0 g 0 G ET endstream endobj -993 0 obj +996 0 obj << -/Length 8187 +/Length 8753 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ/F62 9.9626 Tf 0 -23.091 Td [(In)-289(this)-288(chapter)-289(we)-289(illustrate)-288(the)-289(data)-289(str)8(uctur)18(es)-288(used)-289(for)-289(de\002nition)-289(of)-288(r)18(outines)]TJ 0 -11.956 Td [(interfaces.)-622(They)-354(include)-354(data)-354(str)8(uctur)18(es)-354(for)-354(sparse)-354(matrices,)-380(communication)]TJ 0 -11.955 Td [(descriptors)-250(and)-250(pr)18(econditioners.)]TJ 14.944 -12.156 Td [(All)-248(the)-248(data)-249(types)-248(and)-248(the)-248(basic)-248(subr)18(outine)-249(interfaces)-248(r)18(elated)-248(to)-248(descriptors)]TJ -14.944 -11.955 Td [(and)-345(sparse)-345(matrices)-344(ar)18(e)-345(de\002ned)-345(in)-345(the)-345(module)]TJ/F67 9.9626 Tf 213.323 0 Td [(psb_base_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(;)-392(this)-345(will)-345(have)]TJ -276.087 -11.955 Td [(to)-381(be)-381(included)-381(by)-381(every)-381(user)-381(subr)18(outine)-381(that)-381(makes)-381(u)1(se)-381(of)-381(the)-381(library)111(.)-703(The)]TJ 0 -11.956 Td [(pr)18(econditioners)-250(ar)18(e)-250(de\002ned)-250(in)-250(the)-250(module)]TJ/F67 9.9626 Tf 187.993 0 Td [(psb_prec_mod)]TJ/F62 9.9626 Tf -173.049 -12.156 Td [(Integer)74(,)-433(r)18(eal)-396(and)-397(complex)-396(data)-396(types)-397(ar)18(e)-396(parametrized)-396(with)-397(a)-396(kind)-396(type)]TJ -14.944 -11.955 Td [(de\002ned)-250(in)-250(the)-250(library)-250(as)-250(follows:)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ/F84 9.9626 Tf 1.015 0 0 1 99.895 682.693 Tm [(In)-246(this)-246(chapter)-246(we)-247(illustrate)-246(the)-246(data)-246(str)8(uctur)18(es)-247(u)1(sed)-247(for)-246(de\002nition)-246(of)-246(r)18(outines)]TJ 1.02 0 0 1 99.895 670.737 Tm [(interfaces.)-430(They)-287(include)-287(data)-287(str)8(uctur)18(es)-287(for)-287(sparse)-287(matrices,)-298(communication)]TJ 1 0 0 1 99.895 658.782 Tm [(descriptors)-250(and)-250(pr)18(econditioners.)]TJ 0.999 0 0 1 114.839 646.626 Tm [(All)-251(the)-251(data)-252(types)-251(and)-251(the)-251(basic)-252(su)1(br)18(outine)-252(interfaces)-251(r)18(elated)-251(to)-251(descriptors)]TJ 1.02 0 0 1 99.895 634.671 Tm [(and)-297(sparse)-296(matrices)-296(ar)17(e)-296(de\002ned)-297(in)-296(the)-297(module)]TJ/F131 9.9626 Tf 1 0 0 1 313.56 634.671 Tm [(psb_base_mod)]TJ/F84 9.9626 Tf 1.02 0 0 1 376.324 634.671 Tm [(;)-322(this)-297(will)-296(have)]TJ 1.02 0 0 1 99.895 622.716 Tm [(to)-335(be)-335(included)-335(by)-335(every)-336(user)-335(subr)18(outine)-335(that)-335(makes)-335(use)-335(of)-335(the)-336(library)109(.)-574(The)]TJ 1 0 0 1 99.596 610.76 Tm [(pr)18(econditioners)-250(ar)18(e)-250(de\002ned)-250(in)-250(the)-250(module)]TJ/F131 9.9626 Tf 187.993 0 Td [(psb_prec_mod)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 598.604 Tm [(Integer)73(,)-362(r)17(eal)-338(and)-339(complex)-338(data)-339(types)-338(ar)17(e)-338(parametrized)-339(with)-338(a)-339(kind)-338(type)]TJ 1 0 0 1 99.895 586.649 Tm [(de\002ned)-250(in)-250(the)-250(library)-250(as)-250(follows:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.528 Td [(psb)]TJ +/F75 9.9626 Tf 0 -20.528 Td [(psb)]TJ ET q 1 0 0 1 117.091 566.32 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 566.121 Td [(spk)]TJ +/F75 9.9626 Tf 120.08 566.121 Td [(spk)]TJ ET q 1 0 0 1 137.275 566.32 cm @@ -5833,20 +5830,20 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 145.245 566.121 Td [(Kind)-407(parameter)-406(for)-407(short)-406(pr)18(ecision)-407(r)18(eal)-406(and)-407(complex)-406(data;)-485(corr)18(e-)]TJ -20.443 -11.955 Td [(sponds)-250(to)-250(a)]TJ +/F84 9.9626 Tf 1.02 0 0 1 145.245 566.121 Tm [(Kind)-362(p)1(arameter)-362(for)-361(short)-362(pr)18(ecision)-362(r)18(eal)-362(and)-361(complex)-362(data;)-419(corr)17(e-)]TJ 1 0 0 1 124.802 554.166 Tm [(sponds)-250(to)-250(a)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 52.901 0 Td [(REAL)]TJ +/F131 9.9626 Tf 52.901 0 Td [(REAL)]TJ 0 g 0 G -/F62 9.9626 Tf 23.412 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(4)-250(bytes;)]TJ +/F84 9.9626 Tf 23.412 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(4)-250(bytes;)]TJ 0 g 0 G -/F59 9.9626 Tf -101.22 -20.73 Td [(psb)]TJ +/F75 9.9626 Tf -101.22 -20.73 Td [(psb)]TJ ET q 1 0 0 1 117.091 533.635 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 533.436 Td [(dpk)]TJ +/F75 9.9626 Tf 120.08 533.436 Td [(dpk)]TJ ET q 1 0 0 1 138.939 533.635 cm @@ -5854,20 +5851,20 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 146.909 533.436 Td [(Kind)-420(parameter)-421(for)-420(long)-420(pr)18(ecision)-421(r)18(eal)-420(and)-420(complex)-421(data;)-505(corr)18(e-)]TJ -22.107 -11.955 Td [(sponds)-250(to)-250(a)]TJ +/F84 9.9626 Tf 1.02 0 0 1 146.909 533.436 Tm [(Kind)-376(parameter)-375(for)-376(long)-375(pr)17(ecision)-375(r)17(eal)-375(and)-376(complex)-376(data;)-441(corr)18(e-)]TJ 1 0 0 1 124.802 521.481 Tm [(sponds)-250(to)-250(a)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 52.901 0 Td [(DOUBLE)-525(PRECISION)]TJ +/F131 9.9626 Tf 52.901 0 Td [(DOUBLE)-525(PRECISION)]TJ 0 g 0 G -/F62 9.9626 Tf 86.176 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(8)-250(bytes;)]TJ +/F84 9.9626 Tf 86.176 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(8)-250(bytes;)]TJ 0 g 0 G -/F59 9.9626 Tf -163.984 -20.73 Td [(psb)]TJ +/F75 9.9626 Tf -163.984 -20.73 Td [(psb)]TJ ET q 1 0 0 1 117.091 500.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 500.751 Td [(mpk)]TJ +/F75 9.9626 Tf 120.08 500.751 Td [(mpk)]TJ ET q 1 0 0 1 141.708 500.951 cm @@ -5875,16 +5872,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 149.678 500.751 Td [(Kind)-250(parameter)-250(for)-250(4-bytes)-250(integer)-250(data,)-250(as)-250(is)-250(always)-250(used)-250(by)-250(MPI;)]TJ +/F84 9.9626 Tf 149.678 500.751 Td [(Kind)-250(parameter)-250(for)-250(4-bytes)-250(integer)-250(data,)-250(as)-250(is)-250(always)-250(used)-250(by)-250(MPI;)]TJ 0 g 0 G -/F59 9.9626 Tf -49.783 -20.729 Td [(psb)]TJ +/F75 9.9626 Tf -49.783 -20.729 Td [(psb)]TJ ET q 1 0 0 1 117.091 480.221 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 480.022 Td [(epk)]TJ +/F75 9.9626 Tf 120.08 480.022 Td [(epk)]TJ ET q 1 0 0 1 137.833 480.221 cm @@ -5892,16 +5889,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 145.803 480.022 Td [(Kind)-364(parameter)-363(for)-364(8-bytes)-363(integer)-364(data,)-391(a)-1(s)-363(is)-364(always)-363(used)-364(by)-363(the)]TJ/F67 9.9626 Tf -21.001 -11.955 Td [(sizeof)]TJ/F62 9.9626 Tf 33.873 0 Td [(methods;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 145.803 480.022 Tm [(Kind)-311(parameter)-312(for)-311(8-bytes)-311(integer)-312(data,)-327(as)-312(is)-311(always)-311(used)-312(by)-311(the)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 468.067 Tm [(sizeof)]TJ/F84 9.9626 Tf 33.873 0 Td [(methods;)]TJ 0 g 0 G -/F59 9.9626 Tf -58.78 -20.73 Td [(psb)]TJ +/F75 9.9626 Tf -58.78 -20.73 Td [(psb)]TJ ET q 1 0 0 1 117.091 447.537 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 447.337 Td [(ipk)]TJ +/F75 9.9626 Tf 120.08 447.337 Td [(ipk)]TJ ET q 1 0 0 1 136.169 447.537 cm @@ -5909,16 +5906,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 144.139 447.337 Td [(Kind)-398(parameter)-399(for)-398(\223local\224)-398(integer)-399(indices)-398(and)-398(data;)-473(with)-398(default)]TJ -19.337 -11.955 Td [(build)-250(options)-250(this)-250(is)-250(a)-250(4)-250(bytes)-250(integer;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 144.139 447.337 Tm [(Kind)-336(parameter)-336(for)-336(\223local\224)-336(integer)-336(indices)-336(and)-336(data;)-382(with)-336(default)]TJ 1 0 0 1 124.802 435.382 Tm [(build)-250(options)-250(this)-250(is)-250(a)-250(4)-250(bytes)-250(integer;)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.729 Td [(psb)]TJ +/F75 9.9626 Tf -24.907 -20.729 Td [(psb)]TJ ET q 1 0 0 1 117.091 414.852 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 414.653 Td [(lpk)]TJ +/F75 9.9626 Tf 120.08 414.653 Td [(lpk)]TJ ET q 1 0 0 1 136.169 414.852 cm @@ -5926,29 +5923,29 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 144.139 414.653 Td [(Kind)-328(parameter)-329(for)-328(\223global\224)-328(integer)-329(indices)-328(and)-328(data;)-368(with)-328(default)]TJ -19.337 -11.955 Td [(build)-250(options)-250(this)-250(is)-250(an)-250(8)-250(bytes)-250(integer;)]TJ -24.907 -20.529 Td [(The)-205(integer)-205(kinds)-205(for)-206(local)-205(and)-205(global)-205(indices)-205(can)-205(be)-206(chosen)-205(at)-205(con\002gur)18(e)-205(time)-205(to)]TJ 0 -11.955 Td [(hold)-266(4)-267(or)-266(8)-267(bytes,)-270(with)-266(the)-267(global)-266(indices)-266(at)-267(least)-266(as)-267(lar)18(ge)-266(as)-266(the)-267(local)-266(ones.)-359(T)92(o-)]TJ 0 -11.955 Td [(gether)-219(with)-220(the)-219(classes)-219(attributes)-219(we)-219(also)-220(discuss)-219(their)-219(methods.)-300(Most)-219(methods)]TJ 0 -11.955 Td [(detailed)-272(her)18(e)-272(only)-273(act)-272(on)-272(the)-272(local)-272(variable,)-278(i.e.)-376(their)-273(action)-272(is)-272(pur)18(ely)-272(local)-272(and)]TJ 0 -11.956 Td [(asynchr)18(onous)-359(unless)-360(otherwise)-359(stated.)-638(The)-359(list)-360(of)-359(methods)-359(her)18(e)-360(is)-359(not)-359(com-)]TJ 0 -11.955 Td [(pletely)-336(exhaustive;)-380(many)-336(methods,)-358(especially)-336(those)-336(that)-336(alter)-337(the)-336(contents)-336(of)]TJ 0 -11.955 Td [(the)-299(various)-298(objects,)-311(ar)18(e)-299(usually)-299(not)-299(needed)-298(by)-299(the)-299(end-user)74(,)-311(and)-298(ther)18(efor)18(e)-299(ar)18(e)]TJ 0 -11.955 Td [(described)-250(in)-250(the)-250(developer)-74('s)-250(documentation.)]TJ/F59 11.9552 Tf 0 -30.277 Td [(3.1)-1000(Descriptor)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -19.353 Td [(All)-241(the)-241(gener)1(a)-1(l)-240(matrix)-241(informations)-241(and)-240(elements)-241(to)-241(be)-241(exchanged)-240(among)-241(pr)18(o-)]TJ 0 -11.956 Td [(cesses)-402(ar)18(e)-401(stor)18(ed)-402(within)-401(a)-402(data)-401(str)8(uctur)18(e)-402(of)-401(the)-402(type)]TJ/F67 9.9626 Tf 242.575 0 Td [(psb)]TJ +/F84 9.9626 Tf 1.02 0 0 1 144.139 414.653 Tm [(Kind)-266(parameter)-266(for)-266(\223global\224)-266(integer)-266(indices)-266(and)-266(data;)-277(with)-266(default)]TJ 1 0 0 1 124.802 402.698 Tm [(build)-250(options)-250(this)-250(is)-250(an)-250(8)-250(bytes)-250(integer;)]TJ 1.017 0 0 1 99.587 382.169 Tm [(The)-246(integer)-246(kinds)-246(for)-246(local)-246(and)-246(global)-246(indices)-246(can)-246(be)-246(chosen)-246(at)-246(con\002gur)18(e)-246(time)]TJ 1.02 0 0 1 99.895 370.214 Tm [(to)-273(hold)-273(4)-273(or)-273(8)-273(bytes,)-280(with)-273(the)-273(global)-273(indices)-273(at)-273(least)-273(as)-273(lar)18(ge)-273(as)-273(the)-273(local)-273(ones.)]TJ 1.002 0 0 1 99.587 358.259 Tm [(T)92(ogether)-249(with)-249(the)-250(classes)-249(attributes)-249(we)-249(also)-249(discuss)-249(their)-249(methods.)-310(Most)-249(meth-)]TJ 1.016 0 0 1 99.895 346.304 Tm [(ods)-245(detailed)-245(her)18(e)-245(only)-245(act)-245(on)-245(the)-244(local)-245(variable,)-245(i.e.)-305(their)-245(action)-245(is)-245(pur)18(ely)-245(local)]TJ 1.02 0 0 1 99.895 334.349 Tm [(and)-346(asynchr)18(onous)-346(unless)-346(otherwise)-346(stated.)-607(The)-346(list)-346(of)-346(methods)-346(her)17(e)-346(is)-346(not)]TJ 1.006 0 0 1 99.895 322.393 Tm [(completely)-247(exhaustive;)-248(many)-248(methods,)-247(especially)-248(those)-247(that)-248(alter)-247(the)-247(contents)]TJ 0.984 0 0 1 99.895 310.438 Tm [(of)-253(the)-254(various)-253(objects,)-253(ar)18(e)-254(u)1(sually)-254(not)-253(needed)-253(by)-254(the)-253(end-user)75(,)-253(and)-254(ther)19(efor)18(e)-253(ar)18(e)]TJ 1 0 0 1 99.895 298.483 Tm [(described)-250(in)-250(the)-250(developer)-74('s)-250(documentation.)]TJ/F75 11.9552 Tf 0 -30.277 Td [(3.1)-1000(Descriptor)-250(data)-250(structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.507 248.853 Tm [(All)-387(the)-386(general)-387(matrix)-387(informations)-386(and)-387(elements)-387(to)-387(b)1(e)-387(exchanged)-387(among)]TJ 1.02 0 0 1 99.596 236.897 Tm [(pr)18(ocesses)-247(ar)18(e)-247(stor)18(ed)-247(within)-246(a)-247(data)-246(str)7(uctur)18(e)-246(of)-247(the)-247(type)]TJ/F131 9.9626 Tf 1 0 0 1 346.774 236.897 Tm [(psb)]TJ ET q -1 0 0 1 358.788 237.097 cm +1 0 0 1 363.093 237.097 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 361.927 236.897 Td [(desc)]TJ +/F131 9.9626 Tf 366.231 236.897 Td [(desc)]TJ ET q -1 0 0 1 383.476 237.097 cm +1 0 0 1 387.78 237.097 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 386.614 236.897 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)-765(Every)]TJ -307.64 -11.955 Td [(str)8(uctur)18(e)-371(of)-370(this)-371(type)-370(is)-371(associated)-370(with)-371(a)-371(discr)18(etization)-370(pattern)-371(and)-370(enables)]TJ 0 -11.955 Td [(data)-301(communications)-302(and)-301(other)-301(operations)-302(that)-301(ar)18(e)-302(nece)1(ssa)-1(r)1(y)-302(for)-301(implement-)]TJ 0 -11.955 Td [(ing)-250(the)-250(various)-250(algorithms)-250(of)-250(inter)18(est)-250(to)-250(us.)]TJ 14.944 -12.156 Td [(The)-265(data)-266(str)8(uctur)18(e)-265(itself)]TJ/F67 9.9626 Tf 107.448 0 Td [(psb_desc_type)]TJ/F62 9.9626 Tf 70.638 0 Td [(can)-265(be)-266(tr)18(eated)-265(as)-265(an)-265(opaque)-266(object)]TJ -193.03 -11.955 Td [(handled)-321(via)-321(the)-321(tools)-321(r)18(outines)-321(of)-321(Sec.)]TJ +/F131 9.9626 Tf 390.918 236.897 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 411.84 236.897 Tm [(.)-308(Every)]TJ 0.98 0 0 1 99.895 224.942 Tm [(str)8(uctur)19(e)-237(of)-238(thi)1(s)-238(type)-237(is)-237(associated)-237(with)-237(a)-237(discr)19(etization)-237(pattern)-237(and)-237(enables)-237(data)]TJ 0.997 0 0 1 99.895 212.987 Tm [(communications)-252(and)-252(other)-253(operations)-252(that)-252(ar)18(e)-252(necessary)-253(for)-252(implementing)-252(the)]TJ 1 0 0 1 99.616 201.032 Tm [(various)-250(algorithms)-250(of)-250(inter)18(est)-250(to)-250(us.)]TJ 1.007 0 0 1 114.839 188.876 Tm [(The)-249(data)-248(str)7(uct)1(ur)17(e)-248(itself)]TJ/F131 9.9626 Tf 1 0 0 1 222.376 188.876 Tm [(psb_desc_type)]TJ/F84 9.9626 Tf 1.007 0 0 1 292.866 188.876 Tm [(can)-249(be)-248(tr)17(eated)-248(as)-249(an)-249(opaque)-248(object)]TJ 1.02 0 0 1 99.895 176.921 Tm [(handled)-278(via)-279(the)-278(tools)-278(r)17(outines)-278(of)-278(Sec.)]TJ 0 0 1 rg 0 0 1 RG - [-321(6)]TJ + [-279(6)]TJ 0 g 0 G - [-321(or)-321(the)-321(query)-321(r)18(outines)-321(detailed)-321(below;)]TJ 0 -11.956 Td [(nevertheless)-250(we)-250(include)-250(her)18(e)-250(a)-250(description)-250(for)-250(the)-250(curious)-250(r)18(eader)74(.)]TJ 14.944 -12.156 Td [(First)-229(we)-228(describe)-228(the)]TJ/F67 9.9626 Tf 92.473 0 Td [(psb_indx_map)]TJ/F62 9.9626 Tf 65.04 0 Td [(type.)-303(This)-228(is)-229(a)-228(data)-229(str)8(uctur)18(e)-228(that)-229(keeps)]TJ -172.457 -11.955 Td [(track)-250(of)-250(a)-250(certain)-250(number)-250(of)-250(basic)-250(issues)-250(such)-250(as:)]TJ + [-278(or)-279(the)-278(query)-278(r)17(outines)-278(detailed)-278(below;)]TJ 1 0 0 1 99.895 164.965 Tm [(nevertheless)-250(we)-250(include)-250(her)18(e)-250(a)-250(description)-250(for)-250(the)-250(curious)-250(r)18(eader)74(.)]TJ 0.99 0 0 1 114.839 152.809 Tm [(First)-252(we)-252(describe)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 207.319 152.809 Tm [(psb_indx_map)]TJ/F84 9.9626 Tf 0.99 0 0 1 272.569 152.809 Tm [(type.)-313(This)-252(is)-252(a)-252(data)-252(str)8(uctur)18(e)-252(that)-252(keeps)]TJ 1 0 0 1 99.895 140.854 Tm [(track)-250(of)-250(a)-250(certain)-250(number)-250(of)-250(basic)-250(issues)-250(such)-250(as:)]TJ 0 g 0 G 13.888 -20.528 Td [(\225)]TJ 0 g 0 G - [-500(The)-250(value)-250(of)-250(the)-250(communication)-250(context;)]TJ + [-469(The)-250(value)-250(of)-250(the)-250(communication)-250(context;)]TJ 0 g 0 G 155.477 -29.888 Td [(9)]TJ 0 g 0 G @@ -5956,76 +5953,76 @@ ET endstream endobj -1001 0 obj +1004 0 obj << -/Length 6070 +/Length 6425 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 164.593 706.129 Td [(\225)]TJ +/F84 9.9626 Tf 164.593 706.129 Td [(\225)]TJ 0 g 0 G - [-500(The)-236(number)-236(of)-235(indices)-236(in)-236(the)-236(index)-236(space,)-238(i.e.)-306(global)-236(number)-235(of)-236(r)18(ows)-236(and)]TJ 11.018 -11.955 Td [(columns)-250(of)-250(a)-250(sparse)-250(matrix;)]TJ + 0.995 0 0 1 175.303 706.129 Tm [(The)-251(number)-252(of)-251(indices)-252(in)-251(the)-252(index)-251(space,)-252(i.e.)-312(global)-252(number)-251(of)-252(r)18(ows)-251(and)]TJ 1 0 0 1 175.611 694.174 Tm [(columns)-250(of)-250(a)-250(sparse)-250(matrix;)]TJ 0 g 0 G -11.018 -20.409 Td [(\225)]TJ 0 g 0 G - [-500(The)-250(local)-250(set)-250(of)-250(indices,)-250(including:)]TJ + [-469(The)-250(local)-250(set)-250(of)-250(indices,)-250(including:)]TJ 0 g 0 G -/F59 9.9626 Tf 22.974 -20.408 Td [(\226)]TJ +/F75 9.9626 Tf 22.974 -20.408 Td [(\226)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(number)-250(of)-250(local)-250(indices)-250(\050and)-250(local)-250(r)18(ows\051;)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(number)-250(of)-250(local)-250(indices)-250(\050and)-250(local)-250(r)18(ows\051;)]TJ 0 g 0 G -/F59 9.9626 Tf -9.962 -16.182 Td [(\226)]TJ +/F75 9.9626 Tf -9.653 -16.182 Td [(\226)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(number)-250(of)-250(halo)-250(indices)-250(\050and)-250(ther)18(efor)18(e)-250(local)-250(columns\051;)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(number)-250(of)-250(halo)-250(indices)-250(\050and)-250(ther)18(efor)18(e)-250(local)-250(columns\051;)]TJ 0 g 0 G -/F59 9.9626 Tf -9.962 -16.181 Td [(\226)]TJ +/F75 9.9626 Tf -9.653 -16.181 Td [(\226)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(global)-250(indices)-250(corr)18(esponding)-250(to)-250(the)-250(local)-250(ones.)]TJ -46.824 -20.409 Td [(Ther)18(e)-301(ar)18(e)-301(many)-301(dif)18(fer)18(ent)-301(schemes)-301(for)-301(storing)-301(these)-301(data;)-326(ther)18(efor)18(e)-301(ther)18(e)-301(ar)18(e)-301(a)]TJ 0 -11.955 Td [(number)-299(of)-299(types)-300(extending)-299(the)-299(base)-299(one,)-312(and)-299(the)-299(descriptor)-300(str)8(uctur)18(e)-299(holds)-299(a)]TJ 0 -11.955 Td [(polymorphic)-212(object)-213(whose)-212(dynamic)-212(type)-213(can)-212(be)-212(any)-213(of)-212(the)-212(extended)-213(types.)-297(The)]TJ 0 -11.955 Td [(methods)-250(associated)-250(with)-250(this)-250(data)-250(type)-250(answer)-250(the)-250(following)-250(queries:)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(global)-250(indices)-250(corr)18(esponding)-250(to)-250(the)-250(local)-250(ones.)]TJ 1.02 0 0 1 150.396 600.585 Tm [(Ther)18(e)-249(ar)17(e)-248(many)-249(dif)17(f)1(er)17(ent)-249(schemes)-249(for)-248(storing)-249(these)-249(data;)-251(ther)18(efor)17(e)-249(ther)18(e)-249(ar)18(e)-249(a)]TJ 1.02 0 0 1 150.705 588.63 Tm [(number)-244(of)-244(types)-243(extending)-244(the)-244(base)-244(one,)-244(and)-244(the)-244(descriptor)-243(str)7(uctur)18(e)-244(holds)-244(a)]TJ 0.988 0 0 1 150.406 576.675 Tm [(polymorphic)-252(object)-251(whose)-252(dynamic)-252(type)-252(can)-251(be)-252(any)-252(of)-252(the)-251(extended)-252(types.)-314(The)]TJ 1 0 0 1 150.705 564.72 Tm [(methods)-250(associated)-250(with)-250(this)-250(data)-250(type)-250(answer)-250(the)-250(following)-250(queries:)]TJ 0 g 0 G 13.888 -20.288 Td [(\225)]TJ 0 g 0 G - [-500(For)-411(a)-412(given)-411(set)-412(of)-411(local)-411(indices,)-452(\002nd)-412(the)-411(corr)18(esponding)-411(indices)-412(in)-411(the)]TJ 11.018 -11.955 Td [(global)-250(numbering;)]TJ + 0.98 0 0 1 175.611 544.432 Tm [(For)-222(a)-222(given)-222(set)-222(of)-222(local)-223(indice)1(s,)-229(\002nd)-222(the)-222(corr)18(esponding)-222(indices)-222(in)-222(the)-222(global)]TJ 1 0 0 1 175.611 532.477 Tm [(numbering;)]TJ 0 g 0 G -11.018 -20.408 Td [(\225)]TJ 0 g 0 G - [-500(For)-357(a)-357(given)-357(set)-357(of)-358(global)-357(indices,)-384(\002nd)-357(the)-357(corr)18(esponding)-357(indices)-357(in)-357(the)]TJ 11.018 -11.955 Td [(local)-250(numbering,)-250(if)-250(any)111(,)-250(or)-250(r)18(eturn)-250(an)-250(invalid)]TJ + 1.02 0 0 1 175.611 512.069 Tm [(For)-306(a)-306(given)-305(set)-306(of)-306(global)-306(indices,)-321(\002nd)-305(the)-306(corr)18(esponding)-306(indices)-306(in)-306(the)]TJ 1 0 0 1 175.611 500.114 Tm [(local)-250(numbering,)-250(if)-250(any)111(,)-250(or)-250(r)18(eturn)-250(an)-250(invalid)]TJ 0 g 0 G -11.018 -20.409 Td [(\225)]TJ 0 g 0 G - [-500(Add)-250(a)-250(global)-250(index)-250(to)-250(the)-250(set)-250(of)-250(halo)-250(indices;)]TJ + [-461(Add)-250(a)-250(global)-250(index)-250(to)-250(the)-250(set)-250(of)-250(halo)-250(indices;)]TJ 0 g 0 G 0 -20.408 Td [(\225)]TJ 0 g 0 G - [-500(Find)-250(the)-250(pr)18(ocess)-250(owner)-250(of)-250(each)-250(member)-250(of)-250(a)-250(set)-250(of)-250(global)-250(indices.)]TJ -13.888 -20.288 Td [(All)-295(methods)-295(but)-294(the)-295(last)-295(ar)18(e)-295(pur)18(ely)-295(local;)-317(the)-295(last)-295(method)-294(potentially)-295(r)18(equir)18(es)]TJ 0 -11.955 Td [(communication)-418(among)-419(pr)18(ocesses,)-460(and)-419(thus)-418(is)-418(a)-419(synchr)18(onous)-418(method.)-815(The)]TJ 0 -11.955 Td [(choice)-244(of)-244(a)-244(speci\002c)-244(dynamic)-244(type)-244(for)-244(the)-244(index)-244(map)-244(is)-244(made)-244(at)-244(the)-244(time)-244(the)-244(de-)]TJ 0 -11.955 Td [(scriptor)-210(is)-211(init)1(ially)-211(allocated,)-218(accor)18(ding)-210(to)-211(t)1(he)-211(mode)-210(of)-210(initialization)-211(\050see)-210(also)]TJ + [-500(Find)-250(the)-250(pr)18(ocess)-250(owner)-250(of)-250(each)-250(member)-250(of)-250(a)-250(set)-250(of)-250(global)-250(indices.)]TJ 1.019 0 0 1 150.316 439.009 Tm [(All)-246(methods)-246(but)-246(the)-247(l)1(ast)-247(ar)18(e)-246(pur)18(ely)-247(local;)-246(the)-246(last)-246(method)-246(potentially)-247(r)18(equir)18(es)]TJ 0.98 0 0 1 150.705 427.054 Tm [(communication)-201(among)-202(pr)18(ocesses,)-212(and)-201(thus)-202(is)-202(a)-201(synchr)18(onous)-201(method.)-299(The)-201(choice)]TJ 0.996 0 0 1 150.705 415.099 Tm [(of)-251(a)-250(speci\002c)-251(dynamic)-251(type)-250(for)-251(the)-251(index)-250(map)-251(is)-251(made)-250(at)-251(the)-250(time)-251(the)-251(descriptor)]TJ 1 0 0 1 150.705 403.144 Tm [(is)-250(initially)-250(allocated,)-250(accor)18(ding)-250(to)-250(the)-250(mode)-250(of)-250(initialization)-250(\050see)-250(also)]TJ 0 0 1 rg 0 0 1 RG - [-210(6)]TJ + [-250(6)]TJ 0 g 0 G [(\051.)]TJ 14.944 -12.076 Td [(The)-250(descriptor)-250(contents)-250(ar)18(e)-250(as)-250(follows:)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -20.288 Td [(indxmap)]TJ +/F75 9.9626 Tf -14.944 -20.288 Td [(indxmap)]TJ 0 g 0 G -/F62 9.9626 Tf 45.38 0 Td [(A)-190(polymorphic)-190(variable)-190(of)-190(a)-190(type)-190(that)-190(is)-190(any)-190(extension)-190(of)-190(the)-190(indx)]TJ +/F84 9.9626 Tf 0.98 0 0 1 195.696 370.78 Tm [(A)-194(polymorphic)-194(variable)-193(of)-194(a)-194(type)-194(that)-194(is)-194(any)-194(extension)-194(of)-193(the)-194(indx)]TJ ET q -1 0 0 1 478.491 370.98 cm +1 0 0 1 472.921 370.98 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 481.48 370.78 Td [(map)]TJ -305.869 -11.955 Td [(type)-250(described)-250(above.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 475.91 370.78 Tm [(map)]TJ 1 0 0 1 175.611 358.825 Tm [(type)-250(described)-250(above.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -32.363 Td [(halo)]TJ +/F75 9.9626 Tf -24.906 -32.363 Td [(halo)]TJ ET q 1 0 0 1 171.228 326.661 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.217 326.462 Td [(index)]TJ +/F75 9.9626 Tf 174.217 326.462 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.435 0 Td [(A)-331(list)-332(of)-331(the)-332(halo)-331(and)-332(boundary)-331(elements)-332(for)-331(the)-332(curr)18(ent)-331(pr)18(ocess)]TJ -29.041 -11.955 Td [(to)-247(be)-247(exchanged)-247(with)-246(other)-247(pr)18(ocesses;)-248(for)-247(each)-247(pr)18(ocesses)-247(with)-247(whic)1(h)-247(it)-247(is)]TJ 0 -11.956 Td [(necessary)-250(to)-250(communicate:)]TJ +/F84 9.9626 Tf 1.02 0 0 1 204.264 326.462 Tm [(A)-283(list)-283(of)-283(the)-283(halo)-283(and)-283(boundary)-283(elements)-283(for)-283(the)-283(curr)17(ent)-283(pr)18(ocess)]TJ 0.999 0 0 1 175.611 314.507 Tm [(to)-250(be)-249(exchanged)-250(with)-249(other)-250(pr)18(ocesses;)-250(for)-249(each)-250(pr)18(ocesses)-249(with)-250(which)-250(it)-249(is)]TJ 1 0 0 1 175.611 302.551 Tm [(necessary)-250(to)-250(communicate:)]TJ 0 g 0 G 9.465 -20.408 Td [(1.)]TJ 0 g 0 G @@ -6051,31 +6048,31 @@ BT 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.409 Td [(ext)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(ext)]TJ ET q 1 0 0 1 164.583 176.799 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 167.572 176.599 Td [(index)]TJ +/F75 9.9626 Tf 167.572 176.599 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.435 0 Td [(A)-216(list)-217(of)-216(element)-217(indices)-216(to)-217(be)-216(exchanged)-217(to)-216(implement)-217(the)-216(mapping)]TJ -22.396 -11.955 Td [(between)-250(a)-250(base)-250(descriptor)-250(and)-250(a)-250(descriptor)-250(with)-250(overlap.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ +/F84 9.9626 Tf 0.988 0 0 1 197.619 176.599 Tm [(A)-253(list)-253(of)-253(element)-253(indices)-253(to)-252(be)-253(exchanged)-253(to)-253(implement)-253(the)-253(mapping)]TJ 1 0 0 1 175.611 164.644 Tm [(between)-250(a)-250(base)-250(descriptor)-250(and)-250(a)-250(descriptor)-250(with)-250(overlap.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ 0 0 1 rg 0 0 1 RG [-250(3.3)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.408 Td [(ovrlap)]TJ +/F75 9.9626 Tf -24.906 -20.408 Td [(ovrlap)]TJ ET q 1 0 0 1 180.642 132.48 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 183.631 132.281 Td [(index)]TJ +/F75 9.9626 Tf 183.631 132.281 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(A)-259(list)-259(of)-258(the)-259(overlap)-259(elements)-259(for)-259(the)-258(curr)18(ent)-259(pr)18(ocess,)-261(or)18(ganized)]TJ -38.456 -11.955 Td [(in)-250(gr)18(oups)-250(like)-250(the)-250(pr)18(evious)-250(vector:)]TJ +/F84 9.9626 Tf 1.005 0 0 1 213.678 132.281 Tm [(A)-249(list)-249(of)-249(the)-249(overl)1(ap)-249(elements)-249(for)-249(the)-249(curr)18(ent)-249(pr)18(ocess,)-249(or)18(ganized)]TJ 1 0 0 1 175.611 120.326 Tm [(in)-250(gr)18(oups)-250(like)-250(the)-250(pr)18(evious)-250(vector:)]TJ 0 g 0 G 141.968 -29.888 Td [(10)]TJ 0 g 0 G @@ -6083,16 +6080,16 @@ ET endstream endobj -1012 0 obj +1015 0 obj << -/Length 7045 +/Length 7273 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 134.267 706.129 Td [(1.)]TJ +/F84 9.9626 Tf 134.267 706.129 Td [(1.)]TJ 0 g 0 G [-500(Pr)18(ocess)-250(identi\002er;)]TJ 0 g 0 G @@ -6116,38 +6113,38 @@ BT 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(ovr)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(ovr)]TJ ET q 1 0 0 1 115.447 596.693 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 118.436 596.494 Td [(mst)]TJ +/F75 9.9626 Tf 118.436 596.494 Td [(mst)]TJ ET q 1 0 0 1 135.631 596.693 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 138.62 596.494 Td [(idx)]TJ +/F75 9.9626 Tf 138.62 596.494 Td [(idx)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(A)-331(list)-332(to)-331(r)18(etrieve)-331(the)-332(value)-331(of)-331(each)-332(overlap)-331(element)-331(fr)18(om)-332(the)-331(r)18(e-)]TJ -33.185 -11.956 Td [(spective)-250(master)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ +/F84 9.9626 Tf 0.98 0 0 1 157.599 596.494 Tm [(A)-235(list)-236(to)-235(r)19(etrieve)-236(the)-235(value)-235(of)-236(each)-235(overlap)-235(element)-236(fr)19(om)-235(the)-236(r)19(espec-)]TJ 1 0 0 1 124.802 584.538 Tm [(tive)-250(master)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ 0 0 1 rg 0 0 1 RG [-250(3.3)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(ovrlap)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(ovrlap)]TJ ET q 1 0 0 1 129.833 551.351 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 132.822 551.152 Td [(elem)]TJ +/F75 9.9626 Tf 132.822 551.152 Td [(elem)]TJ 0 g 0 G -/F62 9.9626 Tf 27.118 0 Td [(For)-250(all)-250(overlap)-250(points)-250(belonging)-250(to)-250(th)-250(ecurr)18(ent)-250(pr)18(ocess:)]TJ +/F84 9.9626 Tf 27.118 0 Td [(For)-250(all)-250(overlap)-250(points)-250(belonging)-250(to)-250(th)-250(ecurr)18(ent)-250(pr)18(ocess:)]TJ 0 g 0 G -25.673 -21.431 Td [(1.)]TJ 0 g 0 G @@ -6161,16 +6158,16 @@ BT 0 g 0 G [-500(Index)-250(of)-250(a)-250(\223master)-74(\224)-250(pr)18(ocess:)]TJ -9.465 -21.431 Td [(Speci\002ed)-250(as:)-310(an)-250(allocatable)-250(integer)-250(array)-250(of)-250(rank)-250(two.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(bnd)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(bnd)]TJ ET q 1 0 0 1 118.755 453.671 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 121.743 453.472 Td [(elem)]TJ +/F75 9.9626 Tf 121.743 453.472 Td [(elem)]TJ 0 g 0 G -/F62 9.9626 Tf 27.119 0 Td [(A)-235(list)-235(of)-235(all)-235(boundary)-235(points,)-238(i.e.)-305(points)-235(that)-235(have)-235(a)-235(connection)-235(with)]TJ -24.06 -11.955 Td [(other)-250(pr)18(ocesses.)]TJ -24.907 -21.055 Td [(The)-393(Fortran)-394(2003)-393(declaration)-394(for)]TJ/F67 9.9626 Tf 151.232 0 Td [(psb_desc_type)]TJ/F62 9.9626 Tf 71.913 0 Td [(str)8(uctur)18(es)-393(is)-394(as)-393(follows:)-597(A)]TJ +/F84 9.9626 Tf 0.995 0 0 1 148.473 453.472 Tm [(A)-252(list)-251(of)-252(all)-252(boundary)-251(points,)-252(i.e.)-313(points)-251(that)-252(have)-252(a)-251(connection)-252(with)]TJ 1 0 0 1 124.802 441.517 Tm [(other)-250(pr)18(ocesses.)]TJ 1.02 0 0 1 99.587 420.462 Tm [(The)-350(Fortran)-350(2003)-350(declaration)-350(for)]TJ/F131 9.9626 Tf 1 0 0 1 251.633 420.462 Tm [(psb_desc_type)]TJ/F84 9.9626 Tf 1.02 0 0 1 323.183 420.462 Tm [(str)8(uctur)17(es)-349(is)-350(as)-350(follows:)-514(A)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -6183,7 +6180,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 102.884 388.902 Td [(type)]TJ +/F231 8.9664 Tf 102.884 388.902 Td [(type)]TJ 0 g 0 G [-525(psb_desc_type)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -6306,15 +6303,15 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -2.989 -41.43 Td [(Listing)-259(1:)-327(The)-259(PSBLAS)-259(de\002ned)-259(data)-258(type)-259(that)-259(contains)-259(the)-258(communication)-259(de-)]TJ 0 -11.955 Td [(scriptor)74(.)]TJ 0 -25.259 Td [(communication)-319(descriptor)-320(associated)-319(with)-319(a)-320(sparse)-319(matrix)-320(has)-319(a)-319(state,)-337(which)]TJ 0 -11.955 Td [(can)-250(take)-250(the)-250(following)-250(values:)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.895 259.801 Tm [(Listing)-350(1:)-513(The)-350(PSBLAS)-350(de\002ned)-350(data)-349(type)-350(that)-350(contains)-350(the)-350(communication)]TJ 1 0 0 1 99.895 247.846 Tm [(descriptor)74(.)]TJ 1.02 0 0 1 99.895 222.587 Tm [(communication)-253(descriptor)-253(associated)-254(with)-253(a)-253(sparse)-254(matrix)-253(has)-253(a)-253(state,)-256(which)]TJ 1 0 0 1 99.895 210.632 Tm [(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.054 Td [(Build:)]TJ +/F75 9.9626 Tf 0 -21.054 Td [(Build:)]TJ 0 g 0 G -/F62 9.9626 Tf 32.927 0 Td [(State)-283(enter)18(ed)-283(after)-283(the)-283(\002rst)-284(allocation,)-291(and)-283(befor)18(e)-283(the)-283(\002rst)-283(assembly;)-300(in)]TJ -8.02 -11.956 Td [(this)-220(state)-220(it)-220(is)-220(possible)-220(to)-220(add)-220(communication)-220(r)18(equir)18(ements)-220(among)-220(dif)18(fer)18(-)]TJ 0 -11.955 Td [(ent)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 132.822 189.578 Tm [(State)-350(enter)18(ed)-350(after)-349(the)-350(\002rst)-349(allocation,)-376(and)-350(befor)18(e)-350(the)-349(\002rst)-350(assembly;)]TJ 1.02 0 0 1 124.802 177.622 Tm [(in)-344(this)-344(state)-343(it)-344(is)-344(possible)-344(to)-344(add)-343(communication)-344(r)17(equir)18(ements)-344(among)]TJ 1 0 0 1 124.802 165.667 Tm [(dif)18(fer)18(ent)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(Assembled:)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(Assembled:)]TJ 0 g 0 G -/F62 9.9626 Tf 58.381 0 Td [(State)-308(enter)18(ed)-308(after)-308(the)-309(assembly;)-337(computations)-308(using)-308(the)-308(associ-)]TJ -33.474 -11.955 Td [(ated)-310(sparse)-310(matrix,)-325(such)-310(as)-310(matrix-vector)-309(pr)18(oducts,)-325(ar)18(e)-310(only)-310(possible)-310(in)]TJ 0 -11.955 Td [(this)-250(state.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 158.276 144.236 Tm [(State)-261(enter)18(ed)-261(after)-261(the)-261(assembly;)-269(computations)-261(using)-260(the)-261(associ-)]TJ 1.02 0 0 1 124.802 132.281 Tm [(ated)-250(sparse)-250(matrix,)-251(such)-250(as)-250(matrix)1(-vector)-250(pr)17(oducts,)-251(ar)18(e)-250(only)-250(possible)-250(in)]TJ 1 0 0 1 124.802 120.326 Tm [(this)-250(state.)]TJ 0 g 0 G 141.968 -29.888 Td [(11)]TJ 0 g 0 G @@ -6322,517 +6319,517 @@ ET endstream endobj -1028 0 obj +1031 0 obj << -/Length 4957 +/Length 5156 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.1.1)-1000(Descriptor)-250(Methods)]TJ 0 -19 Td [(3.1.2)-1000(get)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.1.1)-1000(Descriptor)-250(Methods)]TJ 0 -19 Td [(3.1.2)-1000(get)]TJ ET q 1 0 0 1 195.029 687.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 687.129 Td [(local)]TJ +/F75 9.9626 Tf 198.017 687.129 Td [(local)]TJ ET q 1 0 0 1 220.194 687.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 223.183 687.129 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(rows)]TJ +/F75 9.9626 Tf 223.183 687.129 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(rows)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -72.478 -19 Td [(nr)-525(=)-525(desc%get_local_rows\050\051)]TJ +/F131 9.9626 Tf -72.478 -19 Td [(nr)-525(=)-525(desc%get_local_rows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.001 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.001 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.011 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-399(number)-398(of)-399(local)-398(r)18(ows,)-436(i.e.)-756(the)-398(number)-399(of)-399(r)18(ows)-398(owned)]TJ -47.87 -11.956 Td [(by)-350(the)-349(curr)18(ent)-350(pr)18(ocess;)-399(as)-350(explained)-350(in)]TJ +/F84 9.9626 Tf 1.02 0 0 1 223.173 540.269 Tm [(The)-249(number)-249(of)-249(local)-249(r)18(ows,)-250(i.e.)-315(the)-249(number)-249(of)-249(r)17(ows)-249(owned)-249(b)1(y)]TJ 0.98 0 0 1 175.611 528.314 Tm [(the)-211(curr)18(ent)-211(pr)19(ocess;)-226(as)-211(explained)-211(in)]TJ 0 0 1 rg 0 0 1 RG - [-349(1)]TJ + [-211(1)]TJ 0 g 0 G - [(,)-375(it)-350(is)-349(equal)-350(to)]TJ/F91 10.3811 Tf 249.705 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.433 0 Td [(+)]TJ/F91 10.3811 Tf 10.624 0 Td [(j)-23(B)]TJ/F60 7.5716 Tf 10.108 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.003 0 Td [(.)-609(The)]TJ -293.569 -11.955 Td [(r)18(eturned)-250(value)-250(is)-250(speci\002c)-250(to)-250(the)-250(calling)-250(pr)18(ocess.)]TJ/F59 9.9626 Tf -24.906 -27.247 Td [(3.1.3)-1000(get)]TJ + [(,)-220(it)-211(is)-211(equal)-211(to)]TJ/F179 10.3811 Tf 1 0 0 1 390.69 528.314 Tm [(j)-24(I)]TJ/F78 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 4.667 0 Td [(+)]TJ/F179 10.3811 Tf 9.858 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf 0.98 0 0 1 433.021 528.314 Tm [(.)-302(The)-211(r)19(eturned)]TJ 1 0 0 1 175.333 516.359 Tm [(value)-250(is)-250(speci\002c)-250(to)-250(the)-250(calling)-250(pr)18(ocess.)]TJ/F75 9.9626 Tf -24.628 -27.247 Td [(3.1.3)-1000(get)]TJ ET q 1 0 0 1 195.029 489.311 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 489.112 Td [(local)]TJ +/F75 9.9626 Tf 198.017 489.112 Td [(local)]TJ ET q 1 0 0 1 220.194 489.311 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 223.183 489.112 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ +/F75 9.9626 Tf 223.183 489.112 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -72.478 -19 Td [(nc)-525(=)-525(desc%get_local_cols\050\051)]TJ +/F131 9.9626 Tf -72.478 -19 Td [(nc)-525(=)-525(desc%get_local_cols\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.001 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.011 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-320(number)-320(of)-321(local)-320(cols,)-338(i.e.)-521(the)-320(number)-320(of)-321(indices)-320(used)-320(by)]TJ -47.87 -11.955 Td [(the)-322(curr)18(ent)-322(pr)18(ocess,)-340(including)-322(both)-322(local)-322(and)-322(halo)-322(indices;)-358(as)-322(explained)]TJ 0 -11.956 Td [(in)]TJ +/F84 9.9626 Tf 0.98 0 0 1 223.173 342.253 Tm [(The)-239(number)-239(of)-238(local)-239(cols,)-242(i.e.)-311(the)-239(number)-239(of)-238(indices)-239(used)-239(by)-239(the)]TJ 0.98 0 0 1 175.611 330.298 Tm [(curr)18(ent)-256(pr)19(ocess,)-257(including)-256(both)-256(local)-256(and)-256(halo)-257(indices;)-256(as)-256(explained)-257(in)]TJ 0 0 1 rg 0 0 1 RG - [-284(1)]TJ + [-256(1)]TJ 0 g 0 G - [(,)-294(i)1(t)-285(is)-284(equal)-285(to)]TJ/F91 10.3811 Tf 79.58 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.193 0 Td [(+)]TJ/F91 10.3811 Tf 10.383 0 Td [(j)-24(B)]TJ/F60 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.192 0 Td [(+)]TJ/F91 10.3811 Tf 10.383 0 Td [(j)-24(H)]TJ/F60 7.5716 Tf 12.052 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.004 0 Td [(.)-413(The)-285(r)18(eturned)-284(value)-285(is)-284(speci\002c)-285(to)-284(the)]TJ -153.464 -11.955 Td [(calling)-250(pr)18(ocess.)]TJ/F59 9.9626 Tf -24.907 -27.247 Td [(3.1.4)-1000(get)]TJ + [(,)-256(it)]TJ 1.017 0 0 1 175.611 318.342 Tm [(is)-246(equal)-245(to)]TJ/F179 10.3811 Tf 1 0 0 1 223.931 318.342 Tm [(j)-24(I)]TJ/F78 7.5716 Tf 8.944 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.063 0 Td [(+)]TJ/F179 10.3811 Tf 10.254 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.063 0 Td [(+)]TJ/F179 10.3811 Tf 10.254 0 Td [(j)-24(H)]TJ/F78 7.5716 Tf 12.051 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf 1.017 0 0 1 297.298 318.342 Tm [(.)-305(The)-245(r)17(eturned)-245(value)-246(is)-245(speci\002c)-246(to)-245(the)-246(calling)]TJ 1 0 0 1 175.313 306.387 Tm [(pr)18(ocess.)]TJ/F75 9.9626 Tf -24.608 -27.247 Td [(3.1.4)-1000(get)]TJ ET q 1 0 0 1 195.029 279.339 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 279.14 Td [(global)]TJ +/F75 9.9626 Tf 198.017 279.14 Td [(global)]TJ ET q 1 0 0 1 227.397 279.339 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 230.386 279.14 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(rows)]TJ +/F75 9.9626 Tf 230.386 279.14 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(rows)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -79.681 -19 Td [(nr)-525(=)-525(desc%get_global_rows\050\051)]TJ +/F131 9.9626 Tf -79.681 -19 Td [(nr)-525(=)-525(desc%get_global_rows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.001 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.011 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-351(number)-351(of)-350(global)-351(r)18(ows,)-376(i.e.)-613(the)-351(size)-351(of)-350(the)-351(global)-351(index)]TJ -47.87 -11.955 Td [(space.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 223.173 132.281 Tm [(The)-314(number)-314(of)-314(global)-314(r)18(ows,)-332(i.e.)-511(the)-314(size)-314(of)-314(the)-314(global)-314(index)]TJ 1 0 0 1 175.611 120.326 Tm [(space.)]TJ 0 g 0 G - 141.967 -29.888 Td [(12)]TJ + 141.968 -29.888 Td [(12)]TJ 0 g 0 G ET endstream endobj -1032 0 obj +1035 0 obj << -/Length 4367 +/Length 4481 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.1.5)-1000(get)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(3.1.5)-1000(get)]TJ ET q 1 0 0 1 144.219 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 706.129 Td [(global)]TJ +/F75 9.9626 Tf 147.208 706.129 Td [(global)]TJ ET q 1 0 0 1 176.587 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 179.576 706.129 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ +/F75 9.9626 Tf 179.576 706.129 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -79.681 -18.974 Td [(nr)-525(=)-525(desc%get_global_cols\050\051)]TJ +/F131 9.9626 Tf -79.681 -18.974 Td [(nr)-525(=)-525(desc%get_global_cols\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.935 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.935 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.947 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.947 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-242(number)-242(of)-241(global)-242(cols;)-245(usually)-241(this)-242(is)-242(equal)-242(to)-241(the)-242(number)]TJ -47.87 -11.955 Td [(of)-250(global)-250(r)18(ows.)]TJ/F59 9.9626 Tf -24.907 -27.172 Td [(3.1.6)-1000(get)]TJ +/F84 9.9626 Tf 0.998 0 0 1 172.363 559.535 Tm [(The)-252(number)-251(of)-252(global)-251(cols;)-252(usually)-252(this)-252(i)1(s)-252(equal)-252(to)-251(the)-252(number)]TJ 1 0 0 1 124.802 547.58 Tm [(of)-250(global)-250(r)18(ows.)]TJ/F75 9.9626 Tf -24.907 -27.172 Td [(3.1.6)-1000(get)]TJ ET q 1 0 0 1 144.219 520.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 520.408 Td [(global)]TJ +/F75 9.9626 Tf 147.208 520.408 Td [(global)]TJ ET q 1 0 0 1 176.587 520.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 179.576 520.408 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ +/F75 9.9626 Tf 179.576 520.408 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -79.681 -18.974 Td [(myidx)-525(=)-525(desc%get_global_indices\050[owned]\051)]TJ +/F131 9.9626 Tf -79.681 -18.974 Td [(myidx)-525(=)-525(desc%get_global_indices\050[owned]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.947 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.947 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -91.287 -31.902 Td [(owned)]TJ +/F75 9.9626 Tf -90.979 -31.902 Td [(owned)]TJ 0 g 0 G -/F62 9.9626 Tf 35.975 0 Td [(Choose)-330(if)-329(you)-330(only)-329(want)-330(owned)-330(indices)-329(\050)]TJ/F67 9.9626 Tf 185.766 0 Td [(owned)]TJ +/F84 9.9626 Tf 1.02 0 0 1 135.87 383.793 Tm [(Choose)-281(if)-282(you)-281(only)-282(want)-281(owned)-281(indices)-282(\050)]TJ/F131 9.9626 Tf 1 0 0 1 321.922 383.793 Tm [(owned)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.true.)]TJ/F62 9.9626 Tf 62.764 0 Td [(\051)-330(or)-329(also)-330(halo)]TJ -259.598 -11.955 Td [(indices)-250(\050)]TJ/F67 9.9626 Tf 36.911 0 Td [(owned)]TJ + [(.true.)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.686 383.793 Tm [(\051)-281(or)-282(also)-281(halo)]TJ 1 0 0 1 124.802 371.838 Tm [(indices)-250(\050)]TJ/F131 9.9626 Tf 36.911 0 Td [(owned)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 67.995 0 Td [(\051.)-310(Scope:)]TJ/F59 9.9626 Tf 40.328 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -166.813 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(;)-250(default:)]TJ/F67 9.9626 Tf 41.872 0 Td [(.true.)]TJ/F62 9.9626 Tf 31.382 0 Td [(.)]TJ + [(.false.)]TJ/F84 9.9626 Tf 67.995 0 Td [(\051.)-310(Scope:)]TJ/F75 9.9626 Tf 40.328 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -167.122 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(;)-250(default:)]TJ/F131 9.9626 Tf 41.872 0 Td [(.true.)]TJ/F84 9.9626 Tf 31.382 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -163.436 -33.89 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -163.127 -33.89 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-277(global)-277(indices,)-284(r)18(eturned)-277(as)-277(an)-277(allocatable)-277(integer)-277(array)-277(of)]TJ -47.87 -11.955 Td [(kind)]TJ/F67 9.9626 Tf 22.814 0 Td [(psb_lpk_)]TJ/F62 9.9626 Tf 44.334 0 Td [(and)-250(rank)-250(1.)]TJ/F59 9.9626 Tf -92.055 -27.171 Td [(3.1.7)-1000(get)]TJ +/F84 9.9626 Tf 1.011 0 0 1 172.363 306.046 Tm [(The)-248(global)-249(indices,)-248(r)18(eturned)-249(as)-248(an)-248(allocatable)-248(integer)-249(array)-248(of)]TJ 1 0 0 1 124.802 294.091 Tm [(kind)]TJ/F131 9.9626 Tf 22.814 0 Td [(psb_lpk_)]TJ/F84 9.9626 Tf 44.334 0 Td [(and)-250(rank)-250(1.)]TJ/F75 9.9626 Tf -92.055 -27.171 Td [(3.1.7)-1000(get)]TJ ET q 1 0 0 1 144.219 267.119 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 266.92 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ +/F75 9.9626 Tf 147.208 266.92 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.313 -18.975 Td [(ctxt)-525(=)-525(desc%get_context\050\051)]TJ +/F131 9.9626 Tf -47.313 -18.975 Td [(ctxt)-525(=)-525(desc%get_context\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.947 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.947 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(communication)-250(context.)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(communication)-250(context.)]TJ 0 g 0 G - 94.098 -29.888 Td [(13)]TJ + 94.407 -29.888 Td [(13)]TJ 0 g 0 G ET endstream endobj -1037 0 obj +1040 0 obj << -/Length 4754 +/Length 5028 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.1.8)-1000(Clone)-250(\227)-250(clone)-250(current)-250(object)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.1.8)-1000(Clone)-250(\227)-250(clone)-250(current)-250(object)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%clone\050descout,info\051)]TJ +/F131 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%clone\050descout,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.597 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.598 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -34.377 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -34.377 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.597 Td [(descout)]TJ 0 g 0 G -/F62 9.9626 Tf 39.84 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ +/F84 9.9626 Tf 39.452 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -/F59 9.9626 Tf -39.84 -20.597 Td [(info)]TJ +/F75 9.9626 Tf -39.452 -20.597 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -28.097 Td [(3.1.9)-1000(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -28.097 Td [(3.1.9)-1000(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%cnv\050mold\051)]TJ +/F131 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%cnv\050mold\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.597 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.597 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -32.553 Td [(mold)]TJ +/F75 9.9626 Tf -77.917 -32.553 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(the)-250(desir)18(ed)-250(integer)-250(storage)-250(format.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(object)-190(of)-190(type)-190(derived)-190(fr)18(om)-190(\050integer\051)]TJ/F67 9.9626 Tf 221.926 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.782 0 Td [(the)-250(desir)18(ed)-250(integer)-250(storage)-250(format.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0.98 0 0 1 175.611 356.277 Tm [(Speci\002ed)-212(as:)-295(a)-212(object)-212(of)-212(type)-213(derived)-212(fr)19(om)-212(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 394.97 356.277 Tm [(psb)]TJ ET q -1 0 0 1 413.855 356.476 cm +1 0 0 1 411.288 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 416.994 356.277 Td [(T)]TJ +/F131 9.9626 Tf 414.427 356.277 Td [(T)]TJ ET q -1 0 0 1 422.851 356.476 cm +1 0 0 1 420.285 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 425.99 356.277 Td [(base)]TJ +/F131 9.9626 Tf 423.423 356.277 Td [(base)]TJ ET q -1 0 0 1 447.539 356.476 cm +1 0 0 1 444.972 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 450.677 356.277 Td [(vect)]TJ +/F131 9.9626 Tf 448.11 356.277 Td [(vect)]TJ ET q -1 0 0 1 472.226 356.476 cm +1 0 0 1 469.659 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 475.364 356.277 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -345.58 -22.59 Td [(The)]TJ/F67 9.9626 Tf 19.583 0 Td [(mold)]TJ/F62 9.9626 Tf 23.828 0 Td [(ar)18(guments)-292(may)-291(be)-292(employed)-292(to)-292(interface)-291(with)-292(special)-292(devices,)-302(such)]TJ -43.411 -11.955 Td [(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ/F59 9.9626 Tf 0 -28.096 Td [(3.1.10)-1000(psb)]TJ +/F131 9.9626 Tf 472.797 356.277 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.719 356.277 Tm [(.)]TJ 0.98 0 0 1 150.396 333.687 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.17 333.687 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 192.522 333.687 Tm [(ar)18(guments)-249(may)-249(be)-248(employed)-249(to)-249(interface)-249(with)-249(special)-249(devices,)-250(such)-249(as)]TJ 1 0 0 1 150.705 321.732 Tm [(GPUs)-250(and)-250(other)-250(accelerators.)]TJ/F75 9.9626 Tf 0 -28.096 Td [(3.1.10)]TJ 0.98 0 0 1 185.574 293.636 Tm [(psb)]TJ ET q -1 0 0 1 202.769 293.835 cm +1 0 0 1 202.438 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 205.758 293.636 Td [(cd)]TJ +/F75 9.9626 Tf 0.98 0 0 1 205.426 293.636 Tm [(cd)]TJ ET q -1 0 0 1 216.867 293.835 cm +1 0 0 1 216.324 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 219.855 293.636 Td [(get)]TJ +/F75 9.9626 Tf 0.98 0 0 1 219.313 293.636 Tm [(get)]TJ ET q -1 0 0 1 234.291 293.835 cm +1 0 0 1 233.472 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 237.28 293.636 Td [(large)]TJ +/F75 9.9626 Tf 0.98 0 0 1 236.461 293.636 Tm [(large)]TJ ET q -1 0 0 1 260.572 293.835 cm +1 0 0 1 259.299 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 263.561 293.636 Td [(threshold)-190(\227)-190(Get)-190(threshold)-190(for)-190(index)-190(mapping)-190(switch)]TJ +/F75 9.9626 Tf 0.98 0 0 1 262.288 293.636 Tm [(threshold)-194(\227)-194(Get)-194(threshold)-194(fo)1(r)-194(index)-194(mapping)-194(switch)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -112.856 -19.29 Td [(ith)-525(=)-525(psb_cd_get_large_threshold\050\051)]TJ +/F131 9.9626 Tf 1 0 0 1 150.705 274.346 Tm [(ith)-525(=)-525(psb_cd_get_large_threshold\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.421 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.421 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -29.439 -20.598 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -20.598 Td [(Function)-250(value)]TJ + 0 -20.597 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(curr)18(ent)-250(value)-250(for)-250(the)-250(size)-250(thr)18(eshold.)]TJ/F59 9.9626 Tf -72.777 -28.096 Td [(3.1.11)-1000(psb)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(curr)18(ent)-250(value)-250(for)-250(the)-250(size)-250(thr)18(eshold.)]TJ/F75 9.9626 Tf -72.468 -28.096 Td [(3.1.11)]TJ 0.98 0 0 1 185.574 182.634 Tm [(psb)]TJ ET q -1 0 0 1 202.769 182.833 cm +1 0 0 1 202.438 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 205.758 182.634 Td [(cd)]TJ +/F75 9.9626 Tf 0.98 0 0 1 205.426 182.634 Tm [(cd)]TJ ET q -1 0 0 1 216.867 182.833 cm +1 0 0 1 216.324 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 219.855 182.634 Td [(set)]TJ +/F75 9.9626 Tf 0.98 0 0 1 219.313 182.634 Tm [(set)]TJ ET q -1 0 0 1 233.175 182.833 cm +1 0 0 1 232.379 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 236.164 182.634 Td [(large)]TJ +/F75 9.9626 Tf 0.98 0 0 1 235.368 182.634 Tm [(large)]TJ ET q -1 0 0 1 259.457 182.833 cm +1 0 0 1 258.206 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 262.445 182.634 Td [(threshold)-190(\227)-190(Set)-190(threshold)-190(for)-190(index)-190(mapping)-190(switch)]TJ +/F75 9.9626 Tf 0.98 0 0 1 261.195 182.634 Tm [(threshold)-238(\227)-239(Set)-238(threshold)-239(for)-238(index)-239(mapping)-238(switch)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -111.74 -19.289 Td [(call)-525(psb_cd_set_large_threshold\050ith\051)]TJ +/F131 9.9626 Tf 1 0 0 1 150.705 163.345 Tm [(call)-525(psb_cd_set_large_threshold\050ith\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.874 -29.888 Td [(14)]TJ +/F84 9.9626 Tf 166.874 -29.888 Td [(14)]TJ 0 g 0 G ET endstream endobj -1042 0 obj +1045 0 obj << -/Length 5640 +/Length 5864 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(ith)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(ith)]TJ 0 g 0 G -/F62 9.9626 Tf 17.704 0 Td [(the)-250(new)-250(thr)18(eshold)-250(for)-250(communication)-250(descriptors.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(gr)18(eater)-250(than)-250(zer)18(o.)]TJ -24.907 -20.813 Td [(Note:)-665(the)-427(thr)18(eshold)-428(value)-427(is)-428(only)-427(queried)-428(by)-427(the)-428(library)-427(at)-428(the)-427(time)-428(a)-427(call)]TJ 0 -11.955 Td [(to)]TJ/F67 9.9626 Tf 12.451 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 50.837 0 Td [(is)-378(executed,)-409(ther)18(efor)18(e)-378(changing)-378(the)-378(thr)18(eshold)-377(has)-378(no)-378(ef)18(fect)-378(on)]TJ -63.288 -11.955 Td [(communication)-339(descriptors)-340(that)-339(have)-339(alr)18(eady)-340(been)-339(initialized.)-578(Mor)18(eover)-339(the)]TJ 0 -11.955 Td [(thr)18(eshold)-250(must)-250(have)-250(the)-250(same)-250(value)-250(on)-250(all)-250(pr)18(ocesses.)]TJ/F59 9.9626 Tf 0 -26.933 Td [(3.1.12)-1000(get)]TJ +/F84 9.9626 Tf 17.704 0 Td [(the)-250(new)-250(thr)18(eshold)-250(for)-250(communication)-250(descriptors.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(gr)18(eater)-250(than)-250(zer)18(o.)]TJ 1.02 0 0 1 99.895 637.495 Tm [(Note:)-578(the)-382(thr)18(eshold)-383(value)-382(is)-382(only)-382(queried)-382(by)-382(the)-382(library)-382(at)-382(the)-382(time)-383(a)-382(call)]TJ 1.02 0 0 1 99.895 625.54 Tm [(to)]TJ/F131 9.9626 Tf 1 0 0 1 112.066 625.54 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 162.448 625.54 Tm [(is)-326(executed,)-345(ther)17(efor)18(e)-326(changing)-325(the)-326(thr)18(eshold)-326(has)-326(no)-325(ef)17(f)1(ect)-326(on)]TJ 1.02 0 0 1 99.895 613.585 Tm [(communication)-271(descriptors)-270(that)-271(have)-271(alr)18(eady)-271(been)-271(initialized.)-381(Mor)18(eover)-271(the)]TJ 1 0 0 1 99.895 601.63 Tm [(thr)18(eshold)-250(must)-250(have)-250(the)-250(same)-250(value)-250(on)-250(all)-250(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0 -26.933 Td [(3.1.12)-1000(get)]TJ ET q 1 0 0 1 149.2 574.896 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 152.189 574.697 Td [(p)]TJ +/F75 9.9626 Tf 152.189 574.697 Td [(p)]TJ ET q 1 0 0 1 158.874 574.896 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 161.863 574.697 Td [(adjcncy)-250(\227)-250(Get)-250(process)-250(adjacency)-250(list)]TJ +/F75 9.9626 Tf 161.863 574.697 Td [(adjcncy)-250(\227)-250(Get)-250(process)-250(adjacency)-250(list)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -61.968 -18.964 Td [(list)-525(=)-1050(desc%get_p_adjcncy\050\051)]TJ +/F131 9.9626 Tf -61.968 -18.964 Td [(list)-525(=)-1050(desc%get_p_adjcncy\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.483 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -29.44 -19.483 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.484 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-190(curr)18(ent)-190(list)-190(of)-190(adjacent)-190(pr)18(ocesses,)-202(i.e.)-290(pr)18(ocesses)-190(with)-190(which)]TJ -47.87 -11.955 Td [(the)-250(curr)18(ent)-250(one)-250(has)-250(to)-250(exchange)-250(halo)-250(data.)]TJ/F59 9.9626 Tf -24.907 -26.933 Td [(3.1.13)-1000(set)]TJ +/F84 9.9626 Tf 0.98 0 0 1 172.363 495.953 Tm [(The)-252(curr)18(ent)-252(list)-252(of)-253(adjacent)-252(pr)18(oc)1(esses,)-253(i.e.)-316(pr)19(ocesses)-253(with)-252(which)]TJ 1 0 0 1 124.802 483.998 Tm [(the)-250(curr)18(ent)-250(one)-250(has)-250(to)-250(exchange)-250(halo)-250(data.)]TJ/F75 9.9626 Tf -24.907 -26.933 Td [(3.1.13)-1000(set)]TJ ET q 1 0 0 1 148.085 457.264 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 151.073 457.065 Td [(p)]TJ +/F75 9.9626 Tf 151.073 457.065 Td [(p)]TJ ET q 1 0 0 1 157.758 457.264 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 160.747 457.065 Td [(adjcncy)-250(\227)-250(Set)-250(process)-250(adjacency)-250(list)]TJ +/F75 9.9626 Tf 160.747 457.065 Td [(adjcncy)-250(\227)-250(Set)-250(process)-250(adjacency)-250(list)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -60.852 -18.964 Td [(call)-525(desc%set_p_adjcncy\050list\051)]TJ +/F131 9.9626 Tf -60.852 -18.964 Td [(call)-525(desc%set_p_adjcncy\050list\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.483 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.483 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.483 Td [(list)]TJ 0 g 0 G -/F62 9.9626 Tf 19.358 0 Td [(the)-250(list)-250(of)-250(adjacent)-250(pr)18(ocesses.)]TJ 5.549 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F67 9.9626 Tf 250.209 0 Td [(psb_ipk_)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -316.959 -20.813 Td [(Note:)-596(this)-392(method)-393(can)-393(be)-393(called)-393(after)-392(a)-393(call)-393(to)]TJ/F67 9.9626 Tf 216.367 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 50.987 0 Td [(and)-393(befor)18(e)-393(a)-392(call)]TJ -267.354 -11.955 Td [(to)]TJ/F67 9.9626 Tf 11.711 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)-470(The)-304(user)-303(is)-304(specifying)-303(her)18(e)-304(some)-303(knowledge)-304(about)-303(which)-304(pr)18(o-)]TJ -58.784 -11.955 Td [(cesses)-208(ar)18(e)-208(topol)1(ogical)-208(neighbours)-208(of)-208(the)-207(curr)18(ent)-208(pr)18(ocess.)-296(The)-208(availability)-207(of)-208(this)]TJ 0 -11.955 Td [(information)-250(may)-250(speed)-250(up)-250(the)-250(execution)-250(of)-250(the)-250(assembly)-250(call)]TJ/F67 9.9626 Tf 269.656 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)]TJ/F59 9.9626 Tf -316.729 -26.934 Td [(3.1.14)-1000(fnd)]TJ +/F84 9.9626 Tf 19.358 0 Td [(the)-250(list)-250(of)-250(adjacent)-250(pr)18(ocesses.)]TJ 5.549 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 1.02 0 0 1 99.895 309.688 Tm [(Note:)-521(this)-354(method)-353(can)-354(be)-353(called)-354(after)-354(a)-353(call)-354(to)]TJ/F131 9.9626 Tf 1 0 0 1 316.246 309.688 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 366.913 309.688 Tm [(and)-354(befor)18(e)-354(a)-353(call)]TJ 1.02 0 0 1 99.895 297.733 Tm [(to)]TJ/F131 9.9626 Tf 1 0 0 1 111.504 297.733 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 158.577 297.733 Tm [(.)-380(The)-270(user)-271(i)1(s)-271(specifying)-270(her)17(e)-270(some)-270(knowledge)-271(about)-270(which)-270(pr)17(o-)]TJ 0.986 0 0 1 99.895 285.778 Tm [(cesses)-255(ar)19(e)-255(topological)-255(neighbours)-254(of)-255(the)-254(curr)18(ent)-255(pr)18(ocess.)-317(The)-255(availability)-254(of)-255(this)]TJ 1 0 0 1 99.895 273.823 Tm [(information)-250(may)-250(speed)-250(up)-250(the)-250(execution)-250(of)-250(the)-250(assembly)-250(call)]TJ/F131 9.9626 Tf 269.656 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ/F75 9.9626 Tf -316.729 -26.933 Td [(3.1.14)-1000(fnd)]TJ ET q 1 0 0 1 151.412 247.089 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 154.401 246.89 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(process)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ +/F75 9.9626 Tf 154.401 246.89 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(process)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -54.506 -18.964 Td [(call)-525(desc%fnd_owner\050idx,iprc,info\051)]TJ +/F131 9.9626 Tf -54.506 -18.964 Td [(call)-525(desc%fnd_owner\050idx,iprc,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.483 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.483 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.484 Td [(idx)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(the)-250(list)-250(of)-250(global)-250(indices)-250(for)-250(which)-250(we)-250(need)-250(the)-250(owning)-250(pr)18(ocesses.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F67 9.9626 Tf 250.209 0 Td [(psb_lpk_)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ +/F84 9.9626 Tf 19.368 0 Td [(the)-250(list)-250(of)-250(global)-250(indices)-250(for)-250(which)-250(we)-250(need)-250(the)-250(owning)-250(pr)18(ocesses.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_lpk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0 g 0 G -150.084 -29.888 Td [(15)]TJ 0 g 0 G @@ -6840,21 +6837,21 @@ ET endstream endobj -1049 0 obj +1052 0 obj << -/Length 7676 +/Length 8028 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.934 Td [(iprc)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(the)-250(list)-250(of)-250(pr)18(ocesses)-250(owning)-250(the)-250(indices)-250(in)]TJ/F67 9.9626 Tf 184.993 0 Td [(idx)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ -198.463 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.381 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-408(as:)-627(an)-408(allocatable)-408(one-dimensional)-408(array)-409(of)-408(integers)-408(of)-408(kind)]TJ/F67 9.9626 Tf 0 -11.955 Td [(psb_ipk_)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -66.749 -23.926 Td [(Note:)-349(this)-269(method)-269(may)-270(or)-269(may)-269(not)-269(actually)-270(r)18(equir)18(e)-269(communications,)-274(depend-)]TJ 0 -11.956 Td [(ing)-283(on)-283(the)-283(ex)1(a)-1(c)1(t)-283(internal)-283(data)-283(storage;)-299(given)-283(that)-283(the)-283(choice)-283(of)-282(storage)-283(may)-283(be)]TJ 0 -11.955 Td [(alter)18(ed)-376(by)-375(r)8(untime)-376(parameters,)-407(it)-376(is)-375(necessary)-376(for)-376(safety)-375(that)-376(this)-375(method)-376(is)]TJ 0 -11.955 Td [(called)-250(by)-250(all)-250(pr)18(ocesses.)]TJ/F59 9.9626 Tf 0 -29.998 Td [(3.1.15)-1000(Named)-250(Constants)]TJ +/F84 9.9626 Tf 22.685 0 Td [(the)-250(list)-250(of)-250(pr)18(ocesses)-250(owning)-250(the)-250(indices)-250(in)]TJ/F131 9.9626 Tf 184.993 0 Td [(idx)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ -198.463 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 636.374 Tm [(Speci\002ed)-345(as:)-504(an)-345(allocatable)-345(one-dimensional)-345(array)-345(of)-346(integ)1(ers)-346(of)-345(kind)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 624.419 Tm [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0.98 0 0 1 150.705 600.493 Tm [(Note:)-304(this)-231(method)-231(may)-230(or)-231(may)-231(not)-231(actually)-231(r)19(equir)18(e)-231(communications,)-235(depending)]TJ 0.98 0 0 1 150.705 588.537 Tm [(on)-217(the)-216(exact)-217(internal)-217(data)-216(storage;)-230(given)-217(that)-216(the)-217(choice)-217(of)-216(storage)-217(may)-217(be)-217(alter)19(ed)]TJ 0.98 0 0 1 150.705 576.582 Tm [(by)-250(r)8(untime)-250(parameters,)-250(it)-250(is)-250(necessary)-250(for)-250(safety)-250(that)-250(this)-250(method)-250(is)-249(called)-250(by)-250(all)]TJ 1 0 0 1 150.406 564.627 Tm [(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0.299 -29.998 Td [(3.1.15)-1000(Named)-250(Constants)]TJ 0 g 0 G 0 -19.937 Td [(psb)]TJ ET @@ -6863,7 +6860,7 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 514.692 Td [(none)]TJ +/F75 9.9626 Tf 170.889 514.692 Td [(none)]TJ ET q 1 0 0 1 194.182 514.891 cm @@ -6871,16 +6868,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 202.152 514.692 Td [(Generic)-250(no-op;)]TJ +/F84 9.9626 Tf 202.152 514.692 Td [(Generic)-250(no-op;)]TJ 0 g 0 G -/F59 9.9626 Tf -51.447 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -51.447 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 492.957 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 492.758 Td [(root)]TJ +/F75 9.9626 Tf 170.889 492.758 Td [(root)]TJ ET q 1 0 0 1 189.758 492.957 cm @@ -6888,16 +6885,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 197.728 492.758 Td [(Default)-250(r)18(oot)-250(pr)18(ocess)-250(for)-250(br)18(oadcast)-250(and)-250(scatter)-250(operations;)]TJ +/F84 9.9626 Tf 197.728 492.758 Td [(Default)-250(r)18(oot)-250(pr)18(ocess)-250(for)-250(br)18(oadcast)-250(and)-250(scatter)-250(operations;)]TJ 0 g 0 G -/F59 9.9626 Tf -47.023 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -47.023 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 471.023 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 470.824 Td [(nohalo)]TJ +/F75 9.9626 Tf 170.889 470.824 Td [(nohalo)]TJ ET q 1 0 0 1 203.038 471.023 cm @@ -6905,16 +6902,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 211.008 470.824 Td [(Do)-250(not)-250(fetch)-250(halo)-250(elements;)]TJ +/F84 9.9626 Tf 211.008 470.824 Td [(Do)-250(not)-250(fetch)-250(halo)-250(elements;)]TJ 0 g 0 G -/F59 9.9626 Tf -60.303 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -60.303 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 449.089 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 448.89 Td [(halo)]TJ +/F75 9.9626 Tf 170.889 448.89 Td [(halo)]TJ ET q 1 0 0 1 191.412 449.089 cm @@ -6922,16 +6919,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 199.382 448.89 Td [(Fetch)-250(halo)-250(elements)-250(fr)18(om)-250(neighbouring)-250(pr)18(ocesses;)]TJ +/F84 9.9626 Tf 199.382 448.89 Td [(Fetch)-250(halo)-250(elements)-250(fr)18(om)-250(neighbouring)-250(pr)18(ocesses;)]TJ 0 g 0 G -/F59 9.9626 Tf -48.677 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -48.677 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 427.155 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 426.956 Td [(sum)]TJ +/F75 9.9626 Tf 170.889 426.956 Td [(sum)]TJ ET q 1 0 0 1 190.854 427.155 cm @@ -6939,16 +6936,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 198.824 426.956 Td [(Sum)-250(overlapped)-250(elements)]TJ +/F84 9.9626 Tf 198.824 426.956 Td [(Sum)-250(overlapped)-250(elements)]TJ 0 g 0 G -/F59 9.9626 Tf -48.119 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -48.119 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 405.221 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 405.022 Td [(avg)]TJ +/F75 9.9626 Tf 170.889 405.022 Td [(avg)]TJ ET q 1 0 0 1 187.546 405.221 cm @@ -6956,23 +6953,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 195.517 405.022 Td [(A)92(verage)-250(overlapped)-250(elements)]TJ +/F84 9.9626 Tf 195.128 405.022 Td [(A)92(verage)-250(overlapped)-250(elements)]TJ 0 g 0 G -/F59 9.9626 Tf -44.812 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -44.423 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 383.288 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 383.088 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 383.088 Td [(comm)]TJ ET q 1 0 0 1 199.163 383.288 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 383.088 Td [(halo)]TJ +/F75 9.9626 Tf 202.152 383.088 Td [(halo)]TJ ET q 1 0 0 1 222.674 383.288 cm @@ -6980,23 +6977,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 230.645 383.088 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.92 0 Td [(halo_index)]TJ/F62 9.9626 Tf 54.794 0 Td [(list;)]TJ +/F84 9.9626 Tf 230.645 383.088 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(halo_index)]TJ/F84 9.9626 Tf 54.794 0 Td [(list;)]TJ 0 g 0 G -/F59 9.9626 Tf -259.654 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -259.654 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 361.354 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 361.154 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 361.154 Td [(comm)]TJ ET q 1 0 0 1 199.163 361.354 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 361.154 Td [(ext)]TJ +/F75 9.9626 Tf 202.152 361.154 Td [(ext)]TJ ET q 1 0 0 1 216.029 361.354 cm @@ -7004,23 +7001,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 224 361.154 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.92 0 Td [(ext_index)]TJ/F62 9.9626 Tf 49.564 0 Td [(list;)]TJ +/F84 9.9626 Tf 224 361.154 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ext_index)]TJ/F84 9.9626 Tf 49.564 0 Td [(list;)]TJ 0 g 0 G -/F59 9.9626 Tf -247.779 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -247.779 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 339.42 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 339.22 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 339.22 Td [(comm)]TJ ET q 1 0 0 1 199.163 339.42 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 339.22 Td [(ovr)]TJ +/F75 9.9626 Tf 202.152 339.22 Td [(ovr)]TJ ET q 1 0 0 1 217.703 339.42 cm @@ -7028,23 +7025,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 225.673 339.22 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.92 0 Td [(ovrlap_index)]TJ/F62 9.9626 Tf 65.255 0 Td [(list;)]TJ +/F84 9.9626 Tf 225.673 339.22 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ovrlap_index)]TJ/F84 9.9626 Tf 65.255 0 Td [(list;)]TJ 0 g 0 G -/F59 9.9626 Tf -265.143 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -265.143 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 317.486 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 317.286 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 317.286 Td [(comm)]TJ ET q 1 0 0 1 199.163 317.486 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 317.286 Td [(mov)]TJ +/F75 9.9626 Tf 202.152 317.286 Td [(mov)]TJ ET q 1 0 0 1 222.684 317.486 cm @@ -7052,63 +7049,63 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 230.654 317.286 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.921 0 Td [(ovr_mst_idx)]TJ/F62 9.9626 Tf 60.024 0 Td [(list;)]TJ/F59 11.9552 Tf -264.894 -31.99 Td [(3.2)-1000(Sparse)-250(Matrix)-250(class)]TJ/F62 9.9626 Tf 0 -19.937 Td [(The)]TJ/F67 9.9626 Tf 19.623 0 Td [(psb)]TJ +/F84 9.9626 Tf 230.654 317.286 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.921 0 Td [(ovr_mst_idx)]TJ/F84 9.9626 Tf 60.024 0 Td [(list;)]TJ/F75 11.9552 Tf -264.894 -31.99 Td [(3.2)-1000(Sparse)-250(Matrix)-250(class)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 265.359 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.907 265.359 Tm [(psb)]TJ ET q -1 0 0 1 186.647 265.558 cm +1 0 0 1 186.225 265.558 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 189.785 265.359 Td [(Tspmat)]TJ +/F131 9.9626 Tf 189.363 265.359 Td [(Tspmat)]TJ ET q -1 0 0 1 221.795 265.558 cm +1 0 0 1 221.373 265.558 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 224.933 265.359 Td [(type)]TJ/F62 9.9626 Tf 23.868 0 Td [(class)-296(contains)-295(all)-296(information)-296(about)-296(the)-295(local)-296(portion)-296(of)]TJ -98.096 -11.955 Td [(the)-200(sparse)-199(matrix)-200(and)-199(its)-200(storage)-200(mode.)-293(Its)-199(design)-200(is)-200(based)-199(on)-200(the)-200(ST)74(A)74(TE)-199(design)]TJ 0 -11.955 Td [(pattern)-256([)]TJ +/F131 9.9626 Tf 224.511 265.359 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 247.932 265.359 Tm [(class)-246(contains)-246(all)-246(information)-246(about)-246(the)-246(local)-246(portion)-246(of)]TJ 0.98 0 0 1 150.705 253.404 Tm [(the)-252(sparse)-253(matrix)-252(and)-252(its)-252(storage)-253(mode.)-315(Its)-252(design)-253(is)-252(based)-252(on)-253(the)-252(ST)76(A)75(TE)-252(design)]TJ 0.98 0 0 1 150.406 241.449 Tm [(pattern)-251([)]TJ 1 0 0 rg 1 0 0 RG - [(12)]TJ + 1 0 0 1 187.44 241.449 Tm [(12)]TJ 0 g 0 G - [(])-255(as)-256(detailed)-256(in)-256([)]TJ + 0.98 0 0 1 197.402 241.449 Tm [(])-251(as)-251(detailed)-252(in)-251([)]TJ 1 0 0 rg 1 0 0 RG - [(10)]TJ + 1 0 0 1 266.289 241.449 Tm [(10)]TJ 0 g 0 G - [(];)-258(the)-256(type)-256(declaration)-255(is)-256(shown)-256(in)-256(\002gur)18(e)]TJ + 0.98 0 0 1 276.252 241.449 Tm [(];)-252(the)-252(type)-251(declaration)-251(is)-251(shown)-251(in)-251(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-255(2)]TJ + [-251(2)]TJ 0 g 0 G - [-256(wher)18(e)]TJ/F67 9.9626 Tf 0 -11.956 Td [(T)]TJ/F62 9.9626 Tf 7.721 0 Td [(is)-250(a)-250(placeholder)-250(for)-250(the)-250(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ + [-251(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 489.447 241.449 Tm [(T)]TJ/F84 9.9626 Tf -338.742 -11.956 Td [(is)-250(a)-250(placeholder)-250(for)-250(the)-250(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ 0 g 0 G -/F59 9.9626 Tf -7.721 -21.431 Td [(S)]TJ +/F75 9.9626 Tf 0 -21.431 Td [(S)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -11.068 -21.934 Td [(D)]TJ +/F75 9.9626 Tf -11.068 -21.934 Td [(D)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 13.28 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -13.28 -21.934 Td [(C)]TJ +/F75 9.9626 Tf -13.28 -21.934 Td [(C)]TJ 0 g 0 G -/F62 9.9626 Tf 12.174 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ +/F84 9.9626 Tf 12.174 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ 0 g 0 G -/F59 9.9626 Tf -12.174 -21.934 Td [(Z)]TJ +/F75 9.9626 Tf -12.174 -21.934 Td [(Z)]TJ 0 g 0 G -/F62 9.9626 Tf 11.626 0 Td [(Double)-250(pr)18(ecision)-250(complex;)]TJ +/F84 9.9626 Tf 11.626 0 Td [(Double)-250(pr)18(ecision)-250(complex;)]TJ 0 g 0 G -/F59 9.9626 Tf -11.626 -21.934 Td [(LS,LD,LC,LZ)]TJ +/F75 9.9626 Tf -11.626 -21.934 Td [(LS,LD,LC,LZ)]TJ 0 g 0 G -/F62 9.9626 Tf 65.026 0 Td [(Same)-214(numeric)-214(type)-215(as)-214(above,)-221(but)-214(with)]TJ/F67 9.9626 Tf 168.016 0 Td [(psb_lpk_)]TJ/F62 9.9626 Tf 43.978 0 Td [(integer)-214(indices.)]TJ +/F84 9.9626 Tf 0.994 0 0 1 215.731 120.326 Tm [(Same)-250(numeric)-251(type)-250(as)-251(above,)-251(but)-250(with)]TJ/F131 9.9626 Tf 1 0 0 1 385.185 120.326 Tm [(psb_lpk_)]TJ/F84 9.9626 Tf 0.994 0 0 1 429.509 120.326 Tm [(integer)-250(indices.)]TJ 0 g 0 G - -110.146 -29.888 Td [(16)]TJ + 1 0 0 1 317.579 90.438 Tm [(16)]TJ 0 g 0 G ET endstream endobj -1056 0 obj +1059 0 obj << -/Length 7385 +/Length 7719 >> stream 0 g 0 G @@ -7126,7 +7123,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 699.454 Td [(type)]TJ +/F231 8.9664 Tf 112.299 699.454 Td [(type)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -7164,275 +7161,275 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 4.295 -41.429 Td [(Listing)-250(2:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(sparse)-250(matrix.)]TJ -16.699 -32.661 Td [(The)-190(actual)-190(data)-190(is)-190(contained)-190(in)-190(the)-190(polymorphic)-190(component)]TJ/F67 9.9626 Tf 259.484 0 Td [(a%a)]TJ/F62 9.9626 Tf 17.584 0 Td [(of)-190(type)]TJ/F67 9.9626 Tf 32.089 0 Td [(psb)]TJ +/F84 9.9626 Tf 4.295 -41.429 Td [(Listing)-250(2:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(sparse)-250(matrix.)]TJ 0.98 0 0 1 99.587 603.446 Tm [(The)-194(actual)-194(data)-194(is)-193(contained)-194(in)-194(the)-194(polymorphic)-194(component)]TJ/F131 9.9626 Tf 1 0 0 1 354.222 603.446 Tm [(a%a)]TJ/F84 9.9626 Tf 0.98 0 0 1 371.805 603.446 Tm [(of)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 403.329 603.446 Tm [(psb)]TJ ET q -1 0 0 1 425.371 603.645 cm +1 0 0 1 419.647 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 428.509 603.446 Td [(T)]TJ +/F131 9.9626 Tf 422.785 603.446 Td [(T)]TJ ET q -1 0 0 1 434.367 603.645 cm +1 0 0 1 428.643 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 437.505 603.446 Td [(base)]TJ +/F131 9.9626 Tf 431.782 603.446 Td [(base)]TJ ET q -1 0 0 1 459.054 603.645 cm +1 0 0 1 453.331 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 462.193 603.446 Td [(sparse)]TJ +/F131 9.9626 Tf 456.469 603.446 Td [(sparse)]TJ ET q -1 0 0 1 494.202 603.645 cm +1 0 0 1 488.478 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 497.341 603.446 Td [(mat)]TJ/F62 9.9626 Tf 15.691 0 Td [(;)]TJ -413.137 -11.955 Td [(its)-306(speci)1(\002c)-306(layout)-305(can)-306(be)-305(chosen)-306(dynamically)-305(among)-306(the)-305(pr)18(ede\002ned)-306(types,)-319(or)]TJ 0 -11.955 Td [(an)-305(entir)18(ely)-305(new)-305(storage)-305(layout)-305(can)-305(be)-305(implemented)-304(and)-305(passed)-305(to)-305(the)-305(library)]TJ 0 -11.955 Td [(at)-231(r)8(untime)-231(via)-231(the)]TJ/F67 9.9626 Tf 80.145 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 49.377 0 Td [(r)18(outine.)-304(The)-231(following)-231(very)-231(common)-231(formats)-231(ar)18(e)]TJ -129.522 -11.955 Td [(pr)18(ecompiled)-250(in)-250(PSBLAS)-250(and)-250(thus)-250(ar)18(e)-250(always)-250(available:)]TJ +/F131 9.9626 Tf 491.617 603.446 Td [(mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 507.308 603.446 Tm [(;)]TJ 1.02 0 0 1 99.895 591.491 Tm [(its)-247(speci\002c)-247(layout)-247(can)-247(be)-247(chosen)-247(dynamically)-247(among)-247(the)-247(pr)18(ede\002ned)-247(types,)-247(or)]TJ 1.02 0 0 1 99.895 579.536 Tm [(an)-252(entir)18(ely)-252(new)-252(storage)-251(layout)-252(can)-252(be)-251(implemented)-252(and)-252(passed)-252(to)-251(the)-252(library)]TJ 0.993 0 0 1 99.895 567.581 Tm [(at)-251(r)8(untime)-252(via)-251(the)]TJ/F131 9.9626 Tf 1 0 0 1 180.278 567.581 Tm [(psb_spasb)]TJ/F84 9.9626 Tf 0.993 0 0 1 229.837 567.581 Tm [(r)18(outine.)-312(The)-251(following)-252(very)-251(common)-251(formats)-252(ar)19(e)]TJ 1 0 0 1 99.596 555.626 Tm [(pr)18(ecompiled)-250(in)-250(PSBLAS)-250(and)-250(thus)-250(ar)18(e)-250(always)-250(available:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.889 Td [(psb)]TJ +/F75 9.9626 Tf 0.299 -19.889 Td [(psb)]TJ ET q 1 0 0 1 117.091 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 535.737 Td [(T)]TJ +/F75 9.9626 Tf 120.08 535.737 Td [(T)]TJ ET q 1 0 0 1 127.322 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 130.311 535.737 Td [(coo)]TJ +/F75 9.9626 Tf 130.311 535.737 Td [(coo)]TJ ET q 1 0 0 1 146.411 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 149.399 535.737 Td [(sparse)]TJ +/F75 9.9626 Tf 149.399 535.737 Td [(sparse)]TJ ET q 1 0 0 1 178.769 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 181.758 535.737 Td [(mat)]TJ +/F75 9.9626 Tf 181.758 535.737 Td [(mat)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Coor)18(dinate)-250(storage;)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Coor)18(dinate)-250(storage;)]TJ 0 g 0 G -/F59 9.9626 Tf -104 -19.907 Td [(psb)]TJ +/F75 9.9626 Tf -104 -19.907 Td [(psb)]TJ ET q 1 0 0 1 117.091 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 515.83 Td [(T)]TJ +/F75 9.9626 Tf 120.08 515.83 Td [(T)]TJ ET q 1 0 0 1 127.322 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 130.311 515.83 Td [(csr)]TJ +/F75 9.9626 Tf 130.311 515.83 Td [(csr)]TJ ET q 1 0 0 1 143.631 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 146.62 515.83 Td [(sparse)]TJ +/F75 9.9626 Tf 146.62 515.83 Td [(sparse)]TJ ET q 1 0 0 1 175.989 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 178.978 515.83 Td [(mat)]TJ +/F75 9.9626 Tf 178.978 515.83 Td [(mat)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(r)18(ows;)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(r)18(ows;)]TJ 0 g 0 G -/F59 9.9626 Tf -101.22 -19.906 Td [(psb)]TJ +/F75 9.9626 Tf -101.22 -19.906 Td [(psb)]TJ ET q 1 0 0 1 117.091 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 495.924 Td [(T)]TJ +/F75 9.9626 Tf 120.08 495.924 Td [(T)]TJ ET q 1 0 0 1 127.322 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 130.311 495.924 Td [(csc)]TJ +/F75 9.9626 Tf 130.311 495.924 Td [(csc)]TJ ET q 1 0 0 1 144.179 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.168 495.924 Td [(sparse)]TJ +/F75 9.9626 Tf 147.168 495.924 Td [(sparse)]TJ ET q 1 0 0 1 176.537 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 179.526 495.924 Td [(mat)]TJ +/F75 9.9626 Tf 179.526 495.924 Td [(mat)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(columns;)]TJ -101.768 -19.889 Td [(The)-295(inner)-295(sparse)-294(matrix)-295(has)-295(an)-295(associated)-294(state,)-306(which)-295(can)-295(take)-294(the)-295(following)]TJ 0 -11.955 Td [(values:)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(columns;)]TJ 1.019 0 0 1 99.587 476.035 Tm [(The)-245(inner)-244(sparse)-245(matrix)-244(has)-245(an)-245(associated)-244(state,)-245(which)-244(can)-245(take)-245(the)-244(following)]TJ 1 0 0 1 99.616 464.08 Tm [(values:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.888 Td [(Build:)]TJ +/F75 9.9626 Tf 0.279 -19.888 Td [(Build:)]TJ 0 g 0 G -/F62 9.9626 Tf 32.927 0 Td [(State)-283(enter)18(ed)-283(after)-283(the)-283(\002rst)-284(allocation,)-291(and)-283(befor)18(e)-283(the)-283(\002rst)-283(assembly;)-300(in)]TJ -8.02 -11.955 Td [(this)-250(state)-250(it)-250(is)-250(possible)-250(to)-250(add)-250(nonzer)18(o)-250(entries.)]TJ +/F84 9.9626 Tf 1.014 0 0 1 132.822 444.192 Tm [(State)-246(enter)18(ed)-247(after)-246(the)-246(\002rst)-246(allocation,)-246(and)-246(befor)17(e)-246(the)-246(\002rst)-246(assembly;)-246(in)]TJ 1 0 0 1 124.802 432.237 Tm [(this)-250(state)-250(it)-250(is)-250(possible)-250(to)-250(add)-250(nonzer)18(o)-250(entries.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.907 Td [(Assembled:)]TJ +/F75 9.9626 Tf -24.907 -19.907 Td [(Assembled:)]TJ 0 g 0 G -/F62 9.9626 Tf 58.381 0 Td [(State)-324(enter)18(ed)-325(after)-324(the)-325(assembly;)-362(computations)-324(using)-325(the)-324(sparse)]TJ -33.474 -11.955 Td [(matrix,)-250(such)-250(as)-250(matrix-vector)-250(pr)18(oducts,)-250(ar)18(e)-250(only)-250(possible)-250(in)-250(this)-250(state;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 158.276 412.33 Tm [(State)-258(enter)18(ed)-259(after)-258(the)-258(assembly;)-264(computations)-258(using)-258(the)-259(sparse)]TJ 1 0 0 1 124.802 400.375 Tm [(matrix,)-250(such)-250(as)-250(matrix-vector)-250(pr)18(oducts,)-250(ar)18(e)-250(only)-250(possible)-250(in)-250(this)-250(state;)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.907 Td [(Update:)]TJ +/F75 9.9626 Tf -24.907 -19.907 Td [(Update:)]TJ 0 g 0 G -/F62 9.9626 Tf 40.678 0 Td [(State)-219(enter)18(ed)-220(after)-219(a)-219(r)18(einitalization;)-230(this)-219(is)-219(used)-220(to)-219(handle)-219(applications)]TJ -15.771 -11.955 Td [(in)-288(which)-288(the)-288(same)-288(sparsity)-289(pattern)-288(is)-288(used)-288(multiple)-288(times)-288(with)-288(dif)18(fer)18(ent)]TJ 0 -11.955 Td [(coef)18(\002cients.)-298(In)-213(this)-214(state)-213(it)-214(is)-213(only)-214(possible)-213(to)-214(enter)-213(coef)18(\002cients)-214(for)-213(alr)18(eady)]TJ 0 -11.956 Td [(existing)-250(nonzer)18(o)-250(entries.)]TJ -24.907 -19.888 Td [(The)-293(only)-292(storage)-293(variant)-292(supporting)-293(the)-293(build)-292(state)-293(is)-292(COO;)-293(all)-293(other)-292(variants)]TJ 0 -11.955 Td [(ar)18(e)-250(obtained)-250(by)-250(conversion)-250(to/fr)18(om)-250(it.)]TJ/F59 9.9626 Tf 0 -27.132 Td [(3.2.1)-1000(Sparse)-250(Matrix)-250(Methods)]TJ 0 -18.964 Td [(3.2.2)-1000(get)]TJ +/F84 9.9626 Tf 0.989 0 0 1 140.573 380.468 Tm [(State)-254(enter)18(ed)-254(after)-254(a)-254(r)18(einitalization;)-255(this)-254(is)-254(used)-254(to)-254(handle)-254(applications)]TJ 1.015 0 0 1 124.802 368.513 Tm [(in)-245(which)-245(the)-245(same)-245(sparsity)-245(pattern)-246(is)-245(used)-245(multiple)-245(times)-245(with)-245(dif)18(fer)18(ent)]TJ 0.987 0 0 1 124.802 356.558 Tm [(coef)18(\002cients.)-316(In)-253(this)-254(state)-254(it)-254(is)-254(only)-253(possible)-254(to)-254(enter)-254(coef)18(\002cients)-254(for)-253(alr)18(eady)]TJ 1 0 0 1 124.802 344.602 Tm [(existing)-250(nonzer)18(o)-250(entries.)]TJ 1.018 0 0 1 99.587 324.714 Tm [(The)-244(only)-245(storage)-244(variant)-244(supporting)-244(the)-245(build)-244(state)-244(is)-245(COO;)-244(all)-244(other)-245(variant)1(s)]TJ 1 0 0 1 99.895 312.759 Tm [(ar)18(e)-250(obtained)-250(by)-250(conversion)-250(to/fr)18(om)-250(it.)]TJ/F75 9.9626 Tf 0 -27.132 Td [(3.2.1)-1000(Sparse)-250(Matrix)-250(Methods)]TJ 0 -18.964 Td [(3.2.2)-1000(get)]TJ ET q 1 0 0 1 144.219 266.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 266.663 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F75 9.9626 Tf 147.208 266.663 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.313 -18.963 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ +/F131 9.9626 Tf -47.313 -18.963 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.872 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.872 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.907 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.907 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.907 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -33.827 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.906 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 165.298 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 165.299 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G - -76.431 -29.888 Td [(17)]TJ + -76.122 -29.888 Td [(17)]TJ 0 g 0 G ET endstream endobj -1061 0 obj +1064 0 obj << -/Length 3860 +/Length 4020 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.3)-1000(get)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.3)-1000(get)]TJ ET q 1 0 0 1 195.029 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 706.129 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F75 9.9626 Tf 198.017 706.129 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.312 -19.023 Td [(nc)-525(=)-525(a%get_ncols\050\051)]TJ +/F131 9.9626 Tf -47.312 -19.023 Td [(nc)-525(=)-525(a%get_ncols\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.049 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.049 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -33.965 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 181.158 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ/F59 9.9626 Tf -259.165 -27.315 Td [(3.2.4)-1000(get)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 181.158 0 Td [(a)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ/F75 9.9626 Tf -258.857 -27.315 Td [(3.2.4)-1000(get)]TJ ET q 1 0 0 1 195.029 531.915 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 531.716 Td [(nnzeros)-250(\227)-250(Get)-250(number)-250(of)-250(nonzero)-250(elements)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F75 9.9626 Tf 198.017 531.716 Td [(nnzeros)-250(\227)-250(Get)-250(number)-250(of)-250(nonzero)-250(elements)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.312 -19.024 Td [(nz)-525(=)-525(a%get_nnzeros\050\051)]TJ +/F131 9.9626 Tf -47.312 -19.024 Td [(nz)-525(=)-525(a%get_nnzeros\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.048 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.048 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -33.965 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(nonzer)18(o)-250(elements)-250(stor)18(ed)-250(in)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 251.284 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ/F59 9.9626 Tf -329.292 -22.041 Td [(Notes)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(nonzer)18(o)-250(elements)-250(stor)18(ed)-250(in)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 251.284 0 Td [(a)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ/F75 9.9626 Tf -328.983 -22.041 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -20.017 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -20.017 Td [(1.)]TJ 0 g 0 G - [-500(The)-395(function)-395(value)-395(is)-395(speci\002c)-395(to)-395(the)-395(storage)-395(format)-395(of)-396(matri)1(x)]TJ/F67 9.9626 Tf 295.646 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(;)-468(some)]TJ -288.422 -11.956 Td [(storage)-343(formats)-342(employ)-343(padding,)-366(thus)-343(the)-342(r)18(eturned)-343(value)-343(for)-342(the)-343(same)]TJ 0 -11.955 Td [(matrix)-250(may)-250(be)-250(dif)18(fer)18(ent)-250(for)-250(dif)18(fer)18(ent)-250(storage)-250(choices.)]TJ/F59 9.9626 Tf -24.907 -27.315 Td [(3.2.5)-1000(get)]TJ + 1.02 0 0 1 175.303 342.56 Tm [(The)-348(function)-348(value)-348(is)-348(speci\002c)-347(to)-348(the)-348(storage)-348(format)-348(of)-348(matrix)]TJ/F131 9.9626 Tf 1 0 0 1 458.89 342.56 Tm [(a)]TJ/F84 9.9626 Tf 1.02 0 0 1 464.12 342.56 Tm [(;)-399(some)]TJ 1.02 0 0 1 175.611 330.604 Tm [(storage)-281(formats)-282(employ)-281(padding,)-290(thus)-282(the)-281(r)18(eturned)-282(value)-281(for)-281(the)-282(same)]TJ 1 0 0 1 175.611 318.649 Tm [(matrix)-250(may)-250(be)-250(dif)18(fer)18(ent)-250(for)-250(dif)18(fer)18(ent)-250(storage)-250(choices.)]TJ/F75 9.9626 Tf -24.906 -27.315 Td [(3.2.5)]TJ 1.02 0 0 1 180.593 291.334 Tm [(get)]TJ ET q -1 0 0 1 195.029 291.533 cm +1 0 0 1 195.305 291.533 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 291.334 Td [(size)-398(\227)-397(Get)-398(maximum)-397(number)-398(of)-398(nonzero)-397(elements)-398(in)-398(a)-397(sparse)]TJ -17.424 -11.955 Td [(matrix)]TJ +/F75 9.9626 Tf 1.02 0 0 1 198.294 291.334 Tm [(size)-337(\227)-336(Get)-337(maximum)-336(number)-337(of)-336(nonzero)-337(elements)-336(in)-337(a)-337(sparse)]TJ 1 0 0 1 180.593 279.379 Tm [(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -29.888 -19.024 Td [(maxnz)-525(=)-525(a%get_size\050\051)]TJ +/F131 9.9626 Tf -29.888 -19.024 Td [(maxnz)-525(=)-525(a%get_size\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.048 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.048 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ 0 g 0 G -56.338 -33.965 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-220(maximum)-220(number)-219(of)-220(nonzer)18(o)-220(elements)-220(that)-220(can)-219(be)-220(stor)18(ed)]TJ -47.87 -11.955 Td [(in)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 73.294 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(using)-250(its)-250(curr)18(ent)-250(memory)-250(allocation.)]TJ +/F84 9.9626 Tf 0.99 0 0 1 223.173 132.281 Tm [(The)-254(maximum)-254(number)-253(of)-254(nonzer)18(o)-254(elements)-254(that)-254(can)-253(be)-254(stor)18(ed)]TJ 1 0 0 1 175.611 120.326 Tm [(in)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 73.295 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(using)-250(its)-250(curr)18(ent)-250(memory)-250(allocation.)]TJ 0 g 0 G 60.952 -29.888 Td [(18)]TJ 0 g 0 G @@ -7440,59 +7437,63 @@ ET endstream endobj -978 0 obj +981 0 obj << /Type /ObjStm /N 100 -/First 915 -/Length 9176 ->> -stream -971 0 972 56 973 112 974 168 975 224 957 281 981 374 956 516 979 668 983 815 -27 872 984 928 985 985 986 1040 987 1096 988 1153 989 1210 31 1267 980 1323 992 1442 -990 1576 994 1723 35 1779 39 1834 995 1889 991 1945 1000 2038 996 2190 997 2336 998 2488 -1002 2640 1003 2699 1004 2758 1005 2817 1006 2876 1007 2935 999 2994 1011 3074 1008 3221 1009 3374 -1013 3527 1014 3585 1015 3643 1016 3701 1017 3759 1018 3817 1019 3875 1020 3933 1021 3991 1023 4049 -1010 4107 1027 4216 1024 4363 1025 4511 1029 4658 43 4717 47 4774 51 4831 55 4888 1026 4945 -1031 5078 1033 5196 59 5254 63 5310 67 5366 1030 5422 1036 5516 1038 5634 71 5693 75 5750 -1039 5807 79 5866 83 5921 1035 5978 1041 6072 1043 6190 87 6248 91 6304 95 6360 1040 6416 -1048 6510 1044 6667 1045 6825 1046 6977 1050 7125 99 7184 103 7241 1051 7299 1047 7358 1055 7452 -1057 7570 1053 7628 1058 7686 107 7745 111 7802 1054 7859 1060 7968 1062 8086 115 8145 119 8203 -% 971 0 obj +/First 918 +/Length 9196 +>> +stream +973 0 974 56 975 112 976 168 977 224 978 280 960 337 984 432 959 574 982 726 +986 872 27 929 987 985 988 1042 989 1097 990 1153 991 1210 992 1267 31 1324 983 1380 +995 1501 993 1635 997 1782 35 1838 39 1893 998 1948 994 2005 1003 2099 999 2254 1000 2400 +1001 2553 1005 2706 1006 2765 1007 2824 1008 2883 1009 2942 1010 3001 1002 3060 1014 3141 1011 3288 +1012 3441 1016 3594 1017 3652 1018 3710 1019 3768 1020 3826 1021 3884 1022 3942 1023 4000 1024 4058 +1026 4116 1013 4174 1030 4284 1027 4431 1028 4579 1032 4726 43 4785 47 4842 51 4899 55 4956 +1029 5013 1034 5149 1036 5267 59 5325 63 5381 67 5437 1033 5493 1039 5588 1041 5706 71 5765 +75 5822 1042 5879 79 5937 83 5992 1038 6049 1044 6144 1046 6262 87 6320 91 6376 95 6432 +1043 6488 1051 6583 1047 6740 1048 6898 1049 7050 1053 7198 99 7257 103 7314 1054 7372 1050 7431 +1058 7526 1060 7644 1056 7702 1061 7760 107 7819 111 7876 1057 7933 1063 8043 1065 8161 115 8220 +% 973 0 obj << -/D [958 0 R /XYZ 99.895 437.028 null] +/D [961 0 R /XYZ 99.895 460.161 null] >> -% 972 0 obj +% 974 0 obj << -/D [958 0 R /XYZ 99.895 422.213 null] +/D [961 0 R /XYZ 99.895 433.375 null] >> -% 973 0 obj +% 975 0 obj << -/D [958 0 R /XYZ 99.895 407.469 null] +/D [961 0 R /XYZ 99.895 419.224 null] >> -% 974 0 obj +% 976 0 obj << -/D [958 0 R /XYZ 99.895 380.627 null] +/D [961 0 R /XYZ 99.895 405.145 null] >> -% 975 0 obj +% 977 0 obj << -/D [958 0 R /XYZ 114.242 139.255 null] +/D [961 0 R /XYZ 99.895 378.966 null] >> -% 957 0 obj +% 978 0 obj << -/Font << /F62 671 0 R /F67 918 0 R /F97 976 0 R >> +/D [961 0 R /XYZ 114.242 139.255 null] +>> +% 960 0 obj +<< +/Font << /F84 675 0 R /F131 921 0 R /F207 979 0 R >> /ProcSet [ /PDF /Text ] >> -% 981 0 obj +% 984 0 obj << /Type /Page -/Contents 982 0 R -/Resources 980 0 R +/Contents 985 0 R +/Resources 983 0 R /MediaBox [0 0 595.276 841.89] -/Parent 977 0 R -/Annots [ 956 0 R 979 0 R ] +/Parent 980 0 R +/Annots [ 959 0 R 982 0 R ] >> -% 956 0 obj +% 959 0 obj << /Type /Annot /Subtype /Link @@ -7500,111 +7501,111 @@ stream /Rect [269.647 674.054 284.093 683.464] /A << /S /GoTo /D (subsection.2.3) >> >> -% 979 0 obj +% 982 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.073 254.848 175.046 266.907] +/Rect [169.77 266.803 176.844 278.862] /A << /S /GoTo /D (section.3) >> >> -% 983 0 obj +% 986 0 obj << -/D [981 0 R /XYZ 149.705 753.953 null] +/D [984 0 R /XYZ 149.705 753.953 null] >> % 27 0 obj << -/D [981 0 R /XYZ 150.705 716.092 null] +/D [984 0 R /XYZ 150.705 716.092 null] >> -% 984 0 obj +% 987 0 obj << -/D [981 0 R /XYZ 150.705 671.065 null] +/D [984 0 R /XYZ 150.705 671.065 null] >> -% 985 0 obj +% 988 0 obj << -/D [981 0 R /XYZ 150.705 648.1 null] +/D [984 0 R /XYZ 150.705 648.1 null] >> -% 986 0 obj +% 989 0 obj << -/D [981 0 R /XYZ 150.705 573.59 null] +/D [984 0 R /XYZ 150.705 573.59 null] >> -% 987 0 obj +% 990 0 obj << -/D [981 0 R /XYZ 150.705 516.424 null] +/D [984 0 R /XYZ 150.705 527.104 null] >> -% 988 0 obj +% 991 0 obj << -/D [981 0 R /XYZ 150.705 483.864 null] +/D [984 0 R /XYZ 150.705 495.819 null] >> -% 989 0 obj +% 992 0 obj << -/D [981 0 R /XYZ 150.705 463.343 null] +/D [984 0 R /XYZ 150.705 475.298 null] >> % 31 0 obj << -/D [981 0 R /XYZ 150.705 408.307 null] +/D [984 0 R /XYZ 150.705 420.262 null] >> -% 980 0 obj +% 983 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 992 0 obj +% 995 0 obj << /Type /Page -/Contents 993 0 R -/Resources 991 0 R +/Contents 996 0 R +/Resources 994 0 R /MediaBox [0 0 595.276 841.89] -/Parent 977 0 R -/Annots [ 990 0 R ] +/Parent 980 0 R +/Annots [ 993 0 R ] >> -% 990 0 obj +% 993 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [268.105 173.115 275.079 185.175] +/Rect [268.458 173.115 275.531 185.175] /A << /S /GoTo /D (section.6) >> >> -% 994 0 obj +% 997 0 obj << -/D [992 0 R /XYZ 98.895 753.953 null] +/D [995 0 R /XYZ 98.895 753.953 null] >> % 35 0 obj << -/D [992 0 R /XYZ 99.895 716.092 null] +/D [995 0 R /XYZ 99.895 716.092 null] >> % 39 0 obj << -/D [992 0 R /XYZ 99.895 279.545 null] +/D [995 0 R /XYZ 99.895 279.545 null] >> -% 995 0 obj +% 998 0 obj << -/D [992 0 R /XYZ 342.47 236.897 null] +/D [995 0 R /XYZ 346.774 236.897 null] >> -% 991 0 obj +% 994 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1000 0 obj +% 1003 0 obj << /Type /Page -/Contents 1001 0 R -/Resources 999 0 R +/Contents 1004 0 R +/Resources 1002 0 R /MediaBox [0 0 595.276 841.89] -/Parent 977 0 R -/Annots [ 996 0 R 997 0 R 998 0 R ] +/Parent 980 0 R +/Annots [ 999 0 R 1000 0 R 1001 0 R ] >> -% 996 0 obj +% 999 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [482.63 399.338 489.604 411.398] +/Rect [450.716 399.338 457.69 411.398] /A << /S /GoTo /D (section.6) >> >> -% 997 0 obj +% 1000 0 obj << /Type /Annot /Subtype /Link @@ -7612,7 +7613,7 @@ stream /Rect [354.987 193.202 369.432 205.262] /A << /S /GoTo /D (subsection.3.3) >> >> -% 998 0 obj +% 1001 0 obj << /Type /Annot /Subtype /Link @@ -7620,45 +7621,45 @@ stream /Rect [354.987 148.883 369.432 160.943] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1002 0 obj +% 1005 0 obj << -/D [1000 0 R /XYZ 149.705 753.953 null] +/D [1003 0 R /XYZ 149.705 753.953 null] >> -% 1003 0 obj +% 1006 0 obj << -/D [1000 0 R /XYZ 150.705 293.402 null] +/D [1003 0 R /XYZ 150.705 293.402 null] >> -% 1004 0 obj +% 1007 0 obj << -/D [1000 0 R /XYZ 150.705 278.496 null] +/D [1003 0 R /XYZ 150.705 278.496 null] >> -% 1005 0 obj +% 1008 0 obj << -/D [1000 0 R /XYZ 150.705 261.039 null] +/D [1003 0 R /XYZ 150.705 261.039 null] >> -% 1006 0 obj +% 1009 0 obj << -/D [1000 0 R /XYZ 150.705 244.857 null] +/D [1003 0 R /XYZ 150.705 244.857 null] >> -% 1007 0 obj +% 1010 0 obj << -/D [1000 0 R /XYZ 150.705 228.675 null] +/D [1003 0 R /XYZ 150.705 228.675 null] >> -% 999 0 obj +% 1002 0 obj << -/Font << /F62 671 0 R /F59 669 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1011 0 obj +% 1014 0 obj << /Type /Page -/Contents 1012 0 R -/Resources 1010 0 R +/Contents 1015 0 R +/Resources 1013 0 R /MediaBox [0 0 595.276 841.89] -/Parent 977 0 R -/Annots [ 1008 0 R 1009 0 R ] +/Parent 980 0 R +/Annots [ 1011 0 R 1012 0 R ] >> -% 1008 0 obj +% 1011 0 obj << /Type /Annot /Subtype /Link @@ -7666,7 +7667,7 @@ stream /Rect [304.177 614.119 318.623 626.179] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1009 0 obj +% 1012 0 obj << /Type /Annot /Subtype /Link @@ -7674,345 +7675,341 @@ stream /Rect [304.177 568.778 318.623 580.837] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1013 0 obj -<< -/D [1011 0 R /XYZ 98.895 753.953 null] ->> -% 1014 0 obj -<< -/D [1011 0 R /XYZ 99.895 716.092 null] ->> -% 1015 0 obj -<< -/D [1011 0 R /XYZ 99.895 702.226 null] ->> % 1016 0 obj << -/D [1011 0 R /XYZ 99.895 684.257 null] +/D [1014 0 R /XYZ 98.895 753.953 null] >> % 1017 0 obj << -/D [1011 0 R /XYZ 99.895 667.564 null] +/D [1014 0 R /XYZ 99.895 716.092 null] >> % 1018 0 obj << -/D [1011 0 R /XYZ 99.895 650.871 null] +/D [1014 0 R /XYZ 99.895 702.226 null] >> % 1019 0 obj << -/D [1011 0 R /XYZ 99.895 541.236 null] +/D [1014 0 R /XYZ 99.895 684.257 null] >> % 1020 0 obj << -/D [1011 0 R /XYZ 99.895 524.542 null] +/D [1014 0 R /XYZ 99.895 667.564 null] >> % 1021 0 obj << -/D [1011 0 R /XYZ 99.895 507.849 null] +/D [1014 0 R /XYZ 99.895 650.871 null] +>> +% 1022 0 obj +<< +/D [1014 0 R /XYZ 99.895 541.236 null] >> % 1023 0 obj << -/D [1011 0 R /XYZ 99.895 288.977 null] +/D [1014 0 R /XYZ 99.895 524.542 null] >> -% 1010 0 obj +% 1024 0 obj +<< +/D [1014 0 R /XYZ 99.895 507.849 null] +>> +% 1026 0 obj +<< +/D [1014 0 R /XYZ 99.895 288.977 null] +>> +% 1013 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1022 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1027 0 obj +% 1030 0 obj << /Type /Page -/Contents 1028 0 R -/Resources 1026 0 R +/Contents 1031 0 R +/Resources 1029 0 R /MediaBox [0 0 595.276 841.89] -/Parent 977 0 R -/Annots [ 1024 0 R 1025 0 R ] +/Parent 980 0 R +/Annots [ 1027 0 R 1028 0 R ] >> -% 1024 0 obj +% 1027 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [352.861 524.509 359.835 537.101] +/Rect [326.584 524.509 333.459 537.101] /A << /S /GoTo /D (section.1) >> >> -% 1025 0 obj +% 1028 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.147 314.537 193.12 327.129] +/Rect [477.57 326.492 484.444 338.552] /A << /S /GoTo /D (section.1) >> >> -% 1029 0 obj +% 1032 0 obj << -/D [1027 0 R /XYZ 149.705 753.953 null] +/D [1030 0 R /XYZ 149.705 753.953 null] >> % 43 0 obj << -/D [1027 0 R /XYZ 150.705 716.092 null] +/D [1030 0 R /XYZ 150.705 716.092 null] >> % 47 0 obj << -/D [1027 0 R /XYZ 150.705 696.532 null] +/D [1030 0 R /XYZ 150.705 696.532 null] >> % 51 0 obj << -/D [1027 0 R /XYZ 150.705 498.276 null] +/D [1030 0 R /XYZ 150.705 498.276 null] >> % 55 0 obj << -/D [1027 0 R /XYZ 150.705 288.305 null] +/D [1030 0 R /XYZ 150.705 288.305 null] >> -% 1026 0 obj +% 1029 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1031 0 obj +% 1034 0 obj << /Type /Page -/Contents 1032 0 R -/Resources 1030 0 R +/Contents 1035 0 R +/Resources 1033 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1034 0 R +/Parent 1037 0 R >> -% 1033 0 obj +% 1036 0 obj << -/D [1031 0 R /XYZ 98.895 753.953 null] +/D [1034 0 R /XYZ 98.895 753.953 null] >> % 59 0 obj << -/D [1031 0 R /XYZ 99.895 716.092 null] +/D [1034 0 R /XYZ 99.895 716.092 null] >> % 63 0 obj << -/D [1031 0 R /XYZ 99.895 529.559 null] +/D [1034 0 R /XYZ 99.895 529.559 null] >> % 67 0 obj << -/D [1031 0 R /XYZ 99.895 276.666 null] +/D [1034 0 R /XYZ 99.895 276.666 null] >> -% 1030 0 obj +% 1033 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1036 0 obj +% 1039 0 obj << /Type /Page -/Contents 1037 0 R -/Resources 1035 0 R +/Contents 1040 0 R +/Resources 1038 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1034 0 R +/Parent 1037 0 R >> -% 1038 0 obj +% 1041 0 obj << -/D [1036 0 R /XYZ 149.705 753.953 null] +/D [1039 0 R /XYZ 149.705 753.953 null] >> % 71 0 obj << -/D [1036 0 R /XYZ 150.705 716.092 null] +/D [1039 0 R /XYZ 150.705 716.092 null] >> % 75 0 obj << -/D [1036 0 R /XYZ 150.705 519.544 null] +/D [1039 0 R /XYZ 150.705 519.544 null] >> -% 1039 0 obj +% 1042 0 obj << -/D [1036 0 R /XYZ 397.537 356.277 null] +/D [1039 0 R /XYZ 394.97 356.277 null] >> % 79 0 obj << -/D [1036 0 R /XYZ 150.705 305.6 null] +/D [1039 0 R /XYZ 150.705 305.6 null] >> % 83 0 obj << -/D [1036 0 R /XYZ 150.705 194.578 null] +/D [1039 0 R /XYZ 150.705 194.578 null] >> -% 1035 0 obj +% 1038 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1041 0 obj +% 1044 0 obj << /Type /Page -/Contents 1042 0 R -/Resources 1040 0 R +/Contents 1045 0 R +/Resources 1043 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1034 0 R +/Parent 1037 0 R >> -% 1043 0 obj +% 1046 0 obj << -/D [1041 0 R /XYZ 98.895 753.953 null] +/D [1044 0 R /XYZ 98.895 753.953 null] >> % 87 0 obj << -/D [1041 0 R /XYZ 99.895 583.842 null] +/D [1044 0 R /XYZ 99.895 583.842 null] >> % 91 0 obj << -/D [1041 0 R /XYZ 99.895 466.211 null] +/D [1044 0 R /XYZ 99.895 466.211 null] >> % 95 0 obj << -/D [1041 0 R /XYZ 99.895 256.035 null] +/D [1044 0 R /XYZ 99.895 256.035 null] >> -% 1040 0 obj +% 1043 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1048 0 obj +% 1051 0 obj << /Type /Page -/Contents 1049 0 R -/Resources 1047 0 R +/Contents 1052 0 R +/Resources 1050 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1034 0 R -/Annots [ 1044 0 R 1045 0 R 1046 0 R ] +/Parent 1037 0 R +/Annots [ 1047 0 R 1048 0 R 1049 0 R ] >> -% 1044 0 obj +% 1047 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [187.544 240.393 199.499 249.399] +/Rect [186.443 240.393 198.399 249.399] /A << /S /GoTo /D (cite.DesignPatterns) >> >> -% 1045 0 obj +% 1048 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [267.981 240.293 279.936 249.399] +/Rect [265.293 240.293 277.248 249.399] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 1046 0 obj +% 1049 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [458.483 237.643 465.457 249.703] +/Rect [451.809 237.643 458.683 249.703] /A << /S /GoTo /D (listing.2) >> >> -% 1050 0 obj +% 1053 0 obj << -/D [1048 0 R /XYZ 149.705 753.953 null] +/D [1051 0 R /XYZ 149.705 753.953 null] >> % 99 0 obj << -/D [1048 0 R /XYZ 150.705 544.277 null] +/D [1051 0 R /XYZ 150.705 544.277 null] >> % 103 0 obj << -/D [1048 0 R /XYZ 150.705 296.936 null] +/D [1051 0 R /XYZ 150.705 296.936 null] >> -% 1051 0 obj +% 1054 0 obj << -/D [1048 0 R /XYZ 170.328 265.359 null] +/D [1051 0 R /XYZ 169.907 265.359 null] >> -% 1047 0 obj +% 1050 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1055 0 obj +% 1058 0 obj << /Type /Page -/Contents 1056 0 R -/Resources 1054 0 R +/Contents 1059 0 R +/Resources 1057 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1034 0 R +/Parent 1037 0 R >> -% 1057 0 obj +% 1060 0 obj << -/D [1055 0 R /XYZ 98.895 753.953 null] +/D [1058 0 R /XYZ 98.895 753.953 null] >> -% 1053 0 obj +% 1056 0 obj << -/D [1055 0 R /XYZ 99.895 665.282 null] +/D [1058 0 R /XYZ 99.895 665.282 null] >> -% 1058 0 obj +% 1061 0 obj << -/D [1055 0 R /XYZ 409.052 603.446 null] +/D [1058 0 R /XYZ 403.329 603.446 null] >> % 107 0 obj << -/D [1055 0 R /XYZ 99.895 294.773 null] +/D [1058 0 R /XYZ 99.895 294.773 null] >> % 111 0 obj << -/D [1055 0 R /XYZ 99.895 276.048 null] +/D [1058 0 R /XYZ 99.895 276.048 null] >> -% 1054 0 obj +% 1057 0 obj << -/Font << /F102 1022 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R /F131 921 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1060 0 obj +% 1063 0 obj << /Type /Page -/Contents 1061 0 R -/Resources 1059 0 R +/Contents 1064 0 R +/Resources 1062 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1034 0 R +/Parent 1037 0 R >> -% 1062 0 obj +% 1065 0 obj << -/D [1060 0 R /XYZ 149.705 753.953 null] +/D [1063 0 R /XYZ 149.705 753.953 null] >> % 115 0 obj << -/D [1060 0 R /XYZ 150.705 716.092 null] ->> -% 119 0 obj -<< -/D [1060 0 R /XYZ 150.705 540.892 null] +/D [1063 0 R /XYZ 150.705 716.092 null] >> endstream endobj -1067 0 obj +1070 0 obj << -/Length 4447 +/Length 4545 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.2.6)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(sparse)-250(matrix)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(3.2.6)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -20.135 Td [(memory_size)-525(=)-525(a%sizeof\050\051)]TJ +/F131 9.9626 Tf 0 -20.135 Td [(memory_size)-525(=)-525(a%sizeof\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -23.732 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -23.732 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.343 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.343 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -35.687 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.343 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F59 9.9626 Tf -72.777 -30.58 Td [(3.2.7)-1000(get)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F75 9.9626 Tf -72.468 -30.58 Td [(3.2.7)-1000(get)]TJ ET q 1 0 0 1 144.219 517.21 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 517.011 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ +/F75 9.9626 Tf 147.208 517.011 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -47.313 -20.135 Td [(write)]TJ +/F131 9.9626 Tf -47.574 -20.135 Td [(write)]TJ 0 g 0 G [(\050)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -8027,50 +8024,50 @@ BT 0 g 0 G [-525(a%get_fmt\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0.261 -24.336 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.343 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.343 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -35.686 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.343 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)-244(short)-245(string)-244(describing)-245(the)-244(dynamic)-245(type)-244(of)-245(the)-244(matrix.)-308(Pr)18(e-)]TJ -47.87 -11.955 Td [(de\002ned)-250(values)-250(include)]TJ +/F84 9.9626 Tf 1.006 0 0 1 172.283 357.869 Tm [(A)-249(short)-249(string)-249(describing)-249(the)-249(dynamic)-249(typ)1(e)-249(of)-249(the)-249(matrix.)-310(Pr)18(e-)]TJ 1 0 0 1 124.802 345.914 Tm [(de\002ned)-250(values)-250(include)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 102.415 0 Td [(NULL)]TJ +/F131 9.9626 Tf 102.415 0 Td [(NULL)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(COO)]TJ/F62 9.9626 Tf 15.691 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(CSR)]TJ/F62 9.9626 Tf 18.181 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(CSC)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ/F59 9.9626 Tf -227.127 -30.581 Td [(3.2.8)-1000(is)]TJ +/F84 9.9626 Tf 20.921 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(COO)]TJ/F84 9.9626 Tf 15.691 0 Td [(,)]TJ/F131 9.9626 Tf 4.982 0 Td [(CSR)]TJ/F84 9.9626 Tf 18.181 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(CSC)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ/F75 9.9626 Tf -227.127 -30.581 Td [(3.2.8)-1000(is)]TJ ET q 1 0 0 1 138.122 315.533 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 141.111 315.333 Td [(bld,)-250(is)]TJ +/F75 9.9626 Tf 141.111 315.333 Td [(bld,)-250(is)]TJ ET q 1 0 0 1 169.922 315.533 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 172.911 315.333 Td [(upd,)-250(is)]TJ +/F75 9.9626 Tf 172.911 315.333 Td [(upd,)-250(is)]TJ ET q 1 0 0 1 204.493 315.533 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 207.482 315.333 Td [(asb)-250(\227)-250(Status)-250(check)]TJ +/F75 9.9626 Tf 207.482 315.333 Td [(asb)-250(\227)-250(Status)-250(check)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -107.587 -20.135 Td [(if)]TJ +/F131 9.9626 Tf -107.587 -20.135 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -8103,27 +8100,27 @@ BT [-525(then)]TJ 0 g 0 G 0 g 0 G -/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.343 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.343 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -35.686 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.343 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)]TJ +/F84 9.9626 Tf 0.995 0 0 1 172.283 132.281 Tm [(A)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 9.966 0 Td [(logical)]TJ +/F131 9.9626 Tf 1 0 0 1 182.48 132.281 Tm [(logical)]TJ 0 g 0 G -/F62 9.9626 Tf 38.827 0 Td [(value)-222(indicating)-223(whether)-222(the)-222(matrix)-223(is)-222(in)-222(the)-223(Build,)]TJ -96.663 -11.955 Td [(Update)-250(or)-250(Assembled)-250(state,)-250(r)18(espectively)111(.)]TJ +/F84 9.9626 Tf 0.995 0 0 1 221.577 132.281 Tm [(value)-251(indicating)-250(whether)-251(the)-250(matrix)-251(is)-251(in)-250(the)-251(Build,)]TJ 1 0 0 1 124.802 120.326 Tm [(Update)-250(or)-250(Assembled)-250(state,)-250(r)18(espectively)111(.)]TJ 0 g 0 G 141.968 -29.888 Td [(19)]TJ 0 g 0 G @@ -8131,45 +8128,45 @@ ET endstream endobj -1072 0 obj +1075 0 obj << -/Length 5883 +/Length 6066 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.9)-1000(is)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.9)-1000(is)]TJ ET q 1 0 0 1 188.931 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 191.92 706.129 Td [(lower)55(,)-250(is)]TJ +/F75 9.9626 Tf 191.92 706.129 Td [(lower)55(,)-250(is)]TJ ET q 1 0 0 1 230.704 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 233.693 706.129 Td [(upper)55(,)-250(is)]TJ +/F75 9.9626 Tf 233.693 706.129 Td [(upper)55(,)-250(is)]TJ ET q 1 0 0 1 273.583 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 276.572 706.129 Td [(triangle,)-250(is)]TJ +/F75 9.9626 Tf 276.572 706.129 Td [(triangle,)-250(is)]TJ ET q 1 0 0 1 325.309 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 328.298 706.129 Td [(unit)-250(\227)-250(Format)-250(check)]TJ +/F75 9.9626 Tf 328.298 706.129 Td [(unit)-250(\227)-250(Format)-250(check)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -177.593 -19.573 Td [(if)]TJ +/F131 9.9626 Tf -177.593 -19.573 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -8213,29 +8210,29 @@ BT [-525(then)]TJ 0 g 0 G 0 g 0 G -/F59 9.9626 Tf 0 -22.86 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.86 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.183 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -21.183 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.183 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ 0 g 0 G -56.338 -34.816 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.183 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)]TJ +/F84 9.9626 Tf 0.982 0 0 1 223.093 517.51 Tm [(A)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 10.803 0 Td [(logical)]TJ +/F131 9.9626 Tf 1 0 0 1 233.202 517.51 Tm [(logical)]TJ 0 g 0 G -/F62 9.9626 Tf 39.665 0 Td [(value)-306(indicating)-307(whether)-306(the)-307(matrix)-306(is)-306(triangular;)]TJ -98.338 -11.955 Td [(if)]TJ/F67 9.9626 Tf 8.595 0 Td [(is_triangle\050\051)]TJ/F62 9.9626 Tf 70.373 0 Td [(r)18(eturns)]TJ/F67 9.9626 Tf 34.119 0 Td [(.true.)]TJ/F62 9.9626 Tf 33.761 0 Td [(check)-239(also)-238(if)-239(it)-239(is)-239(lower)74(,)-241(upper)-238(and)-239(with)]TJ -146.848 -11.955 Td [(a)-250(unit)-250(\050i.e.)-310(assumed\051)-250(diagonal.)]TJ/F59 9.9626 Tf -24.907 -28.929 Td [(3.2.10)-1000(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(ferent)-250(storage)-250(format)]TJ +/F84 9.9626 Tf 0.982 0 0 1 272.312 517.51 Tm [(value)-255(indicating)-256(whether)-255(the)-255(matrix)-255(is)-256(triangular;)-255(if)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 505.555 Tm [(is_triangle\050\051)]TJ/F84 9.9626 Tf 70.478 0 Td [(r)18(eturns)]TJ/F131 9.9626 Tf 34.224 0 Td [(.true.)]TJ/F84 9.9626 Tf 33.866 0 Td [(check)-249(also)-249(if)-250(it)-249(is)-249(lower)74(,)-250(upper)-249(and)-249(with)-249(a)]TJ -138.568 -11.955 Td [(unit)-250(\050i.e.)-310(assumed\051)-250(diagonal.)]TJ/F75 9.9626 Tf -24.906 -28.929 Td [(3.2.10)-1000(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(ferent)-250(storage)-250(format)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -19.573 Td [(call)]TJ +/F131 9.9626 Tf 0 -19.573 Td [(call)]TJ 0 g 0 G [-1050(a%cscnv\050b,info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8273,43 +8270,43 @@ BT 0 g 0 G [-525(dupl]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.861 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.861 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.183 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -21.183 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.183 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.077 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.556 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.69 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.138 Td [(type)]TJ +/F75 9.9626 Tf -77.917 -33.138 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.906 0 Td [(a)-250(string)-250(r)18(equesting)-250(a)-250(new)-250(format.)]TJ 0.001 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 24.906 0 Td [(a)-250(string)-250(r)18(equesting)-250(a)-250(new)-250(format.)]TJ -0.308 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.183 Td [(mold)]TJ +/F75 9.9626 Tf -24.598 -21.183 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(a)-236(variable)-236(of)]TJ +/F84 9.9626 Tf 0.994 0 0 1 179.487 277.73 Tm [(a)-251(variable)-251(o)1(f)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 56.403 0 Td [(class)]TJ +/F131 9.9626 Tf 1 0 0 1 235.985 277.73 Tm [(class)]TJ 0 g 0 G - [(\050psb_T_base_sparse_mat\051)]TJ/F62 9.9626 Tf 148.803 0 Td [(r)18(equesting)-236(a)-236(new)-237(format)1(.)]TJ -209.081 -11.955 Td [(T)90(ype:)-310(optional.)]TJ + [(\050psb_T_base_sparse_mat\051)]TJ/F84 9.9626 Tf 0.994 0 0 1 384.919 277.73 Tm [(r)18(equesting)-251(a)-250(new)-251(format.)]TJ 1 0 0 1 175.303 265.775 Tm [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.182 Td [(dupl)]TJ +/F75 9.9626 Tf -24.598 -21.182 Td [(dupl)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(an)-359(integer)-358(value)-359(speci\002ng)-358(how)-359(to)-359(handle)-358(duplicates)-359(\050see)-359(Named)-358(Con-)]TJ -1.653 -11.956 Td [(stants)-250(below\051)]TJ +/F84 9.9626 Tf 0.98 0 0 1 177.265 244.593 Tm [(an)-199(integer)-198(value)-199(speci\002ng)-199(how)-198(to)-199(handle)-199(duplicates)-198(\050see)-199(Named)-199(Constants)]TJ 1 0 0 1 175.611 232.637 Tm [(below\051)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.861 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.86 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -21.182 Td [(b,a)]TJ + 0 -21.183 Td [(b,a)]TJ 0 g 0 G -/F62 9.9626 Tf 18.54 0 Td [(A)-250(copy)-250(of)]TJ/F67 9.9626 Tf 45.37 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(with)-250(a)-250(new)-250(storage)-250(format.)]TJ -46.724 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.456 0 Td [(.)]TJ +/F84 9.9626 Tf 18.152 0 Td [(A)-250(copy)-250(of)]TJ/F131 9.9626 Tf 45.369 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(with)-250(a)-250(new)-250(storage)-250(format.)]TJ -46.724 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -21.183 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -21.183 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ -23.801 -23.175 Td [(The)]TJ/F67 9.9626 Tf 19.584 0 Td [(mold)]TJ/F62 9.9626 Tf 23.827 0 Td [(ar)18(guments)-292(may)-291(be)-292(employed)-292(to)-292(interface)-291(with)-292(special)-292(devices,)-302(such)]TJ -43.411 -11.955 Td [(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ 0.98 0 0 1 150.396 132.281 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.17 132.281 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 192.522 132.281 Tm [(ar)18(guments)-249(may)-249(be)-248(employed)-249(to)-249(interface)-249(with)-249(special)-249(devices,)-250(such)-249(as)]TJ 1 0 0 1 150.705 120.326 Tm [(GPUs)-250(and)-250(other)-250(accelerators.)]TJ 0 g 0 G 166.874 -29.888 Td [(20)]TJ 0 g 0 G @@ -8317,19 +8314,19 @@ ET endstream endobj -1076 0 obj +1079 0 obj << -/Length 4616 +/Length 4707 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.2.11)-1000(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(3.2.11)-1000(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.922 -20.279 Td [(call)]TJ +/F131 9.9626 Tf 20.922 -20.279 Td [(call)]TJ 0 g 0 G [-525(a%csclip\050b,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8337,9 +8334,9 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F62 9.9626 Tf -21.669 -24.631 Td [(Returns)-190(the)-190(submatrix)]TJ/F67 9.9626 Tf 98.878 0 Td [(A\050imin:imax,jmin:jmax\051)]TJ/F62 9.9626 Tf 115.068 0 Td [(,)-202(optionally)-190(r)18(escaling)-190(r)18(ow/-)]TJ -228.89 -11.955 Td [(col)-250(indices)-250(to)-250(the)-250(range)]TJ + [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 649.264 Tm [(Returns)-212(the)-213(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 212.397 649.264 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.465 649.264 Tm [(,)-221(optionally)-212(r)18(escaling)-212(r)18(ow/-)]TJ 1 0 0 1 99.895 637.309 Tm [(col)-250(indices)-250(to)-250(the)-250(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf 103.85 0 Td [(1)]TJ +/F131 9.9626 Tf 103.85 0 Td [(1)]TJ 0 g 0 G [(:imax)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -8367,70 +8364,70 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 141.219 0 Td [(.)]TJ +/F84 9.9626 Tf 141.219 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -245.069 -21.961 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -245.069 -21.961 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.638 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.638 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.639 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -34.594 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -77.918 -34.593 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G -/F62 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -74.978 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.956 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.638 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -22.638 Td [(rscale,cscale)]TJ 0 g 0 G -/F62 9.9626 Tf 60.025 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -60.025 -24.632 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -24.632 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.639 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F67 9.9626 Tf 111.321 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -102.713 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F131 9.9626 Tf 111.322 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -102.714 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -22.639 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -22.639 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.801 -31 Td [(3.2.12)-1000(clean)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -31 Td [(3.2.12)-1000(clean)]TJ ET q 1 0 0 1 159.153 364.307 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 162.142 364.108 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ +/F75 9.9626 Tf 162.142 364.108 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -62.247 -20.278 Td [(call)]TJ +/F131 9.9626 Tf -62.247 -20.278 Td [(call)]TJ 0 g 0 G - [-525(a%clean_zeros\050info\051)]TJ/F62 9.9626 Tf 14.944 -12.634 Td [(Eliminates)-214(zer)18(o)-214(coef)18(\002cients)-214(in)-214(the)-214(input)-214(matrix.)-298(Note)-214(that)-214(depending)-214(on)-214(the)]TJ -14.944 -11.955 Td [(internal)-246(storage)-245(format,)-247(ther)18(e)-245(may)-246(still)-245(be)-246(some)-245(amount)-246(of)-246(ze)1(r)18(o)-246(padding)-246(in)-245(the)]TJ 0 -11.955 Td [(output.)]TJ + [-525(a%clean_zeros\050info\051)]TJ/F84 9.9626 Tf 0.988 0 0 1 114.839 331.196 Tm [(Eliminates)-253(zer)19(o)-253(coef)18(\002cients)-252(in)-253(the)-253(input)-252(matrix.)-314(Note)-252(that)-253(depending)-252(on)-253(the)]TJ 0.998 0 0 1 99.895 319.241 Tm [(internal)-251(storage)-251(format,)-251(ther)18(e)-251(may)-251(still)-251(be)-251(some)-251(amount)-251(of)-251(ze)1(r)18(o)-251(padding)-251(in)-251(the)]TJ 1 0 0 1 99.895 307.286 Tm [(output.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -24.632 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -24.632 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.638 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.638 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.639 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -35.908 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -35.908 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.638 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(matrix)]TJ/F67 9.9626 Tf 50.659 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.436 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(matrix)]TJ/F131 9.9626 Tf 50.66 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.517 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -22.638 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -22.638 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ 0 g 0 G 143.074 -29.888 Td [(21)]TJ 0 g 0 G @@ -8438,85 +8435,85 @@ ET endstream endobj -1080 0 obj +1083 0 obj << -/Length 4627 +/Length 4703 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.13)-1000(get)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.13)-1000(get)]TJ ET q 1 0 0 1 200.01 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.999 706.129 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ +/F75 9.9626 Tf 202.999 706.129 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -52.294 -19.329 Td [(call)]TJ +/F131 9.9626 Tf -52.294 -19.329 Td [(call)]TJ 0 g 0 G - [-525(a%get_diag\050d,info\051)]TJ/F62 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ + [-525(a%get_diag\050d,info\051)]TJ/F84 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -20.49 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -20.49 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.679 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.679 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.077 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(d)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(A)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ 13.839 -11.955 Td [(A)-250(one-dimensional)-250(array)-250(of)-250(the)-250(appr)18(opriate)-250(type.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ 13.838 -11.955 Td [(A)-250(one-dimensional)-250(array)-250(of)-250(the)-250(appr)18(opriate)-250(type.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.679 Td [(info)]TJ +/F75 9.9626 Tf -24.518 -20.679 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -28.213 Td [(3.2.14)-1000(clip)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -28.213 Td [(3.2.14)-1000(clip)]TJ ET q 1 0 0 1 203.317 472.944 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 206.306 472.745 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ +/F75 9.9626 Tf 206.306 472.745 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -55.601 -19.329 Td [(call)]TJ +/F131 9.9626 Tf -55.601 -19.329 Td [(call)]TJ 0 g 0 G - [-525(a%clip_diag\050b,info\051)]TJ/F62 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)]TJ/F67 9.9626 Tf 79.73 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ + [-525(a%clip_diag\050b,info\051)]TJ/F84 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)]TJ/F131 9.9626 Tf 79.73 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ 0 g 0 G -/F59 9.9626 Tf -102.395 -20.49 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -102.395 -20.49 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.679 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.679 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.077 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(A)-250(copy)-250(of)]TJ/F67 9.9626 Tf 45.37 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ -39.252 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)]TJ/F131 9.9626 Tf 45.369 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ -39.252 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.984 -20.679 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -20.679 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -28.213 Td [(3.2.15)-1000(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -28.213 Td [(3.2.15)-1000(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.921 -19.329 Td [(call)]TJ +/F131 9.9626 Tf 20.921 -19.329 Td [(call)]TJ 0 g 0 G [-525(a%tril\050l,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8524,9 +8521,9 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(diag,imin,imax,jmin,jmax,rscale,cscale,u]\051)]TJ/F62 9.9626 Tf -21.668 -22.671 Td [(Returns)-309(the)-308(lower)-309(triangular)-308(part)-309(of)-309(submatrix)]TJ/F67 9.9626 Tf 211.209 0 Td [(A\050imin:imax,jmin:jmax\051)]TJ/F62 9.9626 Tf 115.067 0 Td [(,)]TJ -341.22 -11.956 Td [(optionally)-190(r)18(escaling)-190(r)18(ow/col)-190(indices)-190(to)-190(the)-190(range)]TJ + [-525(diag,imin,imax,jmin,jmax,rscale,cscale,u]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 185.405 Tm [(Returns)-266(the)-266(lower)-266(triangular)-266(part)-266(of)-266(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 378.053 185.405 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 185.405 Tm [(,)]TJ 0.98 0 0 1 150.705 173.45 Tm [(optionally)-194(r)19(escaling)-194(r)18(ow/col)-194(indices)-194(to)-193(the)-194(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf 212.61 0 Td [(1)]TJ +/F131 9.9626 Tf 1 0 0 1 359.321 173.45 Tm [(1)]TJ 0 g 0 G [(:imax)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -8554,78 +8551,78 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf -212.61 -11.955 Td [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(upper)-250(triangle.)]TJ +/F84 9.9626 Tf -208.616 -11.955 Td [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(upper)-250(triangle.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.49 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.49 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.679 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.679 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.874 -29.888 Td [(22)]TJ +/F84 9.9626 Tf 166.874 -29.888 Td [(22)]TJ 0 g 0 G ET endstream endobj -1084 0 obj +1087 0 obj << -/Length 6324 +/Length 6539 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(a)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ +/F75 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ 0 g 0 G -/F62 9.9626 Tf 24.907 0 Td [(Include)-300(diagonals)-301(up)-300(to)-301(this)-300(one;)]TJ/F67 9.9626 Tf 149.76 0 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 124.802 651.513 Tm [(Include)-258(diagonals)-258(up)-258(to)-258(this)-258(one;)]TJ/F131 9.9626 Tf 1 0 0 1 274.777 651.513 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 34.376 0 Td [(means)-300(the)-301(\002rst)-300(super)18(diagonal,)]TJ/F67 9.9626 Tf -184.136 -11.955 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 308.781 651.513 Tm [(means)-258(the)-258(\002rst)-258(super)18(diagonal,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 639.558 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=-)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ +/F84 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G -/F62 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -74.978 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.75 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -18.75 Td [(rscale,cscale)]TJ 0 g 0 G -/F62 9.9626 Tf 60.025 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -60.025 -18.979 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -18.979 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.75 Td [(l)]TJ 0 g 0 G -/F62 9.9626 Tf 8.299 0 Td [(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 137.333 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -125.956 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 7.911 0 Td [(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 137.333 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -125.956 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.75 Td [(u)]TJ +/F75 9.9626 Tf -184.596 -18.75 Td [(u)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 184.485 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -175.878 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.74 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 184.486 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -175.938 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.749 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -18.749 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.801 -26.59 Td [(3.2.16)-1000(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -26.59 Td [(3.2.16)-1000(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.922 -18.964 Td [(call)]TJ +/F131 9.9626 Tf 20.922 -18.964 Td [(call)]TJ 0 g 0 G [-525(a%triu\050u,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8633,9 +8630,9 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(diag,imin,imax,jmin,jmax,rscale,cscale,l]\051)]TJ/F62 9.9626 Tf -21.669 -18.979 Td [(Returns)-289(the)-290(upper)-289(triangular)-290(part)-289(of)-290(submatrix)]TJ/F67 9.9626 Tf 211.209 0 Td [(A\050imin:imax,jmin:jmax\051)]TJ/F62 9.9626 Tf 115.068 0 Td [(,)]TJ -341.221 -11.955 Td [(optionally)-190(r)18(escaling)-190(r)18(ow/col)-190(indices)-190(to)-190(the)-190(range)]TJ + [-525(diag,imin,imax,jmin,jmax,rscale,cscale,l]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 414.476 Tm [(Returns)-247(the)-247(upper)-247(triangular)-247(part)-246(of)-247(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 327.244 414.476 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.311 414.476 Tm [(,)]TJ 0.98 0 0 1 99.895 402.521 Tm [(optionally)-194(r)19(escaling)-194(r)18(ow/col)-194(indices)-194(to)-194(the)-193(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf 212.611 0 Td [(1)]TJ +/F131 9.9626 Tf 1 0 0 1 308.511 402.521 Tm [(1)]TJ 0 g 0 G [(:imax)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -8663,141 +8660,141 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 141.219 0 Td [(,)]TJ -353.83 -11.956 Td [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(lower)-250(triangle.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 449.73 402.521 Tm [(,)]TJ 1 0 0 1 99.895 390.565 Tm [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(lower)-250(triangle.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -17.574 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -17.574 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -18.75 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -18.75 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -18.75 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ +/F75 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ 0 g 0 G -/F62 9.9626 Tf 24.907 0 Td [(Include)-300(diagonals)-301(up)-300(to)-301(this)-300(one;)]TJ/F67 9.9626 Tf 149.76 0 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 124.802 280.876 Tm [(Include)-258(diagonals)-258(up)-258(to)-258(this)-258(one;)]TJ/F131 9.9626 Tf 1 0 0 1 274.777 280.876 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 34.376 0 Td [(means)-300(the)-301(\002rst)-300(super)18(diagonal,)]TJ/F67 9.9626 Tf -184.136 -11.955 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 308.781 280.876 Tm [(means)-258(the)-258(\002rst)-258(super)18(diagonal,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 268.92 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=-)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ +/F84 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G -/F62 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -74.978 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.75 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -18.75 Td [(rscale,cscale)]TJ 0 g 0 G -/F62 9.9626 Tf 60.025 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -60.025 -18.979 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -18.979 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.75 Td [(u)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 138.668 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -130.06 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 138.668 0 Td [(a)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ -130.061 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.75 Td [(l)]TJ +/F75 9.9626 Tf -184.596 -18.75 Td [(l)]TJ 0 g 0 G -/F62 9.9626 Tf 8.299 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 183.151 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -171.773 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 7.97 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 183.151 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -171.833 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.75 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -18.75 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ 0 g 0 G - 143.074 -29.888 Td [(23)]TJ + 143.073 -29.888 Td [(23)]TJ 0 g 0 G ET endstream endobj -1090 0 obj +1093 0 obj << -/Length 7619 +/Length 7927 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.17)-1000(psb)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.17)-1000(psb)]TJ ET q 1 0 0 1 202.769 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 205.758 706.129 Td [(set)]TJ +/F75 9.9626 Tf 205.758 706.129 Td [(set)]TJ ET q 1 0 0 1 219.078 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 222.067 706.129 Td [(mat)]TJ +/F75 9.9626 Tf 222.067 706.129 Td [(mat)]TJ ET q 1 0 0 1 239.82 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 242.809 706.129 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ +/F75 9.9626 Tf 242.809 706.129 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -92.104 -18.964 Td [(call)]TJ +/F131 9.9626 Tf -92.104 -18.964 Td [(call)]TJ 0 g 0 G [-1050(psb_set_mat_default\050a\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.231 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.231 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.231 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(a)-203(variable)-203(of)]TJ +/F84 9.9626 Tf 0.988 0 0 1 160.667 628.52 Tm [(a)-253(variable)-253(of)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 55.42 0 Td [(class)]TJ +/F131 9.9626 Tf 1 0 0 1 216.887 628.52 Tm [(class)]TJ 0 g 0 G - [(\050psb_T_base_sparse_mat\051)]TJ/F62 9.9626 Tf 148.475 0 Td [(r)18(equesting)-203(a)-204(new)-203(default)-203(stor)18(-)]TJ -188.951 -11.956 Td [(age)-250(format.)]TJ 0 -11.955 Td [(T)90(ype:)-310(r)18(equir)18(ed.)]TJ/F59 9.9626 Tf -24.907 -26.815 Td [(3.2.18)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ + [(\050psb_T_base_sparse_mat\051)]TJ/F84 9.9626 Tf 0.988 0 0 1 365.826 628.52 Tm [(r)18(equesting)-253(a)-253(new)-252(default)-253(stor)18(-)]TJ 1 0 0 1 175.611 616.564 Tm [(age)-250(format.)]TJ -0.308 -11.955 Td [(T)90(ype:)-310(r)18(equir)18(ed.)]TJ/F75 9.9626 Tf -24.598 -26.815 Td [(3.2.18)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -18.964 Td [(call)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)]TJ 0 g 0 G [-1050(a%clone\050b,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.231 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.231 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.231 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -32.138 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -32.138 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.232 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -/F59 9.9626 Tf -11.068 -19.231 Td [(info)]TJ +/F75 9.9626 Tf -10.68 -19.231 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -26.815 Td [(3.2.19)-1000(Named)-250(Constants)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -26.815 Td [(3.2.19)-1000(Named)-250(Constants)]TJ 0 g 0 G 0 -18.964 Td [(psb)]TJ ET @@ -8806,14 +8803,14 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 371.85 Td [(dupl)]TJ +/F75 9.9626 Tf 170.889 371.85 Td [(dupl)]TJ ET q 1 0 0 1 193.066 372.049 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 196.055 371.85 Td [(ovwrt)]TJ +/F75 9.9626 Tf 196.055 371.85 Td [(ovwrt)]TJ ET q 1 0 0 1 223.222 372.049 cm @@ -8821,23 +8818,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 231.193 371.85 Td [(Duplicate)-259(coef)18(\002cients)-259(shou)1(ld)-259(be)-259(overwritten)-259(\050i.e.)-336(ignor)18(e)-259(du-)]TJ -55.582 -11.955 Td [(plications\051)]TJ +/F84 9.9626 Tf 1.01 0 0 1 231.193 371.85 Tm [(Duplicate)-247(coef)17(\002)1(cients)-248(should)-247(be)-248(overwritten)-247(\050i.e.)-307(ignor)18(e)-248(du-)]TJ 1 0 0 1 175.313 359.895 Tm [(plications\051)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.231 Td [(psb)]TJ +/F75 9.9626 Tf -24.608 -19.231 Td [(psb)]TJ ET q 1 0 0 1 167.9 340.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 340.664 Td [(dupl)]TJ +/F75 9.9626 Tf 170.889 340.664 Td [(dupl)]TJ ET q 1 0 0 1 193.066 340.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 196.055 340.664 Td [(add)]TJ +/F75 9.9626 Tf 196.055 340.664 Td [(add)]TJ ET q 1 0 0 1 213.808 340.863 cm @@ -8845,23 +8842,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 221.778 340.664 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(be)-250(added;)]TJ +/F84 9.9626 Tf 221.778 340.664 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(be)-250(added;)]TJ 0 g 0 G -/F59 9.9626 Tf -71.073 -19.232 Td [(psb)]TJ +/F75 9.9626 Tf -71.073 -19.232 Td [(psb)]TJ ET q 1 0 0 1 167.9 321.632 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 321.432 Td [(dupl)]TJ +/F75 9.9626 Tf 170.889 321.432 Td [(dupl)]TJ ET q 1 0 0 1 193.066 321.632 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 196.055 321.432 Td [(err)]TJ +/F75 9.9626 Tf 196.055 321.432 Td [(err)]TJ ET q 1 0 0 1 209.384 321.632 cm @@ -8869,23 +8866,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 217.355 321.432 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(trigger)-250(an)-250(err)18(or)-250(conditino)]TJ +/F84 9.9626 Tf 217.355 321.432 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(trigger)-250(an)-250(err)18(or)-250(conditino)]TJ 0 g 0 G -/F59 9.9626 Tf -66.65 -19.231 Td [(psb)]TJ +/F75 9.9626 Tf -66.65 -19.231 Td [(psb)]TJ ET q 1 0 0 1 167.9 302.4 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 302.201 Td [(upd)]TJ +/F75 9.9626 Tf 170.889 302.201 Td [(upd)]TJ ET q 1 0 0 1 189.748 302.4 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 192.737 302.201 Td [(d\003t)]TJ +/F75 9.9626 Tf 192.737 302.201 Td [(d\003t)]TJ ET q 1 0 0 1 208.827 302.4 cm @@ -8893,23 +8890,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 216.797 302.201 Td [(Default)-250(update)-250(strategy)-250(for)-250(matrix)-250(coef)18(\002cients;)]TJ +/F84 9.9626 Tf 216.797 302.201 Td [(Default)-250(update)-250(strategy)-250(for)-250(matrix)-250(coef)18(\002cients;)]TJ 0 g 0 G -/F59 9.9626 Tf -66.092 -19.231 Td [(psb)]TJ +/F75 9.9626 Tf -66.092 -19.231 Td [(psb)]TJ ET q 1 0 0 1 167.9 283.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 282.97 Td [(upd)]TJ +/F75 9.9626 Tf 170.889 282.97 Td [(upd)]TJ ET q 1 0 0 1 189.748 283.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 192.737 282.97 Td [(srch)]TJ +/F75 9.9626 Tf 192.737 282.97 Td [(srch)]TJ ET q 1 0 0 1 212.144 283.169 cm @@ -8917,23 +8914,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 220.114 282.97 Td [(Update)-250(strategy)-250(based)-250(on)-250(sear)18(ch)-250(into)-250(the)-250(data)-250(str)8(uctur)18(e;)]TJ +/F84 9.9626 Tf 220.114 282.97 Td [(Update)-250(strategy)-250(based)-250(on)-250(sear)18(ch)-250(into)-250(the)-250(data)-250(str)8(uctur)18(e;)]TJ 0 g 0 G -/F59 9.9626 Tf -69.409 -19.232 Td [(psb)]TJ +/F75 9.9626 Tf -69.409 -19.232 Td [(psb)]TJ ET q 1 0 0 1 167.9 263.938 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 263.738 Td [(upd)]TJ +/F75 9.9626 Tf 170.889 263.738 Td [(upd)]TJ ET q 1 0 0 1 189.748 263.938 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 192.737 263.738 Td [(perm)]TJ +/F75 9.9626 Tf 192.737 263.738 Td [(perm)]TJ ET q 1 0 0 1 217.135 263.938 cm @@ -8941,64 +8938,64 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 225.106 263.738 Td [(Update)-392(strategy)-393(based)-392(on)-393(additional)-392(permutation)-393(data)-392(\050see)]TJ -49.495 -11.955 Td [(tools)-250(r)18(outine)-250(description\051.)]TJ/F59 11.9552 Tf -24.906 -28.807 Td [(3.3)-1000(Dense)-250(V)111(ector)-250(Data)-250(Structure)]TJ/F62 9.9626 Tf 0 -18.964 Td [(The)]TJ/F67 9.9626 Tf 20.094 0 Td [(psb)]TJ +/F84 9.9626 Tf 1.02 0 0 1 225.106 263.738 Tm [(Update)-317(strategy)-316(based)-317(on)-317(additional)-317(permutation)-316(data)-317(\050see)]TJ 1 0 0 1 175.611 251.783 Tm [(tools)-250(r)18(outine)-250(description\051.)]TJ/F75 11.9552 Tf -24.906 -28.807 Td [(3.3)-1000(Dense)-250(V)111(ector)-250(Data)-250(Structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 204.012 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 170.422 204.012 Tm [(psb)]TJ ET q -1 0 0 1 187.117 204.211 cm +1 0 0 1 186.74 204.211 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 190.255 204.012 Td [(T)]TJ +/F131 9.9626 Tf 189.878 204.012 Td [(T)]TJ ET q -1 0 0 1 196.113 204.211 cm +1 0 0 1 195.736 204.211 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 199.252 204.012 Td [(vect)]TJ +/F131 9.9626 Tf 198.875 204.012 Td [(vect)]TJ ET q -1 0 0 1 220.801 204.211 cm +1 0 0 1 220.424 204.211 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 223.939 204.012 Td [(type)]TJ/F62 9.9626 Tf 24.338 0 Td [(data)-343(str)8(uctur)18(e)-343(encapsulates)-343(the)-343(dense)-343(vectors)-342(in)-343(a)-343(way)]TJ -97.572 -11.955 Td [(similar)-368(to)-368(sparse)-368(matrices,)-397(i.e.)-664(including)-368(a)-368(base)-368(type)]TJ/F67 9.9626 Tf 242.472 0 Td [(psb)]TJ +/F131 9.9626 Tf 223.562 204.012 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 247.498 204.012 Tm [(data)-297(str)8(uctur)18(e)-297(encapsulates)-296(the)-297(dense)-297(vectors)-296(in)-297(a)-297(way)]TJ 0.98 0 0 1 150.705 192.057 Tm [(similar)-230(to)-231(sparse)-230(matrices,)-236(i.e.)-308(including)-230(a)-231(base)-230(type)]TJ/F131 9.9626 Tf 1 0 0 1 373.874 192.057 Tm [(psb)]TJ ET q -1 0 0 1 409.495 192.256 cm +1 0 0 1 390.193 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 412.633 192.057 Td [(T)]TJ +/F131 9.9626 Tf 393.331 192.057 Td [(T)]TJ ET q -1 0 0 1 418.491 192.256 cm +1 0 0 1 399.189 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 421.63 192.057 Td [(base)]TJ +/F131 9.9626 Tf 402.327 192.057 Td [(base)]TJ ET q -1 0 0 1 443.178 192.256 cm +1 0 0 1 423.876 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 446.317 192.057 Td [(vect)]TJ +/F131 9.9626 Tf 427.015 192.057 Td [(vect)]TJ ET q -1 0 0 1 467.866 192.256 cm +1 0 0 1 448.563 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 471.004 192.057 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -341.22 -11.956 Td [(The)-263(user)-263(will)-263(not,)-266(in)-263(general,)-267(access)-263(the)-263(vector)-263(components)-263(dir)18(ectly)111(,)-266(but)-263(rather)]TJ 0 -11.955 Td [(via)-222(the)-222(r)18(out)1(ines)-222(of)-222(sec.)]TJ +/F131 9.9626 Tf 451.702 192.057 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 472.623 192.057 Tm [(.)-308(The)]TJ 1.016 0 0 1 150.705 180.101 Tm [(user)-245(will)-245(not,)-245(in)-245(general,)-245(access)-245(the)-244(vector)-245(components)-245(dir)18(ectly)109(,)-245(but)-245(rather)-245(via)]TJ 0.994 0 0 1 150.705 168.146 Tm [(the)-252(r)18(outines)-252(of)-253(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-222(6)]TJ + [-252(6)]TJ 0 g 0 G - [(.)-300(Among)-222(other)-222(simple)-222(things,)-227(we)-222(de\002ne)-222(her)18(e)-221(an)-222(extrac-)]TJ 0 -11.955 Td [(tion)-273(method)-274(that)-273(can)-274(be)-273(used)-274(to)-273(get)-274(a)-273(full)-274(copy)-273(of)-274(the)-273(part)-274(of)-273(the)-274(vector)-273(stor)18(ed)]TJ 0 -11.955 Td [(on)-250(the)-250(local)-250(pr)18(ocess.)]TJ 14.944 -11.955 Td [(The)-311(type)-311(declaration)-311(is)-310(shown)-311(in)-311(\002gur)18(e)]TJ + [(.)-314(Among)-252(other)-253(simple)-252(things,)-252(we)-253(de\002ne)-252(her)18(e)-252(an)-252(extraction)]TJ 0.98 0 0 1 150.705 156.191 Tm [(method)-255(that)-254(can)-255(be)-255(used)-254(to)-255(get)-254(a)-255(full)-255(copy)-254(of)-255(the)-255(part)-254(of)-255(the)-255(vector)-254(stor)18(ed)-255(on)-254(the)]TJ 1 0 0 1 150.705 144.236 Tm [(local)-250(pr)18(ocess.)]TJ 1.02 0 0 1 165.649 132.281 Tm [(The)-265(type)-266(declaration)-265(is)-265(shown)-266(in)-265(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-311(3)]TJ + [-266(3)]TJ 0 g 0 G - [-311(wher)18(e)]TJ/F67 9.9626 Tf 217.442 0 Td [(T)]TJ/F62 9.9626 Tf 8.327 0 Td [(is)-311(a)-311(placeholder)-311(for)-310(the)]TJ -240.713 -11.955 Td [(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ + [-265(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 383.282 132.281 Tm [(T)]TJ/F84 9.9626 Tf 1.02 0 0 1 391.209 132.281 Tm [(is)-265(a)-266(placeholder)-265(for)-265(the)]TJ 1 0 0 1 150.705 120.326 Tm [(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ 0 g 0 G 166.874 -29.888 Td [(24)]TJ 0 g 0 G @@ -9006,34 +9003,34 @@ ET endstream endobj -1096 0 obj +1099 0 obj << -/Length 5064 +/Length 5165 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(I)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(I)]TJ 0 g 0 G -/F62 9.9626 Tf 8.857 0 Td [(Integer;)]TJ +/F84 9.9626 Tf 8.857 0 Td [(Integer;)]TJ 0 g 0 G -/F59 9.9626 Tf -8.857 -20.359 Td [(S)]TJ +/F75 9.9626 Tf -8.857 -20.359 Td [(S)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 11.069 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -11.069 -20.358 Td [(D)]TJ +/F75 9.9626 Tf -11.069 -20.358 Td [(D)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 13.281 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -13.281 -20.359 Td [(C)]TJ +/F75 9.9626 Tf -13.281 -20.359 Td [(C)]TJ 0 g 0 G -/F62 9.9626 Tf 12.175 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ +/F84 9.9626 Tf 12.175 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ 0 g 0 G -/F59 9.9626 Tf -12.175 -20.358 Td [(Z)]TJ +/F75 9.9626 Tf -12.175 -20.358 Td [(Z)]TJ 0 g 0 G -/F62 9.9626 Tf 11.627 0 Td [(Double)-250(pr)18(ecision)-250(complex.)]TJ -11.627 -20.251 Td [(The)-209(actual)-208(data)-209(is)-208(contained)-209(in)-209(the)-208(polymorphic)-209(component)]TJ/F67 9.9626 Tf 261.152 0 Td [(v%v)]TJ/F62 9.9626 Tf 15.691 0 Td [(;)-222(the)-209(separation)]TJ -276.843 -11.955 Td [(between)-353(the)-353(application)-353(and)-353(the)-353(actual)-353(data)-353(is)-353(esse)1(ntial)-353(for)-353(cases)-353(wher)18(e)-353(it)-353(is)]TJ 0 -11.955 Td [(necessary)-321(to)-321(link)-320(to)-321(data)-321(storage)-321(made)-320(available)-321(elsewher)18(e)-321(outside)-320(the)-321(dir)18(ect)]TJ 0 -11.955 Td [(contr)18(ol)-231(of)-231(the)-231(compiler/application,)-235(e.g.)-304(data)-231(stor)18(ed)-231(in)-231(a)-231(graphics)-231(accelerator)-74('s)]TJ 0 -11.955 Td [(private)-250(memory)111(.)]TJ +/F84 9.9626 Tf 11.627 0 Td [(Double)-250(pr)18(ecision)-250(complex.)]TJ 0.987 0 0 1 99.587 604.444 Tm [(The)-252(actual)-252(data)-252(is)-252(contained)-252(in)-252(the)-253(pol)1(ymorphic)-253(component)]TJ/F131 9.9626 Tf 1 0 0 1 361.193 604.444 Tm [(v%v)]TJ/F84 9.9626 Tf 0.987 0 0 1 376.884 604.444 Tm [(;)-252(the)-253(separation)]TJ 1.02 0 0 1 99.895 592.489 Tm [(between)-301(the)-301(application)-301(and)-300(the)-301(actual)-301(data)-301(is)-301(essential)-301(for)-301(cases)-301(wher)18(e)-301(it)-301(is)]TJ 1.02 0 0 1 99.895 580.534 Tm [(necessary)-259(to)-259(link)-260(to)-259(data)-259(storage)-259(made)-259(available)-259(elsewher)17(e)-259(outside)-259(the)-259(dir)17(ect)]TJ 0.995 0 0 1 99.895 568.579 Tm [(contr)18(ol)-250(of)-250(the)-250(compiler/application,)-250(e.g.)-311(data)-250(stor)18(ed)-250(i)1(n)-250(a)-250(graphics)-250(accelerator)-75('s)]TJ 1 0 0 1 99.596 556.624 Tm [(private)-250(memory)111(.)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -9048,7 +9045,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 525.005 Td [(type)]TJ +/F231 8.9664 Tf 112.299 525.005 Td [(type)]TJ 0 g 0 G [-525(psb_T_base_vect_type)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9110,14 +9107,14 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 6.677 -41.429 Td [(Listing)-250(3:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(dense)-250(vector)74(.)]TJ/F59 9.9626 Tf -19.081 -39.929 Td [(3.3.1)-1000(V)111(ector)-250(Methods)]TJ 0 -19.174 Td [(3.3.2)-1000(get)]TJ +/F84 9.9626 Tf 6.677 -41.429 Td [(Listing)-250(3:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(dense)-250(vector)74(.)]TJ/F75 9.9626 Tf -19.081 -39.929 Td [(3.3.1)-1000(V)111(ector)-250(Methods)]TJ 0 -19.174 Td [(3.3.2)-1000(get)]TJ ET q 1 0 0 1 144.219 358.919 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 358.719 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(dense)-250(vector)]TJ/F67 9.9626 Tf -47.313 -19.173 Td [(nr)]TJ +/F75 9.9626 Tf 147.208 358.719 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(dense)-250(vector)]TJ/F131 9.9626 Tf -47.313 -19.173 Td [(nr)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -9127,23 +9124,23 @@ BT 0 g 0 G [-525(v%get_nrows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.359 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -20.359 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.358 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -34.198 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.358 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(dense)-250(vector)]TJ/F67 9.9626 Tf 161.273 0 Td [(v)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ/F59 9.9626 Tf -239.281 -27.757 Td [(3.3.3)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(dense)-250(vector)]TJ/F67 9.9626 Tf 0 -19.174 Td [(memory_size)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(dense)-250(vector)]TJ/F131 9.9626 Tf 161.274 0 Td [(v)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ/F75 9.9626 Tf -238.972 -27.757 Td [(3.3.3)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(dense)-250(vector)]TJ/F131 9.9626 Tf 0 -19.174 Td [(memory_size)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -9153,42 +9150,42 @@ BT 0 g 0 G [-525(v%sizeof\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.358 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -20.358 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(25)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(25)]TJ 0 g 0 G ET endstream endobj -1103 0 obj +1106 0 obj << -/Length 3867 +/Length 3987 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(v)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -36.868 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -23.918 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F59 9.9626 Tf -72.776 -32.82 Td [(3.3.4)-1000(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F75 9.9626 Tf -72.468 -32.82 Td [(3.3.4)-1000(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 5.23 -20.898 Td [(call)]TJ +/F131 9.9626 Tf 5.23 -20.898 Td [(call)]TJ 0 g 0 G [-1050(v%set\050alpha[,first,last]\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9204,134 +9201,134 @@ BT 0 g 0 G [-1050(v%zero\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf -5.23 -24.913 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -5.23 -24.913 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -23.918 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -23.918 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -23.918 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -35.873 Td [(alpha)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(A)-250(scalar)-250(value.)]TJ -5.53 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 30.047 0 Td [(A)-250(scalar)-250(value.)]TJ -5.141 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -23.918 Td [(\002rst,last)]TJ +/F75 9.9626 Tf -24.906 -23.918 Td [(\002rst,last)]TJ 0 g 0 G -/F62 9.9626 Tf 41.215 0 Td [(Boundaries)-250(for)-250(setting)-250(in)-250(the)-250(vector)74(.)]TJ -16.309 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integers.)]TJ +/F84 9.9626 Tf 41.215 0 Td [(Boundaries)-250(for)-250(setting)-250(in)-250(the)-250(vector)74(.)]TJ -16.309 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integers.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -23.918 Td [(vect)]TJ +/F75 9.9626 Tf -24.906 -23.918 Td [(vect)]TJ 0 g 0 G -/F62 9.9626 Tf 23.242 0 Td [(An)-250(array)]TJ 1.664 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 22.854 0 Td [(An)-250(array)]TJ 2.052 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G - [(.)]TJ -24.906 -25.91 Td [(Note)-336(that)-336(a)-335(call)-336(to)]TJ/F67 9.9626 Tf 84.614 0 Td [(v%zero\050\051)]TJ/F62 9.9626 Tf 45.189 0 Td [(is)-336(pr)18(ovided)-336(as)-335(a)-336(shorthand,)-358(but)-335(is)-336(equivalent)-336(to)]TJ -129.803 -11.956 Td [(a)-270(call)-270(to)]TJ/F67 9.9626 Tf 36.947 0 Td [(v%set\050zero\051)]TJ/F62 9.9626 Tf 60.225 0 Td [(with)-270(the)]TJ/F67 9.9626 Tf 39.456 0 Td [(zero)]TJ/F62 9.9626 Tf 23.613 0 Td [(constant)-270(having)-270(the)-271(appr)18(opriat)1(e)-271(type)-270(and)]TJ -160.241 -11.955 Td [(kind.)]TJ + [(.)]TJ 1.018 0 0 1 150.705 217.975 Tm [(Note)-246(that)-246(a)-245(call)-246(to)]TJ/F131 9.9626 Tf 1 0 0 1 232.277 217.975 Tm [(v%zero\050\051)]TJ/F84 9.9626 Tf 1.018 0 0 1 276.612 217.975 Tm [(is)-246(pr)18(ovided)-246(as)-246(a)-246(shorthand,)-245(but)-246(is)-246(equivalent)-246(to)-246(a)]TJ 1.02 0 0 1 150.705 206.02 Tm [(call)-293(to)]TJ/F131 9.9626 Tf 1 0 0 1 181.022 206.02 Tm [(v%set\050zero\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 241.53 206.02 Tm [(with)-293(the)]TJ/F131 9.9626 Tf 1 0 0 1 282.233 206.02 Tm [(zero)]TJ/F84 9.9626 Tf 1.02 0 0 1 306.129 206.02 Tm [(constant)-293(having)-292(the)-293(appr)18(opriate)-293(type)-293(and)]TJ 1 0 0 1 150.705 194.064 Tm [(kind.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -25.91 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 0 -25.91 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -23.918 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)74(,)-250(with)-250(updated)-250(entries)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)74(,)-250(with)-250(updated)-250(entries)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 110.536 -41.843 Td [(26)]TJ +/F84 9.9626 Tf 110.536 -41.843 Td [(26)]TJ 0 g 0 G ET endstream endobj -1110 0 obj +1113 0 obj << -/Length 4480 +/Length 4800 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.3.5)-1000(get)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(3.3.5)-1000(get)]TJ ET q 1 0 0 1 144.219 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 706.129 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ +/F75 9.9626 Tf 147.208 706.129 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.313 -19.66 Td [(extv)-525(=)-525(v%get_vect\050[n]\051)]TJ +/F131 9.9626 Tf -47.313 -19.66 Td [(extv)-525(=)-525(v%get_vect\050[n]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.994 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.994 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.362 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -21.362 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.361 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -33.316 Td [(n)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(Size)-250(to)-250(be)-250(r)18(eturned)]TJ 13.838 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(;)-250(default:)-310(entir)18(e)-250(vector)74(.)]TJ +/F84 9.9626 Tf 11.069 0 Td [(Size)-250(to)-250(be)-250(r)18(eturned)]TJ 13.838 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(;)-250(default:)-310(entir)18(e)-250(vector)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -90.182 -34.95 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -89.873 -34.95 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.361 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(An)-316(allocatable)-316(array)-316(holding)-316(a)-317(copy)-316(of)-316(the)-316(dense)-316(vector)-316(con-)]TJ -47.87 -11.955 Td [(tents.)-321(If)-254(the)-254(ar)18(gument)]TJ/F60 9.9626 Tf 98.086 0 Td [(n)]TJ/F62 9.9626 Tf 8.192 0 Td [(is)-254(speci\002ed,)-255(the)-253(size)-254(of)-254(the)-254(r)18(eturned)-254(array)-253(equals)]TJ -106.278 -11.955 Td [(the)-339(minimum)-339(between)]TJ/F60 9.9626 Tf 105.247 0 Td [(n)]TJ/F62 9.9626 Tf 9.041 0 Td [(and)-339(the)-339(internal)-339(size)-339(of)-339(the)-339(vector)74(,)-361(or)-339(0)-339(if)]TJ/F60 9.9626 Tf 188.353 0 Td [(n)]TJ/F62 9.9626 Tf 9.04 0 Td [(is)]TJ -311.681 -11.956 Td [(negative;)-314(otherwise,)-303(the)-292(size)-293(of)-292(the)-293(array)-292(is)-293(the)-292(same)-293(as)-292(the)-293(internal)-292(size)]TJ 0 -11.955 Td [(of)-250(the)-250(vector)74(.)]TJ/F59 9.9626 Tf -24.907 -29.183 Td [(3.3.6)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ +/F84 9.9626 Tf 1.02 0 0 1 172.283 495.259 Tm [(An)-283(allocatable)-283(array)-283(holding)-283(a)-282(copy)-283(of)-283(the)-283(dense)-283(vector)-283(con-)]TJ 1.002 0 0 1 124.802 483.304 Tm [(tents.)-310(If)-249(the)-250(ar)18(gument)]TJ/F78 9.9626 Tf 1 0 0 1 222.842 483.304 Tm [(n)]TJ/F84 9.9626 Tf 1.002 0 0 1 230.998 483.304 Tm [(is)-250(speci\002ed,)-249(the)-250(size)-250(of)-249(the)-250(r)18(eturned)-249(array)-250(equals)]TJ 1.02 0 0 1 124.802 471.349 Tm [(the)-299(minimum)-299(between)]TJ/F78 9.9626 Tf 1 0 0 1 230.938 471.349 Tm [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 239.641 471.349 Tm [(and)-299(the)-299(internal)-299(size)-299(of)-299(the)-300(vector)73(,)-313(or)-299(0)-299(if)]TJ/F78 9.9626 Tf 1 0 0 1 427.637 471.349 Tm [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 436.341 471.349 Tm [(is)]TJ 0.981 0 0 1 124.802 459.394 Tm [(negative;)-256(otherwise)1(,)-256(the)-255(size)-256(of)-255(the)-255(array)-256(is)-255(the)-255(same)-256(as)-255(the)-255(internal)-256(size)-255(of)]TJ 1 0 0 1 124.802 447.438 Tm [(the)-250(vector)74(.)]TJ/F75 9.9626 Tf -24.907 -29.183 Td [(3.3.6)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -19.659 Td [(call)-1050(x%clone\050y,info\051)]TJ +/F131 9.9626 Tf 0 -19.659 Td [(call)-1050(x%clone\050y,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.995 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.995 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.361 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -21.361 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.362 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(dense)-250(vector)74(.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(dense)-250(vector)74(.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -34.95 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -34.95 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.361 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ +/F84 9.9626 Tf 10.132 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -/F59 9.9626 Tf -10.521 -21.361 Td [(info)]TJ +/F75 9.9626 Tf -10.132 -21.361 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 11.9552 Tf -23.801 -31.176 Td [(3.4)-1000(Preconditioner)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -19.659 Td [(Our)-396(base)-397(l)1(ibrary)-397(of)18(fers)-396(support)-396(for)-396(simple)-397(well)-396(known)-396(pr)18(econditioners)-396(like)]TJ 0 -11.956 Td [(Diagonal)-250(Scaling)-250(or)-250(Block)-250(Jacobi)-250(with)-250(incomplete)-250(factorization)-250(ILU\0500\051.)]TJ 14.944 -12.314 Td [(A)-309(pr)18(ec)1(onditioner)-309(is)-309(held)-308(in)-309(the)]TJ/F67 9.9626 Tf 140.643 0 Td [(psb)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 11.9552 Tf -23.801 -31.176 Td [(3.4)-1000(Preconditioner)-250(data)-250(structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 192.416 Tm [(Our)-329(base)-328(library)-329(of)18(fers)-328(support)-329(for)-328(simple)-329(well)-328(known)-329(pr)18(econditioners)-329(like)]TJ 1 0 0 1 99.895 180.46 Tm [(Diagonal)-250(Scaling)-250(or)-250(Block)-250(Jacobi)-250(with)-250(incomplete)-250(factorization)-250(ILU\0500\051.)]TJ 1.02 0 0 1 114.839 168.146 Tm [(A)-258(pr)18(econditioner)-257(is)-258(held)-257(in)-258(the)]TJ/F131 9.9626 Tf 1 0 0 1 255.19 168.146 Tm [(psb)]TJ ET q -1 0 0 1 271.801 168.346 cm +1 0 0 1 271.508 168.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 274.939 168.146 Td [(Tprec)]TJ +/F131 9.9626 Tf 274.647 168.146 Td [(Tprec)]TJ ET q -1 0 0 1 301.718 168.346 cm +1 0 0 1 301.426 168.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 304.857 168.146 Td [(type)]TJ/F62 9.9626 Tf 23.995 0 Td [(data)-309(str)8(uct)1(ur)18(e)-309(r)18(eported)-309(in)]TJ -228.957 -11.955 Td [(\002gur)18(e)]TJ +/F131 9.9626 Tf 304.564 168.146 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 328.103 168.146 Tm [(data)-258(str)8(uctur)18(e)-258(r)18(eported)-257(in)]TJ 0.994 0 0 1 99.895 156.191 Tm [(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-235(4)]TJ + [-252(4)]TJ 0 g 0 G - [(.)-305(The)]TJ/F67 9.9626 Tf 57.981 0 Td [(psb_Tprec_type)]TJ/F62 9.9626 Tf 75.569 0 Td [(data)-235(type)-236(may)-235(contain)-235(a)-236(simple)-235(pr)18(econditioning)]TJ -133.55 -11.955 Td [(matrix)-307(with)-307(the)-307(associated)-308(commun)1(ication)-308(descriptor)74(.)-481(The)-307(internal)-307(pr)18(econdi-)]TJ 0 -11.955 Td [(tioner)-317(is)-317(allocated)-318(appr)18(opriately)-317(with)-317(the)-317(dynamic)-318(type)-317(corr)18(esponding)-317(to)-317(the)]TJ 0 -11.955 Td [(desir)18(ed)-250(pr)18(econditioner)74(.)]TJ + [(.)-315(The)]TJ/F131 9.9626 Tf 1 0 0 1 157.963 156.191 Tm [(psb_Tprec_type)]TJ/F84 9.9626 Tf 0.994 0 0 1 233.688 156.191 Tm [(data)-253(type)-252(may)-253(contain)-252(a)-253(simpl)1(e)-253(pr)18(econditioning)]TJ 1.02 0 0 1 99.895 144.236 Tm [(matrix)-255(with)-254(the)-255(associated)-255(communication)-255(descr)1(iptor)72(.)-333(The)-254(internal)-255(pr)18(econdi-)]TJ 1.02 0 0 1 99.895 132.281 Tm [(tioner)-250(is)-249(allocated)-250(appr)18(opriately)-249(with)-250(the)-249(dynamic)-250(type)-249(corr)17(esponding)-249(to)-250(the)]TJ 1 0 0 1 99.895 120.326 Tm [(desir)18(ed)-250(pr)18(econditioner)74(.)]TJ 0 g 0 G 166.875 -29.888 Td [(27)]TJ 0 g 0 G @@ -9339,9 +9336,9 @@ ET endstream endobj -1116 0 obj +1119 0 obj << -/Length 4259 +/Length 4371 >> stream 0 g 0 G @@ -9359,7 +9356,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 163.108 699.454 Td [(type)]TJ +/F231 8.9664 Tf 163.108 699.454 Td [(type)]TJ 0 g 0 G [-525(psb_Tprec_type)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9390,85 +9387,85 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 1.845 -41.429 Td [(Listing)-250(4:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(pr)18(econditioner)74(.)]TJ/F59 11.9552 Tf -14.248 -32.698 Td [(3.5)-1000(Heap)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -18.964 Td [(Among)-310(the)-311(tools)-310(r)18(outines)-310(of)-310(sec.)]TJ +/F84 9.9626 Tf 1.845 -41.429 Td [(Listing)-250(4:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(pr)18(econditioner)74(.)]TJ/F75 11.9552 Tf -14.248 -32.698 Td [(3.5)-1000(Heap)-250(data)-250(structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.316 584.445 Tm [(Among)-267(the)-267(t)1(ools)-267(r)17(outines)-266(of)-267(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-311(6)]TJ + [-267(6)]TJ 0 g 0 G - [(,)-325(we)-310(have)-311(a)-310(number)-310(of)-311(so)1(rting)-311(utilities;)-340(the)]TJ 0 -11.955 Td [(heap)-250(sort)-250(is)-250(implemented)-250(in)-250(terms)-250(of)-250(heaps)-250(having)-250(the)-250(following)-250(signatur)18(es:)]TJ + [(,)-272(we)-267(have)-266(a)-267(number)-267(of)-267(sorting)-266(utilities;)-278(the)]TJ 1 0 0 1 150.705 572.49 Tm [(heap)-250(sort)-250(is)-250(implemented)-250(in)-250(terms)-250(of)-250(heaps)-250(having)-250(the)-250(following)-250(signatur)18(es:)]TJ 0 g 0 G -/F67 9.9626 Tf 0 -19.925 Td [(psb)]TJ +/F131 9.9626 Tf 0 -19.925 Td [(psb)]TJ ET q 1 0 0 1 167.023 552.764 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 170.162 552.565 Td [(T)]TJ +/F131 9.9626 Tf 170.162 552.565 Td [(T)]TJ ET q 1 0 0 1 176.02 552.764 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 179.158 552.565 Td [(heap)]TJ +/F131 9.9626 Tf 179.158 552.565 Td [(heap)]TJ 0 g 0 G -/F62 9.9626 Tf 25.903 0 Td [(:)-333(a)-262(heap)-262(containing)-262(e)1(lements)-262(of)-262(type)-262(T)74(,)-261(wher)18(e)-262(T)-262(can)-261(be)]TJ/F67 9.9626 Tf 242.282 0 Td [(i,s,c,d,z)]TJ/F62 9.9626 Tf -271.731 -11.955 Td [(for)-250(integer)74(,)-250(r)18(eal)-250(and)-250(complex)-250(data;)]TJ +/F84 9.9626 Tf 1.007 0 0 1 205.061 552.565 Tm [(:)-308(a)-249(heap)-249(contai)1(ning)-249(elements)-249(of)-248(type)-249(T)74(,)-249(wher)18(e)-248(T)-249(can)-249(be)]TJ/F131 9.9626 Tf 1 0 0 1 447.343 552.565 Tm [(i,s,c,d,z)]TJ/F84 9.9626 Tf -271.732 -11.955 Td [(for)-250(integer)74(,)-250(r)18(eal)-250(and)-250(complex)-250(data;)]TJ 0 g 0 G -/F67 9.9626 Tf -24.907 -19.925 Td [(psb)]TJ +/F131 9.9626 Tf -24.906 -19.925 Td [(psb)]TJ ET q 1 0 0 1 167.023 520.884 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 170.162 520.685 Td [(T)]TJ +/F131 9.9626 Tf 170.162 520.685 Td [(T)]TJ ET q 1 0 0 1 176.02 520.884 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 179.158 520.685 Td [(idx)]TJ +/F131 9.9626 Tf 179.158 520.685 Td [(idx)]TJ ET q 1 0 0 1 195.476 520.884 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 198.615 520.685 Td [(heap)]TJ +/F131 9.9626 Tf 198.615 520.685 Td [(heap)]TJ 0 g 0 G -/F62 9.9626 Tf 25.902 0 Td [(:)-289(a)-207(heap)-207(containing)-207(elements)-207(of)-207(type)-207(T)74(,)-207(as)-207(above,)-215(together)-207(with)]TJ -48.906 -11.956 Td [(an)-250(integer)-250(index.)]TJ -24.906 -19.925 Td [(Given)-250(a)-250(heap)-250(object,)-250(the)-250(following)-250(methods)-250(ar)18(e)-250(de\002ned)-250(on)-250(it:)]TJ +/F84 9.9626 Tf 0.982 0 0 1 224.517 520.685 Tm [(:)-316(a)-255(heap)-255(containing)-255(elements)-255(of)-255(type)-255(T)76(,)-255(as)-255(above,)-255(together)-255(with)]TJ 1 0 0 1 175.611 508.729 Tm [(an)-250(integer)-250(index.)]TJ -24.906 -19.925 Td [(Given)-250(a)-250(heap)-250(object,)-250(the)-250(following)-250(methods)-250(ar)18(e)-250(de\002ned)-250(on)-250(it:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(init)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(init)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(Initialize)-250(memory;)-250(also)-250(choose)-250(ascending)-250(or)-250(descending)-250(or)18(der;)]TJ +/F84 9.9626 Tf 21.021 0 Td [(Initialize)-250(memory;)-250(also)-250(choose)-250(ascending)-250(or)-250(descending)-250(or)18(der;)]TJ 0 g 0 G -/F59 9.9626 Tf -21.021 -19.925 Td [(howmany)]TJ +/F75 9.9626 Tf -21.021 -19.925 Td [(howmany)]TJ 0 g 0 G -/F62 9.9626 Tf 50.371 0 Td [(Curr)18(ent)-250(heap)-250(occupancy;)]TJ +/F84 9.9626 Tf 50.371 0 Td [(Curr)18(ent)-250(heap)-250(occupancy;)]TJ 0 g 0 G -/F59 9.9626 Tf -50.371 -19.926 Td [(insert)]TJ +/F75 9.9626 Tf -50.371 -19.926 Td [(insert)]TJ 0 g 0 G -/F62 9.9626 Tf 30.983 0 Td [(Add)-250(an)-250(item)-250(\050or)-250(an)-250(item)-250(and)-250(its)-250(index\051;)]TJ +/F84 9.9626 Tf 30.595 0 Td [(Add)-250(an)-250(item)-250(\050or)-250(an)-250(item)-250(and)-250(its)-250(index\051;)]TJ 0 g 0 G -/F59 9.9626 Tf -30.983 -19.925 Td [(get)]TJ +/F75 9.9626 Tf -30.595 -19.925 Td [(get)]TJ ET q 1 0 0 1 165.141 409.302 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 168.129 409.103 Td [(\002rst)]TJ +/F75 9.9626 Tf 168.129 409.103 Td [(\002rst)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(Remove)-250(and)-250(r)18(eturn)-250(the)-250(\002rst)-250(element;)]TJ +/F84 9.9626 Tf 22.685 0 Td [(Remove)-250(and)-250(r)18(eturn)-250(the)-250(\002rst)-250(element;)]TJ 0 g 0 G -/F59 9.9626 Tf -40.109 -19.925 Td [(dump)]TJ +/F75 9.9626 Tf -40.109 -19.925 Td [(dump)]TJ 0 g 0 G -/F62 9.9626 Tf 32.099 0 Td [(Print)-250(on)-250(\002le;)]TJ +/F84 9.9626 Tf 32.099 0 Td [(Print)-250(on)-250(\002le;)]TJ 0 g 0 G -/F59 9.9626 Tf -32.099 -19.926 Td [(free)]TJ +/F75 9.9626 Tf -32.099 -19.926 Td [(free)]TJ 0 g 0 G -/F62 9.9626 Tf 22.695 0 Td [(Release)-250(memory)111(.)]TJ -22.695 -19.925 Td [(These)-285(objects)-285(ar)18(e)-285(used)-285(to)-285(implement)-285(the)-285(factorization)-285(and)-285(appr)18(oximate)-285(inver)18(-)]TJ 0 -11.955 Td [(sion)-250(algorithms.)]TJ +/F84 9.9626 Tf 22.695 0 Td [(Release)-250(memory)111(.)]TJ 0.98 0 0 1 150.396 349.327 Tm [(These)-206(objects)-206(ar)19(e)-206(used)-206(to)-206(implement)-206(the)-206(factorization)-206(and)-205(appr)18(oximate)-206(inversion)]TJ 1 0 0 1 150.705 337.372 Tm [(algorithms.)]TJ 0 g 0 G 166.874 -246.934 Td [(28)]TJ 0 g 0 G @@ -9476,7 +9473,7 @@ ET endstream endobj -1120 0 obj +1123 0 obj << /Length 158 >> @@ -9484,34 +9481,34 @@ stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(4)-1000(Computational)-250(routines)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(4)-1000(Computational)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 166.875 -615.346 Td [(29)]TJ +/F84 9.9626 Tf 166.875 -615.346 Td [(29)]TJ 0 g 0 G ET endstream endobj -1131 0 obj +1134 0 obj << -/Length 7465 +/Length 7649 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.1)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ/F62 9.9626 Tf -51.12 -19.189 Td [(This)-358(subr)18(outine)-358(is)-359(an)-358(interface)-358(to)-358(the)-358(computational)-359(kernel)-358(for)-358(dense)-358(matrix)]TJ 0 -11.955 Td [(sum:)]TJ/F60 9.9626 Tf 143.149 -12.304 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.397 0 Td [(a)]TJ/F60 9.9626 Tf 7.616 0 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 686.94 Tm [(This)-302(subr)18(outine)-302(is)-302(an)-301(interface)-302(to)-302(the)-302(computational)-301(kernel)-302(for)-302(dense)-302(matrix)]TJ 1 0 0 1 150.705 674.985 Tm [(sum:)]TJ/F78 9.9626 Tf 143.149 -12.304 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 7.616 0 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -175.407 -18.398 Td [(call)]TJ +/F131 9.9626 Tf -175.407 -18.398 Td [(call)]TJ 0 g 0 G [-525(psb_geaxpby\050alpha,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9538,42 +9535,42 @@ q []0 d 0 J 0.398 w 0 0 m 189.647 0 l S Q BT -/F60 9.9626 Tf 234.009 621.114 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(,)]TJ/F68 9.9626 Tf 5.105 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(,)]TJ/F68 9.9626 Tf 5.355 0 Td [(b)]TJ/F59 9.9626 Tf 89.359 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 234.009 621.114 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(,)]TJ/F133 9.9626 Tf 5.105 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 89.359 0 Td [(Subroutine)]TJ ET q 1 0 0 1 227.737 617.328 cm []0 d 0 J 0.398 w 0 0 m 189.647 0 l S Q BT -/F62 9.9626 Tf 233.715 608.761 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 233.715 608.761 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 370.948 608.96 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 608.761 Td [(geaxpby)]TJ -140.222 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 373.937 608.761 Td [(geaxpby)]TJ -140.222 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 370.948 597.005 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 596.805 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 373.937 596.805 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 370.948 585.05 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 584.85 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 373.937 584.85 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 370.948 573.094 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 572.895 Td [(geaxpby)]TJ +/F84 9.9626 Tf 373.937 572.895 Td [(geaxpby)]TJ ET q 1 0 0 1 227.737 569.109 cm @@ -9581,206 +9578,206 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 540.731 Td [(T)92(able)-250(1:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 540.731 Td [(T)92(able)-250(1:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -35.05 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -35.05 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.39 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.39 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.391 Td [(alpha)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.368 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.391 Td [(x)]TJ +/F75 9.9626 Tf -24.907 -20.391 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(o)1(r)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 348.869 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 348.869 Tm [(psb)]TJ ET q 1 0 0 1 436.673 349.068 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 348.869 Td [(T)]TJ +/F131 9.9626 Tf 439.811 348.869 Td [(T)]TJ ET q 1 0 0 1 445.669 349.068 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 348.869 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 348.869 Td [(vect)]TJ ET q 1 0 0 1 470.356 349.068 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 348.869 Td [(type)]TJ +/F131 9.9626 Tf 473.495 348.869 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 175.611 336.914 Tm [(containing)-270(numbers)-269(of)-270(type)-270(speci\002ed)-270(in)-269(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-312(1)]TJ + [-270(1)]TJ 0 g 0 G - [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-378(The)-270(rank)-269(of)]TJ/F78 9.9626 Tf 1 0 0 1 450.52 336.914 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.466 336.914 Tm [(must)-270(be)]TJ 1 0 0 1 175.611 324.958 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -82.958 -20.391 Td [(beta)]TJ +/F75 9.9626 Tf -82.958 -20.39 Td [(beta)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.618 0 Td [(b)]TJ/F62 9.9626 Tf 5.524 0 Td [(.)]TJ -49.584 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.618 0 Td [(b)]TJ/F84 9.9626 Tf 5.524 0 Td [(.)]TJ -49.584 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.391 Td [(y)]TJ +/F75 9.9626 Tf -24.906 -20.391 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 191.754 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -182.473 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 191.754 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -182.474 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 188.537 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 188.537 Tm [(psb)]TJ ET q 1 0 0 1 436.673 188.736 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 188.537 Td [(T)]TJ +/F131 9.9626 Tf 439.811 188.537 Td [(T)]TJ ET q 1 0 0 1 445.669 188.736 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 188.537 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 188.537 Td [(vect)]TJ ET q 1 0 0 1 470.356 188.736 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 188.537 Td [(type)]TJ +/F131 9.9626 Tf 473.495 188.537 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-276(numbers)-277(of)-276(the)-276(type)-276(indicated)-277(in)-276(T)92(able)]TJ +/F84 9.9626 Tf 1.014 0 0 1 175.611 176.581 Tm [(containing)-247(numbers)-247(of)-246(the)-247(type)-247(indicated)-247(in)-247(T)91(able)]TJ 0 0 1 rg 0 0 1 RG - [-276(1)]TJ + [-247(1)]TJ 0 g 0 G - [(.)-389(The)-276(rank)-277(of)]TJ/F60 9.9626 Tf 288.67 0 Td [(y)]TJ/F62 9.9626 Tf 7.859 0 Td [(must)]TJ -296.529 -11.955 Td [(be)-250(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 65.888 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ + [(.)-306(The)-247(rank)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 464.229 176.581 Tm [(y)]TJ/F84 9.9626 Tf 1.014 0 0 1 471.828 176.581 Tm [(must)]TJ 1 0 0 1 175.611 164.626 Tm [(be)-250(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 65.888 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.999 -20.39 Td [(desc)]TJ +/F75 9.9626 Tf -95.999 -20.39 Td [(desc)]TJ ET q 1 0 0 1 171.218 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 144.236 Td [(a)]TJ +/F75 9.9626 Tf 174.207 144.236 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ 0 g 0 G -/F62 9.9626 Tf 114.879 -29.888 Td [(30)]TJ +/F84 9.9626 Tf 115.188 -29.888 Td [(30)]TJ 0 g 0 G ET endstream endobj -1138 0 obj +1141 0 obj << -/Length 2404 +/Length 2434 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 694.373 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 694.174 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 694.174 Td [(desc)]TJ ET q 1 0 0 1 298.05 694.373 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 694.174 Td [(type)]TJ +/F131 9.9626 Tf 301.189 694.174 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.68 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.68 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 604.51 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 604.51 Tm [(psb)]TJ ET q 1 0 0 1 385.864 604.709 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 604.51 Td [(T)]TJ +/F131 9.9626 Tf 389.002 604.51 Td [(T)]TJ ET q 1 0 0 1 394.86 604.709 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 604.51 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 604.51 Td [(vect)]TJ ET q 1 0 0 1 419.547 604.709 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 604.51 Td [(type)]TJ +/F131 9.9626 Tf 422.685 604.51 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -434.371 Td [(31)]TJ + 142.357 -434.371 Td [(31)]TJ 0 g 0 G ET endstream endobj -1148 0 obj +1151 0 obj << -/Length 7647 +/Length 7835 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.2)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.2)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(gedot)-250(\227)-250(Dot)-250(Product)]TJ/F62 9.9626 Tf -51.12 -18.976 Td [(This)-250(function)-250(computes)-250(dot)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F60 9.9626 Tf 254.647 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.481 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -286.93 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.459 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 7.597 0 Td [(ar)18(e)-250(r)18(eal)-250(vectors)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F60 9.9626 Tf 104.717 -23.132 Td [(d)-25(o)-35(t)]TJ/F91 10.3811 Tf 16.337 0 Td [(\040)]TJ/F60 9.9626 Tf 13.566 0 Td [(x)]TJ/F60 7.5716 Tf 5.399 4.115 Td [(T)]TJ/F60 9.9626 Tf 5.525 -4.115 Td [(y)]TJ/F62 9.9626 Tf -189.778 -21.93 Td [(Else)-250(if)]TJ/F60 9.9626 Tf 29.474 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 7.596 0 Td [(ar)18(e)-250(complex)-250(vectors)-250(then)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F60 9.9626 Tf 83.965 -23.132 Td [(d)-25(o)-35(t)]TJ/F91 10.3811 Tf 16.336 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F60 7.5716 Tf 5.588 4.115 Td [(H)]TJ/F60 9.9626 Tf 6.812 -4.115 Td [(y)]TJ/F67 9.9626 Tf -175.572 -21.937 Td [(psb_gedot\050x,)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(gedot)-250(\227)-250(Dot)-250(Product)]TJ/F84 9.9626 Tf -51.429 -18.976 Td [(This)-250(function)-250(computes)-250(dot)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F78 9.9626 Tf 254.647 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ -286.621 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.459 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 7.597 0 Td [(ar)18(e)-250(r)18(eal)-250(vectors)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F78 9.9626 Tf 104.717 -23.132 Td [(d)-25(o)-35(t)]TJ/F179 10.3811 Tf 16.337 0 Td [(\040)]TJ/F78 9.9626 Tf 13.566 0 Td [(x)]TJ/F78 7.5716 Tf 5.399 4.115 Td [(T)]TJ/F78 9.9626 Tf 5.525 -4.115 Td [(y)]TJ/F84 9.9626 Tf -189.778 -21.93 Td [(Else)-250(if)]TJ/F78 9.9626 Tf 29.474 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 7.596 0 Td [(ar)18(e)-250(complex)-250(vectors)-250(then)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F78 9.9626 Tf 83.965 -23.132 Td [(d)-25(o)-35(t)]TJ/F179 10.3811 Tf 16.336 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F78 7.5716 Tf 5.588 4.115 Td [(H)]TJ/F78 9.9626 Tf 6.812 -4.115 Td [(y)]TJ/F131 9.9626 Tf -175.572 -21.937 Td [(psb_gedot\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -9802,42 +9799,42 @@ q []0 d 0 J 0.398 w 0 0 m 177.263 0 l S Q BT -/F60 9.9626 Tf 240.031 562.118 Td [(d)-25(o)-35(t)]TJ/F62 9.9626 Tf 13.444 0 Td [(,)]TJ/F60 9.9626 Tf 5.276 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 91.76 0 Td [(Function)]TJ +/F78 9.9626 Tf 240.031 562.118 Td [(d)-25(o)-35(t)]TJ/F84 9.9626 Tf 13.444 0 Td [(,)]TJ/F78 9.9626 Tf 5.276 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 91.76 0 Td [(Function)]TJ ET q 1 0 0 1 233.929 558.332 cm []0 d 0 J 0.398 w 0 0 m 177.263 0 l S Q BT -/F62 9.9626 Tf 239.906 549.765 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 239.906 549.765 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 377.14 549.964 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 549.765 Td [(gedot)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 380.129 549.765 Td [(gedot)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 377.14 538.009 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 537.809 Td [(gedot)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 380.129 537.809 Td [(gedot)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 377.14 526.053 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 525.854 Td [(gedot)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 380.129 525.854 Td [(gedot)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 377.14 514.098 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 513.899 Td [(gedot)]TJ +/F84 9.9626 Tf 380.129 513.899 Td [(gedot)]TJ ET q 1 0 0 1 233.929 510.113 cm @@ -9845,161 +9842,161 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 481.735 Td [(T)92(able)-250(2:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 481.735 Td [(T)92(able)-250(2:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -34.507 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -34.507 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.951 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.951 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.951 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 359.506 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 359.506 Tm [(psb)]TJ ET q 1 0 0 1 436.673 359.705 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 359.506 Td [(T)]TJ +/F131 9.9626 Tf 439.811 359.506 Td [(T)]TJ ET q 1 0 0 1 445.669 359.705 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 359.506 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 359.506 Td [(vect)]TJ ET q 1 0 0 1 470.356 359.705 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 359.506 Td [(type)]TJ +/F131 9.9626 Tf 473.495 359.506 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 175.611 347.55 Tm [(containing)-270(numbers)-269(of)-270(type)-270(speci\002ed)-270(in)-269(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-312(2)]TJ + [-270(2)]TJ 0 g 0 G - [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-378(The)-270(rank)-269(of)]TJ/F78 9.9626 Tf 1 0 0 1 450.52 347.55 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.466 347.55 Tm [(must)-270(be)]TJ 1 0 0 1 175.611 335.595 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -82.958 -19.951 Td [(y)]TJ +/F75 9.9626 Tf -82.958 -19.951 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 267.824 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 267.824 Tm [(psb)]TJ ET q 1 0 0 1 436.673 268.023 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 267.824 Td [(T)]TJ +/F131 9.9626 Tf 439.811 267.824 Td [(T)]TJ ET q 1 0 0 1 445.669 268.023 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 267.824 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 267.824 Td [(vect)]TJ ET q 1 0 0 1 470.356 268.023 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 267.824 Td [(type)]TJ +/F131 9.9626 Tf 473.495 267.824 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-313(numbers)-314(of)-313(type)-313(speci\002ed)-314(in)-313(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 175.611 255.869 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-247(T)94(able)]TJ 0 0 1 rg 0 0 1 RG - [-313(2)]TJ + [-246(2)]TJ 0 g 0 G - [(.)-500(The)-314(rank)-313(of)]TJ/F60 9.9626 Tf 274.898 0 Td [(y)]TJ/F62 9.9626 Tf 8.228 0 Td [(must)-313(be)]TJ -283.126 -11.956 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.116 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ + [(.)-314(The)-246(rank)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 436.643 255.869 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 444.155 255.869 Tm [(must)-246(be)-247(the)]TJ 1 0 0 1 175.611 243.913 Tm [(same)-250(of)]TJ/F78 9.9626 Tf 36.807 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.227 -19.95 Td [(desc)]TJ +/F75 9.9626 Tf -66.919 -19.95 Td [(desc)]TJ ET q 1 0 0 1 171.218 224.162 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 223.963 Td [(a)]TJ +/F75 9.9626 Tf 174.207 223.963 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 176.341 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 176.142 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 176.142 Td [(desc)]TJ ET q 1 0 0 1 348.86 176.341 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 176.142 Td [(type)]TJ +/F131 9.9626 Tf 351.998 176.142 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -19.951 Td [(global)]TJ +/F75 9.9626 Tf -222.214 -19.951 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(Speci\002es)-226(whether)-227(the)-226(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.955 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ +/F84 9.9626 Tf 0.994 0 0 1 184.468 156.191 Tm [(Speci\002es)-250(whether)-250(t)1(he)-250(computation)-250(should)-250(include)-250(the)-249(global)-250(r)18(eduction)]TJ 1 0 0 1 175.611 144.236 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 0 g 0 G - 76.693 -29.888 Td [(32)]TJ + 77.002 -29.888 Td [(32)]TJ 0 g 0 G ET endstream endobj -1154 0 obj +1157 0 obj << -/Length 4270 +/Length 4450 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.318 0 Td [(global)]TJ +/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -190.225 -31.881 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -190.225 -31.881 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F60 9.9626 Tf 126.33 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -206.483 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ +/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F78 9.9626 Tf 126.33 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ 0.98 0 0 1 124.802 630.413 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 155.612 630.413 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 186.2 630.413 Tm [(unless)-244(the)-244(optional)-244(variab)1(le)]TJ/F131 9.9626 Tf 1 0 0 1 307.484 630.413 Tm [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 383.09 630.413 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 124.802 618.458 Tm [(i\002ed)]TJ 0 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(ove)1(r)18(head.)-514(It)-318(may)-318(be)-318(necessary)-317(and/or)-318(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-204(multiple)-204(dot)-204(pr)18(oducts)-204(at)-204(the)-204(same)-204(time;)-219(in)-204(this)-204(case,)-213(it)-204(is)-204(possible)]TJ 0 -11.955 Td [(to)-250(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ + 0.98 0 0 1 124.493 496.913 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)18(es)-200(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 124.802 484.958 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-264(be)-265(necessary)-265(and/or)-265(advisable)-265(to)]TJ 0.98 0 0 1 124.802 473.003 Tm [(compute)-256(multiple)-256(dot)-256(pr)18(oducts)-256(at)-256(the)-256(same)-256(time;)-257(in)-256(this)-256(case,)-256(it)-256(is)-256(possible)]TJ 1 0 0 1 124.802 461.048 Tm [(to)-250(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F67 9.9626 Tf 52.303 -19.925 Td [(vres\050)]TJ +/F131 9.9626 Tf 52.303 -19.925 Td [(vres\050)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G @@ -10067,7 +10064,7 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(3)]TJ 0 g 0 G - [(\051\051)]TJ/F62 9.9626 Tf -52.303 -19.925 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communicati)1(on,)-254(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.955 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ + [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 124.802 385.332 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(laten)1(cy-)]TJ 1 0 0 1 124.802 373.377 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ 0 g 0 G 141.968 -282.939 Td [(33)]TJ 0 g 0 G @@ -10075,263 +10072,267 @@ ET endstream endobj -1064 0 obj +1067 0 obj << /Type /ObjStm /N 100 -/First 956 -/Length 10437 ->> -stream -1063 0 123 59 1059 116 1066 210 1068 328 127 386 131 443 135 500 1065 557 1071 651 -1073 769 139 828 143 886 1070 944 1075 1038 1077 1156 147 1214 151 1271 1074 1328 1079 1422 -1081 1540 155 1599 159 1657 163 1715 1078 1773 1083 1867 1085 1985 167 2043 1082 2099 1089 2193 -1086 2341 1087 2487 1091 2635 171 2694 175 2752 179 2809 183 2866 1092 2924 1088 2983 1095 3077 -1097 3195 1093 3253 187 3311 191 3368 195 3425 1094 3482 1102 3591 1099 3739 1100 3885 1104 4030 -199 4089 1101 4147 1109 4241 1106 4380 1111 4527 204 4585 208 4642 212 4698 1112 4755 1108 4814 -1115 4921 1107 5060 1117 5207 1113 5266 216 5325 1114 5383 1119 5492 1121 5610 220 5668 1118 5725 -1130 5806 1122 5990 1123 6136 1124 6280 1125 6426 1126 6572 1127 6716 1132 6862 224 6921 1105 6979 -1129 7038 1137 7185 1128 7342 1134 7489 1135 7633 1139 7779 1136 7837 1147 7944 1141 8119 1142 8260 -1143 8406 1144 8550 1145 8695 1149 8842 228 8901 1150 8959 1146 9018 1153 9138 1151 9277 1155 9423 -% 1063 0 obj +/First 955 +/Length 10453 +>> +stream +119 0 1066 58 123 117 1062 174 1069 269 1071 387 127 445 131 502 135 559 1068 616 +1074 711 1076 829 139 888 143 946 1073 1004 1078 1099 1080 1217 147 1275 151 1332 1077 1389 +1082 1484 1084 1602 155 1661 159 1719 163 1777 1081 1835 1086 1930 1088 2048 167 2106 1085 2162 +1092 2257 1089 2405 1090 2551 1094 2699 171 2758 175 2816 179 2873 183 2930 1095 2988 1091 3047 +1098 3142 1100 3260 1096 3318 187 3376 191 3433 195 3490 1097 3547 1105 3657 1102 3805 1103 3951 +1107 4096 199 4155 1104 4213 1112 4308 1109 4447 1114 4595 204 4653 208 4710 212 4766 1115 4823 +1111 4881 1118 4989 1110 5128 1120 5275 1116 5334 216 5393 1117 5451 1122 5561 1124 5679 220 5737 +1121 5794 1133 5875 1125 6059 1126 6205 1127 6349 1128 6495 1129 6641 1130 6785 1135 6930 224 6989 +1108 7047 1132 7106 1140 7257 1131 7414 1137 7561 1138 7705 1142 7851 1139 7909 1150 8017 1144 8192 +1145 8333 1146 8479 1147 8623 1148 8768 1152 8915 228 8974 1153 9032 1149 9091 1156 9213 1154 9352 +% 119 0 obj +<< +/D [1063 0 R /XYZ 150.705 540.892 null] +>> +% 1066 0 obj << -/D [1060 0 R /XYZ 150.705 358.382 null] +/D [1063 0 R /XYZ 150.705 358.382 null] >> % 123 0 obj << -/D [1060 0 R /XYZ 150.705 300.51 null] +/D [1063 0 R /XYZ 150.705 300.51 null] >> -% 1059 0 obj +% 1062 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1066 0 obj +% 1069 0 obj << /Type /Page -/Contents 1067 0 R -/Resources 1065 0 R +/Contents 1070 0 R +/Resources 1068 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1069 0 R +/Parent 1072 0 R >> -% 1068 0 obj +% 1071 0 obj << -/D [1066 0 R /XYZ 98.895 753.953 null] +/D [1069 0 R /XYZ 98.895 753.953 null] >> % 127 0 obj << -/D [1066 0 R /XYZ 99.895 716.092 null] +/D [1069 0 R /XYZ 99.895 716.092 null] >> % 131 0 obj << -/D [1066 0 R /XYZ 99.895 526.761 null] +/D [1069 0 R /XYZ 99.895 526.761 null] >> % 135 0 obj << -/D [1066 0 R /XYZ 99.895 326.359 null] +/D [1069 0 R /XYZ 99.895 326.359 null] >> -% 1065 0 obj +% 1068 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1071 0 obj +% 1074 0 obj << /Type /Page -/Contents 1072 0 R -/Resources 1070 0 R +/Contents 1075 0 R +/Resources 1073 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1069 0 R +/Parent 1072 0 R >> -% 1073 0 obj +% 1076 0 obj << -/D [1071 0 R /XYZ 149.705 753.953 null] +/D [1074 0 R /XYZ 149.705 753.953 null] >> % 139 0 obj << -/D [1071 0 R /XYZ 150.705 716.092 null] +/D [1074 0 R /XYZ 150.705 716.092 null] >> % 143 0 obj << -/D [1071 0 R /XYZ 150.705 474.131 null] +/D [1074 0 R /XYZ 150.705 474.131 null] >> -% 1070 0 obj +% 1073 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1075 0 obj +% 1078 0 obj << /Type /Page -/Contents 1076 0 R -/Resources 1074 0 R +/Contents 1079 0 R +/Resources 1077 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1069 0 R +/Parent 1072 0 R >> -% 1077 0 obj +% 1080 0 obj << -/D [1075 0 R /XYZ 98.895 753.953 null] +/D [1078 0 R /XYZ 98.895 753.953 null] >> % 147 0 obj << -/D [1075 0 R /XYZ 99.895 716.092 null] +/D [1078 0 R /XYZ 99.895 716.092 null] >> % 151 0 obj << -/D [1075 0 R /XYZ 99.895 376.562 null] +/D [1078 0 R /XYZ 99.895 376.562 null] >> -% 1074 0 obj +% 1077 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1079 0 obj +% 1082 0 obj << /Type /Page -/Contents 1080 0 R -/Resources 1078 0 R +/Contents 1083 0 R +/Resources 1081 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1069 0 R +/Parent 1072 0 R >> -% 1081 0 obj +% 1084 0 obj << -/D [1079 0 R /XYZ 149.705 753.953 null] +/D [1082 0 R /XYZ 149.705 753.953 null] >> % 155 0 obj << -/D [1079 0 R /XYZ 150.705 716.092 null] +/D [1082 0 R /XYZ 150.705 716.092 null] >> % 159 0 obj << -/D [1079 0 R /XYZ 150.705 484.709 null] +/D [1082 0 R /XYZ 150.705 484.709 null] >> % 163 0 obj << -/D [1079 0 R /XYZ 150.705 251.325 null] +/D [1082 0 R /XYZ 150.705 251.325 null] >> -% 1078 0 obj +% 1081 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1083 0 obj +% 1086 0 obj << /Type /Page -/Contents 1084 0 R -/Resources 1082 0 R +/Contents 1087 0 R +/Resources 1085 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1069 0 R +/Parent 1072 0 R >> -% 1085 0 obj +% 1088 0 obj << -/D [1083 0 R /XYZ 98.895 753.953 null] +/D [1086 0 R /XYZ 98.895 753.953 null] >> % 167 0 obj << -/D [1083 0 R /XYZ 99.895 476.15 null] +/D [1086 0 R /XYZ 99.895 476.15 null] >> -% 1082 0 obj +% 1085 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1089 0 obj +% 1092 0 obj << /Type /Page -/Contents 1090 0 R -/Resources 1088 0 R +/Contents 1093 0 R +/Resources 1091 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1069 0 R -/Annots [ 1086 0 R 1087 0 R ] +/Parent 1072 0 R +/Annots [ 1089 0 R 1090 0 R ] >> -% 1086 0 obj +% 1089 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [248.894 164.341 255.868 176.4] +/Rect [233.882 164.341 240.826 176.4] /A << /S /GoTo /D (section.6) >> >> -% 1087 0 obj +% 1090 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.512 128.475 350.485 140.535] +/Rect [343.853 128.475 350.927 140.535] /A << /S /GoTo /D (listing.3) >> >> -% 1091 0 obj +% 1094 0 obj << -/D [1089 0 R /XYZ 149.705 753.953 null] +/D [1092 0 R /XYZ 149.705 753.953 null] >> % 171 0 obj << -/D [1089 0 R /XYZ 150.705 716.092 null] +/D [1092 0 R /XYZ 150.705 716.092 null] >> % 175 0 obj << -/D [1089 0 R /XYZ 150.705 586.94 null] +/D [1092 0 R /XYZ 150.705 586.94 null] >> % 179 0 obj << -/D [1089 0 R /XYZ 150.705 402.59 null] +/D [1092 0 R /XYZ 150.705 402.59 null] >> % 183 0 obj << -/D [1089 0 R /XYZ 150.705 234.114 null] +/D [1092 0 R /XYZ 150.705 234.114 null] >> -% 1092 0 obj +% 1095 0 obj << -/D [1089 0 R /XYZ 170.799 204.012 null] +/D [1092 0 R /XYZ 170.422 204.012 null] >> -% 1088 0 obj +% 1091 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1095 0 obj +% 1098 0 obj << /Type /Page -/Contents 1096 0 R -/Resources 1094 0 R +/Contents 1099 0 R +/Resources 1097 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1098 0 R +/Parent 1101 0 R >> -% 1097 0 obj +% 1100 0 obj << -/D [1095 0 R /XYZ 98.895 753.953 null] +/D [1098 0 R /XYZ 98.895 753.953 null] >> -% 1093 0 obj +% 1096 0 obj << -/D [1095 0 R /XYZ 99.895 446.997 null] +/D [1098 0 R /XYZ 99.895 446.997 null] >> % 187 0 obj << -/D [1095 0 R /XYZ 99.895 387.147 null] +/D [1098 0 R /XYZ 99.895 387.147 null] >> % 191 0 obj << -/D [1095 0 R /XYZ 99.895 370.604 null] +/D [1098 0 R /XYZ 99.895 370.604 null] >> % 195 0 obj << -/D [1095 0 R /XYZ 99.895 194.093 null] +/D [1098 0 R /XYZ 99.895 194.093 null] >> -% 1094 0 obj +% 1097 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1102 0 obj +% 1105 0 obj << /Type /Page -/Contents 1103 0 R -/Resources 1101 0 R +/Contents 1106 0 R +/Resources 1104 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1098 0 R -/Annots [ 1099 0 R 1100 0 R ] +/Parent 1101 0 R +/Annots [ 1102 0 R 1103 0 R ] >> -% 1099 0 obj +% 1102 0 obj << /Type /Annot /Subtype /Link @@ -10339,7 +10340,7 @@ stream /Rect [428.968 383.557 435.942 395.616] /A << /S /GoTo /D (table.1) >> >> -% 1100 0 obj +% 1103 0 obj << /Type /Annot /Subtype /Link @@ -10347,126 +10348,126 @@ stream /Rect [428.968 240.08 435.942 252.139] /A << /S /GoTo /D (table.1) >> >> -% 1104 0 obj +% 1107 0 obj << -/D [1102 0 R /XYZ 149.705 753.953 null] +/D [1105 0 R /XYZ 149.705 753.953 null] >> % 199 0 obj << -/D [1102 0 R /XYZ 150.705 610.712 null] +/D [1105 0 R /XYZ 150.705 610.712 null] >> -% 1101 0 obj +% 1104 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1109 0 obj +% 1112 0 obj << /Type /Page -/Contents 1110 0 R -/Resources 1108 0 R +/Contents 1113 0 R +/Resources 1111 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1098 0 R -/Annots [ 1106 0 R ] +/Parent 1101 0 R +/Annots [ 1109 0 R ] >> -% 1106 0 obj +% 1109 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [127.346 152.385 134.32 164.445] +/Rect [127.344 152.385 134.288 164.445] /A << /S /GoTo /D (listing.4) >> >> -% 1111 0 obj +% 1114 0 obj << -/D [1109 0 R /XYZ 98.895 753.953 null] +/D [1112 0 R /XYZ 98.895 753.953 null] >> % 204 0 obj << -/D [1109 0 R /XYZ 99.895 716.092 null] +/D [1112 0 R /XYZ 99.895 716.092 null] >> % 208 0 obj << -/D [1109 0 R /XYZ 99.895 430.41 null] +/D [1112 0 R /XYZ 99.895 430.41 null] >> % 212 0 obj << -/D [1109 0 R /XYZ 99.895 226.203 null] +/D [1112 0 R /XYZ 99.895 226.203 null] >> -% 1112 0 obj +% 1115 0 obj << -/D [1109 0 R /XYZ 255.482 168.146 null] +/D [1112 0 R /XYZ 255.19 168.146 null] >> -% 1108 0 obj +% 1111 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1115 0 obj +% 1118 0 obj << /Type /Page -/Contents 1116 0 R -/Resources 1114 0 R +/Contents 1119 0 R +/Resources 1117 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1098 0 R -/Annots [ 1107 0 R ] +/Parent 1101 0 R +/Annots [ 1110 0 R ] >> -% 1107 0 obj +% 1110 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [297.461 580.64 304.435 592.699] +/Rect [297.376 580.64 304.449 592.699] /A << /S /GoTo /D (section.6) >> >> -% 1117 0 obj +% 1120 0 obj << -/D [1115 0 R /XYZ 149.705 753.953 null] +/D [1118 0 R /XYZ 149.705 753.953 null] >> -% 1113 0 obj +% 1116 0 obj << -/D [1115 0 R /XYZ 150.705 665.282 null] +/D [1118 0 R /XYZ 150.705 665.282 null] >> % 216 0 obj << -/D [1115 0 R /XYZ 150.705 613.372 null] +/D [1118 0 R /XYZ 150.705 613.372 null] >> -% 1114 0 obj +% 1117 0 obj << -/Font << /F102 1022 0 R /F62 671 0 R /F59 669 0 R /F67 918 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R /F75 673 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1119 0 obj +% 1122 0 obj << /Type /Page -/Contents 1120 0 R -/Resources 1118 0 R +/Contents 1123 0 R +/Resources 1121 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1098 0 R +/Parent 1101 0 R >> -% 1121 0 obj +% 1124 0 obj << -/D [1119 0 R /XYZ 98.895 753.953 null] +/D [1122 0 R /XYZ 98.895 753.953 null] >> % 220 0 obj << -/D [1119 0 R /XYZ 99.895 716.092 null] +/D [1122 0 R /XYZ 99.895 716.092 null] >> -% 1118 0 obj +% 1121 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1130 0 obj +% 1133 0 obj << /Type /Page -/Contents 1131 0 R -/Resources 1129 0 R +/Contents 1134 0 R +/Resources 1132 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1098 0 R -/Annots [ 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R ] +/Parent 1101 0 R +/Annots [ 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R ] >> -% 1122 0 obj +% 1125 0 obj << /Type /Annot /Subtype /Link @@ -10474,7 +10475,7 @@ stream /Rect [428.968 413.274 435.942 425.334] /A << /S /GoTo /D (table.1) >> >> -% 1123 0 obj +% 1126 0 obj << /Type /Annot /Subtype /Link @@ -10482,15 +10483,15 @@ stream /Rect [419.358 345.063 495.412 357.123] /A << /S /GoTo /D (vdata) >> >> -% 1124 0 obj +% 1127 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.755 333.108 388.729 345.168] +/Rect [382.942 333.108 390.016 345.168] /A << /S /GoTo /D (table.1) >> >> -% 1125 0 obj +% 1128 0 obj << /Type /Annot /Subtype /Link @@ -10498,7 +10499,7 @@ stream /Rect [428.968 252.942 435.942 265.002] /A << /S /GoTo /D (table.1) >> >> -% 1126 0 obj +% 1129 0 obj << /Type /Annot /Subtype /Link @@ -10506,41 +10507,41 @@ stream /Rect [419.358 184.731 495.412 196.791] /A << /S /GoTo /D (vdata) >> >> -% 1127 0 obj +% 1130 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.868 172.776 404.842 184.835] +/Rect [398.626 172.776 405.67 184.835] /A << /S /GoTo /D (table.1) >> >> -% 1132 0 obj +% 1135 0 obj << -/D [1130 0 R /XYZ 149.705 753.953 null] +/D [1133 0 R /XYZ 149.705 753.953 null] >> % 224 0 obj << -/D [1130 0 R /XYZ 150.705 716.092 null] +/D [1133 0 R /XYZ 150.705 716.092 null] >> -% 1105 0 obj +% 1108 0 obj << -/D [1130 0 R /XYZ 150.705 558.947 null] +/D [1133 0 R /XYZ 150.705 558.947 null] >> -% 1129 0 obj +% 1132 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1137 0 obj +% 1140 0 obj << /Type /Page -/Contents 1138 0 R -/Resources 1136 0 R +/Contents 1141 0 R +/Resources 1139 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1140 0 R -/Annots [ 1128 0 R 1134 0 R 1135 0 R ] +/Parent 1143 0 R +/Annots [ 1131 0 R 1137 0 R 1138 0 R ] >> -% 1128 0 obj +% 1131 0 obj << /Type /Annot /Subtype /Link @@ -10548,7 +10549,7 @@ stream /Rect [256.048 690.368 323.106 702.428] /A << /S /GoTo /D (descdata) >> >> -% 1134 0 obj +% 1137 0 obj << /Type /Annot /Subtype /Link @@ -10556,7 +10557,7 @@ stream /Rect [368.549 600.704 444.603 612.764] /A << /S /GoTo /D (vdata) >> >> -% 1135 0 obj +% 1138 0 obj << /Type /Annot /Subtype /Link @@ -10564,25 +10565,25 @@ stream /Rect [344.963 588.749 351.937 600.809] /A << /S /GoTo /D (table.1) >> >> -% 1139 0 obj +% 1142 0 obj << -/D [1137 0 R /XYZ 98.895 753.953 null] +/D [1140 0 R /XYZ 98.895 753.953 null] >> -% 1136 0 obj +% 1139 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1147 0 obj +% 1150 0 obj << /Type /Page -/Contents 1148 0 R -/Resources 1146 0 R +/Contents 1151 0 R +/Resources 1149 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1140 0 R -/Annots [ 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R ] +/Parent 1143 0 R +/Annots [ 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R ] >> -% 1141 0 obj +% 1144 0 obj << /Type /Annot /Subtype /Link @@ -10590,15 +10591,15 @@ stream /Rect [419.358 355.7 495.412 367.76] /A << /S /GoTo /D (vdata) >> >> -% 1142 0 obj +% 1145 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.755 343.745 388.729 355.804] +/Rect [382.942 343.745 390.016 355.804] /A << /S /GoTo /D (table.2) >> >> -% 1143 0 obj +% 1146 0 obj << /Type /Annot /Subtype /Link @@ -10606,15 +10607,15 @@ stream /Rect [419.358 264.018 495.412 276.078] /A << /S /GoTo /D (vdata) >> >> -% 1144 0 obj +% 1147 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.88 252.063 388.854 264.123] +/Rect [373.146 252.063 380.02 264.123] /A << /S /GoTo /D (table.2) >> >> -% 1145 0 obj +% 1148 0 obj << /Type /Annot /Subtype /Link @@ -10622,33 +10623,33 @@ stream /Rect [306.858 172.336 373.916 184.396] /A << /S /GoTo /D (descdata) >> >> -% 1149 0 obj +% 1152 0 obj << -/D [1147 0 R /XYZ 149.705 753.953 null] +/D [1150 0 R /XYZ 149.705 753.953 null] >> % 228 0 obj << -/D [1147 0 R /XYZ 150.705 716.092 null] +/D [1150 0 R /XYZ 150.705 716.092 null] >> -% 1150 0 obj +% 1153 0 obj << -/D [1147 0 R /XYZ 150.705 499.951 null] +/D [1150 0 R /XYZ 150.705 499.951 null] >> -% 1146 0 obj +% 1149 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1153 0 obj +% 1156 0 obj << /Type /Page -/Contents 1154 0 R -/Resources 1152 0 R +/Contents 1157 0 R +/Resources 1155 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1140 0 R -/Annots [ 1151 0 R ] +/Parent 1143 0 R +/Annots [ 1154 0 R ] >> -% 1151 0 obj +% 1154 0 obj << /Type /Annot /Subtype /Link @@ -10656,33 +10657,29 @@ stream /Rect [378.159 602.697 385.133 614.756] /A << /S /GoTo /D (table.2) >> >> -% 1155 0 obj -<< -/D [1153 0 R /XYZ 98.895 753.953 null] ->> endstream endobj -1166 0 obj +1169 0 obj << -/Length 8519 +/Length 8898 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-283(subr)18(outine)-284(computes)-283(a)-284(series)-284(of)-283(dot)-284(pr)18(oducts)-283(among)-284(the)-283(columns)-284(of)-283(two)]TJ 0 -11.955 Td [(dense)-250(matrices)]TJ/F60 9.9626 Tf 68.208 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(:)]TJ/F60 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F60 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F60 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F93 10.3811 Tf 5.23 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf -214.288 -16.876 Td [(If)-300(the)-299(matrices)-300(ar)18(e)-299(complex,)-312(then)-300(the)-300(usual)-299(convention)-300(applies,)-312(i.e.)-459(the)-299(conju-)]TJ 0 -11.955 Td [(gate)-239(transpose)-239(of)]TJ/F60 9.9626 Tf 77.351 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(is)-239(used.)-307(If)]TJ/F60 9.9626 Tf 45.493 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(and)]TJ/F60 9.9626 Tf 19.375 0 Td [(y)]TJ/F62 9.9626 Tf 7.489 0 Td [(ar)18(e)-239(of)-239(rank)-240(one,)-241(then)]TJ/F60 9.9626 Tf 92.601 0 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 14.552 0 Td [(is)-239(a)-240(scalar)75(,)-242(else)-239(it)]TJ -272.039 -11.955 Td [(is)-250(a)-250(rank)-250(one)-250(array)111(.)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F84 9.9626 Tf 1.014 0 0 1 150.396 687.165 Tm [(This)-246(subr)17(outine)-246(computes)-246(a)-247(se)1(ries)-247(of)-246(dot)-246(pr)17(oducts)-246(among)-246(the)-247(columns)-246(of)-246(two)]TJ 1 0 0 1 150.705 675.21 Tm [(dense)-250(matrices)]TJ/F78 9.9626 Tf 68.208 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(:)]TJ/F78 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F78 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F78 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F181 10.3811 Tf 5.23 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.705 645.233 Tm [(If)-240(the)-240(matrices)-240(ar)19(e)-240(complex,)-243(then)-240(the)-240(usual)-239(convention)-240(applies,)-243(i.e.)-311(the)-240(conjugate)]TJ 1.007 0 0 1 150.705 633.278 Tm [(transpose)-249(of)]TJ/F78 9.9626 Tf 1 0 0 1 207.714 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 215.413 633.278 Tm [(is)-249(used.)-309(If)]TJ/F78 9.9626 Tf 1 0 0 1 261.437 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 269.136 633.278 Tm [(and)]TJ/F78 9.9626 Tf 1 0 0 1 288.74 633.278 Tm [(y)]TJ/F84 9.9626 Tf 1.007 0 0 1 296.34 633.278 Tm [(ar)18(e)-249(of)-248(rank)-249(one,)-249(then)]TJ/F78 9.9626 Tf 1 0 0 1 390.04 633.278 Tm [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf 1.007 0 0 1 404.704 633.278 Tm [(is)-249(a)-248(scalar)73(,)-248(else)-249(it)-249(is)-248(a)]TJ 1 0 0 1 150.705 621.323 Tm [(rank)-250(one)-250(array)111(.)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.174 -11.955 Td [(call)]TJ +/F131 9.9626 Tf 20.174 -11.955 Td [(call)]TJ 0 g 0 G [-525(psb_gedots\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -10706,42 +10703,42 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.394 587.136 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 12.17 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 93.135 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.394 587.136 Td [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf 12.17 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 93.135 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 583.351 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 574.783 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 236.369 574.783 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 574.982 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 574.783 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 574.783 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 563.027 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 562.828 Td [(gedots)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 562.828 Td [(gedots)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 551.072 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 550.872 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 550.872 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 539.116 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 538.917 Td [(gedots)]TJ +/F84 9.9626 Tf 376.592 538.917 Td [(gedots)]TJ ET q 1 0 0 1 230.392 535.131 cm @@ -10749,130 +10746,130 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 506.753 Td [(T)92(able)-250(3:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 506.753 Td [(T)92(able)-250(3:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -32.002 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -32.002 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.22 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.22 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.22 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 388.49 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 388.49 Tm [(psb)]TJ ET q 1 0 0 1 436.673 388.689 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 388.49 Td [(T)]TJ +/F131 9.9626 Tf 439.811 388.49 Td [(T)]TJ ET q 1 0 0 1 445.669 388.689 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 388.49 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 388.49 Td [(vect)]TJ ET q 1 0 0 1 470.356 388.689 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 388.49 Td [(type)]TJ +/F131 9.9626 Tf 473.495 388.49 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 175.611 376.535 Tm [(containing)-270(numbers)-269(of)-270(type)-270(speci\002ed)-270(in)-269(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-312(3)]TJ + [-270(3)]TJ 0 g 0 G - [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-378(The)-270(rank)-269(of)]TJ/F78 9.9626 Tf 1 0 0 1 450.52 376.535 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.466 376.535 Tm [(must)-270(be)]TJ 1 0 0 1 175.611 364.58 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -82.958 -19.221 Td [(y)]TJ +/F75 9.9626 Tf -82.958 -19.221 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 297.539 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 297.539 Tm [(psb)]TJ ET q 1 0 0 1 436.673 297.738 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 297.539 Td [(T)]TJ +/F131 9.9626 Tf 439.811 297.539 Td [(T)]TJ ET q 1 0 0 1 445.669 297.738 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 297.539 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 297.539 Td [(vect)]TJ ET q 1 0 0 1 470.356 297.738 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 297.539 Td [(type)]TJ +/F131 9.9626 Tf 473.495 297.539 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-313(numbers)-314(of)-313(type)-313(speci\002ed)-314(in)-313(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 175.611 285.583 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-247(T)94(able)]TJ 0 0 1 rg 0 0 1 RG - [-313(3)]TJ + [-246(3)]TJ 0 g 0 G - [(.)-500(The)-314(rank)-313(of)]TJ/F60 9.9626 Tf 274.898 0 Td [(y)]TJ/F62 9.9626 Tf 8.228 0 Td [(must)-313(be)]TJ -283.126 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.116 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ + [(.)-314(The)-246(rank)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 436.643 285.583 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 444.155 285.583 Tm [(must)-246(be)-247(the)]TJ 1 0 0 1 175.611 273.628 Tm [(same)-250(of)]TJ/F78 9.9626 Tf 36.807 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.227 -19.22 Td [(desc)]TJ +/F75 9.9626 Tf -66.919 -19.22 Td [(desc)]TJ ET q 1 0 0 1 171.218 254.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 254.408 Td [(a)]TJ +/F75 9.9626 Tf 174.207 254.408 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 206.786 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 206.587 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 206.587 Td [(desc)]TJ ET q 1 0 0 1 348.86 206.786 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 206.587 Td [(type)]TJ +/F131 9.9626 Tf 351.998 206.587 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -19.22 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.214 -19.22 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.221 Td [(res)]TJ 0 g 0 G -/F62 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F60 9.9626 Tf 126.33 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.968 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-289(as:)-389(a)-290(number)-290(or)-289(a)-290(rank-one)-289(array)-290(of)-289(the)-290(data)-289(type)-290(indicated)-289(in)]TJ 0 -11.955 Td [(T)92(able)]TJ +/F84 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F78 9.9626 Tf 126.33 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -151.968 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.431 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 1.02 0 0 1 175.611 132.281 Tm [(Speci\002ed)-244(as:)-304(a)-244(number)-245(or)-244(a)-244(rank-one)-245(array)-244(of)-244(the)-245(data)-244(type)-244(indicated)-245(in)]TJ 1 0 0 1 175.303 120.326 Tm [(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G - 141.967 -29.888 Td [(34)]TJ + 142.276 -29.888 Td [(34)]TJ 0 g 0 G ET endstream endobj -1171 0 obj +1174 0 obj << /Length 582 >> @@ -10881,32 +10878,32 @@ stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -567.87 Td [(35)]TJ + 142.357 -567.87 Td [(35)]TJ 0 g 0 G ET endstream endobj -1178 0 obj +1181 0 obj << -/Length 7777 +/Length 7939 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.4)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.4)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 233.576 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -238.781 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.459 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(in\002nity)-250(norm)-250(as:)]TJ/F60 9.9626 Tf 117.807 -18.736 Td [(a)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 25.761 0 Td [(\040)]TJ/F62 9.9626 Tf 13.272 0 Td [(max)]TJ/F60 7.5716 Tf 8.355 -7.21 Td [(i)]TJ/F91 10.3811 Tf 12.349 7.21 Td [(j)]TJ/F60 9.9626 Tf 3.298 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F62 9.9626 Tf -206.019 -23.313 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(the)-250(in\002nity-norm)-250(as:)]TJ/F60 9.9626 Tf 63.42 -18.737 Td [(a)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 25.761 0 Td [(\040)]TJ/F62 9.9626 Tf 13.273 0 Td [(max)]TJ/F60 7.5716 Tf 8.354 -7.21 Td [(i)]TJ/F93 10.3811 Tf 12.35 7.21 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F60 9.9626 Tf 3.028 0 Td [(r)-17(e)]TJ/F93 10.3811 Tf 8.17 0 Td [(\050)]TJ/F60 9.9626 Tf 4.443 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F93 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F93 10.3811 Tf 5.066 0 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(j)]TJ/F60 9.9626 Tf 3.058 0 Td [(i)-32(m)]TJ/F93 10.3811 Tf 11.088 0 Td [(\050)]TJ/F60 9.9626 Tf 4.444 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F93 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F93 10.3811 Tf 3.128 0 Td [(\051)]TJ/F67 9.9626 Tf -225.616 -22.974 Td [(psb_geamax\050x,)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf -51.429 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 233.576 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -238.472 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.459 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(in\002nity)-250(norm)-250(as:)]TJ/F78 9.9626 Tf 117.807 -18.736 Td [(a)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 25.76 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 8.354 -7.21 Td [(i)]TJ/F179 10.3811 Tf 12.35 7.21 Td [(j)]TJ/F78 9.9626 Tf 3.298 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf -206.019 -23.313 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(the)-250(in\002nity-norm)-250(as:)]TJ/F78 9.9626 Tf 63.42 -18.737 Td [(a)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 25.761 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 8.354 -7.21 Td [(i)]TJ/F181 10.3811 Tf 12.35 7.21 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F78 9.9626 Tf 3.028 0 Td [(r)-17(e)]TJ/F181 10.3811 Tf 8.169 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F181 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F181 10.3811 Tf 5.066 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(j)]TJ/F78 9.9626 Tf 3.059 0 Td [(i)-32(m)]TJ/F181 10.3811 Tf 11.088 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F181 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F181 10.3811 Tf 3.128 0 Td [(\051)]TJ/F131 9.9626 Tf -225.616 -22.974 Td [(psb_geamax\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(desc_a,)]TJ @@ -10934,42 +10931,42 @@ q []0 d 0 J 0.398 w 0 0 m 286.513 0 l S Q BT -/F60 9.9626 Tf 185.556 557.832 Td [(a)-25(m)-40(a)-42(x)-7779(x)]TJ/F59 9.9626 Tf 220.764 0 Td [(Function)]TJ +/F78 9.9626 Tf 185.556 557.832 Td [(a)-25(m)-40(a)-42(x)-7779(x)]TJ/F75 9.9626 Tf 220.764 0 Td [(Function)]TJ ET q 1 0 0 1 179.304 554.046 cm []0 d 0 J 0.398 w 0 0 m 286.513 0 l S Q BT -/F62 9.9626 Tf 185.282 545.478 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 185.282 545.478 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 422.639 545.677 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 425.628 545.478 Td [(geamax)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 425.628 545.478 Td [(geamax)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 422.639 533.722 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 425.628 533.523 Td [(geamax)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 425.628 533.523 Td [(geamax)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 422.639 521.767 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 425.628 521.568 Td [(geamax)]TJ -240.346 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 425.628 521.568 Td [(geamax)]TJ -240.346 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 422.639 509.812 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 425.628 509.612 Td [(geamax)]TJ +/F84 9.9626 Tf 425.628 509.612 Td [(geamax)]TJ ET q 1 0 0 1 179.304 505.827 cm @@ -10977,97 +10974,97 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 477.448 Td [(T)92(able)-250(4:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 477.448 Td [(T)92(able)-250(4:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -30.014 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -30.014 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -18.652 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -18.652 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -18.653 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 362.308 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 362.308 Tm [(psb)]TJ ET q 1 0 0 1 436.673 362.508 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 362.308 Td [(T)]TJ +/F131 9.9626 Tf 439.811 362.308 Td [(T)]TJ ET q 1 0 0 1 445.669 362.508 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 362.308 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 362.308 Td [(vect)]TJ ET q 1 0 0 1 470.356 362.508 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 362.308 Td [(type)]TJ +/F131 9.9626 Tf 473.495 362.308 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(4)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -18.652 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -18.652 Td [(desc)]TJ ET q 1 0 0 1 171.218 331.9 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 331.701 Td [(a)]TJ +/F75 9.9626 Tf 174.207 331.701 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 284.079 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 283.88 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 283.88 Td [(desc)]TJ ET q 1 0 0 1 348.86 284.079 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 283.88 Td [(type)]TJ +/F131 9.9626 Tf 351.998 283.88 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -18.653 Td [(global)]TJ +/F75 9.9626 Tf -222.214 -18.653 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(Speci\002es)-226(whether)-227(the)-226(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.955 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.319 0 Td [(global)]TJ +/F84 9.9626 Tf 0.994 0 0 1 184.468 265.227 Tm [(Speci\002es)-250(whether)-250(t)1(he)-250(computation)-250(should)-250(include)-250(the)-249(global)-250(r)18(eduction)]TJ 1 0 0 1 175.611 253.272 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.319 0 Td [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -190.225 -30.607 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -190.225 -30.607 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.653 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(vector)]TJ/F60 9.9626 Tf 128.562 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -181.637 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ +/F84 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(vector)]TJ/F78 9.9626 Tf 128.562 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0.98 0 0 1 175.611 144.236 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 206.422 144.236 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 237.009 144.236 Tm [(unless)-244(the)-244(optional)-244(variable)]TJ/F131 9.9626 Tf 1 0 0 1 358.293 144.236 Tm [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 433.899 144.236 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 175.611 132.281 Tm [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G 141.968 -29.888 Td [(36)]TJ 0 g 0 G @@ -11075,25 +11072,25 @@ ET endstream endobj -1183 0 obj +1186 0 obj << -/Length 3043 +/Length 3133 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(ove)1(r)18(head.)-514(It)-318(may)-318(be)-318(necessary)-317(and/or)-318(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-333(multiple)-333(norms)-332(at)-333(the)-333(same)-333(time;)-374(in)-333(this)-333(case,)-354(it)-332(is)-333(possible)-333(to)]TJ 0 -11.955 Td [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ + 0.98 0 0 1 124.493 616.465 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)18(es)-200(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 124.802 604.51 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-264(be)-265(necessary)-265(and/or)-265(advisable)-265(to)]TJ 1.02 0 0 1 124.802 592.555 Tm [(compute)-287(multiple)-287(norms)-287(at)-287(the)-287(same)-287(time;)-308(in)-286(this)-287(case,)-298(it)-287(is)-287(possible)-287(to)]TJ 1 0 0 1 124.802 580.6 Tm [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F67 9.9626 Tf 52.303 -19.926 Td [(vres\050)]TJ +/F131 9.9626 Tf 52.303 -19.926 Td [(vres\050)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G @@ -11161,7 +11158,7 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(3)]TJ 0 g 0 G - [(\051\051)]TJ/F62 9.9626 Tf -52.303 -19.926 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communicati)1(on,)-254(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.955 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ + [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 124.802 504.884 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(laten)1(cy-)]TJ 1 0 0 1 124.802 492.928 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ 0 g 0 G 141.968 -402.49 Td [(37)]TJ 0 g 0 G @@ -11169,26 +11166,26 @@ ET endstream endobj -1192 0 obj +1195 0 obj << -/Length 6432 +/Length 6489 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.5)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.5)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-256(subr)18(outine)-255(computes)-256(a)-256(series)-255(of)-256(in\002nity)-256(norms)-256(on)-255(the)-256(columns)-256(of)-255(a)-256(dense)]TJ 0 -11.955 Td [(matrix)]TJ/F60 9.9626 Tf 31.785 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(:)]TJ/F60 9.9626 Tf 88.539 -11.955 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.294 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.042 0 Td [(\040)]TJ/F62 9.9626 Tf 13.273 0 Td [(max)]TJ/F60 7.5716 Tf 7.759 -7.336 Td [(k)]TJ/F91 10.3811 Tf 12.944 7.336 Td [(j)]TJ/F60 9.9626 Tf 3.298 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(,)]TJ/F60 9.9626 Tf 4.206 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ/F84 9.9626 Tf 1.003 0 0 1 150.396 687.165 Tm [(This)-250(subr)18(outine)-250(computes)-250(a)-251(series)-250(of)-250(in\002nity)-250(norms)-250(on)-250(the)-250(columns)-251(of)-250(a)-250(dense)]TJ 1 0 0 1 150.705 675.21 Tm [(matrix)]TJ/F78 9.9626 Tf 31.785 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(:)]TJ/F78 9.9626 Tf 88.539 -11.955 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.294 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.042 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 7.759 -7.336 Td [(k)]TJ/F179 10.3811 Tf 12.944 7.336 Td [(j)]TJ/F78 9.9626 Tf 3.298 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(k)]TJ/F84 9.9626 Tf 4.598 0 Td [(,)]TJ/F78 9.9626 Tf 4.206 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -195.028 -22.296 Td [(call)]TJ +/F131 9.9626 Tf -195.028 -22.296 Td [(call)]TJ 0 g 0 G [-525(psb_geamaxs\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -11209,42 +11206,42 @@ q []0 d 0 J 0.398 w 0 0 m 290.737 0 l S Q BT -/F60 9.9626 Tf 183.195 618.023 Td [(r)-17(e)-25(s)-8868(x)]TJ/F59 9.9626 Tf 221.013 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 183.195 618.023 Td [(r)-17(e)-25(s)-8868(x)]TJ/F75 9.9626 Tf 221.013 0 Td [(Subroutine)]TJ ET q 1 0 0 1 177.192 614.237 cm []0 d 0 J 0.398 w 0 0 m 290.737 0 l S Q BT -/F62 9.9626 Tf 183.17 605.669 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 183.17 605.669 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 420.527 605.868 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 605.669 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 423.516 605.669 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 420.527 593.913 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 593.714 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 423.516 593.714 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 420.527 581.958 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 581.759 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 423.516 581.759 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 420.527 570.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 569.804 Td [(geamaxs)]TJ +/F84 9.9626 Tf 423.516 569.804 Td [(geamaxs)]TJ ET q 1 0 0 1 177.192 566.018 cm @@ -11252,112 +11249,112 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 537.639 Td [(T)92(able)-250(5:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 537.639 Td [(T)92(able)-250(5:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 415.5 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 415.5 Tm [(psb)]TJ ET q 1 0 0 1 436.673 415.699 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 415.5 Td [(T)]TJ +/F131 9.9626 Tf 439.811 415.5 Td [(T)]TJ ET q 1 0 0 1 445.669 415.699 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 415.5 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 415.5 Td [(vect)]TJ ET q 1 0 0 1 470.356 415.699 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 415.5 Td [(type)]TJ +/F131 9.9626 Tf 473.495 415.5 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(desc)]TJ ET q 1 0 0 1 171.218 383.818 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 383.619 Td [(a)]TJ +/F75 9.9626 Tf 174.207 383.619 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 335.998 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 335.798 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 335.798 Td [(desc)]TJ ET q 1 0 0 1 348.86 335.998 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 335.798 Td [(type)]TJ +/F131 9.9626 Tf 351.998 335.798 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.214 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(res)]TJ 0 g 0 G -/F62 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(the)-250(columns)-250(of)]TJ/F60 9.9626 Tf 166.26 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.82 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.956 Td [(Speci\002ed)-330(as:)-470(a)-330(number)-330(or)-330(a)-330(rank-one)-330(array)-329(of)-330(long)-330(pr)18(ecision)-330(r)18(eal)-330(num-)]TJ 0 -11.955 Td [(bers.)]TJ +/F84 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(the)-250(columns)-250(of)]TJ/F78 9.9626 Tf 166.26 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.82 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.981 0 0 1 175.611 260.082 Tm [(Speci\002ed)-255(as:)-316(a)-255(number)-255(or)-254(a)-255(rank-one)-255(array)-255(of)-255(long)-254(pr)18(ecision)-255(r)18(eal)-254(numbers.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 240.157 Tm [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -89.943 Td [(38)]TJ + 142.356 -101.898 Td [(38)]TJ 0 g 0 G ET endstream endobj -1200 0 obj +1203 0 obj << -/Length 7404 +/Length 7563 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.6)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.6)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 206.349 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -211.554 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.46 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 125.989 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F91 10.3811 Tf 25.352 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.007 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F62 9.9626 Tf -195.526 -21.269 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 71.974 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F91 10.3811 Tf 25.353 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F93 10.3811 Tf 8.17 0 Td [(\050)]TJ/F60 9.9626 Tf 4.443 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F93 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(k)]TJ/F60 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F93 10.3811 Tf 11.088 0 Td [(\050)]TJ/F60 9.9626 Tf 4.444 0 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F67 9.9626 Tf -216.928 -19.411 Td [(psb_geasum\050x,)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf -51.429 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 206.348 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -211.246 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.46 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 125.989 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F179 10.3811 Tf 25.352 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.007 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F84 9.9626 Tf -195.526 -21.269 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 71.974 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F179 10.3811 Tf 25.353 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F181 10.3811 Tf 8.17 0 Td [(\050)]TJ/F78 9.9626 Tf 4.443 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F181 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F181 10.3811 Tf 11.088 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F131 9.9626 Tf -216.928 -19.411 Td [(psb_geasum\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(desc_a,)]TJ @@ -11385,42 +11382,42 @@ q []0 d 0 J 0.398 w 0 0 m 286.622 0 l S Q BT -/F60 9.9626 Tf 134.691 567.457 Td [(a)-25(s)-25(u)-25(m)-7810(x)]TJ/F59 9.9626 Tf 220.765 0 Td [(Function)]TJ +/F78 9.9626 Tf 134.691 567.457 Td [(a)-25(s)-25(u)-25(m)-7810(x)]TJ/F75 9.9626 Tf 220.765 0 Td [(Function)]TJ ET q 1 0 0 1 128.44 563.671 cm []0 d 0 J 0.398 w 0 0 m 286.622 0 l S Q BT -/F62 9.9626 Tf 134.417 555.103 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 134.417 555.103 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 371.775 555.303 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 555.103 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 374.763 555.103 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 371.775 543.347 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 543.148 Td [(geasum)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 374.763 543.148 Td [(geasum)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 371.775 531.392 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 531.193 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 374.763 531.193 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 371.775 519.437 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 519.238 Td [(geasum)]TJ +/F84 9.9626 Tf 374.763 519.238 Td [(geasum)]TJ ET q 1 0 0 1 128.44 515.452 cm @@ -11428,97 +11425,97 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 487.074 Td [(T)92(able)-250(6:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 229.958 487.074 Td [(T)92(able)-250(6:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -33.561 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -33.561 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.665 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.665 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.666 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 366.361 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 366.361 Tm [(psb)]TJ ET q 1 0 0 1 385.864 366.56 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 366.361 Td [(T)]TJ +/F131 9.9626 Tf 389.002 366.361 Td [(T)]TJ ET q 1 0 0 1 394.86 366.56 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 366.361 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 366.361 Td [(vect)]TJ ET q 1 0 0 1 419.547 366.56 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 366.361 Td [(type)]TJ +/F131 9.9626 Tf 422.685 366.361 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(6)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.666 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.666 Td [(desc)]TJ ET q 1 0 0 1 120.408 334.939 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 334.74 Td [(a)]TJ +/F75 9.9626 Tf 123.397 334.74 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 287.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 286.919 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 286.919 Td [(desc)]TJ ET q 1 0 0 1 298.05 287.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 286.919 Td [(type)]TJ +/F131 9.9626 Tf 301.189 286.919 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.665 Td [(global)]TJ +/F75 9.9626 Tf -222.215 -19.665 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.764 0 Td [(Speci\002es)-226(whether)-226(the)-227(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.955 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.318 0 Td [(global)]TJ +/F84 9.9626 Tf 0.994 0 0 1 133.659 267.254 Tm [(Speci\002es)-250(whether)-249(the)-250(computation)-250(should)-250(include)-249(the)-250(global)-250(r)18(eduction)]TJ 1 0 0 1 124.802 255.299 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -190.225 -31.621 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -190.225 -31.621 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.666 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(vector)]TJ/F60 9.9626 Tf 102.161 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -155.236 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ +/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(vector)]TJ/F78 9.9626 Tf 102.161 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0.98 0 0 1 124.802 144.236 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 155.612 144.236 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 186.2 144.236 Tm [(unless)-244(the)-244(optional)-244(variab)1(le)]TJ/F131 9.9626 Tf 1 0 0 1 307.484 144.236 Tm [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 383.09 144.236 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 124.802 132.281 Tm [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G 141.968 -29.888 Td [(39)]TJ 0 g 0 G @@ -11526,25 +11523,25 @@ ET endstream endobj -1205 0 obj +1208 0 obj << -/Length 3046 +/Length 3137 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(over)18(head.)-513(It)-318(may)-318(be)-318(necessary)-318(and/or)-317(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-333(multiple)-333(norms)-333(at)-332(the)-333(same)-333(time;)-374(in)-333(this)-333(case,)-354(it)-333(i)1(s)-333(possible)-333(to)]TJ 0 -11.955 Td [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ + 0.98 0 0 1 175.303 616.465 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)19(es)-201(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 175.611 604.51 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-265(be)-264(necessary)-265(and/or)-265(advisable)-265(to)]TJ 1.02 0 0 1 175.611 592.555 Tm [(compute)-287(multiple)-287(norms)-287(at)-287(the)-287(same)-287(time;)-308(in)-287(thi)1(s)-287(case,)-298(it)-287(is)-287(possible)-287(to)]TJ 1 0 0 1 175.611 580.6 Tm [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F67 9.9626 Tf 20.922 -19.926 Td [(vres\050)]TJ +/F131 9.9626 Tf 20.922 -19.926 Td [(vres\050)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G @@ -11612,7 +11609,7 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(3)]TJ 0 g 0 G - [(\051\051)]TJ/F62 9.9626 Tf -52.304 -19.926 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communication,)-253(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.955 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ + [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 175.611 504.884 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(latency-)]TJ 1 0 0 1 175.611 492.928 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ 0 g 0 G 141.968 -402.49 Td [(40)]TJ 0 g 0 G @@ -11620,26 +11617,26 @@ ET endstream endobj -1213 0 obj +1216 0 obj << -/Length 7502 +/Length 7600 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.7)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.7)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -20.192 Td [(This)-216(subr)18(outine)-217(computes)-216(a)-217(series)-216(of)-216(1-norms)-217(on)-216(the)-217(columns)-216(of)-216(a)-217(dense)-216(matrix)]TJ/F60 9.9626 Tf 0.294 -11.955 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(:)]TJ/F60 9.9626 Tf 120.031 -13.856 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)]TJ/F62 9.9626 Tf 13.273 0 Td [(max)]TJ/F60 7.5716 Tf 7.76 -7.335 Td [(k)]TJ/F91 10.3811 Tf 12.944 7.335 Td [(j)]TJ/F60 9.9626 Tf 3.298 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.273 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(,)]TJ/F60 9.9626 Tf 4.206 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F62 9.9626 Tf -215.202 -24.535 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 206.349 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -211.554 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.46 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 125.227 -23.185 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.007 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F62 9.9626 Tf -196.039 -23.185 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 71.212 -23.185 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.294 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F93 10.3811 Tf 8.169 0 Td [(\050)]TJ/F60 9.9626 Tf 4.444 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F93 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(k)]TJ/F60 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F93 10.3811 Tf 11.088 0 Td [(\050)]TJ/F60 9.9626 Tf 4.443 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf 0.988 0 0 1 99.587 685.937 Tm [(This)-253(subr)18(outine)-253(computes)-253(a)-253(series)-253(of)-253(1-norms)-253(on)-253(the)-253(columns)-254(of)-253(a)-253(dense)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 100.189 673.982 Tm [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(:)]TJ/F78 9.9626 Tf 120.031 -13.856 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 7.76 -7.335 Td [(k)]TJ/F179 10.3811 Tf 12.944 7.335 Td [(j)]TJ/F78 9.9626 Tf 3.298 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.273 0 Td [(k)]TJ/F84 9.9626 Tf 4.598 0 Td [(,)]TJ/F78 9.9626 Tf 4.206 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F84 9.9626 Tf -215.511 -24.535 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 206.349 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -211.245 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.46 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 125.227 -23.185 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.006 0 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F84 9.9626 Tf -196.039 -23.185 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 71.212 -23.185 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.294 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F181 10.3811 Tf 8.169 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F181 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F181 10.3811 Tf 11.088 0 Td [(\050)]TJ/F78 9.9626 Tf 4.443 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -212.21 -21.96 Td [(call)]TJ +/F131 9.9626 Tf -212.21 -21.96 Td [(call)]TJ 0 g 0 G [-525(psb_geasums\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -11660,42 +11657,42 @@ q []0 d 0 J 0.398 w 0 0 m 290.846 0 l S Q BT -/F60 9.9626 Tf 132.33 506.059 Td [(r)-17(e)-25(s)-8868(x)]TJ/F59 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 132.33 506.059 Td [(r)-17(e)-25(s)-8868(x)]TJ/F75 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ ET q 1 0 0 1 126.328 502.274 cm []0 d 0 J 0.398 w 0 0 m 290.846 0 l S Q BT -/F62 9.9626 Tf 132.305 493.706 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 132.305 493.706 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 369.663 493.905 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 493.706 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 372.651 493.706 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 369.663 481.95 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 481.751 Td [(geasums)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 372.651 481.751 Td [(geasums)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 369.663 469.995 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 469.795 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 372.651 469.795 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 369.663 458.04 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 457.84 Td [(geasums)]TJ +/F84 9.9626 Tf 372.651 457.84 Td [(geasums)]TJ ET q 1 0 0 1 126.328 454.054 cm @@ -11703,85 +11700,85 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 425.676 Td [(T)92(able)-250(7:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 229.958 425.676 Td [(T)92(able)-250(7:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -37.636 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -37.636 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.46 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -22.46 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.459 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 295.3 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 295.3 Tm [(psb)]TJ ET q 1 0 0 1 385.864 295.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 295.3 Td [(T)]TJ +/F131 9.9626 Tf 389.002 295.3 Td [(T)]TJ ET q 1 0 0 1 394.86 295.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 295.3 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 295.3 Td [(vect)]TJ ET q 1 0 0 1 419.547 295.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 295.3 Td [(type)]TJ +/F131 9.9626 Tf 422.685 295.3 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(7)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.459 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -22.459 Td [(desc)]TJ ET q 1 0 0 1 120.408 261.085 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 260.886 Td [(a)]TJ +/F75 9.9626 Tf 123.397 260.886 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 213.264 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 213.065 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 213.065 Td [(desc)]TJ ET q 1 0 0 1 298.05 213.264 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 213.065 Td [(type)]TJ +/F131 9.9626 Tf 301.189 213.065 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -22.459 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -22.459 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.46 Td [(res)]TJ 0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F60 9.9626 Tf 176.182 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Short)-255(as:)-320(a)-255(long)-254(pr)18(ecision)-255(r)18(eal)-255(number)74(.)-325(Speci\002ed)-255(as:)-320(a)-254(long)-255(pr)18(ecision)-255(r)18(eal)]TJ 0 -11.955 Td [(number)74(.)]TJ +/F84 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F78 9.9626 Tf 176.182 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 1.003 0 0 1 124.802 132.281 Tm [(Short)-248(as:)-309(a)-249(long)-248(pr)18(ecision)-248(r)18(eal)-249(number)74(.)-309(Speci\002ed)-248(as:)-309(a)-248(long)-249(pr)18(ecision)-248(r)18(eal)]TJ 1 0 0 1 124.802 120.326 Tm [(number)74(.)]TJ 0 g 0 G 141.968 -29.888 Td [(41)]TJ 0 g 0 G @@ -11789,55 +11786,55 @@ ET endstream endobj -1218 0 obj +1221 0 obj << -/Length 583 +/Length 581 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -567.87 Td [(42)]TJ + 142.356 -567.87 Td [(42)]TJ 0 g 0 G ET endstream endobj -1225 0 obj +1228 0 obj << -/Length 6687 +/Length 6751 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.8)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.8)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -20.076 Td [(This)-250(function)-250(computes)-250(the)-250(2-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 206.349 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -211.554 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.46 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F60 9.9626 Tf 122.551 -25.46 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.788 0 Td [(2)]TJ/F91 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf -51.429 -20.076 Td [(This)-250(function)-250(computes)-250(the)-250(2-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 206.348 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -211.246 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.46 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F78 9.9626 Tf 122.551 -25.46 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.788 0 Td [(2)]TJ/F179 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ ET q 1 0 0 1 287.432 658.569 cm []0 d 0 J 0.408 w 0 0 m 16.592 0 l S Q BT -/F60 9.9626 Tf 287.726 648.638 Td [(x)]TJ/F60 7.5716 Tf 5.399 2.88 Td [(T)]TJ/F60 9.9626 Tf 5.694 -2.88 Td [(x)]TJ/F62 9.9626 Tf -198.924 -23.065 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F60 9.9626 Tf 103.113 -25.46 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.789 0 Td [(2)]TJ/F91 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ +/F78 9.9626 Tf 287.726 648.638 Td [(x)]TJ/F78 7.5716 Tf 5.399 2.88 Td [(T)]TJ/F78 9.9626 Tf 5.694 -2.88 Td [(x)]TJ/F84 9.9626 Tf -198.924 -23.065 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F78 9.9626 Tf 103.113 -25.46 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.789 0 Td [(2)]TJ/F179 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ ET q 1 0 0 1 286.694 610.044 cm []0 d 0 J 0.408 w 0 0 m 18.069 0 l S Q BT -/F60 9.9626 Tf 286.988 600.113 Td [(x)]TJ/F60 7.5716 Tf 5.588 2.88 Td [(H)]TJ/F60 9.9626 Tf 6.982 -2.88 Td [(x)]TJ +/F78 9.9626 Tf 286.988 600.113 Td [(x)]TJ/F78 7.5716 Tf 5.588 2.88 Td [(H)]TJ/F78 9.9626 Tf 6.982 -2.88 Td [(x)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -11847,42 +11844,42 @@ q []0 d 0 J 0.398 w 0 0 m 286.124 0 l S Q BT -/F60 9.9626 Tf 134.791 566.896 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.788 0 Td [(2)]TJ/F60 9.9626 Tf 82.505 0 Td [(x)]TJ/F59 9.9626 Tf 120.621 0 Td [(Function)]TJ +/F78 9.9626 Tf 134.791 566.896 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.788 0 Td [(2)]TJ/F78 9.9626 Tf 82.505 0 Td [(x)]TJ/F75 9.9626 Tf 120.621 0 Td [(Function)]TJ ET q 1 0 0 1 128.689 563.111 cm []0 d 0 J 0.398 w 0 0 m 286.124 0 l S Q BT -/F62 9.9626 Tf 134.667 554.543 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 134.667 554.543 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 372.024 554.742 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 554.543 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 375.012 554.543 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 372.024 542.787 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 542.588 Td [(genrm2)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 375.012 542.588 Td [(genrm2)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 372.024 530.832 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 530.632 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 375.012 530.632 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 372.024 518.876 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 518.677 Td [(genrm2)]TJ +/F84 9.9626 Tf 375.012 518.677 Td [(genrm2)]TJ ET q 1 0 0 1 128.689 514.891 cm @@ -11890,10 +11887,10 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 486.513 Td [(T)92(able)-250(8:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 229.958 486.513 Td [(T)92(able)-250(8:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -115.119 -27.631 Td [(psb_genrm2\050x,)]TJ +/F131 9.9626 Tf -115.119 -27.631 Td [(psb_genrm2\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(desc_a,)]TJ @@ -11913,168 +11910,168 @@ BT 0 g 0 G [-525([,global]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -36.169 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -36.169 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.221 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -22.221 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.221 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 318.495 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 318.495 Tm [(psb)]TJ ET q 1 0 0 1 385.864 318.695 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 318.495 Td [(T)]TJ +/F131 9.9626 Tf 389.002 318.495 Td [(T)]TJ ET q 1 0 0 1 394.86 318.695 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 318.495 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 318.495 Td [(vect)]TJ ET q 1 0 0 1 419.547 318.695 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 318.495 Td [(type)]TJ +/F131 9.9626 Tf 422.685 318.495 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(8)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.221 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -22.221 Td [(desc)]TJ ET q 1 0 0 1 120.408 284.518 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 284.319 Td [(a)]TJ +/F75 9.9626 Tf 123.397 284.319 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 236.698 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 236.499 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 236.499 Td [(desc)]TJ ET q 1 0 0 1 298.05 236.698 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 236.499 Td [(type)]TJ +/F131 9.9626 Tf 301.189 236.499 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -22.221 Td [(global)]TJ +/F75 9.9626 Tf -222.215 -22.221 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.764 0 Td [(Speci\002es)-226(whether)-226(the)-227(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.956 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.318 0 Td [(global)]TJ +/F84 9.9626 Tf 0.994 0 0 1 133.659 214.278 Tm [(Speci\002es)-250(whether)-249(the)-250(computation)-250(should)-250(include)-249(the)-250(global)-250(r)18(eduction)]TJ 1 0 0 1 124.802 202.322 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -190.225 -34.176 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -190.225 -34.176 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(43)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(43)]TJ 0 g 0 G ET endstream endobj -1231 0 obj +1234 0 obj << -/Length 4322 +/Length 4508 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(Function)-250(V)111(alue)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(Function)-250(V)111(alue)]TJ 0 g 0 G -/F62 9.9626 Tf 73.882 0 Td [(is)-250(the)-250(2-norm)-250(of)-250(vector)]TJ/F60 9.9626 Tf 102.161 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -156.342 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ +/F84 9.9626 Tf 73.882 0 Td [(is)-250(the)-250(2-norm)-250(of)-250(vector)]TJ/F78 9.9626 Tf 102.161 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0.98 0 0 1 175.611 694.174 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 206.422 694.174 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 237.009 694.174 Tm [(unless)-244(the)-244(optional)-244(variable)]TJ/F131 9.9626 Tf 1 0 0 1 358.293 694.174 Tm [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 433.899 694.174 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 175.611 682.219 Tm [(i\002ed)]TJ -0.308 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(over)18(head.)-513(It)-318(may)-318(be)-318(necessary)-318(and/or)-317(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-333(multiple)-333(norms)-333(at)-332(the)-333(same)-333(time;)-374(in)-333(this)-333(case,)-354(it)-332(is)-333(possible)-333(to)]TJ 0 -11.955 Td [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 24.981 -17.933 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(1)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ + 0.98 0 0 1 175.303 548.719 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)19(es)-201(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 175.611 536.764 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-265(be)-264(necessary)-265(and/or)-265(advisable)-265(to)]TJ 1.02 0 0 1 175.611 524.809 Tm [(compute)-287(multiple)-287(norms)-287(at)-287(the)-287(same)-287(time;)-308(in)-287(thi)1(s)-287(case,)-298(it)-287(is)-287(possible)-287(to)]TJ 1 0 0 1 175.611 512.854 Tm [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 24.981 -17.933 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(1)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ ET q 1 0 0 1 278.034 495.12 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 281.627 494.921 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(1)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ +/F84 9.9626 Tf 281.627 494.921 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(1)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ ET q 1 0 0 1 367.96 495.12 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 371.922 494.921 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(2)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ +/F84 9.9626 Tf 371.922 494.921 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(2)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ ET q 1 0 0 1 278.034 483.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 281.627 482.966 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(2)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ +/F84 9.9626 Tf 281.627 482.966 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(2)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ ET q 1 0 0 1 367.96 483.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 371.922 482.966 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(3)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ +/F84 9.9626 Tf 371.922 482.966 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(3)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ ET q 1 0 0 1 278.034 471.21 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 281.627 471.011 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(3)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ +/F84 9.9626 Tf 281.627 471.011 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(3)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ ET q 1 0 0 1 367.96 471.21 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 371.922 471.011 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -170.658 -11.956 Td [(c)-175(a)-175(l)-174(l)-831(p)-56(s)-56(b)]TJ +/F84 9.9626 Tf 371.922 471.011 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -170.658 -11.956 Td [(c)-175(a)-175(l)-174(l)-831(p)-56(s)-56(b)]TJ ET q 1 0 0 1 247.952 459.255 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 251.497 459.055 Td [(n)-56(r)-56(m)-55(2)-190(\050)-264(c)-132(t)-131(x)-131(t)-438(,)-283(v)-107(r)-107(e)-108(s)-300(\050)-193(1)-193(:)-193(3)-193(\051)-193(\051)]TJ +/F84 9.9626 Tf 251.497 459.055 Td [(n)-56(r)-56(m)-55(2)-190(\050)-264(c)-132(t)-131(x)-131(t)-438(,)-283(v)-107(r)-107(e)-108(s)-300(\050)-193(1)-193(:)-193(3)-193(\051)-193(\051)]TJ 0 g 0 G 0 g 0 G - -75.886 -21.917 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communication,)-253(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.956 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ + 1.007 0 0 1 175.611 437.138 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(latency-)]TJ 1 0 0 1 175.611 425.182 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ 0 g 0 G 141.968 -334.744 Td [(44)]TJ 0 g 0 G @@ -12082,26 +12079,26 @@ ET endstream endobj -1244 0 obj +1247 0 obj << -/Length 6244 +/Length 6303 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.9)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.9)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -18.964 Td [(This)-216(subr)18(outine)-217(computes)-216(a)-217(series)-216(of)-216(2-norms)-217(on)-216(the)-217(columns)-216(of)-216(a)-217(dense)-216(matrix)]TJ/F60 9.9626 Tf 0.294 -11.955 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(:)]TJ/F60 9.9626 Tf 126.858 -11.955 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.294 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.006 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf 0.988 0 0 1 99.587 687.165 Tm [(This)-253(subr)18(outine)-253(computes)-253(a)-253(series)-253(of)-253(2-norms)-253(on)-253(the)-253(columns)-254(of)-253(a)-253(dense)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 100.189 675.21 Tm [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(:)]TJ/F78 9.9626 Tf 126.858 -11.955 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.294 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.006 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -186.919 -16.189 Td [(call)]TJ +/F131 9.9626 Tf -186.919 -16.189 Td [(call)]TJ 0 g 0 G [-525(psb_genrm2s\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -12122,42 +12119,42 @@ q []0 d 0 J 0.398 w 0 0 m 290.348 0 l S Q BT -/F60 9.9626 Tf 132.579 622.386 Td [(r)-17(e)-25(s)-8868(x)]TJ/F59 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 132.579 622.386 Td [(r)-17(e)-25(s)-8868(x)]TJ/F75 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ ET q 1 0 0 1 126.577 618.6 cm []0 d 0 J 0.398 w 0 0 m 290.348 0 l S Q BT -/F62 9.9626 Tf 132.554 610.032 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 132.554 610.032 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 369.912 610.231 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 610.032 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 372.9 610.032 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 369.912 598.276 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 598.077 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 372.9 598.077 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 369.912 586.321 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 586.122 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 372.9 586.122 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 369.912 574.366 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 574.167 Td [(genrm2s)]TJ +/F84 9.9626 Tf 372.9 574.167 Td [(genrm2s)]TJ ET q 1 0 0 1 126.577 570.381 cm @@ -12165,116 +12162,116 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 542.002 Td [(T)92(able)-250(9:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 229.958 542.002 Td [(T)92(able)-250(9:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 419.863 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 419.863 Tm [(psb)]TJ ET q 1 0 0 1 385.864 420.062 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 419.863 Td [(T)]TJ +/F131 9.9626 Tf 389.002 419.863 Td [(T)]TJ ET q 1 0 0 1 394.86 420.062 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 419.863 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 419.863 Td [(vect)]TJ ET q 1 0 0 1 419.547 420.062 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 419.863 Td [(type)]TJ +/F131 9.9626 Tf 422.685 419.863 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(9)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(desc)]TJ ET q 1 0 0 1 120.408 388.181 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 387.982 Td [(a)]TJ +/F75 9.9626 Tf 123.397 387.982 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 340.361 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 340.161 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 340.161 Td [(desc)]TJ ET q 1 0 0 1 298.05 340.361 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 340.161 Td [(type)]TJ +/F131 9.9626 Tf 301.189 340.161 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(res)]TJ 0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F60 9.9626 Tf 176.182 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F78 9.9626 Tf 176.182 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -106.261 Td [(45)]TJ + 142.357 -106.261 Td [(45)]TJ 0 g 0 G ET endstream endobj -1251 0 obj +1254 0 obj << -/Length 5385 +/Length 5390 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.10)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.10)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(matrix)]TJ/F60 9.9626 Tf 208.231 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(:)]TJ/F60 9.9626 Tf -74.65 -33.873 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.788 0 Td [(1)]TJ/F91 10.3811 Tf 7.873 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.335 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F62 9.9626 Tf -198.652 -20.06 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F84 9.9626 Tf -57.407 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(matrix)]TJ/F78 9.9626 Tf 208.232 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(:)]TJ/F78 9.9626 Tf -74.341 -33.873 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.788 0 Td [(1)]TJ/F179 10.3811 Tf 7.873 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.335 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F84 9.9626 Tf -199.071 -20.06 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.622 -19.925 Td [(A)]TJ +/F78 9.9626 Tf 1.041 -19.925 Td [(A)]TJ 0 g 0 G -/F62 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F60 9.9626 Tf 125.981 0 Td [(A)]TJ +/F84 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F78 9.9626 Tf 125.981 0 Td [(A)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -12284,42 +12281,42 @@ q []0 d 0 J 0.398 w 0 0 m 185.901 0 l S Q BT -/F60 9.9626 Tf 236.21 579.947 Td [(A)]TJ/F59 9.9626 Tf 120.293 0 Td [(Function)]TJ +/F78 9.9626 Tf 236.21 579.947 Td [(A)]TJ/F75 9.9626 Tf 120.293 0 Td [(Function)]TJ ET q 1 0 0 1 229.61 576.161 cm []0 d 0 J 0.398 w 0 0 m 185.901 0 l S Q BT -/F62 9.9626 Tf 235.587 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 235.587 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 372.821 567.793 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 567.594 Td [(spnrm1)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 375.81 567.594 Td [(spnrm1)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 372.821 555.838 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 555.638 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 375.81 555.638 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 372.821 543.882 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 543.683 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 375.81 543.683 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 372.821 531.927 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 531.728 Td [(spnrm1)]TJ +/F84 9.9626 Tf 375.81 531.728 Td [(spnrm1)]TJ ET q 1 0 0 1 229.61 527.942 cm @@ -12327,108 +12324,108 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 499.564 Td [(T)92(able)-250(10:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 499.564 Td [(T)92(able)-250(10:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -127.572 -33.873 Td [(psb_spnrm1\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_norm1\050A,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -127.572 -33.873 Td [(psb_spnrm1\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_norm1\050A,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 194.722 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -187.095 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 194.722 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -187.095 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.242 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.242 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 344.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 344.147 Td [(Tspmat)]TJ +/F131 9.9626 Tf 327.311 344.147 Td [(Tspmat)]TJ ET q 1 0 0 1 359.321 344.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 362.459 344.147 Td [(type)]TJ +/F131 9.9626 Tf 362.459 344.147 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -232.675 -19.926 Td [(desc)]TJ +/F75 9.9626 Tf -232.675 -19.926 Td [(desc)]TJ ET q 1 0 0 1 171.218 324.421 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 324.221 Td [(a)]TJ +/F75 9.9626 Tf 174.207 324.221 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 276.6 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 276.401 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 276.401 Td [(desc)]TJ ET q 1 0 0 1 348.86 276.6 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 276.401 Td [(type)]TJ +/F131 9.9626 Tf 351.998 276.401 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -19.926 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.214 -19.926 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F60 9.9626 Tf 150.4 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -205.587 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F78 9.9626 Tf 150.4 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -205.587 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -54.456 Td [(46)]TJ + 142.356 -54.456 Td [(46)]TJ 0 g 0 G ET endstream endobj -1258 0 obj +1261 0 obj << -/Length 5404 +/Length 5413 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.11)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.11)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(matrix)]TJ/F60 9.9626 Tf 235.459 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(:)]TJ/F60 9.9626 Tf -102.327 -33.873 Td [(n)-15(r)-35(m)-18(i)]TJ/F91 10.3811 Tf 23.698 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.336 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)]TJ/F104 7.5716 Tf 5.409 -1.494 Td [(\245)]TJ/F62 9.9626 Tf -196.335 -20.424 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(matrix)]TJ/F78 9.9626 Tf 235.458 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(:)]TJ/F78 9.9626 Tf -102.018 -33.873 Td [(n)-15(r)-35(m)-18(i)]TJ/F179 10.3811 Tf 23.698 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.336 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)]TJ/F241 7.5716 Tf 5.409 -1.494 Td [(\245)]TJ/F84 9.9626 Tf -196.753 -20.424 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.623 -19.925 Td [(A)]TJ +/F78 9.9626 Tf 1.041 -19.925 Td [(A)]TJ 0 g 0 G -/F62 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F60 9.9626 Tf 125.981 0 Td [(A)]TJ +/F84 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F78 9.9626 Tf 125.981 0 Td [(A)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -12438,42 +12435,42 @@ q []0 d 0 J 0.398 w 0 0 m 183.819 0 l S Q BT -/F60 9.9626 Tf 186.442 579.947 Td [(A)]TJ/F59 9.9626 Tf 120.292 0 Td [(Function)]TJ +/F78 9.9626 Tf 186.442 579.947 Td [(A)]TJ/F75 9.9626 Tf 120.292 0 Td [(Function)]TJ ET q 1 0 0 1 179.842 576.161 cm []0 d 0 J 0.398 w 0 0 m 183.819 0 l S Q BT -/F62 9.9626 Tf 185.819 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 185.819 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 323.053 567.793 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 567.594 Td [(spnrmi)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 326.042 567.594 Td [(spnrmi)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 323.053 555.838 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 555.638 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 326.042 555.638 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 323.053 543.882 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 543.683 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 326.042 543.683 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 323.053 531.927 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 531.728 Td [(spnrmi)]TJ +/F84 9.9626 Tf 326.042 531.728 Td [(spnrmi)]TJ ET q 1 0 0 1 179.842 527.942 cm @@ -12481,128 +12478,128 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 499.564 Td [(T)92(able)-250(11:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 499.564 Td [(T)92(able)-250(11:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -127.572 -33.873 Td [(psb_spnrmi\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_normi\050A,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -127.572 -33.873 Td [(psb_spnrmi\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_normi\050A,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 194.722 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -187.096 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 194.722 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -187.096 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 344.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 344.147 Td [(Tspmat)]TJ +/F131 9.9626 Tf 276.501 344.147 Td [(Tspmat)]TJ ET q 1 0 0 1 308.511 344.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 311.649 344.147 Td [(type)]TJ +/F131 9.9626 Tf 311.649 344.147 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -232.676 -19.926 Td [(desc)]TJ +/F75 9.9626 Tf -232.676 -19.926 Td [(desc)]TJ ET q 1 0 0 1 120.408 324.421 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 324.221 Td [(a)]TJ +/F75 9.9626 Tf 123.397 324.221 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 276.6 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 276.401 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 276.401 Td [(desc)]TJ ET q 1 0 0 1 298.05 276.6 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 276.401 Td [(type)]TJ +/F131 9.9626 Tf 301.189 276.401 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.926 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -19.926 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(in\002nity-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F60 9.9626 Tf 177.627 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -232.814 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(in\002nity-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F78 9.9626 Tf 177.627 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -232.814 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -54.456 Td [(47)]TJ + 142.357 -54.456 Td [(47)]TJ 0 g 0 G ET endstream endobj -1269 0 obj +1272 0 obj << -/Length 7972 +/Length 8070 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.12)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.12)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Product)]TJ/F62 9.9626 Tf -57.098 -19.303 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct:)]TJ/F60 9.9626 Tf 140.147 -24.611 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.397 0 Td [(a)]TJ/F60 9.9626 Tf 6.008 0 Td [(A)-42(x)]TJ/F93 10.3811 Tf 14.878 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Product)]TJ/F84 9.9626 Tf -57.407 -19.303 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct:)]TJ/F78 9.9626 Tf 140.456 -24.611 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)-42(x)]TJ/F181 10.3811 Tf 14.878 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 133.513 0 Td [(\0501\051)]TJ +/F84 9.9626 Tf 134.509 0 Td [(\0501\051)]TJ 0 g 0 G -/F60 9.9626 Tf -194.745 -20.13 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.398 0 Td [(a)]TJ/F60 9.9626 Tf 6.007 0 Td [(A)]TJ/F60 7.5716 Tf 7.511 4.115 Td [(T)]TJ/F60 9.9626 Tf 5.694 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ +/F78 9.9626 Tf -195.741 -20.13 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.398 0 Td [(a)]TJ/F78 9.9626 Tf 6.007 0 Td [(A)]TJ/F78 7.5716 Tf 7.511 4.115 Td [(T)]TJ/F78 9.9626 Tf 5.694 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 130.715 0 Td [(\0502\051)]TJ +/F84 9.9626 Tf 131.712 0 Td [(\0502\051)]TJ 0 g 0 G -/F60 9.9626 Tf -195.482 -20.129 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.397 0 Td [(a)]TJ/F60 9.9626 Tf 6.008 0 Td [(A)]TJ/F60 7.5716 Tf 7.7 4.114 Td [(H)]TJ/F60 9.9626 Tf 6.981 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ +/F78 9.9626 Tf -196.479 -20.129 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)]TJ/F78 7.5716 Tf 7.7 4.114 Td [(H)]TJ/F78 9.9626 Tf 6.981 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 129.977 0 Td [(\0503\051)]TJ +/F84 9.9626 Tf 130.974 0 Td [(\0503\051)]TJ 0 g 0 G - -317.15 -18.633 Td [(wher)18(e:)]TJ + -318.147 -18.633 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf -14.65 -20.451 Td [(x)]TJ +/F78 9.9626 Tf -14.65 -20.451 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.61 0 Td [(x)]TJ/F62 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ +/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.61 0 Td [(x)]TJ/F84 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ 0 g 0 G -/F60 9.9626 Tf -131.167 -19.132 Td [(y)]TJ +/F78 9.9626 Tf -131.167 -19.132 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.441 0 Td [(y)]TJ/F62 7.5716 Tf 5.2 -1.494 Td [(:)-13(,)-12(:)]TJ +/F84 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.441 0 Td [(y)]TJ/F84 7.5716 Tf 5.2 -1.494 Td [(:)-13(,)-12(:)]TJ 0 g 0 G -/F60 9.9626 Tf -130.23 -19.131 Td [(A)]TJ +/F78 9.9626 Tf -130.23 -19.131 Td [(A)]TJ 0 g 0 G -/F62 9.9626 Tf 12.299 0 Td [(is)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 118.41 0 Td [(A)]TJ +/F84 9.9626 Tf 12.299 0 Td [(is)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 118.41 0 Td [(A)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -12612,42 +12609,42 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.992 509.418 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(,)]TJ/F68 9.9626 Tf 5.106 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(,)]TJ/F68 9.9626 Tf 5.355 0 Td [(b)]TJ/F59 9.9626 Tf 76.437 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.992 509.418 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(,)]TJ/F133 9.9626 Tf 5.106 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 76.437 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 505.633 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 497.065 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 236.369 497.065 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 497.264 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 497.065 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 497.065 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 485.309 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 485.11 Td [(spmm)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 485.11 Td [(spmm)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 473.354 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 473.154 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 473.154 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 461.398 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 461.199 Td [(spmm)]TJ +/F84 9.9626 Tf 376.592 461.199 Td [(spmm)]TJ ET q 1 0 0 1 230.392 457.413 cm @@ -12655,13 +12652,13 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 429.035 Td [(T)92(able)-250(12:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 429.035 Td [(T)92(able)-250(12:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -107.398 -24.261 Td [(call)]TJ +/F131 9.9626 Tf -107.398 -24.261 Td [(call)]TJ 0 g 0 G [-525(psb_spmm\050alpha,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -12710,75 +12707,75 @@ BT 0 g 0 G [-525(work\051)]TJ 0 g 0 G -/F59 9.9626 Tf -5.23 -22.618 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -5.23 -22.618 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.626 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.626 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.626 Td [(alpha)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.368 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.626 Td [(a)]TJ +/F75 9.9626 Tf -24.907 -20.626 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 164.964 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -157.337 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 164.964 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -157.337 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.242 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.242 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 212.882 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 212.682 Td [(Tspmat)]TJ +/F131 9.9626 Tf 327.311 212.682 Td [(Tspmat)]TJ ET q 1 0 0 1 359.321 212.882 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 362.459 212.682 Td [(type)]TJ +/F131 9.9626 Tf 362.459 212.682 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -232.675 -20.625 Td [(x)]TJ +/F75 9.9626 Tf -232.675 -20.625 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 144.236 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 144.236 Tm [(psb)]TJ ET q 1 0 0 1 436.673 144.435 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 144.236 Td [(T)]TJ +/F131 9.9626 Tf 439.811 144.236 Td [(T)]TJ ET q 1 0 0 1 445.669 144.435 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 144.236 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 144.236 Td [(vect)]TJ ET q 1 0 0 1 470.356 144.435 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 144.236 Td [(type)]TJ +/F131 9.9626 Tf 473.495 144.236 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-278(numbers)-278(of)-279(type)-278(speci\002ed)-278(in)-278(T)92(able)]TJ +/F84 9.9626 Tf 1.015 0 0 1 175.611 132.281 Tm [(containing)-247(numbers)-246(of)-247(type)-247(speci\002ed)-246(in)-247(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-278(12)]TJ + [-246(12)]TJ 0 g 0 G - [(.)-395(The)-278(rank)-279(of)]TJ/F60 9.9626 Tf 275.498 0 Td [(x)]TJ/F62 9.9626 Tf 7.978 0 Td [(must)-278(be)]TJ -283.476 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-307(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 451.175 132.281 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 458.875 132.281 Tm [(must)-247(be)]TJ 1 0 0 1 175.611 120.326 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G 83.916 -29.888 Td [(48)]TJ 0 g 0 G @@ -12786,43 +12783,47 @@ ET endstream endobj -1157 0 obj +1160 0 obj << /Type /ObjStm /N 100 -/First 984 -/Length 11502 ->> -stream -1156 0 1152 58 1165 165 1158 349 1159 493 1160 639 1161 783 1162 928 1163 1075 1167 1219 -232 1278 1168 1336 1164 1394 1170 1527 1172 1645 1169 1703 1177 1784 1173 1941 1174 2085 1175 2231 -1179 2378 236 2437 1180 2495 1176 2554 1182 2687 1184 2805 1185 2863 1181 2920 1191 3014 1187 3171 -1188 3315 1189 3461 1193 3608 240 3667 1194 3725 1190 3784 1199 3917 1195 4074 1196 4218 1197 4361 -1201 4508 244 4566 1202 4623 1198 4680 1204 4813 1206 4931 1207 4990 1203 5048 1212 5142 1208 5299 -1209 5443 1210 5589 1214 5736 248 5794 1215 5851 1211 5909 1217 6042 1219 6160 1216 6219 1224 6300 -1220 6457 1221 6600 1222 6746 1226 6893 252 6951 1227 7008 1223 7065 1230 7185 1232 7303 1233 7362 -1234 7421 1235 7480 1236 7539 1237 7598 1238 7657 1229 7716 1243 7823 1239 7980 1240 8124 1241 8270 -1245 8417 256 8475 1246 8532 1242 8590 1250 8723 1247 8871 1248 9016 1252 9163 260 9222 1253 9280 -1249 9338 1257 9458 1254 9606 1255 9751 1259 9898 264 9956 1261 10013 1256 10070 1268 10205 1262 10371 -% 1156 0 obj +/First 983 +/Length 11440 +>> +stream +1158 0 1159 58 1155 116 1168 224 1161 408 1162 552 1163 698 1164 842 1165 987 1166 1134 +1170 1278 232 1337 1171 1395 1167 1453 1173 1589 1175 1707 1172 1765 1180 1846 1176 2003 1177 2147 +1178 2293 1182 2440 236 2499 1183 2557 1179 2616 1185 2752 1187 2870 1188 2928 1184 2985 1194 3080 +1190 3237 1191 3381 1192 3527 1196 3674 240 3733 1197 3791 1193 3850 1202 3986 1198 4143 1199 4287 +1200 4430 1204 4577 244 4635 1205 4692 1201 4749 1207 4885 1209 5003 1210 5062 1206 5120 1215 5215 +1211 5372 1212 5516 1213 5662 1217 5809 248 5867 1218 5924 1214 5982 1220 6118 1222 6236 1219 6295 +1227 6376 1223 6533 1224 6676 1225 6822 1229 6969 252 7027 1230 7084 1226 7141 1233 7263 1235 7381 +1236 7440 1237 7499 1238 7558 1239 7617 1240 7676 1241 7735 1232 7794 1246 7902 1242 8059 1243 8203 +1244 8349 1248 8496 256 8554 1249 8611 1245 8669 1253 8805 1250 8953 1251 9098 1255 9245 260 9304 +1256 9362 1252 9420 1260 9542 1257 9690 1258 9835 1262 9982 264 10040 1264 10097 1259 10154 1271 10291 +% 1158 0 obj << -/D [1153 0 R /XYZ 99.895 512.639 null] +/D [1156 0 R /XYZ 98.895 753.953 null] >> -% 1152 0 obj +% 1159 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R >> +/D [1156 0 R /XYZ 99.895 512.639 null] +>> +% 1155 0 obj +<< +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1165 0 obj +% 1168 0 obj << /Type /Page -/Contents 1166 0 R -/Resources 1164 0 R +/Contents 1169 0 R +/Resources 1167 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1140 0 R -/Annots [ 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R ] +/Parent 1143 0 R +/Annots [ 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R ] >> -% 1158 0 obj +% 1161 0 obj << /Type /Annot /Subtype /Link @@ -12830,15 +12831,15 @@ stream /Rect [419.358 384.684 495.412 396.744] /A << /S /GoTo /D (vdata) >> >> -% 1159 0 obj +% 1162 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.755 372.729 388.729 384.789] +/Rect [382.942 372.729 390.016 384.789] /A << /S /GoTo /D (table.3) >> >> -% 1160 0 obj +% 1163 0 obj << /Type /Annot /Subtype /Link @@ -12846,15 +12847,15 @@ stream /Rect [419.358 293.733 495.412 305.793] /A << /S /GoTo /D (vdata) >> >> -% 1161 0 obj +% 1164 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.88 281.778 388.854 293.837] +/Rect [373.146 281.778 380.02 293.837] /A << /S /GoTo /D (table.3) >> >> -% 1162 0 obj +% 1165 0 obj << /Type /Annot /Subtype /Link @@ -12862,58 +12863,58 @@ stream /Rect [306.858 202.781 373.916 214.841] /A << /S /GoTo /D (descdata) >> >> -% 1163 0 obj +% 1166 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.458 119.17 207.432 128.58] +/Rect [200.149 119.17 207.123 128.58] /A << /S /GoTo /D (table.2) >> >> -% 1167 0 obj +% 1170 0 obj << -/D [1165 0 R /XYZ 149.705 753.953 null] +/D [1168 0 R /XYZ 149.705 753.953 null] >> % 232 0 obj << -/D [1165 0 R /XYZ 150.705 716.092 null] +/D [1168 0 R /XYZ 150.705 716.092 null] >> -% 1168 0 obj +% 1171 0 obj << -/D [1165 0 R /XYZ 150.705 524.97 null] +/D [1168 0 R /XYZ 150.705 524.97 null] >> -% 1164 0 obj +% 1167 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1170 0 obj +% 1173 0 obj << /Type /Page -/Contents 1171 0 R -/Resources 1169 0 R +/Contents 1174 0 R +/Resources 1172 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1140 0 R +/Parent 1143 0 R >> -% 1172 0 obj +% 1175 0 obj << -/D [1170 0 R /XYZ 98.895 753.953 null] +/D [1173 0 R /XYZ 98.895 753.953 null] >> -% 1169 0 obj +% 1172 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1177 0 obj +% 1180 0 obj << /Type /Page -/Contents 1178 0 R -/Resources 1176 0 R +/Contents 1181 0 R +/Resources 1179 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1140 0 R -/Annots [ 1173 0 R 1174 0 R 1175 0 R ] +/Parent 1143 0 R +/Annots [ 1176 0 R 1177 0 R 1178 0 R ] >> -% 1173 0 obj +% 1176 0 obj << /Type /Annot /Subtype /Link @@ -12921,7 +12922,7 @@ stream /Rect [419.358 358.503 495.412 370.562] /A << /S /GoTo /D (vdata) >> >> -% 1174 0 obj +% 1177 0 obj << /Type /Annot /Subtype /Link @@ -12929,7 +12930,7 @@ stream /Rect [377.462 346.547 384.436 358.607] /A << /S /GoTo /D (table.4) >> >> -% 1175 0 obj +% 1178 0 obj << /Type /Annot /Subtype /Link @@ -12937,54 +12938,54 @@ stream /Rect [306.858 280.074 373.916 292.134] /A << /S /GoTo /D (descdata) >> >> -% 1179 0 obj +% 1182 0 obj << -/D [1177 0 R /XYZ 149.705 753.953 null] +/D [1180 0 R /XYZ 149.705 753.953 null] >> % 236 0 obj << -/D [1177 0 R /XYZ 150.705 716.092 null] +/D [1180 0 R /XYZ 150.705 716.092 null] >> -% 1180 0 obj +% 1183 0 obj << -/D [1177 0 R /XYZ 150.705 495.665 null] +/D [1180 0 R /XYZ 150.705 495.665 null] >> -% 1176 0 obj +% 1179 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1182 0 obj +% 1185 0 obj << /Type /Page -/Contents 1183 0 R -/Resources 1181 0 R +/Contents 1186 0 R +/Resources 1184 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1186 0 R +/Parent 1189 0 R >> -% 1184 0 obj +% 1187 0 obj << -/D [1182 0 R /XYZ 98.895 753.953 null] +/D [1185 0 R /XYZ 98.895 753.953 null] >> -% 1185 0 obj +% 1188 0 obj << -/D [1182 0 R /XYZ 99.895 632.19 null] +/D [1185 0 R /XYZ 99.895 632.19 null] >> -% 1181 0 obj +% 1184 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1191 0 obj +% 1194 0 obj << /Type /Page -/Contents 1192 0 R -/Resources 1190 0 R +/Contents 1195 0 R +/Resources 1193 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1186 0 R -/Annots [ 1187 0 R 1188 0 R 1189 0 R ] +/Parent 1189 0 R +/Annots [ 1190 0 R 1191 0 R 1192 0 R ] >> -% 1187 0 obj +% 1190 0 obj << /Type /Annot /Subtype /Link @@ -12992,7 +12993,7 @@ stream /Rect [419.358 411.694 495.412 423.754] /A << /S /GoTo /D (vdata) >> >> -% 1188 0 obj +% 1191 0 obj << /Type /Annot /Subtype /Link @@ -13000,7 +13001,7 @@ stream /Rect [377.462 399.739 384.436 411.798] /A << /S /GoTo /D (table.5) >> >> -% 1189 0 obj +% 1192 0 obj << /Type /Annot /Subtype /Link @@ -13008,33 +13009,33 @@ stream /Rect [306.858 331.993 373.916 344.052] /A << /S /GoTo /D (descdata) >> >> -% 1193 0 obj +% 1196 0 obj << -/D [1191 0 R /XYZ 149.705 753.953 null] +/D [1194 0 R /XYZ 149.705 753.953 null] >> % 240 0 obj << -/D [1191 0 R /XYZ 150.705 716.092 null] +/D [1194 0 R /XYZ 150.705 716.092 null] >> -% 1194 0 obj +% 1197 0 obj << -/D [1191 0 R /XYZ 150.705 555.856 null] +/D [1194 0 R /XYZ 150.705 555.856 null] >> -% 1190 0 obj +% 1193 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1199 0 obj +% 1202 0 obj << /Type /Page -/Contents 1200 0 R -/Resources 1198 0 R +/Contents 1203 0 R +/Resources 1201 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1186 0 R -/Annots [ 1195 0 R 1196 0 R 1197 0 R ] +/Parent 1189 0 R +/Annots [ 1198 0 R 1199 0 R 1200 0 R ] >> -% 1195 0 obj +% 1198 0 obj << /Type /Annot /Subtype /Link @@ -13042,7 +13043,7 @@ stream /Rect [368.549 362.555 444.603 374.615] /A << /S /GoTo /D (vdata) >> >> -% 1196 0 obj +% 1199 0 obj << /Type /Annot /Subtype /Link @@ -13050,7 +13051,7 @@ stream /Rect [326.652 350.6 333.626 362.66] /A << /S /GoTo /D (table.6) >> >> -% 1197 0 obj +% 1200 0 obj << /Type /Annot /Subtype /Link @@ -13058,54 +13059,54 @@ stream /Rect [256.048 283.114 323.106 295.173] /A << /S /GoTo /D (descdata) >> >> -% 1201 0 obj +% 1204 0 obj << -/D [1199 0 R /XYZ 98.895 753.953 null] +/D [1202 0 R /XYZ 98.895 753.953 null] >> % 244 0 obj << -/D [1199 0 R /XYZ 99.895 716.092 null] +/D [1202 0 R /XYZ 99.895 716.092 null] >> -% 1202 0 obj +% 1205 0 obj << -/D [1199 0 R /XYZ 99.895 505.29 null] +/D [1202 0 R /XYZ 99.895 505.29 null] >> -% 1198 0 obj +% 1201 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1204 0 obj +% 1207 0 obj << /Type /Page -/Contents 1205 0 R -/Resources 1203 0 R +/Contents 1208 0 R +/Resources 1206 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1186 0 R +/Parent 1189 0 R >> -% 1206 0 obj +% 1209 0 obj << -/D [1204 0 R /XYZ 149.705 753.953 null] +/D [1207 0 R /XYZ 149.705 753.953 null] >> -% 1207 0 obj +% 1210 0 obj << -/D [1204 0 R /XYZ 150.705 632.19 null] +/D [1207 0 R /XYZ 150.705 632.19 null] >> -% 1203 0 obj +% 1206 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1212 0 obj +% 1215 0 obj << /Type /Page -/Contents 1213 0 R -/Resources 1211 0 R +/Contents 1216 0 R +/Resources 1214 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1186 0 R -/Annots [ 1208 0 R 1209 0 R 1210 0 R ] +/Parent 1189 0 R +/Annots [ 1211 0 R 1212 0 R 1213 0 R ] >> -% 1208 0 obj +% 1211 0 obj << /Type /Annot /Subtype /Link @@ -13113,7 +13114,7 @@ stream /Rect [368.549 291.495 444.603 303.554] /A << /S /GoTo /D (vdata) >> >> -% 1209 0 obj +% 1212 0 obj << /Type /Annot /Subtype /Link @@ -13121,7 +13122,7 @@ stream /Rect [326.652 279.539 333.626 291.599] /A << /S /GoTo /D (table.7) >> >> -% 1210 0 obj +% 1213 0 obj << /Type /Annot /Subtype /Link @@ -13129,50 +13130,50 @@ stream /Rect [256.048 209.259 323.106 221.319] /A << /S /GoTo /D (descdata) >> >> -% 1214 0 obj +% 1217 0 obj << -/D [1212 0 R /XYZ 98.895 753.953 null] +/D [1215 0 R /XYZ 98.895 753.953 null] >> % 248 0 obj << -/D [1212 0 R /XYZ 99.895 716.092 null] +/D [1215 0 R /XYZ 99.895 716.092 null] >> -% 1215 0 obj +% 1218 0 obj << -/D [1212 0 R /XYZ 99.895 443.893 null] +/D [1215 0 R /XYZ 99.895 443.893 null] >> -% 1211 0 obj +% 1214 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1217 0 obj +% 1220 0 obj << /Type /Page -/Contents 1218 0 R -/Resources 1216 0 R +/Contents 1221 0 R +/Resources 1219 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1186 0 R +/Parent 1189 0 R >> -% 1219 0 obj +% 1222 0 obj << -/D [1217 0 R /XYZ 149.705 753.953 null] +/D [1220 0 R /XYZ 149.705 753.953 null] >> -% 1216 0 obj +% 1219 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1224 0 obj +% 1227 0 obj << /Type /Page -/Contents 1225 0 R -/Resources 1223 0 R +/Contents 1228 0 R +/Resources 1226 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1228 0 R -/Annots [ 1220 0 R 1221 0 R 1222 0 R ] +/Parent 1231 0 R +/Annots [ 1223 0 R 1224 0 R 1225 0 R ] >> -% 1220 0 obj +% 1223 0 obj << /Type /Annot /Subtype /Link @@ -13180,7 +13181,7 @@ stream /Rect [368.549 314.69 444.603 326.749] /A << /S /GoTo /D (vdata) >> >> -% 1221 0 obj +% 1224 0 obj << /Type /Annot /Subtype /Link @@ -13188,7 +13189,7 @@ stream /Rect [326.652 302.734 333.626 314.794] /A << /S /GoTo /D (table.8) >> >> -% 1222 0 obj +% 1225 0 obj << /Type /Annot /Subtype /Link @@ -13196,74 +13197,74 @@ stream /Rect [256.048 232.693 323.106 244.753] /A << /S /GoTo /D (descdata) >> >> -% 1226 0 obj +% 1229 0 obj << -/D [1224 0 R /XYZ 98.895 753.953 null] +/D [1227 0 R /XYZ 98.895 753.953 null] >> % 252 0 obj << -/D [1224 0 R /XYZ 99.895 716.092 null] +/D [1227 0 R /XYZ 99.895 716.092 null] >> -% 1227 0 obj +% 1230 0 obj << -/D [1224 0 R /XYZ 99.895 504.73 null] +/D [1227 0 R /XYZ 99.895 504.73 null] >> -% 1223 0 obj +% 1226 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1230 0 obj +% 1233 0 obj << /Type /Page -/Contents 1231 0 R -/Resources 1229 0 R +/Contents 1234 0 R +/Resources 1232 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1228 0 R +/Parent 1231 0 R >> -% 1232 0 obj +% 1235 0 obj << -/D [1230 0 R /XYZ 149.705 753.953 null] +/D [1233 0 R /XYZ 149.705 753.953 null] >> -% 1233 0 obj +% 1236 0 obj << -/D [1230 0 R /XYZ 150.705 564.444 null] +/D [1233 0 R /XYZ 150.705 564.444 null] >> -% 1234 0 obj +% 1237 0 obj << -/D [1230 0 R /XYZ 150.705 504.067 null] +/D [1233 0 R /XYZ 150.705 504.067 null] >> -% 1235 0 obj +% 1238 0 obj << -/D [1230 0 R /XYZ 175.611 506.876 null] +/D [1233 0 R /XYZ 175.611 506.876 null] >> -% 1236 0 obj +% 1239 0 obj << -/D [1230 0 R /XYZ 175.611 494.921 null] +/D [1233 0 R /XYZ 175.611 494.921 null] >> -% 1237 0 obj +% 1240 0 obj << -/D [1230 0 R /XYZ 175.611 482.966 null] +/D [1233 0 R /XYZ 175.611 482.966 null] >> -% 1238 0 obj +% 1241 0 obj << -/D [1230 0 R /XYZ 175.611 471.011 null] +/D [1233 0 R /XYZ 175.611 471.011 null] >> -% 1229 0 obj +% 1232 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1243 0 obj +% 1246 0 obj << /Type /Page -/Contents 1244 0 R -/Resources 1242 0 R +/Contents 1247 0 R +/Resources 1245 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1228 0 R -/Annots [ 1239 0 R 1240 0 R 1241 0 R ] +/Parent 1231 0 R +/Annots [ 1242 0 R 1243 0 R 1244 0 R ] >> -% 1239 0 obj +% 1242 0 obj << /Type /Annot /Subtype /Link @@ -13271,7 +13272,7 @@ stream /Rect [368.549 416.057 444.603 428.117] /A << /S /GoTo /D (vdata) >> >> -% 1240 0 obj +% 1243 0 obj << /Type /Annot /Subtype /Link @@ -13279,7 +13280,7 @@ stream /Rect [326.652 404.102 333.626 416.161] /A << /S /GoTo /D (table.9) >> >> -% 1241 0 obj +% 1244 0 obj << /Type /Annot /Subtype /Link @@ -13287,33 +13288,33 @@ stream /Rect [256.048 336.356 323.106 348.415] /A << /S /GoTo /D (descdata) >> >> -% 1245 0 obj +% 1248 0 obj << -/D [1243 0 R /XYZ 98.895 753.953 null] +/D [1246 0 R /XYZ 98.895 753.953 null] >> % 256 0 obj << -/D [1243 0 R /XYZ 99.895 716.092 null] +/D [1246 0 R /XYZ 99.895 716.092 null] >> -% 1246 0 obj +% 1249 0 obj << -/D [1243 0 R /XYZ 99.895 560.219 null] +/D [1246 0 R /XYZ 99.895 560.219 null] >> -% 1242 0 obj +% 1245 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1250 0 obj +% 1253 0 obj << /Type /Page -/Contents 1251 0 R -/Resources 1249 0 R +/Contents 1254 0 R +/Resources 1252 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1228 0 R -/Annots [ 1247 0 R 1248 0 R ] +/Parent 1231 0 R +/Annots [ 1250 0 R 1251 0 R ] >> -% 1247 0 obj +% 1250 0 obj << /Type /Annot /Subtype /Link @@ -13321,7 +13322,7 @@ stream /Rect [306.858 340.341 384.376 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1248 0 obj +% 1251 0 obj << /Type /Annot /Subtype /Link @@ -13329,33 +13330,33 @@ stream /Rect [306.858 272.595 373.916 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1252 0 obj +% 1255 0 obj << -/D [1250 0 R /XYZ 149.705 753.953 null] +/D [1253 0 R /XYZ 149.705 753.953 null] >> % 260 0 obj << -/D [1250 0 R /XYZ 150.705 716.092 null] +/D [1253 0 R /XYZ 150.705 716.092 null] >> -% 1253 0 obj +% 1256 0 obj << -/D [1250 0 R /XYZ 150.705 517.78 null] +/D [1253 0 R /XYZ 150.705 517.78 null] >> -% 1249 0 obj +% 1252 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1257 0 obj +% 1260 0 obj << /Type /Page -/Contents 1258 0 R -/Resources 1256 0 R +/Contents 1261 0 R +/Resources 1259 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1228 0 R -/Annots [ 1254 0 R 1255 0 R ] +/Parent 1231 0 R +/Annots [ 1257 0 R 1258 0 R ] >> -% 1254 0 obj +% 1257 0 obj << /Type /Annot /Subtype /Link @@ -13363,7 +13364,7 @@ stream /Rect [256.048 340.341 333.567 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1255 0 obj +% 1258 0 obj << /Type /Annot /Subtype /Link @@ -13371,209 +13372,201 @@ stream /Rect [256.048 272.595 323.106 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1259 0 obj +% 1262 0 obj << -/D [1257 0 R /XYZ 98.895 753.953 null] +/D [1260 0 R /XYZ 98.895 753.953 null] >> % 264 0 obj << -/D [1257 0 R /XYZ 99.895 716.092 null] +/D [1260 0 R /XYZ 99.895 716.092 null] >> -% 1261 0 obj +% 1264 0 obj << -/D [1257 0 R /XYZ 99.895 517.78 null] +/D [1260 0 R /XYZ 99.895 517.78 null] >> -% 1256 0 obj +% 1259 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F104 1260 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F241 1263 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1268 0 obj +% 1271 0 obj << /Type /Page -/Contents 1269 0 R -/Resources 1267 0 R +/Contents 1272 0 R +/Resources 1270 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1228 0 R -/Annots [ 1262 0 R 1263 0 R 1264 0 R 1265 0 R ] ->> -% 1262 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [428.968 277.323 440.924 289.383] -/A << /S /GoTo /D (table.12) >> +/Parent 1231 0 R +/Annots [ 1265 0 R 1266 0 R 1267 0 R 1268 0 R ] >> endstream endobj -1285 0 obj +1288 0 obj << -/Length 6532 +/Length 6714 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(beta)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(beta)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.617 0 Td [(b)]TJ/F62 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.617 0 Td [(b)]TJ/F84 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.597 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -18.597 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 591.891 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 591.891 Tm [(psb)]TJ ET q 1 0 0 1 385.864 592.09 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 591.891 Td [(T)]TJ +/F131 9.9626 Tf 389.002 591.891 Td [(T)]TJ ET q 1 0 0 1 394.86 592.09 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 591.891 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 591.891 Td [(vect)]TJ ET q 1 0 0 1 419.547 592.09 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 591.891 Td [(type)]TJ +/F131 9.9626 Tf 422.685 591.891 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.956 Td [(containing)-280(numbers)-280(of)-280(type)-280(speci\002ed)-280(in)-280(T)92(able)]TJ +/F84 9.9626 Tf 1.016 0 0 1 124.802 579.935 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-246(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-280(12)]TJ + [-246(12)]TJ 0 g 0 G - [(.)-400(The)-280(rank)-280(of)]TJ/F60 9.9626 Tf 275.562 0 Td [(y)]TJ/F62 9.9626 Tf 7.895 0 Td [(must)-280(be)]TJ -283.457 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.115 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ + [(.)-306(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 400.434 579.935 Tm [(y)]TJ/F84 9.9626 Tf 1.016 0 0 1 408.034 579.935 Tm [(must)-246(be)]TJ 1 0 0 1 124.802 567.98 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 53.115 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.228 -18.597 Td [(desc)]TJ +/F75 9.9626 Tf -83.228 -18.597 Td [(desc)]TJ ET q 1 0 0 1 120.408 549.583 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 549.383 Td [(a)]TJ +/F75 9.9626 Tf 123.397 549.383 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 501.762 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 501.563 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 501.563 Td [(desc)]TJ ET q 1 0 0 1 298.05 501.762 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 501.563 Td [(type)]TJ +/F131 9.9626 Tf 301.189 501.563 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -18.597 Td [(trans)]TJ +/F75 9.9626 Tf -222.215 -18.597 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(indicates)-250(what)-250(kind)-250(of)-250(operation)-250(to)-250(perform.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(indicates)-250(what)-250(kind)-250(of)-250(operation)-250(to)-250(perform.)]TJ 0 g 0 G -/F59 9.9626 Tf -2.759 -18.597 Td [(trans)-250(=)-250(N)]TJ +/F75 9.9626 Tf -2.759 -18.597 Td [(trans)-250(=)-250(N)]TJ 0 g 0 G -/F62 9.9626 Tf 46.983 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ +/F84 9.9626 Tf 46.983 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -46.983 -14.612 Td [(trans)-250(=)-250(T)]TJ +/F75 9.9626 Tf -46.983 -14.612 Td [(trans)-250(=)-250(T)]TJ 0 g 0 G -/F62 9.9626 Tf 45.33 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ +/F84 9.9626 Tf 45.33 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -45.33 -14.612 Td [(trans)-250(=)-250(C)]TJ +/F75 9.9626 Tf -45.33 -14.612 Td [(trans)-250(=)-250(C)]TJ 0 g 0 G -/F62 9.9626 Tf 45.878 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ +/F84 9.9626 Tf 45.878 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ 0 0 1 rg 0 0 1 RG [-250(3)]TJ 0 g 0 G - -45.878 -18.597 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F93 10.3811 Tf 25.193 0 Td [(=)]TJ/F60 9.9626 Tf 11.434 0 Td [(N)]TJ/F62 9.9626 Tf -75.267 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ + -45.878 -18.597 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F181 10.3811 Tf 25.193 0 Td [(=)]TJ/F78 9.9626 Tf 11.434 0 Td [(N)]TJ/F84 9.9626 Tf -75.267 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.596 Td [(work)]TJ +/F75 9.9626 Tf -24.907 -18.596 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(work)-250(array)111(.)]TJ -3.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-270(as:)-351(a)-270(rank)-270(one)-270(array)-271(of)-270(the)-270(same)-270(type)-271(of)]TJ/F60 9.9626 Tf 220.875 0 Td [(x)]TJ/F62 9.9626 Tf 7.898 0 Td [(and)]TJ/F60 9.9626 Tf 19.684 0 Td [(y)]TJ/F62 9.9626 Tf 7.798 0 Td [(with)-270(the)-270(T)74(AR-)]TJ -256.255 -11.955 Td [(GET)-250(attribute.)]TJ +/F84 9.9626 Tf 28.364 0 Td [(work)-250(array)111(.)]TJ -3.457 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 302.31 Tm [(Speci\002ed)-208(as:)-293(a)-208(rank)-208(one)-208(array)-208(of)-208(the)-209(same)-208(type)-208(of)]TJ/F78 9.9626 Tf 1 0 0 1 334.636 302.31 Tm [(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 341.873 302.31 Tm [(and)]TJ/F78 9.9626 Tf 1 0 0 1 360.559 302.31 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 367.696 302.31 Tm [(with)-208(the)-208(T)75(ARGET)]TJ 1 0 0 1 124.802 290.355 Tm [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.597 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -18.597 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.597 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(matrix)]TJ/F60 9.9626 Tf 144.939 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -135.659 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-379(as:)-568(an)-379(array)-379(of)-379(rank)-379(one)-379(or)-379(two)-379(containing)-379(numbers)-379(of)-379(type)]TJ 0 -11.955 Td [(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(matrix)]TJ/F78 9.9626 Tf 144.939 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -135.659 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.02 0 0 1 124.802 205.34 Tm [(Speci\002ed)-330(as:)-475(an)-331(array)-330(of)-331(rank)-330(one)-330(or)-331(two)-330(containing)-331(numbers)-330(of)-331(type)]TJ 1 0 0 1 124.802 193.385 Tm [(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.597 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -18.597 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -36.529 Td [(49)]TJ + 142.357 -36.529 Td [(49)]TJ 0 g 0 G ET endstream endobj -1292 0 obj +1295 0 obj << -/Length 8092 +/Length 8140 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.13)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.13)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(spsm)-250(\227)-250(T)111(riangular)-250(System)-250(Solve)]TJ/F62 9.9626 Tf -57.098 -19.83 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(T)90(riangular)-250(System)-250(Solve:)]TJ/F60 9.9626 Tf 122.724 -35.213 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F62 7.5716 Tf 6.228 0 Td [(1)]TJ/F60 9.9626 Tf 4.577 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -82.196 -16.139 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F91 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F62 7.5716 Tf 6.227 0 Td [(1)]TJ/F60 9.9626 Tf 4.578 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.139 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F62 7.5716 Tf 6.228 0 Td [(1)]TJ/F60 9.9626 Tf 4.607 -4.114 Td [(D)-52(x)]TJ/F93 10.3811 Tf 15.536 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F60 7.5716 Tf 6.421 0 Td [(T)]TJ/F60 9.9626 Tf 5.694 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -83.506 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F91 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F60 7.5716 Tf 6.42 0 Td [(T)]TJ/F60 9.9626 Tf 5.695 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F60 7.5716 Tf 6.421 0 Td [(T)]TJ/F60 9.9626 Tf 5.724 -4.114 Td [(D)-52(x)]TJ/F93 10.3811 Tf 15.536 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.091 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F60 7.5716 Tf 6.61 0 Td [(H)]TJ/F60 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.648 0 Td [(y)]TJ -84.982 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F91 7.8896 Tf 14.775 4.115 Td [(\000)]TJ/F60 7.5716 Tf 6.61 0 Td [(H)]TJ/F60 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.504 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -93.281 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F60 7.5716 Tf 6.61 0 Td [(H)]TJ/F60 9.9626 Tf 7.012 -4.115 Td [(D)-52(x)]TJ/F93 10.3811 Tf 15.536 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.648 0 Td [(y)]TJ/F62 9.9626 Tf -201.061 -38.202 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(spsm)-250(\227)-250(T)111(riangular)-250(System)-250(Solve)]TJ/F84 9.9626 Tf -57.407 -19.83 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(T)90(riangular)-250(System)-250(Solve:)]TJ/F78 9.9626 Tf 123.033 -35.213 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F84 7.5716 Tf 6.228 0 Td [(1)]TJ/F78 9.9626 Tf 4.577 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -82.196 -16.139 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F179 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F84 7.5716 Tf 6.227 0 Td [(1)]TJ/F78 9.9626 Tf 4.578 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.139 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F84 7.5716 Tf 6.228 0 Td [(1)]TJ/F78 9.9626 Tf 4.607 -4.114 Td [(D)-52(x)]TJ/F181 10.3811 Tf 15.536 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F78 7.5716 Tf 6.421 0 Td [(T)]TJ/F78 9.9626 Tf 5.694 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -83.506 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F179 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F78 7.5716 Tf 6.42 0 Td [(T)]TJ/F78 9.9626 Tf 5.695 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F78 7.5716 Tf 6.421 0 Td [(T)]TJ/F78 9.9626 Tf 5.724 -4.114 Td [(D)-52(x)]TJ/F181 10.3811 Tf 15.536 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.091 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F78 7.5716 Tf 6.61 0 Td [(H)]TJ/F78 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.648 0 Td [(y)]TJ -84.982 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F179 7.8896 Tf 14.775 4.115 Td [(\000)]TJ/F78 7.5716 Tf 6.61 0 Td [(H)]TJ/F78 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.504 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -93.281 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F78 7.5716 Tf 6.61 0 Td [(H)]TJ/F78 9.9626 Tf 7.012 -4.115 Td [(D)-52(x)]TJ/F181 10.3811 Tf 15.536 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.648 0 Td [(y)]TJ/F84 9.9626 Tf -201.061 -38.202 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf -14.65 -21.265 Td [(x)]TJ +/F78 9.9626 Tf -14.65 -21.265 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.61 0 Td [(x)]TJ/F62 7.5716 Tf 5.201 -1.495 Td [(:)-12(,)-13(:)]TJ +/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.61 0 Td [(x)]TJ/F84 7.5716 Tf 5.201 -1.495 Td [(:)-12(,)-13(:)]TJ 0 g 0 G -/F60 9.9626 Tf -131.167 -20.218 Td [(y)]TJ +/F78 9.9626 Tf -131.167 -20.218 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.441 0 Td [(y)]TJ/F62 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ +/F84 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.441 0 Td [(y)]TJ/F84 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ 0 g 0 G -/F60 9.9626 Tf -130.599 -20.218 Td [(T)]TJ +/F78 9.9626 Tf -130.599 -20.218 Td [(T)]TJ 0 g 0 G -/F62 9.9626 Tf 11.432 0 Td [(is)-250(the)-250(global)-250(sparse)-250(block)-250(triangular)-250(submatrix)]TJ/F60 9.9626 Tf 206.797 0 Td [(T)]TJ +/F84 9.9626 Tf 11.432 0 Td [(is)-250(the)-250(global)-250(sparse)-250(block)-250(triangular)-250(submatrix)]TJ/F78 9.9626 Tf 206.797 0 Td [(T)]TJ 0 g 0 G -218.159 -21.712 Td [(D)]TJ 0 g 0 G -/F62 9.9626 Tf 12.956 0 Td [(is)-250(the)-250(scaling)-250(diagonal)-250(matrix.)]TJ +/F84 9.9626 Tf 12.956 0 Td [(is)-250(the)-250(scaling)-250(diagonal)-250(matrix.)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 6.894 -21.266 Td [(call)]TJ +/F131 9.9626 Tf 6.894 -21.266 Td [(call)]TJ 0 g 0 G [-525(psb_spsm\050alpha,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -13642,42 +13635,42 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.623 330.871 Td [(T)]TJ/F62 9.9626 Tf 6.451 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(,)]TJ/F60 9.9626 Tf 5.306 0 Td [(D)]TJ/F62 9.9626 Tf 7.975 0 Td [(,)]TJ/F68 9.9626 Tf 5.105 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(,)]TJ/F68 9.9626 Tf 5.355 0 Td [(b)]TJ/F59 9.9626 Tf 64.393 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.623 330.871 Td [(T)]TJ/F84 9.9626 Tf 6.451 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(,)]TJ/F78 9.9626 Tf 5.306 0 Td [(D)]TJ/F84 9.9626 Tf 7.975 0 Td [(,)]TJ/F133 9.9626 Tf 5.105 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 64.393 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 327.085 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 318.517 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 236.369 318.517 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 318.716 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 318.517 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 318.517 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 306.761 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 306.562 Td [(spsm)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 306.562 Td [(spsm)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 294.806 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 294.607 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 294.607 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 282.851 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 282.652 Td [(spsm)]TJ +/F84 9.9626 Tf 376.592 282.652 Td [(spsm)]TJ ET q 1 0 0 1 230.392 278.866 cm @@ -13685,20 +13678,20 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 250.487 Td [(T)92(able)-250(13:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 250.487 Td [(T)92(able)-250(13:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -38.916 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -38.916 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.712 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -21.712 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.713 Td [(alpha)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.368 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G @@ -13710,157 +13703,157 @@ ET endstream endobj -1303 0 obj +1306 0 obj << -/Length 7295 +/Length 7462 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(t)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(t)]TJ 0 g 0 G -/F62 9.9626 Tf 8.299 0 Td [(the)-250(global)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 171.221 0 Td [(T)]TJ/F62 9.9626 Tf 6.451 0 Td [(.)]TJ -161.064 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(type)-250(speci\002ed)-250(in)-250(\247)]TJ +/F84 9.9626 Tf 8.299 0 Td [(the)-250(global)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 171.221 0 Td [(T)]TJ/F84 9.9626 Tf 6.451 0 Td [(.)]TJ -161.064 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(type)-250(speci\002ed)-250(in)-250(\247)]TJ 0 0 1 rg 0 0 1 RG [-250(3)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.65 Td [(x)]TJ +/F75 9.9626 Tf -24.907 -20.65 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 589.838 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 589.838 Tm [(psb)]TJ ET q 1 0 0 1 385.864 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 589.838 Td [(T)]TJ +/F131 9.9626 Tf 389.002 589.838 Td [(T)]TJ ET q 1 0 0 1 394.86 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 589.838 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 589.838 Td [(vect)]TJ ET q 1 0 0 1 419.547 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 589.838 Td [(type)]TJ +/F131 9.9626 Tf 422.685 589.838 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-278(numbers)-278(of)-279(type)-278(speci\002ed)-278(in)-278(T)92(able)]TJ +/F84 9.9626 Tf 1.015 0 0 1 124.802 577.883 Tm [(containing)-247(numbers)-246(of)-247(type)-247(speci\002ed)-246(in)-247(T)91(able)]TJ 0 0 1 rg 0 0 1 RG - [-278(13)]TJ + [-247(13)]TJ 0 g 0 G - [(.)-395(The)-278(rank)-278(of)]TJ/F60 9.9626 Tf 275.498 0 Td [(x)]TJ/F62 9.9626 Tf 7.977 0 Td [(must)-278(be)]TJ -283.475 -11.956 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-307(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 400.366 577.883 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 408.066 577.883 Tm [(must)-247(be)]TJ 1 0 0 1 124.802 565.927 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -82.959 -20.649 Td [(beta)]TJ +/F75 9.9626 Tf -82.959 -20.649 Td [(beta)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.617 0 Td [(b)]TJ/F62 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.617 0 Td [(b)]TJ/F84 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.65 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -20.65 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 428.986 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 428.986 Tm [(psb)]TJ ET q 1 0 0 1 385.864 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 428.986 Td [(T)]TJ +/F131 9.9626 Tf 389.002 428.986 Td [(T)]TJ ET q 1 0 0 1 394.86 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 428.986 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 428.986 Td [(vect)]TJ ET q 1 0 0 1 419.547 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 428.986 Td [(type)]TJ +/F131 9.9626 Tf 422.685 428.986 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-280(numbers)-280(of)-280(type)-280(speci\002ed)-280(in)-280(T)92(able)]TJ +/F84 9.9626 Tf 1.016 0 0 1 124.802 417.031 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-246(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-280(13)]TJ + [-246(13)]TJ 0 g 0 G - [(.)-400(The)-280(rank)-280(of)]TJ/F60 9.9626 Tf 275.562 0 Td [(y)]TJ/F62 9.9626 Tf 7.895 0 Td [(must)-280(be)]TJ -283.457 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.115 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ + [(.)-306(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 400.434 417.031 Tm [(y)]TJ/F84 9.9626 Tf 1.016 0 0 1 408.034 417.031 Tm [(must)-246(be)]TJ 1 0 0 1 124.802 405.076 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 53.115 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.228 -20.65 Td [(desc)]TJ +/F75 9.9626 Tf -83.228 -20.65 Td [(desc)]TJ ET q 1 0 0 1 120.408 384.625 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 384.426 Td [(a)]TJ +/F75 9.9626 Tf 123.397 384.426 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 336.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 336.605 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 336.605 Td [(desc)]TJ ET q 1 0 0 1 298.05 336.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 336.605 Td [(type)]TJ +/F131 9.9626 Tf 301.189 336.605 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -20.649 Td [(trans)]TJ +/F75 9.9626 Tf -222.215 -20.649 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(specify)-250(with)]TJ/F60 9.9626 Tf 56.398 0 Td [(unitd)]TJ/F62 9.9626 Tf 24.637 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(specify)-250(with)]TJ/F78 9.9626 Tf 56.398 0 Td [(unitd)]TJ/F84 9.9626 Tf 24.637 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.794 -20.65 Td [(trans)-250(=)-250('N')]TJ +/F75 9.9626 Tf -83.794 -20.65 Td [(trans)-250(=)-250('N')]TJ 0 g 0 G -/F62 9.9626 Tf 52.522 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(transposed)-250(matrix)]TJ +/F84 9.9626 Tf 52.522 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(transposed)-250(matrix)]TJ 0 g 0 G -/F59 9.9626 Tf -52.522 -16.303 Td [(trans)-250(=)-250('T')]TJ +/F75 9.9626 Tf -52.522 -16.303 Td [(trans)-250(=)-250('T')]TJ 0 g 0 G -/F62 9.9626 Tf 50.869 0 Td [(the)-250(operation)-250(is)-250(with)-250(transposed)-250(matrix.)]TJ +/F84 9.9626 Tf 50.869 0 Td [(the)-250(operation)-250(is)-250(with)-250(transposed)-250(matrix.)]TJ 0 g 0 G -/F59 9.9626 Tf -50.869 -16.302 Td [(trans)-250(=)-250('C')]TJ +/F75 9.9626 Tf -50.869 -16.302 Td [(trans)-250(=)-250('C')]TJ 0 g 0 G -/F62 9.9626 Tf 51.417 0 Td [(the)-250(operation)-250(is)-250(with)-250(conjugate)-250(transposed)-250(matrix.)]TJ -51.417 -20.65 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F93 10.3811 Tf 25.193 0 Td [(=)]TJ/F60 9.9626 Tf 11.434 0 Td [(N)]TJ/F62 9.9626 Tf -75.267 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ +/F84 9.9626 Tf 51.417 0 Td [(the)-250(operation)-250(is)-250(with)-250(conjugate)-250(transposed)-250(matrix.)]TJ -51.417 -20.65 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F181 10.3811 Tf 25.193 0 Td [(=)]TJ/F78 9.9626 Tf 11.434 0 Td [(N)]TJ/F84 9.9626 Tf -75.267 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.65 Td [(unitd)]TJ +/F75 9.9626 Tf -24.907 -20.65 Td [(unitd)]TJ 0 g 0 G -/F62 9.9626 Tf 29.878 0 Td [(specify)-250(with)]TJ/F60 9.9626 Tf 56.398 0 Td [(trans)]TJ/F62 9.9626 Tf 23.521 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ +/F84 9.9626 Tf 29.878 0 Td [(specify)-250(with)]TJ/F78 9.9626 Tf 56.398 0 Td [(trans)]TJ/F84 9.9626 Tf 23.521 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ 0 g 0 G -/F59 9.9626 Tf -84.89 -20.649 Td [(unitd)-250(=)-250('U')]TJ +/F75 9.9626 Tf -84.89 -20.649 Td [(unitd)-250(=)-250('U')]TJ 0 g 0 G -/F62 9.9626 Tf 54.186 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(scaling)]TJ +/F84 9.9626 Tf 54.186 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(scaling)]TJ 0 g 0 G -/F59 9.9626 Tf -54.186 -16.303 Td [(unitd)-250(=)-250('L)74(')]TJ +/F75 9.9626 Tf -54.186 -16.303 Td [(unitd)-250(=)-250('L)74(')]TJ 0 g 0 G -/F62 9.9626 Tf 51.785 0 Td [(the)-250(operation)-250(is)-250(with)-250(left)-250(scaling)]TJ +/F84 9.9626 Tf 51.785 0 Td [(the)-250(operation)-250(is)-250(with)-250(left)-250(scaling)]TJ 0 g 0 G -/F59 9.9626 Tf -51.785 -16.302 Td [(unitd)-250(=)-250('R')]TJ +/F75 9.9626 Tf -51.785 -16.302 Td [(unitd)-250(=)-250('R')]TJ 0 g 0 G -/F62 9.9626 Tf 53.628 0 Td [(the)-250(operation)-250(is)-250(with)-250(right)-250(scaling.)]TJ +/F84 9.9626 Tf 53.628 0 Td [(the)-250(operation)-250(is)-250(with)-250(right)-250(scaling.)]TJ 0 g 0 G 88.34 -29.888 Td [(51)]TJ 0 g 0 G @@ -13868,22 +13861,22 @@ ET endstream endobj -1309 0 obj +1312 0 obj << -/Length 4541 +/Length 4635 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 175.611 706.129 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(u)-25(n)-18(i)-32(t)-25(d)]TJ/F93 10.3811 Tf 26.159 0 Td [(=)]TJ/F60 9.9626 Tf 10.927 0 Td [(U)]TJ/F62 9.9626 Tf -75.726 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ +/F84 9.9626 Tf 175.611 706.129 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(u)-25(n)-18(i)-32(t)-25(d)]TJ/F181 10.3811 Tf 26.159 0 Td [(=)]TJ/F78 9.9626 Tf 10.927 0 Td [(U)]TJ/F84 9.9626 Tf -75.726 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(choice)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(choice)]TJ 0 g 0 G -/F62 9.9626 Tf 33.753 0 Td [(speci\002es)-250(the)-250(update)-250(of)-250(overlap)-250(elements)-250(to)-250(be)-250(performed)-250(on)-250(exit:)]TJ +/F84 9.9626 Tf 33.753 0 Td [(speci\002es)-250(the)-250(update)-250(of)-250(overlap)-250(elements)-250(to)-250(be)-250(performed)-250(on)-250(exit:)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -3.865 -19.925 Td [(psb_none_)]TJ +/F131 9.9626 Tf -3.865 -19.925 Td [(psb_none_)]TJ 0 g 0 G 0 g 0 G 0 -15.941 Td [(psb_sum_)]TJ @@ -13892,57 +13885,57 @@ BT 0 -15.94 Td [(psb_avg_)]TJ 0 g 0 G 0 g 0 G - 0 -15.94 Td [(psb_square_root_)]TJ/F62 9.9626 Tf -4.982 -19.925 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F67 9.9626 Tf 38.515 0 Td [(psb_avg_)]TJ/F62 9.9626 Tf -38.515 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ + 0 -15.94 Td [(psb_square_root_)]TJ/F84 9.9626 Tf -4.982 -19.925 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F131 9.9626 Tf 38.516 0 Td [(psb_avg_)]TJ/F84 9.9626 Tf -38.516 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(diag)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(diag)]TJ 0 g 0 G -/F62 9.9626 Tf 24.906 0 Td [(the)-250(diagonal)-250(scaling)-250(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(d)-18(i)-47(a)-47(g)]TJ/F93 10.3811 Tf 18.52 0 Td [(\050)]TJ/F62 9.9626 Tf 4.15 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)-289(=)]TJ/F62 9.9626 Tf 18.002 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)-25(o)-35(s)-25(c)-40(a)-25(l)-48(i)-32(n)-47(g)]TJ/F93 10.3811 Tf 41.384 0 Td [(\051)]TJ/F62 9.9626 Tf -135.182 -11.955 Td [(Speci\002ed)-293(as:)-395(a)-293(rank)-293(one)-293(array)-292(containing)-293(numbers)-293(of)-293(the)-292(type)-293(indicated)]TJ 0 -11.955 Td [(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 24.906 0 Td [(the)-250(diagonal)-250(scaling)-250(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(d)-18(i)-47(a)-47(g)]TJ/F181 10.3811 Tf 18.52 0 Td [(\050)]TJ/F84 9.9626 Tf 4.15 0 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\051)-289(=)]TJ/F84 9.9626 Tf 18.002 0 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)-25(o)-35(s)-25(c)-40(a)-25(l)-48(i)-32(n)-47(g)]TJ/F181 10.3811 Tf 41.384 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.611 423.19 Tm [(Speci\002ed)-253(as:)-316(a)-253(rank)-254(one)-253(array)-254(containing)-253(numbers)-254(of)-253(the)-253(type)-254(indicated)-253(in)]TJ 1 0 0 1 175.303 411.235 Tm [(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(work)]TJ +/F75 9.9626 Tf -24.598 -19.926 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(a)-250(work)-250(array)111(.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-344(as:)-498(a)-344(rank)-343(one)-344(array)-344(of)-344(the)-344(same)-344(type)-344(of)]TJ/F60 9.9626 Tf 229.679 0 Td [(x)]TJ/F62 9.9626 Tf 8.631 0 Td [(with)-344(the)-344(T)74(ARGET)]TJ -238.31 -11.955 Td [(attribute.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(a)-250(work)-250(array)111(.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 1.02 0 0 1 175.611 343.489 Tm [(Speci\002ed)-304(as:)-423(a)-305(rank)-304(one)-304(array)-305(of)-304(the)-305(same)-304(type)-305(of)]TJ/F78 9.9626 Tf 1 0 0 1 405.107 343.489 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 413.407 343.489 Tm [(with)-304(the)-305(T)73(ARGET)]TJ 1 0 0 1 175.611 331.534 Tm [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-379(as:)-568(an)-379(array)-379(of)-379(rank)-379(one)-379(or)-379(two)-379(containing)-379(numbers)-379(of)-379(type)]TJ 0 -11.955 Td [(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 1.02 0 0 1 175.611 243.862 Tm [(Speci\002ed)-330(as:)-475(an)-331(array)-330(of)-331(rank)-330(one)-330(or)-331(two)-330(containing)-331(numbers)-330(of)-331(type)]TJ 1 0 0 1 175.611 231.907 Tm [(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.943 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -73.723 Td [(52)]TJ + 142.356 -73.723 Td [(52)]TJ 0 g 0 G ET endstream endobj -1320 0 obj +1323 0 obj << -/Length 7550 +/Length 7722 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.14)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.14)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(gemlt)-250(\227)-250(Entrywise)-250(Product)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F60 9.9626 Tf 299.677 0 Td [(x)]TJ/F62 9.9626 Tf 7.697 0 Td [(and)]TJ/F60 9.9626 Tf 19.481 0 Td [(y)]TJ -187.918 -21.112 Td [(d)-25(o)-35(t)]TJ/F91 10.3811 Tf 16.336 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F60 9.9626 Tf 4.274 0 Td [(y)]TJ/F93 10.3811 Tf 5.231 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ/F67 9.9626 Tf -187.465 -21.111 Td [(psb_gemlt\050x,)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(gemlt)-250(\227)-250(Entrywise)-250(Product)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F78 9.9626 Tf 299.677 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ -187.61 -21.112 Td [(d)-25(o)-35(t)]TJ/F179 10.3811 Tf 16.336 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F78 9.9626 Tf 4.274 0 Td [(y)]TJ/F181 10.3811 Tf 5.231 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ/F131 9.9626 Tf -187.465 -21.111 Td [(psb_gemlt\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -13961,42 +13954,42 @@ q []0 d 0 J 0.398 w 0 0 m 177.433 0 l S Q BT -/F60 9.9626 Tf 189.137 622.328 Td [(d)-25(o)-35(t)]TJ/F62 9.9626 Tf 13.444 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 91.759 0 Td [(Function)]TJ +/F78 9.9626 Tf 189.137 622.328 Td [(d)-25(o)-35(t)]TJ/F84 9.9626 Tf 13.444 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 91.759 0 Td [(Function)]TJ ET q 1 0 0 1 183.035 618.542 cm []0 d 0 J 0.398 w 0 0 m 177.433 0 l S Q BT -/F62 9.9626 Tf 189.012 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 189.012 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 326.246 610.173 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 609.974 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 329.235 609.974 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 326.246 598.218 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 598.019 Td [(gemlt)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 329.235 598.019 Td [(gemlt)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 326.246 586.263 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 586.064 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 329.235 586.064 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 326.246 574.308 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 574.109 Td [(gemlt)]TJ +/F84 9.9626 Tf 329.235 574.109 Td [(gemlt)]TJ ET q 1 0 0 1 183.035 570.323 cm @@ -14004,159 +13997,159 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(14:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(14:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 174.06 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 174.06 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 421.578 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 421.578 Tm [(psb)]TJ ET q -1 0 0 1 280.646 421.777 cm +1 0 0 1 280.022 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 421.578 Td [(T)]TJ +/F131 9.9626 Tf 283.16 421.578 Td [(T)]TJ ET q -1 0 0 1 289.642 421.777 cm +1 0 0 1 289.018 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 421.578 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 421.578 Td [(vect)]TJ ET q -1 0 0 1 314.33 421.777 cm +1 0 0 1 313.705 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 421.578 Td [(type)]TJ +/F131 9.9626 Tf 316.843 421.578 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 421.578 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 409.623 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 173.89 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 173.89 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 342.199 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 342.199 Tm [(psb)]TJ ET q -1 0 0 1 280.646 342.398 cm +1 0 0 1 280.022 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 342.199 Td [(T)]TJ +/F131 9.9626 Tf 283.16 342.199 Td [(T)]TJ ET q -1 0 0 1 289.642 342.398 cm +1 0 0 1 289.018 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 342.199 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 342.199 Td [(vect)]TJ ET q -1 0 0 1 314.33 342.398 cm +1 0 0 1 313.705 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 342.199 Td [(type)]TJ +/F131 9.9626 Tf 316.843 342.199 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 342.199 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 330.244 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ ET q 1 0 0 1 120.408 310.84 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 310.641 Td [(a)]TJ +/F75 9.9626 Tf 123.397 310.641 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 262.82 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 262.82 Td [(desc)]TJ ET q 1 0 0 1 298.05 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 262.82 Td [(type)]TJ +/F131 9.9626 Tf 301.189 262.82 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.602 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -19.602 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.68 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.68 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 175.794 Tm [(Speci\002ed)-240(as:)-309(an)-240(object)-240(of)-240(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 253.899 175.794 Tm [(psb)]TJ ET q -1 0 0 1 280.646 175.993 cm +1 0 0 1 270.218 175.993 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 175.794 Td [(T)]TJ +/F131 9.9626 Tf 273.356 175.794 Td [(T)]TJ ET q -1 0 0 1 289.642 175.993 cm +1 0 0 1 279.214 175.993 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 175.794 Td [(vect)]TJ +/F131 9.9626 Tf 282.352 175.794 Td [(vect)]TJ ET q -1 0 0 1 314.33 175.993 cm +1 0 0 1 303.901 175.993 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 175.794 Td [(type)]TJ +/F131 9.9626 Tf 307.039 175.794 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 330.304 175.794 Tm [(containing)-240(numbers)-240(of)-240(the)]TJ 1 0 0 1 124.802 163.839 Tm [(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(14)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ 0 g 0 G -/F62 9.9626 Tf 114.88 -29.888 Td [(53)]TJ +/F84 9.9626 Tf 115.189 -29.888 Td [(53)]TJ 0 g 0 G ET endstream endobj -1325 0 obj +1328 0 obj << /Length 314 >> @@ -14164,30 +14157,30 @@ stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 175.611 706.129 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 175.611 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -603.736 Td [(54)]TJ + 142.356 -603.736 Td [(54)]TJ 0 g 0 G ET endstream endobj -1336 0 obj +1339 0 obj << -/Length 7518 +/Length 7699 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.15)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.15)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(division)-250(between)-250(two)-250(vectors)]TJ/F60 9.9626 Tf 300.604 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf -188.347 -21.112 Td [(/)]TJ/F91 10.3811 Tf 9.054 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.274 0 Td [(/)]TJ/F60 9.9626 Tf 6.286 0 Td [(y)]TJ/F93 10.3811 Tf 5.231 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ/F67 9.9626 Tf -186.967 -21.111 Td [(psb_gediv\050x,)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(division)-250(between)-250(two)-250(vectors)]TJ/F78 9.9626 Tf 300.603 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf -188.038 -21.112 Td [(/)]TJ/F179 10.3811 Tf 9.054 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 4.274 0 Td [(/)]TJ/F78 9.9626 Tf 6.286 0 Td [(y)]TJ/F181 10.3811 Tf 5.231 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ/F131 9.9626 Tf -186.967 -21.111 Td [(psb_gediv\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -14209,42 +14202,42 @@ q []0 d 0 J 0.398 w 0 0 m 177.104 0 l S Q BT -/F62 9.9626 Tf 189.301 622.328 Td [(/)-13(,)]TJ/F60 9.9626 Tf 11.437 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(,)]TJ/F60 9.9626 Tf 5.105 0 Td [(y)]TJ/F59 9.9626 Tf 99.043 0 Td [(Function)]TJ +/F84 9.9626 Tf 189.301 622.328 Td [(/)-13(,)]TJ/F78 9.9626 Tf 11.437 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(,)]TJ/F78 9.9626 Tf 5.105 0 Td [(y)]TJ/F75 9.9626 Tf 99.043 0 Td [(Function)]TJ ET q 1 0 0 1 183.199 618.542 cm []0 d 0 J 0.398 w 0 0 m 177.104 0 l S Q BT -/F62 9.9626 Tf 189.177 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 189.177 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 326.41 610.173 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 609.974 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 329.399 609.974 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 326.41 598.218 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 598.019 Td [(gediv)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 329.399 598.019 Td [(gediv)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 326.41 586.263 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 586.064 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 329.399 586.064 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 326.41 574.308 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 574.109 Td [(gediv)]TJ +/F84 9.9626 Tf 329.399 574.109 Td [(gediv)]TJ ET q 1 0 0 1 183.199 570.323 cm @@ -14252,126 +14245,126 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(15:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(15:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 174.06 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 174.06 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 421.578 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 421.578 Tm [(psb)]TJ ET q -1 0 0 1 280.646 421.777 cm +1 0 0 1 280.022 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 421.578 Td [(T)]TJ +/F131 9.9626 Tf 283.16 421.578 Td [(T)]TJ ET q -1 0 0 1 289.642 421.777 cm +1 0 0 1 289.018 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 421.578 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 421.578 Td [(vect)]TJ ET q -1 0 0 1 314.33 421.777 cm +1 0 0 1 313.705 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 421.578 Td [(type)]TJ +/F131 9.9626 Tf 316.843 421.578 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 421.578 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 409.623 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 173.89 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 173.89 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 342.199 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 342.199 Tm [(psb)]TJ ET q -1 0 0 1 280.646 342.398 cm +1 0 0 1 280.022 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 342.199 Td [(T)]TJ +/F131 9.9626 Tf 283.16 342.199 Td [(T)]TJ ET q -1 0 0 1 289.642 342.398 cm +1 0 0 1 289.018 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 342.199 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 342.199 Td [(vect)]TJ ET q -1 0 0 1 314.33 342.398 cm +1 0 0 1 313.705 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 342.199 Td [(type)]TJ +/F131 9.9626 Tf 316.843 342.199 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 342.199 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 330.244 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ ET q 1 0 0 1 120.408 310.84 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 310.641 Td [(a)]TJ +/F75 9.9626 Tf 123.397 310.641 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 262.82 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 262.82 Td [(desc)]TJ ET q 1 0 0 1 298.05 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 262.82 Td [(type)]TJ +/F131 9.9626 Tf 301.189 262.82 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.602 Td [(\003ag)]TJ +/F75 9.9626 Tf -222.215 -19.602 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(check)-280(if)-280(any)-280(of)-280(the)]TJ/F60 9.9626 Tf 84.137 0 Td [(y)]TJ/F93 10.3811 Tf 5.23 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)-343(=)]TJ/F62 9.9626 Tf 19.108 0 Td [(0,)-287(and)-280(in)-280(case)-280(r)18(eturns)-280(err)18(or)-280(halting)-280(the)-280(compu-)]TJ -112.449 -11.956 Td [(tation.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -108.97 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F67 9.9626 Tf 132.133 0 Td [(flag)]TJ +/F84 9.9626 Tf 0.994 0 0 1 121.484 243.218 Tm [(check)-252(if)-252(any)-252(of)-251(the)]TJ/F78 9.9626 Tf 1 0 0 1 203.726 243.218 Tm [(y)]TJ/F181 10.3811 Tf 5.23 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)-290(=)]TJ/F84 9.9626 Tf 0.994 0 0 1 234.264 243.218 Tm [(0,)-252(and)-252(in)-252(case)-252(r)19(eturns)-252(err)18(or)-252(halting)-252(the)-252(computa-)]TJ 1 0 0 1 124.802 231.262 Tm [(tion.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -108.661 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F131 9.9626 Tf 132.133 0 Td [(flag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -157.04 -19.603 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -157.04 -19.603 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.849 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -151.111 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.849 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -151.111 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0 g 0 G 85.819 -29.888 Td [(55)]TJ 0 g 0 G @@ -14379,71 +14372,71 @@ ET endstream endobj -1342 0 obj +1345 0 obj << -/Length 1288 +/Length 1341 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 175.611 706.129 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 0.98 0 0 1 175.611 706.129 Tm [(Speci\002ed)-240(as:)-309(an)-240(object)-240(of)-240(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 304.709 706.129 Tm [(psb)]TJ ET q -1 0 0 1 331.456 706.328 cm +1 0 0 1 321.027 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 334.594 706.129 Td [(T)]TJ +/F131 9.9626 Tf 324.166 706.129 Td [(T)]TJ ET q -1 0 0 1 340.452 706.328 cm +1 0 0 1 330.023 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 343.59 706.129 Td [(vect)]TJ +/F131 9.9626 Tf 333.162 706.129 Td [(vect)]TJ ET q -1 0 0 1 365.139 706.328 cm +1 0 0 1 354.711 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 368.277 706.129 Td [(type)]TJ +/F131 9.9626 Tf 357.849 706.129 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.453 0 Td [(containing)-354(numbers)-355(of)]TJ -217.119 -11.955 Td [(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 381.113 706.129 Tm [(containing)-240(numbers)-240(of)-240(the)]TJ 1 0 0 1 175.611 694.174 Tm [(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(14)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -535.99 Td [(56)]TJ + 142.356 -535.99 Td [(56)]TJ 0 g 0 G ET endstream endobj -1351 0 obj +1354 0 obj << -/Length 7434 +/Length 7613 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.16)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.16)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(inverse)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 252.097 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)-250(puts)-250(it)-250(into)]TJ/F60 9.9626 Tf 69.951 0 Td [(y)]TJ/F62 9.9626 Tf -184.401 -18.334 Td [(/)]TJ/F91 10.3811 Tf 9.054 0 Td [(\040)]TJ/F62 9.9626 Tf 13.272 0 Td [(1)-13(/)]TJ/F60 9.9626 Tf 11.562 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)]TJ/F67 9.9626 Tf -181.059 -18.334 Td [(psb_geinv\050x,)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(inverse)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 252.096 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)-250(puts)-250(it)-250(into)]TJ/F78 9.9626 Tf 69.951 0 Td [(y)]TJ/F84 9.9626 Tf -184.092 -18.334 Td [(/)]TJ/F179 10.3811 Tf 9.054 0 Td [(\040)]TJ/F84 9.9626 Tf 13.272 0 Td [(1)-13(/)]TJ/F78 9.9626 Tf 11.562 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 4.149 0 Td [(.)]TJ/F131 9.9626 Tf -181.059 -18.334 Td [(psb_geinv\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -14465,42 +14458,42 @@ q []0 d 0 J 0.398 w 0 0 m 176.815 0 l S Q BT -/F62 9.9626 Tf 189.446 628.995 Td [(/)-12(,)]TJ/F60 9.9626 Tf 11.437 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 99.042 0 Td [(Function)]TJ +/F84 9.9626 Tf 189.446 628.995 Td [(/)-12(,)]TJ/F78 9.9626 Tf 11.437 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 99.042 0 Td [(Function)]TJ ET q 1 0 0 1 183.343 625.209 cm []0 d 0 J 0.398 w 0 0 m 176.815 0 l S Q BT -/F62 9.9626 Tf 189.321 616.641 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 189.321 616.641 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 326.555 616.84 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 616.641 Td [(geinv)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 329.544 616.641 Td [(geinv)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 326.555 604.885 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 604.686 Td [(geinv)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 329.544 604.686 Td [(geinv)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 326.555 592.93 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 592.731 Td [(geinv)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 329.544 592.731 Td [(geinv)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 326.555 580.975 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 580.775 Td [(geinv)]TJ +/F84 9.9626 Tf 329.544 580.775 Td [(geinv)]TJ ET q 1 0 0 1 183.343 576.99 cm @@ -14508,142 +14501,142 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 548.611 Td [(T)92(able)-250(16:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 548.611 Td [(T)92(able)-250(16:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -29.451 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -29.451 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -18.492 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -18.492 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -18.491 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 174.06 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 174.06 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 434.356 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 434.356 Tm [(psb)]TJ ET q -1 0 0 1 280.646 434.555 cm +1 0 0 1 280.022 434.555 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 434.356 Td [(T)]TJ +/F131 9.9626 Tf 283.16 434.356 Td [(T)]TJ ET q -1 0 0 1 289.642 434.555 cm +1 0 0 1 289.018 434.555 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 434.356 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 434.356 Td [(vect)]TJ ET q -1 0 0 1 314.33 434.555 cm +1 0 0 1 313.705 434.555 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 434.356 Td [(type)]TJ +/F131 9.9626 Tf 316.843 434.356 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 434.356 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 422.401 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.492 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -18.492 Td [(desc)]TJ ET q 1 0 0 1 120.408 404.108 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 403.909 Td [(a)]TJ +/F75 9.9626 Tf 123.397 403.909 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 356.288 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 356.088 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 356.088 Td [(desc)]TJ ET q 1 0 0 1 298.05 356.288 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 356.088 Td [(type)]TJ +/F131 9.9626 Tf 301.189 356.088 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -18.491 Td [(\003ag)]TJ +/F75 9.9626 Tf -222.215 -18.491 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(check)-278(if)-279(any)-278(of)-278(the)]TJ/F60 9.9626 Tf 84.227 0 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)-340(=)]TJ/F62 9.9626 Tf 19.049 0 Td [(0,)-285(and)-279(in)-278(case)-279(r)18(eturns)-278(err)18(or)-278(halting)-279(the)-278(compu-)]TJ -112.58 -11.955 Td [(tation.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -108.97 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F67 9.9626 Tf 132.133 0 Td [(flag)]TJ +/F84 9.9626 Tf 0.993 0 0 1 121.484 337.597 Tm [(check)-252(if)-252(any)-252(of)-252(the)]TJ/F78 9.9626 Tf 1 0 0 1 203.823 337.597 Tm [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)-290(=)]TJ/F84 9.9626 Tf 0.993 0 0 1 234.46 337.597 Tm [(0,)-252(and)-252(in)-252(case)-252(r)18(eturns)-252(err)18(or)-252(halting)-252(the)-252(computa-)]TJ 1 0 0 1 124.802 325.642 Tm [(tion.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -108.661 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F131 9.9626 Tf 132.133 0 Td [(flag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -157.04 -18.492 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -157.04 -18.492 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.491 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.849 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -151.669 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.849 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -151.669 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.98 0 0 1 124.802 204.972 Tm [(Speci\002ed)-240(as:)-309(an)-240(object)-240(of)-240(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 253.899 204.972 Tm [(psb)]TJ ET q -1 0 0 1 280.646 205.171 cm +1 0 0 1 270.218 205.171 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 204.972 Td [(T)]TJ +/F131 9.9626 Tf 273.356 204.972 Td [(T)]TJ ET q -1 0 0 1 289.642 205.171 cm +1 0 0 1 279.214 205.171 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 204.972 Td [(vect)]TJ +/F131 9.9626 Tf 282.352 204.972 Td [(vect)]TJ ET q -1 0 0 1 314.33 205.171 cm +1 0 0 1 303.901 205.171 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 204.972 Td [(type)]TJ +/F131 9.9626 Tf 307.039 204.972 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 330.304 204.972 Tm [(containing)-240(numbers)-240(of)-240(the)]TJ 1 0 0 1 124.802 193.017 Tm [(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(16)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.492 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -18.492 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -36.266 Td [(57)]TJ + 142.357 -36.266 Td [(57)]TJ 0 g 0 G ET endstream endobj -1357 0 obj +1360 0 obj << -/Length 623 +/Length 659 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 706.042 Td [(5)-1000(Communication)-250(routines)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-303(r)18(outines)-302(in)-303(this)-303(chapter)-302(implement)-303(various)-303(global)-302(communication)-303(opera-)]TJ 0 -11.955 Td [(tors)-271(on)-271(vectors)-271(associated)-271(with)-271(a)-272(discr)18(etization)-271(mesh.)-373(For)-271(auxiliary)-271(communi-)]TJ 0 -11.955 Td [(cation)-250(r)18(outines)-250(not)-250(tied)-250(to)-250(a)-250(discr)18(etization)-250(space)-250(see)]TJ +/F75 14.3462 Tf 150.705 706.042 Td [(5)-1000(Communication)-250(routines)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.396 683.34 Tm [(The)-234(r)19(outines)-234(in)-233(this)-234(chapter)-234(implement)-233(various)-234(global)-233(communication)-234(operators)]TJ 0.995 0 0 1 150.705 671.385 Tm [(on)-251(vectors)-251(associated)-252(with)-251(a)-251(discr)18(etization)-251(mesh.)-312(For)-251(auxiliary)-252(commu)1(nication)]TJ 1 0 0 1 150.705 659.43 Tm [(r)18(outines)-250(not)-250(tied)-250(to)-250(a)-250(discr)18(etization)-250(space)-250(see)]TJ 0 0 1 rg 0 0 1 RG [-250(6)]TJ 0 g 0 G @@ -14655,26 +14648,26 @@ ET endstream endobj -1365 0 obj +1368 0 obj << -/Length 6634 +/Length 6830 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(5.1)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(5.1)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ/F62 9.9626 Tf -51.121 -19.15 Td [(These)-250(subr)18(outines)-250(gathers)-250(the)-250(values)-250(of)-250(the)-250(halo)-250(elements:)]TJ/F60 9.9626 Tf 158.568 -25.014 Td [(x)]TJ/F91 10.3811 Tf 8.097 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F62 9.9626 Tf -180.232 -22.11 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ/F84 9.9626 Tf -51.429 -19.15 Td [(These)-250(subr)18(outines)-250(gathers)-250(the)-250(values)-250(of)-250(the)-250(halo)-250(elements:)]TJ/F78 9.9626 Tf 158.876 -25.014 Td [(x)]TJ/F179 10.3811 Tf 8.097 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F84 9.9626 Tf -180.65 -22.11 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.294 -20.212 Td [(x)]TJ +/F78 9.9626 Tf 0.712 -20.212 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.187 0 Td [(is)-250(a)-250(global)-250(dense)-250(submatrix.)]TJ +/F84 9.9626 Tf 10.187 0 Td [(is)-250(a)-250(global)-250(dense)-250(submatrix.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -14684,49 +14677,49 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F68 9.9626 Tf 185.685 587.758 Td [(a)]TJ/F62 9.9626 Tf 5.384 0 Td [(,)]TJ/F60 9.9626 Tf 5.276 0 Td [(x)]TJ/F59 9.9626 Tf 110.13 0 Td [(Subroutine)]TJ +/F133 9.9626 Tf 185.685 587.758 Td [(a)]TJ/F84 9.9626 Tf 5.384 0 Td [(,)]TJ/F78 9.9626 Tf 5.276 0 Td [(x)]TJ/F75 9.9626 Tf 110.13 0 Td [(Subroutine)]TJ ET q 1 0 0 1 179.582 583.972 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 185.56 575.404 Td [(Integer)-8983(psb)]TJ +/F84 9.9626 Tf 185.56 575.404 Td [(Integer)-8983(psb)]TJ ET q 1 0 0 1 322.794 575.603 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 575.404 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 325.783 575.404 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 322.794 563.648 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 563.449 Td [(halo)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 325.783 563.449 Td [(halo)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 322.794 551.693 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 551.494 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 325.783 551.494 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 322.794 539.738 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 539.539 Td [(halo)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 325.783 539.539 Td [(halo)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 322.794 527.783 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 527.583 Td [(halo)]TJ +/F84 9.9626 Tf 325.783 527.583 Td [(halo)]TJ ET q 1 0 0 1 179.582 523.798 cm @@ -14734,11 +14727,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 495.419 Td [(T)92(able)-250(17:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 495.419 Td [(T)92(able)-250(17:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -127.572 -24.102 Td [(call)]TJ +/F131 9.9626 Tf -127.572 -24.102 Td [(call)]TJ 0 g 0 G [-525(psb_halo\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -14767,82 +14760,82 @@ BT 0 g 0 G [(\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.301 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.301 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.308 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.308 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.309 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 89.688 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -79.949 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 89.688 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -79.949 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 348.623 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 348.623 Tm [(psb)]TJ ET q 1 0 0 1 385.864 348.823 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 348.623 Td [(T)]TJ +/F131 9.9626 Tf 389.002 348.623 Td [(T)]TJ ET q 1 0 0 1 394.86 348.823 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 348.623 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 348.623 Td [(vect)]TJ ET q 1 0 0 1 419.547 348.823 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 348.623 Td [(type)]TJ +/F131 9.9626 Tf 422.685 348.623 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(17)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.308 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -20.308 Td [(desc)]TJ ET q 1 0 0 1 120.408 316.559 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 316.36 Td [(a)]TJ +/F75 9.9626 Tf 123.397 316.36 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 268.738 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 268.539 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 268.539 Td [(desc)]TJ ET q 1 0 0 1 333.945 268.738 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 268.539 Td [(type)]TJ +/F131 9.9626 Tf 337.084 268.539 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.308 Td [(work)]TJ +/F75 9.9626 Tf -258.11 -20.308 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F60 9.9626 Tf 218.454 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F78 9.9626 Tf 218.454 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -248.566 -20.309 Td [(data)]TJ +/F75 9.9626 Tf -248.566 -20.309 Td [(data)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(index)-250(list)-250(selector)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)74(.)-290(V)92(alues:)]TJ/F67 9.9626 Tf 136.507 0 Td [(psb_comm_halo_)]TJ/F62 9.9626 Tf 73.224 0 Td [(,)]TJ/F67 9.9626 Tf 2.491 0 Td [(psb_comm_mov_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_comm_ext_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ -352.714 -11.955 Td [(default:)]TJ/F67 9.9626 Tf 39.042 0 Td [(psb_comm_halo_)]TJ/F62 9.9626 Tf 73.225 0 Td [(.)-634(Chooses)-358(the)-358(index)-358(list)-358(on)-357(which)-358(to)-358(base)-358(the)]TJ -112.267 -11.955 Td [(data)-250(exchange.)]TJ +/F84 9.9626 Tf 24.349 0 Td [(index)-250(list)-250(selector)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 0.98 0 0 1 124.802 144.236 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)75(.)-296(V)94(alues:)]TJ/F131 9.9626 Tf 1 0 0 1 258.735 144.236 Tm [(psb_comm_halo_)]TJ/F84 9.9626 Tf 0.98 0 0 1 331.96 144.236 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 334.4 144.236 Tm [(psb_comm_mov_)]TJ/F84 9.9626 Tf 0.98 0 0 1 402.395 144.236 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 406.848 144.236 Tm [(psb_comm_ext_)]TJ/F84 9.9626 Tf 0.98 0 0 1 474.843 144.236 Tm [(,)]TJ 0.98 0 0 1 124.802 132.281 Tm [(default:)]TJ/F131 9.9626 Tf 1 0 0 1 160.849 132.281 Tm [(psb_comm_halo_)]TJ/F84 9.9626 Tf 0.98 0 0 1 234.074 132.281 Tm [(.)-305(Chooses)-220(the)-221(index)-221(list)-220(on)-221(which)-220(to)-221(base)-221(the)-220(data)]TJ 1 0 0 1 124.802 120.326 Tm [(exchange.)]TJ 0 g 0 G 141.968 -29.888 Td [(59)]TJ 0 g 0 G @@ -14850,29 +14843,29 @@ ET endstream endobj -1372 0 obj +1375 0 obj << -/Length 3039 +/Length 3213 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F60 9.9626 Tf 117.085 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Returned)-285(as:)-381(a)-285(rank)-285(one)-286(or)-285(two)-285(array)-285(containing)-285(numbers)-286(of)-285(type)-285(speci-)]TJ 0 -11.955 Td [(\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 9.962 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F78 9.9626 Tf 117.085 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 638.383 Tm [(Returned)-228(as:)-303(a)-227(rank)-228(one)-228(or)-228(two)-228(array)-228(containing)-228(numbers)-228(of)-227(type)-228(speci\002ed)]TJ 1 0 0 1 175.611 626.428 Tm [(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(17)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.68 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -164.68 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value)-250(that)-250(contains)-250(an)-250(err)18(or)-250(code.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.68 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -164.68 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value)-250(that)-250(contains)-250(an)-250(err)18(or)-250(code.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -14888,14 +14881,14 @@ Q 0 g 0 G 1 0 0 1 -210.511 -336.406 cm BT -/F62 9.9626 Tf 240.086 304.526 Td [(Figur)18(e)-250(3:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ +/F84 9.9626 Tf 240.086 304.526 Td [(Figur)18(e)-250(3:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ 0 g 0 G 0 g 0 G -/F59 11.9552 Tf -89.381 -23.91 Td [(Usage)-325(Example)]TJ/F62 9.9626 Tf 87.482 0 Td [(Consider)-325(the)-325(discr)18(etization)-324(mesh)-325(depicted)-325(in)-325(\002g.)]TJ +/F75 11.9552 Tf 1.02 0 0 1 150.705 280.616 Tm [(Usage)-275(Example)]TJ/F84 9.9626 Tf 1.02 0 0 1 238.834 280.616 Tm [(Consider)-275(the)-276(discr)18(etization)-276(mesh)-275(depicted)-276(in)-275(\002g.)]TJ 0 0 1 rg 0 0 1 RG - [-325(3)]TJ + [-276(3)]TJ 0 g 0 G - [(,)-343(parti-)]TJ -87.482 -11.956 Td [(tioned)-219(among)-220(two)-219(pr)18(ocesses)-220(as)-219(shown)-220(b)1(y)-220(the)-219(dashed)-220(line;)-229(the)-220(data)-219(distribution)]TJ 0 -11.955 Td [(is)-343(such)-342(that)-343(each)-343(pr)18(ocess)-343(will)-342(own)-343(32)-343(entries)-343(in)-342(the)-343(index)-343(space,)-366(with)-342(a)-343(halo)]TJ 0 -11.955 Td [(made)-355(of)-355(8)-355(entries)-355(place)1(d)-355(at)-355(local)-355(indices)-355(33)-355(thr)18(ough)-355(40.)-624(If)-355(pr)18(ocess)-355(0)-355(assigns)]TJ 0 -11.955 Td [(an)-280(initial)-280(value)-280(of)-281(1)-280(to)-280(its)-280(entries)-280(in)-280(the)]TJ/F60 9.9626 Tf 173.857 0 Td [(x)]TJ/F62 9.9626 Tf 7.997 0 Td [(vector)74(,)-288(and)-280(pr)18(ocess)-280(1)-280(assigns)-280(a)-280(value)]TJ -181.854 -11.955 Td [(of)-314(2,)-329(then)-313(after)-314(a)-314(c)1(a)-1(l)1(l)-314(to)]TJ/F67 9.9626 Tf 106.994 0 Td [(psb_halo)]TJ/F62 9.9626 Tf 44.966 0 Td [(the)-314(conten)1(ts)-314(of)-314(the)-313(local)-314(vectors)-313(will)-314(be)-313(the)]TJ -151.96 -11.955 Td [(following:)]TJ + [(,)-283(parti-)]TJ 0.989 0 0 1 150.705 268.66 Tm [(tioned)-252(among)-252(two)-253(pr)18(oc)1(esses)-253(as)-252(shown)-252(by)-253(t)1(he)-253(dashed)-252(line;)-252(the)-253(data)-252(distribution)]TJ 1.02 0 0 1 150.705 256.705 Tm [(is)-298(such)-299(that)-298(each)-298(pr)18(ocess)-299(will)-298(own)-298(32)-298(entries)-299(in)-298(the)-298(index)-299(space,)-311(with)-298(a)-299(halo)]TJ 1.02 0 0 1 150.705 244.75 Tm [(made)-312(of)-312(8)-312(entries)-312(placed)-312(at)-312(local)-312(indices)-312(33)-312(thr)18(ough)-312(40.)-505(If)-312(pr)17(ocess)-312(0)-312(assigns)]TJ 1.018 0 0 1 150.705 232.795 Tm [(an)-245(initial)-245(value)-246(of)-245(1)-245(to)-245(its)-245(entries)-245(in)-246(the)]TJ/F78 9.9626 Tf 1 0 0 1 324.14 232.795 Tm [(x)]TJ/F84 9.9626 Tf 1.018 0 0 1 331.832 232.795 Tm [(vector)73(,)-246(and)-245(pr)18(ocess)-245(1)-245(assigns)-246(a)-245(value)]TJ 1.02 0 0 1 150.705 220.84 Tm [(of)-277(2,)-285(then)-277(after)-276(a)-277(call)-277(to)]TJ/F131 9.9626 Tf 1 0 0 1 257.152 220.84 Tm [(psb_halo)]TJ/F84 9.9626 Tf 1.02 0 0 1 301.808 220.84 Tm [(the)-277(contents)-277(of)-277(the)-277(local)-276(vectors)-277(will)-277(be)-277(the)]TJ 1 0 0 1 150.705 208.885 Tm [(following:)]TJ 0 g 0 G 166.874 -118.447 Td [(60)]TJ 0 g 0 G @@ -14903,20 +14896,20 @@ ET endstream endobj -1368 0 obj +1371 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1375 0 R +/PTEX.InfoDict 1378 0 R /BBox [0 0 498 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1376 0 R ->>/Font << /R8 1377 0 R/R10 1378 0 R>> +/R7 1379 0 R +>>/Font << /R8 1380 0 R/R10 1381 0 R>> >> /Length 3349 /Filter /FlateDecode @@ -14928,25 +14921,33 @@ U1 †¸úµ6ÔÉ–O¹¬ÌWbàzSE 0¬àË®—Ψxܳ>P…Uƒ|úˆò¬Öhˆ³>ÜÝâð^ðyÿÔŽX<‰ï’<ÂÇfÔ1â@aÐMŠC5Ú¢"mZ½!qVÖÆ¢4"{^›ëéŠÏúÜÐZÌÈ&ŒÐÅLh=ébnh#ü©n¶BUÌ„&×]Õ ÝÅFS5Cg_QUÍðӂȯZ£!ö²{U5'"ýÈCS5 žßÛæzÖæI¿®+®÷ó'MÕ <Ïû«Ö†:%>A©ªfè\dðy׎X<™§úºv¬¸Þ¡4U3ð<ï¯ZêD ùp¥ªš¡â³þ®±xOðuíXÉ×9/<ŠRUÍÀ‰¿|p+q¥ªš¡³¨Áçý];bñ$>žÖëÚ±âz?ŽÒTÍÀó¼¿jm¨“~/žú[™¯Ä<¸ë‘Ïú»vÄâÉ|Cú€‹‘¯s^x(¥ªšá]ú€[!ÎúðS)MÕ ÞPÌïms=k_’} ×ONËÌê˜Gd×X¥YgSjT3âÔr°-J#²{Ë®ç_ŤŒ¹¡µ˜‘M¡‹™ÐzÒÅÜÐFøSÝl…ª˜ M®÷Ó[ÎÏŸŸåùËãý¤†¿õ8šÇ÷‰<ÿÓ”ÿüúøýQ=Æ×oÏ?~}üøåzÖöüúχÿeK}ŽãýÜò±ž_{üôCýô¹Ï£üÐ>}¥”:~ü<ðóÄωŸ×§Ÿ¿þåíÝíýŸšÇóë/Îñé뿟ߟvñvÿ®Ý¾k×ïÚeoë»öõ]{Þí·¯??·~¢ûCÞŸ#²ÚaYïá÷…–aXŽí)Ãüã—÷'W¯û³êíãýŸ¼žkà®3Ô{οþõÝ*ŸþðøÓ×Çßßÿþ{Ü endstream endobj -1275 0 obj +1278 0 obj << /Type /ObjStm /N 100 /First 997 -/Length 13067 ->> -stream -1263 0 1264 145 1265 287 1270 433 268 492 1271 550 1272 608 1273 667 1274 726 1267 785 -1284 932 1266 1134 1276 1281 1277 1425 1278 1571 1279 1718 1280 1869 1281 2020 1282 2171 1286 2317 -1283 2375 1291 2509 1288 2648 1293 2793 272 2852 1294 2910 1290 2969 1302 3116 1289 3309 1295 3457 -1296 3601 1297 3748 1298 3895 1299 4038 1300 4185 1304 4330 1301 4388 1308 4522 1305 4670 1306 4817 -1310 4964 1307 5023 1319 5143 1311 5336 1312 5480 1313 5625 1314 5769 1315 5914 1316 6061 1317 6205 -1321 6352 276 6410 1322 6467 1318 6525 1324 6658 1326 6776 1323 6835 1335 6916 1327 7091 1328 7235 -1329 7380 1330 7524 1331 7669 1337 7816 280 7874 1338 7931 1334 7989 1341 8122 1332 8270 1333 8414 -1343 8561 1340 8620 1350 8714 1344 8889 1345 9031 1346 9176 1347 9323 1348 9467 1352 9614 284 9672 -1353 9729 1349 9787 1356 9920 1354 10059 1358 10207 288 10266 1355 10324 1364 10405 1359 10562 1360 10706 -1361 10853 1366 11000 292 11058 1367 11115 1363 11173 1371 11307 1375 11455 1376 11582 1377 11625 1378 11832 -% 1263 0 obj +/Length 13005 +>> +stream +1265 0 1266 147 1267 292 1268 434 1273 581 268 640 1274 698 1275 756 1276 815 1277 874 +1270 933 1287 1084 1269 1286 1279 1433 1280 1577 1281 1723 1282 1870 1283 2021 1284 2172 1285 2323 +1289 2469 1286 2527 1294 2664 1291 2803 1296 2948 272 3007 1297 3065 1293 3124 1305 3275 1292 3468 +1298 3616 1299 3760 1300 3907 1301 4054 1302 4197 1303 4344 1307 4489 1304 4547 1311 4684 1308 4832 +1309 4979 1313 5126 1310 5185 1322 5307 1314 5500 1315 5644 1316 5789 1317 5933 1318 6078 1319 6225 +1320 6369 1324 6516 276 6574 1325 6631 1321 6689 1327 6825 1329 6943 1326 7002 1338 7083 1330 7258 +1331 7402 1332 7547 1333 7691 1334 7836 1340 7983 280 8041 1341 8098 1337 8156 1344 8292 1335 8440 +1336 8584 1346 8731 1343 8790 1353 8885 1347 9060 1348 9202 1349 9347 1350 9494 1351 9638 1355 9785 +284 9843 1356 9900 1352 9958 1359 10094 1357 10233 1361 10380 288 10439 1358 10497 1367 10578 1362 10735 +1363 10879 1364 11026 1369 11173 292 11231 1370 11288 1366 11346 1374 11483 1378 11631 1379 11758 1380 11801 +% 1265 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.968 277.323 440.924 289.383] +/A << /S /GoTo /D (table.12) >> +>> +% 1266 0 obj << /Type /Annot /Subtype /Link @@ -14954,7 +14955,7 @@ stream /Rect [306.858 208.877 384.376 220.936] /A << /S /GoTo /D (spdata) >> >> -% 1264 0 obj +% 1267 0 obj << /Type /Annot /Subtype /Link @@ -14962,53 +14963,53 @@ stream /Rect [419.358 140.43 495.412 152.49] /A << /S /GoTo /D (vdata) >> >> -% 1265 0 obj +% 1268 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.43 128.475 391.385 140.535] +/Rect [380.286 128.475 392.391 140.535] /A << /S /GoTo /D (table.12) >> >> -% 1270 0 obj +% 1273 0 obj << -/D [1268 0 R /XYZ 149.705 753.953 null] +/D [1271 0 R /XYZ 149.705 753.953 null] >> % 268 0 obj << -/D [1268 0 R /XYZ 150.705 716.092 null] +/D [1271 0 R /XYZ 150.705 716.092 null] >> -% 1271 0 obj +% 1274 0 obj << -/D [1268 0 R /XYZ 290.728 674.17 null] +/D [1271 0 R /XYZ 290.728 674.17 null] >> -% 1272 0 obj +% 1275 0 obj << -/D [1268 0 R /XYZ 287.931 654.041 null] +/D [1271 0 R /XYZ 287.931 654.041 null] >> -% 1273 0 obj +% 1276 0 obj << -/D [1268 0 R /XYZ 287.193 633.911 null] +/D [1271 0 R /XYZ 287.193 633.911 null] >> -% 1274 0 obj +% 1277 0 obj << -/D [1268 0 R /XYZ 150.705 447.252 null] +/D [1271 0 R /XYZ 150.705 447.252 null] >> -% 1267 0 obj +% 1270 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1284 0 obj +% 1287 0 obj << /Type /Page -/Contents 1285 0 R -/Resources 1283 0 R +/Contents 1288 0 R +/Resources 1286 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1287 0 R -/Annots [ 1266 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R ] +/Parent 1290 0 R +/Annots [ 1269 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R ] >> -% 1266 0 obj +% 1269 0 obj << /Type /Annot /Subtype /Link @@ -15016,7 +15017,7 @@ stream /Rect [378.159 654.503 390.114 666.562] /A << /S /GoTo /D (table.12) >> >> -% 1276 0 obj +% 1279 0 obj << /Type /Annot /Subtype /Link @@ -15024,15 +15025,15 @@ stream /Rect [368.549 588.085 444.603 600.145] /A << /S /GoTo /D (vdata) >> >> -% 1277 0 obj +% 1280 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.746 576.13 340.701 588.189] +/Rect [329.659 576.13 341.774 588.189] /A << /S /GoTo /D (table.12) >> >> -% 1278 0 obj +% 1281 0 obj << /Type /Annot /Subtype /Link @@ -15040,7 +15041,7 @@ stream /Rect [256.048 497.757 323.106 509.817] /A << /S /GoTo /D (descdata) >> >> -% 1279 0 obj +% 1282 0 obj << /Type /Annot /Subtype /Link @@ -15048,7 +15049,7 @@ stream /Rect [338.139 460.563 345.113 472.623] /A << /S /GoTo /D (equation.4.1) >> >> -% 1280 0 obj +% 1283 0 obj << /Type /Annot /Subtype /Link @@ -15056,7 +15057,7 @@ stream /Rect [336.486 445.951 343.459 458.011] /A << /S /GoTo /D (equation.4.2) >> >> -% 1281 0 obj +% 1284 0 obj << /Type /Annot /Subtype /Link @@ -15064,7 +15065,7 @@ stream /Rect [337.034 431.339 344.007 443.399] /A << /S /GoTo /D (equation.4.3) >> >> -% 1282 0 obj +% 1285 0 obj << /Type /Annot /Subtype /Link @@ -15072,25 +15073,25 @@ stream /Rect [202.52 189.579 214.475 201.639] /A << /S /GoTo /D (table.12) >> >> -% 1286 0 obj +% 1289 0 obj << -/D [1284 0 R /XYZ 98.895 753.953 null] +/D [1287 0 R /XYZ 98.895 753.953 null] >> -% 1283 0 obj +% 1286 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F68 1133 0 R /F60 670 0 R /F67 918 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F133 1136 0 R /F78 674 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1291 0 obj +% 1294 0 obj << /Type /Page -/Contents 1292 0 R -/Resources 1290 0 R +/Contents 1295 0 R +/Resources 1293 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1287 0 R -/Annots [ 1288 0 R ] +/Parent 1290 0 R +/Annots [ 1291 0 R ] >> -% 1288 0 obj +% 1291 0 obj << /Type /Annot /Subtype /Link @@ -15098,33 +15099,33 @@ stream /Rect [428.968 116.52 440.924 128.58] /A << /S /GoTo /D (table.13) >> >> -% 1293 0 obj +% 1296 0 obj << -/D [1291 0 R /XYZ 149.705 753.953 null] +/D [1294 0 R /XYZ 149.705 753.953 null] >> % 272 0 obj << -/D [1291 0 R /XYZ 150.705 716.092 null] +/D [1294 0 R /XYZ 150.705 716.092 null] >> -% 1294 0 obj +% 1297 0 obj << -/D [1291 0 R /XYZ 150.705 268.704 null] +/D [1294 0 R /XYZ 150.705 268.704 null] >> -% 1290 0 obj +% 1293 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1302 0 obj +% 1305 0 obj << /Type /Page -/Contents 1303 0 R -/Resources 1301 0 R +/Contents 1306 0 R +/Resources 1304 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1287 0 R -/Annots [ 1289 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R ] +/Parent 1290 0 R +/Annots [ 1292 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R ] >> -% 1289 0 obj +% 1292 0 obj << /Type /Annot /Subtype /Link @@ -15132,7 +15133,7 @@ stream /Rect [305.144 654.503 312.117 666.562] /A << /S /GoTo /D (section.3) >> >> -% 1295 0 obj +% 1298 0 obj << /Type /Annot /Subtype /Link @@ -15140,15 +15141,15 @@ stream /Rect [368.549 586.032 444.603 598.092] /A << /S /GoTo /D (vdata) >> >> -% 1296 0 obj +% 1299 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.621 574.077 340.576 586.136] +/Rect [329.477 574.077 341.581 586.136] /A << /S /GoTo /D (table.13) >> >> -% 1297 0 obj +% 1300 0 obj << /Type /Annot /Subtype /Link @@ -15156,7 +15157,7 @@ stream /Rect [378.159 493.651 390.114 505.711] /A << /S /GoTo /D (table.13) >> >> -% 1298 0 obj +% 1301 0 obj << /Type /Annot /Subtype /Link @@ -15164,15 +15165,15 @@ stream /Rect [368.549 425.181 444.603 437.24] /A << /S /GoTo /D (vdata) >> >> -% 1299 0 obj +% 1302 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.746 413.225 340.701 425.285] +/Rect [329.659 413.225 341.774 425.285] /A << /S /GoTo /D (table.13) >> >> -% 1300 0 obj +% 1303 0 obj << /Type /Annot /Subtype /Link @@ -15180,33 +15181,33 @@ stream /Rect [256.048 332.8 323.106 344.859] /A << /S /GoTo /D (descdata) >> >> -% 1304 0 obj +% 1307 0 obj << -/D [1302 0 R /XYZ 98.895 753.953 null] +/D [1305 0 R /XYZ 98.895 753.953 null] >> -% 1301 0 obj +% 1304 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R /F68 1133 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R /F133 1136 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1308 0 obj +% 1311 0 obj << /Type /Page -/Contents 1309 0 R -/Resources 1307 0 R +/Contents 1312 0 R +/Resources 1310 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1287 0 R -/Annots [ 1305 0 R 1306 0 R ] +/Parent 1290 0 R +/Annots [ 1308 0 R 1309 0 R ] >> -% 1305 0 obj +% 1308 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [211.646 410.079 223.601 419.489] +/Rect [200.149 410.079 212.104 419.489] /A << /S /GoTo /D (table.13) >> >> -% 1306 0 obj +% 1309 0 obj << /Type /Annot /Subtype /Link @@ -15214,33 +15215,33 @@ stream /Rect [253.329 228.102 265.284 240.161] /A << /S /GoTo /D (table.13) >> >> -% 1310 0 obj +% 1313 0 obj << -/D [1308 0 R /XYZ 149.705 753.953 null] +/D [1311 0 R /XYZ 149.705 753.953 null] >> -% 1307 0 obj +% 1310 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1319 0 obj +% 1322 0 obj << /Type /Page -/Contents 1320 0 R -/Resources 1318 0 R +/Contents 1323 0 R +/Resources 1321 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1287 0 R -/Annots [ 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R ] +/Parent 1290 0 R +/Annots [ 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R ] >> -% 1311 0 obj +% 1314 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 417.772 339.385 429.832] +/Rect [262.707 417.772 338.761 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1312 0 obj +% 1315 0 obj << /Type /Annot /Subtype /Link @@ -15248,15 +15249,15 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1313 0 obj +% 1316 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 338.393 339.385 350.453] +/Rect [262.707 338.393 338.761 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1314 0 obj +% 1317 0 obj << /Type /Annot /Subtype /Link @@ -15264,7 +15265,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1315 0 obj +% 1318 0 obj << /Type /Annot /Subtype /Link @@ -15272,74 +15273,74 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1316 0 obj +% 1319 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 171.988 339.385 184.048] +/Rect [252.903 171.988 328.957 184.048] /A << /S /GoTo /D (vdata) >> >> -% 1317 0 obj +% 1320 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [242.868 160.033 254.823 172.093] +/Rect [226.559 160.033 238.514 172.093] /A << /S /GoTo /D (table.14) >> >> -% 1321 0 obj +% 1324 0 obj << -/D [1319 0 R /XYZ 98.895 753.953 null] +/D [1322 0 R /XYZ 98.895 753.953 null] >> % 276 0 obj << -/D [1319 0 R /XYZ 99.895 716.092 null] +/D [1322 0 R /XYZ 99.895 716.092 null] >> -% 1322 0 obj +% 1325 0 obj << -/D [1319 0 R /XYZ 99.895 560.161 null] +/D [1322 0 R /XYZ 99.895 560.161 null] >> -% 1318 0 obj +% 1321 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1324 0 obj +% 1327 0 obj << /Type /Page -/Contents 1325 0 R -/Resources 1323 0 R +/Contents 1328 0 R +/Resources 1326 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1287 0 R +/Parent 1290 0 R >> -% 1326 0 obj +% 1329 0 obj << -/D [1324 0 R /XYZ 149.705 753.953 null] +/D [1327 0 R /XYZ 149.705 753.953 null] >> -% 1323 0 obj +% 1326 0 obj << -/Font << /F62 671 0 R /F59 669 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1335 0 obj +% 1338 0 obj << /Type /Page -/Contents 1336 0 R -/Resources 1334 0 R +/Contents 1339 0 R +/Resources 1337 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1339 0 R -/Annots [ 1327 0 R 1328 0 R 1329 0 R 1330 0 R 1331 0 R ] +/Parent 1342 0 R +/Annots [ 1330 0 R 1331 0 R 1332 0 R 1333 0 R 1334 0 R ] >> -% 1327 0 obj +% 1330 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 417.772 339.385 429.832] +/Rect [262.707 417.772 338.761 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1328 0 obj +% 1331 0 obj << /Type /Annot /Subtype /Link @@ -15347,15 +15348,15 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1329 0 obj +% 1332 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 338.393 339.385 350.453] +/Rect [262.707 338.393 338.761 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1330 0 obj +% 1333 0 obj << /Type /Annot /Subtype /Link @@ -15363,7 +15364,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1331 0 obj +% 1334 0 obj << /Type /Annot /Subtype /Link @@ -15371,75 +15372,75 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1337 0 obj +% 1340 0 obj << -/D [1335 0 R /XYZ 98.895 753.953 null] +/D [1338 0 R /XYZ 98.895 753.953 null] >> % 280 0 obj << -/D [1335 0 R /XYZ 99.895 716.092 null] +/D [1338 0 R /XYZ 99.895 716.092 null] >> -% 1338 0 obj +% 1341 0 obj << -/D [1335 0 R /XYZ 99.895 560.161 null] +/D [1338 0 R /XYZ 99.895 560.161 null] >> -% 1334 0 obj +% 1337 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1341 0 obj +% 1344 0 obj << /Type /Page -/Contents 1342 0 R -/Resources 1340 0 R +/Contents 1345 0 R +/Resources 1343 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1339 0 R -/Annots [ 1332 0 R 1333 0 R ] +/Parent 1342 0 R +/Annots [ 1335 0 R 1336 0 R ] >> -% 1332 0 obj +% 1335 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [314.141 702.323 390.195 714.383] +/Rect [303.712 702.323 379.767 714.383] /A << /S /GoTo /D (vdata) >> >> -% 1333 0 obj +% 1336 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [293.677 690.368 305.632 702.428] +/Rect [277.368 690.368 289.324 702.428] /A << /S /GoTo /D (table.14) >> >> -% 1343 0 obj +% 1346 0 obj << -/D [1341 0 R /XYZ 149.705 753.953 null] +/D [1344 0 R /XYZ 149.705 753.953 null] >> -% 1340 0 obj +% 1343 0 obj << -/Font << /F62 671 0 R /F67 918 0 R /F59 669 0 R >> +/Font << /F84 675 0 R /F131 921 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1350 0 obj +% 1353 0 obj << /Type /Page -/Contents 1351 0 R -/Resources 1349 0 R +/Contents 1354 0 R +/Resources 1352 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1339 0 R -/Annots [ 1344 0 R 1345 0 R 1346 0 R 1347 0 R 1348 0 R ] +/Parent 1342 0 R +/Annots [ 1347 0 R 1348 0 R 1349 0 R 1350 0 R 1351 0 R ] >> -% 1344 0 obj +% 1347 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 430.55 339.385 442.61] +/Rect [262.707 430.55 338.761 442.61] /A << /S /GoTo /D (vdata) >> >> -% 1345 0 obj +% 1348 0 obj << /Type /Annot /Subtype /Link @@ -15447,7 +15448,7 @@ stream /Rect [224.557 418.595 231.53 430.655] /A << /S /GoTo /D (table.2) >> >> -% 1346 0 obj +% 1349 0 obj << /Type /Annot /Subtype /Link @@ -15455,79 +15456,79 @@ stream /Rect [256.048 352.283 323.106 364.342] /A << /S /GoTo /D (descdata) >> >> -% 1347 0 obj +% 1350 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 201.166 339.385 213.226] +/Rect [252.903 201.166 328.957 213.226] /A << /S /GoTo /D (vdata) >> >> -% 1348 0 obj +% 1351 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [242.868 189.211 254.823 201.271] +/Rect [226.559 189.211 238.514 201.271] /A << /S /GoTo /D (table.16) >> >> -% 1352 0 obj +% 1355 0 obj << -/D [1350 0 R /XYZ 98.895 753.953 null] +/D [1353 0 R /XYZ 98.895 753.953 null] >> % 284 0 obj << -/D [1350 0 R /XYZ 99.895 716.092 null] +/D [1353 0 R /XYZ 99.895 716.092 null] >> -% 1353 0 obj +% 1356 0 obj << -/D [1350 0 R /XYZ 99.895 566.828 null] +/D [1353 0 R /XYZ 99.895 566.828 null] >> -% 1349 0 obj +% 1352 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1356 0 obj +% 1359 0 obj << /Type /Page -/Contents 1357 0 R -/Resources 1355 0 R +/Contents 1360 0 R +/Resources 1358 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1339 0 R -/Annots [ 1354 0 R ] +/Parent 1342 0 R +/Annots [ 1357 0 R ] >> -% 1354 0 obj +% 1357 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.029 655.624 385.003 667.684] +/Rect [348.75 655.624 355.724 667.684] /A << /S /GoTo /D (section.6) >> >> -% 1358 0 obj +% 1361 0 obj << -/D [1356 0 R /XYZ 149.705 753.953 null] +/D [1359 0 R /XYZ 149.705 753.953 null] >> % 288 0 obj << -/D [1356 0 R /XYZ 150.705 716.092 null] +/D [1359 0 R /XYZ 150.705 716.092 null] >> -% 1355 0 obj +% 1358 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1364 0 obj +% 1367 0 obj << /Type /Page -/Contents 1365 0 R -/Resources 1363 0 R +/Contents 1368 0 R +/Resources 1366 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1339 0 R -/Annots [ 1359 0 R 1360 0 R 1361 0 R ] +/Parent 1342 0 R +/Annots [ 1362 0 R 1363 0 R 1364 0 R ] >> -% 1359 0 obj +% 1362 0 obj << /Type /Annot /Subtype /Link @@ -15535,7 +15536,7 @@ stream /Rect [368.549 344.818 444.603 356.877] /A << /S /GoTo /D (vdata) >> >> -% 1360 0 obj +% 1363 0 obj << /Type /Annot /Subtype /Link @@ -15543,7 +15544,7 @@ stream /Rect [326.652 332.863 338.608 344.922] /A << /S /GoTo /D (table.17) >> >> -% 1361 0 obj +% 1364 0 obj << /Type /Annot /Subtype /Link @@ -15551,47 +15552,47 @@ stream /Rect [291.943 264.733 359.001 276.793] /A << /S /GoTo /D (descdata) >> >> -% 1366 0 obj +% 1369 0 obj << -/D [1364 0 R /XYZ 98.895 753.953 null] +/D [1367 0 R /XYZ 98.895 753.953 null] >> % 292 0 obj << -/D [1364 0 R /XYZ 99.895 716.092 null] +/D [1367 0 R /XYZ 99.895 716.092 null] >> -% 1367 0 obj +% 1370 0 obj << -/D [1364 0 R /XYZ 99.895 513.636 null] +/D [1367 0 R /XYZ 99.895 513.636 null] >> -% 1363 0 obj +% 1366 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F68 1133 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1371 0 obj +% 1374 0 obj << /Type /Page -/Contents 1372 0 R -/Resources 1370 0 R +/Contents 1375 0 R +/Resources 1373 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1339 0 R -/Annots [ 1362 0 R 1369 0 R ] +/Parent 1342 0 R +/Annots [ 1365 0 R 1372 0 R ] >> -% 1375 0 obj +% 1378 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100645Z00'00') /ModDate (D:20180323100645Z00'00') >> -% 1376 0 obj +% 1379 0 obj << /Type /ExtGState /OPM 1 >> -% 1377 0 obj +% 1380 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1379 0 R +/FontDescriptor 1382 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -15599,21 +15600,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1378 0 obj -<< -/BaseFont /XISTAL+Times-Bold -/FontDescriptor 1380 0 R -/Type /Font -/FirstChar 48 -/LastChar 80 -/Widths [ 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611] -/Encoding /WinAnsiEncoding -/Subtype /Type1 ->> endstream endobj -1382 0 obj +1385 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -15672,7 +15662,7 @@ r §¶¦^<ÜÛrc¨¯@vŒñ6@ì>Ƀ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ endstream endobj -1383 0 obj +1386 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -15745,7 +15735,7 @@ k ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1386 0 obj +1389 0 obj << /Length 3048 >> @@ -15756,39 +15746,39 @@ stream 0 g 0 G 0 g 0 G BT -/F62 8.9664 Tf 209.77 645.656 Td [(Pr)18(ocess)-250(0)-7729(Pr)18(ocess)-250(1)]TJ -31.696 -10.959 Td [(I)-1333(GLOB\050I\051)-1334(X\050I\051)-4663(I)-1333(GLOB\050I\051)-1333(X\050I\051)]TJ -1.462 -10.959 Td [(1)-4607(1)-1754(1.0)-4500(1)-4107(33)-1753(2.0)]TJ 0 -10.959 Td [(2)-4607(2)-1754(1.0)-4500(2)-4107(34)-1753(2.0)]TJ 0 -10.959 Td [(3)-4607(3)-1754(1.0)-4500(3)-4107(35)-1753(2.0)]TJ 0 -10.959 Td [(4)-4607(4)-1754(1.0)-4500(4)-4107(36)-1753(2.0)]TJ 0 -10.959 Td [(5)-4607(5)-1754(1.0)-4500(5)-4107(37)-1753(2.0)]TJ 0 -10.959 Td [(6)-4607(6)-1754(1.0)-4500(6)-4107(38)-1753(2.0)]TJ 0 -10.959 Td [(7)-4607(7)-1754(1.0)-4500(7)-4107(39)-1753(2.0)]TJ 0 -10.958 Td [(8)-4607(8)-1754(1.0)-4500(8)-4107(40)-1753(2.0)]TJ 0 -10.959 Td [(9)-4607(9)-1754(1.0)-4500(9)-4107(41)-1753(2.0)]TJ -4.483 -10.959 Td [(10)-4107(10)-1754(1.0)-4000(10)-4107(42)-1753(2.0)]TJ 0 -10.959 Td [(11)-4107(11)-1754(1.0)-4000(11)-4107(43)-1753(2.0)]TJ 0 -10.959 Td [(12)-4107(12)-1754(1.0)-4000(12)-4107(44)-1753(2.0)]TJ 0 -10.959 Td [(13)-4107(13)-1754(1.0)-4000(13)-4107(45)-1753(2.0)]TJ 0 -10.959 Td [(14)-4107(14)-1754(1.0)-4000(14)-4107(46)-1753(2.0)]TJ 0 -10.959 Td [(15)-4107(15)-1754(1.0)-4000(15)-4107(47)-1753(2.0)]TJ 0 -10.959 Td [(16)-4107(16)-1754(1.0)-4000(16)-4107(48)-1753(2.0)]TJ 0 -10.959 Td [(17)-4107(17)-1754(1.0)-4000(17)-4107(49)-1753(2.0)]TJ 0 -10.958 Td [(18)-4107(18)-1754(1.0)-4000(18)-4107(50)-1753(2.0)]TJ 0 -10.959 Td [(19)-4107(19)-1754(1.0)-4000(19)-4107(51)-1753(2.0)]TJ 0 -10.959 Td [(20)-4107(20)-1754(1.0)-4000(20)-4107(52)-1753(2.0)]TJ 0 -10.959 Td [(21)-4107(21)-1754(1.0)-4000(21)-4107(53)-1753(2.0)]TJ 0 -10.959 Td [(22)-4107(22)-1754(1.0)-4000(22)-4107(54)-1753(2.0)]TJ 0 -10.959 Td [(23)-4107(23)-1754(1.0)-4000(23)-4107(55)-1753(2.0)]TJ 0 -10.959 Td [(24)-4107(24)-1754(1.0)-4000(24)-4107(56)-1753(2.0)]TJ 0 -10.959 Td [(25)-4107(25)-1754(1.0)-4000(25)-4107(57)-1753(2.0)]TJ 0 -10.959 Td [(26)-4107(26)-1754(1.0)-4000(26)-4107(58)-1753(2.0)]TJ 0 -10.959 Td [(27)-4107(27)-1754(1.0)-4000(27)-4107(59)-1753(2.0)]TJ 0 -10.958 Td [(28)-4107(28)-1754(1.0)-4000(28)-4107(60)-1753(2.0)]TJ 0 -10.959 Td [(29)-4107(29)-1754(1.0)-4000(29)-4107(61)-1753(2.0)]TJ 0 -10.959 Td [(30)-4107(30)-1754(1.0)-4000(30)-4107(62)-1753(2.0)]TJ 0 -10.959 Td [(31)-4107(31)-1754(1.0)-4000(31)-4107(63)-1753(2.0)]TJ 0 -10.959 Td [(32)-4107(32)-1754(1.0)-4000(32)-4107(64)-1753(2.0)]TJ 0 -10.959 Td [(33)-4107(33)-1754(2.0)-4000(33)-4107(25)-1753(1.0)]TJ 0 -10.959 Td [(34)-4107(34)-1754(2.0)-4000(34)-4107(26)-1753(1.0)]TJ 0 -10.959 Td [(35)-4107(35)-1754(2.0)-4000(35)-4107(27)-1753(1.0)]TJ 0 -10.959 Td [(36)-4107(36)-1754(2.0)-4000(36)-4107(28)-1753(1.0)]TJ 0 -10.959 Td [(37)-4107(37)-1754(2.0)-4000(37)-4107(29)-1753(1.0)]TJ 0 -10.958 Td [(38)-4107(38)-1754(2.0)-4000(38)-4107(30)-1753(1.0)]TJ 0 -10.959 Td [(39)-4107(39)-1754(2.0)-4000(39)-4107(31)-1753(1.0)]TJ 0 -10.959 Td [(40)-4107(40)-1754(2.0)-4000(40)-4107(32)-1753(1.0)]TJ +/F84 8.9664 Tf 209.77 645.656 Td [(Pr)18(ocess)-250(0)-7729(Pr)18(ocess)-250(1)]TJ -31.696 -10.959 Td [(I)-1333(GLOB\050I\051)-1334(X\050I\051)-4663(I)-1333(GLOB\050I\051)-1333(X\050I\051)]TJ -1.462 -10.959 Td [(1)-4607(1)-1754(1.0)-4500(1)-4107(33)-1753(2.0)]TJ 0 -10.959 Td [(2)-4607(2)-1754(1.0)-4500(2)-4107(34)-1753(2.0)]TJ 0 -10.959 Td [(3)-4607(3)-1754(1.0)-4500(3)-4107(35)-1753(2.0)]TJ 0 -10.959 Td [(4)-4607(4)-1754(1.0)-4500(4)-4107(36)-1753(2.0)]TJ 0 -10.959 Td [(5)-4607(5)-1754(1.0)-4500(5)-4107(37)-1753(2.0)]TJ 0 -10.959 Td [(6)-4607(6)-1754(1.0)-4500(6)-4107(38)-1753(2.0)]TJ 0 -10.959 Td [(7)-4607(7)-1754(1.0)-4500(7)-4107(39)-1753(2.0)]TJ 0 -10.958 Td [(8)-4607(8)-1754(1.0)-4500(8)-4107(40)-1753(2.0)]TJ 0 -10.959 Td [(9)-4607(9)-1754(1.0)-4500(9)-4107(41)-1753(2.0)]TJ -4.483 -10.959 Td [(10)-4107(10)-1754(1.0)-4000(10)-4107(42)-1753(2.0)]TJ 0 -10.959 Td [(11)-4107(11)-1754(1.0)-4000(11)-4107(43)-1753(2.0)]TJ 0 -10.959 Td [(12)-4107(12)-1754(1.0)-4000(12)-4107(44)-1753(2.0)]TJ 0 -10.959 Td [(13)-4107(13)-1754(1.0)-4000(13)-4107(45)-1753(2.0)]TJ 0 -10.959 Td [(14)-4107(14)-1754(1.0)-4000(14)-4107(46)-1753(2.0)]TJ 0 -10.959 Td [(15)-4107(15)-1754(1.0)-4000(15)-4107(47)-1753(2.0)]TJ 0 -10.959 Td [(16)-4107(16)-1754(1.0)-4000(16)-4107(48)-1753(2.0)]TJ 0 -10.959 Td [(17)-4107(17)-1754(1.0)-4000(17)-4107(49)-1753(2.0)]TJ 0 -10.958 Td [(18)-4107(18)-1754(1.0)-4000(18)-4107(50)-1753(2.0)]TJ 0 -10.959 Td [(19)-4107(19)-1754(1.0)-4000(19)-4107(51)-1753(2.0)]TJ 0 -10.959 Td [(20)-4107(20)-1754(1.0)-4000(20)-4107(52)-1753(2.0)]TJ 0 -10.959 Td [(21)-4107(21)-1754(1.0)-4000(21)-4107(53)-1753(2.0)]TJ 0 -10.959 Td [(22)-4107(22)-1754(1.0)-4000(22)-4107(54)-1753(2.0)]TJ 0 -10.959 Td [(23)-4107(23)-1754(1.0)-4000(23)-4107(55)-1753(2.0)]TJ 0 -10.959 Td [(24)-4107(24)-1754(1.0)-4000(24)-4107(56)-1753(2.0)]TJ 0 -10.959 Td [(25)-4107(25)-1754(1.0)-4000(25)-4107(57)-1753(2.0)]TJ 0 -10.959 Td [(26)-4107(26)-1754(1.0)-4000(26)-4107(58)-1753(2.0)]TJ 0 -10.959 Td [(27)-4107(27)-1754(1.0)-4000(27)-4107(59)-1753(2.0)]TJ 0 -10.958 Td [(28)-4107(28)-1754(1.0)-4000(28)-4107(60)-1753(2.0)]TJ 0 -10.959 Td [(29)-4107(29)-1754(1.0)-4000(29)-4107(61)-1753(2.0)]TJ 0 -10.959 Td [(30)-4107(30)-1754(1.0)-4000(30)-4107(62)-1753(2.0)]TJ 0 -10.959 Td [(31)-4107(31)-1754(1.0)-4000(31)-4107(63)-1753(2.0)]TJ 0 -10.959 Td [(32)-4107(32)-1754(1.0)-4000(32)-4107(64)-1753(2.0)]TJ 0 -10.959 Td [(33)-4107(33)-1754(2.0)-4000(33)-4107(25)-1753(1.0)]TJ 0 -10.959 Td [(34)-4107(34)-1754(2.0)-4000(34)-4107(26)-1753(1.0)]TJ 0 -10.959 Td [(35)-4107(35)-1754(2.0)-4000(35)-4107(27)-1753(1.0)]TJ 0 -10.959 Td [(36)-4107(36)-1754(2.0)-4000(36)-4107(28)-1753(1.0)]TJ 0 -10.959 Td [(37)-4107(37)-1754(2.0)-4000(37)-4107(29)-1753(1.0)]TJ 0 -10.958 Td [(38)-4107(38)-1754(2.0)-4000(38)-4107(30)-1753(1.0)]TJ 0 -10.959 Td [(39)-4107(39)-1754(2.0)-4000(39)-4107(31)-1753(1.0)]TJ 0 -10.959 Td [(40)-4107(40)-1754(2.0)-4000(40)-4107(32)-1753(1.0)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 94.641 -105.903 Td [(61)]TJ +/F84 9.9626 Tf 94.641 -105.903 Td [(61)]TJ 0 g 0 G ET endstream endobj -1394 0 obj +1397 0 obj << -/Length 7819 +/Length 7852 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(5.2)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(5.2)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(These)-250(subr)18(outines)-250(applies)-250(an)-250(overlap)-250(operator)-250(to)-250(the)-250(input)-250(vector:)]TJ/F60 9.9626 Tf 154.518 -23.824 Td [(x)]TJ/F91 10.3811 Tf 8.097 0 Td [(\040)]TJ/F60 9.9626 Tf 13.497 0 Td [(Q)-42(x)]TJ/F62 9.9626 Tf -176.112 -21.014 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ/F84 9.9626 Tf -51.429 -18.964 Td [(These)-250(subr)18(outines)-250(applies)-250(an)-250(overlap)-250(operator)-250(to)-250(the)-250(input)-250(vector:)]TJ/F78 9.9626 Tf 154.827 -23.824 Td [(x)]TJ/F179 10.3811 Tf 8.097 0 Td [(\040)]TJ/F78 9.9626 Tf 13.497 0 Td [(Q)-42(x)]TJ/F84 9.9626 Tf -176.531 -21.014 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.294 -19.203 Td [(x)]TJ +/F78 9.9626 Tf 0.713 -19.203 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(submatrix)]TJ/F60 9.9626 Tf 131.351 0 Td [(x)]TJ +/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(submatrix)]TJ/F78 9.9626 Tf 131.351 0 Td [(x)]TJ 0 g 0 G -141.607 -19.564 Td [(Q)]TJ 0 g 0 G -/F62 9.9626 Tf 12.857 0 Td [(is)-250(the)-250(overlap)-250(operator;)-250(it)-250(is)-250(the)-250(composition)-250(of)-250(two)-250(operators)]TJ/F60 9.9626 Tf 271.931 0 Td [(P)]TJ/F60 7.5716 Tf 5.424 -1.494 Td [(a)]TJ/F62 9.9626 Tf 6.445 1.494 Td [(and)]TJ/F60 9.9626 Tf 19.681 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.616 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.616 Td [(.)]TJ +/F84 9.9626 Tf 12.857 0 Td [(is)-250(the)-250(overlap)-250(operator;)-250(it)-250(is)-250(the)-250(composition)-250(of)-250(two)-250(operators)]TJ/F78 9.9626 Tf 271.931 0 Td [(P)]TJ/F78 7.5716 Tf 5.424 -1.494 Td [(a)]TJ/F84 9.9626 Tf 6.445 1.494 Td [(and)]TJ/F78 9.9626 Tf 19.681 0 Td [(P)]TJ/F78 7.5716 Tf 6.405 3.616 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.616 Td [(.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -15798,42 +15788,42 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.663 573.142 Td [(x)]TJ/F59 9.9626 Tf 120.622 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.663 573.142 Td [(x)]TJ/F75 9.9626 Tf 120.622 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 569.356 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 560.788 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 236.369 560.788 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 560.988 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 560.788 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 560.788 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 549.032 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 548.833 Td [(ovrl)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 548.833 Td [(ovrl)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 537.077 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 536.878 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 536.878 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 525.122 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 524.923 Td [(ovrl)]TJ +/F84 9.9626 Tf 376.592 524.923 Td [(ovrl)]TJ ET q 1 0 0 1 230.392 521.137 cm @@ -15841,11 +15831,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 492.758 Td [(T)92(able)-250(18:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 492.758 Td [(T)92(able)-250(18:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -127.572 -23.549 Td [(call)]TJ +/F131 9.9626 Tf -127.572 -23.549 Td [(call)]TJ 0 g 0 G [-525(psb_ovrl\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -15879,87 +15869,87 @@ BT 0 g 0 G [(work\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.014 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.014 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.564 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.564 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.564 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 89.687 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -79.948 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 89.687 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -79.948 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 349.291 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 349.291 Tm [(psb)]TJ ET q 1 0 0 1 436.673 349.49 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 349.291 Td [(T)]TJ +/F131 9.9626 Tf 439.811 349.291 Td [(T)]TJ ET q 1 0 0 1 445.669 349.49 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 349.291 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 349.291 Td [(vect)]TJ ET q 1 0 0 1 470.356 349.49 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 349.291 Td [(type)]TJ +/F131 9.9626 Tf 473.495 349.291 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(18)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.564 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -19.564 Td [(desc)]TJ ET q 1 0 0 1 171.218 317.971 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 317.772 Td [(a)]TJ +/F75 9.9626 Tf 174.207 317.772 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 270.151 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 269.951 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 269.951 Td [(desc)]TJ ET q 1 0 0 1 384.755 270.151 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 269.951 Td [(type)]TJ +/F131 9.9626 Tf 387.893 269.951 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.564 Td [(update)]TJ +/F75 9.9626 Tf -258.11 -19.564 Td [(update)]TJ 0 g 0 G -/F62 9.9626 Tf 36.523 0 Td [(Update)-250(operator)74(.)]TJ +/F84 9.9626 Tf 36.523 0 Td [(Update)-250(operator)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -11.617 -31.519 Td [(update)-250(=)-250(psb)]TJ +/F75 9.9626 Tf -11.617 -31.519 Td [(update)-250(=)-250(psb)]TJ ET q 1 0 0 1 235.367 219.067 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 238.356 218.868 Td [(none)]TJ +/F75 9.9626 Tf 238.356 218.868 Td [(none)]TJ ET q 1 0 0 1 261.648 219.067 cm @@ -15967,16 +15957,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 269.619 218.868 Td [(Do)-250(nothing;)]TJ +/F84 9.9626 Tf 269.619 218.868 Td [(Do)-250(nothing;)]TJ 0 g 0 G -/F59 9.9626 Tf -94.008 -15.579 Td [(update)-250(=)-250(psb)]TJ +/F75 9.9626 Tf -94.008 -15.579 Td [(update)-250(=)-250(psb)]TJ ET q 1 0 0 1 235.367 203.488 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 238.356 203.289 Td [(add)]TJ +/F75 9.9626 Tf 238.356 203.289 Td [(add)]TJ ET q 1 0 0 1 256.109 203.488 cm @@ -15984,16 +15974,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 264.079 203.289 Td [(Sum)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F60 9.9626 Tf 137.239 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F62 9.9626 Tf 5.4 -3.617 Td [(;)]TJ +/F84 9.9626 Tf 264.079 203.289 Td [(Sum)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F78 9.9626 Tf 137.239 0 Td [(P)]TJ/F78 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F84 9.9626 Tf 5.4 -3.617 Td [(;)]TJ 0 g 0 G -/F59 9.9626 Tf -237.512 -15.579 Td [(update)-250(=)-250(psb)]TJ +/F75 9.9626 Tf -237.512 -15.579 Td [(update)-250(=)-250(psb)]TJ ET q 1 0 0 1 235.367 187.91 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 238.356 187.71 Td [(avg)]TJ +/F75 9.9626 Tf 238.356 187.71 Td [(avg)]TJ ET q 1 0 0 1 255.013 187.91 cm @@ -16001,28 +15991,28 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 262.983 187.71 Td [(A)92(verage)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F60 9.9626 Tf 153.667 0 Td [(P)]TJ/F60 7.5716 Tf 5.424 -1.494 Td [(a)]TJ/F60 9.9626 Tf 4.278 1.494 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.617 Td [(;)]TJ -262.547 -19.564 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(u)-80(p)-25(d)-40(a)-25(t)-25(e)]TJ +/F84 9.9626 Tf 262.595 187.71 Td [(A)92(verage)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F78 9.9626 Tf 153.667 0 Td [(P)]TJ/F78 7.5716 Tf 5.423 -1.494 Td [(a)]TJ/F78 9.9626 Tf 4.279 1.494 Td [(P)]TJ/F78 7.5716 Tf 6.404 3.617 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.617 Td [(;)]TJ -262.158 -19.564 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(u)-80(p)-25(d)-40(a)-25(t)-25(e)]TJ ET q 1 0 0 1 244.034 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 247.147 144.236 Td [(t)-25(y)-80(p)-25(e)]TJ/F93 10.3811 Tf 21.467 0 Td [(=)]TJ/F60 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ +/F78 9.9626 Tf 247.147 144.236 Td [(t)-25(y)-80(p)-25(e)]TJ/F181 10.3811 Tf 21.467 0 Td [(=)]TJ/F78 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ ET q 1 0 0 1 294.938 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 298.201 144.236 Td [(a)-25(v)-47(g)]TJ +/F78 9.9626 Tf 298.201 144.236 Td [(a)-25(v)-47(g)]TJ ET q 1 0 0 1 314.026 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 175.611 132.281 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 175.611 132.281 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(integer)-250(variable.)]TJ 0 g 0 G 141.968 -29.888 Td [(62)]TJ 0 g 0 G @@ -16030,53 +16020,53 @@ ET endstream endobj -1403 0 obj +1406 0 obj << -/Length 5447 +/Length 5930 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(work)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(dimensional)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F60 9.9626 Tf 252.794 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(dimensional)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F78 9.9626 Tf 252.794 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -282.907 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -282.907 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F60 9.9626 Tf 117.084 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-379(as:)-568(an)-379(array)-379(of)-379(rank)-379(one)-379(or)-379(two)-379(containing)-379(numbers)-379(of)-379(type)]TJ 0 -11.955 Td [(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F78 9.9626 Tf 117.084 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.02 0 0 1 124.802 570.637 Tm [(Speci\002ed)-330(as:)-475(an)-331(array)-330(of)-331(rank)-330(one)-330(or)-331(two)-330(containing)-331(numbers)-330(of)-331(type)]TJ 1 0 0 1 124.802 558.682 Tm [(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(18)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(If)-241(ther)18(e)-240(is)-241(no)-241(overlap)-240(in)-241(the)-241(data)-240(distribution)-241(associated)-241(with)-240(the)-241(descrip-)]TJ 12.453 -11.955 Td [(tor)74(,)-250(no)-250(operations)-250(ar)18(e)-250(performed;)]TJ + 0.98 0 0 1 124.802 449.093 Tm [(If)-213(ther)18(e)-213(is)-214(no)-213(overlap)-214(in)-213(the)-213(data)-214(distribution)-213(associated)-213(with)-214(the)-213(descriptor)75(,)]TJ 1 0 0 1 124.802 437.138 Tm [(no)-250(operations)-250(ar)18(e)-250(performed;)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-284(operator)]TJ/F60 9.9626 Tf 72.855 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F62 9.9626 Tf 8.232 -3.617 Td [(performs)-284(the)-284(r)18(eduction)-285(sum)-284(of)-284(overlap)-284(elements;)-302(it)-284(is)-284(a)]TJ -75.039 -11.955 Td [(\223pr)18(olongation\224)-265(operator)]TJ/F60 9.9626 Tf 110.535 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.616 Td [(T)]TJ/F62 9.9626 Tf 8.044 -3.616 Td [(that)-265(r)18(eplicates)-266(ov)1(erlap)-266(elements,)-269(accounting)]TJ -124.984 -11.955 Td [(for)-250(the)-250(physical)-250(r)18(eplication)-250(of)-250(data;)]TJ + 1.017 0 0 1 124.493 417.212 Tm [(The)-245(operator)]TJ/F78 9.9626 Tf 1 0 0 1 185.127 417.212 Tm [(P)]TJ/F78 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F84 9.9626 Tf 1.017 0 0 1 199.418 417.212 Tm [(performs)-245(the)-246(r)18(eduction)-245(sum)-245(of)-246(overlap)-245(elements;)-245(it)-246(i)1(s)-246(a)]TJ 1.009 0 0 1 123.308 405.257 Tm [(\223pr)18(olongation\224)-248(operator)]TJ/F78 9.9626 Tf 1 0 0 1 234.485 405.257 Tm [(P)]TJ/F78 7.5716 Tf 6.404 3.617 Td [(T)]TJ/F84 9.9626 Tf 1.009 0 0 1 248.781 405.257 Tm [(that)-248(r)18(eplicates)-248(overlap)-248(el)1(ements,)-248(accounting)]TJ 1 0 0 1 124.802 393.302 Tm [(for)-250(the)-250(physical)-250(r)18(eplication)-250(of)-250(data;)]TJ 0 g 0 G -12.453 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-190(operator)]TJ/F60 9.9626 Tf 70.978 0 Td [(P)]TJ/F60 7.5716 Tf 5.423 -1.495 Td [(a)]TJ/F62 9.9626 Tf 5.848 1.495 Td [(performs)-190(a)-190(scaling)-190(on)-190(the)-190(overlap)-190(elements)-190(by)-190(the)-190(amount)]TJ -69.796 -11.956 Td [(of)-325(r)18(eplication;)-363(thus,)-343(when)-325(combined)-325(with)-325(the)-325(r)18(eduction)-325(operator)74(,)-344(it)-325(im-)]TJ 0 -11.955 Td [(plements)-250(the)-250(average)-250(of)-250(r)18(eplicated)-250(elements)-250(over)-250(all)-250(of)-250(their)-250(instances.)]TJ/F59 11.9552 Tf -24.907 -19.925 Td [(Example)-320(of)-320(use)]TJ/F62 9.9626 Tf 87.879 0 Td [(Consider)-320(the)-320(discr)18(etization)-320(mesh)-320(depicted)-320(in)-320(\002g.)]TJ + 0.98 0 0 1 124.493 373.377 Tm [(The)-235(operat)1(or)]TJ/F78 9.9626 Tf 1 0 0 1 182.723 373.377 Tm [(P)]TJ/F78 7.5716 Tf 5.424 -1.495 Td [(a)]TJ/F84 9.9626 Tf 0.98 0 0 1 194.391 373.377 Tm [(performs)-235(a)-234(scaling)-235(on)-234(the)-235(overlap)-234(elements)-235(by)-234(the)-235(amount)]TJ 0.987 0 0 1 124.802 361.422 Tm [(of)-254(r)18(eplication;)-255(thus,)-255(when)-254(combined)-255(with)-254(the)-255(r)19(eduction)-255(operator)75(,)-254(it)-255(imple-)]TJ 1 0 0 1 124.802 349.466 Tm [(ments)-250(the)-250(average)-250(of)-250(r)18(eplicated)-250(elements)-250(over)-250(all)-250(of)-250(their)-250(instances.)]TJ/F75 11.9552 Tf 1.02 0 0 1 99.895 329.541 Tm [(Example)-276(of)-276(use)]TJ/F84 9.9626 Tf 1.02 0 0 1 188.003 329.541 Tm [(Consider)-276(the)-275(discr)17(etization)-276(mesh)-275(depicted)-276(in)-276(\002g.)]TJ 0 0 1 rg 0 0 1 RG - [-320(4)]TJ + [-276(4)]TJ 0 g 0 G - [(,)-337(parti-)]TJ -87.879 -11.955 Td [(tioned)-262(among)-262(two)-263(pr)18(ocesse)1(s)-263(as)-262(shown)-262(by)-262(the)-262(dashed)-263(li)1(nes,)-266(with)-262(an)-262(overlap)-262(of)]TJ 0 -11.955 Td [(1)-261(extr)1(a)-261(layer)-260(with)-261(r)18(espect)-260(to)-261(the)-260(partition)-261(of)-260(\002g.)]TJ + [(,)-283(parti-)]TJ 0.983 0 0 1 99.895 317.586 Tm [(tioned)-254(among)-254(two)-255(pr)19(ocesses)-255(as)-254(shown)-254(by)-254(the)-254(dashed)-255(lines,)-254(with)-254(an)-254(overlap)-254(of)-255(1)]TJ 1.02 0 0 1 99.895 305.631 Tm [(extra)-266(layer)-266(with)-266(r)17(espect)-266(to)-266(the)-266(partition)-266(of)-266(\002g.)]TJ 0 0 1 rg 0 0 1 RG - [-261(3)]TJ + [-266(3)]TJ 0 g 0 G - [(;)-265(the)-261(data)-260(distribution)-261(is)-260(such)]TJ 0 -11.956 Td [(that)-267(each)-268(pr)18(ocess)-267(will)-267(own)-267(40)-268(entries)-267(in)-267(the)-267(index)-268(space,)-271(with)-267(an)-268(overlap)-267(of)-267(16)]TJ 0 -11.955 Td [(entries)-249(placed)-248(at)-249(local)-249(i)1(ndices)-249(25)-249(thr)18(ough)-248(40;)-249(the)-249(halo)-249(will)-248(r)8(un)-249(fr)18(om)-249(local)-248(index)]TJ 0 -11.955 Td [(41)-236(thr)18(ough)-237(local)-236(index)-237(48..)-305(If)-236(pr)18(ocess)-237(0)-236(assigns)-237(an)-236(initial)-236(value)-237(of)-236(1)-236(to)-237(its)-236(entries)]TJ 0 -11.955 Td [(in)-259(the)]TJ/F60 9.9626 Tf 27.963 0 Td [(x)]TJ/F62 9.9626 Tf 7.782 0 Td [(vector)74(,)-261(and)-258(pr)18(ocess)-259(1)-259(assigns)-258(a)-259(value)-259(of)-258(2,)-261(then)-259(after)-258(a)-259(call)-259(to)]TJ/F67 9.9626 Tf 266.124 0 Td [(psb_ovrl)]TJ/F62 9.9626 Tf -301.869 -11.955 Td [(with)]TJ/F67 9.9626 Tf 22.816 0 Td [(psb_avg_)]TJ/F62 9.9626 Tf 44.404 0 Td [(and)-257(a)-257(call)-257(to)]TJ/F67 9.9626 Tf 55.983 0 Td [(psb_halo_)]TJ/F62 9.9626 Tf 49.635 0 Td [(the)-257(contents)-257(of)-257(the)-257(local)-257(vectors)-257(will)-258(b)1(e)]TJ -172.838 -11.955 Td [(the)-250(following)-250(\050showing)-250(a)-250(transition)-250(among)-250(the)-250(two)-250(subdomains\051)]TJ + [(;)-276(the)-267(data)-266(distribution)-266(is)-266(such)]TJ 1.009 0 0 1 99.895 293.676 Tm [(that)-247(each)-247(pr)18(ocess)-247(will)-247(own)-247(40)-247(entries)-247(in)-247(the)-247(index)-247(space,)-247(with)-247(an)-247(overlap)-247(of)-247(16)]TJ 1 0 0 1 99.895 281.72 Tm [(entries)-251(pl)1(aced)-251(at)-251(l)1(ocal)-251(indices)-250(25)-251(thr)18(ough)-250(40;)-251(the)-251(halo)-250(will)-251(r)8(un)-250(fr)18(om)-251(local)-250(index)]TJ 0.993 0 0 1 99.895 269.765 Tm [(41)-252(thr)18(ough)-252(local)-252(index)-252(48..)-313(If)-253(pr)19(ocess)-253(0)-252(assigns)-252(an)-252(initial)-252(value)-252(of)-252(1)-252(to)-252(its)-252(entries)]TJ 1.006 0 0 1 99.895 257.81 Tm [(in)-248(the)]TJ/F78 9.9626 Tf 1 0 0 1 127.819 257.81 Tm [(x)]TJ/F84 9.9626 Tf 1.006 0 0 1 135.515 257.81 Tm [(vector)74(,)-249(and)-248(pr)18(ocess)-249(1)-248(assigns)-249(a)-248(value)-248(of)-249(2,)-248(then)-249(after)-248(a)-249(call)-248(to)]TJ/F131 9.9626 Tf 1 0 0 1 401.764 257.81 Tm [(psb_ovrl)]TJ/F84 9.9626 Tf 1.006 0 0 1 99.477 245.855 Tm [(with)]TJ/F131 9.9626 Tf 1 0 0 1 122.35 245.855 Tm [(psb_avg_)]TJ/F84 9.9626 Tf 1.006 0 0 1 166.69 245.855 Tm [(and)-249(a)-249(call)-250(to)]TJ/F131 9.9626 Tf 1 0 0 1 222.692 245.855 Tm [(psb_halo_)]TJ/F84 9.9626 Tf 1.006 0 0 1 272.263 245.855 Tm [(the)-249(contents)-249(of)-249(the)-250(local)-249(vectors)-249(will)-249(be)]TJ 1 0 0 1 99.895 233.9 Tm [(the)-250(following)-250(\050showing)-250(a)-250(transition)-250(among)-250(the)-250(two)-250(subdomains\051)]TJ 0 g 0 G 166.875 -143.462 Td [(63)]TJ 0 g 0 G @@ -16084,7 +16074,7 @@ ET endstream endobj -1411 0 obj +1414 0 obj << /Length 3551 >> @@ -16095,16 +16085,16 @@ stream 0 g 0 G 0 g 0 G BT -/F62 7.9701 Tf 265.805 653.177 Td [(Pr)18(ocess)-250(0)-8396(Pr)18(ocess)-250(1)]TJ -31.163 -9.464 Td [(I)-1500(GLOB\050I\051)-1500(X\050I\051)-5163(I)-1500(GLOB\050I\051)-1500(X\050I\051)]TJ -1.299 -9.465 Td [(1)-4774(1)-1920(1.0)-5000(1)-4274(33)-1920(1.5)]TJ 0 -9.464 Td [(2)-4774(2)-1920(1.0)-5000(2)-4274(34)-1920(1.5)]TJ 0 -9.465 Td [(3)-4774(3)-1920(1.0)-5000(3)-4274(35)-1920(1.5)]TJ 0 -9.464 Td [(4)-4774(4)-1920(1.0)-5000(4)-4274(36)-1920(1.5)]TJ 0 -9.465 Td [(5)-4774(5)-1920(1.0)-5000(5)-4274(37)-1920(1.5)]TJ 0 -9.464 Td [(6)-4774(6)-1920(1.0)-5000(6)-4274(38)-1920(1.5)]TJ 0 -9.465 Td [(7)-4774(7)-1920(1.0)-5000(7)-4274(39)-1920(1.5)]TJ 0 -9.464 Td [(8)-4774(8)-1920(1.0)-5000(8)-4274(40)-1920(1.5)]TJ 0 -9.465 Td [(9)-4774(9)-1920(1.0)-5000(9)-4274(41)-1920(2.0)]TJ -3.985 -9.464 Td [(10)-4274(10)-1920(1.0)-4500(10)-4274(42)-1920(2.0)]TJ 0 -9.465 Td [(11)-4274(11)-1920(1.0)-4500(11)-4274(43)-1920(2.0)]TJ 0 -9.464 Td [(12)-4274(12)-1920(1.0)-4500(12)-4274(44)-1920(2.0)]TJ 0 -9.465 Td [(13)-4274(13)-1920(1.0)-4500(13)-4274(45)-1920(2.0)]TJ 0 -9.464 Td [(14)-4274(14)-1920(1.0)-4500(14)-4274(46)-1920(2.0)]TJ 0 -9.465 Td [(15)-4274(15)-1920(1.0)-4500(15)-4274(47)-1920(2.0)]TJ 0 -9.464 Td [(16)-4274(16)-1920(1.0)-4500(16)-4274(48)-1920(2.0)]TJ 0 -9.465 Td [(17)-4274(17)-1920(1.0)-4500(17)-4274(49)-1920(2.0)]TJ 0 -9.464 Td [(18)-4274(18)-1920(1.0)-4500(18)-4274(50)-1920(2.0)]TJ 0 -9.465 Td [(19)-4274(19)-1920(1.0)-4500(19)-4274(51)-1920(2.0)]TJ 0 -9.464 Td [(20)-4274(20)-1920(1.0)-4500(20)-4274(52)-1920(2.0)]TJ 0 -9.465 Td [(21)-4274(21)-1920(1.0)-4500(21)-4274(53)-1920(2.0)]TJ 0 -9.464 Td [(22)-4274(22)-1920(1.0)-4500(22)-4274(54)-1920(2.0)]TJ 0 -9.465 Td [(23)-4274(23)-1920(1.0)-4500(23)-4274(55)-1920(2.0)]TJ 0 -9.464 Td [(24)-4274(24)-1920(1.0)-4500(24)-4274(56)-1920(2.0)]TJ 0 -9.465 Td [(25)-4274(25)-1920(1.5)-4500(25)-4274(57)-1920(2.0)]TJ 0 -9.464 Td [(26)-4274(26)-1920(1.5)-4500(26)-4274(58)-1920(2.0)]TJ 0 -9.465 Td [(27)-4274(27)-1920(1.5)-4500(27)-4274(59)-1920(2.0)]TJ 0 -9.464 Td [(28)-4274(28)-1920(1.5)-4500(28)-4274(60)-1920(2.0)]TJ 0 -9.465 Td [(29)-4274(29)-1920(1.5)-4500(29)-4274(61)-1920(2.0)]TJ 0 -9.464 Td [(30)-4274(30)-1920(1.5)-4500(30)-4274(62)-1920(2.0)]TJ 0 -9.465 Td [(31)-4274(31)-1920(1.5)-4500(31)-4274(63)-1920(2.0)]TJ 0 -9.464 Td [(32)-4274(32)-1920(1.5)-4500(32)-4274(64)-1920(2.0)]TJ 0 -9.465 Td [(33)-4274(33)-1920(1.5)-4500(33)-4274(25)-1920(1.5)]TJ 0 -9.464 Td [(34)-4274(34)-1920(1.5)-4500(34)-4274(26)-1920(1.5)]TJ 0 -9.465 Td [(35)-4274(35)-1920(1.5)-4500(35)-4274(27)-1920(1.5)]TJ 0 -9.464 Td [(36)-4274(36)-1920(1.5)-4500(36)-4274(28)-1920(1.5)]TJ 0 -9.465 Td [(37)-4274(37)-1920(1.5)-4500(37)-4274(29)-1920(1.5)]TJ 0 -9.464 Td [(38)-4274(38)-1920(1.5)-4500(38)-4274(30)-1920(1.5)]TJ 0 -9.465 Td [(39)-4274(39)-1920(1.5)-4500(39)-4274(31)-1920(1.5)]TJ 0 -9.464 Td [(40)-4274(40)-1920(1.5)-4500(40)-4274(32)-1920(1.5)]TJ 0 -9.465 Td [(41)-4274(41)-1920(2.0)-4500(41)-4274(17)-1920(1.0)]TJ 0 -9.464 Td [(42)-4274(42)-1920(2.0)-4500(42)-4274(18)-1920(1.0)]TJ 0 -9.465 Td [(43)-4274(43)-1920(2.0)-4500(43)-4274(19)-1920(1.0)]TJ 0 -9.464 Td [(44)-4274(44)-1920(2.0)-4500(44)-4274(20)-1920(1.0)]TJ 0 -9.465 Td [(45)-4274(45)-1920(2.0)-4500(45)-4274(21)-1920(1.0)]TJ 0 -9.464 Td [(46)-4274(46)-1920(2.0)-4500(46)-4274(22)-1920(1.0)]TJ 0 -9.465 Td [(47)-4274(47)-1920(2.0)-4500(47)-4274(23)-1920(1.0)]TJ 0 -9.464 Td [(48)-4274(48)-1920(2.0)-4500(48)-4274(24)-1920(1.0)]TJ +/F84 7.9701 Tf 265.805 653.177 Td [(Pr)18(ocess)-250(0)-8396(Pr)18(ocess)-250(1)]TJ -31.163 -9.464 Td [(I)-1500(GLOB\050I\051)-1500(X\050I\051)-5163(I)-1500(GLOB\050I\051)-1500(X\050I\051)]TJ -1.299 -9.465 Td [(1)-4774(1)-1920(1.0)-5000(1)-4274(33)-1920(1.5)]TJ 0 -9.464 Td [(2)-4774(2)-1920(1.0)-5000(2)-4274(34)-1920(1.5)]TJ 0 -9.465 Td [(3)-4774(3)-1920(1.0)-5000(3)-4274(35)-1920(1.5)]TJ 0 -9.464 Td [(4)-4774(4)-1920(1.0)-5000(4)-4274(36)-1920(1.5)]TJ 0 -9.465 Td [(5)-4774(5)-1920(1.0)-5000(5)-4274(37)-1920(1.5)]TJ 0 -9.464 Td [(6)-4774(6)-1920(1.0)-5000(6)-4274(38)-1920(1.5)]TJ 0 -9.465 Td [(7)-4774(7)-1920(1.0)-5000(7)-4274(39)-1920(1.5)]TJ 0 -9.464 Td [(8)-4774(8)-1920(1.0)-5000(8)-4274(40)-1920(1.5)]TJ 0 -9.465 Td [(9)-4774(9)-1920(1.0)-5000(9)-4274(41)-1920(2.0)]TJ -3.985 -9.464 Td [(10)-4274(10)-1920(1.0)-4500(10)-4274(42)-1920(2.0)]TJ 0 -9.465 Td [(11)-4274(11)-1920(1.0)-4500(11)-4274(43)-1920(2.0)]TJ 0 -9.464 Td [(12)-4274(12)-1920(1.0)-4500(12)-4274(44)-1920(2.0)]TJ 0 -9.465 Td [(13)-4274(13)-1920(1.0)-4500(13)-4274(45)-1920(2.0)]TJ 0 -9.464 Td [(14)-4274(14)-1920(1.0)-4500(14)-4274(46)-1920(2.0)]TJ 0 -9.465 Td [(15)-4274(15)-1920(1.0)-4500(15)-4274(47)-1920(2.0)]TJ 0 -9.464 Td [(16)-4274(16)-1920(1.0)-4500(16)-4274(48)-1920(2.0)]TJ 0 -9.465 Td [(17)-4274(17)-1920(1.0)-4500(17)-4274(49)-1920(2.0)]TJ 0 -9.464 Td [(18)-4274(18)-1920(1.0)-4500(18)-4274(50)-1920(2.0)]TJ 0 -9.465 Td [(19)-4274(19)-1920(1.0)-4500(19)-4274(51)-1920(2.0)]TJ 0 -9.464 Td [(20)-4274(20)-1920(1.0)-4500(20)-4274(52)-1920(2.0)]TJ 0 -9.465 Td [(21)-4274(21)-1920(1.0)-4500(21)-4274(53)-1920(2.0)]TJ 0 -9.464 Td [(22)-4274(22)-1920(1.0)-4500(22)-4274(54)-1920(2.0)]TJ 0 -9.465 Td [(23)-4274(23)-1920(1.0)-4500(23)-4274(55)-1920(2.0)]TJ 0 -9.464 Td [(24)-4274(24)-1920(1.0)-4500(24)-4274(56)-1920(2.0)]TJ 0 -9.465 Td [(25)-4274(25)-1920(1.5)-4500(25)-4274(57)-1920(2.0)]TJ 0 -9.464 Td [(26)-4274(26)-1920(1.5)-4500(26)-4274(58)-1920(2.0)]TJ 0 -9.465 Td [(27)-4274(27)-1920(1.5)-4500(27)-4274(59)-1920(2.0)]TJ 0 -9.464 Td [(28)-4274(28)-1920(1.5)-4500(28)-4274(60)-1920(2.0)]TJ 0 -9.465 Td [(29)-4274(29)-1920(1.5)-4500(29)-4274(61)-1920(2.0)]TJ 0 -9.464 Td [(30)-4274(30)-1920(1.5)-4500(30)-4274(62)-1920(2.0)]TJ 0 -9.465 Td [(31)-4274(31)-1920(1.5)-4500(31)-4274(63)-1920(2.0)]TJ 0 -9.464 Td [(32)-4274(32)-1920(1.5)-4500(32)-4274(64)-1920(2.0)]TJ 0 -9.465 Td [(33)-4274(33)-1920(1.5)-4500(33)-4274(25)-1920(1.5)]TJ 0 -9.464 Td [(34)-4274(34)-1920(1.5)-4500(34)-4274(26)-1920(1.5)]TJ 0 -9.465 Td [(35)-4274(35)-1920(1.5)-4500(35)-4274(27)-1920(1.5)]TJ 0 -9.464 Td [(36)-4274(36)-1920(1.5)-4500(36)-4274(28)-1920(1.5)]TJ 0 -9.465 Td [(37)-4274(37)-1920(1.5)-4500(37)-4274(29)-1920(1.5)]TJ 0 -9.464 Td [(38)-4274(38)-1920(1.5)-4500(38)-4274(30)-1920(1.5)]TJ 0 -9.465 Td [(39)-4274(39)-1920(1.5)-4500(39)-4274(31)-1920(1.5)]TJ 0 -9.464 Td [(40)-4274(40)-1920(1.5)-4500(40)-4274(32)-1920(1.5)]TJ 0 -9.465 Td [(41)-4274(41)-1920(2.0)-4500(41)-4274(17)-1920(1.0)]TJ 0 -9.464 Td [(42)-4274(42)-1920(2.0)-4500(42)-4274(18)-1920(1.0)]TJ 0 -9.465 Td [(43)-4274(43)-1920(2.0)-4500(43)-4274(19)-1920(1.0)]TJ 0 -9.464 Td [(44)-4274(44)-1920(2.0)-4500(44)-4274(20)-1920(1.0)]TJ 0 -9.465 Td [(45)-4274(45)-1920(2.0)-4500(45)-4274(21)-1920(1.0)]TJ 0 -9.464 Td [(46)-4274(46)-1920(2.0)-4500(46)-4274(22)-1920(1.0)]TJ 0 -9.465 Td [(47)-4274(47)-1920(2.0)-4500(47)-4274(23)-1920(1.0)]TJ 0 -9.464 Td [(48)-4274(48)-1920(2.0)-4500(48)-4274(24)-1920(1.0)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 88.221 -98.979 Td [(64)]TJ +/F84 9.9626 Tf 88.221 -98.979 Td [(64)]TJ 0 g 0 G ET endstream endobj -1415 0 obj +1418 0 obj << /Length 321 >> @@ -16125,7 +16115,7 @@ Q 0 g 0 G 1 0 0 1 -104.053 -292.88 cm BT -/F62 9.9626 Tf 189.276 261 Td [(Figur)18(e)-250(4:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ +/F84 9.9626 Tf 189.276 261 Td [(Figur)18(e)-250(4:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -16135,20 +16125,20 @@ ET endstream endobj -1398 0 obj +1401 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8_ov.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1417 0 R +/PTEX.InfoDict 1420 0 R /BBox [0 0 516 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1418 0 R ->>/Font << /R8 1419 0 R/R10 1420 0 R>> +/R7 1421 0 R +>>/Font << /R8 1422 0 R/R10 1423 0 R>> >> /Length 3413 /Filter /FlateDecode @@ -16162,7 +16152,7 @@ x >÷­ õïÅ7z3óm‘W=ò™¿ªOækª¨ù*óÕ#_e}0¾h;ׇ©›öÄ‚ÏýUm°xßPyPÇp}gZz®ŽÎâˆè«43©cˆŸLÂ̵1Y][V½üέ¦†5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½´â6Tl4©^lÉ]·íMª×µ6ÔNÉ‹»&ž%Ä›ºõ)ÕÃýÍ?Ô‹'ñQõ†:V\ïꛉÁ¿Ö†ÚU ñ¦n±Ý|îêˆÅ“ù zC+®wu‹mÐàƒ_kCí*¾Â\Ýb[=øÜ?Ô‹'ñ •Gè˜_ß™–ž«£³8"ºÇ*ÍÌÐ1ŸLÂ̵1Y=Æ¢zÚð¬÷mŒ,…uÑZMuÑ´úTYaUô„&Õ[ö…›:ÖZG¨žvõ_ºP=ß-Fü®5lËãouÃYË*ïoþ¦ŽX<‰½M+®7uÓy„àsÿ®µ¡6‰Ácü­n:±|îoêˆÅ“ù°§ÛÔ±âzS7¤>÷ïZj?˜|®bä+ÌT|æoêˆÅ“ø¸}ÛÔ±’¯2/P=ò™×ÚP[¿àƒŠ1þ` z¼¿ù›:bñ$>îÔ6u¬¸ÞÔM§W‚Ïý»Ö†Úå}qÇwf¾-òàªG>ó7uÄâÉ|Mõ#_e^ z䫬ÆïZ£ÁÎõaꦓ9Áçþ¦ŽX<‰o¨<¨c¸¾3-=WGgqDô«43©cˆŸLÂ̵1YÝö¬zy?¶¥ž5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½tNÆm¨ØÔn†]·ÚÍðÓ3ˆïZ£Áö, ífณguj7 ?ÏUõÒ‘Ø%ñ¹º ífàóÜßµ6Ô¡ðQņv3tè)øÜ?Õ‹'óAõ¦:V\ïê6´›Ïs×ÚPçcÈÚÍÐq-ñ™ª#Oâ£êMu¬ä«Ì Uoh7Ç_jðQõºÖnŒ?˜ªÞÔn†.â繪^:Óâ6Tlj7Cà‚Ïý]kCzyñÌÌ|[äª7µ›†|YõÒñ·k®W·¡Ý òUÖã»Öh°s}¸º ífðþõÁøy®ª§“*nRÇfìfÄàë,Žˆî±J33tlÄnFI ¶ÉÒˆèy.ª§Ó)žõ¾ í‘‘¥0¢.zB«©.ú‚ÖBŸÊ"+¬ŠžÐ¤zíÐn†Û®b­i7Cg _Vµ›á§ _µFƒmYbü­n81iYåýͨ#OâãAÀC+®7uÓ©ÈàsÕÚP‡Ácü­n:7|î?Ô‹'óáÌß¡Ž×›ºé®?Œ÷Æå‡ñ¶ŽùÃxü0î÷øúz~ÙëDõ¹žDí‡E]Ó×…aXŽí!Í>øïŸ×düoõ–‘¿Ö«\¯ç­ÜýÌ•çë»ýô—w-ÿ/Iÿõv×ï!o'ÈŸÿ`[G. endstream endobj -1423 0 obj +1426 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16221,7 +16211,7 @@ r §¶¦^<ÜÛrc¨¯@vŒñ6@ì>Ƀ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ endstream endobj -1424 0 obj +1427 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16294,69 +16284,69 @@ k ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1430 0 obj +1433 0 obj << -/Length 8493 +/Length 8614 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(5.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(5.3)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ/F62 9.9626 Tf -51.12 -19.441 Td [(These)-280(subr)18(outines)-280(collect)-280(the)-280(portions)-280(of)-280(g)1(lobal)-280(dense)-280(matrix)-280(distributed)-280(over)]TJ 0 -11.955 Td [(all)-250(pr)18(ocess)-250(into)-250(one)-250(single)-250(array)-250(stor)18(ed)-250(on)-250(one)-250(pr)18(ocess.)]TJ/F60 9.9626 Tf 120.161 -25.465 Td [(g)-25(l)-55(o)-35(b)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ/F84 9.9626 Tf 1.011 0 0 1 150.396 686.688 Tm [(These)-247(subr)17(outines)-247(collect)-247(the)-248(portions)-247(of)-248(global)-247(dense)-247(matrix)-248(distributed)-247(over)]TJ 1 0 0 1 150.705 674.733 Tm [(all)-250(pr)18(ocess)-250(into)-250(one)-250(single)-250(array)-250(stor)18(ed)-250(on)-250(one)-250(pr)18(ocess.)]TJ/F78 9.9626 Tf 120.161 -25.465 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 289.521 649.467 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 292.803 649.268 Td [(x)]TJ/F91 10.3811 Tf 8.097 0 Td [(\040)]TJ/F60 9.9626 Tf 13.398 0 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ/F93 10.3811 Tf 27.705 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(l)-55(o)-35(c)]TJ +/F78 9.9626 Tf 292.803 649.268 Td [(x)]TJ/F179 10.3811 Tf 8.097 0 Td [(\040)]TJ/F78 9.9626 Tf 13.398 0 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ/F181 10.3811 Tf 27.705 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 359.144 649.467 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 362.427 649.268 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F93 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F62 9.9626 Tf -219.744 -22.41 Td [(wher)18(e:)]TJ +/F78 9.9626 Tf 362.427 649.268 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F181 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F84 9.9626 Tf -220.163 -22.41 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.344 -20.664 Td [(g)-25(l)-55(o)-35(b)]TJ +/F78 9.9626 Tf 0.763 -20.664 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 169.703 606.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 172.986 606.194 Td [(x)]TJ +/F78 9.9626 Tf 172.986 606.194 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(submatrix)]TJ/F60 9.9626 Tf 103.256 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(submatrix)]TJ/F78 9.9626 Tf 103.256 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 305.084 606.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 308.366 606.194 Td [(x)]TJ/F62 7.5716 Tf 5.106 -1.858 Td [(1)-13(:)]TJ/F60 7.5716 Tf 5.963 0 Td [(m)]TJ/F62 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F60 7.5716 Tf 7.856 0 Td [(n)]TJ +/F78 9.9626 Tf 308.366 606.194 Td [(x)]TJ/F84 7.5716 Tf 5.106 -1.858 Td [(1)-13(:)]TJ/F78 7.5716 Tf 5.963 0 Td [(m)]TJ/F84 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F78 7.5716 Tf 7.856 0 Td [(n)]TJ 0 g 0 G -/F60 9.9626 Tf -182.447 -19.051 Td [(l)-55(o)-35(c)]TJ +/F78 9.9626 Tf -182.447 -19.051 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 163.696 585.484 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 166.979 585.285 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ +/F78 9.9626 Tf 166.979 585.285 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ 0 g 0 G -/F62 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 234.034 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(.)]TJ +/F84 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 234.034 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(.)]TJ 0 g 0 G -/F60 9.9626 Tf -266.027 -20.91 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ +/F78 9.9626 Tf -266.027 -20.91 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ 0 g 0 G -/F62 9.9626 Tf 32.563 0 Td [(is)-250(the)-250(collect)-250(function.)]TJ +/F84 9.9626 Tf 32.563 0 Td [(is)-250(the)-250(collect)-250(function.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -16366,49 +16356,49 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.663 534.539 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F62 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(y)]TJ/F59 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.663 534.539 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F78 9.9626 Tf 4.276 0 Td [(y)]TJ/F75 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 530.753 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 522.185 Td [(Integer)-8983(psb)]TJ +/F84 9.9626 Tf 236.369 522.185 Td [(Integer)-8983(psb)]TJ ET q 1 0 0 1 373.603 522.385 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 522.185 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 376.592 522.185 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 510.429 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 510.23 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 510.23 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 498.474 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 498.275 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 498.275 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 486.519 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 486.32 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 486.32 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 474.564 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 474.365 Td [(gather)]TJ +/F84 9.9626 Tf 376.592 474.365 Td [(gather)]TJ ET q 1 0 0 1 230.392 470.579 cm @@ -16416,11 +16406,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 442.2 Td [(T)92(able)-250(19:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 442.2 Td [(T)92(able)-250(19:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -127.572 -27.052 Td [(call)]TJ +/F131 9.9626 Tf -127.572 -27.052 Td [(call)]TJ 0 g 0 G [-525(psb_gather\050glob_x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -16452,11 +16442,11 @@ BT 0 g 0 G [-525(root\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.902 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.902 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.91 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.91 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.909 Td [(loc)]TJ @@ -16466,185 +16456,185 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 167.571 350.427 Td [(x)]TJ +/F75 9.9626 Tf 167.571 350.427 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 371.853 350.626 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 375.135 350.427 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -204.73 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F78 9.9626 Tf 375.135 350.427 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -204.73 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 302.606 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 302.606 Tm [(psb)]TJ ET q 1 0 0 1 436.673 302.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 302.606 Td [(T)]TJ +/F131 9.9626 Tf 439.811 302.606 Td [(T)]TJ ET q 1 0 0 1 445.669 302.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 302.606 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 302.606 Td [(vect)]TJ ET q 1 0 0 1 470.356 302.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 302.606 Td [(type)]TJ +/F131 9.9626 Tf 473.495 302.606 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.955 Td [(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(19)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.91 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -20.91 Td [(desc)]TJ ET q 1 0 0 1 171.218 269.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 269.741 Td [(a)]TJ +/F75 9.9626 Tf 174.207 269.741 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 222.12 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 221.921 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 221.921 Td [(desc)]TJ ET q 1 0 0 1 384.755 222.12 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 221.921 Td [(type)]TJ +/F131 9.9626 Tf 387.893 221.921 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.91 Td [(root)]TJ +/F75 9.9626 Tf -258.11 -20.91 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.252 0 Td [(The)-253(pr)18(ocess)-254(that)-253(holds)-253(the)-253(global)-254(copy)111(.)-319(If)]TJ/F60 9.9626 Tf 182.635 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F93 10.3811 Tf 19.983 0 Td [(=)]TJ/F91 10.3811 Tf 11.147 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-253(all)-254(t)1(he)-254(pr)18(ocesses)-253(will)]TJ -220.305 -11.955 Td [(have)-250(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F91 10.3811 Tf 142.42 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)]TJ/F91 10.3811 Tf 7.873 0 Td [(\024)]TJ/F60 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F91 10.3811 Tf 19.923 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)]TJ/F91 10.3811 Tf 43.89 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1.)]TJ +/F84 9.9626 Tf 1.004 0 0 1 173.649 201.011 Tm [(The)-248(pr)18(ocess)-248(that)-248(holds)-248(the)-248(global)-248(cop)1(y)110(.)-308(If)]TJ/F78 9.9626 Tf 1 0 0 1 356.532 201.011 Tm [(r)-17(o)-35(o)-35(t)]TJ/F181 10.3811 Tf 19.922 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 1.004 0 0 1 395.734 201.011 Tm [(1)-248(all)-248(the)-248(pr)18(ocesses)-248(will)]TJ 1 0 0 1 175.611 189.056 Tm [(have)-250(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F179 10.3811 Tf 142.42 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F179 10.3811 Tf 7.873 0 Td [(\024)]TJ/F78 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F179 10.3811 Tf 19.923 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)]TJ/F179 10.3811 Tf 43.89 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -301.107 -20.909 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -301.107 -20.909 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.874 -29.888 Td [(66)]TJ +/F84 9.9626 Tf 166.874 -29.888 Td [(66)]TJ 0 g 0 G ET endstream endobj -1435 0 obj +1438 0 obj << -/Length 1417 +/Length 1418 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(glob)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(glob)]TJ ET q 1 0 0 1 120.976 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.965 706.129 Td [(x)]TJ +/F75 9.9626 Tf 123.965 706.129 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(array)-250(wher)18(e)-250(the)-250(local)-250(parts)-250(must)-250(be)-250(gather)18(ed.)]TJ -9.126 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)-250(with)-250(the)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(array)-250(wher)18(e)-250(the)-250(local)-250(parts)-250(must)-250(be)-250(gather)18(ed.)]TJ -8.817 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)-250(with)-250(the)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 202.459 0 Td [(ALLOCATABLE)]TJ +/F131 9.9626 Tf 202.459 0 Td [(ALLOCATABLE)]TJ 0 g 0 G -/F62 9.9626 Tf 60.024 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 60.024 0 Td [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -287.39 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -287.39 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -500.124 Td [(67)]TJ + 142.357 -500.124 Td [(67)]TJ 0 g 0 G ET endstream endobj -1442 0 obj +1445 0 obj << -/Length 7428 +/Length 7631 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(5.4)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(5.4)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ/F62 9.9626 Tf -51.12 -20.363 Td [(These)-223(subr)18(outines)-223(scatters)-224(the)-223(portions)-223(of)-224(global)-223(dense)-223(matrix)-223(owned)-224(by)-223(a)-223(pr)18(o-)]TJ 0 -11.955 Td [(cess)-250(to)-250(all)-250(the)-250(pr)18(ocesses)-250(in)-250(the)-250(pr)18(ocesses)-250(grid.)]TJ/F60 9.9626 Tf 119.478 -26.893 Td [(l)-55(o)-35(c)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 685.766 Tm [(These)-354(subr)18(outines)-354(scatters)-353(the)-354(portions)-353(of)-354(global)-354(dense)-353(matrix)-354(owned)-353(by)-354(a)]TJ 1 0 0 1 150.406 673.811 Tm [(pr)18(ocess)-250(to)-250(all)-250(the)-250(pr)18(ocesses)-250(in)-250(the)-250(pr)18(ocesses)-250(grid.)]TJ/F78 9.9626 Tf 119.777 -26.893 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 283.05 647.117 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 286.333 646.918 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 5.642 1.96 Td [(\040)]TJ/F60 9.9626 Tf 13.398 0 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ/F93 10.3811 Tf 28.632 0 Td [(\050)]TJ/F60 9.9626 Tf 4.493 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F78 9.9626 Tf 286.333 646.918 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 5.642 1.96 Td [(\040)]TJ/F78 9.9626 Tf 13.398 0 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ/F181 10.3811 Tf 28.632 0 Td [(\050)]TJ/F78 9.9626 Tf 4.493 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 362.3 647.117 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 365.583 646.918 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\051)]TJ/F62 9.9626 Tf -220.207 -23.362 Td [(wher)18(e:)]TJ +/F78 9.9626 Tf 365.583 646.918 Td [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\051)]TJ/F84 9.9626 Tf -220.626 -23.362 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.344 -22.091 Td [(g)-25(l)-55(o)-35(b)]TJ +/F78 9.9626 Tf 0.763 -22.091 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 169.703 601.664 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 172.986 601.465 Td [(x)]TJ +/F78 9.9626 Tf 172.986 601.465 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(matrix)]TJ/F60 9.9626 Tf 87.515 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(matrix)]TJ/F78 9.9626 Tf 87.515 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 289.343 601.664 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 292.626 601.465 Td [(x)]TJ/F62 7.5716 Tf 5.105 -1.858 Td [(1)-13(:)]TJ/F60 7.5716 Tf 5.963 0 Td [(m)]TJ/F62 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F60 7.5716 Tf 7.856 0 Td [(n)]TJ +/F78 9.9626 Tf 292.626 601.465 Td [(x)]TJ/F84 7.5716 Tf 5.105 -1.858 Td [(1)-13(:)]TJ/F78 7.5716 Tf 5.963 0 Td [(m)]TJ/F84 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F78 7.5716 Tf 7.856 0 Td [(n)]TJ 0 g 0 G -/F60 9.9626 Tf -166.706 -20.955 Td [(l)-55(o)-35(c)]TJ +/F78 9.9626 Tf -166.706 -20.955 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 163.696 578.851 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 166.979 578.652 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ +/F78 9.9626 Tf 166.979 578.652 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ 0 g 0 G -/F62 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 234.034 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(.)]TJ +/F84 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 234.034 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(.)]TJ 0 g 0 G -/F60 9.9626 Tf -266.027 -22.813 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ +/F78 9.9626 Tf -266.027 -22.813 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ 0 g 0 G -/F62 9.9626 Tf 33.489 0 Td [(is)-250(the)-250(scatter)-250(function.)]TJ +/F84 9.9626 Tf 33.489 0 Td [(is)-250(the)-250(scatter)-250(function.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -16654,49 +16644,49 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.663 524.099 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F62 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(y)]TJ/F59 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.663 524.099 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F78 9.9626 Tf 4.276 0 Td [(y)]TJ/F75 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 520.313 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 511.745 Td [(Integer)-8983(psb)]TJ +/F84 9.9626 Tf 236.369 511.745 Td [(Integer)-8983(psb)]TJ ET q 1 0 0 1 373.603 511.945 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 511.745 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 376.592 511.745 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 499.989 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 499.79 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 499.79 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 488.034 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 487.835 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 487.835 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 476.079 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 475.88 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 475.88 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 464.124 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 463.925 Td [(scatter)]TJ +/F84 9.9626 Tf 376.592 463.925 Td [(scatter)]TJ ET q 1 0 0 1 230.392 460.139 cm @@ -16704,11 +16694,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 431.76 Td [(T)92(able)-250(20:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 431.76 Td [(T)92(able)-250(20:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -112.628 -28.004 Td [(call)]TJ +/F131 9.9626 Tf -112.628 -28.004 Td [(call)]TJ 0 g 0 G [-525(psb_scatter\050glob_x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -16727,11 +16717,11 @@ BT 0 g 0 G [-525(mold\051)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -24.806 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -24.806 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.813 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -22.813 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.813 Td [(glob)]TJ @@ -16741,42 +16731,42 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.774 333.324 Td [(x)]TJ +/F75 9.9626 Tf 174.774 333.324 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(array)-250(that)-250(must)-250(be)-250(scatter)18(ed)-250(into)-250(local)-250(pieces.)]TJ -9.126 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(array)-250(that)-250(must)-250(be)-250(scatter)18(ed)-250(into)-250(local)-250(pieces.)]TJ -8.817 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -22.814 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -22.814 Td [(desc)]TJ ET q 1 0 0 1 171.218 262.89 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 262.69 Td [(a)]TJ +/F75 9.9626 Tf 174.207 262.69 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 215.069 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 214.87 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 214.87 Td [(desc)]TJ ET q 1 0 0 1 384.755 215.069 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 214.87 Td [(type)]TJ +/F131 9.9626 Tf 387.893 214.87 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -22.813 Td [(root)]TJ +/F75 9.9626 Tf -258.11 -22.813 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.252 0 Td [(The)-218(pr)18(ocess)-218(that)-218(holds)-219(t)1(he)-219(global)-218(copy)111(.)-299(If)]TJ/F60 9.9626 Tf 179.982 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F93 10.3811 Tf 19.922 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-218(all)-218(the)-218(pr)18(ocesses)-219(have)]TJ -217.53 -11.956 Td [(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-258(as:)-327(an)-258(integer)-259(variable)]TJ/F91 10.3811 Tf 142.917 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)]TJ/F91 10.3811 Tf 8.027 0 Td [(\024)]TJ/F60 9.9626 Tf 11.139 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F91 10.3811 Tf 20.077 0 Td [(\024)]TJ/F60 9.9626 Tf 11.239 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.534 0 Td [(\000)]TJ/F62 9.9626 Tf 10.162 0 Td [(1,)-260(default)]TJ/F67 9.9626 Tf 43.952 0 Td [(psb_root_)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ -316.314 -11.955 Td [(i.e.)-310(pr)18(ocess)-250(0.)]TJ +/F84 9.9626 Tf 0.987 0 0 1 173.649 192.057 Tm [(The)-253(pr)18(ocess)-254(that)-253(holds)-254(the)-253(global)-254(copy)113(.)-315(If)]TJ/F78 9.9626 Tf 1 0 0 1 353.859 192.057 Tm [(r)-17(o)-35(o)-35(t)]TJ/F181 10.3811 Tf 19.926 0 Td [(=)]TJ/F179 10.3811 Tf 11.09 0 Td [(\000)]TJ/F84 9.9626 Tf 0.987 0 0 1 393.069 192.057 Tm [(1)-254(all)-253(the)-253(pr)18(ocesses)-254(have)]TJ 1 0 0 1 175.611 180.101 Tm [(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.015 0 0 1 175.611 132.281 Tm [(Speci\002ed)-246(as:)-305(an)-246(integer)-246(variable)]TJ/F179 10.3811 Tf 1 0 0 1 319.954 132.281 Tm [(\000)]TJ/F84 9.9626 Tf 1.015 0 0 1 328.148 132.281 Tm [(1)]TJ/F179 10.3811 Tf 1 0 0 1 336.096 132.281 Tm [(\024)]TJ/F78 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F179 10.3811 Tf 19.923 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.5 0 Td [(\000)]TJ/F84 9.9626 Tf 1.015 0 0 1 401.719 132.281 Tm [(1,)-246(default)]TJ/F131 9.9626 Tf 1 0 0 1 446.06 132.281 Tm [(psb_root_)]TJ/F84 9.9626 Tf 1.015 0 0 1 493.133 132.281 Tm [(,)]TJ 1 0 0 1 175.611 120.326 Tm [(i.e.)-310(pr)18(ocess)-250(0.)]TJ 0 g 0 G 141.968 -29.888 Td [(68)]TJ 0 g 0 G @@ -16784,80 +16774,80 @@ ET endstream endobj -1449 0 obj +1452 0 obj << -/Length 3984 +/Length 4073 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(mold)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-223(as:)-296(an)-223(object)-223(of)-222(a)-223(class)-223(derived)-223(fr)18(om)]TJ/F67 9.9626 Tf 199.086 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.566 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.987 0 0 1 124.802 658.308 Tm [(Speci\002ed)-254(as:)-315(an)-254(object)-254(of)-254(a)-254(class)-254(derived)-254(fr)18(om)]TJ/F131 9.9626 Tf 1 0 0 1 323.94 658.308 Tm [(psb)]TJ ET q -1 0 0 1 340.207 658.507 cm +1 0 0 1 340.259 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 343.345 658.308 Td [(T)]TJ +/F131 9.9626 Tf 343.397 658.308 Td [(T)]TJ ET q -1 0 0 1 349.203 658.507 cm +1 0 0 1 349.255 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 352.341 658.308 Td [(base)]TJ +/F131 9.9626 Tf 352.393 658.308 Td [(base)]TJ ET q -1 0 0 1 373.89 658.507 cm +1 0 0 1 373.942 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 377.028 658.308 Td [(vect)]TJ +/F131 9.9626 Tf 377.08 658.308 Td [(vect)]TJ ET q -1 0 0 1 398.577 658.507 cm +1 0 0 1 398.629 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 401.716 658.308 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(;)-232(this)]TJ -297.835 -11.955 Td [(is)-250(only)-250(allowed)-250(when)-250(loc)]TJ +/F131 9.9626 Tf 401.767 658.308 Td [(type)]TJ/F84 9.9626 Tf 0.987 0 0 1 422.689 658.308 Tm [(;)-254(this)]TJ 1 0 0 1 124.802 646.353 Tm [(is)-250(only)-250(allowed)-250(when)-250(loc)]TJ ET q 1 0 0 1 234.988 646.552 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 237.976 646.353 Td [(x)-250(is)-250(of)-250(type)]TJ +/F84 9.9626 Tf 237.976 646.353 Td [(x)-250(is)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 50.53 0 Td [(psb)]TJ +/F131 9.9626 Tf 50.53 0 Td [(psb)]TJ ET q 1 0 0 1 304.825 646.552 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 307.963 646.353 Td [(T)]TJ +/F131 9.9626 Tf 307.963 646.353 Td [(T)]TJ ET q 1 0 0 1 313.821 646.552 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 316.959 646.353 Td [(vect)]TJ +/F131 9.9626 Tf 316.959 646.353 Td [(vect)]TJ ET q 1 0 0 1 338.508 646.552 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 341.646 646.353 Td [(type)]TJ +/F131 9.9626 Tf 341.646 646.353 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -262.673 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -262.673 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(loc)]TJ @@ -16867,139 +16857,139 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 116.762 606.502 Td [(x)]TJ +/F75 9.9626 Tf 116.762 606.502 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 321.043 606.702 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 324.326 606.502 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -204.729 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-214(as:)-292(a)-215(rank)-214(one)-214(or)-214(two)-215(ALLOCA)74(T)74(ABLE)-214(array)-214(or)-214(an)-215(object)-214(of)-214(type)]TJ +/F78 9.9626 Tf 324.326 606.502 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -204.729 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.985 0 0 1 124.802 558.682 Tm [(Speci\002ed)-253(as:)-315(a)-253(rank)-253(one)-253(or)-253(two)-254(ALLOCA)76(T)75(ABLE)-253(array)-254(or)-253(an)-253(object)-253(of)-253(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 0 -11.955 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 124.802 546.727 Tm [(psb)]TJ ET q 1 0 0 1 141.121 546.926 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 144.259 546.727 Td [(T)]TJ +/F131 9.9626 Tf 144.259 546.727 Td [(T)]TJ ET q 1 0 0 1 150.117 546.926 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 153.255 546.727 Td [(vect)]TJ +/F131 9.9626 Tf 153.255 546.727 Td [(vect)]TJ ET q 1 0 0 1 174.804 546.926 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 177.942 546.727 Td [(type)]TJ +/F131 9.9626 Tf 177.942 546.727 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 23.412 0 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 23.412 0 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(20)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -101.459 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -101.459 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -388.543 Td [(69)]TJ + 142.357 -388.543 Td [(69)]TJ 0 g 0 G ET endstream endobj -1453 0 obj +1456 0 obj << -/Length 6319 +/Length 6713 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 706.042 Td [(6)-1000(Data)-250(management)-250(routines)]TJ/F59 11.9552 Tf 0 -24.694 Td [(6.1)-1000(psb)]TJ +/F75 14.3462 Tf 150.705 706.042 Td [(6)-1000(Data)-250(management)-250(routines)]TJ/F75 11.9552 Tf 0 -24.694 Td [(6.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 681.547 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 681.348 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ +/F75 11.9552 Tf 201.825 681.348 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,parts=parts\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vg=vg,[mg=mg,flag=flag]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,nl=nl\051)]TJ 0 -11.956 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,repl=.true.\051)]TJ/F62 9.9626 Tf 14.944 -19.771 Td [(This)-377(subr)18(outine)-378(initializes)-377(the)-378(communication)-377(descriptor)-378(associated)-377(with)]TJ -14.944 -11.956 Td [(an)-271(index)-271(space.)-373(One)-272(o)1(f)-272(the)-271(optional)-271(ar)18(guments)]TJ/F67 9.9626 Tf 209.77 0 Td [(parts)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)]TJ/F67 9.9626 Tf 5.244 0 Td [(vg)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)]TJ/F67 9.9626 Tf 5.244 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)]TJ/F67 9.9626 Tf 5.244 0 Td [(nl)]TJ/F62 9.9626 Tf 13.161 0 Td [(or)]TJ/F67 9.9626 Tf 12.076 0 Td [(repl)]TJ/F62 9.9626 Tf 23.622 0 Td [(must)]TJ -321.435 -11.955 Td [(be)-250(speci\002ed,)-250(ther)18(eby)-250(choosing)-250(the)-250(speci\002c)-250(initialization)-250(strategy)111(.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,parts=parts\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vg=vg,[mg=mg,flag=flag]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,nl=nl\051)]TJ 0 -11.956 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,repl=.true.\051)]TJ/F84 9.9626 Tf 0.986 0 0 1 165.649 594.792 Tm [(This)-254(subr)19(outine)-254(initializes)-254(the)-253(communication)-254(descriptor)-253(associated)-254(with)-254(an)]TJ 1.018 0 0 1 150.705 582.836 Tm [(index)-245(space.)-305(One)-245(of)-245(the)-245(optional)-245(ar)17(guments)]TJ/F131 9.9626 Tf 1 0 0 1 348.257 582.836 Tm [(parts)]TJ/F84 9.9626 Tf 1.018 0 0 1 374.409 582.836 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 379.432 582.836 Tm [(vg)]TJ/F84 9.9626 Tf 1.018 0 0 1 389.893 582.836 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 394.916 582.836 Tm [(vl)]TJ/F84 9.9626 Tf 1.018 0 0 1 405.377 582.836 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 410.4 582.836 Tm [(nl)]TJ/F84 9.9626 Tf 1.018 0 0 1 423.347 582.836 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 435.377 582.836 Tm [(repl)]TJ/F84 9.9626 Tf 1.018 0 0 1 458.786 582.836 Tm [(must)-245(be)]TJ 1 0 0 1 150.705 570.881 Tm [(speci\002ed,)-250(ther)18(eby)-250(choosing)-250(the)-250(speci\002c)-250(initialization)-250(strategy)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -18.208 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf 0 -18.208 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.067 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.067 Td [(icontxt)]TJ +/F75 9.9626 Tf -29.828 -19.067 Td [(icontxt)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.066 Td [(vg)]TJ +/F75 9.9626 Tf -24.907 -19.066 Td [(vg)]TJ 0 g 0 G -/F62 9.9626 Tf 16.06 0 Td [(Data)-250(allocation:)-310(each)-250(index)]TJ/F60 9.9626 Tf 121.707 0 Td [(i)]TJ/F91 10.3811 Tf 5.856 0 Td [(2)-290(f)]TJ/F62 9.9626 Tf 15.245 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F91 10.3811 Tf 13.449 0 Td [(g)]TJ/F62 9.9626 Tf 7.806 0 Td [(is)-250(allocated)-250(to)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 98.454 0 Td [(v)-47(g)]TJ/F93 10.3811 Tf 10.68 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)]TJ -295.759 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 16.06 0 Td [(Data)-250(allocation:)-310(each)-250(index)]TJ/F78 9.9626 Tf 121.707 0 Td [(i)]TJ/F179 10.3811 Tf 5.856 0 Td [(2)-290(f)]TJ/F84 9.9626 Tf 15.245 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F179 10.3811 Tf 13.449 0 Td [(g)]TJ/F84 9.9626 Tf 7.806 0 Td [(is)-250(allocated)-250(to)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 98.454 0 Td [(v)-47(g)]TJ/F181 10.3811 Tf 10.68 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 4.149 0 Td [(.)]TJ -295.759 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.067 Td [(\003ag)]TJ +/F75 9.9626 Tf -24.907 -19.067 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(Speci\002es)-250(whether)-250(entries)-250(in)]TJ/F60 9.9626 Tf 123.401 0 Td [(v)-47(g)]TJ/F62 9.9626 Tf 13.046 0 Td [(ar)18(e)-250(zer)18(o-)-250(or)-250(one-based.)]TJ -133.129 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0,)-167(1,)-250(default)-250(0.)]TJ +/F84 9.9626 Tf 21.589 0 Td [(Speci\002es)-250(whether)-250(entries)-250(in)]TJ/F78 9.9626 Tf 123.4 0 Td [(v)-47(g)]TJ/F84 9.9626 Tf 13.046 0 Td [(ar)18(e)-250(zer)18(o-)-250(or)-250(one-based.)]TJ -133.128 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0,)-167(1,)-250(default)-249(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.067 Td [(mg)]TJ +/F75 9.9626 Tf -24.907 -19.067 Td [(mg)]TJ 0 g 0 G -/F62 9.9626 Tf 19.377 0 Td [(the)-250(\050global\051)-250(number)-250(of)-250(r)18(ows)-250(of)-250(the)-250(pr)18(oblem.)]TJ 5.53 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-262(as:)-335(an)-263(integer)-262(value.)-348(It)-262(is)-262(r)18(equir)18(ed)-263(if)]TJ/F67 9.9626 Tf 203.091 0 Td [(parts)]TJ/F62 9.9626 Tf 28.766 0 Td [(or)]TJ/F67 9.9626 Tf 11.99 0 Td [(repl)]TJ/F62 9.9626 Tf 23.536 0 Td [(is)-262(speci\002ed,)]TJ -267.383 -11.955 Td [(it)-250(is)-250(optional)-250(if)]TJ/F67 9.9626 Tf 66.141 0 Td [(vg)]TJ/F62 9.9626 Tf 12.951 0 Td [(is)-250(speci\002ed.)]TJ +/F84 9.9626 Tf 19.377 0 Td [(the)-250(\050global\051)-250(number)-250(of)-250(r)18(ows)-250(of)-250(the)-250(pr)18(oblem.)]TJ 5.53 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.014 0 0 1 175.611 266.056 Tm [(Speci\002ed)-246(as:)-305(an)-246(integer)-246(value.)-305(It)-246(is)-246(r)18(equir)17(ed)-246(if)]TJ/F131 9.9626 Tf 1 0 0 1 379.657 266.056 Tm [(parts)]TJ/F84 9.9626 Tf 1.014 0 0 1 408.293 266.056 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 420.282 266.056 Tm [(repl)]TJ/F84 9.9626 Tf 1.014 0 0 1 443.688 266.056 Tm [(is)-246(speci\002ed,)]TJ 1 0 0 1 175.611 254.101 Tm [(it)-250(is)-250(optional)-250(if)]TJ/F131 9.9626 Tf 66.141 0 Td [(vg)]TJ/F84 9.9626 Tf 12.952 0 Td [(is)-250(speci\002ed.)]TJ 0 g 0 G -/F59 9.9626 Tf -103.999 -19.067 Td [(parts)]TJ +/F75 9.9626 Tf -103.999 -19.067 Td [(parts)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(the)-250(subr)18(outine)-250(that)-250(de\002nes)-250(the)-250(partitioning)-250(scheme.)]TJ -2.759 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(subr)18(outine.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(the)-250(subr)18(outine)-250(that)-250(de\002nes)-250(the)-250(partitioning)-250(scheme.)]TJ -2.76 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(subr)18(outine.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.067 Td [(vl)]TJ +/F75 9.9626 Tf -24.906 -19.067 Td [(vl)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Data)-293(allocation:)-395(the)-293(set)-292(of)-293(global)-293(i)1(ndices)]TJ/F60 9.9626 Tf 181.166 0 Td [(v)-25(l)]TJ/F93 10.3811 Tf 8.548 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-369(:)]TJ/F60 9.9626 Tf 14.955 0 Td [(n)-25(l)]TJ/F93 10.3811 Tf 9.105 0 Td [(\051)]TJ/F62 9.9626 Tf 7.065 0 Td [(belonging)-293(to)-292(the)-293(calling)]TJ -213.919 -11.955 Td [(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 164.543 180.101 Tm [(Data)-254(allocation:)-322(the)-255(set)-254(of)-254(global)-254(indices)]TJ/F78 9.9626 Tf 1 0 0 1 346.245 180.101 Tm [(v)-25(l)]TJ/F181 10.3811 Tf 8.547 0 Td [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 358.942 180.101 Tm [(1)]TJ 1 0 0 1 367.087 180.101 Tm [(:)]TJ/F78 9.9626 Tf 5.679 0 Td [(n)-25(l)]TJ/F181 10.3811 Tf 9.106 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 388.605 180.101 Tm [(belonging)-254(to)-254(the)-255(calling)]TJ 1 0 0 1 175.313 168.146 Tm [(pr)18(ocess.)]TJ 0.298 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G - 141.967 -29.887 Td [(70)]TJ + 141.968 -29.888 Td [(70)]TJ 0 g 0 G ET endstream endobj -1458 0 obj +1461 0 obj << -/Length 6337 +/Length 6793 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(nl)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(nl)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(Data)-305(allocation:)-421(in)-305(a)-305(generalized)-305(block-r)18(ow)-305(distribution)-306(the)-305(number)-305(of)-305(in-)]TJ 10.521 -11.955 Td [(dices)-250(belonging)-250(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(May)-250(be)-250(speci\002ed)-250(together)-250(with)]TJ/F67 9.9626 Tf 272.943 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 114.281 706.129 Tm [(Data)-391(allocation:)-596(in)-391(a)-391(generalized)-391(block-r)17(ow)-391(distribution)-391(the)-391(number)-391(of)]TJ 1 0 0 1 124.802 694.174 Tm [(indices)-250(belonging)-250(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(May)-250(be)-250(speci\002ed)-250(together)-250(with)]TJ/F131 9.9626 Tf 272.943 0 Td [(vl)]TJ/F84 9.9626 Tf 10.461 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -308.311 -20.135 Td [(repl)]TJ +/F75 9.9626 Tf -308.311 -20.135 Td [(repl)]TJ 0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(Data)-288(allocation:)-385(build)-288(a)-288(r)18(eplicated)-287(index)-288(space)-288(\050i.e.)-423(all)-288(pr)18(ocesses)-287(own)-288(all)]TJ 1.664 -11.955 Td [(indices\051.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F67 9.9626 Tf 132.133 0 Td [(.true.)]TJ +/F84 9.9626 Tf 1.018 0 0 1 123.138 626.218 Tm [(Data)-246(allocation:)-306(build)-246(a)-247(r)18(eplicated)-246(index)-246(space)-247(\050i.e.)-306(all)-247(pr)18(ocesses)-246(own)-246(all)]TJ 1 0 0 1 124.802 614.263 Tm [(indices\051.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F131 9.9626 Tf 132.133 0 Td [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -157.04 -20.135 Td [(globalcheck)]TJ +/F75 9.9626 Tf -157.04 -20.135 Td [(globalcheck)]TJ 0 g 0 G -/F62 9.9626 Tf 59.766 0 Td [(Data)-250(allocation:)-310(do)-250(global)-250(checks)-250(on)-250(the)-250(local)-250(index)-250(lists)]TJ/F67 9.9626 Tf 247.788 0 Td [(vl)]TJ/F62 9.9626 Tf -282.647 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value,)-250(default:)]TJ/F67 9.9626 Tf 162.678 0 Td [(.false.)]TJ +/F84 9.9626 Tf 59.766 0 Td [(Data)-250(allocation:)-310(do)-250(global)-250(checks)-250(on)-250(the)-250(local)-250(index)-250(lists)]TJ/F131 9.9626 Tf 247.788 0 Td [(vl)]TJ/F84 9.9626 Tf -282.647 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value,)-250(default:)]TJ/F131 9.9626 Tf 162.678 0 Td [(.false.)]TJ 0 g 0 G -/F59 9.9626 Tf -187.585 -20.135 Td [(lidx)]TJ +/F75 9.9626 Tf -187.585 -20.135 Td [(lidx)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(Data)-308(allocation:)-425(the)-307(set)-308(of)-307(local)-308(indices)]TJ/F60 9.9626 Tf 175.731 0 Td [(l)-48(i)-32(d)-42(x)]TJ/F93 10.3811 Tf 17.065 0 Td [(\050)]TJ/F62 9.9626 Tf 4.15 0 Td [(1)-397(:)]TJ/F60 9.9626 Tf 15.505 0 Td [(n)-25(l)]TJ/F93 10.3811 Tf 9.105 0 Td [(\051)]TJ/F62 9.9626 Tf 7.214 0 Td [(to)-308(be)-307(assigned)-308(to)-307(the)]TJ -226.548 -11.955 Td [(global)-250(indices)]TJ/F60 9.9626 Tf 63.476 0 Td [(v)-25(l)]TJ/F62 9.9626 Tf 8.423 0 Td [(.)]TJ -71.899 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 122.58 478.351 Tm [(Data)-274(allocat)1(ion:)-361(the)-274(set)-273(of)-274(local)-273(indices)]TJ/F78 9.9626 Tf 1 0 0 1 299.091 478.351 Tm [(l)-48(i)-32(d)-42(x)]TJ/F181 10.3811 Tf 17.066 0 Td [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 320.306 478.351 Tm [(1)]TJ 1 0 0 1 328.814 478.351 Tm [(:)]TJ/F78 9.9626 Tf 6.041 0 Td [(n)-25(l)]TJ/F181 10.3811 Tf 9.106 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 350.89 478.351 Tm [(to)-273(be)-274(assigned)-273(to)-274(the)]TJ 1 0 0 1 124.802 466.396 Tm [(global)-250(indices)]TJ/F78 9.9626 Tf 63.476 0 Td [(v)-25(l)]TJ/F84 9.9626 Tf 8.423 0 Td [(.)]TJ -71.899 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.127 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -22.128 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.135 Td [(desc)]TJ @@ -17009,111 +16999,111 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 376.313 Td [(a)]TJ +/F75 9.9626 Tf 123.397 376.313 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 328.692 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 328.492 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 328.492 Td [(desc)]TJ ET q 1 0 0 1 333.945 328.692 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 328.492 Td [(type)]TJ +/F131 9.9626 Tf 337.084 328.492 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.135 Td [(info)]TJ +/F75 9.9626 Tf -258.11 -20.135 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -22.128 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -22.128 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -20.082 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -20.082 Td [(1.)]TJ 0 g 0 G - [-500(One)-309(of)-310(the)-309(optional)-310(ar)18(guments)]TJ/F67 9.9626 Tf 152.661 0 Td [(parts)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)]TJ/F67 9.9626 Tf 5.723 0 Td [(vg)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf 5.723 0 Td [(vl)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf 5.723 0 Td [(nl)]TJ/F62 9.9626 Tf 13.544 0 Td [(or)]TJ/F67 9.9626 Tf 12.458 0 Td [(repl)]TJ/F62 9.9626 Tf 24.005 0 Td [(must)-310(be)-309(speci-)]TJ -254.456 -11.956 Td [(\002ed,)-250(ther)18(eby)-250(choosing)-250(the)-250(initialization)-250(strategy)-250(as)-250(follows:)]TJ + 0.98 0 0 1 124.802 218.327 Tm [(One)-236(of)-236(the)-235(optional)-236(ar)18(guments)]TJ/F131 9.9626 Tf 1 0 0 1 258.603 218.327 Tm [(parts)]TJ/F84 9.9626 Tf 0.98 0 0 1 284.754 218.327 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 289.535 218.327 Tm [(vg)]TJ/F84 9.9626 Tf 0.98 0 0 1 299.996 218.327 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 304.776 218.327 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 315.237 218.327 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 320.017 218.327 Tm [(nl)]TJ/F84 9.9626 Tf 0.98 0 0 1 332.78 218.327 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 344.269 218.327 Tm [(repl)]TJ/F84 9.9626 Tf 0.98 0 0 1 367.492 218.327 Tm [(must)-236(be)-236(speci)1(\002ed,)]TJ 1 0 0 1 124.802 206.371 Tm [(ther)18(eby)-250(choosing)-250(the)-250(initialization)-250(strategy)-250(as)-250(follows:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.135 Td [(parts)]TJ +/F75 9.9626 Tf 0 -20.135 Td [(parts)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(In)-242(this)-242(case)-242(we)-243(have)-242(a)-242(subr)18(outine)-242(specifying)-242(the)-242(mapping)-242(between)]TJ -5.748 -11.955 Td [(global)-312(indices)-312(and)-311(pr)18(ocess/local)-312(index)-312(pairs.)-496(If)-311(this)-312(optional)-312(ar)18(gu-)]TJ 0 -11.955 Td [(ment)-230(is)-230(speci\002ed,)-234(then)-230(it)-230(is)-230(mandatory)-230(to)-230(specify)-230(the)-230(ar)18(gument)]TJ/F67 9.9626 Tf 274.929 0 Td [(mg)]TJ/F62 9.9626 Tf 12.752 0 Td [(as)]TJ -287.681 -11.955 Td [(well.)-310(The)-250(subr)18(outine)-250(must)-250(conform)-250(to)-250(the)-250(following)-250(interface:)]TJ +/F84 9.9626 Tf 0.997 0 0 1 152.468 186.236 Tm [(In)-251(this)-251(case)-251(we)-251(have)-251(a)-251(subr)19(outine)-251(specifying)-251(the)-251(mapping)-251(between)]TJ 1.02 0 0 1 146.72 174.281 Tm [(global)-273(indices)-272(and)-273(pr)18(ocess/local)-273(index)-273(pairs.)-386(If)-273(this)-273(optional)-272(ar)17(gu-)]TJ 0.991 0 0 1 146.72 162.326 Tm [(ment)-252(is)-252(speci\002ed,)-252(then)-252(it)-253(is)-252(mandatory)-252(to)-252(specify)-252(the)-252(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 421.534 162.326 Tm [(mg)]TJ/F84 9.9626 Tf 0.991 0 0 1 434.484 162.326 Tm [(as)]TJ 1 0 0 1 146.301 150.371 Tm [(well.)-310(The)-250(subr)18(outine)-250(must)-250(conform)-250(to)-250(the)-250(following)-250(interface:)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 10.46 -18.09 Td [(interface)]TJ 15.691 -11.955 Td [(subroutine)-525(psb_parts\050glob_index,mg,np,pv,nv\051)]TJ +/F131 9.9626 Tf 10.879 -18.09 Td [(interface)]TJ 15.692 -11.955 Td [(subroutine)-525(psb_parts\050glob_index,mg,np,pv,nv\051)]TJ 0 g 0 G -/F62 9.9626 Tf 93.899 -29.888 Td [(71)]TJ +/F84 9.9626 Tf 93.898 -29.888 Td [(71)]TJ 0 g 0 G ET endstream endobj -1464 0 obj +1467 0 obj << -/Length 9985 +/Length 11640 >> stream 0 g 0 G 0 g 0 G BT -/F67 9.9626 Tf 234.142 706.129 Td [(integer,)-525(intent)-525(\050in\051)-1050(::)-525(glob_index,np,mg)]TJ 0 -11.955 Td [(integer,)-525(intent)-525(\050out\051)-525(::)-525(nv,)-525(pv\050*\051)]TJ -10.461 -11.955 Td [(end)-525(subroutine)-525(psb_parts)]TJ -15.691 -11.956 Td [(end)-525(interface)]TJ/F62 9.9626 Tf -10.461 -17.586 Td [(The)-250(input)-250(ar)18(guments)-250(ar)18(e:)]TJ +/F131 9.9626 Tf 234.142 706.129 Td [(integer,)-525(intent)-525(\050in\051)-1050(::)-525(glob_index,np,mg)]TJ 0 -11.955 Td [(integer,)-525(intent)-525(\050out\051)-525(::)-525(nv,)-525(pv\050*\051)]TJ -10.461 -11.955 Td [(end)-525(subroutine)-525(psb_parts)]TJ -15.691 -11.956 Td [(end)-525(interface)]TJ/F84 9.9626 Tf -10.77 -17.586 Td [(The)-250(input)-250(ar)18(guments)-250(ar)18(e:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -15.594 Td [(glob)]TJ +/F75 9.9626 Tf 0.309 -15.594 Td [(glob)]TJ ET q 1 0 0 1 218.61 637.283 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 221.599 637.083 Td [(index)]TJ +/F75 9.9626 Tf 221.599 637.083 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(The)-250(global)-250(index)-250(to)-250(be)-250(mapped;)]TJ +/F84 9.9626 Tf 30.127 0 Td [(The)-250(global)-250(index)-250(to)-250(be)-250(mapped;)]TJ 0 g 0 G -/F59 9.9626 Tf -54.506 -13.774 Td [(np)]TJ +/F75 9.9626 Tf -54.197 -13.774 Td [(np)]TJ 0 g 0 G -/F62 9.9626 Tf 17.156 0 Td [(The)-250(number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(mapping;)]TJ +/F84 9.9626 Tf 16.847 0 Td [(The)-250(number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(mapping;)]TJ 0 g 0 G -/F59 9.9626 Tf -17.156 -13.774 Td [(mg)]TJ +/F75 9.9626 Tf -16.847 -13.774 Td [(mg)]TJ 0 g 0 G -/F62 9.9626 Tf 19.377 0 Td [(The)-250(total)-250(number)-250(of)-250(global)-250(r)18(ows)-250(in)-250(the)-250(mapping;)]TJ -19.377 -15.594 Td [(The)-250(output)-250(ar)18(guments)-250(ar)18(e:)]TJ +/F84 9.9626 Tf 19.069 0 Td [(The)-250(total)-250(number)-250(of)-250(global)-250(r)18(ows)-250(in)-250(the)-250(mapping;)]TJ -19.378 -15.594 Td [(The)-250(output)-250(ar)18(guments)-250(ar)18(e:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -15.594 Td [(nv)]TJ +/F75 9.9626 Tf 0.309 -15.594 Td [(nv)]TJ 0 g 0 G -/F62 9.9626 Tf 16.608 0 Td [(The)-250(number)-250(of)-250(entries)-250(in)]TJ/F67 9.9626 Tf 111.052 0 Td [(pv)]TJ/F62 9.9626 Tf 10.461 0 Td [(;)]TJ +/F84 9.9626 Tf 16.299 0 Td [(The)-250(number)-250(of)-250(entries)-250(in)]TJ/F131 9.9626 Tf 111.052 0 Td [(pv)]TJ/F84 9.9626 Tf 10.461 0 Td [(;)]TJ 0 g 0 G -/F59 9.9626 Tf -138.121 -13.774 Td [(pv)]TJ +/F75 9.9626 Tf -137.812 -13.774 Td [(pv)]TJ 0 g 0 G -/F62 9.9626 Tf 16.608 0 Td [(A)-393(vector)-394(containing)-393(the)-394(indices)-393(of)-394(the)-394(pr)18(ocesses)-393(to)-394(which)-393(the)]TJ 2.022 -11.955 Td [(global)-357(index)-357(should)-356(be)-357(assigend;)-410(each)-357(entry)-357(must)-357(satisfy)-357(0)]TJ/F91 10.3811 Tf 270.063 0 Td [(\024)]TJ/F60 9.9626 Tf -269.39 -11.956 Td [(p)-25(v)]TJ/F93 10.3811 Tf 10.461 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F69 10.3811 Tf 8.665 0 Td [(<)]TJ/F60 9.9626 Tf 12.71 0 Td [(n)-80(p)]TJ/F62 9.9626 Tf 11.442 0 Td [(;)-382(if)]TJ/F60 9.9626 Tf 16.006 0 Td [(n)-25(v)]TJ/F69 10.3811 Tf 15.409 0 Td [(>)]TJ/F62 9.9626 Tf 12.586 0 Td [(1)-338(we)-338(have)-338(an)-338(index)-338(assigned)-338(to)-338(multiple)]TJ -95.244 -11.955 Td [(pr)18(ocesses,)-250(i.e.)-310(we)-250(have)-250(an)-250(overlap)-250(among)-250(the)-250(subdomains.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 213.748 564.573 Tm [(A)-342(vector)-342(containing)-342(the)-343(in)1(dices)-343(of)-342(the)-342(pr)18(ocesses)-342(to)-343(which)-342(the)]TJ 1.02 0 0 1 216.159 552.618 Tm [(global)-309(index)-310(should)-309(be)-310(assigend;)-341(each)-310(entry)-309(must)-310(satisfy)-309(0)]TJ/F179 10.3811 Tf 1 0 0 1 486.222 552.618 Tm [(\024)]TJ/F78 9.9626 Tf -269.39 -11.956 Td [(p)-25(v)]TJ/F181 10.3811 Tf 10.461 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F134 10.3811 Tf 8.297 0 Td [(<)]TJ/F78 9.9626 Tf 12.342 0 Td [(n)-80(p)]TJ/F84 9.9626 Tf 1.02 0 0 1 266.666 540.662 Tm [(;)-345(if)]TJ/F78 9.9626 Tf 1 0 0 1 282.348 540.662 Tm [(n)-25(v)]TJ/F134 10.3811 Tf 15.041 0 Td [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 309.606 540.662 Tm [(1)-312(we)-312(have)-311(an)-312(index)-312(assigned)-312(to)-312(multiple)]TJ 1 0 0 1 215.861 528.707 Tm [(pr)18(ocesses,)-250(i.e.)-310(we)-250(have)-250(an)-250(overlap)-250(among)-250(the)-250(subdomains.)]TJ 0 g 0 G -/F59 9.9626 Tf -40.548 -15.594 Td [(vg)]TJ +/F75 9.9626 Tf -40.25 -15.593 Td [(vg)]TJ 0 g 0 G -/F62 9.9626 Tf 16.06 0 Td [(In)-330(this)-330(case)-330(the)-330(association)-330(between)-331(an)-330(index)-330(and)-330(a)-330(pr)18(ocess)-330(is)-330(spec-)]TJ 5.858 -11.955 Td [(i\002ed)-371(via)-372(an)-371(integer)-372(vector)]TJ/F67 9.9626 Tf 120.986 0 Td [(vg\0501:mg\051)]TJ/F62 9.9626 Tf 41.842 0 Td [(;)-432(each)-372(index)]TJ/F60 9.9626 Tf 58.923 0 Td [(i)]TJ/F91 10.3811 Tf 8.096 0 Td [(2)-506(f)]TJ/F62 9.9626 Tf 17.485 0 Td [(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F91 10.3811 Tf 13.449 0 Td [(g)]TJ/F62 9.9626 Tf 9.016 0 Td [(is)]TJ -289.764 -11.955 Td [(assigned)-381(to)-381(pr)18(ocess)]TJ/F60 9.9626 Tf 91.547 0 Td [(v)-47(g)]TJ/F93 10.3811 Tf 10.68 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)-703(The)-380(vector)]TJ/F67 9.9626 Tf 61.203 0 Td [(vg)]TJ/F62 9.9626 Tf 14.255 0 Td [(must)-381(be)-381(identical)-381(on)-380(all)]TJ -189.127 -11.955 Td [(calling)-354(pr)18(ocesses;)-406(its)-355(entri)1(es)-355(may)-354(have)-354(the)-354(ranges)]TJ/F93 10.3811 Tf 226.209 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(0)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.888 0 Td [(\000)]TJ/F62 9.9626 Tf 10.515 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 7.678 0 Td [(or)]TJ/F93 10.3811 Tf -287.387 -11.955 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(n)-80(p)]TJ/F93 10.3811 Tf 11.566 0 Td [(\051)]TJ/F62 9.9626 Tf 6.984 0 Td [(accor)18(ding)-284(to)-285(the)-284(value)-285(of)]TJ/F67 9.9626 Tf 113.068 0 Td [(flag)]TJ/F62 9.9626 Tf 20.922 0 Td [(.)-413(The)-285(size)]TJ/F60 9.9626 Tf 45.955 0 Td [(m)-47(g)]TJ/F62 9.9626 Tf 16.159 0 Td [(may)-285(be)-284(spec-)]TJ -238.895 -11.955 Td [(i\002ed)-349(via)-349(the)-349(optional)-349(ar)18(gument)]TJ/F67 9.9626 Tf 144.092 0 Td [(mg)]TJ/F62 9.9626 Tf 10.46 0 Td [(;)-399(the)-349(default)-349(is)-349(to)-349(use)-349(the)-349(entir)18(e)]TJ -154.552 -11.956 Td [(vector)]TJ/F67 9.9626 Tf 29.937 0 Td [(vg)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)-250(thus)-250(having)]TJ/F67 9.9626 Tf 59.885 0 Td [(mg=size\050vg\051)]TJ/F62 9.9626 Tf 57.534 0 Td [(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 191.671 513.114 Tm [(In)-244(this)-244(case)-244(the)-244(association)-244(between)-244(an)-244(index)-244(and)-244(a)-245(pr)19(ocess)-244(is)-244(speci\002ed)]TJ 0.986 0 0 1 197.25 501.158 Tm [(via)-254(an)-254(integer)-253(vector)]TJ/F131 9.9626 Tf 1 0 0 1 288.765 501.158 Tm [(vg\0501:mg\051)]TJ/F84 9.9626 Tf 0.986 0 0 1 330.608 501.158 Tm [(;)-254(each)-254(index)]TJ/F78 9.9626 Tf 1 0 0 1 384.647 501.158 Tm [(i)]TJ/F179 10.3811 Tf 5.861 0 Td [(2)-290(f)]TJ/F84 9.9626 Tf 0.986 0 0 1 405.758 501.158 Tm [(1)]TJ 1 0 0 1 412.455 501.158 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(m)-47(g)]TJ/F179 10.3811 Tf 13.45 0 Td [(g)]TJ/F84 9.9626 Tf 0.986 0 0 1 446.913 501.158 Tm [(is)-254(assigned)]TJ 1.02 0 0 1 197.529 489.203 Tm [(to)-260(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 245.285 489.203 Tm [(v)-47(g)]TJ/F181 10.3811 Tf 10.68 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 267.407 489.203 Tm [(.)-349(The)-260(vector)]TJ/F131 9.9626 Tf 1 0 0 1 323.78 489.203 Tm [(vg)]TJ/F84 9.9626 Tf 1.02 0 0 1 336.883 489.203 Tm [(must)-260(be)-260(identical)-260(on)-260(all)-260(calling)-260(pr)18(o-)]TJ 1.02 0 0 1 197.529 477.248 Tm [(cesses;)-427(its)-366(entries)-366(may)-367(have)-366(the)-366(ranges)]TJ/F181 10.3811 Tf 1 0 0 1 380.093 477.248 Tm [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.242 477.248 Tm [(0)]TJ 1 0 0 1 391.108 477.248 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.96 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.856 477.248 Tm [(1)]TJ/F181 10.3811 Tf 1 0 0 1 434.061 477.248 Tm [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 441.932 477.248 Tm [(or)]TJ/F181 10.3811 Tf 1 0 0 1 455.341 477.248 Tm [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 459.491 477.248 Tm [(1)]TJ 1 0 0 1 466.356 477.248 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)-80(p)]TJ/F181 10.3811 Tf 11.566 0 Td [(\051)]TJ/F84 9.9626 Tf 0.993 0 0 1 197.529 465.293 Tm [(accor)18(ding)-252(to)-253(the)-252(value)-252(of)]TJ/F131 9.9626 Tf 1 0 0 1 308.219 465.293 Tm [(flag)]TJ/F84 9.9626 Tf 0.993 0 0 1 329.141 465.293 Tm [(.)-314(The)-253(size)]TJ/F78 9.9626 Tf 1 0 0 1 373.16 465.293 Tm [(m)-47(g)]TJ/F84 9.9626 Tf 0.993 0 0 1 388.982 465.293 Tm [(may)-252(be)-253(speci\002ed)-252(via)-253(the)]TJ 0.999 0 0 1 197.529 453.338 Tm [(optional)-250(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 282.025 453.338 Tm [(mg)]TJ/F84 9.9626 Tf 0.999 0 0 1 292.485 453.338 Tm [(;)-251(the)-250(default)-250(is)-251(to)-250(use)-251(the)-250(entir)18(e)-250(vector)]TJ/F131 9.9626 Tf 1 0 0 1 459.716 453.338 Tm [(vg)]TJ/F84 9.9626 Tf 0.999 0 0 1 470.177 453.338 Tm [(,)-250(thus)]TJ 1 0 0 1 197.529 441.383 Tm [(having)]TJ/F131 9.9626 Tf 33.136 0 Td [(mg=size\050vg\051)]TJ/F84 9.9626 Tf 57.533 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -179.735 -15.593 Td [(vl)]TJ +/F75 9.9626 Tf -112.587 -15.594 Td [(vl)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(In)-383(this)-382(case)-383(we)-383(ar)18(e)-382(specifying)-383(the)-383(list)-382(of)-383(indices)]TJ/F67 9.9626 Tf 220.787 0 Td [(vl\0501:nl\051)]TJ/F62 9.9626 Tf 45.655 0 Td [(assigned)]TJ -258.362 -11.955 Td [(to)-401(the)-400(curr)18(ent)-401(pr)18(ocess;)-476(thus,)-438(the)-400(global)-401(pr)18(oblem)-400(size)]TJ/F60 9.9626 Tf 243.82 0 Td [(m)-47(g)]TJ/F62 9.9626 Tf 17.316 0 Td [(is)-401(given)]TJ -261.136 -11.956 Td [(by)-435(the)-435(range)-435(of)-435(the)-435(aggr)18(egate)-435(of)-435(the)-435(individual)-435(vectors)]TJ/F67 9.9626 Tf 259.368 0 Td [(vl)]TJ/F62 9.9626 Tf 14.794 0 Td [(spec-)]TJ -274.162 -11.955 Td [(i\002ed)-429(in)-429(the)-429(calling)-428(pr)18(ocesses.)-847(The)-429(size)-429(may)-429(be)-428(speci\002ed)-429(via)-429(the)]TJ 0 -11.955 Td [(optional)-438(ar)18(gument)]TJ/F67 9.9626 Tf 88.319 0 Td [(nl)]TJ/F62 9.9626 Tf 10.46 0 Td [(;)-532(the)-438(default)-438(is)-438(to)-438(use)-438(the)-438(entir)18(e)-438(vector)]TJ/F67 9.9626 Tf 185.156 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)]TJ -294.396 -11.955 Td [(thus)-364(having)]TJ/F67 9.9626 Tf 57.178 0 Td [(nl=size\050vl\051)]TJ/F62 9.9626 Tf 57.534 0 Td [(.)-652(If)]TJ/F67 9.9626 Tf 19.294 0 Td [(globalcheck=.true.)]TJ/F62 9.9626 Tf 97.774 0 Td [(the)-364(subr)18(outine)]TJ -231.78 -11.955 Td [(will)-403(check)-403(how)-404(many)-403(times)-403(each)-403(entry)-403(in)-404(the)-403(global)-403(index)-403(space)]TJ/F93 10.3811 Tf 0.125 -11.955 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F93 10.3811 Tf 13.449 0 Td [(\051)]TJ/F62 9.9626 Tf 6.245 0 Td [(is)-210(speci\002ed)-211(in)-210(the)-210(input)-210(lists)]TJ/F67 9.9626 Tf 122.836 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)-218(thus)-211(allowin)1(g)-211(for)-210(the)-210(pr)18(es-)]TJ -177.232 -11.956 Td [(ence)-302(of)-302(overlap)-302(in)-302(the)-302(input,)-315(and)-302(checki)1(ng)-302(for)-302(\223orphan\224)-302(indices.)-466(If)]TJ/F67 9.9626 Tf 0 -11.955 Td [(globalcheck=.false.)]TJ/F62 9.9626 Tf 99.377 0 Td [(,)-437(the)-400(subr)18(outine)-400(will)-400(not)-400(check)-400(for)-400(overlap,)]TJ -99.377 -11.955 Td [(and)-255(may)-255(be)-255(signi\002cantly)-255(faster)74(,)-257(but)-255(the)-255(user)-255(is)-255(implicitly)-255(guarantee-)]TJ 0 -11.955 Td [(ing)-250(that)-250(ther)18(e)-250(ar)18(e)-250(neither)-250(orphan)-250(nor)-250(overlap)-250(indices.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 189.449 425.789 Tm [(In)-336(this)-335(case)-336(we)-335(ar)17(e)-335(specifying)-336(the)-335(list)-336(of)-335(indices)]TJ/F131 9.9626 Tf 1 0 0 1 409.868 425.789 Tm [(vl\0501:nl\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 455.12 425.789 Tm [(assigned)]TJ 1.018 0 0 1 197.529 413.834 Tm [(to)-245(the)-246(curr)18(ent)-245(pr)17(ocess;)-245(thus,)-246(the)-245(global)-245(pr)17(oblem)-245(size)]TJ/F78 9.9626 Tf 1 0 0 1 430.434 413.834 Tm [(m)-47(g)]TJ/F84 9.9626 Tf 1.018 0 0 1 446.248 413.834 Tm [(is)-245(given)-246(by)]TJ 1.02 0 0 1 197.529 401.878 Tm [(the)-255(range)-255(of)-255(the)-255(aggr)18(egate)-255(of)-255(the)-255(individual)-255(vectors)]TJ/F131 9.9626 Tf 1 0 0 1 429.927 401.878 Tm [(vl)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.978 401.878 Tm [(speci\002ed)-255(in)]TJ 1.02 0 0 1 197.529 389.923 Tm [(the)-347(call)1(ing)-347(pr)18(ocesses.)-608(The)-347(size)-346(may)-347(be)-346(speci\002ed)-347(via)-346(the)-347(optional)]TJ 1.02 0 0 1 197.529 377.968 Tm [(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 243.859 377.968 Tm [(nl)]TJ/F84 9.9626 Tf 1.02 0 0 1 254.32 377.968 Tm [(;)-257(the)-253(default)-253(is)-252(to)-253(use)-253(the)-253(entir)18(e)-253(vector)]TJ/F131 9.9626 Tf 1 0 0 1 425.335 377.968 Tm [(vl)]TJ/F84 9.9626 Tf 1.02 0 0 1 435.795 377.968 Tm [(,)-255(thus)-253(having)]TJ/F131 9.9626 Tf 1 0 0 1 197.529 366.013 Tm [(nl=size\050vl\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 255.063 366.013 Tm [(.)-306(If)]TJ/F131 9.9626 Tf 1 0 0 1 269.222 366.013 Tm [(globalcheck=.true.)]TJ/F84 9.9626 Tf 0.98 0 0 1 365.556 366.013 Tm [(the)-224(subr)18(outine)-224(will)-224(check)-224(how)]TJ 0.98 0 0 1 197.529 354.058 Tm [(many)-209(t)1(imes)-209(each)-208(entry)-209(in)-208(the)-209(global)-208(index)-209(space)]TJ/F181 10.3811 Tf 1 0 0 1 403.34 354.058 Tm [(\050)]TJ/F84 9.9626 Tf 0.98 0 0 1 407.49 354.058 Tm [(1)]TJ 1 0 0 1 414.156 354.058 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(m)-47(g)]TJ/F181 10.3811 Tf 13.449 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 446.991 354.058 Tm [(is)-208(speci\002ed)]TJ 0.999 0 0 1 197.529 342.103 Tm [(in)-249(the)-250(input)-249(lists)]TJ/F131 9.9626 Tf 1 0 0 1 271.343 342.103 Tm [(vl)]TJ/F84 9.9626 Tf 0.999 0 0 1 281.803 342.103 Tm [(,)-250(thus)-249(allowing)-249(for)-250(the)-249(pr)18(esence)-249(of)-250(overlap)-249(in)-249(the)]TJ 1.005 0 0 1 197.529 330.147 Tm [(input,)-248(and)-249(checking)-248(for)-249(\223orphan\224)-248(indices.)-308(If)]TJ/F131 9.9626 Tf 1 0 0 1 393.782 330.147 Tm [(globalcheck=.false.)]TJ/F84 9.9626 Tf 1.005 0 0 1 493.158 330.147 Tm [(,)]TJ 1.018 0 0 1 197.529 318.192 Tm [(the)-246(subr)18(outine)-247(will)-246(not)-246(check)-246(for)-246(overlap,)-246(and)-246(may)-246(be)-247(signi\002cantly)]TJ 1.02 0 0 1 197.529 306.237 Tm [(faster)73(,)-256(but)-253(the)-253(user)-253(is)-254(implicitly)-253(guaranteeing)-253(that)-253(ther)17(e)-253(ar)18(e)-253(neither)]TJ 1 0 0 1 197.529 294.282 Tm [(orphan)-250(nor)-250(overlap)-250(indices.)]TJ 0 g 0 G -/F59 9.9626 Tf -21.918 -15.594 Td [(lidx)]TJ +/F75 9.9626 Tf -21.918 -15.594 Td [(lidx)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(The)-377(optional)-376(ar)18(gument)]TJ/F67 9.9626 Tf 107.528 0 Td [(lidx)]TJ/F62 9.9626 Tf 24.674 0 Td [(is)-377(available)-376(for)-377(those)-377(cases)-377(in)-376(which)]TJ -132.969 -11.955 Td [(the)-361(user)-361(has)-361(alr)18(eady)-361(established)-361(a)-361(global-to-local)-361(mapping;)-416(if)-361(it)-361(is)]TJ 0 -11.955 Td [(speci\002ed,)-253(each)-253(index)-253(in)]TJ/F67 9.9626 Tf 105.128 0 Td [(vl\050i\051)]TJ/F62 9.9626 Tf 28.669 0 Td [(will)-253(be)-252(mapped)-253(to)-253(the)-252(corr)18(esponding)]TJ -133.797 -11.955 Td [(local)-317(index)]TJ/F67 9.9626 Tf 51.649 0 Td [(lidx\050i\051)]TJ/F62 9.9626 Tf 36.612 0 Td [(.)-510(When)-317(specifying)-316(the)-317(ar)18(gument)]TJ/F67 9.9626 Tf 148.638 0 Td [(lidx)]TJ/F62 9.9626 Tf 24.076 0 Td [(the)-317(user)]TJ -260.975 -11.956 Td [(would)-329(also)-330(likely)-329(employ)]TJ/F67 9.9626 Tf 117.394 0 Td [(lidx)]TJ/F62 9.9626 Tf 24.203 0 Td [(in)-329(calls)-330(to)]TJ/F67 9.9626 Tf 46.656 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 50.355 0 Td [(and)]TJ/F67 9.9626 Tf 20.148 0 Td [(local)]TJ/F62 9.9626 Tf 29.433 0 Td [(in)]TJ -288.189 -11.955 Td [(calls)-250(to)]TJ/F67 9.9626 Tf 33.095 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)-250(see)-250(also)-250(sec.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 197.987 278.688 Tm [(The)-326(optional)-325(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 306.11 278.688 Tm [(lidx)]TJ/F84 9.9626 Tf 1.02 0 0 1 330.339 278.688 Tm [(is)-326(available)-325(for)-326(those)-325(cases)-326(in)-325(which)]TJ 1.02 0 0 1 197.529 266.733 Tm [(the)-305(user)-305(has)-305(alr)17(eady)-305(established)-305(a)-305(global-to-local)-305(mapping;)-335(if)-305(it)-305(is)]TJ 1.001 0 0 1 197.529 254.778 Tm [(speci\002ed,)-250(each)-250(index)-250(in)]TJ/F131 9.9626 Tf 1 0 0 1 302.65 254.778 Tm [(vl\050i\051)]TJ/F84 9.9626 Tf 1.001 0 0 1 331.295 254.778 Tm [(will)-250(be)-250(mapped)-250(to)-250(the)-250(corr)18(esponding)]TJ 1.02 0 0 1 197.529 242.823 Tm [(local)-275(index)]TJ/F131 9.9626 Tf 1 0 0 1 249.36 242.823 Tm [(lidx\050i\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 285.973 242.823 Tm [(.)-393(When)-275(specifying)-275(the)-274(ar)17(gument)]TJ/F131 9.9626 Tf 1 0 0 1 434.697 242.823 Tm [(lidx)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.411 242.823 Tm [(the)-275(user)]TJ 1.02 0 0 1 197.111 230.868 Tm [(would)-297(also)-297(likely)-296(employ)]TJ/F131 9.9626 Tf 1 0 0 1 315.53 230.868 Tm [(lidx)]TJ/F84 9.9626 Tf 1.02 0 0 1 339.468 230.868 Tm [(in)-297(calls)-297(to)]TJ/F131 9.9626 Tf 1 0 0 1 386.066 230.868 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 1.02 0 0 1 436.156 230.868 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 456.376 230.868 Tm [(local)]TJ/F84 9.9626 Tf 1.02 0 0 1 485.545 230.868 Tm [(in)]TJ 1 0 0 1 197.529 218.912 Tm [(calls)-250(to)]TJ/F131 9.9626 Tf 33.096 0 Td [(psb_spins)]TJ/F84 9.9626 Tf 49.563 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)-250(see)-250(also)-250(sec.)]TJ 0 0 1 rg 0 0 1 RG [-250(2.3.1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -171.008 -15.593 Td [(nl)]TJ +/F75 9.9626 Tf -171.008 -15.593 Td [(nl)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(If)-411(this)-411(ar)18(gument)-411(is)-411(speci\002ed)-411(alone)-411(\050i.e.)-793(without)]TJ/F67 9.9626 Tf 223.432 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(\051)-411(the)-411(r)18(esult)-411(is)-411(a)]TJ -226.361 -11.956 Td [(generalized)-280(r)18(ow-block)-280(distribution)-280(in)-280(which)-281(each)-280(pr)18(ocess)]TJ/F60 9.9626 Tf 257.148 0 Td [(I)]TJ/F62 9.9626 Tf 6.642 0 Td [(gets)-280(as-)]TJ -263.79 -11.955 Td [(signed)-250(a)-250(consecutive)-250(chunk)-250(of)]TJ/F60 9.9626 Tf 135.186 0 Td [(N)]TJ/F60 7.5716 Tf 7.851 -1.808 Td [(I)]TJ/F93 10.3811 Tf 6.316 1.808 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-25(l)]TJ/F62 9.9626 Tf 11.472 0 Td [(global)-250(indices.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 189.997 203.319 Tm [(If)-247(this)-248(ar)19(gument)-247(is)-248(speci\002ed)-247(alone)-247(\050i.e.)-314(without)]TJ/F131 9.9626 Tf 1 0 0 1 393.086 203.319 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 403.547 203.319 Tm [(\051)-247(the)-247(r)18(esult)-247(is)-248(a)-247(gener)18(-)]TJ 0.98 0 0 1 197.529 191.364 Tm [(alized)-250(r)18(ow-block)-250(distribution)-250(in)-250(which)-251(each)-250(pr)19(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 423.173 191.364 Tm [(I)]TJ/F84 9.9626 Tf 0.98 0 0 1 429.466 191.364 Tm [(gets)-250(assigned)-250(a)]TJ 1 0 0 1 197.529 179.408 Tm [(consecutive)-250(chunk)-250(of)]TJ/F78 9.9626 Tf 95.904 0 Td [(N)]TJ/F78 7.5716 Tf 7.851 -1.808 Td [(I)]TJ/F181 10.3811 Tf 6.316 1.808 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-25(l)]TJ/F84 9.9626 Tf 11.472 0 Td [(global)-250(indices.)]TJ 0 g 0 G -/F59 9.9626 Tf -193.829 -15.593 Td [(repl)]TJ +/F75 9.9626 Tf -154.547 -15.593 Td [(repl)]TJ 0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(This)-418(ar)18(guments)-417(speci\002es)-418(to)-417(r)18(eplicate)-418(all)-417(indices)-418(on)-418(all)-417(pr)18(ocesses.)]TJ -1.325 -11.956 Td [(This)-366(is)-367(a)-366(special)-366(purpose)-366(data)-367(allocation)-366(that)-366(is)-366(useful)-367(in)-366(the)-366(con-)]TJ 0 -11.955 Td [(str)8(uction)-250(of)-250(some)-250(multilevel)-250(pr)18(econditioners.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 198.545 163.815 Tm [(This)-242(ar)19(guments)-242(speci\002es)-241(to)-242(r)18(eplicate)-241(all)-242(indices)-242(on)-241(all)-242(pr)19(ocesses.)-312(This)]TJ 0.998 0 0 1 197.529 151.86 Tm [(is)-252(a)-251(special)-252(purpose)-252(data)-252(allocation)-251(that)-252(is)-252(useful)-251(in)-252(the)-252(constr)8(uction)]TJ 1 0 0 1 197.529 139.904 Tm [(of)-250(some)-250(multilevel)-250(pr)18(econditioners.)]TJ 0 g 0 G - -34.371 -19.579 Td [(2.)]TJ + -34.371 -19.578 Td [(2.)]TJ 0 g 0 G [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(build)-250(state.)]TJ 0 g 0 G @@ -17123,34 +17113,34 @@ ET endstream endobj -1470 0 obj +1473 0 obj << -/Length 2555 +/Length 2973 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 112.349 706.129 Td [(3.)]TJ +/F84 9.9626 Tf 112.349 706.129 Td [(3.)]TJ 0 g 0 G - [-500(Calling)-260(the)-260(r)18(outine)-260(with)]TJ/F67 9.9626 Tf 120.886 0 Td [(vg)]TJ/F62 9.9626 Tf 13.052 0 Td [(or)]TJ/F67 9.9626 Tf 11.965 0 Td [(parts)]TJ/F62 9.9626 Tf 28.742 0 Td [(implies)-260(that)-260(every)-260(pr)18(ocess)-260(will)-260(scan)]TJ -162.192 -11.955 Td [(the)-250(entir)18(e)-250(index)-250(space)-250(to)-250(\002gur)18(e)-250(out)-250(the)-250(local)-250(indices.)]TJ + 1.005 0 0 1 124.802 706.129 Tm [(Calling)-248(the)-248(r)17(outine)-248(with)]TJ/F131 9.9626 Tf 1 0 0 1 233.307 706.129 Tm [(vg)]TJ/F84 9.9626 Tf 1.005 0 0 1 246.254 706.129 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 258.161 706.129 Tm [(parts)]TJ/F84 9.9626 Tf 1.005 0 0 1 286.799 706.129 Tm [(implies)-248(that)-248(every)-249(pr)18(ocess)-248(will)-248(scan)]TJ 1 0 0 1 124.802 694.174 Tm [(the)-250(entir)18(e)-250(index)-250(space)-250(to)-250(\002gur)18(e)-250(out)-250(the)-250(local)-250(indices.)]TJ 0 g 0 G -12.453 -19.926 Td [(4.)]TJ 0 g 0 G - [-500(Overlapped)-250(indices)-250(ar)18(e)-250(possible)-250(with)-250(both)]TJ/F67 9.9626 Tf 201.093 0 Td [(parts)]TJ/F62 9.9626 Tf 28.643 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(vl)]TJ/F62 9.9626 Tf 12.951 0 Td [(invocations.)]TJ + [-500(Overlapped)-250(indices)-250(ar)18(e)-250(possible)-250(with)-250(both)]TJ/F131 9.9626 Tf 201.093 0 Td [(parts)]TJ/F84 9.9626 Tf 28.642 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(vl)]TJ/F84 9.9626 Tf 12.951 0 Td [(invocations.)]TJ 0 g 0 G -262.044 -19.925 Td [(5.)]TJ 0 g 0 G - [-500(When)-190(the)-190(subr)18(outine)-190(is)-190(invoked)-190(with)]TJ/F67 9.9626 Tf 175.161 0 Td [(vl)]TJ/F62 9.9626 Tf 12.354 0 Td [(in)-190(conjunction)-190(with)]TJ/F67 9.9626 Tf 86.235 0 Td [(globalcheck=.true.)]TJ/F62 9.9626 Tf 94.146 0 Td [(,)]TJ -355.443 -11.955 Td [(it)-280(will)-281(perform)-280(a)-280(scan)-281(of)-280(the)-281(index)-280(space)-280(to)-281(sear)18(ch)-280(for)-280(overlap)-281(or)-280(orphan)]TJ 0 -11.955 Td [(indices.)]TJ + 0.98 0 0 1 124.304 654.323 Tm [(When)-194(the)-194(subr)19(outine)-194(is)-194(invoked)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 283.981 654.323 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 296.335 654.323 Tm [(in)-194(conjunction)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 380.959 654.323 Tm [(globalcheck=.true.)]TJ/F84 9.9626 Tf 0.98 0 0 1 475.105 654.323 Tm [(,)]TJ 1.015 0 0 1 124.802 642.368 Tm [(it)-247(will)-246(perform)-247(a)-246(scan)-247(of)-246(the)-247(index)-247(space)-246(to)-247(sear)18(ch)-247(for)-246(overlap)-247(or)-246(orphan)]TJ 1 0 0 1 124.802 630.413 Tm [(indices.)]TJ 0 g 0 G -12.453 -19.925 Td [(6.)]TJ 0 g 0 G - [-500(When)-190(the)-190(subr)18(outine)-190(is)-190(invoked)-190(with)]TJ/F67 9.9626 Tf 175.161 0 Td [(vl)]TJ/F62 9.9626 Tf 12.354 0 Td [(in)-190(conjunction)-190(with)]TJ/F67 9.9626 Tf 86.235 0 Td [(globalcheck=.false.)]TJ/F62 9.9626 Tf 99.377 0 Td [(,)]TJ -360.674 -11.956 Td [(no)-338(index)-337(space)-338(scan)-337(will)-338(take)-337(place.)-573(Thus)-337(it)-338(is)-338(the)-337(r)18(esponsibility)-338(of)-337(the)]TJ 0 -11.955 Td [(user)-328(to)-328(make)-328(sur)18(e)-328(that)-328(the)-328(indices)-328(speci\002ed)-328(in)]TJ/F67 9.9626 Tf 209.973 0 Td [(vl)]TJ/F62 9.9626 Tf 13.729 0 Td [(have)-328(neither)-328(orphans)]TJ -223.702 -11.955 Td [(nor)-250(overlaps;)-250(if)-250(this)-250(assumption)-250(fails,)-250(r)18(esults)-250(will)-250(be)-250(unpr)18(edictable.)]TJ + 0.98 0 0 1 124.304 610.488 Tm [(When)-194(the)-194(subr)19(outine)-194(is)-194(invoked)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 283.981 610.488 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 296.335 610.488 Tm [(in)-194(conjunction)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 380.959 610.488 Tm [(globalcheck=.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 480.336 610.488 Tm [(,)]TJ 1.02 0 0 1 124.802 598.532 Tm [(no)-295(index)-295(space)-295(scan)-295(will)-296(take)-295(place.)-454(Thus)-295(it)-295(is)-295(the)-295(r)18(esponsibility)-296(of)-295(the)]TJ 1.02 0 0 1 124.802 586.577 Tm [(user)-277(to)-278(make)-277(sur)17(e)-277(that)-277(the)-278(indices)-277(speci\002ed)-278(in)]TJ/F131 9.9626 Tf 1 0 0 1 334.35 586.577 Tm [(vl)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.63 586.577 Tm [(have)-277(neither)-278(orphans)]TJ 1 0 0 1 124.802 574.622 Tm [(nor)-250(overlaps;)-250(if)-250(this)-250(assumption)-250(fails,)-250(r)18(esults)-250(will)-250(be)-250(unpr)18(edictable.)]TJ 0 g 0 G -12.453 -19.925 Td [(7.)]TJ 0 g 0 G - [-500(Orphan)-417(and)-416(overlap)-417(indices)-416(ar)18(e)-417(impossible)-416(by)-417(constr)8(uction)-417(when)-416(the)]TJ 12.453 -11.955 Td [(subr)18(outine)-250(is)-250(invoked)-250(with)]TJ/F67 9.9626 Tf 121.164 0 Td [(nl)]TJ/F62 9.9626 Tf 12.951 0 Td [(\050alone\051,)-250(or)]TJ/F67 9.9626 Tf 47.372 0 Td [(vg)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)]TJ + 1.02 0 0 1 124.802 554.697 Tm [(Orphan)-347(and)-347(overlap)-346(indices)-347(ar)17(e)-346(impossible)-347(by)-347(constr)8(uction)-347(when)-347(the)]TJ 1 0 0 1 124.802 542.742 Tm [(subr)18(outine)-250(is)-250(invoked)-250(with)]TJ/F131 9.9626 Tf 121.164 0 Td [(nl)]TJ/F84 9.9626 Tf 12.951 0 Td [(\050alone\051,)-250(or)]TJ/F131 9.9626 Tf 47.372 0 Td [(vg)]TJ/F84 9.9626 Tf 10.461 0 Td [(.)]TJ 0 g 0 G -49.98 -452.304 Td [(73)]TJ 0 g 0 G @@ -17158,54 +17148,54 @@ ET endstream endobj -1481 0 obj +1484 0 obj << -/Length 7006 +/Length 7200 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.2)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.2)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(routine)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdins\050nz,)-525(ia,)-525(ja,)-525(desc_a,)-525(info)-525([,ila,jla]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdins\050nz,ja,desc,info[,jla,mask,lidx]\051)]TJ/F62 9.9626 Tf 14.944 -20.366 Td [(This)-336(subr)18(outine)-335(examines)-336(the)-336(edges)-335(of)-336(the)-336(graph)-335(associated)-336(with)-335(the)-336(dis-)]TJ -14.944 -11.955 Td [(cr)18(etization)-260(mesh)-261(\050and)-260(isomorphic)-260(to)-261(the)-260(sparsity)-260(pattern)-261(of)-260(a)-260(linear)-261(system)-260(co-)]TJ 0 -11.955 Td [(ef)18(\002cient)-238(matrix\051,)-241(storing)-238(them)-239(as)-238(necessary)-238(into)-239(the)-238(communication)-238(descriptor)74(.)]TJ 0 -11.955 Td [(In)-259(the)-260(\002rst)-259(form)-260(the)-259(edges)-259(ar)18(e)-260(speci\002ed)-259(as)-260(pairs)-259(of)-260(indices)]TJ/F60 9.9626 Tf 255.974 0 Td [(i)-47(a)]TJ/F93 10.3811 Tf 7.91 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)]TJ/F60 9.9626 Tf 4.624 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.841 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-264(the)-260(start)1(-)]TJ -299.233 -11.956 Td [(ing)-299(index)]TJ/F60 9.9626 Tf 44.948 0 Td [(i)-47(a)]TJ/F93 10.3811 Tf 7.91 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 7.13 0 Td [(should)-299(belong)-299(to)-299(the)-299(curr)18(ent)-299(pr)18(ocess.)-458(In)-299(the)-299(second)-299(form)-299(only)]TJ -67.28 -11.955 Td [(the)-250(r)18(emote)-250(indices)]TJ/F60 9.9626 Tf 83.65 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.841 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 6.64 0 Td [(ar)18(e)-250(speci\002ed.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdins\050nz,)-525(ia,)-525(ja,)-525(desc_a,)-525(info)-525([,ila,jla]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdins\050nz,ja,desc,info[,jla,mask,lidx]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 654.844 Tm [(This)-292(subr)18(outine)-291(examines)-292(the)-292(edges)-291(of)-292(the)-291(graph)-292(associated)-292(with)-291(the)-292(dis-)]TJ 1.02 0 0 1 150.705 642.889 Tm [(cr)18(etization)-343(mesh)-343(\050and)-343(isomorphic)-342(to)-343(the)-343(sparsity)-343(pattern)-342(of)-343(a)-343(linear)-343(system)]TJ 0.98 0 0 1 150.705 630.934 Tm [(coef)18(\002cient)-226(matrix\051,)-232(storing)-226(them)-226(as)-227(necessary)-226(into)-226(the)-226(communication)-226(descriptor)75(.)]TJ 0.98 0 0 1 150.705 618.979 Tm [(In)-225(the)-225(\002rst)-225(form)-225(the)-225(edges)-226(ar)19(e)-225(speci\002ed)-225(as)-225(pairs)-226(of)-225(indices)]TJ/F78 9.9626 Tf 1 0 0 1 397.536 618.979 Tm [(i)-47(a)]TJ/F181 10.3811 Tf 7.91 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 416.888 618.979 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 421.463 618.979 Tm [(j)-40(a)]TJ/F181 10.3811 Tf 7.84 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 440.745 618.979 Tm [(;)-235(the)-225(starting)]TJ 1.02 0 0 1 150.705 607.023 Tm [(index)]TJ/F78 9.9626 Tf 1 0 0 1 178.58 607.023 Tm [(i)-47(a)]TJ/F181 10.3811 Tf 7.91 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 200.561 607.023 Tm [(should)-259(belong)-258(to)-259(the)-259(curr)18(ent)-259(pr)18(ocess.)-345(In)-259(the)-258(second)-259(form)-259(only)-258(the)]TJ 1 0 0 1 150.705 595.068 Tm [(r)18(emote)-250(indices)]TJ/F78 9.9626 Tf 67.341 0 Td [(j)-40(a)]TJ/F181 10.3811 Tf 7.841 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(ar)18(e)-250(speci\002ed.)]TJ 0 g 0 G -/F59 9.9626 Tf -105.423 -20.366 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -89.115 -20.366 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.304 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.304 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.305 Td [(nz)]TJ 0 g 0 G -/F62 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(points)-250(being)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(points)-250(being)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.305 Td [(ia)]TJ +/F75 9.9626 Tf -24.907 -19.305 Td [(ia)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -19.304 Td [(ja)]TJ +/F75 9.9626 Tf -207.221 -19.304 Td [(ja)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -19.304 Td [(mask)]TJ +/F75 9.9626 Tf -207.221 -19.304 Td [(mask)]TJ 0 g 0 G -/F62 9.9626 Tf 29.33 0 Td [(Mask)-247(entries)-248(in)]TJ/F67 9.9626 Tf 69.91 0 Td [(ja)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)-248(they)-247(ar)18(e)-248(inserted)-247(only)-248(when)-247(the)-247(corr)18(esponding)]TJ/F67 9.9626 Tf 213.089 0 Td [(mask)]TJ/F62 9.9626 Tf -297.883 -11.956 Td [(entries)-250(ar)18(e)]TJ/F67 9.9626 Tf 48.139 0 Td [(.true.)]TJ/F62 9.9626 Tf -48.139 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 164.297 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(,)-250(default)]TJ/F67 9.9626 Tf 38.784 0 Td [(.true.)]TJ/F62 9.9626 Tf 31.382 0 Td [(.)]TJ +/F84 9.9626 Tf 29.33 0 Td [(Mask)-250(entries)-250(in)]TJ/F131 9.9626 Tf 69.983 0 Td [(ja)]TJ/F84 9.9626 Tf 10.46 0 Td [(,)-250(they)-250(ar)18(e)-250(inserted)-250(on)1(ly)-250(when)-250(the)-250(corr)18(esponding)]TJ/F131 9.9626 Tf 213.278 0 Td [(mask)]TJ/F84 9.9626 Tf -298.144 -11.955 Td [(entries)-250(ar)18(e)]TJ/F131 9.9626 Tf 48.139 0 Td [(.true.)]TJ/F84 9.9626 Tf -48.139 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.965 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 164.297 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(,)-250(default)]TJ/F131 9.9626 Tf 38.784 0 Td [(.true.)]TJ/F84 9.9626 Tf 31.382 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -269.706 -19.305 Td [(lidx)]TJ +/F75 9.9626 Tf -269.706 -19.305 Td [(lidx)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(User)-250(de\002ned)-250(local)-250(indices)-250(for)]TJ/F67 9.9626 Tf 131.117 0 Td [(ja)]TJ/F62 9.9626 Tf 10.46 0 Td [(.)]TJ -139.355 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 22.685 0 Td [(User)-250(de\002ned)-250(local)-250(indices)-250(for)]TJ/F131 9.9626 Tf 131.117 0 Td [(ja)]TJ/F84 9.9626 Tf 10.46 0 Td [(.)]TJ -139.355 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.965 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -20.366 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -207.221 -20.366 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.305 Td [(desc)]TJ @@ -17215,27 +17205,27 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 168.146 Td [(a)]TJ +/F75 9.9626 Tf 174.207 168.146 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(updated)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(updated)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 120.326 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 120.326 Td [(desc)]TJ ET q 1 0 0 1 384.755 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 120.326 Td [(type)]TJ +/F131 9.9626 Tf 387.893 120.326 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -91.236 -29.888 Td [(74)]TJ 0 g 0 G @@ -17243,38 +17233,38 @@ ET endstream endobj -1486 0 obj +1489 0 obj << -/Length 3007 +/Length 3082 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(ila)]TJ +/F75 9.9626 Tf -24.518 -19.925 Td [(ila)]TJ 0 g 0 G -/F62 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -19.925 Td [(jla)]TJ +/F75 9.9626 Tf -207.221 -19.925 Td [(jla)]TJ 0 g 0 G -/F62 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ/F59 11.9552 Tf -207.221 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ/F75 11.9552 Tf -207.221 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-250(r)18(outine)-250(may)-250(only)-250(be)-250(called)-250(if)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(build)-250(state;)]TJ + [-469(This)-250(r)18(outine)-250(may)-250(only)-250(be)-250(called)-250(if)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(build)-250(state;)]TJ 0 g 0 G 0 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(This)-370(r)18(outine)-370(automatically)-370(ignor)18(es)-370(edges)-370(that)-370(do)-370(not)-370(insist)-370(on)-370(the)-370(cur)18(-)]TJ 12.453 -11.955 Td [(r)18(ent)-288(pr)18(ocess,)-298(i.e.)-424(edges)-288(for)-288(which)-288(neither)-288(the)-288(starting)-288(nor)-288(the)-288(end)-288(vertex)]TJ 0 -11.955 Td [(belong)-250(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ + 0.997 0 0 1 124.493 461.048 Tm [(This)-250(r)18(outine)-250(automatically)-250(ignor)19(es)-250(edges)-250(that)-250(do)-250(not)-250(insist)-250(on)-250(the)-250(curr)18(ent)]TJ 0.98 0 0 1 124.503 449.093 Tm [(pr)18(ocess,)-249(i.e.)-314(edges)-248(for)-248(which)-248(neither)-248(the)-248(starting)-248(nor)-248(the)-248(end)-248(vertex)-248(belong)]TJ 1 0 0 1 124.802 437.138 Tm [(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ 0 g 0 G -12.453 -19.926 Td [(3.)]TJ 0 g 0 G - [-500(The)-322(second)-323(form)-322(of)-323(this)-322(r)18(outine)-323(will)-322(be)-322(useful)-323(when)-322(dealing)-323(with)-322(user)18(-)]TJ 12.453 -11.955 Td [(speci\002ed)-250(index)-250(mappings;)-250(see)-250(also)]TJ + 1.02 0 0 1 124.493 417.212 Tm [(The)-286(second)-286(form)-287(of)-286(this)-286(r)18(outine)-286(will)-287(be)-286(useful)-286(when)-286(dealing)-286(with)-286(user)17(-)]TJ 1 0 0 1 124.802 405.257 Tm [(speci\002ed)-250(index)-250(mappings;)-250(see)-250(also)]TJ 0 0 1 rg 0 0 1 RG [-250(2.3.1)]TJ 0 g 0 G @@ -17286,31 +17276,31 @@ ET endstream endobj -1495 0 obj +1498 0 obj << -/Length 5969 +/Length 6209 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.3)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(routine)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdasb\050desc_a,)-525(info)-525([,)-525(mold]\051)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdasb\050desc_a,)-525(info)-525([,)-525(mold]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -17320,61 +17310,61 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 625.397 Td [(a)]TJ +/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ ET q 1 0 0 1 384.755 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 577.576 Td [(type)]TJ +/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(mold)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(index)-250(storage.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(object)-190(of)-190(type)-190(derived)-190(fr)18(om)-190(\050integer\051)]TJ/F67 9.9626 Tf 221.926 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(index)-250(storage.)]TJ -3.567 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 509.83 Tm [(Speci\002ed)-212(as:)-295(a)-212(object)-212(of)-212(type)-213(derived)-212(fr)19(om)-212(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 394.97 509.83 Tm [(psb)]TJ ET q -1 0 0 1 413.855 510.029 cm +1 0 0 1 411.288 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 416.994 509.83 Td [(T)]TJ +/F131 9.9626 Tf 414.427 509.83 Td [(T)]TJ ET q -1 0 0 1 422.851 510.029 cm +1 0 0 1 420.285 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 425.99 509.83 Td [(base)]TJ +/F131 9.9626 Tf 423.423 509.83 Td [(base)]TJ ET q -1 0 0 1 447.539 510.029 cm +1 0 0 1 444.972 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 450.677 509.83 Td [(vect)]TJ +/F131 9.9626 Tf 448.11 509.83 Td [(vect)]TJ ET q -1 0 0 1 472.226 510.029 cm +1 0 0 1 469.659 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 475.364 509.83 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F131 9.9626 Tf 472.797 509.83 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.719 509.83 Tm [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -345.58 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 487.912 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -17384,35 +17374,35 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 467.987 Td [(a)]TJ +/F75 9.9626 Tf 174.207 467.987 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 420.366 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 420.166 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 420.166 Td [(desc)]TJ ET q 1 0 0 1 384.755 420.366 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 420.166 Td [(type)]TJ +/F131 9.9626 Tf 387.893 420.166 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.917 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.926 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(assembled)-250(state.)]TJ -12.453 -19.925 Td [(This)-274(call)-275(will)-274(set)-275(up)-274(all)-275(the)-274(necessary)-275(information)-274(for)-275(the)-274(halo)-275(data)-274(exchanges.)]TJ 0 -11.955 Td [(In)-337(doing)-337(so,)-358(the)-337(library)-337(will)-337(need)-336(to)-337(identify)-337(the)-337(set)-337(of)-337(pr)18(ocesse)1(s)-337(owning)-337(the)]TJ 0 -11.955 Td [(halo)-381(indices)-381(thr)18(ough)-380(the)-381(use)-381(of)-381(the)]TJ/F67 9.9626 Tf 163.76 0 Td [(desc%fnd_owner\050\051)]TJ/F62 9.9626 Tf 87.479 0 Td [(method;)-446(the)-381(owning)]TJ -251.239 -11.956 Td [(pr)18(ocesses)-273(ar)18(e)-273(the)-273(topological)-272(neighbours)-273(of)-273(the)-273(calling)-273(pr)18(ocess.)-379(If)-272(the)-273(user)-273(has)]TJ 0 -11.955 Td [(some)-248(backgr)18(ound)-248(information)-248(on)-248(the)-248(pr)18(ocesses)-248(that)-248(ar)18(e)-248(neighbours)-248(of)-248(the)-248(cur)18(-)]TJ 0 -11.955 Td [(r)18(ent)-274(one,)-281(it)-274(is)-275(possible)-274(to)-274(specify)-275(explicitly)-274(the)-274(list)-275(of)-274(adjacent)-274(pr)18(ocesses)-275(with)-274(a)]TJ 0 -11.955 Td [(call)-327(to)]TJ/F67 9.9626 Tf 30.401 0 Td [(desc%set_p_adjcncy\050list\051)]TJ/F62 9.9626 Tf 125.529 0 Td [(;)-365(this)-327(will)-327(speed)-327(u)1(p)-327(the)-327(subsequent)-327(call)-327(to)]TJ/F67 9.9626 Tf -155.93 -11.955 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)]TJ + [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(assembled)-250(state.)]TJ 1.017 0 0 1 150.396 290.652 Tm [(This)-246(call)-245(will)-246(set)-246(up)-245(all)-246(the)-246(necessary)-246(informat)1(ion)-246(for)-246(the)-246(halo)-245(data)-246(exchanges.)]TJ 1.02 0 0 1 150.705 278.697 Tm [(In)-289(doing)-289(so,)-301(the)-289(library)-289(will)-289(need)-290(to)-289(identify)-289(the)-289(set)-290(of)-289(pr)18(ocesses)-289(owning)-290(the)]TJ 1.02 0 0 1 150.705 266.742 Tm [(halo)-332(indices)-332(thr)18(ough)-332(the)-331(use)-332(of)-332(the)]TJ/F131 9.9626 Tf 1 0 0 1 314.257 266.742 Tm [(desc%fnd_owner\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 401.314 266.742 Tm [(method;)-375(the)-332(owning)]TJ 1.02 0 0 1 150.406 254.786 Tm [(pr)18(ocesses)-361(ar)18(e)-361(the)-361(topological)-360(neighbours)-361(of)-361(the)-361(cal)1(ling)-361(pr)17(ocess.)-650(If)-361(the)-361(user)]TJ 1.007 0 0 1 150.705 242.831 Tm [(has)-249(some)-249(backgr)18(ound)-249(information)-249(on)-249(the)-249(pr)18(ocesses)-249(that)-249(ar)18(e)-249(neighbours)-249(of)-249(the)]TJ 0.989 0 0 1 150.705 230.876 Tm [(curr)18(ent)-253(one,)-253(it)-253(is)-253(possible)-253(to)-253(specify)-253(explicitly)-253(the)-253(list)-253(of)-253(adjacent)-253(pr)18(ocesses)-253(with)]TJ 1.003 0 0 1 150.705 218.921 Tm [(a)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 187.132 218.921 Tm [(desc%set_p_adjcncy\050list\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 312.66 218.921 Tm [(;)-249(this)-249(will)-250(speed)-249(up)-249(the)-249(subsequent)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 206.966 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ 0 g 0 G 119.801 -116.528 Td [(76)]TJ 0 g 0 G @@ -17420,25 +17410,36 @@ ET endstream endobj -1381 0 obj +1383 0 obj << /Type /ObjStm /N 100 -/First 993 -/Length 11849 ->> -stream -1379 0 1380 276 1362 512 1369 659 1373 806 1374 865 1370 924 1385 1060 1387 1178 1384 1236 -1393 1304 1389 1461 1390 1605 1391 1750 1395 1897 296 1956 1396 2014 1392 2073 1402 2206 1397 2363 -1399 2509 1400 2655 1404 2800 1405 2858 1406 2916 1407 2974 1401 3032 1410 3139 1412 3257 1409 3316 -1414 3384 1417 3502 1418 3629 1419 3672 1420 3879 1421 4117 1422 4393 1416 4629 1408 4687 1413 4745 -1429 4842 1425 4999 1426 5140 1427 5287 1431 5434 300 5493 1432 5551 1428 5610 1434 5743 1436 5861 -1433 5919 1441 6013 1438 6152 1443 6299 304 6358 1444 6416 1440 6475 1448 6608 1439 6765 1445 6908 -1446 7051 1450 7198 1447 7256 1452 7363 1454 7481 308 7540 312 7598 1451 7655 1457 7788 1455 7927 -1459 8074 1460 8132 1456 8190 1463 8310 1461 8449 1465 8607 1467 8666 1462 8725 1469 8872 1471 8990 -1472 9048 1473 9106 1474 9164 1475 9222 1476 9280 1468 9338 1480 9419 1478 9558 1482 9703 316 9762 -1479 9820 1485 9940 1483 10079 1487 10237 1488 10295 1489 10353 1490 10411 1484 10469 1494 10563 1491 10711 -% 1379 0 obj +/First 997 +/Length 11971 +>> +stream +1381 0 1382 238 1384 514 1365 750 1372 897 1376 1044 1377 1103 1373 1162 1388 1299 1390 1417 +1387 1475 1396 1543 1392 1700 1393 1844 1394 1989 1398 2136 296 2195 1399 2253 1395 2312 1405 2448 +1400 2605 1402 2751 1403 2896 1407 3042 1408 3100 1409 3158 1410 3216 1404 3274 1413 3382 1415 3500 +1412 3559 1417 3627 1420 3745 1421 3872 1422 3915 1423 4122 1424 4360 1425 4636 1419 4872 1411 4930 +1416 4988 1432 5085 1428 5242 1429 5383 1430 5530 1434 5677 300 5736 1435 5794 1431 5853 1437 5989 +1439 6107 1436 6165 1444 6260 1441 6399 1446 6546 304 6605 1447 6663 1443 6722 1451 6858 1442 7015 +1448 7158 1449 7301 1453 7448 1450 7506 1455 7614 1457 7732 308 7791 312 7849 1454 7906 1460 8042 +1458 8181 1462 8328 1463 8386 1459 8444 1466 8566 1464 8705 1468 8863 1470 8922 1465 8981 1472 9132 +1474 9250 1475 9308 1476 9366 1477 9424 1478 9482 1479 9540 1471 9598 1483 9680 1481 9819 1485 9964 +316 10023 1482 10081 1488 10203 1486 10342 1490 10500 1491 10558 1492 10616 1493 10674 1487 10732 1497 10826 +% 1381 0 obj +<< +/BaseFont /XISTAL+Times-Bold +/FontDescriptor 1384 0 R +/Type /Font +/FirstChar 48 +/LastChar 80 +/Widths [ 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611] +/Encoding /WinAnsiEncoding +/Subtype /Type1 +>> +% 1382 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -17451,9 +17452,9 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1382 0 R +/FontFile3 1385 0 R >> -% 1380 0 obj +% 1384 0 obj << /Type /FontDescriptor /FontName /XISTAL+Times-Bold @@ -17466,65 +17467,65 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1383 0 R +/FontFile3 1386 0 R >> -% 1362 0 obj +% 1365 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.023 625.272 242.978 634.682] +/Rect [211.646 625.272 223.601 634.682] /A << /S /GoTo /D (table.17) >> >> -% 1369 0 obj +% 1372 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [458.157 276.439 465.131 290.202] +/Rect [459.719 276.439 466.793 290.202] /A << /S /GoTo /D (figure.3) >> >> -% 1373 0 obj +% 1376 0 obj << -/D [1371 0 R /XYZ 149.705 753.953 null] +/D [1374 0 R /XYZ 149.705 753.953 null] >> -% 1374 0 obj +% 1377 0 obj << -/D [1371 0 R /XYZ 150.705 326.444 null] +/D [1374 0 R /XYZ 150.705 326.444 null] >> -% 1370 0 obj +% 1373 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> -/XObject << /Im4 1368 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> +/XObject << /Im4 1371 0 R >> /ProcSet [ /PDF /Text ] >> -% 1385 0 obj +% 1388 0 obj << /Type /Page -/Contents 1386 0 R -/Resources 1384 0 R +/Contents 1389 0 R +/Resources 1387 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1388 0 R +/Parent 1391 0 R >> -% 1387 0 obj +% 1390 0 obj << -/D [1385 0 R /XYZ 98.895 753.953 null] +/D [1388 0 R /XYZ 98.895 753.953 null] >> -% 1384 0 obj +% 1387 0 obj << -/Font << /F62 671 0 R >> +/Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1393 0 obj +% 1396 0 obj << /Type /Page -/Contents 1394 0 R -/Resources 1392 0 R +/Contents 1397 0 R +/Resources 1395 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1388 0 R -/Annots [ 1389 0 R 1390 0 R 1391 0 R ] +/Parent 1391 0 R +/Annots [ 1392 0 R 1393 0 R 1394 0 R ] >> -% 1389 0 obj +% 1392 0 obj << /Type /Annot /Subtype /Link @@ -17532,7 +17533,7 @@ stream /Rect [419.358 345.485 495.412 357.545] /A << /S /GoTo /D (vdata) >> >> -% 1390 0 obj +% 1393 0 obj << /Type /Annot /Subtype /Link @@ -17540,7 +17541,7 @@ stream /Rect [377.462 333.53 389.417 345.59] /A << /S /GoTo /D (table.18) >> >> -% 1391 0 obj +% 1394 0 obj << /Type /Annot /Subtype /Link @@ -17548,33 +17549,33 @@ stream /Rect [342.753 266.146 409.811 278.205] /A << /S /GoTo /D (descdata) >> >> -% 1395 0 obj +% 1398 0 obj << -/D [1393 0 R /XYZ 149.705 753.953 null] +/D [1396 0 R /XYZ 149.705 753.953 null] >> % 296 0 obj << -/D [1393 0 R /XYZ 150.705 716.092 null] +/D [1396 0 R /XYZ 150.705 716.092 null] >> -% 1396 0 obj +% 1399 0 obj << -/D [1393 0 R /XYZ 150.705 510.975 null] +/D [1396 0 R /XYZ 150.705 510.975 null] >> -% 1392 0 obj +% 1395 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F67 918 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1402 0 obj +% 1405 0 obj << /Type /Page -/Contents 1403 0 R -/Resources 1401 0 R +/Contents 1406 0 R +/Resources 1404 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1388 0 R -/Annots [ 1397 0 R 1399 0 R 1400 0 R ] +/Parent 1391 0 R +/Annots [ 1400 0 R 1402 0 R 1403 0 R ] >> -% 1397 0 obj +% 1400 0 obj << /Type /Annot /Subtype /Link @@ -17582,83 +17583,83 @@ stream /Rect [202.52 554.876 214.475 566.936] /A << /S /GoTo /D (table.18) >> >> -% 1399 0 obj +% 1402 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [407.408 325.46 414.381 339.127] +/Rect [408.907 325.46 415.98 339.127] /A << /S /GoTo /D (figure.4) >> >> -% 1400 0 obj +% 1403 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [309.226 301.825 316.2 313.885] +/Rect [306.22 301.825 313.294 313.885] /A << /S /GoTo /D (figure.3) >> >> -% 1404 0 obj +% 1407 0 obj << -/D [1402 0 R /XYZ 98.895 753.953 null] +/D [1405 0 R /XYZ 98.895 753.953 null] >> -% 1405 0 obj +% 1408 0 obj << -/D [1402 0 R /XYZ 99.895 464.818 null] +/D [1405 0 R /XYZ 99.895 464.818 null] >> -% 1406 0 obj +% 1409 0 obj << -/D [1402 0 R /XYZ 99.895 430.343 null] +/D [1405 0 R /XYZ 99.895 430.343 null] >> -% 1407 0 obj +% 1410 0 obj << -/D [1402 0 R /XYZ 99.895 386.508 null] +/D [1405 0 R /XYZ 99.895 386.508 null] >> -% 1401 0 obj +% 1404 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1410 0 obj +% 1413 0 obj << /Type /Page -/Contents 1411 0 R -/Resources 1409 0 R +/Contents 1414 0 R +/Resources 1412 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1388 0 R +/Parent 1391 0 R >> -% 1412 0 obj +% 1415 0 obj << -/D [1410 0 R /XYZ 149.705 753.953 null] +/D [1413 0 R /XYZ 149.705 753.953 null] >> -% 1409 0 obj +% 1412 0 obj << -/Font << /F62 671 0 R >> +/Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1414 0 obj +% 1417 0 obj << /Type /Page -/Contents 1415 0 R -/Resources 1413 0 R +/Contents 1418 0 R +/Resources 1416 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1388 0 R +/Parent 1391 0 R >> -% 1417 0 obj +% 1420 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100658Z00'00') /ModDate (D:20180323100658Z00'00') >> -% 1418 0 obj +% 1421 0 obj << /Type /ExtGState /OPM 1 >> -% 1419 0 obj +% 1422 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1421 0 R +/FontDescriptor 1424 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -17666,10 +17667,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1420 0 obj +% 1423 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1422 0 R +/FontDescriptor 1425 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -17677,7 +17678,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1421 0 obj +% 1424 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -17690,9 +17691,9 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1423 0 R +/FontFile3 1426 0 R >> -% 1422 0 obj +% 1425 0 obj << /Type /FontDescriptor /FontName /XISTAL+Times-Bold @@ -17705,32 +17706,32 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1424 0 R +/FontFile3 1427 0 R >> -% 1416 0 obj +% 1419 0 obj << -/D [1414 0 R /XYZ 98.895 753.953 null] +/D [1417 0 R /XYZ 98.895 753.953 null] >> -% 1408 0 obj +% 1411 0 obj << -/D [1414 0 R /XYZ 99.895 282.918 null] +/D [1417 0 R /XYZ 99.895 282.918 null] >> -% 1413 0 obj +% 1416 0 obj << -/Font << /F62 671 0 R >> -/XObject << /Im5 1398 0 R >> +/Font << /F84 675 0 R >> +/XObject << /Im5 1401 0 R >> /ProcSet [ /PDF /Text ] >> -% 1429 0 obj +% 1432 0 obj << /Type /Page -/Contents 1430 0 R -/Resources 1428 0 R +/Contents 1433 0 R +/Resources 1431 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1388 0 R -/Annots [ 1425 0 R 1426 0 R 1427 0 R ] +/Parent 1391 0 R +/Annots [ 1428 0 R 1429 0 R 1430 0 R ] >> -% 1425 0 obj +% 1428 0 obj << /Type /Annot /Subtype /Link @@ -17738,7 +17739,7 @@ stream /Rect [419.358 298.8 495.412 310.86] /A << /S /GoTo /D (vdata) >> >> -% 1426 0 obj +% 1429 0 obj << /Type /Annot /Subtype /Link @@ -17746,7 +17747,7 @@ stream /Rect [255.331 289.495 267.287 298.905] /A << /S /GoTo /D (table.19) >> >> -% 1427 0 obj +% 1430 0 obj << /Type /Annot /Subtype /Link @@ -17754,50 +17755,50 @@ stream /Rect [342.753 218.115 409.811 230.175] /A << /S /GoTo /D (descdata) >> >> -% 1431 0 obj +% 1434 0 obj << -/D [1429 0 R /XYZ 149.705 753.953 null] +/D [1432 0 R /XYZ 149.705 753.953 null] >> % 300 0 obj << -/D [1429 0 R /XYZ 150.705 716.092 null] +/D [1432 0 R /XYZ 150.705 716.092 null] >> -% 1432 0 obj +% 1435 0 obj << -/D [1429 0 R /XYZ 150.705 460.417 null] +/D [1432 0 R /XYZ 150.705 460.417 null] >> -% 1428 0 obj +% 1431 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1434 0 obj +% 1437 0 obj << /Type /Page -/Contents 1435 0 R -/Resources 1433 0 R +/Contents 1438 0 R +/Resources 1436 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1437 0 R +/Parent 1440 0 R >> -% 1436 0 obj +% 1439 0 obj << -/D [1434 0 R /XYZ 98.895 753.953 null] +/D [1437 0 R /XYZ 98.895 753.953 null] >> -% 1433 0 obj +% 1436 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1441 0 obj +% 1444 0 obj << /Type /Page -/Contents 1442 0 R -/Resources 1440 0 R +/Contents 1445 0 R +/Resources 1443 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1437 0 R -/Annots [ 1438 0 R ] +/Parent 1440 0 R +/Annots [ 1441 0 R ] >> -% 1438 0 obj +% 1441 0 obj << /Type /Annot /Subtype /Link @@ -17805,33 +17806,33 @@ stream /Rect [342.753 211.064 409.811 223.124] /A << /S /GoTo /D (descdata) >> >> -% 1443 0 obj +% 1446 0 obj << -/D [1441 0 R /XYZ 149.705 753.953 null] +/D [1444 0 R /XYZ 149.705 753.953 null] >> % 304 0 obj << -/D [1441 0 R /XYZ 150.705 716.092 null] +/D [1444 0 R /XYZ 150.705 716.092 null] >> -% 1444 0 obj +% 1447 0 obj << -/D [1441 0 R /XYZ 150.705 449.977 null] +/D [1444 0 R /XYZ 150.705 449.977 null] >> -% 1440 0 obj +% 1443 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1448 0 obj +% 1451 0 obj << /Type /Page -/Contents 1449 0 R -/Resources 1447 0 R +/Contents 1452 0 R +/Resources 1450 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1437 0 R -/Annots [ 1439 0 R 1445 0 R 1446 0 R ] +/Parent 1440 0 R +/Annots [ 1442 0 R 1448 0 R 1449 0 R ] >> -% 1439 0 obj +% 1442 0 obj << /Type /Annot /Subtype /Link @@ -17839,7 +17840,7 @@ stream /Rect [287.51 642.547 363.564 654.607] /A << /S /GoTo /D (vdata) >> >> -% 1445 0 obj +% 1448 0 obj << /Type /Annot /Subtype /Link @@ -17847,7 +17848,7 @@ stream /Rect [123.806 542.921 199.86 554.981] /A << /S /GoTo /D (vdata) >> >> -% 1446 0 obj +% 1449 0 obj << /Type /Annot /Subtype /Link @@ -17855,50 +17856,50 @@ stream /Rect [421.516 542.921 433.471 554.981] /A << /S /GoTo /D (table.20) >> >> -% 1450 0 obj +% 1453 0 obj << -/D [1448 0 R /XYZ 98.895 753.953 null] +/D [1451 0 R /XYZ 98.895 753.953 null] >> -% 1447 0 obj +% 1450 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1452 0 obj +% 1455 0 obj << /Type /Page -/Contents 1453 0 R -/Resources 1451 0 R +/Contents 1456 0 R +/Resources 1454 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1437 0 R +/Parent 1440 0 R >> -% 1454 0 obj +% 1457 0 obj << -/D [1452 0 R /XYZ 149.705 753.953 null] +/D [1455 0 R /XYZ 149.705 753.953 null] >> % 308 0 obj << -/D [1452 0 R /XYZ 150.705 716.092 null] +/D [1455 0 R /XYZ 150.705 716.092 null] >> % 312 0 obj << -/D [1452 0 R /XYZ 150.705 691.48 null] +/D [1455 0 R /XYZ 150.705 691.48 null] >> -% 1451 0 obj +% 1454 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1457 0 obj +% 1460 0 obj << /Type /Page -/Contents 1458 0 R -/Resources 1456 0 R +/Contents 1461 0 R +/Resources 1459 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1437 0 R -/Annots [ 1455 0 R ] +/Parent 1440 0 R +/Annots [ 1458 0 R ] >> -% 1455 0 obj +% 1458 0 obj << /Type /Annot /Subtype /Link @@ -17906,29 +17907,29 @@ stream /Rect [291.943 324.687 359.001 336.746] /A << /S /GoTo /D (descdata) >> >> -% 1459 0 obj +% 1462 0 obj << -/D [1457 0 R /XYZ 98.895 753.953 null] +/D [1460 0 R /XYZ 98.895 753.953 null] >> -% 1460 0 obj +% 1463 0 obj << -/D [1457 0 R /XYZ 99.895 234.157 null] +/D [1460 0 R /XYZ 99.895 234.157 null] >> -% 1456 0 obj +% 1459 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1463 0 obj +% 1466 0 obj << /Type /Page -/Contents 1464 0 R -/Resources 1462 0 R +/Contents 1467 0 R +/Resources 1465 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1437 0 R -/Annots [ 1461 0 R ] +/Parent 1440 0 R +/Annots [ 1464 0 R ] >> -% 1461 0 obj +% 1464 0 obj << /Type /Annot /Subtype /Link @@ -17936,66 +17937,66 @@ stream /Rect [405.298 215.702 427.216 227.166] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1465 0 obj +% 1468 0 obj << -/D [1463 0 R /XYZ 149.705 753.953 null] +/D [1466 0 R /XYZ 149.705 753.953 null] >> -% 1467 0 obj +% 1470 0 obj << -/D [1463 0 R /XYZ 150.705 133.283 null] +/D [1466 0 R /XYZ 150.705 133.283 null] >> -% 1462 0 obj +% 1465 0 obj << -/Font << /F67 918 0 R /F62 671 0 R /F59 669 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R /F69 1466 0 R >> +/Font << /F131 921 0 R /F84 675 0 R /F75 673 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R /F134 1469 0 R >> /ProcSet [ /PDF /Text ] >> -% 1469 0 obj +% 1472 0 obj << /Type /Page -/Contents 1470 0 R -/Resources 1468 0 R +/Contents 1473 0 R +/Resources 1471 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1477 0 R +/Parent 1480 0 R >> -% 1471 0 obj +% 1474 0 obj << -/D [1469 0 R /XYZ 98.895 753.953 null] +/D [1472 0 R /XYZ 98.895 753.953 null] >> -% 1472 0 obj +% 1475 0 obj << -/D [1469 0 R /XYZ 99.895 716.092 null] +/D [1472 0 R /XYZ 99.895 716.092 null] >> -% 1473 0 obj +% 1476 0 obj << -/D [1469 0 R /XYZ 99.895 687.379 null] +/D [1472 0 R /XYZ 99.895 687.379 null] >> -% 1474 0 obj +% 1477 0 obj << -/D [1469 0 R /XYZ 99.895 667.454 null] +/D [1472 0 R /XYZ 99.895 667.454 null] >> -% 1475 0 obj +% 1478 0 obj << -/D [1469 0 R /XYZ 99.895 626.268 null] +/D [1472 0 R /XYZ 99.895 626.268 null] >> -% 1476 0 obj +% 1479 0 obj << -/D [1469 0 R /XYZ 99.895 567.828 null] +/D [1472 0 R /XYZ 99.895 567.828 null] >> -% 1468 0 obj +% 1471 0 obj << -/Font << /F62 671 0 R /F67 918 0 R >> +/Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1480 0 obj +% 1483 0 obj << /Type /Page -/Contents 1481 0 R -/Resources 1479 0 R +/Contents 1484 0 R +/Resources 1482 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1477 0 R -/Annots [ 1478 0 R ] +/Parent 1480 0 R +/Annots [ 1481 0 R ] >> -% 1478 0 obj +% 1481 0 obj << /Type /Annot /Subtype /Link @@ -18003,29 +18004,29 @@ stream /Rect [342.753 116.52 409.811 128.58] /A << /S /GoTo /D (descdata) >> >> -% 1482 0 obj +% 1485 0 obj << -/D [1480 0 R /XYZ 149.705 753.953 null] +/D [1483 0 R /XYZ 149.705 753.953 null] >> % 316 0 obj << -/D [1480 0 R /XYZ 150.705 716.092 null] +/D [1483 0 R /XYZ 150.705 716.092 null] >> -% 1479 0 obj +% 1482 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1485 0 obj +% 1488 0 obj << /Type /Page -/Contents 1486 0 R -/Resources 1484 0 R +/Contents 1489 0 R +/Resources 1487 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1477 0 R -/Annots [ 1483 0 R ] +/Parent 1480 0 R +/Annots [ 1486 0 R ] >> -% 1483 0 obj +% 1486 0 obj << /Type /Annot /Subtype /Link @@ -18033,72 +18034,64 @@ stream /Rect [278.165 401.451 300.083 413.511] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1487 0 obj +% 1490 0 obj << -/D [1485 0 R /XYZ 98.895 753.953 null] +/D [1488 0 R /XYZ 98.895 753.953 null] >> -% 1488 0 obj +% 1491 0 obj << -/D [1485 0 R /XYZ 99.895 496.698 null] +/D [1488 0 R /XYZ 99.895 496.698 null] >> -% 1489 0 obj +% 1492 0 obj << -/D [1485 0 R /XYZ 99.895 474.179 null] +/D [1488 0 R /XYZ 99.895 474.179 null] >> -% 1490 0 obj +% 1493 0 obj << -/D [1485 0 R /XYZ 99.895 430.343 null] +/D [1488 0 R /XYZ 99.895 430.343 null] >> -% 1484 0 obj +% 1487 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1494 0 obj +% 1497 0 obj << /Type /Page -/Contents 1495 0 R -/Resources 1493 0 R +/Contents 1498 0 R +/Resources 1496 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1477 0 R -/Annots [ 1491 0 R 1492 0 R ] ->> -% 1491 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 573.77 409.811 585.83] -/A << /S /GoTo /D (descdata) >> +/Parent 1480 0 R +/Annots [ 1494 0 R 1495 0 R ] >> endstream endobj -1503 0 obj +1506 0 obj << -/Length 3168 +/Length 3173 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.4)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.4)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_cdcpy\050desc_in,)-525(desc_out,)-525(info\051)]TJ +/F131 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_cdcpy\050desc_in,)-525(desc_out,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -18108,29 +18101,29 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 625.397 Td [(in)]TJ +/F75 9.9626 Tf 123.397 625.397 Td [(in)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -12.981 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 14.386 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -12.981 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 577.576 Td [(desc)]TJ ET q 1 0 0 1 333.945 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 577.576 Td [(type)]TJ +/F131 9.9626 Tf 337.084 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -18140,63 +18133,63 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 535.733 Td [(out)]TJ +/F75 9.9626 Tf 123.397 535.733 Td [(out)]TJ 0 g 0 G -/F62 9.9626 Tf 19.925 0 Td [(the)-250(communication)-250(descriptor)-250(copy)111(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 19.925 0 Td [(the)-250(communication)-250(descriptor)-250(copy)111(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 488.112 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 487.912 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 487.912 Td [(desc)]TJ ET q 1 0 0 1 333.945 488.112 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 487.912 Td [(type)]TJ +/F131 9.9626 Tf 337.084 487.912 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -329.728 Td [(77)]TJ + 142.357 -329.728 Td [(77)]TJ 0 g 0 G ET endstream endobj -1508 0 obj +1511 0 obj << -/Length 2167 +/Length 2173 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.5)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.5)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(cdfree)-250(\227)-250(Frees)-250(a)-250(communication)-250(descriptor)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(cdfree)-250(\227)-250(Frees)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdfree\050desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdfree\050desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -18206,110 +18199,110 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 625.397 Td [(a)]TJ +/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)-250(to)-250(be)-250(fr)18(eed.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)-250(to)-250(be)-250(fr)18(eed.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ ET q 1 0 0 1 384.755 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 577.576 Td [(type)]TJ +/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -397.474 Td [(78)]TJ + 142.356 -397.474 Td [(78)]TJ 0 g 0 G ET endstream endobj -1514 0 obj +1517 0 obj << -/Length 5710 +/Length 5921 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.6)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.6)]TJ 0.984 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.11 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(cdbldext)-190(\227)-190(Build)-190(an)-190(extended)-190(communication)-190(descrip-)]TJ -24.221 -13.948 Td [(tor)]TJ +/F75 11.9552 Tf 0.984 0 0 1 150.697 706.129 Tm [(cdbldext)-253(\227)-253(Build)-253(an)-253(extended)-253(communication)-253(descrip-)]TJ 1 0 0 1 126.795 692.181 Tm [(tor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -26.9 -19.693 Td [(call)-525(psb_cdbldext\050a,desc_a,nl,desc_out,)-525(info,)-525(extype\051)]TJ/F62 9.9626 Tf 14.944 -23.422 Td [(This)-379(subr)18(outine)-379(builds)-379(an)-379(extended)-379(communication)-379(descriptor)74(,)-411(based)-379(on)]TJ -14.944 -11.955 Td [(the)-428(input)-428(descriptor)]TJ/F67 9.9626 Tf 95.499 0 Td [(desc_a)]TJ/F62 9.9626 Tf 35.646 0 Td [(and)-428(on)-428(the)-428(stencil)-428(speci\002ed)-428(thr)18(ough)-428(the)-427(input)]TJ -131.145 -11.955 Td [(sparse)-250(matrix)]TJ/F67 9.9626 Tf 62.107 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F131 9.9626 Tf -26.9 -19.693 Td [(call)-525(psb_cdbldext\050a,desc_a,nl,desc_out,)-525(info,)-525(extype\051)]TJ/F84 9.9626 Tf 0.982 0 0 1 114.839 649.066 Tm [(This)-254(subr)19(outine)-254(builds)-254(an)-254(extended)-253(communication)-254(descriptor)75(,)-254(based)-253(on)-254(the)]TJ 1.019 0 0 1 99.895 637.111 Tm [(input)-244(descriptor)]TJ/F131 9.9626 Tf 1 0 0 1 175.054 637.111 Tm [(desc_a)]TJ/F84 9.9626 Tf 1.019 0 0 1 208.915 637.111 Tm [(and)-244(on)-244(the)-245(stencil)-244(speci\002ed)-244(thr)18(ough)-245(the)-244(input)-244(sparse)]TJ 1 0 0 1 99.895 625.156 Tm [(matrix)]TJ/F131 9.9626 Tf 31.492 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -67.337 -21.054 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -36.722 -21.054 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.429 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -21.429 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.43 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(A)-250(sparse)-250(matrix)-250(Scope:)]TJ/F59 9.9626 Tf 100.691 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -107.326 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(type.)]TJ +/F84 9.9626 Tf 9.574 0 Td [(A)-250(sparse)-250(matrix)-250(Scope:)]TJ/F75 9.9626 Tf 100.692 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -107.247 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(type.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.429 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -21.429 Td [(desc)]TJ ET q 1 0 0 1 120.408 504.147 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 503.948 Td [(a)]TJ +/F75 9.9626 Tf 123.397 503.948 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 456.326 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 456.127 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 456.127 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 456.326 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 456.127 Td [(type)]TJ +/F131 9.9626 Tf 347.544 456.127 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -21.43 Td [(nl)]TJ +/F75 9.9626 Tf -268.571 -21.43 Td [(nl)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(the)-250(number)-250(of)-250(additional)-250(layers)-250(desir)18(ed.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F60 9.9626 Tf 131.102 0 Td [(n)-25(l)]TJ/F91 10.3811 Tf 11.873 0 Td [(\025)]TJ/F62 9.9626 Tf 10.961 0 Td [(0.)]TJ +/F84 9.9626 Tf 14.386 0 Td [(the)-250(number)-250(of)-250(additional)-250(layers)-250(desir)18(ed.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F78 9.9626 Tf 131.102 0 Td [(n)-25(l)]TJ/F179 10.3811 Tf 11.873 0 Td [(\025)]TJ/F84 9.9626 Tf 10.961 0 Td [(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -178.843 -21.43 Td [(extype)]TJ +/F75 9.9626 Tf -178.843 -21.43 Td [(extype)]TJ 0 g 0 G -/F62 9.9626 Tf 34.869 0 Td [(the)-250(kind)-250(of)-250(estension)-250(r)18(equir)18(ed.)]TJ -9.962 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 40.677 0 Td [(.)]TJ -64.677 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-345(as:)-501(an)-345(integer)-346(value)]TJ/F67 9.9626 Tf 136.676 0 Td [(psb_ovt_xhal_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ/F67 9.9626 Tf 6.169 0 Td [(psb_ovt_asov_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)-369(default:)]TJ/F67 9.9626 Tf -278.833 -11.955 Td [(psb_ovt_xhal_)]TJ +/F84 9.9626 Tf 34.869 0 Td [(the)-250(kind)-250(of)-250(estension)-250(r)18(equir)18(ed.)]TJ -9.962 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 40.677 0 Td [(.)]TJ -64.368 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 317.626 Tm [(Speci\002ed)-317(as:)-447(an)-316(integer)-317(value)]TJ/F131 9.9626 Tf 1 0 0 1 262.503 317.626 Tm [(psb_ovt_xhal_)]TJ/F84 9.9626 Tf 1.02 0 0 1 330.497 317.626 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 336.438 317.626 Tm [(psb_ovt_asov_)]TJ/F84 9.9626 Tf 1.02 0 0 1 404.432 317.626 Tm [(,)-335(default:)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 305.671 Tm [(psb_ovt_xhal_)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -23.422 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -23.422 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.43 Td [(desc)]TJ @@ -18319,54 +18312,54 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 260.819 Td [(out)]TJ +/F75 9.9626 Tf 123.397 260.819 Td [(out)]TJ 0 g 0 G -/F62 9.9626 Tf 19.925 0 Td [(the)-250(extended)-250(communication)-250(descriptor)74(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 19.925 0 Td [(the)-250(extended)-250(communication)-250(descriptor)74(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 213.198 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 212.998 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 212.998 Td [(desc)]TJ ET q 1 0 0 1 333.945 213.198 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 212.998 Td [(type)]TJ +/F131 9.9626 Tf 337.084 212.998 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.429 Td [(info)]TJ +/F75 9.9626 Tf -258.11 -21.429 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -23.422 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -23.422 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(79)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(79)]TJ 0 g 0 G ET endstream endobj -1519 0 obj +1522 0 obj << -/Length 1484 +/Length 1751 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 163.158 706.129 Td [(1.)]TJ +/F84 9.9626 Tf 163.158 706.129 Td [(1.)]TJ 0 g 0 G - [-500(Specifying)]TJ/F67 9.9626 Tf 61.745 0 Td [(psb_ovt_xhal_)]TJ/F62 9.9626 Tf 70.881 0 Td [(for)-290(the)]TJ/F67 9.9626 Tf 32.282 0 Td [(extype)]TJ/F62 9.9626 Tf 34.269 0 Td [(ar)18(gument)-290(the)-289(user)-290(will)-290(obtain)]TJ -186.724 -11.955 Td [(a)-400(descriptor)-400(for)-400(a)-400(domain)-400(partition)-400(in)-400(which)-400(the)-400(additional)-400(layers)-400(ar)18(e)]TJ 0 -11.955 Td [(fetched)-222(as)-221(part)-222(of)-221(an)-222(\050extended\051)-221(halo;)-232(however)-221(the)-222(index-to-pr)18(ocess)-221(map-)]TJ 0 -11.956 Td [(ping)-250(is)-250(identical)-250(to)-250(that)-250(of)-250(the)-250(base)-250(descriptor;)]TJ + 0.98 0 0 1 175.611 706.129 Tm [(Specifying)]TJ/F131 9.9626 Tf 1 0 0 1 223.585 706.129 Tm [(psb_ovt_xhal_)]TJ/F84 9.9626 Tf 0.98 0 0 1 294.077 706.129 Tm [(for)-256(the)]TJ/F131 9.9626 Tf 1 0 0 1 325.05 706.129 Tm [(extype)]TJ/F84 9.9626 Tf 0.98 0 0 1 358.929 706.129 Tm [(ar)18(gument)-255(the)-256(user)-256(will)-255(obtain)-256(a)]TJ 0.98 0 0 1 175.611 694.174 Tm [(descriptor)-209(for)-209(a)-209(domain)-209(partition)-209(in)-209(which)-209(the)-209(additional)-209(layers)-210(ar)19(e)-209(fetched)]TJ 1.02 0 0 1 175.611 682.219 Tm [(as)-244(part)-244(of)-244(an)-244(\050extended\051)-244(halo;)-244(however)-244(the)-244(index-to-pr)18(ocess)-244(mapping)-244(is)]TJ 1 0 0 1 175.611 670.263 Tm [(identical)-250(to)-250(that)-250(of)-250(the)-250(base)-250(descriptor;)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Specifying)]TJ/F67 9.9626 Tf 61.745 0 Td [(psb_ovt_asov_)]TJ/F62 9.9626 Tf 70.881 0 Td [(for)-290(the)]TJ/F67 9.9626 Tf 32.282 0 Td [(extype)]TJ/F62 9.9626 Tf 34.269 0 Td [(ar)18(gument)-290(the)-289(user)-290(will)-290(obtain)]TJ -186.724 -11.955 Td [(a)-330(descriptor)-331(with)-330(an)-330(overlapped)-331(decomposition:)-470(the)-331(additional)-330(layer)-330(is)]TJ 0 -11.955 Td [(aggr)18(egated)-326(to)-326(the)-326(local)-326(subdomain)-326(\050and)-326(thus)-326(is)-325(an)-326(overlap\051,)-345(and)-326(a)-326(new)]TJ 0 -11.955 Td [(halo)-250(extending)-250(beyond)-250(the)-250(last)-250(additional)-250(layer)-250(is)-250(formed.)]TJ + 1.018 0 0 1 175.611 650.338 Tm [(Specifying)]TJ/F131 9.9626 Tf 1 0 0 1 225.351 650.338 Tm [(psb_ovt_asov_)]TJ/F84 9.9626 Tf 1.018 0 0 1 295.844 650.338 Tm [(for)-246(the)]TJ/F131 9.9626 Tf 1 0 0 1 327.83 650.338 Tm [(extype)]TJ/F84 9.9626 Tf 1.018 0 0 1 361.711 650.338 Tm [(ar)18(gument)-247(the)-246(user)-246(will)-247(obtain)]TJ 1.02 0 0 1 175.611 638.383 Tm [(a)-267(descriptor)-267(with)-268(an)-267(overlapped)-267(decomposition:)-348(the)-267(additional)-268(lay)1(er)-268(is)]TJ 1.02 0 0 1 175.611 626.428 Tm [(aggr)18(egated)-278(to)-278(the)-278(local)-278(subdomain)-278(\050and)-278(thus)-278(is)-278(an)-278(overlap\051,)-286(and)-278(a)-278(new)]TJ 1 0 0 1 175.611 614.473 Tm [(halo)-250(extending)-250(beyond)-250(the)-250(last)-250(additional)-250(layer)-250(is)-250(formed.)]TJ 0 g 0 G 141.968 -524.035 Td [(80)]TJ 0 g 0 G @@ -18374,31 +18367,31 @@ ET endstream endobj -1527 0 obj +1530 0 obj << -/Length 5699 +/Length 5941 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.7)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.7)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -19.277 Td [(call)-525(psb_spall\050a,)-525(desc_a,)-525(info)-525([,)-525(nnz,)-525(dupl,)-525(bldmode]\051)]TJ +/F131 9.9626 Tf -51.121 -19.277 Td [(call)-525(psb_spall\050a,)-525(desc_a,)-525(info)-525([,)-525(nnz,)-525(dupl,)-525(bldmode]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.403 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.403 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.571 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.571 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.572 Td [(desc)]TJ @@ -18408,70 +18401,70 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 623.306 Td [(a)]TJ +/F75 9.9626 Tf 123.397 623.306 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 575.684 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 575.485 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 575.485 Td [(desc)]TJ ET q 1 0 0 1 333.945 575.684 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 575.485 Td [(type)]TJ +/F131 9.9626 Tf 337.084 575.485 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.572 Td [(nnz)]TJ +/F75 9.9626 Tf -258.11 -20.572 Td [(nnz)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(An)-230(estimate)-230(of)-230(the)-230(number)-230(of)-231(nonzer)18(oes)-230(in)-230(the)-230(local)-230(part)-230(of)-230(the)-230(assembled)]TJ 2.77 -11.955 Td [(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 0.992 0 0 1 121.644 554.913 Tm [(An)-253(estimate)-253(of)-253(the)-254(number)-253(of)-253(nonzer)18(oes)-253(in)-253(the)-253(local)-253(part)-253(of)-254(the)-253(assembled)]TJ 1 0 0 1 124.802 542.958 Tm [(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.572 Td [(dupl)]TJ +/F75 9.9626 Tf -24.907 -20.572 Td [(dupl)]TJ 0 g 0 G -/F62 9.9626 Tf 26.561 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-243(as:)-306(integer)74(,)-244(possible)-243(values:)]TJ/F67 9.9626 Tf 164.941 0 Td [(psb_dupl_ovwrt_)]TJ/F62 9.9626 Tf 78.455 0 Td [(,)]TJ/F67 9.9626 Tf 4.923 0 Td [(psb_dupl_add_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf -316.314 -11.955 Td [(psb_dupl_err_)]TJ/F62 9.9626 Tf 67.994 0 Td [(.)]TJ +/F84 9.9626 Tf 26.561 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.006 0 0 1 124.802 426.745 Tm [(Speci\002ed)-248(as:)-308(inte)1(ger)73(,)-248(possible)-248(values:)]TJ/F131 9.9626 Tf 1 0 0 1 290.906 426.745 Tm [(psb_dupl_ovwrt_)]TJ/F84 9.9626 Tf 1.006 0 0 1 369.361 426.745 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 374.352 426.745 Tm [(psb_dupl_add_)]TJ/F84 9.9626 Tf 1.006 0 0 1 442.346 426.745 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 414.79 Tm [(psb_dupl_err_)]TJ/F84 9.9626 Tf 67.994 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -92.901 -20.572 Td [(bldmode)]TJ +/F75 9.9626 Tf -92.901 -20.572 Td [(bldmode)]TJ 0 g 0 G -/F62 9.9626 Tf 45.938 0 Td [(Whether)-372(to)-372(kee)1(p)-372(track)-372(of)-372(matrix)-372(entries)-371(that)-372(do)-372(not)-372(belong)-371(to)-372(the)]TJ -21.031 -11.955 Td [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)-190(value)]TJ/F67 9.9626 Tf 128.287 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 94.146 0 Td [(.)]TJ -331.543 -11.955 Td [(Default:)]TJ/F67 9.9626 Tf 38.515 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 145.335 394.218 Tm [(Whether)-327(to)-327(keep)-327(track)-327(of)-327(matrix)-327(entries)-327(that)-327(do)-327(not)-327(belong)-327(to)-327(the)]TJ 1 0 0 1 124.802 382.263 Tm [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 334.443 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F131 9.9626 Tf 1 0 0 1 250.731 334.443 Tm [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 355.338 334.443 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 359.791 334.443 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 453.937 334.443 Tm [(.)]TJ 1 0 0 1 124.802 322.487 Tm [(Default:)]TJ/F131 9.9626 Tf 38.515 0 Td [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 104.607 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -168.029 -22.402 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -168.029 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.572 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 231.892 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 231.692 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 231.692 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 231.892 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 231.692 Td [(type)]TJ +/F131 9.9626 Tf 347.544 231.692 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -20.571 Td [(info)]TJ +/F75 9.9626 Tf -268.571 -20.571 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -22.564 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -22.564 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -20.41 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -20.41 Td [(1.)]TJ 0 g 0 G [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(sparse)-250(matrix)-250(is)-250(in)-250(the)-250(build)-250(state.)]TJ 0 g 0 G @@ -18481,26 +18474,26 @@ ET endstream endobj -1532 0 obj +1535 0 obj << -/Length 1141 +/Length 1308 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 163.158 706.129 Td [(2.)]TJ +/F84 9.9626 Tf 163.158 706.129 Td [(2.)]TJ 0 g 0 G - [-500(The)-250(descriptor)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(assembled)-250(state.)]TJ + [-469(The)-250(descriptor)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(assembled)-250(state.)]TJ 0 g 0 G 0 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Pr)18(oviding)-219(a)-219(good)-219(estimate)-218(for)-219(the)-219(number)-219(of)-219(nonzer)18(oes)]TJ/F60 9.9626 Tf 255.761 0 Td [(n)-25(n)-25(z)]TJ/F62 9.9626 Tf 18.305 0 Td [(in)-219(the)-219(assem-)]TJ -261.613 -11.956 Td [(bled)-295(matri)1(x)-295(may)-294(substantially)-295(impr)18(ove)-294(performance)-295(in)-294(the)-295(matrix)-294(build)]TJ 0 -11.955 Td [(phase,)-370(as)-346(it)-346(will)-345(r)18(educe)-346(or)-346(eliminate)-346(the)-346(need)-346(for)-345(\050potentially)-346(multiple\051)]TJ 0 -11.955 Td [(data)-250(r)18(eallocations;)]TJ + 0.993 0 0 1 175.611 686.204 Tm [(Pr)18(oviding)-251(a)-250(good)-251(estimate)-250(for)-251(the)-251(number)-250(of)-251(nonzer)18(oes)]TJ/F78 9.9626 Tf 1 0 0 1 420.045 686.204 Tm [(n)-25(n)-25(z)]TJ/F84 9.9626 Tf 0.993 0 0 1 438.649 686.204 Tm [(in)-251(the)-250(assem-)]TJ 1.014 0 0 1 175.611 674.248 Tm [(bled)-245(matrix)-246(may)-245(substantially)-245(impr)17(ove)-245(performance)-245(in)-246(the)-245(matrix)-245(build)]TJ 1.02 0 0 1 175.313 662.293 Tm [(phase,)-315(as)-302(it)-301(will)-301(r)18(educe)-302(or)-301(eliminate)-301(the)-301(need)-302(for)-301(\050potentially)-301(multiple\051)]TJ 1 0 0 1 175.611 650.338 Tm [(data)-250(r)18(eallocations;)]TJ 0 g 0 G -12.453 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(Using)]TJ/F67 9.9626 Tf 41.798 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.28 0 Td [(is)-315(likel)1(y)-315(to)-315(cause)-314(a)-315(r)8(untime)-314(over)18(head)-315(at)-314(as-)]TJ -126.625 -11.955 Td [(sembly)-250(time;)]TJ + 1.02 0 0 1 175.611 630.413 Tm [(Using)]TJ/F131 9.9626 Tf 1 0 0 1 205.259 630.413 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 302.317 630.413 Tm [(is)-287(li)1(kely)-287(to)-287(cause)-286(a)-287(r)8(untime)-286(over)17(head)-286(at)-287(as-)]TJ 1 0 0 1 175.611 618.458 Tm [(sembly)-250(time;)]TJ 0 g 0 G 141.968 -528.02 Td [(82)]TJ 0 g 0 G @@ -18508,257 +18501,257 @@ ET endstream endobj -1540 0 obj +1543 0 obj << -/Length 5375 +/Length 5477 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.8)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.8)]TJ 0.994 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.309 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(spins)-233(\227)-233(Insert)-233(a)-233(set)-233(of)-234(coef)18(\002cients)-233(into)-233(a)-233(sparse)-233(matrix)]TJ +/F75 11.9552 Tf 0.994 0 0 1 150.896 706.129 Tm [(spins)-251(\227)-252(Insert)-251(a)-252(set)-251(of)-251(coef)18(\002cients)-252(into)-251(a)-252(sparse)-251(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -20.373 Td [(call)-525(psb_spins\050nz,)-525(ia,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 -11.956 Td [(call)-525(psb_spins\050nr,)-525(irw,)-525(irp,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ +/F131 9.9626 Tf 1 0 0 1 99.895 685.756 Tm [(call)-525(psb_spins\050nz,)-525(ia,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 -11.956 Td [(call)-525(psb_spins\050nr,)-525(irw,)-525(irp,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -24.099 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -24.099 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.835 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.835 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.834 Td [(nz)]TJ 0 g 0 G -/F62 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.834 Td [(nr)]TJ +/F75 9.9626 Tf -24.907 -22.834 Td [(nr)]TJ 0 g 0 G -/F62 9.9626 Tf 14.944 0 Td [(the)-250(number)-250(of)-250(r)18(ows)-250(to)-250(be)-250(inserted.)]TJ 9.963 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 14.944 0 Td [(the)-250(number)-250(of)-250(r)18(ows)-250(to)-250(be)-250(inserted.)]TJ 9.963 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.834 Td [(irw)]TJ +/F75 9.9626 Tf -24.907 -22.834 Td [(irw)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(the)-250(\002rst)-250(r)18(ow)-250(to)-250(be)-250(inserted.)]TJ 4.434 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 20.473 0 Td [(the)-250(\002rst)-250(r)18(ow)-250(to)-250(be)-250(inserted.)]TJ 4.434 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.834 Td [(ia)]TJ +/F75 9.9626 Tf -24.907 -22.834 Td [(ia)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(the)-250(r)18(ow)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F60 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.281 0 Td [(the)-250(r)18(ow)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F78 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -196.043 -22.834 Td [(irp)]TJ +/F75 9.9626 Tf -196.043 -22.834 Td [(irp)]TJ 0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(the)-250(r)18(ow)-250(pointers)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.645 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F60 9.9626 Tf 160.8 0 Td [(n)-15(r)]TJ/F93 10.3811 Tf 11.85 0 Td [(+)]TJ/F62 9.9626 Tf 10.131 0 Td [(1.)]TJ +/F84 9.9626 Tf 18.262 0 Td [(the)-250(r)18(ow)-250(pointers)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.645 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F78 9.9626 Tf 160.8 0 Td [(n)-15(r)]TJ/F181 10.3811 Tf 11.85 0 Td [(+)]TJ/F84 9.9626 Tf 10.131 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.688 -22.835 Td [(ja)]TJ +/F75 9.9626 Tf -207.688 -22.835 Td [(ja)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F60 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F78 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -196.043 -22.835 Td [(val)]TJ +/F75 9.9626 Tf -196.043 -22.835 Td [(val)]TJ 0 g 0 G -/F62 9.9626 Tf 18.82 0 Td [(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-315(as:)-439(an)-314(array)-315(of)-315(size)]TJ/F60 9.9626 Tf 131.853 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.337 0 Td [(.)-504(Must)-314(be)-315(of)-315(the)-314(same)-315(type)-315(and)-314(kind)-315(of)]TJ -142.19 -11.956 Td [(the)-250(coef)18(\002cients)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 157.901 0 Td [(a)]TJ/F62 9.9626 Tf 4.548 0 Td [(.)]TJ +/F84 9.9626 Tf 18.82 0 Td [(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 132.281 Tm [(Speci\002ed)-254(as:)-315(an)-253(array)-254(of)-254(size)]TJ/F78 9.9626 Tf 1 0 0 1 250.215 132.281 Tm [(n)-25(z)]TJ/F84 9.9626 Tf 0.983 0 0 1 260.551 132.281 Tm [(.)-315(Must)-254(be)-253(of)-254(the)-254(same)-253(type)-254(and)-254(kind)-253(of)-254(the)]TJ 1 0 0 1 124.802 120.326 Tm [(coef)18(\002cients)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 141.592 0 Td [(a)]TJ/F84 9.9626 Tf 4.548 0 Td [(.)]TJ 0 g 0 G - -20.481 -29.887 Td [(83)]TJ + -4.172 -29.888 Td [(83)]TJ 0 g 0 G ET endstream endobj -1546 0 obj +1549 0 obj << -/Length 6861 +/Length 7399 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(desc)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(desc)]TJ ET q 1 0 0 1 171.218 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 706.129 Td [(a)]TJ +/F75 9.9626 Tf 174.207 706.129 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.381 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 658.308 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 658.308 Td [(desc)]TJ ET q 1 0 0 1 352.944 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 658.308 Td [(type)]TJ +/F131 9.9626 Tf 356.083 658.308 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -33.398 Td [(local)]TJ +/F75 9.9626 Tf -226.299 -33.398 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(Whether)-207(the)-207(entries)-207(in)-207(the)-208(indices)-207(vectors)]TJ/F67 9.9626 Tf 181.487 0 Td [(ia)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf 4.64 0 Td [(ja)]TJ/F62 9.9626 Tf 12.524 0 Td [(ar)18(e)-207(alr)18(eady)-207(in)-207(local)-208(num-)]TJ -210.765 -11.956 Td [(bering.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F67 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F62 9.9626 Tf 36.613 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 176.767 624.91 Tm [(Whether)-378(the)-378(entries)-378(in)-377(the)-378(indices)-378(vectors)]TJ/F131 9.9626 Tf 1 0 0 1 374.028 624.91 Tm [(ia)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.489 624.91 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 391.206 624.91 Tm [(ja)]TJ/F84 9.9626 Tf 1.02 0 0 1 405.507 624.91 Tm [(ar)18(e)-378(alr)17(eady)-377(in)-378(local)]TJ 1 0 0 1 175.611 612.954 Tm [(numbering.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F131 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F84 9.9626 Tf 36.613 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -224.197 -23.056 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -224.197 -23.056 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.444 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(into)-250(which)-250(coef)18(\002cients)-250(will)-250(be)-250(inserted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(into)-250(which)-250(coef)18(\002cients)-250(will)-250(be)-250(inserted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 484.968 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 484.768 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 484.768 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 484.968 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 484.768 Td [(type)]TJ +/F131 9.9626 Tf 398.354 484.768 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -21.443 Td [(desc)]TJ +/F75 9.9626 Tf -268.57 -21.443 Td [(desc)]TJ ET q 1 0 0 1 171.218 463.524 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 463.325 Td [(a)]TJ +/F75 9.9626 Tf 174.207 463.325 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.381 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 415.704 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 415.504 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 415.504 Td [(desc)]TJ ET q 1 0 0 1 352.944 415.704 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 415.504 Td [(type)]TJ +/F131 9.9626 Tf 356.083 415.504 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -33.398 Td [(info)]TJ +/F75 9.9626 Tf -226.299 -33.398 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -23.436 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -23.436 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -21.064 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -21.064 Td [(1.)]TJ 0 g 0 G - [-500(On)-312(entry)-312(to)-312(this)-312(r)18(out)1(ine)-312(the)-312(descriptor)-312(may)-312(be)-312(in)-312(either)-312(the)-311(build)-312(or)-312(as-)]TJ 12.453 -11.955 Td [(sembled)-250(state.)]TJ + 1.02 0 0 1 175.611 289.785 Tm [(On)-386(entry)-386(to)-385(this)-386(r)18(outine)-386(the)-386(descriptor)-386(may)-386(be)-385(in)-386(either)-386(the)-386(build)-385(or)]TJ 1 0 0 1 175.611 277.83 Tm [(assembled)-250(state.)]TJ 0 g 0 G -12.453 -21.443 Td [(2.)]TJ 0 g 0 G - [-500(On)-314(entry)-315(to)-314(this)-315(r)18(ou)1(tine)-315(the)-314(sparse)-315(matrix)-314(may)-314(be)-315(in)-314(either)-314(the)-315(build)-314(or)]TJ 12.453 -11.955 Td [(update)-250(state.)]TJ + 1.02 0 0 1 175.611 256.387 Tm [(On)-271(entry)-271(to)-271(this)-271(r)18(outine)-271(the)-271(sparse)-271(matrix)-271(may)-271(be)-271(in)-271(either)-270(the)-271(build)-271(or)]TJ 1 0 0 1 175.611 244.432 Tm [(update)-250(state.)]TJ 0 g 0 G -12.453 -21.444 Td [(3.)]TJ 0 g 0 G - [-500(If)-263(the)-263(descriptor)-263(is)-262(in)-263(the)-263(build)-263(state,)-266(then)-263(the)-263(sparse)-263(matrix)-262(must)-263(also)-263(be)]TJ 12.453 -11.955 Td [(in)-212(the)-212(build)-213(state;)-224(the)-213(action)-212(of)-212(the)-212(r)18(outine)-212(is)-213(to)-212(\050implicitly\051)-212(call)]TJ/F67 9.9626 Tf 271.732 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf -271.732 -11.955 Td [(to)-259(add)-259(entries)-259(to)-259(the)-259(sparsity)-259(pattern;)-263(each)-259(sparse)-259(matrix)-259(entry)-259(implicitly)]TJ 0 -11.955 Td [(de\002nes)-288(a)-288(graph)-288(edge,)-297(that)-288(is)-288(passed)-288(to)-288(the)-288(descriptor)-288(r)18(outine)-288(for)-288(the)-288(ap-)]TJ 0 -11.955 Td [(pr)18(opriate)-250(pr)18(ocessing;)]TJ + 1.006 0 0 1 175.611 222.988 Tm [(If)-249(the)-250(descriptor)-249(is)-250(in)-249(the)-250(build)-249(state,)-250(then)-249(the)-250(sparse)-249(matrix)-249(must)-250(also)-249(be)]TJ 0.98 0 0 1 175.611 211.033 Tm [(in)-256(the)-256(build)-256(state;)-256(the)-256(action)-256(of)-256(the)-256(r)18(outine)-256(is)-256(to)-256(\050implicitly\051)-256(call)]TJ/F131 9.9626 Tf 1 0 0 1 447.343 211.033 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 1.005 0 0 1 175.611 199.078 Tm [(to)-248(add)-249(entries)-248(to)-249(the)-248(sparsity)-249(pattern;)-248(each)-249(sparse)-248(matrix)-248(entry)-249(implicitly)]TJ 1.02 0 0 1 175.611 187.123 Tm [(de\002nes)-377(a)-377(graph)-378(edge,)-410(that)-377(is)-377(passed)-377(to)-378(the)-377(descriptor)-377(r)18(outine)-378(for)-377(the)]TJ 1 0 0 1 175.611 175.168 Tm [(appr)18(opriate)-250(pr)18(ocessing;)]TJ 0 g 0 G -12.453 -21.444 Td [(4.)]TJ 0 g 0 G - [-500(The)-250(input)-250(data)-250(can)-250(be)-250(passed)-250(in)-250(either)-250(COO)-250(or)-250(CSR)-250(formats;)]TJ + [-469(The)-250(input)-250(data)-250(can)-250(be)-250(passed)-250(in)-250(either)-250(COO)-250(or)-250(CSR)-250(formats;)]TJ 0 g 0 G 0 -21.443 Td [(5.)]TJ 0 g 0 G - [-500(In)-307(COO)-307(format)-307(the)-306(coef)18(\002cients)-307(to)-307(be)-307(inserted)-307(ar)18(e)-307(r)18(epr)18(esented)-306(by)-307(the)-307(or)18(-)]TJ 12.453 -11.955 Td [(der)18(ed)-194(triples)]TJ/F60 9.9626 Tf 57.352 0 Td [(i)-47(a)]TJ/F93 10.3811 Tf 7.911 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)]TJ/F60 9.9626 Tf 4.624 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.84 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(v)-40(a)-25(l)]TJ/F93 10.3811 Tf 13.37 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)-205(for)]TJ/F60 9.9626 Tf 19.208 0 Td [(i)]TJ/F93 10.3811 Tf 5.856 0 Td [(=)]TJ/F62 9.9626 Tf 10.961 0 Td [(1,)-179(.)-192(.)-191(.)-180(,)]TJ/F60 9.9626 Tf 26.608 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.337 0 Td [(;)-212(these)-194(triples)-194(ar)18(e)-193(arbitrary;)]TJ + 1.02 0 0 1 175.611 132.281 Tm [(In)-268(COO)-268(format)-268(the)-268(coef)18(\002cients)-268(to)-268(be)-268(inserted)-268(ar)18(e)-268(r)17(epr)18(esented)-268(by)-268(the)-268(or)18(-)]TJ 0.985 0 0 1 175.611 120.326 Tm [(der)18(ed)-253(triples)]TJ/F78 9.9626 Tf 1 0 0 1 233.265 120.326 Tm [(i)-47(a)]TJ/F181 10.3811 Tf 7.91 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.985 0 0 1 252.617 120.326 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 257.204 120.326 Tm [(j)-40(a)]TJ/F181 10.3811 Tf 7.84 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 0.985 0 0 1 276.486 120.326 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 280.725 120.326 Tm [(v)-40(a)-25(l)]TJ/F181 10.3811 Tf 13.369 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.985 0 0 1 305.536 120.326 Tm [(,)-253(for)]TJ/F78 9.9626 Tf 1 0 0 1 325.512 120.326 Tm [(i)]TJ/F181 10.3811 Tf 5.856 0 Td [(=)]TJ/F84 9.9626 Tf 0.985 0 0 1 342.329 120.326 Tm [(1,)]TJ 1 0 0 1 351.474 120.326 Tm [(.)-192(.)-191(.)]TJ 0.985 0 0 1 364.55 120.326 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 368.788 120.326 Tm [(n)-25(z)]TJ/F84 9.9626 Tf 0.985 0 0 1 379.124 120.326 Tm [(;)-253(these)-253(triples)-253(ar)18(e)-253(arbitrary;)]TJ 0 g 0 G - -60.701 -29.888 Td [(84)]TJ + 1 0 0 1 317.579 90.438 Tm [(84)]TJ 0 g 0 G ET endstream endobj -1555 0 obj +1558 0 obj << -/Length 4535 +/Length 5282 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 112.349 706.129 Td [(6.)]TJ +/F84 9.9626 Tf 112.349 706.129 Td [(6.)]TJ 0 g 0 G - [-500(In)-272(CSR)-271(format)-272(the)-271(coef)18(\002cients)-272(to)-271(be)-272(inserted)-272(for)-271(each)-272(input)-271(r)18(ow)]TJ/F60 9.9626 Tf 294.598 0 Td [(i)]TJ/F93 10.3811 Tf 6.254 0 Td [(=)]TJ/F62 9.9626 Tf 11.36 0 Td [(1,)]TJ/F60 9.9626 Tf 9.257 0 Td [(n)-15(r)]TJ/F62 9.9626 Tf -309.016 -11.955 Td [(ar)18(e)-311(r)18(epr)18(esented)-312(by)-311(the)-311(or)18(der)18(ed)-312(triples)]TJ/F93 10.3811 Tf 171.689 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 5.251 0 Td [(+)]TJ/F60 9.9626 Tf 10.413 0 Td [(i)-22(r)-35(w)]TJ/F91 10.3811 Tf 16.818 0 Td [(\000)]TJ/F62 9.9626 Tf 10.358 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)]TJ/F60 9.9626 Tf 4.624 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.841 0 Td [(\050)]TJ/F60 9.9626 Tf 4.622 0 Td [(j)]TJ/F93 10.3811 Tf 3.019 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(v)-40(a)-25(l)]TJ/F93 10.3811 Tf 13.37 0 Td [(\050)]TJ/F60 9.9626 Tf 4.622 0 Td [(j)]TJ/F93 10.3811 Tf 3.019 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)-327(for)]TJ/F60 9.9626 Tf 22.013 0 Td [(j)]TJ/F93 10.3811 Tf 6.917 0 Td [(=)]TJ/F60 9.9626 Tf -310.555 -11.955 Td [(i)-22(r)-90(p)]TJ/F93 10.3811 Tf 12.991 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)-179(.)-192(.)-191(.)-180(,)]TJ/F60 9.9626 Tf 21.557 0 Td [(i)-22(r)-90(p)]TJ/F93 10.3811 Tf 12.991 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 5.301 0 Td [(+)]TJ/F62 9.9626 Tf 10.407 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F91 10.3811 Tf 6.486 0 Td [(\000)]TJ/F62 9.9626 Tf 10.407 0 Td [(1;)-362(these)-325(triples)-324(should)-325(belong)-325(to)-324(the)-325(curr)18(ent)-325(pr)18(o-)]TJ -100.947 -11.956 Td [(cess,)-276(i.e.)]TJ/F60 9.9626 Tf 39.307 0 Td [(i)]TJ/F93 10.3811 Tf 5.103 0 Td [(+)]TJ/F60 9.9626 Tf 10.263 0 Td [(i)-22(r)-35(w)]TJ/F91 10.3811 Tf 16.669 0 Td [(\000)]TJ/F62 9.9626 Tf 10.209 0 Td [(1)-271(should)-271(be)-271(one)-271(of)-271(the)-271(local)-270(indices,)-277(but)-271(ar)18(e)-270(otherwise)]TJ -81.551 -11.955 Td [(arbitrary;)]TJ + 1.02 0 0 1 124.802 706.129 Tm [(In)-389(CSR)-388(format)-389(the)-388(coef)18(\002cients)-389(to)-388(be)-389(inserted)-388(for)-389(each)-388(input)-389(r)18(ow)]TJ/F78 9.9626 Tf 1 0 0 1 426.857 706.129 Tm [(i)]TJ/F181 10.3811 Tf 8.555 0 Td [(=)]TJ/F84 9.9626 Tf 1.017 0 0 1 124.304 694.174 Tm [(1,)]TJ/F78 9.9626 Tf 1 0 0 1 133.688 694.174 Tm [(n)-15(r)]TJ/F84 9.9626 Tf 1.017 0 0 1 145.968 694.174 Tm [(ar)18(e)-246(r)17(epr)18(esented)-246(by)-246(the)-246(or)18(der)18(ed)-246(triples)]TJ/F181 10.3811 Tf 1 0 0 1 316.615 694.174 Tm [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 5.026 0 Td [(+)]TJ/F78 9.9626 Tf 10.187 0 Td [(i)-22(r)-35(w)]TJ/F179 10.3811 Tf 16.592 0 Td [(\000)]TJ/F84 9.9626 Tf 1.017 0 0 1 362.756 694.174 Tm [(1)]TJ/F181 10.3811 Tf 1 0 0 1 367.947 694.174 Tm [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 372.096 694.174 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 376.763 694.174 Tm [(j)-40(a)]TJ/F181 10.3811 Tf 7.84 0 Td [(\050)]TJ/F78 9.9626 Tf 4.623 0 Td [(j)]TJ/F181 10.3811 Tf 3.018 0 Td [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 396.394 694.174 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 400.712 694.174 Tm [(v)-40(a)-25(l)]TJ/F181 10.3811 Tf 13.37 0 Td [(\050)]TJ/F78 9.9626 Tf 4.622 0 Td [(j)]TJ/F181 10.3811 Tf 3.019 0 Td [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 425.872 694.174 Tm [(,)-246(for)]TJ/F78 9.9626 Tf 1 0 0 1 125.275 682.219 Tm [(j)]TJ/F181 10.3811 Tf 6.886 0 Td [(=)]TJ/F78 9.9626 Tf 12.115 0 Td [(i)-22(r)-90(p)]TJ/F181 10.3811 Tf 12.991 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 168.709 682.219 Tm [(,)]TJ 1 0 0 1 173.035 682.219 Tm [(.)-192(.)-191(.)]TJ 1.02 0 0 1 186.11 682.219 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 190.366 682.219 Tm [(i)-22(r)-90(p)]TJ/F181 10.3811 Tf 12.991 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 5.246 0 Td [(+)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.158 682.219 Tm [(1)]TJ/F181 10.3811 Tf 1 0 0 1 228.363 682.219 Tm [(\051)]TJ/F179 10.3811 Tf 6.431 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 245.145 682.219 Tm [(1;)-333(these)-303(triples)-304(should)-303(belong)-304(to)-303(the)-304(curr)18(ent)]TJ 0.98 0 0 1 124.503 670.263 Tm [(pr)18(ocess,)-219(i.e.)]TJ/F78 9.9626 Tf 1 0 0 1 176.65 670.263 Tm [(i)]TJ/F181 10.3811 Tf 4.622 0 Td [(+)]TJ/F78 9.9626 Tf 9.782 0 Td [(i)-22(r)-35(w)]TJ/F179 10.3811 Tf 16.188 0 Td [(\000)]TJ/F84 9.9626 Tf 0.98 0 0 1 216.97 670.263 Tm [(1)-210(should)-211(be)-210(one)-211(of)-210(the)-211(local)-210(indices,)-219(but)-211(ar)18(e)-210(otherwise)]TJ 1 0 0 1 124.802 658.308 Tm [(arbitrary;)]TJ 0 g 0 G -12.453 -19.925 Td [(7.)]TJ 0 g 0 G - [-500(Ther)18(e)-315(is)-314(no)-315(r)18(equir)18(ement)-314(that)-315(a)-315(given)-314(r)18(ow)-315(must)-315(be)-314(passed)-315(in)-315(its)-314(entir)18(ety)]TJ 12.453 -11.955 Td [(to)-298(a)-299(single)-298(call)-298(to)-299(thi)1(s)-299(r)18(outine:)-406(the)-299(buildup)-298(of)-298(a)-299(r)18(ow)-298(may)-298(be)-299(split)-298(into)-298(as)]TJ 0 -11.955 Td [(many)-250(calls)-250(as)-250(desir)18(ed)-250(\050even)-250(in)-250(the)-250(CSR)-250(format\051;)]TJ + 0.991 0 0 1 124.493 638.383 Tm [(Ther)18(e)-253(is)-253(no)-253(r)19(equir)18(ement)-253(that)-253(a)-253(given)-253(r)18(ow)-253(must)-253(be)-253(passed)-252(in)-253(its)-253(entir)18(ety)-253(to)]TJ 0.98 0 0 1 124.802 626.428 Tm [(a)-241(single)-241(call)-241(to)-241(this)-241(r)18(outine:)-309(the)-241(buildup)-242(of)-241(a)-241(r)19(ow)-241(may)-242(be)-241(split)-241(into)-241(as)-241(many)]TJ 1 0 0 1 124.802 614.473 Tm [(calls)-250(as)-250(desir)18(ed)-250(\050even)-250(in)-250(the)-250(CSR)-250(format\051;)]TJ 0 g 0 G -12.453 -19.926 Td [(8.)]TJ 0 g 0 G - [-500(Coef)18(\002cients)-288(fr)18(om)-289(dif)18(fer)18(ent)-288(r)18(ows)-288(may)-289(also)-288(be)-288(mixed)-289(up)-288(fr)18(eely)-288(in)-289(a)-288(single)]TJ 12.453 -11.955 Td [(call,)-250(accor)18(ding)-250(to)-250(the)-250(application)-250(needs;)]TJ + 1.016 0 0 1 124.802 594.547 Tm [(Coef)18(\002cients)-246(fr)17(om)-246(dif)18(fer)18(ent)-246(r)17(ows)-246(may)-246(also)-246(be)-247(mixed)-246(up)-246(fr)18(eely)-247(in)-246(a)-246(single)]TJ 1 0 0 1 124.802 582.592 Tm [(call,)-250(accor)18(ding)-250(to)-250(the)-250(application)-250(needs;)]TJ 0 g 0 G -12.453 -19.925 Td [(9.)]TJ 0 g 0 G - [-500(Coef)18(\002cients)-190(fr)18(om)-190(matrix)-190(r)18(ows)-190(not)-190(owned)-190(by)-190(the)-190(calling)-190(pr)18(ocess)-190(ar)18(e)-190(tr)18(eated)]TJ 12.453 -11.955 Td [(accor)18(ding)-254(to)-254(the)-253(value)-254(of)]TJ/F67 9.9626 Tf 111.539 0 Td [(bldmode)]TJ/F62 9.9626 Tf 39.141 0 Td [(speci\002ed)-254(at)-253(allocation)-254(time;)-256(if)]TJ/F67 9.9626 Tf 131.512 0 Td [(bldmode)]TJ/F62 9.9626 Tf -282.192 -11.956 Td [(was)-300(chosen)-300(as)]TJ/F67 9.9626 Tf 66.146 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.136 0 Td [(the)-300(library)-300(will)-300(keep)-300(track)-301(of)-300(them,)]TJ -163.282 -11.955 Td [(otherwise)-250(they)-250(ar)18(e)-250(silently)-250(ignor)18(ed;)]TJ + 0.98 0 0 1 124.802 562.667 Tm [(Coef)18(\002cients)-229(fr)18(om)-228(matrix)-229(r)18(ows)-229(not)-229(owned)-229(by)-229(the)-229(calling)-228(pr)18(ocess)-229(ar)18(e)-229(tr)19(eated)]TJ 1.002 0 0 1 124.802 550.712 Tm [(accor)18(ding)-249(to)-250(the)-249(value)-250(of)]TJ/F131 9.9626 Tf 1 0 0 1 236.35 550.712 Tm [(bldmode)]TJ/F84 9.9626 Tf 1.002 0 0 1 275.452 550.712 Tm [(speci\002ed)-249(at)-250(allocation)-249(time;)-250(if)]TJ/F131 9.9626 Tf 1 0 0 1 406.994 550.712 Tm [(bldmode)]TJ/F84 9.9626 Tf 1.02 0 0 1 124.384 538.757 Tm [(was)-272(chosen)-273(as)]TJ/F131 9.9626 Tf 1 0 0 1 191.003 538.757 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 287.916 538.757 Tm [(the)-272(library)-273(will)-272(keep)-272(track)-272(of)-273(them,)]TJ 1 0 0 1 124.802 526.801 Tm [(otherwise)-250(they)-250(ar)18(e)-250(silently)-250(ignor)18(ed;)]TJ 0 g 0 G -17.435 -19.925 Td [(10.)]TJ 0 g 0 G - [-500(If)-295(the)-294(descriptor)-295(is)-295(i)1(n)-295(the)-295(assembled)-294(state,)-306(then)-295(any)-294(entries)-295(in)-295(the)-294(sparse)]TJ 17.435 -11.955 Td [(matrix)-284(that)-284(would)-284(generate)-284(additional)-284(communication)-284(r)18(equir)18(ements)-284(ar)18(e)]TJ 0 -11.955 Td [(ignor)18(ed;)]TJ + 1.02 0 0 1 124.802 506.876 Tm [(If)-247(the)-247(descriptor)-247(is)-248(in)-247(the)-247(assembled)-247(state,)-248(then)-247(any)-247(entries)-247(in)-248(the)-247(sparse)]TJ 1.008 0 0 1 124.802 494.921 Tm [(matrix)-248(that)-247(would)-248(generate)-248(additional)-247(communication)-248(r)18(equir)18(ements)-248(ar)18(e)]TJ 1 0 0 1 124.802 482.966 Tm [(ignor)18(ed;)]TJ 0 g 0 G -17.435 -19.926 Td [(11.)]TJ 0 g 0 G - [-500(If)-268(the)-268(matrix)-268(is)-268(in)-268(the)-268(update)-268(state,)-273(any)-268(entries)-268(in)-268(positions)-268(that)-268(wer)18(e)-268(not)]TJ 17.435 -11.955 Td [(pr)18(esent)-250(in)-250(the)-250(original)-250(matrix)-250(ar)18(e)-250(ignor)18(ed.)]TJ + 1.009 0 0 1 124.802 463.04 Tm [(If)-248(the)-248(matrix)-248(is)-248(in)-248(the)-248(update)-248(state,)-248(any)-248(entries)-248(in)-248(positions)-248(that)-248(wer)18(e)-248(not)]TJ 1 0 0 1 124.503 451.085 Tm [(pr)18(esent)-250(in)-250(the)-250(original)-250(matrix)-250(ar)18(e)-250(ignor)18(ed.)]TJ 0 g 0 G - 141.968 -360.647 Td [(85)]TJ + 142.267 -360.647 Td [(85)]TJ 0 g 0 G ET endstream endobj -1569 0 obj +1572 0 obj << -/Length 6789 +/Length 6916 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.9)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.9)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(routine)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -19.204 Td [(call)-525(psb_spasb\050a,)-525(desc_a,)-525(info)-525([,)-525(afmt,)-525(upd,)-1050(mold]\051)]TJ +/F131 9.9626 Tf -51.12 -19.204 Td [(call)-525(psb_spasb\050a,)-525(desc_a,)-525(info)-525([,)-525(afmt,)-525(upd,)-1050(mold]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.289 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.289 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.421 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.421 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.421 Td [(desc)]TJ @@ -18768,161 +18761,161 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 623.794 Td [(a)]TJ +/F75 9.9626 Tf 174.207 623.794 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F62 9.9626 Tf 27.297 0 Td [(.)]TJ -59.098 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F84 9.9626 Tf 27.297 0 Td [(.)]TJ -59.098 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 576.173 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 575.974 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 575.974 Td [(desc)]TJ ET q 1 0 0 1 384.755 576.173 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 575.974 Td [(type)]TJ +/F131 9.9626 Tf 387.893 575.974 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.421 Td [(afmt)]TJ +/F75 9.9626 Tf -258.11 -20.421 Td [(afmt)]TJ 0 g 0 G -/F62 9.9626 Tf 26.012 0 Td [(the)-250(storage)-250(format)-250(for)-250(the)-250(sparse)-250(matrix.)]TJ -1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(array)-250(of)-250(characters.)-310(Defalt:)-310('CSR'.)]TJ +/F84 9.9626 Tf 26.012 0 Td [(the)-250(storage)-250(format)-250(for)-250(the)-250(sparse)-250(matrix.)]TJ -1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(array)-250(of)-250(characters.)-310(Defalt:)-310('CSR'.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.42 Td [(upd)]TJ +/F75 9.9626 Tf -24.906 -20.42 Td [(upd)]TJ 0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(Pr)18(ovide)-250(for)-250(updates)-250(to)-250(the)-250(matrix)-250(coef)18(\002cients.)]TJ 1.663 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integer)74(,)-250(possible)-250(values:)]TJ/F67 9.9626 Tf 165.219 0 Td [(psb_upd_srch_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_upd_perm_)]TJ +/F84 9.9626 Tf 23.243 0 Td [(Pr)18(ovide)-250(for)-250(updates)-250(to)-250(the)-250(matrix)-250(coef)18(\002cients.)]TJ 1.663 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integer)74(,)-250(possible)-250(values:)]TJ/F131 9.9626 Tf 165.219 0 Td [(psb_upd_srch_)]TJ/F84 9.9626 Tf 67.994 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_upd_perm_)]TJ 0 g 0 G -/F59 9.9626 Tf -263.1 -20.421 Td [(mold)]TJ +/F75 9.9626 Tf -263.1 -20.421 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F67 9.9626 Tf 201.393 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -3.567 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ ET q 1 0 0 1 393.323 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 396.461 371.249 Td [(T)]TJ +/F131 9.9626 Tf 396.461 371.249 Td [(T)]TJ ET q 1 0 0 1 402.319 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 405.457 371.249 Td [(base)]TJ +/F131 9.9626 Tf 405.457 371.249 Td [(base)]TJ ET q 1 0 0 1 427.006 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 430.144 371.249 Td [(sparse)]TJ +/F131 9.9626 Tf 430.144 371.249 Td [(sparse)]TJ ET q 1 0 0 1 462.154 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 465.292 371.249 Td [(mat)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ +/F131 9.9626 Tf 465.292 371.249 Td [(mat)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -330.278 -22.289 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -330.278 -22.289 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.421 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 280.918 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 280.719 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 280.719 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 280.918 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 280.719 Td [(type)]TJ +/F131 9.9626 Tf 398.354 280.719 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -20.421 Td [(desc)]TJ +/F75 9.9626 Tf -268.57 -20.421 Td [(desc)]TJ ET q 1 0 0 1 171.218 260.497 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 260.298 Td [(a)]TJ +/F75 9.9626 Tf 174.207 260.298 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F62 9.9626 Tf 27.297 0 Td [(.)]TJ -59.098 -11.956 Td [(Speci\002ed)-290(as:)-389(a)-290(str)8(uctur)18(ed)-290(data)-289(of)-290(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F84 9.9626 Tf 27.297 0 Td [(.)]TJ 1.02 0 0 1 175.611 212.477 Tm [(Speci\002ed)-253(as:)-320(a)-253(str)8(uctur)17(ed)-253(data)-253(of)-253(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 171.305 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 347.411 212.477 Tm [(psb)]TJ ET q -1 0 0 1 363.235 212.677 cm +1 0 0 1 363.729 212.677 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 366.373 212.477 Td [(desc)]TJ +/F131 9.9626 Tf 366.868 212.477 Td [(desc)]TJ ET q -1 0 0 1 387.922 212.677 cm +1 0 0 1 388.417 212.677 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 391.06 212.477 Td [(type)]TJ +/F131 9.9626 Tf 391.555 212.477 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)-429(If)-290(the)-290(matrix)-289(was)]TJ -236.371 -11.955 Td [(allocated)-209(with)]TJ/F67 9.9626 Tf 64.153 0 Td [(bldmode=psb_matbld_remote_)]TJ/F62 9.9626 Tf 135.988 0 Td [(,)-217(then)-210(the)-209(descriptor)-209(will)-209(be)]TJ -200.141 -11.955 Td [(r)18(eassembled.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 412.476 212.477 Tm [(.)-328(If)-253(the)-253(matrix)-253(was)]TJ 0.984 0 0 1 175.611 200.522 Tm [(allocated)-253(with)]TJ/F131 9.9626 Tf 1 0 0 1 239.595 200.522 Tm [(bldmode=psb_matbld_remote_)]TJ/F84 9.9626 Tf 0.984 0 0 1 375.584 200.522 Tm [(,)-253(then)-253(the)-253(descriptor)-253(will)-253(be)]TJ 1 0 0 1 175.611 188.567 Tm [(r)18(eassembled.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -29.888 Td [(86)]TJ + 142.356 -29.888 Td [(86)]TJ 0 g 0 G ET endstream endobj -1573 0 obj +1576 0 obj << -/Length 3146 +/Length 3492 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(On)-226(entry)-227(to)-226(this)-227(r)18(outine)-226(the)-227(descriptor)-226(must)-227(be)-226(in)-227(the)-226(assembled)-227(state,)-231(i.e.)]TJ/F67 9.9626 Tf 12.453 -11.956 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ + 0.996 0 0 1 124.802 686.204 Tm [(On)-250(entry)-251(to)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-251(must)-250(be)-250(in)-250(the)-251(assembled)-250(state,)-250(i.e.)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 674.248 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ 0 g 0 G -62.017 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)-250(sparse)-250(matrix)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(update)-250(state;)]TJ + [-469(The)-250(sparse)-250(matrix)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(update)-250(state;)]TJ 0 g 0 G 0 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Duplicate)-421(entries)-422(ar)18(e)-421(detected)-421(and)-422(handled)-421(in)-421(both)-421(build)-422(and)-421(update)]TJ 12.453 -11.955 Td [(state,)-244(wit)1(h)-242(the)-242(exception)-242(of)-242(the)-242(err)18(or)-242(action)-242(that)-242(is)-242(only)-241(taken)-242(in)-242(the)-242(build)]TJ 0 -11.955 Td [(state,)-250(i.e.)-310(on)-250(the)-250(\002rst)-250(assembly;)]TJ + 0.98 0 0 1 124.802 634.398 Tm [(Duplicate)-244(entries)-245(ar)18(e)-244(detected)-244(and)-245(handled)-244(in)-245(both)-244(build)-245(and)-244(update)-245(state,)]TJ 1.002 0 0 1 124.384 622.443 Tm [(with)-249(the)-250(exception)-249(of)-249(the)-250(err)18(or)-249(action)-249(that)-250(is)-249(only)-249(taken)-250(in)-249(the)-250(build)-249(state,)]TJ 1 0 0 1 124.802 610.488 Tm [(i.e.)-310(on)-250(the)-250(\002rst)-250(assembly;)]TJ 0 g 0 G -12.453 -19.926 Td [(4.)]TJ 0 g 0 G - [-500(If)-190(the)-190(update)-190(choice)-190(is)]TJ/F67 9.9626 Tf 108.372 0 Td [(psb_upd_perm_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)-202(then)-190(subsequent)-190(calls)-190(to)]TJ/F67 9.9626 Tf 109.946 0 Td [(psb_spins)]TJ/F62 9.9626 Tf -273.86 -11.955 Td [(to)-309(update)-309(the)-308(matrix)-309(must)-309(be)-309(arranged)-309(in)-308(such)-309(a)-309(way)-309(as)-309(to)-308(pr)18(oduce)-309(ex-)]TJ 0 -11.955 Td [(actly)-319(the)-320(same)-319(sequence)-320(of)-319(coef)18(\002cient)-319(values)-320(as)-319(encounter)18(ed)-319(at)-320(the)-319(\002rst)]TJ 0 -11.955 Td [(assembly;)]TJ + 0.98 0 0 1 124.802 590.562 Tm [(If)-211(the)-210(update)-211(choice)-211(is)]TJ/F131 9.9626 Tf 1 0 0 1 219.812 590.562 Tm [(psb_upd_perm_)]TJ/F84 9.9626 Tf 0.98 0 0 1 287.807 590.562 Tm [(,)-220(then)-210(subsequent)-211(calls)-210(to)]TJ/F131 9.9626 Tf 1 0 0 1 396.533 590.562 Tm [(psb_spins)]TJ/F84 9.9626 Tf 1.02 0 0 1 124.802 578.607 Tm [(to)-386(update)-387(the)-386(matrix)-387(must)-386(be)-386(arranged)-387(in)-386(such)-387(a)-386(way)-386(as)-387(to)-386(pr)17(oduce)]TJ 0.992 0 0 1 124.802 566.652 Tm [(exactly)-252(the)-253(same)-252(sequence)-253(of)-252(coef)18(\002cient)-252(values)-253(as)-252(encounter)18(ed)-252(at)-253(the)-252(\002rst)]TJ 1 0 0 1 124.802 554.697 Tm [(assembly;)]TJ 0 g 0 G -12.453 -19.926 Td [(5.)]TJ 0 g 0 G - [-500(The)-250(output)-250(storage)-250(format)-250(need)-250(not)-250(be)-250(the)-250(same)-250(on)-250(all)-250(pr)18(ocesses;)]TJ + [-469(The)-250(output)-250(storage)-250(format)-250(need)-250(not)-250(be)-250(the)-250(same)-250(on)-250(all)-250(pr)18(ocesses;)]TJ 0 g 0 G 0 -19.925 Td [(6.)]TJ 0 g 0 G @@ -18930,7 +18923,7 @@ BT 0 g 0 G -12.453 -19.925 Td [(7.)]TJ 0 g 0 G - [-500(If)-431(the)]TJ/F67 9.9626 Tf 41.543 0 Td [(bldmode=psb_matbld_remote_)]TJ/F62 9.9626 Tf 140.288 0 Td [(value)-431(was)-432(speci\002ed)-431(at)-432(allocation)]TJ -169.378 -11.955 Td [(time,)-278(contributions)-272(de\002ned)-272(on)-272(the)-273(curr)18(ent)-272(pr)18(ocess)-272(but)-272(belonging)-273(to)-272(a)-272(r)18(e-)]TJ 0 -11.956 Td [(mote)-267(pr)18(ocess)-266(will)-267(be)-267(handled)-267(accor)18(dingly)111(.)-360(This)-267(is)-266(most)-267(likely)-267(to)-266(occur)-267(in)]TJ 0 -11.955 Td [(\002nite)-288(element)-288(applications,)-297(with)]TJ/F67 9.9626 Tf 145.88 0 Td [(dupl=psb_dupl_add_)]TJ/F62 9.9626 Tf 94.147 0 Td [(;)-307(it)-288(is)-287(necessary)-288(to)]TJ -240.027 -11.955 Td [(check)-236(for)-235(possible)-236(updates)-236(needed)-235(in)-236(the)-236(descriptor)74(,)-238(hence)-236(ther)18(e)-236(will)-235(be)-236(a)]TJ 0 -11.955 Td [(r)8(untime)-250(over)18(head.)]TJ + 1.02 0 0 1 124.802 482.966 Tm [(If)-380(the)]TJ/F131 9.9626 Tf 1 0 0 1 153.429 482.966 Tm [(bldmode=psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 293.28 482.966 Tm [(value)-380(was)-380(speci\002ed)-380(at)-380(allocation)]TJ 1.02 0 0 1 124.802 471.011 Tm [(time,)-380(contributions)-354(de\002ned)-353(on)-354(the)-353(curr)18(ent)-354(pr)18(ocess)-353(but)-354(belonging)-353(to)-354(a)]TJ 0.98 0 0 1 124.802 459.055 Tm [(r)18(emote)-252(pr)18(ocess)-253(will)-252(be)-253(handled)-252(accor)18(dingly)113(.)-315(This)-253(is)-253(most)-252(likely)-253(to)-253(occur)-252(in)]TJ 1.016 0 0 1 124.802 447.1 Tm [(\002nite)-247(element)-247(applications,)-247(with)]TJ/F131 9.9626 Tf 1 0 0 1 271.266 447.1 Tm [(dupl=psb_dupl_add_)]TJ/F84 9.9626 Tf 1.016 0 0 1 365.412 447.1 Tm [(;)-247(it)-247(is)-247(necessary)-247(to)]TJ 0.994 0 0 1 124.802 435.145 Tm [(check)-252(for)-252(possible)-252(updates)-252(needed)-252(in)-252(the)-252(descriptor)74(,)-252(hence)-252(ther)18(e)-252(will)-252(be)-252(a)]TJ 1 0 0 1 124.802 423.19 Tm [(r)8(untime)-250(over)18(head.)]TJ 0 g 0 G 141.968 -332.752 Td [(87)]TJ 0 g 0 G @@ -18938,187 +18931,187 @@ ET endstream endobj -1586 0 obj +1589 0 obj << -/Length 2987 +/Length 2995 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.10)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.10)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(spfree)-250(\227)-250(Frees)-250(a)-250(sparse)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(spfree)-250(\227)-250(Frees)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_spfree\050a,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_spfree\050a,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf -23.999 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.69 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.137 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 577.576 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 577.576 Td [(type)]TJ +/F131 9.9626 Tf 398.354 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ ET q 1 0 0 1 171.218 557.85 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 557.651 Td [(a)]TJ +/F75 9.9626 Tf 174.207 557.651 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 509.83 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 509.83 Td [(desc)]TJ ET q 1 0 0 1 384.755 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 509.83 Td [(type)]TJ +/F131 9.9626 Tf 387.893 509.83 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -329.728 Td [(88)]TJ + 142.356 -329.728 Td [(88)]TJ 0 g 0 G ET endstream endobj -1592 0 obj +1595 0 obj << -/Length 3858 +/Length 3920 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.11)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.11)]TJ 1.009 0 0 1 132.772 706.129 Tm [(psb)]TJ ET q -1 0 0 1 153.407 706.328 cm +1 0 0 1 153.586 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(sprn)-254(\227)-255(Reinit)-254(sparse)-255(matrix)-254(structure)-254(for)-255(psblas)-254(rou-)]TJ -24.221 -13.948 Td [(tines.)]TJ +/F75 11.9552 Tf 1.009 0 0 1 157.172 706.129 Tm [(sprn)-246(\227)-247(Reinit)-246(sparse)-246(matrix)-247(structure)-246(for)-246(psblas)-247(rou-)]TJ 1 0 0 1 132.772 692.181 Tm [(tines.)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -32.877 -18.964 Td [(call)-525(psb_sprn\050a,)-525(decsc_a,)-525(info,)-525(clear\051)]TJ +/F131 9.9626 Tf -32.877 -18.964 Td [(call)-525(psb_sprn\050a,)-525(decsc_a,)-525(info,)-525(clear\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.917 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.917 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.926 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.926 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(r)18(einitialized.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(r)18(einitialized.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 563.828 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 563.628 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 563.628 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 563.828 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 563.628 Td [(type)]TJ +/F131 9.9626 Tf 347.544 563.628 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -268.571 -19.925 Td [(desc)]TJ ET q 1 0 0 1 120.408 543.902 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 543.703 Td [(a)]TJ +/F75 9.9626 Tf 123.397 543.703 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 496.082 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 495.882 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 495.882 Td [(desc)]TJ ET q 1 0 0 1 333.945 496.082 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 495.882 Td [(type)]TJ +/F131 9.9626 Tf 337.084 495.882 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(clear)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(clear)]TJ 0 g 0 G -/F62 9.9626 Tf 26.561 0 Td [(Choose)-250(whether)-250(to)-250(zer)18(o)-250(out)-250(matrix)-250(coef)18(\002cients)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)-310(tr)8(ue.)]TJ +/F84 9.9626 Tf 26.561 0 Td [(Choose)-250(whether)-250(to)-250(zer)18(o)-250(out)-250(matrix)-250(coef)18(\002cients)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)-310(tr)8(ue.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.917 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.917 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(sparse)-250(matrix)-250(is)-250(in)-250(the)-250(update)-250(state.)]TJ 0 g 0 G @@ -19128,31 +19121,31 @@ ET endstream endobj -1599 0 obj +1602 0 obj << -/Length 6166 +/Length 6526 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.12)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.12)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geall\050x,)-525(desc_a,)-525(info[,)-525(dupl,)-525(bldmode,)-525(n,)-525(lb]\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geall\050x,)-525(desc_a,)-525(info[,)-525(dupl,)-525(bldmode,)-525(n,)-525(lb]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.627 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.627 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.01 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.01 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.009 Td [(desc)]TJ @@ -19162,75 +19155,75 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 629.519 Td [(a)]TJ +/F75 9.9626 Tf 174.207 629.519 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 581.898 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 581.699 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 581.699 Td [(desc)]TJ ET q 1 0 0 1 352.944 581.898 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 581.699 Td [(type)]TJ +/F131 9.9626 Tf 356.083 581.699 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -30.965 Td [(n)]TJ +/F75 9.9626 Tf -226.299 -30.965 Td [(n)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(the)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-297(as:)-404(Integer)-297(scalar)74(,)-309(default)-297(1.)-450(It)-297(is)-297(not)-297(a)-297(valid)-297(ar)18(gument)-297(if)]TJ/F60 9.9626 Tf 295.578 0 Td [(x)]TJ/F62 9.9626 Tf 8.164 0 Td [(is)-297(a)]TJ -303.742 -11.956 Td [(rank-1)-250(array)111(.)]TJ +/F84 9.9626 Tf 10.759 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(the)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 502.914 Tm [(Speci\002ed)-262(as:)-339(Integer)-262(scalar)72(,)-266(default)-262(1.)-356(It)-262(is)-263(not)-262(a)-263(val)1(id)-263(ar)18(gument)-263(i)1(f)]TJ/F78 9.9626 Tf 1 0 0 1 471.532 502.914 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.403 502.914 Tm [(is)-262(a)]TJ 1 0 0 1 175.611 490.959 Tm [(rank-1)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.009 Td [(lb)]TJ +/F75 9.9626 Tf -24.906 -19.01 Td [(lb)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(The)-237(lower)-238(bound)-237(for)-238(the)-237(column)-238(index)-237(range)-237(of)-238(the)-237(dense)-238(matrix)-237(to)-238(be)-237(allo-)]TJ 10.52 -11.955 Td [(cated.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-297(as:)-404(Integer)-297(scalar)74(,)-309(default)-297(1.)-450(It)-297(is)-297(not)-297(a)-297(valid)-297(ar)18(gument)-297(if)]TJ/F60 9.9626 Tf 295.578 0 Td [(x)]TJ/F62 9.9626 Tf 8.164 0 Td [(is)-297(a)]TJ -303.742 -11.955 Td [(rank-1)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 164.782 471.949 Tm [(The)-359(lower)-359(bound)-359(for)-359(the)-359(column)-359(index)-359(range)-359(of)-359(the)-359(dense)-359(matrix)-359(to)-359(be)]TJ 1 0 0 1 175.611 459.994 Tm [(allocated.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 412.174 Tm [(Speci\002ed)-262(as:)-339(Integer)-262(scalar)72(,)-266(default)-262(1.)-356(It)-262(is)-263(not)-262(a)-263(val)1(id)-263(ar)18(gument)-263(i)1(f)]TJ/F78 9.9626 Tf 1 0 0 1 471.532 412.174 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.403 412.174 Tm [(is)-262(a)]TJ 1 0 0 1 175.611 400.218 Tm [(rank-1)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.009 Td [(dupl)]TJ +/F75 9.9626 Tf -24.906 -19.009 Td [(dupl)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-243(as:)-306(integer)74(,)-244(possible)-243(values:)]TJ/F67 9.9626 Tf 164.942 0 Td [(psb_dupl_ovwrt_)]TJ/F62 9.9626 Tf 78.455 0 Td [(,)]TJ/F67 9.9626 Tf 4.923 0 Td [(psb_dupl_add_)]TJ/F62 9.9626 Tf 67.994 0 Td [(;)]TJ/F67 9.9626 Tf -316.314 -11.955 Td [(psb_dupl_err_)]TJ/F62 9.9626 Tf 70.485 0 Td [(has)-250(no)-250(ef)18(fect.)]TJ +/F84 9.9626 Tf 26.56 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.006 0 0 1 175.611 333.389 Tm [(Speci\002ed)-248(as:)-308(integer)74(,)-248(possible)-248(values:)]TJ/F131 9.9626 Tf 1 0 0 1 341.716 333.389 Tm [(psb_dupl_ovwrt_)]TJ/F84 9.9626 Tf 1.006 0 0 1 420.171 333.389 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 425.161 333.389 Tm [(psb_dupl_add_)]TJ/F84 9.9626 Tf 1.006 0 0 1 493.156 333.389 Tm [(;)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 321.433 Tm [(psb_dupl_err_)]TJ/F84 9.9626 Tf 70.486 0 Td [(has)-250(no)-250(ef)18(fect.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.391 -19.009 Td [(bldmode)]TJ +/F75 9.9626 Tf -95.392 -19.009 Td [(bldmode)]TJ 0 g 0 G -/F62 9.9626 Tf 45.937 0 Td [(Whether)-372(to)-372(keep)-371(track)-372(of)-372(matrix)-372(entries)-371(that)-372(do)-372(not)-372(belong)-371(to)-372(the)]TJ -21.031 -11.955 Td [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)-190(value)]TJ/F67 9.9626 Tf 128.288 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 94.146 0 Td [(.)]TJ -331.544 -11.955 Td [(Default:)]TJ/F67 9.9626 Tf 38.515 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 196.144 302.424 Tm [(Whether)-327(to)-327(keep)-327(track)-327(of)-327(matrix)-327(entries)-327(that)-327(do)-327(not)-327(belong)-327(to)-327(the)]TJ 1 0 0 1 175.611 290.469 Tm [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 242.648 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F131 9.9626 Tf 1 0 0 1 301.54 242.648 Tm [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 406.147 242.648 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 410.601 242.648 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 504.747 242.648 Tm [(.)]TJ 1 0 0 1 175.611 230.693 Tm [(Default:)]TJ/F131 9.9626 Tf 38.516 0 Td [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 104.606 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -168.028 -19.627 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -168.028 -19.627 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.009 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.943 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-273(as:)-357(a)-273(rank)-274(one)-273(or)-274(two)-273(array)-273(with)-274(the)-273(ALLOCA)74(T)74(ABLE)-273(attribute)]TJ 0 -11.955 Td [(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 15.252 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 1.01 0 0 1 175.611 144.236 Tm [(Speci\002ed)-247(as:)-306(a)-247(rank)-246(one)-247(or)-246(two)-247(array)-246(with)-247(the)-246(ALLOCA)73(T)73(ABLE)-246(attribute)]TJ 1 0 0 1 175.611 132.281 Tm [(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 86.634 0 Td [(psb)]TJ +/F131 9.9626 Tf 86.635 0 Td [(psb)]TJ ET q 1 0 0 1 278.564 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 281.702 132.281 Td [(T)]TJ +/F131 9.9626 Tf 281.702 132.281 Td [(T)]TJ ET q 1 0 0 1 287.56 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 290.699 132.281 Td [(vect)]TJ +/F131 9.9626 Tf 290.699 132.281 Td [(vect)]TJ ET q 1 0 0 1 312.247 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 315.386 132.281 Td [(type)]TJ +/F131 9.9626 Tf 315.386 132.281 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -18.728 -41.843 Td [(90)]TJ 0 g 0 G @@ -19238,25 +19231,33 @@ ET endstream endobj -1498 0 obj +1501 0 obj << /Type /ObjStm /N 100 -/First 977 -/Length 10298 ->> -stream -1492 0 1496 146 320 205 1497 263 1493 322 1502 416 1499 564 1500 709 1504 856 324 914 -1501 971 1507 1065 1505 1204 1509 1349 328 1408 1506 1466 1513 1560 1510 1708 1511 1853 1515 2000 -332 2058 1512 2115 1518 2235 1520 2353 1521 2412 1522 2471 1517 2530 1526 2611 1523 2759 1524 2906 -1528 3051 336 3109 1529 3166 1525 3224 1531 3318 1533 3436 1534 3495 1535 3554 1536 3613 1530 3672 -1539 3766 1541 3884 340 3942 1538 3999 1545 4119 1537 4276 1542 4419 1543 4564 1547 4707 1548 4766 -1549 4824 1550 4883 1551 4942 1552 5001 1544 5060 1554 5180 1556 5298 1557 5356 1558 5414 1559 5472 -1560 5530 1561 5588 1562 5646 1553 5704 1568 5824 1564 5981 1565 6128 1566 6273 1570 6419 344 6478 -1567 6536 1572 6630 1574 6748 1575 6806 1576 6864 1577 6922 1578 6980 1579 7038 1580 7096 1581 7154 -1571 7212 1585 7306 1582 7454 1583 7597 1587 7744 348 7803 1584 7861 1591 7955 1588 8103 1589 8248 -1593 8395 352 8453 1594 8510 1590 8568 1598 8662 1595 8810 1596 8953 1600 9097 356 9156 1597 9214 -% 1492 0 obj +/First 979 +/Length 10358 +>> +stream +1494 0 1495 145 1499 291 320 350 1500 408 1496 467 1505 562 1502 710 1503 855 1507 1002 +324 1060 1504 1117 1510 1212 1508 1351 1512 1496 328 1555 1509 1613 1516 1708 1513 1856 1514 2001 +1518 2148 332 2206 1515 2263 1521 2385 1523 2503 1524 2562 1525 2621 1520 2680 1529 2762 1526 2910 +1527 3057 1531 3202 336 3260 1532 3317 1528 3375 1534 3470 1536 3588 1537 3647 1538 3706 1539 3765 +1533 3824 1542 3919 1544 4037 340 4095 1541 4152 1548 4274 1540 4431 1545 4574 1546 4719 1550 4862 +1551 4921 1552 4979 1553 5038 1554 5097 1555 5156 1547 5215 1557 5337 1559 5455 1560 5513 1561 5571 +1562 5629 1563 5687 1564 5745 1565 5803 1556 5861 1571 5984 1567 6141 1568 6288 1569 6433 1573 6580 +344 6639 1570 6697 1575 6792 1577 6910 1578 6968 1579 7026 1580 7084 1581 7142 1582 7200 1583 7258 +1584 7316 1574 7374 1588 7469 1585 7617 1586 7760 1590 7907 348 7966 1587 8024 1594 8119 1591 8267 +1592 8412 1596 8559 352 8617 1597 8674 1593 8732 1601 8827 1598 8975 1599 9118 1603 9262 356 9321 +% 1494 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 573.77 409.811 585.83] +/A << /S /GoTo /D (descdata) >> +>> +% 1495 0 obj << /Type /Annot /Subtype /Link @@ -19264,33 +19265,33 @@ stream /Rect [342.753 416.361 409.811 428.42] /A << /S /GoTo /D (descdata) >> >> -% 1496 0 obj +% 1499 0 obj << -/D [1494 0 R /XYZ 149.705 753.953 null] +/D [1497 0 R /XYZ 149.705 753.953 null] >> % 320 0 obj << -/D [1494 0 R /XYZ 150.705 716.092 null] +/D [1497 0 R /XYZ 150.705 716.092 null] >> -% 1497 0 obj +% 1500 0 obj << -/D [1494 0 R /XYZ 150.705 326.302 null] +/D [1497 0 R /XYZ 150.705 326.302 null] >> -% 1493 0 obj +% 1496 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1502 0 obj +% 1505 0 obj << /Type /Page -/Contents 1503 0 R -/Resources 1501 0 R +/Contents 1506 0 R +/Resources 1504 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1477 0 R -/Annots [ 1499 0 R 1500 0 R ] +/Parent 1480 0 R +/Annots [ 1502 0 R 1503 0 R ] >> -% 1499 0 obj +% 1502 0 obj << /Type /Annot /Subtype /Link @@ -19298,7 +19299,7 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1500 0 obj +% 1503 0 obj << /Type /Annot /Subtype /Link @@ -19306,29 +19307,29 @@ stream /Rect [291.943 484.107 359.001 496.166] /A << /S /GoTo /D (descdata) >> >> -% 1504 0 obj +% 1507 0 obj << -/D [1502 0 R /XYZ 98.895 753.953 null] +/D [1505 0 R /XYZ 98.895 753.953 null] >> % 324 0 obj << -/D [1502 0 R /XYZ 99.895 716.092 null] +/D [1505 0 R /XYZ 99.895 716.092 null] >> -% 1501 0 obj +% 1504 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1507 0 obj +% 1510 0 obj << /Type /Page -/Contents 1508 0 R -/Resources 1506 0 R +/Contents 1511 0 R +/Resources 1509 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1477 0 R -/Annots [ 1505 0 R ] +/Parent 1480 0 R +/Annots [ 1508 0 R ] >> -% 1505 0 obj +% 1508 0 obj << /Type /Annot /Subtype /Link @@ -19336,29 +19337,29 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1509 0 obj +% 1512 0 obj << -/D [1507 0 R /XYZ 149.705 753.953 null] +/D [1510 0 R /XYZ 149.705 753.953 null] >> % 328 0 obj << -/D [1507 0 R /XYZ 150.705 716.092 null] +/D [1510 0 R /XYZ 150.705 716.092 null] >> -% 1506 0 obj +% 1509 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1513 0 obj +% 1516 0 obj << /Type /Page -/Contents 1514 0 R -/Resources 1512 0 R +/Contents 1517 0 R +/Resources 1515 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1516 0 R -/Annots [ 1510 0 R 1511 0 R ] +/Parent 1519 0 R +/Annots [ 1513 0 R 1514 0 R ] >> -% 1510 0 obj +% 1513 0 obj << /Type /Annot /Subtype /Link @@ -19366,7 +19367,7 @@ stream /Rect [291.943 452.321 369.462 464.381] /A << /S /GoTo /D (spdata) >> >> -% 1511 0 obj +% 1514 0 obj << /Type /Annot /Subtype /Link @@ -19374,54 +19375,54 @@ stream /Rect [291.943 209.193 359.001 221.252] /A << /S /GoTo /D (descdata) >> >> -% 1515 0 obj +% 1518 0 obj << -/D [1513 0 R /XYZ 98.895 753.953 null] +/D [1516 0 R /XYZ 98.895 753.953 null] >> % 332 0 obj << -/D [1513 0 R /XYZ 99.895 716.092 null] +/D [1516 0 R /XYZ 99.895 716.092 null] >> -% 1512 0 obj +% 1515 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1518 0 obj +% 1521 0 obj << /Type /Page -/Contents 1519 0 R -/Resources 1517 0 R +/Contents 1522 0 R +/Resources 1520 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1516 0 R +/Parent 1519 0 R >> -% 1520 0 obj +% 1523 0 obj << -/D [1518 0 R /XYZ 149.705 753.953 null] +/D [1521 0 R /XYZ 149.705 753.953 null] >> -% 1521 0 obj +% 1524 0 obj << -/D [1518 0 R /XYZ 150.705 716.092 null] +/D [1521 0 R /XYZ 150.705 716.092 null] >> -% 1522 0 obj +% 1525 0 obj << -/D [1518 0 R /XYZ 150.705 663.469 null] +/D [1521 0 R /XYZ 150.705 663.469 null] >> -% 1517 0 obj +% 1520 0 obj << -/Font << /F62 671 0 R /F67 918 0 R >> +/Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1526 0 obj +% 1529 0 obj << /Type /Page -/Contents 1527 0 R -/Resources 1525 0 R +/Contents 1530 0 R +/Resources 1528 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1516 0 R -/Annots [ 1523 0 R 1524 0 R ] +/Parent 1519 0 R +/Annots [ 1526 0 R 1527 0 R ] >> -% 1523 0 obj +% 1526 0 obj << /Type /Annot /Subtype /Link @@ -19429,7 +19430,7 @@ stream /Rect [291.943 571.679 359.001 583.739] /A << /S /GoTo /D (descdata) >> >> -% 1524 0 obj +% 1527 0 obj << /Type /Annot /Subtype /Link @@ -19437,83 +19438,83 @@ stream /Rect [291.943 227.887 369.462 239.946] /A << /S /GoTo /D (spdata) >> >> -% 1528 0 obj +% 1531 0 obj << -/D [1526 0 R /XYZ 98.895 753.953 null] +/D [1529 0 R /XYZ 98.895 753.953 null] >> % 336 0 obj << -/D [1526 0 R /XYZ 99.895 716.092 null] +/D [1529 0 R /XYZ 99.895 716.092 null] >> -% 1529 0 obj +% 1532 0 obj << -/D [1526 0 R /XYZ 99.895 136.374 null] +/D [1529 0 R /XYZ 99.895 136.374 null] >> -% 1525 0 obj +% 1528 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1531 0 obj +% 1534 0 obj << /Type /Page -/Contents 1532 0 R -/Resources 1530 0 R +/Contents 1535 0 R +/Resources 1533 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1516 0 R +/Parent 1519 0 R >> -% 1533 0 obj +% 1536 0 obj << -/D [1531 0 R /XYZ 149.705 753.953 null] +/D [1534 0 R /XYZ 149.705 753.953 null] >> -% 1534 0 obj +% 1537 0 obj << -/D [1531 0 R /XYZ 150.705 716.092 null] +/D [1534 0 R /XYZ 150.705 716.092 null] >> -% 1535 0 obj +% 1538 0 obj << -/D [1531 0 R /XYZ 150.705 699.334 null] +/D [1534 0 R /XYZ 150.705 699.334 null] >> -% 1536 0 obj +% 1539 0 obj << -/D [1531 0 R /XYZ 150.705 644.819 null] +/D [1534 0 R /XYZ 150.705 644.819 null] >> -% 1530 0 obj +% 1533 0 obj << -/Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1539 0 obj +% 1542 0 obj << /Type /Page -/Contents 1540 0 R -/Resources 1538 0 R +/Contents 1543 0 R +/Resources 1541 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1516 0 R +/Parent 1519 0 R >> -% 1541 0 obj +% 1544 0 obj << -/D [1539 0 R /XYZ 98.895 753.953 null] +/D [1542 0 R /XYZ 98.895 753.953 null] >> % 340 0 obj << -/D [1539 0 R /XYZ 99.895 716.092 null] +/D [1542 0 R /XYZ 99.895 716.092 null] >> -% 1538 0 obj +% 1541 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1545 0 obj +% 1548 0 obj << /Type /Page -/Contents 1546 0 R -/Resources 1544 0 R +/Contents 1549 0 R +/Resources 1547 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1516 0 R -/Annots [ 1537 0 R 1542 0 R 1543 0 R ] +/Parent 1519 0 R +/Annots [ 1540 0 R 1545 0 R 1546 0 R ] >> -% 1537 0 obj +% 1540 0 obj << /Type /Annot /Subtype /Link @@ -19521,7 +19522,7 @@ stream /Rect [310.942 654.503 378 666.562] /A << /S /GoTo /D (descdata) >> >> -% 1542 0 obj +% 1545 0 obj << /Type /Annot /Subtype /Link @@ -19529,7 +19530,7 @@ stream /Rect [342.753 480.963 420.271 493.022] /A << /S /GoTo /D (spdata) >> >> -% 1543 0 obj +% 1546 0 obj << /Type /Annot /Subtype /Link @@ -19537,86 +19538,86 @@ stream /Rect [310.942 411.699 378 423.758] /A << /S /GoTo /D (descdata) >> >> -% 1547 0 obj +% 1550 0 obj << -/D [1545 0 R /XYZ 149.705 753.953 null] +/D [1548 0 R /XYZ 149.705 753.953 null] >> -% 1548 0 obj +% 1551 0 obj << -/D [1545 0 R /XYZ 150.705 306.27 null] +/D [1548 0 R /XYZ 150.705 306.27 null] >> -% 1549 0 obj +% 1552 0 obj << -/D [1545 0 R /XYZ 150.705 272.927 null] +/D [1548 0 R /XYZ 150.705 272.927 null] >> -% 1550 0 obj +% 1553 0 obj << -/D [1545 0 R /XYZ 150.705 236.878 null] +/D [1548 0 R /XYZ 150.705 236.878 null] >> -% 1551 0 obj +% 1554 0 obj << -/D [1545 0 R /XYZ 150.705 167.614 null] +/D [1548 0 R /XYZ 150.705 167.614 null] >> -% 1552 0 obj +% 1555 0 obj << -/D [1545 0 R /XYZ 150.705 146.171 null] +/D [1548 0 R /XYZ 150.705 146.171 null] >> -% 1544 0 obj +% 1547 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1554 0 obj +% 1557 0 obj << /Type /Page -/Contents 1555 0 R -/Resources 1553 0 R +/Contents 1558 0 R +/Resources 1556 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1563 0 R +/Parent 1566 0 R >> -% 1556 0 obj +% 1559 0 obj << -/D [1554 0 R /XYZ 98.895 753.953 null] +/D [1557 0 R /XYZ 98.895 753.953 null] >> -% 1557 0 obj +% 1560 0 obj << -/D [1554 0 R /XYZ 99.895 716.092 null] +/D [1557 0 R /XYZ 99.895 716.092 null] >> -% 1558 0 obj +% 1561 0 obj << -/D [1554 0 R /XYZ 99.895 651.514 null] +/D [1557 0 R /XYZ 99.895 651.514 null] >> -% 1559 0 obj +% 1562 0 obj << -/D [1554 0 R /XYZ 99.895 607.678 null] +/D [1557 0 R /XYZ 99.895 608.346 null] >> -% 1560 0 obj +% 1563 0 obj << -/D [1554 0 R /XYZ 99.895 575.798 null] +/D [1557 0 R /XYZ 99.895 575.798 null] >> -% 1561 0 obj +% 1564 0 obj << -/D [1554 0 R /XYZ 99.895 520.007 null] +/D [1557 0 R /XYZ 99.895 520.007 null] >> -% 1562 0 obj +% 1565 0 obj << -/D [1554 0 R /XYZ 99.895 476.171 null] +/D [1557 0 R /XYZ 99.895 476.171 null] >> -% 1553 0 obj +% 1556 0 obj << -/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1568 0 obj +% 1571 0 obj << /Type /Page -/Contents 1569 0 R -/Resources 1567 0 R +/Contents 1572 0 R +/Resources 1570 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1563 0 R -/Annots [ 1564 0 R 1565 0 R 1566 0 R ] +/Parent 1566 0 R +/Annots [ 1567 0 R 1568 0 R 1569 0 R ] >> -% 1564 0 obj +% 1567 0 obj << /Type /Annot /Subtype /Link @@ -19624,7 +19625,7 @@ stream /Rect [342.753 572.168 409.811 584.228] /A << /S /GoTo /D (descdata) >> >> -% 1565 0 obj +% 1568 0 obj << /Type /Annot /Subtype /Link @@ -19632,82 +19633,82 @@ stream /Rect [342.753 276.913 420.271 288.973] /A << /S /GoTo /D (spdata) >> >> -% 1566 0 obj +% 1569 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.92 208.672 412.978 220.731] +/Rect [346.415 208.672 413.472 220.731] /A << /S /GoTo /D (descdata) >> >> -% 1570 0 obj +% 1573 0 obj << -/D [1568 0 R /XYZ 149.705 753.953 null] +/D [1571 0 R /XYZ 149.705 753.953 null] >> % 344 0 obj << -/D [1568 0 R /XYZ 150.705 716.092 null] +/D [1571 0 R /XYZ 150.705 716.092 null] >> -% 1567 0 obj +% 1570 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1572 0 obj +% 1575 0 obj << /Type /Page -/Contents 1573 0 R -/Resources 1571 0 R +/Contents 1576 0 R +/Resources 1574 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1563 0 R +/Parent 1566 0 R >> -% 1574 0 obj +% 1577 0 obj << -/D [1572 0 R /XYZ 98.895 753.953 null] +/D [1575 0 R /XYZ 98.895 753.953 null] >> -% 1575 0 obj +% 1578 0 obj << -/D [1572 0 R /XYZ 99.895 701.929 null] +/D [1575 0 R /XYZ 99.895 701.929 null] >> -% 1576 0 obj +% 1579 0 obj << -/D [1572 0 R /XYZ 99.895 667.454 null] +/D [1575 0 R /XYZ 99.895 667.454 null] >> -% 1577 0 obj +% 1580 0 obj << -/D [1572 0 R /XYZ 99.895 647.529 null] +/D [1575 0 R /XYZ 99.895 647.529 null] >> -% 1578 0 obj +% 1581 0 obj << -/D [1572 0 R /XYZ 99.895 603.693 null] +/D [1575 0 R /XYZ 99.895 603.693 null] >> -% 1579 0 obj +% 1582 0 obj << -/D [1572 0 R /XYZ 99.895 547.902 null] +/D [1575 0 R /XYZ 99.895 547.902 null] >> -% 1580 0 obj +% 1583 0 obj << -/D [1572 0 R /XYZ 99.895 527.977 null] +/D [1575 0 R /XYZ 99.895 527.977 null] >> -% 1581 0 obj +% 1584 0 obj << -/D [1572 0 R /XYZ 99.895 496.097 null] +/D [1575 0 R /XYZ 99.895 496.097 null] >> -% 1571 0 obj +% 1574 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1585 0 obj +% 1588 0 obj << /Type /Page -/Contents 1586 0 R -/Resources 1584 0 R +/Contents 1589 0 R +/Resources 1587 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1563 0 R -/Annots [ 1582 0 R 1583 0 R ] +/Parent 1566 0 R +/Annots [ 1585 0 R 1586 0 R ] >> -% 1582 0 obj +% 1585 0 obj << /Type /Annot /Subtype /Link @@ -19715,7 +19716,7 @@ stream /Rect [342.753 573.77 420.271 585.83] /A << /S /GoTo /D (spdata) >> >> -% 1583 0 obj +% 1586 0 obj << /Type /Annot /Subtype /Link @@ -19723,29 +19724,29 @@ stream /Rect [342.753 506.024 409.811 518.084] /A << /S /GoTo /D (descdata) >> >> -% 1587 0 obj +% 1590 0 obj << -/D [1585 0 R /XYZ 149.705 753.953 null] +/D [1588 0 R /XYZ 149.705 753.953 null] >> % 348 0 obj << -/D [1585 0 R /XYZ 150.705 716.092 null] +/D [1588 0 R /XYZ 150.705 716.092 null] >> -% 1584 0 obj +% 1587 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1591 0 obj +% 1594 0 obj << /Type /Page -/Contents 1592 0 R -/Resources 1590 0 R +/Contents 1595 0 R +/Resources 1593 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1563 0 R -/Annots [ 1588 0 R 1589 0 R ] +/Parent 1566 0 R +/Annots [ 1591 0 R 1592 0 R ] >> -% 1588 0 obj +% 1591 0 obj << /Type /Annot /Subtype /Link @@ -19753,7 +19754,7 @@ stream /Rect [291.943 559.823 369.462 571.882] /A << /S /GoTo /D (spdata) >> >> -% 1589 0 obj +% 1592 0 obj << /Type /Annot /Subtype /Link @@ -19761,33 +19762,33 @@ stream /Rect [291.943 492.077 359.001 504.136] /A << /S /GoTo /D (descdata) >> >> -% 1593 0 obj +% 1596 0 obj << -/D [1591 0 R /XYZ 98.895 753.953 null] +/D [1594 0 R /XYZ 98.895 753.953 null] >> % 352 0 obj << -/D [1591 0 R /XYZ 99.895 716.092 null] +/D [1594 0 R /XYZ 99.895 716.092 null] >> -% 1594 0 obj +% 1597 0 obj << -/D [1591 0 R /XYZ 99.895 312.355 null] +/D [1594 0 R /XYZ 99.895 312.355 null] >> -% 1590 0 obj +% 1593 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1598 0 obj +% 1601 0 obj << /Type /Page -/Contents 1599 0 R -/Resources 1597 0 R +/Contents 1602 0 R +/Resources 1600 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1563 0 R -/Annots [ 1595 0 R 1596 0 R ] +/Parent 1566 0 R +/Annots [ 1598 0 R 1599 0 R ] >> -% 1595 0 obj +% 1598 0 obj << /Type /Annot /Subtype /Link @@ -19795,7 +19796,7 @@ stream /Rect [310.942 577.893 378 589.953] /A << /S /GoTo /D (descdata) >> >> -% 1596 0 obj +% 1599 0 obj << /Type /Annot /Subtype /Link @@ -19803,38 +19804,33 @@ stream /Rect [261.249 128.475 337.303 140.535] /A << /S /GoTo /D (vdata) >> >> -% 1600 0 obj +% 1603 0 obj << -/D [1598 0 R /XYZ 149.705 753.953 null] +/D [1601 0 R /XYZ 149.705 753.953 null] >> % 356 0 obj << -/D [1598 0 R /XYZ 150.705 716.092 null] ->> -% 1597 0 obj -<< -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> -/ProcSet [ /PDF /Text ] +/D [1601 0 R /XYZ 150.705 716.092 null] >> endstream endobj -1603 0 obj +1607 0 obj << -/Length 925 +/Length 989 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(Using)]TJ/F67 9.9626 Tf 41.798 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.28 0 Td [(is)-314(likely)-315(to)-315(cau)1(se)-315(a)-315(r)8(untime)-314(over)18(head)-315(at)-314(as-)]TJ -126.625 -11.955 Td [(sembly)-250(time;)]TJ + 1.02 0 0 1 124.802 616.465 Tm [(Using)]TJ/F131 9.9626 Tf 1 0 0 1 154.449 616.465 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 251.507 616.465 Tm [(is)-287(likely)-286(to)-287(cause)-286(a)-287(r)8(untime)-286(over)17(head)-286(at)-287(as-)]TJ 1 0 0 1 124.802 604.51 Tm [(sembly)-250(time;)]TJ 0 g 0 G 141.968 -514.072 Td [(91)]TJ 0 g 0 G @@ -19842,137 +19838,137 @@ ET endstream endobj -1612 0 obj +1615 0 obj << -/Length 6336 +/Length 6604 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.13)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.13)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(routine)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geins\050m,)-525(irw,)-525(val,)-525(x,)-525(desc_a,)-525(info)-525([,local]\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geins\050m,)-525(irw,)-525(val,)-525(x,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.57 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.57 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.386 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.386 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.386 Td [(m)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows)-250(in)]TJ/F60 9.9626 Tf 86.569 0 Td [(v)-40(a)-25(l)]TJ/F62 9.9626 Tf 15.736 0 Td [(to)-250(be)-250(inserted.)]TJ -91.237 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows)-250(in)]TJ/F78 9.9626 Tf 86.569 0 Td [(v)-40(a)-25(l)]TJ/F84 9.9626 Tf 15.736 0 Td [(to)-250(be)-250(inserted.)]TJ -91.237 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.386 Td [(irw)]TJ +/F75 9.9626 Tf -24.906 -19.386 Td [(irw)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Indices)-381(of)-382(the)-382(r)18(ows)-381(to)-382(be)-381(inserted.)-705(Speci\002cally)111(,)-414(r)18(ow)]TJ/F60 9.9626 Tf 239.84 0 Td [(i)]TJ/F62 9.9626 Tf 6.765 0 Td [(of)]TJ/F60 9.9626 Tf 12.683 0 Td [(v)-40(a)-25(l)]TJ/F62 9.9626 Tf 17.046 0 Td [(will)-381(be)-382(in-)]TJ -271.901 -11.955 Td [(serted)-344(into)-344(the)-344(local)-344(r)18(ow)-344(corr)18(esponding)-344(to)-344(the)-344(global)-344(r)18(ow)-344(index)]TJ/F60 9.9626 Tf 290.218 0 Td [(i)-22(r)-35(w)]TJ/F93 10.3811 Tf 14.654 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)]TJ -316.314 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 171.178 560.616 Tm [(Indices)-354(of)-353(the)-354(r)18(ows)-354(to)-353(be)-354(inserted.)-629(Speci\002cally)109(,)-381(r)18(ow)]TJ/F78 9.9626 Tf 1 0 0 1 412.75 560.616 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 419.307 560.616 Tm [(of)]TJ/F78 9.9626 Tf 1 0 0 1 431.957 560.616 Tm [(v)-40(a)-25(l)]TJ/F84 9.9626 Tf 1.02 0 0 1 448.795 560.616 Tm [(will)-354(be)-353(in-)]TJ 1.02 0 0 1 175.611 548.661 Tm [(serted)-307(into)-307(the)-307(local)-308(r)18(ow)-307(corr)17(esp)1(onding)-308(to)-307(the)-307(global)-307(r)18(ow)-308(index)]TJ/F78 9.9626 Tf 1 0 0 1 467.522 548.661 Tm [(i)-22(r)-35(w)]TJ/F181 10.3811 Tf 14.655 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.619 548.661 Tm [(.)]TJ 1 0 0 1 175.611 536.706 Tm [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.386 Td [(val)]TJ +/F75 9.9626 Tf -24.906 -19.386 Td [(val)]TJ 0 g 0 G -/F62 9.9626 Tf 18.819 0 Td [(the)-250(dense)-250(submatrix)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)-310(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 18.819 0 Td [(the)-250(dense)-250(submatrix)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)-310(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.386 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.386 Td [(desc)]TJ ET q 1 0 0 1 171.218 414.446 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 414.247 Td [(a)]TJ +/F75 9.9626 Tf 174.207 414.247 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 366.626 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 366.426 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 366.426 Td [(desc)]TJ ET q 1 0 0 1 384.755 366.626 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 366.426 Td [(type)]TJ +/F131 9.9626 Tf 387.893 366.426 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.386 Td [(local)]TJ +/F75 9.9626 Tf -258.11 -19.386 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(Whether)-240(the)-240(entries)-241(in)-240(the)-240(index)-240(vector)]TJ/F67 9.9626 Tf 173.162 0 Td [(irw)]TJ/F62 9.9626 Tf 15.692 0 Td [(,)-242(ar)18(e)-240(alr)18(eady)-241(i)1(n)-241(local)-240(number)18(-)]TJ -190.508 -11.955 Td [(ing.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F67 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F62 9.9626 Tf 36.613 0 Td [(.)]TJ +/F84 9.9626 Tf 1.004 0 0 1 176.767 347.04 Tm [(Whether)-248(the)-248(entries)-249(in)-248(the)-248(index)-248(vector)]TJ/F131 9.9626 Tf 1 0 0 1 351.183 347.04 Tm [(irw)]TJ/F84 9.9626 Tf 1.004 0 0 1 366.874 347.04 Tm [(,)-248(ar)18(e)-249(alr)18(eady)-248(in)-248(local)-248(number)18(-)]TJ 1 0 0 1 175.611 335.085 Tm [(ing.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F131 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F84 9.9626 Tf 36.613 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -224.197 -20.57 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -224.197 -20.57 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.387 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(output)-250(dense)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(rank)-190(one)-190(or)-190(two)-190(array)-190(or)-190(an)-190(object)-190(of)-190(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(output)-250(dense)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 211.443 Tm [(Speci\002ed)-237(as:)-308(a)-237(rank)-238(one)-237(or)-238(two)-237(array)-238(or)-237(an)-238(object)-237(of)-238(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 242.569 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 419.159 211.443 Tm [(psb)]TJ ET q -1 0 0 1 434.498 211.642 cm +1 0 0 1 435.477 211.642 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 437.636 211.443 Td [(T)]TJ +/F131 9.9626 Tf 438.616 211.443 Td [(T)]TJ ET q -1 0 0 1 443.494 211.642 cm +1 0 0 1 444.474 211.642 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 446.633 211.443 Td [(vect)]TJ +/F131 9.9626 Tf 447.612 211.443 Td [(vect)]TJ ET q -1 0 0 1 468.182 211.642 cm +1 0 0 1 469.161 211.642 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 471.32 211.443 Td [(type)]TJ +/F131 9.9626 Tf 472.299 211.443 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)]TJ -316.63 -11.955 Td [(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 493.22 211.443 Tm [(,)]TJ 1 0 0 1 175.611 199.488 Tm [(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.342 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -31.342 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -29.888 Td [(92)]TJ + 142.356 -29.888 Td [(92)]TJ 0 g 0 G ET endstream endobj -1616 0 obj +1619 0 obj << -/Length 539 +/Length 574 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G [-500(Dense)-250(vectors/matrices)-250(do)-250(not)-250(have)-250(an)-250(associated)-250(state;)]TJ 0 g 0 G 0 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(Duplicate)-326(entries)-326(ar)18(e)-325(either)-326(overwritten)-326(or)-326(added,)-345(ther)18(e)-325(is)-326(no)-326(pr)18(ovision)]TJ 12.453 -11.955 Td [(for)-250(raising)-250(an)-250(err)18(or)-250(condition.)]TJ + 1.02 0 0 1 124.802 666.278 Tm [(Duplicate)-264(entries)-265(ar)18(e)-264(either)-265(overwritten)-264(or)-265(added,)-269(ther)18(e)-265(is)-264(no)-264(pr)17(ovision)]TJ 1 0 0 1 124.802 654.323 Tm [(for)-250(raising)-250(an)-250(err)18(or)-250(condition.)]TJ 0 g 0 G 141.968 -563.885 Td [(93)]TJ 0 g 0 G @@ -19980,31 +19976,31 @@ ET endstream endobj -1625 0 obj +1628 0 obj << -/Length 6120 +/Length 6333 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.14)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.14)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geasb\050x,)-525(desc_a,)-525(info,)-525(mold\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geasb\050x,)-525(desc_a,)-525(info,)-525(mold\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -20014,128 +20010,128 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 625.397 Td [(a)]TJ +/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 577.576 Td [(desc)]TJ ET q 1 0 0 1 352.944 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 577.576 Td [(type)]TJ +/F131 9.9626 Tf 356.083 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -31.88 Td [(mold)]TJ +/F75 9.9626 Tf -226.299 -31.88 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.876 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-223(as:)-296(an)-223(object)-223(of)-222(a)-223(class)-223(derived)-223(fr)18(om)]TJ/F67 9.9626 Tf 199.087 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.567 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.987 0 0 1 175.611 497.875 Tm [(Speci\002ed)-254(as:)-315(an)-254(object)-254(of)-254(a)-254(class)-254(derived)-254(fr)18(om)]TJ/F131 9.9626 Tf 1 0 0 1 374.749 497.875 Tm [(psb)]TJ ET q -1 0 0 1 391.016 498.074 cm +1 0 0 1 391.068 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 394.155 497.875 Td [(T)]TJ +/F131 9.9626 Tf 394.206 497.875 Td [(T)]TJ ET q -1 0 0 1 400.012 498.074 cm +1 0 0 1 400.064 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 403.151 497.875 Td [(base)]TJ +/F131 9.9626 Tf 403.202 497.875 Td [(base)]TJ ET q -1 0 0 1 424.7 498.074 cm +1 0 0 1 424.751 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 427.838 497.875 Td [(vect)]TJ +/F131 9.9626 Tf 427.89 497.875 Td [(vect)]TJ ET q -1 0 0 1 449.387 498.074 cm +1 0 0 1 449.439 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 452.525 497.875 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(;)-232(this)]TJ -297.835 -11.955 Td [(is)-250(only)-250(allowed)-250(when)]TJ/F60 9.9626 Tf 97.12 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(of)-250(type)]TJ +/F131 9.9626 Tf 452.577 497.875 Td [(type)]TJ/F84 9.9626 Tf 0.987 0 0 1 473.498 497.875 Tm [(;)-254(this)]TJ 1 0 0 1 175.611 485.92 Tm [(is)-250(only)-250(allowed)-250(when)]TJ/F78 9.9626 Tf 97.12 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 42.899 0 Td [(psb)]TJ +/F131 9.9626 Tf 42.899 0 Td [(psb)]TJ ET q 1 0 0 1 339.644 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 342.783 485.92 Td [(T)]TJ +/F131 9.9626 Tf 342.783 485.92 Td [(T)]TJ ET q 1 0 0 1 348.641 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.779 485.92 Td [(vect)]TJ +/F131 9.9626 Tf 351.779 485.92 Td [(vect)]TJ ET q 1 0 0 1 373.328 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 376.466 485.92 Td [(type)]TJ +/F131 9.9626 Tf 376.466 485.92 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -246.682 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -246.682 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-259(as:)-328(a)-259(rank)-258(one)-259(or)-259(two)-259(array)-259(with)-259(the)-259(ALLOCA)74(T)74(ABLE)-258(or)-259(an)-259(ob-)]TJ 0 -11.955 Td [(ject)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 396.256 Tm [(Speci\002ed)-220(as:)-299(a)-220(rank)-220(one)-220(or)-220(two)-221(array)-220(with)-220(the)-220(ALLOCA)76(T)75(ABLE)-220(or)-220(an)-220(object)]TJ 1 0 0 1 175.611 384.301 Tm [(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 50.55 0 Td [(psb)]TJ +/F131 9.9626 Tf 33.285 0 Td [(psb)]TJ ET q -1 0 0 1 242.48 384.5 cm +1 0 0 1 225.215 384.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 245.618 384.301 Td [(T)]TJ +/F131 9.9626 Tf 228.353 384.301 Td [(T)]TJ ET q -1 0 0 1 251.476 384.5 cm +1 0 0 1 234.211 384.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 254.614 384.301 Td [(vect)]TJ +/F131 9.9626 Tf 237.349 384.301 Td [(vect)]TJ ET q -1 0 0 1 276.163 384.5 cm +1 0 0 1 258.898 384.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 279.301 384.301 Td [(type)]TJ +/F131 9.9626 Tf 262.036 384.301 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -149.518 -31.881 Td [(info)]TJ +/F75 9.9626 Tf -132.253 -31.881 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(On)-227(entry)-226(to)-227(this)-226(r)18(outine)-227(th)1(e)-227(descriptor)-226(must)-227(be)-226(in)-227(the)-226(assembled)-227(state,)-231(i.e.)]TJ/F67 9.9626 Tf 12.453 -11.956 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ + 0.996 0 0 1 175.611 262.757 Tm [(On)-250(entry)-251(to)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-251(must)-250(be)-250(in)-250(the)-251(assembled)-250(state,)-250(i.e.)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 250.801 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ 0 g 0 G -62.017 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(If)-431(the)]TJ/F67 9.9626 Tf 41.544 0 Td [(bldmode=psb_matbld_remote_)]TJ/F62 9.9626 Tf 140.287 0 Td [(value)-431(was)-432(speci\002ed)-431(at)-432(allocation)]TJ -169.378 -11.955 Td [(time,)-278(contributions)-272(de\002ned)-272(on)-273(the)-272(curr)18(ent)-272(pr)18(ocess)-272(but)-272(belonging)-273(to)-272(a)-272(r)18(e-)]TJ 0 -11.955 Td [(mote)-267(pr)18(ocess)-266(will)-267(be)-267(handled)-267(accor)18(dingly)111(.)-360(This)-267(is)-266(most)-267(likely)-267(to)-266(occur)-267(in)]TJ 0 -11.955 Td [(\002nite)-250(element)-250(applications,)-250(with)]TJ/F67 9.9626 Tf 144.277 0 Td [(dupl=psb_dupl_add_)]TJ/F62 9.9626 Tf 94.146 0 Td [(.)]TJ + 1.02 0 0 1 175.611 230.876 Tm [(If)-380(the)]TJ/F131 9.9626 Tf 1 0 0 1 204.239 230.876 Tm [(bldmode=psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 344.09 230.876 Tm [(value)-380(was)-380(speci\002ed)-380(at)-380(allocation)]TJ 1.02 0 0 1 175.611 218.921 Tm [(time,)-381(cont)1(ributions)-354(de\002ned)-353(on)-354(the)-353(curr)18(ent)-354(pr)18(ocess)-354(but)-353(belonging)-353(to)-354(a)]TJ 0.98 0 0 1 175.611 206.966 Tm [(r)18(emote)-252(pr)18(ocess)-253(will)-252(be)-253(handled)-253(accor)19(dingly)113(.)-315(This)-253(is)-253(most)-252(likely)-253(to)-253(occur)-252(in)]TJ 1 0 0 1 175.611 195.011 Tm [(\002nite)-250(element)-250(applications,)-250(with)]TJ/F131 9.9626 Tf 144.277 0 Td [(dupl=psb_dupl_add_)]TJ/F84 9.9626 Tf 94.146 0 Td [(.)]TJ 0 g 0 G -96.455 -104.573 Td [(94)]TJ 0 g 0 G @@ -20143,275 +20139,275 @@ ET endstream endobj -1633 0 obj +1636 0 obj << -/Length 3224 +/Length 3251 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.15)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.15)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(gefree)-250(\227)-250(Frees)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(gefree)-250(\227)-250(Frees)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gefree\050x,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gefree\050x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-259(as:)-328(a)-258(rank)-259(one)-259(or)-259(two)-259(array)-259(with)-259(the)-259(ALLOCA)74(T)74(ABLE)-258(or)-259(an)-259(ob-)]TJ 0 -11.955 Td [(ject)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 577.576 Tm [(Speci\002ed)-220(as:)-299(a)-220(rank)-220(one)-220(or)-220(two)-221(array)-220(with)-220(the)-220(ALLOCA)76(T)75(ABLE)-220(or)-220(an)-220(object)]TJ 1 0 0 1 124.802 565.621 Tm [(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 50.55 0 Td [(psb)]TJ +/F131 9.9626 Tf 33.285 0 Td [(psb)]TJ ET q -1 0 0 1 191.67 565.82 cm +1 0 0 1 174.405 565.82 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 194.809 565.621 Td [(T)]TJ +/F131 9.9626 Tf 177.544 565.621 Td [(T)]TJ ET q -1 0 0 1 200.666 565.82 cm +1 0 0 1 183.402 565.82 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 203.805 565.621 Td [(vect)]TJ +/F131 9.9626 Tf 186.54 565.621 Td [(vect)]TJ ET q -1 0 0 1 225.354 565.82 cm +1 0 0 1 208.089 565.82 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 228.492 565.621 Td [(type)]TJ +/F131 9.9626 Tf 211.227 565.621 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -149.518 -31.881 Td [(desc)]TJ +/F75 9.9626 Tf -132.253 -31.881 Td [(desc)]TJ ET q 1 0 0 1 120.408 533.94 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 533.74 Td [(a)]TJ +/F75 9.9626 Tf 123.397 533.74 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.327 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.327 0 Td [(psb)]TJ ET q 1 0 0 1 277.448 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 280.586 485.92 Td [(desc)]TJ +/F131 9.9626 Tf 280.586 485.92 Td [(desc)]TJ ET q 1 0 0 1 302.135 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 305.273 485.92 Td [(type)]TJ +/F131 9.9626 Tf 305.273 485.92 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.3 -33.873 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -226.3 -33.873 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -293.863 Td [(95)]TJ + 142.357 -293.863 Td [(95)]TJ 0 g 0 G ET endstream endobj -1637 0 obj +1640 0 obj << -/Length 3218 +/Length 3210 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.16)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.16)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gelp\050trans,)-525(iperm,)-525(x,)-525(info\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gelp\050trans,)-525(iperm,)-525(x,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(A)-250(character)-250(that)-250(speci\002es)-250(whether)-250(to)-250(permute)]TJ/F60 9.9626 Tf 203.748 0 Td [(A)]TJ/F62 9.9626 Tf 9.808 0 Td [(or)]TJ/F60 9.9626 Tf 12.488 0 Td [(A)]TJ/F60 7.5716 Tf 7.511 3.616 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.616 Td [(.)]TJ -241.716 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(single)-250(character)-250(with)-250(value)-250('N')-250(for)]TJ/F60 9.9626 Tf 218.195 0 Td [(A)]TJ/F62 9.9626 Tf 9.808 0 Td [(or)-250('T')-250(for)]TJ/F60 9.9626 Tf 41.807 0 Td [(A)]TJ/F60 7.5716 Tf 7.511 3.616 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.616 Td [(.)]TJ +/F84 9.9626 Tf 27.277 0 Td [(A)-250(character)-250(that)-250(speci\002es)-250(whether)-250(to)-250(permute)]TJ/F78 9.9626 Tf 203.749 0 Td [(A)]TJ/F84 9.9626 Tf 9.808 0 Td [(or)]TJ/F78 9.9626 Tf 12.488 0 Td [(A)]TJ/F78 7.5716 Tf 7.51 3.616 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.616 Td [(.)]TJ -241.327 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(single)-250(character)-250(with)-250(value)-250('N')-250(for)]TJ/F78 9.9626 Tf 218.195 0 Td [(A)]TJ/F84 9.9626 Tf 9.808 0 Td [(or)-250('T')-250(for)]TJ/F78 9.9626 Tf 41.807 0 Td [(A)]TJ/F78 7.5716 Tf 7.511 3.616 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.616 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -307.628 -31.88 Td [(iperm)]TJ +/F75 9.9626 Tf -307.628 -31.88 Td [(iperm)]TJ 0 g 0 G -/F62 9.9626 Tf 32.099 0 Td [(An)-250(integer)-250(array)-250(containing)-250(permutation)-250(information.)]TJ -7.193 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(one-dimensional)-250(array)111(.)]TJ +/F84 9.9626 Tf 31.711 0 Td [(An)-250(integer)-250(array)-250(containing)-250(permutation)-250(information.)]TJ -6.805 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(one-dimensional)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(x)]TJ +/F75 9.9626 Tf -24.906 -31.881 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(permuted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(or)-250(two)-250(dimensional)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(permuted.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(or)-250(two)-250(dimensional)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -33.873 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -33.873 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -226.117 Td [(96)]TJ + 142.356 -226.117 Td [(96)]TJ 0 g 0 G ET endstream endobj -1642 0 obj +1645 0 obj << -/Length 6238 +/Length 6618 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.17)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.17)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(glob)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(glob)]TJ ET q 1 0 0 1 182.29 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 185.877 706.129 Td [(to)]TJ +/F75 11.9552 Tf 185.877 706.129 Td [(to)]TJ ET q 1 0 0 1 197.222 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 200.809 706.129 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ +/F75 11.9552 Tf 200.809 706.129 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -100.914 -18.964 Td [(call)-525(psb_glob_to_loc\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 -11.955 Td [(call)-525(psb_glob_to_loc\050x,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ +/F131 9.9626 Tf -100.914 -18.964 Td [(call)-525(psb_glob_to_loc\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 -11.955 Td [(call)-525(psb_glob_to_loc\050x,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.109 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.109 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.602 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.602 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.601 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.574 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 15.333 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.557 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.557 Td [(desc)]TJ ET q 1 0 0 1 120.408 535.72 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 535.52 Td [(a)]TJ +/F75 9.9626 Tf 123.397 535.52 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 487.899 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 487.7 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 487.7 Td [(desc)]TJ ET q 1 0 0 1 333.945 487.899 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 487.7 Td [(type)]TJ +/F131 9.9626 Tf 337.084 487.7 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.602 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.602 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 432.232 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 432.232 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 432.232 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 432.232 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 432.232 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 432.232 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 432.232 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 432.232 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 432.232 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -19.601 Td [(owned)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 412.631 Tm [(owned)]TJ 0 g 0 G -/F62 9.9626 Tf 35.975 0 Td [(Spec\002es)-250(valid)-250(range)-250(of)-250(input)-250(Scope:)]TJ/F59 9.9626 Tf 159.54 0 Td [(global)]TJ/F62 9.9626 Tf -170.608 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(If)-320(tr)8(ue,)-337(then)-320(only)-320(indices)-320(strictly)-320(owned)-320(by)-320(the)-319(curr)18(ent)-320(pr)18(ocess)-320(ar)18(e)-320(con-)]TJ 0 -11.955 Td [(sider)18(ed)-250(valid,)-250(if)-250(false)-250(then)-250(halo)-250(indices)-250(ar)18(e)-250(also)-250(accepted.)-310(Default:)-310(false.)]TJ +/F84 9.9626 Tf 35.975 0 Td [(Spec\002es)-250(valid)-250(range)-250(of)-250(input)-250(Scope:)]TJ/F75 9.9626 Tf 159.54 0 Td [(global)]TJ/F84 9.9626 Tf -170.917 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.99 0 0 1 124.802 376.765 Tm [(If)-252(tr)8(ue,)-252(then)-251(only)-252(indices)-252(strictly)-252(owned)-252(by)-251(the)-252(curr)18(ent)-252(pr)18(ocess)-251(ar)18(e)-252(consid-)]TJ 1 0 0 1 124.802 364.81 Tm [(er)18(ed)-250(valid,)-250(if)-250(false)-250(then)-250(halo)-250(indices)-250(ar)18(e)-250(also)-250(accepted.)-310(Default:)-310(false.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.109 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.109 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.601 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(If)]TJ/F60 9.9626 Tf 9.727 0 Td [(y)]TJ/F62 9.9626 Tf 8.032 0 Td [(is)-294(not)-294(pr)18(esent,)-304(then)]TJ/F60 9.9626 Tf 88.385 0 Td [(x)]TJ/F62 9.9626 Tf 8.132 0 Td [(is)-294(overwritten)-294(with)-293(the)-294(translated)-294(integer)-294(indices.)]TJ -99.332 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 109.858 324.1 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.419 324.1 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 127.154 324.1 Tm [(is)-259(not)-258(pr)17(esent,)-262(then)]TJ/F78 9.9626 Tf 1 0 0 1 215.798 324.1 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.631 324.1 Tm [(is)-259(overwritten)-258(with)-259(the)-259(translated)-258(integer)-259(indices.)]TJ 1 0 0 1 124.802 312.145 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.602 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.602 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(If)]TJ/F60 9.9626 Tf 9.521 0 Td [(y)]TJ/F62 9.9626 Tf 7.827 0 Td [(is)-273(pr)18(esent,)-279(then)]TJ/F60 9.9626 Tf 70.133 0 Td [(y)]TJ/F62 9.9626 Tf 7.827 0 Td [(is)-273(overwritten)-273(with)-273(the)-273(translated)-274(integer)-273(indices,)-279(and)]TJ/F60 9.9626 Tf -80.628 -11.955 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F59 9.9626 Tf 112.557 0 Td [(global)]TJ/F62 9.9626 Tf -120.547 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 110.416 256.677 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.593 256.677 Tm [(y)]TJ/F84 9.9626 Tf 0.983 0 0 1 127.19 256.677 Tm [(is)-254(pr)18(esent,)-254(then)]TJ/F78 9.9626 Tf 1 0 0 1 195.523 256.677 Tm [(y)]TJ/F84 9.9626 Tf 0.983 0 0 1 203.12 256.677 Tm [(is)-254(overwritten)-255(with)-254(the)-254(translated)-255(integer)-254(indices,)-254(and)]TJ/F78 9.9626 Tf 1 0 0 1 438.401 256.677 Tm [(x)]TJ/F84 9.9626 Tf -313.599 -11.955 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F75 9.9626 Tf 112.557 0 Td [(global)]TJ/F84 9.9626 Tf -112.866 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.602 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.602 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.108 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.108 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(97)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(97)]TJ 0 g 0 G ET endstream endobj -1647 0 obj +1650 0 obj << -/Length 672 +/Length 775 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 163.158 706.129 Td [(1.)]TJ +/F84 9.9626 Tf 163.158 706.129 Td [(1.)]TJ 0 g 0 G - [-500(If)-272(an)-273(input)-272(index)-272(is)-273(out)-272(of)-273(range)1(,)-278(then)-273(the)-272(corr)18(esponding)-272(output)-273(index)-272(is)]TJ 12.453 -11.955 Td [(set)-250(to)-250(a)-250(negative)-250(number;)]TJ + 1.01 0 0 1 175.611 706.129 Tm [(If)-248(an)-249(input)-248(index)-249(is)-248(out)-248(of)-249(range,)-248(then)-249(the)-248(corr)18(esponding)-249(output)-248(index)-248(is)]TJ 1 0 0 1 175.611 694.174 Tm [(set)-250(to)-250(a)-250(negative)-250(number;)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-416(default)]TJ/F67 9.9626 Tf 68.74 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e)-416(means)-417(that)-416(the)-417(negative)-416(output)-416(is)-417(the)-416(only)-416(action)]TJ -61.517 -11.955 Td [(taken)-250(on)-250(an)-250(out-of-range)-250(input.)]TJ + 0.98 0 0 1 175.303 674.248 Tm [(The)-234(default)]TJ/F131 9.9626 Tf 1 0 0 1 226.908 674.248 Tm [(I)]TJ/F84 9.9626 Tf 0.98 0 0 1 232.138 674.248 Tm [(gnor)18(e)-234(means)-234(that)-235(the)-234(negative)-234(output)-234(is)-235(the)-234(only)-234(action)-235(taken)]TJ 1 0 0 1 175.611 662.293 Tm [(on)-250(an)-250(out-of-range)-250(input.)]TJ 0 g 0 G 141.968 -571.855 Td [(98)]TJ 0 g 0 G @@ -20419,182 +20415,182 @@ ET endstream endobj -1654 0 obj +1657 0 obj << -/Length 5458 +/Length 5808 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.18)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.18)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(loc)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(loc)]TJ ET q 1 0 0 1 173.646 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 177.233 706.129 Td [(to)]TJ +/F75 11.9552 Tf 177.233 706.129 Td [(to)]TJ ET q 1 0 0 1 188.578 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 192.165 706.129 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ +/F75 11.9552 Tf 192.165 706.129 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -92.27 -18.964 Td [(call)-525(psb_loc_to_glob\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact\051)]TJ 0 -11.955 Td [(call)-525(psb_loc_to_glob\050x,)-525(desc_a,)-525(info,)-525(iact\051)]TJ +/F131 9.9626 Tf -92.27 -18.964 Td [(call)-525(psb_loc_to_glob\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact\051)]TJ 0 -11.955 Td [(call)-525(psb_loc_to_glob\050x,)-525(desc_a,)-525(info,)-525(iact\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.574 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 15.333 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.881 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.881 Td [(desc)]TJ ET q 1 0 0 1 120.408 533.94 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 533.74 Td [(a)]TJ +/F75 9.9626 Tf 123.397 533.74 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 485.92 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 485.92 Td [(desc)]TJ ET q 1 0 0 1 333.945 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 485.92 Td [(type)]TJ +/F131 9.9626 Tf 337.084 485.92 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.926 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.926 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 430.129 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 430.129 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 430.129 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 430.129 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 430.129 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 430.129 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 430.129 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 430.129 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 430.129 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 408.211 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(If)]TJ/F60 9.9626 Tf 9.727 0 Td [(y)]TJ/F62 9.9626 Tf 8.032 0 Td [(is)-294(not)-294(pr)18(esent,)-304(then)]TJ/F60 9.9626 Tf 88.385 0 Td [(x)]TJ/F62 9.9626 Tf 8.132 0 Td [(is)-294(overwritten)-294(with)-293(the)-294(translated)-294(integer)-294(indices.)]TJ -99.332 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 109.858 388.286 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.419 388.286 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 127.154 388.286 Tm [(is)-259(not)-258(pr)17(esent,)-262(then)]TJ/F78 9.9626 Tf 1 0 0 1 215.798 388.286 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.631 388.286 Tm [(is)-259(overwritten)-258(with)-259(the)-259(translated)-258(integer)-259(indices.)]TJ 1 0 0 1 124.802 376.331 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(If)]TJ/F60 9.9626 Tf 9.705 0 Td [(y)]TJ/F62 9.9626 Tf 8.011 0 Td [(is)-292(not)-291(pr)18(esent,)-302(then)]TJ/F60 9.9626 Tf 88.122 0 Td [(y)]TJ/F62 9.9626 Tf 8.011 0 Td [(is)-292(overwritten)-291(with)-292(the)-291(translated)-292(integer)-292(indice)1(s,)]TJ -99.463 -11.955 Td [(and)]TJ/F60 9.9626 Tf 19.651 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F59 9.9626 Tf 112.557 0 Td [(global)]TJ/F62 9.9626 Tf -139.904 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 110.416 320.54 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.918 320.54 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 127.593 320.54 Tm [(is)-253(not)-253(pr)18(esent,)-255(then)]TJ/F78 9.9626 Tf 1 0 0 1 215.815 320.54 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.49 320.54 Tm [(is)-253(overwritten)-253(wit)1(h)-253(the)-253(translated)-253(integer)-253(indices,)]TJ 1 0 0 1 124.802 308.585 Tm [(and)]TJ/F78 9.9626 Tf 19.651 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F75 9.9626 Tf 112.557 0 Td [(global)]TJ/F84 9.9626 Tf -140.213 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -114.535 Td [(99)]TJ + 142.357 -114.535 Td [(99)]TJ 0 g 0 G ET endstream endobj -1659 0 obj +1662 0 obj << -/Length 3169 +/Length 3304 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.19)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.19)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(is)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(is)]TJ ET q 1 0 0 1 217.809 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 221.396 706.129 Td [(owned)-250(\227)]TJ +/F75 11.9552 Tf 221.396 706.129 Td [(owned)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_owned\050x,)-525(desc_a\051)]TJ +/F131 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_owned\050x,)-525(desc_a\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 171.218 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 545.696 Td [(a)]TJ +/F75 9.9626 Tf 174.207 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 497.875 Td [(desc)]TJ ET q 1 0 0 1 384.755 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 497.875 Td [(type)]TJ +/F131 9.9626 Tf 387.893 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)-261(logical)-260(mask)-261(which)-261(is)-261(tr)8(ue)-261(if)]TJ/F60 9.9626 Tf 137.304 0 Td [(x)]TJ/F62 9.9626 Tf 7.803 0 Td [(is)-261(owned)-261(by)-260(the)-261(curr)18(ent)-261(pr)18(o-)]TJ -192.978 -11.955 Td [(cess)-250(Scope:)]TJ/F59 9.9626 Tf 51.567 0 Td [(local)]TJ/F62 9.9626 Tf -51.567 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ +/F84 9.9626 Tf 1.015 0 0 1 223.093 456.032 Tm [(A)-246(logical)-246(mask)-246(which)-246(is)-246(tr)8(ue)-246(if)]TJ/F78 9.9626 Tf 1 0 0 1 361.406 456.032 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 369.099 456.032 Tm [(is)-246(owned)-246(by)-246(the)-246(curr)18(ent)-246(pr)18(o-)]TJ 1 0 0 1 175.611 444.077 Tm [(cess)-250(Scope:)]TJ/F75 9.9626 Tf 51.567 0 Td [(local)]TJ/F84 9.9626 Tf -51.875 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-240(r)18(outine)-239(r)18(eturns)-240(a)]TJ/F67 9.9626 Tf 109.67 0 Td [(.true.)]TJ/F62 9.9626 Tf 33.769 0 Td [(value)-240(for)-239(an)-240(index)-239(that)-240(is)-239(strictly)-240(owned)-239(by)]TJ -130.986 -11.955 Td [(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ + 0.997 0 0 1 175.303 366.368 Tm [(This)-252(r)18(outine)-251(r)18(eturns)-252(a)]TJ/F131 9.9626 Tf 1 0 0 1 272.707 366.368 Tm [(.true.)]TJ/F84 9.9626 Tf 0.997 0 0 1 306.589 366.368 Tm [(value)-252(for)-251(an)-252(index)-252(that)-251(is)-252(strictly)-251(owned)-252(by)]TJ 1 0 0 1 175.611 354.413 Tm [(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ 0 g 0 G 139.477 -263.975 Td [(100)]TJ 0 g 0 G @@ -20602,91 +20598,91 @@ ET endstream endobj -1665 0 obj +1668 0 obj << -/Length 4795 +/Length 5089 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.20)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.20)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(owned)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(owned)]TJ ET q 1 0 0 1 194.903 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 198.489 706.129 Td [(index)-250(\227)]TJ +/F75 11.9552 Tf 198.489 706.129 Td [(index)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -98.594 -18.964 Td [(call)-525(psb_owned_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -98.594 -18.964 Td [(call)-525(psb_owned_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 120.408 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 545.696 Td [(a)]TJ +/F75 9.9626 Tf 123.397 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 497.875 Td [(desc)]TJ ET q 1 0 0 1 333.945 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 497.875 Td [(type)]TJ +/F131 9.9626 Tf 337.084 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 442.084 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 442.084 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 442.084 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 442.084 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 442.084 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 442.084 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 442.084 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 420.166 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(A)-200(logical)-200(mask)-200(which)-201(is)-200(tr)8(ue)-200(for)-200(all)-200(corr)18(esponding)-200(entries)-200(of)]TJ/F60 9.9626 Tf 260.812 0 Td [(x)]TJ/F62 9.9626 Tf 7.2 0 Td [(that)-200(ar)18(e)-200(owned)]TJ -253.626 -11.955 Td [(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F59 9.9626 Tf 131.027 0 Td [(local)]TJ/F62 9.9626 Tf -131.027 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 110.027 400.241 Tm [(A)-251(logical)-251(mask)-251(which)-251(is)-251(tr)8(ue)-251(for)-251(all)-251(corr)18(esponding)-251(entrie)1(s)-252(of)]TJ/F78 9.9626 Tf 1 0 0 1 371.086 400.241 Tm [(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 378.742 400.241 Tm [(that)-251(ar)18(e)-251(owned)]TJ 1 0 0 1 124.802 388.286 Tm [(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F75 9.9626 Tf 131.027 0 Td [(local)]TJ/F84 9.9626 Tf -131.336 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-429(r)18(outine)-428(r)18(eturns)-429(a)]TJ/F67 9.9626 Tf 117.209 0 Td [(.true.)]TJ/F62 9.9626 Tf 35.654 0 Td [(value)-429(for)-428(those)-429(indices)-429(that)-429(ar)18(e)-428(strictly)]TJ -140.41 -11.955 Td [(owned)-250(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ + 1.02 0 0 1 124.493 242.831 Tm [(This)-383(r)17(outine)-383(r)17(eturns)-383(a)]TJ/F131 9.9626 Tf 1 0 0 1 229.511 242.831 Tm [(.true.)]TJ/F84 9.9626 Tf 1.02 0 0 1 264.79 242.831 Tm [(value)-383(for)-384(those)-383(indices)-384(that)-383(ar)17(e)-383(strictly)]TJ 1 0 0 1 124.802 230.876 Tm [(owned)-250(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ 0 g 0 G 139.477 -140.438 Td [(101)]TJ 0 g 0 G @@ -20694,175 +20690,175 @@ ET endstream endobj -1671 0 obj +1674 0 obj << -/Length 3147 +/Length 3283 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.21)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.21)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(is)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(is)]TJ ET q 1 0 0 1 217.809 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 221.396 706.129 Td [(local)-250(\227)]TJ +/F75 11.9552 Tf 221.396 706.129 Td [(local)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_local\050x,)-525(desc_a\051)]TJ +/F131 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_local\050x,)-525(desc_a\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 171.218 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 545.696 Td [(a)]TJ +/F75 9.9626 Tf 174.207 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 497.875 Td [(desc)]TJ ET q 1 0 0 1 384.755 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 497.875 Td [(type)]TJ +/F131 9.9626 Tf 387.893 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)-244(logical)-244(mask)-243(which)-244(is)-244(tr)8(ue)-244(if)]TJ/F60 9.9626 Tf 136.118 0 Td [(x)]TJ/F62 9.9626 Tf 7.635 0 Td [(is)-244(local)-244(to)-243(the)-244(curr)18(ent)-244(pr)18(ocess)]TJ -191.623 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ +/F84 9.9626 Tf 0.998 0 0 1 223.093 456.032 Tm [(A)-251(logical)-251(mask)-251(which)-251(is)-251(t)1(r)8(ue)-251(if)]TJ/F78 9.9626 Tf 1 0 0 1 359.436 456.032 Tm [(x)]TJ/F84 9.9626 Tf 0.998 0 0 1 367.136 456.032 Tm [(is)-251(local)-251(to)-251(the)-251(curr)18(ent)-250(pr)18(ocess)]TJ 1 0 0 1 175.611 444.077 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-199(r)18(outine)-200(r)18(eturns)-199(a)]TJ/F67 9.9626 Tf 108.069 0 Td [(.true.)]TJ/F62 9.9626 Tf 33.369 0 Td [(value)-199(for)-200(an)-199(index)-199(that)-200(is)-199(local)-200(to)-199(the)-199(curr)18(ent)]TJ -128.984 -11.955 Td [(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices)]TJ + 0.98 0 0 1 175.303 366.368 Tm [(This)-244(r)19(outine)-244(r)18(eturns)-243(a)]TJ/F131 9.9626 Tf 1 0 0 1 270.733 366.368 Tm [(.true.)]TJ/F84 9.9626 Tf 0.98 0 0 1 304.495 366.368 Tm [(value)-244(for)-243(an)-244(index)-244(that)-244(is)-244(local)-243(to)-244(the)-244(curr)19(ent)]TJ 1 0 0 1 175.313 354.413 Tm [(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices)]TJ 0 g 0 G - 139.476 -263.975 Td [(102)]TJ + 139.775 -263.975 Td [(102)]TJ 0 g 0 G ET endstream endobj -1677 0 obj +1680 0 obj << -/Length 4785 +/Length 5077 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.22)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.22)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(local)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(local)]TJ ET q 1 0 0 1 183.605 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 187.192 706.129 Td [(index)-250(\227)]TJ +/F75 11.9552 Tf 187.192 706.129 Td [(index)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -87.297 -18.964 Td [(call)-525(psb_local_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -87.297 -18.964 Td [(call)-525(psb_local_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 120.408 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 545.696 Td [(a)]TJ +/F75 9.9626 Tf 123.397 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 497.875 Td [(desc)]TJ ET q 1 0 0 1 333.945 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 497.875 Td [(type)]TJ +/F131 9.9626 Tf 337.084 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 442.084 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 442.084 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 442.084 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 442.084 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 442.084 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 442.084 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 442.084 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 420.166 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(A)-270(logical)-270(mask)-270(which)-271(is)-270(tr)8(ue)-270(for)-270(all)-270(corr)18(esponding)-270(entries)-270(of)]TJ/F60 9.9626 Tf 268.484 0 Td [(x)]TJ/F62 9.9626 Tf 7.897 0 Td [(that)-270(ar)18(e)-270(local)]TJ -261.995 -11.955 Td [(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F59 9.9626 Tf 128.666 0 Td [(local)]TJ/F62 9.9626 Tf -128.666 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.011 0 0 1 110.027 400.241 Tm [(A)-247(logical)-248(mask)-247(which)-247(is)-248(tr)8(ue)-247(for)-247(all)-248(corr)18(esponding)-247(entries)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 378.933 400.241 Tm [(x)]TJ/F84 9.9626 Tf 1.011 0 0 1 386.63 400.241 Tm [(that)-247(ar)17(e)-247(local)]TJ 1 0 0 1 124.802 388.286 Tm [(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F75 9.9626 Tf 128.666 0 Td [(local)]TJ/F84 9.9626 Tf -128.975 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-264(r)18(outine)-265(r)18(eturns)-264(a)]TJ/F67 9.9626 Tf 110.663 0 Td [(.true.)]TJ/F62 9.9626 Tf 34.017 0 Td [(value)-264(for)-265(those)-264(indices)-265(that)-264(ar)18(e)-265(local)-264(to)-265(the)]TJ -132.227 -11.955 Td [(curr)18(ent)-250(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices.)]TJ + 1.009 0 0 1 124.493 242.831 Tm [(This)-247(r)18(outine)-247(r)18(eturns)-247(a)]TJ/F131 9.9626 Tf 1 0 0 1 222.888 242.831 Tm [(.true.)]TJ/F84 9.9626 Tf 1.009 0 0 1 256.753 242.831 Tm [(value)-247(for)-247(those)-247(indices)-247(that)-247(ar)18(e)-247(local)-247(to)-247(the)]TJ 1 0 0 1 124.802 230.876 Tm [(curr)18(ent)-250(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices.)]TJ 0 g 0 G 139.477 -140.438 Td [(103)]TJ 0 g 0 G @@ -20870,161 +20866,161 @@ ET endstream endobj -1684 0 obj +1687 0 obj << -/Length 3647 +/Length 3772 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.23)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.23)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(get)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(get)]TJ ET q 1 0 0 1 225.126 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 228.712 706.129 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ +/F75 11.9552 Tf 228.712 706.129 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -78.007 -18.964 Td [(call)-525(psb_get_boundary\050bndel,)-525(desc,)-525(info\051)]TJ +/F131 9.9626 Tf -78.007 -18.964 Td [(call)-525(psb_get_boundary\050bndel,)-525(desc,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ ET q 1 0 0 1 384.755 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 577.576 Td [(type)]TJ +/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(bndel)]TJ 0 g 0 G -/F62 9.9626 Tf 31.541 0 Td [(The)-307(list)-307(of)-307(boundary)-307(elements)-307(on)-306(the)-307(calling)-307(pr)18(ocess,)-321(in)-307(local)-307(number)18(-)]TJ -6.635 -11.955 Td [(ing.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Speci\002ed)-234(as:)-302(a)-234(rank)-234(one)-234(a)-1(r)1(ray)-235(with)-234(the)-234(ALLOCA)74(T)74(ABLE)-234(attribute,)-237(of)-234(type)]TJ 0 -11.955 Td [(integer)74(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 181.938 535.733 Tm [(The)-245(list)-245(of)-245(boundary)-245(elements)-245(on)-245(the)-245(calling)-245(pr)18(ocess,)-247(in)-245(local)-245(numbering.)]TJ 1 0 0 1 175.611 523.778 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.994 0 0 1 175.611 487.912 Tm [(Speci\002ed)-253(as:)-314(a)-252(rank)-253(one)-252(array)-253(with)-253(the)-252(ALLOCA)74(T)75(ABLE)-253(attribute,)-253(of)-252(type)]TJ 1 0 0 1 175.611 475.957 Tm [(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -31.88 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(If)-219(ther)18(e)-220(ar)18(e)-219(no)-220(boundary)-219(elements)-219(\050i.e.,)-226(if)-219(the)-220(local)-219(part)-219(of)-220(the)-219(connectivity)]TJ 12.453 -11.956 Td [(graph)-391(is)-392(self-contained\051)-391(the)-392(output)-391(vector)-391(is)-392(set)-391(to)-391(the)-392(\223not)-391(allocated\224)]TJ 0 -11.955 Td [(state.)]TJ + 0.988 0 0 1 175.611 354.413 Tm [(If)-253(ther)18(e)-252(ar)18(e)-253(no)-253(boundary)-253(elements)-253(\050i.e.,)-252(if)-253(the)-253(local)-253(part)-253(of)-253(the)-252(connectivity)]TJ 0.98 0 0 1 175.611 342.458 Tm [(graph)-236(is)-236(self-contained\051)-236(the)-236(output)-236(vector)-236(is)-236(set)-236(to)-236(the)-236(\223not)-236(allocated\224)-236(state.)]TJ 0 g 0 G - -12.453 -19.925 Td [(2.)]TJ + 1 0 0 1 163.158 322.532 Tm [(2.)]TJ 0 g 0 G - [-500(Otherwise)-206(the)-205(size)-206(of)]TJ/F67 9.9626 Tf 105.891 0 Td [(bndel)]TJ/F62 9.9626 Tf 28.201 0 Td [(will)-206(be)-205(exactly)-206(equal)-206(to)-206(the)-205(number)-206(of)-206(bound-)]TJ -121.639 -11.955 Td [(ary)-250(elements.)]TJ + 0.985 0 0 1 175.611 322.532 Tm [(Otherwise)-253(the)-253(size)-253(of)]TJ/F131 9.9626 Tf 1 0 0 1 269.507 322.532 Tm [(bndel)]TJ/F84 9.9626 Tf 0.985 0 0 1 298.142 322.532 Tm [(will)-253(be)-253(exactly)-253(equal)-253(to)-253(the)-253(number)-254(of)-253(bound-)]TJ 1 0 0 1 175.611 310.577 Tm [(ary)-250(elements.)]TJ 0 g 0 G - 139.477 -196.229 Td [(104)]TJ + 139.477 -220.139 Td [(104)]TJ 0 g 0 G ET endstream endobj -1691 0 obj +1694 0 obj << -/Length 3458 +/Length 3587 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.24)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.24)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(get)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(get)]TJ ET q 1 0 0 1 174.316 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 177.903 706.129 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ +/F75 11.9552 Tf 177.903 706.129 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -78.008 -18.964 Td [(call)-525(psb_get_overlap\050ovrel,)-525(desc,)-525(info\051)]TJ +/F131 9.9626 Tf -78.008 -18.964 Td [(call)-525(psb_get_overlap\050ovrel,)-525(desc,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 577.576 Td [(desc)]TJ ET q 1 0 0 1 333.945 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 577.576 Td [(type)]TJ +/F131 9.9626 Tf 337.084 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(ovrel)]TJ 0 g 0 G -/F62 9.9626 Tf 28.234 0 Td [(The)-250(list)-250(of)-250(overlap)-250(elements)-250(on)-250(the)-250(calling)-250(pr)18(ocess,)-250(in)-250(local)-250(numbering.)]TJ -3.327 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-234(as:)-302(a)-234(rank)-234(one)-234(array)-235(with)-234(the)-234(ALLOCA)74(T)74(ABLE)-234(attribute,)-237(of)-234(type)]TJ 0 -11.955 Td [(integer)74(.)]TJ +/F84 9.9626 Tf 27.925 0 Td [(The)-250(list)-250(of)-250(overlap)-250(elements)-250(on)-250(the)-250(calling)-250(pr)18(ocess,)-250(in)-250(local)-250(numbering.)]TJ -3.018 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.994 0 0 1 124.802 487.912 Tm [(Speci\002ed)-253(as:)-314(a)-252(rank)-253(one)-252(array)-253(with)-253(the)-252(ALLOCA)74(T)75(ABLE)-253(attribute,)-253(of)-252(type)]TJ 1 0 0 1 124.802 475.957 Tm [(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(If)-287(ther)18(e)-287(ar)18(e)-287(no)-287(overlap)-287(elements)-287(the)-287(output)-287(vector)-287(is)-287(set)-287(to)-287(the)-287(\223not)-287(allo-)]TJ 12.453 -11.955 Td [(cated\224)-250(state.)]TJ + 1.02 0 0 1 124.802 354.413 Tm [(If)-254(ther)18(e)-254(ar)18(e)-254(no)-254(overlap)-254(elements)-253(the)-254(output)-254(vector)-254(is)-253(set)-254(to)-254(the)-254(\223not)-253(allo-)]TJ 1 0 0 1 124.802 342.458 Tm [(cated\224)-250(state.)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(Otherwise)-194(the)-194(size)-195(of)]TJ/F67 9.9626 Tf 105.434 0 Td [(ovrel)]TJ/F62 9.9626 Tf 28.087 0 Td [(will)-194(be)-194(exactly)-195(equal)-194(to)-194(the)-194(number)-195(of)-194(overlap)]TJ -121.068 -11.955 Td [(elements.)]TJ + 0.98 0 0 1 124.802 322.532 Tm [(Otherwise)-243(the)-242(size)-243(of)]TJ/F131 9.9626 Tf 1 0 0 1 217.816 322.532 Tm [(ovrel)]TJ/F84 9.9626 Tf 0.98 0 0 1 246.338 322.532 Tm [(will)-243(be)-242(exactly)-243(equal)-243(to)-242(the)-243(number)-243(of)-243(overlap)]TJ 1 0 0 1 124.802 310.577 Tm [(elements.)]TJ 0 g 0 G 139.477 -220.139 Td [(105)]TJ 0 g 0 G @@ -21032,127 +21028,127 @@ ET endstream endobj -1698 0 obj +1701 0 obj << -/Length 5480 +/Length 5568 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.25)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.25)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(sp)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(sp)]TJ ET q 1 0 0 1 221.133 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 224.719 706.129 Td [(getrow)-250(\227)-250(Extract)-250(row\050s\051)-250(from)-250(a)-250(sparse)-250(matrix)]TJ +/F75 11.9552 Tf 224.719 706.129 Td [(getrow)-250(\227)-250(Extract)-250(row\050s\051)-250(from)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -74.014 -19.204 Td [(call)-525(psb_sp_getrow\050row,)-525(a,)-525(nz,)-525(ia,)-525(ja,)-525(val,)-525(info,)-525(&)]TJ 73.225 -11.955 Td [(&)-525(append,)-525(nzin,)-525(lrw\051)]TJ +/F131 9.9626 Tf -74.014 -19.204 Td [(call)-525(psb_sp_getrow\050row,)-525(a,)-525(nz,)-525(ia,)-525(ja,)-525(val,)-525(info,)-525(&)]TJ 73.225 -11.955 Td [(&)-525(append,)-525(nzin,)-525(lrw\051)]TJ 0 g 0 G -/F59 9.9626 Tf -73.225 -22.29 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -73.225 -22.29 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.42 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.42 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.421 Td [(row)]TJ 0 g 0 G -/F62 9.9626 Tf 22.695 0 Td [(The)-250(\050\002rst\051)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 2.212 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf -23.999 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F69 10.3811 Tf 104.322 0 Td [(>)]TJ/F62 9.9626 Tf 10.962 0 Td [(0.)]TJ +/F84 9.9626 Tf 22.386 0 Td [(The)-250(\050\002rst\051)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 2.521 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.69 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F134 10.3811 Tf 104.322 0 Td [(>)]TJ/F84 9.9626 Tf 10.962 0 Td [(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -140.191 -20.42 Td [(a)]TJ +/F75 9.9626 Tf -140.191 -20.42 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(fr)18(om)-250(which)-250(to)-250(get)-250(r)18(ows.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf -23.999 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(fr)18(om)-250(which)-250(to)-250(get)-250(r)18(ows.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.69 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.137 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 495.976 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 495.777 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 495.777 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 495.976 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 495.777 Td [(type)]TJ +/F131 9.9626 Tf 398.354 495.777 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -20.421 Td [(append)]TJ +/F75 9.9626 Tf -268.57 -20.421 Td [(append)]TJ 0 g 0 G -/F62 9.9626 Tf 39.292 0 Td [(Whether)-250(to)-250(append)-250(or)-250(overwrite)-250(existing)-250(output.)]TJ -14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value)-250(default:)-310(false)-250(\050overwrite\051.)]TJ +/F84 9.9626 Tf 38.794 0 Td [(Whether)-250(to)-250(append)-250(or)-250(overwrite)-250(existing)-250(output.)]TJ -13.888 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value)-250(default:)-310(false)-250(\050overwrite\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(nzin)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(nzin)]TJ 0 g 0 G -/F62 9.9626 Tf 25.454 0 Td [(Input)-250(size)-250(to)-250(be)-250(appended)-250(to.)]TJ -0.548 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf -24 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-304(as:)-417(an)-303(integer)]TJ/F69 10.3811 Tf 106.988 0 Td [(>)]TJ/F62 9.9626 Tf 11.949 0 Td [(0.)-471(When)-303(append)-303(is)-304(tr)8(ue,)-317(speci\002es)-303(how)-304(many)]TJ -118.937 -11.955 Td [(entries)-250(in)-250(the)-250(output)-250(vectors)-250(ar)18(e)-250(alr)18(eady)-250(\002lled.)]TJ +/F84 9.9626 Tf 25.454 0 Td [(Input)-250(size)-250(to)-250(be)-250(appended)-250(to.)]TJ -0.548 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf -23.691 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 359.294 Tm [(Speci\002ed)-267(as:)-347(an)-267(integer)]TJ/F134 10.3811 Tf 1 0 0 1 282.912 359.294 Tm [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 294.283 359.294 Tm [(0.)-369(When)-267(append)-267(is)-267(tr)8(ue,)-272(speci\002es)-267(how)-267(many)]TJ 1 0 0 1 175.611 347.339 Tm [(entries)-250(in)-250(the)-250(output)-250(vectors)-250(ar)18(e)-250(alr)18(eady)-250(\002lled.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(lrw)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(lrw)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(The)-250(last)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 4.433 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F69 10.3811 Tf 104.323 0 Td [(>)]TJ/F62 9.9626 Tf 10.962 0 Td [(0,)-250(default:)]TJ/F60 9.9626 Tf 46.878 0 Td [(r)-17(o)-35(w)]TJ/F62 9.9626 Tf 16.134 0 Td [(.)]TJ +/F84 9.9626 Tf 20.164 0 Td [(The)-250(last)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F134 10.3811 Tf 104.323 0 Td [(>)]TJ/F84 9.9626 Tf 10.962 0 Td [(0,)-250(default:)]TJ/F78 9.9626 Tf 46.878 0 Td [(r)-17(o)-35(w)]TJ/F84 9.9626 Tf 16.134 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -203.203 -22.29 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -203.203 -22.29 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.42 Td [(nz)]TJ 0 g 0 G -/F62 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(elements)-250(r)18(eturned)-250(by)-250(this)-250(call.)]TJ 8.856 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(elements)-250(r)18(eturned)-250(by)-250(this)-250(call.)]TJ 8.856 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(ia)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(ia)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(r)18(ow)-250(indices.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F67 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F62 9.9626 Tf 60.025 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(r)18(ow)-250(indices.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F131 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F84 9.9626 Tf 60.025 0 Td [(attribute.)]TJ 0 g 0 G - -89.662 -29.887 Td [(106)]TJ + -89.662 -29.888 Td [(106)]TJ 0 g 0 G ET endstream endobj -1702 0 obj +1705 0 obj << -/Length 3529 +/Length 3776 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(ja)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(ja)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F67 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F62 9.9626 Tf 60.024 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 13.281 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F131 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F84 9.9626 Tf 60.024 0 Td [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.045 -19.925 Td [(val)]TJ +/F75 9.9626 Tf -254.045 -19.925 Td [(val)]TJ 0 g 0 G -/F62 9.9626 Tf 18.82 0 Td [(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(array)-250(with)-250(the)]TJ/F67 9.9626 Tf 148.761 0 Td [(ALLOCATABLE)]TJ/F62 9.9626 Tf 60.024 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 18.82 0 Td [(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(array)-250(with)-250(the)]TJ/F131 9.9626 Tf 148.761 0 Td [(ALLOCATABLE)]TJ/F84 9.9626 Tf 60.024 0 Td [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -233.692 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -233.692 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-307(output)]TJ/F60 9.9626 Tf 65.308 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 13.394 0 Td [(is)-307(always)-307(the)-307(size)-307(of)-307(the)-307(output)-307(generated)-307(by)-306(the)-307(curr)18(ent)]TJ -66.249 -11.955 Td [(call;)-283(thus,)-277(if)]TJ/F67 9.9626 Tf 53.971 0 Td [(append=.true.)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)-278(the)-271(total)-272(output)-272(size)-272(will)-272(be)]TJ/F60 9.9626 Tf 129.372 0 Td [(n)-25(z)-18(i)-32(n)]TJ/F93 10.3811 Tf 21.286 0 Td [(+)]TJ/F60 9.9626 Tf 10.336 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.337 0 Td [(,)-277(with)]TJ -293.296 -11.955 Td [(the)-292(newly)-293(extracted)-292(coef)18(\002cients)-293(stor)18(ed)-292(in)-293(entries)]TJ/F67 9.9626 Tf 217.177 0 Td [(nzin+1:nzin+nz)]TJ/F62 9.9626 Tf 76.139 0 Td [(of)-292(the)]TJ -293.316 -11.955 Td [(array)-250(ar)18(guments;)]TJ + 1.02 0 0 1 124.493 480.973 Tm [(The)-263(output)]TJ/F78 9.9626 Tf 1 0 0 1 177.501 480.973 Tm [(n)-25(z)]TJ/F84 9.9626 Tf 1.02 0 0 1 190.506 480.973 Tm [(is)-263(always)-262(the)-263(size)-262(of)-263(the)-262(output)-263(generated)-262(by)-263(the)-263(curr)18(ent)]TJ 1.016 0 0 1 124.802 469.018 Tm [(call;)-246(thus,)-246(if)]TJ/F131 9.9626 Tf 1 0 0 1 178.68 469.018 Tm [(append=.true.)]TJ/F84 9.9626 Tf 1.016 0 0 1 246.674 469.018 Tm [(,)-246(the)-246(total)-246(output)-246(size)-246(will)-246(be)]TJ/F78 9.9626 Tf 1 0 0 1 376.214 469.018 Tm [(n)-25(z)-18(i)-32(n)]TJ/F181 10.3811 Tf 21.203 0 Td [(+)]TJ/F78 9.9626 Tf 10.255 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 1.016 0 0 1 418.008 469.018 Tm [(,)-246(with)]TJ 1.017 0 0 1 124.802 457.063 Tm [(the)-247(newly)-246(extracted)-247(coef)18(\002cients)-247(stor)18(ed)-246(in)-247(entries)]TJ/F131 9.9626 Tf 1 0 0 1 342.424 457.063 Tm [(nzin+1:nzin+nz)]TJ/F84 9.9626 Tf 1.017 0 0 1 418.148 457.063 Tm [(of)-247(the)]TJ 1 0 0 1 124.802 445.108 Tm [(array)-250(ar)18(guments;)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(When)]TJ/F67 9.9626 Tf 41.275 0 Td [(append=.true.)]TJ/F62 9.9626 Tf 70.485 0 Td [(the)-250(output)-250(arrays)-250(ar)18(e)-250(r)18(eallocated)-250(as)-250(necessary;)]TJ + [-450(When)]TJ/F131 9.9626 Tf 40.777 0 Td [(append=.true.)]TJ/F84 9.9626 Tf 70.485 0 Td [(the)-250(output)-250(arrays)-250(ar)18(e)-250(r)18(eallocated)-250(as)-250(necessary;)]TJ 0 g 0 G - -111.76 -19.925 Td [(3.)]TJ + -111.262 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-218(r)18(ow)-218(and)-219(column)-218(indices)-218(ar)18(e)-218(r)18(eturned)-218(in)-219(the)-218(local)-218(numbering)-218(scheme;)]TJ 12.453 -11.955 Td [(if)-190(the)-190(global)-190(numbering)-190(is)-190(desir)18(ed,)-202(the)-190(user)-190(may)-190(employ)-190(the)]TJ/F67 9.9626 Tf 258.836 0 Td [(psb_loc_to_glob)]TJ/F62 9.9626 Tf -258.836 -11.955 Td [(r)18(outine)-250(on)-250(the)-250(output.)]TJ + 0.98 0 0 1 124.493 405.257 Tm [(The)-204(r)19(ow)-204(and)-204(column)-204(indices)-203(ar)18(e)-204(r)19(eturned)-204(in)-204(the)-204(local)-203(numbering)-204(scheme;)-221(if)]TJ 0.98 0 0 1 124.802 393.302 Tm [(the)-194(global)-194(numbering)-194(is)-193(desir)18(ed,)-206(the)-194(user)-194(may)-194(employ)-194(the)]TJ/F131 9.9626 Tf 1 0 0 1 370.892 393.302 Tm [(psb_loc_to_glob)]TJ/F84 9.9626 Tf -246.09 -11.955 Td [(r)18(outine)-250(on)-250(the)-250(output.)]TJ 0 g 0 G 139.477 -290.909 Td [(107)]TJ 0 g 0 G @@ -21160,112 +21156,112 @@ ET endstream endobj -1712 0 obj +1715 0 obj << -/Length 3995 +/Length 4037 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.26)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.26)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(memory)-250(occupation)-250(of)-250(a)-250(PSBLAS)-250(object.)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ/F84 9.9626 Tf -57.407 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(memory)-250(occupation)-250(of)-250(a)-250(PSBLAS)-250(object.)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -21.918 Td [(isz)-525(=)-525(psb_sizeof\050a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050desc_a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050prec\051)]TJ +/F131 9.9626 Tf 0.309 -21.918 Td [(isz)-525(=)-525(psb_sizeof\050a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050desc_a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050prec\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(A)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 72.97 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -65.344 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.574 0 Td [(A)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 72.97 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -64.956 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 531.947 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 531.748 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 531.748 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 531.947 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 531.748 Td [(type)]TJ +/F131 9.9626 Tf 398.354 531.748 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ ET q 1 0 0 1 171.218 512.022 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 511.823 Td [(a)]TJ +/F75 9.9626 Tf 174.207 511.823 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(Communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(Communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 464.201 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 464.002 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 464.002 Td [(desc)]TJ ET q 1 0 0 1 384.755 464.201 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 464.002 Td [(type)]TJ +/F131 9.9626 Tf 387.893 464.002 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(prec)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -30.874 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.182 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q 1 0 0 1 388.441 408.41 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 391.579 408.211 Td [(prec)]TJ +/F131 9.9626 Tf 391.579 408.211 Td [(prec)]TJ ET q 1 0 0 1 413.128 408.41 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 416.266 408.211 Td [(type)]TJ +/F131 9.9626 Tf 416.266 408.211 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -286.483 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(The)-322(memory)-322(occupation)-322(of)-323(the)-322(object)-322(speci\002ed)-322(in)-322(the)-322(calling)]TJ -47.87 -11.956 Td [(sequence,)-250(in)-250(bytes.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Returned)-250(as:)-310(an)]TJ/F67 9.9626 Tf 71.82 0 Td [(integer\050psb_long_int_k_\051)]TJ/F62 9.9626 Tf 128.019 0 Td [(number)74(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 223.173 368.361 Tm [(The)-266(memory)-266(occupation)-267(of)-266(the)-266(object)-267(spe)1(ci\002ed)-267(in)-266(the)-266(calling)]TJ 1 0 0 1 175.611 356.405 Tm [(sequence,)-250(in)-250(bytes.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Returned)-250(as:)-310(an)]TJ/F131 9.9626 Tf 71.82 0 Td [(integer\050psb_long_int_k_\051)]TJ/F84 9.9626 Tf 128.019 0 Td [(number)74(.)]TJ 0 g 0 G -60.362 -242.057 Td [(108)]TJ 0 g 0 G @@ -21273,55 +21269,60 @@ ET endstream endobj -1606 0 obj +1604 0 obj << /Type /ObjStm /N 100 -/First 975 -/Length 10444 ->> -stream -1602 0 1604 118 1605 176 1601 233 1611 327 1608 475 1609 621 1613 765 360 824 1610 882 -1615 1002 1617 1120 1618 1178 1619 1236 1614 1294 1624 1375 1620 1532 1621 1673 1622 1816 1626 1960 -364 2019 1627 2077 1628 2136 1623 2195 1632 2302 1629 2450 1630 2593 1634 2740 368 2798 1631 2855 -1636 2949 1638 3067 372 3126 1635 3184 1641 3291 1639 3430 1643 3577 376 3635 1640 3692 1646 3799 -1648 3917 1649 3976 1650 4035 1645 4094 1653 4175 1651 4314 1655 4461 380 4519 1652 4576 1658 4683 -1656 4822 1660 4969 384 5028 1661 5086 1657 5145 1664 5252 1662 5391 1666 5538 388 5596 1667 5653 -1663 5711 1670 5818 1668 5957 1672 6104 392 6163 1673 6221 1669 6280 1676 6387 1674 6526 1678 6673 -396 6731 1679 6788 1675 6846 1683 6953 1681 7092 1685 7237 400 7296 1686 7354 1687 7413 1682 7472 -1690 7566 1688 7705 1692 7850 405 7908 1693 7965 1694 8023 1689 8081 1697 8175 1695 8314 1699 8459 -409 8518 1696 8576 1701 8697 1703 8815 1704 8873 1705 8931 1706 8989 1700 9047 1711 9167 1707 9324 -% 1602 0 obj +/First 974 +/Length 10423 +>> +stream +1600 0 1606 108 1608 226 1609 284 1605 341 1614 436 1611 584 1612 730 1616 874 360 933 +1613 991 1618 1113 1620 1231 1621 1289 1622 1347 1617 1405 1627 1486 1623 1643 1624 1784 1625 1927 +1629 2069 364 2128 1630 2186 1631 2245 1626 2304 1635 2412 1632 2560 1633 2703 1637 2850 368 2908 +1634 2965 1639 3060 1641 3178 372 3237 1638 3295 1644 3403 1642 3542 1646 3689 376 3747 1643 3804 +1649 3912 1651 4030 1652 4089 1653 4148 1648 4207 1656 4289 1654 4428 1658 4575 380 4633 1655 4690 +1661 4798 1659 4937 1663 5084 384 5143 1664 5201 1660 5260 1667 5368 1665 5507 1669 5654 388 5712 +1670 5769 1666 5827 1673 5935 1671 6074 1675 6221 392 6280 1676 6338 1672 6397 1679 6505 1677 6644 +1681 6791 396 6849 1682 6906 1678 6964 1686 7072 1684 7211 1688 7356 400 7415 1689 7473 1690 7532 +1685 7591 1693 7686 1691 7825 1695 7970 405 8028 1696 8085 1697 8143 1692 8201 1700 8296 1698 8435 +1702 8580 409 8639 1699 8697 1704 8820 1706 8938 1707 8996 1708 9054 1709 9112 1703 9170 1714 9292 +% 1600 0 obj +<< +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1606 0 obj << /Type /Page -/Contents 1603 0 R -/Resources 1601 0 R +/Contents 1607 0 R +/Resources 1605 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1607 0 R +/Parent 1610 0 R >> -% 1604 0 obj +% 1608 0 obj << -/D [1602 0 R /XYZ 98.895 753.953 null] +/D [1606 0 R /XYZ 98.895 753.953 null] >> -% 1605 0 obj +% 1609 0 obj << -/D [1602 0 R /XYZ 99.895 632.19 null] +/D [1606 0 R /XYZ 99.895 632.19 null] >> -% 1601 0 obj +% 1605 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1611 0 obj +% 1614 0 obj << /Type /Page -/Contents 1612 0 R -/Resources 1610 0 R +/Contents 1615 0 R +/Resources 1613 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1607 0 R -/Annots [ 1608 0 R 1609 0 R ] +/Parent 1610 0 R +/Annots [ 1611 0 R 1612 0 R ] >> -% 1608 0 obj +% 1611 0 obj << /Type /Annot /Subtype /Link @@ -21329,62 +21330,62 @@ stream /Rect [342.753 362.621 409.811 374.68] /A << /S /GoTo /D (descdata) >> >> -% 1609 0 obj +% 1612 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [417.183 207.637 493.237 219.697] +/Rect [418.163 207.637 494.217 219.697] /A << /S /GoTo /D (vdata) >> >> -% 1613 0 obj +% 1616 0 obj << -/D [1611 0 R /XYZ 149.705 753.953 null] +/D [1614 0 R /XYZ 149.705 753.953 null] >> % 360 0 obj << -/D [1611 0 R /XYZ 150.705 716.092 null] +/D [1614 0 R /XYZ 150.705 716.092 null] >> -% 1610 0 obj +% 1613 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1615 0 obj +% 1618 0 obj << /Type /Page -/Contents 1616 0 R -/Resources 1614 0 R +/Contents 1619 0 R +/Resources 1617 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1607 0 R +/Parent 1610 0 R >> -% 1617 0 obj +% 1620 0 obj << -/D [1615 0 R /XYZ 98.895 753.953 null] +/D [1618 0 R /XYZ 98.895 753.953 null] >> -% 1618 0 obj +% 1621 0 obj << -/D [1615 0 R /XYZ 99.895 701.929 null] +/D [1618 0 R /XYZ 99.895 701.929 null] >> -% 1619 0 obj +% 1622 0 obj << -/D [1615 0 R /XYZ 99.895 680.684 null] +/D [1618 0 R /XYZ 99.895 680.684 null] >> -% 1614 0 obj +% 1617 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1624 0 obj +% 1627 0 obj << /Type /Page -/Contents 1625 0 R -/Resources 1623 0 R +/Contents 1628 0 R +/Resources 1626 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1607 0 R -/Annots [ 1620 0 R 1621 0 R 1622 0 R ] +/Parent 1610 0 R +/Annots [ 1623 0 R 1624 0 R 1625 0 R ] >> -% 1620 0 obj +% 1623 0 obj << /Type /Annot /Subtype /Link @@ -21392,7 +21393,7 @@ stream /Rect [310.942 573.77 378 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1621 0 obj +% 1624 0 obj << /Type /Annot /Subtype /Link @@ -21400,53 +21401,53 @@ stream /Rect [322.33 482.114 398.384 494.174] /A << /S /GoTo /D (vdata) >> >> -% 1622 0 obj +% 1625 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.165 380.495 301.219 392.555] +/Rect [207.9 380.495 283.954 392.555] /A << /S /GoTo /D (vdata) >> >> -% 1626 0 obj +% 1629 0 obj << -/D [1624 0 R /XYZ 149.705 753.953 null] +/D [1627 0 R /XYZ 149.705 753.953 null] >> % 364 0 obj << -/D [1624 0 R /XYZ 150.705 716.092 null] +/D [1627 0 R /XYZ 150.705 716.092 null] >> -% 1627 0 obj +% 1630 0 obj << -/D [1624 0 R /XYZ 150.705 278.482 null] +/D [1627 0 R /XYZ 150.705 278.482 null] >> -% 1628 0 obj +% 1631 0 obj << -/D [1624 0 R /XYZ 150.705 244.007 null] +/D [1627 0 R /XYZ 150.705 244.007 null] >> -% 1623 0 obj +% 1626 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1632 0 obj +% 1635 0 obj << /Type /Page -/Contents 1633 0 R -/Resources 1631 0 R +/Contents 1636 0 R +/Resources 1634 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1607 0 R -/Annots [ 1629 0 R 1630 0 R ] +/Parent 1610 0 R +/Annots [ 1632 0 R 1633 0 R ] >> -% 1629 0 obj +% 1632 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.355 561.815 250.41 573.875] +/Rect [157.09 561.815 233.145 573.875] /A << /S /GoTo /D (vdata) >> >> -% 1630 0 obj +% 1633 0 obj << /Type /Annot /Subtype /Link @@ -21454,50 +21455,50 @@ stream /Rect [260.133 482.114 327.191 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1634 0 obj +% 1637 0 obj << -/D [1632 0 R /XYZ 98.895 753.953 null] +/D [1635 0 R /XYZ 98.895 753.953 null] >> % 368 0 obj << -/D [1632 0 R /XYZ 99.895 716.092 null] +/D [1635 0 R /XYZ 99.895 716.092 null] >> -% 1631 0 obj +% 1634 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1636 0 obj +% 1639 0 obj << /Type /Page -/Contents 1637 0 R -/Resources 1635 0 R +/Contents 1640 0 R +/Resources 1638 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1607 0 R +/Parent 1610 0 R >> -% 1638 0 obj +% 1641 0 obj << -/D [1636 0 R /XYZ 149.705 753.953 null] +/D [1639 0 R /XYZ 149.705 753.953 null] >> % 372 0 obj << -/D [1636 0 R /XYZ 150.705 716.092 null] +/D [1639 0 R /XYZ 150.705 716.092 null] >> -% 1635 0 obj +% 1638 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1641 0 obj +% 1644 0 obj << /Type /Page -/Contents 1642 0 R -/Resources 1640 0 R +/Contents 1645 0 R +/Resources 1643 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1644 0 R -/Annots [ 1639 0 R ] +/Parent 1647 0 R +/Annots [ 1642 0 R ] >> -% 1639 0 obj +% 1642 0 obj << /Type /Annot /Subtype /Link @@ -21505,54 +21506,54 @@ stream /Rect [291.943 483.894 359.001 495.954] /A << /S /GoTo /D (descdata) >> >> -% 1643 0 obj +% 1646 0 obj << -/D [1641 0 R /XYZ 98.895 753.953 null] +/D [1644 0 R /XYZ 98.895 753.953 null] >> % 376 0 obj << -/D [1641 0 R /XYZ 99.895 716.092 null] +/D [1644 0 R /XYZ 99.895 716.092 null] >> -% 1640 0 obj +% 1643 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1646 0 obj +% 1649 0 obj << /Type /Page -/Contents 1647 0 R -/Resources 1645 0 R +/Contents 1650 0 R +/Resources 1648 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1644 0 R +/Parent 1647 0 R >> -% 1648 0 obj +% 1651 0 obj << -/D [1646 0 R /XYZ 149.705 753.953 null] +/D [1649 0 R /XYZ 149.705 753.953 null] >> -% 1649 0 obj +% 1652 0 obj << -/D [1646 0 R /XYZ 150.705 716.092 null] +/D [1649 0 R /XYZ 150.705 716.092 null] >> -% 1650 0 obj +% 1653 0 obj << -/D [1646 0 R /XYZ 150.705 687.379 null] +/D [1649 0 R /XYZ 150.705 687.379 null] >> -% 1645 0 obj +% 1648 0 obj << -/Font << /F62 671 0 R /F67 918 0 R >> +/Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1653 0 obj +% 1656 0 obj << /Type /Page -/Contents 1654 0 R -/Resources 1652 0 R +/Contents 1657 0 R +/Resources 1655 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1644 0 R -/Annots [ 1651 0 R ] +/Parent 1647 0 R +/Annots [ 1654 0 R ] >> -% 1651 0 obj +% 1654 0 obj << /Type /Annot /Subtype /Link @@ -21560,29 +21561,29 @@ stream /Rect [291.943 482.114 359.001 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1655 0 obj +% 1658 0 obj << -/D [1653 0 R /XYZ 98.895 753.953 null] +/D [1656 0 R /XYZ 98.895 753.953 null] >> % 380 0 obj << -/D [1653 0 R /XYZ 99.895 716.092 null] +/D [1656 0 R /XYZ 99.895 716.092 null] >> -% 1652 0 obj +% 1655 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1658 0 obj +% 1661 0 obj << /Type /Page -/Contents 1659 0 R -/Resources 1657 0 R +/Contents 1662 0 R +/Resources 1660 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1644 0 R -/Annots [ 1656 0 R ] +/Parent 1647 0 R +/Annots [ 1659 0 R ] >> -% 1656 0 obj +% 1659 0 obj << /Type /Annot /Subtype /Link @@ -21590,33 +21591,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1660 0 obj +% 1663 0 obj << -/D [1658 0 R /XYZ 149.705 753.953 null] +/D [1661 0 R /XYZ 149.705 753.953 null] >> % 384 0 obj << -/D [1658 0 R /XYZ 150.705 716.092 null] +/D [1661 0 R /XYZ 150.705 716.092 null] >> -% 1661 0 obj +% 1664 0 obj << -/D [1658 0 R /XYZ 150.705 382.093 null] +/D [1661 0 R /XYZ 150.705 382.093 null] >> -% 1657 0 obj +% 1660 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1664 0 obj +% 1667 0 obj << /Type /Page -/Contents 1665 0 R -/Resources 1663 0 R +/Contents 1668 0 R +/Resources 1666 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1644 0 R -/Annots [ 1662 0 R ] +/Parent 1647 0 R +/Annots [ 1665 0 R ] >> -% 1662 0 obj +% 1665 0 obj << /Type /Annot /Subtype /Link @@ -21624,33 +21625,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1666 0 obj +% 1669 0 obj << -/D [1664 0 R /XYZ 98.895 753.953 null] +/D [1667 0 R /XYZ 98.895 753.953 null] >> % 388 0 obj << -/D [1664 0 R /XYZ 99.895 716.092 null] +/D [1667 0 R /XYZ 99.895 716.092 null] >> -% 1667 0 obj +% 1670 0 obj << -/D [1664 0 R /XYZ 99.895 258.556 null] +/D [1667 0 R /XYZ 99.895 258.556 null] >> -% 1663 0 obj +% 1666 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1670 0 obj +% 1673 0 obj << /Type /Page -/Contents 1671 0 R -/Resources 1669 0 R +/Contents 1674 0 R +/Resources 1672 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1644 0 R -/Annots [ 1668 0 R ] +/Parent 1647 0 R +/Annots [ 1671 0 R ] >> -% 1668 0 obj +% 1671 0 obj << /Type /Annot /Subtype /Link @@ -21658,33 +21659,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1672 0 obj +% 1675 0 obj << -/D [1670 0 R /XYZ 149.705 753.953 null] +/D [1673 0 R /XYZ 149.705 753.953 null] >> % 392 0 obj << -/D [1670 0 R /XYZ 150.705 716.092 null] +/D [1673 0 R /XYZ 150.705 716.092 null] >> -% 1673 0 obj +% 1676 0 obj << -/D [1670 0 R /XYZ 150.705 382.093 null] +/D [1673 0 R /XYZ 150.705 382.093 null] >> -% 1669 0 obj +% 1672 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1676 0 obj +% 1679 0 obj << /Type /Page -/Contents 1677 0 R -/Resources 1675 0 R +/Contents 1680 0 R +/Resources 1678 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1680 0 R -/Annots [ 1674 0 R ] +/Parent 1683 0 R +/Annots [ 1677 0 R ] >> -% 1674 0 obj +% 1677 0 obj << /Type /Annot /Subtype /Link @@ -21692,33 +21693,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1678 0 obj +% 1681 0 obj << -/D [1676 0 R /XYZ 98.895 753.953 null] +/D [1679 0 R /XYZ 98.895 753.953 null] >> % 396 0 obj << -/D [1676 0 R /XYZ 99.895 716.092 null] +/D [1679 0 R /XYZ 99.895 716.092 null] >> -% 1679 0 obj +% 1682 0 obj << -/D [1676 0 R /XYZ 99.895 258.556 null] +/D [1679 0 R /XYZ 99.895 258.556 null] >> -% 1675 0 obj +% 1678 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1683 0 obj +% 1686 0 obj << /Type /Page -/Contents 1684 0 R -/Resources 1682 0 R +/Contents 1687 0 R +/Resources 1685 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1680 0 R -/Annots [ 1681 0 R ] +/Parent 1683 0 R +/Annots [ 1684 0 R ] >> -% 1681 0 obj +% 1684 0 obj << /Type /Annot /Subtype /Link @@ -21726,37 +21727,37 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1685 0 obj +% 1688 0 obj << -/D [1683 0 R /XYZ 149.705 753.953 null] +/D [1686 0 R /XYZ 149.705 753.953 null] >> % 400 0 obj << -/D [1683 0 R /XYZ 150.705 716.092 null] +/D [1686 0 R /XYZ 150.705 716.092 null] >> -% 1686 0 obj +% 1689 0 obj << -/D [1683 0 R /XYZ 150.705 358.183 null] +/D [1686 0 R /XYZ 150.705 370.138 null] >> -% 1687 0 obj +% 1690 0 obj << -/D [1683 0 R /XYZ 150.705 314.403 null] +/D [1686 0 R /XYZ 150.705 335.663 null] >> -% 1682 0 obj +% 1685 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1690 0 obj +% 1693 0 obj << /Type /Page -/Contents 1691 0 R -/Resources 1689 0 R +/Contents 1694 0 R +/Resources 1692 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1680 0 R -/Annots [ 1688 0 R ] +/Parent 1683 0 R +/Annots [ 1691 0 R ] >> -% 1688 0 obj +% 1691 0 obj << /Type /Annot /Subtype /Link @@ -21764,37 +21765,37 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1692 0 obj +% 1695 0 obj << -/D [1690 0 R /XYZ 98.895 753.953 null] +/D [1693 0 R /XYZ 98.895 753.953 null] >> % 405 0 obj << -/D [1690 0 R /XYZ 99.895 716.092 null] +/D [1693 0 R /XYZ 99.895 716.092 null] >> -% 1693 0 obj +% 1696 0 obj << -/D [1690 0 R /XYZ 99.895 370.138 null] +/D [1693 0 R /XYZ 99.895 370.138 null] >> -% 1694 0 obj +% 1697 0 obj << -/D [1690 0 R /XYZ 99.895 338.313 null] +/D [1693 0 R /XYZ 99.895 338.313 null] >> -% 1689 0 obj +% 1692 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1697 0 obj +% 1700 0 obj << /Type /Page -/Contents 1698 0 R -/Resources 1696 0 R +/Contents 1701 0 R +/Resources 1699 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1680 0 R -/Annots [ 1695 0 R ] +/Parent 1683 0 R +/Annots [ 1698 0 R ] >> -% 1695 0 obj +% 1698 0 obj << /Type /Annot /Subtype /Link @@ -21802,143 +21803,135 @@ stream /Rect [342.753 491.971 420.271 504.031] /A << /S /GoTo /D (spdata) >> >> -% 1699 0 obj +% 1702 0 obj << -/D [1697 0 R /XYZ 149.705 753.953 null] +/D [1700 0 R /XYZ 149.705 753.953 null] >> % 409 0 obj << -/D [1697 0 R /XYZ 150.705 716.092 null] +/D [1700 0 R /XYZ 150.705 716.092 null] >> -% 1696 0 obj +% 1699 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1466 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1469 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1701 0 obj +% 1704 0 obj << /Type /Page -/Contents 1702 0 R -/Resources 1700 0 R +/Contents 1705 0 R +/Resources 1703 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1680 0 R +/Parent 1683 0 R >> -% 1703 0 obj +% 1706 0 obj << -/D [1701 0 R /XYZ 98.895 753.953 null] +/D [1704 0 R /XYZ 98.895 753.953 null] >> -% 1704 0 obj +% 1707 0 obj << -/D [1701 0 R /XYZ 99.895 496.698 null] +/D [1704 0 R /XYZ 99.895 496.698 null] >> -% 1705 0 obj +% 1708 0 obj << -/D [1701 0 R /XYZ 99.895 438.313 null] +/D [1704 0 R /XYZ 99.895 438.313 null] >> -% 1706 0 obj +% 1709 0 obj << -/D [1701 0 R /XYZ 99.895 418.388 null] +/D [1704 0 R /XYZ 99.895 418.388 null] >> -% 1700 0 obj +% 1703 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1711 0 obj +% 1714 0 obj << /Type /Page -/Contents 1712 0 R -/Resources 1710 0 R +/Contents 1715 0 R +/Resources 1713 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1680 0 R -/Annots [ 1707 0 R 1708 0 R 1709 0 R ] ->> -% 1707 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 527.942 420.271 540.002] -/A << /S /GoTo /D (spdata) >> +/Parent 1683 0 R +/Annots [ 1710 0 R 1711 0 R 1712 0 R ] >> endstream endobj -1717 0 obj +1720 0 obj << -/Length 5626 +/Length 6042 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.27)-1000(Sorting)-250(utilities)-250(\227)]TJ 0 -20.164 Td [(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.27)-1000(Sorting)-250(utilities)-250(\227)]TJ -0.37 -20.164 Td [(psb)]TJ ET q -1 0 0 1 120.53 686.164 cm +1 0 0 1 120.159 686.164 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 685.965 Td [(msort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Merge-sort)-250(algorithm)]TJ -24.221 -12.574 Td [(psb)]TJ +/F75 11.9552 Tf 123.746 685.965 Td [(msort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Merge-sort)-250(algorithm)]TJ -24.221 -12.574 Td [(psb)]TJ ET q -1 0 0 1 120.53 673.59 cm +1 0 0 1 120.159 673.59 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 673.391 Td [(qsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Quicksort)-250(algorithm)]TJ -24.221 -12.575 Td [(psb)]TJ +/F75 11.9552 Tf 123.746 673.391 Td [(qsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Quicksort)-250(algorithm)]TJ -24.221 -12.575 Td [(psb)]TJ ET q -1 0 0 1 120.53 661.016 cm +1 0 0 1 120.159 661.016 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 660.816 Td [(hsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Heapsort)-250(algorithm)]TJ +/F75 11.9552 Tf 123.746 660.816 Td [(hsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Heapsort)-250(algorithm)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -24.221 -22.402 Td [(call)-525(psb_msort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag\051)]TJ/F62 9.9626 Tf 14.944 -21.783 Td [(These)-236(serial)-235(r)18(outines)-236(sort)-236(a)-235(sequence)]TJ/F60 9.9626 Tf 162.066 0 Td [(X)]TJ/F62 9.9626 Tf 9.884 0 Td [(into)-236(ascending)-235(or)-236(descending)-236(or)18(der)74(.)]TJ -186.894 -11.955 Td [(The)-243(ar)18(gument)-243(meaning)-243(is)-242(identical)-243(for)-243(the)-243(thr)18(ee)-243(calls;)-245(the)-243(only)-243(dif)18(fer)18(ence)-242(is)-243(the)]TJ 0 -11.955 Td [(algorithm)-250(used)-250(to)-250(accomplish)-250(the)-250(task)-250(\050see)-250(Usage)-250(Notes)-250(below\051.)]TJ +/F131 9.9626 Tf -23.851 -22.402 Td [(call)-525(psb_msort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag\051)]TJ/F84 9.9626 Tf 1.001 0 0 1 114.839 592.721 Tm [(These)-249(serial)-248(r)18(outines)-249(sort)-248(a)-249(sequence)]TJ/F78 9.9626 Tf 1 0 0 1 277.842 592.721 Tm [(X)]TJ/F84 9.9626 Tf 1.001 0 0 1 287.858 592.721 Tm [(into)-249(ascending)-248(or)-249(descending)-248(or)18(der)73(.)]TJ 0.998 0 0 1 99.587 580.766 Tm [(The)-251(ar)18(gument)-250(meaning)-251(is)-251(identical)-250(for)-251(the)-251(thr)18(ee)-251(calls;)-250(the)-251(only)-251(dif)18(fer)18(ence)-251(is)-250(the)]TJ 1 0 0 1 99.895 568.811 Tm [(algorithm)-250(used)-250(to)-250(accomplish)-250(the)-250(task)-250(\050see)-250(Usage)-250(Notes)-250(below\051.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.783 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.783 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.402 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.402 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.402 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(sequence)-250(to)-250(be)-250(sorted.)]TJ 14.944 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(sequence)-250(to)-250(be)-250(sorted.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ +/F75 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.626 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(\050at)-250(least\051)-250(the)-250(same)-250(size)-250(as)]TJ/F60 9.9626 Tf 254.189 0 Td [(X)]TJ/F62 9.9626 Tf 7.537 0 Td [(.)]TJ +/F84 9.9626 Tf 12.892 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.706 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(\050at)-250(least\051)-250(the)-250(same)-250(size)-250(as)]TJ/F78 9.9626 Tf 254.189 0 Td [(X)]TJ/F84 9.9626 Tf 7.537 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.633 -22.402 Td [(dir)]TJ +/F75 9.9626 Tf -286.633 -22.402 Td [(dir)]TJ 0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(The)-250(desir)18(ed)-250(or)18(dering.)]TJ 6.645 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value:)]TJ +/F84 9.9626 Tf 17.953 0 Td [(The)-250(desir)18(ed)-250(or)18(dering.)]TJ 6.645 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.402 Td [(Integer)-250(and)-250(real)-250(data:)]TJ +/F75 9.9626 Tf 0 -22.402 Td [(Integer)-250(and)-250(real)-250(data:)]TJ 0 g 0 G -/F67 9.9626 Tf 101.28 0 Td [(psb_sort_up_)]TJ/F62 9.9626 Tf 62.764 0 Td [(,)]TJ/F67 9.9626 Tf 5.525 0 Td [(psb_sort_down_)]TJ/F62 9.9626 Tf 73.225 0 Td [(,)]TJ/F67 9.9626 Tf 5.525 0 Td [(psb_asort_up_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf -294.396 -11.955 Td [(psb_asort_down_)]TJ/F62 9.9626 Tf 78.455 0 Td [(;)-250(default)]TJ/F67 9.9626 Tf 38.784 0 Td [(psb_sort_up_)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ +/F131 9.9626 Tf 101.28 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 288.846 363.286 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 294.969 363.286 Tm [(psb_sort_down_)]TJ/F84 9.9626 Tf 1.02 0 0 1 368.194 363.286 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 374.317 363.286 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.311 363.286 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 146.72 351.331 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 78.455 0 Td [(;)-250(default)]TJ/F131 9.9626 Tf 38.784 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 62.764 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -201.921 -17.178 Td [(Complex)-250(data:)]TJ +/F75 9.9626 Tf -201.921 -17.178 Td [(Complex)-250(data:)]TJ 0 g 0 G -/F67 9.9626 Tf 70.286 0 Td [(psb_lsort_up_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_lsort_down_)]TJ/F62 9.9626 Tf 78.455 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_asort_up_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ/F67 9.9626 Tf 4.504 0 Td [(psb_asort_down_)]TJ/F62 9.9626 Tf 78.455 0 Td [(;)]TJ -354.777 -11.956 Td [(default)]TJ/F67 9.9626 Tf 33.803 0 Td [(psb_lsort_up_)]TJ/F62 9.9626 Tf 67.994 0 Td [(.)]TJ +/F131 9.9626 Tf 70.286 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 263.083 334.153 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 267.536 334.153 Tm [(psb_lsort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 345.991 334.153 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 350.444 334.153 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 418.439 334.153 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 422.892 334.153 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 501.347 334.153 Tm [(;)]TJ 1 0 0 1 146.72 322.197 Tm [(default)]TJ/F131 9.9626 Tf 33.803 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 67.994 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -148.622 -22.402 Td [(\003ag)]TJ +/F75 9.9626 Tf -148.622 -22.402 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(Whether)-250(to)-250(keep)-250(the)-250(original)-250(values)-250(in)]TJ/F60 9.9626 Tf 171.52 0 Td [(I)-81(X)]TJ/F62 9.9626 Tf 11.661 0 Td [(.)]TJ -179.863 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)-190(value)]TJ/F67 9.9626 Tf 128.287 0 Td [(psb_sort_ovw_idx_)]TJ/F62 9.9626 Tf 90.809 0 Td [(or)]TJ/F67 9.9626 Tf 11.268 0 Td [(psb_sort_keep_idx_)]TJ/F62 9.9626 Tf 94.146 0 Td [(;)]TJ -324.51 -11.955 Td [(default)]TJ/F67 9.9626 Tf 33.803 0 Td [(psb_sort_ovw_idx_)]TJ/F62 9.9626 Tf 88.916 0 Td [(.)]TJ +/F84 9.9626 Tf 21.091 0 Td [(Whether)-250(to)-250(keep)-250(the)-250(original)-250(values)-250(in)]TJ/F78 9.9626 Tf 171.52 0 Td [(I)-81(X)]TJ/F84 9.9626 Tf 11.661 0 Td [(.)]TJ -179.674 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 0.98 0 0 1 124.802 275.885 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F131 9.9626 Tf 1 0 0 1 250.731 275.885 Tm [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 341.54 275.885 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 352.62 275.885 Tm [(psb_sort_keep_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 446.766 275.885 Tm [(;)]TJ 1 0 0 1 124.802 263.93 Tm [(default)]TJ/F131 9.9626 Tf 33.803 0 Td [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 88.916 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -147.626 -24.395 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -147.626 -24.395 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.402 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(sequence)-250(of)-250(values,)-250(in)-250(the)-250(chosen)-250(or)18(dering.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(sequence)-250(of)-250(values,)-250(in)-250(the)-250(chosen)-250(or)18(dering.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ +/F75 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.626 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-238(integer)-237(array)-238(of)-237(rank)-238(1,)-240(whose)-238(entries)-237(ar)18(e)-238(moved)-237(to)-238(the)-238(same)-237(position)]TJ 0 -11.955 Td [(as)-250(the)-250(corr)18(esponding)-250(entries)-250(in)]TJ/F60 9.9626 Tf 138.215 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ +/F84 9.9626 Tf 12.892 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.706 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.996 0 0 1 124.413 146.91 Tm [(An)-251(integer)-250(array)-251(of)-251(rank)-250(1,)-251(whose)-251(entries)-251(ar)19(e)-251(moved)-251(to)-251(th)1(e)-251(same)-251(position)]TJ 1 0 0 1 124.802 134.955 Tm [(as)-250(the)-250(corr)18(esponding)-250(entries)-250(in)]TJ/F78 9.9626 Tf 138.215 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0 g 0 G -3.943 -44.517 Td [(109)]TJ 0 g 0 G @@ -21946,107 +21939,107 @@ ET endstream endobj -1722 0 obj +1725 0 obj << -/Length 7300 +/Length 8197 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(Notes)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(For)-370(integer)-370(or)-370(r)18(eal)-370(data)-370(the)-370(sorting)-370(can)-370(be)-370(performed)-370(in)-370(the)-370(up/down)]TJ 12.453 -11.956 Td [(dir)18(ection,)-250(on)-250(the)-250(natural)-250(or)-250(absolute)-250(values;)]TJ + 1.02 0 0 1 175.611 686.204 Tm [(For)-318(integer)-317(or)-318(r)18(eal)-318(data)-318(the)-318(sorting)-317(can)-318(be)-318(performed)-317(in)-318(the)-318(up/down)]TJ 1 0 0 1 175.611 674.248 Tm [(dir)18(ection,)-250(on)-250(the)-250(natural)-250(or)-250(absolute)-250(values;)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(For)-329(complex)-330(data)-329(the)-330(sorting)-329(can)-330(be)-329(done)-329(in)-330(a)-329(lexicographic)-330(or)18(der)-329(\050i.e.:)]TJ 12.453 -11.955 Td [(sort)-263(on)-263(the)-263(r)18(eal)-263(part)-263(with)-263(ties)-263(br)18(oken)-263(accor)18(ding)-263(to)-263(the)-263(imaginary)-263(part\051)-263(or)]TJ 0 -11.955 Td [(on)-250(the)-250(absolute)-250(values;)]TJ + 1.02 0 0 1 175.611 654.323 Tm [(For)-287(complex)-288(data)-287(the)-287(sorting)-288(can)-287(be)-287(done)-288(in)-287(a)-287(lexicographic)-288(or)18(der)-287(\050i.e.:)]TJ 1.007 0 0 1 175.611 642.368 Tm [(sort)-247(on)-248(the)-247(r)18(eal)-248(part)-247(with)-248(ties)-247(br)18(oken)-247(accor)17(ding)-247(to)-247(the)-248(imaginary)-247(part\051)-248(or)]TJ 1 0 0 1 175.611 630.413 Tm [(on)-250(the)-250(absolute)-250(values;)]TJ 0 g 0 G -12.453 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-325(r)18(outines)-325(r)18(eturn)-325(the)-325(items)-324(in)-325(the)-325(chosen)-325(or)18(dering;)-362(the)-325(output)-325(dif)18(fer)18(-)]TJ 12.453 -11.956 Td [(ence)-244(is)-245(the)-244(handling)-244(of)-244(ties)-244(\050i.e.)-309(items)-244(with)-244(an)-244(equal)-245(v)1(alue\051)-245(in)-244(the)-244(original)]TJ 0 -11.955 Td [(input.)-316(W)55(ith)-252(the)-252(mer)18(ge-sort)-252(algorithm)-252(ties)-252(ar)18(e)-252(pr)18(eserved)-252(in)-252(the)-252(same)-252(r)18(ela-)]TJ 0 -11.955 Td [(tive)-278(or)18(der)-278(as)-278(they)-278(had)-278(in)-278(the)-278(original)-278(sequence,)-285(while)-278(this)-278(is)-278(not)-278(guaran-)]TJ 0 -11.955 Td [(teed)-250(for)-250(quicksort)-250(or)-250(heapsort;)]TJ + 0.98 0 0 1 175.303 610.488 Tm [(The)-240(r)18(outines)-240(r)19(eturn)-241(the)-240(items)-240(in)-240(the)-240(chosen)-240(or)18(dering;)-245(the)-240(output)-240(dif)18(fer)18(ence)]TJ 0.98 0 0 1 175.611 598.532 Tm [(is)-256(the)-256(handling)-256(of)-256(ties)-256(\050i.e.)-318(items)-256(with)-256(an)-256(equal)-256(value\051)-256(in)-256(the)-256(original)-256(input.)]TJ 0.98 0 0 1 175.113 586.577 Tm [(W)56(ith)-225(the)-226(mer)18(ge-sort)-225(algorithm)-226(ties)-225(ar)18(e)-225(pr)18(eserved)-225(in)-226(the)-225(same)-226(r)18(el)1(ative)-226(or)18(der)]TJ 1.02 0 0 1 175.611 574.622 Tm [(as)-352(they)-351(had)-352(in)-352(the)-351(original)-352(sequence,)-378(while)-352(this)-351(is)-352(not)-352(guaranteed)-351(for)]TJ 1 0 0 1 175.333 562.667 Tm [(quicksort)-250(or)-250(heapsort;)]TJ 0 g 0 G - -12.453 -19.925 Td [(4.)]TJ + -12.175 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(If)]TJ/F60 9.9626 Tf 22.66 0 Td [(f)-160(l)-70(a)-47(g)]TJ/F93 10.3811 Tf 20.72 0 Td [(=)]TJ/F60 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ + 0.98 0 0 1 175.611 542.742 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 185.955 542.742 Tm [(f)-160(l)-70(a)-47(g)]TJ/F181 10.3811 Tf 20.72 0 Td [(=)]TJ/F78 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ ET q -1 0 0 1 232.862 542.941 cm +1 0 0 1 232.999 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 235.975 542.742 Td [(s)-25(o)-25(r)-35(t)]TJ +/F78 9.9626 Tf 236.112 542.742 Td [(s)-25(o)-25(r)-35(t)]TJ ET q -1 0 0 1 253.036 542.941 cm +1 0 0 1 253.173 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 256.149 542.742 Td [(o)-35(v)-25(w)]TJ +/F78 9.9626 Tf 256.286 542.742 Td [(o)-35(v)-25(w)]TJ ET q -1 0 0 1 274.067 542.941 cm +1 0 0 1 274.204 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 277.11 542.742 Td [(i)-32(d)-42(x)]TJ +/F78 9.9626 Tf 277.248 542.742 Td [(i)-32(d)-42(x)]TJ ET q -1 0 0 1 291.402 542.941 cm +1 0 0 1 291.539 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 296.503 542.742 Td [(then)-212(the)-212(entries)-212(in)]TJ/F60 9.9626 Tf 80.283 0 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.588 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-290(:)]TJ/F60 9.9626 Tf 13.381 0 Td [(n)]TJ/F93 10.3811 Tf 5.788 0 Td [(\051)]TJ/F62 9.9626 Tf 6.262 0 Td [(wher)18(e)]TJ/F60 9.9626 Tf 29.644 0 Td [(n)]TJ/F62 9.9626 Tf 7.776 0 Td [(is)-212(the)-212(size)]TJ -276.762 -11.956 Td [(of)]TJ/F60 9.9626 Tf 12.255 0 Td [(x)]TJ/F62 9.9626 Tf 8.411 0 Td [(ar)18(e)-322(initialized)-321(to)]TJ/F60 9.9626 Tf 76.228 0 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.588 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 8.364 0 Td [(\040)]TJ/F60 9.9626 Tf 14.651 0 Td [(i)]TJ/F62 9.9626 Tf 2.963 0 Td [(;)-358(thus,)-339(upon)-322(r)18(eturn)-321(fr)18(om)-322(the)-322(subr)18(outine,)]TJ -138.753 -11.955 Td [(for)-270(each)-271(index)]TJ/F60 9.9626 Tf 65.501 0 Td [(i)]TJ/F62 9.9626 Tf 5.657 0 Td [(we)-270(have)-271(in)]TJ/F60 9.9626 Tf 51.095 0 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.587 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 6.843 0 Td [(the)-270(position)-271(that)-270(the)-270(item)]TJ/F60 9.9626 Tf 114.324 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 6.844 0 Td [(occupied)]TJ -278.766 -11.955 Td [(in)-250(the)-250(original)-250(data)-250(sequence;)]TJ +/F84 9.9626 Tf 0.98 0 0 1 296.91 542.742 Tm [(then)-244(the)-244(entries)-244(in)]TJ/F78 9.9626 Tf 1 0 0 1 376.841 542.742 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.588 0 Td [(\050)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.578 542.742 Tm [(1)]TJ 1 0 0 1 397.352 542.742 Tm [(:)]TJ/F78 9.9626 Tf 5.507 0 Td [(n)]TJ/F181 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 415.179 542.742 Tm [(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 444.542 542.742 Tm [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 452.589 542.742 Tm [(is)-244(the)-244(size)]TJ 0.984 0 0 1 175.611 530.786 Tm [(of)]TJ/F78 9.9626 Tf 1 0 0 1 187.015 530.786 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 194.714 530.786 Tm [(ar)18(e)-254(initialized)-254(to)]TJ/F78 9.9626 Tf 1 0 0 1 267.739 530.786 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.587 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F179 10.3811 Tf 7.045 0 Td [(\040)]TJ/F78 9.9626 Tf 13.332 0 Td [(i)]TJ/F84 9.9626 Tf 0.984 0 0 1 306.96 530.786 Tm [(;)-254(thus,)-255(upon)-254(r)18(eturn)-254(fr)18(om)-254(the)-254(subr)18(outine,)-254(for)]TJ 1.02 0 0 1 175.611 518.831 Tm [(each)-260(index)]TJ/F78 9.9626 Tf 1 0 0 1 226.513 518.831 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 232.117 518.831 Tm [(we)-260(have)-260(in)]TJ/F78 9.9626 Tf 1 0 0 1 283.912 518.831 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.587 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 306.582 518.831 Tm [(the)-260(position)-260(that)-259(the)-260(item)]TJ/F78 9.9626 Tf 1 0 0 1 422.652 518.831 Tm [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.064 518.831 Tm [(occupied)-260(in)]TJ 1 0 0 1 175.611 506.876 Tm [(the)-250(original)-250(data)-250(sequence;)]TJ 0 g 0 G -12.453 -19.925 Td [(5.)]TJ 0 g 0 G - [-500(If)]TJ/F60 9.9626 Tf 24.08 0 Td [(f)-160(l)-70(a)-47(g)]TJ/F93 10.3811 Tf 22.648 0 Td [(=)]TJ/F60 9.9626 Tf 13.563 0 Td [(p)-25(s)-25(b)]TJ + 1.02 0 0 1 175.611 486.951 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 187.101 486.951 Tm [(f)-160(l)-70(a)-47(g)]TJ/F181 10.3811 Tf 22.146 0 Td [(=)]TJ/F78 9.9626 Tf 13.061 0 Td [(p)-25(s)-25(b)]TJ ET q -1 0 0 1 238.138 487.15 cm +1 0 0 1 236.998 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 241.252 486.951 Td [(s)-25(o)-25(r)-35(t)]TJ +/F78 9.9626 Tf 240.111 486.951 Td [(s)-25(o)-25(r)-35(t)]TJ ET q -1 0 0 1 258.312 487.15 cm +1 0 0 1 257.172 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 261.426 486.951 Td [(k)-30(e)-25(e)-80(p)]TJ +/F78 9.9626 Tf 260.285 486.951 Td [(k)-30(e)-25(e)-80(p)]TJ ET q -1 0 0 1 280.648 487.15 cm +1 0 0 1 279.508 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 283.692 486.951 Td [(i)-32(d)-42(x)]TJ +/F78 9.9626 Tf 282.552 486.951 Td [(i)-32(d)-42(x)]TJ ET q -1 0 0 1 297.983 487.15 cm +1 0 0 1 296.843 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 304.504 486.951 Td [(the)-355(r)18(ou)1(tine)-355(will)-354(assume)-355(that)-355(th)1(e)-355(entries)-355(i)1(n)]TJ/F60 9.9626 Tf -128.838 -11.955 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.588 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)]TJ/F93 10.3811 Tf 2.74 0 Td [(\051)]TJ/F62 9.9626 Tf 6.64 0 Td [(have)-250(alr)18(eady)-250(been)-250(initialized)-250(by)-250(the)-250(user;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 303.093 486.951 Tm [(the)-321(r)18(outine)-321(will)-321(assume)-321(that)-321(the)-321(entries)-321(in)]TJ/F78 9.9626 Tf 1 0 0 1 175.666 474.996 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.588 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)]TJ/F181 10.3811 Tf 2.74 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(have)-250(alr)18(eady)-250(been)-250(initialized)-250(by)-250(the)-250(user;)]TJ 0 g 0 G -34.75 -19.926 Td [(6.)]TJ 0 g 0 G - [-500(The)-270(thr)18(ee)-269(sorting)-270(algorithms)-269(have)-270(a)-269(similar)]TJ/F60 9.9626 Tf 205.79 0 Td [(O)]TJ/F93 10.3811 Tf 8 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)]TJ/F62 9.9626 Tf 7.324 0 Td [(log)]TJ/F60 9.9626 Tf 15.663 0 Td [(n)]TJ/F93 10.3811 Tf 5.788 0 Td [(\051)]TJ/F62 9.9626 Tf 6.835 0 Td [(expected)-270(r)8(unning)]TJ -241.221 -11.955 Td [(time;)-278(in)-268(the)-268(average)-269(case)-268(quicksort)-268(will)-269(be)-268(the)-268(fastest)-269(and)-268(mer)18(ge-sort)-268(the)]TJ 0 -11.955 Td [(slowest.)-310(However)-250(note)-250(that:)]TJ + 1.008 0 0 1 175.303 455.07 Tm [(The)-249(thr)18(ee)-249(sorti)1(ng)-249(algorithms)-249(have)-249(a)-248(similar)]TJ/F78 9.9626 Tf 1 0 0 1 368.724 455.07 Tm [(O)]TJ/F181 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.663 0 Td [(n)]TJ/F181 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf 1.008 0 0 1 416.42 455.07 Tm [(expected)-249(r)8(unning)]TJ 1.008 0 0 1 175.611 443.115 Tm [(time;)-248(in)-248(the)-248(average)-248(case)-248(quicksort)-248(will)-247(be)-248(the)-248(fastest)-248(and)-248(mer)18(ge-sort)-248(the)]TJ 1 0 0 1 175.611 431.16 Tm [(slowest.)-310(However)-250(note)-250(that:)]TJ 0 g 0 G 5.321 -19.925 Td [(\050a\051)]TJ 0 g 0 G - [-500(The)-336(worst)-336(case)-336(r)8(unning)-336(time)-336(for)-337(quicksort)-336(is)]TJ/F60 9.9626 Tf 220.017 0 Td [(O)]TJ/F93 10.3811 Tf 8 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)]TJ/F62 7.5716 Tf 5.664 3.616 Td [(2)]TJ/F93 10.3811 Tf 4.408 -3.616 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-379(the)-336(algorithm)]TJ -229.916 -11.955 Td [(implemented)-293(her)18(e)-293(follows)-293(the)-292(well-known)-293(median-of-thr)18(ee)-293(heuris-)]TJ 0 -11.956 Td [(tics,)-250(but)-250(the)-250(worst)-250(case)-250(may)-250(still)-250(apply;)]TJ + 0.98 0 0 1 197.22 411.235 Tm [(The)-241(worst)-240(case)-241(r)8(unning)-241(time)-240(for)-241(quicksort)-241(is)]TJ/F78 9.9626 Tf 1 0 0 1 389.116 411.235 Tm [(O)]TJ/F181 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.663 3.616 Td [(2)]TJ/F181 10.3811 Tf 4.409 -3.616 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 415.611 411.235 Tm [(;)-246(the)-240(algorithm)-241(im-)]TJ 1.007 0 0 1 197.23 399.28 Tm [(plemented)-246(her)18(e)-246(follows)-246(the)-246(well-known)-246(median-of-thr)18(ee)-246(heuristics,)]TJ 1 0 0 1 197.529 387.324 Tm [(but)-250(the)-250(worst)-250(case)-250(may)-250(still)-250(apply;)]TJ 0 g 0 G -17.125 -15.94 Td [(\050b\051)]TJ 0 g 0 G - [-500(The)-190(worst)-190(case)-190(r)8(unning)-190(time)-190(for)-190(mer)18(ge-sort)-190(and)-190(heap-sort)-190(is)]TJ/F60 9.9626 Tf 277.76 0 Td [(O)]TJ/F93 10.3811 Tf 8 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)]TJ/F62 9.9626 Tf 7.324 0 Td [(log)]TJ/F60 9.9626 Tf 15.663 0 Td [(n)]TJ/F93 10.3811 Tf 5.788 0 Td [(\051)]TJ/F62 9.9626 Tf -301.684 -11.955 Td [(as)-250(the)-250(average)-250(case;)]TJ + 0.98 0 0 1 197.22 371.384 Tm [(The)-194(worst)-194(case)-194(r)9(unning)-194(time)-194(for)-194(mer)18(ge-sort)-194(and)-193(heap-sort)-194(is)]TJ/F78 9.9626 Tf 1 0 0 1 453.014 371.384 Tm [(O)]TJ/F181 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.662 0 Td [(n)]TJ/F181 10.3811 Tf 5.789 0 Td [(\051)]TJ/F84 9.9626 Tf -296.534 -11.955 Td [(as)-250(the)-250(average)-250(case;)]TJ 0 g 0 G - -16.04 -15.94 Td [(\050c\051)]TJ + -16.039 -15.94 Td [(\050c\051)]TJ 0 g 0 G - [-500(The)-244(mer)18(ge-sort)-244(algorithm)-243(is)-244(implemented)-244(to)-244(take)-244(advantage)-243(of)-244(sub-)]TJ 16.04 -11.955 Td [(sequences)-314(that)-313(may)-314(be)-314(alr)18(eady)-314(in)-313(the)-314(desir)18(ed)-314(or)18(dering)-314(prior)-313(to)-314(the)]TJ 0 -11.956 Td [(subr)18(outine)-390(call;)-459(this)-390(situation)-389(is)-390(r)18(elatively)-390(common)-389(when)-390(dealing)]TJ 0 -11.955 Td [(with)-335(gr)18(oups)-335(of)-335(indices)-335(of)-335(sparse)-336(matrix)-335(entries,)-356(thus)-335(mer)18(ge-sort)-335(is)]TJ 0 -11.955 Td [(the)-319(pr)18(eferr)18(ed)-318(choice)-319(when)-319(a)-318(sorting)-319(is)-319(needed)-318(by)-319(other)-319(r)18(outi)1(nes)-319(in)]TJ 0 -11.955 Td [(the)-250(library)111(.)]TJ + 1.005 0 0 1 197.22 343.489 Tm [(The)-249(mer)18(ge-sort)-249(algorithm)-249(is)-249(implemented)-250(to)-249(take)-249(advantage)-249(of)-249(sub-)]TJ 1.02 0 0 1 197.529 331.534 Tm [(sequences)-261(that)-260(may)-261(be)-260(alr)18(eady)-261(in)-261(the)-260(desir)18(ed)-261(or)18(dering)-261(prior)-260(to)-261(the)]TJ 1.02 0 0 1 197.529 319.578 Tm [(subr)18(outine)-321(call;)-358(this)-321(situation)-320(is)-321(r)18(elatively)-321(common)-320(when)-321(dealing)]TJ 0.98 0 0 1 197.111 307.623 Tm [(with)-239(gr)18(oups)-239(of)-240(indices)-239(of)-240(sparse)-239(matrix)-240(entries,)-242(thus)-240(mer)19(ge-sort)-240(is)-239(the)]TJ 1.02 0 0 1 197.23 295.668 Tm [(pr)18(eferr)17(ed)-268(choice)-268(when)-268(a)-268(sorting)-268(is)-268(needed)-268(by)-269(other)-268(r)18(outines)-268(in)-268(the)]TJ 1 0 0 1 197.529 283.713 Tm [(library)111(.)]TJ 0 g 0 G 117.559 -193.275 Td [(110)]TJ 0 g 0 G @@ -22054,7 +22047,7 @@ ET endstream endobj -1735 0 obj +1738 0 obj << /Length 171 >> @@ -22062,81 +22055,81 @@ stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 164.384 -615.346 Td [(111)]TJ +/F84 9.9626 Tf 164.384 -615.346 Td [(111)]TJ 0 g 0 G ET endstream endobj -1739 0 obj +1742 0 obj << -/Length 5510 +/Length 5790 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.1)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(environment)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(environment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_init\050ctxt,)-525(np,)-525(basectxt,)-525(ids\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-214(subr)18(outine)-215(initializes)-214(the)-215(PSBLAS)-214(parallel)-215(envir)18(onment,)-221(de\002ning)-215(a)-214(vir)18(-)]TJ -14.944 -11.955 Td [(tual)-250(parallel)-250(machine.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_init\050ctxt,)-525(np,)-525(basectxt,)-525(ids\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 665.247 Tm [(This)-354(subr)18(outine)-353(initializes)-354(the)-353(PSBLAS)-354(parallel)-353(envir)17(onment,)-380(de\002ning)-354(a)]TJ 1 0 0 1 150.426 653.292 Tm [(virtual)-250(parallel)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0.279 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(np)]TJ 0 g 0 G -/F62 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(all)-250(available)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(all)-250(available)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(basectxt)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(basectxt)]TJ 0 g 0 G -/F62 9.9626 Tf 41.494 0 Td [(the)-321(initial)-321(communication)-321(context.)-524(The)-321(new)-321(context)-321(will)-321(be)-321(de\002ned)]TJ -16.587 -11.955 Td [(fr)18(om)-250(the)-250(pr)18(ocesses)-250(participating)-250(in)-250(the)-250(initial)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(MPI)]TJ +/F84 9.9626 Tf 1.02 0 0 1 192.199 525.77 Tm [(the)-266(initial)-266(communication)-267(context.)-367(The)-266(new)-267(context)-266(will)-266(be)-266(de\002ned)]TJ 1 0 0 1 175.611 513.815 Tm [(fr)18(om)-250(the)-250(pr)18(ocesses)-250(participating)-250(in)-250(the)-250(initial)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(MPI)]TJ ET q 1 0 0 1 387.574 466.194 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 390.563 465.994 Td [(COMM)]TJ +/F84 9.9626 Tf 390.563 465.994 Td [(COMM)]TJ ET q 1 0 0 1 424.904 466.194 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 427.893 465.994 Td [(WORLD.)]TJ +/F84 9.9626 Tf 427.893 465.994 Td [(WORLD.)]TJ 0 g 0 G -/F59 9.9626 Tf -277.188 -19.925 Td [(ids)]TJ +/F75 9.9626 Tf -277.188 -19.925 Td [(ids)]TJ 0 g 0 G -/F62 9.9626 Tf 18.809 0 Td [(Identities)-306(of)-307(the)-306(pr)18(ocesses)-307(to)-306(use)-306(for)-307(the)-306(new)-306(context;)-335(the)-306(ar)18(gument)-307(is)-306(ig-)]TJ 6.097 -11.955 Td [(nor)18(ed)-388(when)]TJ/F67 9.9626 Tf 58.258 0 Td [(np)]TJ/F62 9.9626 Tf 14.324 0 Td [(is)-388(not)-388(speci\002ed.)-723(This)-388(allows)-388(the)-387(pr)18(ocesses)-388(in)-388(the)-388(new)]TJ -72.582 -11.955 Td [(envir)18(onment)-250(to)-250(be)-250(in)-250(an)-250(or)18(der)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(original)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)-560(Default:)-310(use)-250(the)-250(indices)]TJ/F93 10.3811 Tf 240.57 0 Td [(\050)]TJ/F62 9.9626 Tf 4.15 0 Td [(0)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.966 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 169.514 446.069 Tm [(Identities)-374(of)-374(the)-374(pr)18(ocesses)-374(to)-374(use)-374(for)-374(the)-373(new)-374(context;)-439(the)-373(ar)17(gument)-374(is)]TJ 1.02 0 0 1 175.611 434.114 Tm [(ignor)18(ed)-287(when)]TJ/F131 9.9626 Tf 1 0 0 1 241.58 434.114 Tm [(np)]TJ/F84 9.9626 Tf 1.02 0 0 1 254.95 434.114 Tm [(is)-286(not)-286(speci\002ed.)-428(This)-286(allows)-286(the)-286(pr)17(ocesses)-286(in)-286(the)-286(new)]TJ 1 0 0 1 175.611 422.159 Tm [(envir)18(onment)-250(to)-250(be)-250(in)-250(an)-250(or)18(der)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(original)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)-560(Default:)-310(use)-250(the)-250(indices)]TJ/F181 10.3811 Tf 240.57 0 Td [(\050)]TJ/F84 9.9626 Tf 4.15 0 Td [(0)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 19.966 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -322.483 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -322.483 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-285(communication)-284(context)-285(identifying)-285(the)-284(virtual)-285(parallel)-285(machine,)-293(type)]TJ/F67 9.9626 Tf 3.885 -11.955 Td [(psb_ctxt_type)]TJ/F62 9.9626 Tf 67.995 0 Td [(.)-327(Note)-256(that)-256(this)-256(is)-256(always)-256(a)-255(duplicate)-256(of)]TJ/F67 9.9626 Tf 174.426 0 Td [(basectxt)]TJ/F62 9.9626 Tf 41.842 0 Td [(,)-257(so)-256(that)]TJ -284.263 -11.955 Td [(library)-296(communications)-297(ar)18(e)-296(completely)-297(separated)-296(fr)18(om)-297(other)-296(communi-)]TJ 0 -11.955 Td [(cation)-250(operations.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -66.381 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 1.01 0 0 1 171.726 332.495 Tm [(the)-246(communication)-245(context)-246(identifying)-246(th)1(e)-246(virtual)-246(parallel)-245(machine,)-246(type)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 320.54 Tm [(psb_ctxt_type)]TJ/F84 9.9626 Tf 1.004 0 0 1 243.606 320.54 Tm [(.)-310(Note)-249(that)-250(this)-249(is)-249(always)-250(a)-249(duplicate)-249(of)]TJ/F131 9.9626 Tf 1 0 0 1 418.036 320.54 Tm [(basectxt)]TJ/F84 9.9626 Tf 1.004 0 0 1 459.879 320.54 Tm [(,)-249(so)-250(that)]TJ 0.985 0 0 1 175.611 308.585 Tm [(library)-255(communications)-256(ar)19(e)-256(completely)-255(separated)-256(fr)19(om)-256(other)-255(communica-)]TJ 1 0 0 1 175.611 296.63 Tm [(tion)-250(operations.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F75 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS)-250(call.)]TJ + [-461(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS)-250(call.)]TJ 0 g 0 G - 0 -19.926 Td [(2.)]TJ + 0 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(It)-194(is)-195(an)-194(err)18(or)-194(to)-194(specify)-195(a)-194(value)-194(for)]TJ/F60 9.9626 Tf 158.156 0 Td [(n)-80(p)]TJ/F62 9.9626 Tf 13.378 0 Td [(gr)18(eater)-194(than)-195(the)-194(number)-194(of)-194(pr)18(ocesses)]TJ -159.081 -11.955 Td [(available)-250(in)-250(the)-250(underlying)-250(base)-250(parallel)-250(envir)18(onment.)]TJ + 0.98 0 0 1 175.611 187.041 Tm [(It)-236(is)-237(an)-236(err)18(or)-236(to)-236(specify)-237(a)-236(value)-236(for)]TJ/F78 9.9626 Tf 1 0 0 1 322.093 187.041 Tm [(n)-80(p)]TJ/F84 9.9626 Tf 0.98 0 0 1 335.842 187.041 Tm [(gr)18(eater)-236(than)-236(the)-237(number)-236(of)-236(pr)18(ocesses)]TJ 1 0 0 1 175.611 175.085 Tm [(available)-250(in)-250(the)-250(underlying)-250(base)-250(parallel)-250(envir)18(onment.)]TJ 0 g 0 G 139.477 -84.647 Td [(112)]TJ 0 g 0 G @@ -22144,55 +22137,55 @@ ET endstream endobj -1745 0 obj +1748 0 obj << -/Length 4457 +/Length 4724 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.2)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.2)]TJ 0.996 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.349 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(info)-211(\227)-211(Return)-211(information)-210(about)-211(PSBLAS)-211(parallel)-211(en-)]TJ -24.221 -13.948 Td [(vironment)]TJ +/F75 11.9552 Tf 0.996 0 0 1 150.936 706.129 Tm [(info)-250(\227)-249(Return)-250(information)-250(about)-249(PSBLAS)-250(parallel)-250(en-)]TJ 1 0 0 1 126.46 692.181 Tm [(vironment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -26.9 -18.964 Td [(call)-525(psb_info\050ctxt,)-525(iam,)-525(np\051)]TJ/F62 9.9626 Tf 14.944 -21.917 Td [(This)-397(subr)18(outine)-396(r)18(eturns)-397(information)-397(about)-396(the)-397(PSBLAS)-397(parallel)-396(envir)18(on-)]TJ -14.944 -11.956 Td [(ment,)-250(de\002ning)-250(a)-250(virtual)-250(parallel)-250(machine.)]TJ +/F131 9.9626 Tf -26.565 -18.964 Td [(call)-525(psb_info\050ctxt,)-525(iam,)-525(np\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 651.3 Tm [(This)-224(subr)19(outine)-224(r)19(eturns)-224(information)-223(about)-224(the)-224(PSBLAS)-223(parallel)-224(envir)19(onment,)]TJ 1 0 0 1 99.895 639.344 Tm [(de\002ning)-250(a)-250(virtual)-250(parallel)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(iam)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Identi\002er)-250(of)-250(curr)18(ent)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 2.77 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ/F91 10.3811 Tf 134.19 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)]TJ/F91 10.3811 Tf 7.873 0 Td [(\024)]TJ/F60 9.9626 Tf 11.017 0 Td [(i)-47(a)-25(m)]TJ/F91 10.3811 Tf 18.677 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Identi\002er)-250(of)-250(curr)18(ent)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 2.77 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ/F179 10.3811 Tf 134.19 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F179 10.3811 Tf 7.873 0 Td [(\024)]TJ/F78 9.9626 Tf 11.017 0 Td [(i)-47(a)-25(m)]TJ/F179 10.3811 Tf 18.677 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1)]TJ 0 g 0 G -/F59 9.9626 Tf -239.579 -19.925 Td [(np)]TJ +/F75 9.9626 Tf -239.579 -19.925 Td [(np)]TJ 0 g 0 G -/F62 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(For)-396(pr)18(ocesses)-396(in)-395(the)-396(virtual)-396(parallel)-396(machine)-396(the)-396(ident)1(i\002er)-396(will)-396(satisfy)]TJ 12.453 -11.955 Td [(0)]TJ/F91 10.3811 Tf 7.873 0 Td [(\024)]TJ/F60 9.9626 Tf 11.016 0 Td [(i)-47(a)-25(m)]TJ/F91 10.3811 Tf 18.678 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1;)]TJ + 1.02 0 0 1 124.802 332.495 Tm [(For)-337(pr)18(ocesses)-337(in)-337(the)-337(virtual)-337(parallel)-337(mac)1(hine)-337(the)-337(identi\002er)-337(will)-337(satisfy)]TJ 1 0 0 1 124.802 320.54 Tm [(0)]TJ/F179 10.3811 Tf 7.873 0 Td [(\024)]TJ/F78 9.9626 Tf 11.016 0 Td [(i)-47(a)-25(m)]TJ/F179 10.3811 Tf 18.678 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1;)]TJ 0 g 0 G -84.741 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(If)-349(the)-349(user)-350(has)-349(r)18(equested)-349(on)]TJ/F67 9.9626 Tf 142.217 0 Td [(psb_init)]TJ/F62 9.9626 Tf 45.321 0 Td [(a)-349(number)-349(of)-350(pr)18(ocesses)-349(less)-349(than)]TJ -175.085 -11.956 Td [(the)-321(total)-322(available)-321(in)-321(the)-322(parallel)-321(execution)-322(envir)18(onment,)-339(the)-321(r)18(emaining)]TJ 0 -11.955 Td [(pr)18(ocesses)-229(will)-228(have)-229(on)-229(r)18(eturn)]TJ/F60 9.9626 Tf 130.21 0 Td [(i)-47(a)-25(m)]TJ/F93 10.3811 Tf 18.678 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1;)-236(the)-229(on)1(ly)-229(call)-229(involving)]TJ/F67 9.9626 Tf 110.162 0 Td [(ctxt)]TJ/F62 9.9626 Tf 23.2 0 Td [(that)]TJ -301.53 -11.955 Td [(any)-250(such)-250(pr)18(ocess)-250(may)-250(execute)-250(is)-250(to)]TJ/F67 9.9626 Tf 155.296 0 Td [(psb_exit)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ + 1.02 0 0 1 124.802 300.615 Tm [(If)-304(the)-303(user)-304(has)-304(r)18(equested)-304(on)]TJ/F131 9.9626 Tf 1 0 0 1 254.391 300.615 Tm [(psb_init)]TJ/F84 9.9626 Tf 1.02 0 0 1 299.32 300.615 Tm [(a)-304(number)-303(of)-304(pr)18(ocesses)-304(less)-304(than)]TJ 1.02 0 0 1 124.802 288.659 Tm [(the)-253(total)-254(available)-253(in)-253(the)-254(parallel)-253(execution)-253(envir)17(onment,)-255(the)-253(r)17(emaining)]TJ 0.992 0 0 1 124.503 276.704 Tm [(pr)18(ocesses)-251(will)-251(have)-251(on)-252(r)18(eturn)]TJ/F78 9.9626 Tf 1 0 0 1 254.782 276.704 Tm [(i)-47(a)-25(m)]TJ/F181 10.3811 Tf 18.678 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 0.992 0 0 1 292.74 276.704 Tm [(1;)-251(the)-252(only)-251(call)-251(involving)]TJ/F131 9.9626 Tf 1 0 0 1 403.066 276.704 Tm [(ctxt)]TJ/F84 9.9626 Tf 0.992 0 0 1 426.47 276.704 Tm [(that)]TJ 1 0 0 1 124.802 264.749 Tm [(any)-250(such)-250(pr)18(ocess)-250(may)-250(execute)-250(is)-250(to)]TJ/F131 9.9626 Tf 155.296 0 Td [(psb_exit)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0 g 0 G -57.662 -174.311 Td [(113)]TJ 0 g 0 G @@ -22200,52 +22193,52 @@ ET endstream endobj -1751 0 obj +1754 0 obj << -/Length 4180 +/Length 4510 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.3)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS)-250(parallel)-250(environment)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS)-250(parallel)-250(environment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_exit\050ctxt\051)]TJ 0 -11.955 Td [(call)-525(psb_exit\050ctxt,close\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(parallel)-250(virtual)-250(machine.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_exit\050ctxt\051)]TJ 0 -11.955 Td [(call)-525(psb_exit\050ctxt,close\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(parallel)-250(virtual)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(close)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(close)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(Whether)-369(to)-368(close)-369(all)-369(data)-368(str)8(uctur)18(es)-369(r)18(elated)-369(to)-368(the)-369(virtual)-369(parall)1(el)-369(ma-)]TJ -2.759 -11.955 Td [(chine,)-250(besides)-250(those)-250(associated)-250(with)-250(ctxt.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(variable,)-250(default)-250(value:)-310(tr)8(ue.)]TJ/F59 11.9552 Tf -24.907 -19.925 Td [(Notes)]TJ +/F84 9.9626 Tf 0.98 0 0 1 177.873 525.77 Tm [(Whether)-235(to)-235(close)-236(all)-235(data)-235(str)8(uctur)19(es)-236(r)19(elated)-235(to)-236(the)-235(virtual)-235(parallel)-235(machine,)]TJ 1 0 0 1 175.611 513.815 Tm [(besides)-250(those)-250(associated)-250(with)-250(ctxt.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(variable,)-250(default)-250(value:)-310(tr)8(ue.)]TJ/F75 11.9552 Tf -24.906 -19.925 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-376(r)18(outine)-376(may)-377(be)-376(called)-376(even)-376(if)-377(a)-376(pr)18(evious)-376(call)-376(to)]TJ/F67 9.9626 Tf 255.069 0 Td [(psb_info)]TJ/F62 9.9626 Tf 45.591 0 Td [(has)-376(r)18(e-)]TJ -288.206 -11.955 Td [(turned)-251(with)]TJ/F60 9.9626 Tf 55.156 0 Td [(i)-47(a)-25(m)]TJ/F93 10.3811 Tf 18.696 0 Td [(=)]TJ/F91 10.3811 Tf 11.104 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1;)-251(indeed,)-252(it)-251(it)-251(i)1(s)-251(the)-251(only)-251(r)18(outine)-251(that)-251(may)-251(be)-251(called)]TJ -93.15 -11.955 Td [(with)-250(ar)18(gument)]TJ/F67 9.9626 Tf 68.133 0 Td [(ctxt)]TJ/F62 9.9626 Tf 23.412 0 Td [(in)-250(this)-250(situation.)]TJ + 0.98 0 0 1 175.303 426.144 Tm [(This)-218(r)19(outine)-218(may)-217(be)-218(called)-217(even)-218(if)-217(a)-218(pr)18(evious)-217(call)-218(to)]TJ/F131 9.9626 Tf 1 0 0 1 396.017 426.144 Tm [(psb_info)]TJ/F84 9.9626 Tf 0.98 0 0 1 439.984 426.144 Tm [(has)-218(r)19(eturned)]TJ 1.02 0 0 1 175.193 414.189 Tm [(with)]TJ/F78 9.9626 Tf 1 0 0 1 198.707 414.189 Tm [(i)-47(a)-25(m)]TJ/F181 10.3811 Tf 19.251 0 Td [(=)]TJ/F179 10.3811 Tf 11.659 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 237.811 414.189 Tm [(1;)-291(indeed,)-283(it)-276(it)-275(is)-276(the)-275(only)-276(r)18(outine)-276(that)-275(may)-276(be)-275(called)-276(with)]TJ 1 0 0 1 175.611 402.234 Tm [(ar)18(gument)]TJ/F131 9.9626 Tf 45.39 0 Td [(ctxt)]TJ/F84 9.9626 Tf 23.412 0 Td [(in)-250(this)-250(situation.)]TJ 0 g 0 G - -103.999 -19.926 Td [(2.)]TJ + -81.255 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(A)-269(call)-269(to)-268(this)-269(r)18(outine)-269(with)]TJ/F67 9.9626 Tf 128.502 0 Td [(close=.true.)]TJ/F62 9.9626 Tf 65.442 0 Td [(implies)-269(a)-268(call)-269(to)]TJ/F67 9.9626 Tf 72.059 0 Td [(MPI_Finalize)]TJ/F62 9.9626 Tf 62.764 0 Td [(,)]TJ -316.313 -11.955 Td [(after)-250(which)-250(no)-250(parallel)-250(r)18(outine)-250(may)-250(be)-250(called.)]TJ + 1.02 0 0 1 175.223 382.308 Tm [(A)-249(call)-248(to)-249(this)-249(r)18(outine)-249(with)]TJ/F131 9.9626 Tf 1 0 0 1 292.377 382.308 Tm [(close=.true.)]TJ/F84 9.9626 Tf 1.02 0 0 1 357.669 382.308 Tm [(implies)-249(a)-248(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 430.357 382.308 Tm [(MPI_Finalize)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 382.308 Tm [(,)]TJ 1 0 0 1 175.611 370.353 Tm [(after)-250(which)-250(no)-250(parallel)-250(r)18(outine)-250(may)-250(be)-250(called.)]TJ 0 g 0 G - -12.454 -19.925 Td [(3.)]TJ + -12.453 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(If)-289(the)-288(user)-288(whishes)-289(to)-288(use)-289(multiple)-288(communication)-289(contexts)-288(in)-289(the)-288(same)]TJ 12.454 -11.955 Td [(pr)18(ogram,)-401(or)-371(to)-371(enter)-371(and)-371(exit)-371(multiple)-371(times)-370(into)-371(the)-371(parallel)-371(envir)18(on-)]TJ 0 -11.956 Td [(ment,)-425(this)-389(r)18(outine)-390(may)-390(be)-390(called)-389(to)-390(selectively)-390(close)-390(the)-389(contexts)-390(with)]TJ/F67 9.9626 Tf 0 -11.955 Td [(close=.false.)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)-202(while)-190(on)-190(the)-190(last)-190(call)-190(it)-190(should)-190(be)-190(called)-190(with)]TJ/F67 9.9626 Tf 196.919 0 Td [(close=.true.)]TJ/F62 9.9626 Tf -264.913 -11.955 Td [(to)-250(shutdown)-250(in)-250(a)-250(clean)-250(way)-250(the)-250(entir)18(e)-250(parallel)-250(envir)18(onment.)]TJ + 1.015 0 0 1 175.611 350.428 Tm [(If)-246(the)-245(user)-246(wh)1(ishes)-246(to)-245(use)-246(multiple)-245(communication)-246(contexts)-245(in)-246(the)-245(same)]TJ 1.02 0 0 1 175.313 338.473 Tm [(pr)18(ogram,)-354(or)-332(to)-332(enter)-332(and)-332(exit)-332(multiple)-332(times)-332(into)-332(the)-332(parallel)-332(envir)17(on-)]TJ 1.02 0 0 1 175.611 326.518 Tm [(ment,)-356(this)-334(r)18(outine)-334(may)-334(be)-334(called)-334(to)-333(selectively)-334(close)-334(the)-334(contexts)-334(with)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 314.562 Tm [(close=.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 243.606 314.562 Tm [(,)-206(while)-194(on)-194(the)-194(last)-194(call)-193(it)-194(should)-194(be)-194(called)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 437.006 314.562 Tm [(close=.true.)]TJ/F84 9.9626 Tf -261.395 -11.955 Td [(to)-250(shutdown)-250(in)-250(a)-250(clean)-250(way)-250(the)-250(entir)18(e)-250(parallel)-250(envir)18(onment.)]TJ 0 g 0 G 139.477 -212.169 Td [(114)]TJ 0 g 0 G @@ -22253,57 +22246,57 @@ ET endstream endobj -1758 0 obj +1761 0 obj << -/Length 2476 +/Length 2599 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.4)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.4)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(get)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(get)]TJ ET q 1 0 0 1 168.338 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 171.925 706.129 Td [(mpi)]TJ +/F75 11.9552 Tf 171.925 706.129 Td [(mpi)]TJ ET q 1 0 0 1 194.556 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 198.143 706.129 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ +/F75 11.9552 Tf 198.143 706.129 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -98.248 -18.964 Td [(icomm)-525(=)-525(psb_get_mpi_comm\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-417(func)1(tion)-417(r)18(eturns)-416(the)-417(MPI)-416(communicator)-417(associated)-416(with)-417(a)-416(PSBLAS)]TJ -14.944 -11.955 Td [(context)]TJ +/F131 9.9626 Tf -98.248 -18.964 Td [(icomm)-525(=)-525(psb_get_mpi_comm\050ctxt\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 665.247 Tm [(This)-345(function)-344(r)18(eturns)-345(the)-345(MP)1(I)-345(communicator)-344(associated)-345(with)-345(a)-344(PSBLAS)]TJ 1 0 0 1 99.895 653.292 Tm [(context)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-372(MPI)-371(communicator)-372(associated)-371(with)-372(the)-372(PSBLAS)-371(virtual)]TJ -47.87 -11.955 Td [(parallel)-250(machine.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ/F62 9.9626 Tf 34.165 0 Td [(The)-230(subr)18(outine)-230(version)]TJ/F67 9.9626 Tf 103.913 0 Td [(psb_get_mpicomm)]TJ/F62 9.9626 Tf 80.748 0 Td [(is)-230(still)-230(available)-230(but)-230(is)-230(depr)18(e-)]TJ -218.826 -11.955 Td [(cated.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 172.363 503.852 Tm [(The)-300(MPI)-300(communicat)1(or)-300(associated)-300(with)-300(the)-300(PSBLAS)-299(virtual)]TJ 1 0 0 1 124.503 491.897 Tm [(parallel)-250(machine.)]TJ 0.299 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf 0.999 0 0 1 99.895 422.159 Tm [(Notes)]TJ/F84 9.9626 Tf 0.999 0 0 1 134.218 422.159 Tm [(The)-249(subr)18(outine)-250(version)]TJ/F131 9.9626 Tf 1 0 0 1 238.602 422.159 Tm [(psb_get_mpicomm)]TJ/F84 9.9626 Tf 0.999 0 0 1 319.54 422.159 Tm [(is)-249(still)-250(available)-249(but)-249(is)-250(depr)18(e-)]TJ 1 0 0 1 99.895 410.204 Tm [(cated.)]TJ 0 g 0 G 164.384 -319.766 Td [(115)]TJ 0 g 0 G @@ -22311,98 +22304,98 @@ ET endstream endobj -1763 0 obj +1766 0 obj << -/Length 3337 +/Length 3392 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.5)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.5)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(get)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(get)]TJ ET q 1 0 0 1 219.148 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 222.735 706.129 Td [(mpi)]TJ +/F75 11.9552 Tf 222.735 706.129 Td [(mpi)]TJ ET q 1 0 0 1 245.365 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 248.952 706.129 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ +/F75 11.9552 Tf 248.952 706.129 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -98.247 -18.964 Td [(rank)-525(=)-525(psb_get_mpi_rank\050ctxt,)-525(id\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(function)-250(r)18(eturns)-250(the)-250(MPI)-250(rank)-250(of)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 257.337 0 Td [(i)-32(d)]TJ +/F131 9.9626 Tf -98.247 -18.964 Td [(rank)-525(=)-525(psb_get_mpi_rank\050ctxt,)-525(id\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(function)-250(r)18(eturns)-250(the)-250(MPI)-250(rank)-250(of)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 257.337 0 Td [(i)-32(d)]TJ 0 g 0 G -/F59 9.9626 Tf -272.281 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -272.281 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(id)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(id)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(Identi\002er)-250(of)-250(a)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(0)]TJ/F91 10.3811 Tf 141.938 0 Td [(\024)]TJ/F60 9.9626 Tf 11.017 0 Td [(i)-32(d)]TJ/F91 10.3811 Tf 11.086 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.503 0 Td [(\000)]TJ/F62 9.9626 Tf 10.132 0 Td [(1)]TJ +/F84 9.9626 Tf 14.386 0 Td [(Identi\002er)-250(of)-250(a)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(0)]TJ/F179 10.3811 Tf 141.938 0 Td [(\024)]TJ/F78 9.9626 Tf 11.017 0 Td [(i)-32(d)]TJ/F179 10.3811 Tf 11.086 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.503 0 Td [(\000)]TJ/F84 9.9626 Tf 10.132 0 Td [(1)]TJ 0 g 0 G -/F59 9.9626 Tf -223.669 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -223.669 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Funciton)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(MPI)-250(rank)-250(associated)-250(with)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 224.291 0 Td [(i)-32(d)]TJ/F62 9.9626 Tf 8.195 0 Td [(.)]TJ -280.356 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ/F62 9.9626 Tf 35.734 0 Td [(The)-388(subr)18(outine)-387(version)]TJ/F67 9.9626 Tf 108.62 0 Td [(psb_get_rank)]TJ/F62 9.9626 Tf 66.626 0 Td [(is)-388(still)-387(available)-388(but)-387(is)-388(depr)18(e-)]TJ -210.98 -11.955 Td [(cated.)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(MPI)-250(rank)-250(associated)-250(with)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 224.292 0 Td [(i)-32(d)]TJ/F84 9.9626 Tf 8.194 0 Td [(.)]TJ -280.047 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf 0.98 0 0 1 150.705 378.323 Tm [(Notes)]TJ/F84 9.9626 Tf 0.98 0 0 1 184.238 378.323 Tm [(The)-235(subr)18(outine)-235(version)]TJ/F131 9.9626 Tf 1 0 0 1 286.223 378.323 Tm [(psb_get_rank)]TJ/F84 9.9626 Tf 0.98 0 0 1 351.286 378.323 Tm [(is)-235(still)-236(available)-235(but)-235(is)-236(depr)18(e)1(cated.)]TJ 0 g 0 G - 164.384 -275.93 Td [(116)]TJ + 1 0 0 1 315.088 90.438 Tm [(116)]TJ 0 g 0 G ET endstream endobj -1767 0 obj +1770 0 obj << -/Length 1155 +/Length 1167 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.6)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.6)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(wtime)-250(\227)-250(W)74(all)-250(clock)-250(timing)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(wtime)-250(\227)-250(W)74(all)-250(clock)-250(timing)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -18.964 Td [(time)-525(=)-525(psb_wtime\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-298(function)-298(r)18(eturns)-299(a)-298(wall)-298(clock)-298(timer)74(.)-455(The)-298(r)18(esolution)-298(of)-299(the)-298(timer)-298(is)-298(de-)]TJ -14.944 -11.955 Td [(pendent)-250(on)-250(the)-250(underlying)-250(parallel)-250(envir)18(onment)-250(implementation.)]TJ +/F131 9.9626 Tf -51.121 -18.964 Td [(time)-525(=)-525(psb_wtime\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 665.247 Tm [(This)-374(function)-374(r)17(eturns)-374(a)-374(wall)-374(clock)-374(timer)72(.)-691(The)-374(r)18(esolution)-375(of)-374(the)-374(timer)-374(is)]TJ 1 0 0 1 99.895 653.292 Tm [(dependent)-250(on)-250(the)-250(underlying)-250(parallel)-250(envir)18(onment)-250(implementation.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Exit)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Exit)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(the)-250(elapsed)-250(time)-250(in)-250(seconds.)]TJ -47.87 -11.955 Td [(Returned)-250(as:)-310(a)]TJ/F67 9.9626 Tf 66.022 0 Td [(real\050psb_dpk_\051)]TJ/F62 9.9626 Tf 75.715 0 Td [(variable.)]TJ +/F84 9.9626 Tf 72.777 0 Td [(the)-250(elapsed)-250(time)-250(in)-250(seconds.)]TJ -47.87 -11.955 Td [(Returned)-250(as:)-310(a)]TJ/F131 9.9626 Tf 66.022 0 Td [(real\050psb_dpk_\051)]TJ/F84 9.9626 Tf 75.715 0 Td [(variable.)]TJ 0 g 0 G -2.26 -491.123 Td [(117)]TJ 0 g 0 G @@ -22410,44 +22403,44 @@ ET endstream endobj -1771 0 obj +1774 0 obj << -/Length 1388 +/Length 1466 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.7)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.7)]TJ 0.998 0 0 1 177.604 706.129 Tm [(psb)]TJ ET q -1 0 0 1 198.238 706.328 cm +1 0 0 1 198.199 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(barrier)-240(\227)-240(Sinchronization)-239(point)-240(parallel)-240(environment)]TJ +/F75 11.9552 Tf 0.998 0 0 1 201.785 706.129 Tm [(barrier)-250(\227)-251(Sinchronization)-250(point)-250(parallel)-250(environment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_barrier\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-358(subr)18(outine)-357(acts)-358(as)-358(an)-358(explicit)-357(synchr)18(onization)-358(point)-358(for)-357(the)-358(PSBLAS)]TJ -14.944 -11.955 Td [(parallel)-250(virtual)-250(machine.)]TJ +/F131 9.9626 Tf 1 0 0 1 150.705 687.165 Tm [(call)-525(psb_barrier\050ctxt\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 665.247 Tm [(This)-293(subr)18(outine)-293(acts)-293(as)-293(an)-293(explicit)-293(synchr)18(onization)-293(point)-293(for)-293(the)-293(PSBLAS)]TJ 1 0 0 1 150.406 653.292 Tm [(parallel)-250(virtual)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0.299 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G - 139.477 -455.258 Td [(118)]TJ + 139.476 -455.258 Td [(118)]TJ 0 g 0 G ET endstream endobj -1775 0 obj +1778 0 obj << /Length 1283 >> @@ -22455,28 +22448,28 @@ stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.8)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.8)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_abort\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(aborts)-250(computation)-250(on)-250(the)-250(parallel)-250(virtual)-250(machine.)]TJ +/F131 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_abort\050ctxt\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(aborts)-250(computation)-250(on)-250(the)-250(parallel)-250(virtual)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G 139.477 -467.213 Td [(119)]TJ 0 g 0 G @@ -22484,91 +22477,92 @@ ET endstream endobj -1779 0 obj +1782 0 obj << -/Length 5526 +/Length 6066 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.9)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.9)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(bcast)-250(\227)-250(Broadcast)-250(data)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(bcast)-250(\227)-250(Broadcast)-250(data)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -20.269 Td [(call)-525(psb_bcast\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-221(subr)18(outine)-222(implements)-221(a)-221(br)18(oadcast)-222(operation)-221(based)-221(on)-222(the)-221(underlying)]TJ -14.944 -11.955 Td [(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -51.12 -19.198 Td [(call)-525(psb_bcast\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.992 0 0 1 165.649 664.53 Tm [(This)-251(subr)18(outine)-251(implements)-251(a)-251(br)19(oadcast)-251(operation)-251(based)-251(on)-251(the)-251(underlying)]TJ 1 0 0 1 150.705 652.575 Tm [(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.619 Td [(ctxt)]TJ + 0 -20.408 Td [(ctxt)]TJ +0 g 0 G +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(the)-250(r)18(oot)-250(pr)18(ocess,)-250(the)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.98 0 0 1 175.611 463.465 Tm [(a)-235(rank)-235(1)-235(or)-235(2)-235(array)113(,)-239(or)-235(a)-235(character)-235(or)-235(logical)-235(variable,)-239(which)-235(may)-236(be)-235(a)-235(scalar)]TJ 1 0 0 1 175.611 451.509 Tm [(or)-250(rank)-250(1)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(the)-250(r)18(oot)-250(pr)18(ocess,)-250(the)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-344(a)-344(rank)-344(1)-344(or)-344(2)-344(array)111(,)-367(or)-344(a)-344(character)-344(or)-344(logical)-344(variable,)-367(which)-344(may)-344(be)]TJ 0 -11.955 Td [(a)-377(scalar)-377(or)-377(rank)-377(1)-377(array)111(.)-1067(T)90(ype,)-409(kind,)-409(rank)-377(and)-376(size)-377(must)-377(agr)18(ee)-377(on)-377(all)]TJ 0 -11.955 Td [(pr)18(ocesses.)]TJ +/F75 9.9626 Tf -24.906 -20.408 Td [(root)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ +/F84 9.9626 Tf 23.252 0 Td [(Root)-250(pr)18(ocess)-250(holding)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.851 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.923 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(0)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Root)-250(pr)18(ocess)-250(holding)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.503 0 Td [(\000)]TJ/F62 9.9626 Tf 10.132 0 Td [(1,)-250(default)-250(0)]TJ +/F75 9.9626 Tf -246.024 -20.409 Td [(mode)]TJ 0 g 0 G -/F59 9.9626 Tf -246.025 -22.618 Td [(mode)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ 0 g 0 G + 0 -20.408 Td [(dat)]TJ +0 g 0 G +/F84 9.9626 Tf 19.367 0 Td [(On)-250(all)-250(pr)18(ocesses)-250(other)-250(than)-250(r)18(oot,)-250(the)-250(br)18(oadcasted)-250(data.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(120)]TJ + 79.263 -29.888 Td [(120)]TJ 0 g 0 G ET endstream endobj -1783 0 obj +1786 0 obj << -/Length 5329 +/Length 5433 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ -0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(all)-250(pr)18(ocesses)-250(other)-250(than)-250(r)18(oot,)-250(the)-250(br)18(oadcasted)-250(data.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-315(a)-314(rank)-315(1)-315(or)-314(2)-315(array)111(,)-331(or)-314(a)-315(character)-315(or)-314(logical)-315(scalar)74(.)-819(T)90(ype,)-330(kind,)-331(rank)]TJ 0 -11.955 Td [(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 682.219 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 0.98 0 0 1 124.802 670.263 Tm [(or)-245(a)-245(rank)-245(1)-245(or)-245(2)-245(array)114(,)-247(or)-245(a)-245(character)-245(or)-245(logical)-245(scalar)76(.)-558(T)92(ype,)-247(kind,)-247(rank)-245(and)]TJ 1 0 0 1 124.802 658.308 Tm [(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.956 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 417.212 cm +1 0 0 1 124.802 441.123 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22577,7 +22571,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 434.448 Td [(call)]TJ +/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ 0 g 0 G [-525(psb_bcast\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -22596,14 +22590,14 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 302.642 cm +1 0 0 1 124.802 326.552 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22612,7 +22606,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 352.754 Td [(call)]TJ +/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ 0 g 0 G [-525(psb_bcast\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22631,16 +22625,16 @@ BT [(bcast_request\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -23.537 -10.959 Td [(.......)]TJ + -23.537 -10.958 Td [(.......)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_bcast\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22660,98 +22654,98 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -218.48 Td [(121)]TJ +/F84 9.9626 Tf 103.537 -242.391 Td [(121)]TJ 0 g 0 G ET endstream endobj -1792 0 obj +1795 0 obj << -/Length 5829 +/Length 6205 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.10)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.10)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_sum\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -22.401 Td [(This)-353(subr)18(outine)-353(implements)-354(a)-353(sum)-353(r)18(eduction)-353(operation)-353(based)-354(on)-353(the)-353(un-)]TJ -14.944 -11.955 Td [(derlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_sum\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.991 0 0 1 165.649 664.53 Tm [(This)-253(subr)18(outine)-253(implements)-254(a)-253(sum)-253(r)18(eduction)-253(operation)-254(based)-253(on)-253(the)-253(under)18(-)]TJ 1 0 0 1 150.705 652.575 Tm [(lying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.409 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(sum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.956 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(sum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 175.611 463.465 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-253(all)-252(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.408 Td [(root)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 443.056 Tm [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-250(to)-250(hold)-250(the)-250(\002nal)-250(sum,)-250(or)]TJ/F91 10.3811 Tf 143.744 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-250(to)-250(make)-250(it)-250(available)-250(on)-250(all)-250(pr)18(ocesses.)]TJ -150.284 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 23.252 0 Td [(Pr)18(ocess)-250(to)-250(hold)-250(the)-250(\002nal)-250(sum,)-250(or)]TJ/F179 10.3811 Tf 143.745 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)-250(to)-250(make)-250(it)-250(available)-250(on)-250(all)-250(pr)18(ocesses.)]TJ -150.285 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -20.409 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -20.408 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.956 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.955 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 374.827 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 362.871 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 315.051 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 303.096 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 303.096 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 303.096 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 291.14 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 291.14 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 291.14 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 291.14 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 279.185 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -32.364 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -32.363 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.956 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 199.001 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 199.001 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 199.001 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 187.046 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.401 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.401 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -20.408 Td [(dat)]TJ + 0 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(sum)-250(operation.)]TJ 5.54 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.781 0 Td [(.)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(sum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ 0 g 0 G - 79.264 -29.887 Td [(122)]TJ + 73.405 -29.888 Td [(122)]TJ 0 g 0 G ET endstream endobj -1796 0 obj +1799 0 obj << -/Length 4964 +/Length 5228 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.956 Td [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ 0 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 694.174 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 1 0 0 1 124.802 682.219 Tm [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ -0.309 -11.956 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 602.517 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 602.517 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 602.517 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 590.562 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 548.719 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 548.719 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 548.719 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 536.764 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G - -12.453 -19.926 Td [(2.)]TJ + -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 516.839 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 516.839 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 516.839 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 516.839 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 516.839 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 504.884 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 492.928 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 441.123 cm +1 0 0 1 124.802 453.078 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22760,7 +22754,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 458.358 Td [(call)]TJ +/F231 8.9664 Tf 137.205 470.313 Td [(call)]TJ 0 g 0 G [-525(psb_sum\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -22779,14 +22773,14 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 423.19 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 423.19 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 423.19 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 423.19 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 423.19 Tm [(be)]TJ 1 0 0 1 124.802 411.235 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 326.552 cm +1 0 0 1 124.802 338.507 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22795,7 +22789,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 376.664 Td [(call)]TJ +/F231 8.9664 Tf 137.205 388.62 Td [(call)]TJ 0 g 0 G [-525(psb_sum\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22814,16 +22808,16 @@ BT [(sum_request\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -23.537 -10.958 Td [(.......)]TJ + -23.537 -10.959 Td [(.......)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_sum\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22843,92 +22837,92 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -242.391 Td [(123)]TJ +/F84 9.9626 Tf 103.537 -254.346 Td [(123)]TJ 0 g 0 G ET endstream endobj -1803 0 obj +1806 0 obj << -/Length 5548 +/Length 5884 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.11)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.11)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_max\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-354(subr)18(outine)-354(implements)-354(a)-354(maximum)-354(valuer)18(eduction)-354(operation)-354(based)]TJ -14.944 -11.955 Td [(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_max\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 165.649 661.249 Tm [(This)-253(subr)18(outine)-253(implements)-253(a)-253(maximum)-253(valuer)19(eduction)-253(operation)-253(based)-254(on)]TJ 1 0 0 1 150.705 649.294 Tm [(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.619 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -22.619 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.955 Td [(1)-250(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.983 0 0 1 175.611 463.851 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(which)-255(may)-255(be)-255(a)-255(scalar)76(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 175.611 451.896 Tm [(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ +/F75 9.9626 Tf -24.906 -22.619 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-255(to)-255(hold)-255(the)-255(\002nal)-255(maximum,)-257(or)]TJ/F91 10.3811 Tf 170.502 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-255(to)-255(make)-255(it)-255(available)-255(on)-255(all)-255(pr)18(o-)]TJ -177.042 -11.955 Td [(cesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 1.009 0 0 1 173.957 429.277 Tm [(Pr)18(ocess)-247(to)-247(hold)-247(the)-247(\002nal)-247(maximum,)-247(or)]TJ/F179 10.3811 Tf 1 0 0 1 345.41 429.277 Tm [(\000)]TJ/F84 9.9626 Tf 1.009 0 0 1 353.604 429.277 Tm [(1)-247(to)-247(make)-247(it)-247(available)-247(on)-246(all)-247(pr)17(o-)]TJ 1 0 0 1 175.611 417.322 Tm [(cesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 334.928 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 322.973 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 275.152 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 263.197 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 263.197 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 263.197 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 251.242 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 251.242 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 251.242 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 251.242 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 239.286 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -34.573 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 156.892 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 156.892 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 156.892 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 144.937 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -24.611 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(124)]TJ +/F84 9.9626 Tf 164.383 -29.888 Td [(124)]TJ 0 g 0 G ET endstream endobj -1807 0 obj +1810 0 obj << -/Length 5227 +/Length 5603 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.955 Td [(1)-250(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 658.308 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(w)1(hich)-255(may)-255(be)-255(a)-256(s)1(calar)75(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 124.802 646.353 Tm [(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 578.607 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 578.607 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 578.607 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 566.652 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 524.809 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 524.809 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 524.809 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 512.854 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 492.928 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 492.928 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 492.928 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 492.928 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 492.928 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 480.973 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 469.018 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -22942,7 +22936,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 446.403 Td [(call)]TJ +/F231 8.9664 Tf 137.205 446.403 Td [(call)]TJ 0 g 0 G [-525(psb_max\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -22961,9 +22955,9 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.956 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 399.28 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 399.28 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 399.28 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 399.28 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 399.28 Tm [(be)]TJ 1 0 0 1 124.802 387.324 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -22977,7 +22971,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 364.709 Td [(call)]TJ +/F231 8.9664 Tf 137.205 364.709 Td [(call)]TJ 0 g 0 G [-525(psb_max\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -23000,12 +22994,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.958 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.958 Td [(call)]TJ 0 g 0 G [-525(psb_max\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -23025,93 +23019,93 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -230.436 Td [(125)]TJ +/F84 9.9626 Tf 103.537 -230.436 Td [(125)]TJ 0 g 0 G ET endstream endobj -1814 0 obj +1817 0 obj << -/Length 5813 +/Length 6144 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.12)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.12)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_min\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -22.401 Td [(This)-328(subr)18(outine)-327(implements)-328(a)-328(minimum)-327(value)-328(r)18(eduction)-328(o)1(peration)-328(based)]TJ -14.944 -11.955 Td [(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_min\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 664.53 Tm [(This)-247(subr)18(outine)-247(implements)-246(a)-247(minimum)-247(value)-246(r)17(eduction)-246(operation)-247(based)]TJ 1 0 0 1 150.705 652.575 Tm [(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.409 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.956 Td [(1)-250(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.983 0 0 1 175.611 475.42 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(which)-255(may)-255(be)-255(a)-255(scalar)76(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 175.611 463.465 Tm [(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.408 Td [(root)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.956 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.955 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -32.364 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.956 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.401 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.54 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.781 0 Td [(.)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G - 79.264 -29.887 Td [(126)]TJ + 79.263 -29.888 Td [(126)]TJ 0 g 0 G ET endstream endobj -1818 0 obj +1821 0 obj << -/Length 4946 +/Length 5331 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.956 Td [(1)-250(or)-250(2)-250(array)111(.)]TJ 0 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.983 0 0 1 124.802 682.219 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(w)1(hich)-255(may)-255(be)-255(a)-256(s)1(calar)75(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 124.802 670.263 Tm [(or)-250(2)-250(array)111(.)]TJ -0.309 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G - -12.453 -19.926 Td [(2.)]TJ + -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -23125,7 +23119,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 458.358 Td [(call)]TJ +/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ 0 g 0 G [-525(psb_min\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -23144,9 +23138,9 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -23160,7 +23154,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 376.664 Td [(call)]TJ +/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ 0 g 0 G [-525(psb_min\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -23183,12 +23177,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_min\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -23208,31 +23202,39 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -242.391 Td [(127)]TJ +/F84 9.9626 Tf 103.537 -242.391 Td [(127)]TJ 0 g 0 G ET endstream endobj -1714 0 obj +1717 0 obj << /Type /ObjStm /N 100 -/First 972 -/Length 9311 ->> -stream -1708 0 1709 147 1713 294 413 353 1710 411 1716 518 1718 636 417 694 1715 751 1721 858 -1723 976 1724 1035 1725 1094 1726 1153 1727 1212 1728 1271 1729 1330 1730 1389 1731 1448 1732 1507 -1720 1566 1734 1686 1736 1804 421 1862 1733 1919 1738 2000 1740 2118 425 2177 1741 2235 1742 2294 -1737 2353 1744 2486 1746 2604 429 2662 1747 2719 1748 2776 1743 2832 1750 2965 1752 3083 433 3142 -1753 3200 1754 3259 1755 3318 1749 3377 1757 3510 1759 3628 437 3686 1756 3743 1762 3837 1764 3955 -441 4014 1761 4072 1766 4192 1768 4310 445 4368 1765 4425 1770 4519 1772 4637 449 4696 1769 4754 -1774 4848 1776 4966 453 5024 1773 5081 1778 5175 1780 5293 457 5352 1777 5410 1782 5557 1784 5675 -1785 5733 1786 5791 1787 5849 1781 5907 1791 6044 1793 6162 461 6221 1790 6279 1795 6426 1797 6544 -1798 6602 1799 6660 1800 6718 1794 6776 1802 6913 1804 7031 465 7090 1801 7148 1806 7295 1808 7413 -1809 7471 1810 7529 1811 7587 1805 7644 1813 7781 1815 7899 469 7958 1812 8016 1817 8163 1819 8281 -% 1708 0 obj +/First 973 +/Length 9435 +>> +stream +1710 0 1711 145 1712 292 1716 439 413 498 1713 556 1719 664 1721 782 417 840 1718 897 +1724 1005 1726 1123 1727 1182 1728 1241 1729 1300 1730 1359 1731 1418 1732 1477 1733 1536 1734 1595 +1735 1654 1723 1713 1737 1835 1739 1953 421 2011 1736 2068 1741 2149 1743 2267 425 2326 1744 2384 +1745 2443 1740 2502 1747 2638 1749 2756 429 2814 1750 2871 1751 2928 1746 2984 1753 3120 1755 3238 +433 3297 1756 3355 1757 3414 1758 3473 1752 3532 1760 3668 1762 3786 437 3844 1759 3901 1765 3996 +1767 4114 441 4173 1764 4231 1769 4353 1771 4471 445 4529 1768 4586 1773 4681 1775 4799 449 4858 +1772 4916 1777 5011 1779 5129 453 5187 1776 5244 1781 5339 1783 5457 457 5516 1780 5574 1785 5725 +1787 5843 1788 5901 1789 5959 1790 6017 1784 6075 1794 6213 1796 6331 461 6390 1793 6448 1798 6599 +1800 6717 1801 6775 1802 6833 1803 6890 1797 6947 1805 7085 1807 7203 465 7262 1804 7320 1809 7471 +1811 7589 1812 7647 1813 7705 1814 7763 1808 7820 1816 7958 1818 8076 469 8135 1815 8193 1820 8344 +% 1710 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 527.942 420.271 540.002] +/A << /S /GoTo /D (spdata) >> +>> +% 1711 0 obj << /Type /Annot /Subtype /Link @@ -23240,7 +23242,7 @@ stream /Rect [342.753 460.196 409.811 472.256] /A << /S /GoTo /D (descdata) >> >> -% 1709 0 obj +% 1712 0 obj << /Type /Annot /Subtype /Link @@ -23248,581 +23250,578 @@ stream /Rect [371.126 404.405 438.184 416.465] /A << /S /GoTo /D (precdata) >> >> -% 1713 0 obj +% 1716 0 obj << -/D [1711 0 R /XYZ 149.705 753.953 null] +/D [1714 0 R /XYZ 149.705 753.953 null] >> % 413 0 obj << -/D [1711 0 R /XYZ 150.705 716.092 null] +/D [1714 0 R /XYZ 150.705 716.092 null] >> -% 1710 0 obj +% 1713 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1716 0 obj +% 1719 0 obj << /Type /Page -/Contents 1717 0 R -/Resources 1715 0 R +/Contents 1720 0 R +/Resources 1718 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1719 0 R +/Parent 1722 0 R >> -% 1718 0 obj +% 1721 0 obj << -/D [1716 0 R /XYZ 98.895 753.953 null] +/D [1719 0 R /XYZ 98.895 753.953 null] >> % 417 0 obj << -/D [1716 0 R /XYZ 99.895 716.092 null] +/D [1719 0 R /XYZ 99.895 716.092 null] >> -% 1715 0 obj +% 1718 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1721 0 obj +% 1724 0 obj << /Type /Page -/Contents 1722 0 R -/Resources 1720 0 R +/Contents 1725 0 R +/Resources 1723 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1719 0 R ->> -% 1723 0 obj -<< -/D [1721 0 R /XYZ 149.705 753.953 null] ->> -% 1724 0 obj -<< -/D [1721 0 R /XYZ 150.705 701.929 null] ->> -% 1725 0 obj -<< -/D [1721 0 R /XYZ 150.705 668.729 null] +/Parent 1722 0 R >> % 1726 0 obj << -/D [1721 0 R /XYZ 150.705 624.894 null] +/D [1724 0 R /XYZ 149.705 753.953 null] >> % 1727 0 obj << -/D [1721 0 R /XYZ 150.705 555.872 null] +/D [1724 0 R /XYZ 150.705 701.929 null] >> % 1728 0 obj << -/D [1721 0 R /XYZ 150.705 500.082 null] +/D [1724 0 R /XYZ 150.705 668.729 null] >> % 1729 0 obj << -/D [1721 0 R /XYZ 150.705 468.201 null] +/D [1724 0 R /XYZ 150.705 624.894 null] >> % 1730 0 obj << -/D [1721 0 R /XYZ 150.705 425.023 null] +/D [1724 0 R /XYZ 150.705 555.872 null] >> % 1731 0 obj << -/D [1721 0 R /XYZ 150.705 382.522 null] +/D [1724 0 R /XYZ 150.705 500.082 null] >> % 1732 0 obj << -/D [1721 0 R /XYZ 150.705 354.627 null] +/D [1724 0 R /XYZ 150.705 468.201 null] >> -% 1720 0 obj +% 1733 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R >> -/ProcSet [ /PDF /Text ] +/D [1724 0 R /XYZ 150.705 425.023 null] >> % 1734 0 obj << +/D [1724 0 R /XYZ 150.705 382.522 null] +>> +% 1735 0 obj +<< +/D [1724 0 R /XYZ 150.705 354.627 null] +>> +% 1723 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1737 0 obj +<< /Type /Page -/Contents 1735 0 R -/Resources 1733 0 R +/Contents 1738 0 R +/Resources 1736 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1719 0 R +/Parent 1722 0 R >> -% 1736 0 obj +% 1739 0 obj << -/D [1734 0 R /XYZ 98.895 753.953 null] +/D [1737 0 R /XYZ 98.895 753.953 null] >> % 421 0 obj << -/D [1734 0 R /XYZ 99.895 716.092 null] +/D [1737 0 R /XYZ 99.895 716.092 null] >> -% 1733 0 obj +% 1736 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1738 0 obj +% 1741 0 obj << /Type /Page -/Contents 1739 0 R -/Resources 1737 0 R +/Contents 1742 0 R +/Resources 1740 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1719 0 R +/Parent 1722 0 R >> -% 1740 0 obj +% 1743 0 obj << -/D [1738 0 R /XYZ 149.705 753.953 null] +/D [1741 0 R /XYZ 149.705 753.953 null] >> % 425 0 obj << -/D [1738 0 R /XYZ 150.705 716.092 null] +/D [1741 0 R /XYZ 150.705 716.092 null] >> -% 1741 0 obj +% 1744 0 obj << -/D [1738 0 R /XYZ 150.705 222.691 null] +/D [1741 0 R /XYZ 150.705 222.691 null] >> -% 1742 0 obj +% 1745 0 obj << -/D [1738 0 R /XYZ 150.705 200.171 null] +/D [1741 0 R /XYZ 150.705 200.171 null] >> -% 1737 0 obj +% 1740 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1744 0 obj +% 1747 0 obj << /Type /Page -/Contents 1745 0 R -/Resources 1743 0 R +/Contents 1748 0 R +/Resources 1746 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1719 0 R +/Parent 1722 0 R >> -% 1746 0 obj +% 1749 0 obj << -/D [1744 0 R /XYZ 98.895 753.953 null] +/D [1747 0 R /XYZ 98.895 753.953 null] >> % 429 0 obj << -/D [1744 0 R /XYZ 99.895 716.092 null] +/D [1747 0 R /XYZ 99.895 716.092 null] >> -% 1747 0 obj +% 1750 0 obj << -/D [1744 0 R /XYZ 99.895 348.22 null] +/D [1747 0 R /XYZ 99.895 348.22 null] >> -% 1748 0 obj +% 1751 0 obj << -/D [1744 0 R /XYZ 99.895 313.8 null] +/D [1747 0 R /XYZ 99.895 313.8 null] >> -% 1743 0 obj +% 1746 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1750 0 obj +% 1753 0 obj << /Type /Page -/Contents 1751 0 R -/Resources 1749 0 R +/Contents 1754 0 R +/Resources 1752 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1719 0 R +/Parent 1722 0 R >> -% 1752 0 obj +% 1755 0 obj << -/D [1750 0 R /XYZ 149.705 753.953 null] +/D [1753 0 R /XYZ 149.705 753.953 null] >> % 433 0 obj << -/D [1750 0 R /XYZ 150.705 716.092 null] +/D [1753 0 R /XYZ 150.705 716.092 null] >> -% 1753 0 obj +% 1756 0 obj << -/D [1750 0 R /XYZ 150.705 441.869 null] +/D [1753 0 R /XYZ 150.705 441.869 null] >> -% 1754 0 obj +% 1757 0 obj << -/D [1750 0 R /XYZ 150.705 395.439 null] +/D [1753 0 R /XYZ 150.705 395.439 null] >> -% 1755 0 obj +% 1758 0 obj << -/D [1750 0 R /XYZ 150.705 363.559 null] +/D [1753 0 R /XYZ 150.705 363.559 null] >> -% 1749 0 obj +% 1752 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1757 0 obj +% 1760 0 obj << /Type /Page -/Contents 1758 0 R -/Resources 1756 0 R +/Contents 1761 0 R +/Resources 1759 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1760 0 R +/Parent 1763 0 R >> -% 1759 0 obj +% 1762 0 obj << -/D [1757 0 R /XYZ 98.895 753.953 null] +/D [1760 0 R /XYZ 98.895 753.953 null] >> % 437 0 obj << -/D [1757 0 R /XYZ 99.895 716.092 null] +/D [1760 0 R /XYZ 99.895 716.092 null] >> -% 1756 0 obj +% 1759 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1762 0 obj +% 1765 0 obj << /Type /Page -/Contents 1763 0 R -/Resources 1761 0 R +/Contents 1766 0 R +/Resources 1764 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1760 0 R +/Parent 1763 0 R >> -% 1764 0 obj +% 1767 0 obj << -/D [1762 0 R /XYZ 149.705 753.953 null] +/D [1765 0 R /XYZ 149.705 753.953 null] >> % 441 0 obj << -/D [1762 0 R /XYZ 150.705 716.092 null] +/D [1765 0 R /XYZ 150.705 716.092 null] >> -% 1761 0 obj +% 1764 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1766 0 obj +% 1769 0 obj << /Type /Page -/Contents 1767 0 R -/Resources 1765 0 R +/Contents 1770 0 R +/Resources 1768 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1760 0 R +/Parent 1763 0 R >> -% 1768 0 obj +% 1771 0 obj << -/D [1766 0 R /XYZ 98.895 753.953 null] +/D [1769 0 R /XYZ 98.895 753.953 null] >> % 445 0 obj << -/D [1766 0 R /XYZ 99.895 716.092 null] +/D [1769 0 R /XYZ 99.895 716.092 null] >> -% 1765 0 obj +% 1768 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1770 0 obj +% 1773 0 obj << /Type /Page -/Contents 1771 0 R -/Resources 1769 0 R +/Contents 1774 0 R +/Resources 1772 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1760 0 R +/Parent 1763 0 R >> -% 1772 0 obj +% 1775 0 obj << -/D [1770 0 R /XYZ 149.705 753.953 null] +/D [1773 0 R /XYZ 149.705 753.953 null] >> % 449 0 obj << -/D [1770 0 R /XYZ 150.705 716.092 null] +/D [1773 0 R /XYZ 150.705 716.092 null] >> -% 1769 0 obj +% 1772 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1774 0 obj +% 1777 0 obj << /Type /Page -/Contents 1775 0 R -/Resources 1773 0 R +/Contents 1778 0 R +/Resources 1776 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1760 0 R +/Parent 1763 0 R >> -% 1776 0 obj +% 1779 0 obj << -/D [1774 0 R /XYZ 98.895 753.953 null] +/D [1777 0 R /XYZ 98.895 753.953 null] >> % 453 0 obj << -/D [1774 0 R /XYZ 99.895 716.092 null] +/D [1777 0 R /XYZ 99.895 716.092 null] >> -% 1773 0 obj +% 1776 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1778 0 obj +% 1781 0 obj << /Type /Page -/Contents 1779 0 R -/Resources 1777 0 R +/Contents 1782 0 R +/Resources 1780 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1760 0 R +/Parent 1763 0 R >> -% 1780 0 obj +% 1783 0 obj << -/D [1778 0 R /XYZ 149.705 753.953 null] +/D [1781 0 R /XYZ 149.705 753.953 null] >> % 457 0 obj << -/D [1778 0 R /XYZ 150.705 716.092 null] +/D [1781 0 R /XYZ 150.705 716.092 null] >> -% 1777 0 obj +% 1780 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1782 0 obj +% 1785 0 obj << /Type /Page -/Contents 1783 0 R -/Resources 1781 0 R +/Contents 1786 0 R +/Resources 1784 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1789 0 R +/Parent 1792 0 R >> -% 1784 0 obj +% 1787 0 obj << -/D [1782 0 R /XYZ 98.895 753.953 null] +/D [1785 0 R /XYZ 98.895 753.953 null] >> -% 1785 0 obj +% 1788 0 obj << -/D [1782 0 R /XYZ 99.895 528.579 null] +/D [1785 0 R /XYZ 99.895 552.489 null] >> -% 1786 0 obj +% 1789 0 obj << -/D [1782 0 R /XYZ 99.895 494.104 null] +/D [1785 0 R /XYZ 99.895 518.014 null] >> -% 1787 0 obj +% 1790 0 obj << -/D [1782 0 R /XYZ 99.895 403.265 null] +/D [1785 0 R /XYZ 99.895 427.175 null] >> -% 1781 0 obj +% 1784 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> /ProcSet [ /PDF /Text ] >> -% 1791 0 obj +% 1794 0 obj << /Type /Page -/Contents 1792 0 R -/Resources 1790 0 R +/Contents 1795 0 R +/Resources 1793 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1789 0 R +/Parent 1792 0 R >> -% 1793 0 obj +% 1796 0 obj << -/D [1791 0 R /XYZ 149.705 753.953 null] +/D [1794 0 R /XYZ 149.705 753.953 null] >> % 461 0 obj << -/D [1791 0 R /XYZ 150.705 716.092 null] +/D [1794 0 R /XYZ 150.705 716.092 null] >> -% 1790 0 obj +% 1793 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1795 0 obj +% 1798 0 obj << /Type /Page -/Contents 1796 0 R -/Resources 1794 0 R +/Contents 1799 0 R +/Resources 1797 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1789 0 R +/Parent 1792 0 R >> -% 1797 0 obj +% 1800 0 obj << -/D [1795 0 R /XYZ 98.895 753.953 null] +/D [1798 0 R /XYZ 98.895 753.953 null] >> -% 1798 0 obj +% 1801 0 obj << -/D [1795 0 R /XYZ 99.895 552.489 null] +/D [1798 0 R /XYZ 99.895 564.444 null] >> -% 1799 0 obj +% 1802 0 obj << -/D [1795 0 R /XYZ 99.895 518.014 null] +/D [1798 0 R /XYZ 99.895 529.97 null] >> -% 1800 0 obj +% 1803 0 obj << -/D [1795 0 R /XYZ 99.895 427.175 null] +/D [1798 0 R /XYZ 99.895 439.13 null] >> -% 1794 0 obj +% 1797 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> /ProcSet [ /PDF /Text ] >> -% 1802 0 obj +% 1805 0 obj << /Type /Page -/Contents 1803 0 R -/Resources 1801 0 R +/Contents 1806 0 R +/Resources 1804 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1789 0 R +/Parent 1792 0 R >> -% 1804 0 obj +% 1807 0 obj << -/D [1802 0 R /XYZ 149.705 753.953 null] +/D [1805 0 R /XYZ 149.705 753.953 null] >> % 465 0 obj << -/D [1802 0 R /XYZ 150.705 716.092 null] +/D [1805 0 R /XYZ 150.705 716.092 null] >> -% 1801 0 obj +% 1804 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1806 0 obj +% 1809 0 obj << /Type /Page -/Contents 1807 0 R -/Resources 1805 0 R +/Contents 1810 0 R +/Resources 1808 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1789 0 R +/Parent 1792 0 R >> -% 1808 0 obj +% 1811 0 obj << -/D [1806 0 R /XYZ 98.895 753.953 null] +/D [1809 0 R /XYZ 98.895 753.953 null] >> -% 1809 0 obj +% 1812 0 obj << -/D [1806 0 R /XYZ 99.895 540.534 null] +/D [1809 0 R /XYZ 99.895 540.534 null] >> -% 1810 0 obj +% 1813 0 obj << -/D [1806 0 R /XYZ 99.895 506.059 null] +/D [1809 0 R /XYZ 99.895 506.059 null] >> -% 1811 0 obj +% 1814 0 obj << -/D [1806 0 R /XYZ 99.895 415.22 null] +/D [1809 0 R /XYZ 99.895 415.22 null] >> -% 1805 0 obj +% 1808 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> /ProcSet [ /PDF /Text ] >> -% 1813 0 obj +% 1816 0 obj << /Type /Page -/Contents 1814 0 R -/Resources 1812 0 R +/Contents 1817 0 R +/Resources 1815 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1789 0 R +/Parent 1792 0 R >> -% 1815 0 obj +% 1818 0 obj << -/D [1813 0 R /XYZ 149.705 753.953 null] +/D [1816 0 R /XYZ 149.705 753.953 null] >> % 469 0 obj << -/D [1813 0 R /XYZ 150.705 716.092 null] +/D [1816 0 R /XYZ 150.705 716.092 null] >> -% 1812 0 obj +% 1815 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1817 0 obj +% 1820 0 obj << /Type /Page -/Contents 1818 0 R -/Resources 1816 0 R +/Contents 1821 0 R +/Resources 1819 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1823 0 R ->> -% 1819 0 obj -<< -/D [1817 0 R /XYZ 98.895 753.953 null] +/Parent 1826 0 R >> endstream endobj -1827 0 obj +1830 0 obj << -/Length 5616 +/Length 6212 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.13)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.13)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_amx\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-342(subr)18(outine)-342(implements)-342(a)-342(maximum)-341(absolute)-342(value)-342(r)18(eduction)-342(opera-)]TJ -14.944 -11.955 Td [(tion)-250(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_amx\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 165.649 664.53 Tm [(This)-250(subr)19(outine)-250(implements)-250(a)-249(maximum)-250(absolute)-250(value)-249(r)18(eduction)-250(operation)]TJ 1 0 0 1 150.705 652.575 Tm [(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.619 Td [(ctxt)]TJ + 0 -20.408 Td [(ctxt)]TJ +0 g 0 G +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 175.611 463.465 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-253(all)-252(pr)18(ocesses.)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 443.056 Tm [(root)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ 0 g 0 G + 0 -20.408 Td [(dat)]TJ +0 g 0 G +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(128)]TJ + 79.263 -29.888 Td [(128)]TJ 0 g 0 G ET endstream endobj -1831 0 obj +1834 0 obj << -/Length 5225 +/Length 5285 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ -0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 682.219 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 124.802 670.263 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-252(all)-253(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 650.338 Tm [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 602.517 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 602.517 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 602.517 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 590.562 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.956 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 548.719 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 548.719 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 548.719 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 536.764 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 516.839 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 516.839 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 516.839 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 516.839 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 516.839 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 504.884 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 492.928 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 417.212 cm +1 0 0 1 124.802 453.078 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -23831,7 +23830,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 434.448 Td [(call)]TJ +/F231 8.9664 Tf 137.205 470.313 Td [(call)]TJ 0 g 0 G [-525(psb_amx\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -23850,21 +23849,21 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 423.19 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 423.19 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 423.19 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 423.19 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 423.19 Tm [(be)]TJ 1 0 0 1 124.802 411.235 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 302.642 cm +1 0 0 1 124.802 338.507 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 127.791 352.754 Td [(call)]TJ +/F231 8.9664 Tf 127.791 388.62 Td [(call)]TJ 0 g 0 G [-525(psb_amx\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -23887,12 +23886,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_amx\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -23912,97 +23911,98 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -218.48 Td [(129)]TJ +/F84 9.9626 Tf 103.537 -254.346 Td [(129)]TJ 0 g 0 G ET endstream endobj -1838 0 obj +1841 0 obj << -/Length 5619 +/Length 6213 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.14)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.14)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_amn\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-360(subr)18(outine)-360(impl)1(ements)-360(a)-360(minimum)-360(absolute)-360(value)-359(r)18(eduction)-360(opera-)]TJ -14.944 -11.955 Td [(tion)-250(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_amn\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.983 0 0 1 165.649 664.53 Tm [(This)-255(subr)19(outine)-255(implements)-255(a)-254(minimum)-255(absolute)-255(value)-254(r)18(eduction)-255(operation)]TJ 1 0 0 1 150.705 652.575 Tm [(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.619 Td [(ctxt)]TJ + 0 -20.408 Td [(ctxt)]TJ +0 g 0 G +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 175.611 463.465 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-253(all)-252(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 443.056 Tm [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ + 0 -20.408 Td [(dat)]TJ 0 g 0 G +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(130)]TJ + 79.263 -29.888 Td [(130)]TJ 0 g 0 G ET endstream endobj -1842 0 obj +1845 0 obj << -/Length 5262 +/Length 5343 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 682.219 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 1 0 0 1 124.802 670.263 Tm [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ -0.309 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ 0 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.956 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 417.212 cm +1 0 0 1 124.802 441.123 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -24011,7 +24011,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 434.448 Td [(call)]TJ +/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ 0 g 0 G [-525(psb_amn\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24030,14 +24030,14 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 302.642 cm +1 0 0 1 124.802 326.552 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -24046,7 +24046,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 352.754 Td [(call)]TJ +/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ 0 g 0 G [-525(psb_amn\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -24065,16 +24065,16 @@ BT [(amn_request\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -23.537 -10.959 Td [(.......)]TJ + -23.537 -10.958 Td [(.......)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_amn\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -24094,108 +24094,108 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -218.48 Td [(131)]TJ +/F84 9.9626 Tf 103.537 -242.391 Td [(131)]TJ 0 g 0 G ET endstream endobj -1849 0 obj +1852 0 obj << -/Length 5776 +/Length 6110 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.15)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.15)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(reduction)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(reduction)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_nrm2\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -22.401 Td [(This)-297(subr)18(outine)-296(implements)-297(a)-297(2-norm)-296(value)-297(r)18(eduction)-297(operation)-296(based)-297(on)]TJ -14.944 -11.955 Td [(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_nrm2\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 1.014 0 0 1 165.649 664.53 Tm [(This)-246(subr)18(outine)-246(implements)-246(a)-246(2-norm)-246(value)-246(r)18(eduction)-246(operation)-246(based)-246(on)]TJ 1 0 0 1 150.705 652.575 Tm [(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.409 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-370(as:)-551(a)-371(r)18(eal)-370(variable,)-401(which)-370(may)-371(be)-370(a)-371(scalar)74(,)-400(or)-371(a)-370(rank)-371(1)-370(array)111(.)]TJ 0 -11.956 Td [(Kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-224(as:)-300(a)-224(r)18(eal)-224(variable,)-230(which)-223(may)-224(be)-224(a)-224(scalar)76(,)-230(or)-224(a)-224(rank)-224(1)-223(array)113(.)-530(Kind,)]TJ 1 0 0 1 175.611 463.465 Tm [(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.408 Td [(root)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.956 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.955 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -32.364 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.956 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.401 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(2-norm)-250(r)18(eduction.)]TJ 5.54 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.781 0 Td [(.)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(2-norm)-250(r)18(eduction.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G - 79.264 -29.887 Td [(132)]TJ + 79.263 -29.888 Td [(132)]TJ 0 g 0 G ET endstream endobj -1853 0 obj +1856 0 obj << -/Length 6252 +/Length 6779 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(variable,)-250(which)-250(may)-250(be)-250(a)-250(scalar)74(,)-250(or)-250(a)-250(rank)-250(1)-250(array)111(.)]TJ 0 -11.956 Td [(Kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(variable,)-250(which)-250(may)-250(be)-250(a)-250(scalar)74(,)-250(or)-250(a)-250(rank)-250(1)-250(array)111(.)]TJ 0 -11.956 Td [(Kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 602.517 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 602.517 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 602.517 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 590.562 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-345(r)18(eduction)-345(is)-346(appr)18(opriate)-345(to)-345(compute)-345(the)-345(r)18(esults)-346(of)-345(multiple)-345(\050local\051)]TJ 12.453 -11.955 Td [(NRM2)-250(operations)-250(at)-250(the)-250(same)-250(time.)]TJ + 1.02 0 0 1 124.493 548.719 Tm [(This)-295(r)17(eduction)-295(is)-295(appr)18(opriate)-296(to)-295(compute)-295(the)-295(r)17(esul)1(ts)-296(of)-295(multiple)-295(\050local\051)]TJ 1 0 0 1 124.802 536.764 Tm [(NRM2)-250(operations)-250(at)-250(the)-250(same)-250(time.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Denoting)-249(by)]TJ/F60 9.9626 Tf 69.789 0 Td [(d)-40(a)-25(t)]TJ/F60 7.5716 Tf 13.536 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.23 1.96 Td [(the)-249(value)-249(of)-248(the)-249(variable)]TJ/F60 9.9626 Tf 108.808 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 15.973 0 Td [(on)-249(pr)18(ocess)]TJ/F60 9.9626 Tf 49.078 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(,)-249(the)-249(output)]TJ/F60 9.9626 Tf 53.71 0 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf -306.635 -11.955 Td [(is)-250(equivalent)-250(to)-250(the)-250(computation)-250(of)]TJ/F60 9.9626 Tf 124.796 -25.468 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 15.061 0 Td [(=)]TJ/F17 9.9626 Tf 11.086 10.922 Td [(r)]TJ + 0.999 0 0 1 124.802 516.839 Tm [(Denoting)-251(by)]TJ/F78 9.9626 Tf 1 0 0 1 182.12 516.839 Tm [(d)-40(a)-25(t)]TJ/F78 7.5716 Tf 13.536 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.999 0 0 1 200.903 516.839 Tm [(the)-251(value)-251(of)-250(the)-251(variable)]TJ/F78 9.9626 Tf 1 0 0 1 309.7 516.839 Tm [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 0.999 0 0 1 325.691 516.839 Tm [(on)-251(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 374.759 516.839 Tm [(i)]TJ/F84 9.9626 Tf 0.999 0 0 1 377.722 516.839 Tm [(,)-251(the)-251(output)]TJ/F78 9.9626 Tf 1 0 0 1 431.437 516.839 Tm [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf -306.635 -11.955 Td [(is)-250(equivalent)-250(to)-250(the)-250(computation)-250(of)]TJ/F78 9.9626 Tf 124.796 -25.468 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 15.061 0 Td [(=)]TJ/F17 9.9626 Tf 11.086 10.922 Td [(r)]TJ ET q 1 0 0 1 285.832 490.532 cm []0 d 0 J 0.389 w 0 0 m 30.512 0 l S Q BT -/F104 13.9477 Tf 285.957 477.344 Td [(\345)]TJ/F60 7.5716 Tf 4.245 -8.764 Td [(i)]TJ/F60 9.9626 Tf 8.364 10.836 Td [(d)-40(a)-25(t)]TJ/F62 7.5716 Tf 13.495 3.473 Td [(2)]TJ/F60 7.5716 Tf 0.041 -7.027 Td [(i)]TJ/F62 9.9626 Tf 4.243 3.554 Td [(,)]TJ -191.543 -30.806 Td [(with)-250(car)18(e)-250(taken)-250(to)-250(avoid)-250(unnecessary)-250(over\003ow)92(.)]TJ +/F241 13.9477 Tf 285.957 477.344 Td [(\345)]TJ/F78 7.5716 Tf 4.245 -8.764 Td [(i)]TJ/F78 9.9626 Tf 8.364 10.836 Td [(d)-40(a)-25(t)]TJ/F84 7.5716 Tf 13.495 3.473 Td [(2)]TJ/F78 7.5716 Tf 0.041 -7.027 Td [(i)]TJ/F84 9.9626 Tf 4.243 3.554 Td [(,)]TJ -191.961 -30.806 Td [(with)-250(car)18(e)-250(taken)-250(to)-250(avoid)-250(unnecessary)-250(over\003ow)92(.)]TJ 0 g 0 G - -12.453 -19.926 Td [(3.)]TJ + -12.035 -19.926 Td [(3.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 428.684 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 428.684 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 428.684 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 416.729 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 396.804 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 396.804 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 396.804 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 396.804 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 396.804 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 384.849 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 372.894 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -24209,7 +24209,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 350.279 Td [(call)]TJ +/F231 8.9664 Tf 137.205 350.279 Td [(call)]TJ 0 g 0 G [-525(psb_nrm2\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24228,9 +24228,9 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(5.)]TJ +/F84 9.9626 Tf -48.393 -36.165 Td [(5.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 303.155 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 303.155 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 303.155 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 303.155 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 303.155 Tm [(be)]TJ 1 0 0 1 124.802 291.2 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -24242,7 +24242,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 127.791 268.585 Td [(call)]TJ +/F231 8.9664 Tf 127.791 268.585 Td [(call)]TJ 0 g 0 G [-525(psb_nrm2\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -24265,12 +24265,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_nrm2\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -24290,152 +24290,152 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -134.311 Td [(133)]TJ +/F84 9.9626 Tf 103.537 -134.311 Td [(133)]TJ 0 g 0 G ET endstream endobj -1864 0 obj +1867 0 obj << -/Length 5352 +/Length 5627 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.16)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.16)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(snd)-250(\227)-250(Send)-250(data)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(snd)-250(\227)-250(Send)-250(data)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_snd\050ctxt,)-525(dat,)-525(dst,)-525(m\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(sends)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_snd\050ctxt,)-525(dat,)-525(dst,)-525(m\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(sends)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(dat)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(data)-250(to)-250(be)-250(sent.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-220(a)-220(rank)-219(1)-220(or)-220(2)-220(array)111(,)-226(or)-220(a)-219(character)-220(or)-220(logical)-220(scalar)74(.)-520(T)90(ype,)-225(kind)-220(and)-220(rank)]TJ 0 -11.956 Td [(must)-215(agr)18(ee)-216(on)-215(sender)-215(and)-216(r)18(eceiver)-215(pr)18(ocess;)-227(if)]TJ/F60 9.9626 Tf 197.687 0 Td [(m)]TJ/F62 9.9626 Tf 10.021 0 Td [(is)-215(not)-216(speci\002ed,)-222(size)-215(must)]TJ -207.708 -11.955 Td [(agr)18(ee)-250(as)-250(well.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(data)-250(to)-250(be)-250(sent.)]TJ 5.849 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.013 0 0 1 175.611 489.905 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 0.984 0 0 1 175.611 477.95 Tm [(or)-254(a)-254(rank)-255(1)-254(or)-254(2)-254(array)113(,)-255(or)-254(a)-254(character)-254(or)-254(logical)-254(scalar)75(.)-570(T)92(ype,)-255(kind)-254(and)-254(rank)]TJ 0.985 0 0 1 175.611 465.994 Tm [(must)-253(agr)18(ee)-254(on)-253(sender)-253(and)-254(r)19(eceiver)-254(pr)19(ocess;)-254(if)]TJ/F78 9.9626 Tf 1 0 0 1 373.199 465.994 Tm [(m)]TJ/F84 9.9626 Tf 0.985 0 0 1 383.561 465.994 Tm [(is)-253(not)-254(speci\002ed,)-253(size)-254(must)]TJ 1 0 0 1 175.611 454.039 Tm [(agr)18(ee)-250(as)-250(well.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(dst)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(dst)]TJ 0 g 0 G -/F62 9.9626 Tf 18.809 0 Td [(Destination)-250(pr)18(ocess.)]TJ 6.098 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(d)-25(s)-25(t)]TJ/F69 10.3811 Tf 15.689 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1.)]TJ +/F84 9.9626 Tf 18.809 0 Td [(Destination)-250(pr)18(ocess.)]TJ 6.097 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.851 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(d)-25(s)-25(t)]TJ/F134 10.3811 Tf 15.688 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -241.89 -31.88 Td [(m)]TJ +/F75 9.9626 Tf -241.89 -31.88 Td [(m)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.069 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf 40.946 0 Td [(.)]TJ -68.034 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(m)]TJ/F69 10.3811 Tf 10.767 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ -235.542 -11.955 Td [(When)]TJ/F60 9.9626 Tf 29.859 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 16.898 0 Td [(is)-342(a)-341(rank)-342(2)-341(array)111(,)-365(speci\002es)-342(the)-341(number)-342(of)-341(r)18(ows)-342(to)-342(be)-341(sent)-342(in-)]TJ -46.757 -11.955 Td [(dependently)-341(of)-340(the)-341(leading)-341(dimension)]TJ/F60 9.9626 Tf 175.121 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-386(must)-341(have)-340(the)-341(same)]TJ -222.236 -11.955 Td [(value)-250(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.068 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 40.946 0 Td [(.)]TJ -67.726 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.851 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(m)]TJ/F134 10.3811 Tf 10.767 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F181 10.3811 Tf 9.257 0 Td [(\051)]TJ/F84 9.9626 Tf 4.149 0 Td [(.)]TJ 1.02 0 0 1 175.113 294.637 Tm [(When)]TJ/F78 9.9626 Tf 1 0 0 1 204.579 294.637 Tm [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 1.02 0 0 1 220.557 294.637 Tm [(is)-244(a)-245(rank)-244(2)-244(array)108(,)-244(speci\002es)-245(the)-244(number)-244(of)-245(r)18(ows)-244(to)-245(be)-244(sent)-244(inde-)]TJ 0.98 0 0 1 175.313 282.682 Tm [(pendently)-236(of)-236(the)-236(leading)-236(dimension)]TJ/F78 9.9626 Tf 1 0 0 1 331.178 282.682 Tm [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 0.98 0 0 1 364.887 282.682 Tm [(,)-170(1)]TJ/F181 10.3811 Tf 1 0 0 1 373.994 282.682 Tm [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 378.144 282.682 Tm [(;)-242(must)-236(have)-236(the)-236(same)-236(value)]TJ 1 0 0 1 175.611 270.727 Tm [(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G -/F59 11.9552 Tf 0 -21.918 Td [(Notes)]TJ +/F75 11.9552 Tf 0 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-292(subr)18(outine)-292(impl)1(ies)-292(a)-292(synchr)18(onization,)-302(but)-292(only)-292(between)-291(the)-292(calling)]TJ 12.454 -11.955 Td [(pr)18(ocess)-250(and)-250(the)-250(destination)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 158.309 0 Td [(d)-25(s)-25(t)]TJ/F62 9.9626 Tf 12.797 0 Td [(.)]TJ + 1.014 0 0 1 175.303 206.966 Tm [(This)-247(subr)18(outine)-247(implies)-248(a)-247(synchr)18(onization,)-247(but)-247(only)-248(between)-247(the)-247(calling)]TJ 1 0 0 1 175.313 195.011 Tm [(pr)18(ocess)-250(and)-250(the)-250(destination)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 158.309 0 Td [(d)-25(s)-25(t)]TJ/F84 9.9626 Tf 12.797 0 Td [(.)]TJ 0 g 0 G - -31.629 -104.573 Td [(134)]TJ + -31.331 -104.573 Td [(134)]TJ 0 g 0 G ET endstream endobj -1869 0 obj +1872 0 obj << -/Length 5356 +/Length 5628 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.17)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.17)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(rcv)-250(\227)-250(Receive)-250(data)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(rcv)-250(\227)-250(Receive)-250(data)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_rcv\050ctxt,)-525(dat,)-525(src,)-525(m\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(r)18(eceives)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_rcv\050ctxt,)-525(dat,)-525(src,)-525(m\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(r)18(eceives)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(src)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(src)]TJ 0 g 0 G -/F62 9.9626 Tf 17.704 0 Td [(Sour)18(ce)-250(pr)18(ocess.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(s)-15(r)-17(c)]TJ/F69 10.3811 Tf 15.141 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1.)]TJ +/F84 9.9626 Tf 17.704 0 Td [(Sour)18(ce)-250(pr)18(ocess.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.85 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(s)-15(r)-17(c)]TJ/F134 10.3811 Tf 15.141 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -241.342 -31.881 Td [(m)]TJ +/F75 9.9626 Tf -241.342 -31.881 Td [(m)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.069 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf 40.946 0 Td [(.)]TJ -68.034 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(m)]TJ/F69 10.3811 Tf 10.767 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ -235.542 -11.956 Td [(When)]TJ/F60 9.9626 Tf 29.859 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 16.898 0 Td [(is)-342(a)-341(rank)-342(2)-341(array)111(,)-365(speci\002es)-342(the)-341(number)-342(of)-341(r)18(ows)-342(to)-342(be)-341(sent)-342(in-)]TJ -46.757 -11.955 Td [(dependently)-341(of)-340(the)-341(leading)-341(dimension)]TJ/F60 9.9626 Tf 175.121 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-386(must)-341(have)-340(the)-341(same)]TJ -222.236 -11.955 Td [(value)-250(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.069 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 40.946 0 Td [(.)]TJ -67.725 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.85 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(m)]TJ/F134 10.3811 Tf 10.767 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F181 10.3811 Tf 9.257 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ 1.02 0 0 1 124.304 398.249 Tm [(When)]TJ/F78 9.9626 Tf 1 0 0 1 153.769 398.249 Tm [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 1.02 0 0 1 169.747 398.249 Tm [(is)-244(a)-245(rank)-244(2)-245(array)109(,)-244(speci\002es)-245(the)-244(number)-244(of)-245(r)18(ows)-244(to)-245(be)-244(sent)-245(inde-)]TJ 0.98 0 0 1 124.503 386.293 Tm [(pendently)-236(of)-236(the)-236(leading)-236(dimension)]TJ/F78 9.9626 Tf 1 0 0 1 280.369 386.293 Tm [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 0.98 0 0 1 314.077 386.293 Tm [(,)-170(1)]TJ/F181 10.3811 Tf 1 0 0 1 323.185 386.293 Tm [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.334 386.293 Tm [(;)-242(must)-236(have)-236(the)-236(same)-236(value)]TJ 1 0 0 1 124.802 374.338 Tm [(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(The)-250(data)-250(to)-250(be)-250(r)18(eceived.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-220(a)-220(rank)-219(1)-220(or)-220(2)-220(array)111(,)-226(or)-220(a)-219(character)-220(or)-220(logical)-220(scalar)74(.)-520(T)90(ype,)-225(kind)-220(and)-220(rank)]TJ 0 -11.955 Td [(must)-215(agr)18(ee)-216(on)-215(sender)-215(and)-216(r)18(eceiver)-215(pr)18(ocess;)-227(if)]TJ/F60 9.9626 Tf 197.687 0 Td [(m)]TJ/F62 9.9626 Tf 10.021 0 Td [(is)-215(not)-216(speci\002ed,)-222(size)-215(must)]TJ -207.708 -11.955 Td [(agr)18(ee)-250(as)-250(well.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 19.059 0 Td [(The)-250(data)-250(to)-250(be)-250(r)18(eceived.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 284.674 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 0.984 0 0 1 124.802 272.719 Tm [(or)-254(a)-254(rank)-255(1)-254(or)-254(2)-254(array)113(,)-255(or)-254(a)-254(character)-254(or)-254(logical)-254(scalar)75(.)-570(T)92(ype,)-255(kind)-254(and)-254(rank)]TJ 0.985 0 0 1 124.802 260.764 Tm [(must)-253(agr)18(ee)-253(on)-254(sender)-253(and)-254(r)19(eceiver)-254(pr)19(ocess;)-254(if)]TJ/F78 9.9626 Tf 1 0 0 1 322.39 260.764 Tm [(m)]TJ/F84 9.9626 Tf 0.985 0 0 1 332.752 260.764 Tm [(is)-253(not)-254(speci\002ed,)-253(size)-254(must)]TJ 1 0 0 1 124.802 248.809 Tm [(agr)18(ee)-250(as)-250(well.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-292(subr)18(outine)-291(implies)-292(a)-292(synchr)18(onization,)-302(but)-292(only)-292(between)-291(the)-292(calling)]TJ 12.453 -11.955 Td [(pr)18(ocess)-250(and)-250(the)-250(sour)18(ce)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 137.538 0 Td [(s)-15(r)-17(c)]TJ/F62 9.9626 Tf 12.249 0 Td [(.)]TJ + 1.014 0 0 1 124.493 206.966 Tm [(This)-247(subr)18(outine)-248(impl)1(ies)-248(a)-247(synchr)18(onization,)-247(but)-247(only)-248(between)-247(the)-247(calling)]TJ 1 0 0 1 124.503 195.011 Tm [(pr)18(ocess)-250(and)-250(the)-250(sour)18(ce)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 137.538 0 Td [(s)-15(r)-17(c)]TJ/F84 9.9626 Tf 12.249 0 Td [(.)]TJ 0 g 0 G - -10.31 -104.573 Td [(135)]TJ + -10.011 -104.573 Td [(135)]TJ 0 g 0 G ET endstream endobj -1876 0 obj +1879 0 obj << -/Length 6241 +/Length 6891 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(8)-1000(Error)-250(handling)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-382(PSBLAS)-382(library)-381(err)18(or)-382(handling)-382(policy)-382(has)-382(been)-382(comple)1(tely)-382(r)18(ewritten)-382(in)]TJ 0 -11.955 Td [(version)-359(2.0.)-638(The)-359(idea)-359(behind)-360(the)-359(design)-359(of)-359(this)-359(new)-360(err)18(or)-359(handling)-359(strategy)]TJ 0 -11.955 Td [(is)-303(to)-303(keep)-303(err)18(or)-303(messages)-303(on)-303(a)-303(stack)-303(allowing)-303(the)-303(user)-303(to)-303(trace)-303(back)-303(up)-303(to)-303(the)]TJ 0 -11.955 Td [(point)-317(wher)18(e)-318(the)-317(\002rst)-317(err)18(or)-318(message)-317(has)-318(been)-317(generated.)-512(Every)-317(r)18(outine)-318(in)-317(the)]TJ 0 -11.956 Td [(PSBLAS-2.0)-336(library)-336(has,)-358(as)-336(last)-337(non-optional)-336(ar)18(gument,)-358(an)-336(integer)]TJ/F67 9.9626 Tf 298.678 0 Td [(info)]TJ/F62 9.9626 Tf 24.271 0 Td [(vari-)]TJ -322.949 -11.955 Td [(able;)-364(whenever)74(,)-344(inside)-326(the)-326(r)18(outine,)-345(an)-326(err)18(or)-325(is)-326(detected,)-345(this)-326(variable)-326(is)-325(set)-326(to)]TJ 0 -11.955 Td [(a)-384(value)-384(corr)18(esponding)-384(to)-384(a)-384(speci\002c)-384(err)18(or)-384(code.)-711(Then)-384(this)-384(err)18(or)-384(code)-384(is)-384(also)]TJ 0 -11.955 Td [(pushed)-274(on)-273(the)-274(err)18(or)-274(stack)-274(and)-273(then)-274(either)-274(contr)18(ol)-274(is)-273(r)18(eturned)-274(to)-274(the)-273(caller)-274(r)18(ou-)]TJ 0 -11.955 Td [(tine)-342(or)-342(the)-342(execution)-343(is)-342(aborted,)-365(depending)-342(on)-342(the)-342(users)-342(choice.)-587(At)-342(the)-342(time)]TJ 0 -11.955 Td [(when)-243(the)-242(execution)-243(is)-242(aborted,)-244(an)-243(err)18(or)-242(message)-243(is)-243(p)1(rinted)-243(on)-243(standar)18(d)-242(output)]TJ 0 -11.956 Td [(with)-257(a)-256(level)-257(of)-256(verbosity)-257(than)-256(can)-257(be)-256(chosen)-257(by)-257(the)-256(user)74(.)-330(If)-256(the)-257(execution)-257(is)-256(not)]TJ 0 -11.955 Td [(aborted,)-259(then,)-259(the)-257(caller)-257(r)18(outine)-258(checks)-257(the)-257(value)-257(r)18(eturned)-257(in)-258(the)]TJ/F67 9.9626 Tf 284.621 0 Td [(info)]TJ/F62 9.9626 Tf 23.484 0 Td [(variable)]TJ -308.105 -11.955 Td [(and,)-290(if)-282(not)-282(zer)18(o,)-291(an)-282(err)18(or)-282(condition)-282(is)-282(raised.)-407(This)-282(pr)18(ocess)-282(continues)-282(on)-282(all)-282(the)]TJ 0 -11.955 Td [(levels)-203(of)-203(nested)-203(calls)-203(until)-203(the)-203(level)-203(wher)18(e)-202(the)-203(user)-203(decides)-203(to)-203(abort)-203(the)-203(pr)18(ogram)]TJ 0 -11.955 Td [(execution.)]TJ 14.944 -11.955 Td [(Figur)18(e)]TJ +/F75 14.3462 Tf 150.705 705.784 Td [(8)-1000(Error)-250(handling)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 683.082 Tm [(The)-317(PSBLAS)-317(library)-317(err)17(or)-317(handling)-317(policy)-317(has)-317(been)-317(completely)-318(r)18(ewritten)-317(in)]TJ 1.02 0 0 1 150.426 671.127 Tm [(version)-315(2.0.)-513(The)-315(idea)-315(behind)-315(the)-315(design)-315(of)-315(this)-315(new)-315(err)18(or)-315(handling)-315(strategy)]TJ 1.02 0 0 1 150.705 659.172 Tm [(is)-261(to)-260(keep)-261(err)18(or)-261(messages)-261(on)-261(a)-260(stack)-261(allowing)-261(the)-260(user)-261(to)-261(trace)-261(back)-260(up)-261(to)-261(the)]TJ 1.02 0 0 1 150.406 647.217 Tm [(point)-270(wher)17(e)-270(the)-271(\002rst)-270(err)17(or)-270(message)-270(has)-271(been)-270(generated.)-380(Every)-271(r)18(outine)-271(in)-270(the)]TJ 0.98 0 0 1 150.705 635.261 Tm [(PSBLAS-2.0)-245(library)-245(has,)-247(as)-245(last)-245(non-optional)-245(ar)18(gument,)-247(an)-245(integer)]TJ/F131 9.9626 Tf 1 0 0 1 435.013 635.261 Tm [(info)]TJ/F84 9.9626 Tf 0.98 0 0 1 458.327 635.261 Tm [(variable;)]TJ 1 0 0 1 150.286 623.306 Tm [(whenever)74(,)-251(inside)-250(the)-251(r)18(outine,)-250(an)-251(err)18(or)-250(is)-251(detected,)-250(this)-251(variable)-250(is)-251(set)-250(to)-251(a)-250(value)]TJ 1.02 0 0 1 150.705 611.351 Tm [(corr)18(esponding)-337(to)-336(a)-337(speci\002c)-336(err)17(or)-336(code.)-578(Then)-337(this)-336(err)17(or)-336(code)-337(is)-336(also)-337(pushed)]TJ 1.02 0 0 1 150.705 599.396 Tm [(on)-299(the)-299(err)17(or)-299(stack)-299(and)-299(then)-299(either)-299(contr)17(ol)-299(is)-299(r)18(eturned)-299(to)-300(the)-299(caller)-299(r)18(outine)-299(or)]TJ 1.005 0 0 1 150.705 587.441 Tm [(the)-249(execution)-249(is)-249(aborted,)-249(depending)-249(on)-250(the)-249(users)-249(choice.)-309(At)-249(the)-249(time)-249(when)-249(the)]TJ 0.98 0 0 1 150.705 575.486 Tm [(execution)-218(is)-218(aborted,)-226(an)-218(err)19(or)-219(message)-218(is)-218(printed)-218(on)-218(standar)18(d)-218(output)-218(with)-218(a)-218(level)]TJ 0.98 0 0 1 150.705 563.53 Tm [(of)-247(verbosity)-247(than)-246(can)-247(be)-247(chosen)-247(by)-247(the)-246(user)75(.)-313(If)-247(the)-247(execution)-247(is)-247(not)-246(aborted,)-249(then,)]TJ 0.98 0 0 1 150.705 551.575 Tm [(the)-256(caller)-256(r)18(outine)-256(checks)-256(the)-256(value)-256(r)18(eturned)-256(in)-256(the)]TJ/F131 9.9626 Tf 1 0 0 1 367.074 551.575 Tm [(info)]TJ/F84 9.9626 Tf 0.98 0 0 1 390.496 551.575 Tm [(variable)-256(and,)-257(if)-256(not)-256(zer)19(o,)]TJ 1.02 0 0 1 150.705 539.62 Tm [(an)-247(err)17(or)-247(condition)-247(is)-247(raised.)-311(This)-247(pr)18(ocess)-247(continues)-248(on)-247(all)-247(the)-247(levels)-247(of)-248(nested)]TJ 1 0 0 1 150.705 527.665 Tm [(calls)-250(until)-250(the)-250(level)-250(wher)18(e)-250(the)-250(user)-250(decides)-250(to)-250(abort)-250(the)-250(pr)18(ogram)-250(execution.)]TJ 1.018 0 0 1 165.649 515.71 Tm [(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-286(5)]TJ + [-246(5)]TJ 0 g 0 G - [-285(shows)-286(the)-286(layou)1(t)-286(of)-286(a)-285(generic)]TJ/F67 9.9626 Tf 172.064 0 Td [(psb_foo)]TJ/F62 9.9626 Tf 39.458 0 Td [(r)18(outine)-286(with)-285(r)18(espect)-286(to)-286(the)]TJ -226.466 -11.956 Td [(PSBLAS-2.0)-258(err)18(or)-259(handling)-258(policy)111(.)-335(It)-258(is)-258(possible)-259(to)-258(see)-258(how)92(,)-261(whenever)-258(an)-258(err)18(or)]TJ 0 -11.955 Td [(condition)-298(is)-298(detected,)-311(the)]TJ/F67 9.9626 Tf 114.879 0 Td [(info)]TJ/F62 9.9626 Tf 23.893 0 Td [(variable)-298(is)-299(set)-298(to)-298(the)-298(corr)18(esponding)-299(err)18(or)-298(code)]TJ -138.772 -11.955 Td [(which)-309(is,)-324(then,)-324(pushed)-310(on)-309(top)-309(of)-310(the)-309(stack)-309(by)-309(means)-310(of)-309(the)]TJ/F67 9.9626 Tf 265.277 0 Td [(psb_errpush)]TJ/F62 9.9626 Tf 57.534 0 Td [(.)-488(An)]TJ -322.811 -11.955 Td [(err)18(or)-325(condition)-326(may)-325(be)-326(dir)18(ectl)1(y)-326(detected)-325(inside)-326(a)-325(r)18(outine)-325(or)-326(indir)18(ectly)-325(check-)]TJ 0 -11.955 Td [(ing)-331(the)-331(err)18(or)-331(code)-331(r)18(eturned)-331(r)18(eturned)-331(by)-331(a)-331(called)-331(r)18(outine.)-553(Whenever)-331(an)-331(err)18(or)]TJ 0 -11.956 Td [(is)-253(encounter)18(ed,)-255(after)-253(it)-254(has)-253(been)-254(pushed)-253(on)-254(st)1(ack,)-255(the)-253(pr)18(ogram)-254(execution)-253(skips)]TJ 0 -11.955 Td [(to)-264(a)-265(point)-264(wher)18(e)-264(the)-265(err)18(or)-264(condition)-264(is)-264(handled;)-272(the)-264(err)18(or)-265(condition)-264(is)-264(handled)]TJ 0 -11.955 Td [(either)-336(by)-336(r)18(eturning)-336(contr)18(ol)-336(to)-336(the)-336(caller)-335(r)17(o)1(utine)-336(or)-336(by)-336(calling)-336(the)]TJ/F67 9.9626 Tf 291.408 0 Td [(psb\134_error)]TJ/F62 9.9626 Tf -291.408 -11.955 Td [(r)18(outine)-273(which)-274(prints)-273(the)-274(content)-273(of)-273(the)-274(err)18(or)-273(stack)-274(and)-273(aborts)-273(the)-274(pr)18(ogram)-273(ex-)]TJ 0 -11.955 Td [(ecution,)-373(accor)18(ding)-348(to)-348(the)-348(choice)-348(made)-348(by)-348(the)-348(user)-348(with)]TJ/F67 9.9626 Tf 252.305 0 Td [(psb_set_erraction)]TJ/F62 9.9626 Tf 88.915 0 Td [(.)]TJ -341.22 -11.955 Td [(The)-297(default)-296(is)-297(to)-296(print)-297(the)-297(err)18(or)-296(and)-297(terminate)-296(the)-297(pr)18(ogram,)-308(but)-297(the)-297(user)-296(may)]TJ 0 -11.956 Td [(choose)-250(to)-250(handle)-250(the)-250(err)18(or)-250(explicitly)111(.)]TJ 14.944 -11.955 Td [(Figur)18(e)]TJ + [-246(shows)-245(the)-246(layout)-246(of)-245(a)-246(generic)]TJ/F131 9.9626 Tf 1 0 0 1 337.572 515.71 Tm [(psb_foo)]TJ/F84 9.9626 Tf 1.018 0 0 1 376.676 515.71 Tm [(r)18(outine)-246(with)-246(r)18(espect)-246(to)-245(the)]TJ 1.004 0 0 1 150.705 503.755 Tm [(PSBLAS-2.0)-250(err)18(or)-250(handling)-250(policy)111(.)-311(It)-250(is)-250(possible)-250(to)-250(see)-249(how)91(,)-250(whenever)-250(an)-250(err)18(or)]TJ 1.02 0 0 1 150.705 491.799 Tm [(condition)-246(is)-246(detected,)-247(the)]TJ/F131 9.9626 Tf 1 0 0 1 265.648 491.799 Tm [(info)]TJ/F84 9.9626 Tf 1.02 0 0 1 289.072 491.799 Tm [(variable)-246(is)-246(set)-247(to)-246(the)-246(corr)17(espondi)1(ng)-247(err)18(or)-246(code)]TJ 1.02 0 0 1 150.286 479.844 Tm [(which)-277(is,)-285(then,)-285(pushed)-277(on)-277(top)-277(of)-277(the)-277(stack)-277(by)-277(means)-277(of)-277(the)]TJ/F131 9.9626 Tf 1 0 0 1 416.461 479.844 Tm [(psb_errpush)]TJ/F84 9.9626 Tf 1.02 0 0 1 473.995 479.844 Tm [(.)-400(An)]TJ 0.992 0 0 1 150.705 467.889 Tm [(err)18(or)-251(condition)-251(may)-251(be)-251(dir)18(ectly)-251(detected)-251(inside)-251(a)-251(r)18(outine)-251(or)-251(indir)18(ectly)-251(checking)]TJ 1.02 0 0 1 150.705 455.934 Tm [(the)-333(err)18(or)-333(code)-333(r)17(eturned)-332(r)17(eturned)-333(by)-333(a)-333(called)-333(r)18(outine.)-567(Whenever)-333(an)-333(err)17(or)-333(is)]TJ 0.98 0 0 1 150.705 443.979 Tm [(encounter)18(ed,)-240(after)-238(it)-237(has)-237(been)-237(pushed)-237(on)-238(stack,)-240(the)-238(pr)19(ogram)-238(executi)1(on)-238(skips)-237(to)-237(a)]TJ 0.98 0 0 1 150.406 432.024 Tm [(point)-251(wher)18(e)-252(the)-251(err)18(or)-251(condition)-252(is)-251(handled;)-253(the)-252(err)19(or)-252(condition)-251(is)-252(handled)-251(either)]TJ 1.015 0 0 1 150.705 420.068 Tm [(by)-245(r)17(eturning)-245(contr)18(ol)-246(to)-245(the)-246(caller)-245(r)17(outine)-245(or)-246(by)-245(calling)-246(the)]TJ/F131 9.9626 Tf 1 0 0 1 407.229 420.068 Tm [(psb\134_error)]TJ/F84 9.9626 Tf 1.015 0 0 1 462.015 420.068 Tm [(r)18(outine)]TJ 1.02 0 0 1 150.286 408.113 Tm [(which)-255(prints)-254(the)-255(content)-255(of)-255(the)-254(err)17(or)-254(stack)-255(and)-255(aborts)-255(the)-254(pr)17(ogram)-254(execution,)]TJ 0.98 0 0 1 150.705 396.158 Tm [(accor)18(ding)-242(to)-242(the)-241(choice)-242(made)-242(by)-242(the)-242(user)-242(with)]TJ/F131 9.9626 Tf 1 0 0 1 350.622 396.158 Tm [(psb_set_erraction)]TJ/F84 9.9626 Tf 0.98 0 0 1 439.537 396.158 Tm [(.)-312(The)-242(default)]TJ 1.02 0 0 1 150.705 384.203 Tm [(is)-314(to)-314(print)-314(t)1(he)-314(err)17(or)-314(and)-313(terminate)-314(the)-314(pr)18(ogram,)-331(but)-314(the)-314(user)-314(may)-314(choose)-314(to)]TJ 1 0 0 1 150.705 372.248 Tm [(handle)-250(the)-250(err)18(or)-250(explicitly)111(.)]TJ 0.98 0 0 1 165.649 360.293 Tm [(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-347(6)]TJ + [-224(6)]TJ 0 g 0 G - [-348(r)18(eports)-347(a)-347(sample)-347(err)18(or)-348(message)-347(generated)-347(by)-348(the)-347(PSBLAS-2.0)-347(li-)]TJ -14.944 -11.955 Td [(brary)111(.)-539(This)-327(err)18(or)-326(has)-327(been)-326(generated)-327(by)-326(the)-326(fact)-327(that)-326(the)-327(user)-326(has)-327(chosen)-326(the)]TJ 0 -11.955 Td [(invalid)-379(\223FOO\224)-380(stor)1(a)-1(g)1(e)-380(format)-379(to)-379(r)18(epr)18(esent)-380(the)-379(sparse)-379(matrix.)-698(Fr)18(om)-380(this)-379(er)18(-)]TJ 0 -11.955 Td [(r)18(or)-394(message)-393(it)-394(is)-393(possible)-394(to)-394(se)1(e)-394(that)-394(the)-393(err)18(or)-394(has)-393(been)-394(detected)-394(inside)-393(the)]TJ/F67 9.9626 Tf 0 -11.955 Td [(psb_cest)]TJ/F62 9.9626 Tf 45.361 0 Td [(subr)18(outine)-353(called)-353(by)]TJ/F67 9.9626 Tf 95.326 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 50.591 0 Td [(...)-619(by)-354(pr)18(ocess)-353(0)-353(\050i.e.)-619(the)-353(r)18(oot)-354(pr)18(o-)]TJ -191.278 -11.956 Td [(cess\051.)]TJ + [-225(r)19(eports)-225(a)-225(sample)-224(err)18(or)-224(message)-225(generated)-225(by)-224(the)-225(PSBLAS-2.0)-224(library)113(.)]TJ 1.02 0 0 1 150.396 348.337 Tm [(This)-253(err)18(or)-254(has)-253(been)-253(generated)-253(by)-253(the)-253(fact)-253(that)-253(the)-254(user)-253(has)-253(chosen)-253(the)-253(invalid)]TJ 0.98 0 0 1 149.21 336.382 Tm [(\223FOO\224)-255(storage)-254(format)-255(to)-254(r)18(epr)19(esent)-255(the)-254(sparse)-255(matrix.)-316(Fr)18(om)-254(this)-255(err)19(or)-255(message)-254(it)]TJ 0.98 0 0 1 150.705 324.427 Tm [(is)-217(possible)-218(to)-217(see)-217(that)-218(the)-217(err)18(or)-217(has)-217(been)-218(detected)-217(inside)-217(the)]TJ/F131 9.9626 Tf 1 0 0 1 403.747 324.427 Tm [(psb_cest)]TJ/F84 9.9626 Tf 0.98 0 0 1 447.712 324.427 Tm [(subr)18(outine)]TJ 1 0 0 1 150.705 312.472 Tm [(called)-250(by)]TJ/F131 9.9626 Tf 42.091 0 Td [(psb_spasb)]TJ/F84 9.9626 Tf 49.564 0 Td [(...)-310(by)-250(pr)18(ocess)-250(0)-250(\050i.e.)-310(the)-250(r)18(oot)-250(pr)18(ocess\051.)]TJ 0 g 0 G - 164.384 -198.123 Td [(136)]TJ + 72.728 -222.034 Td [(136)]TJ 0 g 0 G ET endstream endobj -1882 0 obj +1885 0 obj << -/Length 10302 +/Length 10390 >> stream 0 g 0 G @@ -24451,7 +24451,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F67 9.9626 Tf 102.884 698.757 Td [(subroutine)]TJ +/F131 9.9626 Tf 102.884 698.757 Td [(subroutine)]TJ 0 g 0 G [-525(psb_foo\050some)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24463,12 +24463,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 9.9626 Tf 15.691 -11.956 Td [(!...)]TJ +/F279 9.9626 Tf 15.691 -11.956 Td [(!...)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -11.955 Td [(if)]TJ +/F131 9.9626 Tf 0 -11.955 Td [(if)]TJ 0 g 0 G [(\050error)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24517,12 +24517,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 9.9626 Tf 0 -11.956 Td [(!...)]TJ +/F279 9.9626 Tf 0 -11.956 Td [(!...)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -11.955 Td [(call)]TJ +/F131 9.9626 Tf 0 -11.955 Td [(call)]TJ 0 g 0 G [-525(psb_bar\050some)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24586,10 +24586,10 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 9.9626 Tf 0 -11.955 Td [(!...)]TJ +/F279 9.9626 Tf 0 -11.955 Td [(!...)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf -15.691 -11.955 Td [(9999)]TJ +/F131 9.9626 Tf -15.691 -11.955 Td [(9999)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -24638,17 +24638,17 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -2.989 -41.729 Td [(Listing)-289(5:)-387(The)-289(layout)-289(of)-289(a)-289(generic)]TJ/F67 9.9626 Tf 149.96 0 Td [(psb)]TJ +/F84 9.9626 Tf 1.018 0 0 1 99.895 382.059 Tm [(Listing)-246(5:)-306(The)-247(layout)-246(of)-246(a)-247(generic)]TJ/F131 9.9626 Tf 1 0 0 1 249.146 382.059 Tm [(psb)]TJ ET q -1 0 0 1 266.174 382.258 cm +1 0 0 1 265.464 382.258 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 269.312 382.059 Td [(foo)]TJ/F62 9.9626 Tf 18.568 0 Td [(r)18(outine)-289(with)-289(r)18(espect)-288(to)-289(PSBLAS-2.0)]TJ -187.985 -11.955 Td [(err)18(or)-250(handling)-250(policy)111(.)]TJ +/F131 9.9626 Tf 268.602 382.059 Td [(foo)]TJ/F84 9.9626 Tf 1.018 0 0 1 286.792 382.059 Tm [(r)18(outine)-247(with)-246(r)18(espect)-247(to)-246(PSBLAS-2.0)]TJ 1 0 0 1 99.895 370.104 Tm [(err)18(or)-250(handling)-250(policy)111(.)]TJ 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG -/F67 9.9626 Tf 0 -19.609 Td [(==========================================================)]TJ +/F131 9.9626 Tf 0 -19.609 Td [(==========================================================)]TJ 0 g 0 G 0 -11.955 Td [(Process:)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24869,14 +24869,14 @@ BT 0 g 0 G 0 -11.955 Td [(Aborting...)]TJ 0 g 0 G -/F62 9.9626 Tf 0 -29.397 Td [(Listing)-364(6:)-537(A)-364(sample)-364(PSBLAS-3.0)-363(err)18(or)-364(message.)-651(Pr)18(ocess)-364(0)-364(detected)-363(an)-364(err)18(or)]TJ 0 -11.955 Td [(condition)-250(inside)-250(the)-250(psb)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.895 165.681 Tm [(Listing)-316(6:)-445(A)-316(sample)-316(PSBLAS-3.0)-316(err)18(or)-316(message.)-516(Pr)17(ocess)-315(0)-316(detected)-316(an)-316(err)18(or)]TJ 1 0 0 1 99.895 153.726 Tm [(condition)-250(inside)-250(the)-250(psb)]TJ ET q 1 0 0 1 206.215 153.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.204 153.726 Td [(cest)-250(subr)18(outine)]TJ +/F84 9.9626 Tf 209.204 153.726 Td [(cest)-250(subr)18(outine)]TJ 0 g 0 G 55.075 -63.288 Td [(137)]TJ 0 g 0 G @@ -24884,65 +24884,65 @@ ET endstream endobj -1886 0 obj +1889 0 obj << -/Length 3570 +/Length 3562 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(8.1)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(8.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(error)-250(code)-250(onto)-250(the)-250(error)-250(stack)]TJ/F62 9.9626 Tf -49.379 -24.942 Td [(c)-175(a)-175(l)-174(l)-874(p)-98(s)-99(b)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(error)-250(code)-250(onto)-250(the)-250(error)-250(stack)]TJ/F84 9.9626 Tf -49.379 -24.942 Td [(c)-175(a)-175(l)-174(l)-874(p)-98(s)-99(b)]TJ ET q 1 0 0 1 200.841 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 204.812 681.187 Td [(e)-99(r)-98(r)-99(p)-98(u)-99(s)-99(h)-232(\050)-266(e)-132(r)-132(r)]TJ +/F84 9.9626 Tf 204.812 681.187 Td [(e)-99(r)-98(r)-99(p)-98(u)-99(s)-99(h)-232(\050)-266(e)-132(r)-132(r)]TJ ET q 1 0 0 1 270.843 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 275.151 681.187 Td [(c)-440(,)-825(r)]TJ +/F84 9.9626 Tf 275.151 681.187 Td [(c)-440(,)-825(r)]TJ ET q 1 0 0 1 299.7 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 303.188 681.187 Td [(n)-50(a)-50(m)-50(e)-276(,)-929(i)]TJ +/F84 9.9626 Tf 303.188 681.187 Td [(n)-50(a)-50(m)-50(e)-276(,)-929(i)]TJ ET q 1 0 0 1 348.561 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 353.087 681.187 Td [(e)-154(r)-155(r)-483(,)-920(a)]TJ +/F84 9.9626 Tf 353.087 681.187 Td [(e)-154(r)-155(r)-483(,)-920(a)]TJ ET q 1 0 0 1 392.305 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 396.74 681.187 Td [(e)-145(r)-145(r)-279(\051)]TJ +/F84 9.9626 Tf 396.74 681.187 Td [(e)-145(r)-145(r)-279(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -246.035 -27.895 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -246.035 -27.895 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(err)]TJ @@ -24952,42 +24952,42 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 167.023 613.442 Td [(c)]TJ +/F75 9.9626 Tf 167.023 613.442 Td [(c)]TJ 0 g 0 G -/F62 9.9626 Tf 9.405 0 Td [(the)-250(err)18(or)-250(code)]TJ -0.817 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ +/F84 9.9626 Tf 9.405 0 Td [(the)-250(err)18(or)-250(code)]TJ -0.817 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(r)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(r)]TJ ET q 1 0 0 1 155.178 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 158.167 545.696 Td [(name)]TJ +/F75 9.9626 Tf 158.167 545.696 Td [(name)]TJ 0 g 0 G -/F62 9.9626 Tf 29.888 0 Td [(the)-250(soutine)-250(wher)18(e)-250(the)-250(err)18(or)-250(has)-250(been)-250(caught.)]TJ -12.444 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ +/F84 9.9626 Tf 29.888 0 Td [(the)-250(soutine)-250(wher)18(e)-250(the)-250(err)18(or)-250(has)-250(been)-250(caught.)]TJ -12.444 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(i)]TJ +/F75 9.9626 Tf -24.906 -31.881 Td [(i)]TJ ET q 1 0 0 1 154.62 466.194 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 157.609 465.994 Td [(err)]TJ +/F75 9.9626 Tf 157.609 465.994 Td [(err)]TJ 0 g 0 G -/F62 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ 0.289 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)]TJ +/F84 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ 0.289 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(a)]TJ +/F75 9.9626 Tf -24.906 -31.881 Td [(a)]TJ ET q 1 0 0 1 156.284 398.448 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 159.273 398.249 Td [(err)]TJ +/F75 9.9626 Tf 159.273 398.249 Td [(err)]TJ 0 g 0 G -/F62 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ -1.375 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ +/F84 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ -1.375 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ 0 g 0 G 139.477 -271.945 Td [(138)]TJ 0 g 0 G @@ -24995,42 +24995,42 @@ ET endstream endobj -1892 0 obj +1895 0 obj << -/Length 1332 +/Length 1377 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(8.2)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(8.2)]TJ 0.984 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.11 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(error)-306(\227)-306(Prints)-306(the)-306(error)-307(s)1(tack)-307(content)-306(and)-306(aborts)-306(exe-)]TJ -24.221 -13.948 Td [(cution)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-900(p)-126(s)-125(b)]TJ +/F75 11.9552 Tf 0.984 0 0 1 150.697 706.129 Tm [(error)-255(\227)-255(Prints)-255(the)-254(error)-255(stack)-255(content)-255(and)-255(aborts)-255(execu-)]TJ 1 0 0 1 126.795 692.181 Tm [(tion)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-900(p)-126(s)-125(b)]TJ ET q 1 0 0 1 151.092 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 155.328 667.24 Td [(e)-125(r)-125(r)-126(o)-125(r)-259(\050)-279(i)-146(c)-146(o)-147(n)-146(t)-146(x)-146(t)-280(\051)]TJ +/F84 9.9626 Tf 155.328 667.24 Td [(e)-125(r)-125(r)-126(o)-125(r)-259(\050)-279(i)-146(c)-146(o)-147(n)-146(t)-146(x)-146(t)-280(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -55.433 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -55.433 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icontxt)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ +/F84 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ 0 g 0 G 139.477 -461.235 Td [(139)]TJ 0 g 0 G @@ -25038,56 +25038,56 @@ ET endstream endobj -1899 0 obj +1902 0 obj << -/Length 1526 +/Length 1584 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(8.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(8.3)]TJ 0.98 0 0 1 177.604 706.129 Tm [(psb)]TJ ET q -1 0 0 1 198.238 706.328 cm +1 0 0 1 197.84 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(set)]TJ +/F75 11.9552 Tf 0.98 0 0 1 201.427 706.129 Tm [(set)]TJ ET q -1 0 0 1 217.809 706.328 cm +1 0 0 1 217.105 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 221.396 706.129 Td [(errverbosity)-190(\227)-190(Sets)-190(the)-190(verbosity)-190(of)-190(error)-190(messages)]TJ/F62 9.9626 Tf -68.95 -24.942 Td [(c)-175(a)-175(l)-174(l)-921(p)-147(s)-146(b)]TJ +/F75 11.9552 Tf 0.98 0 0 1 220.692 706.129 Tm [(errverbosity)-250(\227)-251(Sets)-250(the)-250(verbosity)-250(of)-251(error)-250(messages)]TJ/F84 9.9626 Tf 1 0 0 1 152.446 681.187 Tm [(c)-175(a)-175(l)-174(l)-921(p)-147(s)-146(b)]TJ ET q 1 0 0 1 202.736 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.181 681.187 Td [(s)-146(e)-146(t)]TJ +/F84 9.9626 Tf 207.181 681.187 Td [(s)-146(e)-146(t)]TJ ET q 1 0 0 1 224.391 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 228.836 681.187 Td [(e)-146(r)-146(r)-146(v)-147(e)-146(r)-146(b)-146(o)-146(s)-146(i)-146(t)-147(y)-279(\050)-151(v)-151(\051)]TJ +/F84 9.9626 Tf 228.836 681.187 Td [(e)-146(r)-146(r)-146(v)-147(e)-146(r)-146(b)-146(o)-146(s)-146(i)-146(t)-147(y)-279(\050)-151(v)-151(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -78.131 -27.895 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -78.131 -27.895 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(verbosity)-250(level)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(verbosity)-250(level)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ 0 g 0 G 139.477 -475.183 Td [(140)]TJ 0 g 0 G @@ -25095,58 +25095,58 @@ ET endstream endobj -1905 0 obj +1908 0 obj << -/Length 2016 +/Length 2078 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(8.4)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(8.4)]TJ 0.988 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.19 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(set)]TJ +/F75 11.9552 Tf 0.988 0 0 1 150.777 706.129 Tm [(set)]TJ ET q -1 0 0 1 166.999 706.328 cm +1 0 0 1 166.577 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 170.586 706.129 Td [(erraction)-223(\227)-223(Set)-222(the)-223(type)-223(of)-223(action)-223(to)-222(be)-223(taken)-223(upon)]TJ -43.792 -13.948 Td [(error)-250(condition)]TJ/F62 9.9626 Tf -25.157 -24.941 Td [(c)-175(a)-175(l)-174(l)-926(p)-151(s)-151(b)]TJ +/F75 11.9552 Tf 0.988 0 0 1 170.164 706.129 Tm [(erraction)-254(\227)-254(Set)-254(the)-254(type)-255(of)-254(action)-254(to)-254(be)-254(taken)-254(upon)]TJ 1 0 0 1 126.795 692.181 Tm [(error)-250(condition)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-926(p)-151(s)-151(b)]TJ ET q 1 0 0 1 152.113 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 156.605 667.24 Td [(s)-151(e)-151(t)]TJ +/F84 9.9626 Tf 156.605 667.24 Td [(s)-151(e)-151(t)]TJ ET q 1 0 0 1 173.955 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 178.447 667.24 Td [(e)-151(r)-151(r)-150(a)-151(c)-151(t)-151(i)-151(o)-151(n)-284(\050)-296(e)-163(r)-162(r)]TJ +/F84 9.9626 Tf 178.447 667.24 Td [(e)-151(r)-151(r)-150(a)-151(c)-151(t)-151(i)-151(o)-151(n)-284(\050)-296(e)-163(r)-162(r)]TJ ET q 1 0 0 1 257.102 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 261.712 667.24 Td [(a)-163(c)-162(t)-296(\051)]TJ +/F84 9.9626 Tf 261.712 667.24 Td [(a)-163(c)-162(t)-296(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -161.817 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -161.817 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(err)]TJ @@ -25156,9 +25156,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 116.214 599.494 Td [(act)]TJ +/F75 9.9626 Tf 116.214 599.494 Td [(act)]TJ 0 g 0 G -/F62 9.9626 Tf 17.703 0 Td [(the)-250(type)-250(of)-250(action.)]TJ -9.115 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)-310(Possible)-250(values:)]TJ/F67 9.9626 Tf 179.116 0 Td [(psb_act_ret)]TJ/F62 9.9626 Tf 57.534 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_act_abort)]TJ/F62 9.9626 Tf 67.995 0 Td [(.)]TJ +/F84 9.9626 Tf 17.703 0 Td [(the)-250(type)-250(of)-250(action.)]TJ -9.115 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)-310(Possible)-250(values:)]TJ/F131 9.9626 Tf 179.116 0 Td [(psb_act_ret)]TJ/F84 9.9626 Tf 57.534 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_act_abort)]TJ/F84 9.9626 Tf 67.995 0 Td [(.)]TJ 0 g 0 G -170.149 -461.235 Td [(141)]TJ 0 g 0 G @@ -25166,15 +25166,15 @@ ET endstream endobj -1911 0 obj +1914 0 obj << -/Length 507 +/Length 539 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(9)-1000(Utilities)]TJ/F62 9.9626 Tf 0 -22.702 Td [(W)92(e)-323(have)-322(some)-323(utilities)-322(available)-323(for)-322(input)-323(and)-323(output)-322(of)-323(sparse)-322(matrices;)-359(the)]TJ 0 -11.955 Td [(interfaces)-250(to)-250(these)-250(r)18(outines)-250(ar)18(e)-250(available)-250(in)-250(the)-250(module)]TJ/F67 9.9626 Tf 242.009 0 Td [(psb_util_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ +/F75 14.3462 Tf 150.705 705.784 Td [(9)-1000(Utilities)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.207 683.082 Tm [(W)90(e)-272(have)-272(some)-272(utilities)-272(available)-272(for)-272(input)-272(and)-272(output)-272(of)-272(sparse)-272(matrices;)-286(the)]TJ 1 0 0 1 150.705 671.127 Tm [(interfaces)-250(to)-250(these)-250(r)18(outines)-250(ar)18(e)-250(available)-250(in)-250(the)-250(module)]TJ/F131 9.9626 Tf 242.009 0 Td [(psb_util_mod)]TJ/F84 9.9626 Tf 62.764 0 Td [(.)]TJ 0 g 0 G -140.39 -580.689 Td [(142)]TJ 0 g 0 G @@ -25182,721 +25182,635 @@ ET endstream endobj -1916 0 obj +1919 0 obj << -/Length 4553 +/Length 4735 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(9.1)-1206(hb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(9.1)]TJ 0.984 0 0 1 129.789 706.129 Tm [(hb)]TJ ET q -1 0 0 1 144.589 706.328 cm +1 0 0 1 144.882 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 148.175 706.129 Td [(read)-206(\227)-207(Read)-206(a)-207(sparse)-206(matrix)-207(fr)1(om)-207(a)-206(\002le)-207(in)-206(the)-207(Harwell\226)]TJ -21.381 -13.948 Td [(Boeing)-250(format)]TJ/F62 9.9626 Tf -25.157 -24.941 Td [(c)-175(a)-175(l)-174(l)-865(h)-90(b)]TJ +/F75 11.9552 Tf 0.984 0 0 1 148.468 706.129 Tm [(read)-255(\227)-254(Read)-255(a)-254(sparse)-255(matrix)-254(from)-255(a)-254(\002le)-255(in)-254(the)-255(Harwell\226)]TJ 1 0 0 1 126.795 692.181 Tm [(Boeing)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-865(h)-90(b)]TJ ET q 1 0 0 1 144.379 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 148.265 667.24 Td [(r)-90(e)-90(a)-90(d)-223(\050)-167(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-871(f)-97(i)-96(l)-96(e)-96(n)-96(a)-97(m)-96(e)-367(,)-791(b)-206(,)-919(m)-143(t)-144(i)-143(t)-143(l)-144(e)-277(\051)]TJ +/F84 9.9626 Tf 148.265 667.24 Td [(r)-90(e)-90(a)-90(d)-223(\050)-167(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-871(f)-97(i)-96(l)-96(e)-96(n)-96(a)-97(m)-96(e)-367(,)-791(b)-206(,)-919(m)-143(t)-144(i)-143(t)-143(l)-144(e)-277(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -48.37 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -48.37 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.185 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 124.802 575.584 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 423.609 575.584 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.839 575.584 Tm [(,)-330(in)]TJ 1.003 0 0 1 124.384 563.628 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 124.802 551.673 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ +/F75 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.109 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 26.8 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.757 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 442.283 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 442.283 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 442.084 Td [(type)]TJ +/F131 9.9626 Tf 347.544 442.084 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -19.925 Td [(b)]TJ +/F75 9.9626 Tf -268.571 -19.925 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.838 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-235(array)-234(of)-235(type)-234(r)18(eal)-235(or)-234(complex,)-238(rank)-234(2)-235(and)-234(having)-235(the)-234(ALLOCA)74(T)74(ABLE)]TJ 0 -11.956 Td [(attribute;)-361(will)-324(be)-324(al)1(located)-324(and)-324(\002lled)-324(in)-324(if)-324(the)-324(input)-324(\002le)-323(contains)-324(a)-324(right)]TJ 0 -11.955 Td [(hand)-250(side,)-250(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ +/F84 9.9626 Tf 11.069 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.529 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.995 0 0 1 124.413 398.249 Tm [(An)-252(array)-251(of)-252(type)-251(r)18(eal)-251(or)-252(complex,)-251(rank)-252(2)-251(and)-252(having)-251(the)-252(ALLOCA)74(T)75(ABLE)]TJ 1.02 0 0 1 124.802 386.293 Tm [(attribute;)-293(will)-277(be)-278(allocated)-277(and)-277(\002lled)-277(in)-277(if)-278(the)-277(input)-277(\002le)-277(contains)-277(a)-278(right)]TJ 1 0 0 1 124.802 374.338 Tm [(hand)-250(side,)-250(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(mtitle)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(mtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(A)-337(charachter)-338(variable)-337(of)-338(l)1(ength)-338(72)-337(holding)-338(a)-337(copy)-338(of)-337(the)-337(matrix)-338(title)-337(as)]TJ 0 -11.956 Td [(speci\002ed)-250(by)-250(the)-250(Harwell-Boeing)-250(format)-250(and)-250(contained)-250(in)-250(the)-250(input)-250(\002le.)]TJ +/F84 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 1.02 0 0 1 124.413 330.503 Tm [(A)-292(charachter)-292(variable)-292(of)-292(length)-292(72)-292(holding)-292(a)-293(copy)-292(of)-292(the)-292(matrix)-292(title)-292(as)]TJ 1 0 0 1 124.802 318.547 Tm [(speci\002ed)-250(by)-250(the)-250(Harwell-Boeing)-250(format)-250(and)-250(contained)-250(in)-250(the)-250(input)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(iret)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.477 -184.274 Td [(143)]TJ + 139.866 -184.274 Td [(143)]TJ 0 g 0 G ET endstream endobj -1923 0 obj +1926 0 obj << -/Length 4948 +/Length 5172 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(9.2)-1000(hb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(9.2)]TJ 1.02 0 0 1 177.604 706.129 Tm [(hb)]TJ ET q -1 0 0 1 192.93 706.328 cm +1 0 0 1 193.223 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 196.517 706.129 Td [(write)-298(\227)-297(W)74(rite)-298(a)-298(sparse)-298(matrix)-297(to)-298(a)-298(\002le)-298(in)-297(the)-298(Harwell\226)]TJ -18.913 -13.948 Td [(Boeing)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-884(h)-109(b)]TJ +/F75 11.9552 Tf 1.02 0 0 1 196.809 706.129 Tm [(write)-264(\227)-265(W)73(rite)-265(a)-264(sparse)-264(matrix)-265(to)-264(a)-264(\002le)-265(in)-264(the)-264(Harwell\226)]TJ 1 0 0 1 177.604 692.181 Tm [(Boeing)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-884(h)-109(b)]TJ ET q 1 0 0 1 195.753 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 199.827 667.24 Td [(w)-109(r)-109(i)-109(t)-109(e)-242(\050)-167(a)-241(,)-927(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-129(t)-435(,)-871(f)-96(i)-96(l)-96(e)-97(n)-96(a)-96(m)-96(e)-368(,)-816(k)-42(e)-42(y)-259(,)-855(r)-79(h)-80(s)-335(,)-918(m)-144(t)-143(i)-144(t)-143(l)-143(e)-277(\051)]TJ +/F84 9.9626 Tf 199.827 667.24 Td [(w)-109(r)-109(i)-109(t)-109(e)-242(\050)-167(a)-241(,)-927(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-129(t)-435(,)-871(f)-96(i)-96(l)-96(e)-97(n)-96(a)-96(m)-96(e)-368(,)-816(k)-42(e)-42(y)-259(,)-855(r)-79(h)-80(s)-335(,)-918(m)-144(t)-143(i)-144(t)-143(l)-143(e)-277(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -49.122 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -49.122 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.292 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.983 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.137 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 575.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 575.584 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 575.584 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 575.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 575.584 Td [(type)]TJ +/F131 9.9626 Tf 398.354 575.584 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -19.926 Td [(b)]TJ +/F75 9.9626 Tf -268.57 -19.926 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side.)]TJ 13.838 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(An)-235(array)-234(of)-235(type)-234(r)18(eal)-235(or)-234(complex,)-238(rank)-234(1)-235(and)-234(having)-235(the)-234(ALLOCA)74(T)74(ABLE)]TJ 0 -11.955 Td [(attribute;)-361(will)-324(be)-324(allocated)-323(and)-324(\002lled)-324(in)-324(if)-324(the)-324(input)-324(\002le)-323(contains)-324(a)-324(right)]TJ 0 -11.955 Td [(hand)-250(side.)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side.)]TJ 13.53 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.995 0 0 1 175.223 531.748 Tm [(An)-251(array)-252(of)-251(type)-252(r)18(eal)-251(or)-252(complex,)-251(rank)-252(1)-251(and)-252(having)-251(the)-252(ALLOCA)75(T)74(ABLE)]TJ 1.02 0 0 1 175.611 519.793 Tm [(attribute;)-293(will)-277(be)-278(allocated)-277(and)-277(\002lled)-277(in)-277(if)-278(the)-277(input)-277(\002le)-277(contains)-278(a)-277(right)]TJ 1 0 0 1 175.611 507.838 Tm [(hand)-250(side.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(\002lename)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.368 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)-387(in)]TJ -303.765 -11.955 Td [(which)-234(case)-234(the)-233(default)-234(output)-234(unit)-234(6)-234(\050i)1(.e.)-305(standar)18(d)-234(output)-234(in)-233(Unix)-234(jar)18(gon\051)]TJ 0 -11.955 Td [(is)-250(used.)-310(Default:)]TJ/F67 9.9626 Tf 74.799 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 1.02 0 0 1 175.611 464.002 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 474.418 464.002 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.649 464.002 Tm [(,)-330(in)]TJ 0.999 0 0 1 175.193 452.047 Tm [(which)-249(case)-249(the)-249(default)-250(outp)1(ut)-250(unit)-249(6)-249(\050i.e.)-310(standar)18(d)-249(output)-249(in)-249(Unix)-249(jar)18(gon\051)]TJ 1 0 0 1 175.611 440.092 Tm [(is)-250(used.)-310(Default:)]TJ/F131 9.9626 Tf 74.799 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -104.935 -19.926 Td [(iunit)]TJ +/F75 9.9626 Tf -104.935 -19.926 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.108 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.758 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 26.799 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.758 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.894 -19.925 Td [(key)]TJ +/F75 9.9626 Tf -317.894 -19.925 Td [(key)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(Matrix)-250(key)111(.)]TJ 3.317 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(A)-291(charachter)-291(variable)-291(of)-291(length)-291(8)-291(holding)-291(the)-290(matrix)-291(key)-291(as)-291(speci\002ed)-291(by)]TJ 0 -11.955 Td [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ +/F84 9.9626 Tf 21.589 0 Td [(Matrix)-250(key)111(.)]TJ 3.009 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 1.02 0 0 1 175.223 352.42 Tm [(A)-245(charachter)-245(variable)-245(of)-245(length)-245(8)-245(holding)-245(the)-245(matrix)-245(key)-245(as)-245(speci\002ed)-245(by)]TJ 1 0 0 1 175.611 340.465 Tm [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(mtitle)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(mtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 32.089 0 Td [(Matrix)-250(title.)]TJ -7.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(A)-239(charachter)-239(variable)-239(of)-239(length)-240(72)-239(holding)-239(the)-239(matrix)-239(title)-239(as)-239(speci\002ed)-239(by)]TJ 0 -11.956 Td [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ +/F84 9.9626 Tf 32.089 0 Td [(Matrix)-250(title.)]TJ -7.491 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.998 0 0 1 175.223 296.63 Tm [(A)-251(charachter)-251(variable)-251(of)-251(length)-251(72)-251(holding)-251(the)-251(matrix)-251(title)-250(as)-251(speci\002ed)-251(by)]TJ 1 0 0 1 175.611 284.674 Tm [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -21.917 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -21.917 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.433 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ -0 g 0 G - 139.477 -128.483 Td [(144)]TJ -0 g 0 G -ET - -endstream -endobj -1930 0 obj -<< -/Length 3542 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 99.895 706.129 Td [(9.3)-1000(mm)]TJ -ET -q -1 0 0 1 148.768 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 152.354 706.129 Td [(mat)]TJ -ET -q -1 0 0 1 173.658 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 177.245 706.129 Td [(read)-202(\227)-203(Read)-202(a)-203(sparse)-202(matrix)-203(from)-202(a)-203(\002le)-202(in)-203(the)-202(Ma-)]TJ -50.45 -13.948 Td [(trixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-810(m)-35(m)]TJ -ET -q -1 0 0 1 149.022 667.439 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 152.359 667.24 Td [(m)-35(a)-35(t)]TJ -ET -q -1 0 0 1 171.029 667.439 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 174.367 667.24 Td [(r)-35(e)-35(a)-35(d)-169(\050)-166(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-107(a)-106(m)-107(e)-241(\051)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -74.472 -27.896 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(\002lename)]TJ -0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.185 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ -0 g 0 G -/F62 9.9626 Tf 27.109 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.926 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 309.258 442.283 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ -ET -q -1 0 0 1 344.406 442.283 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 347.544 442.084 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -268.571 -19.925 Td [(iret)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ -0 g 0 G - 139.477 -307.811 Td [(145)]TJ + 139.865 -128.483 Td [(144)]TJ 0 g 0 G ET endstream endobj -1824 0 obj +1827 0 obj << /Type /ObjStm /N 100 /First 971 -/Length 9397 ->> -stream -1820 0 1821 58 1822 116 1816 174 1826 311 1828 429 473 488 1825 546 1830 693 1832 811 -1833 869 1834 927 1835 985 1829 1043 1837 1180 1839 1298 477 1357 1836 1415 1841 1562 1843 1680 -1844 1738 1845 1796 1846 1854 1840 1912 1848 2049 1850 2167 481 2226 1847 2284 1852 2431 1854 2549 -1855 2607 1856 2665 1858 2722 1859 2780 1860 2838 1851 2896 1863 3075 1865 3193 485 3252 1866 3310 -1862 3369 1868 3516 1870 3634 489 3692 1871 3749 1867 3807 1875 3954 1872 4102 1873 4250 1877 4398 -493 4457 1874 4515 1881 4609 1883 4727 1878 4785 1879 4843 1880 4901 1885 4997 1887 5115 497 5174 -1888 5232 1889 5291 1884 5350 1891 5431 1893 5549 501 5607 1894 5664 1895 5721 1890 5779 1898 5860 -1900 5978 505 6037 1901 6095 1902 6154 1897 6213 1904 6294 1906 6412 509 6470 1907 6527 1908 6584 -1903 6642 1910 6736 1912 6854 513 6913 1909 6971 1915 7065 1913 7204 1917 7349 517 7407 1918 7464 -1919 7522 1914 7580 1922 7674 1920 7813 1924 7958 521 8017 1925 8075 1926 8134 1921 8193 1929 8287 -% 1820 0 obj +/Length 9345 +>> +stream +1822 0 1823 58 1824 116 1825 174 1819 232 1829 370 1831 488 473 547 1828 605 1833 756 +1835 874 1836 932 1837 990 1838 1047 1832 1104 1840 1242 1842 1360 477 1419 1839 1477 1844 1628 +1846 1746 1847 1804 1848 1862 1849 1920 1843 1978 1851 2116 1853 2234 481 2293 1850 2351 1855 2502 +1857 2620 1858 2678 1859 2736 1861 2793 1862 2851 1863 2909 1854 2967 1866 3148 1868 3266 485 3325 +1869 3383 1865 3442 1871 3593 1873 3711 489 3769 1874 3826 1870 3884 1878 4035 1875 4183 1876 4331 +1880 4479 493 4538 1877 4596 1884 4691 1886 4809 1881 4867 1882 4925 1883 4983 1888 5080 1890 5198 +497 5257 1891 5315 1892 5374 1887 5433 1894 5514 1896 5632 501 5690 1897 5747 1898 5804 1893 5862 +1901 5943 1903 6061 505 6120 1904 6178 1905 6237 1900 6296 1907 6377 1909 6495 509 6553 1910 6610 +1911 6667 1906 6725 1913 6820 1915 6938 513 6997 1912 7055 1918 7150 1916 7289 1920 7434 517 7492 +1921 7549 1922 7607 1917 7665 1925 7760 1923 7899 1927 8044 521 8103 1928 8161 1929 8220 1924 8279 +% 1822 0 obj << -/D [1817 0 R /XYZ 99.895 552.489 null] +/D [1820 0 R /XYZ 98.895 753.953 null] >> -% 1821 0 obj +% 1823 0 obj << -/D [1817 0 R /XYZ 99.895 518.014 null] +/D [1820 0 R /XYZ 99.895 552.489 null] >> -% 1822 0 obj +% 1824 0 obj << -/D [1817 0 R /XYZ 99.895 427.175 null] +/D [1820 0 R /XYZ 99.895 518.014 null] >> -% 1816 0 obj +% 1825 0 obj +<< +/D [1820 0 R /XYZ 99.895 427.175 null] +>> +% 1819 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> /ProcSet [ /PDF /Text ] >> -% 1826 0 obj +% 1829 0 obj << /Type /Page -/Contents 1827 0 R -/Resources 1825 0 R +/Contents 1830 0 R +/Resources 1828 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1823 0 R +/Parent 1826 0 R >> -% 1828 0 obj +% 1831 0 obj << -/D [1826 0 R /XYZ 149.705 753.953 null] +/D [1829 0 R /XYZ 149.705 753.953 null] >> % 473 0 obj << -/D [1826 0 R /XYZ 150.705 716.092 null] +/D [1829 0 R /XYZ 150.705 716.092 null] >> -% 1825 0 obj +% 1828 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1830 0 obj +% 1833 0 obj << /Type /Page -/Contents 1831 0 R -/Resources 1829 0 R +/Contents 1834 0 R +/Resources 1832 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1823 0 R +/Parent 1826 0 R >> -% 1832 0 obj +% 1835 0 obj << -/D [1830 0 R /XYZ 98.895 753.953 null] +/D [1833 0 R /XYZ 98.895 753.953 null] >> -% 1833 0 obj +% 1836 0 obj << -/D [1830 0 R /XYZ 99.895 528.579 null] +/D [1833 0 R /XYZ 99.895 564.444 null] >> -% 1834 0 obj +% 1837 0 obj << -/D [1830 0 R /XYZ 99.895 494.104 null] +/D [1833 0 R /XYZ 99.895 529.97 null] >> -% 1835 0 obj +% 1838 0 obj << -/D [1830 0 R /XYZ 99.895 403.265 null] +/D [1833 0 R /XYZ 99.895 439.13 null] >> -% 1829 0 obj +% 1832 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> /ProcSet [ /PDF /Text ] >> -% 1837 0 obj +% 1840 0 obj << /Type /Page -/Contents 1838 0 R -/Resources 1836 0 R +/Contents 1841 0 R +/Resources 1839 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1823 0 R +/Parent 1826 0 R >> -% 1839 0 obj +% 1842 0 obj << -/D [1837 0 R /XYZ 149.705 753.953 null] +/D [1840 0 R /XYZ 149.705 753.953 null] >> % 477 0 obj << -/D [1837 0 R /XYZ 150.705 716.092 null] +/D [1840 0 R /XYZ 150.705 716.092 null] >> -% 1836 0 obj +% 1839 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1841 0 obj +% 1844 0 obj << /Type /Page -/Contents 1842 0 R -/Resources 1840 0 R +/Contents 1845 0 R +/Resources 1843 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1823 0 R +/Parent 1826 0 R >> -% 1843 0 obj +% 1846 0 obj << -/D [1841 0 R /XYZ 98.895 753.953 null] +/D [1844 0 R /XYZ 98.895 753.953 null] >> -% 1844 0 obj +% 1847 0 obj << -/D [1841 0 R /XYZ 99.895 528.579 null] +/D [1844 0 R /XYZ 99.895 552.489 null] >> -% 1845 0 obj +% 1848 0 obj << -/D [1841 0 R /XYZ 99.895 494.104 null] +/D [1844 0 R /XYZ 99.895 518.014 null] >> -% 1846 0 obj +% 1849 0 obj << -/D [1841 0 R /XYZ 99.895 403.265 null] +/D [1844 0 R /XYZ 99.895 427.175 null] >> -% 1840 0 obj +% 1843 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F60 670 0 R /F120 1788 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> /ProcSet [ /PDF /Text ] >> -% 1848 0 obj +% 1851 0 obj << /Type /Page -/Contents 1849 0 R -/Resources 1847 0 R +/Contents 1852 0 R +/Resources 1850 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1823 0 R +/Parent 1826 0 R >> -% 1850 0 obj +% 1853 0 obj << -/D [1848 0 R /XYZ 149.705 753.953 null] +/D [1851 0 R /XYZ 149.705 753.953 null] >> % 481 0 obj << -/D [1848 0 R /XYZ 150.705 716.092 null] +/D [1851 0 R /XYZ 150.705 716.092 null] >> -% 1847 0 obj +% 1850 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F91 919 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1852 0 obj +% 1855 0 obj << /Type /Page -/Contents 1853 0 R -/Resources 1851 0 R +/Contents 1856 0 R +/Resources 1854 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1861 0 R +/Parent 1864 0 R >> -% 1854 0 obj +% 1857 0 obj << -/D [1852 0 R /XYZ 98.895 753.953 null] +/D [1855 0 R /XYZ 98.895 753.953 null] >> -% 1855 0 obj +% 1858 0 obj << -/D [1852 0 R /XYZ 99.895 564.444 null] +/D [1855 0 R /XYZ 99.895 564.444 null] >> -% 1856 0 obj +% 1859 0 obj << -/D [1852 0 R /XYZ 99.895 529.97 null] +/D [1855 0 R /XYZ 99.895 529.97 null] >> -% 1858 0 obj +% 1861 0 obj << -/D [1852 0 R /XYZ 99.895 441.815 null] +/D [1855 0 R /XYZ 99.895 441.815 null] >> -% 1859 0 obj +% 1862 0 obj << -/D [1852 0 R /XYZ 99.895 409.935 null] +/D [1855 0 R /XYZ 99.895 409.935 null] >> -% 1860 0 obj +% 1863 0 obj << -/D [1852 0 R /XYZ 99.895 319.095 null] +/D [1855 0 R /XYZ 99.895 319.095 null] >> -% 1851 0 obj +% 1854 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F17 1857 0 R /F104 1260 0 R /F102 1022 0 R /F120 1788 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F17 1860 0 R /F241 1263 0 R /F231 1025 0 R /F279 1791 0 R >> /ProcSet [ /PDF /Text ] >> -% 1863 0 obj +% 1866 0 obj << /Type /Page -/Contents 1864 0 R -/Resources 1862 0 R +/Contents 1867 0 R +/Resources 1865 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1861 0 R +/Parent 1864 0 R >> -% 1865 0 obj +% 1868 0 obj << -/D [1863 0 R /XYZ 149.705 753.953 null] +/D [1866 0 R /XYZ 149.705 753.953 null] >> % 485 0 obj << -/D [1863 0 R /XYZ 150.705 716.092 null] +/D [1866 0 R /XYZ 150.705 716.092 null] >> -% 1866 0 obj +% 1869 0 obj << -/D [1863 0 R /XYZ 150.705 222.691 null] +/D [1866 0 R /XYZ 150.705 222.691 null] >> -% 1862 0 obj +% 1865 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F69 1466 0 R /F93 920 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F134 1469 0 R /F181 923 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1868 0 obj +% 1871 0 obj << /Type /Page -/Contents 1869 0 R -/Resources 1867 0 R +/Contents 1872 0 R +/Resources 1870 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1861 0 R +/Parent 1864 0 R >> -% 1870 0 obj +% 1873 0 obj << -/D [1868 0 R /XYZ 98.895 753.953 null] +/D [1871 0 R /XYZ 98.895 753.953 null] >> % 489 0 obj << -/D [1868 0 R /XYZ 99.895 716.092 null] +/D [1871 0 R /XYZ 99.895 716.092 null] >> -% 1871 0 obj +% 1874 0 obj << -/D [1868 0 R /XYZ 99.895 222.691 null] +/D [1871 0 R /XYZ 99.895 222.691 null] >> -% 1867 0 obj +% 1870 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F69 1466 0 R /F93 920 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1875 0 obj +% 1878 0 obj << /Type /Page -/Contents 1876 0 R -/Resources 1874 0 R +/Contents 1879 0 R +/Resources 1877 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1861 0 R -/Annots [ 1872 0 R 1873 0 R ] +/Parent 1864 0 R +/Annots [ 1875 0 R 1876 0 R ] >> -% 1872 0 obj +% 1875 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.011 499.949 202.985 512.009] +/Rect [196.173 511.904 203.237 523.964] /A << /S /GoTo /D (listing.5) >> >> -% 1873 0 obj +% 1876 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.625 344.532 203.599 356.591] +/Rect [194.784 356.487 201.659 368.547] /A << /S /GoTo /D (listing.6) >> >> -% 1877 0 obj +% 1880 0 obj << -/D [1875 0 R /XYZ 149.705 753.953 null] +/D [1878 0 R /XYZ 149.705 753.953 null] >> % 493 0 obj << -/D [1875 0 R /XYZ 150.705 716.092 null] +/D [1878 0 R /XYZ 150.705 716.092 null] >> -% 1874 0 obj +% 1877 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1881 0 obj +% 1884 0 obj << /Type /Page -/Contents 1882 0 R -/Resources 1880 0 R +/Contents 1885 0 R +/Resources 1883 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1861 0 R +/Parent 1864 0 R >> -% 1883 0 obj +% 1886 0 obj << -/D [1881 0 R /XYZ 98.895 753.953 null] +/D [1884 0 R /XYZ 98.895 753.953 null] >> -% 1878 0 obj +% 1881 0 obj << -/D [1881 0 R /XYZ 99.895 411.235 null] +/D [1884 0 R /XYZ 99.895 411.235 null] >> -% 1879 0 obj +% 1882 0 obj << -/D [1881 0 R /XYZ 99.895 182.902 null] +/D [1884 0 R /XYZ 99.895 182.902 null] >> -% 1880 0 obj +% 1883 0 obj << -/Font << /F67 918 0 R /F120 1788 0 R /F62 671 0 R >> +/Font << /F131 921 0 R /F279 1791 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1885 0 obj +% 1888 0 obj << /Type /Page -/Contents 1886 0 R -/Resources 1884 0 R +/Contents 1889 0 R +/Resources 1887 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1861 0 R +/Parent 1864 0 R >> -% 1887 0 obj +% 1890 0 obj << -/D [1885 0 R /XYZ 149.705 753.953 null] +/D [1888 0 R /XYZ 149.705 753.953 null] >> % 497 0 obj << -/D [1885 0 R /XYZ 150.705 716.092 null] +/D [1888 0 R /XYZ 150.705 716.092 null] >> -% 1888 0 obj +% 1891 0 obj << -/D [1885 0 R /XYZ 150.705 690.058 null] +/D [1888 0 R /XYZ 150.705 690.058 null] >> -% 1889 0 obj +% 1892 0 obj << -/D [1885 0 R /XYZ 150.705 693.143 null] +/D [1888 0 R /XYZ 150.705 693.143 null] >> -% 1884 0 obj +% 1887 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1891 0 obj +% 1894 0 obj << /Type /Page -/Contents 1892 0 R -/Resources 1890 0 R +/Contents 1895 0 R +/Resources 1893 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1896 0 R +/Parent 1899 0 R >> -% 1893 0 obj +% 1896 0 obj << -/D [1891 0 R /XYZ 98.895 753.953 null] +/D [1894 0 R /XYZ 98.895 753.953 null] >> % 501 0 obj << -/D [1891 0 R /XYZ 99.895 716.092 null] +/D [1894 0 R /XYZ 99.895 716.092 null] >> -% 1894 0 obj +% 1897 0 obj << -/D [1891 0 R /XYZ 99.895 678.98 null] +/D [1894 0 R /XYZ 99.895 678.98 null] >> -% 1895 0 obj +% 1898 0 obj << -/D [1891 0 R /XYZ 99.895 679.195 null] +/D [1894 0 R /XYZ 99.895 679.195 null] >> -% 1890 0 obj +% 1893 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1898 0 obj +% 1901 0 obj << /Type /Page -/Contents 1899 0 R -/Resources 1897 0 R +/Contents 1902 0 R +/Resources 1900 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1896 0 R +/Parent 1899 0 R >> -% 1900 0 obj +% 1903 0 obj << -/D [1898 0 R /XYZ 149.705 753.953 null] +/D [1901 0 R /XYZ 149.705 753.953 null] >> % 505 0 obj << -/D [1898 0 R /XYZ 150.705 716.092 null] +/D [1901 0 R /XYZ 150.705 716.092 null] >> -% 1901 0 obj +% 1904 0 obj << -/D [1898 0 R /XYZ 150.705 689.963 null] +/D [1901 0 R /XYZ 150.705 689.963 null] >> -% 1902 0 obj +% 1905 0 obj << -/D [1898 0 R /XYZ 150.705 693.143 null] +/D [1901 0 R /XYZ 150.705 693.143 null] >> -% 1897 0 obj +% 1900 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1904 0 obj +% 1907 0 obj << /Type /Page -/Contents 1905 0 R -/Resources 1903 0 R +/Contents 1908 0 R +/Resources 1906 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1896 0 R +/Parent 1899 0 R >> -% 1906 0 obj +% 1909 0 obj << -/D [1904 0 R /XYZ 98.895 753.953 null] +/D [1907 0 R /XYZ 98.895 753.953 null] >> % 509 0 obj << -/D [1904 0 R /XYZ 99.895 716.092 null] +/D [1907 0 R /XYZ 99.895 716.092 null] >> -% 1907 0 obj +% 1910 0 obj << -/D [1904 0 R /XYZ 99.895 678.98 null] +/D [1907 0 R /XYZ 99.895 678.98 null] >> -% 1908 0 obj +% 1911 0 obj << -/D [1904 0 R /XYZ 99.895 679.195 null] +/D [1907 0 R /XYZ 99.895 679.195 null] >> -% 1903 0 obj +% 1906 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1910 0 obj +% 1913 0 obj << /Type /Page -/Contents 1911 0 R -/Resources 1909 0 R +/Contents 1914 0 R +/Resources 1912 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1896 0 R +/Parent 1899 0 R >> -% 1912 0 obj +% 1915 0 obj << -/D [1910 0 R /XYZ 149.705 753.953 null] +/D [1913 0 R /XYZ 149.705 753.953 null] >> % 513 0 obj << -/D [1910 0 R /XYZ 150.705 716.092 null] +/D [1913 0 R /XYZ 150.705 716.092 null] >> -% 1909 0 obj +% 1912 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1915 0 obj +% 1918 0 obj << /Type /Page -/Contents 1916 0 R -/Resources 1914 0 R +/Contents 1919 0 R +/Resources 1917 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1896 0 R -/Annots [ 1913 0 R ] +/Parent 1899 0 R +/Annots [ 1916 0 R ] >> -% 1913 0 obj +% 1916 0 obj << /Type /Annot /Subtype /Link @@ -25904,37 +25818,37 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1917 0 obj +% 1920 0 obj << -/D [1915 0 R /XYZ 98.895 753.953 null] +/D [1918 0 R /XYZ 98.895 753.953 null] >> % 517 0 obj << -/D [1915 0 R /XYZ 99.895 716.092 null] +/D [1918 0 R /XYZ 99.895 716.092 null] >> -% 1918 0 obj +% 1921 0 obj << -/D [1915 0 R /XYZ 99.895 676.015 null] +/D [1918 0 R /XYZ 99.895 676.015 null] >> -% 1919 0 obj +% 1922 0 obj << -/D [1915 0 R /XYZ 99.895 679.195 null] +/D [1918 0 R /XYZ 99.895 679.195 null] >> -% 1914 0 obj +% 1917 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1922 0 obj +% 1925 0 obj << /Type /Page -/Contents 1923 0 R -/Resources 1921 0 R +/Contents 1926 0 R +/Resources 1924 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1896 0 R -/Annots [ 1920 0 R ] +/Parent 1899 0 R +/Annots [ 1923 0 R ] >> -% 1920 0 obj +% 1923 0 obj << /Type /Annot /Subtype /Link @@ -25942,226 +25856,307 @@ stream /Rect [342.753 571.778 420.271 583.837] /A << /S /GoTo /D (spdata) >> >> -% 1924 0 obj +% 1927 0 obj << -/D [1922 0 R /XYZ 149.705 753.953 null] +/D [1925 0 R /XYZ 149.705 753.953 null] >> % 521 0 obj << -/D [1922 0 R /XYZ 150.705 716.092 null] +/D [1925 0 R /XYZ 150.705 716.092 null] >> -% 1925 0 obj +% 1928 0 obj << -/D [1922 0 R /XYZ 150.705 676.015 null] +/D [1925 0 R /XYZ 150.705 676.015 null] >> -% 1926 0 obj +% 1929 0 obj << -/D [1922 0 R /XYZ 150.705 679.195 null] +/D [1925 0 R /XYZ 150.705 679.195 null] >> -% 1921 0 obj +% 1924 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1929 0 obj + +endstream +endobj +1933 0 obj << -/Type /Page -/Contents 1930 0 R -/Resources 1928 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1934 0 R -/Annots [ 1927 0 R ] +/Length 3667 >> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(9.3)]TJ 1.02 0 0 1 126.795 706.129 Tm [(mm)]TJ +ET +q +1 0 0 1 149.193 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 1.02 0 0 1 152.78 706.129 Tm [(mat)]TJ +ET +q +1 0 0 1 174.495 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 1.02 0 0 1 178.082 706.129 Tm [(read)-355(\227)-356(Read)-355(a)-356(sparse)-355(matrix)-356(from)-355(a)-356(\002le)-355(in)-355(the)]TJ 1 0 0 1 126.795 692.181 Tm [(MatrixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-810(m)-35(m)]TJ +ET +q +1 0 0 1 149.022 667.439 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 152.359 667.24 Td [(m)-35(a)-35(t)]TJ +ET +q +1 0 0 1 171.029 667.439 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 174.367 667.24 Td [(r)-35(e)-35(a)-35(d)-169(\050)-166(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-107(a)-106(m)-107(e)-241(\051)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +/F75 9.9626 Tf -74.472 -27.896 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(\002lename)]TJ +0 g 0 G +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 124.802 575.584 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 423.609 575.584 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.839 575.584 Tm [(,)-330(in)]TJ 1.003 0 0 1 124.384 563.628 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 124.802 551.673 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ +0 g 0 G +/F84 9.9626 Tf 26.8 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.757 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.926 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 442.283 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ +ET +q +1 0 0 1 344.406 442.283 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 347.544 442.084 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -268.571 -19.925 Td [(iret)]TJ +0 g 0 G +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 139.866 -307.811 Td [(145)]TJ +0 g 0 G +ET endstream endobj -1939 0 obj +1942 0 obj << -/Length 4155 +/Length 4378 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(9.4)-1000(mm)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(9.4)]TJ 1.02 0 0 1 177.604 706.129 Tm [(mm)]TJ ET q -1 0 0 1 199.577 706.328 cm +1 0 0 1 200.002 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 203.164 706.129 Td [(array)]TJ +/F75 11.9552 Tf 1.02 0 0 1 203.589 706.129 Tm [(array)]TJ ET q -1 0 0 1 231.784 706.328 cm +1 0 0 1 232.767 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 235.371 706.129 Td [(read)-222(\227)-223(Read)-222(a)-223(dense)-222(array)-223(from)-222(a)-223(\002le)-222(in)-223(the)-222(Ma-)]TJ -57.767 -13.948 Td [(trixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-845(m)-71(m)]TJ +/F75 11.9552 Tf 1.02 0 0 1 236.354 706.129 Tm [(read)-377(\227)-378(Read)-377(a)-378(dense)-377(array)-378(from)-377(a)-378(\002le)-377(in)-378(the)]TJ 1 0 0 1 177.604 692.181 Tm [(MatrixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-845(m)-71(m)]TJ ET q 1 0 0 1 200.884 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 204.572 667.24 Td [(a)-70(r)-70(r)-71(a)-70(y)]TJ +/F84 9.9626 Tf 204.572 667.24 Td [(a)-70(r)-70(r)-71(a)-70(y)]TJ ET q 1 0 0 1 232.04 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 235.728 667.24 Td [(r)-70(e)-70(a)-71(d)-203(\050)-150(b)-206(,)-926(i)-152(r)-151(e)-152(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-106(a)-107(m)-107(e)-241(\051)]TJ +/F84 9.9626 Tf 235.728 667.24 Td [(r)-70(e)-70(a)-71(d)-203(\050)-150(b)-206(,)-926(i)-152(r)-151(e)-152(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-106(a)-107(m)-107(e)-241(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -85.023 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -85.023 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.533 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.184 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 1.02 0 0 1 175.611 575.584 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 474.418 575.584 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.649 575.584 Tm [(,)-330(in)]TJ 1.003 0 0 1 175.193 563.628 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 175.611 551.673 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ +/F75 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.108 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 26.799 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.758 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.894 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.894 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.839 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-398(array)-398(of)-397(type)-398(r)18(eal)-398(or)-398(complex,)-434(rank)-398(1)-398(or)-398(2)-398(and)-398(h)1(a)-1(v)1(ing)-398(the)-398(ALLO-)]TJ 0 -11.955 Td [(CA)74(T)74(ABLE)-257(attribute,)-258(or)-257(an)-257(object)-257(of)-257(type)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.53 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 1.02 0 0 1 175.223 442.084 Tm [(An)-368(array)-368(of)-367(type)-368(r)18(eal)-368(or)-368(complex,)-398(rank)-368(1)-368(or)-368(2)-367(and)-368(having)-368(the)-368(ALLO-)]TJ 1.005 0 0 1 175.611 430.129 Tm [(CA)74(T)73(ABLE)-248(attribut)1(e,)-248(or)-248(an)-248(object)-248(of)-248(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 177.91 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 353.766 430.129 Tm [(psb)]TJ ET q -1 0 0 1 369.841 430.328 cm +1 0 0 1 370.085 430.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 372.979 430.129 Td [(T)]TJ +/F131 9.9626 Tf 373.223 430.129 Td [(T)]TJ ET q -1 0 0 1 378.837 430.328 cm +1 0 0 1 379.081 430.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 381.975 430.129 Td [(vect)]TJ +/F131 9.9626 Tf 382.219 430.129 Td [(vect)]TJ ET q -1 0 0 1 403.524 430.328 cm +1 0 0 1 403.768 430.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 406.663 430.129 Td [(type)]TJ +/F131 9.9626 Tf 406.907 430.129 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)-259(of)-257(type)-256(r)18(eal)-257(or)]TJ -251.973 -11.955 Td [(complex.)]TJ 0 -11.955 Td [(W)55(ill)-275(be)-276(allocated)-275(and)-276(\002ll)1(ed)-276(in)-275(if)-276(the)-275(input)-275(\002le)-276(contains)-275(a)-275(right)-276(hand)-275(side,)]TJ 0 -11.956 Td [(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ +/F84 9.9626 Tf 1.005 0 0 1 427.828 430.129 Tm [(,)-248(of)-248(type)-248(r)18(eal)-247(or)]TJ 1 0 0 1 175.611 418.174 Tm [(complex.)]TJ 1.019 0 0 1 175.113 406.219 Tm [(W)54(ill)-245(be)-245(allocated)-245(and)-245(\002lled)-245(in)-245(if)-245(the)-245(input)-245(\002l)1(e)-245(contains)-245(a)-245(right)-245(hand)-245(side,)]TJ 1 0 0 1 175.611 394.263 Tm [(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.88 Td [(iret)]TJ +/F75 9.9626 Tf -24.906 -31.88 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.476 -248.035 Td [(146)]TJ + 139.865 -248.035 Td [(146)]TJ 0 g 0 G ET endstream endobj -1946 0 obj +1949 0 obj << -/Length 7231 +/Length 7519 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(9.5)-1000(mm)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(9.5)]TJ 1.019 0 0 1 126.795 706.129 Tm [(mm)]TJ ET q -1 0 0 1 148.768 706.328 cm +1 0 0 1 149.172 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 152.354 706.129 Td [(mat)]TJ +/F75 11.9552 Tf 1.019 0 0 1 152.758 706.129 Tm [(mat)]TJ ET q -1 0 0 1 173.658 706.328 cm +1 0 0 1 174.453 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 177.245 706.129 Td [(write)-275(\227)-275(W)74(rite)-275(a)-275(sparse)-275(matrix)-275(to)-275(a)-275(\002le)-275(in)-275(the)-275(Ma-)]TJ -50.45 -13.948 Td [(trixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.48 Td [(c)-175(a)-175(l)-174(l)-828(m)-52(m)]TJ +/F75 11.9552 Tf 1.019 0 0 1 178.04 706.129 Tm [(write)-246(\227)-246(W)73(rite)-246(a)-246(sparse)-246(matrix)-246(to)-246(a)-246(\002le)-246(in)-246(the)-246(Ma-)]TJ 1 0 0 1 126.795 692.181 Tm [(trixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.48 Td [(c)-175(a)-175(l)-174(l)-828(m)-52(m)]TJ ET q 1 0 0 1 149.539 667.901 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 153.049 667.701 Td [(m)-52(a)-53(t)]TJ +/F84 9.9626 Tf 153.049 667.701 Td [(m)-52(a)-53(t)]TJ ET q 1 0 0 1 172.236 667.901 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 175.746 667.701 Td [(w)-52(r)-53(i)-52(t)-52(e)-186(\050)-167(a)-242(,)-900(m)-126(t)-125(i)-126(t)-125(l)-126(e)-426(,)-926(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-130(t)-434(,)-882(f)-107(i)-107(l)-106(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ +/F84 9.9626 Tf 175.746 667.701 Td [(w)-52(r)-53(i)-52(t)-52(e)-186(\050)-167(a)-242(,)-900(m)-126(t)-125(i)-126(t)-125(l)-126(e)-426(,)-926(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-130(t)-434(,)-882(f)-107(i)-107(l)-106(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -75.851 -26.279 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -75.851 -26.279 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.464 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.464 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.464 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 578.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 578.584 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 578.584 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 578.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 578.584 Td [(type)]TJ +/F131 9.9626 Tf 347.544 578.584 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -19.464 Td [(mtitle)]TJ +/F75 9.9626 Tf -268.571 -19.464 Td [(mtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(A)-231(charachter)-230(variable)-231(holding)-231(a)-230(descriptive)-231(title)-231(for)-230(the)-231(matrix)-231(to)-230(be)-231(writ-)]TJ 0 -11.955 Td [(ten)-250(to)-250(\002le.)]TJ +/F84 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 0.98 0 0 1 124.413 535.21 Tm [(A)-201(charachter)-200(variable)-201(holding)-200(a)-201(descriptive)-200(title)-201(for)-201(the)-200(matrix)-201(to)-200(be)-201(written)]TJ 1 0 0 1 124.802 523.255 Tm [(to)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.464 Td [(\002lename)]TJ +/F75 9.9626 Tf -24.907 -19.464 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-234(case)-234(the)-233(default)-234(output)-234(unit)-234(6)-233(\050i.e.)-305(standar)18(d)-234(output)-234(in)-233(Unix)-234(jar)18(gon\051)]TJ 0 -11.956 Td [(is)-250(used.)-310(Default:)]TJ/F67 9.9626 Tf 74.799 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 124.802 479.881 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 423.609 479.881 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.839 479.881 Tm [(,)-330(in)]TJ 0.999 0 0 1 124.384 467.926 Tm [(which)-249(case)-249(the)-249(default)-249(output)-250(unit)-249(6)-249(\050i.e.)-310(standar)18(d)-249(output)-249(in)-249(Unix)-249(jar)18(gon\051)]TJ 1 0 0 1 124.802 455.97 Tm [(is)-250(used.)-310(Default:)]TJ/F131 9.9626 Tf 74.799 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -104.936 -19.463 Td [(iunit)]TJ +/F75 9.9626 Tf -104.936 -19.463 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.109 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 26.8 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.757 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.895 -20.764 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.895 -20.764 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.463 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -20.763 Td [(Notes)]TJ/F62 9.9626 Tf 14.944 -11.956 Td [(If)-283(this)-282(function)-283(is)-283(called)-282(on)-283(a)-282(matrix)-283(a)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -20.763 Td [(Notes)]TJ/F84 9.9626 Tf 1.016 0 0 1 114.839 315.74 Tm [(If)-246(this)-246(function)-247(is)-246(called)-246(on)-246(a)-247(matri)1(x)]TJ 1 0 0 1 275.169 315.74 Tm [(a)]TJ 0 g 0 G 0 g 0 G - [-283(on)-282(a)-283(distributed)-283(communicator)-282(only)]TJ -14.944 -11.955 Td [(the)-316(local)-317(part)-316(is)-316(written)-317(in)-316(output.)-509(T)92(o)-316(get)-317(a)-316(single)-316(MatrixMarket)-317(\002le)-316(with)-316(the)]TJ 0 -11.955 Td [(whole)-225(matrix)-225(when)-225(appr)18(opriate,)-230(e.g.)-302(for)-225(debugging)-225(purposes,)-230(one)-225(could)]TJ/F60 9.9626 Tf 318.257 0 Td [(gather)]TJ/F62 9.9626 Tf -318.257 -11.955 Td [(the)-339(whole)-338(matrix)-339(on)-338(a)-339(single)-338(rank)-339(and)-338(then)-339(write)-338(it.)-576(Consider)-339(the)-338(following)]TJ 0 -11.955 Td [(example)-250(for)-250(a)]TJ/F60 9.9626 Tf 62.495 0 Td [(double)]TJ/F62 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(matrix)]TJ + 1.016 0 0 1 282.642 315.74 Tm [(on)-246(a)-246(distributed)-247(communicator)-246(only)]TJ 1.02 0 0 1 99.895 303.784 Tm [(the)-273(local)-274(part)-273(is)-274(written)-273(in)-273(output.)-389(T)90(o)-273(get)-274(a)-273(single)-274(MatrixMarket)-273(\002le)-273(with)-274(the)]TJ 0.994 0 0 1 99.477 291.829 Tm [(whole)-252(matrix)-253(when)-252(appr)18(opriate,)-253(e.g.)-315(for)-252(debugging)-253(purposes,)-253(one)-252(could)]TJ/F78 9.9626 Tf 0.994 0 0 1 418.305 291.829 Tm [(gather)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 279.874 Tm [(the)-293(whole)-293(matrix)-293(on)-293(a)-292(single)-293(rank)-293(and)-293(then)-293(write)-293(it.)-447(Consider)-293(the)-293(following)]TJ 1 0 0 1 99.895 267.919 Tm [(example)-250(for)-250(a)]TJ/F78 9.9626 Tf 62.495 0 Td [(double)]TJ/F84 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(matrix)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -26173,7 +26168,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 102.884 250.747 Td [(type)]TJ +/F231 8.9664 Tf 102.884 250.747 Td [(type)]TJ 0 g 0 G [(\050psb_ldspmat_type\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -26226,7 +26221,7 @@ BT [-525(info\051)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -23.747 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F67 9.9626 Tf 129.513 0 Td [(C)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ +/F84 9.9626 Tf -3.297 -23.747 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F131 9.9626 Tf 129.512 0 Td [(C)]TJ/F84 9.9626 Tf 5.231 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -26237,7 +26232,7 @@ Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G BT -/F102 8.9664 Tf 102.884 144.073 Td [(psb_i_t)]TJ +/F231 8.9664 Tf 102.884 144.073 Td [(psb_i_t)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(psb_c_)]TJ @@ -26251,7 +26246,7 @@ BT [(global_mat_write\050ah,cdh\051;)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -23.747 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ +/F84 9.9626 Tf -2.989 -23.747 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ 0 g 0 G 164.384 -29.888 Td [(147)]TJ 0 g 0 G @@ -26259,103 +26254,103 @@ ET endstream endobj -1953 0 obj +1956 0 obj << -/Length 7073 +/Length 7416 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(9.6)-1000(mm)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(9.6)]TJ 1.02 0 0 1 177.604 706.129 Tm [(mm)]TJ ET q -1 0 0 1 199.577 706.328 cm +1 0 0 1 200.002 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 203.164 706.129 Td [(array)]TJ +/F75 11.9552 Tf 1.02 0 0 1 203.589 706.129 Tm [(array)]TJ ET q -1 0 0 1 231.784 706.328 cm +1 0 0 1 232.767 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 235.371 706.129 Td [(write)-374(\227)-375(W)74(rite)-374(a)-375(dense)-374(array)-374(from)-375(a)-374(\002le)-375(in)-374(the)]TJ -57.767 -13.948 Td [(MatrixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.509 Td [(c)-175(a)-175(l)-174(l)-858(m)-83(m)]TJ +/F75 11.9552 Tf 1.02 0 0 1 236.354 706.129 Tm [(write)-324(\227)-323(W)72(rite)-324(a)-323(dense)-324(array)-324(from)-323(a)-324(\002le)-324(in)-324(the)]TJ 1 0 0 1 177.604 692.181 Tm [(MatrixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.509 Td [(c)-175(a)-175(l)-174(l)-858(m)-83(m)]TJ ET q 1 0 0 1 201.262 667.872 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 205.076 667.672 Td [(a)-83(r)-83(r)-83(a)-83(y)]TJ +/F84 9.9626 Tf 205.076 667.672 Td [(a)-83(r)-83(r)-83(a)-83(y)]TJ ET q 1 0 0 1 233.175 667.872 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 236.989 667.672 Td [(w)-83(r)-83(i)-83(t)-82(e)-217(\050)-149(b)-206(,)-941(v)-165(t)-165(i)-165(t)-166(l)-165(e)-505(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-130(u)-129(n)-130(i)-129(t)-435(,)-881(f)-107(i)-107(l)-107(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ +/F84 9.9626 Tf 236.989 667.672 Td [(w)-83(r)-83(i)-83(t)-82(e)-217(\050)-149(b)-206(,)-941(v)-165(t)-165(i)-165(t)-166(l)-165(e)-505(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-130(u)-129(n)-130(i)-129(t)-435(,)-881(f)-107(i)-107(l)-107(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -86.284 -26.38 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -86.284 -26.38 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.493 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.493 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.493 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.839 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-190(array)-190(of)-190(type)-190(r)18(eal)-190(or)-190(complex,)-202(rank)-190(1)-190(or)-190(2,)-202(or)-190(an)-190(object)-190(of)-190(type)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.53 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.223 578.396 Tm [(An)-194(array)-194(of)-194(type)-193(r)18(eal)-194(or)-194(complex,)-206(rank)-194(1)-194(or)-194(2,)-206(or)-194(an)-193(object)-194(of)-194(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 277.745 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 448.021 578.396 Tm [(psb)]TJ ET q -1 0 0 1 469.676 578.595 cm +1 0 0 1 464.339 578.595 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 472.814 578.396 Td [(T)]TJ +/F131 9.9626 Tf 467.478 578.396 Td [(T)]TJ ET q -1 0 0 1 478.672 578.595 cm +1 0 0 1 473.336 578.595 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 481.81 578.396 Td [(vect)]TJ +/F131 9.9626 Tf 476.474 578.396 Td [(vect)]TJ ET q -1 0 0 1 503.359 578.595 cm +1 0 0 1 498.023 578.595 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 506.497 578.396 Td [(type)]TJ +/F131 9.9626 Tf 501.161 578.396 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(,)]TJ -351.808 -11.955 Td [(of)-250(type)-250(r)18(eal)-250(or)-250(complex;)-250(its)-250(contents)-250(will)-250(be)-250(written)-250(to)-250(disk.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 522.082 578.396 Tm [(,)]TJ 1 0 0 1 175.611 566.441 Tm [(of)-250(type)-250(r)18(eal)-250(or)-250(complex;)-250(its)-250(contents)-250(will)-250(be)-250(written)-250(to)-250(disk.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.448 Td [(\002lename)]TJ +/F75 9.9626 Tf -24.906 -31.448 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written.)]TJ 0 g 0 G -/F59 9.9626 Tf -44.274 -31.448 Td [(vtitle)]TJ +/F75 9.9626 Tf -43.965 -31.448 Td [(vtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 28.772 0 Td [(Matrix)-250(title.)]TJ -3.865 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(A)-244(charachter)-243(variable)-244(holding)-244(a)-243(descriptive)-244(title)-244(for)-243(the)-244(vector)-244(to)-243(be)-244(writ-)]TJ 0 -11.955 Td [(ten)-250(to)-250(\002le.)-310(T)90(ype:)]TJ/F59 9.9626 Tf 70.763 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -108.95 -11.955 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.533 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)-387(in)]TJ -303.764 -11.956 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.184 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 28.772 0 Td [(Matrix)-250(title.)]TJ -4.174 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.223 479.635 Tm [(A)-214(charachter)-213(variable)-214(holding)-213(a)-214(descriptive)-213(title)-214(for)-214(the)-213(vector)-214(to)-213(be)-214(written)]TJ 1 0 0 1 175.611 467.68 Tm [(to)-250(\002le.)-310(T)90(ype:)]TJ/F75 9.9626 Tf 54.456 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 175.611 455.725 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 474.418 455.725 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.649 455.725 Tm [(,)-330(in)]TJ 1.003 0 0 1 175.193 443.77 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 175.611 431.814 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.322 -19.492 Td [(iunit)]TJ +/F75 9.9626 Tf -95.322 -19.492 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.108 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 26.799 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.758 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.894 -20.836 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.894 -20.836 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.492 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -20.836 Td [(Notes)]TJ/F62 9.9626 Tf 14.944 -11.955 Td [(If)-290(this)-289(function)-290(is)-290(call)1(ed)-290(on)-290(a)-289(vector)-290(v)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -20.836 Td [(Notes)]TJ/F84 9.9626 Tf 1.019 0 0 1 165.649 291.381 Tm [(If)-246(this)-246(function)-246(is)-246(called)-246(on)-246(a)-246(vector)]TJ 1 0 0 1 324.855 291.381 Tm [(v)]TJ 0 g 0 G 0 g 0 G - [-290(on)-289(a)-290(distributed)-290(communicator)-289(only)]TJ -14.944 -11.955 Td [(the)-316(local)-317(part)-316(is)-316(written)-317(in)-316(output.)-509(T)92(o)-316(get)-317(a)-316(single)-316(MatrixMarket)-317(\002le)-316(with)-316(the)]TJ 0 -11.955 Td [(whole)-243(vect)1(or)-243(when)-243(appr)18(opriate,)-244(e.g.)-307(for)-243(debugging)-242(purposes,)-244(one)-243(could)]TJ/F60 9.9626 Tf 318.257 0 Td [(gather)]TJ/F62 9.9626 Tf -318.257 -11.955 Td [(the)-349(whole)-349(vector)-349(on)-349(a)-349(single)-349(rank)-349(and)-349(then)-349(writ)1(e)-349(it.)-607(Consider)-349(the)-349(following)]TJ 0 -11.956 Td [(example)-250(for)-250(a)]TJ/F60 9.9626 Tf 62.495 0 Td [(double)]TJ/F62 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(vector)]TJ + 1.019 0 0 1 332.982 291.381 Tm [(on)-246(a)-246(distributed)-246(communicator)-246(only)]TJ 1.02 0 0 1 150.705 279.426 Tm [(the)-273(local)-274(part)-273(is)-274(written)-273(in)-273(output.)-389(T)90(o)-273(get)-274(a)-273(single)-274(Matri)1(xMarket)-274(\002le)-273(with)-274(the)]TJ 0.999 0 0 1 150.286 267.471 Tm [(whole)-251(vector)-251(when)-251(ap)1(pr)18(opriate,)-251(e.g.)-313(for)-250(debugging)-251(purposes,)-251(one)-251(could)]TJ/F78 9.9626 Tf 0.999 0 0 1 468.987 267.471 Tm [(gather)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 255.516 Tm [(the)-303(whole)-304(vec)1(tor)-304(on)-303(a)-303(single)-304(rank)-303(and)-303(then)-303(write)-304(it.)-478(Consider)-303(the)-304(following)]TJ 1 0 0 1 150.705 243.561 Tm [(example)-250(for)-250(a)]TJ/F78 9.9626 Tf 62.495 0 Td [(double)]TJ/F84 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(vector)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -26367,7 +26362,7 @@ Q 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F102 8.9664 Tf 153.694 221.378 Td [(real)]TJ +/F231 8.9664 Tf 153.694 221.378 Td [(real)]TJ 0 g 0 G [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -26428,15 +26423,15 @@ BT [(info\051)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -23.777 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F67 9.9626 Tf 129.513 0 Td [(C)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ +/F84 9.9626 Tf -3.298 -23.777 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F131 9.9626 Tf 129.513 0 Td [(C)]TJ/F84 9.9626 Tf 5.23 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ 0 g 0 G - 29.64 -41.41 Td [(148)]TJ + 29.949 -41.41 Td [(148)]TJ 0 g 0 G ET endstream endobj -1959 0 obj +1962 0 obj << /Length 655 >> @@ -26452,7 +26447,7 @@ Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G BT -/F102 8.9664 Tf 102.884 701.446 Td [(psb_i_t)]TJ +/F231 8.9664 Tf 102.884 701.446 Td [(psb_i_t)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(psb_c_)]TJ @@ -26466,7 +26461,7 @@ BT [(global_vec_write\050vh,cdh\051;)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -24.209 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ +/F84 9.9626 Tf -2.989 -24.209 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ 0 g 0 G 164.384 -586.799 Td [(149)]TJ 0 g 0 G @@ -26474,15 +26469,15 @@ ET endstream endobj -1963 0 obj +1966 0 obj << -/Length 1109 +/Length 1282 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(10)-1000(Preconditioner)-250(routines)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-228(base)-227(PSBLAS)-228(library)-227(contains)-228(the)-227(implementation)-228(of)-227(two)-228(simple)-227(pr)18(econdi-)]TJ 0 -11.955 Td [(tioning)-250(techniques:)]TJ +/F75 14.3462 Tf 150.705 705.784 Td [(10)-1000(Preconditioner)-250(routines)]TJ/F84 9.9626 Tf 0.999 0 0 1 150.396 683.082 Tm [(The)-251(base)-250(PSBLAS)-251(library)-251(contains)-250(the)-251(implementation)-251(of)-251(two)-250(simple)-251(pr)18(econdi-)]TJ 1 0 0 1 150.705 671.127 Tm [(tioning)-250(techniques:)]TJ 0 g 0 G 13.888 -19.925 Td [(\225)]TJ 0 g 0 G @@ -26490,7 +26485,7 @@ BT 0 g 0 G 0 -19.926 Td [(\225)]TJ 0 g 0 G - [-500(Block)-250(Jacobi)-250(with)-250(ILU\0500\051)-250(factorization)]TJ -13.888 -19.925 Td [(The)-356(supporting)-356(data)-356(type)-356(and)-356(subr)18(outine)-356(interfaces)-356(ar)18(e)-356(de\002ned)-356(in)-356(the)-356(mod-)]TJ 0 -11.955 Td [(ule)]TJ/F67 9.9626 Tf 16.301 0 Td [(psb_prec_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)-350(The)-263(old)-263(interfaces)]TJ/F67 9.9626 Tf 87.314 0 Td [(psb_precinit)]TJ/F62 9.9626 Tf 65.386 0 Td [(and)]TJ/F67 9.9626 Tf 19.489 0 Td [(psb_precbld)]TJ/F62 9.9626 Tf 60.156 0 Td [(ar)18(e)-263(still)]TJ -311.41 -11.955 Td [(supported)-250(for)-250(backwar)18(d)-250(compatibility)]TJ + [-500(Block)-250(Jacobi)-250(with)-250(ILU\0500\051)-250(factorization)]TJ 1.02 0 0 1 150.396 611.351 Tm [(The)-312(supporting)-312(data)-312(type)-312(and)-312(subr)18(outine)-312(interfaces)-312(ar)17(e)-312(de\002ned)-312(in)-312(the)-312(mod-)]TJ 1.011 0 0 1 150.705 599.396 Tm [(ule)]TJ/F131 9.9626 Tf 1 0 0 1 167.018 599.396 Tm [(psb_prec_mod)]TJ/F84 9.9626 Tf 1.011 0 0 1 229.782 599.396 Tm [(.)-306(The)-247(old)-247(interfaces)]TJ/F131 9.9626 Tf 1 0 0 1 317.122 599.396 Tm [(psb_precinit)]TJ/F84 9.9626 Tf 1.011 0 0 1 382.37 599.396 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 401.907 599.396 Tm [(psb_precbld)]TJ/F84 9.9626 Tf 1.011 0 0 1 461.925 599.396 Tm [(ar)18(e)-247(still)]TJ 1 0 0 1 150.705 587.441 Tm [(supported)-250(for)-250(backwar)18(d)-250(compatibility)]TJ 0 g 0 G 164.383 -497.003 Td [(150)]TJ 0 g 0 G @@ -26498,78 +26493,78 @@ ET endstream endobj -1969 0 obj +1972 0 obj << -/Length 5016 +/Length 5195 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(10.1)-1000(init)-250(\227)-250(Initialize)-250(a)-250(preconditioner)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(10.1)-1000(init)-250(\227)-250(Initialize)-250(a)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%init\050icontxt,ptype,)-525(info\051)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%init\050icontxt,ptype,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icontxt)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(ptype)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(ptype)]TJ 0 g 0 G -/F62 9.9626 Tf 30.994 0 Td [(the)-250(type)-250(of)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 151.121 0 Td [(global)]TJ/F62 9.9626 Tf -157.208 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(string,)-250(see)-250(usage)-250(notes.)]TJ +/F84 9.9626 Tf 30.994 0 Td [(the)-250(type)-250(of)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 151.121 0 Td [(global)]TJ/F84 9.9626 Tf -157.517 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(string,)-250(see)-250(usage)-250(notes.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(On)-250(Exit)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(On)-250(Exit)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -30.874 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.183 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q 1 0 0 1 337.631 446.268 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 340.77 446.069 Td [(prec)]TJ +/F131 9.9626 Tf 340.77 446.069 Td [(prec)]TJ ET q 1 0 0 1 362.319 446.268 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 365.457 446.069 Td [(type)]TJ +/F131 9.9626 Tf 365.457 446.069 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -286.483 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -30.326 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ/F62 9.9626 Tf 34.311 0 Td [(Legal)-245(inputs)-244(to)-245(this)-245(subr)18(outine)-245(ar)18(e)-244(interpr)18(eted)-245(depending)-245(on)-244(the)]TJ/F60 9.9626 Tf 285.595 0 Td [(p)-25(t)-25(y)-80(p)-25(e)]TJ/F62 9.9626 Tf -319.906 -11.956 Td [(string)-250(as)-250(follows)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -30.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F75 11.9552 Tf 0.998 0 0 1 99.895 368.361 Tm [(Notes)]TJ/F84 9.9626 Tf 0.998 0 0 1 134.195 368.361 Tm [(Legal)-251(inputs)-250(to)-251(this)-250(subr)18(outine)-251(ar)18(e)-250(interpr)18(eted)-251(depending)-250(on)-251(the)]TJ/F78 9.9626 Tf 1 0 0 1 419.801 368.361 Tm [(p)-25(t)-25(y)-80(p)-25(e)]TJ/F84 9.9626 Tf -319.906 -11.956 Td [(string)-250(as)-250(follows)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 72.358 3.617 Td [(4)]TJ +/F84 7.5716 Tf 72.358 3.617 Td [(4)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.617 Td [(:)]TJ +/F84 9.9626 Tf 4.284 -3.617 Td [(:)]TJ 0 g 0 G -/F59 9.9626 Tf -76.642 -19.925 Td [(NONE)]TJ +/F75 9.9626 Tf -76.642 -19.925 Td [(NONE)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(No)-250(pr)18(econditioning,)-250(i.e.)-310(the)-250(pr)18(econditioner)-250(is)-250(just)-250(a)-250(copy)-250(operator)74(.)]TJ +/F84 9.9626 Tf 35.965 0 Td [(No)-250(pr)18(econditioning,)-250(i.e.)-310(the)-250(pr)18(econditioner)-250(is)-250(just)-250(a)-250(copy)-250(operator)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -35.965 -19.925 Td [(DIAG)]TJ +/F75 9.9626 Tf -35.965 -19.925 Td [(DIAG)]TJ 0 g 0 G -/F62 9.9626 Tf 33.205 0 Td [(Diagonal)-371(scaling;)-432(each)-371(entry)-372(of)-371(the)-371(input)-371(vector)-372(is)-371(multiplied)-371(by)-371(the)]TJ -8.298 -11.955 Td [(r)18(ecipr)18(ocal)-266(of)-267(the)-266(sum)-267(of)-266(the)-266(absolute)-267(values)-266(of)-267(the)-266(coef)18(\002cients)-266(in)-267(the)-266(cor)18(-)]TJ 0 -11.955 Td [(r)18(esponding)-250(r)18(ow)-250(of)-250(matrix)]TJ/F60 9.9626 Tf 116.148 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 133.101 316.555 Tm [(Diagonal)-318(scaling;)-354(each)-318(entry)-318(of)-318(the)-318(input)-318(ve)1(ctor)-318(is)-318(multiplied)-318(by)-318(the)]TJ 1.02 0 0 1 124.802 304.6 Tm [(r)18(ecipr)17(ocal)-378(of)-378(the)-377(sum)-378(of)-378(the)-378(absolute)-378(values)-378(of)-378(the)-378(coef)18(\002cients)-378(in)-378(the)]TJ 1 0 0 1 124.802 292.645 Tm [(corr)18(esponding)-250(r)18(ow)-250(of)-250(matrix)]TJ/F78 9.9626 Tf 129.946 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(;)]TJ 0 g 0 G -/F59 9.9626 Tf -148.373 -19.926 Td [(BJAC)]TJ +/F75 9.9626 Tf -162.171 -19.926 Td [(BJAC)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Pr)18(econdition)-211(by)-212(a)-211(factorization)-212(of)-211(the)-212(block-diagonal)-211(of)-212(matrix)]TJ/F60 9.9626 Tf 273.867 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(,)-219(wher)18(e)]TJ -286.723 -11.955 Td [(block)-347(boundaries)-348(ar)18(e)-347(determined)-347(by)-348(the)-347(data)-347(allocation)-348(boundaries)-347(for)]TJ 0 -11.955 Td [(each)-223(pr)18(ocess;)-232(r)18(equir)18(es)-222(no)-223(communication.)-301(Only)-223(the)-222(incomplete)-223(factoriza-)]TJ 0 -11.955 Td [(tion)]TJ/F60 9.9626 Tf 20.498 0 Td [(I)-96(L)-9(U)]TJ/F93 10.3811 Tf 18.202 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(0)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 6.64 0 Td [(is)-250(curr)18(ently)-250(implemented.)]TJ +/F84 9.9626 Tf 0.987 0 0 1 130.341 272.719 Tm [(Pr)18(econdition)-252(by)-253(a)-253(factorization)-252(of)-253(the)-252(block-diagonal)-253(of)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 404.297 272.719 Tm [(A)]TJ/F84 9.9626 Tf 0.987 0 0 1 411.614 272.719 Tm [(,)-253(wher)18(e)]TJ 1.02 0 0 1 124.802 260.764 Tm [(block)-280(boundaries)-280(ar)18(e)-280(determined)-279(by)-280(the)-280(data)-280(allocation)-280(boundar)1(ies)-280(for)]TJ 0.999 0 0 1 124.802 248.809 Tm [(each)-251(pr)18(ocess;)-251(r)18(equir)18(es)-250(no)-251(communication.)-312(Only)-251(the)-251(incomplete)-250(factoriza-)]TJ 1 0 0 1 124.802 236.854 Tm [(tion)]TJ/F78 9.9626 Tf 20.498 0 Td [(I)-96(L)-9(U)]TJ/F181 10.3811 Tf 18.202 0 Td [(\050)]TJ/F84 9.9626 Tf 4.149 0 Td [(0)]TJ/F181 10.3811 Tf 5.106 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(is)-250(curr)18(ently)-250(implemented.)]TJ 0 g 0 G ET q @@ -26577,466 +26572,890 @@ q []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 123.219 Td [(4)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(The)-250(string)-250(is)-250(case-insensitive)]TJ +/F84 5.9776 Tf 110.755 123.219 Td [(4)]TJ/F84 7.9701 Tf 3.24 -2.893 Td [(The)-250(string)-250(is)-250(case-insensitive)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 150.037 -29.888 Td [(151)]TJ +/F84 9.9626 Tf 150.284 -29.888 Td [(151)]TJ 0 g 0 G ET endstream endobj -1979 0 obj +1981 0 obj << -/Length 7572 +/Length 4614 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(10.2)-1000(build)-250(\227)-250(Builds)-250(a)-250(preconditioner)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.2)-1000(Set)-250(\227)-250(set)-250(preconditioner)-250(parameters)]TJ +0 g 0 G +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 106.999 -18.964 Td [(call)]TJ +0 g 0 G + [-525(p%set\050what,val,info\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 665.247 Tm [(This)-385(met)1(hod)-385(sets)-385(the)-384(parameters)-385(de\002ning)-384(the)-385(subdomain)-384(solver)-385(when)-384(the)]TJ 0.987 0 0 1 150.406 653.292 Tm [(pr)18(econditioner)-253(type)-252(is)]TJ/F131 9.9626 Tf 1 0 0 1 248.593 653.292 Tm [(BJAC)]TJ/F84 9.9626 Tf 0.987 0 0 1 269.515 653.292 Tm [(.)-253(Mor)18(e)-253(pr)19(ecisely)112(,)-253(the)-253(parameter)-253(ident)1(i\002ed)-253(by)]TJ/F131 9.9626 Tf 1 0 0 1 463.977 653.292 Tm [(what)]TJ/F84 9.9626 Tf 0.987 0 0 1 487.385 653.292 Tm [(is)]TJ 1 0 0 1 150.705 641.337 Tm [(assigned)-250(the)-250(value)-250(contained)-250(in)]TJ/F131 9.9626 Tf 141.229 0 Td [(val)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ/F75 11.9552 Tf -157.386 -29.888 Td [(Arguments)]TJ/F131 9.9626 Tf 21.126 -15.534 Td [(what)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + [-2541(character)]TJ 0 g 0 G + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ 0 g 0 G -/F67 9.9626 Tf 0 -20.364 Td [(call)-525(prec%build\050a,)-525(desc_a,)-525(info[,amold,vmold,imold]\051)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -24.086 Td [(T)90(ype:)]TJ + [(\051)]TJ/F84 9.9626 Tf 129.918 0 Td [(.)]TJ 1.02 0 0 1 217.288 583.96 Tm [(The)-322(parameter)-321(to)-322(be)-321(set.)-533(It)-322(can)-321(be)-322(speci\002ed)-321(thr)17(ough)-321(its)-322(name;)-359(the)-322(string)-321(is)]TJ 1 0 0 1 217.597 572.005 Tm [(case-insensitive.)-310(See)-250(T)92(ables)]TJ/F75 9.9626 Tf 121.792 0 Td [(??)]TJ/F84 9.9626 Tf 8.847 0 Td [(-)]TJ +0 0 1 rg 0 0 1 RG + [(22)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + [(.)]TJ/F131 9.9626 Tf -176.871 -11.955 Td [(val)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -29.828 -22.815 Td [(On)-250(Entry)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + [-3066(integer)]TJ 0 g 0 G +/F78 9.9626 Tf 1.02 0 0 1 261.996 560.05 Tm [(or)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 278.248 560.05 Tm [(character)]TJ 0 g 0 G - 0 -22.816 Td [(a)]TJ + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ/F78 9.9626 Tf 1.02 0 0 1 369.72 560.05 Tm [(or)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 385.972 560.05 Tm [(real)]TJ +0 g 0 G + [(\050psb_spk_\051)]TJ/F78 9.9626 Tf 1.02 0 0 1 466.983 560.05 Tm [(or)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 483.235 560.05 Tm [(real)]TJ +0 g 0 G + [(\050psb_dpk_\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 556.46 560.05 Tm [(,)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 1 0 0 1 217.597 548.095 Tm [(intent)]TJ +0 g 0 G + [(\050in\051)]TJ/F84 9.9626 Tf 52.304 0 Td [(.)]TJ 1.02 0 0 1 217.288 536.14 Tm [(The)-390(value)-390(of)-390(the)-389(parameter)-390(to)-390(be)-390(set.)-738(The)-390(list)-390(of)-390(allowed)-390(values)-390(and)-389(the)]TJ 1.02 0 0 1 217.597 524.184 Tm [(corr)18(esponding)-256(data)-256(types)-256(is)-256(given)-256(in)-256(T)90(ables)]TJ/F75 9.9626 Tf 1 0 0 1 414.533 524.184 Tm [(??)]TJ/F84 9.9626 Tf 1.02 0 0 1 423.38 524.184 Tm [(-)]TJ +0 0 1 rg 0 0 1 RG + [(22)]TJ +0 g 0 G + [(.)-337(When)-256(the)-256(value)-256(i)1(s)-256(of)-256(type)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 217.597 512.229 Tm [(character)]TJ +0 g 0 G + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ/F84 9.9626 Tf 83.686 0 Td [(,)-250(it)-250(is)-250(also)-250(tr)18(eated)-250(as)-250(case)-250(insensitive.)]TJ/F131 9.9626 Tf -129.657 -11.955 Td [(info)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + [-2514(integer)]TJ +0 g 0 G + [(,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(intent)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(system)-250(sparse)-250(matrix.)-310(Scope:)]TJ/F59 9.9626 Tf 146.229 0 Td [(local)]TJ/F62 9.9626 Tf -131.285 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(sparse)-250(matrix)-250(data)-250(str)8(uctur)18(e)]TJ + [(\050out\051)]TJ/F84 9.9626 Tf 150.578 0 Td [(.)]TJ -104.607 -11.955 Td [(Err)18(or)-250(code.)-310(If)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)-310(See)-250(Section)]TJ/F75 9.9626 Tf 213.527 0 Td [(??)]TJ/F84 9.9626 Tf 11.338 0 Td [(for)-250(details.)]TJ 1.02 0 0 1 150.316 476.478 Tm [(A)-253(number)-253(of)-253(subdomain)-253(solvers)-253(can)-253(be)-253(chosen)-254(with)-253(this)-253(method;)-257(a)-253(list)-253(of)-253(the)]TJ 0.98 0 0 1 150.406 464.523 Tm [(parameters)-247(that)-247(can)-247(be)-247(set,)-248(along)-247(with)-247(their)-247(allowed)-247(and)-247(default)-246(values,)-249(is)-247(given)]TJ 1 0 0 1 150.705 452.568 Tm [(in)-250(T)92(ables)]TJ/F75 9.9626 Tf 41.255 0 Td [(??)]TJ/F84 9.9626 Tf 8.846 0 Td [(-)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 190.872 0 Td [(psb)]TJ + [(22)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G + 114.282 -362.13 Td [(152)]TJ +0 g 0 G ET + +endstream +endobj +1986 0 obj +<< +/Length 4611 +>> +stream +0 g 0 G +0 g 0 G +0 g 0 G +1 0 0 1 271.751 120.326 cm q -1 0 0 1 382.802 580.382 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +0 1 -1 0 0 0 cm +0 g 0 G +0 g 0 G +0 g 0 G +q +1 0 0 1 9.234 63.215 cm +[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S +Q +q +1 0 0 1 9.234 52.057 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +1 0 0 1 -271.751 -120.326 cm BT -/F67 9.9626 Tf 385.94 580.183 Td [(Tspmat)]TJ +/F231 8.9664 Tf 286.727 175.671 Td [(what)]TJ ET q -1 0 0 1 417.95 580.382 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 394.988 172.383 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 421.088 580.183 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -291.305 -22.815 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(alr)18(eady)-190(initialized)-190(pr)18(econdtioner)-190(data)-190(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 277.288 0 Td [(psb)]TJ +/F84 7.1731 Tf 401.189 175.671 Td [(D)-62(A)11(T)12(A)-374(T)-62(Y)-62(P)-62(E)]TJ ET q -1 0 0 1 469.217 509.746 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 482.26 172.383 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 472.355 509.547 Td [(prec)]TJ +/F231 8.9664 Tf 488.002 175.671 Td [(val)]TJ ET q -1 0 0 1 493.904 509.746 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 548.073 172.383 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 497.043 509.547 Td [(type)]TJ -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -346.338 -34.771 Td [(desc)]TJ +/F84 7.1731 Tf 554.275 175.671 Td [(D)-62(E)-62(F)13(A)-62(U)-62(L)12(T)]TJ ET q -1 0 0 1 171.218 474.975 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +1 0 0 1 662.075 172.383 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F59 9.9626 Tf 174.207 474.776 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 208.625 0 Td [(local)]TJ/F62 9.9626 Tf -217.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(descriptor)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 247.649 0 Td [(psb)]TJ +/F84 7.1731 Tf 668.277 175.671 Td [(C)-62(O)-62(M)-61(M)-62(E)-61(N)-62(T)-62(S)]TJ ET q -1 0 0 1 439.579 439.11 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 858.283 172.383 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S +Q +q +1 0 0 1 280.985 172.184 cm +[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S +Q +q +1 0 0 1 280.985 95.272 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 442.717 438.911 Td [(desc)]TJ +/F231 8.9664 Tf 286.963 164.313 Td [(\015SUB_SOLVE\015)]TJ +0 g 0 G ET q -1 0 0 1 464.266 439.11 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 394.988 95.272 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F67 9.9626 Tf 467.404 438.911 Td [(type)]TJ +/F231 8.9664 Tf 400.965 164.313 Td [(character)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ 0 g 0 G -/F59 9.9626 Tf -337.62 -22.816 Td [(amold)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ 0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -8.857 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F67 9.9626 Tf 201.393 0 Td [(psb)]TJ + [(\051)]TJ ET q -1 0 0 1 393.323 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 482.26 95.272 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 396.461 368.275 Td [(T)]TJ +/F231 8.9664 Tf 488.237 164.313 Td [(\015ILU\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015ILUT\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015INVT\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015INVK\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.958 Td [(\015AINV\015)]TJ +0 g 0 G ET q -1 0 0 1 402.319 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 548.073 95.272 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q -BT -/F67 9.9626 Tf 405.457 368.275 Td [(base)]TJ -ET q -1 0 0 1 427.006 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 662.075 95.272 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q BT -/F67 9.9626 Tf 430.144 368.275 Td [(sparse)]TJ +/F84 8.9664 Tf 1.02 0 0 1 667.775 164.313 Tm [(The)-899(local)-898(solver)-899(to)-898(be)-899(used)-898(with)-899(the)]TJ 1.02 0 0 1 668.053 153.354 Tm [(smoother)-335(or)-335(one-level)-336(pr)18(econditioner)-335(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 843.499 153.354 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 848.094 153.354 Tm [(\051,)]TJ 1.02 0 0 1 668.053 142.395 Tm [(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 687.489 142.395 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 692.084 142.395 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 695.977 142.395 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 699.075 142.395 Tm [(\051,)-623(Appr)18(oximate)-548(Inverses)-547(INVK\050)]TJ/F78 8.9664 Tf 1 0 0 1 835.342 142.395 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 839.938 142.395 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 843.83 142.395 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 848.094 142.395 Tm [(\051,)]TJ 1.02 0 0 1 668.053 131.436 Tm [(INVT\050)]TJ/F78 8.9664 Tf 1 0 0 1 694.595 131.436 Tm [(p)]TJ/F84 6.9738 Tf 4.595 -1.783 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 703.175 131.436 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 707.561 131.436 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 712.157 131.436 Tm [(2,)]TJ/F78 8.9664 Tf 1 0 0 1 720.622 131.436 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.783 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 727.705 131.436 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 731.598 131.436 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.678 Td [(2)]TJ/F84 8.9664 Tf 1.02 0 0 1 738.681 131.436 Tm [(\051)-649(and)-648(AINV\050)]TJ/F78 8.9664 Tf 1 0 0 1 796.631 131.436 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 799.729 131.436 Tm [(\051;)-850(note)-649(that)]TJ 1.02 0 0 1 668.053 120.478 Tm [(appr)18(oximate)-468(inverses)-468(ar)18(e)-468(speci\002cally)-467(suited)]TJ 1.02 0 0 1 668.053 109.519 Tm [(for)-251(GPUs)-250(since)-251(they)-250(do)-251(not)-250(employ)-251(triangular)]TJ 1 0 0 1 668.053 98.56 Tm [(system)-250(solve)-250(kernels,)-250(see)-250([)]TJ/F75 8.9664 Tf 103.722 0 Td [(?)]TJ/F84 8.9664 Tf 3.981 0 Td [(].)]TJ ET q -1 0 0 1 462.154 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 858.283 95.272 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S +Q +q +1 0 0 1 280.985 95.073 cm +[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S +Q +q +1 0 0 1 280.985 93.08 cm +[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S Q +0 g 0 G BT -/F67 9.9626 Tf 465.292 368.275 Td [(mat)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ +/F84 9.9626 Tf 380.202 64.702 Td [(T)92(able)-250(21:)-310(Parameters)-250(de\002ning)-250(the)-250(solver)-250(or)-250(the)-250(details)-250(of)-250(the)-250(one-level)-250(pr)18(econditioner)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -330.278 -22.816 Td [(vmold)]TJ 0 g 0 G -/F62 9.9626 Tf 34.321 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -9.415 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F67 9.9626 Tf 201.393 0 Td [(psb)]TJ ET -q -1 0 0 1 393.323 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 271.751 120.326 cm Q +0 g 0 G +0 g 0 G +1 0 0 1 -271.751 -120.326 cm BT -/F67 9.9626 Tf 396.461 297.638 Td [(T)]TJ +/F84 9.9626 Tf 264.279 90.438 Td [(153)]TJ +0 g 0 G ET + +endstream +endobj +1991 0 obj +<< +/Length 3855 +>> +stream +0 g 0 G +0 g 0 G +0 g 0 G +1 0 0 1 322.56 716.092 cm q -1 0 0 1 402.319 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +0 -1 1 0 0 0 cm +0 g 0 G +0 g 0 G +0 g 0 G +q +1 0 0 1 6.907 46.976 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 6.907 35.818 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +1 0 0 1 -322.56 -716.092 cm BT -/F67 9.9626 Tf 405.457 297.638 Td [(base)]TJ +/F231 8.9664 Tf 335.209 755.197 Td [(what)]TJ ET q -1 0 0 1 427.006 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 432.13 751.91 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 430.144 297.638 Td [(vect)]TJ +/F84 7.1731 Tf 438.332 755.197 Td [(D)-62(A)11(T)12(A)-374(T)-62(Y)-62(P)-62(E)]TJ ET q -1 0 0 1 451.693 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 538.231 751.91 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 454.832 297.638 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -325.048 -22.815 Td [(imold)]TJ -0 g 0 G -/F62 9.9626 Tf 32.099 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(integer)-250(vector)-250(storage.)]TJ -7.193 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-190(as:)-280(an)-190(object)-190(of)-190(a)-190(class)-190(derived)-190(fr)18(om)-190(\050integer\051)]TJ/F67 9.9626 Tf 235.804 0 Td [(psb)]TJ +/F231 8.9664 Tf 543.974 755.197 Td [(val)]TJ ET q -1 0 0 1 427.733 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 623.888 751.91 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 430.872 227.002 Td [(T)]TJ +/F84 7.1731 Tf 630.089 755.197 Td [(D)-62(E)-62(F)12(A)-62(U)-62(L)13(T)]TJ ET q -1 0 0 1 436.73 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 709.544 751.91 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 439.868 227.002 Td [(base)]TJ +/F84 7.1731 Tf 715.745 755.197 Td [(C)-62(O)-62(M)-61(M)-62(E)-61(N)-62(T)-62(S)]TJ ET q -1 0 0 1 461.417 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 911.42 751.91 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S +Q +q +1 0 0 1 329.467 751.71 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 329.467 729.593 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 464.555 227.002 Td [(vect)]TJ +/F231 8.9664 Tf 335.444 743.84 Td [(\015SUB_FILLIN\015)]TJ +0 g 0 G ET q -1 0 0 1 486.104 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 432.13 729.593 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F67 9.9626 Tf 489.242 227.002 Td [(type)]TJ/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -359.459 -24.085 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.816 Td [(prec)]TJ +/F231 8.9664 Tf 438.108 743.84 Td [(integer)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econdtioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 193.612 0 Td [(psb)]TJ ET q -1 0 0 1 385.542 132.48 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 538.231 729.593 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 388.68 132.281 Td [(prec)]TJ +/F84 8.9664 Tf 543.859 743.84 Td [(Any)-250(integer)]TJ 0.35 -10.959 Td [(number)]TJ/F179 9.343 Tf 33.691 0 Td [(\025)]TJ/F84 8.9664 Tf 9.865 0 Td [(0)]TJ ET q -1 0 0 1 410.229 132.48 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 623.888 729.593 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 413.367 132.281 Td [(type)]TJ -0 g 0 G -0 g 0 G -/F62 9.9626 Tf -98.279 -41.843 Td [(152)]TJ -0 g 0 G +/F84 8.9664 Tf 629.865 743.84 Td [(0)]TJ ET - -endstream +q +1 0 0 1 709.544 729.593 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 0.98 0 0 1 715.521 743.84 Tm [(Fill-in)-207(level)]TJ/F78 8.9664 Tf 1 0 0 1 761.42 743.84 Tm [(p)]TJ/F84 8.9664 Tf 0.98 0 0 1 767.837 743.84 Tm [(of)-207(the)-208(incomplete)-207(LU)-207(factorizations.)]TJ +ET +q +1 0 0 1 911.42 729.593 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +q +1 0 0 1 329.467 729.394 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 329.467 707.277 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 335.444 721.524 Td [(\015SUB_ILUTHRS\015)]TJ +0 g 0 G +ET +q +1 0 0 1 432.13 707.277 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +BT +/F231 8.9664 Tf 438.108 721.524 Td [(real)]TJ +0 g 0 G + [(\050kind_parameter\051)]TJ +ET +q +1 0 0 1 538.231 707.277 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 1.02 0 0 1 543.859 721.524 Tm [(Any)-1148(r)18(eal)-1148(num-)]TJ 1 0 0 1 544.209 710.565 Tm [(ber)]TJ/F179 9.343 Tf 15.148 0 Td [(\025)]TJ/F84 8.9664 Tf 9.866 0 Td [(0)]TJ +ET +q +1 0 0 1 623.888 707.277 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 629.865 721.524 Td [(0)]TJ +ET +q +1 0 0 1 709.544 707.277 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 715.521 721.524 Td [(Dr)18(op)-250(tolerance)]TJ/F78 8.9664 Tf 61.442 0 Td [(t)]TJ/F84 8.9664 Tf 5.339 0 Td [(in)-250(the)-250(ILU\050)]TJ/F78 8.9664 Tf 43.814 0 Td [(p)]TJ/F84 8.9664 Tf 4.595 0 Td [(,)]TJ/F78 8.9664 Tf 3.848 0 Td [(t)]TJ/F84 8.9664 Tf 3.098 0 Td [(\051)-250(factorization.)]TJ +ET +q +1 0 0 1 911.42 707.277 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +q +1 0 0 1 329.467 707.078 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 329.467 705.085 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +0 g 0 G +BT +/F84 9.9626 Tf 398.01 676.707 Td [(T)92(able)-250(22:)-310(Parameters)-250(de\002ning)-250(the)-250(smoother)-250(or)-250(the)-250(details)-250(of)-250(the)-250(one-level)-250(pr)18(econditioner)-250(\050continued\051.)]TJ +0 g 0 G +0 g 0 G +ET +1 0 0 1 322.56 716.092 cm +Q +0 g 0 G +0 g 0 G +1 0 0 1 -322.56 -716.092 cm +BT +/F84 9.9626 Tf 315.088 90.438 Td [(154)]TJ +0 g 0 G +ET + +endstream +endobj +1999 0 obj +<< +/Length 7657 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(10.3)-1000(build)-250(\227)-250(Builds)-250(a)-250(preconditioner)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf 0 -20.364 Td [(call)-525(prec%build\050a,)-525(desc_a,)-525(info[,amold,vmold,imold]\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -24.086 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -22.815 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.816 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(system)-250(sparse)-250(matrix.)-310(Scope:)]TJ/F75 9.9626 Tf 146.23 0 Td [(local)]TJ/F84 9.9626 Tf -131.595 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(sparse)-250(matrix)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 190.872 0 Td [(psb)]TJ +ET +q +1 0 0 1 331.993 580.382 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 335.131 580.183 Td [(Tspmat)]TJ +ET +q +1 0 0 1 367.141 580.382 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 370.279 580.183 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -291.305 -22.815 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 509.547 Tm [(Speci\002ed)-194(as:)-286(an)-193(alr)18(eady)-194(initialized)-194(pr)19(econdtioner)-194(data)-194(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 1 0 0 1 396.852 509.547 Tm [(psb)]TJ +ET +q +1 0 0 1 413.17 509.746 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 416.309 509.547 Td [(prec)]TJ +ET +q +1 0 0 1 437.858 509.746 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 440.996 509.547 Td [(type)]TJ +0 g 0 G +0 g 0 G +/F75 9.9626 Tf -341.101 -34.771 Td [(desc)]TJ +ET +q +1 0 0 1 120.408 474.975 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 123.397 474.776 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(descriptor)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 247.648 0 Td [(psb)]TJ +ET +q +1 0 0 1 388.769 439.11 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 391.907 438.911 Td [(desc)]TJ +ET +q +1 0 0 1 413.456 439.11 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 416.594 438.911 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -337.621 -22.816 Td [(amold)]TJ +0 g 0 G +/F84 9.9626 Tf 33.455 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -8.548 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ +ET +q +1 0 0 1 342.513 368.474 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 345.652 368.275 Td [(T)]TJ +ET +q +1 0 0 1 351.51 368.474 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 354.648 368.275 Td [(base)]TJ +ET +q +1 0 0 1 376.197 368.474 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 379.335 368.275 Td [(sparse)]TJ +ET +q +1 0 0 1 411.345 368.474 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 414.483 368.275 Td [(mat)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -330.279 -22.816 Td [(vmold)]TJ +0 g 0 G +/F84 9.9626 Tf 34.013 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -9.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ +ET +q +1 0 0 1 342.513 297.838 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 345.652 297.638 Td [(T)]TJ +ET +q +1 0 0 1 351.51 297.838 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 354.648 297.638 Td [(base)]TJ +ET +q +1 0 0 1 376.197 297.838 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 379.335 297.638 Td [(vect)]TJ +ET +q +1 0 0 1 400.884 297.838 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 404.022 297.638 Td [(type)]TJ/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -325.049 -22.815 Td [(imold)]TJ +0 g 0 G +/F84 9.9626 Tf 31.791 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(integer)-250(vector)-250(storage.)]TJ -6.884 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 227.002 Tm [(Speci\002ed)-194(as:)-286(an)-193(object)-194(of)-194(a)-194(class)-194(derived)-194(fr)19(om)-194(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 356.282 227.002 Tm [(psb)]TJ +ET +q +1 0 0 1 372.601 227.202 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 375.739 227.002 Td [(T)]TJ +ET +q +1 0 0 1 381.597 227.202 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 384.735 227.002 Td [(base)]TJ +ET +q +1 0 0 1 406.284 227.202 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 409.422 227.002 Td [(vect)]TJ +ET +q +1 0 0 1 430.971 227.202 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 434.11 227.002 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 455.031 227.002 Tm [(.)]TJ +0 g 0 G +/F75 9.9626 Tf 1 0 0 1 99.895 202.917 Tm [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -22.816 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econdtioner)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 193.612 0 Td [(psb)]TJ +ET +q +1 0 0 1 334.732 132.48 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 337.871 132.281 Td [(prec)]TJ +ET +q +1 0 0 1 359.42 132.48 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.558 132.281 Td [(type)]TJ +0 g 0 G +0 g 0 G +/F84 9.9626 Tf -98.279 -41.843 Td [(155)]TJ +0 g 0 G +ET + +endstream endobj -1983 0 obj +2003 0 obj << -/Length 1021 +/Length 1133 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ -24.907 -21.918 Td [(The)]TJ/F67 9.9626 Tf 20.388 0 Td [(amold)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)]TJ/F67 9.9626 Tf 6.506 0 Td [(vmold)]TJ/F62 9.9626 Tf 29.862 0 Td [(and)]TJ/F67 9.9626 Tf 20.577 0 Td [(imold)]TJ/F62 9.9626 Tf 29.862 0 Td [(ar)18(guments)-372(may)-373(be)-372(employed)-373(to)-372(interface)-372(with)]TJ -133.347 -11.955 Td [(special)-250(devices,)-250(such)-250(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 1.02 0 0 1 150.396 636.39 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 170.746 636.39 Tm [(amold)]TJ/F84 9.9626 Tf 1.02 0 0 1 196.898 636.39 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 202.989 636.39 Tm [(vmold)]TJ/F84 9.9626 Tf 1.02 0 0 1 232.48 636.39 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 253.023 636.39 Tm [(imold)]TJ/F84 9.9626 Tf 1.02 0 0 1 282.514 636.39 Tm [(ar)18(guments)-329(may)-328(be)-329(employed)-329(to)-328(interface)-329(with)]TJ 1 0 0 1 150.705 624.435 Tm [(special)-250(devices,)-250(such)-250(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ 0 g 0 G - 164.384 -533.997 Td [(153)]TJ + 164.383 -533.997 Td [(156)]TJ 0 g 0 G ET endstream endobj -1991 0 obj +2011 0 obj << -/Length 5673 +/Length 5674 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(10.3)-1000(apply)-250(\227)-250(Preconditioner)-250(application)-250(routine)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(10.4)-1000(apply)-250(\227)-250(Preconditioner)-250(application)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%apply\050x,y,desc_a,info,trans,work\051)]TJ 0 -11.955 Td [(call)-525(prec%apply\050x,desc_a,info,trans\051)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%apply\050x,y,desc_a,info,trans,work\051)]TJ 0 -11.955 Td [(call)-525(prec%apply\050x,desc_a,info,trans\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 117.837 0 Td [(local)]TJ/F62 9.9626 Tf -117.279 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.836 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 388.441 577.775 cm +1 0 0 1 337.631 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 391.579 577.576 Td [(prec)]TJ +/F131 9.9626 Tf 340.77 577.576 Td [(prec)]TJ ET q -1 0 0 1 413.128 577.775 cm +1 0 0 1 362.319 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 416.266 577.576 Td [(type)]TJ +/F131 9.9626 Tf 365.457 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(x)]TJ +/F75 9.9626 Tf -286.483 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(sour)18(ce)-250(vector)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 111.142 0 Td [(local)]TJ/F62 9.9626 Tf -96.198 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sour)18(ce)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 111.142 0 Td [(local)]TJ/F84 9.9626 Tf -96.507 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 521.985 cm +1 0 0 1 359.808 521.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 413.756 521.785 Td [(T)]TJ +/F131 9.9626 Tf 362.947 521.785 Td [(T)]TJ ET q -1 0 0 1 419.614 521.985 cm +1 0 0 1 368.804 521.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.752 521.785 Td [(vect)]TJ +/F131 9.9626 Tf 371.943 521.785 Td [(vect)]TJ ET q -1 0 0 1 444.301 521.985 cm +1 0 0 1 393.492 521.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 447.439 521.785 Td [(type)]TJ +/F131 9.9626 Tf 396.63 521.785 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.656 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -317.656 -19.925 Td [(desc)]TJ ET q -1 0 0 1 171.218 502.059 cm +1 0 0 1 120.408 502.059 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 501.86 Td [(a)]TJ +/F75 9.9626 Tf 123.397 501.86 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 208.625 0 Td [(local)]TJ/F62 9.9626 Tf -217.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 200.207 0 Td [(psb)]TJ +/F131 9.9626 Tf 200.207 0 Td [(psb)]TJ ET q -1 0 0 1 392.137 466.194 cm +1 0 0 1 341.328 466.194 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 395.275 465.994 Td [(desc)]TJ +/F131 9.9626 Tf 344.466 465.994 Td [(desc)]TJ ET q -1 0 0 1 416.824 466.194 cm +1 0 0 1 366.015 466.194 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 419.963 465.994 Td [(type)]TJ +/F131 9.9626 Tf 369.153 465.994 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -290.179 -19.925 Td [(trans)]TJ +/F75 9.9626 Tf -290.179 -19.925 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(Scope:)]TJ -2.76 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)74(.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(Scope:)]TJ -3.068 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(work)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(an)-250(optional)-250(work)-250(space)-250(Scope:)]TJ/F59 9.9626 Tf 136.476 0 Td [(local)]TJ/F62 9.9626 Tf -140.352 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(double)-250(pr)18(ecision)-250(array)111(.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(an)-250(optional)-250(work)-250(space)-250(Scope:)]TJ/F75 9.9626 Tf 136.477 0 Td [(local)]TJ/F84 9.9626 Tf -140.661 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(double)-250(pr)18(ecision)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(destination)-250(vector)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 131.914 0 Td [(local)]TJ/F62 9.9626 Tf -117.528 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(destination)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 131.913 0 Td [(local)]TJ/F84 9.9626 Tf -117.836 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 276.904 cm +1 0 0 1 359.808 276.904 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 413.756 276.704 Td [(T)]TJ +/F131 9.9626 Tf 362.947 276.704 Td [(T)]TJ ET q -1 0 0 1 419.614 276.904 cm +1 0 0 1 368.804 276.904 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.752 276.704 Td [(vect)]TJ +/F131 9.9626 Tf 371.943 276.704 Td [(vect)]TJ ET q -1 0 0 1 444.301 276.904 cm +1 0 0 1 393.492 276.904 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 447.439 276.704 Td [(type)]TJ +/F131 9.9626 Tf 396.63 276.704 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.656 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -317.656 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.477 -118.52 Td [(154)]TJ + 139.866 -118.52 Td [(157)]TJ 0 g 0 G ET endstream endobj -1996 0 obj +2017 0 obj << -/Length 3387 +/Length 3489 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(10.4)-1000(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(current)-250(preconditioner)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.5)-1000(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(current)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%descr\050info\051)]TJ 0 -11.955 Td [(call)-525(prec%descr\050info,iout,)-525(root\051)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%descr\050info\051)]TJ 0 -11.955 Td [(call)-525(prec%descr\050info,iout,)-525(root\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 117.836 0 Td [(local)]TJ/F62 9.9626 Tf -117.278 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.837 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 337.631 577.775 cm +1 0 0 1 388.441 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 340.77 577.576 Td [(prec)]TJ +/F131 9.9626 Tf 391.579 577.576 Td [(prec)]TJ ET q -1 0 0 1 362.319 577.775 cm +1 0 0 1 413.128 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 365.457 577.576 Td [(type)]TJ +/F131 9.9626 Tf 416.266 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(iout)]TJ +/F75 9.9626 Tf -286.483 -19.925 Td [(iout)]TJ 0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(output)-250(unit.)-310(Scope:)]TJ/F59 9.9626 Tf 87.391 0 Td [(local)]TJ/F62 9.9626 Tf -85.727 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(number)74(.)-310(Default:)-310(default)-250(output)-250(unit.)]TJ +/F84 9.9626 Tf 23.243 0 Td [(output)-250(unit.)-310(Scope:)]TJ/F75 9.9626 Tf 87.39 0 Td [(local)]TJ/F84 9.9626 Tf -86.035 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(number)74(.)-310(Default:)-310(default)-250(output)-250(unit.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(root)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-250(fr)18(om)-250(which)-250(to)-250(print)-250(Scope:)]TJ/F59 9.9626 Tf 155.834 0 Td [(local)]TJ/F62 9.9626 Tf -154.18 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-387(as:)-585(an)-387(integer)-387(number)-388(between)-387(0)-387(and)]TJ/F60 9.9626 Tf 220.442 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 14.01 0 Td [(\000)]TJ/F62 9.9626 Tf 10.638 0 Td [(1,)-422(in)-387(which)-387(case)]TJ -245.09 -11.955 Td [(the)-314(speci\002e)1(d)-314(pr)18(ocess)-314(will)-313(print)-314(the)-313(description,)-330(or)]TJ/F91 10.3811 Tf 225.38 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1,)-329(in)-314(which)-314(case)-313(all)]TJ -233.574 -11.955 Td [(pr)18(ocesses)-250(will)-250(print.)-310(Default:)-310(0.)]TJ +/F84 9.9626 Tf 23.252 0 Td [(Pr)18(ocess)-250(fr)18(om)-250(which)-250(to)-250(print)-250(Scope:)]TJ/F75 9.9626 Tf 155.834 0 Td [(local)]TJ/F84 9.9626 Tf -154.488 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 465.994 Tm [(Speci\002ed)-342(as:)-498(an)-341(integer)-342(number)-342(between)-342(0)-342(and)]TJ/F78 9.9626 Tf 1 0 0 1 396.349 465.994 Tm [(n)-80(p)]TJ/F179 10.3811 Tf 13.868 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 420.713 465.994 Tm [(1,)-366(in)-342(which)-342(case)]TJ 1.02 0 0 1 175.611 454.039 Tm [(the)-264(speci\002ed)-265(pr)18(ocess)-265(will)-264(print)-264(the)-265(description,)-269(or)]TJ/F179 10.3811 Tf 1 0 0 1 401.395 454.039 Tm [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 409.589 454.039 Tm [(1,)-269(in)-265(which)-264(case)-265(all)]TJ 1 0 0 1 175.313 442.084 Tm [(pr)18(ocesses)-250(will)-250(print.)-310(Default:)-310(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.608 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.477 -263.975 Td [(155)]TJ + 139.865 -263.975 Td [(158)]TJ 0 g 0 G ET endstream endobj -2000 0 obj +2021 0 obj << /Length 973 >> @@ -27044,508 +27463,310 @@ stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(10.5)-1000(clone)-250(\227)-250(clone)-250(current)-250(preconditioner)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(10.6)-1000(clone)-250(\227)-250(clone)-250(current)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-1050(prec%clone\050precout,info\051)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-1050(prec%clone\050precout,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.873 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -33.873 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(precout)]TJ 0 g 0 G -/F62 9.9626 Tf 39.292 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ +/F84 9.9626 Tf 38.904 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -/F59 9.9626 Tf -39.292 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -38.904 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ 0 g 0 G - 140.583 -449.28 Td [(156)]TJ + 140.583 -449.28 Td [(159)]TJ 0 g 0 G ET endstream endobj -2006 0 obj +2027 0 obj << -/Length 2703 +/Length 2713 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(10.6)-1000(free)-250(\227)-250(Free)-250(a)-250(preconditioner)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.7)-1000(free)-250(\227)-250(Free)-250(a)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%free\050info\051)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%free\050info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 337.631 577.775 cm +1 0 0 1 388.441 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 340.77 577.576 Td [(prec)]TJ +/F131 9.9626 Tf 391.579 577.576 Td [(prec)]TJ ET q -1 0 0 1 362.319 577.775 cm +1 0 0 1 413.128 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 365.457 577.576 Td [(type)]TJ +/F131 9.9626 Tf 416.266 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(On)-250(Exit)]TJ +/F75 9.9626 Tf -286.483 -19.925 Td [(On)-250(Exit)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -30.874 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.182 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 337.631 502.059 cm +1 0 0 1 388.441 502.059 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 340.77 501.86 Td [(prec)]TJ +/F131 9.9626 Tf 391.579 501.86 Td [(prec)]TJ ET q -1 0 0 1 362.319 502.059 cm +1 0 0 1 413.128 502.059 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 365.457 501.86 Td [(type)]TJ +/F131 9.9626 Tf 416.266 501.86 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -286.483 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -30.326 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ/F62 9.9626 Tf 34.363 0 Td [(Releases)-250(all)-250(internal)-250(storage.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -30.634 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F75 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ/F84 9.9626 Tf 34.363 0 Td [(Releases)-250(all)-250(internal)-250(storage.)]TJ 0 g 0 G - 130.021 -333.713 Td [(157)]TJ + 130.02 -333.713 Td [(160)]TJ 0 g 0 G ET endstream endobj -2011 0 obj +2031 0 obj << -/Length 534 +/Length 607 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F62 9.9626 Tf 0 -22.702 Td [(In)-253(this)-252(chapter)-253(we)-252(pr)18(ovide)-253(r)18(outines)-253(for)-252(pr)18(econditioners)-253(and)-253(iterative)-252(methods.)]TJ 0 -11.955 Td [(The)-190(interfaces)-190(for)-190(iterative)-190(methods)-190(ar)18(e)-190(available)-190(in)-190(the)-190(module)]TJ/F67 9.9626 Tf 274.995 0 Td [(psb_linsolve_mod)]TJ/F62 9.9626 Tf 83.686 0 Td [(.)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F84 9.9626 Tf 1.006 0 0 1 99.895 683.082 Tm [(In)-249(this)-250(chapter)-249(we)-250(pr)18(ovide)-249(r)18(outines)-250(for)-249(pr)18(econditioners)-250(and)-249(iterative)-249(methods.)]TJ 0.98 0 0 1 99.587 671.127 Tm [(The)-194(interfaces)-194(for)-194(it)1(erative)-194(methods)-194(ar)18(e)-194(available)-194(in)-193(the)-194(module)]TJ/F131 9.9626 Tf 1 0 0 1 369.457 671.127 Tm [(psb_linsolve_mod)]TJ/F84 9.9626 Tf 0.98 0 0 1 453.142 671.127 Tm [(.)]TJ 0 g 0 G - -194.298 -580.689 Td [(158)]TJ + 1 0 0 1 264.279 90.438 Tm [(161)]TJ 0 g 0 G ET endstream endobj -2018 0 obj +2038 0 obj << -/Length 8246 +/Length 8466 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(11.1)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(11.1)-1000(psb)]TJ ET q -1 0 0 1 153.407 706.328 cm +1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-266(subr)18(outine)-266(is)-267(a)-266(driver)-266(that)-267(p)1(r)18(ovides)-267(a)-266(general)-266(interface)-266(for)-267(all)-266(the)-266(Krylov-)]TJ 0 -11.955 Td [(Subspace)-250(family)-250(methods)-250(implemented)-250(in)-250(PSBLAS)-250(version)-250(2.)]TJ 14.944 -11.955 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf 1.013 0 0 1 150.396 687.165 Tm [(This)-247(subr)18(outine)-247(is)-248(a)-247(driver)-247(that)-247(pr)18(ovides)-247(a)-247(general)-247(interface)-248(for)-247(all)-247(the)-247(Krylov-)]TJ 1 0 0 1 150.705 675.21 Tm [(Subspace)-250(family)-250(methods)-250(implemented)-250(in)-250(PSBLAS)-250(version)-250(2.)]TJ 14.944 -11.955 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -18.774 Td [(1)]TJ +/F75 9.9626 Tf -14.944 -18.774 Td [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(normwise)-222(backwar)18(d)-221(err)18(or)-222(in)-221(the)-222(in\002nity)-222(norm;)-231(the)-221(iteration)-222(is)-222(stopped)-221(when)]TJ/F60 9.9626 Tf 109.036 -26.864 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 40.62 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 0.99 0 0 1 160.667 644.481 Tm [(normwise)-253(backwar)19(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 269.703 617.617 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 246.191 620.108 cm +1 0 0 1 297.001 620.108 cm []0 d 0 J 0.398 w 0 0 m 74.372 0 l S Q BT -/F93 10.3811 Tf 246.316 610.783 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F60 9.9626 Tf 5.938 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F60 9.9626 Tf 11.048 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(k)]TJ/F93 10.3811 Tf 7.376 0 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(k)]TJ/F60 9.9626 Tf 5.44 0 Td [(b)]TJ/F91 10.3811 Tf 4.861 0 Td [(k)]TJ/F93 10.3811 Tf 5.44 0 Td [(\051)]TJ/F69 10.3811 Tf 8.236 6.834 Td [(<)]TJ/F60 9.9626 Tf 11.087 0 Td [(e)-80(p)-25(s)]TJ +/F181 10.3811 Tf 297.125 610.783 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.377 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F181 10.3811 Tf 5.439 0 Td [(\051)]TJ/F134 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F59 9.9626 Tf -235.842 -29.908 Td [(2)]TJ +/F75 9.9626 Tf -235.841 -29.908 Td [(2)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 136.209 -26.865 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 273.365 563.335 cm +1 0 0 1 324.174 563.335 cm []0 d 0 J 0.398 w 0 0 m 20.025 0 l S Q BT -/F91 10.3811 Tf 273.49 554.01 Td [(k)]TJ/F60 9.9626 Tf 5.439 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +/F179 10.3811 Tf 324.299 554.01 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F59 9.9626 Tf -208.668 -29.848 Td [(3)]TJ +/F75 9.9626 Tf -208.667 -29.848 Td [(3)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 134.486 -26.865 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 15.17 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 15.169 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 271.641 506.622 cm +1 0 0 1 322.451 506.622 cm []0 d 0 J 0.398 w 0 0 m 23.472 0 l S Q BT -/F91 10.3811 Tf 271.766 497.297 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F62 7.5716 Tf 4 -1.744 Td [(0)]TJ/F91 10.3811 Tf 4.408 1.744 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F62 9.9626 Tf -210.391 -29.848 Td [(The)-248(behaviour)-248(is)-248(contr)18(olled)-249(by)-248(the)-248(istop)-248(ar)18(gument)-248(\050see)-248(later\051.)-310(In)-248(the)-248(above)-248(for)18(-)]TJ 0 -11.956 Td [(mulae,)]TJ/F60 9.9626 Tf 32.81 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(is)-256(the)-256(tentative)-257(soluti)1(on)-257(and)]TJ/F60 9.9626 Tf 125.144 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F93 10.3811 Tf 5.757 1.96 Td [(=)]TJ/F60 9.9626 Tf 11.2 0 Td [(b)]TJ/F91 10.3811 Tf 6.822 0 Td [(\000)]TJ/F60 9.9626 Tf 10.777 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(the)-256(corr)18(esponding)-256(r)18(esidual)]TJ -225.064 -11.955 Td [(at)-250(the)]TJ/F60 9.9626 Tf 27.083 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.305 -17.357 Td [(c)-175(a)-175(l)-174(l)-880(p)-105(s)-105(b)]TJ +/F179 10.3811 Tf 322.575 497.297 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 474.283 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 150.705 462.327 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 194.836 462.327 Tm [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 204.675 462.327 Tm [(is)-199(the)-199(tentative)-198(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 324.514 462.327 Tm [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.642 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 379.269 462.327 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 150.705 450.372 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -17.357 Td [(c)-175(a)-175(l)-174(l)-880(p)-105(s)-105(b)]TJ ET q -1 0 0 1 150.28 433.215 cm +1 0 0 1 201.089 433.215 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 154.313 433.015 Td [(k)-105(r)-105(y)-104(l)-105(o)-105(v)-238(\050)-156(m)-21(e)-22(t)-21(h)-22(o)-22(d)-218(,)-208(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +/F84 9.9626 Tf 205.122 433.015 Td [(k)-105(r)-105(y)-105(l)-104(o)-105(v)-238(\050)-156(m)-21(e)-22(t)-22(h)-21(o)-22(d)-218(,)-208(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ ET q -1 0 0 1 352.02 433.215 cm +1 0 0 1 402.829 433.215 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 355.983 433.015 Td [(a)-370(,)-283(i)-108(n)-108(f)-108(o)-274(,)-57(&)]TJ -227.086 -11.955 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-336(i)-161(r)-160(s)-161(t)-496(,)-291(i)-116(s)-116(t)-116(o)-116(p)-407(,)-219(c)-43(o)-43(n)-44(d)-177(\051)]TJ +/F84 9.9626 Tf 406.792 433.015 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -227.086 -11.955 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-336(i)-161(r)-160(s)-161(t)-496(,)-291(i)-116(s)-116(t)-116(o)-116(p)-407(,)-219(c)-43(o)-44(n)-43(d)-177(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -29.002 -25.88 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -29.001 -25.88 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.349 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.349 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.349 Td [(method)]TJ 0 g 0 G -/F62 9.9626 Tf 39.851 0 Td [(a)-193(string)-194(that)-193(de\002nes)-194(the)-194(it)1(erative)-194(method)-193(to)-194(be)-194(use)1(d.)-292(Supported)-193(values)]TJ -14.944 -11.956 Td [(ar)18(e:)]TJ +/F84 9.9626 Tf 0.98 0 0 1 190.555 356.482 Tm [(a)-253(string)-254(that)-253(de\002nes)-253(the)-253(iterative)-254(method)-253(to)-253(be)-254(used.)-315(Supported)-254(values)]TJ 1 0 0 1 175.611 344.526 Tm [(ar)18(e:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.349 Td [(CG:)]TJ +/F75 9.9626 Tf 0 -19.349 Td [(CG:)]TJ 0 g 0 G -/F62 9.9626 Tf 22.964 0 Td [(the)-250(Conjugate)-250(Gradient)-250(method;)]TJ +/F84 9.9626 Tf 22.964 0 Td [(the)-250(Conjugate)-250(Gradient)-250(method;)]TJ 0 g 0 G -/F59 9.9626 Tf -22.964 -15.364 Td [(CGS:)]TJ +/F75 9.9626 Tf -22.964 -15.364 Td [(CGS:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.051 0 Td [(the)-250(Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ +/F84 9.9626 Tf 29.051 0 Td [(the)-250(Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ 0 g 0 G -/F59 9.9626 Tf -29.051 -15.365 Td [(GCR:)]TJ +/F75 9.9626 Tf -29.051 -15.365 Td [(GCR:)]TJ 0 g 0 G -/F62 9.9626 Tf 30.157 0 Td [(the)-250(Generalized)-250(Conjugate)-250(Residual)-250(method;)]TJ +/F84 9.9626 Tf 30.157 0 Td [(the)-250(Generalized)-250(Conjugate)-250(Residual)-250(method;)]TJ 0 g 0 G -/F59 9.9626 Tf -30.157 -15.364 Td [(FCG:)]TJ +/F75 9.9626 Tf -30.157 -15.364 Td [(FCG:)]TJ 0 g 0 G -/F62 9.9626 Tf 28.503 0 Td [(the)-250(Flexible)-250(Conjugate)-250(Gradient)-250(method)]TJ +/F84 9.9626 Tf 28.503 0 Td [(the)-250(Flexible)-250(Conjugate)-250(Gradient)-250(method)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 176.854 3.616 Td [(5)]TJ +/F84 7.5716 Tf 176.855 3.616 Td [(5)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.616 Td [(;)]TJ +/F84 9.9626 Tf 4.284 -3.616 Td [(;)]TJ 0 g 0 G -/F59 9.9626 Tf -209.641 -15.364 Td [(BICG:)]TJ +/F75 9.9626 Tf -209.642 -15.364 Td [(BICG:)]TJ 0 g 0 G -/F62 9.9626 Tf 33.484 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(method;)]TJ +/F84 9.9626 Tf 33.485 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(method;)]TJ 0 g 0 G -/F59 9.9626 Tf -33.484 -15.365 Td [(BICGST)92(AB:)]TJ +/F75 9.9626 Tf -33.485 -15.365 Td [(BICGST)92(AB:)]TJ 0 g 0 G -/F62 9.9626 Tf 59.696 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ +/F84 9.9626 Tf 59.696 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ 0 g 0 G -/F59 9.9626 Tf -59.696 -15.364 Td [(BICGST)92(ABL:)]TJ +/F75 9.9626 Tf -59.696 -15.364 Td [(BICGST)92(ABL:)]TJ 0 g 0 G -/F62 9.9626 Tf 65.783 0 Td [(the)-218(Bi-Conjugate)-217(Gradient)-218(Stabilized)-218(method)-217(with)-218(r)18(estart-)]TJ -43.865 -11.955 Td [(ing;)]TJ +/F84 9.9626 Tf 0.999 0 0 1 241.394 232.991 Tm [(the)-250(Bi-Conjugate)-249(Gradient)-250(Stabilized)-250(metho)1(d)-250(with)-250(r)18(estart-)]TJ 1 0 0 1 197.529 221.036 Tm [(ing;)]TJ 0 g 0 G -/F59 9.9626 Tf -21.918 -15.365 Td [(RGMRES:)]TJ +/F75 9.9626 Tf -21.918 -15.365 Td [(RGMRES:)]TJ 0 g 0 G -/F62 9.9626 Tf 52.294 0 Td [(the)-250(Generalized)-250(Minimal)-250(Residual)-250(method)-250(with)-250(r)18(estarting.)]TJ +/F84 9.9626 Tf 52.294 0 Td [(the)-250(Generalized)-250(Minimal)-250(Residual)-250(method)-250(with)-250(r)18(estarting.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.201 -19.349 Td [(a)]TJ +/F75 9.9626 Tf -77.2 -19.349 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 178.414 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -170.787 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 138.701 cm +1 0 0 1 360.068 138.701 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 138.501 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 138.501 Td [(Tspmat)]TJ ET q -1 0 0 1 344.406 138.701 cm +1 0 0 1 395.216 138.701 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 138.501 Td [(type)]TJ +/F131 9.9626 Tf 398.354 138.501 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G ET q -1 0 0 1 99.895 130.091 cm +1 0 0 1 150.705 130.091 cm []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 123.219 Td [(5)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(Note:)-310(the)-250(implementation)-250(is)-250(for)]TJ/F60 7.9701 Tf 113.297 0 Td [(F)-31(C)-45(G)]TJ/F93 8.3049 Tf 16.387 0 Td [(\050)]TJ/F62 7.9701 Tf 3.319 0 Td [(1)]TJ/F93 8.3049 Tf 4.085 0 Td [(\051)]TJ/F62 7.9701 Tf 3.32 0 Td [(.)]TJ +/F84 5.9776 Tf 161.564 123.219 Td [(5)]TJ/F84 7.9701 Tf 3.487 -2.893 Td [(Note:)-310(the)-250(implementation)-250(is)-250(for)]TJ/F78 7.9701 Tf 113.298 0 Td [(F)-31(C)-45(G)]TJ/F181 8.3049 Tf 16.386 0 Td [(\050)]TJ/F84 7.9701 Tf 3.32 0 Td [(1)]TJ/F181 8.3049 Tf 4.085 0 Td [(\051)]TJ/F84 7.9701 Tf 3.319 0 Td [(.)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 9.629 -29.888 Td [(159)]TJ +/F84 9.9626 Tf 9.629 -29.888 Td [(162)]TJ 0 g 0 G ET endstream endobj -2029 0 obj +1937 0 obj +<< +/Type /ObjStm +/N 100 +/First 973 +/Length 10890 +>> +stream +1932 0 1930 139 1934 284 525 342 1935 399 1936 456 1931 514 1941 609 1939 748 1943 891 +529 950 1944 1008 1945 1066 1940 1125 1948 1220 1946 1359 1950 1504 533 1562 1951 1619 1952 1677 +1947 1735 1955 1858 1953 1997 1957 2139 537 2198 1958 2256 1959 2315 1954 2374 1961 2497 1963 2615 +1960 2673 1965 2756 1967 2874 541 2933 1964 2991 1971 3086 1968 3234 1969 3381 1973 3529 545 3587 +1974 3644 1970 3702 1980 3824 1976 3981 1977 4128 1978 4275 1982 4422 549 4481 1979 4539 1985 4647 +1987 4765 1988 4823 1984 4881 1990 4990 1992 5108 1983 5167 1989 5227 1998 5337 1993 5503 1994 5648 +1995 5795 1996 5942 2000 6089 553 6147 1997 6204 2002 6299 2004 6417 2001 6476 2010 6571 2005 6737 +2006 6882 2007 7025 2008 7172 2012 7316 557 7374 2009 7431 2016 7526 2014 7665 2018 7810 561 7869 +2015 7927 2020 8049 2022 8167 565 8225 2019 8282 2026 8377 2023 8525 2024 8670 2028 8817 569 8876 +2025 8934 2030 9029 2032 9147 573 9205 2029 9262 2037 9357 2033 9505 2034 9655 2039 9800 577 9859 +% 1932 0 obj << -/Length 7054 +/Type /Page +/Contents 1933 0 R +/Resources 1931 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1938 0 R +/Annots [ 1930 0 R ] >> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 150.705 706.129 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 658.507 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 658.308 Td [(prec)]TJ -ET -q -1 0 0 1 384.755 658.507 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 387.893 658.308 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -258.11 -22.202 Td [(b)]TJ -0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ -ET -q -1 0 0 1 410.618 588.484 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 413.756 588.285 Td [(T)]TJ -ET -q -1 0 0 1 419.614 588.484 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 422.752 588.285 Td [(vect)]TJ -ET -q -1 0 0 1 444.301 588.484 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 447.439 588.285 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -317.656 -22.202 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(initial)-250(guess.)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.687 0 Td [(psb)]TJ -ET -q -1 0 0 1 410.618 518.461 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 413.756 518.262 Td [(T)]TJ -ET -q -1 0 0 1 419.614 518.461 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 422.752 518.262 Td [(vect)]TJ -ET -q -1 0 0 1 444.301 518.461 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 447.439 518.262 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -317.656 -22.203 Td [(eps)]TJ -0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.433 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.906 -22.203 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 426.236 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 174.207 426.036 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 378.415 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 378.216 Td [(desc)]TJ -ET -q -1 0 0 1 384.755 378.415 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 387.893 378.216 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -258.11 -22.203 Td [(itmax)]TJ -0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.529 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.569 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F93 10.3811 Tf 27.744 0 Td [(=)]TJ/F62 9.9626 Tf 10.961 0 Td [(1000.)]TJ -77.274 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F60 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 27.743 0 Td [(\025)]TJ/F62 9.9626 Tf 10.962 0 Td [(1.)]TJ -0 g 0 G -/F59 9.9626 Tf -205.961 -22.202 Td [(itrace)]TJ -0 g 0 G -/F62 9.9626 Tf 29.878 0 Td [(If)]TJ/F69 10.3811 Tf 11.007 0 Td [(>)]TJ/F62 9.9626 Tf 14.142 0 Td [(0)-422(print)-423(out)-422(an)-422(informational)-423(message)-422(about)-422(conver)18(gence)-423(every)]TJ/F60 9.9626 Tf -30.066 -11.955 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F62 9.9626 Tf 26.396 0 Td [(iterations.)-310(If)]TJ/F93 10.3811 Tf 56.313 0 Td [(=)]TJ/F62 9.9626 Tf 10.961 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -93.724 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F93 10.3811 Tf 26.796 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1.)]TJ -0 g 0 G -/F59 9.9626 Tf -109.553 -34.158 Td [(irst)]TJ -0 g 0 G -/F62 9.9626 Tf 19.915 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(r)18(estart)-250(parameter)74(.)]TJ 4.992 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(V)92(alues:)]TJ/F60 9.9626 Tf 34.613 0 Td [(i)-22(r)-35(s)-25(t)]TJ/F69 10.3811 Tf 17.671 0 Td [(>)]TJ/F62 9.9626 Tf 10.961 0 Td [(0.)-298(This)-214(is)-213(employed)-214(for)-213(the)-214(BiCGST)74(ABL)-214(or)-213(RGMRES)-214(meth-)]TJ -63.245 -11.955 Td [(ods,)-250(otherwise)-250(it)-250(is)-250(ignor)18(ed.)]TJ -0 g 0 G - 139.477 -29.888 Td [(160)]TJ -0 g 0 G -ET - -endstream -endobj -2034 0 obj -<< -/Length 4489 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(istop)]TJ -0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.759 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(V)92(alues:)-351(1:)-351(use)-271(the)-270(normwise)-271(backwar)18(d)-270(err)18(or)74(,)-276(2:)-351(use)-271(the)-270(scaled)-271(2-norm)-270(of)]TJ 0 -11.955 Td [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.926 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(computed)-250(solution.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ -ET -q -1 0 0 1 359.808 558.881 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 362.947 558.682 Td [(T)]TJ -ET -q -1 0 0 1 368.804 558.881 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 371.943 558.682 Td [(vect)]TJ -ET -q -1 0 0 1 393.492 558.881 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 396.63 558.682 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -317.656 -19.925 Td [(iter)]TJ -0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.434 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(err)]TJ -0 g 0 G -/F62 9.9626 Tf 17.714 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.193 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(cond)]TJ -0 g 0 G -/F62 9.9626 Tf 27.119 0 Td [(An)-210(esti)1(mate)-210(of)-210(the)-209(condition)-210(number)-209(of)-210(matrix)]TJ/F60 9.9626 Tf 204.999 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(;)-223(only)-210(available)-209(with)-210(the)]TJ/F60 9.9626 Tf -214.444 -11.956 Td [(C)-45(G)]TJ/F62 9.9626 Tf 17.001 0 Td [(method)-250(on)-250(r)18(eal)-250(data.)]TJ -17.086 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-249(as:)-310(a)-249(r)18(eal)-249(number)74(.)-310(A)-249(corr)18(ect)-250(r)18(esult)-249(will)-249(be)-249(gr)18(eater)-250(than)-249(or)-249(equal)]TJ 0 -11.955 Td [(to)-403(one;)-480(if)-403(speci\002ed)-403(for)-403(non-r)18(eal)-403(data,)-441(or)-403(an)-403(err)18(or)-403(occurr)18(ed,)-441(zer)18(o)-403(is)-403(r)18(e-)]TJ 0 -11.956 Td [(turned.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ -0 g 0 G - 139.477 -161.394 Td [(161)]TJ -0 g 0 G -ET - -endstream -endobj -1935 0 obj -<< -/Type /ObjStm -/N 100 -/First 972 -/Length 10999 ->> -stream -1927 0 1931 145 525 203 1932 260 1933 317 1928 375 1938 469 1936 608 1940 751 529 810 -1941 868 1942 926 1937 985 1945 1079 1943 1218 1947 1363 533 1421 1948 1478 1949 1536 1944 1594 -1952 1716 1950 1855 1954 1997 537 2056 1955 2114 1956 2173 1951 2232 1958 2354 1960 2472 1957 2530 -1962 2613 1964 2731 541 2790 1961 2848 1968 2942 1965 3090 1966 3237 1970 3385 545 3443 1971 3500 -1967 3558 1978 3678 1973 3844 1974 3989 1975 4135 1976 4282 1980 4429 549 4488 1977 4546 1982 4640 -1984 4758 1981 4816 1990 4910 1985 5076 1986 5221 1987 5364 1988 5510 1992 5654 553 5713 1989 5771 -1995 5865 1993 6004 1997 6149 557 6207 1994 6264 1999 6384 2001 6502 561 6561 1998 6619 2005 6713 -2002 6861 2003 7006 2007 7153 565 7211 2004 7268 2010 7362 2012 7480 569 7539 2009 7597 2017 7691 -2013 7839 2014 7988 2019 8133 573 8191 2020 8248 2021 8306 2022 8364 2023 8422 2016 8480 2028 8627 -2015 8793 2024 8940 2025 9084 2026 9228 2030 9373 2027 9432 2033 9579 2031 9718 2035 9862 2032 9920 -% 1927 0 obj +% 1930 0 obj << /Type /Annot /Subtype /Link @@ -27553,75 +27774,75 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1931 0 obj +% 1934 0 obj << -/D [1929 0 R /XYZ 98.895 753.953 null] +/D [1932 0 R /XYZ 98.895 753.953 null] >> % 525 0 obj << -/D [1929 0 R /XYZ 99.895 716.092 null] +/D [1932 0 R /XYZ 99.895 716.092 null] >> -% 1932 0 obj +% 1935 0 obj << -/D [1929 0 R /XYZ 99.895 678.98 null] +/D [1932 0 R /XYZ 99.895 678.98 null] >> -% 1933 0 obj +% 1936 0 obj << -/D [1929 0 R /XYZ 99.895 679.195 null] +/D [1932 0 R /XYZ 99.895 679.195 null] >> -% 1928 0 obj +% 1931 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1938 0 obj +% 1941 0 obj << /Type /Page -/Contents 1939 0 R -/Resources 1937 0 R +/Contents 1942 0 R +/Resources 1940 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1934 0 R -/Annots [ 1936 0 R ] +/Parent 1938 0 R +/Annots [ 1939 0 R ] >> -% 1936 0 obj +% 1939 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [352.526 426.323 428.58 438.383] +/Rect [352.77 426.323 428.824 438.383] /A << /S /GoTo /D (vdata) >> >> -% 1940 0 obj +% 1943 0 obj << -/D [1938 0 R /XYZ 149.705 753.953 null] +/D [1941 0 R /XYZ 149.705 753.953 null] >> % 529 0 obj << -/D [1938 0 R /XYZ 150.705 716.092 null] +/D [1941 0 R /XYZ 150.705 716.092 null] >> -% 1941 0 obj +% 1944 0 obj << -/D [1938 0 R /XYZ 150.705 678.98 null] +/D [1941 0 R /XYZ 150.705 678.98 null] >> -% 1942 0 obj +% 1945 0 obj << -/D [1938 0 R /XYZ 150.705 679.195 null] +/D [1941 0 R /XYZ 150.705 679.195 null] >> -% 1937 0 obj +% 1940 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1945 0 obj +% 1948 0 obj << /Type /Page -/Contents 1946 0 R -/Resources 1944 0 R +/Contents 1949 0 R +/Resources 1947 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1934 0 R -/Annots [ 1943 0 R ] +/Parent 1938 0 R +/Annots [ 1946 0 R ] >> -% 1943 0 obj +% 1946 0 obj << /Type /Annot /Subtype /Link @@ -27629,113 +27850,113 @@ stream /Rect [291.943 574.778 369.462 586.838] /A << /S /GoTo /D (spdata) >> >> -% 1947 0 obj +% 1950 0 obj << -/D [1945 0 R /XYZ 98.895 753.953 null] +/D [1948 0 R /XYZ 98.895 753.953 null] >> % 533 0 obj << -/D [1945 0 R /XYZ 99.895 716.092 null] +/D [1948 0 R /XYZ 99.895 716.092 null] >> -% 1948 0 obj +% 1951 0 obj << -/D [1945 0 R /XYZ 99.895 679.441 null] +/D [1948 0 R /XYZ 99.895 679.441 null] >> -% 1949 0 obj +% 1952 0 obj << -/D [1945 0 R /XYZ 99.895 679.657 null] +/D [1948 0 R /XYZ 99.895 679.657 null] >> -% 1944 0 obj +% 1947 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1022 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1952 0 obj +% 1955 0 obj << /Type /Page -/Contents 1953 0 R -/Resources 1951 0 R +/Contents 1956 0 R +/Resources 1954 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1934 0 R -/Annots [ 1950 0 R ] +/Parent 1938 0 R +/Annots [ 1953 0 R ] >> -% 1950 0 obj +% 1953 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [452.361 574.59 528.415 586.65] +/Rect [447.024 574.59 523.079 586.65] /A << /S /GoTo /D (vdata) >> >> -% 1954 0 obj +% 1957 0 obj << -/D [1952 0 R /XYZ 149.705 753.953 null] +/D [1955 0 R /XYZ 149.705 753.953 null] >> % 537 0 obj << -/D [1952 0 R /XYZ 150.705 716.092 null] +/D [1955 0 R /XYZ 150.705 716.092 null] >> -% 1955 0 obj +% 1958 0 obj << -/D [1952 0 R /XYZ 150.705 679.413 null] +/D [1955 0 R /XYZ 150.705 679.413 null] >> -% 1956 0 obj +% 1959 0 obj << -/D [1952 0 R /XYZ 150.705 679.628 null] +/D [1955 0 R /XYZ 150.705 679.628 null] >> -% 1951 0 obj +% 1954 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1022 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1958 0 obj +% 1961 0 obj << /Type /Page -/Contents 1959 0 R -/Resources 1957 0 R +/Contents 1962 0 R +/Resources 1960 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1934 0 R +/Parent 1938 0 R >> -% 1960 0 obj +% 1963 0 obj << -/D [1958 0 R /XYZ 98.895 753.953 null] +/D [1961 0 R /XYZ 98.895 753.953 null] >> -% 1957 0 obj +% 1960 0 obj << -/Font << /F102 1022 0 R /F62 671 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1962 0 obj +% 1965 0 obj << /Type /Page -/Contents 1963 0 R -/Resources 1961 0 R +/Contents 1966 0 R +/Resources 1964 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1934 0 R +/Parent 1938 0 R >> -% 1964 0 obj +% 1967 0 obj << -/D [1962 0 R /XYZ 149.705 753.953 null] +/D [1965 0 R /XYZ 149.705 753.953 null] >> % 541 0 obj << -/D [1962 0 R /XYZ 150.705 716.092 null] +/D [1965 0 R /XYZ 150.705 716.092 null] >> -% 1961 0 obj +% 1964 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1968 0 obj +% 1971 0 obj << /Type /Page -/Contents 1969 0 R -/Resources 1967 0 R +/Contents 1972 0 R +/Resources 1970 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1972 0 R -/Annots [ 1965 0 R 1966 0 R ] +/Parent 1975 0 R +/Annots [ 1968 0 R 1969 0 R ] >> -% 1965 0 obj +% 1968 0 obj << /Type /Annot /Subtype /Link @@ -27743,7 +27964,7 @@ stream /Rect [320.317 442.264 387.374 454.323] /A << /S /GoTo /D (precdata) >> >> -% 1966 0 obj +% 1969 0 obj << /Type /Annot /Subtype /Link @@ -27751,92 +27972,88 @@ stream /Rect [171.257 352.6 177.533 366.303] /A << /S /GoTo /D (Hfootnote.4) >> >> -% 1970 0 obj +% 1973 0 obj << -/D [1968 0 R /XYZ 98.895 753.953 null] +/D [1971 0 R /XYZ 98.895 753.953 null] >> % 545 0 obj << -/D [1968 0 R /XYZ 99.895 716.092 null] +/D [1971 0 R /XYZ 99.895 716.092 null] >> -% 1971 0 obj +% 1974 0 obj << -/D [1968 0 R /XYZ 114.242 129.79 null] +/D [1971 0 R /XYZ 114.242 129.79 null] >> -% 1967 0 obj +% 1970 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1978 0 obj +% 1980 0 obj << /Type /Page -/Contents 1979 0 R -/Resources 1977 0 R +/Contents 1981 0 R +/Resources 1979 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1972 0 R -/Annots [ 1973 0 R 1974 0 R 1975 0 R 1976 0 R ] +/Parent 1975 0 R +/Annots [ 1976 0 R 1977 0 R 1978 0 R ] >> -% 1973 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [365.487 576.377 443.006 588.437] -/A << /S /GoTo /D (spdata) >> ->> -% 1974 0 obj +% 1976 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [451.902 505.741 518.96 517.801] -/A << /S /GoTo /D (precdata) >> +/Rect [350.557 567.422 362.512 580.259] +/A << /S /GoTo /D (table.22) >> >> -% 1975 0 obj +% 1977 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [422.264 435.105 489.322 447.165] -/A << /S /GoTo /D (descdata) >> +/Rect [425.768 520.379 437.922 532.438] +/A << /S /GoTo /D (table.22) >> >> -% 1976 0 obj +% 1978 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.227 128.475 435.285 140.535] -/A << /S /GoTo /D (precdata) >> +/Rect [203.128 451.412 215.083 460.822] +/A << /S /GoTo /D (table.22) >> >> -% 1980 0 obj +% 1982 0 obj << -/D [1978 0 R /XYZ 149.705 753.953 null] +/D [1980 0 R /XYZ 149.705 753.953 null] >> % 549 0 obj << -/D [1978 0 R /XYZ 150.705 716.092 null] +/D [1980 0 R /XYZ 150.705 716.092 null] >> -% 1977 0 obj +% 1979 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1982 0 obj +% 1985 0 obj << /Type /Page -/Contents 1983 0 R -/Resources 1981 0 R +/Contents 1986 0 R +/Resources 1984 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1972 0 R +/Parent 1975 0 R >> -% 1984 0 obj +% 1987 0 obj +<< +/D [1985 0 R /XYZ 98.895 753.953 null] +>> +% 1988 0 obj << -/D [1982 0 R /XYZ 98.895 753.953 null] +/D [1985 0 R /XYZ 314.14 120.326 null] >> -% 1981 0 obj +% 1984 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R /F78 674 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> % 1990 0 obj @@ -27845,115 +28062,102 @@ stream /Contents 1991 0 R /Resources 1989 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1972 0 R -/Annots [ 1985 0 R 1986 0 R 1987 0 R 1988 0 R ] +/Parent 1975 0 R >> -% 1985 0 obj +% 1992 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 573.77 438.184 585.83] -/A << /S /GoTo /D (precdata) >> +/D [1990 0 R /XYZ 149.705 753.953 null] >> -% 1986 0 obj +% 1983 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 517.98 469.357 530.039] -/A << /S /GoTo /D (vdata) >> +/D [1990 0 R /XYZ -3779.305 719.08 null] >> -% 1987 0 obj +% 1989 0 obj +<< +/Font << /F231 1025 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1998 0 obj +<< +/Type /Page +/Contents 1999 0 R +/Resources 1997 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1975 0 R +/Annots [ 1993 0 R 1994 0 R 1995 0 R 1996 0 R ] +>> +% 1993 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.822 462.189 441.88 474.248] -/A << /S /GoTo /D (descdata) >> +/Rect [314.678 576.377 392.197 588.437] +/A << /S /GoTo /D (spdata) >> >> -% 1988 0 obj +% 1994 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 272.899 469.357 284.958] -/A << /S /GoTo /D (vdata) >> ->> -% 1992 0 obj -<< -/D [1990 0 R /XYZ 149.705 753.953 null] ->> -% 553 0 obj -<< -/D [1990 0 R /XYZ 150.705 716.092 null] ->> -% 1989 0 obj -<< -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> -/ProcSet [ /PDF /Text ] +/Rect [395.856 505.741 462.914 517.801] +/A << /S /GoTo /D (precdata) >> >> % 1995 0 obj << -/Type /Page -/Contents 1996 0 R -/Resources 1994 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1972 0 R -/Annots [ 1993 0 R ] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.454 435.105 438.512 447.165] +/A << /S /GoTo /D (descdata) >> >> -% 1993 0 obj +% 1996 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 573.77 387.374 585.83] +/Rect [317.418 128.475 384.475 140.535] /A << /S /GoTo /D (precdata) >> >> -% 1997 0 obj +% 2000 0 obj << -/D [1995 0 R /XYZ 98.895 753.953 null] +/D [1998 0 R /XYZ 98.895 753.953 null] >> -% 557 0 obj +% 553 0 obj << -/D [1995 0 R /XYZ 99.895 716.092 null] +/D [1998 0 R /XYZ 99.895 716.092 null] >> -% 1994 0 obj +% 1997 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R /F60 670 0 R /F91 919 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1999 0 obj +% 2002 0 obj << /Type /Page -/Contents 2000 0 R -/Resources 1998 0 R +/Contents 2003 0 R +/Resources 2001 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1972 0 R ->> -% 2001 0 obj -<< -/D [1999 0 R /XYZ 149.705 753.953 null] +/Parent 1975 0 R >> -% 561 0 obj +% 2004 0 obj << -/D [1999 0 R /XYZ 150.705 716.092 null] +/D [2002 0 R /XYZ 149.705 753.953 null] >> -% 1998 0 obj +% 2001 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2005 0 obj +% 2010 0 obj << /Type /Page -/Contents 2006 0 R -/Resources 2004 0 R +/Contents 2011 0 R +/Resources 2009 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2008 0 R -/Annots [ 2002 0 R 2003 0 R ] +/Parent 2013 0 R +/Annots [ 2005 0 R 2006 0 R 2007 0 R 2008 0 R ] >> -% 2002 0 obj +% 2005 0 obj << /Type /Annot /Subtype /Link @@ -27961,117 +28165,109 @@ stream /Rect [320.317 573.77 387.374 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2003 0 obj +% 2006 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 498.054 387.374 510.114] -/A << /S /GoTo /D (precdata) >> +/Rect [342.493 517.98 418.548 530.039] +/A << /S /GoTo /D (vdata) >> >> % 2007 0 obj << -/D [2005 0 R /XYZ 98.895 753.953 null] ->> -% 565 0 obj -<< -/D [2005 0 R /XYZ 99.895 716.092 null] ->> -% 2004 0 obj -<< -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> -/ProcSet [ /PDF /Text ] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [324.013 462.189 391.071 474.248] +/A << /S /GoTo /D (descdata) >> >> -% 2010 0 obj +% 2008 0 obj << -/Type /Page -/Contents 2011 0 R -/Resources 2009 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2008 0 R +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 272.899 418.548 284.958] +/A << /S /GoTo /D (vdata) >> >> % 2012 0 obj << -/D [2010 0 R /XYZ 149.705 753.953 null] +/D [2010 0 R /XYZ 98.895 753.953 null] >> -% 569 0 obj +% 557 0 obj << -/D [2010 0 R /XYZ 150.705 716.092 null] +/D [2010 0 R /XYZ 99.895 716.092 null] >> % 2009 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2017 0 obj +% 2016 0 obj << /Type /Page -/Contents 2018 0 R -/Resources 2016 0 R +/Contents 2017 0 R +/Resources 2015 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2008 0 R -/Annots [ 2013 0 R 2014 0 R ] ->> -% 2013 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.163 275.278 335.44 288.868] -/A << /S /GoTo /D (Hfootnote.5) >> +/Parent 2013 0 R +/Annots [ 2014 0 R ] >> % 2014 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 134.696 369.462 146.755] -/A << /S /GoTo /D (spdata) >> +/Rect [371.126 573.77 438.184 585.83] +/A << /S /GoTo /D (precdata) >> >> -% 2019 0 obj +% 2018 0 obj << -/D [2017 0 R /XYZ 98.895 753.953 null] +/D [2016 0 R /XYZ 149.705 753.953 null] >> -% 573 0 obj +% 561 0 obj << -/D [2017 0 R /XYZ 99.895 716.092 null] +/D [2016 0 R /XYZ 150.705 716.092 null] >> -% 2020 0 obj +% 2015 0 obj << -/D [2017 0 R /XYZ 99.895 444.811 null] +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> +/ProcSet [ /PDF /Text ] >> -% 2021 0 obj +% 2020 0 obj << -/D [2017 0 R /XYZ 99.895 444.971 null] +/Type /Page +/Contents 2021 0 R +/Resources 2019 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2013 0 R >> % 2022 0 obj << -/D [2017 0 R /XYZ 99.895 433.015 null] +/D [2020 0 R /XYZ 98.895 753.953 null] >> -% 2023 0 obj +% 565 0 obj << -/D [2017 0 R /XYZ 114.242 129.79 null] +/D [2020 0 R /XYZ 99.895 716.092 null] >> -% 2016 0 obj +% 2019 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2028 0 obj +% 2026 0 obj << /Type /Page -/Contents 2029 0 R -/Resources 2027 0 R +/Contents 2027 0 R +/Resources 2025 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2008 0 R -/Annots [ 2015 0 R 2024 0 R 2025 0 R 2026 0 R ] +/Parent 2013 0 R +/Annots [ 2023 0 R 2024 0 R ] >> -% 2015 0 obj +% 2023 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 654.503 409.811 666.562] +/Rect [371.126 573.77 438.184 585.83] /A << /S /GoTo /D (precdata) >> >> % 2024 0 obj @@ -28079,433 +28275,656 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 584.479 469.357 596.539] -/A << /S /GoTo /D (vdata) >> +/Rect [371.126 498.054 438.184 510.114] +/A << /S /GoTo /D (precdata) >> >> -% 2025 0 obj +% 2028 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 514.456 469.357 526.516] -/A << /S /GoTo /D (vdata) >> +/D [2026 0 R /XYZ 149.705 753.953 null] >> -% 2026 0 obj +% 569 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 374.41 409.811 386.47] -/A << /S /GoTo /D (descdata) >> +/D [2026 0 R /XYZ 150.705 716.092 null] +>> +% 2025 0 obj +<< +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> +/ProcSet [ /PDF /Text ] >> % 2030 0 obj << -/D [2028 0 R /XYZ 149.705 753.953 null] +/Type /Page +/Contents 2031 0 R +/Resources 2029 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2013 0 R +>> +% 2032 0 obj +<< +/D [2030 0 R /XYZ 98.895 753.953 null] +>> +% 573 0 obj +<< +/D [2030 0 R /XYZ 99.895 716.092 null] >> -% 2027 0 obj +% 2029 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2033 0 obj +% 2037 0 obj << /Type /Page -/Contents 2034 0 R -/Resources 2032 0 R +/Contents 2038 0 R +/Resources 2036 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2008 0 R -/Annots [ 2031 0 R ] +/Parent 2013 0 R +/Annots [ 2033 0 R 2034 0 R ] >> -% 2031 0 obj +% 2033 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 554.876 418.548 566.936] -/A << /S /GoTo /D (vdata) >> +/Rect [379.973 275.278 386.249 288.868] +/A << /S /GoTo /D (Hfootnote.5) >> >> -% 2035 0 obj +% 2034 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 134.696 420.271 146.755] +/A << /S /GoTo /D (spdata) >> +>> +% 2039 0 obj << -/D [2033 0 R /XYZ 98.895 753.953 null] +/D [2037 0 R /XYZ 149.705 753.953 null] >> -% 2032 0 obj +% 577 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R >> -/ProcSet [ /PDF /Text ] +/D [2037 0 R /XYZ 150.705 716.092 null] >> endstream endobj -2042 0 obj +2050 0 obj << -/Length 8623 +/Length 7172 >> stream 0 g 0 G 0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 99.895 706.129 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.867 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q BT -/F59 11.9552 Tf 150.705 706.129 Td [(11.2)-1000(psb)]TJ +/F131 9.9626 Tf 312.397 658.308 Td [(prec)]TJ ET q -1 0 0 1 204.216 706.328 cm +1 0 0 1 333.945 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 337.084 658.308 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -22.202 Td [(b)]TJ +0 g 0 G +/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 359.808 588.484 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.947 588.285 Td [(T)]TJ +ET +q +1 0 0 1 368.804 588.484 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 371.943 588.285 Td [(vect)]TJ +ET +q +1 0 0 1 393.492 588.484 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 396.63 588.285 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.656 -22.202 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.253 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 359.808 518.461 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.947 518.262 Td [(T)]TJ +ET +q +1 0 0 1 368.804 518.461 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 371.943 518.262 Td [(vect)]TJ +ET +q +1 0 0 1 393.492 518.461 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 396.63 518.262 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.656 -22.203 Td [(eps)]TJ +0 g 0 G +/F84 9.9626 Tf 20.165 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -22.203 Td [(desc)]TJ +ET +q +1 0 0 1 120.408 426.236 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 123.397 426.036 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 378.415 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 312.397 378.216 Td [(desc)]TJ +ET +q +1 0 0 1 333.945 378.415 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 337.084 378.216 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -22.203 Td [(itmax)]TJ +0 g 0 G +/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.22 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.743 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(1000.)]TJ -77.275 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.744 0 Td [(\025)]TJ/F84 9.9626 Tf 10.961 0 Td [(1.)]TJ +0 g 0 G +/F75 9.9626 Tf -205.961 -22.202 Td [(itrace)]TJ +0 g 0 G +/F84 9.9626 Tf 0.98 0 0 1 129.773 274.035 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 138.672 274.035 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 149.634 274.035 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 419.702 274.035 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ +0 g 0 G +/F75 9.9626 Tf -109.554 -34.158 Td [(irst)]TJ +0 g 0 G +/F84 9.9626 Tf 19.527 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(r)18(estart)-250(parameter)74(.)]TJ 5.38 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.443 132.281 Tm [(V)90(alues:)]TJ/F78 9.9626 Tf 1 0 0 1 162.528 132.281 Tm [(i)-22(r)-35(s)-25(t)]TJ/F134 10.3811 Tf 20.115 0 Td [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 196.049 132.281 Tm [(0.)-694(Th)1(is)-375(is)-375(employed)-375(for)-375(the)-375(BiCGST)72(ABL)-375(or)-374(RGMRES)]TJ 1 0 0 1 124.802 120.326 Tm [(methods,)-250(otherwise)-250(it)-250(is)-250(ignor)18(ed.)]TJ +0 g 0 G + 139.477 -29.888 Td [(163)]TJ +0 g 0 G +ET + +endstream +endobj +2056 0 obj +<< +/Length 4580 +>> +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 150.705 706.129 Td [(istop)]TJ +0 g 0 G +/F84 9.9626 Tf 27.277 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.012 0 0 1 175.253 658.308 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-247(err)17(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 175.611 646.353 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -19.925 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.926 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 410.618 558.881 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 413.756 558.682 Td [(T)]TJ +ET +q +1 0 0 1 419.614 558.881 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.752 558.682 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 558.881 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 447.439 558.682 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.656 -19.925 Td [(iter)]TJ +0 g 0 G +/F84 9.9626 Tf 20.164 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -19.925 Td [(err)]TJ +0 g 0 G +/F84 9.9626 Tf 17.404 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.925 Td [(cond)]TJ +0 g 0 G +/F84 9.9626 Tf 0.985 0 0 1 177.434 403.265 Tm [(An)-253(estimate)-254(of)-253(the)-253(condition)-253(number)-254(of)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 382.801 403.265 Tm [(A)]TJ/F84 9.9626 Tf 0.985 0 0 1 390.119 403.265 Tm [(;)-253(only)-254(available)-253(with)-253(the)]TJ/F78 9.9626 Tf 1 0 0 1 175.696 391.309 Tm [(C)-45(G)]TJ/F84 9.9626 Tf 17.001 0 Td [(method)-250(on)-250(r)18(eal)-250(data.)]TJ -17.086 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-249(as:)-310(a)-249(r)18(eal)-249(number)74(.)-310(A)-249(corr)18(ect)-250(r)18(esult)-249(will)-249(be)-249(gr)18(eater)-250(than)-249(or)-249(equal)]TJ 0.98 0 0 1 175.611 331.534 Tm [(to)-255(one;)-255(if)-255(speci\002ed)-254(for)-255(non-r)18(eal)-255(data,)-254(or)-255(an)-255(err)18(or)-254(occurr)18(ed,)-255(zer)18(o)-254(is)-255(r)18(eturned.)]TJ +0 g 0 G +/F75 9.9626 Tf 1 0 0 1 150.705 311.608 Tm [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 139.865 -173.35 Td [(164)]TJ +0 g 0 G +ET + +endstream +endobj +2064 0 obj +<< +/Length 8758 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(11.2)-1000(psb)]TJ +ET +q +1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F62 9.9626 Tf -57.098 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F60 9.9626 Tf 110.849 -22.171 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F93 7.8896 Tf 3.589 0 Td [(+)]TJ/F62 7.5716 Tf 6.227 0 Td [(1)]TJ/F93 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F60 9.9626 Tf 11.535 0 Td [(M)]TJ/F91 7.8896 Tf 9.673 4.115 Td [(\000)]TJ/F62 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(b)]TJ/F91 10.3811 Tf 6.799 0 Td [(\000)]TJ/F60 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.811 -2.085 Td [(k)]TJ/F93 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F60 9.9626 Tf 16.637 0 Td [(x)]TJ/F60 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F62 9.9626 Tf 3.992 2.085 Td [(,)]TJ -230.665 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F60 9.9626 Tf 147.599 0 Td [(M)]TJ/F62 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.725 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf -57.406 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F78 9.9626 Tf 111.157 -22.171 Td [(x)]TJ/F78 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F181 7.8896 Tf 3.589 0 Td [(+)]TJ/F84 7.5716 Tf 6.228 0 Td [(1)]TJ/F181 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F78 9.9626 Tf 11.534 0 Td [(M)]TJ/F179 7.8896 Tf 9.674 4.115 Td [(\000)]TJ/F84 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F181 10.3811 Tf 5.105 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(b)]TJ/F179 10.3811 Tf 6.799 0 Td [(\000)]TJ/F78 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.812 -2.085 Td [(k)]TJ/F181 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F78 9.9626 Tf 16.636 0 Td [(x)]TJ/F78 7.5716 Tf 5.201 -2.085 Td [(k)]TJ/F84 9.9626 Tf 3.992 2.085 Td [(,)]TJ -231.084 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F78 9.9626 Tf 147.599 0 Td [(M)]TJ/F84 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.307 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -20.304 Td [(1)]TJ +/F75 9.9626 Tf -14.944 -20.304 Td [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(normwise)-222(backwar)18(d)-221(err)18(or)-222(in)-222(th)1(e)-222(in\002nity)-222(norm;)-231(the)-221(iteration)-222(is)-222(stopped)-221(when)]TJ/F60 9.9626 Tf 109.036 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 0.99 0 0 1 109.858 610.193 Tm [(normwise)-252(backwar)18(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 218.894 581.636 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 40.62 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 297.001 584.127 cm +1 0 0 1 246.191 584.127 cm []0 d 0 J 0.398 w 0 0 m 74.372 0 l S Q BT -/F93 10.3811 Tf 297.125 574.802 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F60 9.9626 Tf 5.938 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F60 9.9626 Tf 11.048 0 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F93 10.3811 Tf 7.377 0 Td [(+)]TJ/F91 10.3811 Tf 10.255 0 Td [(k)]TJ/F60 9.9626 Tf 5.44 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F93 10.3811 Tf 5.439 0 Td [(\051)]TJ/F69 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +/F181 10.3811 Tf 246.316 574.802 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.876 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.376 0 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.861 0 Td [(k)]TJ/F181 10.3811 Tf 5.44 0 Td [(\051)]TJ/F134 10.3811 Tf 8.236 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.087 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F59 9.9626 Tf -235.841 -32.142 Td [(2)]TJ +/F75 9.9626 Tf -235.842 -32.142 Td [(2)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 324.174 523.428 cm +1 0 0 1 273.365 523.428 cm []0 d 0 J 0.398 w 0 0 m 20.025 0 l S Q BT -/F91 10.3811 Tf 324.299 514.103 Td [(k)]TJ/F60 9.9626 Tf 5.439 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +/F179 10.3811 Tf 273.49 514.103 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F59 9.9626 Tf -208.667 -32.082 Td [(3)]TJ +/F75 9.9626 Tf -208.668 -32.082 Td [(3)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 15.169 6.744 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 15.17 6.744 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 322.451 462.789 cm +1 0 0 1 271.641 462.789 cm []0 d 0 J 0.398 w 0 0 m 23.472 0 l S Q BT -/F91 10.3811 Tf 322.575 453.464 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F62 7.5716 Tf 4 -1.744 Td [(0)]TJ/F91 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F62 9.9626 Tf -210.391 -32.083 Td [(The)-248(behaviour)-248(is)-248(contr)18(olled)-249(by)-248(the)-248(istop)-248(ar)18(gument)-248(\050see)-248(later\051.)-310(In)-248(the)-248(above)-248(for)18(-)]TJ 0 -11.955 Td [(mulae,)]TJ/F60 9.9626 Tf 32.809 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.304 1.96 Td [(is)-256(the)-256(tentative)-256(solution)-257(and)]TJ/F60 9.9626 Tf 125.144 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F93 10.3811 Tf 5.757 1.96 Td [(=)]TJ/F60 9.9626 Tf 11.201 0 Td [(b)]TJ/F91 10.3811 Tf 6.821 0 Td [(\000)]TJ/F60 9.9626 Tf 10.777 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(the)-256(corr)18(esponding)-256(r)18(esidual)]TJ -225.063 -11.955 Td [(at)-250(the)]TJ/F60 9.9626 Tf 27.083 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -18.186 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ +/F179 10.3811 Tf 271.766 453.464 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.408 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.587 428.217 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 99.895 416.261 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 144.027 416.261 Tm [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 153.866 416.261 Tm [(is)-199(the)-199(tentat)1(ive)-199(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 273.705 416.261 Tm [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.643 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.758 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 328.46 416.261 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 99.895 404.306 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.305 -18.185 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ ET q -1 0 0 1 201.407 386.32 cm +1 0 0 1 150.598 386.32 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 205.52 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-112(o)-113(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +/F84 9.9626 Tf 154.71 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-113(o)-112(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-98(s)-97(c)]TJ ET q -1 0 0 1 384.896 386.32 cm +1 0 0 1 334.087 386.32 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 388.859 386.121 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ +/F84 9.9626 Tf 338.05 386.121 Td [(a)-370(,)-283(i)-108(n)-109(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -29.001 -28.653 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -29.002 -28.653 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.431 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.431 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.431 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 178.414 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -170.787 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 360.068 257.028 cm +1 0 0 1 309.258 257.028 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 256.829 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 256.829 Td [(Tspmat)]TJ ET q -1 0 0 1 395.216 257.028 cm +1 0 0 1 344.406 257.028 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 256.829 Td [(type)]TJ +/F131 9.9626 Tf 347.544 256.829 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -20.431 Td [(prec)]TJ +/F75 9.9626 Tf -268.571 -20.431 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.867 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 360.068 188.777 cm +1 0 0 1 309.258 188.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 188.577 Td [(prec)]TJ +/F131 9.9626 Tf 312.397 188.577 Td [(prec)]TJ ET q -1 0 0 1 384.755 188.777 cm +1 0 0 1 333.945 188.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 188.577 Td [(type)]TJ +/F131 9.9626 Tf 337.084 188.577 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.431 Td [(b)]TJ +/F75 9.9626 Tf -258.11 -20.431 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 120.525 cm +1 0 0 1 359.808 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 413.756 120.326 Td [(T)]TJ +/F131 9.9626 Tf 362.947 120.326 Td [(T)]TJ ET q -1 0 0 1 419.614 120.525 cm +1 0 0 1 368.804 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.752 120.326 Td [(vect)]TJ +/F131 9.9626 Tf 371.943 120.326 Td [(vect)]TJ ET q -1 0 0 1 444.301 120.525 cm +1 0 0 1 393.492 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 447.439 120.326 Td [(type)]TJ +/F131 9.9626 Tf 396.63 120.326 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - -153.273 -29.888 Td [(162)]TJ + -153.272 -29.888 Td [(165)]TJ 0 g 0 G ET endstream endobj -2052 0 obj +2073 0 obj << -/Length 6698 +/Length 6806 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(x)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(initial)-250(guess.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 658.507 cm +1 0 0 1 410.618 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 362.947 658.308 Td [(T)]TJ +/F131 9.9626 Tf 413.756 658.308 Td [(T)]TJ ET q -1 0 0 1 368.804 658.507 cm +1 0 0 1 419.614 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 371.943 658.308 Td [(vect)]TJ +/F131 9.9626 Tf 422.752 658.308 Td [(vect)]TJ ET q -1 0 0 1 393.492 658.507 cm +1 0 0 1 444.301 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 396.63 658.308 Td [(type)]TJ +/F131 9.9626 Tf 447.439 658.308 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.656 -19.427 Td [(eps)]TJ +/F75 9.9626 Tf -317.656 -19.427 Td [(eps)]TJ 0 g 0 G -/F62 9.9626 Tf 20.474 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.433 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 20.164 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.427 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -19.427 Td [(desc)]TJ ET q -1 0 0 1 120.408 571.832 cm +1 0 0 1 171.218 571.832 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 571.633 Td [(a)]TJ +/F75 9.9626 Tf 174.207 571.633 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 524.012 cm +1 0 0 1 360.068 524.012 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 523.813 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 523.813 Td [(desc)]TJ ET q -1 0 0 1 333.945 524.012 cm +1 0 0 1 384.755 524.012 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 523.813 Td [(type)]TJ +/F131 9.9626 Tf 387.893 523.813 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.428 Td [(itmax)]TJ +/F75 9.9626 Tf -258.11 -19.428 Td [(itmax)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.529 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F93 10.3811 Tf 27.743 0 Td [(=)]TJ/F62 9.9626 Tf 10.962 0 Td [(1000.)]TJ -77.275 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F60 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 27.744 0 Td [(\025)]TJ/F62 9.9626 Tf 10.961 0 Td [(1.)]TJ +/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.221 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.744 0 Td [(=)]TJ/F84 9.9626 Tf 10.961 0 Td [(1000.)]TJ -77.275 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.35 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.743 0 Td [(\025)]TJ/F84 9.9626 Tf 10.962 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -205.961 -19.428 Td [(itrace)]TJ +/F75 9.9626 Tf -205.961 -19.428 Td [(itrace)]TJ 0 g 0 G -/F62 9.9626 Tf 29.878 0 Td [(If)]TJ/F69 10.3811 Tf 11.007 0 Td [(>)]TJ/F62 9.9626 Tf 14.142 0 Td [(0)-422(print)-423(out)-422(an)-422(informational)-423(message)-422(about)-423(conv)1(er)18(gence)-423(every)]TJ/F60 9.9626 Tf -30.065 -11.955 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F62 9.9626 Tf 26.395 0 Td [(iterations.)-310(If)]TJ/F93 10.3811 Tf 56.313 0 Td [(=)]TJ/F62 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -93.725 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F93 10.3811 Tf 26.797 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 180.583 425.182 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 189.481 425.182 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 200.443 425.182 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 470.511 425.182 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -109.554 -31.383 Td [(istop)]TJ +/F75 9.9626 Tf -109.553 -31.383 Td [(istop)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.759 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(V)92(alues:)-351(1:)-351(use)-271(the)-270(normwise)-271(backwar)18(d)-270(err)18(or)74(,)-276(2:)-351(use)-271(the)-270(scaled)-271(2-norm)-270(of)]TJ 0 -11.956 Td [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ +/F84 9.9626 Tf 27.277 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.012 0 0 1 175.253 286.204 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-247(err)17(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 175.611 274.248 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.427 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -19.427 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.427 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(computed)-250(solution.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 187.773 cm +1 0 0 1 410.618 187.773 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 362.947 187.573 Td [(T)]TJ +/F131 9.9626 Tf 413.756 187.573 Td [(T)]TJ ET q -1 0 0 1 368.804 187.773 cm +1 0 0 1 419.614 187.773 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 371.943 187.573 Td [(vect)]TJ +/F131 9.9626 Tf 422.752 187.573 Td [(vect)]TJ ET q -1 0 0 1 393.492 187.773 cm +1 0 0 1 444.301 187.773 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 396.63 187.573 Td [(type)]TJ +/F131 9.9626 Tf 447.439 187.573 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.656 -19.427 Td [(iter)]TJ +/F75 9.9626 Tf -317.656 -19.427 Td [(iter)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.434 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 20.164 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G - 139.477 -29.888 Td [(163)]TJ + 139.477 -29.888 Td [(166)]TJ 0 g 0 G ET endstream endobj -2057 0 obj +2077 0 obj << -/Length 1093 +/Length 1090 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(err)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(err)]TJ 0 g 0 G -/F62 9.9626 Tf 17.713 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.193 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 17.405 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.477 -500.124 Td [(164)]TJ + 139.866 -500.124 Td [(167)]TJ 0 g 0 G ET endstream endobj -2067 0 obj +2087 0 obj << -/Length 7593 +/Length 8172 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 706.042 Td [(12)-1000(Extensions)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-216(EXT)74(,)-217(CUDA)-216(and)-217(RSB)-216(subdir)18(ectories)-216(contains)-217(a)-216(set)-217(of)-216(extensions)-216(to)-217(the)-216(base)]TJ 0 -11.955 Td [(library)111(.)-678(The)-373(extensions)-373(pr)18(ovide)-372(additional)-373(storage)-373(formats)-373(beyond)-372(the)-373(ones)]TJ 0 -11.955 Td [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ +/F75 14.3462 Tf 150.705 706.042 Td [(12)-1000(Extensions)]TJ/F84 9.9626 Tf 0.987 0 0 1 150.396 683.34 Tm [(The)-254(EXT)75(,)-254(CUDA)-254(and)-253(RSB)-254(subdir)18(ectories)-254(contains)-254(a)-254(set)-254(of)-253(extensions)-254(to)-254(the)-254(base)]TJ 1.02 0 0 1 150.705 671.385 Tm [(library)109(.)-500(Th)1(e)-311(extensions)-310(pr)18(ovide)-311(additi)1(onal)-311(storage)-310(formats)-310(beyond)-310(the)-311(ones)]TJ 1 0 0 1 150.705 659.43 Tm [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.102 Td [(SPGPU)]TJ +/F75 9.9626 Tf 0 -19.102 Td [(SPGPU)]TJ 0 g 0 G -/F62 9.9626 Tf 39.293 0 Td [(a)-296(CUDA)-297(library)-296(originally)-296(published)-297(as)]TJ +/F84 9.9626 Tf 1.02 0 0 1 189.997 640.328 Tm [(a)-255(CUDA)-255(library)-255(originally)-254(published)-255(as)]TJ 0 1 0 0 k 0 1 0 0 K -/F67 9.9626 Tf 178.89 0 Td [(https://code.google.com/)]TJ -193.276 -11.955 Td [(p/spgpu/)]TJ +/F131 9.9626 Tf 1 0 0 1 369.934 640.328 Tm [(https://code.google.com/)]TJ -194.323 -11.955 Td [(p/spgpu/)]TJ 0 g 0 G -/F62 9.9626 Tf 46.128 0 Td [(and)-430(now)-430(included)-430(in)-430(the)]TJ/F67 9.9626 Tf 119.328 0 Td [(cuda)]TJ/F62 9.9626 Tf 25.206 0 Td [(subdir)74(,)-475(for)-430(computations)-430(on)]TJ -190.662 -11.955 Td [(NVIDIA)-250(GPUs;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 221.323 628.373 Tm [(and)-381(now)-380(included)-381(in)-381(the)]TJ/F131 9.9626 Tf 1 0 0 1 340.526 628.373 Tm [(cuda)]TJ/F84 9.9626 Tf 1.02 0 0 1 365.316 628.373 Tm [(subdir)73(,)-415(for)-381(computations)-380(on)]TJ 1 0 0 1 175.611 616.418 Tm [(NVIDIA)-250(GPUs;)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.514 Td [(LIBRSB)]TJ +/F75 9.9626 Tf -24.906 -19.514 Td [(LIBRSB)]TJ 0 g 0 G 0 1 0 0 k 0 1 0 0 K -/F67 9.9626 Tf 41.514 0 Td [(http://sourceforge.net/projects/librsb/)]TJ +/F131 9.9626 Tf 41.514 0 Td [(http://sourceforge.net/projects/librsb/)]TJ 0 g 0 G -/F62 9.9626 Tf 203.984 0 Td [(,)-398(for)-368(computations)-368(on)]TJ -220.591 -11.955 Td [(multicor)18(e)-250(parallel)-250(machines.)]TJ -24.907 -19.102 Td [(The)-318(infrastr)8(uctur)18(e)-317(laid)-318(out)-318(in)-317(the)-318(base)-317(library)-318(to)-318(allow)-317(for)-318(these)-318(extensions)-317(is)]TJ 0 -11.956 Td [(detailed)-299(in)-299(the)-299(r)18(efer)18(ences)-299([)]TJ +/F84 9.9626 Tf 1.02 0 0 1 396.202 596.904 Tm [(,)-324(for)-309(computations)-308(on)]TJ 1 0 0 1 175.611 584.949 Tm [(multicor)18(e)-250(parallel)-250(machines.)]TJ 1.02 0 0 1 150.396 565.847 Tm [(The)-350(infrastr)8(uctur)18(e)-350(laid)-350(out)-350(in)-349(the)-350(base)-350(library)-350(to)-350(allow)-349(for)-350(these)-350(extensions)]TJ 1.02 0 0 1 150.705 553.891 Tm [(is)-306(detailed)-306(in)-306(the)-306(r)18(efer)17(ences)-306([)]TJ 1 0 0 rg 1 0 0 RG - [(20)]TJ + 1 0 0 1 281.586 553.891 Tm [(20)]TJ 0 g 0 G - [(,)]TJ + 1.02 0 0 1 291.549 553.891 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - [-299(21)]TJ + 1 0 0 1 297.199 553.891 Tm [(21)]TJ 0 g 0 G - [(,)]TJ + 1.02 0 0 1 307.161 553.891 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - [-299(10)]TJ + 1 0 0 1 312.812 553.891 Tm [(10)]TJ 0 g 0 G - [(];)-324(the)-299(CUDA-speci\002c)-299(data)-299(formats)-299(ar)18(e)-299(de-)]TJ 0 -11.955 Td [(scribed)-250(in)-250([)]TJ + 1.02 0 0 1 322.774 553.891 Tm [(];)-336(the)-306(CUDA-speci\002c)-306(data)-306(formats)-306(ar)17(e)]TJ 1 0 0 1 150.705 541.936 Tm [(described)-250(in)-250([)]TJ 1 0 0 rg 1 0 0 RG [(22)]TJ 0 g 0 G - [(].)]TJ/F59 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(A)-279(sample)-279(application)-279(using)-279(the)-279(PSBLAS)-279(extensions)-279(will)-279(contain)-279(the)-279(following)]TJ 0 -11.955 Td [(steps:)]TJ + [(].)]TJ/F75 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F84 9.9626 Tf 1.01 0 0 1 150.316 494.032 Tm [(A)-249(sample)-248(application)-249(using)-249(the)-249(PSBLAS)-248(extensions)-249(will)-249(contain)-248(the)-249(following)]TJ 1 0 0 1 150.705 482.077 Tm [(steps:)]TJ 0 g 0 G 13.888 -19.102 Td [(\225)]TJ 0 g 0 G -/F67 9.9626 Tf 11.019 0 Td [(USE)]TJ/F62 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F67 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F62 9.9626 Tf 57.533 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(psb_cuda_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(\051;)]TJ +/F131 9.9626 Tf 11.018 0 Td [(USE)]TJ/F84 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F131 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F84 9.9626 Tf 57.534 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_cuda_mod)]TJ/F84 9.9626 Tf 62.764 0 Td [(\051;)]TJ 0 g 0 G - -264.516 -19.514 Td [(\225)]TJ + -264.515 -19.514 Td [(\225)]TJ 0 g 0 G - [-500(Declar)18(e)-190(a)]TJ/F60 9.9626 Tf 53.101 0 Td [(mold)]TJ/F62 9.9626 Tf 21.818 0 Td [(variable)-190(of)-190(the)-190(necessary)-190(type)-190(\050e.g.)]TJ/F67 9.9626 Tf 151.36 0 Td [(psb_d_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf -319.867 -11.955 Td [(psb_d_hlg_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_d_vect_cuda)]TJ/F62 9.9626 Tf 78.455 0 Td [(\051;)]TJ + 0.98 0 0 1 175.611 443.461 Tm [(Declar)18(e)-214(a)]TJ/F78 9.9626 Tf 0.98 0 0 1 217.329 443.461 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 238.952 443.461 Tm [(variable)-215(of)-214(the)-215(necessary)-214(type)-215(\050e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 388.614 443.461 Tm [(psb_d_ell_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.22 443.461 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 431.506 Tm [(psb_d_hlg_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(,)]TJ/F131 9.9626 Tf 4.982 0 Td [(psb_d_vect_cuda)]TJ/F84 9.9626 Tf 78.455 0 Td [(\051;)]TJ 0 g 0 G - -199.062 -19.514 Td [(\225)]TJ + -199.062 -19.513 Td [(\225)]TJ 0 g 0 G - [-500(Pass)-289(the)-290(mold)-289(variable)-290(to)-289(the)-290(base)-289(library)-289(interface)-290(wher)18(e)-289(needed)-290(to)-289(en-)]TJ 11.019 -11.955 Td [(sur)18(e)-250(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ -24.907 -19.102 Td [(Suppose)-367(you)-366(want)-367(to)-366(use)-367(the)-366(CUDA-enabled)-367(ELLP)92(ACK)-366(data)-366(str)8(uctur)18(e;)-425(you)]TJ 0 -11.955 Td [(would)-371(use)-370(a)-371(piece)-370(of)-371(code)-370(like)-371(this)-370(\050and)-371(don't)-370(for)18(get,)-401(you)-371(need)-370(CUDA-side)]TJ 0 -11.955 Td [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ + 0.98 0 0 1 175.611 411.993 Tm [(Pass)-215(the)-215(mold)-214(variable)-215(to)-215(the)-215(base)-214(library)-215(interface)-215(wher)19(e)-215(needed)-215(to)-215(ensur)19(e)]TJ 1 0 0 1 175.611 400.037 Tm [(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ 1.02 0 0 1 150.705 380.935 Tm [(Suppose)-302(you)-301(want)-302(to)-301(use)-302(the)-302(CUDA-enabled)-301(ELLP)90(ACK)-302(data)-301(str)8(uctur)17(e;)-330(you)]TJ 1.02 0 0 1 150.286 368.98 Tm [(would)-323(u)1(se)-323(a)-322(piece)-323(of)-322(code)-323(like)-322(this)-323(\050and)-322(don't)-323(for)18(get,)-342(you)-322(need)-323(CUDA-side)]TJ 1 0 0 1 150.426 357.025 Tm [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 120.326 cm +1 0 0 1 150.705 120.326 cm 0 0 343.711 225.156 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 102.884 334.821 Td [(program)]TJ +/F231 8.9664 Tf 153.694 334.821 Td [(program)]TJ 0 g 0 G [-525(my_cuda_test)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.415 -10.959 Td [(use)]TJ + 9.414 -10.959 Td [(use)]TJ 0 g 0 G [-525(psb_base_mod)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -28664,15 +29083,15 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 151.98 -58.082 Td [(165)]TJ +/F84 9.9626 Tf 151.98 -58.082 Td [(168)]TJ 0 g 0 G ET endstream endobj -2081 0 obj +2101 0 obj << -/Length 8656 +/Length 9201 >> stream 0 g 0 G @@ -28680,7 +29099,7 @@ stream 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG q -1 0 0 1 150.705 421.197 cm +1 0 0 1 99.895 421.197 cm 0 0 343.711 290.909 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -28689,12 +29108,12 @@ Q 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG BT -/F120 8.9664 Tf 163.108 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ +/F279 8.9664 Tf 112.299 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf 0 -10.958 Td [(call)]TJ +/F231 8.9664 Tf 0 -10.958 Td [(call)]TJ 0 g 0 G [-525(gen_matrix\050ctxt,)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG @@ -28803,16 +29222,16 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 0 -21.918 Td [(!)-525(Do)-525(sparse)-525(MV)]TJ +/F279 8.9664 Tf 0 -21.918 Td [(!)-525(Do)-525(sparse)-525(MV)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf 0 -10.958 Td [(call)]TJ +/F231 8.9664 Tf 0 -10.958 Td [(call)]TJ 0 g 0 G [-525(psb_spmm\050done,agpu,xg,dzero,bg,desc_a,info\051)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - -9.414 -32.877 Td [(9999)]TJ + -9.415 -32.877 Td [(9999)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -28820,7 +29239,7 @@ BT [-525(continue)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.414 -10.959 Td [(if)]TJ + 9.415 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -28902,34 +29321,34 @@ BT 0 -10.959 Td [(stop)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(program)]TJ + -9.415 -10.959 Td [(end)-525(program)]TJ 0 g 0 G [-525(my_cuda_test)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf 11.955 -24.283 Td [(A)-378(full)-379(example)-378(of)-379(this)-378(strategy)-378(can)-379(be)-378(seen)-379(in)-378(the)]TJ/F67 9.9626 Tf 229.675 0 Td [(test/ext/kernel)]TJ/F62 9.9626 Tf 82.225 0 Td [(and)]TJ/F67 9.9626 Tf -326.844 -11.955 Td [(test/cuda/kernel)]TJ/F62 9.9626 Tf 86.401 0 Td [(subdir)18(ectories,)-278(wher)18(e)-273(we)-272(pr)18(ovide)-273(sample)-272(pr)18(ograms)-273(to)-273(test)]TJ -86.401 -11.955 Td [(the)-259(speed)-259(of)-259(the)-259(sparse)-259(matrix-vector)-259(pr)18(oduct)-259(with)-259(the)-259(various)-259(data)-259(str)8(uctur)18(es)]TJ 0 -11.956 Td [(included)-250(in)-250(the)-250(library)111(.)]TJ/F59 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F62 9.9626 Tf 0 -18.999 Td [(Access)-232(to)-233(the)-232(facilities)-232(pr)18(ovided)-233(by)-232(the)-232(EXT)-233(library)-232(is)-232(mainly)-233(achieved)-232(thr)18(ough)]TJ 0 -11.955 Td [(the)-384(data)-385(types)-384(that)-384(ar)18(e)-384(pr)18(ovided)-385(within.)-713(The)-384(data)-384(classes)-385(ar)18(e)-384(derived)-384(fr)18(om)]TJ 0 -11.955 Td [(the)-247(base)-247(classes)-248(in)-247(PSBLAS,)-247(thr)18(ough)-247(the)-247(Fortran)-247(2003)-248(mechanism)-247(of)]TJ/F60 9.9626 Tf 299.186 0 Td [(type)-247(exten-)]TJ -299.186 -11.956 Td [(sion)]TJ/F62 9.9626 Tf 19.098 0 Td [([)]TJ +/F84 9.9626 Tf 1.02 0 0 1 114.839 403.191 Tm [(A)-337(full)-338(example)-337(of)-337(this)-338(strategy)-337(can)-338(be)-337(seen)-337(in)-338(the)]TJ/F131 9.9626 Tf 1 0 0 1 344.519 403.191 Tm [(test/ext/kernel)]TJ/F84 9.9626 Tf 1.02 0 0 1 426.402 403.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 99.895 391.236 Tm [(test/cuda/kernel)]TJ/F84 9.9626 Tf 1.008 0 0 1 186.064 391.236 Tm [(subdir)18(ectories,)-248(wher)18(e)-247(we)-247(pr)18(ovide)-248(sample)-247(pr)18(ograms)-247(to)-248(test)]TJ 1.003 0 0 1 99.895 379.281 Tm [(the)-250(speed)-249(of)-250(the)-250(sparse)-249(matrix-vector)-250(pr)18(oduct)-249(with)-250(the)-250(various)-249(data)-250(str)8(uctur)18(es)]TJ 1 0 0 1 99.895 367.325 Tm [(included)-250(in)-250(the)-250(library)111(.)]TJ/F75 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F84 9.9626 Tf 0.995 0 0 1 99.507 319.088 Tm [(Access)-250(to)-250(the)-250(facilities)-250(pr)18(ovided)-250(by)-250(the)-250(EXT)-250(library)-251(is)-250(mainly)-250(achieved)-250(thr)18(ough)]TJ 1.02 0 0 1 99.895 307.133 Tm [(the)-335(data)-336(types)-335(that)-335(ar)18(e)-336(pr)18(ovided)-335(within.)-575(The)-335(data)-335(classes)-335(ar)17(e)-335(derived)-335(fr)17(om)]TJ 1.004 0 0 1 99.895 295.178 Tm [(the)-250(base)-249(classes)-250(in)-249(PSBLAS,)-250(thr)18(ough)-249(the)-250(Fortran)-249(2003)-250(mechanism)-249(of)]TJ/F78 9.9626 Tf 1.004 0 0 1 400.534 295.178 Tm [(type)-250(exten-)]TJ 1 0 0 1 99.895 283.222 Tm [(sion)]TJ/F84 9.9626 Tf 19.098 0 Td [([)]TJ 1 0 0 rg 1 0 0 RG [(17)]TJ 0 g 0 G - [(].)]TJ -4.154 -11.973 Td [(The)-255(data)-255(classes)-254(ar)18(e)-255(divided)-255(between)-255(the)-255(general)-255(purpose)-254(CPU)-255(extensions,)]TJ -14.944 -11.955 Td [(the)-232(GPU)-232(interfaces)-232(and)-232(the)-232(RSB)-232(interfaces.)-304(In)-232(the)-232(description)-232(we)-232(will)-232(make)-232(use)]TJ 0 -11.955 Td [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ + [(].)]TJ 1.006 0 0 1 114.839 271.249 Tm [(The)-248(data)-247(classes)-248(ar)18(e)-247(divided)-248(between)-247(the)-248(general)-248(purpose)-247(CPU)-248(extensions,)]TJ 0.993 0 0 1 99.895 259.294 Tm [(the)-252(GPU)-251(interfaces)-252(and)-251(the)-252(RSB)-252(interfaces.)-312(In)-251(the)-252(description)-252(we)-251(will)-252(make)-251(use)]TJ 1 0 0 1 99.895 247.338 Tm [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG - [-250(21)]TJ + [-250(23)]TJ 0 g 0 G - [(.)]TJ/F59 11.9552 Tf 0 -29.238 Td [(12.3)-1000(CPU-class)-250(extensions)]TJ/F59 9.9626 Tf 0 -19 Td [(ELLP)74(ACK)]TJ/F62 9.9626 Tf 0 -18.999 Td [(The)-190(ELLP)92(ACK/ITP)92(ACK)-190(format)-190(\050shown)-190(in)-190(Figur)18(e)]TJ + [(.)]TJ/F75 11.9552 Tf 0 -29.237 Td [(12.3)-1000(CPU-class)-250(extensions)]TJ/F75 9.9626 Tf 0 -19 Td [(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 99.587 180.101 Tm [(The)-194(ELLP)94(ACK/ITP)94(ACK)-194(format)-194(\050shown)-194(in)-193(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-190(6)]TJ + [-194(6)]TJ 0 g 0 G - [(\051)-190(comprises)-190(two)-190(2-dimensional)]TJ 0 -11.956 Td [(arrays)]TJ/F67 9.9626 Tf 30.301 0 Td [(AS)]TJ/F62 9.9626 Tf 13.165 0 Td [(and)]TJ/F67 9.9626 Tf 19.572 0 Td [(JA)]TJ/F62 9.9626 Tf 13.165 0 Td [(with)]TJ/F67 9.9626 Tf 22.959 0 Td [(M)]TJ/F62 9.9626 Tf 7.935 0 Td [(r)18(ows)-271(and)]TJ/F67 9.9626 Tf 44.005 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.086 0 Td [(columns,)-277(wher)18(e)]TJ/F67 9.9626 Tf 72.95 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.087 0 Td [(is)-271(the)-272(maxi-)]TJ -292.225 -11.955 Td [(mum)-211(number)-211(of)-212(nonzer)18(os)-211(in)-211(any)-211(r)18(ow)-211([)]TJ/F59 9.9626 Tf 167.954 0 Td [(?)]TJ/F62 9.9626 Tf 4.423 0 Td [(].)-297(Each)-211(r)18(ow)-212(of)-211(the)-211(arrays)]TJ/F67 9.9626 Tf 108.255 0 Td [(AS)]TJ/F62 9.9626 Tf 12.565 0 Td [(and)]TJ/F67 9.9626 Tf 18.971 0 Td [(JA)]TJ/F62 9.9626 Tf 12.564 0 Td [(con-)]TJ -324.732 -11.955 Td [(tains)-218(the)-217(coef)18(\002cients)-218(and)-217(column)-218(indices;)-228(r)18(ows)-218(shorter)-217(than)]TJ/F67 9.9626 Tf 260.482 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 33.55 0 Td [(ar)18(e)-218(padded)]TJ -294.032 -11.955 Td [(with)-315(zer)18(o)-315(coef)18(\002cients)-315(and)-315(appr)18(opriate)-315(column)-315(indices,)-331(e.g.)-505(the)-315(last)-315(valid)-315(one)]TJ 0 -11.955 Td [(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ + [(\051)-194(comprises)-194(two)-193(2-dimensional)]TJ 1.02 0 0 1 99.895 168.146 Tm [(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 130.767 168.146 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 143.951 168.146 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 163.879 168.146 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 177.063 168.146 Tm [(with)]TJ/F131 9.9626 Tf 1 0 0 1 200.445 168.146 Tm [(M)]TJ/F84 9.9626 Tf 1.02 0 0 1 208.399 168.146 Tm [(r)18(ows)-268(and)]TJ/F131 9.9626 Tf 1 0 0 1 253.216 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 287.322 168.146 Tm [(columns,)-274(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 361.667 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 395.772 168.146 Tm [(is)-268(the)-268(max-)]TJ 1.02 0 0 1 99.895 156.191 Tm [(imum)-289(number)-288(of)-289(nonzer)17(os)-288(in)-289(any)-289(r)18(ow)-289([)]TJ/F75 9.9626 Tf 1 0 0 1 279.688 156.191 Tm [(?)]TJ/F84 9.9626 Tf 1.02 0 0 1 284.111 156.191 Tm [(].)-435(Each)-289(r)18(ow)-289(of)-288(the)-289(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 399.875 156.191 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 413.269 156.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 433.407 156.191 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 144.236 Tm [(contains)-357(the)-358(coef)18(\002cients)-357(and)-357(column)-358(indices;)-413(r)17(ows)-357(shorter)-357(than)]TJ/F131 9.9626 Tf 1 0 0 1 394.811 144.236 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 429.823 144.236 Tm [(ar)18(e)]TJ 0.98 0 0 1 99.596 132.281 Tm [(padded)-229(with)-229(zer)19(o)-229(coef)18(\002cients)-229(and)-229(appr)19(opriate)-229(column)-229(indices,)-234(e.g.)-307(the)-229(last)-229(valid)]TJ 1 0 0 1 99.895 120.326 Tm [(one)-250(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ 0 g 0 G - 164.383 -29.888 Td [(166)]TJ + 164.384 -29.888 Td [(169)]TJ 0 g 0 G ET endstream endobj -2090 0 obj +2111 0 obj << -/Length 4578 +/Length 4837 >> stream 0 g 0 G @@ -28937,32 +29356,32 @@ stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 138.662 698.871 Td [(T)92(able)-250(21:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 189.471 698.871 Td [(T)92(able)-250(23:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 171.842 684.904 cm +1 0 0 1 222.652 684.904 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q BT -/F62 7.9701 Tf 177.82 678.079 Td [(Name)-3364(Description)]TJ +/F84 7.9701 Tf 228.629 678.079 Td [(Name)-3364(Description)]TJ ET q -1 0 0 1 171.842 675.041 cm +1 0 0 1 222.652 675.041 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q BT -/F62 7.9701 Tf 177.82 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ +/F84 7.9701 Tf 228.629 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ ET q -1 0 0 1 171.842 551.604 cm +1 0 0 1 222.652 551.604 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q 0 g 0 G 0 g 0 G -1 0 0 1 196.805 396.819 cm +1 0 0 1 247.614 395.491 cm q .33653 0 0 .33653 0 0 cm q @@ -28971,46 +29390,46 @@ q Q Q 0 g 0 G -1 0 0 1 -196.805 -396.819 cm +1 0 0 1 -247.614 -395.491 cm BT -/F62 9.9626 Tf 194.96 374.901 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 245.769 373.573 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G - -80.121 -32.171 Td [(The)-289(matrix-vector)-289(pr)18(oduct)]TJ/F60 9.9626 Tf 120.156 0 Td [(y)]TJ/F93 10.3811 Tf 8.719 0 Td [(=)]TJ/F60 9.9626 Tf 12.306 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 15.697 0 Td [(can)-289(be)-289(computed)-289(with)-289(the)-289(code)-289(shown)]TJ -171.822 -11.956 Td [(in)-365(Alg.)]TJ + 0.98 0 0 1 165.649 339.81 Tm [(The)-252(matrix-vector)-252(pr)19(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 282.309 339.81 Tm [(y)]TJ/F181 10.3811 Tf 7.997 0 Td [(=)]TJ/F78 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 317.166 339.81 Tm [(can)-252(be)-252(computed)-251(with)-252(the)-252(code)-252(shown)-252(in)]TJ 1.003 0 0 1 150.316 327.855 Tm [(Alg.)]TJ 0 0 1 rg 0 0 1 RG - [-365(1)]TJ + [-250(1)]TJ 0 g 0 G - [(;)-423(it)-365(costs)-365(one)-365(memory)-366(write)-365(per)-365(outer)-365(iteration,)-394(plus)-365(thr)18(ee)-365(memory)]TJ 0 -11.955 Td [(r)18(eads)-250(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 14.944 -11.955 Td [(Unless)-251(all)-252(r)18(ows)-251(have)-251(exactly)-251(the)-252(same)-251(number)-251(of)-252(nonzer)18(os,)-251(some)-252(of)-251(the)-251(co-)]TJ -14.944 -11.955 Td [(ef)18(\002cients)-225(in)-226(the)]TJ/F67 9.9626 Tf 68.551 0 Td [(AS)]TJ/F62 9.9626 Tf 12.705 0 Td [(array)-225(will)-226(be)-225(zer)18(os;)-233(ther)18(efor)18(e)-226(this)-225(data)-225(str)8(uctur)18(e)-226(wil)1(l)-226(have)-225(an)]TJ -81.256 -11.955 Td [(over)18(head)-261(both)-261(in)-260(terms)-261(of)-261(memory)-261(space)-261(and)-261(r)18(edundant)-260(operations)-261(\050multipli-)]TJ 0 -11.956 Td [(cations)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ + [(;)-250(it)-250(costs)-250(one)-250(memory)-251(wri)1(te)-251(pe)1(r)-251(oute)1(r)-251(ite)1(ration,)-251(plus)-250(thr)18(ee)-250(memory)-250(r)18(eads)]TJ 1 0 0 1 150.705 315.9 Tm [(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 1.02 0 0 1 165.649 303.412 Tm [(Unless)-327(all)-327(r)18(ows)-327(have)-327(exactly)-326(the)-327(same)-327(number)-327(of)-327(nonzer)18(os,)-347(some)-327(of)-327(the)]TJ 1.02 0 0 1 150.705 291.457 Tm [(coef)18(\002cients)-388(in)-387(the)]TJ/F131 9.9626 Tf 1 0 0 1 235.636 291.457 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 250.035 291.457 Tm [(array)-388(will)-387(be)-388(zer)18(os;)-459(ther)18(efor)17(e)-387(this)-388(data)-388(str)8(uctur)18(e)-388(will)]TJ 1.02 0 0 1 150.705 279.501 Tm [(have)-270(an)-269(over)17(head)-269(both)-270(in)-270(ter)1(ms)-270(of)-270(memory)-269(space)-270(and)-270(r)18(edundant)-270(operations)]TJ 1 0 0 1 150.376 267.546 Tm [(\050multiplications)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ 0 g 0 G - 12.454 -19.399 Td [(1.)]TJ + 12.782 -21.523 Td [(1.)]TJ 0 g 0 G - [-500(The)-289(maximum)-289(number)-289(of)-289(nonzer)18(os)-289(per)-290(r)18(ow)-289(is)-289(not)-289(much)-289(lar)18(ger)-289(than)-289(the)]TJ 12.453 -11.956 Td [(average;)]TJ + 1.018 0 0 1 175.303 246.023 Tm [(The)-244(maximum)-245(number)-244(of)-245(nonzer)18(os)-244(per)-245(r)18(ow)-244(is)-245(not)-244(much)-245(lar)18(ger)-244(than)-245(the)]TJ 1 0 0 1 175.611 234.067 Tm [(average;)]TJ 0 g 0 G - -12.453 -19.662 Td [(2.)]TJ + -12.453 -22.056 Td [(2.)]TJ 0 g 0 G - [-500(The)-273(r)18(egularity)-274(of)-273(the)-274(data)-273(str)8(uctur)18(e)-274(allows)-273(for)-274(faster)-273(code,)-279(e.g.)-381(by)-273(allow-)]TJ 12.453 -11.955 Td [(ing)-247(vectorization,)-247(ther)18(eby)-247(of)18(fsetting)-247(the)-247(additional)-246(storage)-247(r)18(equir)18(ements.)]TJ -24.907 -19.4 Td [(In)-372(the)-372(extr)18(eme)-372(case)-372(wher)18(e)-372(the)-371(input)-372(matrix)-372(has)-372(one)-372(full)-372(r)18(ow)92(,)-402(the)-372(ELLP)92(ACK)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-273(would)-273(r)18(equir)18(e)-273(mor)18(e)-273(memory)-273(than)-273(the)-273(normal)-273(2D)-273(array)-273(storage.)-379(The)]TJ 0 -11.956 Td [(ELLP)92(ACK)-305(storage)-305(format)-305(was)-305(very)-305(popular)-305(in)-305(the)-305(vector)-305(computing)-305(days;)-332(in)]TJ 0 -11.955 Td [(modern)-305(CPU)1(s)-305(it)-304(is)-305(not)-304(quite)-305(as)-304(popular)74(,)-318(but)-305(it)-304(is)-305(the)-304(basis)-305(for)-304(many)-305(GPU)-304(for)18(-)]TJ 0 -11.955 Td [(mats.)]TJ 14.944 -11.955 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ + 0.98 0 0 1 175.303 212.011 Tm [(The)-243(r)19(egularity)-243(of)-243(th)1(e)-243(data)-243(str)8(uctur)19(e)-243(allows)-243(for)-242(faster)-243(code,)-245(e.g.)-312(by)-243(allowing)]TJ 1 0 0 1 175.333 200.056 Tm [(vectorization,)-250(ther)18(eby)-250(of)18(fsetting)-250(the)-250(additional)-250(storage)-250(r)18(equir)18(ements.)]TJ 1.02 0 0 1 150.705 178.532 Tm [(In)-323(the)-323(extr)18(eme)-324(case)-323(wher)18(e)-323(the)-323(input)-323(matrix)-323(has)-323(one)-323(full)-323(r)17(ow)91(,)-343(the)-323(ELLP)90(ACK)]TJ 1.01 0 0 1 150.705 166.577 Tm [(str)8(uctur)18(e)-246(would)-246(r)18(equir)17(e)-246(mor)18(e)-246(memory)-246(than)-246(the)-246(normal)-246(2D)-246(array)-246(storage.)-307(The)]TJ 1.02 0 0 1 150.705 154.621 Tm [(ELLP)90(ACK)-246(storage)-245(format)-246(was)-246(very)-246(popular)-245(in)-246(the)-246(vector)-246(computing)-245(days;)-247(in)]TJ 0.98 0 0 1 150.705 142.666 Tm [(modern)-231(CPUs)-231(it)-231(is)-231(not)-231(quite)-231(as)-231(popular)75(,)-236(but)-231(it)-231(is)-231(the)-231(basis)-231(for)-231(many)-231(GPU)-231(formats.)]TJ 1 0 0 1 165.649 130.178 Tm [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_ell_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ 0 g 0 G - -66.12 -38.412 Td [(167)]TJ + -66.12 -39.74 Td [(170)]TJ 0 g 0 G ET endstream endobj -2074 0 obj +2094 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/mat.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2095 0 R +/PTEX.InfoDict 2116 0 R /BBox [0 0 438 395] /Resources << /ProcSet [ /PDF /ImageC ] /ExtGState << -/R7 2096 0 R +/R7 2117 0 R >>/XObject << -/R8 2097 0 R +/R8 2118 0 R >>>> /Length 3551 /Filter /FlateDecode @@ -29039,7 +29458,7 @@ r ´JXØxèóC¹ù[— S¬ë¹Ïæ^zÝ°.¼¯÷ëFÜ$ä 5`2. L£× 0 · æÁî# Z(Dô¿Sð÷žÅjý²¥¬³*'fÖåÃÝÖ;?buÞîR­rœ†þ—* Ýœ—"@„ÂúaËiý(ÿ« o^ÿ/o*o endstream endobj -2097 0 obj +2118 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29058,15 +29477,15 @@ stream & ÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÀ@ endstream endobj -2101 0 obj +2122 0 obj << -/Length 7241 +/Length 7547 >> stream 0 g 0 G 0 g 0 G 0 g 0 G -1 0 0 1 205.095 609.491 cm +1 0 0 1 154.285 609.491 cm q .52 0 0 .52 0 0 cm q @@ -29075,9 +29494,9 @@ q Q Q 0 g 0 G -1 0 0 1 -205.095 -609.491 cm +1 0 0 1 -154.285 -609.491 cm BT -/F62 9.9626 Tf 203.747 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 152.938 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G @@ -29085,13 +29504,13 @@ BT 0 g 0 G 0 g 0 G 0 g 0 G -/F59 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.536 -10.959 Td [(t)-168(=)-32(0)]TJ/F59 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.793 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F59 8.9664 Tf -102.419 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ/F62 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F59 8.9664 Tf -10.782 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ +/F75 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.537 -10.959 Td [(t)-168(=)-32(0)]TJ/F75 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.792 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F75 8.9664 Tf -102.419 -10.959 Td [(e)-19(n)-20(d)-630(d)-11(o)]TJ/F84 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F75 8.9664 Tf -10.782 -10.959 Td [(e)-19(n)-20(d)-630(d)-12(o)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf 16.499 -17.519 Td [(Algorithm)-250(1:)]TJ/F62 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ +/F75 9.9626 Tf 16.498 -17.519 Td [(Algorithm)-250(1:)]TJ/F84 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -29099,7 +29518,7 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 316.473 cm +1 0 0 1 99.895 316.473 cm 0 0 343.711 126.526 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29108,7 +29527,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 163.108 432.339 Td [(type)]TJ +/F231 8.9664 Tf 112.299 432.339 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29128,7 +29547,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29143,7 +29562,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf 0 -21.918 Td [(integer)]TJ +/F231 8.9664 Tf 0 -21.918 Td [(integer)]TJ 0 g 0 G [(\050psb_ipk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29187,43 +29606,43 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -21.918 Td [(contains)]TJ + -9.414 -21.918 Td [(contains)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 9.415 -10.959 Td [(....)]TJ + 9.414 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.958 Td [(end)-525(type)]TJ + -9.414 -10.958 Td [(end)-525(type)]TJ 0 g 0 G [-525(psb_d_ell_sparse_mat)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F59 9.9626 Tf -12.403 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F62 9.9626 Tf 0 -19.057 Td [(The)]TJ/F60 9.9626 Tf 20.491 0 Td [(hacked)-383(ELLP)129(ACK)]TJ/F62 9.9626 Tf 76.975 0 Td [(\050)]TJ/F59 9.9626 Tf 3.317 0 Td [(HLL)]TJ/F62 9.9626 Tf 20.473 0 Td [(\051)-383(format)-382(alleviates)-383(the)-383(main)-383(pr)18(oblem)-382(of)-383(the)-383(ELL-)]TJ -121.256 -11.955 Td [(P)92(ACK)-303(format,)-316(that)-303(is,)-316(the)-302(amount)-303(of)-303(memory)-303(r)18(equir)18(ed)-303(by)-303(paddi)1(ng)-303(for)-303(sparse)]TJ 0 -11.955 Td [(matrices)-250(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 14.944 -12.003 Td [(The)-190(number)-190(of)-190(elements)-190(allocated)-190(to)-190(padding)-190(is)]TJ/F93 10.3811 Tf 207.723 0 Td [([)-24(\050)]TJ/F60 9.9626 Tf 7.403 0 Td [(m)]TJ/F91 10.3811 Tf 9.383 0 Td [(\003)]TJ/F60 9.9626 Tf 6.824 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F93 10.3811 Tf 34.072 0 Td [(\051)]TJ/F91 10.3811 Tf 5.657 0 Td [(\000)]TJ/F93 10.3811 Tf 9.703 0 Td [(\050)]TJ/F60 9.9626 Tf 4.273 0 Td [(m)]TJ/F91 10.3811 Tf 9.384 0 Td [(\003)]TJ/F60 9.9626 Tf 6.973 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.103 0 Td [(\051)-289(=)]TJ/F60 9.9626 Tf -347.318 -11.955 Td [(m)]TJ/F91 10.3811 Tf 9.436 0 Td [(\003)]TJ/F93 10.3811 Tf 6.876 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F91 10.3811 Tf 35.508 0 Td [(\000)]TJ/F60 9.9626 Tf 9.904 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.104 0 Td [(\051)-23(])]TJ/F62 9.9626 Tf 9.227 0 Td [(for)-196(both)]TJ/F67 9.9626 Tf 36.586 0 Td [(AS)]TJ/F62 9.9626 Tf 12.41 0 Td [(and)]TJ/F67 9.9626 Tf 18.816 0 Td [(JA)]TJ/F62 9.9626 Tf 12.41 0 Td [(arrays,)-207(wh)1(er)18(e)]TJ/F60 9.9626 Tf 61.625 0 Td [(m)]TJ/F62 9.9626 Tf 9.825 0 Td [(is)-196(equal)-195(to)-196(the)-196(num-)]TJ -258.125 -11.955 Td [(ber)-197(of)-198(r)18(ows)-197(of)-197(the)-198(matrix,)]TJ/F60 9.9626 Tf 110.796 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F62 9.9626 Tf 35.914 0 Td [(is)-197(the)-198(maximum)-197(number)-197(of)-198(nonzer)18(o)-197(elements)]TJ -146.71 -11.956 Td [(in)-220(every)-220(r)18(ow)-221(and)]TJ/F60 9.9626 Tf 76.764 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F62 9.9626 Tf 33.172 0 Td [(is)-220(the)-220(average)-221(number)-220(of)-220(nonzer)18(os.)-300(Ther)18(efor)18(e)-220(a)-220(single)]TJ -109.936 -11.955 Td [(densely)-250(populated)-250(r)18(ow)-250(can)-250(seriously)-250(af)18(fect)-250(the)-250(total)-250(size)-250(of)-250(the)-250(allocation.)]TJ 14.944 -12.003 Td [(T)92(o)-385(li)1(mit)-385(this)-385(ef)18(fect)1(,)-419(in)-384(the)-385(HLL)-384(format)-385(we)-384(br)18(eak)-385(the)-384(original)-385(matrix)-384(into)]TJ -14.944 -11.955 Td [(equally)-283(sized)-284(gr)18(oups)-283(of)-283(r)18(ows)-283(\050called)]TJ/F60 9.9626 Tf 163.394 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-292(and)-283(then)-283(stor)18(e)-284(these)-283(gr)18(oups)-283(as)-283(in-)]TJ -185.152 -11.955 Td [(dependent)-304(matrices)-304(in)-305(ELLP)92(ACK)-304(format.)-473(The)-304(gr)18(oups)-304(can)-305(be)-304(arranged)-304(select-)]TJ 0 -11.955 Td [(ing)-253(r)18(ows)-252(in)-253(an)-253(arbitrarily)-252(manner;)-255(indeed,)-253(if)-253(the)-252(r)18(ows)-253(ar)18(e)-253(sorted)-252(by)-253(decr)18(easing)]TJ 0 -11.955 Td [(number)-256(of)-255(nonzer)18(os)-256(we)-255(obtain)-256(essentially)-255(the)-256(JAgged)-255(Diagonals)-256(format.)-327(If)-255(the)]TJ +/F75 9.9626 Tf -12.404 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 99.587 263.883 Tm [(The)]TJ/F78 9.9626 Tf 0.98 0 0 1 118.234 263.883 Tm [(hacked)-236(ELLP)132(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 190.781 263.883 Tm [(\050)]TJ/F75 9.9626 Tf 0.98 0 0 1 194.032 263.883 Tm [(HLL)]TJ/F84 9.9626 Tf 0.98 0 0 1 214.096 263.883 Tm [(\051)-236(format)-236(alleviates)-236(the)-236(main)-236(pr)19(oblem)-236(of)-236(the)-236(ELLP)94(ACK)]TJ 0.989 0 0 1 99.895 251.928 Tm [(format,)-252(that)-253(is,)-252(the)-252(amount)-253(of)-252(memory)-252(r)18(equir)18(ed)-252(by)-252(padding)-252(for)-253(sparse)-252(matrices)]TJ 1 0 0 1 99.895 239.973 Tm [(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 1.02 0 0 1 114.839 227.97 Tm [(The)-421(number)-421(of)-422(elements)-421(allocated)-421(to)-421(padding)-421(is)]TJ/F181 10.3811 Tf 1 0 0 1 345.511 227.97 Tm [([)-24(\050)]TJ/F78 9.9626 Tf 7.403 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf 8.039 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F181 10.3811 Tf 34.072 0 Td [(\051)]TJ/F179 10.3811 Tf 6.874 0 Td [(\000)]TJ/F181 10.3811 Tf 10.919 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf -338.123 -11.955 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.104 0 Td [(\051)-537(=)]TJ/F78 9.9626 Tf 23.266 0 Td [(m)]TJ/F179 10.3811 Tf 10.451 0 Td [(\003)]TJ/F181 10.3811 Tf 7.891 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F179 10.3811 Tf 36.523 0 Td [(\000)]TJ/F78 9.9626 Tf 10.919 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.103 0 Td [(\051)-23(])]TJ/F84 9.9626 Tf 1.02 0 0 1 266.856 216.015 Tm [(for)-382(both)]TJ/F131 9.9626 Tf 1 0 0 1 307.954 216.015 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 322.291 216.015 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 343.374 216.015 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 357.711 216.015 Tm [(arrays,)-416(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 424.587 216.015 Tm [(m)]TJ/F84 9.9626 Tf 1.02 0 0 1 436.341 216.015 Tm [(is)]TJ 0.995 0 0 1 99.895 204.06 Tm [(equal)-252(to)-252(the)-252(number)-252(of)-252(r)18(ows)-252(of)-252(the)-252(matrix)1(,)]TJ/F78 9.9626 Tf 1 0 0 1 287.784 204.06 Tm [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F84 9.9626 Tf 0.995 0 0 1 324.229 204.06 Tm [(is)-252(the)-252(maximum)-252(number)-252(of)]TJ 0.998 0 0 1 99.895 192.104 Tm [(nonzer)18(o)-251(elements)-251(in)-251(every)-251(r)18(ow)-252(and)]TJ/F78 9.9626 Tf 1 0 0 1 257.847 192.104 Tm [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F84 9.9626 Tf 0.998 0 0 1 291.322 192.104 Tm [(is)-251(the)-251(average)-251(number)-252(of)-251(nonzer)18(os.)]TJ 1.017 0 0 1 99.587 180.149 Tm [(Ther)18(efor)17(e)-245(a)-246(single)-245(densely)-246(populated)-245(r)17(ow)-245(can)-246(seriously)-246(af)18(fec)1(t)-246(the)-246(total)-245(size)-246(of)]TJ 1 0 0 1 99.895 168.194 Tm [(the)-250(allocation.)]TJ 1.02 0 0 1 114.839 156.191 Tm [(T)90(o)-335(limit)-336(this)-335(ef)18(fect,)-358(in)-336(t)1(he)-336(HLL)-335(format)-336(we)-335(br)18(eak)-336(the)-335(original)-336(matrix)-335(into)]TJ 0.985 0 0 1 99.895 144.236 Tm [(equally)-254(sized)-253(gr)18(oups)-253(of)-254(r)18(ows)-253(\050called)]TJ/F78 9.9626 Tf 0.985 0 0 1 259.082 144.236 Tm [(hacks)]TJ/F84 9.9626 Tf 0.985 0 0 1 280.514 144.236 Tm [(\051,)-254(and)-253(then)-254(stor)19(e)-254(these)-253(gr)18(oups)-254(as)-253(inde-)]TJ 1.02 0 0 1 99.596 132.281 Tm [(pendent)-249(matrices)-249(in)-249(ELLP)90(ACK)-249(format.)-315(The)-249(gr)18(oups)-249(can)-249(be)-249(arranged)-249(selecting)]TJ 1.02 0 0 1 99.895 120.326 Tm [(r)18(ows)-332(in)-331(an)-331(arbitrarily)-331(manner;)-374(indeed,)-353(if)-331(the)-331(r)18(ows)-332(ar)18(e)-331(sorted)-331(by)-331(decr)17(easing)]TJ 0 g 0 G - 164.383 -29.888 Td [(168)]TJ + 1 0 0 1 264.279 90.438 Tm [(171)]TJ 0 g 0 G ET endstream endobj -2076 0 obj +2096 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/ell.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2112 0 R +/PTEX.InfoDict 2133 0 R /BBox [0 0 447 205] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2113 0 R +/R7 2134 0 R >>/XObject << -/R8 2114 0 R ->>/Font << /R9 2115 0 R/R11 2116 0 R>> +/R8 2135 0 R +>>/Font << /R9 2136 0 R/R11 2137 0 R>> >> /Length 2281 /Filter /FlateDecode @@ -29235,7 +29654,7 @@ x Íy-?ýíùï¯ßñGz·5®„ùËéOß}àMžså¾Atû·ÔÇÿ|THF endstream endobj -2114 0 obj +2135 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29254,7 +29673,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;Y¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà endstream endobj -2118 0 obj +2139 0 obj << /Filter /FlateDecode /Length 171 @@ -29263,7 +29682,7 @@ stream xœ]Mƒ F÷œ‚àOÛĸ±mš¶Àa0,‚¸èí; vÑ„ß›|ˆ~¸ÖD.ÁÁ #×ƪ€‹[ q2–•WâNy‡Yz&ú›ôïGNÔßåŒâYžóM¹9à.^i'dmQt­ÖC«þžªMõž¬)YŸ:2èDØ^26Y?‚iRªt4à°†€6æÞ¹Wêc,þ¾æO§Å¾=+V endstream endobj -2120 0 obj +2141 0 obj << /Filter /FlateDecode /Length 191 @@ -29273,7 +29692,7 @@ x â ±—Uˆ}íuT-mËüǸT¯)ÏuɺDÞyøýC ±¸(Š|iÑ_À endstream endobj -2121 0 obj +2142 0 obj << /Filter /FlateDecode /Length1 11124 @@ -29322,7 +29741,7 @@ B “žÑ endstream endobj -2122 0 obj +2143 0 obj << /Filter /FlateDecode /Length1 3512 @@ -29338,18 +29757,18 @@ a lþ'÷uþoL|E÷¾r«Ço¸ß9®ñߺӣú¾Á( endstream endobj -2129 0 obj +2150 0 obj << -/Length 7889 +/Length 8640 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 99.895 706.129 Td [(r)18(ows)-336(ar)18(e)-337(not)-336(in)-336(the)-337(original)-336(or)18(der)74(,)-358(then)-336(an)-337(additional)-336(vector)]TJ/F60 9.9626 Tf 272.611 0 Td [(rIdx)]TJ/F62 9.9626 Tf 20.507 0 Td [(is)-336(r)18(equir)18(ed,)]TJ -293.118 -11.955 Td [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 14.944 -12.021 Td [(The)-391(multiple)-390(ELLP)92(ACK-like)-391(buf)18(fers)-390(ar)18(e)-391(stacked)-390(together)-391(inside)-391(a)-390(single,)]TJ -14.944 -11.955 Td [(one)-395(dimensional)-394(array;)-467(an)-395(additional)-395(vector)]TJ/F60 9.9626 Tf 204.328 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 50.048 0 Td [(is)-395(pr)18(ovided)-394(to)-395(keep)]TJ -254.376 -11.956 Td [(track)-288(of)-287(the)-288(individual)-287(submatrices.)-423(All)-287(hacks)-288(have)-287(the)-288(same)-287(number)-288(of)-287(r)18(ows)]TJ/F60 9.9626 Tf 0 -11.955 Td [(hackSize)]TJ/F62 9.9626 Tf 34.49 0 Td [(;)-237(hence,)-235(the)]TJ/F60 9.9626 Tf 51.365 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.417 0 Td [(vector)-231(is)-231(an)-231(array)-230(of)]TJ/F93 10.3811 Tf 89.103 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.337 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-192(+)]TJ/F62 9.9626 Tf 15.989 0 Td [(1)-231(elements,)]TJ -294.657 -11.955 Td [(each)-338(one)-338(pointing)-338(to)-338(the)-338(\002rst)-338(index)-338(of)-338(a)-337(submatrix)-338(inside)-338(the)-338(stacked)]TJ/F60 9.9626 Tf 314.252 0 Td [(cM)]TJ/F62 9.9626 Tf 13.46 0 Td [(/)]TJ/F60 9.9626 Tf 6.037 0 Td [(rP)]TJ/F62 9.9626 Tf -333.749 -11.955 Td [(buf)18(fers,)-449(plus)-409(an)-409(additional)-409(element)-409(po)1(inting)-409(past)-409(the)-409(end)-409(of)-409(the)-409(last)-409(block,)]TJ 0 -11.955 Td [(wher)18(e)-261(the)-261(next)-261(one)-261(would)-261(begin.)-344(W)92(e)-261(thus)-261(have)-261(the)-261(pr)18(operty)-261(that)-261(the)-261(elements)]TJ 0 -11.955 Td [(of)-353(the)]TJ/F60 9.9626 Tf 29.73 0 Td [(k)]TJ/F62 9.9626 Tf 4.597 0 Td [(-th)]TJ/F60 9.9626 Tf 15.879 0 Td [(hack)]TJ/F62 9.9626 Tf 21.447 0 Td [(ar)18(e)-353(stor)18(ed)-353(between)]TJ/F67 9.9626 Tf 88.761 0 Td [(hackOffsets[k])]TJ/F62 9.9626 Tf 76.74 0 Td [(and)]TJ/F67 9.9626 Tf 20.381 0 Td [(hackOffsets[k+1])]TJ/F62 9.9626 Tf 83.686 0 Td [(,)]TJ -341.221 -11.956 Td [(similarly)-250(to)-250(what)-250(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ +/F84 9.9626 Tf 1.002 0 0 1 150.705 706.129 Tm [(number)-250(of)-250(nonzer)18(os)-251(we)-250(obtain)-250(essentially)-250(the)-250(JAgged)-250(Diagonals)-251(format.)-311(If)-250(the)]TJ 1.02 0 0 1 150.705 694.174 Tm [(r)18(ows)-295(ar)18(e)-294(not)-294(in)-295(the)-294(original)-294(or)18(der)72(,)-306(then)-294(an)-295(additional)-294(vector)]TJ/F78 9.9626 Tf 1.02 0 0 1 423.988 694.174 Tm [(rIdx)]TJ/F84 9.9626 Tf 1.02 0 0 1 444.477 694.174 Tm [(is)-294(r)17(equir)18(ed,)]TJ 1 0 0 1 150.705 682.219 Tm [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 0.981 0 0 1 165.649 670.198 Tm [(The)-255(multiple)-255(ELLP)94(ACK-like)-255(buf)18(fers)-255(ar)18(e)-255(stac)1(ked)-255(together)-255(inside)-255(a)-255(single,)-255(one)]TJ 0.993 0 0 1 150.705 658.242 Tm [(dimensional)-252(array;)-252(an)-251(additional)-252(vector)]TJ/F78 9.9626 Tf 0.993 0 0 1 326.015 658.242 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.993 0 0 1 374.299 658.242 Tm [(is)-252(pr)18(ovided)-251(to)-252(keep)-252(track)-252(of)]TJ 1.009 0 0 1 150.705 646.287 Tm [(the)-248(individual)-248(submatrices.)-308(All)-248(hacks)-249(have)-248(the)-248(same)-248(number)-248(of)-248(r)18(ows)]TJ/F78 9.9626 Tf 1.009 0 0 1 458.348 646.287 Tm [(hackSize)]TJ/F84 9.9626 Tf 1.009 0 0 1 493.148 646.287 Tm [(;)]TJ 0.985 0 0 1 150.705 634.332 Tm [(hence,)-255(the)]TJ/F78 9.9626 Tf 0.985 0 0 1 196.944 634.332 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.985 0 0 1 244.865 634.332 Tm [(vector)-254(is)-255(an)-254(array)-255(of)]TJ/F181 10.3811 Tf 1 0 0 1 333.788 634.332 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-210(+)]TJ/F84 9.9626 Tf 0.985 0 0 1 405.427 634.332 Tm [(1)-254(elements,)-255(each)-254(one)]TJ 0.985 0 0 1 150.406 622.377 Tm [(pointing)-253(to)-253(the)-253(\002rst)-253(index)-253(of)-253(a)-253(submatrix)-254(ins)1(ide)-254(the)-253(stacked)]TJ/F78 9.9626 Tf 0.985 0 0 1 408.705 622.377 Tm [(cM)]TJ/F84 9.9626 Tf 0.985 0 0 1 421.963 622.377 Tm [(/)]TJ/F78 9.9626 Tf 0.985 0 0 1 427.91 622.377 Tm [(rP)]TJ/F84 9.9626 Tf 0.985 0 0 1 440.206 622.377 Tm [(buf)18(fers,)-253(plus)]TJ 1.02 0 0 1 150.705 610.422 Tm [(an)-269(additional)-269(element)-268(pointing)-269(past)-269(the)-269(end)-269(of)-268(the)-269(last)-269(block,)-275(wher)18(e)-269(the)-269(next)]TJ 1.006 0 0 1 150.705 598.467 Tm [(one)-248(would)-249(begin.)-308(W)92(e)-249(thus)-248(have)-249(the)-248(pr)18(operty)-249(that)-248(the)-249(el)1(ements)-249(of)-248(the)]TJ/F78 9.9626 Tf 1 0 0 1 456.901 598.467 Tm [(k)]TJ/F84 9.9626 Tf 1.006 0 0 1 461.498 598.467 Tm [(-th)]TJ/F78 9.9626 Tf 1.006 0 0 1 476.426 598.467 Tm [(hack)]TJ/F84 9.9626 Tf 0.995 0 0 1 150.705 586.511 Tm [(ar)18(e)-252(stor)18(ed)-251(between)]TJ/F131 9.9626 Tf 1 0 0 1 236.017 586.511 Tm [(hackOffsets[k])]TJ/F84 9.9626 Tf 0.995 0 0 1 311.738 586.511 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 331.016 586.511 Tm [(hackOffsets[k+1])]TJ/F84 9.9626 Tf 0.995 0 0 1 414.702 586.511 Tm [(,)-252(similarly)-252(to)-252(what)]TJ 1 0 0 1 150.705 574.556 Tm [(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ 0 g 0 G ET -1 0 0 1 146.769 464.41 cm +1 0 0 1 197.579 452.455 cm q .50096 0 0 .50096 0 0 cm q @@ -29358,20 +29777,20 @@ q Q Q 0 g 0 G -1 0 0 1 -146.769 -464.41 cm +1 0 0 1 -197.579 -452.455 cm BT -/F62 9.9626 Tf 134.646 442.492 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 185.456 430.537 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -19.807 -24.042 Td [(W)55(ith)-207(this)-206(data)-207(str)8(uctur)18(e)-206(a)-207(very)-206(long)-207(r)18(ow)-207(only)-206(af)18(fects)-207(one)-206(hack,)-216(and)-206(ther)18(efor)18(e)]TJ -14.944 -11.955 Td [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_hll_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ + 0.982 0 0 1 165.649 406.495 Tm [(W)56(ith)-254(this)-254(data)-254(str)8(uctur)19(e)-254(a)-254(very)-254(long)-254(r)18(ow)-254(only)-254(af)19(f)-1(ects)-254(one)-254(hack,)-254(and)-254(ther)19(efor)18(e)]TJ 1 0 0 1 150.705 394.54 Tm [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_hll_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 244.903 cm +1 0 0 1 150.705 232.948 cm 0 0 343.711 137.484 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29380,7 +29799,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 371.728 Td [(type)]TJ +/F231 8.9664 Tf 163.108 359.772 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29400,12 +29819,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(HLL)-525(format.)-525(\050Hacked)-525(ELL\051)]TJ + 0 -10.958 Td [(!)-525(HLL)-525(format.)-525(\050Hacked)-525(ELL\051)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29415,7 +29834,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf 0 -10.959 Td [(integer)]TJ +/F231 8.9664 Tf 0 -10.959 Td [(integer)]TJ 0 g 0 G [(\050psb_ipk_\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29454,12 +29873,12 @@ BT [-525(idiag\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 18.83 -10.959 Td [(hkoffs\050:\051)]TJ/F69 5.1905 Tf -15.277 0 Td [(,)]TJ/F91 5.1905 Tf 0.609 0 Td [(!)]TJ + 18.829 -10.959 Td [(hkoffs\050:\051)]TJ/F134 5.1905 Tf -15.277 0 Td [(,)]TJ/F179 5.1905 Tf 0.61 0 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf -4.162 -10.959 Td [(real)]TJ +/F231 8.9664 Tf -4.162 -10.959 Td [(real)]TJ 0 g 0 G [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29478,48 +29897,48 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.918 Td [(contains)]TJ + -9.415 -21.918 Td [(contains)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 4.707 -10.958 Td [(....)]TJ + 4.708 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.707 -10.959 Td [(end)-525(type)]TJ + -4.708 -10.959 Td [(end)-525(type)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F59 9.9626 Tf -12.404 -39.966 Td [(Diagonal)-250(storage)]TJ/F62 9.9626 Tf 0 -19.092 Td [(The)-399(DIAgonal)-399(\050DIA\051)-399(format)-399(\050shown)-399(in)-400(Figur)18(e)]TJ +/F75 9.9626 Tf -12.403 -39.966 Td [(Diagonal)-250(storage)]TJ/F84 9.9626 Tf 1.012 0 0 1 150.396 180.167 Tm [(The)-248(DIAgonal)-248(\050DIA\051)-247(format)-248(\050shown)-248(in)-248(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-399(8)]TJ + [-248(8)]TJ 0 g 0 G - [(\051)-399(has)-399(a)-399(2-dimensional)-399(array)]TJ/F67 9.9626 Tf 0 -11.955 Td [(AS)]TJ/F62 9.9626 Tf 13.717 0 Td [(containing)-327(in)-327(each)-327(column)-326(the)-327(coef)18(\002cients)-327(along)-327(a)-327(diagonal)-327(of)-326(the)-327(matrix,)]TJ -13.717 -11.955 Td [(and)-302(an)-302(integer)-302(array)]TJ/F67 9.9626 Tf 94.018 0 Td [(OFFSET)]TJ/F62 9.9626 Tf 34.391 0 Td [(that)-302(determines)-302(wher)18(e)-302(each)-302(diagonal)-302(starts.)-466(The)]TJ -128.409 -11.955 Td [(diagonals)-250(in)]TJ/F67 9.9626 Tf 56.528 0 Td [(AS)]TJ/F62 9.9626 Tf 12.951 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ -54.535 -12.021 Td [(The)-194(code)-193(to)-194(compute)-193(the)-194(matrix-vector)-194(pr)18(oduct)]TJ/F60 9.9626 Tf 206.92 0 Td [(y)]TJ/F93 10.3811 Tf 7.998 0 Td [(=)]TJ/F60 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 14.746 0 Td [(is)-194(shown)-193(in)-194(Alg.)]TJ + [(\051)-248(has)-248(a)-247(2-dimensional)-248(array)]TJ/F131 9.9626 Tf 1 0 0 1 483.955 180.167 Tm [(AS)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.705 168.212 Tm [(containing)-223(in)-222(each)-223(column)-223(the)-222(coef)18(\002cients)-223(along)-223(a)-222(diagonal)-223(of)-223(the)-222(matrix,)-229(and)-223(an)]TJ 0.98 0 0 1 150.705 156.257 Tm [(integer)-254(array)]TJ/F131 9.9626 Tf 1 0 0 1 208.91 156.257 Tm [(OFFSET)]TJ/F84 9.9626 Tf 0.98 0 0 1 242.771 156.257 Tm [(that)-254(determines)-254(wher)19(e)-254(each)-254(diagonal)-254(starts.)-316(The)-253(diagonals)]TJ 1 0 0 1 150.705 144.302 Tm [(in)]TJ/F131 9.9626 Tf 11.188 0 Td [(AS)]TJ/F84 9.9626 Tf 12.951 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ 1.01 0 0 1 165.649 132.281 Tm [(The)-248(code)-248(to)-249(compute)-248(the)-248(matrix-vector)-248(pr)17(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 378.488 132.281 Tm [(y)]TJ/F181 10.3811 Tf 8.011 0 Td [(=)]TJ/F78 9.9626 Tf 11.598 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 1.01 0 0 1 413.412 132.281 Tm [(is)-248(shown)-249(in)-248(Alg.)]TJ 0 0 1 rg 0 0 1 RG - [-193(2)]TJ + [-248(2)]TJ 0 g 0 G - [(;)-213(it)]TJ -256.192 -11.955 Td [(costs)-205(one)-205(memory)-206(r)18(ead)-205(per)-205(outer)-205(iteration,)-214(plus)-205(thr)18(ee)-206(memory)-205(r)18(eads,)-214(one)-205(mem-)]TJ 0 -11.955 Td [(ory)-322(write)-321(and)-322(two)-321(\003oating-point)-322(operations)-322(per)-321(inner)-322(iteration.)-525(The)-321(accesses)]TJ + [(;)]TJ 1.02 0 0 1 150.705 120.326 Tm [(it)-311(costs)-311(one)-311(memory)-311(r)18(ead)-311(per)-311(outer)-311(iteration,)-327(plus)-311(thr)18(ee)-311(memory)-311(r)18(eads,)-328(one)]TJ 0 g 0 G - 164.384 -29.888 Td [(169)]TJ + 1 0 0 1 315.088 90.438 Tm [(172)]TJ 0 g 0 G ET endstream endobj -2123 0 obj +2144 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hll.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2134 0 R +/PTEX.InfoDict 2154 0 R /BBox [0 0 494 214] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2135 0 R ->>/Font << /R8 2136 0 R/R10 2137 0 R>> +/R7 2155 0 R +>>/Font << /R8 2156 0 R/R10 2157 0 R>> >> /Length 2880 /Filter /FlateDecode @@ -29541,7 +29960,7 @@ l Ù<øÇ×O?Ó‚•2.šg9_ÿ*×Ps ŸOøYT¨•®U¼v²rƈºŸÂãSóøbzh”8†Ñ½ÂXZÊü°ó`—ú矆@8èwàô)aÿ…¢ªküœËEvëñ»›šK°|dG˜s%´D YšVòÔ@( ázé‹ñCüÿæ׬á¿8Ç7•xVÇ‹ éÑi3kè4½ðw(Ölú¸V*|ik¬Ô¦âÓ*økµøåÀ—žÑÑ÷K•_á•Box:ÀÀ¯¿Æë‘HÏ+x´“êˆÆi[‡;¬<ž¿Á²ÐùÅ+i œ°ùŸø`8¼=ÿ³·‡ endstream endobj -2139 0 obj +2159 0 obj << /Filter /FlateDecode /Length 214 @@ -29550,7 +29969,7 @@ stream xœ]Á‚0 †ï{Š½Á@²ì¢£¾ÀÙ±L<øö¶EOK šp#Ý&ÉQZ]ŒV«ÓqA« ×͈ÆãøÝn ¸G6Š¨Ñë4(„‡ ÇéÍÍé~¹R6èõ&Ž{øaÎxÿ.[±D½˜ÐK·ÈQ7idZñ?:õ;> +stream +2040 0 2041 59 2042 118 2043 177 2036 235 2049 386 2035 552 2045 699 2046 843 2047 987 +2051 1132 2048 1190 2055 1341 2053 1480 2057 1624 2054 1683 2063 1791 2058 1948 2059 2093 2060 2240 +2065 2382 581 2440 2066 2497 2067 2555 2068 2613 2062 2671 2072 2822 2061 2979 2069 3123 2070 3270 +2074 3414 2071 3473 2076 3624 2078 3742 2075 3800 2086 3881 2079 4074 2089 4250 2080 4425 2081 4608 +2082 4760 2083 4915 2084 5067 2088 5220 585 5279 589 5337 2085 5395 2100 5518 2092 5675 2093 5824 +2095 5971 2102 6118 593 6176 597 6233 2103 6290 2104 6348 2099 6406 2110 6544 2116 6683 2117 6863 +2098 6906 2112 7053 2107 7112 2113 7171 2114 7230 2115 7289 2109 7348 2121 7486 2133 7625 2134 7805 +2136 7848 2137 8053 2138 8342 2140 8563 2097 8776 2123 8922 2108 8980 2124 9039 2125 9098 2126 9157 +2127 9216 2128 9275 2129 9334 2130 9393 2131 9451 2119 9510 2132 9569 2120 9627 2149 9822 2154 9979 +2155 10159 2156 10202 2157 10505 2158 10710 2160 10923 2145 11144 2146 11291 2147 11438 2151 11585 2152 11644 +% 2040 0 obj << -/Length 8015 +/D [2037 0 R /XYZ 150.705 444.811 null] >> -stream -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 150.705 706.129 Td [(to)]TJ/F67 9.9626 Tf 12.29 0 Td [(AS)]TJ/F62 9.9626 Tf 14.063 0 Td [(and)]TJ/F67 9.9626 Tf 20.47 0 Td [(x)]TJ/F62 9.9626 Tf 8.833 0 Td [(ar)18(e)-362(in)-361(strict)-362(sequential)-362(or)18(der)74(,)-389(ther)18(efor)18(e)-362(no)-361(indir)18(ect)-362(addr)18(essing)-362(is)]TJ -55.656 -11.955 Td [(r)18(equir)18(ed.)]TJ -0 g 0 G -ET -1 0 0 1 197.579 574.688 cm -q -.49594 0 0 .49594 0 0 cm -q -1 0 0 1 0 0 cm -/Im9 Do -Q -Q -0 g 0 G -1 0 0 1 -197.579 -574.688 cm -BT -/F62 9.9626 Tf 217.042 552.771 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ -0 0 1 rg 0 0 1 RG - [-250(5)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -0 g 0 G -0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 165.649 401.402 cm -0 0 313.823 115.567 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 187.467 506.308 Td [(do)]TJ -0 g 0 G - [-525(j)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(1)]TJ -0 g 0 G - [(,ndiag)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.414 -10.958 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050offset\050j\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(>)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(0)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -0 g 0 G - 9.415 -10.959 Td [(ir1)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(1)]TJ -0 g 0 G - [(;)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(ir2)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(m)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(-)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(offset\050j\051;)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(else)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -0 g 0 G - 9.415 -10.959 Td [(ir1)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(1)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(-)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(offset\050j\051;)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(ir2)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(m;)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(if)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(do)]TJ -0 g 0 G - [-525(i)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(ir1,ir2)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 9.415 -10.959 Td [(y\050i\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(y\050i\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(+)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(alpha)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ -0 g 0 G - [(as\050i,j\051)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ -0 g 0 G - [(x\050i)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(+)]TJ -0 g 0 G - [(offset\050j\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(do)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(do)]TJ -0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F62 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ -0 g 0 G -0 g 0 G -0 g 0 G - -97.968 -26.976 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_dia_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 150.705 220.639 cm -0 0 343.711 115.567 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 163.108 325.546 Td [(type)]TJ -0 g 0 G - [(,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(extends)]TJ -0 g 0 G - [(\050psb_d_base_sparse_mat\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_d_dia_sparse_mat)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(DIA)-525(format,)-525(extended.)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf 0 -21.917 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(offset\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(nzeros)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(real)]TJ -0 g 0 G - [(\050psb_dpk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(data)]TJ -0 g 0 G - [(\050:,:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -21.918 Td [(end)-525(type)]TJ -0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -/F59 9.9626 Tf -12.403 -39.731 Td [(Hacked)-250(DIA)]TJ/F62 9.9626 Tf 0 -19.039 Td [(Storage)-362(by)-362(DIAgonals)-362(is)-362(an)-362(attractive)-362(op)1(tion)-362(for)-362(matrices)-362(whose)-362(coef)18(\002cients)]TJ 0 -11.955 Td [(ar)18(e)-247(located)-246(on)-247(a)-246(small)-247(set)-247(of)-246(diagonals,)-248(since)-246(they)-247(do)-246(away)-247(with)-247(storing)-246(explic-)]TJ 0 -11.955 Td [(itly)-361(the)-361(indices)-361(and)-361(ther)18(efor)18(e)-362(r)18(edu)1(ce)-362(signi\002cantly)-361(memory)-361(traf)18(\002c.)-643(However)74(,)]TJ 0 -11.955 Td [(having)-229(a)-229(few)-228(coef)18(\002cients)-229(outside)-229(of)-229(the)-228(main)-229(set)-229(of)-229(diagonals)-228(may)-229(signi\002cantly)]TJ 0 -11.955 Td [(incr)18(ease)-201(the)-201(amount)-202(of)-201(needed)-201(padding;)-217(mor)18(eover)74(,)-211(while)-201(the)-202(DIA)-201(code)-201(is)-201(easily)]TJ -0 g 0 G - 164.383 -29.888 Td [(170)]TJ -0 g 0 G -ET - -endstream -endobj -2146 0 obj +% 2041 0 obj << -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (./figures/dia.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 2154 0 R -/BBox [0 0 499 211] -/Resources << +/D [2037 0 R /XYZ 150.705 444.971 null] +>> +% 2042 0 obj +<< +/D [2037 0 R /XYZ 150.705 433.015 null] +>> +% 2043 0 obj +<< +/D [2037 0 R /XYZ 165.051 129.79 null] +>> +% 2036 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] -/ExtGState << -/R7 2155 0 R ->>/Font << /R8 2156 0 R/R10 2157 0 R>> >> -/Length 2502 -/Filter /FlateDecode +% 2049 0 obj +<< +/Type /Page +/Contents 2050 0 R +/Resources 2048 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2052 0 R +/Annots [ 2035 0 R 2045 0 R 2046 0 R 2047 0 R ] >> -stream -xœÝZ¹neÇÍïWÜ xÕûJ€$À‰á†a(¢íQ@9Ðﻪ»NuÝÖÈv Áཪ®åœîêõñóé.:þ“Ï—·ã«õüô¯#¸óçÃ]¹÷âúùýá[¾Jð§ï1\ù|[ŠVI~=>Ùo&ªP“7U¨‰÷‰U&Ë$í&é&µl&P,“Îòχ!¹Ak€Ò°’Ö\m+K¶µ;ÛÊ’mõ!Øæ!ÞÚs¹µ³xkoíÖÎ"·>ÜY¯FÝ\ÎÔ»;ƒ§Ì?ýýüóùOjútÔ\®”úYc»Zån€¦P7¤’ÏêÓÕœ? u`mù,%^±7•_ŽâýÕÛÒõ+º2r¼ªéî -5žˆÐ"}æ¨9 ¿@â–;—㇟ê]p™Š÷rÔë­v.e—{®ç‡ïß1ÿ¹<\m—³ì 6ï"9.v*³#ÍoU´NÉM×@^IU#°$PsôÅ ¹¡Q´â¼£Ÿcú¾ÙQJ®_5&Ã)æv…¶8E_®â&'|WNP1œ!#ü┊¿|¬à”]¸jœð}q‚FÑŠóŽÞŽÒ{a4F)¶F“ÔrrŠ©^QQûÐóÕ +RºR7€yÃ_ä•W5@&ùLa¨MÚÌðß8Œ±z—¼Æˆ•Ö¯vc&EV}I yîåj–Z¦…"îÙÅ«j"jКDPè3…¡&Ô¨`c1Æì2£6ÇÞ§F%1x)hfñЙ'%Ž»äH‹@l£¼fQ¼Þæ/´«Î5Ð,²•çä×ÂnÙߌ&ö«-nr§îè7©ŒÀé‘oéÞT!~¯˜XJâñì_œ-†W |⑳4ã,±Â¨ˆ(8½,¸K3]pžAÄ=çD²Ç‘³W3¡R¤2&WÇH3‹FsH„=ç}ö54®Èµ_ùRùd û•/tâ¦3dsl~×ý -Š±yõ…(Áe·bEãc6+ߟfhù¾6+hÔé¼CÇ$ŠtÊ¥‹@íéªãŠÔÇäõ•æw$>Kï#<;8ê7îRYÕ%„h^W™J*Ì+šÎÕ¦Š!_‘9Ð)hl¥Œù4äpnØÖ¼º‡ÝqùKœÊ56ÎÓ,@ …/¾)ߎÝç•©3w§¼Í+Ï+(ÅÕRœ -­æm¥Ð°Kã©Ž½®8½†Ëŵ2@þ2Úß'.#æ»õÞòvìÞ¯ºöB£ý7ÓoÝùb+â7ŒÊˆ÷çÚÅ☦xQ¿¸4ÞBL›ƨ_¥ó+J§•Êw“˹4ŒÛM3ß\¦ÄÝ -kE7úÍ -k%¯+0Y¯+hŸ¯+Ú®¯+hŸ¯+ڎוÿå!8:äÐW_i›œj -mQ´YOë"¿áê:ÚÆ-õãGä—C5-t^_õÍÊBýNÛÜžU†x‹óvì¹(2àX¥&TÚÓX5®*$1ÜlK‰Zx±ù­Sbè·N ­Ý:EdÓ)©¦­SD£1S ·N‘¬<›þ_܆G¼ÌðH.3<@#Ý° -$†;€m)ˆ8¹‚’…ÂKÌ(½ÆqW@È/Újˆ rAAãý,$t!]+nHE~Y] ‰wc°ß%¯/.Þ|ÖâSB£Ž æ0_¶#­q¦]EmOÍú«¨íµßü!¢®tÖ_EmOÞú«ˆöÀ'+bç[w£ºâ­}>ºk;^ÝïÛ&>DÍßã-?DmÏu*Z›ím‰·vÉväÿÓÜ~út|æ̓ÿäãåíüæùøêC£Íð|¦þl<.|·+éÊ%žÏoÇ_žÂãSæêËOþñ©ÐZÀßÝãSãóJϤ­|ËèáŒ}udáêãÏ8¾}&|ÿõ—:®§ËSõíxcXš8{ƒ¾7»Y¨$§+•_ø÷ˆÆ¢eAÓ„b­*ÃC4´ µt®µëŽæ˜2{,€î<ÆûIëeqS ã·‰d·Yp†[åG\c1—ÐAeå !#Çâ°JD¸óÜz–(Êmi&²žh³ yO‚K¹õØæeÔ‡ã=T7Õ2 È5‡rS°JD¸ó˜Ü®&g_妚‰Œ¯„nÕ §ðÍŽÁ ÕzY8õu&—SË~â\•‰æ`“;jfRG˜n˜Í@C«|*yu†¯ÑGÕZe*¿9‰³‘%åÒLP+Â=ƒÑÊ-Šm:ïèÇØ$gÇ%­~å)³Yâ€bËætqÆ"ÐRi梊(6(¤Õ]ú_è¤5¼ö8#”2õÕSEGÛx:IvãÑ¡ºÌÏ.¡P•r‹LÛwI“„ZLA܇àó4äïÄ…îbË‹ÈôhâN™Í‘@†ø`2 ƒ2QQ  ¿ºp²™¡1Ì¢iæÏfÜ!O2* -u´3º’Ñäh8¸ì“LË‹I3=Êï`Ù H­À©Lht‹7tíµý ¢ð 8à œˆ¾˜ ?,šUE=8xÚ‘k9#_ÎSçû^¹ ¡¡‹©¿J;#ô8úMytFžçù©ñü0•è| h r.òídæ€5:*™j!¯qãÿKq­Øq‹\Oq­L|Ó"›qS 7 òÊ PèÈ Êsë|Ž¥ó¡¤&;ÝGh-„‚O¶•ÿÛ%Ïb€ì;:H5i”ðnö92@&‡J—Óê—ÝdúøG@^)D£ $‚‚ÜXXf­£"ÀMÅ1JAåT45Ír’üÅÕ† 3µÜ@d“€ -rca™ñ8ÏzD—‹bH…°d'¥¢šÃ\LÀ/ó¹¬1ÙŒ,0F c¨)T#  7Ì,¥j7ß%Î¥šäÛæ›RÙ6ßq4›/ÉÙ¸g]åû\¦—×\ÃW\¬ò+3,êmó½Lr´›ïJŽ·Í7ñÅÓÐÈþ¶ù&þ?9³ù.y’QQШ» Ñ•Œ&Gs¼m¾7ì“LÏ‹I7=šûmóM¹m›/]”o›/ÉvóUQxT»ù._àlÛæ»òâ›QUÔÌá×.Ü$Rg{çæñÊØcé‚Lçúqçþú1º‡ç×><>¾bûJ:ªŠÞËÃ_ƽ:dº’·p>yºovª†ç¿‘ã¿ûîã·ÏÓ‘¯ì-u„縑óß¿Ë&& -endstream -endobj -2159 0 obj +% 2035 0 obj << -/Filter /FlateDecode -/Length 177 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 654.503 359.001 666.562] +/A << /S /GoTo /D (precdata) >> >> -stream -xœ]1à EwNÁ ‰Ô,KºdhUµ½1!Co_I‡ßâë›Óur6Qöˆ^½ QcŽ°ù=* 3,Ö‘¦¥ÚªtP©j•°ñ&Ãû€â˜Êw¹{6—ÒiªGy [ -¢t s1#8ý÷ÕUÃlŽÉV‹"α’¡Cc×fÄb/Šû²íôåÅ9ሪ=Fp©œQbæxÖÁïÒàCvQùðY¢ -endstream -endobj -2161 0 obj +% 2045 0 obj << -/Filter /FlateDecode -/Length 197 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 584.479 418.548 596.539] +/A << /S /GoTo /D (vdata) >> >> -stream -xœ]Mƒ …÷œ‚ˆFmL»qѦi{ÄÁ° ꢷï0j]¼ Ìß#k»kçÝʳGœÍ Vn",ó ðFçY^ðÁ™õ ŠfÒeíM‡÷'Ç°;ßõÙ3¿ÐM¾×˜y€%hQû˜BIk?ü=Õ{AoÌ3“„ÀÈd™+’+Äš°Jh ›ËªP²*â ±Q$ĆFŸCÒÉι=7[ŒàWòLž’çá÷-a©Š£ØsÇbã -endstream -endobj -2162 0 obj +% 2046 0 obj << -/Filter /FlateDecode -/Length1 9528 -/Length 6467 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 514.456 418.548 526.516] +/A << /S /GoTo /D (vdata) >> >> -stream -xœÍY{xTÕµ_{ïsf&™Lfòž$™ÉÉ„À$&„wÉä1á‘á!$TÌ$!¼HB«L¨E4 p->¨ -Q/`ËÉDh@¯D¯¶­«µêµ+VÚ[ÚÔWkÌýí“€r¿~÷»ý¾ûÇ=;k­½×Z{¯µ×^gŸ½'ĈÈF$¨zÞÂüB2ž¬6 Åëê[†Û€U7nls6ç½-h¼Od~yEËÊuSÚæYº‰ÔÖ•ko[1¬?ýÔÎUMõË_½t¡‚È+™“W‘06f/Ql¢4²j]ÛwFìý (~mscýp;s(v]ýwZL«‡QŠ¶ûÖúuM#úÕÒ©–æÖ¶‘ö€”·lhjùÅ -ßçЯ!²;ÕûàE¹£ÄnJ'Š|88?4;rI½…´¡5‘‘€ÞÏŒ€töAÚGY4ÈÆÓKÔO³é•P5í¦tšŽP,ÝÆ^#A)§§ÈË\Ä©‚R˜J{è]º‰6ÐÇ4@9TI°xŒ¤J¦i‘ßWÒÝ‘ãЊ¦2ú`kÙBÊG}&Ïe>XÞé§ʉ¼y­Çèc–é¡™¨ý–âh uÐ?S<­¡W#—ä´©²Mìwä¡mW&*]‘[èz:J¿d•¨Í¡ÛÔw¢ŽÒZôz’¥°þÈÙÈ'ô‚¨ #}—î†Çaêç׉2µ›Ü”M7Ð\ª‡ôŸè]–ÀÆ‹@dL¤4²܃ô)÷ñŸ3üðÑ,ª£{éqDãm:G_0+›Äc‡PÞ`Tßo•ÔN·#¯CôÒa:ÎƳñ<…§ Z)4–n„l'í‡ý^:Ã*Y-ëg/ŠýjÁPq$1’ù$¡qT÷Ñ‹°ñ9+€,ˆLѦd(mjáå-˜árz”ÎÐðãÄý ú+‡ò!¿ƒwD–DžŠ| _,䢩4Ÿ–R3m¤oÓXÕ—èeú3»È£ yZyE½]ŒÜØfS)|Ÿí…{;V)L}(oc–qÌYLesÙ¶’íd²>ö.{—›¸‡¯ç¿ºxM¼¯LVÕHFJ¦ ØÕh ­Â -Ühßù>E¯Ð)–IJYfô6úɯçå(OòÓü±UìT.©w ýçÐÅH™‘e3‡vzQøK†cÙÖÊ>‚ç»ø³"V8„&&‰±HÔŠ»ÅnñïâçÊåòž:K­W™ë‡nz#Rùž|É¿ÆP.M¤)ÈŸȦ[à_ ÊÚD[¨‹îC¾ÜOÝtó>I§è—ôkúV€˜>¯†õuȺ­ì>”=ì0{‘½ÂN±Ù—²ðL”>™ó2^ÁWò­(»ùþ6?/F‰FÑ!:QöŠcâ]…E‰¨…(3ÕíêAÓkæóLsƒåg—.\w¹öòC4”6ô­¡‡^ú$²8rü÷R]O·ÁË=ÈÁý(O#ÑOègô+Ã×Og*2ÞÉ4dC.V­˜Í`³Pæ°ù(7¢,aKQêY[…ÒÁ:ÙwÙì{ì^ö€QÆÜö³²c(?f'P~Éβ߲߳O9’˜ d³—áù|fZÆgðy|ÊJÞŒÒÂ7ðX¡ƒ¼—ço‹áy¢^¬{ÄÄKâ-ñ•Â•\%_ñ+‹••ÊÊiå åå¢êRƒê*u¯ú’)Ý4Ñt£iéaÓÓyÓ%³É\mn0o2¿eŽX¼Ø­~Šy¥o>ù¦Ó¬UMT¾ÃÏâ½pŠu»3ñEb­¸OüB]Á…›½ÇºÄjqKäIQÁÿ*šÙb~’e -—Z$VЊ°CüCþ9ÿDIb‹øïXŽòÏìǼY”q“4¢¾©$)wªç‰ø¯¨ˆofýüq§¸3ò¯T¤îegÕ½ü r+<Îâ­ÞÆB§ŸóÕ|;Õ(Õ‹´qÿ¡úÄ{:¿›o){éc¡ñÏØ {»Æël¶’ÅoæÓØ!츗Y]`ë©…=@öû5ë#ÆžYÁjéÜƦà3öºð°·D4ÕJY6ObÕ|ß(ž7“Ã.ñ º V€Ü¹ò Ñ­xvó1ØÓ‚ØMÞd…䤇°ß>ô¼Ü±ÕwÔíȳÇE.- ZÆ_£"¼£ÔÐ]TH'ƒwS˜6E:Ùrìûs°rêck(ŸY±[¦À·|/’y&öÂ:Xý+öÿW±ëW²?Ò·™oV?å(R²C bg -aÿÝŽ²œ–¡õ(Ýo:ª¾IóX -‘âÚ‹,ŸnÆ7ç#ØO#?ü[J+¹ðÚy=z<:4“(wÑkŒÓfø<ïyµ2;5˜áj|£ªðM¶t~ ê÷–kµný‚QŸcÔwuê:¸ƒÎUån…ÜA½b㪮`¨ÃõX£Ë´²¦è¼\ꉶ¢jEMOÑZzXÊtfTxJ°¨‡“ŧô4­<¨§jåÒ]xƒõËõêù5Áòt§6/WgeZƒNZ©n÷*Tf˜ÑMeºÙ0ã^-gCÛÝ=¹ý];úÔòÅ,×–×ßT£‹úZi#λåzÊíçœ_71x|YͶoJÓEWйÚ-›]]ÛÜz÷üšoJ=×Öb {+B]0¼!¬\è†-¾µ¶Fg[aÐ-ç!ç4<»&-(9¡5n=J+ÕVu­ aaÒºtZp›'œ–8 ´ »kQæÑ‹ÓµÚúòQ=‰Ôµà¶ÞÔ€;õZI^n#n8¬=±ö‘JŒí›•¦«2£f¨ËZå‚«qeÒ#mÒAw7ºáI†9M•¨i*u5N…žZ†^úr¬Çj=ª,Ôå(ß!ûëª×¡¹»¾ ¬¿vá×rêG8&¯ã ’U™%W ò+uÝçÓÇ“ b.ÊÂÇéF{R^îÆ>®k-7ÂGÕˆm}mQ>‚ïñÈåÝÞ 4ôÎù5Ãm75¤‡)ï«ÕyHJú¯H’n”’Î+’«ÝCòøY’7‹$Ý’}õÏîHN®*ÒYòÿ n–W.Ô*ç/­q»B#±­\tMkX>õªl¤Æ†¸®x©YRoÁÒÉÀŸê­Ð‚«C3ñªÁG=¡¬F¤óÚáOÆPÈß›®Ž,51r,Åk2òyŸÙ‚68Ì]¡;B3‡qm´Çó¿ìÔ”½ òu·‘9éE¾kÛ×_Ӿƽ˜.‡•l^¹hiWWô5² -lV]]š»¢+ÔUßélÐܭ븨5]-ÁЕå؞®Wì¨Å$V±¢Âà˜èS|}šIÅ÷Î{L ίÛòã‘~ñao0Xèõ]gÐpÎØBCNUø¯âC~QgÃÉé†äƒpiéHeòÔáJ︼³%Ñâú€‹ÄY|TŒ^½9×–ØÀ`â²ãï¢nñkÒœâ½Þ¬ìÂ}'ÅÏ UœÂ÷Tv;¶ÅbÀŸŠã”îÂ9ôèˆähol\!•´Š{1½~à3€À @¡fq:;G -Ù]€|À<ɇÄ!ø¹ýíÀù€fÀN€B‹ÄÓàß"±xJ¬Á‡Ñ%vàbšº]|ß ÿšúø¸>ˆÇÑ–tßHûP)ÿÁÚÉ ЇÀO}иðºÄ#í¢Ýè×6B»Ek8Ãå(É€Ü (Ôv£¶¡Û3ìÖ–z@ A× S„ksØ£k´¹7%µ°!ÝŒÐoFä6#r›IhÓMÃ:ybt6Agt6!*¢öZ±`ì¸qoEÜ%_îœ1øßÞè–-ñmÄq,¼ºG¬ ç¸d+{§ -‹ŸÃ9–aؽ©£ w~ÝŠŠ–‰;BíR·É6õFÅHnSoÚèa -­[JbE#ý€S"p`"  ˆÆpV¾ë„˜Kë,ˆuuðÑ¡t¨JA9‹?) -©ÚBHÉx‘G~(ŒuÕùÙ”PTKTg”pD¹£ -¢QÕQj3®D;…p‰|Q,æ‰:¡öEúÃæ¢ ¦¢ »¬ÝVÝÚo=cUuS¿éŒiÀ4hRݦSÀTm -™ZL¦]¦nSÔ.Ó.3Y[¬Vá°º­Ö€µÚªºÌ¬»d«h/-°ÐØPã:ðÝâf@V£¡¸|&´€3¨€ªhÙ¡g‡ž\;¸vp XJª!@ˈÔtUr¥Ô”ÀHcÁEl€e 0-Z6´lÐ:Ã/ÁC°P o€¬¾"+‘‡&C>hè\‘d_~)P?¦,ÓDzî±l×Xð—2âããë´:o]NÝ~¥Ykö6ç4ïWæió¼óræíWŠµboqNñ~%_Ë÷æçäïW\šËëÊqíWvV©:YuºJ©«j®ê¨S°t½a_A¡A3½’ §¦N±—ÜÀ`:uÀûg‚ìÀ.@> Ð Pùƒû ¸Ï€û ÍÔTôzFn1À®™äï3d²&åü¹À䇋&Ì+©Â¶[Øû0ä‡ íáÚƒ¯üy#úÝ_j¹WúÉMp©±Ý-Åk¸”Šu€€J§Å: ÀèÀ.@ à@KQ–ˆ%ü”Ãü°È ØÆ'¹(9Yþgq”8x rÁÆž2ðþÇÀÅÎ -Äζ}9ÛöÂlÛ]³mcPá9øÙØn{ÖÛ³%¶y%¶±%6Œ–B²ñ$›$fÿià¹Î $zl_ylŸylöØóØÖ{l7xd¿Qx‡m<ÑÀV‰qI•x¶³V—í'.Û—mŠËVbc{¬S©3 œ.1ûôY{¹¢žcŸR9FbaÿXW'ƒ°HØ_2öϹöïù[Øÿ}×óì+f|ÚØ—á¬s®’$ö9›¥Èög#ôÏl®K.\žgáâæbÈϼ ÿöo‘úO¢ÿÐ~‚2-Rÿq\%ÝÇfüÇFú=Îm€ÕG¹·Áê(×°úP8÷¸ßçÞr8w-ÈΰW:¸&ìç*‰c+)‹KÝFòréIՈřy-èŒáÎÁp®ìU. ô±²°6dŒôòy¦QµaÎÖŒIŽ&Íbi†Óéä5h,³ÎÛ(Ó –°¶£˜žõžsýÅÿœœ8}Áìá½®žÇü£ù6+|ÈõÆq®°ëtnósý\{ÎõJV[võçöY 8™ÛÇÙQW‚¬C—³c®#¹+]Ïh†t¿)–zŸ?Ïõˆ¶ÔµÇ‹vص%÷yé­ÃŒC\›;ÝUå?äªðö1ˆ~ D»Š´ ®i`Oíc³z¹ÆgõIW -0Æ¡c®q°˜­®Ü8åŸDfÖÈ5·™Ì‹ÍóÍ×›'˜óÌnóhó(s¢%Þâ°ÄZb,Ñ‹ÅdQ,ÜB–ľÈ@À'Ïm‰&‡ñŸ"±bÔ\bnüôGœY8Þ=ATòÊ…¥L¯¤ÊE¥ú_eŸ9²@Ÿê«Ô-Õߪéaì¾Z´t~w£E5HPÉÚš./wlj±ü­÷¦Kºië½µµ¬Rïo¤Ê·þåBÌ#‡TU+uRòÆbgqüô¸iå…F°ïëÇéûæã­?X¹°Fzt­^(+‘ѵ•ú y-<Î×óæ`ùqÞ"ImÍqv;_\ ùìöòÚ«j”É[ F~I¤Z/eJ5Êd½†Z•¡†4Í –÷df+½ÄfI%¤ÏK†ÒÊá±²`cUK5žAYÆXY[VÜŒc´RÝ¢¼’¼)ÂÛ)E±òç—‘óŽë=é'ØS#"ØqZ)ùÈ\]~õ¯µµµMB{»¸­ÝiðÚðÒzVêò²è×ýA=*¯er9ÚGž²š€ã¤ÿ´Ÿ7û;ü;ýûüGüj{{-Øñ'3OgòºÌæÌŽÌ™û2dš¤à¦šcÿ¾Ì?eŠvdkÃ,7l¶ƒâO6ÛÚ[åC0Ð -6çk÷•Õ”dR#N½ 'ô’ +U»6¶B’Ám•ÝÚ%½ªÇåÅY5ÎÌd¦9=œ=Ç_ÀaÕÌO†IUúø Ï -Š6ËÊQF©“zrN‚¥(v »™œ>Ç—þËþ¹ŽÏýs.û©uÇ% ñž8Oœ[?]r‹þK•.’[é76ÿ…¬“×à$¨8àæjçèå“;TÆŒ nìVÍBlëfg˜‰õ±‰G©SY´TZ»¼ÌïðSþàñl™/Á“äYÈÕËyÊCÆ픋éRWá¼Sø®Ùi–âuÃDg(U"{FròX³ß<ËüC³)àþ–²Ôò­”¥Î[,mqmñZ‹ÝwØz8ö”z*åß寮ëp¥|•’„s€’ª¦'¥&§¦Œvš£R¬Në艩3RïIÙé6;S9OIKI5ÙD*WMΔä¤Ds‚bëc«QQĘâÎ(Õ'&bjÚÎT¶/õH*O=!& ž÷ö2“ÑÇî ØÈô›y u Í  JB3˜T¹îN·¹»ÝÜúû -±³±@ ±Ž7󾓟ä§ùYþ'ná©®ì>Óéú,›sÎa®cÙú/—Íù|ÙÇ,Ò…ËËÖû‹/¯÷‹‹O™?¦qG¬›CÝürìˈìú Ëh™L,ò1á™D4ib¶–i2k“'O(”S3™¹ÙS8yòq¨îÒ«gî½·.ß—íM=ýÈþ_Ì>ðÕtÖ°vIES‡.zY){ø‡[´¯?þ“·v­\ùÄÑ¡Á©ŽñyÆz b½LX¯dz(p†œÝΧB΀“o¤»ˆÇ–$°Õ8µF±nÊD¬dÝ‚º†Î%;[MÉàû4€ó˜Gq¦FYb¸ ì/PŸˆµâ&Ø;ì»ìÝvÅžšr‚g±s#òùç8.œsÈì-öÁ˜F_\¸Ä¾ðùÆ ë—%x'Ä%&'§$y&Mç“â&ŽÉF(̃l¶'ÁÓMMŽ6{Ó¼¥ÊO¿¸mÃÔ îõòÑãoçïïçÎpá¤C³#çÅ1Geщp½ÅSbXU“$±ÙÒú˜=•FÙlÈewgd+Ùq’[GÍÔA;©ïiª÷Ëøze‡×u–ôBñ…ñe·ªX––•™ÅMœ ÆMfï¨ôÑéé”m÷Z³©)©ÜäQâÈeJk`‰±¨%Ç –ÅÜ ,ÝïHj Ôh ã*Ñ8ÆÛ’01~ -–?%9.‘›´Ì1ÙS)É -'O™,ƒ2FFÅÄgïh[ztÓ#w¿ÙðÒ–u/§­ŸÜ–q]AÖ´±Eå“fNä{ϳy Jö½2täCÇøøÅ¿ ïy ~Ãa6íü#­ž=jäEUäœØ¯V‘•ž9NJd 7!}ºjœ.QIµ0UŒ‹*¥€-d붽ÊNñwØ;|ÀfM#fed ØW—…@šà‰BpEØÔÀŒIêo˜ Äô¹3õ±=Ǻ­Ìš£žàçqÿ$ƒ³ªPª•nEUžç¿¥˜‘;¾\váœ÷Ïå;äs\ðû·©×ù¶Ån¾òÆl@¼°#1y -ó˜Ÿó_ ù[ØCÛ×,š0Z­ÊþÛ Ê+é×…¬Ã¿]úi ^gù\Þo´ùȯ›‰ò'/! `¢ìÁŠàÆ?GÿÁžÿ…&X‘³œ‰çI,¯ÖÆåbøQ ~¼ü÷8É߇㈭^×Ô:·éÛ š×ÕßZ½pÎ"£'ÛõDÊrms#×0F~6Mc£øÓ´ÎåBi6U ¯éÿðȾü?ôèGNÔÙý_XR‡=ñÑè—$=zC/]l»¼ÃQd‰E3ꊭÿîi -endstream -endobj -2163 0 obj +% 2047 0 obj << -/Filter /FlateDecode -/Length1 4304 -/Length 2777 +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 374.41 359.001 386.47] +/A << /S /GoTo /D (descdata) >> >> -stream -xœÍW}l[Õ?÷=ûÙÏIì÷e?'®÷üòÑÄvÜÚIwiÒ6mÚ® M[l(…$MK¡…¬”°nƒµò6J7TCš˜¶ñ»Ïõ4`@µ¡IÛ*6uÑ61&±M­CiÒ@$Ù¹ÏNÊ×Ôí¿Ùò½çwî¹÷žó;çÞ÷ šàð0¾c"çø6{¦LÎÖ°? @ž>~ÌhP@Åkø{äÀìÁ#Jú»8v€›9xøž5{÷ÝÞ'o™™ÜÏû¾y@z•ý· Â3ͯà/"n»åȱ»köÒ86+ß1=YßOÃ&tdòîYB¥ hÏü1nŸ<2S÷홽ãÎcõùlcöèÌli²e;€+Œ>ÝÈFÈyî,$bøíÀo? ÂptÛa7~÷":·Ãâka¨Ð ¬ƒk  nƒC0ûA† 4ÃÍp¤a´Á>È€üp=l‚‡ákp -Jp¾³p<ðydö>ø<ࣤ n¥Ýãºåx‘‚µ.L…DamÑÑÝ_4.R¢ö„S”$?ÑÆDŠrÉ­; ­¢™¢|òPØ Ãã“SÔ•dSM˼·ðçÈoŠ´+ÌGþQŒX&u' -tôxÑ(q=w²iïõ)*$í89…»§öîPÀe'Á48-3Þ]`í΂5…Þ[#ìˆ5‚Ìï,”±×O”‰A°£Æ4mžY±´W0IQ‹¼`“rŠÕ‹°_øÃgæƒÂ%¦ùÈÇçh|äï0,lÆ -çsbS½ã}à~Ž,>DÉ×a+õŽlB.Ú£,£TÂbÕv¢p¢Eæ÷€ºŒ”Ol >ccÙuK8@46¾¾/,B{qPÌׇ z¯ -8è‰×ð^4°5ê AC¦š4®¨Býu4Ôúû¹„ÍG¨"Ô¬e¨°}UgߺFF¥yJåÀ2 0{‰XWìƒLãÿð -!¦ r¡+ -Ã0B=¹‹TK° ¸ ¾ø<×Ͻ Þ%YÈÁóPî&¨´5êJÐLÚî÷T©ž¶ÁS-ëàKœÝ´/mg]UBÒ43Wé—!€ÖýíD¥ÅAå–8³n‰¢u‹d§HÂîÔ«ç|)o¢"Jp'tJ¶†z^«R^²s8wµ3×Σ֗’ªç©(Ÿ[wŠJÙóù<ÕdêɃ­·ÉŠÍ‹ùüªÕ$ -j~âî\ç@âѶõ 6˜_ÎôÆ[Hx“üèi¬“;«ò©‘7Îç[9UåÍkž}ilFTÕݬ6¿þ†îWüXå -X‹ïr6Öy˜0eŒ+Ë\IÛË_=KTÍPAÂçl‚Z™ -Hpî ’­ã½’`Üåäl7Ë_SÞVÙí¤°Ã‹Ç5A>Vš¦îhãB”Ù\–¼¡‹+מ1×,\ÎÇŒ§òÍMý»Oig»DýÒZëÕµmüREš.õôúŽ¦àëÖ ,sS@nºÀ†²È2È#L¨4ÔÈPC-¨dÂÒÛ¢²àZð4Vb]¢Š Å¡®Óvµcô±.&Æ⌡î4õÏÙ€ E3e?{Ö û‘!ªd íHK> -stream -2041 0 2036 157 2037 302 2038 449 2043 591 577 650 2044 708 2045 767 2046 826 2040 885 -2051 1032 2039 1189 2048 1333 2049 1480 2053 1624 2050 1682 2056 1829 2058 1947 2055 2006 2066 2087 -2059 2280 2069 2456 2060 2632 2061 2815 2062 2968 2063 3123 2064 3275 2068 3426 581 3484 585 3541 -2065 3598 2080 3720 2072 3877 2073 4027 2075 4174 2082 4320 589 4379 593 4437 2083 4495 2084 4554 -2079 4613 2089 4750 2095 4889 2096 5069 2078 5112 2091 5259 2086 5317 2092 5375 2093 5434 2094 5492 -2088 5549 2100 5685 2112 5824 2113 6004 2115 6047 2116 6252 2117 6541 2119 6762 2077 6975 2102 7121 -2087 7180 2103 7239 2104 7298 2105 7357 2106 7416 2107 7475 2108 7534 2109 7593 2110 7651 2098 7710 -2111 7769 2099 7828 2128 8020 2134 8177 2135 8357 2136 8400 2137 8703 2138 8908 2140 9121 2124 9342 -2125 9489 2126 9636 2130 9781 2131 9839 2132 9898 2127 9956 2149 10162 2154 10301 2155 10481 2156 10524 -2157 10725 2158 11020 2160 11241 2147 11454 2151 11601 2144 11660 2152 11719 2145 11778 2153 11837 2148 11895 -% 2041 0 obj +/D [2049 0 R /XYZ 98.895 753.953 null] +>> +% 2048 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2055 0 obj << /Type /Page -/Contents 2042 0 R -/Resources 2040 0 R +/Contents 2056 0 R +/Resources 2054 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2008 0 R -/Annots [ 2036 0 R 2037 0 R 2038 0 R ] +/Parent 2052 0 R +/Annots [ 2053 0 R ] >> -% 2036 0 obj +% 2053 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.303 554.876 469.357 566.936] +/A << /S /GoTo /D (vdata) >> +>> +% 2057 0 obj +<< +/D [2055 0 R /XYZ 149.705 753.953 null] +>> +% 2054 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2063 0 obj +<< +/Type /Page +/Contents 2064 0 R +/Resources 2062 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2052 0 R +/Annots [ 2058 0 R 2059 0 R 2060 0 R ] +>> +% 2058 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 253.023 420.271 265.083] +/Rect [291.943 253.023 369.462 265.083] /A << /S /GoTo /D (spdata) >> >> -% 2037 0 obj +% 2059 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 184.772 409.811 196.831] +/Rect [291.943 184.772 359.001 196.831] /A << /S /GoTo /D (precdata) >> >> -% 2038 0 obj +% 2060 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 116.52 469.357 128.58] +/Rect [342.493 116.52 418.548 128.58] /A << /S /GoTo /D (vdata) >> >> -% 2043 0 obj +% 2065 0 obj << -/D [2041 0 R /XYZ 149.705 753.953 null] +/D [2063 0 R /XYZ 98.895 753.953 null] >> -% 577 0 obj +% 581 0 obj << -/D [2041 0 R /XYZ 150.705 716.092 null] +/D [2063 0 R /XYZ 99.895 716.092 null] >> -% 2044 0 obj +% 2066 0 obj << -/D [2041 0 R /XYZ 150.705 397.916 null] +/D [2063 0 R /XYZ 99.895 397.916 null] >> -% 2045 0 obj +% 2067 0 obj << -/D [2041 0 R /XYZ 150.705 398.076 null] +/D [2063 0 R /XYZ 99.895 398.076 null] >> -% 2046 0 obj +% 2068 0 obj << -/D [2041 0 R /XYZ 150.705 386.121 null] +/D [2063 0 R /XYZ 99.895 386.121 null] >> -% 2040 0 obj +% 2062 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2051 0 obj +% 2072 0 obj << /Type /Page -/Contents 2052 0 R -/Resources 2050 0 R +/Contents 2073 0 R +/Resources 2071 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2054 0 R -/Annots [ 2039 0 R 2048 0 R 2049 0 R ] +/Parent 2052 0 R +/Annots [ 2061 0 R 2069 0 R 2070 0 R ] >> -% 2039 0 obj +% 2061 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 654.503 418.548 666.562] +/Rect [393.303 654.503 469.357 666.562] /A << /S /GoTo /D (vdata) >> >> -% 2048 0 obj +% 2069 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 520.007 359.001 532.067] +/Rect [342.753 520.007 409.811 532.067] /A << /S /GoTo /D (descdata) >> >> -% 2049 0 obj +% 2070 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 183.768 418.548 195.827] +/Rect [393.303 183.768 469.357 195.827] /A << /S /GoTo /D (vdata) >> >> -% 2053 0 obj +% 2074 0 obj << -/D [2051 0 R /XYZ 98.895 753.953 null] +/D [2072 0 R /XYZ 149.705 753.953 null] >> -% 2050 0 obj +% 2071 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F69 1466 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R >> /ProcSet [ /PDF /Text ] >> -% 2056 0 obj +% 2076 0 obj << /Type /Page -/Contents 2057 0 R -/Resources 2055 0 R +/Contents 2077 0 R +/Resources 2075 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2054 0 R +/Parent 2052 0 R >> -% 2058 0 obj +% 2078 0 obj << -/D [2056 0 R /XYZ 149.705 753.953 null] +/D [2076 0 R /XYZ 98.895 753.953 null] >> -% 2055 0 obj +% 2075 0 obj << -/Font << /F59 669 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2066 0 obj +% 2086 0 obj << /Type /Page -/Contents 2067 0 R -/Resources 2065 0 R +/Contents 2087 0 R +/Resources 2085 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2054 0 R -/Annots [ 2059 0 R 2069 0 R 2060 0 R 2061 0 R 2062 0 R 2063 0 R 2064 0 R ] +/Parent 2052 0 R +/Annots [ 2079 0 R 2089 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R ] >> -% 2059 0 obj +% 2079 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [317.082 636.522 444.603 648.582] +/Rect [368.938 636.522 495.412 648.582] /Subtype/Link/A<> >> -% 2069 0 obj +% 2089 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [123.806 624.567 167.641 636.627] +/Rect [174.615 624.567 218.45 636.627] /Subtype/Link/A<> >> -% 2060 0 obj +% 2080 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [140.413 593.098 346.389 605.158] +/Rect [191.223 593.098 397.198 605.158] /Subtype/Link/A<> >> -% 2061 0 obj +% 2081 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [216.758 552.736 228.713 561.692] +/Rect [280.59 552.736 292.545 561.692] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 2062 0 obj +% 2082 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [232.191 552.835 244.146 561.841] +/Rect [296.203 552.835 308.158 561.841] /A << /S /GoTo /D (cite.CaFiRo:2014) >> >> -% 2063 0 obj +% 2083 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [247.624 552.736 259.579 561.841] +/Rect [311.815 552.736 323.771 561.841] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 2064 0 obj +% 2084 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [147.745 540.88 159.7 549.737] +/Rect [209.414 540.88 221.369 549.737] /A << /S /GoTo /D (cite.OurTechRep) >> >> -% 2068 0 obj +% 2088 0 obj << -/D [2066 0 R /XYZ 98.895 753.953 null] +/D [2086 0 R /XYZ 149.705 753.953 null] >> -% 581 0 obj +% 585 0 obj << -/D [2066 0 R /XYZ 99.895 716.092 null] +/D [2086 0 R /XYZ 150.705 716.092 null] >> -% 585 0 obj +% 589 0 obj << -/D [2066 0 R /XYZ 99.895 525.151 null] +/D [2086 0 R /XYZ 150.705 525.151 null] >> -% 2065 0 obj +% 2085 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R /F60 670 0 R /F102 1022 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 2080 0 obj +% 2100 0 obj << /Type /Page -/Contents 2081 0 R -/Resources 2079 0 R +/Contents 2101 0 R +/Resources 2099 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2054 0 R -/Annots [ 2072 0 R 2073 0 R 2075 0 R ] +/Parent 2105 0 R +/Annots [ 2092 0 R 2093 0 R 2095 0 R ] >> -% 2072 0 obj +% 2092 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [172.124 282.166 184.079 291.173] +/Rect [121.315 282.166 133.27 291.173] /A << /S /GoTo /D (cite.MRC:11) >> >> -% 2073 0 obj +% 2093 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [304.646 246.183 316.601 255.592] -/A << /S /GoTo /D (table.21) >> +/Rect [253.836 246.183 265.791 255.592] +/A << /S /GoTo /D (table.23) >> >> -% 2075 0 obj +% 2095 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [365.616 176.296 372.59 188.355] +/Rect [310.367 176.296 317.241 188.355] /A << /S /GoTo /D (figure.6) >> >> -% 2082 0 obj +% 2102 0 obj << -/D [2080 0 R /XYZ 149.705 753.953 null] +/D [2100 0 R /XYZ 98.895 753.953 null] >> -% 589 0 obj +% 593 0 obj << -/D [2080 0 R /XYZ 150.705 349.244 null] +/D [2100 0 R /XYZ 99.895 349.244 null] >> -% 593 0 obj +% 597 0 obj << -/D [2080 0 R /XYZ 150.705 231.907 null] +/D [2100 0 R /XYZ 99.895 231.907 null] >> -% 2083 0 obj +% 2103 0 obj << -/D [2080 0 R /XYZ 150.705 211.056 null] +/D [2100 0 R /XYZ 99.895 211.056 null] >> -% 2084 0 obj +% 2104 0 obj << -/D [2080 0 R /XYZ 150.705 120.166 null] +/D [2100 0 R /XYZ 99.895 120.166 null] >> -% 2079 0 obj +% 2099 0 obj << -/Font << /F120 1788 0 R /F102 1022 0 R /F62 671 0 R /F67 918 0 R /F59 669 0 R /F60 670 0 R >> +/Font << /F279 1791 0 R /F231 1025 0 R /F84 675 0 R /F131 921 0 R /F75 673 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2089 0 obj +% 2110 0 obj << /Type /Page -/Contents 2090 0 R -/Resources 2088 0 R +/Contents 2111 0 R +/Resources 2109 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2054 0 R -/Annots [ 2078 0 R ] +/Parent 2105 0 R +/Annots [ 2098 0 R ] >> -% 2095 0 obj +% 2116 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133929+01'00') /ModDate (D:20140329133929+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2096 0 obj +% 2117 0 obj << /Type /ExtGState /OPM 1 >> -% 2078 0 obj +% 2098 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.552 326.969 140.526 339.028] +/Rect [170.554 324.049 177.543 336.109] /A << /S /GoTo /D (algocf.1) >> >> -% 2091 0 obj +% 2112 0 obj << -/D [2089 0 R /XYZ 98.895 753.953 null] +/D [2110 0 R /XYZ 149.705 753.953 null] >> -% 2086 0 obj +% 2107 0 obj << -/D [2089 0 R /XYZ 99.895 716.092 null] +/D [2110 0 R /XYZ 150.705 716.092 null] >> -% 2092 0 obj +% 2113 0 obj << -/D [2089 0 R /XYZ 346.697 408.774 null] +/D [2110 0 R /XYZ 397.506 407.446 null] >> -% 2093 0 obj +% 2114 0 obj << -/D [2089 0 R /XYZ 99.895 264.598 null] +/D [2110 0 R /XYZ 150.705 260.219 null] >> -% 2094 0 obj +% 2115 0 obj << -/D [2089 0 R /XYZ 99.895 232.98 null] +/D [2110 0 R /XYZ 150.705 226.207 null] >> -% 2088 0 obj +% 2109 0 obj << -/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R >> -/XObject << /Im6 2074 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> +/XObject << /Im6 2094 0 R >> /ProcSet [ /PDF /Text ] >> -% 2100 0 obj +% 2121 0 obj << /Type /Page -/Contents 2101 0 R -/Resources 2099 0 R +/Contents 2122 0 R +/Resources 2120 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2054 0 R -/Annots [ 2077 0 R ] +/Parent 2105 0 R +/Annots [ 2097 0 R ] >> -% 2112 0 obj +% 2133 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2113 0 obj +% 2134 0 obj << /Type /ExtGState /OPM 1 >> -% 2115 0 obj +% 2136 0 obj << /BaseFont /YAZDUX+TimesNewRomanPSMT -/FontDescriptor 2117 0 R -/ToUnicode 2118 0 R +/FontDescriptor 2138 0 R +/ToUnicode 2139 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2116 0 obj +% 2137 0 obj << /BaseFont /NDNSMY+FreeSerif -/FontDescriptor 2119 0 R -/ToUnicode 2120 0 R +/FontDescriptor 2140 0 R +/ToUnicode 2141 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 0 0 0 0 0 385 0 0 0 0 0 0 0 667 529 0 0 0 0 0 701] /Subtype /TrueType >> -% 2117 0 obj +% 2138 0 obj << /Type /FontDescriptor /FontName /YAZDUX+TimesNewRomanPSMT @@ -30440,9 +30522,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2121 0 R +/FontFile2 2142 0 R >> -% 2119 0 obj +% 2140 0 obj << /Type /FontDescriptor /FontName /NDNSMY+FreeSerif @@ -30454,114 +30536,114 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2122 0 R +/FontFile2 2143 0 R >> -% 2077 0 obj +% 2097 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [435.396 583.767 442.37 595.827] +/Rect [384.587 583.767 391.56 595.827] /A << /S /GoTo /D (figure.5) >> >> -% 2102 0 obj +% 2123 0 obj << -/D [2100 0 R /XYZ 149.705 753.953 null] +/D [2121 0 R /XYZ 98.895 753.953 null] >> -% 2087 0 obj +% 2108 0 obj << -/D [2100 0 R /XYZ 440.026 621.446 null] +/D [2121 0 R /XYZ 389.217 621.446 null] >> -% 2103 0 obj +% 2124 0 obj << -/D [2100 0 R /XYZ 165.649 563.747 null] +/D [2121 0 R /XYZ 114.839 563.747 null] >> -% 2104 0 obj +% 2125 0 obj << -/D [2100 0 R /XYZ 165.649 567.034 null] +/D [2121 0 R /XYZ 114.839 567.034 null] >> -% 2105 0 obj +% 2126 0 obj << -/D [2100 0 R /XYZ 165.649 556.075 null] +/D [2121 0 R /XYZ 114.839 556.075 null] >> -% 2106 0 obj +% 2127 0 obj << -/D [2100 0 R /XYZ 165.649 545.116 null] +/D [2121 0 R /XYZ 114.839 545.116 null] >> -% 2107 0 obj +% 2128 0 obj << -/D [2100 0 R /XYZ 165.649 534.158 null] +/D [2121 0 R /XYZ 114.839 534.158 null] >> -% 2108 0 obj +% 2129 0 obj << -/D [2100 0 R /XYZ 165.649 523.199 null] +/D [2121 0 R /XYZ 114.839 523.199 null] >> -% 2109 0 obj +% 2130 0 obj << -/D [2100 0 R /XYZ 165.649 512.24 null] +/D [2121 0 R /XYZ 114.839 512.24 null] >> -% 2110 0 obj +% 2131 0 obj << -/D [2100 0 R /XYZ 165.649 501.281 null] +/D [2121 0 R /XYZ 114.839 501.281 null] >> -% 2098 0 obj +% 2119 0 obj << -/D [2100 0 R /XYZ 165.649 481.057 null] +/D [2121 0 R /XYZ 114.839 481.057 null] >> -% 2111 0 obj +% 2132 0 obj << -/D [2100 0 R /XYZ 150.705 294.895 null] +/D [2121 0 R /XYZ 99.895 294.895 null] >> -% 2099 0 obj +% 2120 0 obj << -/Font << /F62 671 0 R /F59 669 0 R /F102 1022 0 R /F120 1788 0 R /F60 670 0 R /F93 920 0 R /F91 919 0 R /F67 918 0 R >> -/XObject << /Im7 2076 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F231 1025 0 R /F279 1791 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> +/XObject << /Im7 2096 0 R >> /ProcSet [ /PDF /Text ] >> -% 2128 0 obj +% 2149 0 obj << /Type /Page -/Contents 2129 0 R -/Resources 2127 0 R +/Contents 2150 0 R +/Resources 2148 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2133 0 R -/Annots [ 2124 0 R 2125 0 R 2126 0 R ] +/Parent 2105 0 R +/Annots [ 2145 0 R 2146 0 R 2147 0 R ] >> -% 2134 0 obj +% 2154 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2135 0 obj +% 2155 0 obj << /Type /ExtGState /OPM 1 >> -% 2136 0 obj +% 2156 0 obj << /BaseFont /MCSFLP+FreeSerif -/FontDescriptor 2138 0 R -/ToUnicode 2139 0 R +/FontDescriptor 2158 0 R +/ToUnicode 2159 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 385 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2137 0 obj +% 2157 0 obj << /BaseFont /AJRCAD+TimesNewRomanPSMT -/FontDescriptor 2140 0 R -/ToUnicode 2141 0 R +/FontDescriptor 2160 0 R +/ToUnicode 2161 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2138 0 obj +% 2158 0 obj << /Type /FontDescriptor /FontName /MCSFLP+FreeSerif @@ -30573,9 +30655,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2142 0 R +/FontFile2 2162 0 R >> -% 2140 0 obj +% 2160 0 obj << /Type /FontDescriptor /FontName /AJRCAD+TimesNewRomanPSMT @@ -30587,193 +30669,79 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2143 0 R +/FontFile2 2163 0 R >> -% 2124 0 obj +% 2145 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [402.878 438.686 409.852 450.746] +/Rect [453.687 426.731 460.661 438.791] /A << /S /GoTo /D (figure.5) >> >> -% 2125 0 obj +% 2146 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [312.155 188.317 319.129 200.376] +/Rect [354.541 176.362 361.575 188.421] /A << /S /GoTo /D (figure.8) >> >> -% 2126 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [426.875 140.43 433.849 152.49] -/A << /S /GoTo /D (algocf.2) >> ->> -% 2130 0 obj -<< -/D [2128 0 R /XYZ 98.895 753.953 null] ->> -% 2131 0 obj -<< -/D [2128 0 R /XYZ 396.732 476.365 null] ->> -% 2132 0 obj -<< -/D [2128 0 R /XYZ 99.895 223.169 null] ->> -% 2127 0 obj -<< -/Font << /F62 671 0 R /F60 670 0 R /F93 920 0 R /F67 918 0 R /F102 1022 0 R /F120 1788 0 R /F69 1466 0 R /F91 919 0 R /F59 669 0 R >> -/XObject << /Im8 2123 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2149 0 obj -<< -/Type /Page -/Contents 2150 0 R -/Resources 2148 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2133 0 R -/Annots [ 2147 0 R ] ->> -% 2154 0 obj -<< -/Producer (GPL Ghostscript 9.10) -/CreationDate (D:20140329133927+01'00') -/ModDate (D:20140329133927+01'00') -/Creator (cairo 1.13.1 \(http://cairographics.org\)) ->> -% 2155 0 obj -<< -/Type /ExtGState -/OPM 1 ->> -% 2156 0 obj -<< -/BaseFont /BNRUAU+TimesNewRomanPSMT -/FontDescriptor 2158 0 R -/ToUnicode 2159 0 R -/Type /Font -/FirstChar 45 -/LastChar 55 -/Widths [ 333 0 0 500 500 500 0 0 0 0 500] -/Subtype /TrueType ->> -% 2157 0 obj -<< -/BaseFont /ICFUKB+FreeSerif -/FontDescriptor 2160 0 R -/ToUnicode 2161 0 R -/Type /Font -/FirstChar 32 -/LastChar 89 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] -/Subtype /TrueType ->> -% 2158 0 obj -<< -/Type /FontDescriptor -/FontName /BNRUAU+TimesNewRomanPSMT -/FontBBox [ 21 -13 638 675] -/Flags 65540 -/Ascent 675 -/CapHeight 675 -/Descent -13 -/ItalicAngle 0 -/StemV 95 -/MissingWidth 777 -/FontFile2 2162 0 R ->> -% 2160 0 obj -<< -/Type /FontDescriptor -/FontName /ICFUKB+FreeSerif -/FontBBox [ 0 -71 706 752] -/Flags 65540 -/Ascent 752 -/CapHeight 679 -/Descent -71 -/ItalicAngle 0 -/StemV 105 -/MissingWidth 600 -/FontFile2 2163 0 R ->> % 2147 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [422.101 548.965 429.075 561.025] -/A << /S /GoTo /D (figure.5) >> +/Rect [487.118 128.475 494.142 140.535] +/A << /S /GoTo /D (algocf.2) >> >> % 2151 0 obj << /D [2149 0 R /XYZ 149.705 753.953 null] >> -% 2144 0 obj -<< -/D [2149 0 R /XYZ 447.542 586.644 null] ->> % 2152 0 obj << -/D [2149 0 R /XYZ 150.705 537.967 null] ->> -% 2145 0 obj -<< -/D [2149 0 R /XYZ 165.649 395.424 null] ->> -% 2153 0 obj -<< -/D [2149 0 R /XYZ 150.705 199.14 null] ->> -% 2148 0 obj -<< -/Font << /F62 671 0 R /F67 918 0 R /F102 1022 0 R /F59 669 0 R /F120 1788 0 R >> -/XObject << /Im9 2146 0 R >> -/ProcSet [ /PDF /Text ] +/D [2149 0 R /XYZ 447.542 464.41 null] >> endstream endobj -2168 0 obj +2171 0 obj << -/Length 9264 +/Length 8197 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 99.895 706.129 Td [(vectorized,)-267(it)-264(does)-263(not)-264(necessarily)-263(make)-264(optimal)-264(use)-263(of)-264(the)-264(memory)-263(hierar)18(chy)111(.)]TJ 0 -11.955 Td [(While)-228(pr)18(ocessing)-229(each)-228(diagonal)-229(we)-228(ar)18(e)-229(updating)-228(entries)-228(in)-229(the)-228(output)-229(vector)]TJ/F67 9.9626 Tf 335.99 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)]TJ -341.221 -11.955 Td [(which)-290(is)-291(then)-290(accessed)-291(multiple)-290(times;)-311(if)-290(the)-290(vector)]TJ/F67 9.9626 Tf 229.536 0 Td [(y)]TJ/F62 9.9626 Tf 8.124 0 Td [(is)-290(too)-291(lar)18(ge)-290(to)-291(r)18(emain)-290(in)]TJ -237.66 -11.956 Td [(the)-250(cache)-250(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 14.944 -12.068 Td [(The)]TJ/F60 9.9626 Tf 20.923 0 Td [(hacked)-426(DIA)]TJ/F62 9.9626 Tf 53.49 0 Td [(\050)]TJ/F59 9.9626 Tf 3.318 0 Td [(HDIA)]TJ/F62 9.9626 Tf 28.224 0 Td [(\051)-426(format)-426(was)-426(designed)-426(to)-427(co)1(ntain)-427(the)-426(amount)-426(of)]TJ -120.899 -11.956 Td [(padding,)-416(by)-384(br)18(eaking)-383(the)-383(original)-383(matrix)-383(into)-383(equally)-384(sized)-383(gr)18(oups)-383(of)-383(r)18(ows)]TJ 0 -11.955 Td [(\050)]TJ/F60 9.9626 Tf 3.318 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-271(and)-266(then)-267(storing)-267(these)-266(gr)18(oups)-267(as)-267(independent)-266(matrices)-267(in)-267(DIA)-266(format.)]TJ -25.076 -11.955 Td [(This)-256(appr)18(oach)-256(is)-257(similar)-256(to)-256(that)-256(of)-257(HLL,)-256(and)-256(r)18(equir)18(es)-256(using)-257(an)-256(of)18(fset)-256(vector)-256(for)]TJ 0 -11.955 Td [(each)-284(submatri)1(x.)-411(Again,)-292(similarly)-283(to)-284(HLL,)-283(the)-284(various)-283(submatrices)-284(ar)18(e)-283(stacked)]TJ 0 -11.955 Td [(inside)-313(a)-314(linear)-313(array)-314(to)-313(impr)18(ove)-314(memory)-313(management.)-500(The)-314(fact)-313(that)-314(the)-313(ma-)]TJ 0 -11.955 Td [(trix)-337(is)-336(accessed)-337(in)-336(slices)-337(helps)-337(in)-336(r)18(educing)-337(cache)-336(misses,)-359(especially)-336(r)18(egar)18(ding)]TJ 0 -11.956 Td [(accesses)-250(to)-250(the)-250(vector)]TJ/F67 9.9626 Tf 95.959 0 Td [(y)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -86.246 -12.068 Td [(An)-246(additional)-246(vector)]TJ/F60 9.9626 Tf 93.666 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.567 0 Td [(is)-246(pr)18(ovided)-246(to)-246(complete)-246(the)-246(matrix)-245(format;)]TJ -157.177 -11.956 Td [(given)-321(that)]TJ/F60 9.9626 Tf 48.303 0 Td [(hackSize)]TJ/F62 9.9626 Tf 37.686 0 Td [(is)-321(the)-320(number)-321(of)-321(r)18(ows)-321(of)-320(each)-321(hack,)-339(the)]TJ/F60 9.9626 Tf 180.964 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 49.312 0 Td [(vector)]TJ -316.265 -11.955 Td [(is)-321(made)-322(b)1(y)-322(an)-321(array)-321(of)]TJ/F93 10.3811 Tf 105.045 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-235(+)]TJ/F62 9.9626 Tf 16.868 0 Td [(1)-321(elements,)-339(pointing)-321(to)-322(the)-321(\002rst)-321(diag-)]TJ -177.205 -11.955 Td [(onal)-289(of)18(fset)-290(of)-289(a)-289(submatrix)-289(inside)-290(the)-289(stacked)]TJ/F60 9.9626 Tf 198.567 0 Td [(offsets)]TJ/F62 9.9626 Tf 27.789 0 Td [(buf)18(fers,)-299(plus)-289(an)-290(additional)]TJ -226.356 -11.955 Td [(element)-350(equal)-350(to)-350(the)-351(number)-350(of)-350(nonzer)18(o)-350(diagonals)-350(in)-350(the)-351(whole)-350(matrix.)-610(W)92(e)]TJ 0 -11.955 Td [(thus)-315(have)-314(the)-315(pr)18(operty)-315(that)-315(the)-314(number)-315(of)-315(diagonals)-315(of)-314(the)]TJ/F60 9.9626 Tf 267.65 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.499 0 Td [(hack)]TJ/F62 9.9626 Tf 21.068 0 Td [(is)-315(given)]TJ -308.815 -11.955 Td [(by)]TJ/F60 9.9626 Tf 13.539 0 Td [(hackOffsets[k+1])-250(-)-250(hackOffsets[k])]TJ/F62 9.9626 Tf 133.667 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.895 706.129 Tm [(memory)-286(write)-286(and)-286(two)-286(\003oating-point)-286(operations)-286(per)-286(inner)-287(iter)1(ation.)-427(The)-286(ac-)]TJ 0.984 0 0 1 99.895 694.174 Tm [(cesses)-255(to)]TJ/F131 9.9626 Tf 1 0 0 1 139.647 694.174 Tm [(AS)]TJ/F84 9.9626 Tf 0.984 0 0 1 152.603 694.174 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 171.695 694.174 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 179.42 694.174 Tm [(ar)18(e)-254(in)-255(strict)-254(sequential)-255(or)19(der)75(,)-255(ther)19(efor)18(e)-255(no)-254(indir)18(ect)-254(addr)18(essing)]TJ 1 0 0 1 99.895 682.219 Tm [(is)-250(r)18(equir)18(ed.)]TJ 0 g 0 G ET -1 0 0 1 146.769 381.801 cm +1 0 0 1 146.769 562.733 cm q -.4451 0 0 .4451 0 0 cm +.49594 0 0 .49594 0 0 cm q 1 0 0 1 0 0 cm -/Im10 Do +/Im9 Do Q Q 0 g 0 G -1 0 0 1 -146.769 -381.801 cm +1 0 0 1 -146.769 -562.733 cm BT -/F62 9.9626 Tf 147.941 359.883 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 166.233 540.815 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -33.102 -24.137 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_hdia_sparse_mat)]TJ/F62 9.9626 Tf 109.837 0 Td [(:)]TJ +0 g 0 G +0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 120.326 cm -0 0 343.711 203.238 re f +1 0 0 1 114.839 389.447 cm +0 0 313.823 115.567 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G @@ -30781,133 +30749,194 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 312.904 Td [(type)]TJ +/F231 8.9664 Tf 136.657 494.353 Td [(do)]TJ 0 g 0 G - [-525(pm)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [-525(j)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 14.122 -10.959 Td [(real)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(1)]TJ 0 g 0 G - [(\050psb_dpk_\051,)]TJ + [(,ndiag)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ + 9.415 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-1050(::)]TJ -0 g 0 G + [-525(\050offset\050j\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(data)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(>)]TJ 0 g 0 G - [(\050:,:\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(end)-525(type)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(0)]TJ 0 g 0 G - [-525(pm)]TJ + [(\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -21.918 Td [(type)]TJ + [-525(then)]TJ 0 g 0 G - [-525(po)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +0 g 0 G + 9.414 -10.959 Td [(ir1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 14.122 -10.959 Td [(integer)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G - [(\050psb_ipk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(1)]TJ 0 g 0 G + [(;)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-1050(::)]TJ + [-525(ir2)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(off\050:\051)]TJ + [-525(m)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(end)-525(type)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(-)]TJ 0 g 0 G - [-525(po)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -21.918 Td [(type)]TJ -0 g 0 G - [(,)]TJ + [-525(offset\050j\051;)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(extends)]TJ + -9.414 -10.958 Td [(else)]TJ 0 g 0 G - [(\050psb_d_base_sparse_mat\051)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +0 g 0 G + 9.414 -10.959 Td [(ir1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_d_hdia_sparse_mat)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(1)]TJ +0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(-)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(HDIA)-525(format,)-525(extended.)]TJ + [-525(offset\050j\051;)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525(ir2)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.958 Td [(!)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525(m;)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf 0 -21.918 Td [(type)]TJ + -9.414 -10.959 Td [(end)-525(if)]TJ 0 g 0 G - [(\050pm\051,)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(do)]TJ +0 g 0 G + [-525(i)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(ir1,ir2)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ + 9.414 -10.959 Td [(y\050i\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ + [-525(y\050i\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(+)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(hdia\050:\051)]TJ + [-525(alpha)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(as\050i,j\051)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(x\050i)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(+)]TJ +0 g 0 G + [(offset\050j\051\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ + -9.414 -10.959 Td [(end)-525(do)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.415 -10.959 Td [(end)-525(do)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G +/F75 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F84 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ +0 g 0 G +0 g 0 G +0 g 0 G + -97.969 -26.977 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_dia_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 99.895 208.684 cm +0 0 343.711 115.567 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G - [(\050po\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ +BT +/F231 8.9664 Tf 112.299 313.591 Td [(type)]TJ +0 g 0 G + [(,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(extends)]TJ 0 g 0 G + [(\050psb_d_base_sparse_mat\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG @@ -30915,24 +30944,41 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(offset\050:\051)]TJ + [-525(psb_d_dia_sparse_mat)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.959 Td [(!)-525(DIA)-525(format,)-525(extended.)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.959 Td [(!)]TJ +0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ +/F231 8.9664 Tf 0 -21.918 Td [(integer)]TJ 0 g 0 G - [(\050psb_ipk_\051)]TJ + [(\050psb_ipk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ + [-525(allocatable)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(nblocks,)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(nzeros)]TJ + [-525(offset\050:\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG @@ -30946,23 +30992,18 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(hack)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G + [-525(nzeros)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(64)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.958 Td [(real)]TJ 0 g 0 G + [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ 0 g 0 G - [(\050psb_long_int_k_\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG @@ -30971,162 +31012,169 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(dim)]TJ + [-525(data)]TJ 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ + [(\050:,:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(0)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.414 -21.918 Td [(end)-525(type)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G +/F75 9.9626 Tf -12.404 -39.731 Td [(Hacked)-250(DIA)]TJ/F84 9.9626 Tf 0.985 0 0 1 99.895 156.191 Tm [(Storage)-254(by)-253(DIAgonals)-254(is)-253(an)-254(attractive)-253(option)-254(for)-253(matrices)-254(whose)-253(coef)18(\002cients)-254(ar)18(e)]TJ 1.015 0 0 1 99.895 144.236 Tm [(located)-247(on)-246(a)-247(small)-247(set)-246(of)-247(diagonals,)-247(since)-246(they)-247(do)-247(away)-246(with)-247(storing)-247(explicitly)]TJ 0.988 0 0 1 99.895 132.281 Tm [(the)-253(indices)-254(and)-253(ther)18(efor)19(e)-254(r)19(educe)-254(signi\002cantly)-253(memory)-253(traf)18(\002c.)-315(However)75(,)-253(having)]TJ 0.98 0 0 1 99.895 120.326 Tm [(a)-246(few)-246(coef)19(\002)-1(cients)-245(outside)-246(of)-246(the)-246(main)-246(set)-245(of)-246(diagonals)-246(may)-246(signi\002cantly)-246(incr)19(ease)]TJ 0 g 0 G -/F62 9.9626 Tf 142.566 -36.164 Td [(171)]TJ + 1 0 0 1 264.279 90.438 Tm [(173)]TJ 0 g 0 G ET endstream endobj -2164 0 obj +2167 0 obj << /Type /XObject /Subtype /Form /FormType 1 -/PTEX.FileName (../figures/hdia.pdf) +/PTEX.FileName (./figures/dia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2172 0 R -/BBox [0 0 556 211] +/PTEX.InfoDict 2175 0 R +/BBox [0 0 499 211] /Resources << -/ProcSet [ /PDF /ImageC /Text ] +/ProcSet [ /PDF /Text ] /ExtGState << -/R7 2173 0 R ->>/XObject << -/R8 2174 0 R ->>/Font << /R9 2175 0 R/R11 2176 0 R>> +/R7 2176 0 R +>>/Font << /R8 2177 0 R/R10 2178 0 R>> >> -/Length 3027 +/Length 2502 /Filter /FlateDecode >> stream -xœÝZK9Ý¿¢–E×øýX˜ 4IKE¬&êeXÌßç\û>\î$HhFBQé{¿ãû´OÙ®úx¸ÓŽþñÿÏ·oÞÔãý¿oÞ?ßÜñýÍ÷~ºpøÖÛéòñ¬ -߆âéöö–ý†Å‚ñîÌ6c‰á¬õð.1X4!“ÂtìyG±fE¥P7”h.¨Üvk.¨öÕ^¢Ø†Í•ýŽbÍŠªg«(ˆO¥Npög£³¢xÈnb}mˆ+(xw‰âJ~±âª;¨¾E·DqŸX±‚êYú¬DÓ¦ûÈsM4©GHµï(Ñ,¨àÆRÍŠJqG‰fEÕ¨ú… žÚ˜à¡œ™ÐaLùgÓø44<Áw”hT -mC©fEå¾£D³¢Ú T{‰ÂÂõsVú™a+šs»hZP9í(ÖŒúá¯4mŽEÐ[?1WÆdè ÛºRÓ†ÍJ'Ó*¯aæRVÅÀ2FƒÌ£`BØ0¬XóˆY+!•ì±¯šÑᬕÈŠ5Tp»-Öê#¨¸œÁ·šœ‹;°²ÝñÓß?ÿ„ )"E:Ù&_4Ó±ì(Ѭ¨v”hõJ‰‡Wy×)îÔñAÜX²9ö#?Ï!û¿™œ±þ›?o¦I'ÖÖ¡Ð -ˆ hHz>iÊ9og¤U˜(”?a†EÀ³u¶ßaÈFg0Pð«ùŒõ]½ùÏ>[pSÐ؇(©É@I]LsqF(ÓwépF­ºOM‹å‘ëLN’»X¸ÖÿQ‚§sé>- é@¤–´D–ÕE“Ý;~·†€bšsMÒ(»ÖÄgCyj¯KC*’K®hGj…I’9-‘­' bF-pé\\ ‚*¯’°$0DÉjþlZ*´tÅ…3DkŠ‹´ôµ'S\Z¿KGxôµþÚlnböeiHèg-=kðtCTÆJó¾®+¤Ÿ)øn+¤ Žæu ÏÖýºBi yš´œÔ…&­ˆY± sÙ|èlç ÆRIX¢äÇ56-²†àéÚxvŒàbA —ù$²õD\µpmÂãeuXXĨƒ¹r0ñiŠÂ¶Olâ‡aa00)CŸ¦HÓœ{º­ϱ<[ÐÖ±ãë;÷ØjlK{ˆ®÷¹oÇïþ²%º eá[hPצ¤9c()©¬œešIijùN}(#†°KKB™QÖ&„ -±ÑžG 7DÔÙgû=fZ:š·‚‹yl$oApYÔOíŇL~‰‚‡F9å5Öh¦Ó‚Ubú0º”(„O%Já[ÉÃY2]£fáÚIÉЮ”b^)yˆÆÁü%JFšqGê5 …žÎÈ4C`ôc^¹Çs.­ ¨ÝDbš¦kAGã’ÐE5þìiàË\+ˆ ÁA£Á,Ä4zŠãИ’S],¹q -àÕÀ–ÅèÚWšÙ‡ñZ1m¹©†CË8?¬¹e—¶Ühc·æÖó57‘-7ÖhhlABg–›Ä ŽQ ìYP×¾ÖÌÆZkaðfÃÞ%÷1#YSñüõtÃIoÃ`·FzT#Ô:ž©""ÒÒw+ ÄÁíj€eqA#Xƒ#͸g =з‰ 1€cP€D-¶,ÆZûJ3k-Í^Zn¢‘Ðrœ³ABÏqLË-‡9Ÿæ|S,›cÕphbABg–›Ä ‰Z lYŒµö•fF]æf^˜ò¨gÚ8ų7ÕÄŠýlT3"ª± Ú¿þV)Z?·¾ãf̺¡1Ö°X]]ƒùLÈ¿†ÙYáKjÏ¢ÖKedjˆ›<Ÿ®ð/o•¢‡‹í—çÛ>úéÆÅPó\+u¿Uóq™¿¨Ùñ¼(q|KàcÉtõ¼h|¤;ÓDŸ8TÜè3¦ÆÃYË«HŒÇŠ”Û+½’¬Q‹‰n¨û±ûìþǨÙ¡k£1*R$¢™®`˜jš“†Òè •f‘ª,vU#žÅûØ}JoÒ|íYÖ„5%sMè%Çxé?k‚SW-"RMXQ»Ö„G°Æ|d®ÉÕ§Ô„ì5kšéŠjÒãéÕwjt·n²¨VUÁne4;Ørô!”6t„A· ¡Y!éeB±:³h ¬yâJà×:ùD#†R[Dï°a§˜Ì–Isµ<H«eÕðd¡ èm8Ï% P§õ§#Þ´Ï·màxG¼ÎZË‘ýn9s…#Àƒjõ§á‚N5‚ÌcG,r©™®Çum”Ò|ûi¬½–»8¾PÃôE!øæ*]Šâ ÛæGR,_#ù¬ÝÍ?fCésöâÄñßâÝ´Ï·}$½”Ç®`Ly®…ÈR+Q—æ#­ÍK³ÙzT&zµ)ŠH_x6£=“¥O±ôù¢Og„ixLEð8•ˆÉ«KŽc³2žÙOO¦áU ¡òjSÃJ[êYâE,l^yÖÑgeƒ”´Ø¢þð™‰o² }DêBtôú§ëÏÎ'ºÖÑ"ý¨†ù‡Ç +Š}–é惄†Ì¶fbôBÍ™þïñùøÍÃí›7ýéxøñ6¿qžßŸ`Ú dœöPÀ‡çÛ{õð›Ïø%¥ƒ^w¬ã_îÎ…)ôzÜãÉŽ-îú ƒʪ#Oú! smèéRßa÷ý»;ÿê¾aÃì\º«¯þúð‡Û=–ŒsØﮆßÝݦ@ïwñÕ}Íî.ã?„NC ¬Ô,PŒ˜{¤ …áÛÔ…öJŸ«÷ôº8¬å¹×ô}¯ ÏHzw÷û׿ýãñ§ï¾{‹ÀU­áîÛ‡}±£ÇÀ„nbURA4Ûƒãǹ@7ú#Ãׯ"íW}¼{{¼~ófZÍÍã‡êðg)wæG?Üþ4º‘ -endstream -endobj -2174 0 obj -<< -/Subtype /Image -/ColorSpace /DeviceGray -/Width 2362 -/Height 946 -/BitsPerComponent 1 -/Interpolate true -/Filter /CCITTFaxDecode -/DecodeParms << -/K -1 -/Columns 2362 ->> -/Length 150 ->> -stream -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0l?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@ +xœÝZ¹neÇÍïWÜ xÕûJ€$À‰á†a(¢íQ@9Ðﻪ»NuÝÖÈv Áཪ®åœîêõñóé.:þ“Ï—·ã«õüô¯#¸óçÃ]¹÷âúùýá[¾Jð§ï1\ù|[ŠVI~=>Ùo&ªP“7U¨‰÷‰U&Ë$í&é&µl&P,“Îòχ!¹Ak€Ò°’Ö\m+K¶µ;ÛÊ’mõ!Øæ!ÞÚs¹µ³xkoíÖÎ"·>ÜY¯FÝ\ÎÔ»;ƒ§Ì?ýýüóùOjútÔ\®”úYc»Zån€¦P7¤’ÏêÓÕœ? u`mù,%^±7•_ŽâýÕÛÒõ+º2r¼ªéî +5žˆÐ"}æ¨9 ¿@â–;—㇟ê]p™Š÷rÔë­v.e—{®ç‡ïß1ÿ¹<\m—³ì 6ï"9.v*³#ÍoU´NÉM×@^IU#°$PsôÅ ¹¡Q´â¼£Ÿcú¾ÙQJ®_5&Ã)æv…¶8E_®â&'|WNP1œ!#ü┊¿|¬à”]¸jœð}q‚FÑŠóŽÞŽÒ{a4F)¶F“ÔrrŠ©^QQûÐóÕ +RºR7€yÃ_ä•W5@&ùLa¨MÚÌðß8Œ±z—¼Æˆ•Ö¯vc&EV}I yîåj–Z¦…"îÙÅ«j"jКDPè3…¡&Ô¨`c1Æì2£6ÇÞ§F%1x)hfñЙ'%Ž»äH‹@l£¼fQ¼Þæ/´«Î5Ð,²•çä×ÂnÙߌ&ö«-nr§îè7©ŒÀé‘oéÞT!~¯˜XJâñì_œ-†W |⑳4ã,±Â¨ˆ(8½,¸K3]pžAÄ=çD²Ç‘³W3¡R¤2&WÇH3‹FsH„=ç}ö54®Èµ_ùRùd û•/tâ¦3dsl~×ý +Š±yõ…(Áe·bEãc6+ߟfhù¾6+hÔé¼CÇ$ŠtÊ¥‹@íéªãŠÔÇäõ•æw$>Kï#<;8ê7îRYÕ%„h^W™J*Ì+šÎÕ¦Š!_‘9Ð)hl¥Œù4äpnØÖ¼º‡ÝqùKœÊ56ÎÓ,@ …/¾)ߎÝç•©3w§¼Í+Ï+(ÅÕRœ +­æm¥Ð°Kã©Ž½®8½†Ëŵ2@þ2Úß'.#æ»õÞòvìÞ¯ºöB£ý7ÓoÝùb+â7ŒÊˆ÷çÚÅ☦xQ¿¸4ÞBL›ƨ_¥ó+J§•Êw“˹4ŒÛM3ß\¦ÄÝ +kE7úÍ +k%¯+0Y¯+hŸ¯+Ú®¯+hŸ¯+ڎוÿå!8:äÐW_i›œj +mQ´YOë"¿áê:ÚÆ-õãGä—C5-t^_õÍÊBýNÛÜžU†x‹óvì¹(2àX¥&TÚÓX5®*$1ÜlK‰Zx±ù­Sbè·N ­Ý:EdÓ)©¦­SD£1S ·N‘¬<›þ_܆G¼ÌðH.3<@#Ý° +$†;€m)ˆ8¹‚’…ÂKÌ(½ÆqW@È/Újˆ rAAãý,$t!]+nHE~Y] ‰wc°ß%¯/.Þ|ÖâSB£Ž æ0_¶#­q¦]EmOÍú«¨íµßü!¢®tÖ_EmOÞú«ˆöÀ'+bç[w£ºâ­}>ºk;^ÝïÛ&>DÍßã-?DmÏu*Z›ím‰·vÉväÿÓÜ~út|æ̓ÿäãåíüæùøêC£Íð|¦þl<.|·+éÊ%žÏoÇ_žÂãSæêËOþñ©ÐZÀßÝãSãóJϤ­|ËèáŒ}udáêãÏ8¾}&|ÿõ—:®§ËSõíxcXš8{ƒ¾7»Y¨$§+•_ø÷ˆÆ¢eAÓ„b­*ÃC4´ µt®µëŽæ˜2{,€î<ÆûIëeqS ã·‰d·Yp†[åG\c1—ÐAeå !#Çâ°JD¸óÜz–(Êmi&²žh³ yO‚K¹õØæeÔ‡ã=T7Õ2 È5‡rS°JD¸ó˜Ü®&g_妚‰Œ¯„nÕ §ðÍŽÁ ÕzY8õu&—SË~â\•‰æ`“;jfRG˜n˜Í@C«|*yu†¯ÑGÕZe*¿9‰³‘%åÒLP+Â=ƒÑÊ-Šm:ïèÇØ$gÇ%­~å)³Yâ€bËætqÆ"ÐRi梊(6(¤Õ]ú_è¤5¼ö8#”2õÕSEGÛx:IvãÑ¡ºÌÏ.¡P•r‹LÛwI“„ZLA܇àó4äïÄ…îbË‹ÈôhâN™Í‘@†ø`2 ƒ2QQ  ¿ºp²™¡1Ì¢iæÏfÜ!O2* +u´3º’Ñäh8¸ì“LË‹I3=Êï`Ù H­À©Lht‹7tíµý ¢ð 8à œˆ¾˜ ?,šUE=8xÚ‘k9#_ÎSçû^¹ ¡¡‹©¿J;#ô8úMytFžçù©ñü0•è| h r.òídæ€5:*™j!¯qãÿKq­Øq‹\Oq­L|Ó"›qS 7 òÊ PèÈ Êsë|Ž¥ó¡¤&;ÝGh-„‚O¶•ÿÛ%Ïb€ì;:H5i”ðnö92@&‡J—Óê—ÝdúøG@^)D£ $‚‚ÜXXf­£"ÀMÅ1JAåT45Ír’üÅÕ† 3µÜ@d“€ +rca™ñ8ÏzD—‹bH…°d'¥¢šÃ\LÀ/ó¹¬1ÙŒ,0F c¨)T#  7Ì,¥j7ß%Î¥šäÛæ›RÙ6ßq4›/ÉÙ¸g]åû\¦—×\ÃW\¬ò+3,êmó½Lr´›ïJŽ·Í7ñÅÓÐÈþ¶ù&þ?9³ù.y’QQШ» Ñ•Œ&Gs¼m¾7ì“LÏ‹I7=šûmóM¹m›/]”o›/ÉvóUQxT»ù._àlÛæ»òâ›QUÔÌá×.Ü$Rg{çæñÊØcé‚Lçúqçþú1º‡ç×><>¾bûJ:ªŠÞËÃ_ƽ:dº’·p>yºovª†ç¿‘ã¿ûîã·ÏÓ‘¯ì-u„縑óß¿Ë&& endstream endobj -2178 0 obj +2180 0 obj << /Filter /FlateDecode /Length 177 >> stream -xœ]1à EwNÁ €0´C”%]24ªÚ^€€‰ˆ¡·/8I‡¶ülë›õÃmð.SöHA¿ Së¼I°†-i ÌÎÑPãt>³^T$¬¿«øþD eìΣZ€=Å;b×è``JCR~ÒrÞµÖv¼ùÉ]0Ùc³1ç%“V¡KUP¼ J¼vêêáêð4Dõ–øŒo ÍjÏyø}C¬*Z‚|ïY› +xœ]1à EwNÁ ‰Ô,KºdhUµ½1!Co_I‡ßâë›Óur6Qöˆ^½ QcŽ°ù=* 3,Ö‘¦¥ÚªtP©j•°ñ&Ãû€â˜Êw¹{6—ÒiªGy [ +¢t s1#8ý÷ÕUÃlŽÉV‹"α’¡Cc×fÄb/Šû²íôåÅ9ሪ=Fp©œQbæxÖÁïÒàCvQùðY¢ endstream endobj -2180 0 obj +2182 0 obj << /Filter /FlateDecode -/Length 213 +/Length 197 >> stream -xœ]1Â0 E÷œ"7hZ(¢Rä.¦ÊÐ4 -eàöØ.00<«/µ¥oW»Ãþ⬫s™ügb ->¦gñ¨{¼Ç¤êFÑÏ“êG—Uµ;º|{eÔÔ€añ“±ºÔ¼ÔËŒŸ|d籸tGe(LÃ߯nè糡NƪʮkŒ¡JºtÅÚ’nD[Ö-¤[ÖÒž5€@JIlÛ€m׬ôEÚ@ÚIÎo"ŽÌ»WÕþY -¦Y$àÅcÂß ó”yJê Ûál« +xœ]Mƒ …÷œ‚ˆFmL»qѦi{ÄÁ° ꢷï0j]¼ Ìß#k»kçÝʳGœÍ Vn",ó ðFçY^ðÁ™õ ŠfÒeíM‡÷'Ç°;ßõÙ3¿ÐM¾×˜y€%hQû˜BIk?ü=Õ{AoÌ3“„ÀÈd™+’+Äš°Jh ›ËªP²*â ±Q$ĆFŸCÒÉι=7[ŒàWòLž’çá÷-a©Š£ØsÇbã endstream endobj -2181 0 obj +2183 0 obj << /Filter /FlateDecode -/Length1 10604 -/Length 7344 +/Length1 9528 +/Length 6467 >> stream -xœÍzyxTU²xÕ9÷ÞîNÒésÓÙ:!!„%±%7+K !áÓIXÂf!( LÂ(¢…qpâ‚ð‡NG° >‰>ynê¸>G¢âˆÎd†qw„ô¯ÎM@ù}ó½ïÍ÷ýþøÝCUSUg«S§Î9À =À¡¶¦.7ô/ãB [×4wŒ•Ó3°¶uÃzû—sÞÛJŒ÷ Ï/ëX¾fj×\c€Ü¹|õÆecúITÏôhÛÒæ%/]©È, æ”6bDd†<IåÔ¶5ëoïï+BöÕí­Íãý yäšæ;”ÕÖä?Mȯo^³t\_ÔS;Ú;ו3…¾½cÝҎח¹¨­ÐzK¬|ªl‰|$>$8Kpntvà‚¼ -ÔÑ•aAµŸ'Ü û ÎãDx†`6<%P {`œ‚# -ñe@…r8N´ƒJˆAîƒwáZXŸÀ0d@|€áÔNt@4>#\·Ž“V”Áo`WcäR~&ËFõ¼+01x5ð•„O05Ð3)÷'ƒtè†_B8¬„—„¡àfü àRÔXWÁQx«(76ÊÂjªõÆàPàLàSxFBXJ-ýn¥û`ˆMàerØ! ®†¹ÐLÒŸÁ»¹H”î#îø‚¹Øo¹Æá‚YзÃCd·à,|Á8ÄC”^ÿÊïÐت  6‘_=HÖ;‡á8Nĉ,†Åµb ®!Ù.ØOýÀi¬ÂÂgù~9o´8ˆ -|@ÔÓ÷Á³ÔÇW˜G:ÔOáë¥di½œq+Íp <§á5Çd÷¯á;Ì¢ô!û9ë, - |Bc1‚ ¦Áp'Ù6 Jiì5¤]Gmï UòŸÒ[4Ë0´Ó,¦á\œËqÞ~|ße -s°µìsîå/ó÷¥)²(¢–¢!™úUa´Ñ -üœ¬}'Í÷ ¼/b¦aÍè-ªÿ »Š•Sz„bðm|—tA¾etxôÏ£?zÁ@^6ƒìГþ†Ñ4†L\‰ø1|7{’‡r+Wùd^Âð~+ßÃÿ‹ÿ^Z'’Þ“gÉÍò!Cóèõ£¯ª7“-W:dCL%ÿYFÞ´ŠÆ×Ail†­Ð w¿Ü }pˆæ}^„7áðZ@yõ¾†¼nÞAé><ŒÏâ ø"~ˆßˆÄR(e°)¬˜•±J¶œm£´‡fo±s<‘·ònÞCi/?Æß•@’¤€œOi¦¼C> ¼lÈ0Ì4´_¹0r1ëbÃÅFa4~ôßFï}vôÓÀÂÀF¿r`t;ò>òÁý”'O<¿…Wàm}¬_ C™<>Uò†lZµbœ³(ÍÁy”®¡´SjÆl£Ô=ø ¼ oÆÛñ.=ÝKsÛÿŽÇ(=…ƒ”ÞÄ3ø'ü¿`äÄŒ“7;Y:Ëe…4Ó26ƒÕ°ù”–³vJlÛ@+t€ °ãì-Á<‡7óµü>þþÿÿ^bR¶”+¹¥…Òré&é”ôšôŽôƒl“+ä6y¯üœ’ (×(+•{•#Ê9å‚A1ÔZ › 0ŒNŠV¿£y…Ÿ~¹Ê)ì”#¥ÙÚ±¼CÞŽ×Ŷ€¯æwð×åexžÛñ=ìå+øªÀ#¼’}ÇÛq!;‰)Ü&ñe°xˆ}ȾbŸJQ¸€}†Ò/ñ)Ö΢":‘ߢ¤›äsìm(b[pˆ½Àoâ7þŠä½xFÞË^»4Ì"à íêíìªô{¶‚í€z©@þVÝÿ]¾‘ì=ÝŠYüÒ^ø„«ìK‘¢Äë° 9æ‘ï\úFázÚ{X:Å´ -Š&o`>ÄÂ=ï¿}ZDlùyùÙC<æC4²—¡ˆöÆ'”êáȇAòÁ[!Ý ›=¸„âþŠŸ ü¸r1˜¢e ­›Î‹h–B±°‰zýŽâÿKõ«ð¯pÚig A†$$;¥ -ŠLŠ¿;(-F*=w*Gå7 c$ûè^òò÷á::s>¦þãÁMã[ IÙ4j;EæµTãÑ™ Qº^F[hÌÓiŸ×J3)òÞXI3\AgT5‰/ŠÀ=PFk7?pS`4 -\ Ë¡.pâ¦Àv¹-”]RÅØñy:þwPÜž ïQí²l<‡c2¸Wr’¥f©äzó× ý“•jÅ -ÏLÚj4FoDY=O` c9–Àõ¦È¯½Ü²(Ô‡ˆ¶$§¢ûÿ¿ÁH¬sÐ^éµzfŽá† ‡ãYÉ8/jéäÇjãsò¹®,_uEùŠá…ôr°”ƪ,îí ºBVIÁª··RµWözz›ýžÕnU{óz^ßÛQá¹´üþÀàŽoåΚDåˆ;"£°È -?¬o-Ò맟Aç˜à :}ÚA¦óÎJ¼j‰¥·$;âTTäk~¢® :õedæë_|bþðÙaºˆÚˆqÆ K>ð•–Žg¦LË dåäŸ) âÀßÿ€Ÿ¡CE¯51!ÿ|‰™È:ãmÐÇÿ^o 5-ßIþ -É_â/Òy*ª½è3‡åSƒ¿ãOÑ-ÝF÷У㒣¡aùPÒÉo§é >M0Lpž@‚v~º v!ÀBØFKP#8ü?DãÜOõ-„s Ú vH°€?NüUóƒ|%Œ6¾“¦QDwð_éôQ¢ñD&>=øCTtßxù~¢Bþëqþ}TŽ&zï8½‡ø DïÖ¼6~×xyïÒë­§}¼Ó—l³–$“ÜNGÀ)·‡r{Èt{¨„‘.v«õžú‰æ]3FÉ\[|U_£-1qù}dÒ-dú-d¹-d¹- ‘hó%Íc:9|3él&ͤ³™¬’Ç;©¿NZ0 l%°p²{'Ù]𽄇Nëü› ï&è%~Ù1“Fu_éË°‘“-(Ôò‹OÐ=©ÙeqIù»~,™‚„# §¡»T—.0…îÒø¤1JZ«JBy+üŒ€A$áT‚‚r‰·úRsmƒ|.¬1‚jëfݼ[ê–¥¼r ?Éó¡Öä’á<ܤikrãT©ÃÔcâV“Ý”gÒLµ&¹žD»8·ñ\^Ìkx—ý!Ÿ¡hm†R4iwp_°7x(øt°ìU†”ÓÊ°r^‘íJž¢)µŠGéPz”ÝJŸbÚ­ì60OpGpO0·Ûƒó‚µàÚ`ÙfÀ¾’m¼ElZÂV‚‚ÝÙ¸‰øv~A­F™â:âa ’•à4凉ÊT²ž…ô,ĵ×B\ ,$µ‚Žq©rYr©ŽÐ?/$é$ %n(Ùv˜ðy‘#˜M%3•ÌT2“ÖivFh%l'¨%à:o˜€¼†ð%YÞ¸ÜC èòóºÎ%™&ê² ZsúP&z3±/wg¢æ..É×R…‡‡7©MΦŒ¦ýR»ÚîlÏhß/Õ¨5ΚŒšýR±Zì,Î(Þ/媹ÎÜŒÜý’Mµ9m¶ýÒ®ê#Õ'«OUKMÕíÕÝÕ|*-݀ϕ—¯Ó§ G}qñùS-%W³#4&ÂûÎp°¶ä´ÈìˆÎ}‚¸O÷ ¨!h"©Ö"Ķ˟.9!gWÈ9Mþ°¯hRMI5…Ý&‚}œÚ>LòúöXîˆÎ÷Öù5ãú}:_hÙ.ÕAp±îÓ6\ ÅM2œâ‹à µNØFÐAp„@â‹)-â‹Ø”³Ã<[3OŒ²At4,áaFk‰•…/˜ñ ŽïÕñm:.Öqª:ÛüÍló3³Í·Ì6§S†eÐdÆ=:vhÁ%æ'KÌ5%æÌ3µ0³(+ãŸuèpê4-úàÍ¢S£OÝJ­(O:ÏÚ¾uŸ‡¯ÑâÛkûøišßB*~„³|‡l¯æòÙNeûÑyÌö{õ„í…T?.ôÙ†²ýFœÌö3wŽí~u±í>'•}¶­ÙO‹aÀšñB7dO·U»Ù*~$±æ¦Î´ [‘ºÎVHìi~œ5pÈ61Õ/†’Gm:fË¢ÓT}(×Ld“Á€]Z¶a½¡Å°Ð0Ïp•a’!Ç`7$ ‘Æp£Õj 1FÅ(™Œ‘þÀ°æ÷¶HŪÿÄ' ,éy+˜é?ýC#£½ãàU¬ª®½áUPµ Ô;ÕUå7æ{§¹ª¼ÆÚ«ïG¼£J^v«aA=9¨`mK»ã€˜»íöA7o»½¡«¼C­PÕb÷~SGó¢Kª¬–ÆBô†âØâðéa…•åÿyƱëÇ/ÖõÓ/6É{wU]½÷ñ¤o¾È’ª¼3ijð8[ËÚ+ʳAêã&¶¶b¾àã¦ò†ËjÂ:H Ü‚µHj‚ºZµ®FnšRQÞŸ’2¦ôÎJä>ÏéJËÇÚJ¥.¨­ZAH%CªÞV*KjäcY~ÚX EoÌzc‰B©ßé$•l§PéŸê$…~çT]|èG±êN8õ~œØ ÷ƒø£NƘyÁ¸3’Žëÿå·´ô_PÆæ÷—´ŠÇ¹G­XJàñîØÐëíi±Ûû—¼?þjOó´´¶ Ú¼Ôû¾º´Ü»D-·÷7·þq«7«åýÐZ± ¾¿U[ZîkÖš+Ôæò†ÇºËª®èë¶Ë}•uÿ“ƺEce¢¯Çªþ‰¸Jˆ}U‰¾ªD_ié}UÍ/ŪÚú~#”6ÐëN§,8ˆöƒ'ÁÑPm혮oŽ«±?O”€Ž­`z‡¨¥^3å”ä”íN! -?¿Œ‹b~•#aŽ‹¬ÄSKÁ±+Ê/ÿëìì\/ «ËEx}W¬Î[O›ÖQWå­E·×]áÕ<å (–£kü+«×¬'ݧܬÝÝíÞåÞç>â–»ºˆ~2åT -kJiOéNÙ•²/åHŠ"×ÖÓÜûRþ–»țp=}åzŸ]DéŸ(®ïêPcݹº\eõ%)ÐJ·^¤zD¨“êdøOÂo|Lð%7þÁ#‚Ãsx=ÝËE .tbyþ@Þäüi~¢ÍËÆhÝâ1Z1wŒºKòc‰úŠ'•XèŽ0Hø%‚÷>'øÌóy¾Þxט×6tB§ iø@…õuºÖ£‹2(̽¾ÓåÂÁiHÕ…Wú=`g)hAˆ’ÎíÕº½¬ÇÄÃYÖïÌôŠžÓÏð{†.«vÒ²ägÏ<É!È 2G⌊|’ä 8f‚ Wáuë²~ã¾èžkýÊ=碊)o½@hbž#Ìæ$D¡.ØùÐM†À. Q—öçøSr½ÔSaÐ×l´Ó©é“å(AÌæx?Z´pS<¤iiLKó¤õ¥ §Iia‚ÚDünØ}4î8ç &ÓQë¢4Ιkm\ûÍœ()™˜W¶Q«ÆT55%•) 92ÅàLLHJHNàJDšÅœÇ‡Ö6%¾#C)B¹T´·`‚‘P¸5ªâ‚é1E ,²²¶F„O2)?&:,’)jJzÚTkLô¤ü)S§„¤§¥§©)…ÍÞ¹~±çÍ÷ßúFËs[×<_Q¸vÊúä y©…™Eå“g°½ç°f~ɾFüeôØ]Ÿ<ûíè¹þ»š×ÆÂs÷wæ9®®}@·™–é8Ù,ˆnqokÑf -îfÍÂ5 f…`”&ˆÜ$+(…›A -1KJˆÙìÇD-Ü`Œ4ŒF.”#ØÌh>ÐJã>Í,£b2*ŠQ–BB¤tþp0â2-Ød²pÜÇpÆýø­KW]¤»=–>Ë°…[Í€†¸ÐA¼ãÒ¬u‹htÏùª‘²² -Ÿ(.̵º)X/®s‡†bXxáö .i‹õy‘µX,ó`]#6®]‡Qj˜昌“ˆ ?~lÿÅçX×õûGSñ«;FËzø/.ìd]lÒÿ°çÉ& -Ù$îÑ"µXOl_ìp¬±Z,Û· -‰Àtã5a¤ßŠ¼‘ò*UþŽf²¢‰ø…Fw9 31”MÆÆa¿%õYZxh¨E ›œgé¶ì¦YK–¸˜A–ŠgÇ]Îåžc9kž_즹`X!|=r¿v¹hN¸¶1Â9),2::&Ê1y:›,ÜBxÅyœíˆp_;Ê<Ó¢ƒ Îxg©ô»‡~ؾnZ2s:YÒÄMìý=Yöd›˜cuà,ß/WC0‰pD¡ŠÚ†ôß³·GÝx×莵y &%ÉÕiÿxFz!a‚'xlë°‡ÕÓ£ˆC±fgrOÒ’)Ý2¢þƒ fÅZôànìÃÓ¨  ŽB´`±ËÅFò-È!L}7Š^uL¾ø‹¹g¼mŠ5 ÉGò±ú8†}!…&ñk†;¤°ÄTT\•"2afæ´L­ÀSpª`¸àÛ `‰©[Ý4áñÔ㩃^œpF=ãüï Ÿ§|æ ™eÌôãÎŒ +øÙÙÓy˜ççG¹lÆh?î;š¤¹r ’èY1`5gfœÀ6ˆûX ®µ÷ØÙn{ŸÙý|Ò€7Cü¸›ø9=9lwN_Ë!þÑ&C·üì-H+À¾‚¡V@k4ý)-âd‹ˆ›$ÂÞ¹KaמּçF×~%ÐYŠÅ]#ëŠGG sÇ"á” ¹ÉiAIIq¨ŽT‡Ó!)²34--ˆB\®”Ó‚ÉÊ9‚Ó[0È4AÉkA›9IÄ<«{ü|ÉÚJŸîÓë`--ï=òEE¢R)i“ tV´'ë0MU…ߧo+ê¿ù‘E¥ƒ[z:îýóm­¹Ž¸ø°cœYËîQãm®»çÚköÍÜ깿Mš}Û]+kïÙ;ñØϼ[–§'eåb%xïꚪiI%ÉA×Ý\³¼û±±õm¡õÝHûÃAþ\ö¨„á É+’»ån¥;i§t{’a2›ì¸†_c_äX•¸AÞ˜¸õÆ÷&>šúÔaÕBo;‹5,<"*:Æifœ‹€fwDÚ¹dwÄ'$rC¬$w߀ÝîˆÄïéôÐ(²âGÀ>r8hû âtzXÏ8Úcèë†_Óº©¨©•©äß³²>:D#šÉ®Yû¬Ì—2ˆwágú"žm¤0bm1R_ʳ´±(O§˜¾€UÂÂc -·'¸d -š -b£5B#]Ž´àUR{ø’ä¹#InlÀF48 ’XE1Щ4¶,—…Ö$ùƹ£m hºÛ¢›çunÜÔ>AOÏ­šÓÕ¿wÇš§Q’«?–¾÷Vÿªc=éSëò]VGA÷ÏÞ,Ê10‹8‹êÉæý´§b!F´¬.Ó† Baz×ù™SQ8nᛤMÑÛb$·1C‘¹—§p{“´'ŽÙÓ0-ÍBÛøöXÅÑ?`1Óí5±Z8…®,-‹iYž¬¾¬á,)+n̾$‚k„="/B‹ØÑaˆˆËüñp¡qÎųã7} Pp"ë5Ž¬#sá˜Íh#d':MáI‰É‰L sšÓœ&•\ݚЎPÊ¥¥µ`b¸½RBÁ¥#_x¿îûÊ ÂžÂçÅ‘Vž:e*Q‘—M¬¦(üî›<²*u÷/w¼²|ó+;šŸ¹-ß­ºøJøŒÊI³Ývë–´Er›Ó\óðïnkö>¾óñk0éέ¿X¾½Îóaiî£÷ú‡]x¸Þ¢à÷:+gëx‹”(½®ßÆþ -)~§MO À¿öѵ9(Ì`”þÅšÿÿ~Lѱ$ìs~j @8G`ñèsÖóÂj -YÑF.þÎ X°bÍÒιKo˜ß¾¦ùúÚº9 ô,p÷xýÿÍg¼²xή`ŒÿK)ÄDÀl;Áy‚jö8Ô­ƒ¨[ßÿáí°×þÒï=2ØdqmŒëøá“žôèÕðÃú‹;­EÆP%ï÷ÿ=X +xœÍY{xTÕµ_{ïsf&™Lfòž$™ÉÉ„À$&„wÉä1á‘á!$TÌ$!¼HB«L¨E4 p->¨ +Q/`ËÉDh@¯D¯¶­«µêµ+VÚ[ÚÔWkÌýí“€r¿~÷»ý¾ûÇ=;k­½×Z{¯µ×^gŸ½'ĈÈF$¨zÞÂüB2ž¬6 Åëê[†Û€U7nls6ç½-h¼Od~yEËÊuSÚæYº‰ÔÖ•ko[1¬?ýÔÎUMõË_½t¡‚È+™“W‘06f/Ql¢4²j]ÛwFìý (~mscýp;s(v]ýwZL«‡QŠ¶ûÖúuM#úÕÒ©–æÖ¶‘ö€”·lhjùÅ +ßçЯ!²;ÕûàE¹£ÄnJ'Š|88?4;rI½…´¡5‘‘€ÞÏŒ€töAÚGY4ÈÆÓKÔO³é•P5í¦tšŽP,ÝÆ^#A)§§ÈË\Ä©‚R˜J{è]º‰6ÐÇ4@9TI°xŒ¤J¦i‘ßWÒÝ‘ãЊ¦2ú`kÙBÊG}&Ïe>XÞé§ʉ¼y­Çèc–é¡™¨ý–âh uÐ?S<­¡W#—ä´©²Mìwä¡mW&*]‘[èz:J¿d•¨Í¡ÛÔw¢ŽÒZôz’¥°þÈÙÈ'ô‚¨ #}—î†Çaêç׉2µ›Ü”M7Ð\ª‡ôŸè]–ÀÆ‹@dL¤4²܃ô)÷ñŸ3üðÑ,ª£{éqDãm:G_0+›Äc‡PÞ`Tßo•ÔN·#¯CôÒa:ÎƳñ<…§ Z)4–n„l'í‡ý^:Ã*Y-ëg/ŠýjÁPq$1’ù$¡qT÷Ñ‹°ñ9+€,ˆLѦd(mjáå-˜árz”ÎÐðãÄý ú+‡ò!¿ƒwD–DžŠ| _,䢩4Ÿ–R3m¤oÓXÕ—èeú3»È£ yZyE½]ŒÜØfS)|Ÿí…{;V)L}(oc–qÌYLesÙ¶’íd²>ö.{—›¸‡¯ç¿ºxM¼¯LVÕHFJ¦ ØÕh ­Â +Ühßù>E¯Ð)–IJYfô6úɯçå(OòÓü±UìT.©w ýçÐÅH™‘e3‡vzQøK†cÙÖÊ>‚ç»ø³"V8„&&‰±HÔŠ»ÅnñïâçÊåòž:K­W™ë‡nz#Rùž|É¿ÆP.M¤)ÈŸȦ[à_ ÊÚD[¨‹îC¾ÜOÝtó>I§è—ôkúV€˜>¯†õuȺ­ì>”=ì0{‘½ÂN±Ù—²ðL”>™ó2^ÁWò­(»ùþ6?/F‰FÑ!:QöŠcâ]…E‰¨…(3ÕíêAÓkæóLsƒåg—.\w¹öòC4”6ô­¡‡^ú$²8rü÷R]O·ÁË=ÈÁý(O#ÑOègô+Ã×Og*2ÞÉ4dC.V­˜Í`³Pæ°ù(7¢,aKQêY[…ÒÁ:ÙwÙì{ì^ö€QÆÜö³²c(?f'P~Éβ߲߳O9’˜ d³—áù|fZÆgðy|ÊJÞŒÒÂ7ðX¡ƒ¼—ço‹áy¢^¬{ÄÄKâ-ñ•Â•\%_ñ+‹••ÊÊiå åå¢êRƒê*u¯ú’)Ý4Ñt£iéaÓÓyÓ%³É\mn0o2¿eŽX¼Ø­~Šy¥o>ù¦Ó¬UMT¾ÃÏâ½pŠu»3ñEb­¸OüB]Á…›½ÇºÄjqKäIQÁÿ*šÙb~’e +—Z$VЊ°CüCþ9ÿDIb‹øïXŽòÏìǼY”q“4¢¾©$)wªç‰ø¯¨ˆofýüq§¸3ò¯T¤îegÕ½ü r+<Îâ­ÞÆB§ŸóÕ|;Õ(Õ‹´qÿ¡úÄ{:¿›o){éc¡ñÏØ {»Æël¶’ÅoæÓØ!츗Y]`ë©…=@öû5ë#ÆžYÁjéÜƦà3öºð°·D4ÕJY6ObÕ|ß(ž7“Ã.ñ º V€Ü¹ò Ñ­xvó1ØÓ‚ØMÞd…䤇°ß>ô¼Ü±ÕwÔíȳÇE.- ZÆ_£"¼£ÔÐ]TH'ƒwS˜6E:Ùrìûs°rêck(ŸY±[¦À·|/’y&öÂ:Xý+öÿW±ëW²?Ò·™oV?å(R²C bg +aÿÝŽ²œ–¡õ(Ýo:ª¾IóX +‘âÚ‹,ŸnÆ7ç#ØO#?ü[J+¹ðÚy=z<:4“(wÑkŒÓfø<ïyµ2;5˜áj|£ªðM¶t~ ê÷–kµný‚QŸcÔwuê:¸ƒÎUån…ÜA½b㪮`¨ÃõX£Ë´²¦è¼\ꉶ¢jEMOÑZzXÊtfTxJ°¨‡“ŧô4­<¨§jåÒ]xƒõËõêù5Áòt§6/WgeZƒNZ©n÷*Tf˜ÑMeºÙ0ã^-gCÛÝ=¹ý];úÔòÅ,×–×ßT£‹úZi#λåzÊíçœ_71x|YͶoJÓEWйÚ-›]]ÛÜz÷üšoJ=×Öb {+B]0¼!¬\è†-¾µ¶Fg[aÐ-ç!ç4<»&-(9¡5n=J+ÕVu­ aaÒºtZp›'œ–8 ´ »kQæÑ‹ÓµÚúòQ=‰Ôµà¶ÞÔ€;õZI^n#n8¬=±ö‘JŒí›•¦«2£f¨ËZå‚«qeÒ#mÒAw7ºáI†9M•¨i*u5N…žZ†^úr¬Çj=ª,Ôå(ß!ûëª×¡¹»¾ ¬¿vá×rêG8&¯ã ’U™%W ò+uÝçÓÇ“ b.ÊÂÇéF{R^îÆ>®k-7ÂGÕˆm}mQ>‚ïñÈåÝÞ 4ôÎù5Ãm75¤‡)ï«ÕyHJú¯H’n”’Î+’«ÝCòøY’7‹$Ý’}õÏîHN®*ÒYòÿ n–W.Ô*ç/­q»B#±­\tMkX>õªl¤Æ†¸®x©YRoÁÒÉÀŸê­Ð‚«C3ñªÁG=¡¬F¤óÚáOÆPÈß›®Ž,51r,Åk2òyŸÙ‚68Ì]¡;B3‡qm´Çó¿ìÔ”½ òu·‘9éE¾kÛ×_Ӿƽ˜.‡•l^¹hiWWô5² +lV]]š»¢+ÔUßélÐܭ븨5]-ÁЕå؞®Wì¨Å$V±¢Âà˜èS|}šIÅ÷Î{L ίÛòã‘~ñao0Xèõ]gÐpÎØBCNUø¯âC~QgÃÉé†äƒpiéHeòÔáJ︼³%Ñâú€‹ÄY|TŒ^½9×–ØÀ`â²ãï¢nñkÒœâ½Þ¬ìÂ}'ÅÏ UœÂ÷Tv;¶ÅbÀŸŠã”îÂ9ôèˆähol\!•´Š{1½~à3€À @¡fq:;G +Ù]€|À<ɇÄ!ø¹ýíÀù€fÀN€B‹ÄÓàß"±xJ¬Á‡Ñ%vàbšº]|ß ÿšúø¸>ˆÇÑ–tßHûP)ÿÁÚÉ ЇÀO}иðºÄ#í¢Ýè×6B»Ek8Ãå(É€Ü (Ôv£¶¡Û3ìÖ–z@ A× S„ksØ£k´¹7%µ°!ÝŒÐoFä6#r›IhÓMÃ:ybt6Agt6!*¢öZ±`ì¸qoEÜ%_îœ1øßÞè–-ñmÄq,¼ºG¬ ç¸d+{§ +‹ŸÃ9–aؽ©£ w~ÝŠŠ–‰;BíR·É6õFÅHnSoÚèa +­[JbE#ý€S"p`"  ˆÆpV¾ë„˜Kë,ˆuuðÑ¡t¨JA9‹?) +©ÚBHÉx‘G~(ŒuÕùÙ”PTKTg”pD¹£ +¢QÕQj3®D;…p‰|Q,æ‰:¡öEúÃæ¢ ¦¢ »¬ÝVÝÚo=cUuS¿éŒiÀ4hRݦSÀTm +™ZL¦]¦nSÔ.Ó.3Y[¬Vá°º­Ö€µÚªºÌ¬»d«h/-°ÐØPã:ðÝâf@V£¡¸|&´€3¨€ªhÙ¡g‡ž\;¸vp XJª!@ˈÔtUr¥Ô”ÀHcÁEl€e 0-Z6´lÐ:Ã/ÁC°P o€¬¾"+‘‡&C>hè\‘d_~)P?¦,ÓDzî±l×Xð—2âããë´:o]NÝ~¥Ykö6ç4ïWæió¼óræíWŠµboqNñ~%_Ë÷æçäïW\šËëÊqíWvV©:YuºJ©«j®ê¨S°t½a_A¡A3½’ §¦N±—ÜÀ`:uÀûg‚ìÀ.@> Ð Pùƒû ¸Ï€û ÍÔTôzFn1À®™äï3d²&åü¹À䇋&Ì+©Â¶[Øû0ä‡ íáÚƒ¯üy#úÝ_j¹WúÉMp©±Ý-Åk¸”Šu€€J§Å: ÀèÀ.@ à@KQ–ˆ%ü”Ãü°È ØÆ'¹(9Yþgq”8x rÁÆž2ðþÇÀÅÎ +Äζ}9ÛöÂlÛ]³mcPá9øÙØn{ÖÛ³%¶y%¶±%6Œ–B²ñ$›$fÿià¹Î $zl_ylŸylöØóØÖ{l7xd¿Qx‡m<ÑÀV‰qI•x¶³V—í'.Û—mŠËVbc{¬S©3 œ.1ûôY{¹¢žcŸR9FbaÿXW'ƒ°HØ_2öϹöïù[Øÿ}×óì+f|ÚØ—á¬s®’$ö9›¥Èög#ôÏl®K.\žgáâæbÈϼ ÿöo‘úO¢ÿÐ~‚2-Rÿq\%ÝÇfüÇFú=Îm€ÕG¹·Áê(×°úP8÷¸ßçÞr8w-ÈΰW:¸&ìç*‰c+)‹KÝFòréIՈřy-èŒáÎÁp®ìU. ô±²°6dŒôòy¦QµaÎÖŒIŽ&Íbi†Óéä5h,³ÎÛ(Ó –°¶£˜žõžsýÅÿœœ8}Áìá½®žÇü£ù6+|ÈõÆq®°ëtnósý\{ÎõJV[võçöY 8™ÛÇÙQW‚¬C—³c®#¹+]Ïh†t¿)–zŸ?Ïõˆ¶ÔµÇ‹vص%÷yé­ÃŒC\›;ÝUå?äªðö1ˆ~ D»Š´ ®i`Oíc³z¹ÆgõIW +0Æ¡c®q°˜­®Ü8åŸDfÖÈ5·™Ì‹ÍóÍ×›'˜óÌnóhó(s¢%Þâ°ÄZb,Ñ‹ÅdQ,ÜB–ľÈ@À'Ïm‰&‡ñŸ"±bÔ\bnüôGœY8Þ=ATòÊ…¥L¯¤ÊE¥ú_eŸ9²@Ÿê«Ô-Õߪéaì¾Z´t~w£E5HPÉÚš./wlj±ü­÷¦Kºië½µµ¬Rïo¤Ê·þåBÌ#‡TU+uRòÆbgqüô¸iå…F°ïëÇéûæã­?X¹°Fzt­^(+‘ѵ•ú y-<Î×óæ`ùqÞ"ImÍqv;_\ ùìöòÚ«j”É[ F~I¤Z/eJ5Êd½†Z•¡†4Í –÷df+½ÄfI%¤ÏK†ÒÊá±²`cUK5žAYÆXY[VÜŒc´RÝ¢¼’¼)ÂÛ)E±òç—‘óŽë=é'ØS#"ØqZ)ùÈ\]~õ¯µµµMB{»¸­ÝiðÚðÒzVêò²è×ýA=*¯er9ÚGž²š€ã¤ÿ´Ÿ7û;ü;ýûüGüj{{-Øñ'3OgòºÌæÌŽÌ™û2dš¤à¦šcÿ¾Ì?eŠvdkÃ,7l¶ƒâO6ÛÚ[åC0Ð +6çk÷•Õ”dR#N½ 'ô’ +U»6¶B’Ám•ÝÚ%½ªÇåÅY5ÎÌd¦9=œ=Ç_ÀaÕÌO†IUúø Ï +Š6ËÊQF©“zrN‚¥(v »™œ>Ç—þËþ¹ŽÏýs.û©uÇ% ñž8Oœ[?]r‹þK•.’[é76ÿ…¬“×à$¨8àæjçèå“;TÆŒ nìVÍBlëfg˜‰õ±‰G©SY´TZ»¼ÌïðSþàñl™/Á“äYÈÕËyÊCÆ픋éRWá¼Sø®Ùi–âuÃDg(U"{FròX³ß<ËüC³)àþ–²Ôò­”¥Î[,mqmñZ‹ÝwØz8ö”z*åß寮ëp¥|•’„s€’ª¦'¥&§¦Œvš£R¬Në艩3RïIÙé6;S9OIKI5ÙD*WMΔä¤Ds‚bëc«QQĘâÎ(Õ'&bjÚÎT¶/õH*O=!& ž÷ö2“ÑÇî ØÈô›y u Í  JB3˜T¹îN·¹»ÝÜúû +±³±@ ±Ž7󾓟ä§ùYþ'ná©®ì>Óéú,›sÎa®cÙú/—Íù|ÙÇ,Ò…ËËÖû‹/¯÷‹‹O™?¦qG¬›CÝürìˈìú Ëh™L,ò1á™D4ib¶–i2k“'O(”S3™¹ÙS8yòq¨îÒ«gî½·.ß—íM=ýÈþ_Ì>ðÕtÖ°vIES‡.zY){ø‡[´¯?þ“·v­\ùÄÑ¡Á©ŽñyÆz b½LX¯dz(p†œÝΧB΀“o¤»ˆÇ–$°Õ8µF±nÊD¬dÝ‚º†Î%;[MÉàû4€ó˜Gq¦FYb¸ ì/PŸˆµâ&Ø;ì»ìÝvÅžšr‚g±s#òùç8.œsÈì-öÁ˜F_\¸Ä¾ðùÆ ë—%x'Ä%&'§$y&Mç“â&ŽÉF(̃l¶'ÁÓMMŽ6{Ó¼¥ÊO¿¸mÃÔ îõòÑãoçïïçÎpá¤C³#çÅ1Geщp½ÅSbXU“$±ÙÒú˜=•FÙlÈewgd+Ùq’[GÍÔA;©ïiª÷Ëøze‡×u–ôBñ…ñe·ªX––•™ÅMœ ÆMfï¨ôÑéé”m÷Z³©)©ÜäQâÈeJk`‰±¨%Ç –ÅÜ ,ÝïHj Ôh ã*Ñ8ÆÛ’01~ +–?%9.‘›´Ì1ÙS)É +'O™,ƒ2FFÅÄgïh[ztÓ#w¿ÙðÒ–u/§­ŸÜ–q]AÖ´±Eå“fNä{ϳy Jö½2täCÇøøÅ¿ ïy ~Ãa6íü#­ž=jäEUäœØ¯V‘•ž9NJd 7!}ºjœ.QIµ0UŒ‹*¥€-d붽ÊNñwØ;|ÀfM#fed ØW—…@šà‰BpEØÔÀŒIêo˜ Äô¹3õ±=Ǻ­Ìš£žàçqÿ$ƒ³ªPª•nEUžç¿¥˜‘;¾\váœ÷Ïå;äs\ðû·©×ù¶Ån¾òÆl@¼°#1y +ó˜Ÿó_ ù[ØCÛ×,š0Z­ÊþÛ Ê+é×…¬Ã¿]úi ^gù\Þo´ùȯ›‰ò'/! `¢ìÁŠàÆ?GÿÁžÿ…&X‘³œ‰çI,¯ÖÆåbøQ ~¼ü÷8É߇㈭^×Ô:·éÛ š×ÕßZ½pÎ"£'ÛõDÊrms#×0F~6Mc£øÓ´ÎåBi6U ¯éÿðȾü?ôèGNÔÙý_XR‡=ñÑè—$=zC/]l»¼ÃQd‰E3ꊭÿîi endstream endobj -2182 0 obj +2184 0 obj << /Filter /FlateDecode -/Length1 5080 -/Length 3303 +/Length1 4304 +/Length 2777 >> stream -xœÍW}pÇu{¾ûÀá@‚îp)!H€`HŠ¦(J´TY–,pdÙ$EËr¤„uÕöäÃi’Zƒ6¶•hœŽëIâL:I󇻢S[IGi:´V“ŽËq;©;ã~ØhR'ÓvEöí¤d7MÿëanoßÛ·ï÷~ûvBððpø¶£E œGþw,Ž/Ÿ[\íÈÒòüòù‡ô€ü$*~ŠïS÷­ž>i¿mg¸•Óg¹¯cï~ péþ•ÅS¼ÿ‹O(_Eeù~Tx–ùÿ -Êý÷Ÿ{èᎽr‹Ñ³Y^ìÎÄ¢ïÜâëdM¼Šöÿ…²þáÅs+Ýõ½ŠEbõ#}¨Ûÿ1Ö¾úàÊjc±÷€+Žkº›µ+ÜÓHáoe˜„¸ÏÑ‚cø;Òiø0|ª Ap;FA‡Ýp Á‡à ,Á)@…¸"ÌA?œ ¼†»`<¿ á·`>Ÿ„£ðˆìÇá7á³?…<å>\£·ž¯S0wÇ©«MÕÝ'êú+”(#ñ%yýïh0W \þÀ‘Ú^³n(Ÿ?×éÌášAgêêʳ®†iag¦©õ¸a$ôõ€p5Ǻk3³HÞÔ×»“›zíÀÑ„AI½Ö@‡̆©7æ"ëÐéÂ>*²0ȸn‰9À*òûh°¹øÀ½7zº*yt¢ñ8ƒíÖSfÃCõõÉÄKØͯÁ ™™%^aœ’«±òHÍ\ÂÕ›³ üs‘Ÿ9Rk"÷,Ï6‰NðCõeÚ³Ò·5—š§¨E\°(8¤ÇóÙÍq8%¼úîÅkªðÓ¼ç 9šùg˜ö#Ã9”9ˆ±®ÞßÅV÷ dós”|PïášMÈu{žE”ŠHÖ謄ZÅb´\²b%«RÒÌ—SJZ˜ ‹Í—žœYõ>Õ§U¾zîÓ…ƒ·œ?#$`Ñjöe‘úXÈYÍl“²JCÛ·`eN½;Mé0%B´aô±¦ÝH¯"ñü -:%‰³g3¤A„ÑÒ®ï¶ç¬Á¿âeÄïs/TèÕ'6þåi}‚ôM¥íCŠæ>ƒ\êÙõw2#H8ÞíqÉ÷ŽŸQ¿]I»°Íœ&ö˜ÁjéÊËÏíOGBrÅÓÆxÀ€Yh‹hã(mÁ‡¬Ê)Û c‰û)ˆAóÅÛ¶‰ß`¡Š““lËðÌG·“RJNzQFGx3æ;¡šæÈ©Ç/¿ðäSüâ¾¾ÜD%¹ëP!ˆæª¢áï=ó¥+ßöKß%Ç÷¯ÎåÅáÝÇo*--MN.-mÇ+‹ñê‡ç¡`Y9è„…ú¬fe'|m§ÒR:áJDY,š/×J»QÜ%iW»éN3­›ørÍ´›UÓ¦/Gh¶H#부1MYM!Â?ÚDV0 ŠEÏÝ51!u ¢­!½c"FJ°x»ƒHØPÕVØ.”Ù.4GHŽ¼?Æš£ÍIR²Ê•y]ó혺hLl¼YMéNá{Båc¢Á‹“C>í)óÇSýü 1|rÏ@H}ÍœìÜ-R›¿ ÿ€1OCs€qY/Ùy b´hûpw†"s$*1g‹E*¬c¾´5¹Ýáƒè‰&Ú€AM†ÛöNüj¸z³JAú#ÞíÕóìÀIÊkAQb›ì|× *5…ävùddîbÐÇnØ«#¤sð é;'Šs°”bŽ“GgOÞ={z~xÉß+¨±žøòäÈÄÜm˵óÇ­ÓÁ€Hb)-»´§2÷xqa´r¼zðžLæojwŒíØŸ;=ýkg2Jø•ßÝåG ù164}ŒÅ˜œJ+Ð!„ÂXÒ‹JVÙJ¦½ -Ã¥7†,I ùdI -Y2”bÚ¡,2 5Ī© n¸HÃë6 K’V3ÌÎÿ™0²„ÊcB©‘±Zýjô‹v ©¡v¨‘cÔàÈI¶Ç[­Úr/ÊbV‰Æ>@ <ÿ;CTGüKcâC'²}…kÿTÑ·yòx4ôÌLÖ§iþég'Ã¥Ûÿ@qcä;ש28þætfk݆8iøo¨©0x¢}$!ñB ´šÄa>q£{,¥Ç‹Ô½Þr‰pšºÚÛa~ÌhP@Åkø{äÀìÁ#Jú»8v€›9xøž5{÷ÝÞ'o™™ÜÏû¾y@z•ý· Â3ͯà/"n»åȱ»köÒ86+ß1=YßOÃ&tdòîYB¥ hÏü1nŸ<2S÷홽ãÎcõùlcöèÌli²e;€+Œ>ÝÈFÈyî,$bøíÀo? ÂptÛa7~÷":·Ãâka¨Ð ¬ƒk  nƒC0ûA† 4ÃÍp¤a´Á>È€üp=l‚‡ákp +Jp¾³p<ðydö>ø<ࣤ n¥Ýãºåx‘‚µ.L…DamÑÑÝ_4.R¢ö„S”$?ÑÆDŠrÉ­; ­¢™¢|òPØ Ãã“SÔ•dSM˼·ðçÈoŠ´+ÌGþQŒX&u' +tôxÑ(q=w²iïõ)*$í89…»§öîPÀe'Á48-3Þ]`í΂5…Þ[#ìˆ5‚Ìï,”±×O”‰A°£Æ4mžY±´W0IQ‹¼`“rŠÕ‹°_øÃgæƒÂ%¦ùÈÇçh|äï0,lÆ +çsbS½ã}à~Ž,>DÉ×a+õŽlB.Ú£,£TÂbÕv¢p¢Eæ÷€ºŒ”Ol >ccÙuK8@46¾¾/,B{qPÌׇ z¯ +8è‰×ð^4°5ê AC¦š4®¨Býu4Ôúû¹„ÍG¨"Ô¬e¨°}UgߺFF¥yJåÀ2 0{‰XWìƒLãÿð +!¦ r¡+ -Ã0B=¹‹TK° ¸ ¾ø<×Ͻ Þ%YÈÁóPî&¨´5êJÐLÚî÷T©ž¶ÁS-ëàKœÝ´/mg]UBÒ43Wé—!€ÖýíD¥ÅAå–8³n‰¢u‹d§HÂîÔ«ç|)o¢"Jp'tJ¶†z^«R^²s8wµ3×Σ֗’ªç©(Ÿ[wŠJÙóù<ÕdêɃ­·ÉŠÍ‹ùüªÕ$ +j~âî\ç@âѶõ 6˜_ÎôÆ[Hx“üèi¬“;«ò©‘7Îç[9UåÍkž}ilFTÕݬ6¿þ†îWüXå +X‹ïr6Öy˜0eŒ+Ë\IÛË_=KTÍPAÂçl‚Z™ +Hpî ’­ã½’`Üåäl7Ë_SÞVÙí¤°Ã‹Ç5A>Vš¦îhãB”Ù\–¼¡‹+מ1×,\ÎÇŒ§òÍMý»Oig»DýÒZëÕµmüREš.õôúŽ¦àëÖ ,sS@nºÀ†²È2È#L¨4ÔÈPC-¨dÂÒÛ¢²àZð4Vb]¢Š Å¡®Óvµcô±.&Æ⌡î4õÏÙ€ E3e?{Ö û‘!ªd íHK> stream 0 g 0 G 0 g 0 G +BT +/F84 9.9626 Tf 1.004 0 0 1 150.705 706.129 Tm [(the)-248(amount)-247(of)-248(needed)-248(padding;)-248(mor)18(eover)74(,)-248(while)-248(the)-248(DIA)-248(code)-247(is)-248(easily)-248(vector)18(-)]TJ 0.999 0 0 1 150.705 694.174 Tm [(ized,)-249(it)-249(does)-249(not)-249(necessarily)-250(make)-249(optimal)-249(use)-249(of)-249(the)-249(memory)-249(hierar)18(chy)111(.)-310(While)]TJ 0.99 0 0 1 150.406 682.219 Tm [(pr)18(ocessing)-252(each)-252(diagonal)-252(we)-252(ar)18(e)-252(updating)-252(entries)-252(in)-252(the)-252(output)-252(vector)]TJ/F131 9.9626 Tf 1 0 0 1 457.277 682.219 Tm [(y)]TJ/F84 9.9626 Tf 0.99 0 0 1 462.508 682.219 Tm [(,)-252(which)]TJ 0.98 0 0 1 150.705 670.263 Tm [(is)-248(then)-248(accessed)-247(multiple)-248(times;)-250(if)-248(the)-248(vector)]TJ/F131 9.9626 Tf 1 0 0 1 342.631 670.263 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 350.281 670.263 Tm [(is)-248(too)-248(lar)19(ge)-248(to)-248(r)19(emain)-248(in)-248(the)-248(cache)]TJ 1 0 0 1 150.705 658.308 Tm [(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 1.02 0 0 1 165.649 646.353 Tm [(The)]TJ/F78 9.9626 Tf 1.02 0 0 1 186.392 646.353 Tm [(hacked)-367(DIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 239.757 646.353 Tm [(\050)]TJ/F75 9.9626 Tf 1.02 0 0 1 243.141 646.353 Tm [(HDIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 271.929 646.353 Tm [(\051)-367(format)-368(was)-367(designed)-367(to)-367(contain)-368(the)-367(amount)-367(of)]TJ 1.02 0 0 1 150.406 634.398 Tm [(padding,)-346(by)-325(br)18(eaking)-326(the)-325(original)-326(matrix)-325(into)-326(equally)-325(sized)-325(gr)17(oups)-325(of)-326(r)18(ows)]TJ 1.013 0 0 1 150.376 622.443 Tm [(\050)]TJ/F78 9.9626 Tf 1.013 0 0 1 153.737 622.443 Tm [(hacks)]TJ/F84 9.9626 Tf 1.013 0 0 1 175.778 622.443 Tm [(\051,)-246(and)-245(then)-245(storing)-246(these)-245(gr)18(oups)-246(as)-245(independent)-246(matrices)-245(in)-245(DIA)-246(format.)]TJ 1.004 0 0 1 150.396 610.488 Tm [(This)-250(appr)18(oach)-250(is)-250(similar)-250(to)-250(that)-250(of)-250(HLL,)-250(and)-250(r)18(equir)18(es)-250(using)-250(an)-250(of)17(f)1(set)-250(vector)-250(for)]TJ 1.013 0 0 1 150.705 598.532 Tm [(each)-247(submatrix.)-306(Again,)-247(similarly)-246(to)-247(HLL,)-247(the)-247(various)-247(submatrices)-246(ar)17(e)-246(stacked)]TJ 0.991 0 0 1 150.705 586.577 Tm [(inside)-253(a)-252(linear)-253(array)-253(to)-252(impr)18(ove)-253(memory)-252(management.)-314(The)-253(fact)-252(that)-253(the)-253(matrix)]TJ 0.98 0 0 1 150.705 574.622 Tm [(is)-212(accessed)-212(in)-212(slices)-212(help)1(s)-212(in)-212(r)18(educing)-212(cache)-212(misses,)-220(especially)-212(r)18(egar)19(ding)-212(accesses)]TJ 1 0 0 1 150.705 562.667 Tm [(to)-250(the)-250(vector)]TJ/F131 9.9626 Tf 57.424 0 Td [(y)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 1.003 0 0 1 165.649 550.712 Tm [(An)-248(a)-1(ddi)1(tional)-249(vector)]TJ/F78 9.9626 Tf 1.003 0 0 1 259.673 550.712 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 1.003 0 0 1 308.411 550.712 Tm [(is)-249(pr)18(ovided)-248(to)-249(complete)-248(the)-249(matrix)-248(format;)]TJ 0.999 0 0 1 150.705 538.757 Tm [(given)-250(that)]TJ/F78 9.9626 Tf 0.999 0 0 1 197.561 538.757 Tm [(hackSize)]TJ/F84 9.9626 Tf 0.999 0 0 1 234.51 538.757 Tm [(is)-250(the)-251(number)-250(of)-251(r)18(ows)-250(of)-251(each)-250(hack,)-251(the)]TJ/F78 9.9626 Tf 0.999 0 0 1 408.824 538.757 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.999 0 0 1 457.388 538.757 Tm [(vector)-250(is)]TJ 1.013 0 0 1 150.705 526.801 Tm [(made)-246(by)-246(an)-246(array)-246(of)]TJ/F181 10.3811 Tf 1 0 0 1 242.857 526.801 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-209(+)]TJ/F84 9.9626 Tf 1.013 0 0 1 314.476 526.801 Tm [(1)-246(elements,)-246(pointing)-246(to)-246(the)-246(\002rst)-246(diagonal)]TJ 0.98 0 0 1 150.705 514.846 Tm [(of)18(fset)-215(of)-215(a)-214(submatrix)-215(inside)-215(the)-215(stacked)]TJ/F78 9.9626 Tf 0.98 0 0 1 318.648 514.846 Tm [(offsets)]TJ/F84 9.9626 Tf 0.98 0 0 1 345.153 514.846 Tm [(buf)18(fers,)-223(plus)-215(an)-214(additional)-215(element)]TJ 0.98 0 0 1 150.705 502.891 Tm [(equal)-226(to)-225(the)-226(number)-225(of)-226(nonzer)18(o)-225(diagonals)-226(in)-226(the)-225(whole)-226(matrix.)-306(W)94(e)-226(thus)-226(have)-225(the)]TJ 0.98 0 0 1 150.406 490.936 Tm [(pr)18(operty)-202(that)-202(the)-201(number)-202(of)-202(diagonals)-202(of)-202(the)]TJ/F78 9.9626 Tf 1 0 0 1 341.485 490.936 Tm [(k)]TJ/F84 9.9626 Tf 0.98 0 0 1 346.083 490.936 Tm [(-th)]TJ/F78 9.9626 Tf 0.98 0 0 1 360.171 490.936 Tm [(hack)]TJ/F84 9.9626 Tf 0.98 0 0 1 379.718 490.936 Tm [(is)-202(given)-202(by)]TJ/F78 9.9626 Tf 0.98 0 0 1 427.587 490.936 Tm [(hackOffsets[k+1])]TJ 1 0 0 1 149.709 478.981 Tm [(-)-250(hackOffsets[k])]TJ/F84 9.9626 Tf 62.983 0 Td [(.)]TJ +0 g 0 G +ET +1 0 0 1 197.579 370.389 cm +q +.4451 0 0 .4451 0 0 cm +q +1 0 0 1 0 0 cm +/Im10 Do +Q +Q +0 g 0 G +1 0 0 1 -197.579 -370.389 cm +BT +/F84 9.9626 Tf 198.751 348.472 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +0 0 1 rg 0 0 1 RG + [-250(5)]TJ +0 g 0 G +0 g 0 G +0 g 0 G + -33.102 -23.941 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_hdia_sparse_mat)]TJ/F84 9.9626 Tf 109.837 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET q -1 0 0 1 150.705 662.293 cm -0 0 343.711 49.813 re f +1 0 0 1 150.705 120.326 cm +0 0 343.711 192.279 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G @@ -31134,324 +31182,633 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 163.108 690.488 Td [(contains)]TJ +/F231 8.9664 Tf 163.108 301.945 Td [(type)]TJ 0 g 0 G + [-525(pm)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 4.708 -10.959 Td [(....)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 14.122 -10.959 Td [(real)]TJ +0 g 0 G + [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.708 -10.959 Td [(end)-525(type)]TJ + [-525(allocatable)]TJ 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-1050(::)]TJ 0 g 0 G -/F62 9.9626 Tf 151.98 -578.132 Td [(172)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -ET - -endstream -endobj -2189 0 obj -<< -/Length 7014 ->> -stream +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(data)]TJ 0 g 0 G + [(\050:,:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -BT -/F59 11.9552 Tf 99.895 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(For)-285(computing)-285(with)-285(CUDA)-285(we)-285(de\002ne)-285(a)-285(dual)-285(memorization)-285(strategy)-285(in)-285(which)]TJ 0 -11.955 Td [(each)-368(variable)-368(on)-368(the)-369(CPU)-368(\050\223host\224\051)-368(side)-368(has)-368(a)-368(GPU)-368(\050\223device\224\051)-369(si)1(de.)-665(When)-368(a)]TJ 0 -11.955 Td [(GPU-type)-355(variable)-355(is)-356(ini)1(tialized,)-382(the)-355(data)-355(contained)-355(is)-356(\050usually\051)-355(the)-355(same)-355(on)]TJ 0 -11.955 Td [(both)-246(sides.)-309(Each)-246(operator)-246(invoked)-245(on)-246(the)-246(variable)-246(may)-246(change)-246(the)-246(data)-246(so)-246(that)]TJ 0 -11.956 Td [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 14.944 -11.955 Td [(Keeping)-209(track)-208(of)-209(the)-208(updates)-209(to)-208(data)-209(in)-208(the)-209(variables)-208(is)-209(essential:)-289(we)-209(want)-208(to)]TJ -14.944 -11.955 Td [(perform)-220(most)-221(computations)-220(on)-220(the)-220(GPU,)-221(but)-220(we)-220(cannot)-220(af)18(for)18(d)-221(the)-220(time)-220(needed)]TJ 0 -11.955 Td [(to)-327(move)-326(data)-327(between)-326(the)-327(host)-327(memory)-326(and)-327(the)-326(device)-327(memory)-327(because)-326(the)]TJ 0 -11.955 Td [(bandwidth)-351(of)-352(the)-351(inter)18(connection)-352(bus)-351(would)-352(become)-351(the)-351(main)-352(bottleneck)-351(of)]TJ 0 -11.955 Td [(the)-262(computation.)-347(Thus,)-265(each)-263(and)-262(every)-262(computational)-262(r)18(outine)-262(in)-263(the)-262(library)-262(is)]TJ 0 -11.956 Td [(built)-250(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.122 -10.959 Td [(end)-525(type)]TJ 0 g 0 G - 13.888 -18.472 Td [(\225)]TJ + [-525(pm)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -21.918 Td [(type)]TJ 0 g 0 G - [-500(If)-254(the)-253(data)-254(type)-253(being)-254(handled)-254(is)-253(GPU-enabled,)-255(make)-253(sur)18(e)-254(that)-254(its)-253(device)]TJ 11.019 -11.955 Td [(copy)-351(is)-351(up)-352(to)-351(date,)-377(per)1(form)-352(any)-351(arithmetic)-351(operation)-351(on)-352(the)-351(GPU,)-351(and)]TJ 0 -11.955 Td [(if)-314(the)-313(data)-314(has)-314(been)-313(alter)18(ed)-314(as)-313(a)-314(r)18(esult,)-330(mark)-313(the)-314(main-memory)-313(copy)-314(as)]TJ 0 -11.955 Td [(outdated.)]TJ + [-525(po)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -11.019 -19.199 Td [(\225)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 14.122 -10.959 Td [(integer)]TJ 0 g 0 G - [-500(The)-266(main-memory)-266(copy)-266(is)-266(never)-267(updated)-266(unless)-266(this)-266(is)-266(r)18(equested)-266(by)-266(the)]TJ 11.019 -11.955 Td [(user)-250(either)]TJ + [(\050psb_ipk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf 0 -19.199 Td [(explicitly)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ 0 g 0 G -/F62 9.9626 Tf 47.581 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -47.581 -15.213 Td [(implicitly)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-1050(::)]TJ 0 g 0 G -/F62 9.9626 Tf 49.793 0 Td [(by)-276(invoking)-276(a)-277(method)-276(that)-276(involves)-276(other)-276(data)-277(items)-276(that)-276(ar)18(e)]TJ -27.875 -11.955 Td [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ -46.825 -19.199 Td [(In)-264(this)-264(way)111(,)-268(data)-264(items)-265(ar)18(e)-264(put)-264(on)-264(the)-264(GPU)-264(memory)-265(\223on)-264(demand\224)-264(and)-264(r)18(emain)]TJ 0 -11.955 Td [(ther)18(e)-337(as)-337(long)-337(as)-337(\223normal\224)-337(computations)-337(ar)18(e)-337(carried)-337(out.)-571(As)-337(an)-337(exampl)1(e,)-359(the)]TJ 0 -11.955 Td [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 99.895 364.481 cm -0 0 343.711 16.936 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525(off\050:\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 121.713 370.757 Td [(call)]TJ + -14.122 -10.959 Td [(end)-525(type)]TJ 0 g 0 G - [-525(psb_spmm\050alpha,a,x,beta,y,desc_a,info\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + [-525(po)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -21.918 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -21.818 -23.482 Td [(will)-321(transpar)18(ently)-322(and)-321(automatically)-321(be)-322(performed)-321(on)-321(the)-322(GPU)-321(whenever)-321(all)]TJ 0 -11.955 Td [(thr)18(ee)-274(data)-274(inputs)]TJ/F67 9.9626 Tf 78.001 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)]TJ/F67 9.9626 Tf 5.282 0 Td [(x)]TJ/F62 9.9626 Tf 7.962 0 Td [(and)]TJ/F67 9.9626 Tf 19.598 0 Td [(y)]TJ/F62 9.9626 Tf 7.961 0 Td [(ar)18(e)-274(GPU-enabled.)-383(If)-274(a)-274(pr)18(ogram)-274(makes)-274(many)-274(such)]TJ -124.034 -11.956 Td [(calls)-250(sequentially)111(,)-250(then)]TJ + [(,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 13.888 -18.472 Td [(\225)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(extends)]TJ 0 g 0 G - [-500(The)-322(\002rst)-322(kernel)-322(invocation)-322(will)-322(\002nd)-322(the)-322(data)-322(in)-322(main)-322(memory)111(,)-340(and)-322(will)]TJ 11.019 -11.955 Td [(copy)-356(it)-357(to)-356(the)-357(GPU)-356(memory)111(,)-383(thus)-356(incurring)-357(a)-356(signi\002cant)-357(over)18(head;)-409(the)]TJ 0 -11.955 Td [(r)18(esult)-250(is)-250(however)]TJ/F60 9.9626 Tf 78.156 0 Td [(not)]TJ/F62 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ + [(\050psb_d_base_sparse_mat\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -104.946 -19.199 Td [(\225)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ 0 g 0 G - [-500(Subsequent)-378(kernel)-377(invocations)-378(involving)-377(the)-378(same)-377(vector)-378(will)-378(\002nd)-377(the)]TJ 11.019 -11.955 Td [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ -24.907 -18.472 Td [(For)-285(all)-284(invocations)-285(after)-284(the)-285(\002rst)-284(the)-285(only)-284(data)-285(that)-284(will)-285(have)-284(to)-285(be)-284(transferr)18(ed)]TJ 0 -11.955 Td [(to/fr)18(om)-298(the)-298(main)-298(memory)-297(will)-298(be)-298(the)-298(scalars)]TJ/F67 9.9626 Tf 204.123 0 Td [(alpha)]TJ/F62 9.9626 Tf 29.119 0 Td [(and)]TJ/F67 9.9626 Tf 19.834 0 Td [(beta)]TJ/F62 9.9626 Tf 20.922 0 Td [(,)-310(and)-298(the)-298(r)18(eturn)]TJ -273.998 -11.955 Td [(code)]TJ/F67 9.9626 Tf 23.213 0 Td [(info)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -44.134 -20.101 Td [(V)111(ectors:)]TJ + [-525(psb_d_hdia_sparse_mat)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 40.677 0 Td [(The)-253(data)-253(type)]TJ/F67 9.9626 Tf 63.081 0 Td [(psb_T_vect_gpu)]TJ/F62 9.9626 Tf 75.744 0 Td [(pr)18(ovides)-253(a)-253(GPU-enabled)-253(extension)-253(of)]TJ -154.595 -11.955 Td [(the)-306(inner)-307(type)]TJ/F67 9.9626 Tf 65.727 0 Td [(psb_T_base_vect_type)]TJ/F62 9.9626 Tf 104.606 0 Td [(,)-321(and)-306(must)-307(be)-306(used)-306(together)-307(with)]TJ -170.333 -11.955 Td [(the)-327(other)-326(inner)-327(matrix)-326(type)-327(to)-327(make)-326(full)-327(use)-326(of)-327(the)-327(GPU)-326(computational)]TJ 0 -11.956 Td [(capabilities;)]TJ +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.198 Td [(CSR:)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 27.945 0 Td [(The)-210(data)-210(type)]TJ/F67 9.9626 Tf 61.793 0 Td [(psb_T_csrg_sparse_mat)]TJ/F62 9.9626 Tf 111.927 0 Td [(pr)18(ovides)-210(an)-210(interface)-209(to)-210(the)-210(GPU)]TJ -176.758 -11.955 Td [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.958 Td [(!)-525(HDIA)-525(format,)-525(extended.)]TJ 0 g 0 G - 139.477 -29.888 Td [(173)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -ET - -endstream -endobj -2193 0 obj -<< -/Length 5442 ->> -stream +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.959 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F231 8.9664 Tf 0 -21.918 Td [(type)]TJ 0 g 0 G + [(\050pm\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -BT -/F59 9.9626 Tf 150.705 706.129 Td [(HYB:)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ 0 g 0 G -/F62 9.9626 Tf 29.061 0 Td [(The)-201(data)-201(type)]TJ/F67 9.9626 Tf 61.536 0 Td [(psb_T_hybg_sparse_mat)]TJ/F62 9.9626 Tf 111.842 0 Td [(pr)18(ovides)-201(an)-202(int)1(erface)-202(to)-201(the)-201(HYB)]TJ -177.533 -11.955 Td [(GPU)-354(storage)-353(available)-354(in)-353(the)-354(NVIDIA)-353(CuSP)92(ARSE)-354(library)111(.)-621(The)-353(internal)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-252(is)-251(opaque,)-252(hence)-251(the)-252(host)-252(side)-251(is)-252(just)-251(CSR;)-252(the)-251(HYB)-252(data)-251(format)]TJ 0 -11.956 Td [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -24.906 -20.26 Td [(ELL:)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ 0 g 0 G -/F62 9.9626 Tf 25.733 0 Td [(The)-290(data)-291(type)]TJ/F67 9.9626 Tf 64.203 0 Td [(psb_T_elg_sparse_mat)]TJ/F62 9.9626 Tf 107.501 0 Td [(pr)18(ovides)-290(an)-291(interface)-290(to)-291(the)-290(ELL-)]TJ -172.531 -11.955 Td [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -24.906 -20.261 Td [(HLL:)]TJ + [-525(hdia\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 27.945 0 Td [(The)-190(data)-190(type)]TJ/F67 9.9626 Tf 61.2 0 Td [(psb_T_hlg_sparse_mat)]TJ/F62 9.9626 Tf 106.5 0 Td [(pr)18(ovides)-190(an)-190(interface)-190(to)-190(the)-190(Hacked)]TJ -170.739 -11.955 Td [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.261 Td [(HDIA:)]TJ + [(\050po\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 35.696 0 Td [(The)-341(data)-342(type)]TJ/F67 9.9626 Tf 65.721 0 Td [(psb_T_hdiag_sparse_mat)]TJ/F62 9.9626 Tf 118.468 0 Td [(pr)18(ovides)-341(an)-342(interface)-341(to)-341(the)]TJ -194.979 -11.955 Td [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F59 14.3462 Tf -24.906 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F59 11.9552 Tf 0 -24.857 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 514.195 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 513.996 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 514.195 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ + [-525(allocatable)]TJ 0 g 0 G - [-525(psb_cuda_init\050ctxt)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525([,)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(device]\051)]TJ/F62 9.9626 Tf 14.944 -22.253 Td [(This)-250(subr)18(outine)-250(initializes)-250(the)-250(PSBLAS-CUDA)-250(envir)18(onment.)]TJ + [-525(offset\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -14.944 -20.177 Td [(T)90(ype:)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + [(\050psb_ipk_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ 0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 0 -20.26 Td [(device)]TJ + [-525(nblocks,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-254(as:)-317(an)-254(integer)-253(value.)-575(Default:)-317(use)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 193.006 0 Td [(mod)]TJ + [-525(nzeros)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [(\050iam,ngpu\051)]TJ/F62 9.9626 Tf 70.522 0 Td [(wher)18(e)]TJ/F67 9.9626 Tf 29.934 0 Td [(iam)]TJ/F62 9.9626 Tf 18.219 0 Td [(is)]TJ -311.681 -11.955 Td [(the)-274(calling)-275(pr)18(ocess)-274(index)-275(and)]TJ/F67 9.9626 Tf 131.322 0 Td [(ngpu)]TJ/F62 9.9626 Tf 23.657 0 Td [(is)-274(the)-275(total)-275(nu)1(mber)-275(of)-275(CUDA)-274(devices)]TJ -154.979 -11.956 Td [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F59 11.9552 Tf -24.907 -20.176 Td [(Notes)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -20.177 Td [(1.)]TJ + [(\050psb_ipk_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-500(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F59 11.9552 Tf -12.453 -29.61 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 270.423 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 270.224 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 270.423 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ + [-525(::)]TJ 0 g 0 G - [-525(psb_cuda_exit\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -22.254 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(CUDA)-250(context.)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -14.944 -20.176 Td [(T)90(ype:)]TJ + [-525(hack)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(64)]TJ 0 g 0 G - 0 -20.261 Td [(ctxt)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G - 139.477 -29.888 Td [(174)]TJ +/F84 9.9626 Tf 142.565 -36.164 Td [(174)]TJ 0 g 0 G ET +endstream +endobj +2185 0 obj +<< +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (../figures/hdia.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2192 0 R +/BBox [0 0 556 211] +/Resources << +/ProcSet [ /PDF /ImageC /Text ] +/ExtGState << +/R7 2193 0 R +>>/XObject << +/R8 2194 0 R +>>/Font << /R9 2195 0 R/R11 2196 0 R>> +>> +/Length 3027 +/Filter /FlateDecode +>> +stream +xœÝZK9Ý¿¢–E×øýX˜ 4IKE¬&êeXÌßç\û>\î$HhFBQé{¿ãû´OÙ®úx¸ÓŽþñÿÏ·oÞÔãý¿oÞ?ßÜñýÍ÷~ºpøÖÛéòñ¬ +߆âéöö–ý†Å‚ñîÌ6c‰á¬õð.1X4!“ÂtìyG±fE¥P7”h.¨Üvk.¨öÕ^¢Ø†Í•ýŽbÍŠªg«(ˆO¥Npög£³¢xÈnb}mˆ+(xw‰âJ~±âª;¨¾E·DqŸX±‚êYú¬DÓ¦ûÈsM4©GHµï(Ñ,¨àÆRÍŠJqG‰fEÕ¨ú… žÚ˜à¡œ™ÐaLùgÓø44<Áw”hT +mC©fEå¾£D³¢Ú T{‰ÂÂõsVú™a+šs»hZP9í(ÖŒúá¯4mŽEÐ[?1WÆdè ÛºRÓ†ÍJ'Ó*¯aæRVÅÀ2FƒÌ£`BØ0¬XóˆY+!•ì±¯šÑᬕÈŠ5Tp»-Öê#¨¸œÁ·šœ‹;°²ÝñÓß?ÿ„ )"E:Ù&_4Ó±ì(Ѭ¨v”hõJ‰‡Wy×)îÔñAÜX²9ö#?Ï!û¿™œ±þ›?o¦I'ÖÖ¡Ð +ˆ hHz>iÊ9og¤U˜(”?a†EÀ³u¶ßaÈFg0Pð«ùŒõ]½ùÏ>[pSÐ؇(©É@I]LsqF(ÓwépF­ºOM‹å‘ëLN’»X¸ÖÿQ‚§sé>- é@¤–´D–ÕE“Ý;~·†€bšsMÒ(»ÖÄgCyj¯KC*’K®hGj…I’9-‘­' bF-pé\\ ‚*¯’°$0DÉjþlZ*´tÅ…3DkŠ‹´ôµ'S\Z¿KGxôµþÚlnböeiHèg-=kðtCTÆJó¾®+¤Ÿ)øn+¤ Žæu ÏÖýºBi yš´œÔ…&­ˆY± sÙ|èlç ÆRIX¢äÇ56-²†àéÚxvŒàbA —ù$²õD\µpmÂãeuXXĨƒ¹r0ñiŠÂ¶Olâ‡aa00)CŸ¦HÓœ{º­ϱ<[ÐÖ±ãë;÷ØjlK{ˆ®÷¹oÇïþ²%º eá[hPצ¤9c()©¬œešIijùN}(#†°KKB™QÖ&„ +±ÑžG 7DÔÙgû=fZ:š·‚‹yl$oApYÔOíŇL~‰‚‡F9å5Öh¦Ó‚Ubú0º”(„O%Já[ÉÃY2]£fáÚIÉЮ”b^)yˆÆÁü%JFšqGê5 …žÎÈ4C`ôc^¹Çs.­ ¨ÝDbš¦kAGã’ÐE5þìiàË\+ˆ ÁA£Á,Ä4zŠãИ’S],¹q +àÕÀ–ÅèÚWšÙ‡ñZ1m¹©†CË8?¬¹e—¶Ühc·æÖó57‘-7ÖhhlABg–›Ä ŽQ ìYP×¾ÖÌÆZkaðfÃÞ%÷1#YSñüõtÃIoÃ`·FzT#Ô:ž©""ÒÒw+ ÄÁíj€eqA#Xƒ#͸g =з‰ 1€cP€D-¶,ÆZûJ3k-Í^Zn¢‘Ðrœ³ABÏqLË-‡9Ÿæ|S,›cÕphbABg–›Ä ‰Z lYŒµö•fF]æf^˜ò¨gÚ8ų7ÕÄŠýlT3"ª± Ú¿þV)Z?·¾ãf̺¡1Ö°X]]ƒùLÈ¿†ÙYáKjÏ¢ÖKedjˆ›<Ÿ®ð/o•¢‡‹í—çÛ>úéÆÅPó\+u¿Uóq™¿¨Ùñ¼(q|KàcÉtõ¼h|¤;ÓDŸ8TÜè3¦ÆÃYË«HŒÇŠ”Û+½’¬Q‹‰n¨û±ûìþǨÙ¡k£1*R$¢™®`˜jš“†Òè •f‘ª,vU#žÅûØ}JoÒ|íYÖ„5%sMè%Çxé?k‚SW-"RMXQ»Ö„G°Æ|d®ÉÕ§Ô„ì5kšéŠjÒãéÕwjt·n²¨VUÁne4;Ørô!”6t„A· ¡Y!éeB±:³h ¬yâJà×:ùD#†R[Dï°a§˜Ì–Isµ<H«eÕðd¡ èm8Ï% P§õ§#Þ´Ï·màxG¼ÎZË‘ýn9s…#Àƒjõ§á‚N5‚ÌcG,r©™®Çum”Ò|ûi¬½–»8¾PÃôE!øæ*]Šâ ÛæGR,_#ù¬ÝÍ?fCésöâÄñßâÝ´Ï·}$½”Ç®`Ly®…ÈR+Q—æ#­ÍK³ÙzT&zµ)ŠH_x6£=“¥O±ôù¢Og„ixLEð8•ˆÉ«KŽc³2žÙOO¦áU ¡òjSÃJ[êYâE,l^yÖÑgeƒ”´Ø¢þð™‰o² }DêBtôú§ëÏÎ'ºÖÑ"ý¨†ù‡Ç +Š}–é惄†Ì¶fbôBÍ™þïñùøÍÃí›7ýéxøñ6¿qžßŸ`Ú dœöPÀ‡çÛ{õð›Ïø%¥ƒ^w¬ã_îÎ…)ôzÜãÉŽ-îú ƒʪ#Oú! smèéRßa÷ý»;ÿê¾aÃì\º«¯þúð‡Û=–ŒsØﮆßÝݦ@ïwñÕ}Íî.ã?„NC ¬Ô,PŒ˜{¤ …áÛÔ…öJŸ«÷ôº8¬å¹×ô}¯ ÏHzw÷û׿ýãñ§ï¾{‹ÀU­áîÛ‡}±£ÇÀ„nbURA4Ûƒãǹ@7ú#Ãׯ"íW}¼{{¼~ófZÍÍã‡êðg)wæG?Üþ4º‘ +endstream +endobj +2194 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceGray +/Width 2362 +/Height 946 +/BitsPerComponent 1 +/Interpolate true +/Filter /CCITTFaxDecode +/DecodeParms << +/K -1 +/Columns 2362 +>> +/Length 150 +>> +stream +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0l?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@ endstream endobj 2198 0 obj << -/Length 5383 +/Filter /FlateDecode +/Length 177 +>> +stream +xœ]1à EwNÁ €0´C”%]24ªÚ^€€‰ˆ¡·/8I‡¶ülë›õÃmð.SöHA¿ Së¼I°†-i ÌÎÑPãt>³^T$¬¿«øþD eìΣZ€=Å;b×è``JCR~ÒrÞµÖv¼ùÉ]0Ùc³1ç%“V¡KUP¼ J¼vêêáêð4Dõ–øŒo ÍjÏyø}C¬*Z‚|ïY› +endstream +endobj +2200 0 obj +<< +/Filter /FlateDecode +/Length 213 +>> +stream +xœ]1Â0 E÷œ"7hZ(¢Rä.¦ÊÐ4 +eàöØ.00<«/µ¥oW»Ãþ⬫s™ügb +>¦gñ¨{¼Ç¤êFÑÏ“êG—Uµ;º|{eÔÔ€añ“±ºÔ¼ÔËŒŸ|d籸tGe(LÃ߯nè糡NƪʮkŒ¡JºtÅÚ’nD[Ö-¤[ÖÒž5€@JIlÛ€m׬ôEÚ@ÚIÎo"ŽÌ»WÕþY +¦Y$àÅcÂß ó”yJê Ûál« +endstream +endobj +2201 0 obj +<< +/Filter /FlateDecode +/Length1 10604 +/Length 7344 +>> +stream +xœÍzyxTU²xÕ9÷ÞîNÒésÓÙ:!!„%±%7+K !áÓIXÂf!( LÂ(¢…qpâ‚ð‡NG° >‰>ynê¸>G¢âˆÎd†qw„ô¯ÎM@ù}ó½ïÍ÷ýþøÝCUSUg«S§Î9À =À¡¶¦.7ô/ãB [×4wŒ•Ó3°¶uÃzû—sÞÛJŒ÷ Ï/ëX¾fj×\c€Ü¹|õÆecúITÏôhÛÒæ%/]©È, æ”6bDd†<IåÔ¶5ëoïï+BöÕí­Íãý yäšæ;”ÕÖä?Mȯo^³t\_ÔS;Ú;ו3…¾½cÝҎח¹¨­ÐzK¬|ªl‰|$>$8Kpntvà‚¼ +ÔÑ•aAµŸ'Ü û ÎãDx†`6<%P {`œ‚# +ñe@…r8N´ƒJˆAîƒwáZXŸÀ0d@|€áÔNt@4>#\·Ž“V”Áo`WcäR~&ËFõ¼+01x5ð•„O05Ð3)÷'ƒtè†_B8¬„—„¡àfü àRÔXWÁQx«(76ÊÂjªõÆàPàLàSxFBXJ-ýn¥û`ˆMàerØ! ®†¹ÐLÒŸÁ»¹H”î#îø‚¹Øo¹Æá‚YзÃCd·à,|Á8ÄC”^ÿÊïÐت  6‘_=HÖ;‡á8Nĉ,†Åµb ®!Ù.ØOýÀi¬ÂÂgù~9o´8ˆ +|@ÔÓ÷Á³ÔÇW˜G:ÔOáë¥di½œq+Íp <§á5Çd÷¯á;Ì¢ô!û9ë, + |Bc1‚ ¦Áp'Ù6 Jiì5¤]Gmï UòŸÒ[4Ë0´Ó,¦á\œËqÞ~|ße +s°µìsîå/ó÷¥)²(¢–¢!™úUa´Ñ +üœ¬}'Í÷ ¼/b¦aÍè-ªÿ »Š•Sz„bðm|—tA¾etxôÏ£?zÁ@^6ƒìГþ†Ñ4†L\‰ø1|7{’‡r+Wùd^Âð~+ßÃÿ‹ÿ^Z'’Þ“gÉÍò!Cóèõ£¯ª7“-W:dCL%ÿYFÞ´ŠÆ×Ail†­Ð w¿Ü }pˆæ}^„7áðZ@yõ¾†¼nÞAé><ŒÏâ ø"~ˆßˆÄR(e°)¬˜•±J¶œm£´‡fo±s<‘·ònÞCi/?Æß•@’¤€œOi¦¼C> ¼lÈ0Ì4´_¹0r1ëbÃÅFa4~ôßFï}vôÓÀÂÀF¿r`t;ò>òÁý”'O<¿…Wàm}¬_ C™<>Uò†lZµbœ³(ÍÁy”®¡´SjÆl£Ô=ø ¼ oÆÛñ.=ÝKsÛÿŽÇ(=…ƒ”ÞÄ3ø'ü¿`äÄŒ“7;Y:Ëe…4Ó26ƒÕ°ù”–³vJlÛ@+t€ °ãì-Á<‡7óµü>þþÿÿ^bR¶”+¹¥…Òré&é”ôšôŽôƒl“+ä6y¯üœ’ (×(+•{•#Ê9å‚A1ÔZ › 0ŒNŠV¿£y…Ÿ~¹Ê)ì”#¥ÙÚ±¼CÞŽ×Ŷ€¯æwð×åexžÛñ=ìå+øªÀ#¼’}ÇÛq!;‰)Ü&ñe°xˆ}ȾbŸJQ¸€}†Ò/ñ)Ö΢":‘ߢ¤›äsìm(b[pˆ½Àoâ7þŠä½xFÞË^»4Ì"à íêíìªô{¶‚í€z©@þVÝÿ]¾‘ì=ÝŠYüÒ^ø„«ìK‘¢Äë° 9æ‘ï\úFázÚ{X:Å´ +Š&o`>ÄÂ=ï¿}ZDlùyùÙC<æC4²—¡ˆöÆ'”êáȇAòÁ[!Ý ›=¸„âþŠŸ ü¸r1˜¢e ­›Î‹h–B±°‰zýŽâÿKõ«ð¯pÚig A†$$;¥ +ŠLŠ¿;(-F*=w*Gå7 c$ûè^òò÷á::s>¦þãÁMã[ IÙ4j;EæµTãÑ™ Qº^F[hÌÓiŸ×J3)òÞXI3\AgT5‰/ŠÀ=PFk7?pS`4 +\ Ë¡.pâ¦Àv¹-”]RÅØñy:þwPÜž ïQí²l<‡c2¸Wr’¥f©äzó× ý“•jÅ +ÏLÚj4FoDY=O` c9–Àõ¦È¯½Ü²(Ô‡ˆ¶$§¢ûÿ¿ÁH¬sÐ^éµzfŽá† ‡ãYÉ8/jéäÇjãsò¹®,_uEùŠá…ôr°”ƪ,îí ºBVIÁª··RµWözz›ýžÕnU{óz^ßÛQá¹´üþÀàŽoåΚDåˆ;"£°È +?¬o-Ò맟Aç˜à :}ÚA¦óÎJ¼j‰¥·$;âTTäk~¢® :õedæë_|bþðÙaºˆÚˆqÆ K>ð•–Žg¦LË dåäŸ) âÀßÿ€Ÿ¡CE¯51!ÿ|‰™È:ãmÐÇÿ^o 5-ßIþ +É_â/Òy*ª½è3‡åSƒ¿ãOÑ-ÝF÷У㒣¡aùPÒÉo§é >M0Lpž@‚v~º v!ÀBØFKP#8ü?DãÜOõ-„s Ú vH°€?NüUóƒ|%Œ6¾“¦QDwð_éôQ¢ñD&>=øCTtßxù~¢Bþëqþ}TŽ&zï8½‡ø DïÖ¼6~×xyïÒë­§}¼Ó—l³–$“ÜNGÀ)·‡r{Èt{¨„‘.v«õžú‰æ]3FÉ\[|U_£-1qù}dÒ-dú-d¹-d¹- ‘hó%Íc:9|3él&ͤ³™¬’Ç;©¿NZ0 l%°p²{'Ù]𽄇Nëü› ï&è%~Ù1“Fu_éË°‘“-(Ôò‹OÐ=©ÙeqIù»~,™‚„# §¡»T—.0…îÒø¤1JZ«JBy+üŒ€A$áT‚‚r‰·úRsmƒ|.¬1‚jëfݼ[ê–¥¼r ?Éó¡Öä’á<ܤikrãT©ÃÔcâV“Ý”gÒLµ&¹žD»8·ñ\^Ìkx—ý!Ÿ¡hm†R4iwp_°7x(øt°ìU†”ÓÊ°r^‘íJž¢)µŠGéPz”ÝJŸbÚ­ì60OpGpO0·Ûƒó‚µàÚ`ÙfÀ¾’m¼ElZÂV‚‚ÝÙ¸‰øv~A­F™â:âa ’•à4凉ÊT²ž…ô,ĵ×B\ ,$µ‚Žq©rYr©ŽÐ?/$é$ %n(Ùv˜ðy‘#˜M%3•ÌT2“ÖivFh%l'¨%à:o˜€¼†ð%YÞ¸ÜC èòóºÎ%™&ê² ZsúP&z3±/wg¢æ..É×R…‡‡7©MΦŒ¦ýR»ÚîlÏhß/Õ¨5ΚŒšýR±Zì,Î(Þ/媹ÎÜŒÜý’Mµ9m¶ýÒ®ê#Õ'«OUKMÕíÕÝÕ|*-݀ϕ—¯Ó§ G}qñùS-%W³#4&ÂûÎp°¶ä´ÈìˆÎ}‚¸O÷ ¨!h"©Ö"Ķ˟.9!gWÈ9Mþ°¯hRMI5…Ý&‚}œÚ>LòúöXîˆÎ÷Öù5ãú}:_hÙ.ÕAp±îÓ6\ ÅM2œâ‹à µNØFÐAp„@â‹)-â‹Ø”³Ã<[3OŒ²At4,áaFk‰•…/˜ñ ŽïÕñm:.Öqª:ÛüÍló3³Í·Ì6§S†eÐdÆ=:vhÁ%æ'KÌ5%æÌ3µ0³(+ãŸuèpê4-úàÍ¢S£OÝJ­(O:ÏÚ¾uŸ‡¯ÑâÛkûøišßB*~„³|‡l¯æòÙNeûÑyÌö{õ„í…T?.ôÙ†²ýFœÌö3wŽí~u±í>'•}¶­ÙO‹aÀšñB7dO·U»Ù*~$±æ¦Î´ [‘ºÎVHìi~œ5pÈ61Õ/†’Gm:fË¢ÓT}(×Ld“Á€]Z¶a½¡Å°Ð0Ïp•a’!Ç`7$ ‘Æp£Õj 1FÅ(™Œ‘þÀ°æ÷¶HŪÿÄ' ,éy+˜é?ýC#£½ãàU¬ª®½áUPµ Ô;ÕUå7æ{§¹ª¼ÆÚ«ïG¼£J^v«aA=9¨`mK»ã€˜»íöA7o»½¡«¼C­PÕb÷~SGó¢Kª¬–ÆBô†âØâðéa…•åÿyƱëÇ/ÖõÓ/6É{wU]½÷ñ¤o¾È’ª¼3ijð8[ËÚ+ʳAêã&¶¶b¾àã¦ò†ËjÂ:H Ü‚µHj‚ºZµ®FnšRQÞŸ’2¦ôÎJä>ÏéJËÇÚJ¥.¨­ZAH%CªÞV*KjäcY~ÚX EoÌzc‰B©ßé$•l§PéŸê$…~çT]|èG±êN8õ~œØ ÷ƒø£NƘyÁ¸3’Žëÿå·´ô_PÆæ÷—´ŠÇ¹G­XJàñîØÐëíi±Ûû—¼?þjOó´´¶ Ú¼Ôû¾º´Ü»D-·÷7·þq«7«åýÐZ± ¾¿U[ZîkÖš+Ôæò†ÇºËª®èë¶Ë}•uÿ“ƺEce¢¯Çªþ‰¸Jˆ}U‰¾ªD_ié}UÍ/ŪÚú~#”6ÐëN§,8ˆöƒ'ÁÑPm혮oŽ«±?O”€Ž­`z‡¨¥^3å”ä”íN! +?¿Œ‹b~•#aŽ‹¬ÄSKÁ±+Ê/ÿëìì\/ «ËEx}W¬Î[O›ÖQWå­E·×]áÕ<å (–£kü+«×¬'ݧܬÝÝíÞåÞç>â–»ºˆ~2åT +kJiOéNÙ•²/åHŠ"×ÖÓÜûRþ–»țp=}åzŸ]DéŸ(®ïêPcݹº\eõ%)ÐJ·^¤zD¨“êdøOÂo|Lð%7þÁ#‚Ãsx=ÝËE .tbyþ@Þäüi~¢ÍËÆhÝâ1Z1wŒºKòc‰úŠ'•XèŽ0Hø%‚÷>'øÌóy¾Þxט×6tB§ iø@…õuºÖ£‹2(̽¾ÓåÂÁiHÕ…Wú=`g)hAˆ’ÎíÕº½¬ÇÄÃYÖïÌôŠžÓÏð{†.«vÒ²ägÏ<É!È 2G⌊|’ä 8f‚ Wáuë²~ã¾èžkýÊ=碊)o½@hbž#Ìæ$D¡.ØùÐM†À. Q—öçøSr½ÔSaÐ×l´Ó©é“å(AÌæx?Z´pS<¤iiLKó¤õ¥ §Iia‚ÚDünØ}4î8ç &ÓQë¢4Ιkm\ûÍœ()™˜W¶Q«ÆT55%•) 92ÅàLLHJHNàJDšÅœÇ‡Ö6%¾#C)B¹T´·`‚‘P¸5ªâ‚é1E ,²²¶F„O2)?&:,’)jJzÚTkLô¤ü)S§„¤§¥§©)…ÍÞ¹~±çÍ÷ßúFËs[×<_Q¸vÊúä y©…™Eå“g°½ç°f~ɾFüeôØ]Ÿ<ûíè¹þ»š×ÆÂs÷wæ9®®}@·™–é8Ù,ˆnqokÑf +îfÍÂ5 f…`”&ˆÜ$+(…›A +1KJˆÙìÇD-Ü`Œ4ŒF.”#ØÌh>ÐJã>Í,£b2*ŠQ–BB¤tþp0â2-Ød²pÜÇpÆýø­KW]¤»=–>Ë°…[Í€†¸ÐA¼ãÒ¬u‹htÏùª‘²² +Ÿ(.̵º)X/®s‡†bXxáö .i‹õy‘µX,ó`]#6®]‡Qj˜昌“ˆ ?~lÿÅçX×õûGSñ«;FËzø/.ìd]lÒÿ°çÉ& +Ù$îÑ"µXOl_ìp¬±Z,Û· -‰Àtã5a¤ßŠ¼‘ò*UþŽf²¢‰ø…Fw9 31”MÆÆa¿%õYZxh¨E ›œgé¶ì¦YK–¸˜A–ŠgÇ]Îåžc9kž_즹`X!|=r¿v¹hN¸¶1Â9),2::&Ê1y:›,ÜBxÅyœíˆp_;Ê<Ó¢ƒ Îxg©ô»‡~ؾnZ2s:YÒÄMìý=Yöd›˜cuà,ß/WC0‰pD¡ŠÚ†ôß³·GÝx×莵y &%ÉÕiÿxFz!a‚'xlë°‡ÕÓ£ˆC±fgrOÒ’)Ý2¢þƒ fÅZôànìÃÓ¨  ŽB´`±ËÅFò-È!L}7Š^uL¾ø‹¹g¼mŠ5 ÉGò±ú8†}!…&ñk†;¤°ÄTT\•"2afæ´L­ÀSpª`¸àÛ `‰©[Ý4áñÔ㩃^œpF=ãüï Ÿ§|æ ™eÌôãÎŒ +øÙÙÓy˜ççG¹lÆh?î;š¤¹r ’èY1`5gfœÀ6ˆûX ®µ÷ØÙn{ŸÙý|Ò€7Cü¸›ø9=9lwN_Ë!þÑ&C·üì-H+À¾‚¡V@k4ý)-âd‹ˆ›$ÂÞ¹KaמּçF×~%ÐYŠÅ]#ëŠGG sÇ"á” ¹ÉiAIIq¨ŽT‡Ó!)²34--ˆB\®”Ó‚ÉÊ9‚Ó[0È4AÉkA›9IÄ<«{ü|ÉÚJŸîÓë`--ï=òEE¢R)i“ tV´'ë0MU…ߧo+ê¿ù‘E¥ƒ[z:îýóm­¹Ž¸ø°cœYËîQãm®»çÚköÍÜ깿Mš}Û]+kïÙ;ñØϼ[–§'eåb%xïꚪiI%ÉA×Ý\³¼û±±õm¡õÝHûÃAþ\ö¨„á É+’»ån¥;i§t{’a2›ì¸†_c_äX•¸AÞ˜¸õÆ÷&>šúÔaÕBo;‹5,<"*:Æifœ‹€fwDÚ¹dwÄ'$rC¬$w߀ÝîˆÄïéôÐ(²âGÀ>r8hû âtzXÏ8Úcèë†_Óº©¨©•©äß³²>:D#šÉ®Yû¬Ì—2ˆwágú"žm¤0bm1R_ʳ´±(O§˜¾€UÂÂc +·'¸d +š +b£5B#]Ž´àUR{ø’ä¹#InlÀF48 ’XE1Щ4¶,—…Ö$ùƹ£m hºÛ¢›çunÜÔ>AOÏ­šÓÕ¿wÇš§Q’«?–¾÷Vÿªc=éSëò]VGA÷ÏÞ,Ê10‹8‹êÉæý´§b!F´¬.Ó† Baz×ù™SQ8nᛤMÑÛb$·1C‘¹—§p{“´'ŽÙÓ0-ÍBÛøöXÅÑ?`1Óí5±Z8…®,-‹iYž¬¾¬á,)+n̾$‚k„="/B‹ØÑaˆˆËüñp¡qÎųã7} Pp"ë5Ž¬#sá˜Íh#d':MáI‰É‰L sšÓœ&•\ݚЎPÊ¥¥µ`b¸½RBÁ¥#_x¿îûÊ ÂžÂçÅ‘Vž:e*Q‘—M¬¦(üî›<²*u÷/w¼²|ó+;šŸ¹-ß­ºøJøŒÊI³Ývë–´Er›Ó\óðïnkö>¾óñk0éέ¿X¾½Îóaiî£÷ú‡]x¸Þ¢à÷:+gëx‹”(½®ßÆþ +)~§MO À¿öѵ9(Ì`”þÅšÿÿ~Lѱ$ìs~j @8G`ñèsÖóÂj +YÑF.þÎ X°bÍÒιKo˜ß¾¦ùúÚº9 ô,p÷xýÿÍg¼²xή`ŒÿK)ÄDÀl;Áy‚jö8Ô­ƒ¨[ßÿáí°×þÒï=2ØdqmŒëøá“žôèÕðÃú‹;­EÆP%ï÷ÿ=X +endstream +endobj +2202 0 obj +<< +/Filter /FlateDecode +/Length1 5080 +/Length 3303 +>> +stream +xœÍW}pÇu{¾ûÀá@‚îp)!H€`HŠ¦(J´TY–,pdÙ$EËr¤„uÕöäÃi’Zƒ6¶•hœŽëIâL:I󇻢S[IGi:´V“ŽËq;©;ã~ØhR'ÓvEöí¤d7MÿëanoßÛ·ï÷~ûvBððpø¶£E œGþw,Ž/Ÿ[\íÈÒòüòù‡ô€ü$*~ŠïS÷­ž>i¿mg¸•Óg¹¯cï~ péþ•ÅS¼ÿ‹O(_Eeù~Tx–ùÿ +Êý÷Ÿ{èᎽr‹Ñ³Y^ìÎÄ¢ïÜâëdM¼Šöÿ…²þáÅs+Ýõ½ŠEbõ#}¨Ûÿ1Ö¾úàÊjc±÷€+Žkº›µ+ÜÓHáoe˜„¸ÏÑ‚cø;Òiø0|ª Ap;FA‡Ýp Á‡à ,Á)@…¸"ÌA?œ ¼†»`<¿ á·`>Ÿ„£ðˆìÇá7á³?…<å>\£·ž¯S0wÇ©«MÕÝ'êú+”(#ñ%yýïh0W \þÀ‘Ú^³n(Ÿ?×éÌášAgêêʳ®†iag¦©õ¸a$ôõ€p5Ǻk3³HÞÔ×»“›zíÀÑ„AI½Ö@‡̆©7æ"ëÐéÂ>*²0ȸn‰9À*òûh°¹øÀ½7zº*yt¢ñ8ƒíÖSfÃCõõÉÄKØͯÁ ™™%^aœ’«±òHÍ\ÂÕ›³ üs‘Ÿ9Rk"÷,Ï6‰NðCõeÚ³Ò·5—š§¨E\°(8¤ÇóÙÍq8%¼úîÅkªðÓ¼ç 9šùg˜ö#Ã9”9ˆ±®ÞßÅV÷ dós”|PïášMÈu{žE”ŠHÖ謄ZÅb´\²b%«RÒÌ—SJZ˜ ‹Í—žœYõ>Õ§U¾zîÓ…ƒ·œ?#$`Ñjöe‘úXÈYÍl“²JCÛ·`eN½;Mé0%B´aô±¦ÝH¯"ñü +:%‰³g3¤A„ÑÒ®ï¶ç¬Á¿âeÄïs/TèÕ'6þåi}‚ôM¥íCŠæ>ƒ\êÙõw2#H8ÞíqÉ÷ŽŸQ¿]I»°Íœ&ö˜ÁjéÊËÏíOGBrÅÓÆxÀ€Yh‹hã(mÁ‡¬Ê)Û c‰û)ˆAóÅÛ¶‰ß`¡Š““lËðÌG·“RJNzQFGx3æ;¡šæÈ©Ç/¿ðäSüâ¾¾ÜD%¹ëP!ˆæª¢áï=ó¥+ßöKß%Ç÷¯ÎåÅáÝÇo*--MN.-mÇ+‹ñê‡ç¡`Y9è„…ú¬fe'|m§ÒR:áJDY,š/×J»QÜ%iW»éN3­›ørÍ´›UÓ¦/Gh¶H#부1MYM!Â?ÚDV0 ŠEÏÝ51!u ¢­!½c"FJ°x»ƒHØPÕVØ.”Ù.4GHŽ¼?Æš£ÍIR²Ê•y]ó혺hLl¼YMéNá{Båc¢Á‹“C>í)óÇSýü 1|rÏ@H}ÍœìÜ-R›¿ ÿ€1OCs€qY/Ùy b´hûpw†"s$*1g‹E*¬c¾´5¹Ýáƒè‰&Ú€AM†ÛöNüj¸z³JAú#ÞíÕóìÀIÊkAQb›ì|× *5…ävùddîbÐÇnØ«#¤sð é;'Šs°”bŽ“GgOÞ={z~xÉß+¨±žøòäÈÄÜm˵óÇ­ÓÁ€Hb)-»´§2÷xqa´r¼zðžLæojwŒíØŸ;=ýkg2Jø•ßÝåG ù164}ŒÅ˜œJ+Ð!„ÂXÒ‹JVÙJ¦½ +Ã¥7†,I ùdI +Y2”bÚ¡,2 5Ī© n¸HÃë6 K’V3ÌÎÿ™0²„ÊcB©‘±Zýjô‹v ©¡v¨‘cÔàÈI¶Ç[­Úr/ÊbV‰Æ>@ <ÿ;CTGüKcâC'²}…kÿTÑ·yòx4ôÌLÖ§iþég'Ã¥Ûÿ@qcä;ש28þætfk݆8iøo¨©0x¢}$!ñB ´šÄa>q£{,¥Ç‹Ô½Þr‰pšºÚÛa> stream 0 g 0 G 0 g 0 G -BT -/F59 11.9552 Tf 99.895 706.129 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ -ET +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG q -1 0 0 1 150.729 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +1 0 0 1 99.895 651.334 cm +0 0 343.711 60.772 re f Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F59 11.9552 Tf 154.315 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ +/F231 8.9664 Tf 121.713 701.446 Td [(integer)]TJ +0 g 0 G + [(\050psb_long_int_k_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.65 Td [(call)]TJ + [-525(::)]TJ 0 g 0 G - [-525(psb_cuda_DeviceSync\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(This)-310(subr)18(outine)-310(ensur)18(es)-310(that)-309(all)-310(pr)18(eviosly)-310(invoked)-310(kernels,)-325(i.e.)-489(all)-310(invoca-)]TJ -14.944 -11.955 Td [(tion)-250(of)-250(CUDA-side)-250(code,)-250(have)-250(completed.)]TJ/F59 11.9552 Tf 0 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 620.243 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 620.044 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 620.243 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 620.044 Td [(getDeviceCount)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(dim)]TJ +0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ + [(=)]TJ +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(0)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.414 -21.917 Td [(contains)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 4.707 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-1050(psb_cuda_getDeviceCount\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Get)-250(number)-250(of)-250(devices)-250(available)-250(on)-250(curr)18(ent)-250(computing)-250(node.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -4.707 -10.959 Td [(end)-525(type)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F84 9.9626 Tf 151.98 -567.173 Td [(175)]TJ +0 g 0 G ET -q -1 0 0 1 120.53 546.113 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q + +endstream +endobj +2210 0 obj +<< +/Length 7873 +>> +stream +0 g 0 G +0 g 0 G BT -/F59 11.9552 Tf 124.116 545.914 Td [(cuda)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F84 9.9626 Tf 1.012 0 0 1 150.705 687.165 Tm [(For)-248(computing)-248(with)-247(CUDA)-248(we)-248(de\002ne)-248(a)-248(dual)-248(memorization)-247(strategy)-248(in)-248(which)]TJ 1.02 0 0 1 150.705 675.21 Tm [(each)-322(variable)-323(on)-322(the)-323(CPU)-322(\050\223host\224\051)-323(side)-322(has)-323(a)-322(GPU)-323(\050\223device\224\051)-322(side.)-536(When)-323(a)]TJ 1.02 0 0 1 150.705 663.255 Tm [(GPU-type)-295(variable)-295(is)-295(initialized,)-307(the)-295(data)-295(contained)-295(is)-295(\050usually\051)-295(the)-295(same)-295(on)]TJ 0.998 0 0 1 150.705 651.3 Tm [(both)-251(sides.)-314(Eac)1(h)-252(operator)-251(invoked)-252(o)1(n)-252(the)-251(variable)-252(may)-251(change)-251(the)-252(data)-251(so)-251(that)]TJ 1 0 0 1 150.705 639.344 Tm [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 0.981 0 0 1 165.649 627.389 Tm [(Keeping)-255(track)-256(of)-256(the)-255(updates)-256(to)-255(data)-256(in)-255(the)-256(variables)-255(is)-256(essential:)-317(we)-256(want)-255(to)]TJ 0.99 0 0 1 150.406 615.434 Tm [(perform)-252(most)-252(computations)-251(on)-252(the)-252(GPU,)-252(but)-252(we)-252(cannot)-252(af)19(f)-1(or)19(d)-252(the)-252(time)-252(needed)]TJ 1.02 0 0 1 150.705 603.479 Tm [(to)-270(move)-270(data)-271(between)-270(the)-270(host)-270(memory)-271(and)-270(the)-270(device)-270(memory)-270(because)-271(the)]TJ 0.981 0 0 1 150.705 591.524 Tm [(bandwidth)-254(of)-254(the)-254(inter)18(connection)-254(bus)-254(would)-255(become)-254(the)-254(main)-254(bottleneck)-254(of)-254(the)]TJ 0.984 0 0 1 150.705 579.569 Tm [(computation.)-315(Thus,)-254(each)-254(and)-255(every)-254(computational)-254(r)18(out)1(ine)-255(in)-254(the)-254(library)-254(is)-254(built)]TJ 1 0 0 1 150.705 567.613 Tm [(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ +0 g 0 G + 13.888 -18.472 Td [(\225)]TJ +0 g 0 G + 1.002 0 0 1 175.611 549.141 Tm [(If)-248(the)-249(data)-248(type)-248(being)-249(handled)-248(is)-248(GPU-enabled,)-249(make)-248(sur)18(e)-249(that)-248(its)-248(device)]TJ 1.02 0 0 1 175.611 537.186 Tm [(copy)-300(is)-300(up)-300(to)-300(date,)-313(perform)-300(any)-300(arithmetic)-300(operation)-300(on)-300(the)-300(GPU,)-300(and)]TJ 1.02 0 0 1 175.611 525.231 Tm [(if)-266(the)-266(data)-266(has)-267(been)-266(alter)18(ed)-266(as)-266(a)-266(r)17(esult,)-271(mark)-266(the)-266(main-memory)-267(copy)-266(as)]TJ 1 0 0 1 175.611 513.276 Tm [(outdated.)]TJ +0 g 0 G + -11.018 -19.199 Td [(\225)]TJ +0 g 0 G + 1.007 0 0 1 175.303 494.077 Tm [(The)-249(main-memory)-248(copy)-249(is)-249(never)-248(updated)-249(unless)-249(this)-248(is)-249(r)18(equested)-249(by)-248(the)]TJ 1 0 0 1 175.611 482.122 Tm [(user)-250(either)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -19.198 Td [(explicitly)]TJ +0 g 0 G +/F84 9.9626 Tf 47.582 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ +0 g 0 G +/F75 9.9626 Tf -47.582 -15.214 Td [(implicitly)]TJ +0 g 0 G +/F84 9.9626 Tf 1.011 0 0 1 225.404 447.71 Tm [(by)-247(invoking)-247(a)-246(method)-247(that)-247(involves)-247(other)-247(data)-247(items)-246(that)-247(ar)18(e)]TJ 1 0 0 1 197.529 435.755 Tm [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ 1.007 0 0 1 150.705 416.556 Tm [(In)-247(this)-247(way)110(,)-248(data)-247(items)-247(ar)18(e)-247(put)-248(on)-247(the)-247(GPU)-247(memory)-247(\223on)-248(demand\224)-247(and)-247(r)18(emain)]TJ 1.02 0 0 1 150.705 404.601 Tm [(ther)18(e)-289(as)-289(long)-289(as)-288(\223normal\224)-289(computations)-289(ar)18(e)-289(carried)-289(out.)-435(A)1(s)-289(an)-289(example,)-300(the)]TJ 1 0 0 1 150.705 392.646 Tm [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.729 546.113 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +1 0 0 1 150.705 364.481 cm +0 0 343.711 16.936 re f Q -BT -/F59 11.9552 Tf 154.315 545.914 Td [(getDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 172.523 370.757 Td [(call)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [-525(psb_spmm\050alpha,a,x,beta,y,desc_a,info\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 150.286 347.275 Tm [(will)-258(transpar)18(ently)-258(and)-258(automatically)-257(be)-258(performed)-258(on)-258(the)-257(GPU)-258(whenever)-258(all)]TJ 1.014 0 0 1 150.705 335.32 Tm [(thr)18(ee)-246(data)-245(inputs)]TJ/F131 9.9626 Tf 1 0 0 1 228.932 335.32 Tm [(a)]TJ/F84 9.9626 Tf 1.014 0 0 1 234.162 335.32 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 239.17 335.32 Tm [(x)]TJ/F84 9.9626 Tf 1.014 0 0 1 246.88 335.32 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 266.463 335.32 Tm [(y)]TJ/F84 9.9626 Tf 1.014 0 0 1 274.173 335.32 Tm [(ar)18(e)-246(GPU-enabled.)-305(If)-246(a)-245(pr)18(ogram)-246(makes)-245(many)-246(such)]TJ 1 0 0 1 150.705 323.364 Tm [(calls)-250(sequentially)111(,)-250(then)]TJ +0 g 0 G + 13.888 -18.472 Td [(\225)]TJ +0 g 0 G + 1.02 0 0 1 175.303 304.892 Tm [(The)-273(\002rst)-273(kernel)-273(invocation)-273(will)-273(\002nd)-273(the)-273(data)-273(in)-273(main)-273(memory)109(,)-280(and)-273(will)]TJ 1.02 0 0 1 175.611 292.937 Tm [(copy)-303(it)-302(to)-302(the)-303(GPU)-302(memory)108(,)-316(thus)-303(incurring)-302(a)-303(signi\002cant)-302(over)17(head;)-331(the)]TJ 1 0 0 1 175.611 280.982 Tm [(r)18(esult)-250(is)-250(however)]TJ/F78 9.9626 Tf 78.156 0 Td [(not)]TJ/F84 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ +0 g 0 G + -104.945 -19.198 Td [(\225)]TJ +0 g 0 G + 1.02 0 0 1 175.611 261.784 Tm [(Subsequent)-308(kernel)-308(invocations)-308(involving)-307(the)-308(same)-308(vector)-308(will)-308(\002nd)-308(the)]TJ 1 0 0 1 175.611 249.828 Tm [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ 1.016 0 0 1 150.705 231.356 Tm [(For)-246(all)-245(invocations)-246(after)-246(the)-245(\002rst)-246(the)-246(only)-245(data)-246(that)-246(will)-245(have)-246(to)-246(be)-246(transferr)18(ed)]TJ 1.02 0 0 1 150.705 219.401 Tm [(to/fr)18(om)-254(the)-254(main)-253(memory)-254(will)-254(be)-253(the)-254(scalars)]TJ/F131 9.9626 Tf 1 0 0 1 355.319 219.401 Tm [(alpha)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.049 219.401 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 403.83 219.401 Tm [(beta)]TJ/F84 9.9626 Tf 1.02 0 0 1 424.752 219.401 Tm [(,)-256(and)-253(the)-254(r)18(eturn)]TJ 1 0 0 1 150.705 207.446 Tm [(code)]TJ/F131 9.9626 Tf 23.213 0 Td [(info)]TJ/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -44.134 -20.101 Td [(V)111(ectors:)]TJ +0 g 0 G +/F84 9.9626 Tf 1.003 0 0 1 191.073 187.345 Tm [(The)-248(data)-248(type)]TJ/F131 9.9626 Tf 1 0 0 1 254.2 187.345 Tm [(psb_T_vect_gpu)]TJ/F84 9.9626 Tf 1.003 0 0 1 329.904 187.345 Tm [(pr)18(ovides)-248(a)-248(GPU-enabled)-248(extension)-249(of)]TJ 1.02 0 0 1 175.611 175.39 Tm [(the)-261(inner)-261(type)]TJ/F131 9.9626 Tf 1 0 0 1 241.259 175.39 Tm [(psb_T_base_vect_type)]TJ/F84 9.9626 Tf 1.02 0 0 1 345.866 175.39 Tm [(,)-265(and)-260(must)-261(be)-261(used)-261(together)-260(with)]TJ 1.02 0 0 1 175.611 163.435 Tm [(the)-274(other)-275(inner)-274(matrix)-274(type)-275(to)-274(make)-274(full)-275(use)-274(of)-274(the)-275(G)1(PU)-275(computational)]TJ 1 0 0 1 175.611 151.479 Tm [(capabilities;)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -19.198 Td [(CSR:)]TJ +0 g 0 G +/F84 9.9626 Tf 0.982 0 0 1 178.341 132.281 Tm [(The)-255(data)-256(type)]TJ/F131 9.9626 Tf 1 0 0 1 240.361 132.281 Tm [(psb_T_csrg_sparse_mat)]TJ/F84 9.9626 Tf 0.982 0 0 1 352.697 132.281 Tm [(pr)18(ovides)-255(an)-256(interface)-255(to)-255(the)-256(GPU)]TJ 1 0 0 1 175.333 120.326 Tm [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ +0 g 0 G + 139.755 -29.888 Td [(176)]TJ +0 g 0 G +ET + +endstream +endobj +2214 0 obj +<< +/Length 5844 +>> +stream 0 g 0 G - [-1050(psb_cuda_getDevice\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Get)-250(device)-250(in)-250(use)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 99.895 706.129 Td [(HYB:)]TJ +0 g 0 G +/F84 9.9626 Tf 0.98 0 0 1 128.647 706.129 Tm [(The)-251(data)-252(type)]TJ/F131 9.9626 Tf 1 0 0 1 190.423 706.129 Tm [(psb_T_hybg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 302.715 706.129 Tm [(pr)18(ovides)-251(an)-251(interface)-252(to)-251(the)-252(HYB)]TJ 1.02 0 0 1 124.802 694.174 Tm [(GPU)-295(storage)-296(available)-295(in)-295(the)-296(NVIDIA)-295(CuSP)90(ARSE)-295(library)109(.)-455(The)-296(internal)]TJ 1.001 0 0 1 124.802 682.219 Tm [(str)8(uctur)18(e)-249(is)-249(opaque,)-249(hence)-249(the)-250(h)1(ost)-250(side)-249(is)-249(just)-249(CSR;)-249(the)-249(HYB)-249(data)-249(format)]TJ 1 0 0 1 124.802 670.263 Tm [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -20.26 Td [(ELL:)]TJ +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 125.32 650.003 Tm [(The)-265(data)-265(type)]TJ/F131 9.9626 Tf 1 0 0 1 190.038 650.003 Tm [(psb_T_elg_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 297.34 650.003 Tm [(pr)18(ovides)-266(an)-265(interface)-265(to)-265(the)-265(ELL-)]TJ 1 0 0 1 124.802 638.048 Tm [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -20.261 Td [(HLL:)]TJ +0 g 0 G +/F84 9.9626 Tf 0.98 0 0 1 127.532 617.787 Tm [(The)-194(data)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 187.621 617.787 Tm [(psb_T_hlg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 294.121 617.787 Tm [(pr)18(ovides)-193(an)-194(interface)-194(to)-194(the)-194(Hacked)]TJ 1 0 0 1 124.802 605.832 Tm [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -20.261 Td [(HDIA:)]TJ +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 135.282 585.571 Tm [(The)-298(data)-297(type)]TJ/F131 9.9626 Tf 1 0 0 1 200.986 585.571 Tm [(psb_T_hdiag_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 319.077 585.571 Tm [(pr)18(ovides)-298(an)-298(in)1(terface)-298(to)-298(the)]TJ 1 0 0 1 124.802 573.616 Tm [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F75 14.3462 Tf -24.907 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F75 11.9552 Tf 0 -24.857 Td [(psb)]TJ ET q -1 0 0 1 120.53 471.983 cm +1 0 0 1 120.53 514.195 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 471.784 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 513.996 Td [(cuda)]TJ ET q -1 0 0 1 150.729 471.983 cm +1 0 0 1 150.729 514.195 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 471.784 Td [(setDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 11.9552 Tf 154.315 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -54.42 -19.126 Td [(call)]TJ 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ + [-525(psb_cuda_init\050ctxt)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525([,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_setDevice\050dev\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Set)-250(device)-250(to)-250(be)-250(used)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ + [-525(device]\051)]TJ/F84 9.9626 Tf 14.944 -22.253 Td [(This)-250(subr)18(outine)-250(initializes)-250(the)-250(PSBLAS-CUDA)-250(envir)18(onment.)]TJ +0 g 0 G +/F75 9.9626 Tf -14.944 -20.177 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.26 Td [(device)]TJ +0 g 0 G +/F84 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.003 0 0 1 124.802 364.098 Tm [(Speci\002ed)-249(as:)-308(an)-249(integer)-248(value.)-558(Default:)-308(use)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 1 0 0 1 317.836 364.098 Tm [(mod)]TJ +0 g 0 G + [(\050iam,ngpu\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 388.314 364.098 Tm [(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 418.287 364.098 Tm [(iam)]TJ/F84 9.9626 Tf 1.003 0 0 1 436.462 364.098 Tm [(is)]TJ 1.011 0 0 1 124.802 352.143 Tm [(the)-247(calling)-248(pr)18(ocess)-247(index)-248(and)]TJ/F131 9.9626 Tf 1 0 0 1 256.205 352.143 Tm [(ngpu)]TJ/F84 9.9626 Tf 1.011 0 0 1 279.618 352.143 Tm [(is)-247(the)-248(total)-247(number)-248(of)-247(CUDA)-247(devices)]TJ 1 0 0 1 124.802 340.187 Tm [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F75 11.9552 Tf -24.907 -20.176 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.454 -20.177 Td [(1.)]TJ +0 g 0 G + [-461(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F75 11.9552 Tf -12.454 -29.61 Td [(psb)]TJ ET q -1 0 0 1 120.53 397.853 cm +1 0 0 1 120.53 270.423 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 397.654 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 270.224 Td [(cuda)]TJ ET q -1 0 0 1 150.729 397.853 cm +1 0 0 1 150.729 270.423 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 397.654 Td [(DeviceHasUV)129(A)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 11.9552 Tf 154.315 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -54.42 -19.126 Td [(call)]TJ 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ + [-525(psb_cuda_exit\050ctxt\051)]TJ/F84 9.9626 Tf 14.944 -22.254 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(CUDA)-250(context.)]TJ +0 g 0 G +/F75 9.9626 Tf -14.944 -20.176 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.261 Td [(ctxt)]TJ +0 g 0 G +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G + 139.477 -29.888 Td [(177)]TJ +0 g 0 G +ET + +endstream +endobj +2219 0 obj +<< +/Length 5434 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -54.42 -19.65 Td [(call)]TJ +0 g 0 G + [-525(psb_cuda_DeviceSync\050\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 165.649 663.146 Tm [(This)-249(subr)18(out)1(ine)-249(ensur)18(es)-249(that)-249(all)-249(pr)19(eviosly)-249(invoked)-249(kernels,)-250(i.e.)-315(all)-249(invocation)]TJ 1 0 0 1 150.705 651.191 Tm [(of)-250(CUDA-side)-250(code,)-250(have)-250(completed.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 620.243 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 620.044 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 620.243 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 620.044 Td [(getDeviceCount)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-1050(psb_cuda_getDeviceCount\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Get)-250(number)-250(of)-250(devices)-250(available)-250(on)-250(curr)18(ent)-250(computing)-250(node.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 546.113 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 545.914 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 546.113 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 545.914 Td [(getDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-295(tr)8(ue)-295(if)-294(device)-295(curr)18(ently)-295(in)-295(u)1(se)-295(supports)-295(UV)111(A)-295(\050Uni\002ed)-294(V)55(irtual)-295(Ad-)]TJ -14.944 -11.955 Td [(dr)18(essing\051.)]TJ/F59 11.9552 Tf 0 -31.147 Td [(psb)]TJ + [-1050(psb_cuda_getDevice\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Get)-250(device)-250(in)-250(use)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 120.53 311.768 cm +1 0 0 1 171.339 471.983 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 311.569 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 471.784 Td [(cuda)]TJ ET q -1 0 0 1 150.729 311.768 cm +1 0 0 1 201.538 471.983 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 311.569 Td [(W)74(arpSize)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ +/F75 11.9552 Tf 205.125 471.784 Td [(setDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31459,21 +31816,21 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_WarpSize\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(warp)-250(size.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ + [-525(psb_cuda_setDevice\050dev\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Set)-250(device)-250(to)-250(be)-250(used)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 120.53 237.638 cm +1 0 0 1 171.339 397.853 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 237.439 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 397.654 Td [(cuda)]TJ ET q -1 0 0 1 150.729 237.638 cm +1 0 0 1 201.538 397.853 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 237.439 Td [(MultiProcessors)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ +/F75 11.9552 Tf 205.125 397.654 Td [(DeviceHasUV)129(A)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31481,21 +31838,21 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_MultiProcessors\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(number)-250(of)-250(multipr)18(ocessors)-250(in)-250(the)-250(CUDA)-250(device.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ + [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 354.671 Tm [(Returns)-250(tr)8(ue)-251(if)-250(device)-251(curr)18(ently)-250(in)-251(use)-250(supports)-250(UV)108(A)-250(\050Uni\002ed)-250(V)54(irtual)-251(Ad-)]TJ 1 0 0 1 150.705 342.716 Tm [(dr)18(essing\051.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ ET q -1 0 0 1 120.53 163.508 cm +1 0 0 1 171.339 311.768 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 163.309 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 311.569 Td [(cuda)]TJ ET q -1 0 0 1 150.729 163.508 cm +1 0 0 1 201.538 311.768 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 154.315 163.309 Td [(MaxThreadsPerMP)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ +/F75 11.9552 Tf 205.125 311.569 Td [(W)74(arpSize)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31503,37 +31860,81 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_MaxThreadsPerMP\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(thr)18(eads)-250(per)-250(multipr)18(ocessor)74(.)]TJ + [-525(psb_cuda_WarpSize\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(warp)-250(size.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 237.638 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 237.439 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 237.638 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 237.439 Td [(MultiProcessors)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_MultiProcessors\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(number)-250(of)-250(multipr)18(ocessors)-250(in)-250(the)-250(CUDA)-250(device.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 163.508 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 163.309 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 163.508 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 163.309 Td [(MaxThreadsPerMP)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_MaxThreadsPerMP\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(thr)18(eads)-250(per)-250(multipr)18(ocessor)74(.)]TJ 0 g 0 G - 149.44 -29.888 Td [(175)]TJ + 149.439 -29.888 Td [(178)]TJ 0 g 0 G ET endstream endobj -2203 0 obj +2223 0 obj << -/Length 2726 +/Length 2725 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.339 706.328 cm +1 0 0 1 120.53 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ ET q -1 0 0 1 201.538 706.328 cm +1 0 0 1 150.729 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 706.129 Td [(MaxRegistersPerBlock)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ +/F75 11.9552 Tf 154.315 706.129 Td [(MaxRegistersPerBlock)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31541,21 +31942,21 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_MaxRegistersPerBlock\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(r)18(egister)-250(per)-250(thr)18(ead)-250(block.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ + [-525(psb_cuda_MaxRegistersPerBlock\050\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(r)18(egister)-250(per)-250(thr)18(ead)-250(block.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 171.339 636.313 cm +1 0 0 1 120.53 636.313 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 636.114 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 636.114 Td [(cuda)]TJ ET q -1 0 0 1 201.538 636.313 cm +1 0 0 1 150.729 636.313 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 636.114 Td [(MemoryClockRate)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ +/F75 11.9552 Tf 154.315 636.114 Td [(MemoryClockRate)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31563,21 +31964,21 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_MemoryClockRate\050\051)]TJ/F62 9.9626 Tf 14.944 -21.917 Td [(Returns)-250(the)-250(memory)-250(clock)-250(rate)-250(in)-250(KHz,)-250(as)-250(an)-250(integer)74(.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ + [-525(psb_cuda_MemoryClockRate\050\051)]TJ/F84 9.9626 Tf 14.944 -21.917 Td [(Returns)-250(the)-250(memory)-250(clock)-250(rate)-250(in)-250(KHz,)-250(as)-250(an)-250(integer)74(.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 171.339 566.299 cm +1 0 0 1 120.53 566.299 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 566.1 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 566.1 Td [(cuda)]TJ ET q -1 0 0 1 201.538 566.299 cm +1 0 0 1 150.729 566.299 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 566.1 Td [(MemoryBusW)37(idth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ +/F75 11.9552 Tf 154.315 566.1 Td [(MemoryBusW)37(idth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31585,21 +31986,21 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_MemoryBusWidth\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(memory)-250(bus)-250(width)-250(in)-250(bits.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ + [-525(psb_cuda_MemoryBusWidth\050\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(memory)-250(bus)-250(width)-250(in)-250(bits.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 171.339 496.284 cm +1 0 0 1 120.53 496.284 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 174.926 496.085 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 496.085 Td [(cuda)]TJ ET q -1 0 0 1 201.538 496.284 cm +1 0 0 1 150.729 496.284 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 205.125 496.085 Td [(MemoryPeakBandwidth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ +/F75 11.9552 Tf 154.315 496.085 Td [(MemoryPeakBandwidth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31607,1787 +32008,325 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_MemoryPeakBandwidth\050\051)]TJ/F62 9.9626 Tf 0 -21.918 Td [(Returns)-250(the)-250(peak)-250(memory)-250(bandwidth)-250(in)-250(MB/s)-250(\050r)18(eal)-250(double)-250(pr)18(ecision\051.)]TJ + [-525(psb_cuda_MemoryPeakBandwidth\050\051)]TJ/F84 9.9626 Tf 0 -21.918 Td [(Returns)-250(the)-250(peak)-250(memory)-250(bandwidth)-250(in)-250(MB/s)-250(\050r)18(eal)-250(double)-250(pr)18(ecision\051.)]TJ +0 g 0 G + 164.384 -364.765 Td [(179)]TJ +0 g 0 G +ET + +endstream +endobj +2227 0 obj +<< +/Length 81 +>> +stream +0 g 0 G 0 g 0 G - 164.383 -364.765 Td [(176)]TJ +0 g 0 G +BT +/F84 9.9626 Tf 315.088 90.438 Td [(180)]TJ 0 g 0 G ET endstream endobj -2207 0 obj +2231 0 obj << -/Length 6353 +/Length 7213 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(References)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(References)]TJ 0 g 0 G -/F62 9.9626 Tf 4.982 -23.579 Td [([1])]TJ +/F84 9.9626 Tf 4.982 -24.083 Td [([1])]TJ 0 g 0 G - [-500(G.)-362(Bella,)-391(S.)-362(Filippone,)-390(A.)-363(De)-362(Maio)-362(and)-363(M.)-362(T)92(esta,)]TJ/F60 9.9626 Tf 239.345 0 Td [(A)-362(Simulation)-362(Model)-363(for)]TJ -222.748 -11.955 Td [(For)18(est)-346(Fir)18(es)]TJ/F62 9.9626 Tf 47.93 0 Td [(,)-370(in)-346(J.)-346(Dongarra,)-370(K.)-346(Madsen,)-370(J.)-346(W)92(asniewski,)-370(editors,)-370(Pr)18(oceed-)]TJ -47.93 -11.955 Td [(ings)-338(of)-337(P)92(ARA)-338(04)-338(W)92(orkshop)-337(on)-338(State)-338(of)-338(the)-337(Art)-338(in)-338(Scienti\002c)-337(Computing,)]TJ 0 -11.955 Td [(pp.)-250(546\226553,)-250(Lectur)18(e)-250(Notes)-250(in)-250(Computer)-250(Science,)-250(Springer)74(,)-250(2005.)]TJ + 1.02 0 0 1 121.474 681.701 Tm [(G.)-316(Bella,)-333(S.)-316(Filippone,)-334(A.)-315(De)-316(Maio)-316(and)-316(M.)-316(T)91(esta,)]TJ/F78 9.9626 Tf 1.02 0 0 1 343.652 681.701 Tm [(A)-316(Simulation)-315(Model)-316(for)]TJ 0.986 0 0 1 121.195 669.746 Tm [(For)18(est)-255(Fir)19(es)]TJ/F84 9.9626 Tf 0.986 0 0 1 167.553 669.746 Tm [(,)-255(in)-255(J.)-255(Dongarra,)-255(K.)-255(Madsen,)-255(J.)-255(W)94(asniewski,)-256(editors,)-255(Pr)19(oceedings)]TJ 0.98 0 0 1 121.474 657.79 Tm [(of)-252(P)94(ARA)-251(04)-252(W)94(orkshop)-251(on)-252(State)-251(of)-252(the)-251(Art)-252(in)-251(Scienti\002c)-251(Computing,)-253(pp.)-251(546\226)]TJ 1 0 0 1 121.474 645.835 Tm [(553,)-250(Lectur)18(e)-250(Notes)-250(in)-250(Computer)-250(Science,)-250(Springer)74(,)-250(2005.)]TJ 0 g 0 G - -16.597 -21.736 Td [([2])]TJ + -16.597 -22.776 Td [([2])]TJ 0 g 0 G - [-500(A.)-216(Buttari,)-223(D.)-216(di)-217(Sera\002no,)-223(P)129(.)-216(D'Ambra,)-223(S.)-216(Filippone,)-71(2LEV)74(-D2P4:)-293(a)-216(package)]TJ 16.597 -11.955 Td [(of)-247(high-performance)-247(pr)18(econditioners,)-107(Applicable)-247(Algebra)-247(in)-247(Engineering,)]TJ 0 -11.955 Td [(Communications)-292(and)-293(Computing,)-303(V)111(olume)-292(18,)-303(Number)-292(3,)-303(May)111(,)-303(2007,)-303(pp.)]TJ 0 -11.955 Td [(223-239)]TJ + 0.989 0 0 1 121.474 623.059 Tm [(A.)-252(Buttari,)-252(D.)-252(di)-252(Sera\002no,)-252(P)130(.)-252(D'Ambra,)-252(S.)-252(Filippone,)-111(2LEV)75(-D2P4:)-313(a)-252(package)]TJ 1.003 0 0 1 121.474 611.104 Tm [(of)-251(high-performance)-251(pr)17(ec)1(onditioners,)-115(A)1(pplicable)-252(Algebra)-251(in)-251(Engineering,)]TJ 1.02 0 0 1 121.474 599.148 Tm [(Communications)-246(and)-246(Computing,)-247(V)109(olume)-246(18,)-247(Number)-246(3,)-247(May)109(,)-246(2007,)-247(pp.)]TJ 1 0 0 1 121.474 587.193 Tm [(223-239)]TJ 0 g 0 G - -16.597 -21.736 Td [([3])]TJ + -16.597 -22.776 Td [([3])]TJ 0 g 0 G - [-500(P)129(.)-248(D'Ambra,)-248(S.)-248(Filippone,)-249(D.)-248(Di)-248(Sera\002no)-107(On)-248(the)-248(Development)-248(of)-248(PSBLAS-)]TJ 16.597 -11.955 Td [(based)-523(Parallel)-524(T)90(wo-level)-523(Schwarz)-523(Pr)18(econditioners)-1235(Applied)-523(Numeri-)]TJ 0 -11.955 Td [(cal)-376(Mathematics,)-408(Elsevier)-376(Science,)-408(V)111(olume)-376(57,)-408(Issues)-376(11-12,)-408(November)18(-)]TJ 0 -11.955 Td [(December)-250(2007,)-250(Pages)-250(1181-1196.)]TJ + 1.005 0 0 1 121.474 564.417 Tm [(P)128(.)-248(D'Ambra,)-248(S.)-249(Filippone,)-248(D.)-248(Di)-249(Sera\002)1(no)-109(On)-249(the)-248(Development)-248(of)-248(PSBLAS-)]TJ 1.02 0 0 1 121.474 552.462 Tm [(based)-465(Parallel)-464(T)88(wo-level)-464(Schwarz)-465(Pr)18(econditioners)-1055(Applied)-465(Numeri-)]TJ 1.02 0 0 1 121.474 540.507 Tm [(cal)-323(Mathematics,)-343(Elsevier)-323(Science,)-342(V)109(olume)-323(57,)-343(Issues)-323(11-12,)-343(November)18(-)]TJ 1 0 0 1 121.474 528.551 Tm [(December)-250(2007,)-250(Pages)-250(1181-1196.)]TJ 0 g 0 G - -16.597 -21.736 Td [([4])]TJ + -16.597 -22.776 Td [([4])]TJ 0 g 0 G - [-500(Dongarra,)-268(J.)-265(J.,)-269(DuCr)18(oz,)-268(J.,)-269(Hammarli)1(ng,)-269(S.)-265(and)-264(Hanson,)-269(R.,)-268(An)-265(Extended)]TJ 16.597 -11.955 Td [(Set)-463(of)-463(Fortran)-463(Basic)-464(Linear)-463(Algebra)-463(Subpr)18(ograms,)-516(ACM)-463(T)90(rans.)-463(Math.)]TJ 0 -11.955 Td [(Softw)92(.)-250(vol.)-250(14,)-250(1\22617,)-250(1988.)]TJ + 1.006 0 0 1 121.474 505.775 Tm [(Dongarra,)-250(J.)-249(J.,)-250(DuCr)18(oz,)-250(J)1(.,)-250(Hammarling,)-250(S.)-249(and)-250(Hanson,)-249(R.,)-250(An)-249(Extended)]TJ 0.98 0 0 1 121.474 493.82 Tm [(Set)-234(of)-234(Fortran)-233(Basic)-234(Linear)-234(Algebra)-233(Subpr)18(ograms,)-238(ACM)-234(T)92(rans.)-234(Math.)-233(Softw)93(.)]TJ 1 0 0 1 121.195 481.865 Tm [(vol.)-250(14,)-250(1\22617,)-250(1988.)]TJ 0 g 0 G - -16.597 -21.736 Td [([5])]TJ + -16.318 -22.777 Td [([5])]TJ 0 g 0 G - [-500(Dongarra,)-422(J.,)-421(DuCr)18(oz,)-422(J.,)-422(Hammarling,)-422(S.)-387(and)-387(Duf)18(f,)-422(I.,)-422(A)-387(Set)-387(of)-388(level)-387(3)]TJ 16.597 -11.955 Td [(Basic)-308(Linear)-307(Algebra)-308(Subpr)18(ograms,)-322(ACM)-308(T)90(rans.)-308(Math.)-308(Soft)1(w)91(.)-307(vol.)-308(16,)-322(1\226)]TJ 0 -11.955 Td [(17,)-250(1990.)]TJ + 0.983 0 0 1 121.474 459.088 Tm [(Dongarra,)-255(J.,)-254(D)-1(u)1(Cr)18(oz,)-255(J.,)-255(Hammarling,)-254(S.)-255(and)-255(Duf)19(f)-1(,)-254(I.,)-255(A)-255(Set)-254(of)-255(level)-255(3)-254(Basic)]TJ 0.985 0 0 1 121.474 447.133 Tm [(Linear)-254(Algebra)-254(Subpr)19(ograms,)-254(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)-253(vol.)-254(16,)-254(1\22617,)-254(1990.)]TJ 0 g 0 G - -16.597 -21.735 Td [([6])]TJ + 1 0 0 1 104.877 424.357 Tm [([6])]TJ 0 g 0 G - [-500(J.)-349(J.)-350(Dongarra)-349(and)-350(R.)-350(C.)-349(Whaley)111(,)]TJ/F60 9.9626 Tf 166.061 0 Td [(A)-349(User)-37(')55(s)-350(Guide)-349(to)-350(the)-349(BLACS)-350(v)55(.)-349(1.1)]TJ/F62 9.9626 Tf 152.062 0 Td [(,)-374(La-)]TJ -301.526 -11.956 Td [(pack)-234(W)92(orking)-233(Note)-234(94,)-237(T)92(ech.)-233(Rep.)-234(UT)55(-CS-95-281,)-237(University)-234(of)-233(T)92(ennessee,)]TJ 0 -11.955 Td [(Mar)18(ch)-250(1995)-250(\050updated)-250(May)-250(1997\051.)]TJ + 0.993 0 0 1 121.474 424.357 Tm [(J.)-252(J.)-252(Dongarra)-252(and)-252(R.)-253(C.)-252(Whaley)112(,)]TJ/F78 9.9626 Tf 0.993 0 0 1 262.893 424.357 Tm [(A)-252(User)-37(')55(s)-252(Guide)-252(to)-252(the)-252(BLACS)-252(v)55(.)-252(1.1)]TJ/F84 9.9626 Tf 0.993 0 0 1 407.142 424.357 Tm [(,)-252(Lapack)]TJ 0.98 0 0 1 120.976 412.401 Tm [(W)94(orking)-229(Note)-230(94,)-234(T)94(ech.)-230(Rep.)-229(UT)56(-CS-95-281,)-234(University)-230(of)-229(T)94(ennessee,)-234(Mar)18(ch)]TJ 1 0 0 1 120.976 400.446 Tm [(1995)-250(\050updated)-250(May)-250(1997\051.)]TJ 0 g 0 G - -16.597 -21.735 Td [([7])]TJ + -16.099 -22.776 Td [([7])]TJ 0 g 0 G - [-500(I.)-259(Duf)18(f,)-262(M.)-260(Marr)18(one,)-261(G.)-260(Radicati)-259(and)-259(C.)-260(V)55(ittoli,)]TJ/F60 9.9626 Tf 223.407 0 Td [(Level)-259(3)-260(Basic)-259(Linear)-260(Algebra)]TJ -206.81 -11.955 Td [(Subpr)18(ograms)-328(f)1(or)-328(Sparse)-327(Matrices:)-465(a)-328(User)-327(Level)-328(Interface)]TJ/F62 9.9626 Tf 233.522 0 Td [(,)-347(ACM)-327(T)90(ransactions)]TJ -233.522 -11.956 Td [(on)-250(Mathematical)-250(Softwar)18(e,)-250(23\0503\051,)-250(pp.)-250(379\226401,)-250(1997.)]TJ + 1.004 0 0 1 121.474 377.67 Tm [(I.)-250(Duf)18(f,)-250(M.)-250(Marr)18(one,)-250(G.)-250(Radicati)-250(and)-250(C.)-250(V)55(ittoli,)]TJ/F78 9.9626 Tf 1.004 0 0 1 328.201 377.67 Tm [(Level)-250(3)-250(Basic)-250(Linear)-250(Algebra)]TJ 0.982 0 0 1 121.195 365.715 Tm [(Subpr)18(ograms)-253(for)-254(Sparse)-254(Matrices:)-315(a)-254(User)-254(Level)-254(Interface)]TJ/F84 9.9626 Tf 0.982 0 0 1 344.719 365.715 Tm [(,)-254(ACM)-254(T)92(ransactions)-254(on)]TJ 1 0 0 1 121.474 353.759 Tm [(Mathematical)-250(Softwar)18(e,)-250(23\0503\051,)-250(pp.)-250(379\226401,)-250(1997.)]TJ 0 g 0 G - -16.597 -21.735 Td [([8])]TJ + -16.597 -22.776 Td [([8])]TJ 0 g 0 G - [-500(I.)-282(Duf)18(f,)-289(M.)-282(Her)18(oux)-281(and)-282(R.)-281(Pozo,)]TJ/F60 9.9626 Tf 160.607 0 Td [(An)-282(Overview)-281(of)-282(the)-281(Sparse)-282(Basic)-282(Linear)-281(Al-)]TJ -144.01 -11.955 Td [(gebra)-287(Subpr)18(ograms:)-383(the)-287(New)-287(Standard)-286(fr)18(om)-287(the)-287(BLAS)-287(T)111(echnical)-286(Forum)]TJ/F62 9.9626 Tf 292.455 0 Td [(,)-296(ACM)]TJ -292.455 -11.955 Td [(T)90(ransactions)-250(on)-250(Mathematical)-250(Softwar)18(e,)-250(28\0502\051,)-250(pp.)-250(239\226267,)-250(2002.)]TJ + 1.02 0 0 1 121.474 330.983 Tm [(I.)-354(Duf)18(f,)-381(M.)-354(Her)17(oux)-354(and)-354(R.)-354(Pozo,)]TJ/F78 9.9626 Tf 1.02 0 0 1 273.913 330.983 Tm [(An)-354(Overview)-354(of)-354(the)-354(Sparse)-354(Basic)-354(Linear)]TJ 0.982 0 0 1 121.116 319.028 Tm [(Algebra)-254(Subpr)18(ograms:)-316(the)-254(New)-254(Standard)-255(fr)19(om)-255(the)-254(BLAS)-255(T)113(echnical)-254(Forum)]TJ/F84 9.9626 Tf 0.982 0 0 1 414.869 319.028 Tm [(,)-254(ACM)]TJ 1 0 0 1 121.166 307.073 Tm [(T)90(ransactions)-250(on)-250(Mathematical)-250(Softwar)18(e,)-250(28\0502\051,)-250(pp.)-250(239\226267,)-250(2002.)]TJ 0 g 0 G - -16.597 -21.736 Td [([9])]TJ + -16.289 -22.777 Td [([9])]TJ 0 g 0 G - [-500(S.)-298(Filippone)-298(and)-297(M.)-298(Colajanni,)]TJ/F60 9.9626 Tf 154.96 0 Td [(PSBLAS:)-298(A)-298(Library)-297(for)-298(Parallel)-298(Linear)-298(Alge-)]TJ -138.363 -11.955 Td [(bra)-340(Computation)-340(on)-340(Sparse)-340(Matrices)]TJ/F62 9.9626 Tf 151.715 0 Td [(,)-670(ACM)-340(T)90(ransactions)-340(on)-340(Mathematical)]TJ -151.715 -11.955 Td [(Softwar)18(e,)-250(26\0504\051,)-250(pp.)-250(527\226550,)-250(2000.)]TJ + 1.02 0 0 1 121.474 284.296 Tm [(S.)-256(Filippone)-256(and)-256(M.)-255(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 260.376 284.296 Tm [(PSBLAS:)-256(A)-256(Library)-255(for)-256(Parallel)-256(Linear)-256(Alge-)]TJ 1.02 0 0 1 121.474 272.341 Tm [(bra)-278(Computation)-278(on)-278(Sparse)-278(Matrices)]TJ/F84 9.9626 Tf 1.02 0 0 1 273.712 272.341 Tm [(,)-467(ACM)-278(T)88(ransactions)-278(on)-278(Mathematical)]TJ 1 0 0 1 121.474 260.386 Tm [(Softwar)18(e,)-250(26\0504\051,)-250(pp.)-250(527\226550,)-250(2000.)]TJ 0 g 0 G - -21.579 -21.736 Td [([10])]TJ + -21.579 -22.776 Td [([10])]TJ 0 g 0 G - [-500(S.)-397(Filippone)-398(and)-397(A.)-397(Buttari,)]TJ/F60 9.9626 Tf 151.683 0 Td [(Object-Oriented)-397(T)111(echniques)-397(for)-398(Sparse)-397(Matrix)]TJ -130.104 -11.955 Td [(Computations)-353(in)-353(Fortran)-354(2003)]TJ/F62 9.9626 Tf 126.789 0 Td [(,)-716(ACM)-353(T)90(ransactions)-353(on)-354(Mathematic)1(al)-354(Soft-)]TJ -126.789 -11.955 Td [(war)18(e,)-250(38\0504\051,)-250(2012.)]TJ + 1.02 0 0 1 121.474 237.61 Tm [(S.)-328(Filippone)-329(and)-328(A.)-329(Bu)1(ttari,)]TJ/F78 9.9626 Tf 1.02 0 0 1 250.516 237.61 Tm [(Object-Oriented)-328(T)109(echniques)-329(for)-328(Sparse)-328(Matrix)]TJ 0.98 0 0 1 121.146 225.654 Tm [(Computations)-227(in)-228(Fortran)-227(2003)]TJ/F84 9.9626 Tf 0.98 0 0 1 241.714 225.654 Tm [(,)-313(ACM)-227(T)92(ransactions)-228(on)-227(Mathematical)-228(Softwar)19(e,)]TJ 1 0 0 1 121.474 213.699 Tm [(38\0504\051,)-250(2012.)]TJ 0 g 0 G - -21.579 -21.735 Td [([11])]TJ + -21.579 -22.776 Td [([11])]TJ 0 g 0 G - [-500(S.)-339(Filippone,)-360(P)129(.)-339(D'Ambra,)-360(M.)-339(Colajanni,)]TJ/F60 9.9626 Tf 202.675 0 Td [(Using)-339(a)-338(Parallel)-339(Library)-338(of)-339(Sparse)]TJ -181.096 -11.956 Td [(Linear)-350(Algebra)-350(in)-350(a)-349(Fluid)-350(Dynamics)-350(Applications)-350(Code)-350(on)-350(Linux)-349(Clusters)]TJ/F62 9.9626 Tf 307.21 0 Td [(,)-375(in)]TJ -307.21 -11.955 Td [(G.)-262(Joubert,)-264(A.)-262(Murli,)-264(F)92(.)-262(Peters,)-265(M.)-261(V)92(anneschi,)-265(editors,)-265(Parallel)-261(Computing)]TJ 0 -11.955 Td [(-)-250(Advances)-250(&)-250(Curr)18(ent)-250(Issues,)-250(pp.)-250(441\226448,)-250(Imperial)-250(College)-250(Pr)18(ess,)-250(2002.)]TJ + 1.02 0 0 1 121.474 190.923 Tm [(S.)-284(Filippone,)-294(P)127(.)-284(D'Ambra,)-294(M.)-284(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 302.518 190.923 Tm [(Using)-284(a)-284(Parallel)-284(Library)-284(of)-284(Sparse)]TJ 1.02 0 0 1 121.195 178.968 Tm [(Linear)-296(Algebra)-296(in)-295(a)-296(Fluid)-296(Dynamics)-296(Applications)-296(Code)-295(on)-296(Linux)-296(Clusters)]TJ/F84 9.9626 Tf 1.02 0 0 1 429.06 178.968 Tm [(,)-308(in)]TJ 0.99 0 0 1 121.474 167.012 Tm [(G.)-254(Joubert,)-254(A.)-254(Murli,)-254(F)93(.)-254(Peters,)-254(M.)-254(V)93(anneschi,)-255(editors,)-254(Parallel)-254(Computing)-253(-)]TJ 1 0 0 1 121.086 155.057 Tm [(Advances)-250(&)-250(Curr)18(ent)-250(Issues,)-250(pp.)-250(441\226448,)-250(Imperial)-250(College)-250(Pr)18(ess,)-250(2002.)]TJ 0 g 0 G - -21.579 -21.735 Td [([12])]TJ + -21.191 -22.776 Td [([12])]TJ 0 g 0 G - [-500(Gamma,)-217(E.,)-434(Helm,)-216(R.,)-434(Johnson,)-217(R.,)-434(and)-417(Vlissides,)-217(J.)-208(1995.)]TJ/F60 9.9626 Tf 276.041 0 Td [(Design)-208(Patterns:)]TJ -254.462 -11.956 Td [(Elements)-250(of)-250(Reusable)-250(Object-Oriented)-250(Softwar)18(e)]TJ/F62 9.9626 Tf 190.781 0 Td [(.)-250(Addison-W)92(esley)111(.)]TJ + 0.984 0 0 1 121.474 132.281 Tm [(Gamma,)-254(E.,)-509(Helm,)-254(R.,)-508(Johnson,)-255(R.,)-508(and)-508(Vlissides,)-255(J.)-254(1995.)]TJ/F78 9.9626 Tf 0.984 0 0 1 377.318 132.281 Tm [(Design)-254(Patterns:)]TJ 1 0 0 1 121.166 120.326 Tm [(Elements)-250(of)-250(Reusable)-250(Object-Oriented)-250(Softwar)18(e)]TJ/F84 9.9626 Tf 190.781 0 Td [(.)-250(Addison-W)92(esley)111(.)]TJ 0 g 0 G - -47.976 -29.887 Td [(177)]TJ + -47.668 -29.888 Td [(181)]TJ 0 g 0 G ET endstream endobj -2215 0 obj +2240 0 obj << -/Length 4492 +/Length 5191 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 150.705 706.129 Td [([13])]TJ +/F84 9.9626 Tf 150.705 706.129 Td [([13])]TJ 0 g 0 G - [-500(Karypis,)-422(G.)-388(and)-387(Kumar)74(,)-422(V)129(.,)]TJ/F60 9.9626 Tf 149.763 0 Td [(METIS:)-388(Unstructur)18(ed)-387(Graph)-388(Partitioning)-388(and)]TJ -128.184 -11.955 Td [(Sparse)-452(Matrix)-452(Ordering)-452(System)]TJ/F62 9.9626 Tf 135.842 0 Td [(.)-452(Minneapolis,)-503(MN)-452(55455:)-714(University)-452(of)]TJ -135.842 -11.955 Td [(Minnesota,)-531(Department)-475(of)-476(Comp)1(uter)-476(Science,)-531(1995.)-475(Internet)-475(Addr)18(ess:)]TJ/F67 9.9626 Tf 0 -11.956 Td [(http://www.cs.umn.edu/~karypis)]TJ/F62 9.9626 Tf 156.91 0 Td [(.)]TJ + 1.02 0 0 1 172.284 706.129 Tm [(Karypis,)-341(G.)-322(and)-322(Kumar)73(,)-341(V)126(.,)]TJ/F78 9.9626 Tf 1.02 0 0 1 299.262 706.129 Tm [(METIS:)-322(Unstructur)18(ed)-322(Graph)-322(Partitioning)-322(and)]TJ 1.02 0 0 1 172.005 694.174 Tm [(Sparse)-386(Matrix)-386(Ordering)-386(System)]TJ/F84 9.9626 Tf 1.02 0 0 1 308.549 694.174 Tm [(.)-386(Minneapolis,)-421(MN)-386(55455:)-586(University)-386(of)]TJ 1.02 0 0 1 172.284 682.219 Tm [(Minnesota,)-447(Department)-406(of)-407(Computer)-406(Science,)-447(1995.)-407(Internet)-406(Addr)17(ess:)]TJ/F131 9.9626 Tf 1 0 0 1 172.284 670.263 Tm [(http://www.cs.umn.edu/~karypis)]TJ/F84 9.9626 Tf 156.91 0 Td [(.)]TJ 0 g 0 G -178.489 -19.925 Td [([14])]TJ 0 g 0 G - [-500(Lawson,)-314(C.,)-314(Hanson,)-314(R.,)-313(Kincaid,)-314(D.)-301(and)-301(Kr)18(ogh,)-314(F)92(.,)-314(Basic)-301(Linear)-301(Algebra)]TJ 21.579 -11.955 Td [(Subpr)18(ograms)-288(for)-288(Fortran)-288(usage,)-298(ACM)-288(T)90(rans.)-288(Math.)-288(Softw)92(.)-288(vol.)-288(5,)-298(38\226329,)]TJ 0 -11.955 Td [(1979.)]TJ + 1.02 0 0 1 172.284 650.338 Tm [(Lawson,)-252(C.,)-252(Hanson,)-252(R.,)-251(Kincaid,)-252(D.)-251(and)-250(Kr)17(ogh,)-251(F)90(.,)-252(Basic)-251(Linear)-250(Algebra)]TJ 1.018 0 0 1 172.284 638.383 Tm [(Subpr)18(ograms)-245(for)-245(Fortran)-244(usage,)-245(ACM)-245(T)88(rans.)-244(Math.)-245(Softw)90(.)-245(vo)1(l.)-245(5,)-245(38\226329,)]TJ 1 0 0 1 171.786 626.428 Tm [(1979.)]TJ 0 g 0 G - -21.579 -19.926 Td [([15])]TJ + -21.081 -19.926 Td [([15])]TJ 0 g 0 G - [-500(Machiels,)-240(L.)-239(and)-238(Deville,)-240(M.)]TJ/F60 9.9626 Tf 146.833 0 Td [(Fortran)-238(90:)-304(An)-238(entry)-239(to)-238(object-oriented)-238(pr)18(ogram-)]TJ -125.254 -11.955 Td [(ming)-211(for)-210(the)-211(solution)-210(of)-211(partial)-210(differ)18(ential)-211(equations.)]TJ/F62 9.9626 Tf 211.899 0 Td [(ACM)-211(T)90(rans.)-210(Math.)-211(Softw)92(.)]TJ -211.899 -11.955 Td [(vol.)-250(23,)-250(32\22649.)]TJ + 1.002 0 0 1 172.284 606.502 Tm [(Machiels,)-248(L.)-249(and)-248(Deville,)-248(M.)]TJ/F78 9.9626 Tf 1.002 0 0 1 298.249 606.502 Tm [(Fortran)-248(90:)-309(An)-248(entry)-248(to)-249(object-or)1(iented)-249(pr)18(ogram-)]TJ 0.991 0 0 1 172.284 594.547 Tm [(ming)-253(for)-254(the)-253(solution)-254(of)-253(partial)-254(differ)18(ential)-253(equations.)]TJ/F84 9.9626 Tf 0.991 0 0 1 385.663 594.547 Tm [(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)]TJ 1 0 0 1 172.005 582.592 Tm [(vol.)-250(23,)-250(32\22649.)]TJ 0 g 0 G - -21.579 -19.925 Td [([16])]TJ + -21.3 -19.925 Td [([16])]TJ 0 g 0 G - [-500(Metcalf,)-251(M.,)-250(Reid,)-251(J.)-250(and)-251(Cohen,)-251(M.)]TJ/F60 9.9626 Tf 177.874 0 Td [(Fortran)-250(95/2003)-251(explained.)]TJ/F62 9.9626 Tf 112.004 0 Td [(Oxfor)18(d)-251(Uni-)]TJ -268.299 -11.955 Td [(versity)-250(Pr)18(ess,)-250(2004.)]TJ + 1.006 0 0 1 172.284 562.667 Tm [(Metcalf,)-248(M.,)-248(Reid,)-248(J.)-248(and)-248(Cohen,)-248(M.)]TJ/F78 9.9626 Tf 1.006 0 0 1 329.338 562.667 Tm [(Fortran)-248(95/2003)-248(explained.)]TJ/F84 9.9626 Tf 1.006 0 0 1 441.938 562.667 Tm [(Oxfor)18(d)-248(Uni-)]TJ 1 0 0 1 172.005 550.712 Tm [(versity)-250(Pr)18(ess,)-250(2004.)]TJ 0 g 0 G - -21.579 -19.926 Td [([17])]TJ + -21.3 -19.926 Td [([17])]TJ 0 g 0 G - [-500(Metcalf,)-258(M.,)-259(Reid,)-258(J.)-257(and)-256(Cohen,)-259(M.)]TJ/F60 9.9626 Tf 178.365 0 Td [(Modern)-257(Fortran)-256(explained.)]TJ/F62 9.9626 Tf 111.452 0 Td [(Oxfor)18(d)-257(Uni-)]TJ -268.238 -11.955 Td [(versity)-250(Pr)18(ess,)-250(2011.)]TJ + 1.008 0 0 1 172.284 530.786 Tm [(Metcalf,)-249(M.,)-249(Reid,)-249(J.)-249(and)-249(Cohen,)-249(M.)]TJ/F78 9.9626 Tf 1.008 0 0 1 329.715 530.786 Tm [(Modern)-249(Fortran)-249(explained.)]TJ/F84 9.9626 Tf 1.008 0 0 1 441.822 530.786 Tm [(Oxfor)18(d)-249(Uni-)]TJ 1 0 0 1 172.005 518.831 Tm [(versity)-250(Pr)18(ess,)-250(2011.)]TJ 0 g 0 G - -21.579 -19.925 Td [([18])]TJ + -21.3 -19.925 Td [([18])]TJ 0 g 0 G - [-500(Rouson,)-416(D.W)92(.I.,)-415(Xia,)-416(J.,)-416(Xu,)-415(X.:)-575(Scienti\002c)-383(Softwar)18(e)-383(Design:)-575(The)-382(Object-)]TJ 21.579 -11.955 Td [(Oriented)-250(W)92(ay.)-250(Cambridge)-250(University)-250(Pr)18(ess)-250(\0502011\051)]TJ + 1.02 0 0 1 172.284 498.906 Tm [(Rouson,)-371(D.W)90(.I.,)-371(Xia,)-371(J.,)-371(Xu,)-371(X.:)-505(Scienti\002c)-346(Softwar)18(e)-346(Design:)-505(The)-346(Object-)]TJ 1 0 0 1 172.284 486.951 Tm [(Oriented)-250(W)92(ay.)-250(Cambridge)-250(University)-250(Pr)18(ess)-250(\0502011\051)]TJ 0 g 0 G - -21.579 -19.926 Td [([19])]TJ + -21.579 -19.925 Td [([19])]TJ 0 g 0 G - [-500(M.)-282(Snir)74(,)-290(S.)-282(Otto,)-289(S.)-282(Huss-Lederman,)-290(D.)-282(W)92(alker)-282(and)-282(J.)-281(Dongarra,)]TJ/F60 9.9626 Tf 304.659 0 Td [(MPI:)-282(The)]TJ -283.08 -11.955 Td [(Complete)-369(Refer)18(ence.)-369(V)74(olume)-369(1)-370(-)-369(The)-369(MPI)-369(Cor)18(e)]TJ/F62 9.9626 Tf 195.586 0 Td [(,)-399(second)-369(edition,)-399(MIT)-369(Pr)18(ess,)]TJ -195.586 -11.955 Td [(1998.)]TJ + 1.014 0 0 1 172.284 467.026 Tm [(M.)-247(Snir)73(,)-247(S.)-247(Otto,)-248(S.)-247(Huss-Lederman,)-247(D.)-247(W)91(alker)-247(and)-247(J.)-247(Dongarra,)]TJ/F78 9.9626 Tf 1.014 0 0 1 455.169 467.026 Tm [(MPI:)-247(The)]TJ 1.02 0 0 1 171.955 455.07 Tm [(Complete)-327(Refer)18(ence.)-327(V)72(olume)-327(1)-327(-)-327(The)-327(MPI)-327(Cor)18(e)]TJ/F84 9.9626 Tf 1.02 0 0 1 368.48 455.07 Tm [(,)-348(second)-327(edition,)-347(MIT)-327(Pr)17(ess,)]TJ 1 0 0 1 171.786 443.115 Tm [(1998.)]TJ 0 g 0 G - -21.579 -19.925 Td [([20])]TJ + -21.081 -19.925 Td [([20])]TJ 0 g 0 G - [-500(D.)-314(Barbieri,)-330(V)129(.)-314(Car)18(dellini,)-330(S.)-314(Filippone)-314(and)-314(D.)-314(Rouson)]TJ/F60 9.9626 Tf 263.283 0 Td [(Design)-314(Patterns)-314(for)]TJ -241.704 -11.955 Td [(Scienti\002c)-224(Computations)-225(on)-224(Sparse)-224(Matrices)]TJ/F62 9.9626 Tf 175.254 0 Td [(,)-229(HPSS)-225(2011,)-229(Algorithms)-225(and)-224(Pr)18(o-)]TJ -175.254 -11.956 Td [(gramming)-396(T)92(ools)-395(for)-396(Next-Generation)-396(High-Performance)-395(Scienti\002c)-396(Soft-)]TJ 0 -11.955 Td [(war)18(e,)-250(Bor)18(deaux,)-250(Sep.)-250(2011)]TJ + 1.02 0 0 1 172.284 423.19 Tm [(D.)-389(Barbieri,)-425(V)127(.)-389(Car)18(dellini,)-425(S.)-389(Filippone)-389(and)-389(D.)-388(Rouson)]TJ/F78 9.9626 Tf 1.02 0 0 1 426.1 423.19 Tm [(Design)-389(Patterns)]TJ 1.018 0 0 1 172.284 411.235 Tm [(for)-245(Scienti\002c)-245(Computations)-245(on)-246(S)1(p)-1(a)1(rse)-246(Matrices)]TJ/F84 9.9626 Tf 1.018 0 0 1 365.291 411.235 Tm [(,)-245(HPSS)-245(2011,)-246(Algorithms)-245(and)]TJ 0.985 0 0 1 172.284 399.28 Tm [(Pr)18(ogramming)-251(T)93(ools)-252(for)-251(Next-Generation)-252(High-Performance)-251(Scienti\002c)-252(Soft-)]TJ 1 0 0 1 171.865 387.324 Tm [(war)18(e,)-250(Bor)18(deaux,)-250(Sep.)-250(2011)]TJ 0 g 0 G - -21.579 -19.925 Td [([21])]TJ + -21.16 -19.925 Td [([21])]TJ 0 g 0 G - [-500(Car)18(dellini,)-494(V)129(.,)-988(Filippone)1(,)-494(S.,)-988(and)-890(Rouson,)-494(D.)-445(2014,)-494(Design)-445(patterns)]TJ 21.579 -11.955 Td [(for)-240(sparse-matrix)-240(computations)-240(on)-240(hybrid)-240(CPU/GPU)-240(platforms,)]TJ/F60 9.9626 Tf 284.952 0 Td [(Scienti\002c)]TJ -284.952 -11.955 Td [(Pr)18(ogramming)-250(22,)]TJ/F62 9.9626 Tf 73.713 0 Td [(1,)-250(1\22619.)]TJ + 1.02 0 0 1 172.284 367.399 Tm [(Car)18(dellini,)-300(V)127(.,)-600(Filippone,)-299(S.,)-599(and)-578(Rouson,)-299(D.)-289(2014,)-299(Design)-289(patterns)-289(for)]TJ 1.02 0 0 1 172.284 355.444 Tm [(sparse-matrix)-381(computations)-382(on)-381(hybrid)-381(CPU/GPU)-382(platforms,)]TJ/F78 9.9626 Tf 1.02 0 0 1 456.492 355.444 Tm [(Scienti\002c)]TJ 1 0 0 1 171.975 343.489 Tm [(Pr)18(ogramming)-250(22,)]TJ/F84 9.9626 Tf 73.713 0 Td [(1,)-250(1\22619.)]TJ 0 g 0 G - -95.292 -19.926 Td [([22])]TJ + -94.983 -19.925 Td [([22])]TJ 0 g 0 G - [-500(D.)-200(Barbieri,)-210(V)129(.)-200(Car)18(dellini,)-210(A.)-201(Fanfarillo,)-210(S.)-200(Filippone,)-210(Thr)18(ee)-200(storage)-200(formats)]TJ 21.579 -11.955 Td [(for)-318(sparse)-317(matrices)-318(on)-318(GPGPUs,)-335(T)92(ech.)-317(Rep.)-318(DICII)-318(RR-15.6,)-334(Universit)]TJ 305.831 0.025 Td [(\036)]TJ -0.832 -0.025 Td [(a)-318(di)]TJ -304.999 -11.955 Td [(Roma)-250(T)92(or)-250(V)111(er)18(gata)-250(\050Febr)8(uary)-250(2015\051.)]TJ + 0.985 0 0 1 172.284 323.563 Tm [(D.)-254(Barbieri,)-253(V)131(.)-254(Car)18(dellini,)-253(A.)-254(Fanfarillo,)-253(S.)-254(Filippone,)-254(Thr)19(ee)-254(storage)-254(formats)]TJ 1.02 0 0 1 172.284 311.608 Tm [(for)-257(sparse)-257(matrices)-257(on)-257(GPGPUs,)-260(T)91(ech.)-257(Rep.)-257(DICII)-257(RR-15.6,)-260(Universit)]TJ 1 0 0 1 478.39 311.633 Tm [(\036)]TJ 1.02 0 0 1 477.558 311.608 Tm [(a)-257(di)]TJ 1 0 0 1 172.284 299.653 Tm [(Roma)-250(T)92(or)-250(V)111(er)18(gata)-250(\050Febr)8(uary)-250(2015\051.)]TJ 0 g 0 G - 142.805 -209.215 Td [(178)]TJ + 142.804 -209.215 Td [(182)]TJ 0 g 0 G ET endstream endobj -2235 0 obj +2166 0 obj << -/Length1 1383 -/Length2 5908 -/Length3 0 -/Length 7291 +/Type /ObjStm +/N 100 +/First 960 +/Length 11534 +>> +stream +2153 0 2148 59 2170 269 2175 408 2176 588 2177 631 2178 832 2179 1127 2181 1348 2168 1561 +2172 1707 2164 1765 2173 1824 2165 1882 2174 1941 2169 1999 2188 2153 2192 2292 2193 2472 2195 2515 +2196 2722 2197 3023 2199 3244 2186 3457 2190 3604 2191 3663 2187 3722 2204 3904 2206 4022 2203 4080 +2209 4163 2211 4281 601 4340 2208 4398 2213 4521 2215 4639 606 4697 610 4753 2216 4810 614 4868 +2212 4925 2218 5020 2220 5138 618 5197 622 5255 626 5313 630 5371 634 5429 638 5487 642 5545 +646 5603 2217 5661 2222 5756 2224 5874 650 5932 654 5989 658 6046 662 6103 2221 6160 2226 6255 +2228 6373 2225 6432 2230 6500 2232 6618 2233 6676 2234 6734 939 6792 938 6849 898 6906 899 6963 +914 7019 895 7076 896 7133 2235 7190 891 7248 2236 7305 1055 7363 2229 7421 2239 7515 2241 7633 +926 7692 897 7750 894 7808 890 7866 2106 7924 893 7983 2242 8041 892 8100 2090 8158 2091 8216 +2238 8275 2243 8370 2245 8390 2246 8761 2247 8864 2248 9023 2250 9046 2251 9501 2253 9630 2254 9928 +% 2153 0 obj +<< +/D [2149 0 R /XYZ 150.705 211.214 null] >> -stream -%!PS-AdobeFont-1.0: CMEX10 003.002 -%%Title: CMEX10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMEX10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMEX10 known{/CMEX10 findfont dup/UniqueID known{dup -/UniqueID get 5092766 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /MNPEHI+CMEX10 def -/FontBBox {-24 -2960 1454 772 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMEX10.) readonly def -/FullName (CMEX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 114 /radicalbigg put -readonly def -currentdict end -currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» -ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ -}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¥Þ£Ô!ŽfpÿG?[öTtkuœ'5O P 1òÍ[.®BÉB•ìBo0”Í ÌVoðG;£òwŸëõ¬CMdK†&\YT{#v¬ mÉ ¼E57ºG~ß¡ +‚3[Å¥…š7Œ3Å:&uN¡]Bä Je ¤ÎþvûÂ(âˆ7JIFO/kZ)C¦k“z«™*7¥XuvwšÄ Œ§Ù†øg&Ö‹¬Uüî+D­WA¥ÅàßÔ³íäÇÕPx;£%]r@¤àÿŽŸ¡G•®à€íå~fúJ4„ë8Øù{v”FMô¢øøâ·"›~¬ç’êwšv¬âÇÔ‡þ1µëþÄëI mJXk kŽÕéÅ51DžˆÞÆ[ËWoplã^(íï;Òw‚á\FÖôËIz÷H…©°y$—¢$r ´Ù./±xjÍ83›õÛîá>ƒz>æ½9÷NÑœv-Úòv£à)üTT£D*»IL}Ÿ¶q°â¨Ûbx×>÷öu}½®&é:Îë=l]Õì™Ño:··´‡ê¤E“‹­iÛ§í[A^–Ïýö ˆÇ[—/åERÍ;ÈñRé;”"Æ6(Å©³K?C!Í>;gh)¾Õ Ga¹ï 9nQ©ÝÀ<‚@æð†(<Úˆ›|+†)}ÕPÆˇ2&©±d–qmcüß#ãIh²¶èÃåFöeIû-ˆS³žÙ „näçÌ|{¥cˆfyv40®ûÂë]vO‡?ñÝ‹ZωÊN#Iî®'\9ÜwÉûÃ…P®póþº`ê½i­ì(ä2ËNzf¥¢ò¯ŒA¼Ê‘[?‘ùÊÿ}—Ó7NÛ)Å-tõ)¤^«EI(^Ü’M[ß Ò½¸ëTf¨[¾ë¿ËzÝé{ Ü rCÖ2®¿YócâCŤÇ¥Å¬­ùfåýùvËn­TîgTBgÙ^fº„O¤W¬ …¾3KÝgç³iuðèØ“e>öùN¹…וø¬¦÷q¨1ØS.ËÖ¢+¼0ȉ<á÷§]¶Ìvž®ÖmZ÷î¥ É ›¯û=½WVhY&Rþ{­!2Ûܼè'ëNr6ɱb k¤_ƒÚ©Ñãé°þŸÀ©Íáë'À@ˆ1Æá3µ{ðMKÝ€_öû_ÙÄGaÝT¿AbÊŠÍ0Z¨B{䤡 dÖå½2Jö–®ä>û 7RÓ‰ÎK¬7Œá˜×ÑØÁT;È°èì­+[4Bó*•¿q4~;7 ³D 5…W?S÷»&×3•¨ÑÞñ[Låíù«öð^'{ŒüP)VÌ´~¡B,›10Z]TûÕC2e;=@Ó7Þnú¯6 -|ŸõÕÜ,E µú‚+Ê»%¯ó_B κ7() †û…xK6™”üqÂÃQýðlÝ:® ¦É`qíÔyïiŸó_O£¾7éâMK!¿5°(sêf<ÊE0»HwÞZë>g´§ÄÍH¥Q1N‹9!å;8 @Úß™:€Ï¬&ê-(Dƒ00·ð¨ðfkC[Ÿ®–ÜxŒÝ'=x†ÁWHò© i~ -s§Šý¬w‡ù£³O¤½€Vꮈ…i›ÔJ†LàÓú%’•{ÕyݘFü": -®Ø1[ÜþÃï[ nÖs…ežá]-Då.–ò˜œct&_–CÅ$žãI]Dؘƫª'¢„‘ÎïöDG‡SÄQ$Ò€pªÕ„¿6<ÿçø°~ð"Dé¿gÕž1àoÔ/+8ó®á>ÜY½‚Xœ+®ÏÐê°­öÒ…¾‰¾Á:f«XMÁÜì¡‚(§~t~xŒÄèôc¨+ª`Hc‘äv"œ+Ð!ægãŽl;%kèι #‚Œšvì" ‚¸%ÛM©ÂA’6Ö†N{…È%º•]Dû²`;æ>Ië¼³æ£Æåg¶!œ¡CSièØØofÐÇgŠlu:o3 y–UðÝ¢×ð\aŸÁ;ì'“à‰f«@á›™vØ⬊þZý¯j NB²]ƒ¥ð.y¸iõW3Ãû 5{ˆŒÈ$";é×Yü]«Ž` !i1ñ{ü²±Z„°n|ó¬„VS,v¯6ÜÅâ.Çam$|ã%Ù>ÑÒâí)TC¿ç–Ôk"£‘3ão²@*RU×,ŽÖ6ˆä<#4Â4`ŒxDÆðÄo:EÖtÛ{M„6#:‡—†®š]wçÞžõ›CAªž•'j]¡=ûûK4ˆôîEAÃ=¤±Î:ËMOÔaÆÒ+VXÉ[ã¦b,ÝmaÙ*¹Š’Í69—ZŠ°]ʤ»¼ˆƒ|¯`ÊÏ?‹tvñFè¢wØÎr2)ÆЉÖ/ä-ãOv±5ÅÁ@y©‹‚9 ]º#Ðÿ×ÑÈùóx~†{ï! Ë£zÉ{TÅD]7ºÿëÉðdáì{“ù­ÒãWtòƒMp† iÚ(¡÷+\, pZ]8·¿Ã¢¹­wcl_EìØüÀ¸Î€G#ù×ÔÓ±Á¶ê­š=]Y7*œŽÖrƒQþ !WQÜÓ„rÅõªögàdM9ÀÓn*»P² ´¾ŽœàŠbß3„«éBºxe ö@1RhOjø……ù\÷˜ÍBycw˜zÆÊj eµµÓÓH×?Åé´ •U•~péÌE‚èä¦.¬kÇI“®àc4g<Öé»äÛBêºùZë\¿B«…5h‚r¶†E£ „d^ÅwªÂŠÙiµ·m ¢;õ2 "?Åê -]`_±©Z 8P\éÎôw˜œ)ƒ9%9 ó›d„S6ÔX?}†Œ+ãžLÉY¨JÏ^y@1ùÊè ë(h{U²üÐe²m«í,F/d䘊Ô"H7?Âj œV}‚ö–2 -æl -O´lb(FY8ÍGúß±í4°.Å eS²]¨<±²’b@{ÌɤA.Sˆ Éf>ŒoÀöL£Æ¡6—/Ýç¿”ÃÅOH®eAᤇÇôÎ#:jîå -´7 ¥À6µYäÀÐ^Rvr´é?´NøÖVÒIÑÙz1µ¦x^PAéÎÕÿß~¬æøžKut’Sÿ‘`ZƒàGR`T•g3ìHÁ4á×'ÑeKR `ªÜk+·«ÞáÞj|á¹7Üoà»HNPq‰JgÐ4Òíéà£{ù"ŒçNñÝJïÚØ.éñóôàÐGo[öyv±‘.IS¼+Ç9jÎU´Ld+ˆµ“fu”¼Ë¥Ä~mQ¡±fÃsGñMÎbÐ)êRY2áÄ>®y2d‰=¸ƒÎ»U•ñ¡eíëØüò¹8†@*<*?µäæ!õ.ìyŸ]PhŽNÖЫÑ1Ìq€ÃïærYgî²°MŽ´RÇâ/‹êÁ -ô_XÉØÎ仾ëru'Aßpue+Ë`Y>q† WòXG¼6dïˆ÷¾Z’ ¿ñ«e œå‡ÿ‚”õñúœT¹ø¢Éíï_‡…Âj^‹-æÑ'[n¤nyOZ£:OäþÔ?UŽ”ª§¾3z;Fraᪧ}/_ ›-àÐDŸ'o²!OäQ'‹Ê±LÎö@˜ ©Ø.!UxÐò~eRj=U=Î¥Dqæ±K¦ß’&žu9éûÍq›ÎD<:ß µ¯‹áLb½.3¼ñÿ„cäþ%Úx]«×‰;®­ÁÄ ð½åaí¶˜Ry†Ÿ ÛZÚ:ÕÃl‘Ž¾ö^ùn×z!Ë/rüUŒ¦Õ¦î4)ÅhO·’MMdÄ͹æ’þÖ ë14õ´/Xû‰·sa°0"îA«ë¬µÇõer™á¶’lŽBNŠ rŸ8ÑÝ°Yç~ry9‹h‹Å?êchÙž–!ú„c -Y猅OŒ½Ûúc¤õÜ}q¾5Ÿ—–\¶ú–(ºyÕ!ý¦^âÙë(L§¶ 153Ùjv‡zôhŠÒÕé9é·”®Šæ—7ÖZõCYöå³€¹ÌOÁàª:,!·’ýU…C$*Úh[GÂ%4èO†ô¾#+¤y“–6"Ð>RR-:#ÉXL%¿Yž¢ÉD‰d«­,[Þü¬®®‡F¢Tê ¤ˆgËXc‚б¿½:¤o9LJ•\{î„­ðÿ¼h%v9õ'tÝUB¥´¥QÅ•&ƒúFÿpÅÔ¥ÛÔ,8W‹åë—¶öëF¹ÏFŸ˜“À-Q¤EW¼ÐDE²zÑ5sž#.TD1R0„ÝŠ¬±:û$Ý}+ƒr*é­W”ž›ö€Þ®Ub¿œ\]E¨vs|Ã?Lko²¤ŽO®¤ÔþiÇF‰Šx•Í(8‰z1áùdƒÃú8w .ðb€"œ°%K^i5…Ã9ÁC|÷]Jçä4¡ptjŊÑC”˜È‡”‹Í -Ä­ÔGeè‰å/" #ò ß@!aM†bòE±0ñ­Á›ÒU?¯\ ábY¤Ó½ë‡÷Iƒ¤mÊ—õ.Ç`xò+Ø‚“2qZ:j㱦étWM½°Kª;Æ8¯Æ¦Aœ sì&qü\oq¨ºŽVjQ %i®3k’$nõóõ'Ã=ŒE#*à -WVV ½ IàPQ8ë€ôãý>Ôài Õ4bm ¤miûåšÊ¾Ñ.P`²W0ÍÑ'2ó†0æÖÜÎvûwl.]e‹l™Ð‚íùÝÅ!®Y——z›Ö"ËýƒFßkRÍ™¶ÕÎå,­š`ká%‹˜Iubaün\þRÚ‡udÞ Í:tÜ?·°ìY¦SŽúû¡/WXlOé®]Á{¨j -À±f—•ˆ_‰p|”åê=ZO›Ç(ï+ªý`ëH -º5 ~šœÑ‡7dhÈ¿Ö«]VÛ1´ÕÔ„ìœ2¢ÐD(ÎW[Ã/tG -W ”(µ ìz ŸKø¯ÖèÁª3Z!‹>ôŽL§‹ßW×aF§;®‚w¢0Þäc¿³èA–°”Ü‚ìÍÜLc»Ea;ã° *DGµ5€HXÒ&Æs¸‘wÈ*ñø—¡’ÂËä;êäs(­#PBÙ¾ hoOt%ŠJ»Ã ÃuÑöÞ.:üñô–ˆÛƒƒ ÿ&eãåss¯E¤Æå3aÌ•*™þPê›v”*¥k]5öDû6æ?¬xæ3à{Û%·Ð¯Eó¨µiVÿÀ ÿjÆÓ¨¯¹§”P£ƒNx[šö ïЩnôP×Ú1#WÐv¥›A8Þ¿6¡dz“¸LíñtGîb5Püw,.½#g»«…ŒþÐF:ÙÀîð4ý:uBV÷@aOå•2¥zšn!Á `p»gTwa„GÜ7þ”Ý= bézêsÔФ½¤–Y@«¶}0Š{9üBî6$ʗԧЋ>«Ên4=#|¨hý~ùÞ•4òR_=¯ÒåÌ [êý?rä}™®§Öºáh­ â«}ÅT ‰e4­{Ê#:ýÿų¡¯7“_f.KQ'¬maa÷[WPžå©câ”_·ûŽRF)Dr[ˆÎÔ­-—¨B+~?»îØØÁ>ä3Žh ¦$•z?-’–îÛ#L~ô9³^öå0Û Ô®ÁV@A”W aºƒcÓ¯Ë=óYØN‰Ê›õÏv¬ûT”S—-ª9½S"c¢x L¤ºè ʲLçkçÙú7ßPwí—¥×s³p÷¢x¿Àî–ÆYÁó-YeF -ò6S&ªå_!“½SÎ|esU›FÌR™y† ¢Y‹¥ýžï­§N -endstream -endobj -2237 0 obj +% 2148 0 obj << -/Length1 1442 -/Length2 6151 -/Length3 0 -/Length 7593 +/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R /F231 1025 0 R /F279 1791 0 R /F134 1469 0 R /F179 922 0 R /F75 673 0 R >> +/XObject << /Im8 2144 0 R >> +/ProcSet [ /PDF /Text ] >> -stream -%!PS-AdobeFont-1.0: CMMI10 003.002 -%%Title: CMMI10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMMI10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup -/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /TPELEW+CMMI10 def -/FontBBox {-32 -250 1048 750 }readonly def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def -/FullName (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/ascent 750 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 44 /arrowhookleft put -dup 62 /greater put -dup 60 /less put -readonly def -currentdict end -currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÎ<ï˜øX2-Τ^tÅEÒ_á’SœÚKªFÙÄ1F^j¿NBqøžÞ×ó{ä³´y4ö-FègbÖÿöÔ“{÷"Ö¸¡W–B:§rÅP‹À ?dgÅS%|'²ÃØ“w&¨F7J…¼N¾À°¨œL9VìâRt¹bÈTå5ô'ŸâmƒãŒ\‰—Nš"K<¾ù -’w¯àÇÊÈÜÄÁ‹Jv‚åð$†tE;ÈD4¯VÜ¢üŸ§vëš{bG@ëdÅ«ß)–ø²Nòhäòë]!(”À7h`”fŒ1ìzùpÜB˜r £æŠdÛž‡·Ç>“÷sVÙiHÂÞ­âkJ‡…KyÚÔÃÑàüuK—I[ÏÆ„(,M’=þ¬äì}µ%½vf†º'°–äE+œ)ê}fƒ¢Æ$lÜö(…ÔW2[8˜h¼T>¦Ü9„º€X33 vi˜®U/µçÇ¥Yö{z4þ¢ó¾¾B&Úq¯‹nŒzà³Ü|š¤¡úï1/É´c™±ŒCzwmáö|¯xá]LÇmo¥}­z¼m5íà׎Œo: ž©ê¿Š„.º‰"­ÛãĈõ¬d¨N «úôÍÆo¼3 -v¨Œúëzýëš N -p´zªP;VÒ¿g6ǢŠ>Ù,ÿñ>º—O€J4mA0ÌýR3¶Ö¹*È{¾+¢ºä9á…iuåÏM”äO@h}-Û(Ž ‚Qȃ钌¼Aàô¹Ÿ‹)Ó±Ôí ¼¨=.9©çœëô3góœ=[¾_ÿbÿo_ðBV¤ßúƂ˶òW"í䶛ÂàaòéoZFsO‘)„”¤%ïd2ò¹wŒN»­ÓH>õD}õðÛ‘ÅY•¼í´±1jZ®ƒg¨¿1b¾¹œJªa|`¾h§b)ÁwYƒïc[&0j”ð²X7yøg -˜hS·…¢&}pþ-ÒêfÖ^ aûÖ_ -Ål4zVéóènRóà¿_e@¯³*z|–‘•Wi.·9Ì)ŽÇ™›B†SŽßs3Ïk ,^Œb’šðz˹a Ë…4_BãêÜûÆÎú1ï+ÑÚÓìWµ²2ÊpoœDûœ«‰¾x>Êf×H³ú[]TEöÁjšRÈŠ~/+û ääê š˜Ýl8äzXÜ’p²ôŸ›H!V÷Üd¶!¶€;d4¢£T¥Ù5:,ãúv#cK*ÜÖ;+zÏXŒ¯z k ¤QÓßwÅ>aqÆb6å1Iú¹ÎK&…?eÐÕ÷‘=ˆêf¹¶<ðjKüŽÓ$k¸löÞ%_ôm$]™9ã-ă åkaLËÜù˜TÏP1{Ðn ‰ŽÕžFÚ{bT½Ì¼f†âí ­{‰LÒë&ˆÀÀ -ÊX9ãʦàú÷îµß>?Úä´T ØÈoîRwšÓá: -‡›e¹ï -/ò ‰ºèÁyûí¸}„ ‡tæÚX¢ƒº"7€òqt„àfú}ÀæÑ”)°†8SRÓX•y<œs´2j•O^¼áƒº%À Uº…à{>Ô/ ¬¯©Cmoßå0Î%¬}¡pÛdç{h4>ŠŠ^wD¦ð@eQôdÄêaidYÑ^à@¿µ?p i3;²BŹAeûûÇôõ Ñ"­Kcéæ_ - -ô>üÉüToÑ=¤*¸ÉËúy¤€Ù#p$™UÎa¦€²€5Q2Z3:·Èw’ÞXê<âHY°Æxv½}€äF-$›"›b!(µzkDQRbt;³Çéj¤¸Äk äNö4­Ó4ù™ôß³ÜÿjA*›`gÒ‡Qª±² (¦ç;Ë°Q U„CpbèÍ@;øÃC9eé&F[(‹ -¢ü…ùù¦?ÎrŠí˜¼º_ô®…ÒfOWÞÐ㨟¨uù0Ý÷‘k/’®&¯5õ ÉÒ¨ùµÕØ ±-ßLYVZªbì4Xž[Ì0uÌj>EÔk²€²!XÅÀL¾¶ø¡Ç‘U—°ö›ã M‡lúTHÈnÒþy›ÄeUÆÆÿüs…AÜœŠo…3Î|] ¯]™äæz¹ÝN®&•”GÕU1@µ†./9;ÇÑIêÏFz”$¦¾€UØ/Kl×f6xqà  y -²w}±‚HH/³*%úÛb•k“¯üY±yoxжj®î—x£²S½˜\yµ)n?ºžVè‚J¶ù+Èka… [zÜÌf˜±€—×fI*Ý[f=M3Ó)%¼ñ©®“qª®¶O(¿\-Z!ŒžëJà -H)rQöµQ5ö£TbL}/>Î5kì÷=Qw¢Oþ75üˆ#:•×,¢U_LP?‘µÇÊNC®æSMöÕiïÕ Ú>•ÆÏ÷ˆå åñ3*×j#WÃDê8è‹$òÓ|òž!·FŠßÊÌŠ¸þéÚL“;_ -dQ–JI$¶º–ÃYÈ(ØmRqè÷£J[’~fÖ9,–«6³â_1ú£Ó~w »ë©S,?1?ƒ óÖAÔÅßyl(‚ãL¹Ït» ïUîìè À«m@Ò*ûT9ÛE¹¥WOg-Ú–ÖÁŒ°HépæaH"\z¤ýÂ/ÒÓ„EjV{1‰ó1̃T±•VLýÒ5yWK|z€Òóã—ð|Ú¶t¤jBdé…V=®zÙ3ÚÀTÖJ~¼æ[²¾µþÕ3`ýv þpnrƒU MVWª›ö.çY-t虘鰭²2zÕñ‘„¥‡ -«ìKxq3Ã¥àÉ_t§­›éÐ|ÑW×%ˆ0£Ì=æE‘@¯º”.ï2^àr³¥:Ÿ(H>¬eèÚPÌݳÔ;¯÷ØÇס„}mWœé-ñµMáAÎzs`sb}žŒÙýÃs¸@_“s¼/—žãFˆ¿„O’E«—lî‹Þh\G`böa8¤š·$(ÞòÈ^U3¯qš´ÔõïãóC"«ÿv¿‹¸õjþ?˜ŸúÜËAÓ·æ5.¨s:¾]Ç;H2®…½²?l¿´²cäþP¥÷ô!e£Ûê-t1ŽØ//Ç‘b<†•“Üýkû/å{ßéÑ”o›Î „ÍÆãì¥8G%‰pμÉëÆ·Mñ:Ó•únýÂ$cS€ë5!ª’žº0•ŠâÚ@…!–¶~äD Ó#8; ¡ò´ÿósŸ^ê°=gC𢑴Ý?ùèë×z;_]“¼r~ef H“¯‰/tü Ãóè6C©7GgŽ¹˜ùÉ:ùB=9$õñÇë$›*·6‘õúÈhrõ!ƒ e¬;èË€ÒWÅ.¨d~÷Gþ0E˜áÎ ¤Þ@1䶥xi°ŠVªq ‘̸¯«”­Öpçg¤Nwy]ßÖ\œÜs2qmîþ?ž.Ø¥K¶úö;{õõT¹4‚†ÀŸÂ§N¢ïÔà¾këàÄdàxÁIhE=ǃ§ˆ¥]’]r T’À} ºîI‚ûí›2Ý®# ¥‡™þêÅ[ °— -Õ’cuýy¹URkàQRbµÊ‰«Í¿†„|¼XPÔ V½Å(ézÞÑêm{v½ŽÃNt*ŸÌñšcD™±Ì’ _;tkÔÞ-›ê4%§§¶F¨ùï™ øÝí²AOŸ(®†sÉf±%(ÜûpÎDÛH"2&˜-pŠ Kï~°‰bãô3!=uEóQé”—(ëD<;³j°ÄÊ·úßÙIåù2s¢¶ßûA´g†G“ÍNSÇŠcÆ2Ôüº×r.†Ýã7ÕCŽ^CB á‹è°=ÝrÑ`–òœlq­(2]Ý¿™NeKè”0³ì?§Òp1–÷ñ ^˜ò`P~Sÿ=KÝÿ?EùæK››&³+ó‰£r\$2 $[׌/xÖp3¾ëâYU¡¬qƒµ*` r ©÷A ­“U8ÆÇÅo*ps ù E¥ölk§b@nQ+óÌ;R‘Œnž’‰2yφ¯„Ù¶}»èKéØKVTƒ#«8ጞ•pE:¾wÊžÑEc “ŸÃ¬Ã=Iõ鉧JÇ`ðÉ”X)RxïÞ’éÄx 5Ñ.Úh¨#ºDHêŸÙ0Ècµ~Á¹J¥ ㆸï¥:qÆÈhyKÝ´þF;Œ‰‡K› @û3Õ\îSN:8¡£'gé¦ßU?Þ)äÔRb%ÑûÚoŒ·€˜è>Š6 ãÄÇ~)˜ O’ -«©ÇXw5Í/"Ëá|k™¨(e$/ÞJ«¾G ¸à“ÇõÁž0Mõo#hpÑTé%Äòå-R (>¥*Îú Ò¨ìÈ25ˆh¼èïº|I.5uÁ`QP£÷Ö‚)`ñ©—QQǶé(ü÷4“5•³^§ƒÞ„‚M߯oˆ5G*`?ÍRFM¨ àÀþÕÌgãŽêpÀfÚßnþ¾5Æ1d¬¤¹‘íKÄë[L -y¸q ´BÀ¶$Ã@'ˆÊ6é!Wëà -ÎúE¶ÆI¹ï6ø,ûITÁ$‡þÎy›Ù‡î“H–pi¹æÿVchž]l&Ûß¡FÃÝ:¹ÂO¤é$#ÈŠ!D:¨‹…%)aã›Mx“ýÈÇ"_L—ú?Âd*ú:‡Ö0ï2]7x(ìº4p ®P8¼*.v5žsËb<õŽ³]LQ†0ï*ø¶Kí•×+·@>e.-ÚoªÓèþC®–¡Æ€lÊïÆÑ\~R+$vÃo–D¥™Úg†ßþyùê èaˆ çDNnrè*ïÌö®z ®høƒÙø[&¦Å&‡ÀÿæÔüq.®‹Êø¿ÝÐ¥‡ÄÎ¥ëÇl”Vx3õTª ö%LbzbSzÓ´Hv­÷šÒѦ·Sc)]M|Yœ÷IGC¼rç õrº²ô®ÍmGý­`—½2N×q$ž -n^Ø90ªI`V<_qŽnA¤©UÉ´Ý^°å"2ض>K;ägþæB -r sb¢VØb)l 2ÅþSŠ„T£­H+PMzjÔîëzËiÍfí$ŽDáŒMkV©° Ã?ã\Ù¼Ä>Ž¬߈ƶa¹<¡ÈèEE£ÜL½¦D…¯6=t¯–EÒ÷µ€ðàÀ.…(Á%FoÜ~­´ô6€rý¦\l•ù;séñ'$Öµ…ïß>ž4¹ÿr$ï2¨DZý~*®\R ù·Yi$=Þ¡¥k‡å'¯Öå“™úý.m…6¯Â–„tY0’O$ð)ºQñ’ršÈUQ…»+¶ßªúÔ4(¨«,‡°Qb8¬—mÓ©qý±âÀÁÝHä°=‘œ,YŠ8i  ÿ‡½ª”SZ6Žöã½mØ@ˆ»`é7~â"L7\ã¹ßFdN#FþýHR´K´KHpb40 2ÂÚ~HÇKε֊úøX -endstream -endobj -2239 0 obj +% 2170 0 obj << -/Length1 1688 -/Length2 8444 -/Length3 0 -/Length 10132 +/Type /Page +/Contents 2171 0 R +/Resources 2169 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2105 0 R +/Annots [ 2168 0 R ] >> -stream -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSY10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /VKSUEJ+CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 66 /B put -dup 72 /H put -dup 73 /I put -dup 32 /arrowleft put -dup 33 /arrowright put -dup 3 /asteriskmath put -dup 106 /bar put -dup 107 /bardbl put -dup 102 /braceleft put -dup 103 /braceright put -dup 50 /element put -dup 21 /greaterequal put -dup 20 /lessequal put -dup 0 /minus put -dup 54 /negationslash put -dup 112 /radical put -readonly def -currentdict end -currentfile eexec -ÙÖoc;„j²„¼ø°Aw-åÍßᾉYň5t&× {hLšGÒqB`d­Ë—PØ©†ÑÖ|*îøÎx\ÁœÞ–HŸtEÅãBð-¡ÉùóÁgedogÏ7—‰ãï‘Q`[['“WÖü…7Â3ç®æ¤ý¾sçZ9ë m ¦ö!–tAž¾ë‹Y!$átÊY\Žr[˜uTIUÏý‹iŽ÷B¼Œùyã[Ž™ÊÝÝÈœÆÅ—3ò¢Kï6­†zJ!žË’Ç‘œJ·s&B5öC©•"¥m†&Þ`7ÞûӢƻ‘Ç3uµgNC O~̶u³o5Ö=žÂÞò_ä›Tù/ ¸’‰h,°—$B%¯döʘï¯3lŸÃ ³¾ÛÿMÓo§¨÷YLÚ¶Œ~ƒ3^æÐø`š‘12]•=l8Çà£B6PlpËfWÚü<• %PIN!jáuË#,.õ£Åi«X“nôè¸È¼Ê‡ðo$îÒX½šëÄê‘·I5öÔV*E6t±K×o¿_)žÓRŸžP»¾G;Z@9ØÐ"V3¡T×TLç˜N Y:…A€Ókî©®Ú¬6Ì =‚¸=•8€0~ÛÐðDQì±ã QÂù^brð/2^KŸ¾Zh`§N'Jt4i¶ëüèBYÒð7ÖÞŸBþU_¨~\ŸfûŽõçôµïŸXA³ˆZl‰”¿Òã_£Ì½ZÆŽ˜ÀÐìý'•çxHµúöðbÊG:Ç"„¥l«¶5ºCÝƉU[ÆaL¼ô¸rÂÌf¶ôù 1[÷;4äp^èµNïpûªqBD 'Ø…93ã­M€&9{ ˆVD õ8 aе‚2Ön.hf¶ -äl?KÚ¢ë[$‹¸Š³úGpðöÃݺ±/JÇzc÷¥‚F8ûvP3Üà/XO6ÈyAo¿±î~ëç]WqD‚M¹ˆY4ߧ󆸢YÕÌ¢XPEðLý2ã_2¹ ­¹©oH•{ -1xÒÉê'¿¼u|»o øöúWNRšE”ò¦í™¹Óôû&”ã˜lFÿ\LRh1®Fžbñ¦­Ï}+‡l Cø] ¦¥ÛÂ(„vfÕoƒ+fÏœMëí³}÷l?c*Þˆ"î­^R¬æ]ªm†äÔi§„KªOÉÒŽ!I Œ²Ó²ûçõRþ_tÓW;™¿Ìñ˜Çu@(#ªt*̧Ó U œ{|ãõõQ}a3åF¨l•¾ó8x¬¤Òt’HWA¨Â­â;³!ÚVÞÐþ CºÊƒVo³—Ûvºžì’?³”;”œ±=ËÜ>,„Æ㧫¾\"«ù¶•šÑRívRC•Ø¥œQDh -Ó@_,žÇËœ½kbflçAIøP^ª³™wÙš¦dIÉHzk(c÷3ƒxûŠÉìSÊUPI³f{KΩÍs… îÍY¯¼¡í/ìvÁÏ[¡¹ûظL%O¡@ë™Hƒ†“<ÞP'ŽJ£ËÛv‘Õ,Æ$´"hU§M?ô³ë?á“p*Ö„7v×=ÛP1s}ãG“@¤N’5^ð3•‰Tå³8fº† yQ¦‡ƒ¹O)„´ ¬07ÓæÒ%… „G ¤ú’Rz£óófé{‡Ð^DhÜô<ä¢{™™âB•ËêÖ}úÀÆÙžs2f'CóyÞâ°_ǮӮ@]c8“±n7q'ƒæKˆü4kO=íþ«@ÖU ’¨Ül,ÝPoE‹ÞækÔ™*7q[Ú!ì÷ú·ÎØèÓ\o»‚^×$·&Œåóò]8l•ä·s¹&„„Á/ââ^)š!TåÄ€a óá¬îÙгá½S"¡;è•üu^S‰ -A5ò™6B=Û¢vnÛ™Tã­™±Ï¼"…Ñ÷©]/Í-}{ˆÑÆÉ@ŸÓ–+‹šiý©caÎpnÉÛã´ÓàÕ{ª N©‚ïh%sùªéðž ¹×áN¤‚äå¬VÚäÎǃ¿a©š]ôè?Õ, íòbt¡l“˜h6‘ÿOˆvÂ_§Ré̳9S ^Pí!Qp÷ Á÷¹r6÷¼Á;¥³Z–è¿ÆävØ9k yŽµH’yp;DÉ×ã “jí1œÐ:ðR„]¬Ý›bzGC?"%‚|eÝ¥w!è±–Í6Ë¥RPè$æ·¹:ÿ½Ô)ɽŽE#Øè¥d'¬Ãå¿-¹¶ È2/Å %ñŽ}‡Ù¿ŒØÜ mË…¯ZüÄ¢L8ÏÀôÙcËóµÏoÙ¬Š›LH¥ÔºKÜôó¶ž)˜õqž+×ÛcYy•ÅÍ»¥Ÿ› -_MÌŒý`-@³0Vý'ôœÏ±Ðö©tS¨É¤d?ݱX(ƒYƒ…Ä÷kNWµYÀíFØ<èB}³–ék³ÛÃßRí(ÚÕÏ^2Ø%0Aüýìm„»ŒÎél|mƒoÓÈì©4Q庭„¡y|“Úvï+~¤ŸÄ”EµcŽÔ²Ù’MÆë×/­öëtØ…üHeš†ÙPC´évNîç"G6} ¦ì ]µ1¡AÀŒ”+|ç°(ä¹VÕñߊG¨¬l7‚KfWzÞrŸ_í=ûG"{'ª4ˆXM ¦(¿Õ±†ïz/ܳ¶ÙzÒLÃZ„|¹‰DÆ4-ùá0Eíp¶ŠZSú¸óAÇᇬˆ³ÈáظA䔹Á½tl¾±ÎHý¡[TxsÎM¢…P‰*´ ee©¦f¦¾wkÚ‡øH1)7¨i"ÐÃï‚$0Øþ´«ÃV?i¿‰zóç8ÆÅ|¿¥>dÿjyTšÃµVmÇæ—áq§ÌgCÊ‘ó‘ïØÀºš9z»åTˆCÞ/Ät~º‘؆§o*í—9ŒÆrÏÕI‹¡oj¯UíKöxj¡º. ,Íø+b1°Ö²ñ ÃI›lDLïQZ3÷¶P-noô¼ò½'<ÐY½ße-ì1/øŒŸ7Œ*E5#—d‡ñ¤oŽ–{]Cª>$þF zg!Ј*£oºÓjŠÔ-Nûíͥͭoò8ÅKwQgÝpœ*1^‚.ÖŠˆÎÂë± LV‰~ôÈÿüøm laÎ ]%ì."¦`»©_®Q·iäpÀöÅŽÊs’5y.XƒÒÍ®)ñæ¢T¡í¦öd1KŸ¢k««ÌŠjÝ«¢n0zªG®áq‰·ëa©WQé%z„ÓJ²¹ØX¤¢Â3tIy0ľ£.Ó#‰Å[“#¤ƒD#EÔ‚’pp¯F*«¨õ±Þ˜vïrOÓdÎn7n ¤Òf9ƒ*¯ìX:õ¾ç>Ǽš:*ÍÞLfÍÃ9’&a’j;+{»0‡ )ÐÚA’gðK*êXKÂÛV¶'zÙZóÌAÚ) nîöÏ ³ÕT¼”ÙÛLÎßJëïòé^Di¨ý[¦ð:s<ܸ2Â!ñÞU‡ú|›–#ù5V„ëfÑUŠêqP}÷üÒ|=ÿŒš»¾GÂ5O|PÃèsš9ñ§Ž}äå“* -+gpA€,°,Á=|j«25CÉ‚7›õÕ ’ï–¯µ—Ø.é/F¨ɹË0¢–tRœáºŠ."we h¿P€ eäÖmpòîJ‡o´@°±â–ÿ_ðêAÒ3§âQé¿BVô~$ð9E¢ºj= -‹]? «è{w¯_53÷¥FîgÓ¿³4B™èä›ìA¨«á½q²ÏðËßÀÞÑ4µŠ‡¤Ðî1®PfÔ ¬ó,ÖSÅŸ6ôã¼ r¤§[‘ÝÁv`à ¼µ±ûô¿x÷G$ÿŸ„¥êÏ.}¡¹Î Ì”·¨ÜϾFÍ™”c°±š‘‚=­Áf!*˽ª./çwĉR8º(@ÙÙ‹šz c¸½@ÃN&Im—žÝ£>X!Èm•eñÊ@ÎlWÿ"ÒVCHèø8ÔkÕ‘ŨÍÀj]´nó3X>J¡z?ÙDí€=Nø…½bn {qbY(>"Ù8*苾ÉÍk¨y3øoâŠøÜ €ó‰Hã Dwâ¹ø]¤€ ½ëd {E’ʥËwÙá™.$Váçhtœözk$kk$]4ë¯ðcf¸¡ú¯»CW–@òËóû3ö—plQ¯ “Q晉bá¨/póµó T“q¾FÑ8_þÕA’¿nëQÔÿ¢mKŽ{&z;<Õ¿žmòã[i7Ìϴ뜣ñ'*ýqX€Tnòt<ÕŒkò/?©2m)žËÏfô¹¯í•áâ¢øy#(ã¯`%Ú{ª§!¼Qœ/0&sßx¹ôfçB«+¬Õr‹ïEßï[tÑÚgOKQ£$ú$²=à‚ל?êd@3c)]3ª–êÕÕ%*M}HÙ饞;Cd£á˜Érp½°1jýŸF¿ˆc…st•íG'÷âC\–ºp)­)öþœ_š¢)±Õ(¹ú›¥µ MMº -µ³„ qÆv&¶¯Ê÷Cßå3N¶LZs³wTPu{‘s¼ºÏ°øPž‹+-­©¡U‹—±FõUøP"»KΆ†+«¼ÒY¾e7?0«(•öidšL´;gk9Á(YI-Œl`®õî;`ÕçæAÐH:´® áYHb1“µâ»HÇ{¸wƒÇR^YÑš, - $F¨Ô–HDÙòV?pòyÑ—¹PÞ%F=»‚ÂÇÆB‡öÙö¡GKØPh³~N´[¸IÊ_ꈀCðTzÞÒf ç <Ó–”Œü`4|mƒE1ÖJ'¼ýáÝ$`}R ‚Ú\¨€âN2kf¢aóouJ73ê´òváê¿ôKÛW{œMÓÞ3?שMò]ù:W;v…˜Xâ;„B’ ‰§X.PáI;?Ÿ!T¤ˆ . ·sìöU]䮃’=ÑXŠþ ý’5´ÀŠ€r€Mt>y=¯†*ãbC¾~^ ½tÅAr±¡l'¶øŦ•üó\ô÷ØŸÉL냡P“&7ttöuGz;Kg4ÚóÑ;·u)"é³;úÜS•–Âv½ËðüõC~³?¿Jƒ»/’F"6U.°0>çô+ÜKQÓ„0"ÊÓ«Ñ=ëñséÞíƒxoJ]áת!Ìwü6OÝ.}‹ž€tëË5ð¢VâË©³+¬¥·¬­Àü7Š³Us‚š®Ö©ÆyçåÊÄ“TŸŒC5üGrgâUÄ5Ì$‡—Œ&|°µ¿Š~•ÝGªäØ8ž—ê ¡¯Mvåß(jt§ƒãß ñÏ¢nñí›]Î]ÅQÌW…OØ‘ˆm.Œ£Ž­ð R[¾ИoNÐngô IFç:?Ât”ØSUOÎcÆj2Cm[¥à«O7>kWúk¥¢©½ËX¯'ƒ²î¦œ ™#ñ–Ñt'X•d9+E7±ðNä™dŒ8{Å]òŒm¹/‡ Æñž»×Ž¥dv‹Y†Y–öþwopôé™!™EÄP7F?oÏÄjP9âò­"›Ág“BŠŒÎÅÙPîŽô;B^QO©“3ù¿*B 3³ƒun»$·ßIÆêÿŸ_Oeþ`Ô -˜$Àß`‚}-9Q/Ä¥åM³e€ž?ØÁÇÉêÒ°µìhä]Š¦bð¿ ýé»ê«_ê2<ÑøÍ–Æ+ìtª°[Ïœ±ˆJ¡þ©O@¤%M‘I‚Þé t¦µØvƒ†Õ\¹/bãÑÃòMVFÊ05ÿÎ+kIå2W9>f–}©· ÐøĶô3t‡¶«ÿº¡jª†¦Ã|"§´æôîÖ -ŸÇÉ[ÓLŠhŸŽY³)Øo57kßþ“#%H’\,¬xÎ|ôs¯sxí¥HžÍ†|¶;`Å vû%øÚ¯T[ícÖ]ï‚eŠ"G—Ujß«„yŠðtvxÕ:udQ‘uZy_²Td"“ª£b+çÁO†]Øl¯xà'6wòã6X²C¿DKOÁ‡f›(g@w]f¦V™ËÂ[ê~ëŒ1Fùé^A3v¬ ÇâO›vÒ¯¶2v -zúåT¸ÞúË0ÙÝb#ö›[›zyÏ’Õ$e1¬ÛkÕ5—dRAì`(Å…@{=yW>¿ðˆä>ú‘¯çy@æÅÿ¹Uáú;”œ±=ÃH;Çc{–ðÛ3û0´ü£^Õ®”)Õ™-{·O¹°OÖú2R¨Â´xÈèëˆQÅôwBgБâ¼ýSý»ž›"תl›bðöz;¹±˜IyÕ\E×ÁËê‰pr¨kM ·@@Âe&À 3•˜lÃʉtS÷æÄ%í)è/pRÇøÞÙÀª"2µu -˜Ee’5ø+ÄÙ°s§Zò'±¹§õ˜àçbˆQ²ôð°SlŸjÅö zvÞ€â~%.Kz\N¡Š„çüã÷Eê,ãeV2Ò=Mo)-JcÇVà¤:ÒUÙ2Ѹ>É1ˆ×È“"¿QWº ƒOýõÑ‘4*Ozûº.c¸ójc”«Y&üßÜØØÏìê=ë7”Y™´öøÈðê,A5nÊIßFŠ•/œ?üÌŠ™á ]as.´N/þCÕ»tÜýH…G50x}eb9—S&ùœ¬é0år¾à«J§H€‘ôN­\¿?^4'îœèb©É»ÏÀ':KÒ`wpcÏT–!ÜÛ_ÿ öH˜°øŠ¹ÝŠ†‘óþ{–ÅÚ}þH¿mZto”àÞê7Ê«¾ß‘ŸQžÇ·¾Ùbi>ÜœZO¤§ „Š“dºdFÕ¿cc -$"«˜ |ðhJQvB'\³Í%Ì6Âä²3è¯J)A‚g²+TÂò‰ªÀî§ø¼†ÊrnßãLì“O™ÁN”@µEzçHr$©d(|º÷Áµ*zˆÜtiF¾ Õˆ›º&«Öþ«Œ{Ó5rT[°)C÷ =t†<¢na‹´€ï3å—³b«m ~WåÒ¯Ò-ÿ¢-ã*_>Góe‡È¾ºJµö!De:ñ‘1˜´‹ 4Åæ*ørkd›«Tý^ï\ä”(^”å·|a›ÊuØÝj“íË•û‘ÇNø×–GÁÔß² ‚Óh$ èÇ™¼Op—H.'çHã •Æ"&+t -Õd[øÍZìÿÏ—ŒþEßÁ1Éøktê±èŸ/È”’Ë7ï\xßY -hÊ^IJvh>üã\/µ?1ªX½ ¶Ç½þnyWlÕ.ÀëŽýAñka«i»³Yè4!@¬ž.‰Sø§Eg_»ç’Ž;Ûâb$;ˆ ‡ëÂótO¯EN,×@ß}Ë€¡À°ù¢g~Ÿ ÕŒª ÿìÓf,ÚtäyÁÓô–¼yËV½Ðc) ¤ðävŠM‘/ã¶"{i è~?pÕ·uŠCùMãâ ÙD=Þϵ0íŽâsñίŸSÖ΄V"å'»„¬†B &ïä·!©U,)úÛö8®RîÞ’¼JRD0’õ˜]¨<±M£r|±98CÙ׫NnŸ3Œ®=Cøl·âÛ ¬¹?×NÛ©Y$£õçÌO6­¾f¥;çHÄ2¶h,°èbþ=&qfžN¢é]ŒÜŽbt¸íÑ)Œª~±ƒ2¾3ªØÈFG?‹ì¼ˆç¯[¡PöÝ«_²Nò2@´kÕ -ç=‘ûC:•æ¨ÞÛ‡uVÝÂ%Oÿ^øðí"¢….œ-ٛ冕ÅK =°‡¹G,üû[{uscˆœ–8`ÏÏ=ýŸ,†aÒ… 4` ÆÅ ú>,®Ò¶Ö!?îòy)ÃéFë°ËåðÜîá„ 6áò.sv¼¿×W«:iAaQ±Ãà²$gŒ§õp¬$~ÓɹPKx 8IöJ«cxîÈœ6ò‡Í¯MæHkbŒTþ':ËX¨ £¤ IÖ°(ý¥t#˜+Ëd‚Ô¶dó‘áÏS¿¨¸ëçTOöh†¯Ã¬tÙRŠ<%¢(•Ð^Ì0ƒ.9u¯»U€˜÷ÒŠo4jµѾ9fyï)œeYgSÆ¡’#åKçÅÚ)«šàAªÆ¾‰kW2«Ìê1#áÚE~Üì›—‡‘€"@q´¡Ñí ¼3ýÍõ•Ý|aTõçÑ ²õçýÜ=iï¬Péi~‡ô¶!zå ¿I·&;çXÃÔe”eg¥8:¨ÞæKäÓª¦Då‘K[h¾$Ñ)Zd‘7Ï’–íÁmQ¸õF*TÕ™<ƒÀ•çãDMI ÷%’ê¬w¨}Ö姞!‰zQl#9Éñkãt²_©¤#åJèôn}ƒcy6PoÀ Óq_eÝŒñU¶]6-Q -±ÄÕÎr™}—G~D"ØiŸfì=¤öóåºÄzиƒ“ÒhΚ¿(±0ÐóøEÕ‘çë17MæÔã1Zͬå -è-óÔÓ“<q­œžOvÉ™/$«ú—¶#9æuÀÙ®ywÓ ”}w|ê&ŽÏÓúÇ{×?M - –±Ï~x3Ï L'-@Zºkv•hcîåQ Ñßž†JˆˆQbù<¿ -w‘­q¤žÈ$vßKGš¹è¨„¶ù4Ý[ ß´g´<ôçæáŸìa’éÒø4Ð}×D+VWFº].ÈÙÌY3‚8:Þ­*£VtE§;Ôa‚£Æzv âäÂŽwâþê•žúT¬¶ÕƒU·ðÊT³Çd¹,lW³Þêa|‹h6*¡úšÿíA»TÒfÎ’*”•*òþð!#ÞÔY‡Ñ¬¶ù} ™©爳ܒ@ Ë\ÖÛæ mÏÈ©õÜüÍ—Ðh\‚§ÅÃ0jÉïzôÑdA7y,¾Y‘‰õŽM5?̶ÀÒí„´™¼Äðï•òa õ1@Ñê5~#uñÔÖ ð'µœYá! -5 -¡Gí´ž ¶ò -êN¨ /?|$Ŧm§®µØ<£¾$(Ò [ÎýxxGµÊt„Që¨WâÖ˳uÜu±_.3YôNò&ÍŽ”£3ôëãÜ¥OÛL'ÔŒP??赨ðÕT!Ã¥¿ÿQž2ð¾B#7<.*zÿš¢¹ÎWSá®6zÂçjÃQyºtˆH h´t«p1ÓÇ-Y£¤`ÑÊßòaÕóñ9·³Ö<‡còÊ¸í±¦½lXôüT"t:ój˜Y|… -ùÉ,»oêã%þ¥Ý|å.' õ@qÞ8Š‹¥;ÁÏ;Oƒ˜"!L’LÄpëÚ42ð»ûÓºKG||mHƒvÚ®Vka›WŒ£Ìè{9 ¦nRgÏëaZ87͈ºŒ,ÒKØçÚÐê¯`˜vÕ+ѯÊZôvÈø–˜Å^(!ñ|øÛ¢ç~†}Mr(îéÊÙîY|ÙÅ~v,§ ƒO5í³¸¤·«ÓØ€@ïÝŒzªé ?|1òá?º§êŠRâT*kqMèÜ+pª^ñ\¿u PÍoCàŠ½zž¿$Åt@ò[àB-ïE,ì9g"Ù#£.º±:N¦ßú=¸Bœ*×ÝjyqëÀl6Þ]{j?Ê"AsŸNŒÜ9 -p¿3úù¶ô4}|0IÇ•çÜ›‰Ó±ŠõͯHöûê¥=ÍÝY©É§ÿÂ`?ö.¼5‡=¯ØP?Ÿ9<¯N›¥;Içq×ÈW²s1nÙ„&mèÛÁLÖ§_&ÿßczÙqâ9lÁÉ£Øg^[Uz(ß@ °ï™üî]øbžéõ½|ŠÝæx‰LB=öÇÙ”6Wé€ÀîûÍ*Gçt.P/6œn¼ª±*Ç|›Dï¼ëäÑ'+T%^–Hho'«‰ÝÄE¬ÁÖZÑü©xøT*!i¦…ÍZ±w2l°f7ƒ*VÄÈš8Ÿîá+ÌzìïÀÿxŸâ67HÿÆ0 -bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ -endstream -endobj -2241 0 obj +% 2175 0 obj << -/Length1 1173 -/Length2 2916 -/Length3 0 -/Length 4089 +/Producer (GPL Ghostscript 9.10) +/CreationDate (D:20140329133927+01'00') +/ModDate (D:20140329133927+01'00') +/Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -stream -%!PS-AdobeFont-1.0: PazoMath 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /IKXQUG+PazoMath def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 165 /infinity put -dup 229 /summation put -readonly def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-40 -283 878 946} readonly def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U -nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ -s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× -‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 -9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, -ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. ->Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH -ƒ$ü-UÒÛÊ3¤³# -endstream -endobj -2243 0 obj +% 2176 0 obj << -/Length1 1188 -/Length2 2740 -/Length3 0 -/Length 3928 +/Type /ExtGState +/OPM 1 >> -stream -%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math Italic) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle -9.50 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /DUJUUF+PazoMath-Italic def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 97 /alpha put -dup 98 /beta put -readonly def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-70 -277 902 733} readonly def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û -…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 -¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ -UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp -‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq -1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú -T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: -wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ -AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V -6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ -endstream -endobj -2245 0 obj +% 2177 0 obj << -/Length1 1756 -/Length2 19614 -/Length3 0 -/Length 21370 +/BaseFont /BNRUAU+TimesNewRomanPSMT +/FontDescriptor 2179 0 R +/ToUnicode 2180 0 R +/Type /Font +/FirstChar 45 +/LastChar 55 +/Widths [ 333 0 0 500 500 500 0 0 0 0 500] +/Subtype /TrueType >> -stream -%!PS-AdobeFont-1.0: LMRoman10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 806 194 0 -%%EndComments -FontDirectory/LMRoman10-Regular known{/LMRoman10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMRoman10-Regular)readonly def -/FamilyName(LMRoman10)readonly def -/Weight(Normal)readonly def -/isFixedPitch false def -/ItalicAngle 0 def -/UnderlinePosition -146 def -/UnderlineThickness 40 def -end readonly def -/FontName /NCCVYE+LMRoman10-Regular def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 91 /bracketleft put -dup 93 /bracketright put -dup 61 /equal put -dup 40 /parenleft put -dup 41 /parenright put -dup 43 /plus put -readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-430 -290 1417 1127}readonly def -currentdict end -currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿äŒ¥?ü‹(ä›:øE(ùqÞÚUé[‰s½ $ªgG '“\ -wšÃM•ˆÏ‘¤s¾u¢IÐC'žƒêµÑØú93ó|Y@TÛ‚—EìÛÂè—k$:™mGzR›†g»?·x= w;•*E ›¡ëJ²úM8Í›,õuøàý²èZmYË -þâøµÙ`Š”n›ë¿.Ë£†ýî/J -E:– €ÉB³Oà÷/g^Mj9Z6ñ¬ïF脨0 B‰KBÕˆ[—°GÓO¿rEÞ÷µå符õY8ÁÉà6ñ¹¹n¹XÕ”°*w„€FoÜt8CF :ÿg6}dPâ§Ék»©™]«!­ð$ú¼3h+Û†^]â;J˜ØRÛ*Ç-uCí4È⚈uŽðµ6Lj=!;Í`‰,7TàÈåìØÍZX Vʬ]w)ߧ±ÏÌɸ)Á²ê%NµLß±‹VÙŠüÓ’ôÚIþŸœü”|5ú…sBŽÏMedO&ÿNg°’$q&äàYשA Øuþ­(†@HÞV¦qûÃQyåï?>&_Ø@GKf¸0ÊZ E\¡¯¾±$ÿ3e­‚LÛá -°Ž:G(,æ fÔë‚Ë[MÆÜ]l¾n™ ±ô¨uEäÖÓì~0¿Rø÷š‡tö›»^¤S Pêþ–¿jÀòw¨£Wv6ä™ò!¦Ýé¬ -­Ðï‘1²nC22OÕœQµS ê³tyóžn”åG - óýµ¾Œ}=_÷Ž¨ÊóÎnŽW?^è‚2I·=>œÄÃ]ëL£¢‚‹-‹Í¬Iô®úq^ ͘´ EM -,|K93¼¬ðQÒbÖ¸Z×¹pu ÐÖòPÛ«%ÃFùj`(¡m-¦>¥ĸºtGT‹ïf• -ëb0UAã¤xð“>±¬|ïºz40 -—BŽèCGÒ¡ó Œº%"èânHè¯â¨#Ü•· diKs¿öýx‘²cî³"ÕÖHc öAå2Ÿ·¦áskÝ6¢.ab?ìÀCGZրݣêÞ~côc>U¤Ú”!«U ·ð…Îìæø‚ب ®Zl¡p;ÿ@6CñÖþá‘ÑžØOå.©a‰ÞˆRÙ&‹UÕ÷ìÕtºA’ó•²_Kã·Éfq -á(CŠÿ¿$gUà^½†«/¨—è"z ×RkÌf ÿž¦vPGÃyQ”}ƒiòî0Ïñ}ãÄ*‡Ïí+»z>³šnÓ ˜ˆy!2XÁŒô{”Z6’”ã0Ŭá‡Wë ZîxVêŽ*ü2'PÔ§ˆxh}·C}—«Bºû—²â•.†ÈŽ”ºp&…îj…Žÿ©×·ù—dãqŒõª×â'gº¶0ˆéù·!gzŒ”$Í…AÊ\/=Çj‘ÂëU˜EB·ÎÈÏm–/ºöðÄ §ÎÖy²]Â"Q²5Q.Žš_xÕ(çæº]ïnõ´R©Å{æj„Fæ.6Á‹SµÇå0&‹M…P!>æÞÉô>¾ú¾òÇ’Ü¡Q°Øá±A&%_¢ÆÍ¡¢°•¯ß ~æ›eài6œSËܯIƒ_1pº×$€$~á<À-’.Í/¦pY7jU‡Ëcd适™ÊM“Tj)9Z[æaì -ƒIjðŽÁàQЖÌ@é1¾°tªž2»ú6“Îh½e>}[ˆ’E»fagŸ~ùg¯$íP81lÎÑ_ÿŽh8é*îðµ5îCÑÕ,ý áUwF`‘àeүͿýå;;1"c%¢|PüPh\CMNñ½‹ Qn1:ü .«hÑ+±ÁUe‚w€5­¿Ï6e–õãÜKì0k‹º(@çs¤ìQ-rñ¹­DÉ%úÝ}òzz®®RüãÚÉ7ùušÌÑKfÉÒ ¶1óú(±Æ¾Hµ¹^PÁ(ÿó ôB'vhuŠ fgÀ›ó!ÓÆá±› ¬š>¡Ôgªã¦‰ZLºyå’ûM«SŒ({º’÷ÔCªE§‡]éûæ;ïþÇ&m±ûP†4 }:FkR‹{˜÷"¯KÅ ;\Çc¡‘/¤[ápUÝ)6)gÔsô‡ÔÁµ -„.Œ -wçøʘXóÔ¼Ï68…|%Ç;xõÃ_ðÝêÿò¼€jA÷ñw(¿šdŒÿ—BsÑŒð¼é’>„èú~è>‹­bÛ þûµa™‰5s8«Û÷èݯÿÃÐ>ןqˆ§ î!/‡ßÑÇjWKŸpDzÂ¥›Á™ùN=0óCÈ72K™¿¯0Ôër¦|]´*LÛí­Åø†Æxå\þÒ¨’ëü -üG:Æü—c{7&Lš3ÛÊP‡ÙàDúîfº$FV‰—ÒeŽ‘ü=…X`5 :cZ+ˆ2a ]ê.…D`©“KÊÇk^%÷ÂIh´MHžŸ—/F? A¸]bu¨\Ék)¹šT¾Ÿ¸@ú,³¡ÈØö®d[‹ñÏ¿ÐBí®‚, Hh«¤ÁŒª^Û¯ÏI±±*ˆ™qjT‘qûbx`J@̤HIæ{…¾€Û£;§qOÒ]ßûTe„7”xwy÷i”CåoQ.<èÈV¼ÓYx}½ -kLÞ‡1‡Ú†ÒÁµÒ'mȾ­ZzË\0©çž…Ë‹õ8FôXqàŽÕÝêTòt-1À¶ÝAºˆrz€†–&‚ -ß"iå/3 KÅKÓ¨÷å ÙŸ7bA-ÞÄ -œ¾Ë÷y“²#ĹÀWMN«ë¬]Jþ—ו¦ÀU *É;.Ï ‘ %wB©¡åy;h¢"1ӡ환%NÑ©p1ú ‚Œ‰ð@+VJ–ÅSƒ€).—¾&µ˜yš‘õ+¿p<l)Ùlw†ý¥?Ê̹”FfG•òµ ~r®#ßýÍ]%?£ÓöLh0R"1ƒY,”1ªÌì´¦ˆ`H+blb„›¶Uû¢—“Š<˜nÑ[s {åyA$ºÁÙNwtú•Œ&Bºˆ!L‹3e,DD12–r¿T5ˆ ÿ ¢Hù¬í{bLÔåëe/wyBQ~ªæíÉâÁÿOžQk6¥ÐðàÊüºñÂ$+æåB ^<‚HZ°~“ÓNp¼þ¬å#³j*µô¯gqWkM6z¥±½Ã·Ø2‰w¢õÙÖ8©”¡ùèýTèÚ|JÄÊÆ,ܱJÖŸUVzÅ%C/•Tü­R(x÷j‡‹Ø q?táÐhSÜõL陼æB\j äò¥Ei¥cB ßgŸb £š=e¨ÎáX2)ƒm ØÊ9 ý˜odšB°a%\“ìÙ¸Ü *sr“ê„7ìzóE±ë;~‡€ðPØÈÙ¨ê ѽ„Ð •Lù%*DCî̯Væªpdmô™›öÿo­Põû›B¬­6¨é9OsÉE‡Ríœ"(¶$@A.6'y[)GG¬˜`Ùšqè!ØùfGŒ—õÓ(OZEü2u[\îÓ澶-ËXu[é]’¼ËÉÄ…üe¡[þ£@×$@ù´¸zýJ&„ûäàŒíU, ͸ -Û«+û|äï¥íØø½ +¹ËF– -‘Ž6ždnú¨å‘§Ô[°E-x•þÔ»‘ïÙR¹,*[c—ŽPÇLCã 6'«ç»µûøÍ~ô8q!÷.ë:š¿÷©ÄkS´kúªn98@Ì?-±×Tùt¡B€Ô¬™Æ×Eš!3`yl& WAÁÑvïËØ8æª8 -˜Wç2¢4åCqMAÌa©Â·½qqYqfìžžœâÓö“õŸ¯„bۘDŽ5Ÿ(‰ZÊ$hÃߦ‘·m±­ÜÞ,Å·ð,ï]ªx¡óNõ8Û4 öøtè»G—= ØXv´Ògkñgc q¼ÜdfÜ%Mž› SG—øPïm©«É,,ÆÚÈî¯ÆåL ²åŽAvŠ¨9l1ð¤Hë€`™Cø⃗Æ!Tà¹!2RÅ9QN›õIuV;¯D\õ½ÖGCöhtAÀÚ†‡eS6ã ¤À[2ÆÑV$¨<¸oÄÚº®~ Òro1U>&=éþÓ³ö¸‡Ñ%<ÅìÊhh -Ð*8‰‚ƒeõ”NåakU±u%ãvH²EDÔÐÒŠ58ê‰võ"ȉª?H‚}Ù( 6Ö˜s[1O=xZ1ÁÏ[$Ñ'ÏÐ!Ö„¯„«W$†ê?ÒãضdsÇHˆ» \éfÖB–Ë6ÁEÌ%øXãKm'á:Nw;b%Ì÷šA5Q•¹ÑœyacP»)tLq=͘F.’ %O -¼Iˆhke¸ÏÌ!òw†™¬«ï(Lö<tÉÏl%"Én…Q´)ã4a -iw+ 2bgr8%#ÃnxTËG&yû«ñß1Ño¢•È0LäúewÕÈz¶ó3áÂî«Â -i„¡e9Y½o¥“÷ò÷'ºâ}zf *ê8!é¯ï6¹¶Ôï8S´("úÈ,7MXJ‰ªALìÎÃî©…ÎI1sëÚ6$)ϺÑøjbø¶ŽcÞZÉ͔զIG™'`þ#áÜ|ˆ5+…DÝ÷×bm6›iæ¹Û>‘]ÇÁ,2¹ÿ“Jó ÖàŠo5@|JK6!CõÉL&dxXñBÝ8À‚p9™j4¾ [ú™Ù‡èGtö´bú.Ô/ï _9"Å:Nªx ðèýùV¯ª)$›®ÕúÎÍÕ¥þ»tùV5è©çû4jô·°ðCYÈ­§ü·†Uçï-ÁÃi73)‚IF27¦øñsÓx¤ƒ:¤­ùqdAÃÙºXHzõÏlaV/Úõ·üDïû8š4&MÞ¬–ög¦V®1¡±Rü­¯„˜<éÍ8„Îí ì?Ðb¥ 6¸[êèZøŠ$ŸÛR ¨ÖvƒT-Á|âî0àV¿ ¿|Ð?Dµ£…7ê•Fê<Ǽ”i;zHèè­8Ùc,o“H_š‹³žK" oo%££&T€»ðT{ݱߎZ¼ï\Ù=øŽ`ì㬀:ŽÛzXÀî Ú ©›QDWn®*Ry£Ê£çW­^kDÑ!&™Ÿ§ÏÝp`|Oú*¾—W^¿k¸ˆWn\Ÿa^È0§AzÓk­@ñÚß66¢‹zOÈçË¢^ƒcb-!„zp$‰²Œö'he–÷WÅÁ}Êþ?'Ï˹Yp˜•2þ¡íÎü¸xþÌtÚÐßïD;9\”Äwè{d\’w¯ŒŒþª€*§VÒ•ä²³1Í }¥½÷¬FTîÂÑ/¿oôs€G‹Sú ÉþˆyI‚ˆzüÏÞxÄÙP¬OZãMŸAôÝ'FÚ·jf×zM†`7”U»˜µ‚ë*÷…0š†»@áW·ØòBÛßX€3Êo¹Ê•:c6˜‰Úø£÷R‘ôEÝÄ!Pÿܨ^F£θej]Ó¬¤!mð®=Ü¡ÙPàñ:4®ZIqõêvknåZUêûÓËšË]P$ÏT¶ËýÌØ%.‹þÔ3¡Óÿ‰8‰ƒå`®1ã!¡MxéRîíŠ ‰½š=ŸåN‹­ó#xPtâð#Ï&Tt·+i~®u“$Ž­zÝY(ê=ìÅÏ>T–q–ZÈ„›;ˆ[}ªp­ßa€~ô¿ Ë[pî‡ÖsŸ!c yÞ;àôÅ.e\éNhôéî]"óXˆRñ€‹‘’þ3å+w^Yë$àÍ­’÷a³a{›ÍÙcçFäSŽu1\ŽÁƒ,*ÛFD­ý6, ËeYÃÚÉ VOªñ~ÿ<‡Þ¹•5å0„Þ´Sc†YNr¹t¨E{óÖaœ°Šç,Å»:4 W ¿¦\…eXµÝ¿+ÆÖßWiæôÝ6çÇ :ÅŠ²ß£íÔ–ÁŒ‰tì˜ \1O|å³”åÄh”<“¢"­eøuÎ ß"¼¬¬k(Fî 9õ?ƒ?'y•Š‹xI“xCf&Ëó,»·èfö0ÆGû°Ã£¡^Ül‡5\_|‚*‰æõÑm 4ËIžÈd²3$)Éf˜ÕΦÔeÌžÁd<‰ùp3W¬KàNîmÊB˜‘' KÞ×<2†‘–§ÁxÓÑ3œJÜ‘j¦ôõþŠd-¢åOB$ìA9ÙáVtËÍÁ!- €¾/EJ}†ÐÏd¬[ÌyÚ{öÐÚH/ã8ÿqb³Žpí¦w?…àjù§¹Y¨Þ¨+?¯=Œ¡—ë²ôþÞˆ‡Fò›#¯N˜:îáznmy.!Ö‡¸ýA6q#Ïîà,Ænc+âžo -rCR²ß` -"h³ZSÏC×f'Öƒ|ë‰OÅJÑ¢Þ4qmպă0¼á×¹­‰ kÆFÅÏ›$y´çöýT÷ùÓJAê$碬¶e•’˜˜L||gBø|ÿ{Ý$·W“CÚ^UGè€!±ßÚ·‰¬ÐþZ/e‡ºj†³Î‰jž‡$,£:»©¼ê–CŒk¿)µÏ8SJc¸ ®¬ñãêŒzžÅÃëÓUM‘ùNðT§þû¬f»{¹·ÄK‰×ÏS‚?O~Ý¡8RÃR¾}Íó¦™Ô@‹“\aI:^·Àlââ†ÐyÛkH—@—¤Ý".,Ôÿ˜ÜyɉÌÀ†Ê©ûo!TïÚiâSPz8çC3öF.áÛÓJ¼·tÃà ^ ¾žâƒ3xv%¶£ ªn`ñ=Õ 7ˆ"¥^>hC2)+›qLvW¯ -g–ëZÏÙ­㦨̰ÀôÅBäƒ$é£@®Š‚ñvÉ…º&ÝvP²Š2o‹’ôát›8ã~v8ÙÍžc»d_MNö.¿lßÑvSÒÖ¥Û(ëﻺtÉW:HèëµàcÚ'l‰[“)ßUžä÷4–ýÒµ‹ G[^@Á^r\Åò‹¯ÑéLý:)®zpÌjm4ÕÝnx¡÷Ñ¢TúÙñ%²Y›Y¯COè…ĤșŠ ­b‚Øܤ!Ic=ô±¿Ä!Ä€ÎÉ?3¤—ÇÍZuv£ÞîàDI6ž!u±Ü¶ ÔM±?Çb5‰£zùp$EöÏìÜE¨Ùm{ƒ<燑 ˿ÆÔ摪‰œžoš¾.'W@/•|au‰û¨t’ ¯¸˜‰)muP#4ü«Ñ¹©Òß¬¤Á2ñðP|ˆZŸ9#^†.p×é40ïîôÊAÆ5&Íj|$mGô.1ˆ`Šò8Z@$9¨Õõ²Hà!Rá÷iŒ²Áƒ6©'ÎÎïÒ‰G¼»É1“tânkõnÌaÎô$¥Nb}*Ú@[œ´Ã“xB#Sí.ÿL?ôÀ˜öü¤'Ò¤S`©×‚vªŒz¹×Ö·#dº¯Øëf0Ì‹Káǯ—ʳc%ýÙñ¸ <á€dà!šl:ÀXKW0®m¦V—)-L%€½¦kRYMX Ùœ|,˜Àyž©.™B8ó¶ꄉï™çpî׊–Æ*ܾÛæô?ÞG.Q¡{åáQ&³;õ­ÕùÌ¿ 'öç!}·ˆƒî ¬ôo¹£/—܈í‚D-¯;)ø+lÊ”ÍÚ lT${Ñ‹zO‹Å”a¡NÚx¥¦¸R‹Ÿ+€G¤^»óá$:àÅÛ¿®ãÐå²Ñ‡ûj¶»}`˦zRÃa0› È—rmÆFbP¯4'ã#í´•š'0ç¨âô ™ ˆß¡š>Î:!C穤¯ýqG PjÑ]ŽÎ6yâROFË©éX¨m¶GºUß­tK®u‹GŽþ\»«Q8Öä«©:(vüIªe41“ù=ò9¡)’è`È™ÈxÂ|`ZÕxüŽ0«ÖϾöÉH©&û¹Éqáá å¾ü*@˜çp  7© Yy¦Bï͹xÝ¿¢™¶qß°Œ`ÁHšÂ»pÈÓHÇýÉj¶ÓÄX »DÕÿ±ÚÖ×µ`1’åéØE+yÿ88#¼‚Rõ}Å– •  û~ LÈ…"ðÿ¯´*¿nD<ÁNXºBŒØr%Çÿ(ýÍO¸˜ R ±¤ýd’úókðpEÖ+Úë€ÛHDòÆgæ$²MDí=?v(Í-Œ§¡±3¦‘¡=N½•­Ë÷rrËuH³aÒÎ ©¬!¨s¤¬»ä¾™Ww`'K´¢Ubúó“6‰¬Ò^ê*a%†~õ#ÂÖÏ'®(Q³ªp…AÄg8¡àÌÌ@@[k‹ÿ,2¢£ŽS“EôµkŽ>7 Ù¥\BŠîUIÓ¼£©”H0³L‡©.G³ ñ )œEæÛ<ŽžíMÝí ,£raá0‘ -]á¯XÊÃðmÑø?¥ FꛢcR9|=ÅZÍ•'ex‹WÃ4«-¼›rÃ×Å›o2•ÃkúƒÌ¸á[,÷þøÉœ)½1ᶪ¸Ÿ ³›¨ozqw‚÷¹¶à{]ü%ö ,pëˆÍç< ‰.>eë(ļydgÄQ‚£ý2=\bÙÉ8Z .xÙç««7­%M}ÈïÕ¯jÿãWvD ˜dçG¬¬…|D[ÜÕmh—ó|ø×çxðgúúàîjŽæ£»ùÁRLO+H©oâêå%ZF&Ÿ÷'ã`}ýŽ5+…DÝ÷×bm6›iæ¹Û>^­ÿWÂú¿5ÙðtÉŒm˜b°©‚ež†“D{ùýM§ë/µ‰ec@MÈH¸{q¸8‡B<ŽÀ•ïžB•hFÜ­ÓÔ÷½\‰÷éXµ„)ƃ1â…Ùªv‡(å£@—õßlä|÷Eä/ò9L{'\ðã}̳¦­=ßòõ|pI:ÿx8l¦ºsÛÔ>B¥ÇrÔÍ5)ٱģ Y—‡q¾]óÄ$&eT31ÚEŸÚ‘§ˆhÚñÈV+/YƤ(ã¨X¢–~E>¦¬š¦<&rïy|kVqÕ6Ò—í ¼uÍœ0éPÓÁÕ}g¼½ÄX´.ˆåHÒ.¢{aýl‰Ö[óNf4å0w kihxàŽ'…³œ¼_3bßÿ'QJC”z‰a â?¢]Ð$!:€‡ Žþ<ilì›­áÙxeøÂÙµ\KØ'{Ý.†‡¦¸Ô?ˆ>yK>鯊\Ñ -4~Ç9£Ÿ¿ðf+“² cUÝ$d¹íšïMejÏ¢jÃÅS]©6!W#u:$Ñ ÛN“ÆÔ•\Z?äžëoò‚[¶§oûÔöä½Ý‚AöŠ{ÊßË=$v>–òÃ…¹ùÃN‚ð.¸È¿Ÿ˜ÿß<.­ Õ­—å\¬ -åcVOÁìðåÈðš& üçÀ@ÑuKÀ‚·\ß•fšA•[,¼fp˜–ÖŸJìÒ~J%÷e¼µyTÄËZšBÆÏn Ø ly4D¥¢"ôš»#¼aï;³=Ä\d¤Qü§PsJo§]»„’yHN‰Le(“3Fªszˆ©É, ±K²Øz£•ïnŠj–pSäë—´€(^8Æ.þø–ox6®FWÌÉ Tú^|ÈܦBÏ天Jª¡SÐõõë<¼­èË -YXux›Ï—‹,#8 -4’ø~FšJ |Y&Ñ°låç iòB€EÍ`ž#Î7yb•·B O€»O÷y¶¤e²V²Ä;'âŽ%ãN6HDð¿¾PB`‰ìpq?QqLƒ\œ•Ö-€‰ä®{Fó;:‡=3󣬦‡û³ô*w»Ö‚;°‡í®ùZRE— &*TUrüÙöM**=`D“±ÂMYâ¦õ…XÊ'N@qxäæ¥?ê”Eûá*˜Ô›‰]¬yʃ?Üçv¬ŠõÓ©ÞˆÇÖ¸B7XmÔš)U¦tÆ Wtç~ÒNbõ¨]ËL¯•¾‚Ϫdà!ËSì2 -­lìÐdüõ¹Š ýóÞÈ­I3òš:ORB>¢EVp;'vnNŽ>6ùØK‹\qàëñ_4ýÙ»N’U–þMÚ“lÆ%¡[.ªê_1ؘ—‘%Ò¬4ŽÊH±Ñjw¤yeŸvhºD¶j„c®0…]8ªÐuɯü`b¬Žû9£ÅMÇ&Õ¯Š±}Ñ :ª~¼z¬é®•Ÿ{Âî#É£yý©÷¿¨Þ,ZíQ‰I>š`ÄÕ>ëD 6.V¿S³o0†ìr:x¡kÿ£°•|4ŠÎ¢G´ÊY -]wcÞ©u]k„ Áv©ôV—î‡úW¹ÍíÎ[åìò=°Oétw*"$ü;Êw–ß{Œ©´ÿŸçpK†é€–#ó㣮55RÆÖÒ¼ º·Ú–ž’™ó[&Þç>6 ¢F¦´#˜‰_•ÕöŒê -‹æÜÔž{b=i7fÞÞ‡5Öz®“ÃÔ˜§Ó¤- óy#tbci4Ýñ0-Î^èTH¥ÃÏYm}€%x¦¶ÙͺhŒ0A±:]øÄéT¶9[‡þXe7¢Jð„çTMŠvIB¬ÎÐ:w…؉5Júàþ€@¦À7à ¹`p»¢º„upÝ&œê9adœ ÏS(…¤•™ -œb1¡%™,hh2ÚzQ+$2%l@izɚϓ­g%sAâ8¯óÆM)¸Õ= §A‚þâ8ËÜT:XJâ+·;GýÑ5t‰…oå D+ëŠwù)Šu;C`øÞ~ºL%ƒ—Ím§bG T\æ¸ÜJŒ~7‘atðê© Ÿ„@ƒÏ•œ›œÇy‡½—š™qe™~Á-n‹ÜÒ?¬®%ÞÖéütÞñ*¯ã7š®†b{¡‚e(ƒ—‰¸äzaX ,Û[²‡®m¥×Y˜!»ªd ]’7ŽÚµiÃG^‚‡àQvĽž@Zÿã:¥3ú&Á*@šñ~nò1ìzÁ• A¸±Þ2>­¬GûÔ‘bl§q⶜åÊ«ªÓ§vvI™m²joX†¤6%Ʀw£}]ô>àþ6Þ_'¯VŒÁô,Û5ߨyO‘ÓTTÄ-æÿø¬†ƒÝbírq&ò6Ç]&…òý3N&`<vØÓ¼êì’XÕ«G“Ä M}Bg"Mu|ìõQ­ô³DÆ’dÌü.ŸE’b®±=“èD$h‘&Ÿ0þÖkÙ)‘Š)Pw†¦ÑdÂ:6›ûp¢ -J.Èã>rW•úrìi8(±ˆ¸¸P›š||”ŽnnJ mTpB”G‹LfJNŸ¡Uø®ÅBé„-yɘ—JÕ™Y~_§¬Ìã²Ð£”f€ßòá s›ÄÅlE'Þ‹1àõSþC†:T·ìFÁ Ç÷‘RÞÙW :py†¹s³ÍœZ[å‹YÀ ¸@==g~6ëˆôRõa“ÉÖÓW*ªÅZ@[ðô‚nid¡³É²Ø(D£šÿ_æ†UàÃv<Åøîaÿ$]á1êf° I“à©”L ´q‰¢°ÐD Ë„FߋПś•GB½²t+( -ï•ûI-_ï‘>xb!òijHèÞ¿9M’`챓öOîóœòßôž:š%Ig8ê:!zPÀ›QK~IÎf¡¶¹ rq›5It{²éãþ¼â‡“ÄD©‰†ž¸JHSuN‹Çf.>À›ÒíS©²Òv.P6)ÈÞø*CÖOFŒs¢N¢c|€ï É‘ÅÝÅqü³‹j‹i{‰tÎqÆY…¼0dbè­YÜãÿÇü–3BšÉYÜô%P"?6 -¾û}FrĘOð-Øe流Pz˜Aþ;,ÍÛdòÆ-†$áü¥Kµwô´Ò2¨ºj -eX¡è\kE*ÿ2(P†_?f Yä÷Æõž=ü}LO¯UáQßï‹Gä] J×ÒÊñwP—5zBuÜ9C$9<Ÿ–Šü3Úsu´ð´Òª-K°æ¦–Ô¢Ií×ó¶võ#Er¡q (àYܽ6Œ^!b’4˜„Þ.UÿòÖ×1Ä}`H‡ö½‚ͨžò=œ£þ:C…ëþyI¸CÕÜôœ³ÈÝ oXÛ¹›r"CPÉ]r¢vw2òž+6èÏÉ2¯-Ú(Ö1ÅY»Ìô(_ÔíùÃ2³Qiµà:m\5ëp = î‘YU&…xZòù^£°ˆªP²æãþQ‡Þ$ÝEèTÆd®S=”PºÛ†Lþ½|æÅïWké…¬xaÝW|œe×VÇSlaòU| …4ÐÊ’äT~ìïBÚxlb4û˜Û†˜ò”·Ú%+K«ï,aY3à$rçPq×ùÅ/æU2Û&p,Ü‚òÐÆç ðP€øz›`IMô ó”” N=Æ"(¡wÿ¾qŸmÒôBHÞf¶êÜÊj ÷+h²ÈM´A`¨+zx¶m×0% hRZ³œ‘Ö¡4A”Š¢ùÖ HÙ0`BžÜb=Ð,2=pd”M‰ë.l 0/¦àmµÆ‰ÛãsºŒœ ?ólˆª©½X_5aüX²X ƒÜbi«jMõq‰¤JWïügÏäß`£K°óÔoä/˜[Ï=”“­Ì³q}bÝG`ÚMÝ^°—³o¾¬©gLxê~!ÛqWS¡ÉñÍÆ7rÂú(‡Ro= -½((›F5‘|l.2@ÈgP#€'¹¸á)ã“—Yš­NåS“žîaïK7–öòWŸß}&gÅ -9ÐÆÎiîÞ% ÅŒ›5¶°"r2æþäaKÞ ù¨GI ‚î.ÚZ󆛾ßØ!cl§¿yµ¸À’^ȹp( >¬b …´ÀÆ7î)uv–Ãñ5©‰Õj*³Ä΃n™Þó*RPvZKI@.w»h!®9>xq<½QÈ©ÞáYkh£ÚÜþ _‡ûœScßjÞî©+±LkÅ)–6„ÜYåá?nWS yTHÄ& MÈ«*²=$OÛíà˜a5ê™™h¦Æ_¯¨@ô£“Ù¿Û›åÒM6îëC)¸Ú³SÉ"C.’9J•m© ,v"³e]*Õ×*X6ÊDŽžøù?®Û˜ÛÇþ¦ü L†ò˜M£¬D =¡Rnó]Y»—I€øÐG‰5ÅwªÎ&âU½Ÿ}9ôŽåØotÏéä<Âd2õ²=ˆë6¼.išìâŽo+87Î’»d<‡Ý”Ê+±…¼Ó|x ÷ž¯ «­~9oËÀZ mÅBûS-£k9àÄ•iºý¾d,–4p~AÚW+&T{¤t&+åÎ}(ç+ž”zÕ“´‹=Ð] -„¾oìæ -ÀÜéŒyãà5EÃÙX’UxR ðÂ]é¯Éò׃ ƒ°¸Ü§gl{ßâ4Å]ÓúŽkØ·™ShÍÐN⻦1¦\Ã(“TÑCÍžÜÑr8‘Ø´½Ç˳bíeqç¾1F…¡¶Êƈä]e;ÂŽ.{ñ:Êk;µNXrlè0Ž­y¦ù“š)³œÖ»$¦?ŠÓá»ì -bñøjù²¥³â¨ç­‰0ÉwzЫËtSK‰e«‡’{µì¡š·é9GB'süKb×f²WÛ.IG÷PP‹vßD0Ÿ=›¡mQÿîðKzõó‹!šÌ—Cãè€auLªcå&˜ -o•Á\tÚÆä(s% üDÜÊu/W€mpê» 5‡u„ŽŒ±¥ï_)CÚ¦'Ü‚ÇÏVé“rzË9ÈÕÇ ×ÁªáECápÑCyN/ãk¥¿éìˆç€ú•‡ÝÖ`9üßÎø»C‚1SæÂ=11!£ÇÆçš~Ęۺ‹4“ŸeãDù_‹(¾'Ëbß"* þ³‘¡x£Z%ˆ>ߊx¨a.]?a}°˜¸‰ŸË3Ø\”W2ë¹À·ŸhYÒçŸKOµ¸Ý$A‡U³@¶VÙä™d×ÁXV?ù¼À´Â­ãتI)4^NŪÂ×f¶pÚq+”s–Î&s}6ÿ1{H‚NC¢1&˜=~ ¡aÑĬ…ÁŠZ®é·$ð?1†]wô×OzR–?î~ f€X"Ëû2¨O«¼‰Õ/¹ê¡É•·Ñ ð÷;ƒÈ„>š0¹;n`ð!§ÒZæ?g¹±À.ÉhQ³³TºiÀ'Y.!í¤O$8²…·,ÈètßÞ,~õ³ÅB(ë¤ÒßT=š_ò5½Ý_$”œë‰©9Èk*çh¿osØãÈQÜ?1aLZ³õáŸ:9ìCæ‘ ÖN«çÃÆ+S8VöWWE^ŽH¦;ˆ†¾&R‚^ˆoJø¸‹¼ÙèssËnZ¢ãx˜e—mqâ-|2Ýj%AÈNݯg“ÚÝU©$…‚QC³êhk5ð-Ê¿R²l°mg®³Ç¡Ã½ß”ÌM¶Â.ÍõºH -èËÓ~©žaÌËÌ 91/#MMSÖL_A0§’Iöt_P–?Ž+4‰§å§lĦöú½:ΊÜE83ÎÑ$OÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:ukYµÐÊø¯âü÷ö×'´û?› -ågšª¬È« „Ë»)žÓQÍÌý2(|?òÀ¸#t+•Gº—²°â>šà›ßŽ«;0ÍO“0Nž µ]ÔØIt8³ªçú—CÝ 5üÛ¢¾ KtúA8ñ«|ºÕC?2à°‡¶˜ÊIâD¨§L‹9¦Ú8üøž¢¼üT»a-Û\¢–~E>¦¬š¦<&rïy|kVq×’z™Œ‹Žû©ök¾Î¡73{0rÄ‹v -¨á̆1ÜëÃ݃ԑ,oóZѨ!¶¾ËÍA*}j“¥|9â¿ -šé °/_Lz­F?òïò þÆ”..›ù£ZÐ -öO1PZ®ÉÓŒ$|!ð}ãLPþI÷Zê°8½0ëvA -ôT.rçdH¶Î*«%­¶¶²¯õ )I»Z½c„qï€C°-¥)—Ô:Úõ©A$«YÅ‚¶¶gn6gö¿a¿XO×ór)îÆRa,á¹tÊ{â@S jÊ"ZéEUåµY¿ g7ѳ钅»çlöó‚kævª9ùíKÎ5×pŸu#ä” ¥.˜>¿ÍDr”±ùnÔ¬[¯{ˆlÙõOïï›T -™¶hØÓη¿ëÞ -d}bJDZîÀ.ÿÔ~X] -ÝìO•Ã­g»A'X·Mt˜Äïå™Rh¯1ØQûJ"¨…(#‚ûTâ1z»aÙò‚g}ÐÙ£Ãx3kt¯‹™1¾ÀÄÏ‹Hu˜5ëbTþáR¸÷‰ú™ö´ñ•P£7äUÜ¿¯Ì„Ñë°«g+ÔZ„â’N䀣Š}Ë¿aíwiõÝ#aË“@ÅxíÛ^ -!ŒybT˜¯Ý¤Ròª<÷Ì("©ñ "kk5tf6H‚†*“ô6°µNáÎ2º’n4¨øÃ|£ŠAšÿ÷ßpe™+MVvEîM/Â1cJ6™†tøÍaSØ7À˜4"`Áœ~À8SÎ^¤Û¦r‰FÁ5¿§Z›d,)™ÏBN;ï­SA¨à¡›ër¼Ítê"æ@7ZœªREf}|•òÊ•™9 jÅ ÜÆÚG^$EÔg&¦ÔQ‹øQ ©òCaêLˆs1…âü[Ór ¯{.¿¸ØÐ5©êÔƉÑÅT¼s!†… >l:«–,¹áj$Í´óõpã±í„Bjø[66Ì࢓ù—J 7 ï4Kn‚:±Ô ²:ŒE[æïG¸å³¢™:µÐõ§Ü;㸅™›øÚ‡3R€·ÀÆrC²žXɸfVÅñȹŽ"PA:U4ø±Ä:‡7Ñ×0^sÒ£˜B—»QŠ‡DE2vœÞš–…obPÖ%þsÂÚ82 £q¥dÍÄàoTO Uö -ÍJ_ +¢yÆIa‹âÙ±á ì© fðŽívF±ò¹w“~p·!@i `Ù‡ÕïC' -_€£’yÅúÝb­ªE®ÖÛÎÆs¶»8ɯY” «V€¢n/`–>Œ³ñVÅ$á\~]ЄÙÃý²$Š­X=K>Ö¾.ð!‚)|Rb¬ªW‹ýƒØž`°½àd8ÎN.:ÈŸ–-"Ñôñ »Ë1‚^?ê;çQÝ8WbI¦‰I”¦ÿ@ì ïCÏäÀ\€Ãâ¹I¹=ÑJÄ -NB&õìÓÚêË&ê^ÉQÂ<ìT«îÉÐ"#H8ÐjJ"D“òò¡°Ñ?Ý÷æG®(² ½ž3^E¯4†à`v‹¥ê"‘SHÔ¸5ÿÐs(VVr¯äÒ`³ÅËÍÒâÁׂ"~‘eµ62p» tõ+”›A}»•ëÜp´3·A1µÉ5× éÞu@zéJÄ);Š}Y^ãùÇé°×‰î؇ôÇåâ`„XÈJ˼ñT*¤­sÔÝek\.ºM‚N{ƒ>ˆÐŸ"‘ú¦þŒLÍW§¨Éõ“â 7:œQÒÅû¥/ÙlVˆlzgRˆ!Œ¤‹Æˆû)œë0¨©•Ÿ7L&‘ÍTp-ò•’ë}4Á°<6¨PæÒò¾¾9#šÛG½+ †·P!n±ÓÙHå_àüFJ ->÷·÷dÂcM s x!…›±‘Õ3˜¢ma S®jZ˜›ÒëO!ËçuA£™F,– CS@#ÝÒZZÝ"À1¢&ˆ¾@ÑËüNÿßuá|¥šWº;r “Ð.>˜ª_ò2šÆAwVªØ š*2èô¯–’qÿRÙ¹žÿn*Ãh•À$”ñÑçýÐ2©9t-µ`As$àÇƨ>^£„tÆš:±Á)ñ+µK>¬œ3%ýô+븜œƸØØP þKø ˆ²Ùy/hû¹§–­ Bÿ‰¬„: @†Îø[$~j¥Œ{:eÙ E˜Þmòªß~@È“ÙBÁE Lü֥ƟïÂ[`äRp.,©QK„Ügj.Þ¶¯¯ôé'ÌцúÝ}z¿‘äyS~…BÅ™Ôæºdøý¾4„êÌ(º“5¥“da’<̓Ê’”3áòPLÜñ'E5šãâWàÕ¤ñù®ŽÆ[q‚½H­1EûjU[Ç&cœ~ý98U:ê¶Æý °â›ûâ5b5-c° æNW@$#¿ZTe¿BÉõÝE;88YÔ ›ÝæRJx7&4 Ÿ"ñn@J6—Ãhäàš![ä‰õâ%Å컿Ë}^Ü÷ßßG¹}‰ÜîG* ]…¶Ûe_dÙ#Ü°3Q–ÄõQw (Çüz3ö-?ä¦=Ið+oûÔãr³¸^Á¶µ9“&̯Núç ʪ´ÿÑ„ÿËîEÒˆ»Ž:²¨0â©t„8þòCx:1›/ÿfO¼á§°eÇÇzŠçöjꮕR¥ö)ÌÅš„ÝåÕÿ™]ëU  SÖ$}zÈ£îoþˆLúH5âÐaà†Ò{AÉQn°ZŽ¨¥½1âýJOǨû"³ÓA½´gð›úÓ^NUo¿ÁtӕйD* Ê TîJá_&§0Jš—°ä—úÜ¢ž¡1Ô‚™ ¶L dÒÑ=wsö­ñ$_àq—™¬1¨»NWrŒÊÞ n ©Íçeæ€GKŸ—“uñÚÖØ1БÀȯ¨ý\@û"„/æF¢Ÿ7|>ÐáR5³²Ä34A—tg 5&†v|§Q@3z Õs9\ËnÏy¤vÇŒŽÁDÞ_”ûºÃæßv¢jŠˆÄ`Fuês„ó9ŽI@Jüá›C]? ‡8¶ê<^A£ææêçf];ÑŒ§[LÀb*µJâ„ïAÿ.\”\=PPxesQŽ‰0û•ˆ3 xc1pŠðØ‚9#Φøzž4%÷A.’ %O -¼Iˆhke¸ÏÌ!÷yâËì¦Âçà¦ýÀÑZi¹›6Bò°T%=÷êñNÔÞ[ˆO§¯?\é¸m¹ùÁˆÿœ;§:Š…ˆz{':`Õe¤ϽgÌ|gu¡·¶¾ª|ù/Ü47\A ûŠÆɆeÍ~ø€ù’)ªÙ˜È‚¹URÅ!QƒåûQ`[ªyHÖå|×à0*?’:ìy/4Å©îJ(ƒ„ž|Ï5^O,MoU]¬šmÂcö=UÖBL^FÃР: -´ØË)Í#>Þƒ¦Ã £1„Ö”‚õuω®ô'Ènþ¦úNUûÍ]€´±%½+Œ?ov ‚E¡­ŸPŽ0BkCî÷UDëv•%ú}€´§Ø §lã û¥ ëâ¾(ýŽmåX"DH'Gs… ùðÍp'@ïÁ;mûÃÒ…¤™2ò\ ÆS7?.9R’¶^ue¬Zð&ïDsŒb»¢Æ­1 ÔKŸÓéèϼ0 -Ú€¼3…nÒ›š´1”Ÿÿ] ïÊÎgÝ‚Ñ¡Ò—Ñ—>a%ÿ€^ÓŒvõµñZÝ%óø¥3\7!o¿Ë{á%Uƒx.…b 8€£ÁŽÄP=?U£7DtñÔ¾rqüôN×çˆíÐC,—·Ï{¯˜3ÍJ™rºê£¬üæ qâùã­°pS:q‹òYº Òá“‚Ìßû%æo·d½ sýÌ{oôÜHÞ„z¤È¥béH\$è›ø |Ú÷Ù9ü}RCú¿|«ÑnBÆ -3ÀãC»D™aó 4Ñ“1wåêÚŠñv‘¯ãÊ{XoŒBjqߨÎÛãß|>²‹A’x$Ô÷Œ9ðDíjð<¤E“þoÆþéŽkųÅ’±Æm1JšJýèz²î]¯@3ð9Æ!M(‚ú•Dƒ˜ŸKójrMAHI¶=AŸKE»‡'ÌR\]•y-¦¿n «UüþŽ²ÖÏk¹5 WÙôÏÜLþøÒ°Ê.({í“ß×Í°ÀÔç¤`û!e0ª†Á 4mŸË,¢x+A…xb.j3Ëy¶tn…nÙTãªÙúA–bÙZWš¾Vfz›uÈKs²ÉõÝE;88YÔ ›ÝæRK9ü=ÛÎ@`hKðbCëI¼F‚[ƒ¡)šÀ¹i­Ò^¿wÛÃø£‹ÀbU:ÚÈuªVW ä¥X« ©0W—2èfm_hy…פœ~éÐH¾¬ -Ì¥-úøYÁ.ùëšÕ„“ZXgivÝÒ¶áý@–ýÊÅ› * §e/í±C‘ >4‘uˆ”¡lSPG‘0¶\ñ@QM}ë©›ñ“Ðb-£Ö%SËž³§GJï|wïý »‹³KQÉ´®z62j[K]²mÕ¶Êö>¶wÂY›ª&–Ýð 'Ùáª-œ‰ ñ¼ü˜ðð58ZI¥ÉÙ ö.6ô± }l1TêÉî$Ü_Ùßßñ¥¾ÎÇÐUªØÈ\a–Ü(lôÄ£º¯ÁËs IN*·wõ˜*öýT¸Ác“˜³Ò¬$À5f]ÙŽ&`l±£¨Åz‚KMP¹ë óÐJ;”i˜‚m“%צ‹ U6åVî!}îuˆNô¹ÀbΣqÄ|Р±4*±ØÍqLJMIÙt± oj^¢ð2 6¯%K:ï:»lå'›úO=»§Õ FN?)z,Â>´—St:™„ï6%M`w*íÊ€ #FšçêoÁÀ+_Ä®øÑ6IÂPGÕ£|Æ™™L§”# -UeêH‚Mž¬ ³Ž;þpn§[ÿ¤¤³QÌt¬¸²³ H(R¦‡‘ÚÿY™¨ ¢jF”@ÇZK¨nK)Kú×%ðÁ»ki'üÔÚ"•$ §ƒØ4¶îÌwÑc„~cÓɪA-T»ì-ݾ®I?íÓûîfgí¦¯$Ïî+˜óÛfD†Så6£Ø“†áCQR6¯êÔÏ6¦ä«V~Aþ¯ª_9&š¾šœÈˆi5ý÷²£±|dV¨oùÇ+Y«û©ê‹Ìdo97$!_S_é‘’†öWLŠwE¹«§Ùøû¢)¸uL“•˜•(~Éçt—3Œã ­áÅ¿íH60¿·1e)f{Û+y¦É{T¸¿è*m?è”æSa% R/Ź¹€×[6Îñò;•Œ%û‚Z\ýÙ¬ˆ<ÐzžÌg^j ¾Í¯óÝЪ«¨¶¾a ÏûÞŒÂE8Ñ"ÇS2Xh÷ßÒ“=_  »E«_vI°2sEÛÕPôÓ¨_ë àŸ@‹o°@€óÞˆÃej}•Zèž ¬”nü-¬¢sÆ®ù¥åðFtî:&jþ-é‡qÚ¦ÈhtsÀFq g”ÖêÑpŠîCñ o÷Û­8Єl%YvZ£{¡ÑÂÙûní0 -^©D0yK¯xYUŒyŒpÈx¢9*„ !^µsÇx[…ñ¶vxØãÈQÜ?1aLZ³õáŸ:9á«56{MØvrv_ÛÀ&àDª’N[ÁÜáú$9󯘛Ù˳¾ð‚eó×gñR!iæ L¿Xnf'µ–‹[ÆÀ׃¦ÈžÔºÀÅ ÝïRñ!™n$ƒéÄò#< @ö¯†¾—øÚ¨2n±¢´Q/j µæ$;(þhP3ÇáØ-Õ(ÍØÅ 3às!H­6=@üuë?”ýó§0u|˜!í5©H€܃L?%ZN:ÙžND‡œ•F§ÇºÞ+Yµº·Æ"ùt£×âžjÿ¤4·wÚqt(*µ]z–óî Ðþü‡Íä{„Øôò×ñu£è‚Áö¶à $¶Á.YÿÿqÛD²€G•£ßô<½$ðÄe{Óp*„ê7U–‚óÓ1v|ê/¸JZÌIOÉ Y!Ó·ì±öAk2WT<ËûUŽù—A‚•ëÇŠÔ@j ³ÖÁÆC* ´\4lCµó%—»ŒÒ¿cÚÚežqñÑеé$ÎoÑ}1ô‡¡øgܤ~önƒ+¶5-ÛuBlÏ<_YªµbXjr3F³ÖñßL0F*)WPg…¸ ­QeoرlHoÑI_–B`mæ]˜zñ ¹cŽ,àn›z;’Eñ;\¡Ñi>0ó$j5Íg¿„¡û©û¾$‹^æ.Hc =`h)e$¹¤—Ÿ¦ÿbE<]`QË&ôŸÎ‘SØc°WV`´ [u‰(³lå»J;Þù Ïó€åwþ´ÆŠD‚Lç,i©+G¦]1 „)ƒ „ßž Ï0‡{à g$*'|gùcjNí ¢ø7¹;Ñ%¯ìµß´±d=¤Ü4¡{cŒgÔzéæâlÁ'à'·ÖÝH3LY,k$ 1Ä~ÞÔ…§¶jOf;`§|^1j*=¥Ý•iÒ_˜›¨$¶‚³õnHͽæò%us1ÀXÚ8‚5^³¨¹ü¹©„R§6¤•>ÀmIeí¦r“îE„ú —ãÅ< ¤@¼­'[Õ}祠Ÿ˜Ô¥ØãIƒ/4>æ(«Ô„:ëo¤Ý”+L§òK  9'ìQܬµ$±bŒ0Øff4{lS²›„GõþˆZ‘od½Gû9Jᚤ¸y2—Њw³Ø=Lã£Òw|G¿¿q| -endstream -endobj -2247 0 obj -<< -/Length1 2854 -/Length2 29958 -/Length3 0 -/Length 32812 ->> -stream -%!PS-AdobeFont-1.0: LMMono10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono10-Regular known{/LMMono10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Regular)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle 0 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def -end readonly def -/FontName /XKYJEW+LMMono10-Regular def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 97 /a put -dup 38 /ampersand put -dup 126 /asciitilde put -dup 42 /asterisk put -dup 98 /b put -dup 92 /backslash put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 99 /c put -dup 58 /colon put -dup 44 /comma put -dup 100 /d put -dup 101 /e put -dup 56 /eight put -dup 61 /equal put -dup 102 /f put -dup 52 /four put -dup 103 /g put -dup 104 /h put -dup 45 /hyphen put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 57 /nine put -dup 111 /o put -dup 49 /one put -dup 112 /p put -dup 40 /parenleft put -dup 41 /parenright put -dup 37 /percent put -dup 46 /period put -dup 43 /plus put -dup 113 /q put -dup 39 /quotesingle put -dup 114 /r put -dup 115 /s put -dup 54 /six put -dup 47 /slash put -dup 116 /t put -dup 51 /three put -dup 50 /two put -dup 117 /u put -dup 95 /underscore put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 48 /zero put -readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -316 731 1016}readonly def -currentdict end -currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ßZ4 -œ3<¥¯@žRî¥bš¨[‹ž£s¢Šilk˜Ð`LØ®_/É{ªS”µ&ÚQµR`øSZC^鶃?í\j!m,©Á€jêk3\Ð<‡Ë5](¯R¿•_4šÉÂQŸ¿†j|À«64Cÿ¤ƒŸ¯AÆt7Ò1[ CŒ-#‡Î×€°È—(¿PüÔNžƒú³GF¸©a|‚säpa¶³¨m6&bê» ß4NaŸaéמY÷ñ.Í!Õ -ª>\•¿rénóÜÙ±M0/¬ÞT*fáv×XòA္í Ý-wúÙrÒËOœ± -BÊæg(JCÅèIøÛÄeP•ð9Ûçúæz»‘ÖÿêÿgþVƒ¬"ÒÊzow$ïá¼È1¨¡Ç=ÄVèXqmû¤°­XNþ…¦kžMv!:´ÐäP3Œw¦€V?¤Zõd dCBß»ø1sŠ ¨VžÃA‹µ¥rÛXUÉ«l݈“œ>©ÐÚáç>è;¥…‡íÞFý4ǤàõΪÉÔMYŒ©]±ºôW‚ &R`92.:ªÄBàBä:ÏÇ? Ò‰ªs%D7ùΚð’Õ©vã(Oá+ÝÛÊ}šÓ8Ÿ©<Ð:ŽÖUy±ky€ -ºïeýJÍ&^VÂ-ó/gvDgPgç Õ²,ÍA·¬*-äˆ7püS˜¦+zZxU×)\<äQ˜AÆÙ6Z›*G@†„áó ç²n‰Z·' pÓEøŠT¶ Úô”pܹÍÅ9´Hò]Ycð}’vÃefP×m›£m¦˜õ¶ ¾q|?TC[OÝzÏ¡;^3¦Øщ!'ÔXÒ³S‹|cª"¢2ÑóÛÇ¢ -ó|!èf±´Lý¦8QR«Ž•j¿’Ï'òÌj([ûI’Š¡¯ŒÿMÃæ¤TY[Òèyg˜½Ÿ±gÈGq—yÞ 6¸_Pa²Ì™MAïêªZ*Aãú¾$ÎIòs-{¥ÍŠ‘ÀhI6ž—;‡tf€Mj©€A{7bfÅ…¶ó±{#ÂkByÃ{Šiˆih>¯ÈóA»DŸf}Ù…¶Ûe_dÙ#Þ=Ÿ"ƒRõþ£X¿LØv¡Lëë3ÑBòæjªŽ@ûÏÉâ=$edèKpëÔÈèwwFü b|3 e™òà\`æRït?!ËðdøkbÖ;À^m;·p¯›Zt~¿ –ÈUhçm4­]M1OÌS‰„íÇ ›n$£âzIÎŒé“ÿ5 ô 6Ȥ—šˆZ -J¢oø4ŽÆ!‰´"—†ŠÒĈkâ:¡ƒ=*RÁŸ†•©~z¸ ú˜Ù·ÐÛýéBÊp`³¶,€6ñ`CÜÆ»·¦ç®øËÇÿ›jÓ¼œ€â˜ød’³Aƒýãw¨è¿‚í¢/Ê'NŬWÀ#—¶?¢"b€º-DHÔ­K‰¶}ôÒÊVš^þ…âM”tàOÒÂe/ ž y_Šêòû4ïs z\¢ù×ÌgÏðPníƒî@ÍÝww˜yý7u ãçQ‡ÎÓÚ•6è W¦ð.ßCÅë *šIŠ;²…%E–E§Þ|±oš$AÑ¡6¬ÑÉx - ò_©iš”hA%£„ø¿fóGîm¹TaY\™8X!f=;ìbÊÓÀ'’ËD¢ %ŽÖq”«éÛ-yÜ<¼þ4šígþ¶Y>ì¼™q“¾À·•Zsr뇙ž”»Rø{MWíJ¶@®t¸Ù$䎎ê{«~ùÒ>Ä.KsM\Z §pæ5™B’_à„ã:Yg‚`ÌŒ ’ÎùÒ«qă.S+F – B¼¶³… ©,דÀcYhwRÙ>·ŒO,˜“+ŸfúûK}Ä|Р±4*1:½Ïç/´ -¯ôÔ¦sºI,ìPá>¤ ž¨+‚ðÀ¸p1#û!  º'¹ 4ÐwäîíPÁ9Ë1HGPA,;²€âÿûGºûù' Å N\T4×21Šç‘íÇGò«9£þf&ÑK/‘}ß#XF»ôù¦ðDÌÄ–«qÌD߬ïIA¸åYŽý”%A[OuDT¬¿DÜô–hÛ°dL„·æ•|*SSv\x›æé„î±tù-ÊP<ÿüåÌðA (w·`P°wJbÞ?o¯Ì·<T§®C#oèÂIäÁm¤?ÌÖ§µ"qöŒnáDUÿ¼WXÿ ‘» ¶âBÍ벑‹“é¹Z™ÇÄ÷óL°ºªù:ÙC[S"~ÐVïæˆ3*5÷Ž˜#«TŒ+îÏù äÿVVqÏ®¬Ä>c ¶×•Ð™•Ú2h©ƒ Ÿ›¨©¶Ôk‘cþµ¬KÄ@›š—Ì«¥ÇaHˆ0®Çì:핤>ðÉÃ’½ -RS”.+¸szàÌ%^ëdsOÓînË?‹YSy šê¶n÷ZÍ!_¡^)LB†[ÏT“PË£ºì¿xþÌtÚÐßïD;9\”Äwè{d\—z(f„D>¦ýlS²ÏïW¤ ¨à­¡å"©Ÿº™”+Ølä´oõÆ›«Ê|‘MD}ºæD¬Z›ö -xÍš;nâæg§žK4"ƒÇ3=Ï÷©ˆnóížáÓ´¤~¦ãfׄ§z‚6²û?«&«»¦¾ÝƒZü,XB%ZmËÜ•»2䨉 ss[¸`†:OˆSÔÎOb_WAÚ7âš•„ìv´kïÃÉ€ù¶…ªØw<™Ü@Å;°ð¦Œ|IÁ(Pd‚!·íŠ*V?hÁÂðo0¯¥Wy¦€.&-ðúÀíÜqú~G2—ž&KmàÎòÿS€€hÝÑÁJ~ܵ„ýxMœßÿ‚m£—ÇÐßmˆ­Äÿi|\Êí'] A׿ц؊¸}¾Ÿ)® Ÿ¹œ$2Ù`%ä–¬úTŸ  QÔ¾¶ Ÿµó‰h‡ðÛ ” Õá -_çNdŸP!É¥*„GžôìÎ9µfñá—4y¼Ê×+çø¨ý3Nb¦ª¨|K‹ 1z™hxºy„¼ðV©Ó‹:ï±Y,P¦ãÖ#„ùìÁg›eÁ׳¦ 'éû‹ 6³³E¯6) -—;ÚusWÕ`v'Ü“©oaÓVM Dé¸ßÚ‚ÓxL‚Ö…‡ÿá­ž³€ÅÂïæȃ†á„fÆ ê ÃÄÝs'3h«‰ jýäXòŒˆbK|ÑþÌäФò5ÙbV8ˆ¿¦·¿ùêµæè^{Ç5¾²ñ{.çz%qù;LÙëX<uZ1AHƒÂœhÃ&5ƒ\¤¨ŒÉà]{$úÜ+-2d`&º9.êð•Ï¾Ë ÿ/f=B’ »UmÕºJŽCεĽ¥ “ô“õRx‹E%¥ oMs®‚ª›HMo‹fÑPYü¢k½zŽPAÿzæ}¿Ô­}|EtððQW]=1C/]L¼1 ̶ŸPbn«ªé?UªAÙ‡ nÒŽ&Gm×úlI,ĨûS›}Û„A7«5èbÎË—aÔý5ÇaR¬2DÓ¼¡ÉÑP྄á”CXz8ÀRº ÝlT£jI§}©!'83Jýÿ• -í1æ]€H³ƒì$ -â×léĈz`DÞy÷;Àð¼¢mWÛ/ZP³ØâÏÿïf_ŽÉÅw†m’‡š¯/ðSÁ7Ÿ@?œ*É™êõѧƒ‡Ã,#‚ [öq j°—íå¾›—oÊÿL½†1@rW.•Scj‘5/o8cÄ(k/”ÜݶPÂ÷ƒYMæ9÷‡Àc†féE‹*¤`È»™²6ž’2íÏ¥* -VÙckb8x»¡¿ fª €R”ZÄ1ïÃáA' .ÃͳÈ~™-æÞKÉO£\Ái¯Öœ„¡é[;¤î.Õ@ÎÔÆ⯂«¿Yçටû¤÷âË'Užœ7.u¯äêùÍWY uñÕ?þÜKWwÎþ“ª¾kÄž°aô* ÙÕ›pÏ e`öG°~iJò Ÿž|n_GüÎœ>sÜän‚¿¬5iY¸2ÿ9c$ôÖdL.É pµs1³}yll×'c&ÝWLU -£†L­/äÀ9÷A·ÔücðeòxÛ!t’H݉Œ càÖµpeW¸1“J¾m=Ì6·b™PežPµW[.¸~þ ðƒ0†ØÕŸ`ëå€&ý§€– l ¸yÔ\åIs5Å=ö°Š(J)£r„J¹—U…/¼n›!4-æµãã„g¢©5 Òo.¸©_KŽÉØÐÙh.­3⦞ðYuLÌûíuÁ5}N£Þo¼Ðüõ;L@{ü=x0 ZåçÍLPªd–÷¹²èJÞ$—+ˆB–ª·ú2weU±`ê+Aûw3¼ÑÓë¿‚ÄOå.W¯HÖtÏ‹ž¶“ùËÇ–C€®óš³—AëvGŒ &Ã’"2ûmÕÅáó ³¾uénqÙ»¢½ÇZf˜73¶Ò±¨S[½=*9¼qôùl<­Rã üh–âô¸@Ôû—†ç‚²((Í_É™,¹ÇÎTåþа¾òµÆF1†qB°¥y”IHWÊšN´ RR¹Z_L[–ÚaÅ_m|ZßiL8ƒ»)”‚j”É -D-ï ¶œÐÜÕDd5Ï"¨¬‹Æàxijt0¯ˆ£øQ2Ú%ZN:ÙžGã•dw8† JÚöñƒ¼V“–OA‡þΪϡ‘‡ ¬®Œý6<á<¨™ ÍÝtÖ5R¦¼—‹e̶è¼ýÛ«ª KsË.N¼÷„ÅáÙÉãßm -·÷Ñú!(0:¿eG]½ò%|оn=k¶¶ÁN¾ñÒ™¡gÛrD,Ç]+eóî~Š¡ùF§{ê!Xßj@yÙ+P~Ýíí Mgv”:2HW/¨pF[pƒâè؆Ù??Ec6¼Ãø­ÑbÞ¢g}FÔx®+k­z­K³½+´ýÈç©Ôj …&¾ß&ñqÅôÈq¬×Í2|²E/fÜÁ@>©L›–Ì¢ ¶õ˜Ú×ÈöÓ¤Û÷bIëG³Ü©øÞ~(ø~69Б’/ÉдÜqÜ §€Ð3y~åt¡[š$+Õã4 N ÷í«)(C,‰œYÆß×à‰¦ÃðÁ‚>xYÖŒß Ü~†áºb¾]H/¿ËVŠC¯ìŸóZÿÈá5ð¾ÿ7n‚VýG®kòý4¡À÷æO›ï|[}@u6Ï[Ö‚¾`æŽT–”—oÞRuÜÌÎ.ŸÍ~»v¶)-Í*ïTßFa ’ö,\)»mðê˜Üg?¸v4ºû‘:‡2ÕϯpáÖCxLÊ_÷ƒó)Ä3¹]Æ’…£&Y-c}É÷ ½ÉÄ¥Œ+ì™èéf¯3ãûɨʴªv½ŒÚð¸c›ÕÒÇU*õA[6lÜú‘8çÆä±Ìf_K†7f¢A@ǯŒ=Ä”EÅþ¦÷ -@õ<@œbmnÒV›<´ý²§%ÍsÎ,fa‡ÝÎÑ:7: BµpxãotÐ0(”IZµŸE®ýÔmËŒû–àÔ8ŠÈOk&ŒŒ/Ân|/6Âû²0>_Á• í…ÑÍÁ"M³-¥Z¶my -eC,]OF¨è‘èÅ­0?ß´Xõ;Â-ŽÁÄ×ÇÂí…´föLRð² Ú»…ÒDRà†9L·{eO¨Æúá7« -êEêÀÞ•¢$$ž/‚(ìÔ4ìÍÚÓG²cfM}—Ï&ZNÖ¥¹·+·ÇÂ;{ƒÝ%.Iv_7|Q¨ÿ9*‚"DõU Ýâú”Š·ó¥=ݼ®0¶)k–LV¡»Òœ¶b˜œ®ßcàÖµpeW¸1“J¾m=Ì6·g†Ñ!C èz¦Á ƒ²š®©–ú’®ú€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆBy®+k­z­K³½+´ýÈç©×Šè,(PL¡ì ?F{3©¡ÞûsF'ÔÅ´%실Y ÓU\.K¶—û²2H{žf›ÃÜ,«—ôvÌ|ÜãÛ]ß“½l¯ª¥c¶¥›dx'¼o¼,<×Íïñ—ÒêÉÈB>û?:-,®y:‚ -%»-“ê7#¾Øܦ-vÅ;x¢‹Ä4¯L“¤”k°Mɺ¯¢2ï×ä=ê_°Nu3Ô°ëisèº[·6S… ì-í°û¦‰o ºæ‡¯îsñÓií?ŒNî¡&¡ žò.O% Ò4€€E¢44ƒ¯Uò  ©1Œ Èj<¶õH¯6ô!›Ï.¢)çb-Ò·ý&yЄqkFGìÍó£èËJ¹‰òÝÄcÝo„Ú¹cõ!1OR+ÏM—;n¥ÿDü%Ûè§ÛÑŠ‹ž‚loøA•Gß/7DPî~&ôcýfúÕaf¨øUaßHÚÄÅÛZ*¦°ЮMfä³D‘L¿ö„ßa%$øV¤ÃU8Ά͛²2V˜´8àdT¢ (‘{Ä–Öª*©Ÿ/ÙÄ•|z¼,Ëá-©Pp:ÃR˜=oˆ†‚ï;i0>#vNš]¾d ©……Ú*JùÞZPF²_XZÂÁ˲Ø{ýÿvÝ`i5À™RdXµo‹LÌj¸yf- -/Åx^ìç iòB€EÍ`ž#Î7yb•±«yuûa3X•ôb&´Úðšþ']Y`‚ê;5™ƒ®øcf8oàœSïuôù7Ë3¥q“ t§\Ø»sM- WÞÕ CU5<6 † _p8D ºE?tÐîŒ V™ëÂHºªø_‚€âÛmHÆ/È"ötø{Œd>â·ëòèð\4ZOø(?qëÆt¶¾X>14FO^mD.}‹X -` -ÖÍô#\’˜ï¨Q¹ZOÍhá9¡S Ò æu¯ /ÖQÁu§èKÿ±Ù>\¡Xí|›ùaXFî6n1ð÷MinU°‹g*Ú§,6ª9x‚ŸÝ÷‡X' wTw²:¶/KÇŸoš•½Û .µs+·t½:wðŸ¯\ ¶¤>òY‹s½S-ôÙ¯¼@‘x®b€“ƒl| ‰¡º¢Dg²í°£CpqÔ…½òùÑàviübu¥´‚íÆÛ… yÇ•°Ç£ žØn™ì½P€õ‡÷ˆÓ‹v;›6ʪÒÿ­ÞÛ#Èó#Ybã(‡ŠR˜©¬Ëß8=JУü¨4Ä.fxňCjiudZh½@'œ”ûûçV ¡ÁAù)Òž¯D ¨ µGDå¡¡\¦vï@ð±ý“kcWµdùŒ°‘·Q¥D©I¹æèËÉêªÝÎ6yd·±iªg>·‚âuí¿àξw 1Õ[¿Ú ‹ 9êðÛè׶bÌRt òø„„áIJþ!¡– §ÔÒ슎üÈOX0–ÖVÉy,áGÂéÕ½4•íR*7±MwCÙuèt¥Ð5_ ÝJ¥Y) -Ó;¥Uâ/´hœ˜ž´œ{ϼ¤( Ê{ -v6^m„á¾Þ{»,²qN7¯ËvÁã»aÛŠiALnܽuTZs.€'mÇzþý¬Ý„3†šÏ7[U¸lš -Æ_š¸tìþà™³?Ä€v–7JJH¬¢ô,›–<#ZY¼„¹¶¢Ø{…ò9𤻔ôBn]'5¦Ò„DDØ “ûH+$ôñi€U€ôëÿ‡¹*@@ùõ¦UˆÔ›¡­M@è%‚‹Û¦|©ˆ›1ª‹b?9þ–jÁ!NM£-*ÅSEø50⹶Oü]}¸_TJGV-‡“‰mFCœtÇæoÆþ(|Çoïý:XDý©¢Ù.ËÌ—pÐ&(×Êá#MM®‰ ¿$š!à‹’ éúŽãea:ÿŒ2¸"LHå½À"”Íщn>-ƒA‘+‘âÈp³:Y¶WÙ -·ŒiYñ®Tâ§GÔTU bŒ~ë]An#GŠÕl†\ô‡9—jµ¬/¡*oäEx'ëc[ûm\ŒfÃÑ„pL†4:É%‚C˜Â“zò±î¥ˆ2Ý|õÁâ‘g:ã Ú·6)¡Ü×ÀX­ M[æÊüÇÐOCAˆºBÓiz>(Q{ HRÅ3úT(’!cëìÖ¥jØ;Nŧ&6ÔitÞWp›M­5WÓä8ñ’¯Ê*ïÙ—­!ÅV7m!ûpm&%+‚Ê— ©ˆ€Â±‹²*wáÕêÁzŒ.Ó{ŸK⨚×-Ò¿‹Æ³Jܳ‡ÞpÇ(ò<Ú1akÿû³©¶*w0lT1H¯³.Ü×Hͺ¯ãァØúQ ZÞˆûòÖ¹Oäê:›Û([íƒ RPo—®åüw‡ 埭Qú°­ZÁ¦´Á–Lëƒ ¥&Mkd7w® T‚‰yH°V¨fyr’¬p#ÌÉ´uø’øh‚<Å]HYÀ‘HRŸºW£‘c1ˆ€{W›¶ ÈöœÙ㶭鷘Ö[ÄvâJO²Ž«n/„7³„â=iË1+B(%®—æ8å9Ñâ--F0Cwà–!!g­â+W(õù±æ‰Ù¬,riaŒ¹§,F=Ô')Ã|AÛsGÑkœBV˜_æÛuüï›°÷Fe¤_ ¯!4á’bUýF¬hx„£T} 8•ߧr$7H÷ —R›œD•¡öq5B˜ÍÃD“f-s6¦ÊìÛ]a—˜”Uy*dRwv>b¢x”µ¹7ú­4:aÿ7|_]pƒˆ³EÌÛéée,qª2qÕq£ñ:iª£9ã‚ë/¥å°UæbbX¢BÍq§öá4¬ácÅQ ›Yqà><ßÆÓË^Ø3â¢ì¢ÀÂ꿱VÜ…®©DA¯ƒ\…¼0dbè­YÜãÿÇü–3BšÎF•miII³µáÜ!~Š‘Ñ7ŒAº¸´umõP’»ÍÏy£‰}>ÃfÞú¤ v=Y½u(r`àúà“x\:Æᛎ«Pä]îOÍ,¸A^N8Uô™[Š%{>¹[ýJ’VLßß·>í‰7‘Z°Wí,Y›B:Å$ò1?3˜´’8pÑ6k]Ò:ñ; @}âàÆ»y‘ËneM6N5‚†åw<3dÏq^cFŒ°,=1Þ^g·ouuüµÖSÚÑJ‚0ÖÏú7ÿbGV¯øñ -,`1 ý×ØÍs²²¨ -·¹$ñ¾«Ÿ`Ú,@ï—æ“Ûñïš+4m™ÝµDµ•JØÌ„×Ò^åý¹¥_óŽåV²³ÅGo°övÕ'⾧uKôLì°9¸o´t×.ŸÞC¤¯x´!Æ~Q®jDÑ´½Wɇòb‹±ÊLXljôøÒ²Ò¸;óÏRvFûÐVÝÐÂœ’ÃɃ,ƒi‰ÈðÑU¬&Ë™­ãïð!1“éeÇÚqc°– -2Ö’d©œýºê8¸: #ÃmrëÙ” ¼êu1köHÃÔeá,ÓaÝH’\¢&¾aø†–fÅ8&®H€QãkžWk˜3nWÃy9@ñ~y{!‰«o¢ë$êAßd>Á¤"$Ë燡¯óà„<³2J¢œ+Rº(íØ»'w{H)Ìa,öwñíÇ9e†Ö¨!,`µÁ)×ÆBùœÖF8k;Ðe× ó¶tz4µ,M6@Ê:6#8£²ú­ã6‰¹QŽ;ã? ucMö%{vµá©®å›ëÃáÐÕ©2±¬ÂWBKùèõÕÛ×»2ùvâ®FŠ4ø'‚‘œÍ°îocc¾ïŠIåÀB©5È>"‡Þ¡Û( ·œ´[0Œ¹ê¾ÑMâ2œ;'µú»¬Hð6dêÎ×:ìʾ¢*0CUD‰ž›Àælu]p½^+ðÝ޲̿šæœ–¨¾§næ²VjöT©ÇÃKìôŒÙrlò¤Cà}=/æë3 +Sœ©]îuk#„rZ‡ÌÂ_¹!.ÖÖr¯•]½ic¿B{y!J¨çï8ÅýÅ>·fʈÁ‰(ûͨ,‹ñX–§±ƒFÍ~€í2²Š*f‚ŒL«~os¬ Ȭòïja`¼”zêÖÙg Ù–ªŸäÔ&Š?Ûøñ­Ó"l_}å‘j^Eq#l°^%À¶î(UÓ3Ì5‹£…s¹š«é)u-ZŠÁÍR³7GÒ…ó„‹¹ýÑ/1Àd£Ä°Fe $ ›^˜ÊZR pzŠ+.õ1¢øo«”ëÖµ%·XÀæ¡Ð”(lŒ ë KmbÚÿ”ŸWjV!Û³V"¼®§1ËD}ý`ùF¦`ÚÏrºqTgVnþ(ßç)Šßw‰C1í%¿iUá= ´ÙÊÊ„g% ñÚ—¨ƒÛî÷]š˜iÑa-X'm|óÎüà—{h»ï´¼Äss6ê×3Í'DRëàv¸ú¬õÚ0µ©s>ºÑQ$ÄÍ¿sEu#·!²¹ÀÆÈ@^Õ³1 ¦0Gè‚êørÈ}5 •ŸÖåŇØduKwM¹ÍÂÛÞ¯4dsÄñš ™¹@׳±Ñ¢îüz‰øîgü†¨jMåÅ‘˜õGÊàÀ¥qŽÆÙ‚Âl–C“’Wq”¾ÙqÇ##’$§UMwÊÓÿŠôøÍ;'|(œ†HWÁBÉÔý*.è¶=f9oŠéß ø4?àÅì].¹Z7Ôlƒ˜£t¼BŹ<Ũ0µÅÕísò÷ÑYÄ[(hwDzjáeŠUä+üJžüq“]í\WÏ‘ª/w`uMŽÎ£4î&rVr lä±ÿÊd¾L:ÉQñ"½ÕÇ$Ë€#5ø0¡ŒS¾Ó’äA™gàÕi[Ž/Së=§ò9:ÐQÖ€…­!É‚ÇÞT—°šZePÚìs_Žü@—6¦´yÓ_¥‘£Ì»é{Pü"–Fe¼&ïdù| TzÒX¬wͼ–cnª¶vç$ÈD¿¥ÿήž—fG2kcÔ7èNÜapr’åŦêüì»á6`Õ69òÕ™”.:&ÆtdæÒÎ? ~#Å,ç½V}§ñìdø…^€öÑŠ½Eÿg4pÝÁö9íx·ASt­W[*äÓáVÖy~WÆ ±æÕ¸(Œ§çú,i JF9vY…o“OSB`÷½Yj&uÁý¸äKþ î[vî>“*p- $rÉ…w­m`‰\(’`èx¬äöU6$ §ÖïYwî±…Ôâ®æ<¢WãÀ͖҆óbÅ«¾„×¥¸):RNB(2—äó–F ÜÈqE¹ÃÃÅÎ"ÔµÞ¡x†²ÏÞÍ|›æ·Ål˜­…ûv$õäŒö¤áDû3mó[Ô³"‰÷þŒf¦¨-}u`ÑÎ)a vi?¼b¥LKðbì_Jƒ®0¥Tê ÀâüèPaœÚK¬úJ•‰‘çŸS¢4óÜ.Ò«ú?aGxë¶)SµoŽýO¢ ¦&kš•,ªîýªÜâÔ/¯Nkc“4:ÝÈN…#ì^s®Îcxxx!„‹C¤Ö±ºìÃÚŽ¢Wck_A»©ÒT”žX…/Á,m┵›á5¨•úe«cd6® å§sS‚<Æ~6rjð¯Ùë«swn{&Š†^;¡Ì?ZÃyƒ_\¼£¡9ö '§âA/BÔƒx“Ò¿ ÏMm7À.©ÆàýÉ© -Iß,S—U -£2³4ƒ%Ân ôt ýuö¥:¥ ˆF¾arâ^|¸*VY/'ü'ñÔ_ô»Àáb1€~&‚ÝÒ‰ksÁdÃ-»½ Îó=Ô/‘#)âËã÷ÁDžOlŠçÖzî›éÍEì4$ -jËùÂÞf™,ôÚ³6ŠdÉ«Zv…Äfè—–rúÉjÈâFº†q½Þƒ¼bKàÿÓ‰"Í¥Lx’ùL1»õZlC‡'™F³­ªDèª}|\ýò…šty.á° à7åKn¾JrQDØ”–v”`œ“ ªö„Ž:rßк„D)½;Yv:ã9!Ú]?.D„ØŒï@Î1<‡T¸XÐZ¡³­r5…Dk×9 -°ã9'΄T2WLš[fÚ­ -” ù©ceº¦.% QáÏ&!)dÛ.ÑÏóé'…h„ÃÄÂþàP©“Ù«Âe£žä¤”¼ÞàuùJçÓ’à’wûN?ÐöÊà+¢9‹öâOmÌò×"xB1êlò‰‚¤G -qVþJ>pËd7ÁŠoæ3AЙ³‘Õ†b–¥drIˆxcb&¬4­¡Y{+#Ag¹ë=¯5ç•¢Ó!“Ü.åªìmþ,†t÷Øÿeܶ»ß—Ò»w@§Pžs“•Ð€ßŠx–ŸóÀ…bÞ@ºï3Üq÷G{†:ÇæÌÓÒrÅ€!3©Åáhè¶ HÁ "’;ÞöAˆ¿–(EßòÁÆÁIÁsÇ(-¼€rñ^˜Ë¯’{Â8"„ŽÅõÕ\¡“Õ<5I“¥U ÙÞ(B* ¼ÅÿŒb¸”àw Té•~dƒ=f¯‹]r]!õ1!€ÁØcòFÂý¾n(ùTòž°þww}¿þøb̔΀OªÈiŠçFpVÌò Ü×ZCüóftÿÚ¤âNx¡Ž(QÓ®ŒÿwÀÈÂþÿAèá¿~œ°/.F—kQNIk´ìŒpƒMÈ‘ðiÕ((UŸ¯ ©0Ô`ÀåV94¤ ‘…FV¯¦Ãê†&~žD³KõŒ‚ -ËýÇåóõÅÕvm‰ÒÚ µ»3M[2÷NpÛ1,)‹ë ñ2©©sÊR©¾…¸L¸2x/Å°²+pÎúW6a¹ªƒ®+‘ÀÆå‡æ2G˜lò™!âzŽe¹ör/™ žÑtÛÑ LV€ìJ‰z>b¢x”µEñãx[ÿâ޻㨬…4¿l´K&CïddL_ۢʪN&çBU7?J[Îþ/ çÆPt©Ÿ¡5ìÇAS:\Æâ5¶<ïL‹¢’“·êhr¥Â£«piÉÆ'Ä£ ‚3N|v‡éo—Œk+%™Ã°lyq謇È5ðžË¯Þ(z2áùj7Í̓ˆUÞíP˜¬Y0T[cªžÒo&kѲ=pci ž1Æ‚àÙ£»¯ÚY*o6a ñÀ‹õÆÈ·0$}‰4]QÅ=";s{~-z…ë‘QJ€øç"og ‰pX+“ŽØÚ1ºî¾sŸú2TP‰…nT³C3ßI 1(+úåŠëX±$r¯"ùÉ™îÔr²Â¸[`¦±>:9X»ÊQå°6m¿mY+{ ÉÌ2¢·¼ËrÖâÝxŒE±q›€04-GûÉÇ‘|qé›xºÁ†Þ.øHD³ß꙳DYç¿‚­Yý6nw_+߯‰ãpWÞ Å²y›Jkb©É»ÏÀ'<>–¡rc¹ð6›fºläA–í“Vç%ücUÕÝœÿ!ºégñ8›¬ùï§IahP²wP—>QaÝÕ¥Çhx˜ -¸HÂØ 'r°]¦=ÁZZk¯íÙÊô^%Ù£s§ú."ãy%®ÆÈv¨´ÀˆCkåx -95]!JYe«¿™[À¯B–¢7åpÖ뻺é†×“Ê@=ÓépŠL3\A| 3ëT·¢µ%'Ö?=„Ïn¹×aÖ”áGÇÑþpñËÆGD"FË'@V¯j!Ϫ;Ù?çhŠôeþ|(D¿ƒ.MTˆ ¯&JD1ˆCíh·õù¸+Ë-‚äëkÁÒc£÷žÈAëg–n›oOÝÿbè+ËãÔªÿJe;¥HLÆÂ߇ðñǘ‚Ö—…à€tô`'¸4é°9l•ÀE’z™ªAdSÞ|fÕÓGz•ÂI€>cÝœ–ø[.¯š@R±£‚ª.¢Dð Ýθe M.ö¢Z'HR¿E0à» ÆÏ[s -¦eèúåÏ–ìñH¨¡è»!/":ÙÖÙ-ÞK ¦¿C`þ¤dýéà¶öô’øÓª·â’Ž‡D=oàipŠ‚O³ N;7q v'—g®#1—ç'ÜEé(p…¢«qx;¤ß§{t«÷Z¬ ì‡ìxòº[~e¨Ë¯$ó+N1*GYGÅ~›6äÕrß²ò…;(DÃóÀÀû1XkELÏÞ0c&Áyëòd»ÕŒš¿œÜåDTøë2¦š"ÌžC9.K^ô:’Ž«´gGHø3O—%ôìÆñS3¦y+K¿•Ñß8]¹Ï€šÐ“]m,±€=†­‰-™0v}æÊVÆYn7¨} Åh•K.ý.¿•Ù¢¤HÙæV\½™EÚË0 -QÊaözÊ"±ã‡ó6óPú]ÑÎ6ÎUa-5f~­r[- Pò^Ïô3[Å. ˜Ãjy¤±XeTc˜9lÇåNëqó²ÖÇÝþýæC˜翴r晪?çé+xýk²*¼àÏáÃ1¯pß.‡"« Þ ˆU 0˜Åo³+ËÀ¿ Ž3WÀðXëÓ}®g¾âÄ+r•Ÿ{©Yò}Z;llÀü-’X”ù½™qŠœ³sþ>I ú\ÞŒÚàÏñ2ÃÏ3©¿Â…‡`XufI¤è°"c•ŒØzqðÈç„a-¼ð¼×šÉ2šÙ?HWÁ‰„Š;áú×)›.Õbª•LªmæÆS#?žÍº~îw³Ñ~íëŒeë|<±pNLO?ÁJ©éˆ«º²0Îøø¾ÌÃ_â‹~ÎnÑÐRþL¼ˆTTjÀå×Ód¾TærWÉîùyŒYØ1uô CjlfÓ_Û³•lF_E¹¯Ÿ”(ãi^rÆK<.ò;á¨axEçëCÔˆW…ÔÑð}Ý7<µzB&p¢• í˜ÉS(?£ËÖºY¡¬+¬ñWê=j›ì-™ö0…Ùh(ô!UöÈÁÈP¼COrŸy4Ë¢;Z¥¶Üõ±m% ÛžÒñ]<ë º!D¶îgÁLÜgç°³aŽìñ~ãzbg­ËFÕó Ê5Eºägë´eP2ÿ;6¥Ê÷™j. ÍÀ7XuÒ¢ (ÈÎÍ2„Ș #Æ$cèçWwÖ#1 ¸wo ±  Óo•·˜|1oòçaüº­d/5\ÀŽù²°96#lôÈ£W+÷¬|ýr…u`-ëþé>㤻8ÝÒî”g¼ÈÝnæâcÆ!ÜÓíÞPns´ã–úìcur?´ b]t(ƒnAI²×hÎRiÄD›¶L^äÎÏÒúõwA|5+: ±Ž+­Å§"(Û‰Es¤rã!Õ  -ˆ)î›ÖÖ}fÀî–²fÎ*o¤]‚y:«ÆC”LvRÀ|jÕ€Ý@õFÌ¥ù8DU›?QfÛP >EäoúßÒʤU›Œ˜x¹cDPï?æ8ÌKŽi6nC:‰˜S #ˆ®oÿPý$Ø~†½IØ»~E»gdøˆLÀ»ûû¶üå—Ãò)Õp+mÆ©Ô85¡/BDë2Ê+˜­¢¿‚Òà¨`šŠ™ýÔSWy`+Žé; ø·ÚÇ]‰ŒP~ùæ•ëyQçqËçßQÔfŽH)Hê­x•xm™åuÅ,Š],CLÝ»¡ƒUí>nOdv—IƒZëåˆhtòÖ#r8ãò»¥ò*ã.W/fBê•CÝo@4ƶR Nž_pI–¯;rÏ_²áË8áRh>gÒÏœWŸ^pºLUÀ{‹•¡ùVñLJ” ð‡mÿ^zÈCµÍ‘¶{î~\â‹åIy&Ÿsð>‘£kÚèër&Uç$ýå8Ëž•FD©9yáýº4ÅakÜ:byàéÆ "ú…é¥+Vî~'7{y‹.òÅ)j¿ÿ‹%¨Un5d¡ÍìñO\¥ºûÓúŸm4¥œ†ðVœörÝÓZ§¢ÊKUqA?üî)0%lR$íå"d°ÉÜbîc4¹‘šÖï/ÓŠ ¿NíÖߺºv#*iòär€œv’]UÆÇIDí!ôî!Â10>J\Ý•Åiœìw}9ç W¹„ìR=ä¾Âí¼}ÁÑ—ƒ}ÇɤEÜž§y°ˆú â횦)'íO²Ôxw.¦æn8nyBšI)·Ä*"¢&Œ¿Dë›ë_øTåláuÕÙ!­ìL1¥È¹ÕÈ rkÔñ }Á"„å¡=á­c"°Ž‚æ½òŸ%BÂ6ãnËÝóÆÜ’oäÀëþ“l¥Y¼,Žê¶õ-ò2ÊùÄ{d´pÆ·ZÌhdã=¿cGU´.ãŽi¡Ù(ù²Îþ ¨|tù.`!ÁמÍšLnSë£ÙŽÐä”fÞè‡ç£¨¾ì„¹’ÔZ&€ºÆ4—Å“É(±+xÒ¿h/è7—K¤¨UƨÍóQýi~”®õm7ÔŽiû>˜5—NT9“è€$‘x‰]"ºFà¤Ôm[îU#ßû`&ÅÔŽå@C3ZBþ'ñ£ÅŒDŠ¥S…•XpfÐcˆ.™‹ÜCQR®Üü˜o1£KÆ„£!VCKÌ*'óCv6i›_HYÑ=$§‚ÀÔ«„ff3Hº‰ñ«»8Ä„ÅN¶¨;Ĉõø†ãÅ}‡OåÇÄõlup¼ÜÓ_³"ëÌrƤ}Ä+T–MÅ0N{%9³A]_F|2n3$Œµ&1©Ã¹¨Ø|9fuewã“Ã}ÍÃѱ‚¬Øg} -z¤¨ð7Wü|ë}–Z°O|¨4¶?nï+QæƒT|ùÊwU9åòœ¼„‘=è×~SÚÎݬì +©„~ÌX¼ r1ˆ˜E'³¶Í¦Ž"žË†onÃ÷X±%Åu¦ÕUö ±‹XgØ~ǯÛSODGÀ5«zS†Xèú5™A¶lÐ0HÀ5÷ÀÅÇ34's+)boC¼(s -°×ÕSò"£°Ö½ÄrÓi3—O¬Ñ`×Î'¶§M^TßL¢/Ór³ØYƒÕ¯ g¡GP«„„µ, †Óåihë^²Òðüo SÐWèH߇…µí ×t°i7l~–¦‘$ñ"e—±LêïP|–“öf£ïG˜Tpi0Þ¸"ê˪ZÆx L‹/8CèŠà nZKäÜHcI Ïãì#ÿÇÁ_ÚWy;l´iÜqÃH‡QéÚ–”rCéq¬w7ôs*ƒ®´ðÓ/ÅÞ~Œ~2žR__L™•,@Ž(qØš03¡1øb*vŽ©YdblÚ},%§‹‰ˆošÜNã³O6IXØÞYæ{£¶#) ¶¡uùh¨u=:ƒTiV—>t£önq%³Õ¯DšÞYžÖ.O_(reÄbÅø@7"›÷8Ó›Œ`_¬ƒÉ%ˆ*FË{𕽙YÚµ¡¶r<àô­”Êó0iÖ( 5Ý¿íä9Üðň»PIÊ´Ñ‹ù³óà„/ßγWbz¾uc“i*c!jµj†îä†æ×ÝÐåŒø+ °Ê´&<·SÏ/í°€•k½ªŒSu«i±wH ¯D24@þ¹KùQ¹ðy"=²m¡ ¹+UR6Èy¥ò²ù/9+öúã„2ú Déµyœ$äNAÿ$ÍÓ;ÊDdÿ 6-A{ú¥ä1þƒ³µMjôm ‘a‡>šý4ÚòÚ±gØ}Ëê.‰>æž‚<~K=‰.,2z.àˆˆ1Ÿ!Nb_ ÍBH±]>¢7éÍ w°ZÁØ”½ì‡»–ÔìµL¹ç…À‡—«Eyщ> vS…Á">ö×ôÜñe(va߬ÏGŠ¶qLF*K(îã›÷b,0%u îN¹Ó±âɈÂ|xÖ­ËÅ8Ï·¨ÕlÞÏfýà½eªÓÕLRN6i96O@ßI)Ž5#©$ŠŽººï‰è,¦YYÇ3û%Ÿ'öŸz2ét„j¿¯ÒF½ÝóÃ^MìE—Y×ÓW_oüƲ”–ZŒ,:|ŽE¯€±~ .ärÎÒ’ôí bGAQ]”¢È)r”3¬ÝjYjkýCoQWï ¯7>œìªÿNMkÉH²wÒ YÐý—\ÒK©­Ù¿L¼6QN¼CX¬Û‹ó.Kð\nº£»ùÁRLO-úü6 Ïɺ*!; prц؆Û`¬^¨9>QµXíÚÜQ|e,þ$·/Òó¯ g}&w§½…ž%Ý}»\ïü|‚ɘÑ6¡;ÂWu^¤Öv®Oj0ºS¯‘åe÷ǯC{ŠÔòõ©^Í»Jõ6b!߈ó!¾Ý<á|Å%KTËé ãÐt·çTÄw¾t5²´•y¤ÑV–T®gŠ]ÜìDÌuyèɳÉtº={Å·ÙÛ " ®7ZñK7îðËM·œäsû€A¨s‰ƒ2¿¥hü˜é¤Å[¨® RŠuUaDë0¹ Žà -ÔÆM¡_èkL51ÿ%Šgµ  Js‘?³3,e‘œ…S/Goƒ®\í´e©ÕuðÖ¨GVh'e¯D$NÜyê -Êà@—mY\}±)À¨:{ÔÈ‘p3~X´Ÿ |5Ƶ´{±g6: -JMuÇ^” J&Üše†Ü¡Uzı42Ôm„ÑqNÆÿ+Aá -ÕuÝ,ë´iÔ 9§!•¹±—:}ÙSR¿2ë‡ÜsFý%ÚPŽ‘²î>€Ôà’رTøNmô=¾ø²#q&+E w lËßÁî÷¡ swGjGtYØ‹uH‹ï„áŽÁ|2ëá˧¿'–?ø#—¯ƒ(†IŸ™´Š’ó|4¥]£[÷„Ú 7Ç@ƒ›Wz!ÝÐ÷1³!TŽ)V~è•!¤ ´˜—8øuåAåõñðùÉÎH·zÑK¼(?%Ø¡ˆB+^Œo'Æ4 Í ?ìðúH¤NýÍ;t5°j½Š!uð2a†]ħۭ Ö¢gŸŠ7de×)I[œ-HÚj2¢wÁÀ~dþ¨.êP4¸á á΃y20·¶§ÕõØÕÐUƒD’¦]œdBc3ÈA{‹ÒìÅÐÛ®È_PÕÍ2aS"G¨W ‚6¬ƒ  ‰žáÑYì[xEv-þ7¾ñþò2ȤoïËõ‰¼ ôº¤ÕÙeVjôB?âM&%æFÎrX„x¿”p•Õ'ó¸Ö4qëõs–‰7)y ¸‘€ciý@#×q`’|ÿ•MêØäëÍo˜§ç>¦•Ø] 5£¯§ ÿ¸=\´y-n4¿ç„ ¯qåcVåh¬Êº~å6 ‰g»uêzÚ‘L -t.¨m¶,?.?3’z[79ê€Ýe¦?Ò 8à,qÈsŠÿDsm¸wIѶó—A=ùl²!àþ¸Ð*]VMY²?#˜®\/d„‹+á«e÷mˆœÔ{^š¿¶¬1åMظs÷eYÇaЫ1ÞØ™~*)Gg±B(2—äõ 8GÏŒ²1(aq7ݘâjsº”—DYÔ)kÃ¥„ac¯/ðSÁ7ŸD€#¬v¡óC»>aÏMÏÏØ}pj0‚|§BcnN/“± -o%¦]à¿/¶Û€ äùÇã늒îŸrê¿ÁÜ4É÷H4Ü4Î{!XéyOö‘ÏéGÎ\šQZÀ®*T©œ¥: E·31Ooá›dù¡É¾ªøÈÔVvjN=”>“çhâ!¾¥*2BC¶åÂØLůώ·yL€øÈêîŽÁy¾‡cüß RC‰›ô—KªJê2~óÚªé2¯qHm€¹ÔârÑU­TÞê‚b¶¨bÓGSŒKV<ùŠHY €‰èû;é^ø•†TUœÖÓ ³6¤è:²ífyv/Öƒ[mH¬¦. {‘k+õŠcYaq¤­°Ü-(£”w‘n$ÙœwÔH¬²Õûç~çŒõàµòjâçùÈèÄùñò®;•`Éß_æšs‡=“Ñ{_E£X§¡bgžR… -)*ÏÓeÈM‘Jq‡ÓXO×p19Ë9Á¿}—YÐ!:o6`|Ç!Ö¸¤SÐè&-\ľ!ýˆ©2|6 ؈E$‘{uau…“–S&5¹ŒP¡V„ù¼ÇšÖÛrUcY¨¶¿`Jýº¢hž™èú€™<(6ûY=§ÁÛÁ‹Ë‹¸FÁBÔ©K?Æó¥Fqª3vÌ),É# òƒ¶᪫};°ùÜ|ã­%ïcHã²Cø’Ä•š Ù¥/€Šgwšº…£Ø!ó%¨MÙÊú ®¯ -’}\}Üà=̲)ÄFxD=ïv1dbƸz6¨ÐRÒäz—%è2ùÅ/Yý½è‘Säá¼0bTË$U(Ë¿¤(»64Àe¤wxƒ•D¢âÑGØcgCRWcƒp±azuŒ¸ôž¥’ZáõqÒÔÈîID:ìÒºÍUµ1•] Ýt†9ÚÙù¿»î“¿+Îò5î9ÖÃÂì9ÜqO‰G›·‰\æó¦Ï‘2 ý û•s‚t„gC\ ì{¼ä´/7 d-¡tl)4JñüqRÌ †S^ŠjÑ,•ã^HùO—‘d'=N†Ž³†i¬¥wÝZ³¡”‚Ö”"ÒN´¤¨ýµ˜ä¶¶ -PUT?µ™àP[ÑVœÁ±ŠÓo2­2°W˜ þ"á&bWÚ¯ëÖz°ØMxÌ–DéÌŒ&:ПR~¬Oäë¶ûïƒøE; _äög! ¬·ù þwV‚5¡“õÓLõþR}5R•ÙVë›z“•IÙa9e˜dßö&Ìñ¢£b&gl\6©2‰Ûv[Qp2C|6Ð$Ì,>OrÿC†{¶"ãnNùPÒ‚%ÎFþ° ™@ù$× ¸¶Î*˜g°Û×X†§:¤][÷\JzœtÖ¢)¿æ¶¥+(àèõ*UNýÖruÃŒ¤ôaÆî‰nÈ…´;6ÌëŠËSl‚7íÂâÂI!’1ƒHrÜ{Aøh`Ý¡€ Ð~¸Ô˜Ö¶þR¥‹«hræδ!þp—±NJ[iÁouGˆ¶³ÃÂwmMÞ!ÇŒ\²ÆDÚ°&*I—‡Ð™¦`¶vbý=7|»ú3‡þ%ÏïCR’qJI*þ!Rü³‚j¬ôH›èÿ æ -ÿ„Ô_™F(Úåö߇O;èǹ -ŒDŒ;lB»Ç;q´KÖ¦µuÿ@¶ƒ™—Ïè_µ[V¬øäè­ûûÜ{K‡péb2'ŒI%s›£Ûã1Á!ù䤗{žùÁUÓ$È3¡®ôuJGU34n+Xa¯Võ‡4:¶¬åõMQ -Áqe@æZ.)G•z©¦3óŽ ×閺̱V†ÍºîöæC #T][™MýÞ\8³„YÒ ÌÁÁ‘Œ–½/þ` í4Dy¨a\/5:TîdÍ·i­`CNò‚BFÍK|u’u.¸c&;ýÏL±!Si¡ -o€§œ! ÂŸÀöí<çZ´àÁê Ön…Üešê–7V|ø/qŽ·ó¾±•êGÚQáèßYçÜ êÈuJâž®ZÈvÀÂhU•“üXÌç)lµÊÂGÝÉ6YýÎë‚ÎÖMùŒÈ@lXÿ XȆÒ€P=zyhq`.Ú1#7¾d*OèmË°i -À£”ëžòGõíóÎGï#qzÃ:”©K±¢œ¾fÕ*cqO}Ø…~öZô04yc.\µ¨V1¡ -ÐçD@Õs`Ñ1í‹”âüVMéœD|5ß×é¹lÝog•ÆOŬá‡Wë Zîr|Ë×/ݪ´`™{®Íäg +M.UÔ±8àž·Ò0Öî MüÐQTNìêC¯Ðp!l0ÀÎtº[X 6êÝ´O×Sis&õ -µNòÖ̲oà^1õâŽ[¬è „O~qð0ƒ»‰óó$Ý­e¼„HÉ7K#W]©¤3¡ŠA'Ês2åš*~2ò8’U°IR¹°Ýí1‹É©È©è×±¡Ö¿‰ÔÉ=¥…Ý/¥L ^a?t{ö£kŒ(´~¥¸ñ=È»!×¾2Ä‘x&Dˆ+l¾¿öGq -ôªuÃë]&LöF‘Ÿ>t‡™Ôœ0a*™2ñq,±¼ â á|CR;0̦Biª‘ -©ë–} 8,É’Ç”áv8v kþ²¹±fRÊ«6öZÄDΓ\º´1—5DœÂ«|Ÿe³.£:Ki‘»a*“ˆãLóšËKŒ"ëh€~°—Ä™mJê¬ëÞ=eêO6ÄÌÕç(Êx&¯$Ÿ”°»½Èù]Üÿð9Õàñzyv–eÇA~).÷™Ú‹\xb•uDèHD ~ܽýÓ{SÒE=Û‘ÝÂñg¸óƒB/“Û! i»jèœEP{á±dÁÒO³òè@‡ý/ÕG ˜#\ËBVv^ÌÌ´„½gÏ#ôôî:.¹‹ë\!PV“ý8 Bðw§_ÍÞå"³D_ ®i±‡övÍ/眊0ùÜÚ}ɤE…A5ÞÂ?6Ù©Rå.^iG‹ŒdY+Ή† -lºŠ±Ë2©îwA+žFçùË!‹á¶p묹Èwñ,û1ÚÛb­àf41`35 -¡?„tÃ"Þk¼ˆe•bÂA¢ñÏÖt-NÈ÷¿æŠ'Öå“‹˜µ/‘ô5ÍDu ,8OÜ/ôµÔ³½y6OEÝžT²±Ã¡%—RuäÓ“õó–ö{ŠÏCœ«þêÊHE?w옒¦;´­Á•3€{ÔÁÏÒŠ½£¤¹Œ%´ž®)£®Ûcð -ï¡|å5`}³*y—=ê±Ïð_à¾Ôy^@ÞïíûGÒ6ñßHŽ© Iš‡À­žML·³êx¾ÊMÚ9¤Ens4|Ã6ð"ˆSKd:d>Šƒ€)è2ð§ú'Êæd „ñêS™Šþ¬DGWDM'½Þˆ:Á(þlé<Î-þe‹ -rϱT7v%µ’OSpéÁ? -fˆÉOöñ©u;ìíûgCš÷Ó·°$ß]ì«£SòXCÁk&•D[•¦§Ht…¢uÕ«kýöj=Ê< *i’¿¬  ¦k†:…¥õ”×áýˆ³™<«¼™%Í㜠¦T×"Xðoµ+…ŠœŸ¾ ‰aÕ¼¼lŸ²³˜:Û“ŸÃݪÆ>–¬Ú¯,ùJmþÛ›Œ½ÀÑFÂÌtOW7|n•¬;t†5–ú4% 8Epdðt*-•ã@ 2› ø‘ÓÓÛUöM ;¶5ÓÆK ƒ_̤ÎÙH4G’yîÎ8ÓÛé“# -âJÈì°?ª©‹ý‰j:¦wÜ_Î6ÚXb²š2±„÷2u™Å (†9¹‡Ž¾4mÏxy7„H–â…:™"'Çæî?d[2ÀÆÅš†²bŽ»ŸˆÎ>Ú%Œ½C¨# -yzÎ87m°2}+3ÃzéâÏý°úÓaÄ• †Ê5g3ðIguTûãœÃÔ˜§Ó¤- óy#tbci4Ýñ2§½ŠÙ™N–2iÃÝñ¦qpËEò¬Ì]–ŒÞ#ƸòÒ< +ž üŸ‡£'?¸WZ`}çõÍ0(7ºIåŽ ù>Î÷9,ÍL=¼>âÖ¡…îjR£˜'W½…£{=cìüœˆ]cƒU×n Õážìz;¦ã¸¼z`„¤NýÍ;t5³ò3Þô à‚µD´¯q'êm[õ sVØt´åm?öPá¶ÆN%6;dl¸>yÕoå«® g©Wu—uÃòKµ=d<ŸrÑïVOJ{U„E¾5nË)»5Ѐ}Æ¡u¡Ìb§;4GƒÐe ¼³K:âwè?$S/’(À½àŽR‰ççjíù„ -‹td\7îiFŠÖHßuc ^)‘,×æ6.R‹ò!þJr¬‚+5²ç™ž\ÔÎZ_¯–"æ»ÔÁ1n^v&¡·¶ú¬t¥ØôwtÞ:Êá“jaê1¬¦O¤m¿Ì«uJvù^ÉvW/ä@×íÆëÍ*ðÕm\³Ù -è™S¯çΡXéž7äw;V\ÒîLÂÀVÅÿì0Ç~pôÒõÆ×ôFdÀ n×3 m õW'ÝTôWéÂÒÚ-Ò…³‚òÀ -àEk £6 -Ù™B m°ý‡(ÏG¡ƒÖ€˜à…v¾]{øhàe‹*¦pÔ‘•GÖb}šNíY86Ü”OFÒl>c|ÈX˜–ÖïëÉ™sÕWQןÁ;/§æv”^V’3P»¬ ÷Îñ{9û*—¬mˆ+ÚŒ&iø°qœ!­Õ.¶Åí‹Dð÷În0=*›æõs»¨’²§D–nA´%õñ®\Ô¢ýÐÝ𤞻Ÿ -سÔmᜣÎ,'õ‹Žl»iJzRW6—MÌ…çʹ=ëà›²;h…ö“˜oÅû9Aib&%òI:Ù^+ÿлé\Ó!OwãQu7 q“CºKAÉ¿nu_õ¥oï˜ÎWlÌ)§`UÆvLcÃç4Y ƒ&ú¡~«sOÓ0Ô¤KYñ¶ô~œŽ\))½ÇîöØhFD“ßF®ë-È"ötø{Œ~G¶4$CK† -ã® ïŸ 3ÄYë¨} -BO÷15=ËÛâH‘AøÅÏ’Xúé÷º2YÀrg2JWùb+é8Ñ“y—L¾ ïý–Ã¥¹b~Âÿï'ƒÄÌ5g€U?ŽÔnZˆ]ÏÊPBg+¡y¡%öTß[ù”µ®mh¶÷̉ê¯X[—î -…Ê—¶´ -ÀÕ-Š#«Z Ö¦XVÇ™IƒgÈìmk`j¼óßÜ£5§Z⤜Ðí㉠Œ̵ÿÙŽ¸Ôc-“yó16¿‘÷IÇkoŠyÄÙîop†…ƒ)ªÓDZÛÝ­áŒÌïf†®H/X€Š¨:Š3„Þ÷§÷<]KAåíú>QøÐbY¦{w§ OUØ„1˜žÅ#ŒUAk ß@Ø΢wÛzº{ -ÉùIb©Y)I£ÓÀcg³óÒCK$JŒ¥ù÷vð»"2º%ŸÉ .gmÀ„öÞ^½:Ò¿âÔ8Á¨p¯¾ŠI©Ñ¾ËŒY©ôv?%f§¥¦ÁTÚ-‰›vòUlíÆsò úBs@{\”=»Fôsõž•H#´ûk -§ˆŠ?Ie¦g¸*ÇÑüWY9>![õ¿@áªæ™¯7„«[EÙI"¥³Õáx¶#X¿^%öQÓõdK¶úl{]´Yvf Ì™ùTªÖñ„:Å©Y‹q½äoÀ´à±qn+ORN'¾Ç°Q¼WòBéðwÔ&ú@s¦…'ŒYˆÛ9iô.”ÏD×ÒKgŸ?8Jz-Aˆ+Ò0¿ -Sàp¨Õy½.+¼ÓŒo[+ /SºÇ¢¬T…½ÿ úÜ WµñO«"¥zfiVD#ñø£«ZìZTž¥psSõ ö„Ìþð¿±HázÂotŽÌ½Hwì–ïrÇIÍ(!M„ª zŽmY·²ª={²·Lߊ7œ"1r1††ížDŽ[Ê&Æ…âÇ%‚>åÒ``p×Ý`^R h½WÝ\Á[ŽP)1s¥‡19ûùdzÆn¿—Là‰`GVÚÔ*}îËuÂõtnü¥°.s óÊ¿yýTôÖ$ÉILz[$ }ãýWHy¥Öá·. áÿâ 0Âsê[ƒíjú\9BxC’¯ÁD°]ørëŠ+K¾t0ýf3È©—y=¬ŽÌmH[(úø¥”äß²3/7šåÀ{éçL#E»#;AIÃ`k±ü9Ë_ßçCÔÏ‘Œ_Xß6N)aQ`XøLÊxJõü>³òÙôû‡Ø‹1ê*¦ÄwQ˜†ý¬óˆƒKoã¼’'…IãÕã0nxQ¾¦b ÐÁÂÆïÒ)7’Èc²1’d kG20,?‡ô’71˜³`éÕÑî³ûßÞË< -…<–kü5€Ä]53µR_ƬۮôVxO¥9òJåw{ám™8že‰ 3ñÀõŽ;´Ò °²­©èy{‹‰@[T¯=·}Çw„–½(aÛ•-‘Õ?^ß›xyƒ–¤rfI áJ°J¹¦˜ŸòB¿¨›Ãý¿¬WÒ®á£M¥õ\SâÌ¡‰Ê™R$¶ÇDÎ[±§öê$X-mךl¾u¬iƒ`0íZèåaW_ÿb»óÔSÑR–Å-J&ö%ÞyŸ_!í>‹´ùJöÌÃüȃEÁ®ôßa„êñ X%”‹~Fz¯¨× -îQë -½î¬”¿6¦ÃV -)|½“Áøzèâïì`I¾­&½´^ÎSåÆ“wë¼Lº­¯Ià˜aG†$¡NÁ')ØÌ·‡NÁn>p±%=EÁMþâK+§„ñ3$ÛU‰£J}‚Ç[œdEjˆøuL?¥|XÞ¿´\z<>ÍÝ4pÄ•B åJ2Q—àÂ/ Æ%KÇanéÃD¡>coEZ%h«°ÀUä§ß.cÃTþíÏÕ|vÆHŸv;£=Ï€…éŸ/™)RŒèX‹‚RáÇNAûÏ¡‡úg¿ÓðôNŠgEžFävéÙ¶Bà“3b«\µƒ5³pÉBÍÁ._ã'ér‹|÷õèÖN|ûOš3.bž«ÉºEQûš ±H> -´½ðktôäšyN"S¥HOh}/9ôϘÞò•s æÅITîPÇ"~ï6Š-º¦-ÎLßÒÀeã)3j5Z›ØåÒÉW?“©éFî™ -w­‡tW&ÉTÇç›Ø'ðáí’TQ= ®ê8±c’”iTÊ8ÈjG=N¦íip@J-x„…îê³<54ŸÛÀèkGd%PY&½Îüb×(eÈ°&4ãàn³jO’Ô0Ó®Â2µ@ïj¥…ˆ ü`5ÙeþB|No¹Ít_šŒññjöØéDJpRsÖ’áÞ.š…ê´‘QI‚!Ö‰Ö²:e}eï½RÌ#sPŽ/õ5]ç"]í˜õÎÞ8é ^p ‚)äifVä6Fü”5¹eÎÀ¬àܘ#¼íëÁÙׯàæµÕƒÒÉÄ6{·L¢E\{†|6ŒîÐ){…Ö#$ÎYWÜl‘H™wé…H6Ûá8có¯ÄmTpZÈÇ¥Òøдï±uÿ¿’‘µšRWw.Q-ïæ §K,§ÌëI[¸Óäžø -Ôc\—2†¿dÞK*6ËÅ¢2_½=ý» 9x@÷¸ ‘%)ÁM¥ÝÇOL-²Æ›h&øùí÷jÍÕ5£2*aæ¼Z¢ÎA’ASe£{°lTLCøößb*â¡Óºn¡œ¥Š"vRŠXDÍó‘RÔÉãÙ^mIt0;™D KØQ¶ –!±h‘_„Ë×á€Îo«Ipör¡²Ýà¨jc°Õª“$‰EŽ~ ýÙ>YI!âcŸ6ñ¿0t’zb«þù(Xºh+¹YëWQ—™_Z»xL•\Àššò‹× °{mUÌ. ©sƒùÓÓé+ÛP ðÔÓMe¼û¢ âԢ͟6_Ñ^ è“f6 V\½ôqû[= W¤à=zèv¼ÙèssÀr‹kŸ,B:õW¼c¿Ã²t0§ªbÜLqáíüˆ&6#Έú^ ÁÑ&ÞrTMK_,óû¤:D §µ¨;»Ð˜÷¼À×ì°­[GЄœëBaFÛ¯8eì ι…ÜätV2‚e'+‚¾€ÁJ$¤„Ô“ÀÕµ…þ´•ëœ>LyPÏp:„9"q˜"nÚ«Ð|†*ÙêX?èýS‚²ÄÂjúN÷Él®M’€Õ)³ˆ`ñòcL7¹Ó«®ò.ͯ?àJläá -õ.a›31*.¾CoÖqW.{˜“©ÆÏäbÓàÞ•rM£” ¬ï ¢×cøIŒâq›µ—(ã%š`.AËDcyÙ‚BI½ƒˆg?ꃑÞd"·9,d£V³*xýþ£ëU…w{LÓ$tǦJcÝ ] -Ðç!VÝä ™j\yºút©¦4ÅØ-2W-™Ÿ%Tføòe³¾!†3VèqÏ!?H6`ŸÏŸ \V³Ö'ƒ–|µQËö¼­òZ4?ª¶‚ÓO3ͺ)ÅyóAýbj¯8&tÿôý”ÞL\y[Ãz¡–-ºÍ \©äÁr ö¨[>û^úE´?X„,^ÖÂܼt,K‡ÜÐ󔨾?¢¦ä´äixýç•`ÃË™ÅÉkÆ #ú–Uƒ"Ø$àcøèüƒõp˜@q® åñ’öBÚ Nq0úê­W?ÆRqŒspŸéð'~çØZhmëÌÂýç"ôÙ‹_º 5¹@M¬–?ù ê.æ*‹ ÊewµzºÉß™åž çP÷éüí¼XÏw‹ªq²»êþD$»úŒ>F*‰è§ÊÔ[eSù« ÀCŒ_š°ÎOþàaÍ¿Þ”Ú£Wn$ØžáôP¿SǺmíSý¸™sµ×´×~ØSÔHiCfÍ*rMä0Å,5bÕk0pÛurÂV'WfTn(Y¢Oì´ð˜,Ûb½ö±XŸ'dÇ—;@Ð!Â,ƒ-&%êÀYé°÷éž™K,Õ‹C^è+–ûˆõ ûBJo‡š˜e )ê>vÃ'”ðÊU²Û‡õ«ñ×%U¹A¯ãG˜hÂÛÝX?o½¥»Ðv¬%LìëÇÏàÙ[-x›Zfñ3,j«t\¤ æ‘SOcák!`¢¼„!º²c›#ä{|êÈÝÔ\éxT—ç dA¢’70þ•t3òb¨þbY¿Ç¬þ‰è!ýÔ¦”}š´Ãª×®US@vÌòc>Ü®¹¨IÖ'Ãò$8ÒÝÍ)(5›b1Æžm;º(±:ÑEPź/§Ü3‘Üù—ö(<¹ (_¬r‡5Yî1Ú¸ &–‹†3n¬âRkf¼8°Ì–ÇúÄìÄ€EÁ·Qgìâ(öf@Þ½¬Ä]GÖ.oëö‹ -ø›wäŽ]ïn8 'atò©KI}âÁ&øCüpß«•ôP ®™T'“2ôvÿ@e±ž¶ -s½³hû'@‡ÚÜRU3X˫ΑÐshwóþš³³ÚF‹™Ã”´°:ÚµáF2Ÿ[~„¼Zu%[ÌRL(fû€UÉì~ñíþfCü×õ^r”ûî r—¹-+:}:©½×÷]W.fm·¾÷QÒ -úZÒàü˜WÖÁT}©¨nSv+¹V†D0ˆk±Gã,ŒÊ‚kíw¹y`ç -ó»ßhÌ@4Áü p1fÁ%BÆGÌô˜«ýÙYBõî{ÿÊêGO&`“ -°¿?µ·ƒüâaXîˆg”HrdWGlM‚©Ìó2AËF<Ä*Îèb´ýP‹@•¡Àóᩈý§8áއĤÁ…¸x37ßN¼ ”ÐX¿ÙuÉ"?E¼zZá¬|qbuAX²€‡•ª‚’„÷BŽT2üAË$ˆCí{ÑhŠ¹*à,–bM^¨šøŠŒÿÞáa äh)©‰2ÍØ*M=·«Ñ -Ç¿YÝ4^à”`Ƚ 6¼ˆN­¹§lÞQ¬²Òy”É i®9'ÐÖªÆA~–£Hˆ$!’&û¶":] . ‰'13CÓ)“Ó·îX$¸$Ï~®Ö#g©³À$‘+/õTù€Ìê†e1¨!0BðJ¬TËò\”Á4æ†É+qù©Ýú B&åÔÅ% -È«ÆÄz¬­¤¬¿„„[a1ŠkDNž¤OƘc—®|#|{óa€ç}¸‡NŽ>F­6!—Ž ¡ºk,|Á­ñæh;/L+©ySŸáø¢ƒ,vjbß¹B "bîö3Iûä\½ÃsÉÕ/ßÞçì@ „ídiÀ|­wöëæü…ÈЩt'±ÓAÌ·x,[KëÖ–3LÛqp¤#øH‡ìàÕRV{õ„—ìé£%LŠŒQM[LJ§•YÊ‹5ÐfÉ;Å7º -£"ÙodIH -&Åd_$T–ó&œXòæŸA(Rœ?ƒ‰//¡€¦ïY @§Î‡5ñ#ÜC'­ÚrWVÈ hïi³Øö¸þ~7èÊ—icÒt>¹¿Cæ!µàÁóú0MBä1‚eÎþp[Ìj–>šQÚIFPBh,y;tEKër¡6#ÏõÿèuKÔR PšÓˆÔ#_ë¬È5#áýÐ0.:E™bá6ŒùÇêÀ ôIÝÞñ9Ôéaœ Ÿ»´\$&€tÐþÂ.KpàìθKа­j{ÂÊ â Å€<î¯ þRQ—.¿O/“àÿÕœdzó‘Ý“hN#«Å‹æ™æMÏ$îÝÁ}öy4šî@ËÿuµÚMÕT"¿1»wGjSôôœ¢ÃÖ~CstIZó ³š#uA͇8êr{gíÖš`¾LH7§˜’WŒ‚ÑOQÆNqýZÔ­ÌøP·ø= ¼ú¬š Ì~‹š%×RLõ@ц·óóÕ;ttûIPHjL± ô#O·º™o•Sw~3Cô ’«GÆctô«Ña ¿’tÌQÓîÇR"ò¥0mMvdq‰3ïì"ª)c'¢{´óF© ‹\hº(v³Oèc^FäµáÃI&”ÝøPôÞ§›“X{j›ÿä»ãdCfÚª¤uꉴ ÚÍVB;¿€Žjâd×r#?%rŠ»,Ø2T)¹‡©¿¸bïÚS±¨9Nþ¼@ ÌŶ]z„œºópžÃàm¨{UÊÈ‘“AãÙ¯¨ 8ey[µ-e)¯"zð°D«Òm~…òÞÃØÖ‡#ª÷?l¯vOý¥ µ7VÜTО¸hæ=|lM¥¯sDBçkîÂÔjt³!¼Ù9v—õÍVˀ̈¼½ÔKù¡W•]õk}!-cÑ¡õÃ?ž¦-wô·žöí¬Æt6¦ýï*iÐSß¡|Ɉ§¡ƒâkËåóí-SÎÖ[£¹Z­o@_ÞÓº˜,OÃ|ÉLœií¥þm>:Vf…$gú¿tžï¡ª«â£,¥{`— Ú”1 ³-unÈï¬ÕÏY³±^7RYMYáÄŠûÞo§3¹³ÀЭå¸.àƒ¸ÏXï£Øx­ºÅ¥}}òqä­·äØ‘e)²°KÏ»H_U÷#F£ÔyJŽXðÖÝZ†sà'‰îšÓcÅ< ç0ƒ‹Å¦/Èà ÿýÃïy»Ga`ê£?Ï¢, -JZRêÏ+–/¯¬º–2…Ëü.©j†ôìŠR -[—dXsFŸ‹¢:æ<àVÛ+b7וQ[úGèM¼–‹=Qìj°ÙÊÏë±g¼"œöÉÑõ† §×®Ý‰[n6?,Á¼_xôšçÅê“R'Ü»sÐÃà -?=MÃÏÐæFš½‰Ž@Â:Ì«2ËkKÖêQÁÄÉ ¡Ur C‰òNt*¾8)¶Ž… ,d¤F*¶‘'pQ>L„:Ÿ÷lÝL,j|'Õ7ˆ˜Ó9˵Ì3¢žliRVòÙ0":„=jGK¢Rá9ö²£òÚÁÅ'Nª×$;ø¹y˜dЃ©ñŒ#£ -æ r´`³m\J²ò´³3ò€%b´dëÞQ™¬0qrù“žÁB$Z¤ù$‚Zïò™ykÁGq0m¦ý tÒà¨Q³WuðéG -endstream -endobj -2249 0 obj -<< -/Length1 1776 -/Length2 19027 -/Length3 0 -/Length 20803 ->> -stream -%!PS-AdobeFont-1.0: LMMono8-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono8-Regular known{/LMMono8-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono8-Regular)readonly def -/FamilyName(LMMono8)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle 0 def -/UnderlinePosition -133 def -/UnderlineThickness 61 def -end readonly def -/FontName /EOXOPS+LMMono8-Regular def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 105 /i put -dup 108 /l put -dup 110 /n put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-456 -320 743 1014}readonly def -currentdict end -currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿[úKª•LI5Œƒ(¬Ú¶Ÿª>H·Vhg!ÁM8óyiÆ4´óW~Ή\ef5S›ƒDy¼îè ™/ÇÓs©jeX¨Qö²yýsÜC´rny,qš€ÀwʘNó>~ï:Þ„¡Ó98ˆ>Æ0—jìÐõãºE™ Û¸t–†”=ÎøxÌqÚ¡×ÍæsaÐ2Ô… )–cH.#{2­ÐVí°”ñ#ØB¦9Ü;öà‡êT§ðÿO›z9R¸BѹŠ:µ2@)s¼UFìŒÒïÔÕEº’»+¹ÓöŸÑ~`Nc’ŒdÙ`À§XXyÿ¯R1ð×T›ŽuGxei}¯¯'h©YÌ°®ëC·s¤ -E€ˆåψ#†poyL0 !~DðûÍ,ÃîYÀÙJC–Þ}”¦rH6¿ÓŒeN Ó¸l¥HŸñ¸È>·Mtô·Ùn¨cÈð=¤,LØ¡ šÛv~ÉÞž(… v”w¥*B¤@nx̽J 9܇A•&oóĬ‚ßžßIŸdyz„Ézg ªðNž•ÏA¿î -ÿ})/Äþ¹Ñ‘Z=q·´çx -ÞxG~½ýÇÞÕÆ»xzòˆW™…5@CütÕ¾ÞЈTîG©=ظçð’½A¸DÁÅ\g1*mÃaXŒÃç‹ò΃Þf»Rý -žàåqõÎ÷uú`e(Å¡Ž"av‘. œ{‰ÔL¸¤#eå¼ÇÓ(ìvŸKL9’¯ëeÛLHAkά&™õI¡ú§á0Çï¢q\JL›hÞÑ(Y|o=æ£6¦‘[aEáðŒfÄ£àI>8É»{Oæ*dÉofkÒ¢fŸ8V”J:_#w¾’.yŽÿoPxY/Ûð±T‚0RÀ|K¸ °Yk+qœÅHfƺ'/,þá:Üõ¡¿rÌSW÷UÄŽIôtG`㚺ÏÓý -¥Û¦IÄB£î“á6mz ñ|ÝrÍ3|«=5­º#“y.‚ø•E\®!å.³î´Z&f>hn§<¤gØ:Ù7Œ¥SÈЋk4ûóÝŸìH™ŽÔ"ç{¹–¹§ â 1{—Z«ðß›Cp¶Ä1¯(:_H.VO1|€¬ÞeøôXFu£ÅýÅ>·fÊŒ PbÄ—¨ÅÁsqM?&ÉÓ§40%s»’CdŠâVœö÷ŽL¬¬Û>Ù½Íxņz±çÐ=5Õ …ˆ[R@r®v¦yêD{”Û\²rÐå\,‰À­µÊäçšwHç¼ £ÆM³vÔ†€`ù02¶Šîwšãñ%}ôfõ‘dUu$†¸xž”ÐÑô ñVú¨–E¡C¹Ò¥\J£¸Xóø%x¬oü’ n»NKPŠ1:¹ënIüFZ8„Äwö¯ÓîG‰£uuÔð…YS24¶—_Û¼¦7ÌÐh¨gs£ûtÐ}Õ—/¨+çS+ÑœýÖ’…¿r_²)úÅ°F3fä˜È(ÍåQì³ÈÜÉ0$ù%ØÒí±Â²EÍb*K”Vü‰˜0Ö Ã#x [Èô&ü&ÕQÕí>°Ñ"@ høILÆ´1ºð€MƒR~ÎzÊÊY¹æWúžì¿@÷Ÿ¾†_€¯Ž”, Ý„|‚`Ù mœîD™ØÂÄm3,ÝU°waÞsIz;H"žëšÅäð%¦)‰ÉNyŽàëtk#Ë¢¢•$ò¢žáˆUÒ/¢µG€ü»I8n¹<µjÝVõõ«3/Á~«Öä%ÊTE\·þÅ}@çve)°`_QÐf(IñO.»ì„ÉØ9Ï’1ÔÞ”+yQß>wîá'"ùq/šˆÛ¨3 dn˜_¢Ìûºy닇œ×/âµPŸÿBþkN[hý­†UmzIÆZ+(°0Ìëû’Æþ/ëë-AFà¥2²wȧ=¯€\U®Bwè[<‡†á•D›ÌFßÏË.Ô5fù Á²Í‹YAsM@FC=€ÞÎù×oÚ£;©Îܲ*;ŒS}2µbâ»*—0/çP‘aô…˶ÓxÀ¯†€ØŽtHa5#Qû΋Û+™òl_B§‰Ö"Ìâ@ŽÈOC*rÙù1Ün:ñ)lQ‹_{ϵXV°üv&Ô.{e¬zÜF•<ØÓpòâ×+^àÃð:`:!jù}Gyì¨1Rx°´Ñ£ÞžÁ;DŸË×ÖwLõêS*¨†ì ƒžMÞÖ°RÐuÄvçy+Wîð.ðÛ?I²+(Ž`›Cwc‚Ä8“b®§þNc{E)\:}WŒj3v¹w-wù’¸Œ=Ã-õT/‡zÈ[ÿ"yL•Û­ +· üñÒô/oªà>¥<´$ã·aéu­¸þ5Gž ÍÝàÑQ@çÄO0LÓàZ…’ Õ÷Ù>D¹É” -‘¥”õ¡ªŠ_âÍOæXÛçGsš ’ïnÇNºl² -ÃüÍãÆ»žýÔ°Óf{_Ük㣀Sx„Ã2c,ÜÇPþ`«ÐöMÁ›á6€Ë~Ȥ¡ãTKÀàa2YÓö–cÿÞ¦Mkb;c1nŽ=-îšøøîȺ—! HíñDyЫåä4‰~,%ÉlOxôÐd4`ì•&É*í4@Ý9¸(ºóæRjýX3;UnóØü­G”G:e1ïO#FWÐR²&©a ˆ¤šßÓÄ)Ò×gJbêÍË»8GôAh–Ì‘q¤^]ÏÞŸNÍiý2YÔÈXœüŸnñq©¤ú@ ¶W…‰ëˆôRõa“ÉÖÓW*ªÅZ@Xl¤ùeª*ûViik +HRÆsìÆ,¨øáJyYstÜK!]~À•ëèj9áîD˜·ø®¿h¦iL$VgÄmQn¬pJot$žŸ^·Ê7€žïÃ?Í¿ŸBö_àiNQ"1 Çø#ì)I@dJÖtD¤¨¸Rü\‹u^¦ÿXè\VÉ|4{çð¦ÿ#_ÈdQ$zÏŒ‚c³sywFeOÁnØéšãOÕ#-J£/ÈC•Zй?’F/•³¸Ï÷3ïÀ†MÄÍI› SM3È""oÁ™Òaéàn!(9„óÆE_ÅRG›qrm{+ÇÕ>&ÄðöBퟔmr4Å| dlv3=>õ­y9äçT¾°Kù\…Ú·¤¿M䜃HªËÜ=&!­Áx†Ï¨Ÿíké°Ä–Jè8Ë9â=מpíŠI"ŸÔOEÌlÈ\!4¤m®,ôm¦Ì°wë„¥?´ ®¯î ¹+ÆÑ…‘3ÿwö·»GøJž:•’i$e8IÀ(áÅ`.µÔÔ€¼çcÂ{¹¶Žƒg™¡ØýÆA±D]©Š|ÏWWøY½ËP·ˆ2›P`+®el¤¹ óç±Ðó ¡Jž-þp}°\§#Ùä0§yω9ù -¢ þŠÓâO=ä†y$ä*¢à?ý--!ÏsèÂmQÃC,É̯7¤F½-ľòbïÆë°®ëj{Ù¦`oDTDT+žÝ6n`pbúý¾søöù•P궗<^¡K0TùpV -³›ý#ŠYºW™ÊªAŸ^™ûc,ëÖ‘ÁòšýR˽%Šß°´¾_$q¦ ™QؤW¤ñË4DwצQa0Ÿ1R¸„ tÄÄDéÄA*«2kTK%’$³Ö5ªÏQÕ¤L„–Œéú½ä; pi~y¥ôö_Ü1…úÛò÷à9õ¶UúÌvÖº(çÉž­ðÀ±è¼«meE'‡À¬K0ªÑü ^C¬I’탾œ»F‹i¢r)݆ìꪤu½äcwÏüH,ü1] eǵO5­:WˆÃµHQQôÞ«ta`±;gN¹q,8Ùt>!ÉŒ­³PèÜ›ÛûBË‚¥µ¹;ûEL|Õ˜¼ÅúØ®u³òé[÷@¡­Q»ߺZ>e,‚ --Œ‚r#áíKDë"élÅÑ…ôñeÏy¤vÇŒŽÁDÞ_”ûºÃæÙ@En-2l ïL€Y4²û~ú ©‹È;ñƒB/“Û! i»jèœEP{á¶i3…]8ªÐuɯü`b¬Žû9£ÅHÚibì*Á°é˜sÙS¥Æ”õ½ ¿ÕÎJ@ì<\pï˜$l ½×ð.tSUQ–óB¹üdÁ?6,‡!KlR×µž§Jd®‚;¡ñGI¶Ž+ù7§D"eóšÐ¼ëP·å-ë¶`q'2™o•räK ViHBA¨Ö¯Ì±:7º®çE÷çMGœ·w³‹îÁeíðŠ¡ª›‹@¾ñ6ç -(M({ó¬ƒM›w„œ7°côòQ•ƒ$þ&GĬ)U·qÉwìf†›ßŠ`-'tì¦ò•kðòÜßS&½†ƒ¶’ÛýÃi)š»‘öb¥nþgã4ø*˜×¾%¾."™9àŠ$y¾vG~Q“”CSym†ª^(„ÃÛ9à8tD/?å :³jb*j‰™VM؉Ÿ*Šþjñܕݽ¥ÅX<ןñ6ëD¨Þ‡Ú'Ÿ÷ÕK@ùT’ô@(6AmÅs3P[‹ÑÇV6÷÷tP_þ²€¾7JH¡ 'ßÓ-êº)>ì3k¥¬[_Ï:!!¡Z2ŒU˜ÕÁ›s>·}Ypöúô4%˜‚‹øŽôÿiôoÂΨK - ÈÍ'xK¾A|Ò'*Ï“l¼H’¼÷Ë¿8ÅŽOÅa¡-+ë´Jq÷bH„å9K»þiOÄÐsc¾MpÜkÒ*¼ÐC"K<Õ -Ío]|Ë8º@ú€˜-}LÐá×Ï"t›D_sUé&­úWWç<ñ#ÌîcŸ*ÙrOF+ݯôV`&¼)Ó™ì“DÊ.œ°A‘:þ´äW#3²Ž¦@ò3 ù™'®ýµã9Ó0¼Þù˜Þ V×Ò…¹ŠãíÉ'k|›å½ýscÀ’5Û¯*6ŽHl Níõ=ÚMKÐÅTµÇ“·%˜Û)â/röÎ -*Ò²Jv«H¥ó ¨ôKÃÈyKÛ´")°ÁS-ç·yRB«TrW2â´MU»R+e^ëÔˆb9,¬>Eç7q*Ü}.%b‹&Ä=dÊ|bJr Q4aÌ¡)õñlJ$ºO¡n„·9ä?ôVµÄ1ˆÖOÿÕOû.šøëìÎŲK“¢!y,§QDç ê6Š5”~Ñ1EÞ[âÝÍÌêШ:"þØY+‹B 3c ÁüJ¿9›‡PµTUü^C”!±$ÕÍè 5×Ò2­ÜH#iÿäé1è¢^±ì·vfîÙˆŠ’¥Ÿ*j wh¹‰fÈ9ƒÑyû°Gc5Ñ9Þ8ïÈ.„ç6 `ëGuÊòeI¹Ÿ6átxM!Ê“‹1Ø{›dbȘ£¤ŸÇ2·ç®ªE²õm’Еkó!­…Ÿ*”sóå&ÜéѲ¦½lƒý)Qæ~ ž¥ûR²u˜%ÌH6Ý[|u¸£ßV.xš1ÞÇèÙÕ¸Àpf09X”ËÍá“jaê1¬¦O¤m¿Ì«uJvþYÀ`·^ñJºˆŽŠ†¹ -Ú:þt!k}óšE©su{ÁlÅ1%Ò¦Š‘*º}WØši/Ô¿Ð6Wÿêï…yÞ®'ÎÎïÒ‰G¼»É1“tânk÷ú(^²””“¶omÜÑ=ŸŠÈÎÌ‘î0Gc»¡ªù×K$ú~¬ï¼¬rÞƒO>×ùõ\! Omø¢(mŒ~½œÑâ· -‚ó,· ÌÈ ÎÔï@§:ñh#™rÌó2dˆÝ³Õ¯k‚…ä´hÛùÈ®?´þìÇøö?ºàdˆ3¨¨å4Äû΂æ|ð–£³7kt|:Ûªh×¥@~ ¢cÎÊóOõÌ­@ÏWQÉps]_Hö÷‰ÿNs­Ÿ&°÷ï -Ù m°³Õõp~¾1þfã ­&âk"qM€ì$¦d©‚`l´³@•æ{²mT§ž÷W)û•(Gb5]üwTåƒFÙÊ[t66®ØQBÌ -y‡"6Îj}¡n4­Ô3-1Âf.¡œf6VTÄ-æÿø¬†ƒÝbírq&ò6ÇX0ÿ+þõ–Å$³'–šqEŸ›I®°jv(jÜh©¨§|4;dWWVÕ9¤s±³:¸ü…¬{¾%TRM•Š$ó%Ê71å@X™É§å -û¬]áテs嘭žN¿aÈ:H¬ÊyŽŒùMZñ¬ed£7 êž«Ò¡DòXëMe{íß°d»^o¢Å¸zw–6v šUЈ–xàz9iq^Ä‘;8#φ‰xª!Hú£R·ãå†íÐÌÖŒËÓð¦ÕWVZƒ5@\UöïîM„ŠžáÉVgêÎZtÖ桾12ôgÃ{¿yÔ8V•*_D½°î˜›H¹Dt­;ã:0í iÿ¡‘áziTÕ;‘ÑĸÂÅÔ¥¼ ˆ.©jKǪ¯ž«Ö»'+MÚ¢jýøœ©‹æWÂSu8¤Ú\FîÂZÿ&!Øeøiz܃‘r‹] ®Âÿ½ô2ø£Ë9>¹-<òObC¼Bç±ñõuÔ‡zÌ•Q96ÛèG¹m~ƒõê_·%˜Z¯çΡXéž7äw;V\ÒîLÂÄ™UË [ºYyZS(Ϩ˜ú%´Ù¼YªÖ>7ÉÆ2™äV|lÅE™v›/"ò°./aóBršž¾‡{Ti–ÆR]úO^¤ÿcv:1=3cŒ^ðVý«gXšRÖlÔÓ¾{iŒ²d9ó+œ -¼k\*+èõ®LpAR›EqŽ_jüŽæâî˜v93Ø޳ƵÞG´G[¥}´ªõéVl»`âÎ -2…ÕJW\áî=Šh·‰¿˜ZdéØ˼œÜÎŽ…šåKäM‘•9â<ÔÇçíÿQÆþ2¡"Ÿ} -wTÄÂv ÖÎY%Ÿ×:Ø3Å1E°^>úÅÓãëJhœ)]·&Ñ“òö×3q嵺ʒ4u ]ή›’«j¹¦G¤æY¡9ƒ–ü.khoºòfzww÷B=*=¬ì0:'&oÁÐäÁ¦ûW‡[ÄozQ™Úç¼~ëL\EÚ³[ŠŒŽû×’Ș«ø òÅñÍÓ§²ÇÅÛï^0ý…”‡ù\j!"Íác_NRq"LÁ›mAucxhÔ€ßlS ƒ¨t³*Láô v Ï€ÿÆyƒ²åÁ<ªÃUé•©bÙ’vk¶€_€1[ËÁ´Às~»b?y³ÇcÎô¨ØβGz·G…ÈÓéW'œ„çgÆ6ìïÀVø,¢åÛ Ä>b¾+ßHTª‰žÎFvØŠªSÑbÐ?!¶Ýúf°B{õ¾?|+HƒÇÈ!EÁwJO¥W{Ô²UÍaªj0\Œ&6‚ÐShÛ|`"¼Å£¦Yž„@Ü7ØS3ŠŽb%j“~@óÅcVbîâì†q!)<erLoVyXœƒ=LŒ›S‘.!}Ì 'ç$³S FÔ²4ÊZñB.õK ³Î!E ù`Ï ™ëK@øk’ó¥$ŽO4Ä’SDU— zH ÎÏ^y62ÅN¬ž¡S Kµ|„!NŸâQ`»jX:'"w‹E¶ÂÚ×Ëüc§¦u®z¬/´1 -â@hµ†ÆyЛþœ£kF±¤­UlÐ"âo¨:„û^ÑF^„ìTäF¥çÇÑÅÍH`tŸ‚ÿÚá95†ïÕyÖf !gßM±ŽX‘~Æ„$Qã÷DMàATcíú÷ßcÞ¾¿`;c²÷PÛ£CCwäf‡`d›nþ–aÕÑp7¦Ë;¡˜ê÷”7U¿L*Ú 0k¹è<Dz,hýpérîOkÒGˆ ÉÖûCv! UN¦ŒÒ'o#˜[AÃ2 nØí­T‡w6Ÿma˜ú ‰§7›Ù)nnå¦=´äóhÕÍ"§á, Η`"#EC}Ø‘Po‰¦=þ»ˆÏÐkO8XgTÒ-è‹QãéØ·¯¿Y¤FKÁ ¾Ül©Ë…5DvóSM{—WÄc«²z¶çFοœè³IÎ~/IøªàÏâµ³¥ UK†&Ó\çPôIrî×]…fÛr‰)nF„QÏÿ$\Q²ÓÑWÊlö~}ÛUp§ 921ßÑØZ½c„qï€C°-¥)—Ô:ÞAy¿yh E2×Î1&pŸðƒ¸hL–\DÇøé&к©'«Áƒ¥8%çÍí¡aATx—^%Ñé(ņzI_ˆV[£¼ÑÆL©|0·bÇò -Jº … -jûýºnOY¯×Nrz=;Øo8ÒÇ"#ŽðTjïøDgÓ\•íj -)^àŸô_- -õ9©» ÿ‡pCÍÝÉö¾¹4ê31RÂ\'ÃÇqµV£20šºûÇ#7È™h±ã±Òw -RoðÊt³ô<åGÀýP¹¾¡”|y2êc/ˆé­Š1Q> o*D/d>–õh`ŒjŽ535î'mžž›ÄTŸ4€§U>Í'³(ê„ÐS1USóÅø§&aeŒÝ3¾4í »ï•%ÛìþZ™J¹ %ó襠€Ùì柎e˜¸5 ¹=ˆQ×ÓÞ<\c{«T+]ݤ[aR6jaÔ–[˜‰cg† †7˜'î÷B–´õ^ç+*dòù‰¦×­|‡]ËÛ93äüKAú7‘mi%T#0Df—Ðh•Êßp3Oö×´Fö{÷ -ëóZ*àk ÙtϦ”ìÃì2ªqNe -ò„’nÆ—0¹ˆÝ‚ÿÔa ÍÞSî"Þûš„áÐÏøÿ æz¨È¨ qÁ?žn±xÞ;ºÂk_Y\­æñí¯²ò°´Ò­ø*ï5aèlewOlÑåkYtzßç®uûËcÞ&"eÒ£œÞ™^¨.=Mîî:”ÙJþÙ$C ˆÚ`ÕM«ðò‹pu7‰Æ9ÔϚЕཕ0Õ望D×­O¾ I”õ(åi À?þŸsPIX Œ›Px:ñ,ã“>P“u‡iрݓæ\>J/0“ *·>¸¤«¥a1ÃÃâÛ=’T6:¿²ò²ÿÈcþHè Ð -=Øé<œ'€ÿ­%¼sOߢÙáLôþïó¾íÛ ¶xkF¦!çláý'Cwñ£­ÊÛáQ™A®·g1î&-hF'܃žìíŠð§€ZÎK^óFöìÍMÍÍGÝwëÄk4X›X/uÕÊ·±°µ0ÈÌ\Ahe°~í&ì -ÿRöX}\g×®¿ Ó»0±ÊЬKú5½9ã‚ë/¥å°[žòZW½;U`‡× BQŒCÜá‘o}-l—Rç5nê¸à6äæqå%ˆâÖ-hêŸ]¿û×dáæFû£=ø¬ÃÜÇBÈ’å=ó­–‘Ô"5W/g¬\ åž´õ%ãlRnuIʉ-}-©Û+LÇì´äxÔ u|mDT–Ížf\L²³Í¦Ã¾²r½¥Éôþ÷9©@TcÖ šÝß6|?ÏS;‰Èm¯'½ËÚ¼WR@bs²q]7\Ô©D¼ýj•Ãô`;¶öñÁ3sÿÅ%% \šû°!ƒ¢híAxÌ݇¾Œ!ë:š¿÷©Äj£[«@aßN­‡x3ùÏ<@ƒðb ¦ø’J Ìa„.N0ÁO…šÉpÅÒDÄœ& -SÛÓC>›¤5i¿ó…ïÔù ®/#;(N»`¶-ŠŒ«“êeþ&j×®ªZ¦8"SË+¦ëÌûÂk5½HDA<625ÕÙŽ)¦În³W$Òàl†ÌgöÕ¡™‡±¿¨£Sã'{ê×ý®ý7¯vmO[‡Ã ÷íÐ? -"°N"/¨ïj1¹‚ z¯||•/zà+%9öÚ͈­™¢¶†ûì4¦ùìO…ì1|8s‹Ö©ßžÂxZ ±RP™sXÊš?Û°rĸšAKBäÂt@Q=:sƒ×øwñ´]š§ ÜT‚×Ѭ™xgë1³ t @C“ŽuEˆô%x&X½¯cèy-y4 "<’Ì,Æ•›A•(²ƒà> /9¯óuVSmF.45Á)­ôNpmà5ÓŸ—þL¾GfUI_Hi°ZŽ¨¥½1âýJOtãd›=P Ï9¡’¾‘øÔ¯€´C’ÚD&ièRIíD½l5®\×sI\GC¼¦Úq·¨ŒcSlgðb-2ÝšVîrsì9=5bSÆô;>R:¨1<*NÕ "ÅØå"ê6ºz]3GL’u}®ªUµ]¨è1ÆÞ$öµX-wWgüdk© C† iÐC©ð‚žž¿ö­<äZrNÕôWqS'7ÊÄþ&Rf+Úp×™h4*^Þ×L›ï= ‚Ãi4½îbéŸoè,Wш,õóR¬CŸ -LUÍhúÜòjM¢Ò1•O¹?·Æ¸êÔoçá‰v+¬ÛC –°E®µ”Ìþaõ#›·o?ø¾h»Å¢%^xšË×]ÓÙØ`§ ËL ‰NŠw–SÁén­‚Æ]y( 킲ùÕË]2¹?,¨úTm±¥¢¿3ÇuŽ ’QÝLh"o&|¤À霤èy"²œÈ(­Ù²X,öÇåm±Ësí%f9JZx‚ß+‡“_žƒÎ0â:Lö/=U©Ø¿bÌÉ•%Ð(Üðø••À•›A•(²ƒà> /9¯óuVSmF.1¯ROŽ$«ÜmóVÁÝ„MœeÃ¥°Ù+‡rªSF×Ý‘°KÉ‚ [ŸOcêù L;ÎUkjoRLÚ>"–^/¥ªæÝ¢üêü´¶5̈ØïÀ„ÈÞ£(ë`飸ƒåÑÄå‚‘f¸Û»ÙHF)QW¼ò\×O‘É#œôÁlR3R)¢¢ \GURûÅĨÿ® kÔú"‡h<Ó›§\(¬0·@ý†«ÍYMå/þœ$÷ÌOù>î“Ofs¿Å»›£9 æþ=²ãð[Â.€/ÍÄ Bˆ‹üÇÕÍc§Rø—œz\¥Õ/¡´Œñ@¹4ëXX Qª(¶kÌüxUFr´ÏTô·¼ðßMU5cêÒ¥Û—Š9\VÚK™”·L?À_覅¹‘ùÏÖ…†³|$¿´+·ÝÖ-€—ôÂè ×þ \ÐÐa+jåÖªê–iq›®4N_ ùÛ)GbSz„ÞÊëÔâ»é„±é0?BŠhÖ¡•’ˆÿ´JÏTnXÚË»·òVDSKÂþq²`Fyâshda-„çä´Ñ˜—<¯ömªaJö›7ª,xC§dÇs/Gª/MÖe‡†}ÓÔŸ_1° JØêîWaµ3è°WÃ,dáÏ­œ$ki ÀÕ¼z-gÊfµL}Ër†-‡®‡ù$›/Ï“.ß݆´UôÖ{“ëdX+}{ŽDì–Ê(ˆ´yâ^X[þš‘ù>íÒ¥€§¤4ÌG*Ù0÷÷$£ÄÛ{¾ž>oé¯gv)ÚlEƒ£#»~»Áõë¸%UŠô»oódí -ÿ3û†3AÑ'Ψ -³Ùo`öív‹Ø|» (Ïyí=U¦½%Œ R|5ò;/°d–êF, 1Õ©  5%9h¢ß±@`Û½×E¼96Æ«¾Ú–&MwA{ s™°$ÐÔœ;V‘Á¬'žë¤([¦ «9yø$òð -X«Ý jH­ -é»A^N8Uò##ü !^ÃM ÚkÝS&þfìÌÌ"ï)hÍñÊS8àq&. Kd:6¤BŒ£0ÕlþÂh´UÊ©½ -*2† Âýú«ÓpÕ8K4ÖŒ´á%hë -¦K\Ÿzñ ¹cŽÉæ_uÄýy/&…ó(((é1xa8CR~…Ÿ!–B–k¨®©òçñ«m5?S¹ø«{†8DDz£”üÿ -K K»ÁØõm\A<ÓaþŒ€Qc¦•}æªJ÷úicçzÉ¡šÖ*Èc“YTIõÝcxÅASÈÕlæGŽ›ã2bf²Õ=ŒD¿Dd+á¨×õwaäPÆ^ÎG5RüÚHOõ7 Tº_Nʃy÷÷¿ÙÍI~fËãr‹iº9Ö¥•Ý`6à¿^ŠÎ<’…™aUry›et'ÛuÿŽ}ßnž?G*{ž0(ÄðÅaŽcµ `û a<„8é¯_ñÁ¼ŸÁuB`ÿÀ­DQ“¿n_k1l~AHô?h´3ç6Òá\¾8³~ˆáƒ€•èˆ@÷é¿™~Šff‘œPú1ˆ…È"Ù0«½Ü,õ:Á‰Ê6oºŸè‚1Y”çpO%e1åÈ,®Ê…­v8óQ/BžŒì"ʼÍþx•¡±£œñêËÜŠ‡ì”ÛK»´ÞkL:îA@I#ˆg-¸9¬”%&h® O#2š–Ž8cÞeıï8{Xé(¯ ²W¤ -Â)³?,-"ZH—ï|c¿\jöÀL7/Wq™Uý¢-é`„×W÷ tË„‘.@j,š¿ó†à=œ›£ñ¨ÓáÊ!VöX§ÿ_‹ò`G Ylx2œµ -ÊârÐbÞÑüERÀ·îé¿+FžÏ—e¥ÙØï«PÂh••>I<ÕãQ›¥FA½Xðì8Ÿ¬­£¡r:\$’ºöí÷º 9: ºÂx‹6Z¤ÛnE¯B#‰ÎÏU2»×%»’{“j‰ è»åH¨É-mR»½WÝ¿t ?:²nEl³¨ -JÃø‘PY¼UßææG…$ÕŸTž -]E 5¨¥¬â‰Ï-n—”MµÂ™‘Ö÷ȘœQ- fÖÛ¼$ÕσNE¹D²*Ú °øV«QÌßÔT}¸Á¢ì}äW3Çë¨6¥‹J:©³?^¹·Ž™o¦hIwrC°Úð,ú¶ëÒ4±³’ž¡ZO¸Ñ)ÚæxMˆ9€Ä–$…ßèŒ ]FÂS%*÷€\¯ëßÿxëÙ@ñ³ÇÇ‚!°Îà`5@jlo*x¡f«¼.sEPo¿B8’p¬‰2K 8ü¢å²˜\û´ŽãÅ8¯0ú>Xe/¨‚z¾"›©”ûJ…ã€W¸G’¿Ì[ˆÒW‘0¡2äN甥ª§îòÒËÿ§}ˆ‚r6f`Áœ¨ºìo !¬wQ®qÇkw–¶µO'þ±Ùý$ï-„‹-Ÿ6€$ýƒvr¥Úöò×Ùö€yþ¶ÃTËex$dÒ¾BÀØêû舿±‰È®Xæf¹¬Íú"E6LÊd? §ÐÀ;üMItfÇ𑢇ûŒ0†^§I ú;L} ‡”àxÿ¤ŸdLÈÝ›f⤤-å¤×åRPÅ*³…ê™è@`ëJºòç! §dÛpÀ¶©(U>ÑÐrÄã¶O÷^wáåÕ–í€Hu½;e†ãÄJÐ^çÐÛ¥¾¦ßx–bÃÈÉ^2†!A:g® ñ7÷»ÁŶ‚>/BW›=OŒb¸‘ÄÆÿrø;)fÑ•P<1ßuWœÒLËZ|ég/4[œ,'C‹í£ßRš™^,â‡.“®Üâ–â>îAùñ­÷øÌS²úKÔ)+Ý40:Æ üÖ‘˜‘¤4 ªÎ†{áô“ÍWŸ1'ÑØÌøÛ•óŒ]µ}æUz™µÆzÜ>|Æ÷ÅÄT³¨¹Yfä÷ž*ÍÇpZ÷“U¤N§…âsíRl$…Å7xt  ìãpƒËSgÙüQ§~'EÛ‹¢+yÒá1]qo–¸PÖÿaOjžQÌŠ†£P‡Ì&\'¿òk>„J–AëóKI»brñýX=9ÛÐÅΤÏÞ^osì³çÞíîÔ¡;ɬ†x‡OÃHk^ÇÒx ÕÚ»{ûã2àÑùñä \d]DÀÙ½¹9$2êõ/-PKíBG+tèöáµAäHèðg¾:¿œß¦ëÞûʤ~|Òn)RE#³nZ‹bùAKBÚà‡{amjrØ×8g»>B·»ÉD¥üs[M`<ïëù“¶{ç€nˆº¸4oC®áѧBÔžý³®Öì"J¢Ê@!‚°› º›@ ³Ýj_éÊ£·ûõ‘š(“ºÓ›™þÇý²Oýrn­C®¥w\E®j/ž—¿„tp·¬èÞSvO‹¿ÿXúÏÕ‹'ëÅÊ éBsÏj û:<„³Ã^‰@XLxJöò#õÎ¥±°ûl…°]ëàPȶŸÑñ%ôN/îäAü°Àá¤æÖÑi%³Š§jËeWñŽVf§¹†{úY6¢«|ºB,áî›ÎÒùí¸¢a‡öwÃùüî8‘ 媰¬ÿ\Êÿt¯•“ý„ý“YÃ÷W<ñ–¿âß(WitOÓÌÚFÉî«®%T £f±fô›ÿ²#€p9Pä3( :'Zp¤\"Úý±aÊÿÊ’8EÄ¢ZtZ¾•0(>kÇ*ëîƒÏõ8½-¶•Â7°Ïï0#ìÊßÀí ˜ö dŸ‚Ô -'æW'@Ü;]¥sTk—þö@‘4*Y‚“kTã(ëðÌמc -{¹NÔÝ0z—ßÄÂ:ÁÏîÐlÞ‘Üü¦Ú¿4¬‘&ô‚Ûô?(ÓL~,¢ó‹gô ÷ÀIõp´eʾþÕÊ"¯5ý¡ìÔµÁXÆlÜåèqÔ4v€ïŠÝÛBRRÀRiŠf¡«E‰è°× 4èa ¡¹}“µG$m¼»4-¬©/x»8Qeê ñ4K®ƒñºJçp« _é“Ô#'-ejŒKZ %_ ñþw*C¾$Ð*ÿV±ìc#è|<‚̽¸¦7n_³é„ÛûŒq³Õ*Ó¼ê?†ü%×… A øú -V>/^ßù² -õ7Å8KÛy£¦#^i7¢Óbµ^r¿i<‚.È&Cºx5÷KJ#ÍÖxäñŸöEWÛBB~(ÊaCö;˜AÑ¡8}®NyèñG½Ûƈ^ûúsC™ -ÀªÀtÖ1nVx2xÆìµ8±¿fãÂæ;4¬%Ÿ„¬çÖJÐ 'R«+|¥Þb !àÏÞ¯žÒ EÝzlk=ÐØP !2êùƒìtnœÖ›Žê4õD‚ñ¡™“¼[˜{”· -–H›x¨!L£T1TŸ¶¤íBt™–׻Ǣó /î$ÜZÖ•;øà.d^»Pï[Ž{é×~ÌfÔr ÛíÀà…{}›´Äñ{yýÈ?e°æ¿zbûl/r§ëµæ[:¯Ø{é#ÿ‰Ó$TÖoµ.ƒ(¨¦Y˜hVá—tI}ÚøXH H¸}þôî«Bªpƒrà@$Ÿ÷öý)p•,EQýKGnÏÚLð’ UhRj³×»1$«…F+sRcÊbåÄæüá^¼ÛmLØÑø‹º¡§–ñ£#GÀ©¶6• ¿Â=¢ö‹I“†KÑÿ}Â+5ÈÕ±Ìý‘^ ›Ã_Êio:O3M&ªæ¶ÂQsþ Ö•Evµ&5ÐbÃK…"›>Z^F…±¼E¨Aë;’æË«Žv¤MÝ°õà^hÿø•C3n"ÕPóZAÄjÆÉ}  -Ï ¨!G"2û×› -^8[¼9°£=E„§ ï„òD³äþj - äÝw'€1Aœòµ”"Ü´"×sKç’õX?ÒÇéÅ4´KbØù{:½ÛºbѦºöÍGÕ¶£éF‰SO„u)=|r2Üö%ÏÙE(—x$Œ #ׂ æXØÕ ØҨâ4s•P‡“¹ ÆàÓF…=§0Uú«-­ÙÞkµ‘ FæÒFÖâ|Ä'´ÚþÇÇŒ‹«Œ+È@óïBtQò% -Yya¶ch5#ßd¦ï—ªˆ¡¯3&wSyÓ¸æ”ܲÊÛ^G´”V^È%T3ÂñÉU(ëN/ÀˆÍ'Xn5Pñ3FR@‚âoúY¯4ƒH9Åõy[ þ<¸RºŒ¬9^LfC)†+ælXRÈ8¼;ÛMfž…|r€`^Û) Û´q¹oÔÛ,Ç°$ظÉ;xRà† + -8DÅÉl?½ýG0ÕXQЄJCç°Ÿ]‘-–Vœ.EÏôe¯/Ý먢D죌}ðDŸY¹©(N„ ÓÈ ýH˜ÿî•^|Š’}”~çÝÊv7œi©‘qš]¬œÐ°î}åõr+×ß,ºQÿ`q­©jÂ( ›´é‘;ÅiÑf —祫Ô'>ÿ©i–jxŸ¢ó}qìß¼±|‰ q#+JåyWm9È=]4BpÆ©D Õ¶›þ -ž@i`þRø¢›@;Om·8?4ÒØ+f'GEEo @¼¾«Àø„AÖ"/‚˜â~Xl¿-–~F‹.Žv4ÒË8—¤æÓ ”FúÀ/Ôèó0 -ŠêÅ÷³#ÓÚßBÔ1$O -uŸiÖ÷ÑNü<tS%ÿ†>Äö)êjl¶mDdSÞ|fÕÓGz•ÂI€>cÝœ—«ÔKn7csaHñ€sý-®ð¿å!F§ø"{-Ó¥A8ûþwvOðó.@“©‰Ÿˆ\ÿü'»"Ô,œÉÃ5ý÷"ÔÉš²å¯·IøþÊXÖãš~Ί>¾~d_ÆÆÿ¶ú6(±ëžªQ¸aîÉHXL‰@z}*…Ž ™7€ç%ÓÛ Iø<¯é3ssoøc("a¨`g­~vÁ/ÿ à#ÄšÝ;¹]cö#õo ò™6B'A5Õ ²XS«%ü¦»†p–„êgY ÁÃÌ#áý„œ ~ç¾ÿâè`c¼±øyZˆ­o¼.p•håVËMˆ›•.p™´Ñ·p©P£oYrõ~9.ùqkïùî¸ò™ìÏØ1Ï|UL6_ç‡jaî’6]JÜ–f~(– ÇU;RŸÛù×Ù†5Ck8žða@jÛæ_—ˆV;lÓÙù¬ÐY˜3 EE‡÷†Ž‡5#4kÕ©‘Ð ®âò¨.-EÔ[•<­ÿ6¥‹·`æ۴KõKk‚1P'uíšËÙ©ñp¾E+uA«£€,¬:ÿ ˆeÎ$ž/ÕØ~Móˆ)–”ÂaDÇM¬oºÔŸ5vMæü âQ×ü”9öö$~ÿx º>Q˜Ó|ê?€r™‹´é*ç,fˆ%€juØ_ÞÿÌ°B«ÛÆ+® #ÔÍ6ŒÌ¯Ä&v¤|*PRBjÝ)ùÁ.ËtD@|­3 ï´ÒÝtâû.[†ø‘`ËDŠdq†­íë!”Áa^AÆ•/Šß<`^ HD=h°¢_‰6—€ ¤}&Œ0æ™UÙõ°Ãç‘R€iÒáÇÄ<¹Þt!’%›ú˜\„Ι ~e‚òd½¾Þø%ÁCÞÛÀT¶»úÐþwfí½|àjdÅT[×úåÔ¨–z2œüOÝ«tÐÌ%ÀìÞ¥ëÉÞ†k_þ륪wÁ‘qµ¹Ü÷šÂ "¡;¨2cWŽǵžkÛƒÖ°½_d$#•æÈ·ÐÌœ§pgÄ°n"Wöë€1AŒƒà¨ª ö;qfp×\}l#‹ jh¹f°˜“UuŸ˜Kï‰sU¿öâè·û¡öϘÏÆÅ4òJ±…‘o±ÆY KƒP|5.Mƒ¡kò¤ØÏ4=Šs¿+ ;©Š•çÑM£›5\÷ÏH -ßž‹¾£ìú>Ôl-º\±×N -ïÁê&BdúL5?;û|Wà£ÞÍB0,ÆTw”=”LVrû½Ùlˆy“¥y×Ê«QMÜfÆ–m”?Ĥ‰Ã\Q‹å‘-¸“}D—ü&+m+&o·4[ Ý.Ó~ÏóØÅœ ­Ú+èÆ,Zbü%í×ί.Æv¿Y·ÝTbº0Ùp>!rü †`Lˆ;Í­Ûnõ$'àµ9ýÌMtTšRókÝúðgTŸ,–Ä3¡öo“*šPÒ…zŠÕÎÏ(Ôôïwòx?¾ä 3:ÐÓ‰{ƒ®€@‘\a;žl >/«4!½àqªr2ÐR“„ë¿°€²á0’™xVsXŒ¾„0£©0è8rØ¿¬ ‘büüXÞÁa‹vMêAØ‘H˜@'û»ÝˆBûú Úüq9û¨.@BßcCCä¦fÇ¢~j¾Þv´ƒuKT<¥9… ª¡ù7ÆË…ª”8€Tå{®fÎDq#ß\CIV¼{¤Y9P³¡;ÑD½úª¾>?š+5T ´£~xü7y>(œ[svÙšcŠÀÜGâ‹ÿE^U÷Q„·9ä?ôVµÄ6ö¨$ªú9ÆáS ·F`ýOà­ó/ZÍG‚¦`0×)ÄÜòéàí*Š$£,­Ð &‚àrÇܾ½JWõLM]È“É"Iúi=ÉvëÃŒŒFê¤"$,hÈÚ‡îr•÷:¢¥§g%Ó«…MÝ}Áÿü L©]ugª(ƒS’ƒdMîDèS+,Ô%“ŸÖåŇØduKwM¹ÍÂÛÞ¯1ÙýÆ°lk+õÂغy¸YÅÍQóŸbh/Èf3X¨²ƒ(yîë¦059[piY1Übb¸zn¦iÊ|ÉÀÛßÚõãüú’ùf¥’#3Ñݳô*½5ð€Ì¹wí]7¹"QXXÖ—¤HDòÃÑèM;T(©U‚4Åi`DAiܬ` *Txh®)TÂ…ÙT¾¹Yá`¶í™éê292<½¬¨z^>g\ʱ'™÷l2 • ù£ôS_0“ûÖŽG´L Úxò'ûè 83ÞìxH×À»´zÇüɇ/—ÐãéÔfÌ´îÃád)×C^Ú×æßÊ,Í¡5±OOÐXqÄøÓ× `oËŠ„‚WÉsÇð* Z6!ígˆn 77§Ìب'ˆ¤Ê«4a%ÿ€^ÓŒvõ´ÂÜ­¶âÀÝeD¡:(3cú»q®´¢ŸUòa¡à¼Ž%|§Íô|á$‰éÇ á¾mQÔe™ØÂÝþ”¢_ÂؘßXØÄPVÃ$º¢Ç‘œ~f)écð¸T­æõÅÀñ±îÓÅ®N¶ß¥¢ñ÷üL|Ã2©Sñ!ÄåÔˆÐEïgôä‹þ©ñ¬©>L¤èÚ´8ýÌgx–ðß6¢—“nº€¿[*½56¢E -µw‹òhú+C/)µ"ýBZŸ`ä6ü3JGZÉF¢fxíÞà­Ê–cßçŒà[ü<„ÿúP\0MQNTs¤™ä…«®°ñª2—Hë’’XAj4ÑòOA,q)eÍ-ÏŒ[5/ÔN€õ°²^|·Ðˆ¬Køc#œ’ù´€´´J'ç(&xHnP ·˜HyˆvGy~.6ø[—ûHš]Ze¿ò]Y*Û¿mÑ(造bX Ÿ¡È:¼C|­p±{šþ. )åña¨Ý¹KK]z¹NL?&@Hów¡øFð‹ØS= J¡ªØvÕÚúÒxq œH`þr XÕ#?FäÓØ0éʃº¾’Ÿ,ÙKÑ(-ÑIõ¡!–\ü{,¶­#°qŠîY¤íHm[[ó“!ÍÆZâ«ßàB!û€×õ¨À†s3ülP!è= N•®»½Å2f!‚¯zËàðø9œÂàû͉vÏ«kŠÈ”ÓÞZDy•(F°­ž…´<Ú‰`0š†ÿt ŠÑRá#Ѓ È ”¯UõñÏô -)Ì\ÜQþùÖý£ÕéÎs0`é©Ýü¾«W‚õkæ? …%‚½±ëiqòëÌ S‹ŸGGæö‡v;ñˆ¡;~) ¿2m#ýËõ_X©±½£ð2ß¹HÐw¬I\]…õT;½KzC‰¿T0‹=ÉÑ8Ù»s„GÂôFœ¸ÑE=˜n$…˜*qÕÖiïNyNöÖ2 ¤ \ý»V€NûdïX3è¡y40rFð¤¿.êTÁêz".NtÄñé –ÕGmæ¾ü@(õ~2¯>~eªÂ‰zéñ™»Î -77mÓ„ïúøx¹$ål§ B[0%$í*ߺä£o’~8Í'w|BùqZv“îKF<¦cµ²¡ì¶&/ÚãW?g¥b6x3g?ñ4CFBˆ»Jb.½êÿþ¸ÅW÷^Ïç#‹Þh*ßzñKÒúbX”ŸeŒ½DG'ð*£ÌGô¹fõƒ[~ߺè·@ej ²<\1Î&ØóNŒ„øÏÉ"ªco8¯°G2:¬zÔé!~¯‘,†Ëlջ߶œ£¥nóŸü×በoeh=þi?ÌàC§<ÎÔ15ª i,>¤wŸk IF)ƒÂÚp[µŸ¥€uS»Öéͬ(&ZÂòîJ=÷re-½ú´3¡û«Žæè¡°©‹ˆ_ïÆ*“%Ô[Gýö²½CV‘OªŸ=.Åq˜x‹¹#ŸÁÔØ%KIU1®ˆ„ ªtN£u5ù?•à%‘¥09>ùýæ1Px9 Cµm°´o¶1y«ñÙžºÔøûÓhQè2»›qEêgŽ®t5Ç‚<¬EQ;*™³–´ŠýJP§øîÏqëÝi0:·É^O8x–ÊâÓ,;g§ÓBEƒ°‚î튰yÀÍ=îwóSŠ»ñ<ß)~½)Ãݵ˜YV7iuñØn&nºª¯Pó22s`Çy¾N$¸çe¯aºÕiåÔ³DåÒ -¡úG2‡Qu2Ã8Þÿñʈ=È°®Â=w„1aˆN+øð&abñÙª;|¥ß^Ò·y5â¥s<Û4¡!žk ²çC‚¥-’<¹\ë¶x'½”±³Ãó«éÜ­ -RšXE`°6  -Ò–£ø#{“FXªg;’<pÀ´Zƒƒn}ƒñœÍ­ÁÅ_¾^XNRÙ#û©|âÔ­B&Û©UÊÛé]¿‘>÷e8Ê÷o‡ùà³Oaj×dîŒqÚâ[Ëè Bâô "\ƒ Ž”κ[/¥)ôoþUÎÈôpPú¾9Žý Äõ$Ù¸Ië€b}cœÒ¯˜OiÆ$odp¨µNäl—S=á1 jŸCÊP3<§éfØ d‚ß+ -A{ÛT=}©˜¯­…OTJéÜ0¬*kùÛq§@½ýH2Ký eñÙƒ\Ô1ó„šr–à³F¬±–„íÞv†kv™4@1WÛsæ8›tqüf½ýxæ,œfZ}e—Nƒ4<£»Ä -iw3–>ÁAäœê#1“v3†ƒ=·Î¤0'=/Þ\É¥ÝVY¯\ŸFk[‚)6Œê=MÊ -3ýµìïæSù%f$¤Rû¶> -stream -%!PS-AdobeFont-1.0: LMMono9-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono9-Regular known{/LMMono9-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono9-Regular)readonly def -/FamilyName(LMMono9)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle 0 def -/UnderlinePosition -150 def -/UnderlineThickness 67 def -end readonly def -/FontName /TWMFXI+LMMono9-Regular def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 68 /D put -dup 69 /E put -dup 73 /I put -dup 75 /K put -dup 78 /N put -dup 80 /P put -dup 83 /S put -dup 84 /T put -dup 89 /Y put -dup 97 /a put -dup 38 /ampersand put -dup 42 /asterisk put -dup 98 /b put -dup 99 /c put -dup 58 /colon put -dup 44 /comma put -dup 100 /d put -dup 101 /e put -dup 61 /equal put -dup 102 /f put -dup 52 /four put -dup 103 /g put -dup 62 /greater put -dup 104 /h put -dup 45 /hyphen put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 60 /less put -dup 109 /m put -dup 110 /n put -dup 57 /nine put -dup 111 /o put -dup 49 /one put -dup 112 /p put -dup 40 /parenleft put -dup 41 /parenright put -dup 37 /percent put -dup 46 /period put -dup 43 /plus put -dup 113 /q put -dup 39 /quotesingle put -dup 114 /r put -dup 115 /s put -dup 59 /semicolon put -dup 54 /six put -dup 47 /slash put -dup 116 /t put -dup 50 /two put -dup 117 /u put -dup 95 /underscore put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 48 /zero put -readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -318 734 1016}readonly def -currentdict end -currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ß]_ŽöÝW_ÝÉù(~ÿF†àv¶œñáWfE@ñ»Qëc»¯¢PNêd¥‡qclµY¿„§†]¾Ošå¡æ®kÖÔÁ r‹ lÈú¥n€8e‹ &ãy~¦8qE”<£ÍDÏb´]„Þþ$Ÿ<%ª¼GÜ¡Ìd`øF òž‡]æÍ"Ãb¶ZÊ9 'Nnð à¯]Œ½w¯ù90dÿQY°NS+Ý{M´>d¯Õó¡*Ÿf$_ÇÔÏ{}äþÎE¾ÊN5´Úw0Æÿa™ëmLÿ@°o²Ÿ­½praè,¿Yuš½vT fEC/øî -^°Ì[XâO¨åß2þêÿ WEƃØKQÙB:”ŠÒAvÑøy™°ug¶¯ÙíÏ=q“p5­—/¸…1[úÕÜ‚!l2T˜'9HCª¾a—€®ĉ€üw™±Š¯‰Cî3^—Cyœ’ÔÙ}^µÿ–…À 2ŸA‚ú3>ÑG|ºÂà”ãH.øˆç]¶J%KV`à8ß?½†Ã(Ì0Í÷ÌÌg¨óôƒêt,×OT7 Üà$n"JaoÕ82*tß®ìû‹¼Àç±.ÙøÄüÌÕ„ñøeÙþÌ]'2õçb×v–ó€Úè«ëþÐi“ß)kŸ+ã÷šT½:CY#M5×7¯^ÓkjÈþrcÖTÑDd¤;y9±§/ªä£EêÍœŽ‡îåÐIœ7K| òŽ”Sö­ÁÝ¿[l6ƒáå†ê«÷¥ -K|ßOV`bàÂß'EÙp…Öœ§höº‚ÒõÛ(Ñuóèfè*Ž†—âéþ­ñ؈{£s’G´Â(\–h‡M9?Šª¬5 ›gÀ|Ü 9û@£?ä -â…;ßò^;Z]“‚Ý_·pßêXÛæÆêì¯ô5Mlî•pCŠbØÁMDþ ¢¼›†âC³õ ![]¡ÒzºŒ>¼¦¤§¨Òn®žÔ¥ç˜R>X5 ks‚•Æ¾l© -yHRëàv¸ú,#«á#ymí­B[Ü! ºY¸‡Ÿ|+á´ˆÉÖÌ@w˜1Èy0¼–+[åÇç3Þ€ º©;ð.f¥Ká›ÕÒ$¶w:¼É; ×0´6‘áI@œÛ3úñù€Ð]…3Š}A‡íEêŽ:l9éÙñ;fQIïÜé1Ë×YÚÿuK­YßEXÒÖúñfhÚêƼ½mxâÓg{šG9ÆzÏ‚ªÁi¨{š£$ŸÍ@í½”–vœÖß2BG™4õê˜#­=„Ì-*n=׬>¹‘paŸ¬\ßµ ¨wQS©RÔ9 ~Rã~{ãŠûµ“,VN…Q:”¾‰BÞÊ/¿o©,ûS[-gÍ<õïCI³ÝÞŒ½¥¯Û$d…oS¹×줇µÔQøfD®Vôc’ÙÏH9>S9¾ÛjÞCa7Y¶‘FÄC;™ -²gÓƒS°Þ“¼Ú$2hè¨HùýìÆ`N}HŽÏ+iI9âHŽu»õ—ÛIãô&Õ–ÁÙ‡‹J&HPn‡Í…èLTä|DŠ°îÌËÆ쎂j²º'ŒÏjÙÊ‘?k.&~§wÿÖ% ‡ÅRF¶‘ÕϺ·Á¸o>Üa­Cþ›ÁwÇÚÈÚD²e]ŽÉ¡>#_Œ(Àµ-ËŠ;]‡lƒ׈ ‚î©S \Z+Jøú CÛ<¹ø;ê–É’Z[ H£9•Z<(*@‰ðLî5À´GÄ:ŠÜx×›úã¨òÖ{y’PÊñ ‡0˜µ„DyQ®‡»µ/%¥¥ß¤]°ýù¹O 3ž¬5ø–Hwê"ÙåÔ%o14·ó¦,ýŸÝ¶Ç 4Ù¸–Õ?F)CžkŠ²·Rûõ­nò©¬kêô5‹o -ul¢—!ÖxJ†óæ†p$ ¬ÍÅKNgßò»ŠG–´¾Zs6^m„á¾ÞûYës8磩}‹2š² ŠH¡UëÕ -]Á‘ŸO¸í$ËÆõÞîH;ºCié_Œ'6Õ[$K¢\xË;í^zÙ8?‡!7•‚&þ¼†¦•–ØdD•¹§tÌÒrjpÞ—D+Ɇ‰Ð¾µ¦9ZôÉ€Åã“Ãó3HTÅ×IVxÞuJð®Ú'8Òü®/,ûHÕO@afP²C4ûCobž­*³¿l7Ñ#×±? f)ó'WgÿsJñ’«+) ë‚c&y½n2l°PÕŠ‡€¯ŒÅÊ¢‡ ©Èð– ðP€øz›`IMô ó”” N0LùÎV0ækëÈ7%¿ãHBh5>¼ZY@U4½òœh‰9jD‰ÐFÍÖ|HVÛx6ÑÕ‚çA ´{MùhÐŒB«ü—à€|Worr‘6•û˜ìúBÊî4·B°Rlk‡*Øô6@æÖ—‹1_r:~‚–¯¿î‰ ŸŸ—å«a-‡:5 ËÌÉ5hÖ» ;”ÄüãzíåŦêüì»á6`Õ69øŽÞɺ²Ý±§ }×LM¨a3ë1>pÑ°‘M°ªŽ´‚q#Ó=4ëùnU ß›a5|”F¦#<¤“œ,çÙÜ ‡;N`,mJV ÛClòª¡Ã¶Ö˯·fuLŽ#ûÖi¿>£4~HÂm\ì=c+µt$¬eÞ&«X\ Š>À" ‚#ˆªTräêéE«ïð’®² šx\¾ºÇ5/WÇÒänT×Òqéæ)AŽªP¶É¯mn®DöBÞ®âaÕ?,&ú íäB]ô­]PE³bÁÑ–áþµ-ÊÖ½w¾)¥×2­ K½(]äil°?~6‡Å÷F kóó¥å"µÈ}áÙu° ^«ÉŠ±DlÞ½g‰œG™—`§³LÐ&¤Rfê`…V'3‚EïMÊ)‰LÛ–;'#gtI¡W#Dú]˜ö'…rÜ£¬Ù‚”OCXmÿ¤ŠðÉ6 õq%QmË =Gdb¿ºI6«…!#[Ó»¨>ýB6V ¡Éh’ÍcÔU´øíIF&i ¬%fd@#íaù§QÕ#02o£2©Äv`윊Oí줎 r´3åó,iàÔðPfQfroü3é“NY³ ¨¢Ò«5À½¯%çÐ/¤F‚–§*=(îV$"Ûð3s¡¸8;M&”êúøFz-Yqɉ#ð²~`þ1ÒNõVüýcqúìôÜ™Éåæ¼o71aiAûâ<¦è„‹1ÎôèüÅHæU×qnÅ÷4ëMN…üØÝ ƒf>g¸Òœö3 ùŠ´6‘$Û¿7Ê!£y§{NŸp|jš.Ôß ?CÓVÓX Ëà¬=½OZ{ÛÚC³Š8L-¿Y+ ^©šUØÞluJaÅ[Ï*ßðöŸõ€[TN$‘èCÔ‚]™¦8…®«ûö‘ý} /¥‚Ú}ëºbµ¾ÌèOWÞµðìrrM-¼ò€å×ú÷¶f.+’ÐŽ‰ðæ+ÏæXÂUt×96{ðW -g»aØGrI4£×ÁÿHarCœ+2è)Ñ©kìÍ©HL‚õ EŸ6No­¸·8׊G²XÏ»˜ÕH0Áþ’wDÊÓ/¾ƒøÁòˆ+$jÞn…oš¹ÑEÉ+’:Æ„ øž³‹ÿ[ëÅG^žä—.•$Ü>°“¢y=U3Ef©Ì¯$|pZ„îm¹| -ñ—†ñté>=ùRŸpÒL»Ç‡Â”)ýÓPÈá­^»qí— ¢7k•ÀþšÀ:Ø \•¶‹ãyý˜ -ºFÈáèÓaî„…u¥õ"ôÈɀе¨sv_¬T*Ï;Ɉi”¼õJPØi±s4¤E›\''†>…œø*UP Z‹™(ÌÓ³ Þ# û·.Œ?^f£ª¯Êæ 04â(ì÷´GÌW`’3ýೌÔì©ø­½÷¦XŽjzñ•Ã€U*5<ÎPáãÐO! ß—ƒÃ—XòÞµ‡.² ^<Çç›ÝHãÚïôãv -‹AÇvŒ·˜ -ØÙ…'µí[~P÷< ²'žÏráìy ]9®SDRwÈ™þ†åK‹Û¬vÿ„àÚbÜ©Q]n‘’ w*ÉÌù‘gcšt²ú~ü¡¨c³Uì\"X”ƒ›OíWé6ÇÀEz•qµ æ“)O!Š¹ø§Ô^_Ëšpü¡¨c³Uì\"X”ƒ›OíWé6Ľ -Ö nÙ‰Ú*W^¤^Ú.Û´dôÅLï%1<׿/GPíô´dF@¬B‹ý20ˆÌGÈ"‘vp0ðBy¹BáÝ{ÅÑ µ+p“×…ô=~÷»©!XÃÍ6î‰ØŠjæ pAûÃœ\³È£fk¿‹¿½$Ó“w§èjĉm@ŠMÇØà& ŸiÒä(áDÇw%ü|Ï”‡-Ïdã¿A4 m•`ðƒA®g[ùéî—X¸è8]kRâËO1MC€n‚VýG®kÿdô28gû|}/U¼R¢ùæ¦0¬AéûêrÃÿ 4Ø3Îö"ºº:‡òP¯œûÁ‘Iª:¹'óÓ+BÃbÆ\ú÷-%éXýSmž¨gk\DDøÞy‚k?”Î* ò<‰àf=Ei$n“WÌ!ØC—‰ýRýjì%¶`UåmJ³ì´¾¸Ò”=3(ÿ¨1좎†,x91*¬ @®}É;øÔÏðl[”n!Ðõ§™ÍÿäÏàNIâ?øEÏR]qƒñ ¬„u¥ÂLaéRr'ÞŸùaG÷P%láßdAÛÏ#²ƒ<¡5’>¨&Ì…ÌÉ!Þ¤&’÷§¦éÓ¯ô'ÂüѳFÝv–C‘"Wü>¢B²QL$ÍtÒ¦n›‰ˆoPüÜ'½ÿê'6Ñè)ü¶»fÆoàSƒ„üÙ<5ìx¼²‡óÓâ¸ò™ìÏS•ƒÖÇ~΄q@¯0z6¿a‚ñWGMœî -åñ0Š#ºë$l:Åô+jé£CŸsäy$¢I¨ìàÞÍ­.l³2åÉ-5 aŽ -çT”Ÿb);4ÿ–ç$XìˆÀ/rÝTJ4A‚i¥Õ’”ÒvRû(ˆX`ð–V,Û‚aûÐZŒå.6û^Ïû©½ã€¶€äÈ7'ù=¢ÖQsG`¨’9\>KŽÇ¶TÓÖkIϹ·3Z¯±²Y§±À›Ç\\òæ€.¬F 5*„rî& ý»éÞ›tœ_RBÓË%<6¨LÈ7×k+ Þ _“ q)ýO:«E^·ØWrÖ$:‰©À°»˜êÓµ­«¸0Æ…¥ßª´RýëýEow„OÂt8öàÁU }bÕ$ܺvä›­ÙK–nñPfBËïš×QÝAØ@B{ÔE|0Š<¼ðüüTÈ°ù Ì@Ï–ï><:ìeªTŒxªxΕøn°à³Eˆ‹gÎH*DˆŠÐ8Øyn¨ÒE=e¨ÉU%oÒJ.B·fÁ_¹•‘)€pr™ -äóIwÛá·ý9ŸVº]·ü¶Ÿ1)ѵëX„Ãe>`91ðT-è9’—oÝWÑ|µ–Š8KR ýˆ•¸NM09RÃÖ:?DêwÏV5ñÞLÖæ-ù×ñê¦Å§k¦³Bì’¢ûÏŸÚמ*t(4‰Ó4"¹ü2¢×Ú£ÈÇ;xñ÷<«L -[™Ý²QöáÊ.l´ý”ðB@ŒÆ#Vˆn›'¯±«þbŠegvÓ ¢ªïð’®² šx\¾ºÇ5/WÇÒäeØ–A/‚r:[úê -#X—å}Ÿ¦øºoDØ£  ëþß1—¥yj#¹'"~Që÷ü%à´Ë’ àSÊ‹p«ræ¾gk7cŽtåKÜdÄë¤ý"Æ}|:÷§®âÞ]éMëÐ|õ -^{sd{ÿpa6L -ë -¯ÏŸ%«tÔYFÄÔ Ÿ£Uêbì÷m'Áe³»+3Ú?¤A¢9£W½JF½ -†ªÏì|-LÏóŸ¬~µkâyãP4Iê­Ç‘E?8$Öû¸_ܵtjÀÓÊš…¸‹·²é%Û3eÈ VàstÍ"Ê~¥æ‘ÿײé;¿CVÊ›¨£Ow²üŒ÷=‡}f PVÿÕÄäáóàn>mðÒóB@G¥ËÛˆŒ„­*Âí®©7%J'ÛÙ¢  úk‘—§Æ4æ­k)ÉD‘©Lú›C€Ó*yÆÌi€$^ÿÚö$µ&…Ä+KÔŒ#¥Ç™1ÂYÏL÷_ö~pÑB`õ*ç<ÎìÀyè7ÜöGEñ¹F•Ô]…‚®Ç©•«=pºÊ@ÀØf£ž}¸ÉRA€é â®ìd"cÙ” D5…àBŠªÁÊà#å¦ý•Œòü/®õ"IPa]¢N³±Œ‡¼!ØšŒv’eÀ< -<¾æ$ éFç«s^ àÄÞ{Âs’סâ€Í–êÍ‹¥=!\j‹×—·Y€çõ@V\5be|Éì²Ñ3i³lã¦"¥Æ­øÆû+Ù4x5ßåãvÚy¢>‡v9-m€ÿ\ž®.2óÅ.P‚¢3·Ù ;ÃKq}}ÚÈ̪‰YKýziÃÞ3—åîíL@©±ÚßÆŨù…~NÄè9æirú|6Tœ—m¯9ŽßªÍu¥$) ‚Z­ŠìÀ.y3áœÚ–Z‰y¹¤ÕèÒtNþQv:k½A§­ƒ²'Íõa©AExGÅì À"À‰«<²¥Â}e$ÍÚ•óy)îU°2¥ûþY‘ºÂUjéš¹¬ºù¼ãØ,Äwr{·‚ ^üI”Ã:‡ÃÞY7ÔTY7Qí×òmÏæ¦Ëeµ5»FÌò8ó”ø½r'›Ã°ÒŽúO2è·”åÂ~Ū„Pr­ñ¸¹üæ‚B^Ì@Ô!;ñéãó´–¬w`C‘i$qE4F?%×Ë(áÃåhÐèõÝNTÌu²Ó“ºy¢)†,ÂôUð0»Üœè“rˆÛÄùfaÈÓý½l_ƒá'»à;ꆴSVøÞë{é]»øýp‰åÌÔ6‹ïUj(mEåÒ=×ûfG&!:×»$ çß½ü¸¢Ñ1AãXØõ>4× õÃ$Þµb?ÇÙîop†…ƒ)ªÓDZÛÝ­áŒÉJC¼´â…ç̨ê+½2D@ŸÉS~Z^è`Ú7G©ò}ÿ@ï6@É MmS_MÀªªŠrhçIÛ¬±HAo`œ'©¨C†%tÔ‹‹dKö!á·wWé.¢õðz(^&¤RôÒtm–~-M˜._§ õ~Çß|óž¨%æÝŽ§¤•ÜLã‡2`è(x—øÆR†Ù?À±¯‘ð$˜)7¦°¥£› -4«+mÖ1›Ø‹§(áDZ^x8p -š¡"‘UgŸa†o6Yf¯, µóôi¾8?G»Ž$“¤â¦`V»øÄ{×1ñrË/ª ý­@½:çÖG°ÿÉ+d{xš›Ô{] ÌÏÏòÃNpYÙk.vTe%¬Ÿ~æêt÷ÀyÇ·Vž`…ßPŽ½ bƒ‰EmNÎmpV­ÄŽã–u×Y³}n¦~S±ÔÝŽ™Î¶'vø¤\)@~½ð09ñ²ÏF&` ŸRD4½Ü»ÓTééÚÃG3 Þi}ó'’V!¬N値–±/Û5Ma£IðSb¶Žq(´ 9Uò•K!rdz~vˆ"?ÊÂä1î?a†øW²û/@;êÇ ôrËO>‹…$…ùt¢Ò[àZ燸*¦±6U•Ë¦Û‘‚$¯£ƒ{/ýÃqAª7Rï£xSq5ÛºDÌaö®EÜÇç…ë 6 œÐÙ¸D&ðêS^+õ -¢ü}KM*×¢úŒGt81Uÿ\ rö@K¦›ÊÏŠ³öuø%Oέ_˜3{sRu7¸úXøo2ŸM´4ÌÓE,Tþ")yï‡@ù"ñ ª:ÓÍs²²¨ -·¹$ñ¾«Ÿ`Ú,@ï–=R%­ìL1-dz\òÙðô’£ÈÛ#cÇ9¬ê´dït§Xyôo¦CDž>™?ßÜ"ÌÀ2ã‹^Äuí*a”š_/¡^°k¬)Wq}®ó˜mEZÛ¼_Ï÷¹XžñŽJ5ðG0 `tw½°þÅJৗ%ÚcUç×/ê¥Èp„gp‹ò£`£:G>mcÓW{,™¥ô] ûqý-´ßÇ—P=ö|´sw©ž»Ï;ï¥BM$:¨¼~‡gs#c%^p@õÞyÿ˪fè’²ä:¥¶É."#©ÖSÒ»iÓ_?Ÿu[ M]¨?áy˜!’AÀÚgå¾À@©X±K³×‚¢'›‘ŽŠè²ï.9R’¶^ue¬Zð"–th%Ë'¾(^g2–¾W|à làöPòXŸæ‹)š>—£ð³Z?èß[$Ð@ÖUG ìqÔžÌZšñ\6L ËˆÄïP›eðú‚ZáÕ^‘§ŸžýÎÃ/‰rßF _c™ -)‡~ÑÛ0zqÀaHÄøÄ=`àÖzC#ñ}‘xÓ$‚¹à“ò<ªÈ÷^¦q%Ç*N2FÑïô.#{B4£×ÁÿHarCœ+2è)Ñ©i«*v,¬ÞãƒaMVM>±¤ÝLF¹ÛÈŒÛkÅþìYgrô¾ºv‘H ~5 ˆI©n÷‡ISÂ$Ÿç a2E5‹ÓŠRóI#çÆ>œ¹â„Ús<§²‰¦h_8½Ô]7ÛâsëÔÕ%pÐÐ5‰[´©‘ÄV4´wÓ»72å¡+ò¡¤äÕþçL„æ=è†ÁÖýÖÓðÀçîRìZŠ -¹¥tš[ ž eüM£V©Z;Î;Ha)X³‰öC©âû&+ýw>†rWƒ#!CøIq;ô¨“2!ù]蔨ðû9 FI‡+”[yÕç1ê7%r²A®Å]4F L° y!vô‡ûö%ñ{Ú$¬S¹PÞØèò(Ü)Ì–•§p èeHn^á1™hü G™Oo; û‰ª£q{óÍRçü†Èþ>Ó?Dµ£…7ê•Fê<Ǽ”i:F‡,0@ÈàSÃñî °ª«Dh“œƒ«tD~š†…؇Š$émnX?©¹¢É}"+OÕé¸Kš&F¢h•qˆ8§|æ\¹¢ÿ´Ï@º¿šû©* Q® †”àƒáÓ}›ÑG¢×ÀÖ2xþŠL;q`Ð(¦¯ÅZdž»TQ¿¶ÅìÚ׺¨ÎÍÕƒ°($Þäí¯— -³™!e}²µQÿD*H½IüpÊöÿ¾· -èx¹ýFt;6à³Â¾v&R =[ZkoÏ¿þóN*4q&êÍ7rVГy8Uó6IRÆ“ò´•³Þ|p…K;ÿ:"Ù6Ö3Pôyló[ã‹û6ËòæÐ×0CDáu1ÐÆ" öKaS±«FÚ,AµÒXk'"ÈprüsG€ËÅA=dÖQs¬ríOô°åºÛnV÷´³¹Q;¼Ž:SG²šY²§x€ñíÜ7?S™ƒÎÂ$‡K·Ê˜¨pÁ=¼å Âe‘±ù¡+sÖmOcÌSW÷UÄŽIôñJ†E¦Cl@±¬ ųv‘}ÖªÄùXÛa´­L}¬êÏ%½ùÛÄ+è–Ð -5ZŒéÍ7ãшa⸅jÛÛõRTA[¼wdÈkÇ3xLjW|4#øi€GR²šaDFÎâ%Ñ~ -ÖãÖªXîá7e¬Å¸—m^=º£cýMø"dŸ²× Jü `ÕD&•K_:¥£çý þ .;.S%3e"PR쬅F9pþѬê[t³ÁFƺáeXYûX“KýÕîmïæn¤ ãš9·üm b+’^ÉN‘I7j}>%,&÷ŽCö;gˆ4åÔ~â*6vUû'ç¶ç'öþ°ñ¾&ú&Â÷æMY@Ôìn(Ž›¹ždYX麾vãÀ2}!ýèˆR„ÁÆH‘â^˜ƒ‘ÄT>½zÎa «Iš֢ýÉʽn! ¡ÝU4¢Lš ñ¡¡ÀÂ7 –®;%®ßr´’úˆîŽ‡à‹Ä8–œ.¸ÄdnHOzS¢¾v¸ï$øŒiB7Ê·w qp´ëº¥I¼ƒ*SEÃùæy§ Í[ ©>¾‡ã÷$Ø”¸H»ex(ßB]ÎrfÖ©Àñn«J2AòŒôYn¤qtä -¥t‹ÕÝmçN8®t ^gõt„¦4úü¹©¦ŠrÏÂ#ϪNZJþÖ@·À0Œä†=‰ÜbüXoàF±•–\󃧖,0VâüÊ9­x¶ ðíS¸ã壘^›)Ñwß ˜q8`ZdžK¤Ž{¹Ðð‹úXª7é }J=tëÛä(“Á/“}çÍׯ®gtô;‰­ÇäLìF³Ö~Ìj*ü•¢ŸÏcÛÇ6×8ñši+Q.afo¾Þ¢P(dÂÎ!m"Ì‚¶dºiIkÒ÷P!ÊCÓŸ¶3I"±ÍWY¿ã6›A‘?ýŸx›ž'Ä;qQËî_²QDj.‡ÔåÁ³på¶ÚÒÃ…ý´Þ‹9wðy*K©!Ï8K’Bk¿;Õdè!%"òi«gOæà‡þ ÿ}‰:t™MWgd©Y.y¿—øÌÎ68¡ò2ºîpŒž&––uõó¹Ã:±‹ïzM-­©Â–u¿Q?ÌÔWQ ’ý§¡yf±£ƒ¼Âý¼÷þ°O‹‡¤ŒcËü/B3Kþs5ÉÛ4õ>{ Â8öè"Ýyj‡¢ø©ï' øŸBØêŒIÐ\Û<ÄÌv§)†WUVÔOª'A¥ü@Aßzo †c poÕH³Èpúéy&ǰ󷣞ö0'Üs9Ð÷úét”]÷ƒ¦wÛ‹Þ°V½Víõú›MË÷YÉÿ¨è“ÂŽõIÊ<|nÈLÀNÙüF¦€ÞjÓлõïdJ:*4ÔOýp#Ö¬¦#ªÃYife†÷Ì’õQTi.ÔS¸1F<òÂQDʢŪàÿ©í$FÿCœ Öøú1çb´Ü·‡øËùC¹È~®€T>Òq˼'JôÈ°³­¿®’´)°n«Ð‡ÊhlÓ­ÕëªDòZü·Œ5ž»&ë2BIà«´Ô½¿Vbü¾i†@¯kABh!9ø_ÔOE §Á¢LïÈn ˆNà0M/ˆ×ºæ- Eø&µ'¼G!7çJ©ÀB¶šº{ךƒ=yü=Ð_×´xʹv:íˆÿ"Ž¥0€ÆH(MUËx0uϲÀ‹OЊSë†yCv#Ÿå@Ô¶1¢\I\ÞýK -Å:±7‘/³ˆùY&›±´·ˆ¾‚®½Ás0}wß?fPX·½Å„¦f_ŒYÁ¢ñOP­Ìn!I£ùåË¢<˧Äl~0ˆôÑÉ–¨2ë®`ªCfÂà ã³©0<É'f>F–2'.ÚõâaÇ}A0¾?Ðb€íë©vñÝP!^ pgñæ••r`2¤ØWÈÜÍ#l²†À£á \é°ÛP{Tغ,ß…žÜSÐ邘M’¥Ùf‘_Š©E§0Z4ïDÈ4¦zá1VŽX±àÌ‚¢B7¢õZÖw·6a„ùÓø\:CAvdS§ÅÐ7[Ñ£±H¯ -éR)vX*ê5¼@õ£î!¼–í€Hu¿ éI}Ï„Sç`¥gM0U#Ó>AUPƒ$wŽZJÝX¼Ç,¯®Ñë‡RrEÜñ­¯ ÷ÌÔÙ«P nî7ýûÈdùj@¢Ä³f÷§óaùGƒà^Ä‘ºä»¸„JPÄLš Ô6&Pn¤'‡uýÕâ– /Ã@õþVbð-`•Ñ+©5*Z–“³9TÃŒF _iži°¦É°…DòÓ¦ÚßÓ…ð°Ùº»À¿a[›«é}'•GŒáh;C …RÙNn5~„:¤Ò§ÜD«°™üäÚe¤ÊåÏ8ßLÐKK= _r Û«Þ÷—Q먖‘’÷Þ“31pWÿ1VÔ&êŠÜˆÅ=*t·ÖÄ“»RJÎ…AõUõòdK5^žqʯZÕYŽ‹·rïsäM¼}H<•Þ§e_‡…•tk$°ºEØá9ÇAFøaˆÑ†%z:jooÚ¯ NJvÔè½!¥Èá(“Yçò08ÖÞRm¾((?اG’n|õ¸‘Š,°$?gn âÇf…OèT€˜Þ+ÔÄ‘åœ3ä>;Âfö;*¢M‰½Ö"Mú| G©lÄC~_ÉŒD1ÎøkØ<\Sùéç{i‚çfùž…ÊT.Ëÿ²=zuÞ[l‹P d}îÃX‹t¡>/k«« -0sàÑu'âŒ#Çuȹ9‚§í¢„à·£köŸªÉênó92ײ( Q¸Ê­ƒ^®¡+0íߨ2•[è÷TÕ$RH¬ ƒ_I†l™,´DðÇÒw”ú¸,çäãçgÊkü -4¢Ñ—(ú³‚?¦«¶ÛcÙ`‰¾ŽÝrE®d­Ç!êãC ã°™³\AíÐWdö5Ù7=óZOI\ùÄÝyô‡Š:PŽRfã…Ù/ë\½ãñÉû8AëÏäw¬Î/à®ùlrsfçfƒ¸Sñ9éˆ<˜+K7\Þ<¦Ýq@Nm”QezÀr< íp%¤èàšÞýGÒgr,hó$_àq"3›ë&É\ž ™dh7Ýe²ìæÁbU\:‘ô÷æA=pÿŠ'*qq}¬ïzãùæI/à˜ˆ¨1§¤Ëa0C"\håÿ,ÔxÅ>q ÇäÇvõÙÎU'½}¯ÞŠÊ„MÓJ.ÁõÅÇrÿê§ÂÆþÕ„ÌöásÕo=<ÎÁÎøÀ e8ÎÒz¯á—©–|‰‚lËçq¥4¿Ö.}n<ˆjoQ¿²‡‘»õŸ°½ìc~—-:ÛÅ–Z¼g¸¥5U¬rHßýª·ÿ±wu#§ª&è¨ìSM¿ÔXòúƾLEÿ7—5KëZ-gÍ<õïCI³ÝÞŒ½¥¯Û$d…bË3”Áh‡ÞâËÃxìJÇk©ÛÚË¢xýéï°2u½JL …³¡m¨%ØõýI‹P H°3Éìh:°Í–Äg'Ã`ñQ*ЦÇgž¨_ïw$wÆ’Ï%Éšù5-0I†æt)‰ 5Þ¥_)(A1…'MÚ¤À@tC¿º~s¸T!u®qx'(¾Þ"·q\t­®Ñ ÂEÓ^¡™#ú»KcF`ù‰ü.o¶ŠC¡15-u#Ó0Ž%•âqŽ$/Ö}iå·Ñ‰ ”ÎβæåRÑö19=£ÌD¥ÁvÝõïÁäÓ¤ÖO‚Î\žu}'èvrº^/EGœ†ÿà~<Ø©BÖægvýí µÔB3ªÜóðÙËÙhh²?(ˆ¶X½òžøeØÏÿöcô&HUF×"»£&ÔãñÜ\Ý˱%JÒE9*ˆ#ÎðI©C““¬K©ò´¸éYè‡|‘²¢GWJÄ0Æ*ÝlÆû} .wù„ˆ¸åãVCA,zƒaÔ*Üð¥ùO$Œ( »Lƒ†¬èB?¶,öý’“‚4LÛ¥ _¯E±¡Ú®”ÍÀ=9ó‹5ç±àR'»öˆÃEøö·c~Ì h™¢þ¹ð4+Ä•(@ó[b¦.´££ZáølâðÀ R/l³¿µ  Ë¢†6°œÊq=_è_gƒù?š"(cí žd襒ï—Ö ßüÒÏðÛ.`¹; q÷?˵ ‘"áaù0UÃC,9ç²È„9¼OT±mh ¼†ECl?¯ª!Èo·´¹Öþ1˜|žÞÖ°ãEóiL”ÔKàZÀ µFd”:Æž#UÑœÍâ'qöÛµ7+¿È­Y³öcJ³,$U?zð×hÐãWÊ:GWB##ŒVS£¿Ÿ(ʽÎhÐ&ÁéŒ0$ !Jõ¢ð6ô%pã_8|@e.´ä7c«qìojæñpN*Øm¦s¿U~˜3Kººûý!(]=Ëú²ô¾f|jOÊÖiC𰽘¡¨P(¥Ù†¢µs˜TòFYCÒ~Ò%óa¼†)ù~£ä¨d¬šþðÜØTʔѕ<ûl,k–éíuoÊ€Q?¾bÓñ“uÖå¼%!¼°Ãž6ã3m®¡¢)ÞØÚ]=$‰£¶˜fãnC:)½èn5jˆ ¼à ioŽ{PÏZ¦àÀm^L:Ö ™WdõëƒÝôjt¬” `áÅH-.!)\†Ë`Äyu Å-‚t -Ó5žˆFcðBçj¥˜º£+¬2¾¥®ç°«É;AWÞ¸þ¦ ]Fô?½X¸Œ€Ë U!¤Ž#Î:‰¨íÕæF»ì·vR„ÜŽæ7Bܱ²å(Bø áì/4Â’=* U ”ø€q[‰³+q.*5rÝ E솬X Õ?§²C³Â‘½ÞC-¾Eœ<ÇšáÒ¯­¿]bZú)’cªpÈ9nŸ{:ÌdÛ®óýÍ:€À«”·¦sT¹VÃìº|øn -Å’3{Lé »`œe2ùÓ®sf;¤ &àå~—A!®„ûwCµ÷>ÝÏÞ(êaÇImؤð«ì§-m®, -eäæJÚ±ÝÕ7»UqlÝç>D¬qN‡i¥Ð\ù×Õf¤<`¾U"ý2.R>Q;Ù¨ÄEù8¸Ôa;ÐÛ*påð~À]mƒ÷¯ŽdIî…É•l¶ÎÉzT»ø#)DX-ߟ`$.înÀ­Ý‘'HøîT‹K‡±ê{`æC‡¢¶16d£\âìOÇ&ý“ì/®ÀúB$±´ªz^£òâÅz Ãk¶f}¯½ ì_(̘:®3X>«ž²MkG¥¡æP4ÐÌŸŸfÞ+ä\-oÒ†DEmc#(lë=ÌÓqKð0˜®Ó†‘Æ—™}vš2³Ès”}Ùß<ÓdŸ÷È-ö¢¡Ô\ƒ\°–ñ÷§¡^¬¡ôsÚ¡7õLÛ ØÐp›¹^Ù1jŽ äó%!¶_ƒñR‡#O ÃûÛºÐ=ªNé]5<ÞÒ^®÷1b¦—iŽÝ,6~Õr¼‘ }ȧÈ÷êèP*[ mÒ¡ú4XÓŒÒèQ”vƒàWaó­§/Ÿ%}‰ãÖ¥™Ì˜1l”pø‘›ïBl1.Œ Ë? ¦”ÚGˆ›áW ¢«ŒÎ…R)“aÖ*+ÂÀÙ›hh¹yiïƒÂí=bˆ¨ÓÕq æ×KjO¿¯rEØðuít—úMÇr {¼8Èz¬õmX4†èÝWã^HåŽÜ¨A]p½TcÜdеÚS$“•”´¼}öë:Õ¡þEzŒdÄŸS")´›ŒùãáVêÑ9?¡Sûñùãã.WÏmÝ?«!=Ú -Ssš¢&åJÇ.:äCeÓ1œ!4´c"÷ëp+âÊ …^SœÚ¹ŸH—q9‚˜jÇ<Þ³´v`I`ÂËrCU‰X½lGÍ)¾Åª3«…(Úm8µ‘ L@nÙ2„¦1é -ti}3vyU6óåeJûf2ÓÏÕ*ª4œÉªÊ7Ö—Ìþ¥ö.}Ý“wHt–·QéhVc ªÛ®ÿ04‚‡ÉÃú‹4§fTÝzÖ’p*ñì›^VÛ=ºœC«T -h/õo£í-ÇËw‚:$iݶTÝ;Ë6Åû·ÙôŠjŒ3Í€2lm°óݵí•nQ±_sKž\Iß(eó.ð‡~µw£\äðEå/ì`—Ä?5À5ÙÖ¹âVqù¬Yš@Ã{$9Àoۉ㘯câHàzÖÑ *[ˆ$£Ó\×T ÇaؼHÌr{qX“B7Š6n³eJÙ[ç^9¥y½æázÔUÓ´æJ (Jèù¸:±zy^+àÛBäfSDžésæû¦Ðü0R&Š”÷‡ãç&â=^¬”ós\ß8­Ñú@áÇ‹ŒvW7¢ Dòå ˜/OØ:h. t6@ˆ(»BP{RKb/¬‡±œèª'_†ŸÂG•…A6°íPêŽË¿|‘×KýÌKl¸ÃtàÄ[å¯ê -EbRÑDfHÁ'¿^Lu×¹BoAš1½ž>î ôµ(Ng GM¢ããúI¼ó,˜€¾e Ýä‘”uø‰(Ô¹¶‚þœÜéí¤´6‰ÑgÔÔ5Ì:(ÜѲù$ø˜<œûBýmK×wÈýYºLþÃ3¼ýZ ;«Dº†þ¿Ì¿ã{žqÒ§±øþ »0'þ«à@À—$aõ“Ô}à¢<<„Np÷&|Õ F¬Aɤ…àMÊsOÂ>O@ѯЭéoþw} iÒ~7¦ë{´QFŽú ý}ÌNX0J¬-šÒŠgçŠGÏ‹tEÛhÎ2ªÍo÷ìEò–¯}ÍRØÛù§RêˆU ;Røˆ]ƒrÁÁ¹hy¬g’èBj3Íx¨D [`Nlf£j]½ßn/jTLÏóoŠè™r*ÓÖ&GLjÊ~ÞCfÌtí ;è¢2ÜþK pª:BìÁb=25<×hJ5"mI)î|Æ>¨ùxc艱?²»Z¿…±7w(XѨšÒM­6{!Ô·KI“"V6™Ô' œo‘ƒÄã~™U¨; B*|ji’¥ -N$MäO2¸EJë­S©3éâìjxT5‚®ØúÞ´¹Õò/¯BB{¦ò•vë]XAÄ1^, eòôb‘AÏuoJHLSS¤$z $Ñ Â{ñðjæÿEªBùäR"‡+kzþe á9IÍq^HØæ‘Y6KirÔ’2Ò)£¤:˜v -WŸˆõžˆ¯éæimä㜠Z‘šLlÑ1&¿ÿ¶„C€ætD¤é9_Èÿó¡BqM`Ä»)èìɘñú2á")œ\è¯GÓ¢¹Vúì÷ Ø'7@VˆÏ’I6­hVý€†Ð[M\ˆØ‹ì>Ñ0ST½0—ùý”[oyÀaß¿½¾/¸¿K¦:6?XH±äïÒš½Ê7t„¾(D¸`½’œÌñ ¡*½õÆ<[‚;¿ÀÀ;zB„:̦,u5 œTm’&§òæ)²`cƒ’|ÂsE)é$Ïe"oôÃO &¯îíú¬^×3»Û‰RäMgwÙå|Z¸ëÉsÍ9Få SWå|ØðP÷`“ôJIsÝౕiÈ?ù9r=k–¾×áP°«Á”WÌl `6±RnyîžÎqÙNèpLí•4to³3 å8þç³J §W‹¡ÝÒ¸nHeñã+#VºCʘ Íèy‹ÏKÜmflÑóàÄ^rYóL.­àÁ+2O²K[¼wdÈkÇ3xLjW|4#ýkaì€|¾‰ˆ2<ÇN×ÍbÍ°ã¶BùŒÈ@lXÿ XȆÒ€P=zyhsÃ7TÊ&g¹‡)ï²€¨]í/l±æs'½“û = ø±ûàðÏ„lå‡ßüsFÓõqŸyAì‘#_Ÿ’v™*0Ö1²- t·l8Eî¡kR‚§7[é—ý êŸ<îò iò÷ÓRcX<žòï*  ±É>AÛ{ý´Ü\ã5ZP­Ë½DJÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:uo‘·WªíŒç–$i@F>-CX­³ïeHÎÄ4‘ Šê¢ôˆ8uêD.8võ'nÃeòQ@cøbW+¬š^ÑéÐ1zƒ|<{b¿/Ëk(Å'Ã/1ûG“¤ˆ„QMgíD±L!Šg+Oà]å}ä`Ÿï¡u_FçHÍR¯Ÿ~TojþbÜ•H¡‚z²atñÄÁ¸f¦G±¥ì›³)äÐtMÂóïhÞYBS=°í¦Fì ¯mÍ•ç8¥õêZx-x ã{g=>ÉÖÁŽòýµìPAÑôô2PvDK£˜7²@]Œ¾¬ÅÜãq΂Ze².h/xS‹HÝIW~òàèÙÀö@%ÇnP¹5À&ñvT÷1;­ÉÔ‰´Ϩj`M,*Ó©IÔ”ÂÝÄRj%qTù* -F¼½uv2 Í…°wÚ3p\àxýå6ú2i#;~sTw½:*LÓ¯D3Ÿx8tÔ™ýaMèZS·:©nH—¼œ íNy -yØ­g#J,“`yIg4éaÐëßdÛåb _ª—‘Hfó×Ù9À±¯É(iºÁêH’éâÍjºCÉ“$!Öî(ÑPƒäÜSî9f’þW ÐÉ»[3*Øø?o:eEgÓã|f$âÒþ´„¢ù*iÊÓÿ©®U0C׃Ñ>_íy5ÞÉd®ÛG!ñwü‰¥«¤¼il™*ŽÐà^D¿9O~ë‹8m8 ¢óWæλ£Õ6jªÂ§p¢¿P΂1hpBfá5jdô¼%c ¸0z–î2aS"G¨W !ÔÕ â©þøTÍb8j 2>n†¾:W)ŠLüŸhÁШ6¥J£Æôä©®à±|i R©ÆA5ÿ=OgêÍCl’hÕð¦q›fª>L÷RÑ ˜ƒ¨ä€g¥ý”»“E±U×Z9 •ü{'vÜ÷¡¹::£®“Q&ç.‡k;7uøä¼@ºx¼Á 4R¬£ubcþð8”Ó;0Pö]¦4oiŸ×Q]vø‹>ÇÔ‹Ûd/ â 3Ñ-W7 ›´½ñ] «C‘ý}ügÎ},¬ášt›/‡·*È}Fª@¢7 )јö•ø3Ï,ýÊšþáÒtJRå“W nÈä›ÔÙy1OÊÑ{,±Á$C`l—±z„F¦ÖÀ ÆìÀèóPÃOE~®§þNc{EžÐEÃýä‡Þ$CøïÒ2Njü¿¦6^RŠbÃÆ »è…O‡I`‚Hédûû™ÌCìþá|Y+O’%­Ð¾vÊ%­îÇS{}LháÓ0û+ýÙ¥r¬g·§¨KUåèiB«]´v× ¼Õ²[šJ'Ÿ»Ë¤]K?€Ù=‚ ÉNˆuØØæ÷n‚«te|‰êÛšü2%A€ta_t*é?µd@ß™æÜIäÐ’†á…ÖŽ¼2Ô“Üqy>„»óâ¾âë;i íõMV!¿Cw9~‰W^o #Ãkp<Ñö+ÞjÎöҕݑϬmUFýBž† ÆÎ@“âñ¨Åm®…œžþEÿˆKV@vGã~>²á©›Á1›w/{ØÉS*g¡òemsÅ'[É7TÈ¡ OPÆŸtד††4kË“»jMý‹ýP¡“…B U\;Óm¾v/2‘WJy&$IÍwE'd”…UÂG¡Þ¥âÛ“ÃjQ:x£ÚoS¨ 2¦æ0. ¨‹‘êÂÑø–»ÒQ è‚ëíièˆû¡â+m[RIûzŠ¶†[Ž?ÝØÏC¢±\o·Û–*¼­³0\>xƒ1-²!Ìu3︒c»‡¨sоäÀSƒ`#+±9ƒL”ˆ²xŠüPN‰=íÎGR%ˆ=· Q‡ šÝ¼SWî_XUV¶¶”¢‹µ"K>1Sdydæ¦ÝÜ:‹øFô̈KfyÚêX}6¢…B´M=:$ô¿ôü |~ìá,ˆÜìèŠ3¸×]º³gGb^!oŠö,†€v]K|ÓtäÉf®KïMsÊMßãkêlm¦ž+}w~ŠÛ’†ûî°ò8÷£„ €hÇáúªŒ»›]Ã.ÚÌ^4à˜êÉÚ!˜í÷Ò®›¾ØF§€G’×ð|âÖ»8Jìòëáµ8áéclUéÅÕ6J¥–ôï/ÀW\ÎM>ëô»Á‹èQsµVï@d Ô]:JÍ4ƒtQ·mçæš3#F#| J¡®˜ÿ‰~~&&;Ie-“]÷‘³š0f»*§$R}â}ç¬g=ª,âÙÃÖzC–¯#«aß1ºhoÜ"®êÓXgÌf\÷¢çõ ¡oìkÅCÉ/‚X…@œ€YWŽ}Jc¯§[‘ZN\]íõ³ÍŠÚ|ëÓS¼fÞ±­ç‰õ¡-IÁ¾%4ËdH&s†b(0ØïnÈãFÕïÕ Ûˆê<1¯J˜N×KÁIÕÏe9W¸ì²–&‰HðžP°vtâ}þ€­ŠTÓ£Ü'Š‡aUÆu½Î+ª*7RI‚EÝ"ÕÆ]µ}šÞM,"gß($ ‹ãKWJ$[¹. >èø­0-ÞËóÀQD}è5’‡A»œjNsbéª j)ì@PÑ™»ÈIªÅ’Þ-m´Épök`àkƒØ© 2¥j_mª¤%¿¯Î<Û©ˆn¡ïôšyîä•¢Áq…ØâìHÿ±ÆíR0<1Û¡-ïš/§Ê鬙Ñ";€XP¢3bØc ¿[WSé<4S78@^›z¶ay}7»Ñ!HÝ’ ½Žzd8NÞg,Ÿ`Sn¢Þ+`Sé%φx\1’8å‰rVï“å•b¥ÅŒ8A#¬Éß>0Hì£ò&©r‰ˆ¾‡ã WrØ1w-#±\¹ÐKÇ£$‡9ßáè“,ßiŽ¬L«zAŒï f§Ÿ3‘—+ûë£g‘à'¤žÁ¬*”#îoí0¸pµ6p_ M_ÆšžË‰#…=´Iÿ+³jT$.(¿”óæ²Zø`‚KòAM Áp‡ˆ§x|Ñ -»š•?s9ЄÜ8owÊí>Í<7ààò⇚ê÷ú|¢#dÃIY¶ÁDá²áAÀ1çàãsFF|ý|¼EœvîðKº?t”ã#bù·Š¶}ª’% Y 3ô#»…¥´:ÐqÒl9Wo«‰ jýäûˆøÇi¼àòs‹Làý©àâ­zx¡bxEr·“™Ø(¡å6T¤À-ÉØ¿ ö23ÝÚÁ¤€Úô¹„uÚB¦Ùyƒ dª @ˆû,Š¡ø¼ Å.I¯ -ÍèR‘ÌŸ–Ô£ÁÇo_e‡œ¥´úõcç¼ï”4JÎjÇ -†PЗ¬ÙG—h±† ëû¶ûe§T£lù½þ-ÄpͽƲ v,…{gï]ÌÕ¥\üÔ¯UÝ9N&ˆôx_²ºÞ‹¸¶ÒK§m‚p=‚ŸØÁHÄ‘wþþ˜)],í´T÷—Œvê@?àó#ýþù››‹¬"F–d‚ ){`ÊÆ!}ǡЦ2š‰¼…–uåF‚ $9 --G,AO¬7³}#ÕÖ_ê,‹màËG”­¢îÎÊ&}Ð õë°Àz}¸%6šk¯tºÄG @Ñ%¸#º† -¯Ä™Äp¡ÂÀœ:ƈk d–w¢p_H?ÿ4lþ Wz””æÿŠêÂ׆ËNu¹Îzk:ói8ÀŒ’™üR™àûï=Ð#*õ@Å>x™öÖÑ›sa =÷2h…¨í«%êÛZEµCù—¤(«ÜX[åÔr—ÖòÅs,3æýÉgçUWiØ´È8HÑvŽb+YÉý‹ñ7§©¢TIUº³ô Þ#Ø£¢€P?E`ýD&&6×({ *ÐëFÎ\ÍŠà_±¼FŒfxPS¯ ‚ôn²—ä– -¹/Ä)³Àà[‡…\¨êˆàt4 ëlbé餄¡Ÿçbï‰Aþ‡©ø×ÀÔXÑC£F€\d#›ºDèoº’³q‰Q¸l~vóøtF½]ö ïÞÄÚ r–l˜Úe6I‚*uäs‹.+àÑ«¸àUÒzù·ZÖ †e¦¿¸u|Mëñg259#\°Ó§”{´ºË¿a19ž:žÓCK\Jxß„ ¥‰™•Ò°†Tökû¤ï.b´=ã¾%0ûƒ`bóJœðí ƒ"Sý9Qšy;a^BœàÁ…á{,w</Žë~¢Oåx3†,ÿÞ%í„øµôrüoX6~=Ë„ºº@x!ñ#Àd^æŸ -õGFDeºØ¼&a¬n97‚}?`šÄ©¿wWâ÷«SS___°6š°¤~cè¹·°€ê·Ø²^²nèŒï[{ 3±<*v—Ô5kç”T+'ׂipщ>zÞ[Ì&ÆX;$- x}:lŠ0eÐ<({.Dö‹ªSßãÿWöl ‘eqRžrëò⚧;#/U÷Ãì[K¦åíìÕ¾È9/ï—ìz¦H¢ éÂ-$VñÊLÚF¤ÜEãƒAÀê{ü†›æ­›Àlµ X­==…¥Ñ ¥– X2¦I{“̺è3Mª„cú0÷Ç–â -¿SúGß. FËþRãš””‘eNè Q’dWRË-ßFIÈU;ÿ{)¹8™=3}ºnyu~‰ôCT·¦·^<ö]ˆõ\j‚mElDÆÄÂh¯—‹´{€ÄÞÿ³‰ÆM5Ëóìx¢Õ%—y:'|‹p¿ ™5ÿÍžg^)`Bò¡ƒÔ|îÌÙ¾1ä™O¥ílwv1'°rñ§‡ÞöLàrM©S¸-ëKÏù¤1i+a"•$®$ˆ -¼Ì|°Ûù;žÌ¸ô´XáºÙš“J#/•Ò1¿äÔA_Hù–ž.3hLâÚ ÓЫAM'¤Èbh€ÞNe— BµŠ'ƒ{Àt¡9,å4†¥ÁS–·2fü?;™ÒmÜPßÁŠ³ª½àﶵeÆ»ú²¬ZvÏFÁõÑñç#Ì1ä\Æ9ËI-¤ + 7%LMå‹n—ŸšzÅl¥½ýHݘU¸a´Š¡ûQtBK)®&¬Í盹j€‘@æAÿ&YwZp@mŽØ3ÑØä¡à éº¢O•*2n‚ÑÊÉÒTz÷dz¬±-‰à ÉE -?ZÌŽÊÿ,k¡|…-‚ýœ*ÿë6×÷õZöð öŠZ©w…Þœ¸]Öjñ?ñKÐNOƱãÞcƱstÑz%”ï¾KÇ<ûÓ-|Z¸ëÉsÍ— æ6µ¿+DWF§¶ˆ.†«[“OÝÞ†;'ü$«:vöÎk[¯hуÉ­¡ÀPjÄ%Aýû*YS—.q~üûQÓûÀ±QO­ˆz~¦Ãº> Ì6iû´à7}^äFò•CQ²šF'ãË}Áš§ôŠ3$½Zœö÷Ñ4ch¦‘np“ ǧ³LŒ‰’ó`¢x—R HêI<Ý>_¶ªud?Ÿ)9®Œxšc9÷ L´b(Å07DpGªœÄé¡+FQÃ(´Ie'0é’§ “B#õ -$Œ;Ô÷²õMÊg˜qÆÝäÑqZ$cI%å_ÂEñ/JZô Øž¸ÿZ1¬,Ì+_I3AäB%^¯‡GôæF†-6«øA¡úÐWL~=6Á>4ªê®æ¶P@æx -Ub]>Í̦ì¬*¢×ú4æüxmFû.›ÿLé!86Æ»ITÁé"P\¬Á¯ð) -endstream -endobj -2253 0 obj -<< -/Length1 2210 -/Length2 15959 -/Length3 0 -/Length 18169 ->> -stream -%!PS-AdobeFont-1.0: LMMono10-Italic 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono10-Italic known{/LMMono10-Italic findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Italic)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle -14.0362 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def -end readonly def -/FontName /XVBOSG+LMMono10-Italic def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 44 /comma put -dup 100 /d put -dup 101 /e put -dup 33 /exclam put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 45 /hyphen put -dup 105 /i put -dup 107 /k put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 40 /parenleft put -dup 41 /parenright put -dup 46 /period put -dup 114 /r put -dup 115 /s put -dup 47 /slash put -dup 116 /t put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-491 -316 834 1016}readonly def -currentdict end -currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXì]› >:|s‡¬m’ºÍeaëŒØ„Œl¤·½v+¼¿:É‹£²D¾Ý([žÕˆÕÂG–ðúJJ¸£O´½Ä™I¦ªzÌ&ÀEnqšJâýEî†Ýðz€é¦&»CÍýªçx›h“+ ‘r‘nú«n¨»DœgúÃýEôŽ¼aw'À}ô”Ä|Ü ýꜱà$Ý%É—šš ד‘Z—VûgHTC(ûŠI_H‹áæÕ7}$¹%Ž\»yOaÛ‹'Oî¹ÀiÑÈ‘Ëi'Ç%Ïo2ê{´ô«PÉQÝwµåŒCÆX7%SëÃ?sê¯Íß~Õøu'iiqøúì³€þ€šN ÒÌ3w Q÷EŸ:šuÛ廕=šÓÛL•)M¿o¨i\ÉÑd·!Š®Ò<’ž0´ÎZEÑáR’Ë%qa‡´` ³õ°›Çkûâ)V&ìþ‰#û‚ÑÇRÇIœT´xMù‰k'ËeœkðŒ) ø}ƒÄIŽ¶³\ßqG¹#OÚëðv1ƒ;ÒdæpV5Ñ <Ô^¬c× ./#Q…E§UhÌÞZ»µµO÷¦GU˜c‡èeÿ¾5E«Ž„´»I©rô&÷¥¦v1Uçü4˜ÌSNä7èÌpk¤ÃÑøÁVe^qïÉT€†"šÚÄ•>î÷UѪ¯j "*ÚÈÉåá¯}”Iç’˜Ç]‹K•ÐÍÿŽ‡}Ø_p¸MVãÂ|~Ímv¤Ò5Ñ°¸žQ+-0"ô&'ƒ˜OºÖ`¶Âï iåÛmš¦h›¾)6¦k‹Ö¼eyˆj/ÿÛˆ…¨jú»Ýåo<“LÛÌC¹8ž&n°5Ì9È(àBüš,Á]©š;ˆ¼¯A‡4ÉXDÂÿ1Gv³èËJCò2ŒXÜ:.'I˜|ØÐ7ß©OŽãÖ—‹1_r:~‚–¯¿î‰ ŸŸ›8U ÐpÖ¡ýaErºÕ}Có±wú ¦{˱‚…½œ ƒ‡§l[]WóVëz,UŸ+gR訑²£hiLº¥][ƒcm>ǘ™b‰T08›°ÞÙ©ÿVAýx`üéðÇ!øä­ æŒÎw -.rmÏ){ìûz“´´"’ªý‰²5îxÂKå„0è9Ðu¤«@”ÅQ‚jS¾›_‰{•|Û'«¤€/å VF.¸ÄZ¤Á!z‹;ƒj”p.H‘¼R{ˆhBAŽ¡‡+Áiù*‰Ð?IŒ¢P„¸óøòaH‚È…Ár!ã‚~¢oë 2ÚßA9 SOœ}ÏÄž~4'±F§g»Cp’Ý|ºx{—ZÌ(HK›êÕ a[•…ï„,~m€3,£ÇÇñéTi”=¥EXò˜åa†©´}åÓÀËb9û-[Jã"O{R‡…ó1à*¤ã -–èÄÅl¢ë7H¯³.Ü×Hͺ¯ãァÝãÿ+2¾yÞºÊŦßÕkPG…v„´Õ”ƒ‘‹|¤q›+D€µè@i㻽IhJeþßH‘ìüõÍ=oÌu¦?ò6Ð0û+ýÙ¥r¨)têðÓlj»žñùÖR¤¾h§o1Wˆð”ÿLdO(üµb=¡5ÒâèN‡e@³cñ£¶H&Í•ð!™ïüôT¤ -Â)¿ˆWz½‚"˜_®×¶¡Ì‰VfíIfygñEŸYŽ<ºáÝ Q«JU÷»®œÄ$âwx‰SGZë…Éc¶µT* èOÁT¶ÿc bGn5ÀµÞ¦«¤ÞÖÞ2ñTMehXÖ=,Ðp8‚ W.©^ F¸`¸äz@}¶¤4奞3å¦Ò<ñT¿;0"eëø™Dï€Ï_9QÅŸ>  Y©cpìþéÅý‘ô³c÷†Qþa×馦î½m®+—rf]¸kLfzÆ/ÇZ=]n—Ì}Ùx·Ë8ƒìH’þ È›Q;}Ø7¦½ÿÓhG¼ñ šéZÈÇžE×£ÿjLÑ*m]Û´¿gN>ï2\s5ñ¶ÏŠ]k³âi'llG^}žU?fMUJÐìf&ŠŒcvRm¦a0$UnåÆÑ“IàjV;9ÌÛÏIº7¤®B›y`‡C‹Ù–ìgRËjQò‡bž»¢ºá6½0™þ” ·þyñµ› ý®,>vÏèîúÌ}J²b¾¦Xªg¸üPx|<ÂÍ’U%©ÀŸ`çÕ¬Uò.`ÒÙ -Ÿ´×½Yé)ìÕü “C Ã’ÁòýNþÖ‡0FñN… 0¼ý+jI¢‘&Ì -ØË{e~îØ_'ýX^®jRT´:3€Â䘙Ð7Ù9·rÖ—[X0%ŸlOX?VÁ'ãfmøGmZŠlÀ¥±B Òë⺵ˑ1§mêÁf§ÄI¥IêQõ¿yÛçwH(xtçÛY8fûRëžò±äb5j¼¼t‘ ë‹®‚ÉñNŸ;tKQÜ×Ò–_׃HÎ<‹c8GÞ`ŽdP]èj¢|é´Ô‡­j -ŽýÏ&»É¶©Ð¤c¼·•>(_Ö&áæ;óy¦¶ úÔã]À¡Ñè -‘±•·àòçÔª])J×b> w«’33ŠÀÚž¦ÙåŒÎ¾ç`ŠÅ¿„´¥Sçáævžmß¿LÆàoN"¡uÓoq”ÁðÓ–[˜‰cg† †7˜'î÷B–·wGɈ«é -üòUÝ|€$]žŸÔ4b€“©šak½ÌЃÙÄ Õ6ȆÒ[qÄz¶B³ªùv_÷ÿ.ÂÂAvÜô$ϱ€WäÍBÈ®á¼Ì¡ ÂÂÏmûœ÷~ð|Döôä^ʉÃ.ÈçÅ8Ì.Lõ¬ì´‚ü6¢2`dÆ…tû|Á¡]ÁE04ÿê$?ë¬kÔöJ!ÃËXg ^ûÞbÀÓ£JÛˆ ¦ä}3œfü$‰4P-dÔªÃuAz)] ±{'a[—Ï` Bwî~¶v9+„ÏA ^9Wƒ°fÕ¦[®J°8~@%|æñüF,ÈThÕ›Ú -rÆø<÷HÈ“ÙBÁE Lü֥ƟïÂ[`äÌëe—`€ÉÉ;Ì.‚sî4äï{8ùâ«=3bþ©¸1âiÄü‹,uáh¡1¯Çgs+Ã2¯Tpe:e$äýÏÜ­Ä -U;(©Ü3UŒIi”w>gª¤Å3î‹ý -ôîº,RŽâpØ‹¥4eÝH?6«j™Q¨xÔ[ßöÓ-ÆÄ-ظÜÞ÷y‡È¿’'˜„("î‘Ê_TÛ´Ú$Ñ4—ëæ3Ùà/×ò|…,—Îác -©šû“ÓTƒXЄá<±¯©©m5å­žÓ,ßð„ÑÀä‚…ë\×qÐE)CdW ©è0Àe„…Êcm|0Ü@ÂئïM…5^Yn&¶uå´6M—Xÿ¼%òÖ`Èñyƒp'ˆ°iÚffd¢ÜßCVì¿3%¢IK#ôsyöGð´ÞCh> Mú[’ÃèJÙC~Û}Pq_ýyóL+ ™ðŠ¬†Ý¢N~–׈Tr¡ó -]uÍÄ°Eþ)”‚bâçƒE±{‚–†Â=”ëêlžeÎݶ áø— -—;S I×W4Zi*I.á+ìNyqW· .U´>u}²’ ©­˜`l$ŽDSØë­ÁŸì3ÝoFo€3,£ÇÇñéTi”=¥EXò˜ã†tÐ94E%$â^FàÚé!‘}ÕØ7êØS7†ÐkDs#©ŽÛ+€6'1rf*gÒõ¦øoû¥Æ&z* ¸Ì{Nl'{{¬iªÁì5¯,>gJS³¥V~ó]X;©¼”ñ1íÉFÔ!´!üuÁ>ïìc+&Z¼Oqd4IGRiÎŒI‘ Șzw»ü úš’‰†ko|øÂÑi¶{2 [‰¡ÆÜ0B(Þ-àT¶ý½n¨¥/æµÃ¦e /´ÉçÕäôoèJò™–Ú~†ÐúP„IÒ!|‹Ñ!s©ÑdUg~2ØM¢CK”¬àöK…"Kƒî”…&”==~[÷Ëï†Û*±Ó¡ø™$‘Òvbж#šÉþǯhÓR|-‚âàu2 À¦SøôyÿHÌÃîº+uFXÞ±ø°{ž†A'âP7öò&O1UÔÝa´Ì´âOƒ_ˆ†ê.÷éÁesgO3LI¾ìõ×RÛÒÀUMDY’IãZEn&ñrÒ–?”sÝö%Lb?Ñ3Q*Bh{KfrØ岿QŠÊd Ô `uʼn³é~qvb©}´^Z– 0G>Ð…®"ʸœáìiXì»1($j2þjÈïn”›¼GưƃgNEÒÓ^•ÓÄ<ÜSàû“ê[á¸V îŸAý y¹º‡jÿ§hóàäÑ)E=̇ÒKî¹Ü£ñ½æ·ˆØÒ\rê_²9p«o%˜àaØ2áTue)ÝÒÁ$) òs6à ˜Ñ5àÖ×}ÉýTÏ!òÿ3ó'[Wýk"}!,ñ³Å\½·ðž³|Œ¨lœ‰Ù¹+4¢á²c« -Ãm‘»;qà@¿å#$Ï…Ðç n•x'á,Ë~"wEÛá\çš‘Á3+9|×¾õš ØèzŽ‚X‚À) -{¹•˜µt¹|@`qR"ÐÛ¡Œçæ˜#}Õ³|¡Ü®ˆ%ôÆG"hæo’p?OKÊx-"Ø¥ƒwõ±–äÑ\pîbÝ5™ƒyMõixÏ;ˆ°ó³ü77eìϘߒ’ßy^X5Ó‚~Œ9wgpÿ?¶ú^( Þœ±}A§’Hj0UE‰N - -ì8Dǧ›®ª©? Ix ù^{Ûi¨#ЛÒá Á»œ†BûÀ…F\ô%sÈxåáð©/&P\CXg¶ºJ;ѸI ½Þ9ÄYíx–*Њ wóx®¢“‘ ÊYé<`X’ÿ×$ÁöR%½OØKÙ89k3›ØgÓl˜õÄâÙD§¯iöÜ‹Lyp¤À:r Û©ÿá×I·6Ùjƒ9iûW2ÕÚøõ®®b›y/¥D=w3<‰(î¾ë1)Xqr¨}b0ûÇ™AÑDÎG9០-ß -&M›øì°kQ—æ¾4T¸Ê¶ÕòScS/½²O“â«+¤RRf‘%£è"Ž½Mƒ<.è¿b{ùôs¿À|î¿Iñ±/Oe“‹Å&{ú¿¤Íµ; UëC%N†X˜cL·hè]*¹Œ'jL‡pÓæ,~ê—YÓ7¨C~ Y®ž¡öl/ˆÀcUÆ#Lš¼zTË—!Ù±œ£ñÅ‹pÓ†Îñ_‚bzIš—NDÃ5¯ãÜÚ·-þÝl+›&æT.ƒáÈè¯E2U|§£+… -(éïy×òžy?oØõ;!Ÿ/1Ùã”F|Õƒ¯ngý6,¸/±Ì1nZïÈ.,xy°Ùj¦¸@>xl5Ûvðæß²ðɾä"“Ï”asÂÏRW‰Ô”’¿1õSbן6,0]8eÅ -Ã!ZË=µ‚Qo·$l{GáÈk‡Ø„ýyÅ|ž©”èù-ŠzW³‰þÌÜ¿·°ÍnE~#¶Ïs'¨úFpŽÛ^œ?”JÛàm7‚Eùψ™P—:n¬¾s/á€}Èò•úÙÏ묬Z†bÖ|QùðOdÝ¢}xnù­úÔæadWþ¾ûÐÉ/Œé×™UëhNo&›H}n¾fnW¸£übü8…`¬š+ s}³+R‹¥F5P÷§ªâwd˜ -åâ-4çLÇþ3²÷Ä<3väøjSfÃ}2³ÞdLs¾1$…ù}Û´XŽ=Ôøäþ“ëÑ\™ ÔÏV0'Þ– yÿŒçT-·Éåd(3k¸Ô%ÇR`ǺŠZGfîk‡˜ò‹‚º´'Ò³%ŽËxr -Ýžý*dúDâúì)!ºûØhü^Av΋Š˜l;«ê¸À¤â,X#R¢hœåæìÐJ ¦àH›ù!5£”8+È¢©Ky K]ÈR^BÕóï ¨¸<>ÄãÁ5(nÓ²bz){yîÍC¼á&ËF´ÝÍoõòÛs%›6) -–̱ÊOÇÝ|ú›%ã×ù†°#ºŒæ8|õlà%žYšÃniŸÕ7?Àb#@IF"MŒXúù¦ž ‘³êÝó}¶Ækxõ£z¾øÜáºAå)ê&¼#¤iá:»ÒA˜Löàëkip«¦?å? ã)ò` ¯hX)&ªÒ­ÃÐ"k[Œº+ÚÓñ^—pDÂGh61ÞøxÞQ™€—wŠ‰šn,/,·éñlØ Æ–þ[©˜OÇ1’2¹8j“#mGÄ'$¾zptr,ë•4q‘`=vsý»ñ´p’E”…Ú7=p¦HV^VÌF¢Ã[ˆà"áӯϑt¹+R÷õÚ_:9ýï­—è8›æ¶bw=EW ¼`â·q:³âP1qOL- !í˜1«=ë‘ÍO;R²ù‰‹=ÉdCƒ¥õ®6kº°t¯^X­¥›ÒÐPž¥ë‡}W¡yÿ4š8#?RóÊÐèCâºèT§v‰ód‚Ü7G«2Â"õÂ=´àX¶[¬ -%ÃܧRÖK{Ý©I}ˆÕ$óY/eÅÎT˜Èœ9ó{—CÓÕâÕƒ¿[*zQÙ ž(b%¢bÚ>³\†åBÿ#!¶mì/fß=_ŠL+¦C¿êÁZ\…=ÅŠ;à¶8áfÚ6,Çx‰T!ñ¦`=.¯·ÜPkœêxøy„ùp§yq>åFhRyß\Þ˜úÑ{ó t4<ô]lâØŽ'%¹*ÎÖÿ‰€ã}A` p Áz¹·ÛŠñ̤PR‹ iieDö±ñ)¨¤’~€Ÿ¶ÔÂ÷ú†&£Ú´o—Y0¿/ãx¿ê¬HÈØèì,`i¯:…òL¹"ç€eJ™é¹ ç¼w…ì< Ê GG"Ä°c¾]g;qdZ‘*Í<›¯Í³.Û¢óåÛŽi÷‚ÊÌUnMÙ’joƒÞ³áq—‘×ã£èo-ö¹Älÿ$Nc/·Ú7Úäò%ñÍÂÊàÏêiö#“î„;Ÿ‡¿T½’—[‰©}´׫„{¦Ê¾Îæ~B¸ôžÐh”~€­£ÄÊÓP¬67.Åp›Rà½ú Ó%ü”{™Ž¬=gnñ˜d´#ï$(ˆvå´š…æ '`¥HÇtRâù† Iž‘ƒ¸0ùFVÁ¤ð¥Ò²&GÙÁyL‰–FÛbÊ OpäûÁÅxMÊa‹ÁƒÐ6ÅêÎ<½™Où#'g‹P'JÐßr#R—Ì´|ý»bkTVrfê/Êe¼2ÂvyiÖ«â•/™€krÚ|ÃúüŠ÷‡Ž°«1PªLOmx,Á‰ï+Uv­TÉV냗Äâ‹ûÀlÉ!ä•DYÎ;üzªº1u.ÿÜÃÒq>î‚W·;²ItM8M‹ˆ»¡êúTFc÷: -Ø¥`Þó°í­žẆá<ŒV_“Ê>Òe!þSžKЯB '™==dÐHÎ4V ¿Äa⤿wÁ01tÙ%°zÌÌÐüˆÊú™ƒ–*ô€ÃÄÃQÞæsM à âh,ÏdÌl‚šJ®d…&e¼¦´Áƒþ•ïªÞ6vYƒQCBH»„%+"NÛn‹bÕ ædÍN„´Õ*É6Ça6é}°Q¾ý9-o :Õ,Š™GH€™£r±9’9[Âø U/°‡`lñóMTÝÄåt¥Ü[øWB«Õ†ècˆq™¬÷6ý‰¢s<‡ÐÜ@Nþ Aè‰ P.Δ–'F8QHëĆJã–7©M•j÷­¯o2jœðxŠrCÃF!Ë>eH{r¥N N̆Öýz]Òã<üÁJ 1üŠzo}D‘^)¾Ûïõí•Ó æÅN š93yõ2Hèöýb÷¾æÌ™¹½²~»ŒO=R{“oÖñïÿ˾J´ÃÍ3_>‹€Êô ·åYøòÇô­`É8÷s=¸5¯8òÚ­Ž§vUtÜÚýR«þÂ>gúÒi’‚tL(Ë @ññ;²ÄðïZ5Øbëð> -±»¡\‡˜l2ùô)ËíüøÙ/ µ*Jµ[X¾ã¥mц -sÒê‰(>†Ž]7ùc¡[ëdž3»àjŸVcwÒÞ læp¯0d¼œsȹ«@¼ŠžêÁ¹:äëoVÓôo.^ ÄЯ¾Ñ©¹ó%ÏÁ¡“´•–³»ºîšÿâôež: à}F*.Qé׌ «‚sž{–R ÕVbú¡8ŽßÃÌ+p¹sQØßë7ÿ˜ñq–ëYK¨—èªWÔ£ŽéèKðÚâõ®¶šŽë{£Rs¢@Iƒn\‹ÚïYõyµˆÞï¿ yÉAÃ-„JUÞÎ%XInkùGEt -í¥Cn0fœÚet.ÐŽFTÿsŠoX­Û‡Ý ˆ:öUu8P¦7V]Œ¢äœœ¡Í®Ìû,;.ð9l¾nEC¡L4ô×(éè ’y9)Ì=A—l£ð£<Ũ0µÅÕíøRÜûˆ¦ÉlOâï»RCs†ãéIbÍnYÃ$KÈœ)bØ¥0m¡Î\Ò A‰0˜ÜXíÏ9¬Î,{+H±Ú¢®ë¼DlF-¯õ­óxEN¶ñ4ªÉmÁÞÒ4ÃsP=5/0ŒwcТC¦Ï3ÑüW–®iüçn¡‘rÍ÷R͉˜P?‰( r’NAe‹½sÅ=«&Œ¤^5=_≽éZbõÖˆÒU5·ÏÜ¿Â6½Î›×u!“<¶?Œ)%ù‘o‹‚J‘÷ã‘FŠ–+ª|nÆ9¡p€3/èøFÆN7"$ÕP%køÚTé)qÎþè¹$û1œÙûy=ñ}<ù‹=ëÜÇFù®«´A#ðúÈY'ãºÑÌmk2o±h’~I%S&„¤)öSkyö”Á*ë{¬¯CW_²#í~¯[Ü2¯Øû1w¿+n«Ò [·}ÓTX¶b„Õ¢ätSŠRL;…³{h‘< ûíù¾,â¼jA }íЂ, qîYóíÆÉš´ÌP ÑEc‡¥"÷ÂU&ãÕàìŽï¼’™‰33˜'í„OàwóŸm¬£zÙ -£oÕ‚íÎiîÞ% ÅŒœâ©ŠŽæÓ8`Éê»xOç–TçÞ¶Õ–ý¢A61Yˆàw2ö™ó‚¶ÕC×´áN¦\`(ÎÍóË´n(DÕ< -µS‚EòÆ0Ô‹Ï8tV¾î›µÈ} µ¾ —‰ƒ¯ê¯o¶xob÷Biî½&ÿE=ÁM™ð$‘5JþÓ|ÒŠ¦¶¡ÐXkä„…«:ékº´,#±0礧V‘ËO£\Ái¯Öœ„¡é[;¤î.Õ@Í% ±,ܲÿ R& -ÕPoñìT8¯†€×µiY³ÃVy¤Ÿ³˜’Ôéú^ÇÁ,2¹ÿ“Jó ÖàŠo5áÙV¡ŽL¬oíšúsØÕ,°í‘AÑ`¼ Ó<êéYýS°N&îFŸ^I–¹k;ø¿òsCüšN3:…=À3åŸì€„>òEºC…¸Þ¼âPÚ2Ôý¶j¹MÝbè‰}¹Ìé£qpðÀ*œqC×"ÏÀ†wb'¯–fý‘ƒß…ºOKÖ§pDvu9Áý'ëÔ0ôf1be†ýw’yõuþ3>/¥/eË’[Ú\˜éŒ{¥â^áRþuocÀe "ò ¼“ˆð7{CåÜù„¢¸Ýk£JCq¦6#®eÓÊë€A:`D“±ÂMYâ¦õ…XÊ'N@q~šõ={Ó‡¸ýA6q#ς؈½ZÃCUŸ¼rÐSçטA¶Êxñ&³úk'%Y~æ.ø taŒÁÜZU˜CÓèlöÞ¼ð‰ÿ‘3`¶¾a쀅ómq’O¼zD#vÕdÊû_¶*Óî\^æÚ*8¿èÚô¬¼ÆQuÿ2'k¾”Aô¿Ýx¹L=ÍÝpãÃÎ7R¦h„l\YöðAn AÓkHe""] dÄsH )…-Î}mÿ‚ÅæcyýÑKqIrEÌ‘e#•Ä,Û™Gs;Û°K;ÀÔÞ6”o¿ÄÑ„Ë4qùXù‹]A3ÕÌ¢ByŒ«ìˆþ"v$‘yn•Ç“Àð•$B€­‡ eÓù´LŸ7[œù‚Ð<KÌTµÐµ)Ë®JÙ†ˆ?Ùâ³·Ø”À²:—ЀÂd¿ˆzKįÀ ¡6ãEÚ-æXƒOS—CÇÝÁ9˜®ƒÇcæ×E~¨ÍÏ.ªÙ|mšl'tS4àtTbv~ŽŽ¥<˜…>Ú§,)ćB·ËRDz_ÓÂ&_(e;1z‡´‡ßg)|Õ¸Ýò§M K­GÊÕî(ð¯U¤¸d¸"ä½Ë¾)ìS$‡e£Š¨ÅîÝ;GH%XHu\‡$æIùü‡t\,ôF^ñK¨2¶ÞÁ½…˜m ]Eu‚é ·£ëû¨p°øЗÌlŽ¿ê8H Ïe/`.$¥€0 Qɾ|ºb—惇¡a÷,‡PHÆa 1, -“S†}Ú Zâ}è9@+É)“Ý,8HÖUªè`qV)“ª;°kª€5‹ÓŠRóI#çÆ>œ¹â„Ús<¦Ž/ ýeÝÇ/è7\‘ûÙXAvrX¸&Äc«²z¶çFοœè³IÎ~/9Ó½ó“«Õý´ý(¦íAÕù¢XfPé.—jB`á ¸{»~Êh ¦Ä9µ§™^”½ª K’ðÉÆ"r<¬UôÕ#f(s–ØïZÍUÖxÿO‚páÀã6PâO5>B:’TÜNk^¥vŠ©â& -ùQf%Q§½oÇmW Öª¶Ý†rooØŠ¦yã>>ÜD²ŒÎu°ŽÈ]÷í–ú >2ëq<Êê8™]ñ04CÜdÅjæ¸þ¡P9QEO篢œÝï–éQª©¸î³ù·¢®-£iƒ¢—%\Ú™Z0¸JÆ´Iè gº5Æúûý˜Â–‚u4^«»é‡pm"§ 6Žyq*]Ø®’ß÷áá³”ôv×dE´å~ˆ(¶ j°Š=þ˜•'ùè2%–Âyz_†¢í‚Ñ_Ì?Ú—ÕÛ 99.5æ[ó+¥HjU -† å†y“—$=±òüZ‘Z᧲rÐ.=xâSQÀ”K*ßÁ'qÆÐáJRÙFR#³íž&¥Þ·¸“’—N ÂA>œQ"¡p1\9Q¥®ÅÖ¼÷Âé³ -b8v,¡LeØã/sÑ]¨zžQêÒÙ¤ÉÆ´žË¥MÑÄv®µÚûsš+C¿¢6<§O§&hüv¹À¾·MÃ@*¡ÞEü—„»i=¦ÖyÇ ©Ç=ðÇôQïÂ&Ë;ÄAQ‚ôR1ÛA–ÑyÚL\{äïõU³í€M%ïÙr—ņ$ŸãŸAo³üh¹îQüOjLß5/ßÔŽvÅsrSû]*㫽‹ZýC¢õÿ¤G h¥œát<Å=–¹@&¡>,R:ï™}5-i6T SÙçˆö×& J]°À^i¢9õ/XþA‡)=ê–¼p¹œÚ™Y^=f®ÜC3ùç U¶ ~sU>í4ߧšî=ý˜-.†³ËcÉhC•t˜Ì1SU3_¡ñ®éA××H3ËB÷—d+Ë{°½€j”¾nû(s<ãœóØ«ÞJ±Tì‡n -é§$£1 <è4Ç¿ ÈSª´|æÅl bÀª¹2ʾF%6r.•ÿ<)Øp–óNTvZó’øöšé—ØÂ+Uúí#¬Áêó™ßÆu|òÝ„ýRþëqP«›_~YÿC–æ7ÓC`0‡"ÞNÁBJ6RzZñÒý§¸Qoó)Wd] gå7À½aºfMÕǾ¹…. ö+²*:Q¾È»˜ßþ q[Lzk8dfåG`ÿ¥©üÖ{a‡´` ³õ°›Çkûâ)V&í©h -„X%†æ认?ÕEtde -Š_wRƒÎ<ž œ:Õ`»É§*P³Ÿ6z¶ká®RŒu&.öŶ Ø'p”]=ll;ï ŒÑXæû0/Û‡½ëÇqÔêbžTU\úæ„6™äÃ9O­4yºÿ¶†FêªÙúA–bÙZWš¾Vfz›uÈvµçÄò…ù½aJÞh%W!‰¡“­>|CºŒ[–„£Í—m!@¬Æú?`^éåXy´¡ÁG»F‚¦)õ;Â-ŽÁÄÕa³•µT¤J@ßp+E •ËÜ!õ”50XÛÛ‹‘±ÂH¥¿óû³Íèÿ³È!_¡^)LB†[ÏT“PË£ºè`bîÕjÔt™í_¡˜!–@&Ô€QWñÂ¥³kŠ l­©¹ó$jì ú_;«Rĵ’Ÿ#õ«O§@Åèg¿/pÕ³àélqGŸã¤¥ÌØgå5zœ!Ž ܾÅiÙøæÁÂÆ4è;epëŲZf>ŠeÞ¨ì7‘c˜ûŒéUá-Š‰­ë¤tØ™G^SÞu@P×ã6•FêÓ´²ásèFÞB”\¡õ¨ -gÒË_Ó‚™R  -)G1Ÿ±dërsizè0z V݈„H§éŠxù]ìXØGÜeéË7£û´ÔŸ?ÀA€šÍ¤UÆ*vµs Û=;@#Žiî›Îü‚Õ½‹ÆQ½-~èD¹¨îPäÄF«nÊìTQ˜ Òuè—hgGW1¿Ë÷y“²#ĹÀUÔäðÏÔ¥ýÉ„o+Sï{ó¹ Yd|­/|QíÃÏwRoõŸý`a#¤²ž  R}û•d믴)%e{ -©[”8N_¨ß?g£½on/ãÐ</…^é2´FlP›µ¼}f–c>µ÷<ÜC3xÍß›ÿ}7IŠn/ŠÂäÎó?hyÙç:”È*–R 2=ïMÈaùèÐà–¿8˜ê¤Á}SäÏÆ¡}ǘ™ë3Œ˜Àh©–'­Ø3¼Äü£RñA¹৻¹ …un»–µêN„Tˆ·–„„á‹ µª}±÷Œ^R_SRéTŒj3%w],·p¶Fj ¤v_]•ÌYûŒÌ&¨¼ ãZNdšwÉÓB²8§{Ú€ˆ‹¤HLq‘¼ 2ö ÜTnØM#ßèÄOãî€ÀØ•APÛ>,«!J’çÍš¢Çôɉv#µ&’°#ÆYíþ9б¹dZ<XL{ÚðùlÕpÕ™ Ù´Ê—&ÊÅ"L…?")ð³5t°L˜_f›Tl€ÛÉáÝçÄ£4ª»Òde£·ÄP ¶ÅìÚ׺¨ÎÍÕŒôjZÐ"å=ËuÚ#*¸¹ÚB2àå=«V½uŸªv¨ç¯I/cKµDçäºh†ODÅΠ¹Élw,}wQy~D f% 9ã97]`£FŸ÷£ê¾™o^vŸ„îÑXárˆG˜‰[Y.{•ñ÷Ñ9PàÊ…jÛ5·öcŽÅììcônÁF–`V|ÐEGõbDÜh8¹éÈ3‡×øš®æWh&2˜|=™YåŠêï}Tž!¤11Ă}Õ˜ÑÛé}ŽdÐéé/¶ú!”;©ÃªEéRWÔ´A5dXRFV›ÎEÒèº*%•&/Ü$±ç¾Ó…º Í­úŸ-¾Ö Jèä°\äF–‰m?L \vª@ŃÚÆ8<ÓÄÇç5£¬Ëk@⢒MeokÞþyš} ?ÏÖjƒý¡ BE“FÈžá+w¸b¹ñæcçS’z‡Ãü¹r˜Ê=Λެ /6Ào§²b—[1¾Ë¯+có ™B£c ýo&»Ö˜î“:É£ƒ„:8—ÙÒC!Õ°ˆ$Q8–Ÿõ3ˆ}<3`rÛ«8>§C¸æ¿ösIÁã&Ab ¦ÈJÎÙà-žÆæ.iüm³hbÚàË™‡ºqsʼnÚaV¸\Íuu#2eˆ8¹ñ(Ï÷Ÿe‹Äß–¢ØÉ.æõíDà!7ø€Fx‚cÿn  ãU›Rn" f™f´â$d ¾7š¶Ûž›Ýë³ßª]LòÚ-aú®þ ‡¦‡Y LÏU`ɼì"‹>F}?Œî2Z¶ÕiØ£²8ía4CúÈ^&èp…aa”釱çiÁ"Î -&¥–eIï*äXi®ŠÆfKJ™ÛÁ¼ËT‘Ë@9’tûÈÁ×Fžì(Ö±g·qôõÀÞØœ¬ï1Y2בY^þn+1n—È;þïyü¨Þ´9¬#¬~I 9ç ×.I/áב™¤.LÝ¥¾¤ý‚°èJAéæÿÃá-eÑ¢žwùAžN˜šçˆ¢Òø‡ƒpjïo¤5µ‡àµúÚR},D¢ë‚ƒ}cÚG¦K‰ŸO͈]Ká&îæ¸îQ„Ð!éeSV´¼›= -DÎG@|Skµ÷Šl;¸cêÒr Ùgý•He£úÅ<SZù&¡˜ÜBë–Vž€Ü×"—{Ò骴?>0¬“Àw¶ûòÎâ.”ÉàW›ØYŒuKa®ÿË„u×»)S÷pçõª *-³Iföv¢å´9õ÷&–¥ŒZMúPwÂvtê)Ч‹Õ÷R5°Ä6 ¾!?¡{o@«ñ½ŽŽjšâÚ3C†œÃáQtc%;¢¯^œsÏL‡_È{:“ç7û.éRÌêÆj–PyPê!3À±ÍÂ>šËr«f3þ×Y‚éh?ÄN” ¾¨' -ÛOò KDJøä1®ì*C¦÷%\lŸ1ÙHëJÌ3¯Â\’ÆklˆxJ¦ŒÆÅŸPLCô,ùþ­˜Ðêy ÛBa?ÒjÃ’'trú÷ÁGf̉‰-x’Úѽª¡J¸6æ wêeñGÖò1´a"]¾IR³›ëi¹úf¢É=afÙÊõwJ]Ü;¢Þˆ’·CîÒ©±e^S«BëäN}Ô^Mô+Ú‹[$ãäšXõÕJKÒ<Ïä웊ûMGÑzÄTظ'û j—è@61†™¿s¶?–(Úº˜oúü<ù¯4 å¶Wp VÈà.ƒÖxÔú^T­ãÙ@„¡Ü)¢|)È$w}ß}?½)ÁÜ\‚$Z·÷9ïùý­i•†ºMœÆûƽ’M[¤vÒ•¹Ã"8šR}J1·3,–÷C®@ -Ò/ëëZFRÞ¬ NËtZB=‹ü›ô¡Õ&%ßX1Cê €–ú†ñêœwwʳ&Ušã)Òc ‚’á2Ððž¹60ñô*­Þ´! k†Ñ¹OJ³KèÆ£wÊG4ÇKyã´ì5áP&¹=‘Ä£F1¾£º/Ñ2JãÆP…ciÐnýÆ—f"MƒFÌun§¾8VÁí.®¼%uy[i3vNµ#œ;2DZӈàž¾ÈùÎ1ÆoB8Š{áköJºãf€È­¥lÖž&A©Iñ`Ì)›–­ÂV{Ž[6í_Û$J©.¨Ýd®®ËöÇdÎAÉLá;Òy<]Àö eé¹×‘)Í6¸È~8AøÌmÇ9ÆGš¶CT3j[ëÁn7ìGïùÒa¶€º¿.îCD¿^’Ï5Zžóð(\A8æØ'_|Š¹˜@¤–Gù8gj\®Bé-? -"›‘§|gò3› p·B¸!ôÁ”°Ú§›èá)ÆéÆGØ%÷š°ÈJã9œÆlMoÙêœ ‚Z/ÞĮܑӦèÂZeÅ gM<¥ñí›gýâ}ÇU|Áð†”ìlr䳫~¦YÚd}âR•÷Ót”ÎùÝR—(¿ü1§›í•¢_*J§\Ñ-ÄÍyºu[J¥jrA%Z’׋=ÕÐïÿLês5'.ÒΕp\ -çýª–Ç´†ôlÛ\*’ŠO³ä_gŽ7·Jýbû ;lžE˦Oíú~7¼,'ù12¢…w?ÁÛö–d}ò³Æ5÷\ÂY…Ê¢²I(½ˆpmŒ –+_uÍu”­¦9—£cæ1¨{¶æ¨ÓQ·Zê%‚11áA´Ð\JëŠV;`öÿfsæXÌÆ;Î:M4ŠÑ/Þ  }‹íÞ¬œºj~Vè=kj•‘=ЊÉ‚gäÎéž$Ê'Åo»€*C2™_’ž.´´ -ý2ßÎ2&‚0DÙÜŸžæ¹ußb#”Š‹Y©Ó?&žOÄG'‘Ò7¯øE€´iØÍ”ÆÓ'Ð -z-Z)ÏÛýZpâ)¼ÒšrJ䱚jïc…û‚0ñí°D¬˜¡›#+‘kÉÔèÌo{.^›Éì[4Œ—‘âÿîœÔM)ñôv£Z(»ýSªÔã¹é$ksFUñmØØÖn8µpÎfŸeq Qx‘P‰R®ªe™ždÖ•ÿ -endstream -endobj -2255 0 obj -<< -/Length1 1614 -/Length2 22531 -/Length3 0 -/Length 24145 ->> -stream -%!PS-AdobeFont-1.0: URWPalladioL-Bold 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (URW Palladio L Bold) readonly def -/FamilyName (URW Palladio L) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/FontName /BDDEWM+URWPalladioL-Bold def -/PaintType 0 def -/WMode 0 def -/FontBBox {-152 -301 1000 935} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[ÂÀ1Æ…p§³T¤¢€®o¿˜ˆà9«`ü¯….´Î:þ¹yÕêpýäJ*åÈÀl'¿–eî¡}#)Á¢Ý&»7+å‚/^§ ™ëWŒ{ïÔLßZ60VåáÌQR^¦üλ3rï÷)€#v¢€$öp~c—²¼´°£êë&“è÷ö'ÄÉÇÆÅ¿ñÁä+ž %;a~•ê!”ty`rô³cþúv5‘© Nx8Ì+ÞRO„åŠLéŸèY€ažW=?!®>詧¶zÁ$Îã8Ðå -s(kzýOÿ1>¢Š5òŠ-Óãr‡BöH@´eT¡±cëÆëO†Ôõ:b±IeæØ—;"”tß¹Û!M–’Ï+Ñ”Ê0|‹rÍÐY<Û € -Ó¿EâLGFô_™îßxÄiÞ¬‚Ç5, +€T üBÁ)þ¼‰äŽÿ©.s†€«ÍLÁUt -…µÛ«€Ã±$)Lè¦ä xM¹ó`Ñ0õ„ß^üÓº[—U´[éѸ\Üî²™ P0¢þØ“ 뎇aWºî³¤ê;ü]´Æ ̨۟eÞ&§6È&þ~sD3ÈR¢œ=‰çŠR–Ck Ê‹6ïá>O2‘S;ì—z250Œý"¯²)ŒcèÞd/ArÿÀÙ;òK8+“f^²Ñ9ÀEŽhpFRtgŒ,,zÑf€x0±œ“5¦z êÉl“ʢжˆ6\¨E+PõOCêj“ðˆ6=,¢œ3 .óh­…aD¡ YW0þ„šÉ ‘†…râºGüÆßÇSì£W­=¡ûø˜¶k½¦cnÍÞ0¨7 ?Ý›ú`÷ߌÖD©çì«D}Ò£€Ó$‡!”g *ýV¬µ#ªHô;(ö˜èxSG >Ú|írIúÎx„:[[O£eÉÚ>8‹^tûíÎá8Õ…\-áwÐk(lÙ.9FÌâ&S6¥0J½r‰#D‰’àÂÿ­^b2>PèEoó¡#­C@—Hêg @¢aˆm°1%-½~@RÖ@,DÃÜFXÅP¤c*ûöõ®~G -áf ØÁ »»- -kDMu¸‘‹¦Xœêà2+m˜ìQžMý'¹é…õÎõG’¯j*4×<#BL’Š†²l´N‰ ] ´ÛÂK’[ÁŸ^G |ãhLV8œ¤6K[ƒÜÌS¢…>ü‘¥êÓïšÀHÛw[ísýa…jÿ_:@³A"ÓD"ŸZ0­†äf„Ú’æ»ç®¡v¼rãVkÖO¹C5&Òl€<Ku<¾u{ä-›¢z’-ËGFø·ª“+PiEÅÄB¢Iÿ³†È šš-¨ýu»TŽIˆ¥€Ý“ò„±&ÆáÖ;1ß]Þ'8\Í1D·zë¥çÅïÐ9?âÌm&¨x\±¡¹ETØ"IÜy¾™ëÌà“÷ÄõŠdÊû-µIæÑy¦S´x/¾zñ¡Õ­NmP+ü Nl-d«íRpåÅo&Q„´gö•áðE0pÐ2XÆ*B¤éù6]‘Mé¹eó.0záV¥î´@ aâÇÅÏÿad¦&ÉÝf‚ÑV»+r -ªçJÚrZ»n–€žÑ@~mÐâ%*ë»—þ^AøÆ6%ªNý!“Á_ÄàÌx˜/Nj¶s·ìõêK.‡6»l0M”ÇÏq ¢6 •à›KùÎÌoC -s}Z4IEŸ;•Øi91_ª Ž`~Ÿ]{»þ:U-ðÒ ПÐÔ<_ Ûìyl>Ò’ Ï~F»FC6ÓþÓXUŸ2ÿÉàl©&F_Â’B>ßô…†|^;¡•¿WGy)ˆï÷4Û0J\ß ¹Ÿˆ$›âÎeàÌ_¼‘¼þêh:OÒ4™mFÓN°§#îYsJëÍ|TÛ©øÄqžoÚ]Z÷ð£ -°ïCQÇÓ–‚Î$˜»¡÷nÐl…Ÿ-PýJq”̪àn3 6ý`ú ç° hµ/<oLµàHX€Ä÷Ú8¨U¦Åµ-xÔ#Êe:zaÛ—~ǽÆÜÊgf‚òÑAä´›øì®&–.)OŠðrºcä^ -mÍÜB‚·4Ú„×+¨/tá>IB´ ¿K ·ËÕõ#}ô¾ö˜ú½¬œ…× ŠâíHCöJú È/÷©z©W5…ÐgàÉùYÛOë‚*‰W8¡œÉEv(ŽK³$ñ!!NÓ11™ïwϬj3«Û’|=M‰¾C!gp3 ukZ¸G°C²ñ”Ï7©V¥˜#+OÉ —õ1Œ–ZÒðåo”‚¸¯š?þj`;Fù_~ gœ _à. ùªEbˆD¥BscŠ‡Ñ(bû¶s‹'õÑ›­UÀ¼^ƒP¸ôƒÈúY®è=ZL™2®ŒCñ UÝ'ƒÌ‘@º5ò4Ò¥^ý±'u%¤3Üèýåþ"Uþ¾PÛQ²ÛÂPª˜ÓÐ'%¡Y5‘ºࣔÒB¼°š/¬´M[—m–IùX[H:¡× -q6ïÂ|!mm9IÓõïñnÝJìÞ@Ã#ŽÝ ½§s{·‘Ñðd]ÎlËšmÛƒ$2ÒÄp{êmÛ}§T+¥ˆ9›®ÝEÅÅ,7h3̜ћ°ŠVŸ¸ÒªÛǃ;ý—x%™¿S¥éˆw®»O+z}ŽóU|ØGpG‘ëÐÐ+z;Ž*:E›…2“¢£I‘ÞäCñTAR°‡Ö«ƒ…ý6iVùã - Ái)É>ãA=ÓògöFE·[ïK¾/R?½WŠžm˜î[pºg:­t¦yáUÎx4=üÛÙ•˜tÍb¡!Ëü´éJÙ NÈ6=õÛfâ¡Ùn<…ÿø‰<ÄCTÊ -"EAPüaÿ&­¨¯rÐ9l ±ªá‡r‹ù¹ë?Á ZBdʱ~3Ë»´‹Õß\b¬«Àa ø+â\S?;Ř¾Ó6§?ñ#‡ÅWÖ¶g­º".ÆöäyU -ný<ÍÇŒŽüêN;0¶µý•ès!  .‘~ÃäŠE³86ðo=òËm¤>¡€Ê:ø1.C,]9ð™&ës<×yGÿ#È`ÂL™±Êµy!œ´c2¸Ò”=3,]ÝŽ—»´?ZC †šIö³Ú"‰œŒòÌ7®c[‡g Çùâgj~ù°PºúØ/¡Ç*ëîƒÏÂS6‹ãÅmIxÑ~ë\+à¤2Úg ‘­1Ó’x:ÿÉ2ç(øîôä½÷LS&Žg}ãàìPõåùõV{±ÍqCCþ­…Í°»V›µUñ‘Z^ò=ê,ß¾Ô¼|ËU¨O~¶ÿJŒö„þjÐa¾ëâ ÓÃãe$ !Ç:!î–mÀ -ka·,´D:øm¾ÆGÔ)¨ßãm4†!‹|¡¹ß4²CY1¦sXHü¡f°•µ+ߥyƒälú8áe»ÆÑ*Q2DSðkŠ5$q¥ÍÜ:¯4~ð_÷÷þž¤Ê°èÑWö¾Ó°° Çòn`‘µÔû²Ø×£i™ˆzÔÑ-Úä\ªÿÕ[h©‹S´t\Ý*z|äTFl»è±çêX¹aÇKl•å%,¾­¨që×ÕÏ×òKWv !ÐWYðS¼E}è©:­Q”&ýZºŒ /)ó™“n¡â‡©4‘BÖÃñüNØT‰e,!"ïš bJxœÎ¥«>1qUMáVäB‹¤Êg¶`4S@¦ý-å²’ÙÑà_z¯!$‚,•¯‰1­Ú¤‰…›&8cr§”ðN8®²¾ ³”dùaפGÐ\WªÊ½ƒú¤ÊògÍÚ6CȽA4 öJgðKËË'<ì¿©Ýwx$›÷̵«Üj½è§O_L{´(3‘#çrM/î {¦ -C+cÞk¢¶ÌSÁð¼ðQjDùjžqK¨f`Áœ¨ºïð2õÙ›ûXDËC·7(¶´6h íå²ö„‡§ÌÀÀÕ„›ö/¬/.)ïàqêB¾ËÕꃙøÂüÁ#=~Úmü9Ï&’¸£‰ £èŽëÉÓ³ÃÂdÿjc„AŽÌQ¼hSôÔ—£Žiáçë²ïØÐ¥Û œ6±]ûgCP[Þ”‰ÞXi£Í©gÎ<+³Î¡æ±ÿ–—‚Àm¯V‡)Çï¢ ƒ\Ö‘’Bï˜=IÝ--Ÿ^}»í±¥Üh¦uM‡ŠîàäÊF¤òóžE›¸S^Ï_‹IEýy J˜[¢E¿¹/I{Ù3/´uIWX~:ñx…!=D,u^JxúÁ÷ðÌf¬»žÊ,ñÏÒorï¦Ï\MÔ_³¿PtÞËÚlBýã]ÙËïê Ì£Œ Š32…í´q×Òƒ†c°À>#€XÙÐB€g ðxÝþ×ú­“ÁbéàþâgðÙí]m  :ˆ±¼‡k߸„šõlS2&­ŒÕ¨ï¨¦j'~‘‰‹\lÅ[GGÚ:jØO„»Í=ÖÓu!Ç£¨Ðv®…}™»¤·Bµ­ôLže†¾Þ›AIñÔ·Ò®žžæŒEÃ+5'V»º`—*Gx!”Ðú{„³ÉŠpä4GïÂå -V@ÑÄƈÜÕìG‹bI¡%¾Úò39öö$~‹)QõrFe•òì[úÑ«â{Képc ɯE$$µÇèº$L×ÂÊ<%þž¸;J±.ßÉx³$ze´F«Â0»4#îþ*Go«±‡XJÛ94¾ô|ÊKÍt´­›ð/;%I£Hå4âfHJCÔÙb4Æhð\¬$3vyèX ¶ÈÎœ¾K€åÆRM—IˆìHÔm_^)7É[PÐ TÞ°2ü@¬Až¿é"ÜÒnL ö:5Ww~¡ \xÅ+²†•¸z(0GnÕÙaY›™›úš-L+M$ã³"Öu£ù›VEÔtL$?¢,¸¶ówë®+Íb]O½sò[kvc§Ujé™ùa)Žc(€uÕ®gæFí²”§ÏW0Î'ÆÎÒYÖCØ"%++• ‰h˜bJA¹¶é -£h@&×>rWeQ`ÀSMé´míàe謺v¬ß 5%kªVÓ¸¿nkÁh@öèÅÍ€åOš$U¡¡£]Ïû@ŸÌ¥ÈÔ‘q8–ÑÜ[»zòTGù¸WÚž¹xÈïhÂÃâ ÞEæÆ|i¦h´:ã ¤À[2Æú†ùÆžg‰;¢rßTŽÿ:ºŠb×YºÌƒ¾*í…OÈÈÌÈ@¶ jNô?¢Ó…ÊÓ–sÏ€fœ%Û1w„ -ìsí?ù…›¹L@ãB;DÈcM7ΊÀì™V)ïj“í×ÕKà)š÷+GNÝ_ýð ’• -¯[U@¿†*ÌRo>_Ÿ^”¡Ü×Û¾miz £IÅxÝ0'õÔ›<Fÿ–ÁA˜÷=U¿~ž´3DËjó]*©eï*9=7³Lo-É)<œÃ¾*LþìåÓè‘»ÇÏpÀs3~(@ qjqM†sÅ}™éæøþJ|YìžÐKÐyƒM&ç'Kûór„6ãÑç“S ŽTH(|øõ•ñUZªfœ(´w΀ðk@Ùd#z]ŽD­ê¯®C&"¼Y\Š¹& Y** Sp·?0¦¾ ƘuRú©x“ª²ái‰9Z©QÜ“½®ø@&²ÃPw”¢i9»Ó>L»®x„!ˆ’ôƒ½‹ñ[ã/ËÁ°.¦k&GæŒÙ—¿7õ˜¸WRh´Iì.Cœ>>ƒ\ö ‘¥ —¿¾Ä(Õ&Ö¯ø©¨XÅ$ý6~¦ÞÙŠy±™?ã; K€ÝëWŒsª¦ÜëÅ)ì±Eĸ4+S¹çß<ž¿‘BšÎÔÅìí>Ubq)S6ö×Àî‚J*.¡›²Ð&õÞâÃ$X o´ü4îŒî.Æö µ‹Ö*izµƒ\Qª}qPF§ºƒ9]q£ Á$ Ù‘“2ç%cê‰j]”Ú -;é#î%$6üØ>OïÑP(}ú nœq!$Òý“OXÙöjM/ã„A…Žz^ÐÊ$kq;²’á8¬œ©„ƒßzÎI$š‚ éüÊRwŽTi™öÙXIs[~}Ä,dQü®½ôc*¦@/¸”J ƒÂäî^l¢©Î~ÃÞWA ¡.p6ÂÝ#sDå—ý äoöA™ŒktÝ åþ ©ÎÇÝ¢¼Î¯*Òœ‚f3'Xš~é]kJ€Á¿¨'äñ^b:–úLFyCĨN$=ݼ±/&û»œCÝ{÷f]\„KûvN¤ÖOЫtc5##K2z¸.'p+ø3 Ã¨šÒ¥à6Ìf뢨¥z·òÔ^3—›Ÿçñ1 ª< Å z%šó/LÙ³”pÙ™<¼:½¼Bb¢mgžÔ؉²Óÿˆ®ÆqïY™Ö¬žÖøãœF¯{j- »²`çÕ!7½nå0ã2¡›ñ«8mš4&5Œ•sRHà`†ÐA¿û•å¸$Œ(Gú¯¿ P LãYšKgadŸ[»ŽÓN.³ú8!übÃËÈ!½ó nõ/ #ü@öÉäŸë°ёަ`UîÈ12r½  Âb#Q8ï:“ ÔñA~½‰õyuøåÜË‹3ØÖ_Öi‹+q ÚxÜsúÃMßãkêlÉÉ΋a²`À¹IQâùlÈmÎiûÿJJ÷Ðu½6óÞ*øܘuÂ"ûùÉ-GnÉ8PÎÜ‚ÀTñ—"j2w<tÈ·S½(·×1R5Ïo„õ=¿íÚ-I×$ñBÄ™ÓjéÂyœR@´PÒ -· -‚ó,· ˜Xœy?QHE|®Ü<ÇŠoR1<4êå4áÅ,!¹éñâY§ßk¤ fí¥?#;™Ó»0¡ak:{•#! êJÕøÈ_÷ÊÖa\ÁÚþñøc™d;Ntæå”sî >8Pú«œƒê¬6]õ÷ÌÕaÜz¼8E9BB9ÆñÙ/g#椫Òƒpl×rÓ0Úy.<<©º÷m¿µx=³ÀöÖ4¾YKe×i·äˆœ#¹±Ô©o>¬]âŸôæñN„E…ø>!W›£jÆìÜ_:†rRu8Y‡A¶Ò<3)›ÍÁ˜÷™ìÓ‹°,oG0—¿‘’>„èúýk ¢^ǘâ3â½TÞÎvúíÐÙCˆ¶®³ó öHkE³9&Ž¦\ÏE{o;¨–94çÊòj7Í̓ˆPйÁ((É̯7¤F½¥‹Ä-6Ù†QJøF|ÊÁçåQ'[pû5Cfקvôë-º£`QWiBy}‡Ï0fz1o ¨E2Ü °PVp*–loübÀÚ‹:J¼êmå¹kR¬M+¢OÊvñ0f¨1 2§hô_bDÆ:RÖ†#Ü÷˜¶w^¸5Ñ4¿aM…Ñ*êµR7ÌÝA‡`µ1ª¶ möÚq'±òGÿG<_‘¼N#5{b¨Ô„r5^r»¬%%7ã=y·æÉê}¬Ž5OêœvÑW낉FÉ3©L\õ:zEø“(Õ󯚛šË <Ëü'^sqâ–Sw˃×.áïÞç²6 -¦üg±%ÛãÜ!sKBÔ1Ce>w®¾_êñÕòãÖ¡»¤þXâ¨Æùpä+‚a·4œæîR¤uKAüû_€†¾Ù'J‡ 'ðÃÍ#2%lñ*èy}S«ÐÖ‘›Xù‹Èntw"Kv!.L!¨^Aëc‘0̸ÙIâ]}´>ó,âÌÄ¡ sûŒäÑÿ£¹BÞôÆÇ”SúµšÀíÆ ñI§2Š=åííëõ aÙ pUÇk}aÙÁ1I™tˆ¦b=¦ÉßÖÀ04ŠýxžœÈÒ²8­:I#_ó¸Ë%‰8søKïÓ n}èˆùˆßB<`û{6ä=ÆØwP>[ŸŸâåú÷wÞ{M‰õÔ½‡iÖ]ân¯Å6øäð4÷6*þNÙ'3—Èê‰ÔM;óžÙ6Ö°M„ì'*…bôOÈ”óßþpÄM–1bM‘gî³ÓÜ›þ„«]C~ƒo´çå6œž j •©¿¨Å½û¯1 aƯ^$Œýr¥S§ê)³ˆ¸Ã08IúËoö CŸÒ8ÏÜÓCKc -]=@°BßIÍOö`íÏäIÑ_ŒÓ1Gð®Œeq„Mß*¨öߦE˜åûSø„ˆHƪŠÍ@j†‰ÚÍZ×cÔ¯—UŽ1>@†ÅqBôÈPû©Ú|?.}i¯k÷­õÚ¿þ«£ÀÙlÖ–Ç Ðw`dþû{9ÛI’|á›üã%Œhm€}Ì8Œx‹A™Àâa›Î|ÁºáÈàuR¶oüjc×u§­2e‰‚ƒ4fôVqÜ‚I#Ø'—£>K4Ìhô M‡ª‘øUòbŸŠžÓªï(%ƈÚâºóµÔ§Ÿg{~‹˜ÿóÌLT±{óQ!XŒÃ”ý••ÜXfÑFe5˽؉ħäò0ÀöÀ`{‚›ÑݽèОµ5±‘!ÜïB»÷Á!á©÷†²šjã±xÕ -­üîD±Z¿ŒÏ[LÂâ­?Bg8Ì&ú±¼„!~æ-ùÊoŸ€FÉ)! Òùؘz¯­#H,K[Òšýÿÿăed*eDœ·š®Ïð%@ÿ3Ë™épHݾúzÓÒŠÑn—í®ç»~Þì—"eüA#Ïê†ijz=ÄÛà“véE«ž¶n˜FÆ×»Ú¢£^±?!¾=ˆÒno_h…]I~'.I–»O˜µG(r{Í/¨ê„oá -]mmgf³Ù£ºï\ÛleÉ!5¬cG‹”ƒ´U [d] ô`ÁÓBÉC"îA‘ʸ`ìϲ¸˜,aÆéo'oÃM( ÐØßVÙžÓÛ> -í)×ß=1î’£}¿Ó?uÎùµèa¨ p‹ç©Ú©ùßz%沃ࡠ-ø{oJ¿c?ˆˆiëi’‰ ü˜ ÌÂþìڰ¢Z¦„­wÊ7mORwl"l›Šè¼™@3삽å‹CF÷¸33¾hr‡ ÿkªVmç,«Õ£gÍp1,üb1Cã²c”d©$È´–õA`•`hã.Ë1ë(dKåªUs7#‚©zYVdièk0XÊ»>Ñ"ó➤Ԃÿã[ÌW£}×-ZÍ !hÂÃ:%ýó+–Äò·'ÓÛƳgfä`»ê!wÈrã>7^EÊ|Ž¿C%ìYäc0¬ t'úh/©œûÝZ~~y…AGñ7›W n*È:Ú÷QŸæª.YW‰,.^¹vÏ×ÈÛ)}J ܈è…)ÿÆŽú-ËÀÂWp/MP÷£-©Œ@É"³´¦®AHl¸Àpf09X”Êè­9 ýXØÖ)A} %T*ãPi¢wisÎ<-«'Q­:Ýô ÖœÀ‡8Ì¢Z¥±â°tãÆ4T¯² ){, ¬ç<ª¢‰8•3¡þÿ†.ߪ–ËÌ䌙¦U¨A½Õ[Ç-´ÿ}ÖT*ß›J‚†ay&„ã ²'ùÌa¾_$1æb{U±H#ï†Ìz¯ ¢ªª—Ôf"ùÔ‘Ü~,Ú”ß*Àù-9‡¾ 0—cEtEO™ÚVÕ^í_ºÎ’8”¶\0G“¸.ô08(2³ 4 ä+ç¨âô ™cyJØÎAz*B„×#ªß åÌ™d5 b…@ä a!%ú°M¾‚¸j[§t?l³ð¹ç 3É¥Þ!ÜU{UÓŠ–/á@JÓ‡sK€V+!Æкã"ÒY(c„)*.Ða½"ƒm:²wp_Çš‹òËbí‹ÑÓÊO¶¹û ~\Â^æcò‰¼B1uëÈ$°¾rå%mxÀ’¶øýy$‹µÕ{[ÆîÙãDïP. ÷‘fÅ7› --[ãµþ^P‰Ö¾?M]åÂP€Ló»ØÃì˱9äý¤Å}Ër8fŸmQK…·¥Š —û¹™gx`ŸQ J»7Ö7X…ÈEv1ûN ß"PK R±!×V¼ãʪիkÀàåì ÌHÅ5חǽ-¸NOÀUÊ8&þ“ØãX;ÛE -BmC":ÚDw|ò™¡²FYVf(÷ZŒfF=b«Ì~C³fw§nꘅãä ðõ&i^«´)H’uWkõüëP`š…KÒ(%9©»´ /:=°œ'œ!/™ß8=JУÿ=¥§9r¼««}<Ž²‹Ò,tMD{p°Ì?äN k·ÜNvò7køª³’õ±{ Bv?³²+ƒhAÞê’Œ=¿£Ëî—JsÀ«€?iHÐé1ŒkV—:Ìnð Ï‘èŽôrн ³â–mÙ.O„FæD‘.lLçò ')aãw¶¬`t¤ˆ¡ìA#;•FæÝ8€~ø%ô„ñHšÀá;×I›AZتý™¨:ý®Íà@n:†Ú(£q';yûÜ‘1j—lóðÜâ BáBq–'ÚÝúÑ܊ﱪýÆzÜ>|Æ÷ÀÍkù‚æ¾Ç=e"ĨåK¯ÕW -ipµÓÁµY-§bJÝÏwpvõS:õ4óøn¸?,b)Dós ‚S®‹¼¼è­GCŠ g°œÆB´n*X]Ø¿€Ö Ô*f q[ï¦}NÎ yZÂì¹uVìÄ@GmÌLϾ¥åô:÷É’0oUý®àb›€k~ÇBA_€ë°Ÿ‘M¾,ƒ–¬˜‡¶8ű‘ë–½¤m6è×WÜ'µ :§¾£R¾ºÅ~ ¶rƒQÕO>é%³*Š]¹eŠ«|x„ë|´T".ïsiX­7”È“¹Î—¿•ÒÄ~Ð1-%·«çÐØηá¿L+ÓÜŠ‡rÒ ¤±ŽôQxpÍÞ)QP9ܬáúì;›§´æ êdÈß÷!-q k× Ø%ÅÑm*c_8pI ÃY!RhÉ¢ˆãËÖÐ,¿öp¥e¹I¢C¢„-$âcŒ¹Ø•Rɠߢ>b Mâ\G0" %²0RAê·&±Âc´OB`)›zÈ£cÓZh4|HF¼ÞFFW­ùø Lô“Ë¡W­×îÍdðLld»Qßéï챈0CQ9(O^½èÉF:ŒÝoíż[(ÌÏuGÝž"q8j -ˆ –íz.F>ip"fûχõ–HÂÓ_A ;–71{òø5h¤Td}³yÄåyÖ`ïـ܌¹©ÙIž•‹ã}TZ6Íð\“öAºÒµw2ˆ•Ã¢º£T,bÁŽçÔG¿"¥Æ­øÆû-ŒÝd!ñ¢èlÑ™OÂýHY˜\e&þ£ÄuÌ=§âùàÏá!(54ùþJLê¤Ò¤þ0°öRüzá^kRU“Ÿ£Þ¢u÷I@Ã,ûÎóí)ëaàáªÓ4ÊÕ‘+{(På4y Q¼®ß…\Êmsyö¾/õ^[iˆê?v@ðé"jÓÄ„ „\Z+ìµ¥ û“/!Ù_=aSú8¯‡¹Ä -¤Ükæ+ǶçV óåiýwíï·ÈÈÑ5UŸük"@!ô½‡ôl6›3Tìõ\Ùí»ñ õR‚ÀŸuŸbÔ¿#;ô¶¬E âT;ûõü¢G§9›5K]Ý“zŠöVVE}£jHÛGô+¬w>ðÝž÷ gFÇàý'î8ð - -eª\Ã6OÐM9Eâ´yIW¬w#û<ËŒ)Ùp%¦¤æŠ¯þq\ÎDs“#¡ÔWô<Ìœèèúõd̨ßHJ«çVkr5›QŽ¶«· ‰ ©£œ_ùç !=;¾2t?!fš÷Óη¿ëÞ¢€%þm®.÷õÕwËÜr¿j2ÇXÜš,Rªm¤Ñ™«%mè•rcâ4ç€2—(2^œAªÙ¸IÒk™¬µrí»ru®¤,G}³¥jЄ)¼î³ó<òˆ|ÓÀVäZXô ¾ë‚SeAAý/öªå„<”™R>ž¤)\:qPš4±…= £a(uê3©1~:ø^ðàZX»Æä+½8iù7_[ú™ÇNòþßDp)„3.©Óƒ¥L®›µLíÞ\ñΗ³}VòÖ"Agýlvâ²33«òáYþþ‰Ênˆô>,±G`ø¹¡ZZÍ -3è¶2šx}]O-iD¦u¦VQD%émÙpØMçMî”ÑÎß-)»C†Jµ·p¡L˜¤6ãÕdÖ1A±í æÿÑØ,äЄ5.—ð•ïdUšS¿Ç̽®-‚1»|јé|u“Ã`óÈî:zåœf\ÖBõñë£F=ªˆ.©jKǪ¯ž«Ö»'+MÚ¢jþ»&õ×æ@ ÜÑ^­¾Þ8uR<ßÿ>¾.ÊŒ°w¸£Qƒb 8S•uÝ€Œ^#TÐ -öO1PZ®ÉÓŒ$|%Ï!¿)OãÎóz¦Y°F1òH/$Lt¥èâ‡MùšßÒá“‚Ìßû%æo·a+¿ã×™ p"D›vz£©ë.\'ø±`+žÀNcéã¥&8‡{ìe‚œo3§Ï¶Ö˯·fuL‰4ù«s‰0ëvTÉbƒ¯Y7^XWG–Bïgc§n[w½µ¾àÄ9´>š§\µT®·vöžÿí'nÓDŸ·Ó ’­qr¿L¼f§ˆÒ Pü*/™±‰»…¤ÏU¸º‘´wˆÈ¡ˆåÉf3 -=£c3oy&˜Ü8¸|1H‹™Ý#g&¼ñÚ49TV]5•Èæö¬8äê‰mÒÚ¹Ù†ü]Ú±MÆF ÜUÃìÁ¸·# f°'[Ö¸´òÂK¥Fˆ‰KÑ©Þ͸W]Ú¸¯“XñÅÒ:"¦¿M=sX¦ ^&Xµeö‡É§uÙjIüPdóX—Tå =Dït œ‰)¶QÈ©ú¦˜»";垎ã«ù†:ò \E:Là—#‘’šEøÊòGXÄÔdvß@ºuúìqÑçùæ”è?—Ó§"áÝSØ•}Ö"ó¬zåÕ—ÙÊo{$i0Ýûé¡Ïˆ4æ/Ô pvÓ”þi혤 y±×¬¤ëG±ø%­¼ͯ:ÞâÜ‚ ØÿƒãH7l#Uÿž úÜ*+¶X*{ò¾§NÐ,ÛÜRh§˜ŽR[‡ê!{´’>î›eÎÀA˜FY"Fªžƒ9ñ“Ÿ•ø¿é®þ±É·²jÞ9Y‰Ã\²Óäö_Nœ'W)Cûdï3²ôB×LzMLN óO…X[`˜®j¶H5¦?¨æ³MR‹ÐðäìËãNîŠÐ;>#G3c;¥)§`UÆvLfioÉxY’õ‰¶&;„)•QܱÁ®G^òýØ"›H¦£ô™™>jHDkº.­”_Æ«Ï>MÁ&:0–‚AhˆýD@CºÈò7¢’æ A›ÍámIŸ¾T\€A×Ñ2‹u¯‡lX6`òçnfmÿÎ{_Ü0´‘(.ÜW—ägcmþI÷ZfƒFan½dÒÅj,SÈ©cyÉUâèЕa`•‹‰a5“]€*Ü,Y\ú57÷©–==´5lN,ŽnÛÕ·-Ðk£JCq¦µ -÷÷éº!á ´ ÏÃ̺¶¬8ØàC‘L'2•£ ¡v³6Æ Ç.ßßÂwŽ”ÈÒ+·¥Ný8ö"‹@gbp}&©¾\kš Ñéî‹9¦Ñs\ðž¿FxϫѦÓû¿ƒWÔÜ'É”úðA(øcHûšQÉÅò¤”Š¸ëPeB½[À»>¼âçÅn sulÍ®¬’¦Ú7"^Ž¡ü\¥V4É8ˬŒÚ‰—W¬ÀÏO)Ã1ÃtÐaDÒPãQ˜;ñF!Œò6'O布î„ýô6­;dmýõgƒÄfYúw1ù`¢=PºM†MWY"hã“¿ Fêù¼=†ã`x2ÐåÜ:ab(™¦Í¡¶ºwÏE%é7ó óùðj¿dm%Ä©¹7úÕÌ0Z6ÅÇ@¼[6ŠŽ}e4<§ºðñ:Zkn¯Ã¼¡Å°þðÜ¢“ðž1,´Ö½enþG¥÷Œ4³Ýø:ä#YL*GÇoGÐè‚üv›![©N»ìë c l_Í2=çu¹ôëø@ãòÙAa“Õï´,y§x’ˆÓ¯p -\¤ëøýô_l7´&Ü$jdŽˆ:B»¿IPåÈ¡qJ+ôµ7Ñ\f¶Àîº .»ì„ÉØ9ÏBbdìbJ^{.B²Á¬œŸ{v˜Žö¥ûVÇÅ3Ä(lH„Å|ìà«œ¸uçô_‰X”™5âNûŠHn‹½‰%üL›÷ϦÀ Ê»·!5Ô”´Ö¾ªØšÐ¾ÈSÁ<ó£m/|£:QJåo>'û(Ê: DX^U¯Y½ÌMÊEõpy‰>Äz‚ã–µœ@€ëH§wØš_†½‘ C UýkºýoZ°ç&ÖÜnðú¶s£?¤ëHrª0=3ÕG‰•µ3†K«ÚX©¡‚ ĶL›ýQÂà? TæëÂá@C6@²OJ¾4]j:%<–{ÑöÐæ΢tÅT¸„ý¦€\m˜1«æÃÈ,uò¬îU ‹€kC%ªôW^(.ãÐãÁ£•‚Š·WÖùÜ¢-!´ -½š|ü AûqOîPïGˆŒ…íèU\a¡}Q[&IqHñ†¨2Þí\Ÿ´&5¹C{;§þºéórÃ}K"bw ›åGºÂòàÅ ÇGiä—ðó Fæp•• Ør®æš«Jïy[¾xÒ±š§óÌYƃْ‰MÙÀuÃÜIL€ê;¤`b#+ŒMúNº±íùŒM$ÒP¬?k÷×ØUêà—ÃQ ÒzaMò|:r±i¨è÷a×ix¹!ªñå"°E'Bi—ÔC@ŽBšù±Üi/…+¶—éÞBâx/íL´ŒÎaaÏ_|‹F·¥pËV1¬ê4êºðÞL"6Ó~Ǧ¸îO/³9e`äV†.‰Až°iY–¯™áR%!e -ïšéñ¿Vxúýz‘ͪc6P„˜2)toŸÃ×0š v;XMâÀ2R’wM Û®ÎÆÙh*Ø¡Ñ{ÒWP‘<íUM3YŸµŠÔuÍK·VÄaÎ9 <Ä•N‰Ú -cä°(É?Ìç#ÁºKô¤o~L4~¡5¥ó^EÄZlã0‡“¢°{ïc6VböD|&ëS^‹;’·o½ù`0´á™™­¢3y€òHÑ â° êñR½HÇî;c%Is>7Ú}v)‚n˜]Q8ÁŒÿ`ô­ö‘Í]ö!$Tá(ût6gù[éòYSÊ4Ï4k-mž³câ[*FÅmi¼«ÈH­w#@™ÂRš÷ž£©Ôo¯N,vžÄÕ6ã`Ké}_PÐâêí8µ`¢ß3¯›ï™––ïU—HE\'=êk*·¥¨KìBŽIjÕá¡“êÌãX%Yú¦ýÃßß‹×=Eëõ[#6•œJ9é°}Nªwß1û4Yåõg‹)­´6ù“Ëu…l(ŽêDW¹8qâ¨qB~8^~^L)®?Y½š6?eö8ä6îºIÊõë©ðÃÔ@ÿ«RÌãÏorqFán¢8íؾ¹d__Ͷô_ÚÙr½J!Zn¹G`~«|ØgòœÅ¢*Ì^åcD>Å-2Ý_ý€â_c„öõˆÍ}òÕ)p™†ú#µŒ<¼U‹z¾!JÐK÷‰@NÿžbÔøòIX²G”ŸJ°TLäÀíuT9F -Ý×(c Ý•ZGkðÉÙ„gÙ\1Ù6‡¾í.f¿üIò8¢ãŽ£’dJ¤ ûg×=Ò8]„Sò5©æ98·+[?KM9MÚ%ã?f#lTðEø ¦¼—ŠQ,j“0bœbü9s§J.¿õð2qìĤ÷Àx!RˆÝ¼ÓæÜÄ0²:e÷âri~¬ìè•ÏWcœÕOéÜ®µ§ãIÄKtå\rU<2—»ÚT­Ä%®,­8¼Ÿ ûìqftÎGéµ/$’¶ÄqØoc!ß]AV웚Y3NÕc`‡L—ºå» ✽õ ¶ ~FJ¸ˆ÷²T€Ž^L õÀoþÇ%Ýʧ9NûRýŽàì3`x¾z²…«£$Œ‘Oá†r&;b“¨¿‹îÄUEÍLÚ<~ôB!ËÏ~½võy8ð æ’ V'ñÜ­˜¿öÓœšÏv„Ys†ãŽ\öË.˜ü4…D=KxŸ;Y8â¦Aù ©ü_zû1ÃIP¤;´S¨l» ÞLi¤}ˆ§Ê/!RŒóúp¤:g¼¢Ÿœå·† ód"Á•Â˜IÍ~•©?è$a:Ë"d£õ}2“žž±tþäE®Lׂ§.d øÑytïa+ïÄ@çlY™.ðêb‘ЯqN Ö@èŽ5¿¯äâòwr†e"¸DÐPX›w¬Yî0m»%2ÌðÔ -5ú»$['·‚Ͳ„c´V"ƒÞ¨à@õŸáøì‡ÞB´QÕm"Šx”U²¿™’„‹Kéa­h†rt]«¥›Õ -.p›˜]&îpO%ýßW¡4Dß}åzà²fîÞNL[ € :û1SSQLv+"DCPžîooñ½:LBygnUÞœÍÙ«×”[®žûúeÐ`Ê;»¯XL5¬–ŽÖp„Ôq-b¼‘€‚²Ðezï,¼xY¹-)…í==£ìø3E~‚a “ûSŒ'NrûL8«ÕÌŽbZá¿Ž¦—9D£t-íÿ2RÛôÍ#p£YÖ9ËÝ«…ݧŠcUÀƒ«ÃãÕEå‚ð¸æ­j²™%0C¯H–ÈÄÂýÐÐÀÏ`s„¦ -+ö3^9zî IÕ×¹Œ¬}èŽn“†;ä}€¢I5>Wuí´æÑÍ„8ÏoÇ+ýa Pˆ0â!ŸM§¸ð þj“ì"Sk/mÇñ’M¿£¯NbÁRäZù&N•ì|8j5ô¾¯E;Á£A*¾‰-›šŽˆî Êpô›èßÈ?Sœ¾ÓW÷ñs*NÔÒ`9Ÿd$dô1ÍLZkЙ± «2ÆÊpñN:®Ædk?›‡ 0fêéÝðÛé4 -rätÌU©[ øþ‘«jC-_¨A›ÓøÙœùxÕ'Ôê»vPµ0çÛÃV±³äÉH06h|œo3‘/rŒ¤ Æ×k¸3åÓ]‚ ßÂÆ$I\ÓꪢóðñåÔ£[Üêwû羪$Ïüâ Õ6\[_%ö!Ã+߇–ïgÛåÌó»– ®î ˲6 ˆ_uª`‡C§õr¶®¿[Û|¼Ÿ;ª{| Ç­ûúú›îÀí7Œ¬QŸè¨÷0û Õäßáhæt”Wzn˜0œOb`E~ñìK7’ 60Ƕq~‹yJ²ÛjÜ€œŸ·#Êö5wŽ{4c²~¦ŸKìKØ#”R1°Oo\+Où~prИ¸ôlà–á&„‚@±Ç?‚tÇoã¿!Õ÷ŽhÃÁòœ {Ú¦CòpÑÒ0Ý„ÔÂÒ­B,ÆÕÍgåÕœ™ -|¡5æø–Qš€ÀÏn™kŽ ÄŸÂ™òûZç e›¹´¥§–.@to½W¥=Ñ’]u3%pÞ°ó8Cxz°Â:‰ Æ÷·a>²É …ßÈl‹s÷«Û¯L²6&CÓ‡âè“”Bú.Ù‹Ii Š¥U9CTƒ#¤( zÝœŸ(K•âá—á8u(ç¼qCS)ŸO6/Åkªúôú«»ÅßuZ*óì6lðqÄsvjЃôk—_ur5OmÙ{(UºòÖT‚wO -Nˆ Ãl¶Iì¿ëF WR}7¿Åù¸±‡¹…Æ[ãCfô0$ðäõñ<Ño…¯eóg­ÈÓyÒñ{p…jü»kx ØÌõjÛ¿K Uæ(–ǵÇ'Äzñ4÷èýëò7—ÿAóoùR§@á@ˆÞÅþÌ9`á¤Z凄Þú / 4˜otñ©?r]êiç|Ïm1«Ø0OÆ›ÒÑ‹ý^u²^}™›¶ºÇ‹|Ç»ÍßKËê¸ái¥ñ,di ™¤üµÓÃ]}ÙE¿H‘$,¤:Â]_³|ÑŒØ?T 3¼ÇETâã&ýV.Øçìù"‹ýüŠø "‘4@·ôÃÏQ§ÕŒT sHß"&e0‡KÍ"|=Ž…Ø7“Ñ®ü‘½°†G'íÜîý”8b"#UÆDL¶ ë)­s|õäÂw>…Ñøº’}3}PþqÕ^‚þ~|#R¾™ZŸm,Ô¦ÁÄB‡à£îÙåâÒ é™Ú¯¯¤¤zÝߥ±–©· èó\JñYz ãçhRϸ«é 62ùâßÉúâ9ùuDˆŠç ‚»ýrÖû#‘^W\T¯˜2ä<ÎÛÏÜ —ßÜ/ -ù¿Ü ú•8f©'¶ùÀóuÚVñ’™©.d§Ú,i ¹ú+HTzw¡ïõqFÎѾ™N¿le "…ºèX¨¤å¡’æZ˜ ’q£ÅK‰iߧÊ"½úJ¦5¶Þ!î¡ì#ü$ ž*+ J×ô•|ï)åÆüQÅËÅvŽH¨¡÷ råÙu˜üŒ ,Fµ Ddÿ`qõÌùܼu„Y½ íž4šs -Ü»ýžo6Û¿A_* -×õüp¦ÅG½´Ra$Ñžl~ð«Þ9éÉGâa‘6l{Í„ÒiM×oª~Y·+‹ f¬F¿KŸjVP3{ÿ”žÃfò¶S£ÞñBSïçP7Ðîd!Õñ-lÔèl;Öá—r³lz¿'—Hhb»ÿøû¤}Èw²ñòj\îgð”@€nÔNà qúÞä» ¼6¿\ ŽmuX"øqßmÔ) 5/H^ì#ìï<”º‚Z^O{DtË+ó‰|ïÿÝcÎÌÒü±nÓþ\3ÛNsñòÕ¶t‰Ã-…˜nöÖÅÂ{ã±bˆ®÷çÓ÷óˆeBý’ÐÀymÊvȉÞÞ#ó¥¡þ‡ö!9Ü«“u¨#x!F¢"†8{Kpv¾Út8áÔ’öã3å%Ü×&43檑9t‡IlPhïb”w}‚.½BÑÏEûKj€Í×°‰ÎG?Ý“õÂÑÜÏÜÒ*ØC„yR,@dØñÛ¬ ªÄI€‚G~ÝŠ toAvAö¶Ö³ìçß<.ì‹ÿA¥úîsúâŠoTµc§µÌ‡Ô†,Ì°"kÀfwá`ù?ŸU­8ÿ·á‡ÔÄÿt&ë½ ùÞ:nAJ`uúdã­êìš'øýuØ`S6©¯Ë)«èÁ¶3£Ö©›ãâ R„‹vç"–ÂÌKE±+2ï*[h!œŸ“…m"Ž5œh:gó@uF æ\‡š¥.X»(øµ¹Ìãû,Ôà•<­ww ý[p–Ê–Ú¢Á‹Zª‰aF >vC%{¸Êÿ*z<$TÐ.Vyñ=K¶âW;"%Â-goà½uÇŠwÎ+´•ÞbQ?Ú,Bö¯1JR¦ïYn±l/;]ñ)5j„é çÜ>m¨îobê¡Še/¹kY„\¤^ÃmæüF. Äåe}ûDÿÆÂ@ƒUî0 ëaë„ü«[˜Ž©¤IÄßô¶d|Vg`ü”ó®PR‰OEÑ°¶4¦qúÌK½cJâ±WM‡Vô@íÖD‰‡±êƒÆ±‘Ñ%5é»ÝcÞÆ°2ûö*¯éŒ«¼˜}úÁ¦ ;å:YxöFJ4¨«ô[ ªô·3‚•Ï’/öÖ%¢Eo™rŠ—µ?=Kå­B b/òlÆ òÖÅ,£¾šq1:ð?„Þ˜ÝÜ(r²áF°’„ßò±±Kþ)îh߈~ÌfÀÀ8ç~/ñHN°æ&ª¼Š?µÿßëq±z¶l©üý,Ö˜$ ¹Ó~>€_Jb߬J_PJ´—tø';^˜ ·*·†¬}½;àÚÈ "ÞówGñdU:d ì´^3[ÑDª\›t‚&þÛOq“Èscy„g2KLSTºÕHKûÃ;91lZ©¤§˜á¿‘þrÉý…òê%¡[ -aU[ ð¼ñ"cÂ8)¿²ï‚\amFñjËHão0.ÜV‹óE‡ŽçWI×Ó&ô±ïUëSj—uXÄãÃqÀö%kE Çíœq5·ÚŸÆ_&Çç,IþDzíýœ3×HÎÔ2„À ^¢%µ’>*ã1H´þÉA[Ú±Z$`NÏŠ§ö±§XmNm|ê#{â€7jû¹[øXä4ë:ÛÕ°¯YŒ6vOO)†Â»›Ÿoó`ØФ©+¬Â¤wU/Ì`»ÙvúÁ¿¾M×Ü WŠŒ§2¹‚/ß×Æuÿö`¥Ç©`1ÂMé >¶Øëòš{»ß„¸ ~Fp‚Q6'‡ü6Ô”ùýÔ³qЛ‘òWE˜:Ú‘daže#Vip †çô’ñfJÞïjs%ã‡E˜¯p½”y½€y Ç·‰yG+ðôó(Â-ö¬0ZZvO:c]ßçSSEZ¿·7®Õ`Ù ® #"’t¬ -xÞîBSÔ·HÖ_f,~·&ßù@þôz]ˆÕØ!/öð-¤j7Ò½éáŒJIp•kíþ ­cìA/çRÕÃ8·ú©Ç•°Ç£ žH:ÜžÓ?Sû#„`%ѤMánóÀÑÑ;’êF8ÿøU7Ú,r†Ÿ@Ûà³==Òò­€ø¦I/³ÅxÖT8)&fþ[ƒ_‰}Y ‡L¤žD9ûÉÏ9­ŸöÂrÏ!hX¡“/w4xz°Ÿ[qXPÅ[< Á\¤Y.Öì#©GcõØ„?`˜°[Q°`¡>ƒúa<Û ¥ïú¸u€~€µg0.!ßÖ7Ã,Ò%á޵ײ+Ùοô$G±oˆcJ+‚m3ëµ;ÞuA&:è@ÒÙ|ŽS)ÞÛ1!,¹ÖSjÜÉqÔµ[ñ:E‹W: ÂDYçe»zê³þmFeg7l™sø]gÍa^C¼&IO÷E¤»àoŒÖ>ž47¥K»m÷üzüŠynThm1úG cg@%‘ -Žψ«"û\Õ©>ö.êÆC’Í"E5#Ëæèkrò.aÓûsáóhÐìî‚ ˜“7UÿÜã´¢p VÜ\Vï¦ÂH'½ ±Î„H¼Æj}lŠà®YI½^~yHׇ®¡3ÌSóXx¿/|Þå7ž[…ËŽN ò¸(FÝLŠ}ø6ŒêŠ¥o9®èîA®€+*†Ä÷½c÷p‹ÕãÑ+¨õíÙ›Ë ^tÃð -ef,éX¢µxdc -~¿H+Ø« Ô˜'rè®c´¿«Xƒ7Š.]¿—ºOì‡q¿”D@QTp %BfË¿lôòÁ75¦Çy’ûÚÀDý6·l›pme¯øŠÆ©`ìb÷õ.×)V㪾5°™鵕Iœ‰é?Eù–AÑîÀüOö-)|µv¸æ½1²_+, -¬ÂëÖ±ð7¶JøǶңâí€æ.›¹§”åmG£«XlÀ ì¸ïzyD.æébÕP/„îÿûœFrP4|ÇÓ~ ñ]®õšfïóÞÞã¸|§§üPbKû>픉ŠÛ5žÔ<‘ ·¸ñW;›…¦fÏaûÌ -ôQ å¢Ä©Z nÑ?ó~ÓªàÆb朤qÀrªÇߪOÓ#ïÆ#éÕríé¹–cà¥8ÆbE‹’í‹Áx¢9eðJÉ{ÀDÎëžÞ™K´hVÃ¥G¯=,qIM„`ÌG€}ÂÆ”õFúp[ö„¶C=y‰R¤Õ¸8­åm.ð(õÀ_B²œßkö}úò“âý{ 2V¸¤â‰x÷]ˆðήA>Vi^ÜóúyíH¿Ñ>Òõ5æôAÌdf/“¸'Vß„EŒNvï×à©PÈÅaF×Gáå¶böEPË'K½™–Pp'¿  Õ,9©QîаBIŠ©H{1¥ñ<žw%*ÞWK³o¹…ÿòÎÿ:rª¡Ìfð! Ì¡–²â(T æ"Étx¥L6nÍ|9‡ƒh¿A‹`‹($ZÏ¿ÿÍZŒºF­êo|ÉvúÐÔ³à_9Ò°ÚŠ$³mUËì=Fh®`¢¿5ðg®c´ŠZ½qŽ‚ž»®r'áÆml¸ŠÔZ‚l¡Æ`šFk; ùœ¿½Ââ0ÏcoêI q?”kÒÇk2™‰°#™«7²Ë¹A0ëXႲzzµ¶S%å7&mùâr!©K¼Z¸y’î¶K8¤ßW=²ÚÚ0¼ªãAÉû<%Ý){ZQ*ktªñ³"~1[‰ÝÜOp¹ôé„ÈÄäÇ›‹µ¿×ÍvT³»(4ZL»Œ+ønUâ(‡0µhDqgÅä.ÿ¤v†ÎÈà.9–Å…ÃNkao”|—å(îËÃÈÉŸË3œJî]¢[YFñE(“}zÑå•XF©ù Ò2,‹<}|s—ÝCGÎb¸6ÚtÛù*lrny]Éüð©÷Åð$-ôɦbnF'1q#…P¬!¯jÀSÑm£Cî@õõEe¿3O3É•ùú=ÀÑ’žÛéÌ]ü•*€©~kæ²f$»zìNGé7v -s‹üs¡!²¼wfbE¨Ý^ìŽP/vV"çæ}£ -þ·"þÅp®®ä€&DxÀ¨0µR+Ð1DÈ<4E{W"†Ñ¸§.ENÖ>71,[ÙúÙhPèWRI‘¯ò¤–„8üÏëý·éUìø"M—È,½þçmˆ P0ñzKz`´>¾µè]}Üû£M?0—j÷’Lçž,ijFf}¡QJ‰RQ0N•-¹@pd[LÄ¥ÃO*½À™ãå2ýmˆÒn"C+.GæX“7%¸RÿÈOŸéæÖÞù:úx‹cÁa%>61jÑ'ÀÛD¯x(yð@†ËhUÝ-fð÷z2wêæ;¯ÕÜçB1ä¾&&Ág92ø<|0/•"×”,"jܒѱÁqmÒ×^7û߸úC™˜³‰c0ð/ÚL€qè¹)¿9lcé‚ aƸ–¿PzNȲÀ)Å®þ„Ah>6V-ÂÁwœU?so$]v¶Ú÷rÝ&¾[î´ž”ÞŒà,‚níYlO·lž5«¥ˆ{ÝzRiõ«N6_™¤doÆ¢SNÐ ž zoú.¨Û4S»vªV „H{Õ>i†9dÞìæ÷GwjVâ*Jß.öÖz2ñCðÌVÞžH[gçeÌÑlÖŸF¥bg’’Šw\7¤êu%1d¥F­ºCÆJ)ô”?x¾AFÀ­¥¶o]ÅÑYÏ_¹ lüÕ:…áí×7´®¶·/0F€Ô(rçí+¬€Âsíw)Â'>èˆ7q‘-i‘ú¢µÚž¨Õh†Qá ?Õ$%LòÔ«fÕ²=Ö¾!4ì !Aþwr¨ô\ ÝNSÓ~ò8œÉð¿JŽiNJ…¾píx¯¶„›X¢Žp ±Â4sÒ‰bÆ;eMnÏBBê£Fº˜Ð&éUù]v¡’g×ÌŒ|z k/•¹3;‚ÁnËøé4N\%8 འþj|.ŽWgÖˆd¾Ì4º£ ¾ÆVÏÈðò#Üž …ªÈÀh>NFV)†5*uQ”ð™v˜ÁUU#,Ú?Ô ƒ~·ÁÞcõ®Â3ÚE$rn›#§È•»AúÑé÷&"ðoR¾Aò*§LÌ)WÛ°A«I Ê@ÛöûÔE ¬koʾ|,]îõAªïò]€"7M_Qc®©Ñ kÊ–6«%7#¹Qãf›Ik $.ŒÖxˆpŒôÊò Àsé+¥tB|¾ ìS@;2‚µc x{baTn¤WZ -êeä¼>ôòf0à(hËh ñÙžð -–¼Æs4[œR‚ƒ[âÛ^ý*FØ™e£^™ŠbÖv†Çþ¤ˆ× °Ÿ„ôj©Ñ«|_¬ó)heS.y>y•*·&6ØæP`ƒèª¸ öíÂ7Ø8öM)IªÃ5&À¶Å1@Ý”±Q¬·˜çµº({8ŠµÉâÉ¶Ì -éØžzBX‡—¦½ƱÂöî´«ï.~K55>=&-†Ú7æŒå.‘qòù«JÇ‹»Æ÷uŒãäiêþþÜ¡ïOzP\'L™½[«©ÓJnOœÅ|Á–“˜Æ6?ÑÈï±IËgA 0mÊPÝq•]c)?çdºС–Ù%¥$J¤lÚqâó?ò›,õk=Ä¢¾Ý·”4RÈâ"ý£PXëcó¦0K\J‚SM_Š´é“¢¨é« -ñëN^Ï¢ÙÒ«=ô½É¨ÜØNÙÇ6(°ñÅêÊY¸.h–Â5Ù‰£][ÿ4ø·ýqwÑÙf ¤Ç"/ÀX•hXd/ìvI»ºm­Ýç¥GfØX÷ -ÿK=ö² ’á(ÛHfUïÎãrÒø¾IQ$W0LÇòÅÕµ8ŽÅX‘k¯ß‰ô¹­JÏMÐz{äPãÀ÷–¢Ô“‹¾>$ yò§ÑéÚ"Éjrº½¾‹Xf¯yÓLEœtnÖy“ÉŽœ‰ö•ƒQ]Ex.ò¢B‚…;®úˆ[„çðÂXánÍUîOýÅ›1Nd É¸&÷ïÎŒþ -endstream -endobj -2257 0 obj -<< -/Length1 1616 -/Length2 24418 -/Length3 0 -/Length 26034 ->> -stream -%!PS-AdobeFont-1.0: URWPalladioL-Roma 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (URW Palladio L Roman) readonly def -/FamilyName (URW Palladio L) readonly def -/Weight (Roman) readonly def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/FontName /GLTUCO+URWPalladioL-Roma def -/PaintType 0 def -/WMode 0 def -/FontBBox {-166 -283 1021 943} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[ÂÀ1Æ…p§³T¤¢€®o¿˜ˆà9«`ü¯….´Î:þ¹yÕêpýäJ*åÈÀl'¿–eî¡}#)Á¢Ý&»7+å‚/^§ ™ëWŒ{ïÔLßZ60VåáÌQR^¦üλ3rï÷)€#v¢€$öp~c—²¼´°£êë&“è÷ö'ÄÉÇÆÅ¿ñÁä+ž %;a~•ê!”ty`rô³cþúv5øb‘/¼W©¹™zî²#gß|fà‡ -ËÞSS°CŽ¼3R>›NnÁ'Р(ÒeadÌ/³¾•BÒ¡ ¢ÑnKs­Ò¡¦ï°êß w8H3øETzðÒX‘H£W‘}ÎàæÒó±EpúÔÚÅsg“¾cxHSAÑB±Î]& *Pí>9Ýš.‰ÎTZwŒ½¢^±q$ÛšÎÊS²Ï ¾·QÂgÉX¯ušV,Ð’"ª%_â /w!¦•ÿjßTšƒûaù­¼ÝJç@¢Æâ„Pq[¿vÜõ·ÐM~³ïˆµ­ZIêf ·†îÚèè1÷N4Æ6{ÉAö"‡Ç€ôŽ¤ò<Ãhú8ôØ›Ø)¢²¼˜Ð—Âæ¯xl¸aì®-Etö T"ÿ5ñÚµ^1z=Ê̸õe.°ä`•¥Éâé`̹–å,±âÀl‚Iº þõpïpšäЮ#QçrWJ^URòlUïQ6ë·O {Àµà6OQžD´;•Dn -¹`]NèIHΣ{¦ü+¹à×Î#ß逞(BUndê/’‚¶*ƒ ÓošâÀxq¸Ýð{ïo1Ø1«€Hÿ(Áä虸·ˆãÏ–à ¢Ÿ•[äävå ™‡½½i•ïÓ'¾²òj"E`$•Ì·…ÄИ8K¦°iÈbÚîjë{äÃ0eLáÂUluJP, ãiËÙfÆà'ÛªhŸÉ7 › ³®$6â༊:f‰W½<Û6 -%)p\àÏçèeþjÊïÝa—ß\" ûÿ9!œg‰Ç @GˆLmúÂs0½_JEn|‘&$SÁ…Ÿ·úÐ@È\mèªÿý<؇Áu®Zý=½]¡m€jX “æâ}i·¨]ÌP»Û¸ˆ]…à'`€ùL¥Õû}½ÏY>ªÔ;h÷ñŽõdã¯Èg ¨¡û‚ol^k¨‡ i‚âŽEb¹µËЯ'ÕA´vàÅíYqe}¼±ØnŽ—PÞÔA 5Ñ]«X]a¬î-ÎæñÞãš]3ÎÌP›ïä7úÞ <ÌA -³ó£¸NPl…G6³/†E†ø¾’?¯‚]Ÿ`©#dÄ'ñ¹Û  õƒ†~ÊþxL¸sóÿ%ˆ*4d‰^¯|‘Q™ÉìµÍúX½U¬ú=ƒŽ=Êh-lvŸö_ÃxÙÉ÷…±OJk܇âi Êé¯DÙ‰¼®Ì¬íÄ 4ÇÞò—”ý ¢trBÜœB§=Ä,vÊ© ÒTÙ³0$íŒ <*¦qkp¸`´h1=݈òDy.Ubo\dˆÔŠÉNí„ÎÀí"¾·6>ó”ÀU7FäPö•ðÄÌb Á–ùäBbŒF¶åK×úêPå©°¨»Äœ›oŸ?&D†…×Ðœ 2áE¬´ž´¦FŸLXô§³ÊàÒœÜã'(^˜­´H¤?l‘€þ}ÜDçO(ÑÇ¡¸UI.2 µ'ØmåçëbŽ™ßƒŽ#Xíö„¦²üÁîâ‰ÕærÂÏX¨"b_æ£ïV¶ü`)è­…1#ǵøð±uRÿ?ª%ÇÃ{K·btèí2ø›ÈÓËÔh‘h˜Ðªwr‹Aqhîœ2r÷{ ¸÷…ËÚKÊ^û;8ˆ‘á`“JÑ:;œjâ€Gꊚ1ÔZS ßÚm¢AO4óøS"ÝÒëø ˆ—Mq|E9s-­&þPF þ’zä‹÷é¸k|¨ÑNÕ8̵È}–¹·Û€aLCó³Â‘ f§‘ Å»]´Þ©Ch  ‰àL¸á²á7Zg§Zq†ëÊ‘°d“¬®¸ô;¢æãÈñ•wöäøæµ @I&ytŠ±R€­7X^í=iŽ?+¨Cð«bÓê+©îwVªŠÝ\0“±S´ó ÈÙâÆü œzK|V– ÂÐÐnz ¿…qݼ‡É³i;Þw ½vð@%ŸÜC±(º,$…‘ƒ‘ëiŒg2A‹-ô³CRu‹9à 0ü*o‰ ŸÏ@çè¯%«1Ü­´Âÿ­>Ø'éÇø©¦(fôè×¥Z[T[DùÖ™¢åÛ Ä>b´-¥·\˜‚oU‰Œ­k•÷äÃøÊ#Ê’ÉÀŠý¤pÇûªŒ-TR!šõLÎr«³“ÍŒ^¨ÇvLE·`#â3¤Á½°œŸ jÏhØm# oÞa|•…š[F«¾Ño¹Žo±š05âføŠö´iw¥-(8íŠø/žØ/2Sj²¯·Zés8QI@61Z?eA*ÌÝtêÝØlù –¦+#?ÞñښĒ|“™©fóÙ†>™-`›sjòc½ -"íèØ•ŒJê#å†!í³6? ²w­ÁÖ„¶ºn•‘ð?) Ô(Zжu(Y`Xë¾å`À-–Zvô¨k@Q0Óвu“=½–\œ‚Fà -ù÷gî˜J­çQíƒ0}б“˪~ÒÙü+$b%Þ]ÒïMr¨»ÎñŸ@]Ð)nÕYÐÅÇÒǶ6›;µ=wA=š4vºƒçìg5š«Â!OwãQu7Ž~8ú%PM½ª¡Æuì°Þ0Ú’ -™«;.}0ØñvËm¤ +w–Ð,²˜‹„´o‡(8—Úd½MÄ$Ðz5jŽ äó%!¶ßuÕÀ´¬ 3°Npü#ÖºA ¿4û„ó[<•ÛåwUv5—ÖÌ–TNÃÐæ˜Ø!êìÑšøây{µ, VñÆë-¼146r/¦Êó’^•'ð¹•4ûI;ë§Ú€þf¹tÑœâ9™ÀÓ˜ôHÓ*-÷èZ¢?6ο–È] ÉYÖ„Š(8g¹k‰Œ©FgÙÄùP”ëû,Âj±OÆiæÒ2ÄúAfG=×a¯;6R°T„HbGmäºe¶‹îÎÐòHÁ=NÎ`±ÄBЧãn¼¢-nZV—OIÀf@ñ¨•û\ˆvª”Iä‘Ë]ã$ÍÃrÅï 5Äݯ¸=t8ú>Xe/¨‚z¾"›©”ûJ…ã€Sg˜ ƒ?s†sf ÑÇjWKŸ‡Ùz1—žqë€Ú…¹ª mÅ7ÇÞ‰øW2Wø亄I·šXâË[öºhìZ½âÄý3ëPVL°~€àìõµG¨;#pÞ:ÂlÑP¦ «uA·y—»ö‹%'±Z‡~e¹HõÛš.¢­/:R\Âi¸¥¾ÎqO±«°ï§¼)? :°„×p59I½[Ÿ3aLŽÆ°Û]Œ˜"ˆ«À¬¹&WvtèÕKéí‘dTmÕZÏÆuÕ*îm·REàDD+9 ߆Ê?î™Yø¤\÷ËîÛ‘Û®nP7­šÃ¾úX¼o|X=¥š@ PÝÃׂ"~‘eµ62p» tõ+”›AßæÂs–íz ¢—y0yË«vNâËÐÍy6îz_38BÈ6»ÔÀU§šó@êñÖ ¥)å<æøÀ }f·’#@Ñ=•sߟР•Ðßtè9ê;éÓfÌ©u:ÀÆšàñò¤óC.4èVÄìqú{zÊ!pf;ÐjÒŒö,yv€9ïÏÊØ|>È ¸ý®§cܾîo ]øœ46xØáþ/Á©ÚI©`®Zê&+d¬#qI„”ýDžg¾H™ ÷”è‹*K–ƒgðº)Ùá<ïÞÑ7×6}¥)øüŽÆ ±RÀr}þ49óØtÞMãc±^$KK\ù “ù~®Tr¡ -f€[äLì]Ëøu%×Ò7¨ú]àµÑUšP[Ö¹›ñ'Ü®ëÔÆݺ¨øÞ` z†a^œéMJ‘ÊñyLìårsØ)›*ªzüo±Ÿ‰ùË£ä~ðvj1æÌx³ÒRò…B‘æÿ’}æJ挋±Àáo<¯\;Ù ¤ÊÐdä>P›—ò5ÑJ¿F[nüÓÛcøÅÏf!Â6¯|—ç—ýÚïõt{9µ¡¦ßÀfGDѺ ™¸J'Œœ²é´òNŸÐûÛ“av Òî„1Y¬Ú9·% 1Ò •ŽÁ‚ ˆM…!=BŸ«Q$E<æUÝÆ â¼H¡è‘†õE|Øï†pqapÅê}·vßgœ ×z²N†êûxöŸ/Lb©OŽ=*Ë -8:ð&¸?)HªfKù])ºœÜÖ î†E`å–Bdl·á~éÊ¡ŒÈ?}1Öp’„ÈïóV³—Rñ—‹îã>P ÿF~ß¿‡ÄôÌ0ß ÷óæÙÙ )?'Y`Ð)‹sR¼|–Ï΄WJüG!pzÌEäÜͧjc"ý.å_=5½E -*‰„ýkÈÏÆå(Ùæ‰z–E6ŒÌbäû]q@øù{ˆÆö½Cþ[®/X%u±Hä[Íp[Šíå <Ã2ܶ±ÈfÊ‘ N2 ÒŒ#_ËÌF @hšyw¢Xšå6ÕÝA\‚éDåèš……Š*%-Y»šB¢,G?Þ–ìžó~r¬òÓ*€QUXÍ&^à ®70l¹ûú)¾Ö(„•škRË(‰ªLxöµ†X%yÄÇšŸU½x.Ï™C5ù˜ÙÅÄ!ÚÍ•þñàhùšžJ-ái-_á*¯îd -hA¾:kLÑŸGt‹¥#Ïú‡Ö°Ôš¼ûçøרåð¹á¦bP•±ÿ¦0z/„™¹#¶E\µG·qððãÈ;]-µ"j<ænø)XMŽîI¨w \£×;¶¶[êZ}Š]ÅGáúÀíÜqú~G²AÓ9‰ á#BîÓóh¿ó2§Qûý 2I‹×ÿ/ÑJ(?Mq”DÌ#¢?õý,gðÏ„lå‡ßý?QçÝÙÆB’®^.`†ñ~þAÝÆžC)Ý—¡ÍNÒãßÑš:BÔr½]ƒév^/"ο6!ZÿÁN–DôÍ{~’‹BÜ:ž–ý{6aZ£ÈÏ«œþ?}/ÿªƒ–žT>Æ÷P_ µùÅ‘Ë¥‹Ø7i±«CU´ÙuueÓ!Ú \ì‘“3ëàë²*æô¸S\nE´u§ßvÍL„Ú uiÛ -]’X‡vãu( ü>šÊz˜—Ï.–@º¸éÏߣI–ÊE«0‚³÷ù#ç:õ¬(4ÞaÞW/47-ø"ZÉ4ò:מ„[ÆixHÖc„žBœÍ± …—€ãH[܈¾”C;R £Â¨XÙw›ž\ÌFŽàsšÇ ௹Ê0¢ˆ¹¼MÓ*KÔÚkH‡pahwÕ*¸gÝÞç¼æDQ}õ ë5ôNk)aKËA÷cü Åðb“·wî¸PÇH6žˆù‡˜:ðþWT(šZ[]†îÏÊsÏþ[8¬‡±ý† ¥&§i{Áwÿø(N”eåBv÷7;F’¦jrÑŸàÂ+õXf•úXTœ[\GT0EjêŠNã%7­Ù+z¬c1<²^OÙF «tÿ%TŽ{}A@ÒÍ‹óE Uk¿›ô]Ì9é‡W ´jðî#2ãY߆¼§Æâ†Ú‚ZÞùí "®#"x4Û¢lÏDïRõœÏ0i<’W2Æ¡¯üš öS@“/ͽÜÏqÞè -²8`×\åØi=ñuhº2&fö¿YÆø”ËV¤¶vAx.2˜ÀÎÖ_Ý+ÒߥE§²<€M¹(\-¯F­À±°S2þÓþÍmÿÅ>ésçËì¬ï¬Ä|§%eÂÇó:sL©ÖWáË)Úõ·ÃNÛˆßLq;´UàVßZPOIõ;ã_¶ߥ¤Ç|–}»ð~å&ÕF½é’Uud\ÇìsíšËÙ©ñpL¹+ -„æÓ%°èw[vÌ;e.KgEVÐ,À0¾HÊú­§}íþ²³€®í…±»’Ëõy ~S+‡µ¼úZ(Ý‚ e/Øww^ç·+ùk\¨ÆP<7p;2 foß?”é#ÆÕžW1í† -c ­mxþK‘\©Y^=F3‹0ÍÇB»—‚t÷•½OŸê4x&%–xàX¢F|ƒúΩ¼¢üvsßä_ê5»õ¯fþw.R/z€ùIÊ”U' V$ËÎ÷ÉŠLîp©ERŒ:†^E>ÐaéCó+8KvWJP5Ì]§SG€8‡ÆöÎ%ÉܽVèƒäžäù_*g ¯'SÝž«º;ük] -æ¶ûÂ}ÈÒE}Ú³Ç梷L^„†Â¿æ&´Rûû+§V9[„ö- ‚òÊyÔ£{œðn!5vÌ£èTwa'ý|ôÃ9tª‹É6õ,âÛ¾?f Zâ32¨°ý„k(‚äX=Mâ‘©Q›…Æ]’Ù⻳‹¦2×R!c²‡Ûõ†'p«š•¬CîI×ÁÌ•Ëç?/V3:Ò4H}“Qææ×èJG©…âá`[ãÒò-á}‹"%Ý…7ÅBµW9ŽßÐIôM§É6YýÎë‚Á[Vç7U¸×²’JðM‡;” Õ7t¸ðqÐ^Û¬OLu_H(ŸïNWê~ŸæÉÆò>( –þX‰¹Þ©Z²Q(ôU ”èÄ·ý¸]´ÜP¼õRb†'sµú?ðQµ¹ -NöÊÆ×Qd<±Á-Á”â˲ŠðûšZ–7¾„ZŽ&£|¥Âè¥ì2\&ö0Ž¨Y[å-éÖ¯g~läÝ´s§3îg -Ô„L÷“á1êf° D®r o–èÐ[—óô\û,Òiv™2¡I”É_RÁe¤‘ 'ŒMî­ˆAÜ­ùX¹Äuì8ôE’ Ì¡×KM9ÁÝm°ÄsA–µk7ä“-Ø6¥’=>m¬Ú‘}¹nbÂüZº¼u-¡cs ¾‚`—™È‹yÉRD(›pgUšbô,vb",¾SyUišµàô/o•Þsü‘[”´%VÝñé§mþ ÇÁ `fd“þ*¥«¶Y-ÿ]Ó/OÐF -P$è.Š2_'9Îñµ»_€TcŸoìovZƒE.ÇÑIEu9·oõèüÃÝ$e–ßúnY®é‰ >™~hU~5z¡PßäþÒ–ìÒ‰¥›onI@ߣÑ%#àKâN --¼SÀ!CLÂýÃZO܈ãeô Wg´Â)Ef6;‚ …{3O&Õ]Òéz¶kà÷xâ_¼~]Z*eÀ}O¼»¹Kà]ÿ+?½ }×5áá†ð~Ëï³´G÷­E fF¤î\©šÔÕùuÍŠÛäj¶¼Å˜š9Ù,’ÀùÔÄYoÁ 1ÌÕ+­¦]¿ ë© )“{ƒÏk߆¹2Ðl?Ù‡¤ š½­‡‰(g±›†Xë -žd½û _Ä}#ûZéM„µºÊýS³µbÙ6n +»GŽ|'Hèr¢³ñÄyTÊl‰ˆ0r¾¥R°üN 7ô¤E?tæB!–6àéøy·”@N`ÌŽ£;R¬%–)|u‰Þs-³ ÷þ@aÆ쇗 ].ì|7 PäÔàØ#J˜‡7ɦXU%ÐæFO?©éº’Š19ú ÍÄž*ÐÝQ{oõéYôhàˆð©¨œÈWÕºaòú˘T÷ìŸÌÏÅ#øMTpý—}A» Ë,‘=v‡ï„GÁ70g™Ä V¬õÞlÅ4R;›×ãCÓo£‰a‚/¡åƒ !¹O´Æ‘kwõ|tÖ•Åð<©YÌÔŽþÝ ‚”‰Á€>I?¨lùØÇâ?ÛO|)9;µ,²8KƒƒHö@.“D)µZè«& -ýŒ]¢ÔÌzÂ’‡uPÞy·ã©……ôÔ¬U¿µ7Ùí{‰SxÌ\ÑGÂø8Ç”Aé@Aøžçƒýç“j£üƒ$ÕýnA¬X¦ºi G > n„~¡”OïÆ2@G0”Å懪+äB\æK¹P€!x"³ Rö™V7Ó` xŒÂûðotݼÙ_÷atœIÌ•æð/ërz.†U’˜+ÆŽïX¯¶j÷ÌÌ€ù«àQ‹¶òí•0ºæ u‡õzäb›ºäŠª:ü:€?7%ߦÜrûµÕsC@uT¼×Á? 1» îüÂ2_‰rÎHàD•Ö*¹×–“ל³Óƒg:KKCÇL §ã&”z‡™æ4"‘F©sz³Ëåo]¢Äq6æ›?C3Q6ûóè+”Ød€F|§À¸gM"3C,+TÕÊåÛÆ"»ëÛ£”¹Ú(ïo—`ÍD×»rYÿ=tP3é†<$¤Rêǘ,?i`µ3üÛ_ü í€±‡ÚIÇÐ~“UFèó)líüiÎé: þÌ÷šôQô\îpõ½´•ïùè^â"Œs6à/(Á#•¿IК2Âòí€â³ -àEé(Otn¼úVsMÜBQ6«Æ‚€÷fËÔ8q$eh1†/ðˆ~•ðĆ|ÝoÐ7ྔîíàwÃh¦è„nS]¸S9V?÷J¹m”^H@¸ÝT`åŒbÔ\©^cÊ<ÓêN¦Œƒ½Á¥I7³=†ù¿¸",Y(G!â¯Vóƒ-ÞÍkölàSK7\Þ<¦ÝqELôª¥±¤–¯iàÂ¥k#ÿ=º$Ð@,ž+öô` ©áÄHß‘M'f­y;Ð;ú0¢á²c« -Ãm‘»;qà@¿å#!¿^3‡öƒ&æÅšžvXQXnŸoC{ç‰&)É…8{ Ü;Ʀ¦ -±Å(N=çÞ‰ÂiíÞ‘Dh]1îw!Ÿ…}ŠA‚˜¿½Fû¥/б§#Ä2´´%ñÿ4ÿÐÅ’'j`Ñ·)$‰Öùqàª: Ë™T¿ѯ2ŒÐ]ž<¸c‘7?gädØ|^ñ>·,®ºtüßN…⦌F¸¦3è./Ú@R&æX ÂáTÇÊÐ8ü›Bù>JÛ°UóAÝÇZÆ«QUôƒ~å† ½£ý&Ø ¯qÏmgråç}j‰¿zÅþìYgrô>ª?±î?CsüvàÐôî¤ è -¾‹ÂÕI"8ê/½Ë©n§6¾VF‹w^]*[äFî À|¾>²IÙU£:&Õ¹ÅwÔV˜£ÈnGËáÓˆÆï„«ˆ4‰¡LŽ®Dá*7i“)T¥ìÉ#-%ì9ZæÚwR@éWå¿B/ÁW)å7Š?m”wû=´"óTë` aã,cNÌý÷yOEoÌ\PG÷Áj¡Í¼Ò­2ÆÞ«A ÃÒŒÀ§7Ç =.ò3?0Jº+;ÒøߌÁ~|úU_¢”¶XBå"(~¦Ø) yO{ëEÆÙÐ¶Ì ™Ÿf5—îž0M3žooD 3œö£ ŸIö¯ ÐSL -C¯ë]ó$""oÁ™Òa£Ò–Š!#\û·M¬p§ÎÚ-í -0êX¬¯3´ j1­šW«©©¹%&AŸsùmâ˜]ºCÎ,\glh©/Ò&GðhÚZ - ì(Âé:è~1ÅÎÔ!bZJ¼xØwLSïݘï'Ü ¬át7ÔeÅHÊÿiÕâÝݼ) wAM9Ö¨2O‚¹áÔ×õ I)õ},=’cÓ¡LA½ºYJ…ª<ýHl…¯ë–íLŠ§"ÚW˜ÙX— ·ž" ^½•?Îœí÷×ÙVððcèyÑ"ôøÓr‘…Ïw -c.áËŠÄ{$Æ4_>–Ø߈B ÍæÚÝáfðF3K€pý?‹å…4a´“1WŽÏkðmÂ%± bgÐOä©>wí+u5n‚^ðfVª;^]ÉÇ÷µ§ƒ5ϯ¹á«8-.Våïû=·‚e_~SŸáø¢ƒ,vÅî©€]AÆÙ²0CG\ 5%ëW)دP[&ùž¬r¨rÃâD¾@út²°ƒTì¾²‘RNI¤d.µY‹ó±ú7C«tHžjÃpdµ?—u’PežPµW[.¸~þ ðƒ0†ß¿>6ª[Á2nˆrn-og#R¡^ß/e>´õrRùUŽcom&ù'Ëè*0úÌ‘ÛÊÏ¿ˆ_Ë¡ãÈ\qS“Äq çé³ý“H"#S>4“H#¦AQc›½\Fx(ìº*Å2MÜ’ï ÄÙ(q—¬…Dí¬êñ9îšüéo ¶×xøüø2[*+/² 鈣†:”„5›ÿ甧[°}TMØ ¹üñ8nwEl±ËP¡bhè~.´ÀWžA®úW«eÄLÀ™ˆá¯’lJ{ 7¯/¹K >ÉQ:ÖÌèŸéí‰J§7›ÏfP.šŽÌySÂC±2€ªÃ /DØûÉÖædj«º©ë§^n⤋2¡h»ÃÔ˜À‘[·Ï?W,úÑT_S|Œ)aFP–K¿ò öˆÏ4*Ñv Œ*Í.üèX+L˜·60¹äØ0‘¯#ߟß,Zð6ÜN¶÷*=僔Oë÷›„‰FìêEfò8G?„V:Ò òâ«ÎTÒƺ¼‰!U$Œ1w<ðxÖfXØ7î -Z_<©:lþöÌyw8†öí²®€Kaßëµuåà•c2Ñ9:ð†#ö®Ý ÙôS¼„äšA›™»³wÅø—«IRVxìèªMƒ„…„ŒCÜ•`äkcÚN“?-8Ý€óÒ&‰bÐv=8àùaRÿꜹÑ÷‰cmã:Òÿ½È‚€O G¡t·‚ÛîúJâ©ñ•aÚbÚüv%ž%† -7-«¢¼œ>µgòé%gŽádY,xĽÜùxFws—7åaË«¾cÚ®Ât×è­£qúåHg¡šî8w­3Ó”ÅtÚ¼™<(ô·F©t%cQeÑ[ác$ïET£-§·éʲ®÷§;ùñwë‘«æJÕV¤áÒÐ.'ÚKÙUµ˜Óèxâ“ÿvuí"÷@òÎýMxZALê`L"[´Ø ±ÛN"~èý3b²w„–X×sdËÓJAºß/šQ½½"Lò xZoFç«d×(7IÀÕ)wÛñ‚®’_/¥ÖÇ'Y4óþ]9Ë/Qfÿa}bß-°ÔußœÚ -’obÖ#k…m5P>cìNˆE;äraŒÚ laÓ´¶°þS¯r)xÁekæʯ} ñßòRè ã\¸héã™ÓõPbù_VÐì‹;ÑðÙÔÁÏÅâÿOFÍc¥&%á©p}OY3ö%" Ž#+sx­b—bïP‚ʵ€cf_wTX;OŸ¼ŽP1e„ßséÖçÀµ²él[qYñ+ÍpÜÆÇtpsË ²0Z’dR‘ -·ó¹}ÙØå -s®»jXª™'MùW! -@E­úÇ! YRg:qU¨3`0O Ó þHJþü|z7®#íÿ8ê ŠPú2ª×¸{2Ÿ‘Ð+`æ‚hÌZ•÷m¹I3®¬YG¼Lغ!}¨Äm ÚÏG3n›ùKј¡:pFµ¥í”º©Ï÷}p^^°‹ÿáÕà,î·"åŽ - ?ëÃYžq•õý«ef¤òsŸÚ™æÆ+æõO=3y(VóïPSÄ.Ïw¥ÉòÄÿß;ø•ÿÍ/¼9´ŠÛïõX¯fÁ[ÑøSü¢6Sás9@;É4b.k ýZuÜI9ÃAŠb _sv­ -].#i}Å\`f0bœdfwJ T/ h÷KÝ0rØxü’°ÙOTγzVýI®¥u’Y|)ûÕlnÛ‡êÛ­ðÕ[ XÐ;= j,i ÎNa°á! %¿5€-ÍãNËhÐ{…ÀÝ1‚¬ÝnqƒÅnu‚ì‰;"FÍgœL{rÓ[Ó?¤):˜|‹\Uô ’îÊÔHÓ6¢†(­¯GxÆ12d¶*zœ×Dùrëúý>¬‹q&‘ë -§˜]§OHP £B_VÂí*LµŽñ裎A 'vvuͽr‚¶ñ4RËR¤Ý@à ¢o’,çÚñ×b”þ>¥yÒkm¾ˆHCÕZèµ Fc•¹ŠgË]—ëîÂÕüBþH”Š/—’QnKfA£"LFŠ»“<“ØÜ·Ÿž¹ž€nä1ˆ € %Fúû¸y\±õr{˜¹anX<É­nÛU³Ð:o¬"Tè ½WÁ¹nO{X4½="\9¦KÞøïR¸û»£^KDZ‘>H¶=Œ³EÚGÝyˆ -N¬Èý„Þq¤ˆ9ÞTxE;ò_æäòÂOšš6¨¶fDÑ!&™Ÿ'™³ÑÂ`óé&®Šë÷1ðe"8ØA…X’2ʺ~> —änpç§1† Z€5©¿£ø²ù€Ìç°RŠ.]íËöû„査@càÚé’@i\fÎ(鈿R–ŸðyŒçRòËë(gÁìÇGÃnëÁè’Bœ¬Ù[;Šç<ç÷Ê]\ í -o9wü½(Nšï¬¯Î§ÙéÚ«*uˆâÉé8ªy-*5òËÉ£czVK<÷ºp^ø17Û_Û3[Øn`¨s=×Y’Ö['@‘W‹È*êöÑT_S|ŒªÍÜW)i†Høë¥%‡"WRE׌´/b),Ò©G[–s¥ZÙ,®e¿]ìÎ÷j–ÅvË:aÍÖdZœ}´/Ý_ùî_©‹/Ö˜ 6SX`R;À9+ ¯ø7Ç嶌˜7„ÌíjK aô·p(A\N‚Òm6n1ú°Nëú¸›M¬p¯´Yòæoý]FPiÕ_–Ò 7;ÞF·8‹6@ G+Ü´¹&uüÁC®lœÍRü¯¦é(µI¸,ªŠ"|«eèöÚ7Ô8š—}ÝEíYBYvvb±IÂ#c½nl¬ü¢Ê -7›_½e¶LZ†o¤"/ߊXO„ò'¶ÊÙâ¶Ûø×|Å2ÏõñÐõÎ]ÒÊH, † ºÞƲ¯*¶Ë9»ˆWnÿ\´—mQêšFÀ´ó¢Ö²Å>0W¬9žü©c|Bà99óS³åÏRÝŽ ¥a#‚וnW^{^ä}¤½d-úعð¹í¬iˆc&i%÷{5¸Áß]'Òírqñlä‚fa[ÄÒ/ºurY¥Ó*­:jéF2 “FRùo7½òÿ¶:‹ŸAX?u¢Ñ3šF<¤?XÜAeMIuqýè¤âø]¡¢øJšoÏ ”X}§©;v =jl…R¿¿>;ìÀ<§óAdfænµ°Q·Öºõ¢Zõaî~ú ÞÐ)Ò'02áȥ͚Åå,Ô;‘ œÀbÞI&f#¯š´»6~—QŒÎdÒ”d÷¦jÀxr˜¢Î°ÿe©¯JÅÆŽ··¤5f1Ê‚U³?"§'¦£-^4yoϲ"Å°ÀôàÙc¾ÜpZÕâóÃ8äÊFéˆZðJáñOS4H¾ëjOÀøSö‚Øv}Ê]HÏõVû¥Êþo§áîàõƒø–Ñ{÷…oë¬Äj‘w×SýÆ5aÎy¦êß$ ucÓ柼̪úáA’=2^°3!#½I$ž¸>R#Bu5ì¢ûËáIöH5#ˆß5ÔÈc)rœ5DG'ð*¦ZfçÓõ·i[/5R7Í÷|ÊSÿ WY½7ëÀÖ¢Ô¾î!&ó©bi¹ŠGx\ï»MÆègrRBÛG|çg™IAé¥×ÚIÈ͆öj¦ Ð%d¸ £òÕ’‹l–Û3)ðoßÊ6¿ê •~O´»<ýHh½¢Fg9 »[±fȶµ#Õ³ªüÀú$\g1">ŸhÑŠ')üZõõ”³ÆöÅ4'ù£Ñ¿ïÔø<ëÀòÙ.vçÿÑ»ÕÖúK¹¡;~šˆ3Øx1±ö*Ul­oCÌl-×GäƤJ5^¾J|µ 62¡¥¬tYñtôúk4%üb´f%)+ø§.s+Ý~U*[á¸ãŸ'b“ëûï þ3§Åî½´LkZݤÉ;mÂy9…q Jª¹§d OÊ kaùx3P+%[sÖÐ8u¹ü4jP7,X!‚ƒg2âЪž–ÑÔ””dÍ›­J©h»à¶CŠ.?äˆMˆo;ëƒÛþ8-stßœ!—o G€¦X|öé¶#Sé{›H¿oOõE˜y‡@ý€Ÿ,pãQ˜êų½y6OEÝž×cmb¥«‰…6 Ã9x T'±¾Ù4™“ŸülÅ;Þ1šbj2¶äIä1ó*ý=lž….OŸÂϺÏÊñÃ![67@oýÜ5»¯5z2ÍN_ì q’%½J°åE¤âM*¹²¥Ù0Í1œ°l"ñ•£¯ðËïYó+GÔƒnÌHÌ®·Û»n×m¼´ Y¨ŒšádCÅç Á’CÖö·¼8U£‰>JoZ3¬4 m®^‹»š[ÖTÿdtv3pîÌž`Y†ëLKË=ð&JK%žK¬5\ÙÑÝ o·DS°ÍÕ®,ü¯:ñE¹¿þTiNëwþÀ!H®™ŠËòfþ·Ú'ÏÀß«Gü§5 ÿ£{lÀ­5üýÛ÷´¶Â¾iß×,×3ðí/¢ÝnÙ)ò3o”øãb†¬†/Å’s “9xý1Q­8þ%§\†ÍjLÚQªu¥›¯†ã9mz…ÓÓu5ëýÈõÙôÅ&[Ò¸|¦žóØ@¶n*FœTÁÜö61âÃç¶áôuõ…²æ™l½ÈKÙê%$p›9fk_=ž·¡RÇxJÆonÇRÔ'§ ^>»Æ­£ç}êܲeý"ˆàØèÂEü•ôH?í€BKÍxly°¡öJö¡EÝâá1—SÀÂÛ«;ÙqÇ"hK”=‰Ö9fü˜ÙÊ2¹y3„*½Ï±=^1}Ó¯DähþÙ|¤R€jí!ªäŸâÒp—°‘Ü •=JÚßÞ)¿(Ò«‡@†¨JR¦ýfò^ä¶þ3€Ìƒãò³Ik!?4†hÝ÷Zý`A#& ecÚj…×ܲA¿f%ŸVß¡uŒ6ûOê4µ‡´#>i0Š=t¶Ýûºy닇œ×/bñ4¶æVͣѺ·b[ä±Ñt¬°’F ¨¹ˆ`ñòcL7…³Kž>l@ŠÛ5Jd‚ŠFhkÜìÓVi¾–(”ËÚ2ÿ+p2«‚(M ‹Ë¯¼jpZœwµ!†õL§ÒàwwöÑíR€…O@¶¾MC©Üt¤óKgÉ—_œŽ2Q”^rù£3û`ëZDT`%%¬ÔçÆdÂjòV–U7ÐJ”‚GÃêwÀ1N5[šN -P¥—NÔ³ǼŸß–§Š°K#>ÚŠÉcn³ÿ°ÛÙ)(<éd!Þíz*`ûßÏÓ. èÏì7ÌÎQR6›-VVŠKÊA8bÅé–¸…dy Ê\»ì™í(Ò´§¶Í—¿‘’†À;n¨v*BâíÅ—´s73] ¿^PÁ(ÿó!ΣåÕÕ5.̶‡Z¾+•J¬6ì•B"´ñëF½k­ë[ C‘Š‡~J¼GXyo0Nâ¤TØC¾$‡\RrƒbP)$'ŒøÖPÓ¶àS$¡#ÃrøMÄ{T–ÀÈŒú)jj&FȤ'+žÝ6nkô˜Abͦï\ÑrÍÇ A ‰}9±ÂŠ„ê-ßDqx×QG’,Áš‰bå˜óî®Wϼê’yIg¥K†Aqhîœ2rtØ -×'•šbÊÏ_¥73w¢¹*] -fM^¨pÞsêàäÁbèfÜÔ‹¶{œáÐ×À ²õ(ûG„FLè¡Iï‘!ˆ)Óû¨3ÝQ¦· '£•ŠfÔr ÛíÀà…{}›´ÃÍ•}L±ÛÏutŠ~ÎOÜÊ?ùÄ8N¿)ˆZiØÕGàŒKZ %_'\Ñ÷a÷‚ÜÒ<†FÆÇ -[•„ˆR -FµÕÖ%£q¥øÜ•Cå3b©éÜÎW¦‡‘ÚÿY™¨ ¢jF”@ÇZK­gï»`àLÝü.›äp™VX?;žï äÔ›£åšÑÌwc‘ÊÏ—µcgïΩܖ^V„tÆ ïÏÐÿ¦±Ì£‘¸÷ ~£šÁy ¥»¬a^d5œÃr¾÷…]Gw`/s-ÌÚ·²b¸¨}ýšãe3ö+NW0©:‹ÄùŽ¥ )“A»º8…,t±Ò|%hL;—ó€4àë ÿð§÷Å.e\éNhôéî]"óXˆRñ€Šêi ®J¥³9Á‡õ&0µ# ƒO&mp%?q×DÚO—jâ8®èâu¦£ÊO|pØ>ÓVž^Ý#Zº!Œ‡çôì¥>sÀÃG#N…}†‡ôÐý(ïb¶lÌb…e4¸$¬Ê<ÕŒzæ>æ=4¦e?WÃÆ *>¯„]ÏÖv´I_•öD°8 £ü’ªš¦ê©Óýà{®¶`²ÒàÉpÑû´Íë_Ù}¡ûúó©$K¨´\¤B°/ÚQUùÃÙÃX´+ÙËÁ@õÎU5ù-¢—‚¡ênš­s¡ƒ›i¯0äþžC¢Š„\º‘)š„‹Á ª¯…`¢MÒIåùù÷ÒixDàýnw®áÖÐÊTC†Ò Ø<.ß·Ù¥íÔ·z^V±É-Æ<ûîX4òÂô‡Ê‹Àiæhê#óÏãõ1îCa/׬õÉC°céäšú)q¼ýÚ ¼Ök ï &†â5b5-c° æNW@$#¿ZTÁÝzñKÒúbX”ŸeŒ½DG'ð*§ʶµž”2bòæï²#²\ð¢'õy¥|´ ë°±œÓÑõ¸h]tÇEMšÝ-FwÍ AÞ¼±üO;(…ÎCq5pv=$êÇÿƒ“þßþH2§:òð‚–'ô¶]…EVWF¸îÿûRÏôƺUÛ¶(ŠÝ‘à|æ,àÉf43l=C -½ÉÄ¥Œ+ì=ï½pÝM#»x¬-ÉÁü·Ög‡Ýí—ý|/Ù|åZÆ¥•«Œ(_" ø09ÑkpùÒ:²“.ïò'æú§ÛÖ–z“mè}¹ýêEñµÌ¦%Ò§éà’¿ðµÈr¸…@êŽÓ)íØÃk×it³s¡žé¸ÐÑ7i4²€Ü~t¡Gn}gÑ­à¡›ër¼ÍqA©½ŽÍÏ…‡í°‡JEÒ’os/W­gg®´™÷Ö !à]&&,Ù½¹ÒZ匾“¼cð´ÓCù+]dÚ?Œ‰j’ä_×å…¤Š,Œ·÷?>Å-4c´hê‰4wþÔ(~•ÜÕ¿¡ƒ¥™ŠÞVÜÖž!Ø ÁñÈ »nê ©uIÓL Š¹ÛN£ŽÑ(JaŸ½’½yqŠB «“.…“L“‡b…ßÐ ”éKÖc“mI‰SÛ>ôؾ >h©Üt©Ò”W†“®ÇZÀªÝ °^*¼õ2ó‰[á»qgú$;û7®BEr¢Nü$WB´?KˆTS}m”R3o…A¶3:–­ ËÑt6¡ŒS¾Ó’äA™gàÕi[Ž/Së&QxäYY½}<ÊiļâÕéì”_ j!zÁa72¾I»Õz¥Ü(^£lØ7§þºéórà ¾˜ÇÏ$ö‡Sg›‹ñ³ó±ï$—MÖ‚JŽ3Z·ærq[ÙsWŽí5ÐiŒË•q",Í)W61EÈÔ—E³‡¶.gz¹LCØM^ï1t—² äw¸U5©5Öõ[€›ƒX+0ù¡L½Ç¤ÑÒx ÕÚ»{Çx?•Ý-ÜÆ4ÓÖ4'Ž½I³ËÜîü¬ r>ã ANì ‚KÓó4ƒ!EL·Y³Ø)ÑùŽo¯cû«8–ê©ŽB챜{(~®b̤ÓöÚ´ní@„]šûT:ã¶Ïts©ª¨—Y¶ú£r¼K…••È<½Û% Ñ¤‰ë ±iØž^|øây,þ[ƒáÒÝ3åø\R6eè›à…q$Oýß²‹ª¿§žI-ÊJS €f?3ø}DsYKÄmÊ…‚ *Kd&*gS /sîÛØéɇU0㊮FÕÝL£›PÞ_oƒiŒË•ð§ÇÞ{Žð°Â2 lÉk°nfeÉŽ0+> îf¡Š1)1®Qâq:{rÖ#~R—"[g°Ô© -üï§öㆰû¼ã`9¥à NLÊ·5šØhñH8Ê’àº5¯F;˜ºJZ²êuÀ›2×ðéó± „u§É¾˜O§|6¥îêÄ|þWZ?Ç€ßí¹‰Z³! Lc‡·›«ð½üÖ&Žf&¸žå™f)ž*Uñüõ~'Ú"íÆGSö‡BüIºLÕÛ6†ÏH®Ïˆú~?ÑÌ?E -§@Ø×8Sö¹õˆ X}Ÿ^.5n=þû¢-´&GËúí¹½5G’¬Ø÷LñzXp`Ô;N]çûÖí‡æ$ÐõqCQñ¬õˡ׈à‚ðTÁ°O+½Œ@^xô÷óª7ù8É[S‡ÝÀן ”Añl™WÝÝ%OÞ»šLÀ™®Dævý®{±”ÿ„ ÙdƒkSêï8s<5'ûüýõî¾ü#”ë7¿™õ¯ò8?Þ6³9†k¬Fýu@n]‰žù/8³Ø¿@ 0‘E¶û¥ð2Šl}‚û÷½ä\†BÖi93*ö¹ÓçÉÕÝøY—4>zÞò‡é‹vôûʘÒeWŸÃUÂÄ8üIà&›õ`~¡z`ž6:9㬟 Ð7;uòsN‘ïK(Ÿ,Z‹ ä'¸-Ü‚-@ºGÜø!ÿjiZ*j(ðñzhÕ»Þ”[nØ­Vù$X½ÀŽßx&šý¿2ç!ã4*o’‡+ ÉÄ>/ýÇ ›Â¯Ôà\²¹€ˆ¤TžkVç`MùFª6°Ùm§¦¾2¥v9ÍGÎÖ؈¡›ý’^ QìÁŠìº¢Åž*æ‘2Þã`ŸLÅ9*ŸnܸÙç ¸/)B”–¯K -J!œ‰×LÇJ!{¨hdqîžÃˆÞ±Q6›ï¶Þ¢ òW±Wo¸mR"Ø÷ ¥‹n£ê#(íý—¤•ºÅÍÉO}Ù-V¹àZõýçãĉaŠj­„ü<®—çf<ÙÍ…8éû¬X<1œy¸í¾GÃáz -Ñk\’lˆbƒ?suÈÝÚÕ.g§Œ¯WilyÝL&Ý=Ùßgž€åæ y -ž¾;ûéh1¢ª¢ÒrÝ°;¡¬1½þIöNÛå&I'9ƒ_øw€€zöRW²;¶ØQ«°•¥l§SÞŸS†4îñ %^ç¢hÞ‰Ð7c-ZwVë_Æ,éž«±mb!Î’Ø®IY¯H‡3ƒß}^ß‚ŒÐL‘^°=%‘* - 8{^¼ßy¤ÿ§! ŸøÏ(š²ˆÏMšÂõÝHéSŽ+ÖÞÞ?%ëá02•¯pfg%@s_AÍ«XPˆ)ˆ,°~¢C*0þ茸Ûô™¬ÌÔÅ@nˆZqtTMùÂZlòÄŠ Ql„l¹LÃÃF-ÃÍ‚««Ú[¿ßË}>œ°Ÿ\‡ÕsËÝ…Ê›¯‘À®²‘ Á—žamξC·æ¹Ût&­<+c„5Ü. -ìveMN:kí«v’ÕGùÍ&~ ¡ *TÓ¹OÊÈÑ?÷梆ÀhÈfF›;Cwî‡&=[·•ÿ]Í`_hεC°w'2¸åWw-p[Šc’ýO)æîVðxN&×KI³¯‹óºÔ¾Z2JóÞÝmU<‹TŸ(¢®Y²^›>0}õgaOzž´ô×U„LŠhØD•üN‹%ÑîÀ›…ƒœµöÁè!é¡u×V¶­«<Ïìc2€_ØÉzvÇ‹»×Y£¼Ç&–Þ@ëi=&ú¸\áDׄQëTC&Õ¶¶¿@û€zÊøa³äuŠèI¨£^B70»Q¼KUʽh¦ ð®k+¢³nÐ[s½=)¦[v¤²ÓKnÞÐoSlra”ÞÝ.ïlv“:"R+òÇO¿X–ÉmMÇbM¸õ²|©Ó¨L+dªóØt7*Æîv´Þ1^ ?«ÿI–ÉV­Å—í/o¼áhWúèȪt#k5ûà3VšÜ/å–-Ãøâ’ŸC¤½ý/04ˆU´‘ïL åNžñpþ0,%G¹“ËÐTŸ -^½Ø¸;i†šݨ ÁAmé|¯òÿ±‘•v©±Ø²‚Rã›øÉda` û"8‚‡¦ßá–”K$i-{ֶ󢀘#w\q$~ùøÔð ÅX8 ÿ%zÂ\N;-50xÿ÷â…¡ÙB)èMÖ½ £²êºFìe @Zœzx©HVa‹7Ë8jÌ^ÒÆKsñO(\ÈY­j:?ÿYîËq›c#ÚÊ;yƒ„ò{÷¡4ÍÜ‹ÑŠP<ˆðŽJ`ºT-XþŒánÉ÷Tý"𦜌vÇI$¼õSJñ—ø%˜ƒ·Àžs™7ÚMM_P¯}”BÉÒ8ú›Çš”„Sñ‡nجï‘h×ùÅ‹IqD…»5gêÁ5‡*­¯¯fCBvwè>lúøÒœdS»bª:TXº2ùºîýŒÂü[/-=JƒÆq ¾uúGáÒ¤wàW¾™™ºÎÂM®o2IÝ\þ‚žµúªèÿ‘šÏÓøzta~½,“E?©P Á½}-ì°¬…G)êÄ€V¹ê†æ1ZÊï Ý®|oÚ-jßEp,@áÂõ©,Ó YA;½y’<ÛGËÊ‹M؆zËH¹Ø”ö‡p«hç×’a¡/!¬ %Þ+P‚5é5—D8¾Øb°$)B0hru@ZÄ]Ë(áÏ0û”‚²5-é™ÑIëuœnò„”¶úP¸§ƒeØéUýê‹ö€Ér;8¦M”¶Ë×oÞéÀwrbè¿Ôñ–‘øây{µ, V©ù1VÜRÌC–æ¹²·5Sÿߥ—@_XqYüÛ± dY±½12G/µ«5e;.©GÅœ¶ÔŒ0éUd½‘à}IȸӿD`ˉ‡JÌ{Ãg/ØEØÜO¬¾u:lÅ'»÷ÈÚñôõÍÇÄ‚}iñÎeÌ|¬±®eñ¾SÖ”oîþ»< py12´ˆi¤€©*N»„´߬A?*½ÛÓÕ¯ÖZD’¯Q]›ç0§‰qmOÀ½!Éá‹|ÂxäÉÅ;’ƒTBtâR‰¯’ÉöíÒ“©nOgfãÁU†sɸ|¹ÙÁ¶Ó\Év:å!žÌ ºÐutÙà™SmÓ'èW®”К›O~,£½Œ mß ˆ” í·jÂóë5Ѷ·ßyc@˜¤Â¢ñ#V—4/62¾<·y™>‘A§r= CŸx«‡Î>]¾[{ÉIrç• -$@ÒW -¶?þ…Ò0㨤 -B¡èþõ+ïví06Å?ŸmOu['kUôS1ð+”ÞõÌâ4/஋±9u7ß$áuc‚Â'\—ËÇóe¼¾€[  †57É–ÔâQÚðw -ã¸YS8HG½1GÍ09 ‘ Ûzö¦ËÈ£÷Gr/nÇã·J]žÓÀÆ®K/+©ÁKŒåƒ¤ËÁ'îÙl^-ðÝ¢ˆÎJ¯þ¼'•@Ek–ˆí®n€Q‘,MšÝyMtc’$)ïôS ¸%실Y ÓUÀF 2 -J·µXnŒ®xÁë”ƬÌáBqåÏv†/Z§>bÛÕCLòÍN`M# ÖZyìz^µCÿˆ¨Cp÷(ØÆ}‹!n9ÀèUÁGÔt™áWµ|!å|?ÜòñmUá.“·é§¶A0)ã_sêô>³A·F‚Üð´s7•@ Ek†wˆ#îÐg÷GNÈ‹_sr9·2wbâ´k Ö -—Òä—a °ö*‘Òë¢gÈ_Ô'IÐH«n”íNŒcbñùÿƒF‡ˆ†´Ô‹–_­“{ „ CâxÜÞù¢ëm®a^¦lT/ÑmUºËß×: ™&S„S”®¤JS¶zÌÖçƒÆV 7¦ùœaqbýƒz-ï¯2Ô|£Jê¥æË­{øŸ–ˆ›‘ÒŽ!åÄ—;f@~æ(+ílø¥ûøt%v?'|½HpH¤3r)+þ‡Ñ»U!&ú•*‡¿òŸjYwÔGnPû¹ pPyyÌj¨¼>åð8˜V¿s×.'_ï˜a  Læ F,‡×É÷±éeÁsàôÅY°V7N­†!R‘\ÜAvgF¶a/%]¿¡$æ©+/Ë -LþÇ8D*û2Ò:ÛIŒ)úuqxaÖœë!¢q3y—Š?›2þ'#*YEî+LžÌ:O«žO|¢X:ñ?¬æ.ñî€÷1žB´ñ¥cÎlŠ/ZýCz9!Rz=ˆ²þ3²`e¤T@ÈàÕÃNÞ´¸0Ê ?2xœk쥖ٵŠh}Ï„#=ß'c~Cu’Ðøô «/üAXSä~$ -5r×»òqyÕò8[Љ†êMôXôÃzÍÉ–i´—ÏÂŽ@„à;8‡#Oªïô¾ä(\Æ™T¡ -™9| @%ä¸ÔÃVb#½>Oè‹«Uõ‡ÛhsDRÈtÎìsî¡¢767ì˜ô¦÷ì(Æ£ú·‚! ·¢(Õš|5D -€ëZ;ã*b.ã è¿N'Üue˜N‚ŽLa%ò' »Î·V0š(2pŽΤißЦ~ä ú»œdc‚`@ç4ø ¯W“"èøÚöM:EgÈ0÷‚MÐ짒$«Cç™d¹sᬬÞlpüàôc»B†á¤ÚÃx¾%á%µS«ñ –r—%œômθÍ(ÅçIÞéôq9.ËÖì“ôŽñ亥͎➀TH{~ú/Õq™ˆ˜O¨(á^­4J0YšE¶XO*_(cª%²µÎ°”ÓÞKœÛ¸¨VL,mÛ¿yD÷oIq—CCv1‚À&~ª±¯¼®$;ßOŠÔ.0t™»‘6½Œ?Çù.VÌ°ÊÈRUœþçû,ÍúrÃÅk‰XóèöF’=“…Úû©†›Ì® Ær>V \½kŒm¤|I¯üS JpOÆx3eBb“ÔΦ§8 þïnó²¡Ã&58‡NÌ!J5øç1Æ^½Ôþ°[ú|+±pG œÉ“‡Oý©±g¾*ӥ ‚Æ«è 8!üëc´S m“«D&»‚ÕkÒS‹yO}ð->ÖÙR¹!Ó£¦¢öÆ Q¶#,Á8ª­½–#€&NdÓ4\Ê>\ÁÏq˜ù6ø6Œê§CÙ¦ìÏ"-$K¹´Jh}Nµéî ÒÜ“½~EUFH+îä"7’¤"…Q¤¹žš]ßM¯®P*@nuÎ* LÞKjði¶6”oÕIýsr¹gWìÚ^,cÃ-LAßÙäŒwïzìØê”JC‡2 §M¶»zkL9l%_°ÌæVÔd•—Š-ptÎÀMgÆvY÷nt&l¹¥cNñ÷rœÛt:Ò-6NY;èD™ øU®·Šu:4r¶âÇJg•'õ›UÜó(?“L ÔgXï`•Á¬Lx~§[|®— j0#^3µ˜ýŽUúûÝTÎüÐD»¨ ƒ‘µ[ÀŽTç° T õ‘ñ‚2Ô„T·2ÞRuª/ø¼dÂìУ¸–9Û;úøSª:OÅ«2>çæîü7R9×0ÒÂJ¡J–Ú6Ö6¨Þó=Vx&NÕ>ºzŠÝ”ÞÁnA)\ÆßVº0jhr®Xì½ZfæM."z{9û”¨î_JÐ gcã¿ûQìOrÀ)ôµåÄVÄ £Û‘ÉÁR@ »‚çé9'šD)²“Yó±¢dy¯Iä™UƒXÙ“©RiÀô|–¾‚ÐˬËëI;®³ÝñŒÈËÿZP-TîÁH`ô<í¬1{Œ’b¾FÀõ.j´²÷\è—ZöØ^‡þØäìfì«·Såä/IÕZÙÂν~xï3d‹ÿÀ=õó}†CTq{õüDQU…‚énÈ€Äñµ礑;çPb…¯RëGñ‚g]#äÛ jçno/áFø“/lÀ©3’?‰Öèí¯zü6®/þ]®úš2´íúPÄî¹›7öEÞ$Æ;u"ÅcgóEΚÊý¾þ/î‹qcúHŠŒYÅ×üVåÅL¨zç«2 -f{[Œ±0Bãàô\ykÈO‹1rÖ†b­Œž¿ü€a·ªð…øs_7ÛOª3_b{Ì«̵Z*Ï~ÇÝ;ˆVo…£†Ü'ŒÑÄוּ…Æ{\¾ŠKš(YÃS¦dOîðx™¢>—HsOZs1¬óûÚ둇@zÚwÀ=zÎmP³ivyDªß6³9ª´§ë žÛ¾æÀô¹ó5†~Aów£Ä7’'trÇÝDŠ§ì·ª3}Ò7Æ Ç>…û£ö=´ Ž›'¶Ž yi\K ÊsA&ŽD~Ê{›·Ã˜IaÂù®¾½ý²VEÂ)×›eúB|9®/ÙŽÆïó…´ß.n ÿ¬åþ1ŒƒÒ!˜ç+&[×}öŠ÷ž'b¢g/sž"±ŠœˆRM%å< -KW1fM[n¸D3„ÎR‹¾ÂæÏt…;“$W¾­˜ ƊЮ™ÃK(:ëPW¶¥·3a/²q÷tñ妳Nãu—fE€)8Í°kSŽNîVi-†è;ˆþžåìBÖC†œçﳼ›`:ª£*îÿN´P-%wœþe°)‰CRÂé¹ß§Âc+9‘¦¾¯+!Êo0 É”N$hŒk¹ (ŸcfÁlRX^‡õ ‡0ûÆ~!;€D–fjÚ m;4ú @¯r{*Ü©òºMºSAÁß®jV|dÿ¬Ê\–Î[!ÆÕÌ°Ù“ =ÐP7· ›—”ß«¨¼H ‘çÝÀ -G±H^.ÿh+î+*àlýñlP¢SÉ-Åo}¶Ý [(¥@¬<¤äLG¦w­7$Ä,¸ûÛÅ9ÕIt”Hß­Ã~–J’ŸPu€—yžÖh)L‚›öõ#û 9:Qæ!ü¸ò×gì¥$Ä„Vùy²¡5ÞüötMI2û¶pˆ¡¾™ÅÒ¤£Ñ¼F±°?Û„»U~'Ž€ë^-\åÉÑ»gœº¾Itcú1nœ!×ó’P%)l=퓈HÊ[µŽ º=C4#@[b_‘æWò’2ƒcÿ µ v*Ê8fú“;úíê$r­~ؤKéU5jÍ«%·†ÚJ8àþäâ½ ívΈ±ô9âü×åB(†\ ìÔYé"¨öí:ŽÖE¥…é½Êd…™¸_YJ)Ùõ2ÓÍ‚| ÍêlKÛË#c­<í%Sa&P”èôï¾m„¦KÊ÷’ñ|—NpòÛ×Â*°ýu?´ÁÚíóZé½$R”SÿyøÌ\6Þ?“ ´pO…(fØY¤®¶¿ÄéÚû<(†bóÅ*± 9à2Ç¢ä¹S3S –×LΫ㱸ߔ žÌß1sºpK©VÂVT\æoObêÆôG255¹' B1Û!V÷dçV¢ÁÚò.[7õ°½‘8ª¦––kNÒzÞ® s?¡(Ñ¿†]CÏrìÂH×e"ý†ÉH¨H%ŒZ|veˆI™É ¤´, ҃ǬŽÏaÕ©Fô}–Àšü…‹ÈkØ­%tÒp€ v ×Ý»ìÍκŒÓzIoŤKJ0"û†¸ö?½æ<¦Í•èì¬ãp-Å ´‰´y{¡:MöüUÍæôÓ¯#`ªÙcô“)ç‹y)+MLECçÍâuÃà’„ÁµGÆ5Qh¸Ãú#£)&‡¬‹‚ˆ+†–è20&èÆŽéTzÒÏâ:„_O€9覅‡ÃøÀzî¦L3X[»ë—(v¬ Ak³ù`t>“knµHçÀ¼W³MU§€L›ý?FFâý·_¹âÖ¿j× Cç@{šb$ #Âb -½2äòMá…: -涡KžAQ‹àÕÕ©×i‡Ž©¬Tñš˜€÷ÅŠ¾½„1b¦¿ú­ŽöÖÝwgJ‰ ¸Ô¿(ý-_æÐ$œ…@Š.5È» º_øÃäGËòT `·1A:GPD®ŽÓÀŠuXS®¸xSÎÿ‰Œ÷‰ÀÂœíÔ:ð$Ý—›µYÒ_1?Hö—$ŒØ–‹ô§¹ÖôÉY]o8å™i:±C÷èh„`µ€-ˆe”©j(Wö`‘¾Þ¯RðųóøQ,”ö±ó wúÝÕ\ÆÚ= •ESd‚Ë1€ ½2@ü#$ƒ埣Òæ—9¥&Üc})k>Ü;’°•cm9àGDIrmEcÚ‡¬òáó-lu%z:˜A ‘,z |Y"•#çÆÕÃðD¦Õ““Â4Þ Ñm2²o|eæQ<û¼š2ª¹3Üf4t+Œ¨Öc»Ñ»´9¦É›Mu Ða^òd¬¨ôJk´£O›Nã6¯{Ö)‰Ì‰ˆ×Ó Q’”üo…ºBm:”R¬ˆš”‘Ðv•ÛD¨f3ó¿q¹‰¤îwyÂ}¤(q²Ðûy\sØ€úFBî6¥ºÂ}¨¢ªârÿ€.çŽ*vÑÉX?ÔïƒÜ®–%òóOÜHä(åøÈÛÊ‘ä<-6ÒUýçÉî@xñ£rbÂÍÓ«CÇéýw»ÜÉrj §ñDYä~—Üø½ ÞçE’ʉýíFŠßîúŽ¤WwÓæ)ügÃýž|…Í ë|t‚†ÛÆ€êŞ׎ï®üßÆ]òä)ÍŒƒØáŸft%sih2¯ª#G£ÁñÍ¥„"Ì€/œÅ`Ad5#¸Æ£¿´a.õé¥e§ûb¬©ò ^ö&XÓ^MÛµëŒÄ@s¾å·¶ªÝTýCtnS ˜"véâ5Ó²†P`ÃÑ -c51Ù;^ezy—ßk þ7Y©AÓr¤Ô¨™¯à%—÷*P }1°ÝDrÚ©ú˵¨°ÍÌÑ4€Ô61NÕ'ÃT¯«qò_‹8zb«þù(D]•‡?•ÑºTjpá÷¼”ήƒ´^ÏÀ†<ˆfœ‘«‡ eÏà$]·{¥Î»í·i˜>„k•AÞ†‰Q¾-9Ï 7ÚÿÙÿß¹F"àùqMü½öŸyÕ¯$uä_:!ý¶KWØïá”f -zùr©=™2&¤4ýª")îÀËm † Ïòê÷± Kë^2‰ x|“WÙˆèOß|r›rXÇbÒc=ù™Ô;JKŠWó-] U bÞCV™§%7îIÒ»ï*Ú±=Õ:îV@Ñî¿zW®ñáÜ2±ªåã!”¶U]ø‰€”ýÖ<À Z«[àZIuó_KþŽ}(6WâÁŽO‘3ÕŸnK’^TÄ›ÃLîk½ u -AÌø2C0ˆ¯5§Œƒñ¸ûoÔ]}‰I(&*㤠½;Ã@ar½’§×@ ž\-@óˆ…Ô|†5J¾ÏZ¬¬Ò¿ÖTÛÆâ¼ .áç1åT–€"aõJk:‘¹bÄ–D»| -endstream -endobj -2259 0 obj +% 2178 0 obj << -/Length1 1620 -/Length2 18673 -/Length3 0 -/Length 20293 +/BaseFont /ICFUKB+FreeSerif +/FontDescriptor 2181 0 R +/ToUnicode 2182 0 R +/Type /Font +/FirstChar 32 +/LastChar 89 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] +/Subtype /TrueType >> -stream -%!PS-AdobeFont-1.0: URWPalladioL-Ital 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (URW Palladio L Italic) readonly def -/FamilyName (URW Palladio L) readonly def -/Weight (Regular) readonly def -/ItalicAngle -9.5 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/FontName /LHHPET+URWPalladioL-Ital def -/PaintType 0 def -/WMode 0 def -/FontBBox {-170 -305 1010 941} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[ÂÀ1Æ…p§³T¤¢€®o¿˜ˆà9«`ü¯….´Î:þ¹yÕêpýäJ*åÈÀl'¿–eî¡}#)Á¢Ý&»7+å‚/^§ ™ëWŒ{ïÔLßZ60VåáÌQR^¦üλ3rï÷)€#v¢€$öp~c—²¼´°£êë&“è÷ö'ÄÉÇÆÅ¿ñÁä+ž %;a~•ê!”ty`rô³cþúv7qÎ ú¾˜hˆü‹¬Kê[z‚ñSß=¸E+öÃGQðF¦–½Š¸ë’WVMüì¹cY*ÚK/i¬¡ãËi;™t—¬EÆW¼(Ð$Ýôôe€‰oLD™œ)å žàA¢“…t[Xä7‰¶þÈ_ƒUæ*D ¡Xõ½Q“ ôYrôvB>¾Œ:—#usò¦€ -Œ·«”(†HõÓ-àk£ÿx¤;u àÇmâCõwWUåÆ/Ûç3kñªè2o{–{ºˆðñ€]Qå”`†^@Ï0Zé¹>1í£°` waÆÕÏ)&]þÛÄûÞu[x߯&‘?¤N~ &?VDäµ€P·(³».y-aîS¸lV„î˜6ˆÉÝ?!ˆ¯–ÒÛbŒ‚PÍGŽÝ°uµT†åN­×ž‰ q*«ÏÛeü¼­ö<*VΤ‹niå`½Õ™ˆoAò0¬U |¿)P]Å_"dÝÂN`,g¡ˆ´ù -U@?­ÒÃéúà$¹÷r8ú~L*vV™ö)‹U'Ž²ov7tJÍ\Àá{ù ›$} ë2ÓØäKáö(¸¨„”µ¤Üg>šç¯[/ˆéiÀÇ­2Q·Ý“ Ì$íBÇÌU¶×?–ëXJ·G(1‡ÈÏ|ÊÑïY²ë =Y¨'¢Î?»õ‡U‡âýâ¯éáZÒœeß¼çvôñàÆ·¸g¡ú¦ä -ò q!K:ÔF¶Q¸ðÎ&>)¦RÙº¸@×!ø·÷åbëáÝZDæÁÛW%aÔŸ1IŽV¾<'Ú+DøÕ-8¢2óuDª¬¨Ú¨l:rigº¾yä"—”ƒÌ ¨iD“‚¾«nö.À/ü¡nQ¸ «þˆ©Ùrr3§Ñ»É:cw·*|°4è í×ÄsÝFÍ8ì¸$q=çÇW6"CD‡U%ìˆrâRqz p](0R{âï™?uá‡Wë ZìƒáÄ ¹XQo!oÓBÜÿ¨ŽÝjX!6«wå™—Nåí15ŽL ²ÞEý’ Ŷõ.;'ùâ(öaRt™º]•ïÓf#ù?uÖøXÇõºPq-@4e@Ô·YžÂ6i'u oÑúzJ;«-›“)T°vèWZËðˆª¯™m–jæ\ãÖÔ3X{ÒÑo&_×Uü¤È»nn\Û b"—O tÍé7üRá'±7HÉûE€[adô'X½ÒÈÌ*Œ¡¦‘RèžÝ"Á -<¡Ü+ ׺HÌÙxo’›úö[Ÿ ?f®˜Û¡ë\}$Å ¹ -fðÿÀDÑèRЃn mÅ ΟËŒÙÇÀ>ŠÓ\øVÜ»=X¼¿‡MH2&½ÓB¾fæ8̽ëÓ܇“w¡<]ËJÀˆB%aLážæ]e~ãU½RZw˜žy‡V[‡hûV³òÉŠï»È‘M H&Áì§mȽ¸U+ îJ0V‰7ÏAø»®7ï²gþÄsü15§Ö7B`¢ßX±ä9¹úcµ…!Dq–&/™cÅýÐ@2¦›-Õ¨QŠZjÆ"xÊ)Ó+J0c 0V!f $øæÿ.0ŒÂ|·Õô ¾:R†š(fÛºy¹¼E{èÖKaÉ'Oq†2ºÆ¼#¯~fðŸ»È° ºÔà¨È_ؾ\I9Aò Ì0¦ ¦,A²Šx„aYb$™òl–ÿªÂ5¼†6ˆ´>È£ûùLïèÕ5áíG¢g!ÝÖP²ÏYÔáò)ftà׈[jyÊÞü™sZL¿´ìª"Jày,þÉRo·aQû):=sØÝž»K:¦ï’éݹn4f"•8u?"îN#i™ÇÑ÷^Aëú¹f˜þñ¦—BÌæÄÃeÍ°˜†ÎŠ»FªG:ûgžÆ"Lr±rÝ[muÏ‚ê;äÇ´¾¨} CÆ\·ZË‹ñiÚ¿ÖžÜ(¾Y ^Ï ,uýŸ‹oܧïö!-¦j9˜°¯$O¼Áo$úNÔ ôïþX ð f£âoò uïÜg‘à Ì9B$Öús~Žýu‹]—ٵ͖C^:oê/oúüÆ«GÍŠa¥²†õâ¯`´Kgv&†:§Ë -ÛpÆ‚éÏÕXØ~ ·®GÒ°#zß•èˆVI±‡$r–rÆ}¨WÞßE2dߟ· ÷¬ÜÄð\ØÛ£æ²ï~*‹›d#þaIAd¿TY¹í/J$×ÔŠ–1òó`¾^a¯Ã|x’.s¡YN5¼Zò1¹kw¿’k˜W‚*”íf``´Ã9žYͨ‚dêô!Ðtt.èú`”ûy­sÁ!wp•d×KÑ–Ñ«†<•b÷E<MQJœGØW-ã: §ä¤öJn\98%ò7~ÂUô»•uß?ðj-Æ«“$Ó,…b€¸Û´KõKk„‘ÞÙk4²€Ü~tÂt¼~>‡(Á0È·ïø`_èî>g²€Ú2÷”̨4HÑLV_˜‘¶Ké&åœõ«¬`Ò‹/2É‹é&ø˜w?fµÍ^këL(žb3Óâ÷Aôl9(7>yù6Wâˆô| a‚ƒVËD©Ô7úö»éW!'c -œ•œ?Î(™³H à‚ׇªËõ&ðZ€[æ!â ¶ƒ0 ´›š%‚#€'¹¸á/˜èDÕá#ý»ÔŸãj¨ùå‘È•Õ‘ÐÏœ¹mmV+Î2–•þŠƒ ùl•Mñ`{ËÉ%2“d4Vª`SF 6ŒõéY _?¹‡ˆò’ß/Š>ÔÊ hGyIâ<Ú+§›* VoÂjN=v¥ÛTÑÇÙÆ„’è_VwË(FŠšÛ3Ú¨,Å.[¿¨ÊntTFiÉ«Ë@NËdÈ…¦3Ã9¼C€hrZ"‹ý„G¶›Íoq'ÔC=gÔé¥Í}rIÕ‚¨ãõÂc—ÜÚ‚½¬˜;OPläÁÙMû¸;„‘Óž Û _õò%«€ -`!Ã=ˆYs“\‘Ë¿žA¢â*BáÇWÉŠ -¸=0׋kDTOk¤ydÔtãÓÃÔPö{ýVta?lÆx«hÊ»âèp n¬.Â×2V«rœ%v%i§å)à†*–‘¬™ÂDà/çP800…g†œ[Ä'bSÊàJŸŸûäðæzÄ/›·Ò$½“é5r¹ì5¶Ó˜]¥”–0Þø:N™ñiB¼%…Ä¿H)¬ÎeIÄ”€ØhS!ÈOX£Í㤿ìÕO4 ¡¹+¹2­®== `™ŸøÐôæëñ_4ýÙ»N’U–þMÚ“lÆ%ãŽÖõž¼å&°kaŽ÷ ;› ÉБöz–››¶›_vÂùKôt©f1F[Ñ“}á:ßF9>q0(Ñ"ŠÏØÆÅu3TQ á`cìµMŨ”Ø’£<Òó²Ý–ü»°­ýõ¤É¦Ô!¼²pE<"+¼ÚÀnÉLg!:˼ßAb^ïàlO²0®ÿÔÒiS rþû~wÑâÒ˜¥_ú™g@¹“ÇŠŸ…¦‹‚å¼Á‘:nfâ–Í%õ$î77JNÏHIH“VweÊž·%¯.¹ŸÑŒêx ÕãPÓSÓ!·Þ¢49$úÞjúÊ«Ó)@çÖÍ  <¥´Ê,­ÖG—KîÅ5‰ôKlÖfÄ–rÝÙ%LYÚï7“? ™TÄ.¡6¥?~ F 4R¬£u’–4] AÄ%”Jïë ;°âGù?è›òLb?çþãiôµØ¯(á4pÎh@©0…›1·ÞSUœ?>œÛœ–mÚÁ l QÏaêlM¯6’YŠi^¨GY{G`Rse­ JM®×2ÃŽÔâK^Œì~<™i¯§÷ά™¢ Ê5s®É7‘ä~®û÷µ%,tÅ{w[+¥a£¥:èžó‰ªª˜Jlºž““Ú,¯ä[B>Ô=<½ï&N3ËQ&aÚWY†‹•Y|ˆÔÍÈï˜^ŒhfÑÌ£×Ù0ñùè:«0:ÊA!éIeñθ û%ìü¯çÕ…övŠ¤ßÎÞüö¶zl u¯3km%Cñn庞xãotÐ0(sýU$o#j;ËtLïÀ@N™x¥o3lNùìžw¦ÄÞzšô–Tê3(RØ¡ÂàÓ°w‚ỄD&;¢¡ùþÆC¶[óÂáÕxòœe™(÷Ú®ŸCwÛ[ôšH€wï32€Â|xÏ¥“mk”Z.·ÚºÙ«ÈñMÁˆSš‘é$‚>½“ „iF²kÝ!´:¨Ÿo¨¡ðj8½U4afs74?i79 b‰}ƒ4{Qù•NÞÃUׄiÂN5š¹ƒ‚ºÎ ž.ã Á^‹›ÿƒü ¢|úžíõˆLæÇ¥À0³œµì‘kv °z­Oxu3qñ5¡ƒ„fÀšV€!Q'z#Äaœ9$ÑÒ> ü-šeGÐHu„‹4‰Ñ¥U*—Ò"U†ÐøÍÒP" ^É÷.EåðbÿÃ&uB%´ÒªÒŸ[æï˜×È®äfòJ)SC®È"âÏ‘UCö£rí{ÿ½{<9ʼn7 ‹º[3SÚANSí §çÐOø€ã̓ÒaW††[9¦£Ú­07L ”1m‚þ¸µ>)ñüÕ×öµ\в•n+tmþ; UÇ~ŠÉ•:5xÁq>à‰V£b¥dSA陼æB\j gf—CX6_:Æ` ’Í÷o3U6\<(L÷ÈÊT±oÉ´îóÍê7oDDÈ‚LD“˜ŽŒ™‡ÐÞŸ8D}T ¤‚öJЛjœÖ&™1vW -`ËúçFE2F¿Ó8ÒEï>Å×Ãþw6«(ô¼Ó™ô}ƒ0ÆÉOöûM@×9àùôI»² qS¾¯ð Ik&\}R»jâmòB´ë=Ûk-óÀw-½7õ7l d–w¢p7BNúDÆ9h~QŠ)¥’•Ûuåå˜,í&¤O1+Ûk›‚ÛRJWþ\0 oArœ@Ê‹þ«›P`ˆÛ<ùœxa:ö T éªÝÎ6yd·±iªg>·‚âuí¿àÄ!º¢ûúÖ(©þEÙŸB:‰û¶î™­΂«OŽ}€ mÆi”Zè†a§Nv‚d ¿Î²i²·D·qBüÊ5šõíÈŒ[$œXÎÕÆËÏc´ý"CäXHY’Û(¾Q^Ûz~|˜x1¾ó"dVêZx\Ý2nXþ%¦I ™ -ˆ‘¾_jøc‡9…bâæã‚ã~Ðîªq‰ÓáÉñ…JŽ?O~Ý¡8RÃÒ{Ûa{ ·ýWA<ª8[¸]u˜/ÿ»S{!VÀh×¾m¯áóÒÆÂb8@÷Bn]'5¦Òþ—¸ï6«½póÌošìïd4¿¶õusñU¬T0mÉþ¤tü]XÂÀ9¦{ƒk2u~Q«½6Λ@Ö0$_b5û3!ËkÇÓSHÂA:¯“³ÀÆ .Í/ßæ€Ä¿éãäðLR&i9±€6^ËÀ”Šç3õz–y°A1¹»ÎQæ -\s†}Ö˹Óz -YÞÈ£Ô_ÛY‹ -XÏá ÑÓª¸Õ&*õl@<éZH~ŠBÏõc¬]67Vw8¤j/¹L‹nƒ{sÞ$Ékü|h`z€ -ïùíëÂe¡^lî‘áö÷/’¶‘W84ó ×*¡Ös_#í+ö: ÑKt3Õ*Œ¡ëÄès‡¬âôÓ Nò ³••eŠ´)îõ5o|ÍäòýógZXЩ= -bnna„ø¡x)JÄƳHÓÞ¤»áÑœIãv?Ú¢F‚Å•W¡ãe{ ¿:Ôùuбãçžs7«—²ŒæAôV˜5ÁWªÞv>Á”å€"è<@ö¿D&ODTè-Ê ·LƒÌ/d ¨o)OWÆôS«­sx¨Ê`‘õê|¦IN–µßÉ¥—‘…©¾ä˨hÓR­Á -VNoÕ2-ì9ÐÝs®?&p'3¤Nµ³³…ÝLîçLöÇ4ZXËÖ+µYŒ’P¢ÂjNæ'.Áó›·à\6Í æB%KróZ”"†Ë Ø” ×.ËUþør¡P‹y±g&Õ½i…âkÕ ->tëZn¸yô§ôøA%…K™ÄèV¸sß–Y›I앇pjSµÕÝBDrn±|úˆ–ãi¢‹´€ ŠtÛq¸ -Ÿ/Ôf¶ˆÄë[35ñ -nudJRÁ8ûг£’†@ù{nfТU{juÕnú;èaË`”ž› s˜E2‚)…}Uex@ ;ÁÿÓÑãÈzȧmY4^ó TÕ¹®2Í@&ôkê÷ƽkÒÄ>Gï*ÿkå~'äp\f±…z]Uf_27a± kò/]†žitÉ71ÝÛú - <Èvt¥’ÙœßÐxaup;5(­fV»eºWôˆ·cŸž‚û³ÕL)ôÁf÷ôã -Î[pÿ6B¨1B*ˆwDrÛÒ|/)t­t”â+qÓÙ‹jõ)Mˆñ"{uTÚð}=ÝÞ@©Öméè‚xÖ±.fN#3¦»’›}$uϱœIá^¼jiVGõ‹±¼•w èJ‡²éA]Äàmíur˜ v…@¨»Ó¯É ¥ÇíèÜ,ÌV4buaLûÂûž]Ï -ÚFýÓmæsa-ÓŒ°Pf$í&²ü~iM Ùî I¯wlwšF¨§»r8X'U%Ž~ýÉÂ1¶úzÃ!ýœ.T[Ô¡Lã5ÝŸ½Yq¹U‚8‡6ýól´"’ù#$NðIïAý8*öîyxÿñ<[ýx™ïðý…“׸=Òlõ-׃1+3˜õ/éyò12Á&ä•êZƒ”*°¤›ò/ém‰Ü+ŠµåmLÞßSbz ¢É -ö+Òû”·Ú%+K«ï,aY3à$rçPu--ï¬f´tö¤¹6†ÃI©pGjŽŽµ‡!ªÂð ô–£ì›`¡€µûÙuk"³:A$â&@'sèØß/«í6¸‘½+5Û·ÎR¯­{åÙͤ¥}U4¶—=x„èsw¤Ò]ìwêp‰”ä1”nfªàk£)±ÑÜè[ŠÜü*GëJåÖý™..fÔDTe*"«ÃêÙ„Î ÜÂyäßXGÍó„WiJ-ôÏïÏcZ0Wn½2ÁV Á=ÀcÙyïFÂ(óÏ}ˆ~}á=ÜßCí2±¢Ê°èÑWö¾Ó1›]Ü1ÈoŽÌ7\˜‘Õ32A§4¢7ë7M4Æ¥*‚VoÉg¬?JºNo[,<0[ð²Õ¿£â¼ü|Ði&>BB)\Ì5ks¹ð'$rÛîKȺ8ä#Ë¥ý‰r–0ðY—üS‡•¢´afOíþGupzqÌ%‡ÈîÀzÊà ¨ÑÙ¦]‡Éw‹?‘À+oâBÅ«È@%’6*„¦:k"¹¬TÚ O‚Xª£U? æô¸LÀbž†cÕ|…_³ç&¾ƒ•FúgRÃÅ<¥·JòA^ÄÉ%«6´ÚþìX£µéO겞ゕa[QF‡Çr'aD ð±èêPkèç\6¯“H\\qξæÞZ-¼~ŽXª@ñ§ñ*ºÇÃN,þõˆ‡]±ô6üÁ[yÛ˜Öéúz¯[îy š¨¼ûIèÂQ…–ÓùåÆI»*0 €º»Â^<àXn/ófœ,Ò…Ós0¶ŒaÖâe™W¡ëjqHòmÇÿ§=kM6KbL*)Üà„µû+öG·œE -ªÐP6 uoäW5é8"pÄuHÍ¿}=žkUÚQ¬I¨å\´ñìWÝñ”¶DsYKÄmʇ`7]*½»nkº°ä -®~€Ì}•.„!Fƒ![¶ižX•2aÖ:A¢¢Ç÷ˆ"ß_Èåü(|­\ V»B‘‹-X¹f„³òºt¬§ÎÞïF‚åb ëýêáÈ„æWg6‰?’»÷?\‡Hô‡z_ÄY‡*HɽAÁ,¤=åõ»áÓ+Ó¡SaµFµ¹,i-ùvÀà1‘$xñk§ªK{gµîvfŒ“¼¤zÚWü2òo“ªU…¿§‡nR¿s7ô©–¬Äb j‰‚‹ -º\É`,ÛGôèÜ -,®-ãL4B¹h{o• Tâ!qgÆ™$ D³Záô”ÂïÚÖ¨Âr¹­\¹m0Ãg`»";°Ëͨ7>oæ¡ÜÿP -+W¥)8÷´`Gx{Æôê«Ò~Úm_`ÚË{á¼û› jªùþæ·HàE'ÙU]Ž‡ô à%Ý™´­]É…ñ ÁϨú:¢Ð¿b ¥°«ø–úâ{*–ìpäûEì¬ôëŠÜniÈaψkšk°†V´ÿ5icj^‡g‹.æÁ>šÚŸù -WQî¡aRD§ÃWG¨×í ÿùg§p‘ý€ý•ùApV=ƒüŸc%Z…¸€;bjvY²¯à¬Í~-ó¯²ÓøöG¿fÀü¯Ü.K.JÚÅzÄèƒN¥á÷tqqeºŒÿ0½ÉqŽ¨áÿí¢OÔ ÿzkkYR-Éß+eÃ;òUÂE+èC4;CÅÉ©ÿâd¼w] - ˆ“À¢gÀ¼.ª…Ëük…¥œÝãÜŽÄä&ö³{Ç}z<Þ=膃,ž•}*:GS !åX‡-CÊך1eÞ Í"gYª-¿ËˆßØ(‡kÕ?¦<̤¬•–'g³wX;¬ËA† ¶†BŒj€Â|b⺽hKþÉÓ1™+$GkpBjÊ°×#G¬ÇoAñÀâ°¨¹8£g T¨¢Üõ´3ôXŠ"‰œ±ç×e…a”3¾ŽKó~?*WøUÈEÓ;&º.™ÌzØFo™Onò"¸ÕÊ Ñ0;™×Ç*¨ƒ|ÅèPO"ŸB‚—ÊëðÌ烃Hj4ÎæÏŸïÿ.RZÅç™F¬îc›‘*]‚{׉¾Y—?#,5fùÍ'®Á@ À‰åRõ3ýærijµ•>,\ϵjŒgÿœÂ]~²5;$÷PQɨ§çß­Sæ -r+‹eŽ@ñRZ -»îñÈYÅþÞÚv’ˆªŽ¯¸âiJdt˜«\`ª¦ž$BÐN„ö–¶„g—FÓâÅèšvŽZ~Þ\PNÈ#pÞ:ÂiMEA81$eiHrÒc|@Ï–™-JžX"ÀÓfÐQ÷D½éçI/ÄGXÛdÞÀ9A¹ý@F™b‡ÜЇ ¹}…óûïî!+èÆ*¿ow?ÿÙŠg;Âàk0¾~$·!yŽ5ç-a)ÎHÀ%@†rKL¥xÂÛ#µK¹»·KÕ9¥c.O;Å:R(óN½¿?Å*ꌘG×’§á©`=ø9Ì:i¾H0^Xê`,„ØPô÷åó£³[îÒK~ã,ed?!rH­2ͯ‹Òvßé…EWÚC<®Þ—¿÷õöꀞ‡ñêS™Dvq›Ö­8åÒƒQ~ð?‚ Z;0Â|ÇPyŸÄz.¨Ëñ±_æ#ˆƒ -Ú{Ïï‚8 (á¾5LÜÛÍ< -ñ¿+ôZ™VÕô»mJã{ÅWxOCدfÓŠíBÒå˜ãúÿHH8ÁêZ·\-ö¾ÑÖö9EÆ`»ÑMùIÄ5°•F÷In8ÓŸƒbGÌa@N äÖ²„Ñó#ºƒ±³Rãõ½ ÃbɘÀ(õÈ¢­ªJ7ÂFÁƒJÅwý“ôOÛw:}žÙ3æi¸y!)¿É.°]¯1.ƒ(¨¦Y˜l«øÄSŸ0Q¼Fo€ÌÅDñÔ ÛWSíÖu“![/#´˜© Â(ÂËrÉI’IºŒS&ªäA¸Só§xOø³Vb‘~Èô[©×BŒUªùÃÆ!j%Ïm3ÇL$8”õ,¼¥}èlðvgõ÷ôã>ýûP––඙Owtp%œÝ!\å´+y$péVñP­V $så g& Þì{€a¶·UÌÁ>û çloÑ5Ó¢[¦E¦½÷» /( ]ìÏjËýP•K:a6﹪C2KÈ­§ *w-äXWhš½@.A´’ŸìÎò»c7”  NÚPÿó„©i(¡)ýÀêä8s-a-?p•ÿu‘ç„Ù£E>,}k’ó·#CO¼rÃÔ´ÁîHgŠ5’8>¢þÝD"ŒÆ?±À“jð¸¡:…fÙyïFÂ(óÏ}ˆ~}á=ÜßD£,Au¶¿²yN®×!¦ÅF!ñk>F¹Âßyð‹æ±¥ê+ù…™/êÑŸB’Ž&?ÂŒ©bº¹ -˜A”&Ûèæ·›Aè饘YlÀ¿Ýw[´¦úmêšíHÁEÑErÀ¬áå64¥C|û?ûžÉ„!ªÈÇ%~ê„àSwÜDSbÇéöLÉrŸ~#zžÃ,„‘Ë¥îä–ï³Óy -%ªrðí®ØQgÞB -ŒÈKÀ<æ‹`hûž{õ¼"F7#Ù°š¸&6t1Jø -äÂ)+¸‹êœið®Ðx·ß –\X3…I#Ö ~3ók ”Ëwf襪¢Îß ¸Få%«%çp¼ü[ƒ&ý½;Ó~¦ -¦Þ¨‰ÊÆ16=Or ™Ïœ´ÁÅ 94w2›†Áy›yó;°œ¶wc~ ê´ ®®îz¬Ö>b3ü>FžgU0à‹c(û‘4`²Ø’4/#Ã×Îuo²:ïm´0B|X•Ptl£²n¨2…Œ2]æËYZ»vX£í<ªwË}ö#bã$Q¶› |¾ûU•ÿÉ;Ë·îÛ´3ók¦pÔî5ãô5*ŠºO깿F¡>ÌYG>Öœ…–Ú' tE͸}pÕûŽßHÂ¥+1Àå ¹š£6,ÅC&±Fcã>¥ßc¨ÑR.“ ¬Œèš:Ç-?àß2ñ§|²Nõýü¨¾8TšfÖQK"É”»þg±sqíaã+j 1Ý«=yD -ÙB½Âã:¾¬E «"´<žvcÎÔM¾@Ú„õðñƒ4»¬ @µÂ™‘ÖwÁ/RCú¿|«Ñh–%µ3ä*ó*ù‡µlßUÿWá[_õyŽem‚JnïŠýƒÿµ`ƹlÌZO(F8µgÕ5Ê€rݽíÑùñä \d—M‘?œ6¥C²pRÄtY†+?’ìÍ8F3ÃX={(’éD«¸÷¼‡Kì="ý )¶†MÀÖRWÒTc;½–ßÇã8Œ•sRHà`†P„¼=¸,íºü÷ëN0á°‰Jz:dV–›ÿ¥ô ˜¼¤·úª¼¹9>Þ–F²Ùù0á@¡ á -%¨Ž^Á•u°ÇK  ÜÒ¶N#F:3ý=¼^ä­¬t¶môñ^b RƒÇÇÆzTkX0ìi6kâfwš“{$~Dñ¶ãkæ\úæ ZRïysã:õÍ¿%ùFòŠGmJ›Ý*ÆÏèi5½kÇ$Di3è‡ÍŒh® ?p|cˆîF3(ú7 ÜþΑdÊ2uâVŒˆñe˜¸5 ¹>¶á=£–HmÌúI¬ e´Ì¸sÝc¡¿0뾯Ÿì,Z÷ÒEŽÕû¹J²®É[: Sí|(¯+ë¤s«E ºèìÕ²£Y24æ—îñV%ëvDá«5ú5õ¾~ÏI}ÑàÓIEb, o·Ë}!ˆ¶ÎÆ»Â,ëÕÃÍ×ÓtEÙÜUЦhu†BÌ”¼žFíŠ'ím…õL)Õ$ö¼ùÓ&•$a p&+ VUpc?Üå’')‡](=õÓí‚Eo_ðÝ©Û—)†Î4hxå±N,®½¾§“凙š¼{ÕÀ'D@‚J•¶ B~lü¼18$oó±¸ê€ÿÖ“aø¯g~lïû8‹mÒ¹¨ö†ÖªI,Úˆà=0cû}›r°°{GR®¬fû6gþB%,èëpiÉæ~–ê‚^»©.Æ! Oa=³ê½.mK!’B¹#`?z¤AL×SDòÜ®iàþ/Ãæ Øwí¶‡ü´Ç$¼þÙnh™éØd¾=ÜŒB0÷è÷|*D†]—î¹ïÔ«|AZå…5(;Ò²#¤œÚé„—ôú|PHÀ†!@ùÎV0ækëÈ7%¿ãHBh5>¶¤¶‰É/ÅHÏ–]õ.Ü£Æ_»¦± ß];1Q}Lrâ¾ß©æãåL’ßþP®Å8âÆòäa˜4þ±âB–pxÂö?µ†¿ß\|ûÍrëÉ™sÕWQÓ]e -G¬Î÷±‚ûÐÐTbj…àG -Rg6¹h›_ÇîüMåäu]ƒ¾Â¦m7‰oâT·¸,UF›’6ª³HŽKá2:Ö_y|=²Ã„[[ÚÙbˆÛ>uÚKŠÍL˜ Ê º×þ‰Ö¨K!&ÓëHwºp¥‹âsIÝ”ÀxÎL©ºj]¬×ÐKúáUïáíßI¬†håƒd½‰Ñ>$çK• ·ŸûÓ È–ûÆÓ£|D¥‹c¯å˜Ãfá(ásºÛ³d8¹MõbCqFµ™m !è˜rýVJË6ËðX¦ÇfÔJ/½ÄíÚÌÁݵ.mÞxÁtl&¢£D«fA˜S,Ëéþx¼äÔ%AÒ0ùušÌÑKfÉÒ ¶1óú(±ÆµPÝTÁßÃä@ø‚Ï€9MÙHm²>6ª[Á2nˆrn-og#R¡])ö™l;nº1Ý=“Õ0’µQè¹ØÓh4èGžhwžZ$»‚°$â^ Ê¤Ã¨8—‰¶ºn‹Ýòµ8¼$µ&ìÜ -ß -AzÍÞüö¶zl öóä‘èŽS yÆBwœMS¸ïóGF}u«Ÿ–—?7Ážä\û¬?›<šS´LÕ]47€€:OóÔc­° x‚àŒpP²à·ì›~$k<äNeðÄ h$ßÀû'Ÿ†®l î ñä5q“V•Úå³®Ó@0ßRi´Mª+ü«ª¨è~÷E’¶û4¿¥ËoT€e[ÂÝcÒ¿-¼éÆ£‡®LpAR›GëbÍož uõô¯#ZýJòb-¶à¿c~F3ÝKú¥öÀõÿjzØ·pÑP}nIx>ŸBºù0«6Án!ÈiY QÇÓ–‚Î"?•è&èÃdúq0QúTƒ#dŒ áì÷p8#Yª1b2 4 sZ† Ž­ÒÉßÔ,¬Zò¼D#òüMíjÓÒ²Ù§B"ÙǸê!S¾žæLÄÒTJcj€M/ÖàÖ8,6ò‡ÇàŠM¬ õ™@æÕç¬NÍB<Õâ¢ûOìá~CìxôA»áÁ=~®ÏB™yüÌ+s|̺ƒ:Ãmný³æ åO ¼Op´½ãàùàš®’•äRLŠè}ù©º­¹°ȼð˜t¦Ô­ -qOÅÜá¯s•ðžnrÇZ'ùD­#Tµ—ê©®kVB3ê&¹Äç´R;;óa«sµëPxVu¿{ÚúbYÞ9L°Œ|–ˆ! }eÞÂnÞÊ7iÃÞøX„ç#wlë4W3˜L6Uª€ÈK¥Ù¼æUZ-î^È¿APW¾¬ÊæQJH”ŸòêPƒIò“a }bþ‡;™^ˆn‘âx³ËúåR¶"¹-.È_µ§†nÞG¦]~0JšËVÌ P{ 4°JÊìÏâñkø/j"í'{£ã¨¶zê(’‘VŒÛ”àkp¯mׂZl½V‚»- Sˆ$Wú#ý×]d¸M>mÍî^NÙ˜ÙVçù3ð·ÅU #t†Ð/«„ÑšQ-”}dºÞRpã}ñø?V­íQBbOHWÖV(bÿÜÅm&Ò|¾¥–_Ùš‚ßL€ævìÐõ$íðBîmŸ”jwú„ød¡ñ{1Ø8xœ²$zA¤8ÈО±Z#9F>†õgûÔ?é05`ZÔ1WâNÚ¨áÚ#?Ìøpó¯A‡1ŒNI„ËÃH‰€¸j)^J‘ÿÔÝÆñû_?¥ôÑŽ]ÈQMK¼3âÂ+8›0AesÆrM{x²ÃÛÔC)u‰$ZK©’RÿÚ¨[ȹ“!·3ùÜþDÕûþÊà_(t¸œ¿5è’UO<. s¢±mÃz6º ZôDšõ - º}¦]ûkÔý>#“ùPó¡Þ¾ƒ2ºu 3vŠBI,ìt䢅BÔQº´vC³±½»0ÎxmQP½D\ÍÿdÒRØò(¶L?‹± GÉå.åðVV›“ -ÉŸG@vð}W©¥¢‘žDºåø–‚lÑß¿/©"fÙ뺨Ì5,ÄùEë™X×{çÂ÷»6ðìÞÝú=1+ØUxáÖ?Ž[ð/™£d·šÁᙟáFd—¤UD¢u_“9±‡KojÆE½§#Ù…¤ÿ6 ð`WÂêÛ¹9×· ‰¤{Ð0ˆú_RT*‰ï ™v.§ÝŸ ¬Ò·•7˜ -§Èèv%.JÉZÍ0ÇÔF= Šu -öÌfcÖw•C!!}«¢LaGxÑ`G -¼xP÷xšòLñUí=?¯S0ã®S&Þ^¯Ú›® õ¦HóЧ›¤\©ëÖMd¤§éx%‰ÿÝ땇îÏŽ•Q´÷E’Å”ªã÷mH âfîÿ»»ô°zm(qþñ6.Xê(ò|ºi3ž“>'›tÆ'EÔ¦3OîƇMÏë‰%·/ð˜íäôä¢.£n†ûýÊút™¦ôűìA &9p†„gµ>‹·l¨F¥Eò¹[äš[šMàÉN5]Œ$ÿ»– b„gí ª†5‘V…½hãÜðî)/Ò8#—Íl;ÓöòçC!Òì5O«Þ“IˆK³<\Åÿ ®SÌYø,nÂÞ¶|lס5!š’Ô· `Ö—7ZåÛk¤Ä;Ñù²'µh=œ^K9|ÙQ¢©ò÷ NÐŒy@®’áx¿LG﮼zÀMØC~rÞ -Ë%5&˜Vð>føXÒŽgÈ_…8eÖ&[©údWgê Â5ŸÜBrP2Ò„ŒÐi ¹yïkOfc¿Îæ­†ù»Ü]t¾3f f„ÓÜ,}UÖÙÇYã. ,Ãâið‘¤úÞ=ÅÕOG=gªNûpùD´FóƒgÜ…`Í2§¸àêK7}æ§R‰XѲÿ!œt#V/›Ÿ!mü‘¬.Â*5nçkSGåt¼q!ò8…èmŒ-kU²º­ ýzªðN½°>Æ7’BTpùWÓâ '\Ü…h˜¼íÅUøÏ>r>Ä$ôc‘÷rš†x¶HsʬÓˆZŠDåD6‹ÓÎpÀž -%ü„YÕ¢‚Íä›í8 Ä“È[¹«Þ}G*Aí³yEf2çýɈ*Î)U´¿“Ggšv@zP¬”ë—Œù£fFÀ¦'ãøh4 {ît¶Vä›sË*ñÄï;Ò1¬ÿÙim©±Ó+þÒ®úåE‚Éß]¿üßĨýŽ£´]g¸_jB¢¿°½u§Ô«±õè™óûû‹;AR¦6Íø@¿ñ: zÒåQ}¯“×!Èæ´™ÈôuB£þ€ysÔæ´Õfdù,¶ðçz[þ’!•½‚ Q|À…Ì¢Õ×D9¢z%ø˜øvŒ§Õô²fbó©cÇ”YFzA«rÈša†0¡Â6NYOïþE–#¶‡ŒËÝnotœ³Ì-W£Úγ>Ñ7Ûy|Îò™(:Úã ÛÕ@a -&~=íÂÓ"M;¾µ vŠëv9Œ4%«*r×AŠìÛƒýkåcgrú›6ÏÓ™‡OlË"ò–ŠpxA‹>ü½9t|^Æù‰Ä~ô´9³ÐTÂy½…•Êj?Ó°¯ñ’¾ì§ûÆ«@€TP 0_ûóVx %äÞu68[âÑ/yá&Û1ÓaÙt?^ xO&ä‡Oµ©t® nú`Õ„˜&Èfûûª$_òÄ¢‘:§> - n'æîÑ>(‚^å?Q-ñ€bwÒÌbo²ú»Ñé¼[˜”º=ñH²ÆvÉÿþ‹ÙžÜ«p ºV¨k°VÖêåþrs*ÛP°ÎfÝ1=)Ö ­ãlz×ê…%‡ ¢A"L£9#Éò8Hï³jÿ3×ñ:5å#:Yfv‚j¹OƒÅ&áÒþìLÔSƒB¬"è¦Aæãz€¾¢Ù¤||<´Ü%àÚûQ¡AÒ?ÂÇ‹WaßË0Ù“šcá¸^LábŽ÷ñ(äÐ.ò ×?¾dHª¤ôøðäÐ&ƒ‘Ÿò ¦å+3ÊòFÚÊ’Éw¶“{vŒîÙ4%t-—Ì¡ƒéÙh)A…xmâc“%$g-Þå"æöOƒüÈq¯çÍE3áËá®É2„åzåeä’ߘ¿ŠL­:’=Œ{̾‚U{ÍK%™\®êIKÞ†Æ/jbìwJeëG‚°›tsëBBÃøõˆŠß5‡P®ß…Æß"x£.ÎÊêûÖu u6P¸r”$š".Wõà$A ;æ+ -k ,ÜïÒf¯B³H¢-ÒàH©!äŠZµ£;ã˜üL}¯g]J^s¼KX-!rSáf -p–îs|¹*Á¡÷#}ñûtu(~ø?¤H‘02yÓÓ¡^àþzW'¹›jC°&fv»#œ ¼äg9YºûfžNåg@Ò~°¾^Û†«Évå0øs k÷ôJiøµ®^öSõA±òÛ0Š ÁŒ(*{’¼“ÒÿYÑÝ¢IŒrðýüKB°!o?¿”ÞX, £Ê6P4 ÿ(óõ}rö§bŽED¿Çrx3§„/§¹Ì´OÙd¨/ŠÃÙÇÙF¡»ÊI¢¼†RGd”Ç f á}åJß)}Ìø)‹Áy˜zô…›ÔÅÉ6ÿO‹o~/ê–ìƒï*tÒŽ¡n¯x ’“õ9Çï°Kš6{Ó)ãe€_ƒ.ÞÀŒ‡^èeÞ)ÖËz„¢]Èñá/ϤŠMàYoÈô9,¢œ—Þìg£×TE눮}qtôºšGÍÛeÅX‚¥Ä_wxÃël ñNUá¾=wÆU¥w*ú5ëqï6¸Ù±]tR4‚6Œ[@[LJ*8Þ*ñèŸÊj‘Òës]p*4P+ã5[šâ -ÏùÖ 9¦}v·5¤$H•à”úúVbàöëìjíFaõý®?ôÖ}÷­ÀÀ„ì#bÉ5ö]ò*ýÿS"^ò6>Øù­ÊÓ}uFÀø¤Àa›d~QÚ¡d™z’‹ €–ü‡—Iø¡¤áo>Šún}ÄŠárËÀ©o 'ª÷‘¦Xdü`C- ¾Ó’duÇ‚TÄ(n¿v8Ímë³ß͘•ƒUÖ67ˆ¨áBYgøåR>ï‰`±l–Ÿþd³õ- -×ýc%ÄÆË£7£ÓÜ×Pä1xÀÞp]ãÒw/F¸N¡ºNæö’0àqûìÃeÂ7¯ê±åëYÁæÍÏË?Ù*KùPÏôp\þ|Âi HÓÕ¨ ãYNUÓ0ŒWsK9àæC†­Úº¾¹pS^Þ"戺•v#†iÙ"ÙʆIúCã¨Á"ŒIPA{QmtÑ_ØZѦnzE¨]½ U5Pd"ó[ùÃ`$k¬=ú̪G­ÖäË¡Zï‡ÿÉþÏfŽþ;ÇÿöíšþFèLx5†÷±†@>ëÊ æ£ÙkhºæVë»7Üèï -óÌ T¦@rrz‚)(å°]Ùß K¸ù+ؘfi©ÛÂDøŠÄÈ:HÕ±ëù÷ÞÞ»¥Â¬í‡Ž²B£WU!|5c}æ¶5‰R¥#Ó_훎ì¢Me¥z4ºQû:àîФÜàåký#ý8œA Pbâ—ÉwÆ™µhfOŽokï‘Z9ëè\©¶¨g„$o­Îà×.ÞϲWO~T5 ¨Gˆ$f’œÜÏ‹”“k½=r“ Ë/3Gq† Þ¡¤s­»ÅíÍŒ§)»vx*ýP*ÏÿÑ=ßÀcÑÀè~ÓáVô¸zíä7dNS×4B®ÅÐæS}©RNaVÁªPÛm„>ÍQ¿i6h%8ÀZÖ½±ïPGQqºÇÈÌIâph,‰1¾-Ãã…Â(†Þ°ñâ±÷ùÁ„çì¬ÉluU<ìh¸õZ๬rÉ ~%>—Ö}Imkõ|Ëë›㢠=ĺ©Y#Z¹dàÂ$Ú¾öÃÑN¹TDŒé”(gÉÃ)†u ßÄÿTÀvû#à&å“,vžq÷¿͹ |ú8@\Nˆ®.ÒUè4”ÄÅߢ?A°QÉ^éÆóp+¥™¡tŒün(ÏÎI`¸#Ǧ¬H˜hÒâØŽÔÁˆ¢0$%,K“µ®¢à3å*Z耘®1̃±²ÝYº9åû^¾5~\Á³*ºê™já¾7£ ó“o]ßÛ-”©N÷–É»5×Úƒ…f1Š!MÔPK§‘¶‚«°™ 7fÍ ƒiEÅ:Èka¸áD‚SœV -ôᦠŽÞÑ«ª¸™BÜZ*p ¨‚ã"Ô»[´V{•»V!3ú6•Ö>ùæ&lÝŸhæΟv¯Çè6ÊG¾ýC™„êÅ&ÕL¾mÖç¼Ψ…™bÈОÉ{³ÓÐíî »6½nS=µîo–;J¶Û§.'ï£R’ËÈõN œ–È¢ßÓâ[÷šƒ‚\Z^ß…Ù„ õ™ -­%–ëXZÜÿçuqË -«ágÕµ~ƒúíÖVÆÂ…–ý»Ve;˜[ÝýÅÁ ÉLMÝ ±ôÐ}ÈfŒŸÏÑ`t‡š—Ÿ7Ë ‰Q˜È4úŠ¶‹VZ#¼ª -’  -ýƒíë.¦Wànd¨E¾³ŠK×™»ÅɶªQÃ\åÜàØŽ¬Ý°y -Æ4à£øÕèß|)’Úñ_ˆZ}ûóÐ> R¸õY -ST‡¼ax5¬ µFõÅzÕ>þa~zë[KÊQ÷ÔHD~YÖ­kÕ‘²‘Ûsø¢ÛŽ•Ø›¿¤´fœþwŒüÒw'Q½üÔ¡þø,À¬0ts‰Ý¼h:ŠSqÏW°Ò=E2Í'jˆþŸAr+…Dé’!}AÑO:YEÀöT:Š€¸¹²c=öóìn O¨}Æí¤C2wp£rA˜CšDêo Ò )Àse4›uNôã™}ü¦ŒÓx 1šåÓ~Xð³§΋[/B™ “BöøR -î~çsÕ¤4(¥ Þ²î‰`Cœé9’¹•ŒôÂ:E"²º–€IY~&4£‰RYæ¶&{2Šý$±GÇrV›ÀÚâ?É›ãµDVàêkÁ—Za¨Æ4ë%›O*tÉÏ”¯Æâ,!«–N²U¹ÿl×*‰ÖÌ[=a§»#*‚³–RZ -Šãø¹ y"]M¡ÐcØÙU…%˜»Žƒ/TJ ͹Æ2„PËH~ëH=yišÍÖ1÷9× x {ááyÚ½ë·Ù"“êÿú²S¦YÐ^{Ķ3þœž÷Pk<ÈZ?\û/ß2Üw)€%!Z?ÑúT0F :ƒ!WˆuùÖ „óá¾7Ìî8 O7±ów#ÀÄ¿¤ßzÂ)¹>×…VŠh&ksLÆÊcjYÇFír­ô|#3 #Õá:^7 X÷p²š¿lTŠï6#¯ð}«1¿½\]Ó=U¼·¸Cîd»øøä_t}ô¥ -åˆ3©•ä!š4wîQ+¯æITÝÁ —ÒŽÝR^n¼ÿ¤bÏάU#mÁ´¯;]§—Ho7Ò½éáŒJI[ͨ!ªNIÕú˜Œ¨÷|Lb–'æÄèDÐð3R@ñ#Ü;ÁÕÁ2¾˜šŸÿ—hÓŒLÎèŸÍ8ýÕ?/ 0|—¸!ó -Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: -endstream -endobj -2171 0 obj +% 2179 0 obj << -/Type /ObjStm -/N 100 -/First 977 -/Length 16569 ->> -stream -2167 0 2172 139 2173 319 2175 362 2176 569 2177 870 2179 1091 2165 1304 2169 1451 2170 1509 -2166 1568 2184 1748 2186 1866 2183 1925 2188 2008 2190 2126 597 2184 2187 2241 2192 2363 2194 2481 -601 2540 606 2597 2195 2655 610 2714 2191 2772 2197 2866 2199 2984 614 3042 618 3099 622 3156 -626 3213 630 3270 634 3327 638 3384 642 3441 2196 3498 2202 3592 2204 3710 646 3769 650 3827 -654 3885 658 3943 2201 4001 2206 4095 2208 4213 2209 4271 2210 4329 936 4387 935 4443 895 4500 -896 4557 911 4614 892 4671 893 4728 2211 4785 888 4843 2212 4900 1052 4958 2205 5016 2214 5110 -2216 5228 923 5287 894 5345 891 5403 887 5461 2085 5519 890 5578 2217 5636 889 5695 2070 5753 -2071 5811 2213 5870 2218 5964 2220 5984 2221 6355 2222 6458 2223 6617 2225 6640 2226 7095 2228 7224 -2229 7522 2230 8168 2232 8639 2233 9270 2234 9741 2236 10316 2238 10541 2240 10785 2242 11133 2244 11359 -2246 11590 2248 11875 2250 12400 2252 12647 2254 13106 2256 13449 2258 13928 2260 14504 2231 14933 2219 15374 -% 2167 0 obj +/Type /FontDescriptor +/FontName /BNRUAU+TimesNewRomanPSMT +/FontBBox [ 21 -13 638 675] +/Flags 65540 +/Ascent 675 +/CapHeight 675 +/Descent -13 +/ItalicAngle 0 +/StemV 95 +/MissingWidth 777 +/FontFile2 2183 0 R +>> +% 2181 0 obj +<< +/Type /FontDescriptor +/FontName /ICFUKB+FreeSerif +/FontBBox [ 0 -71 706 752] +/Flags 65540 +/Ascent 752 +/CapHeight 679 +/Descent -71 +/ItalicAngle 0 +/StemV 105 +/MissingWidth 600 +/FontFile2 2184 0 R +>> +% 2168 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.292 537.01 378.265 549.069] +/A << /S /GoTo /D (figure.5) >> +>> +% 2172 0 obj +<< +/D [2170 0 R /XYZ 98.895 753.953 null] +>> +% 2164 0 obj +<< +/D [2170 0 R /XYZ 396.732 574.688 null] +>> +% 2173 0 obj +<< +/D [2170 0 R /XYZ 99.895 526.012 null] +>> +% 2165 0 obj +<< +/D [2170 0 R /XYZ 114.839 383.469 null] +>> +% 2174 0 obj +<< +/D [2170 0 R /XYZ 99.895 187.185 null] +>> +% 2169 0 obj +<< +/Font << /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F75 673 0 R /F279 1791 0 R >> +/XObject << /Im9 2167 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2188 0 obj << /Type /Page -/Contents 2168 0 R -/Resources 2166 0 R +/Contents 2189 0 R +/Resources 2187 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2133 0 R -/Annots [ 2165 0 R ] +/Parent 2105 0 R +/Annots [ 2186 0 R ] >> -% 2172 0 obj +% 2192 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2173 0 obj +% 2193 0 obj << /Type /ExtGState /OPM 1 >> -% 2175 0 obj +% 2195 0 obj << /BaseFont /PBIKKX+TimesNewRomanPSMT -/FontDescriptor 2177 0 R -/ToUnicode 2178 0 R +/FontDescriptor 2197 0 R +/ToUnicode 2198 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 0 500 500 500 500 500] /Subtype /TrueType >> -% 2176 0 obj +% 2196 0 obj << -/BaseFont /ZBHFTP+FreeSerif -/FontDescriptor 2179 0 R -/ToUnicode 2180 0 R +/BaseFont /ZBHFTP+FreeSerif +/FontDescriptor 2199 0 R +/ToUnicode 2200 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2177 0 obj +% 2197 0 obj << /Type /FontDescriptor /FontName /PBIKKX+TimesNewRomanPSMT @@ -33399,9 +32338,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2181 0 R +/FontFile2 2201 0 R >> -% 2179 0 obj +% 2199 0 obj << /Type /FontDescriptor /FontName /ZBHFTP+FreeSerif @@ -33413,544 +32352,1976 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2182 0 R +/FontFile2 2202 0 R >> -% 2165 0 obj +% 2186 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.583 356.078 396.557 368.137] +/Rect [440.392 344.666 447.366 356.726] /A << /S /GoTo /D (figure.5) >> >> -% 2169 0 obj +% 2190 0 obj << -/D [2167 0 R /XYZ 98.895 753.953 null] +/D [2188 0 R /XYZ 149.705 753.953 null] >> -% 2170 0 obj +% 2191 0 obj << -/D [2167 0 R /XYZ 396.732 393.756 null] +/D [2188 0 R /XYZ 447.542 382.345 null] >> -% 2166 0 obj +% 2187 0 obj << -/Font << /F62 671 0 R /F67 918 0 R /F60 670 0 R /F59 669 0 R /F93 920 0 R /F102 1022 0 R /F120 1788 0 R >> -/XObject << /Im10 2164 0 R >> +/Font << /F84 675 0 R /F131 921 0 R /F78 674 0 R /F75 673 0 R /F181 923 0 R /F231 1025 0 R /F279 1791 0 R >> +/XObject << /Im10 2185 0 R >> /ProcSet [ /PDF /Text ] >> -% 2184 0 obj +% 2204 0 obj << /Type /Page -/Contents 2185 0 R -/Resources 2183 0 R +/Contents 2205 0 R +/Resources 2203 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2133 0 R +/Parent 2207 0 R >> -% 2186 0 obj +% 2206 0 obj << -/D [2184 0 R /XYZ 149.705 753.953 null] +/D [2204 0 R /XYZ 98.895 753.953 null] >> -% 2183 0 obj +% 2203 0 obj << -/Font << /F102 1022 0 R /F62 671 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2188 0 obj +% 2209 0 obj << /Type /Page -/Contents 2189 0 R -/Resources 2187 0 R +/Contents 2210 0 R +/Resources 2208 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2133 0 R +/Parent 2207 0 R >> -% 2190 0 obj +% 2211 0 obj << -/D [2188 0 R /XYZ 98.895 753.953 null] +/D [2209 0 R /XYZ 149.705 753.953 null] >> -% 597 0 obj +% 601 0 obj << -/D [2188 0 R /XYZ 99.895 716.092 null] +/D [2209 0 R /XYZ 150.705 716.092 null] >> -% 2187 0 obj +% 2208 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F102 1022 0 R /F67 918 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F231 1025 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2192 0 obj +% 2213 0 obj << /Type /Page -/Contents 2193 0 R -/Resources 2191 0 R +/Contents 2214 0 R +/Resources 2212 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2133 0 R +/Parent 2207 0 R >> -% 2194 0 obj +% 2215 0 obj << -/D [2192 0 R /XYZ 149.705 753.953 null] +/D [2213 0 R /XYZ 98.895 753.953 null] >> -% 601 0 obj +% 606 0 obj << -/D [2192 0 R /XYZ 150.705 554.06 null] +/D [2213 0 R /XYZ 99.895 554.06 null] >> -% 606 0 obj +% 610 0 obj << -/D [2192 0 R /XYZ 150.705 527.944 null] +/D [2213 0 R /XYZ 99.895 527.944 null] >> -% 2195 0 obj +% 2216 0 obj << -/D [2192 0 R /XYZ 150.705 315.727 null] +/D [2213 0 R /XYZ 99.895 315.727 null] >> -% 610 0 obj +% 614 0 obj << -/D [2192 0 R /XYZ 150.705 284.171 null] +/D [2213 0 R /XYZ 99.895 284.171 null] >> -% 2191 0 obj +% 2212 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F67 918 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2197 0 obj +% 2218 0 obj << /Type /Page -/Contents 2198 0 R -/Resources 2196 0 R +/Contents 2219 0 R +/Resources 2217 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2200 0 R ->> -% 2199 0 obj -<< -/D [2197 0 R /XYZ 98.895 753.953 null] +/Parent 2207 0 R >> -% 614 0 obj +% 2220 0 obj << -/D [2197 0 R /XYZ 99.895 720.077 null] +/D [2218 0 R /XYZ 149.705 753.953 null] >> % 618 0 obj << -/D [2197 0 R /XYZ 99.895 633.991 null] +/D [2218 0 R /XYZ 150.705 720.077 null] >> % 622 0 obj << -/D [2197 0 R /XYZ 99.895 559.861 null] +/D [2218 0 R /XYZ 150.705 633.991 null] >> % 626 0 obj << -/D [2197 0 R /XYZ 99.895 485.732 null] +/D [2218 0 R /XYZ 150.705 559.861 null] >> % 630 0 obj << -/D [2197 0 R /XYZ 99.895 411.602 null] +/D [2218 0 R /XYZ 150.705 485.732 null] >> % 634 0 obj << -/D [2197 0 R /XYZ 99.895 325.516 null] +/D [2218 0 R /XYZ 150.705 411.602 null] >> % 638 0 obj << -/D [2197 0 R /XYZ 99.895 251.386 null] +/D [2218 0 R /XYZ 150.705 325.516 null] >> % 642 0 obj << -/D [2197 0 R /XYZ 99.895 177.256 null] +/D [2218 0 R /XYZ 150.705 251.386 null] >> -% 2196 0 obj +% 646 0 obj +<< +/D [2218 0 R /XYZ 150.705 177.256 null] +>> +% 2217 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2202 0 obj +% 2222 0 obj << /Type /Page -/Contents 2203 0 R -/Resources 2201 0 R +/Contents 2223 0 R +/Resources 2221 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2200 0 R ->> -% 2204 0 obj -<< -/D [2202 0 R /XYZ 149.705 753.953 null] +/Parent 2207 0 R >> -% 646 0 obj +% 2224 0 obj << -/D [2202 0 R /XYZ 150.705 720.077 null] +/D [2222 0 R /XYZ 98.895 753.953 null] >> % 650 0 obj << -/D [2202 0 R /XYZ 150.705 650.062 null] +/D [2222 0 R /XYZ 99.895 720.077 null] >> % 654 0 obj << -/D [2202 0 R /XYZ 150.705 580.047 null] +/D [2222 0 R /XYZ 99.895 650.062 null] >> % 658 0 obj << -/D [2202 0 R /XYZ 150.705 510.033 null] +/D [2222 0 R /XYZ 99.895 580.047 null] +>> +% 662 0 obj +<< +/D [2222 0 R /XYZ 99.895 510.033 null] >> -% 2201 0 obj +% 2221 0 obj << -/Font << /F59 669 0 R /F67 918 0 R /F62 671 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2206 0 obj +% 2226 0 obj << /Type /Page -/Contents 2207 0 R -/Resources 2205 0 R +/Contents 2227 0 R +/Resources 2225 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2200 0 R +/Parent 2207 0 R >> -% 2208 0 obj +% 2228 0 obj << -/D [2206 0 R /XYZ 98.895 753.953 null] +/D [2226 0 R /XYZ 149.705 753.953 null] >> -% 2209 0 obj +% 2225 0 obj << -/D [2206 0 R /XYZ 99.895 723.717 null] +/Font << /F84 675 0 R >> +/ProcSet [ /PDF /Text ] >> -% 2210 0 obj +% 2230 0 obj << -/D [2206 0 R /XYZ 99.895 698.792 null] +/Type /Page +/Contents 2231 0 R +/Resources 2229 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2237 0 R >> -% 936 0 obj +% 2232 0 obj << -/D [2206 0 R /XYZ 99.895 638.64 null] +/D [2230 0 R /XYZ 98.895 753.953 null] >> -% 935 0 obj +% 2233 0 obj << -/D [2206 0 R /XYZ 99.895 583.689 null] +/D [2230 0 R /XYZ 99.895 723.717 null] >> -% 895 0 obj +% 2234 0 obj << -/D [2206 0 R /XYZ 99.895 523.438 null] +/D [2230 0 R /XYZ 99.895 698.808 null] >> -% 896 0 obj +% 939 0 obj << -/D [2206 0 R /XYZ 99.895 479.068 null] +/D [2230 0 R /XYZ 99.895 637.615 null] >> -% 911 0 obj +% 938 0 obj << -/D [2206 0 R /XYZ 99.895 433.422 null] +/D [2230 0 R /XYZ 99.895 581.623 null] >> -% 892 0 obj +% 898 0 obj << -/D [2206 0 R /XYZ 99.895 386.501 null] +/D [2230 0 R /XYZ 99.895 520.331 null] >> -% 893 0 obj +% 899 0 obj << -/D [2206 0 R /XYZ 99.895 340.855 null] +/D [2230 0 R /XYZ 99.895 474.92 null] >> -% 2211 0 obj +% 914 0 obj << -/D [2206 0 R /XYZ 99.895 295.209 null] +/D [2230 0 R /XYZ 99.895 438.913 null] >> -% 888 0 obj +% 895 0 obj << -/D [2206 0 R /XYZ 99.895 249.563 null] +/D [2230 0 R /XYZ 99.895 392.226 null] >> -% 2212 0 obj +% 896 0 obj +<< +/D [2230 0 R /XYZ 99.895 345.539 null] +>> +% 2235 0 obj +<< +/D [2230 0 R /XYZ 99.895 298.853 null] +>> +% 891 0 obj +<< +/D [2230 0 R /XYZ 99.895 252.166 null] +>> +% 2236 0 obj << -/D [2206 0 R /XYZ 99.895 204.585 null] +/D [2230 0 R /XYZ 99.895 206.147 null] >> -% 1052 0 obj +% 1055 0 obj << -/D [2206 0 R /XYZ 99.895 146.317 null] +/D [2230 0 R /XYZ 99.895 146.837 null] >> -% 2205 0 obj +% 2229 0 obj << -/Font << /F59 669 0 R /F62 671 0 R /F60 670 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2214 0 obj +% 2239 0 obj << /Type /Page -/Contents 2215 0 R -/Resources 2213 0 R +/Contents 2240 0 R +/Resources 2238 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2200 0 R +/Parent 2237 0 R >> -% 2216 0 obj +% 2241 0 obj << -/D [2214 0 R /XYZ 149.705 753.953 null] +/D [2239 0 R /XYZ 149.705 753.953 null] >> -% 923 0 obj +% 926 0 obj << -/D [2214 0 R /XYZ 150.705 716.092 null] +/D [2239 0 R /XYZ 150.705 716.092 null] >> -% 894 0 obj +% 897 0 obj << -/D [2214 0 R /XYZ 150.705 664.064 null] +/D [2239 0 R /XYZ 150.705 664.064 null] >> -% 891 0 obj +% 894 0 obj << -/D [2214 0 R /XYZ 150.705 622.283 null] +/D [2239 0 R /XYZ 150.705 622.283 null] >> -% 887 0 obj +% 890 0 obj << -/D [2214 0 R /XYZ 150.705 577.073 null] +/D [2239 0 R /XYZ 150.705 577.073 null] >> -% 2085 0 obj +% 2106 0 obj << -/D [2214 0 R /XYZ 150.705 543.917 null] +/D [2239 0 R /XYZ 150.705 543.917 null] >> -% 890 0 obj +% 893 0 obj << -/D [2214 0 R /XYZ 150.705 512.037 null] +/D [2239 0 R /XYZ 150.705 512.037 null] >> -% 2217 0 obj +% 2242 0 obj << -/D [2214 0 R /XYZ 150.705 480.156 null] +/D [2239 0 R /XYZ 150.705 480.156 null] >> -% 889 0 obj +% 892 0 obj << -/D [2214 0 R /XYZ 150.705 438.971 null] +/D [2239 0 R /XYZ 150.705 438.971 null] >> -% 2070 0 obj +% 2090 0 obj << -/D [2214 0 R /XYZ 150.705 380.53 null] +/D [2239 0 R /XYZ 150.705 380.53 null] >> -% 2071 0 obj +% 2091 0 obj << -/D [2214 0 R /XYZ 150.705 336.754 null] +/D [2239 0 R /XYZ 150.705 336.754 null] >> -% 2213 0 obj +% 2238 0 obj << -/Font << /F62 671 0 R /F60 670 0 R /F67 918 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2218 0 obj +% 2243 0 obj [1000] -% 2220 0 obj +% 2245 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2221 0 obj +% 2246 0 obj [277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] -% 2222 0 obj +% 2247 0 obj [853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] -% 2223 0 obj +% 2248 0 obj [528 542] -% 2225 0 obj +% 2250 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2226 0 obj +% 2251 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] -% 2228 0 obj +% 2253 0 obj [388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -% 2229 0 obj +% 2254 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] -% 2230 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2232 0 obj -[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] -% 2233 0 obj -[528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] -% 2234 0 obj -[611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] -% 2236 0 obj -<< -/Type /FontDescriptor -/FontName /MNPEHI+CMEX10 -/Flags 4 -/FontBBox [-24 -2960 1454 772] -/Ascent 40 -/CapHeight 0 -/Descent -600 -/ItalicAngle 0 -/StemV 47 -/XHeight 431 -/CharSet (/radicalbigg) -/FontFile 2235 0 R ->> -% 2238 0 obj -<< -/Type /FontDescriptor -/FontName /TPELEW+CMMI10 -/Flags 4 -/FontBBox [-32 -250 1048 750] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 72 -/XHeight 431 -/CharSet (/arrowhookleft/greater/less) -/FontFile 2237 0 R ->> -% 2240 0 obj -<< -/Type /FontDescriptor -/FontName /VKSUEJ+CMSY10 -/Flags 4 -/FontBBox [-29 -960 1116 775] -/Ascent 750 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 40 -/XHeight 431 -/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) -/FontFile 2239 0 R ->> -% 2242 0 obj + +endstream +endobj +2261 0 obj << -/Type /FontDescriptor -/FontName /IKXQUG+PazoMath -/Flags 4 -/FontBBox [-40 -283 878 946] -/Ascent 0 -/CapHeight 0 -/Descent 0 -/ItalicAngle 0 -/StemV 95 -/XHeight 0 -/CharSet (/infinity/summation) -/FontFile 2241 0 R +/Length1 1383 +/Length2 5908 +/Length3 0 +/Length 7291 >> -% 2244 0 obj +stream +%!PS-AdobeFont-1.0: CMEX10 003.002 +%%Title: CMEX10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMEX10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMEX10 known{/CMEX10 findfont dup/UniqueID known{dup +/UniqueID get 5092766 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /MNPEHI+CMEX10 def +/FontBBox {-24 -2960 1454 772 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMEX10.) readonly def +/FullName (CMEX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 114 /radicalbigg put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» +ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ +}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¥Þ£Ô!ŽfpÿG?[öTtkuœ'5O P 1òÍ[.®BÉB•ìBo0”Í ÌVoðG;£òwŸëõ¬CMdK†&\YT{#v¬ mÉ ¼E57ºG~ß¡ +‚3[Å¥…š7Œ3Å:&uN¡]Bä Je ¤ÎþvûÂ(âˆ7JIFO/kZ)C¦k“z«™*7¥XuvwšÄ Œ§Ù†øg&Ö‹¬Uüî+D­WA¥ÅàßÔ³íäÇÕPx;£%]r@¤àÿŽŸ¡G•®à€íå~fúJ4„ë8Øù{v”FMô¢øøâ·"›~¬ç’êwšv¬âÇÔ‡þ1µëþÄëI mJXk kŽÕéÅ51DžˆÞÆ[ËWoplã^(íï;Òw‚á\FÖôËIz÷H…©°y$—¢$r ´Ù./±xjÍ83›õÛîá>ƒz>æ½9÷NÑœv-Úòv£à)üTT£D*»IL}Ÿ¶q°â¨Ûbx×>÷öu}½®&é:Îë=l]Õì™Ño:··´‡ê¤E“‹­iÛ§í[A^–Ïýö ˆÇ[—/åERÍ;ÈñRé;”"Æ6(Å©³K?C!Í>;gh)¾Õ Ga¹ï 9nQ©ÝÀ<‚@æð†(<Úˆ›|+†)}ÕPÆˇ2&©±d–qmcüß#ãIh²¶èÃåFöeIû-ˆS³žÙ „näçÌ|{¥cˆfyv40®ûÂë]vO‡?ñÝ‹ZωÊN#Iî®'\9ÜwÉûÃ…P®póþº`ê½i­ì(ä2ËNzf¥¢ò¯ŒA¼Ê‘[?‘ùÊÿ}—Ó7NÛ)Å-tõ)¤^«EI(^Ü’M[ß Ò½¸ëTf¨[¾ë¿ËzÝé{ Ü rCÖ2®¿YócâCŤÇ¥Å¬­ùfåýùvËn­TîgTBgÙ^fº„O¤W¬ …¾3KÝgç³iuðèØ“e>öùN¹…וø¬¦÷q¨1ØS.ËÖ¢+¼0ȉ<á÷§]¶Ìvž®ÖmZ÷î¥ É ›¯û=½WVhY&Rþ{­!2Ûܼè'ëNr6ɱb k¤_ƒÚ©Ñãé°þŸÀ©Íáë'À@ˆ1Æá3µ{ðMKÝ€_öû_ÙÄGaÝT¿AbÊŠÍ0Z¨B{䤡 dÖå½2Jö–®ä>û 7RÓ‰ÎK¬7Œá˜×ÑØÁT;È°èì­+[4Bó*•¿q4~;7 ³D 5…W?S÷»&×3•¨ÑÞñ[Låíù«öð^'{ŒüP)VÌ´~¡B,›10Z]TûÕC2e;=@Ó7Þnú¯6 +|ŸõÕÜ,E µú‚+Ê»%¯ó_B κ7() †û…xK6™”üqÂÃQýðlÝ:® ¦É`qíÔyïiŸó_O£¾7éâMK!¿5°(sêf<ÊE0»HwÞZë>g´§ÄÍH¥Q1N‹9!å;8 @Úß™:€Ï¬&ê-(Dƒ00·ð¨ðfkC[Ÿ®–ÜxŒÝ'=x†ÁWHò© i~ +s§Šý¬w‡ù£³O¤½€Vꮈ…i›ÔJ†LàÓú%’•{ÕyݘFü": +®Ø1[ÜþÃï[ nÖs…ežá]-Då.–ò˜œct&_–CÅ$žãI]Dؘƫª'¢„‘ÎïöDG‡SÄQ$Ò€pªÕ„¿6<ÿçø°~ð"Dé¿gÕž1àoÔ/+8ó®á>ÜY½‚Xœ+®ÏÐê°­öÒ…¾‰¾Á:f«XMÁÜì¡‚(§~t~xŒÄèôc¨+ª`Hc‘äv"œ+Ð!ægãŽl;%kèι #‚Œšvì" ‚¸%ÛM©ÂA’6Ö†N{…È%º•]Dû²`;æ>Ië¼³æ£Æåg¶!œ¡CSièØØofÐÇgŠlu:o3 y–UðÝ¢×ð\aŸÁ;ì'“à‰f«@á›™vØ⬊þZý¯j NB²]ƒ¥ð.y¸iõW3Ãû 5{ˆŒÈ$";é×Yü]«Ž` !i1ñ{ü²±Z„°n|ó¬„VS,v¯6ÜÅâ.Çam$|ã%Ù>ÑÒâí)TC¿ç–Ôk"£‘3ão²@*RU×,ŽÖ6ˆä<#4Â4`ŒxDÆðÄo:EÖtÛ{M„6#:‡—†®š]wçÞžõ›CAªž•'j]¡=ûûK4ˆôîEAÃ=¤±Î:ËMOÔaÆÒ+VXÉ[ã¦b,ÝmaÙ*¹Š’Í69—ZŠ°]ʤ»¼ˆƒ|¯`ÊÏ?‹tvñFè¢wØÎr2)ÆЉÖ/ä-ãOv±5ÅÁ@y©‹‚9 ]º#Ðÿ×ÑÈùóx~†{ï! Ë£zÉ{TÅD]7ºÿëÉðdáì{“ù­ÒãWtòƒMp† iÚ(¡÷+\, pZ]8·¿Ã¢¹­wcl_EìØüÀ¸Î€G#ù×ÔÓ±Á¶ê­š=]Y7*œŽÖrƒQþ !WQÜÓ„rÅõªögàdM9ÀÓn*»P² ´¾ŽœàŠbß3„«éBºxe ö@1RhOjø……ù\÷˜ÍBycw˜zÆÊj eµµÓÓH×?Åé´ •U•~péÌE‚èä¦.¬kÇI“®àc4g<Öé»äÛBêºùZë\¿B«…5h‚r¶†E£ „d^ÅwªÂŠÙiµ·m ¢;õ2 "?Åê +]`_±©Z 8P\éÎôw˜œ)ƒ9%9 ó›d„S6ÔX?}†Œ+ãžLÉY¨JÏ^y@1ùÊè ë(h{U²üÐe²m«í,F/d䘊Ô"H7?Âj œV}‚ö–2 +æl +O´lb(FY8ÍGúß±í4°.Å eS²]¨<±²’b@{ÌɤA.Sˆ Éf>ŒoÀöL£Æ¡6—/Ýç¿”ÃÅOH®eAᤇÇôÎ#:jîå +´7 ¥À6µYäÀÐ^Rvr´é?´NøÖVÒIÑÙz1µ¦x^PAéÎÕÿß~¬æøžKut’Sÿ‘`ZƒàGR`T•g3ìHÁ4á×'ÑeKR `ªÜk+·«ÞáÞj|á¹7Üoà»HNPq‰JgÐ4Òíéà£{ù"ŒçNñÝJïÚØ.éñóôàÐGo[öyv±‘.IS¼+Ç9jÎU´Ld+ˆµ“fu”¼Ë¥Ä~mQ¡±fÃsGñMÎbÐ)êRY2áÄ>®y2d‰=¸ƒÎ»U•ñ¡eíëØüò¹8†@*<*?µäæ!õ.ìyŸ]PhŽNÖЫÑ1Ìq€ÃïærYgî²°MŽ´RÇâ/‹êÁ +ô_XÉØÎ仾ëru'Aßpue+Ë`Y>q† WòXG¼6dïˆ÷¾Z’ ¿ñ«e œå‡ÿ‚”õñúœT¹ø¢Éíï_‡…Âj^‹-æÑ'[n¤nyOZ£:OäþÔ?UŽ”ª§¾3z;Fraᪧ}/_ ›-àÐDŸ'o²!OäQ'‹Ê±LÎö@˜ ©Ø.!UxÐò~eRj=U=Î¥Dqæ±K¦ß’&žu9éûÍq›ÎD<:ß µ¯‹áLb½.3¼ñÿ„cäþ%Úx]«×‰;®­ÁÄ ð½åaí¶˜Ry†Ÿ ÛZÚ:ÕÃl‘Ž¾ö^ùn×z!Ë/rüUŒ¦Õ¦î4)ÅhO·’MMdÄ͹æ’þÖ ë14õ´/Xû‰·sa°0"îA«ë¬µÇõer™á¶’lŽBNŠ rŸ8ÑÝ°Yç~ry9‹h‹Å?êchÙž–!ú„c +Y猅OŒ½Ûúc¤õÜ}q¾5Ÿ—–\¶ú–(ºyÕ!ý¦^âÙë(L§¶ 153Ùjv‡zôhŠÒÕé9é·”®Šæ—7ÖZõCYöå³€¹ÌOÁàª:,!·’ýU…C$*Úh[GÂ%4èO†ô¾#+¤y“–6"Ð>RR-:#ÉXL%¿Yž¢ÉD‰d«­,[Þü¬®®‡F¢Tê ¤ˆgËXc‚б¿½:¤o9LJ•\{î„­ðÿ¼h%v9õ'tÝUB¥´¥QÅ•&ƒúFÿpÅÔ¥ÛÔ,8W‹åë—¶öëF¹ÏFŸ˜“À-Q¤EW¼ÐDE²zÑ5sž#.TD1R0„ÝŠ¬±:û$Ý}+ƒr*é­W”ž›ö€Þ®Ub¿œ\]E¨vs|Ã?Lko²¤ŽO®¤ÔþiÇF‰Šx•Í(8‰z1áùdƒÃú8w .ðb€"œ°%K^i5…Ã9ÁC|÷]Jçä4¡ptjŊÑC”˜È‡”‹Í +Ä­ÔGeè‰å/" #ò ß@!aM†bòE±0ñ­Á›ÒU?¯\ ábY¤Ó½ë‡÷Iƒ¤mÊ—õ.Ç`xò+Ø‚“2qZ:j㱦étWM½°Kª;Æ8¯Æ¦Aœ sì&qü\oq¨ºŽVjQ %i®3k’$nõóõ'Ã=ŒE#*à +WVV ½ IàPQ8ë€ôãý>Ôài Õ4bm ¤miûåšÊ¾Ñ.P`²W0ÍÑ'2ó†0æÖÜÎvûwl.]e‹l™Ð‚íùÝÅ!®Y——z›Ö"ËýƒFßkRÍ™¶ÕÎå,­š`ká%‹˜Iubaün\þRÚ‡udÞ Í:tÜ?·°ìY¦SŽúû¡/WXlOé®]Á{¨j +À±f—•ˆ_‰p|”åê=ZO›Ç(ï+ªý`ëH +º5 ~šœÑ‡7dhÈ¿Ö«]VÛ1´ÕÔ„ìœ2¢ÐD(ÎW[Ã/tG +W ”(µ ìz ŸKø¯ÖèÁª3Z!‹>ôŽL§‹ßW×aF§;®‚w¢0Þäc¿³èA–°”Ü‚ìÍÜLc»Ea;ã° *DGµ5€HXÒ&Æs¸‘wÈ*ñø—¡’ÂËä;êäs(­#PBÙ¾ hoOt%ŠJ»Ã ÃuÑöÞ.:üñô–ˆÛƒƒ ÿ&eãåss¯E¤Æå3aÌ•*™þPê›v”*¥k]5öDû6æ?¬xæ3à{Û%·Ð¯Eó¨µiVÿÀ ÿjÆÓ¨¯¹§”P£ƒNx[šö ïЩnôP×Ú1#WÐv¥›A8Þ¿6¡dz“¸LíñtGîb5Püw,.½#g»«…ŒþÐF:ÙÀîð4ý:uBV÷@aOå•2¥zšn!Á `p»gTwa„GÜ7þ”Ý= bézêsÔФ½¤–Y@«¶}0Š{9üBî6$ʗԧЋ>«Ên4=#|¨hý~ùÞ•4òR_=¯ÒåÌ [êý?rä}™®§Öºáh­ â«}ÅT ‰e4­{Ê#:ýÿų¡¯7“_f.KQ'¬maa÷[WPžå©câ”_·ûŽRF)Dr[ˆÎÔ­-—¨B+~?»îØØÁ>ä3Žh ¦$•z?-’–îÛ#L~ô9³^öå0Û Ô®ÁV@A”W aºƒcÓ¯Ë=óYØN‰Ê›õÏv¬ûT”S—-ª9½S"c¢x L¤ºè ʲLçkçÙú7ßPwí—¥×s³p÷¢x¿Àî–ÆYÁó-YeF +ò6S&ªå_!“½SÎ|esU›FÌR™y† ¢Y‹¥ýžï­§N +endstream +endobj +2263 0 obj << -/Type /FontDescriptor -/FontName /DUJUUF+PazoMath-Italic -/Flags 4 -/FontBBox [-70 -277 902 733] -/Ascent 482 -/CapHeight 0 -/Descent -276 -/ItalicAngle -9 -/StemV 65 -/XHeight 0 -/CharSet (/alpha/beta) -/FontFile 2243 0 R +/Length1 1442 +/Length2 6151 +/Length3 0 +/Length 7593 >> -% 2246 0 obj +stream +%!PS-AdobeFont-1.0: CMMI10 003.002 +%%Title: CMMI10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMMI10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup +/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /TPELEW+CMMI10 def +/FontBBox {-32 -250 1048 750 }readonly def +/PaintType 0 def +/FontInfo 10 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/ascent 750 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 44 /arrowhookleft put +dup 62 /greater put +dup 60 /less put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ<ï˜øX2-Τ^tÅEÒ_á’SœÚKªFÙÄ1F^j¿NBqøžÞ×ó{ä³´y4ö-FègbÖÿöÔ“{÷"Ö¸¡W–B:§rÅP‹À ?dgÅS%|'²ÃØ“w&¨F7J…¼N¾À°¨œL9VìâRt¹bÈTå5ô'ŸâmƒãŒ\‰—Nš"K<¾ù +’w¯àÇÊÈÜÄÁ‹Jv‚åð$†tE;ÈD4¯VÜ¢üŸ§vëš{bG@ëdÅ«ß)–ø²Nòhäòë]!(”À7h`”fŒ1ìzùpÜB˜r £æŠdÛž‡·Ç>“÷sVÙiHÂÞ­âkJ‡…KyÚÔÃÑàüuK—I[ÏÆ„(,M’=þ¬äì}µ%½vf†º'°–äE+œ)ê}fƒ¢Æ$lÜö(…ÔW2[8˜h¼T>¦Ü9„º€X33 vi˜®U/µçÇ¥Yö{z4þ¢ó¾¾B&Úq¯‹nŒzà³Ü|š¤¡úï1/É´c™±ŒCzwmáö|¯xá]LÇmo¥}­z¼m5íà׎Œo: ž©ê¿Š„.º‰"­ÛãĈõ¬d¨N «úôÍÆo¼3 +v¨Œúëzýëš N +p´zªP;VÒ¿g6ǢŠ>Ù,ÿñ>º—O€J4mA0ÌýR3¶Ö¹*È{¾+¢ºä9á…iuåÏM”äO@h}-Û(Ž ‚Qȃ钌¼Aàô¹Ÿ‹)Ó±Ôí ¼¨=.9©çœëô3góœ=[¾_ÿbÿo_ðBV¤ßúƂ˶òW"í䶛ÂàaòéoZFsO‘)„”¤%ïd2ò¹wŒN»­ÓH>õD}õðÛ‘ÅY•¼í´±1jZ®ƒg¨¿1b¾¹œJªa|`¾h§b)ÁwYƒïc[&0j”ð²X7yøg +˜hS·…¢&}pþ-ÒêfÖ^ aûÖ_ +Ål4zVéóènRóà¿_e@¯³*z|–‘•Wi.·9Ì)ŽÇ™›B†SŽßs3Ïk ,^Œb’šðz˹a Ë…4_BãêÜûÆÎú1ï+ÑÚÓìWµ²2ÊpoœDûœ«‰¾x>Êf×H³ú[]TEöÁjšRÈŠ~/+û ääê š˜Ýl8äzXÜ’p²ôŸ›H!V÷Üd¶!¶€;d4¢£T¥Ù5:,ãúv#cK*ÜÖ;+zÏXŒ¯z k ¤QÓßwÅ>aqÆb6å1Iú¹ÎK&…?eÐÕ÷‘=ˆêf¹¶<ðjKüŽÓ$k¸löÞ%_ôm$]™9ã-ă åkaLËÜù˜TÏP1{Ðn ‰ŽÕžFÚ{bT½Ì¼f†âí ­{‰LÒë&ˆÀÀ +ÊX9ãʦàú÷îµß>?Úä´T ØÈoîRwšÓá: +‡›e¹ï +/ò ‰ºèÁyûí¸}„ ‡tæÚX¢ƒº"7€òqt„àfú}ÀæÑ”)°†8SRÓX•y<œs´2j•O^¼áƒº%À Uº…à{>Ô/ ¬¯©Cmoßå0Î%¬}¡pÛdç{h4>ŠŠ^wD¦ð@eQôdÄêaidYÑ^à@¿µ?p i3;²BŹAeûûÇôõ Ñ"­Kcéæ_ + +ô>üÉüToÑ=¤*¸ÉËúy¤€Ù#p$™UÎa¦€²€5Q2Z3:·Èw’ÞXê<âHY°Æxv½}€äF-$›"›b!(µzkDQRbt;³Çéj¤¸Äk äNö4­Ó4ù™ôß³ÜÿjA*›`gÒ‡Qª±² (¦ç;Ë°Q U„CpbèÍ@;øÃC9eé&F[(‹ +¢ü…ùù¦?ÎrŠí˜¼º_ô®…ÒfOWÞÐ㨟¨uù0Ý÷‘k/’®&¯5õ ÉÒ¨ùµÕØ ±-ßLYVZªbì4Xž[Ì0uÌj>EÔk²€²!XÅÀL¾¶ø¡Ç‘U—°ö›ã M‡lúTHÈnÒþy›ÄeUÆÆÿüs…AÜœŠo…3Î|] ¯]™äæz¹ÝN®&•”GÕU1@µ†./9;ÇÑIêÏFz”$¦¾€UØ/Kl×f6xqà  y +²w}±‚HH/³*%úÛb•k“¯üY±yoxжj®î—x£²S½˜\yµ)n?ºžVè‚J¶ù+Èka… [zÜÌf˜±€—×fI*Ý[f=M3Ó)%¼ñ©®“qª®¶O(¿\-Z!ŒžëJà +H)rQöµQ5ö£TbL}/>Î5kì÷=Qw¢Oþ75üˆ#:•×,¢U_LP?‘µÇÊNC®æSMöÕiïÕ Ú>•ÆÏ÷ˆå åñ3*×j#WÃDê8è‹$òÓ|òž!·FŠßÊÌŠ¸þéÚL“;_ +dQ–JI$¶º–ÃYÈ(ØmRqè÷£J[’~fÖ9,–«6³â_1ú£Ó~w »ë©S,?1?ƒ óÖAÔÅßyl(‚ãL¹Ït» ïUîìè À«m@Ò*ûT9ÛE¹¥WOg-Ú–ÖÁŒ°HépæaH"\z¤ýÂ/ÒÓ„EjV{1‰ó1̃T±•VLýÒ5yWK|z€Òóã—ð|Ú¶t¤jBdé…V=®zÙ3ÚÀTÖJ~¼æ[²¾µþÕ3`ýv þpnrƒU MVWª›ö.çY-t虘鰭²2zÕñ‘„¥‡ +«ìKxq3Ã¥àÉ_t§­›éÐ|ÑW×%ˆ0£Ì=æE‘@¯º”.ï2^àr³¥:Ÿ(H>¬eèÚPÌݳÔ;¯÷ØÇס„}mWœé-ñµMáAÎzs`sb}žŒÙýÃs¸@_“s¼/—žãFˆ¿„O’E«—lî‹Þh\G`böa8¤š·$(ÞòÈ^U3¯qš´ÔõïãóC"«ÿv¿‹¸õjþ?˜ŸúÜËAÓ·æ5.¨s:¾]Ç;H2®…½²?l¿´²cäþP¥÷ô!e£Ûê-t1ŽØ//Ç‘b<†•“Üýkû/å{ßéÑ”o›Î „ÍÆãì¥8G%‰pμÉëÆ·Mñ:Ó•únýÂ$cS€ë5!ª’žº0•ŠâÚ@…!–¶~äD Ó#8; ¡ò´ÿósŸ^ê°=gC𢑴Ý?ùèë×z;_]“¼r~ef H“¯‰/tü Ãóè6C©7GgŽ¹˜ùÉ:ùB=9$õñÇë$›*·6‘õúÈhrõ!ƒ e¬;èË€ÒWÅ.¨d~÷Gþ0E˜áÎ ¤Þ@1䶥xi°ŠVªq ‘̸¯«”­Öpçg¤Nwy]ßÖ\œÜs2qmîþ?ž.Ø¥K¶úö;{õõT¹4‚†ÀŸÂ§N¢ïÔà¾këàÄdàxÁIhE=ǃ§ˆ¥]’]r T’À} ºîI‚ûí›2Ý®# ¥‡™þêÅ[ °— +Õ’cuýy¹URkàQRbµÊ‰«Í¿†„|¼XPÔ V½Å(ézÞÑêm{v½ŽÃNt*ŸÌñšcD™±Ì’ _;tkÔÞ-›ê4%§§¶F¨ùï™ øÝí²AOŸ(®†sÉf±%(ÜûpÎDÛH"2&˜-pŠ Kï~°‰bãô3!=uEóQé”—(ëD<;³j°ÄÊ·úßÙIåù2s¢¶ßûA´g†G“ÍNSÇŠcÆ2Ôüº×r.†Ýã7ÕCŽ^CB á‹è°=ÝrÑ`–òœlq­(2]Ý¿™NeKè”0³ì?§Òp1–÷ñ ^˜ò`P~Sÿ=KÝÿ?EùæK››&³+ó‰£r\$2 $[׌/xÖp3¾ëâYU¡¬qƒµ*` r ©÷A ­“U8ÆÇÅo*ps ù E¥ölk§b@nQ+óÌ;R‘Œnž’‰2yφ¯„Ù¶}»èKéØKVTƒ#«8ጞ•pE:¾wÊžÑEc “ŸÃ¬Ã=Iõ鉧JÇ`ðÉ”X)RxïÞ’éÄx 5Ñ.Úh¨#ºDHêŸÙ0Ècµ~Á¹J¥ ㆸï¥:qÆÈhyKÝ´þF;Œ‰‡K› @û3Õ\îSN:8¡£'gé¦ßU?Þ)äÔRb%ÑûÚoŒ·€˜è>Š6 ãÄÇ~)˜ O’ +«©ÇXw5Í/"Ëá|k™¨(e$/ÞJ«¾G ¸à“ÇõÁž0Mõo#hpÑTé%Äòå-R (>¥*Îú Ò¨ìÈ25ˆh¼èïº|I.5uÁ`QP£÷Ö‚)`ñ©—QQǶé(ü÷4“5•³^§ƒÞ„‚M߯oˆ5G*`?ÍRFM¨ àÀþÕÌgãŽêpÀfÚßnþ¾5Æ1d¬¤¹‘íKÄë[L +y¸q ´BÀ¶$Ã@'ˆÊ6é!Wëà +ÎúE¶ÆI¹ï6ø,ûITÁ$‡þÎy›Ù‡î“H–pi¹æÿVchž]l&Ûß¡FÃÝ:¹ÂO¤é$#ÈŠ!D:¨‹…%)aã›Mx“ýÈÇ"_L—ú?Âd*ú:‡Ö0ï2]7x(ìº4p ®P8¼*.v5žsËb<õŽ³]LQ†0ï*ø¶Kí•×+·@>e.-ÚoªÓèþC®–¡Æ€lÊïÆÑ\~R+$vÃo–D¥™Úg†ßþyùê èaˆ çDNnrè*ïÌö®z ®høƒÙø[&¦Å&‡ÀÿæÔüq.®‹Êø¿ÝÐ¥‡ÄÎ¥ëÇl”Vx3õTª ö%LbzbSzÓ´Hv­÷šÒѦ·Sc)]M|Yœ÷IGC¼rç õrº²ô®ÍmGý­`—½2N×q$ž +n^Ø90ªI`V<_qŽnA¤©UÉ´Ý^°å"2ض>K;ägþæB +r sb¢VØb)l 2ÅþSŠ„T£­H+PMzjÔîëzËiÍfí$ŽDáŒMkV©° Ã?ã\Ù¼Ä>Ž¬߈ƶa¹<¡ÈèEE£ÜL½¦D…¯6=t¯–EÒ÷µ€ðàÀ.…(Á%FoÜ~­´ô6€rý¦\l•ù;séñ'$Öµ…ïß>ž4¹ÿr$ï2¨DZý~*®\R ù·Yi$=Þ¡¥k‡å'¯Öå“™úý.m…6¯Â–„tY0’O$ð)ºQñ’ršÈUQ…»+¶ßªúÔ4(¨«,‡°Qb8¬—mÓ©qý±âÀÁÝHä°=‘œ,YŠ8i  ÿ‡½ª”SZ6Žöã½mØ@ˆ»`é7~â"L7\ã¹ßFdN#FþýHR´K´KHpb40 2ÂÚ~HÇKε֊úøX +endstream +endobj +2265 0 obj << -/Type /FontDescriptor -/FontName /NCCVYE+LMRoman10-Regular -/Flags 4 -/FontBBox [-430 -290 1417 1127] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) -/FontFile 2245 0 R +/Length1 1688 +/Length2 8444 +/Length3 0 +/Length 10132 >> -% 2248 0 obj +stream +%!PS-AdobeFont-1.0: CMSY10 003.002 +%%Title: CMSY10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSY10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup +/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /VKSUEJ+CMSY10 def +/FontBBox {-29 -960 1116 775 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 66 /B put +dup 72 /H put +dup 73 /I put +dup 32 /arrowleft put +dup 33 /arrowright put +dup 3 /asteriskmath put +dup 106 /bar put +dup 107 /bardbl put +dup 102 /braceleft put +dup 103 /braceright put +dup 50 /element put +dup 21 /greaterequal put +dup 20 /lessequal put +dup 0 /minus put +dup 54 /negationslash put +dup 112 /radical put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÍßᾉYň5t&× {hLšGÒqB`d­Ë—PØ©†ÑÖ|*îøÎx\ÁœÞ–HŸtEÅãBð-¡ÉùóÁgedogÏ7—‰ãï‘Q`[['“WÖü…7Â3ç®æ¤ý¾sçZ9ë m ¦ö!–tAž¾ë‹Y!$átÊY\Žr[˜uTIUÏý‹iŽ÷B¼Œùyã[Ž™ÊÝÝÈœÆÅ—3ò¢Kï6­†zJ!žË’Ç‘œJ·s&B5öC©•"¥m†&Þ`7ÞûӢƻ‘Ç3uµgNC O~̶u³o5Ö=žÂÞò_ä›Tù/ ¸’‰h,°—$B%¯döʘï¯3lŸÃ ³¾ÛÿMÓo§¨÷YLÚ¶Œ~ƒ3^æÐø`š‘12]•=l8Çà£B6PlpËfWÚü<• %PIN!jáuË#,.õ£Åi«X“nôè¸È¼Ê‡ðo$îÒX½šëÄê‘·I5öÔV*E6t±K×o¿_)žÓRŸžP»¾G;Z@9ØÐ"V3¡T×TLç˜N Y:…A€Ókî©®Ú¬6Ì =‚¸=•8€0~ÛÐðDQì±ã QÂù^brð/2^KŸ¾Zh`§N'Jt4i¶ëüèBYÒð7ÖÞŸBþU_¨~\ŸfûŽõçôµïŸXA³ˆZl‰”¿Òã_£Ì½ZÆŽ˜ÀÐìý'•çxHµúöðbÊG:Ç"„¥l«¶5ºCÝƉU[ÆaL¼ô¸rÂÌf¶ôù 1[÷;4äp^èµNïpûªqBD 'Ø…93ã­M€&9{ ˆVD õ8 aе‚2Ön.hf¶ +äl?KÚ¢ë[$‹¸Š³úGpðöÃݺ±/JÇzc÷¥‚F8ûvP3Üà/XO6ÈyAo¿±î~ëç]WqD‚M¹ˆY4ߧ󆸢YÕÌ¢XPEðLý2ã_2¹ ­¹©oH•{ +1xÒÉê'¿¼u|»o øöúWNRšE”ò¦í™¹Óôû&”ã˜lFÿ\LRh1®Fžbñ¦­Ï}+‡l Cø] ¦¥ÛÂ(„vfÕoƒ+fÏœMëí³}÷l?c*Þˆ"î­^R¬æ]ªm†äÔi§„KªOÉÒŽ!I Œ²Ó²ûçõRþ_tÓW;™¿Ìñ˜Çu@(#ªt*̧Ó U œ{|ãõõQ}a3åF¨l•¾ó8x¬¤Òt’HWA¨Â­â;³!ÚVÞÐþ CºÊƒVo³—Ûvºžì’?³”;”œ±=ËÜ>,„Æ㧫¾\"«ù¶•šÑRívRC•Ø¥œQDh +Ó@_,žÇËœ½kbflçAIøP^ª³™wÙš¦dIÉHzk(c÷3ƒxûŠÉìSÊUPI³f{KΩÍs… îÍY¯¼¡í/ìvÁÏ[¡¹ûظL%O¡@ë™Hƒ†“<ÞP'ŽJ£ËÛv‘Õ,Æ$´"hU§M?ô³ë?á“p*Ö„7v×=ÛP1s}ãG“@¤N’5^ð3•‰Tå³8fº† yQ¦‡ƒ¹O)„´ ¬07ÓæÒ%… „G ¤ú’Rz£óófé{‡Ð^DhÜô<ä¢{™™âB•ËêÖ}úÀÆÙžs2f'CóyÞâ°_ǮӮ@]c8“±n7q'ƒæKˆü4kO=íþ«@ÖU ’¨Ül,ÝPoE‹ÞækÔ™*7q[Ú!ì÷ú·ÎØèÓ\o»‚^×$·&Œåóò]8l•ä·s¹&„„Á/ââ^)š!TåÄ€a óá¬îÙгá½S"¡;è•üu^S‰ +A5ò™6B=Û¢vnÛ™Tã­™±Ï¼"…Ñ÷©]/Í-}{ˆÑÆÉ@ŸÓ–+‹šiý©caÎpnÉÛã´ÓàÕ{ª N©‚ïh%sùªéðž ¹×áN¤‚äå¬VÚäÎǃ¿a©š]ôè?Õ, íòbt¡l“˜h6‘ÿOˆvÂ_§Ré̳9S ^Pí!Qp÷ Á÷¹r6÷¼Á;¥³Z–è¿ÆävØ9k yŽµH’yp;DÉ×ã “jí1œÐ:ðR„]¬Ý›bzGC?"%‚|eÝ¥w!è±–Í6Ë¥RPè$æ·¹:ÿ½Ô)ɽŽE#Øè¥d'¬Ãå¿-¹¶ È2/Å %ñŽ}‡Ù¿ŒØÜ mË…¯ZüÄ¢L8ÏÀôÙcËóµÏoÙ¬Š›LH¥ÔºKÜôó¶ž)˜õqž+×ÛcYy•ÅÍ»¥Ÿ› +_MÌŒý`-@³0Vý'ôœÏ±Ðö©tS¨É¤d?ݱX(ƒYƒ…Ä÷kNWµYÀíFØ<èB}³–ék³ÛÃßRí(ÚÕÏ^2Ø%0Aüýìm„»ŒÎél|mƒoÓÈì©4Q庭„¡y|“Úvï+~¤ŸÄ”EµcŽÔ²Ù’MÆë×/­öëtØ…üHeš†ÙPC´évNîç"G6} ¦ì ]µ1¡AÀŒ”+|ç°(ä¹VÕñߊG¨¬l7‚KfWzÞrŸ_í=ûG"{'ª4ˆXM ¦(¿Õ±†ïz/ܳ¶ÙzÒLÃZ„|¹‰DÆ4-ùá0Eíp¶ŠZSú¸óAÇᇬˆ³ÈáظA䔹Á½tl¾±ÎHý¡[TxsÎM¢…P‰*´ ee©¦f¦¾wkÚ‡øH1)7¨i"ÐÃï‚$0Øþ´«ÃV?i¿‰zóç8ÆÅ|¿¥>dÿjyTšÃµVmÇæ—áq§ÌgCÊ‘ó‘ïØÀºš9z»åTˆCÞ/Ät~º‘؆§o*í—9ŒÆrÏÕI‹¡oj¯UíKöxj¡º. ,Íø+b1°Ö²ñ ÃI›lDLïQZ3÷¶P-noô¼ò½'<ÐY½ße-ì1/øŒŸ7Œ*E5#—d‡ñ¤oŽ–{]Cª>$þF zg!Ј*£oºÓjŠÔ-Nûíͥͭoò8ÅKwQgÝpœ*1^‚.ÖŠˆÎÂë± LV‰~ôÈÿüøm laÎ ]%ì."¦`»©_®Q·iäpÀöÅŽÊs’5y.XƒÒÍ®)ñæ¢T¡í¦öd1KŸ¢k««ÌŠjÝ«¢n0zªG®áq‰·ëa©WQé%z„ÓJ²¹ØX¤¢Â3tIy0ľ£.Ó#‰Å[“#¤ƒD#EÔ‚’pp¯F*«¨õ±Þ˜vïrOÓdÎn7n ¤Òf9ƒ*¯ìX:õ¾ç>Ǽš:*ÍÞLfÍÃ9’&a’j;+{»0‡ )ÐÚA’gðK*êXKÂÛV¶'zÙZóÌAÚ) nîöÏ ³ÕT¼”ÙÛLÎßJëïòé^Di¨ý[¦ð:s<ܸ2Â!ñÞU‡ú|›–#ù5V„ëfÑUŠêqP}÷üÒ|=ÿŒš»¾GÂ5O|PÃèsš9ñ§Ž}äå“* ++gpA€,°,Á=|j«25CÉ‚7›õÕ ’ï–¯µ—Ø.é/F¨ɹË0¢–tRœáºŠ."we h¿P€ eäÖmpòîJ‡o´@°±â–ÿ_ðêAÒ3§âQé¿BVô~$ð9E¢ºj= +‹]? «è{w¯_53÷¥FîgÓ¿³4B™èä›ìA¨«á½q²ÏðËßÀÞÑ4µŠ‡¤Ðî1®PfÔ ¬ó,ÖSÅŸ6ôã¼ r¤§[‘ÝÁv`à ¼µ±ûô¿x÷G$ÿŸ„¥êÏ.}¡¹Î Ì”·¨ÜϾFÍ™”c°±š‘‚=­Áf!*˽ª./çwĉR8º(@ÙÙ‹šz c¸½@ÃN&Im—žÝ£>X!Èm•eñÊ@ÎlWÿ"ÒVCHèø8ÔkÕ‘ŨÍÀj]´nó3X>J¡z?ÙDí€=Nø…½bn {qbY(>"Ù8*苾ÉÍk¨y3øoâŠøÜ €ó‰Hã Dwâ¹ø]¤€ ½ëd {E’ʥËwÙá™.$Váçhtœözk$kk$]4ë¯ðcf¸¡ú¯»CW–@òËóû3ö—plQ¯ “Q晉bá¨/póµó T“q¾FÑ8_þÕA’¿nëQÔÿ¢mKŽ{&z;<Õ¿žmòã[i7Ìϴ뜣ñ'*ýqX€Tnòt<ÕŒkò/?©2m)žËÏfô¹¯í•áâ¢øy#(ã¯`%Ú{ª§!¼Qœ/0&sßx¹ôfçB«+¬Õr‹ïEßï[tÑÚgOKQ£$ú$²=à‚ל?êd@3c)]3ª–êÕÕ%*M}HÙ饞;Cd£á˜Érp½°1jýŸF¿ˆc…st•íG'÷âC\–ºp)­)öþœ_š¢)±Õ(¹ú›¥µ MMº +µ³„ qÆv&¶¯Ê÷Cßå3N¶LZs³wTPu{‘s¼ºÏ°øPž‹+-­©¡U‹—±FõUøP"»KΆ†+«¼ÒY¾e7?0«(•öidšL´;gk9Á(YI-Œl`®õî;`ÕçæAÐH:´® áYHb1“µâ»HÇ{¸wƒÇR^YÑš, + $F¨Ô–HDÙòV?pòyÑ—¹PÞ%F=»‚ÂÇÆB‡öÙö¡GKØPh³~N´[¸IÊ_ꈀCðTzÞÒf ç <Ó–”Œü`4|mƒE1ÖJ'¼ýáÝ$`}R ‚Ú\¨€âN2kf¢aóouJ73ê´òváê¿ôKÛW{œMÓÞ3?שMò]ù:W;v…˜Xâ;„B’ ‰§X.PáI;?Ÿ!T¤ˆ . ·sìöU]䮃’=ÑXŠþ ý’5´ÀŠ€r€Mt>y=¯†*ãbC¾~^ ½tÅAr±¡l'¶øŦ•üó\ô÷ØŸÉL냡P“&7ttöuGz;Kg4ÚóÑ;·u)"é³;úÜS•–Âv½ËðüõC~³?¿Jƒ»/’F"6U.°0>çô+ÜKQÓ„0"ÊÓ«Ñ=ëñséÞíƒxoJ]áת!Ìwü6OÝ.}‹ž€tëË5ð¢VâË©³+¬¥·¬­Àü7Š³Us‚š®Ö©ÆyçåÊÄ“TŸŒC5üGrgâUÄ5Ì$‡—Œ&|°µ¿Š~•ÝGªäØ8ž—ê ¡¯Mvåß(jt§ƒãß ñÏ¢nñí›]Î]ÅQÌW…OØ‘ˆm.Œ£Ž­ð R[¾ИoNÐngô IFç:?Ât”ØSUOÎcÆj2Cm[¥à«O7>kWúk¥¢©½ËX¯'ƒ²î¦œ ™#ñ–Ñt'X•d9+E7±ðNä™dŒ8{Å]òŒm¹/‡ Æñž»×Ž¥dv‹Y†Y–öþwopôé™!™EÄP7F?oÏÄjP9âò­"›Ág“BŠŒÎÅÙPîŽô;B^QO©“3ù¿*B 3³ƒun»$·ßIÆêÿŸ_Oeþ`Ô +˜$Àß`‚}-9Q/Ä¥åM³e€ž?ØÁÇÉêÒ°µìhä]Š¦bð¿ ýé»ê«_ê2<ÑøÍ–Æ+ìtª°[Ïœ±ˆJ¡þ©O@¤%M‘I‚Þé t¦µØvƒ†Õ\¹/bãÑÃòMVFÊ05ÿÎ+kIå2W9>f–}©· ÐøĶô3t‡¶«ÿº¡jª†¦Ã|"§´æôîÖ +ŸÇÉ[ÓLŠhŸŽY³)Øo57kßþ“#%H’\,¬xÎ|ôs¯sxí¥HžÍ†|¶;`Å vû%øÚ¯T[ícÖ]ï‚eŠ"G—Ujß«„yŠðtvxÕ:udQ‘uZy_²Td"“ª£b+çÁO†]Øl¯xà'6wòã6X²C¿DKOÁ‡f›(g@w]f¦V™ËÂ[ê~ëŒ1Fùé^A3v¬ ÇâO›vÒ¯¶2v +zúåT¸ÞúË0ÙÝb#ö›[›zyÏ’Õ$e1¬ÛkÕ5—dRAì`(Å…@{=yW>¿ðˆä>ú‘¯çy@æÅÿ¹Uáú;”œ±=ÃH;Çc{–ðÛ3û0´ü£^Õ®”)Õ™-{·O¹°OÖú2R¨Â´xÈèëˆQÅôwBgБâ¼ýSý»ž›"תl›bðöz;¹±˜IyÕ\E×ÁËê‰pr¨kM ·@@Âe&À 3•˜lÃʉtS÷æÄ%í)è/pRÇøÞÙÀª"2µu +˜Ee’5ø+ÄÙ°s§Zò'±¹§õ˜àçbˆQ²ôð°SlŸjÅö zvÞ€â~%.Kz\N¡Š„çüã÷Eê,ãeV2Ò=Mo)-JcÇVà¤:ÒUÙ2Ѹ>É1ˆ×È“"¿QWº ƒOýõÑ‘4*Ozûº.c¸ójc”«Y&üßÜØØÏìê=ë7”Y™´öøÈðê,A5nÊIßFŠ•/œ?üÌŠ™á ]as.´N/þCÕ»tÜýH…G50x}eb9—S&ùœ¬é0år¾à«J§H€‘ôN­\¿?^4'îœèb©É»ÏÀ':KÒ`wpcÏT–!ÜÛ_ÿ öH˜°øŠ¹ÝŠ†‘óþ{–ÅÚ}þH¿mZto”àÞê7Ê«¾ß‘ŸQžÇ·¾Ùbi>ÜœZO¤§ „Š“dºdFÕ¿cc +$"«˜ |ðhJQvB'\³Í%Ì6Âä²3è¯J)A‚g²+TÂò‰ªÀî§ø¼†ÊrnßãLì“O™ÁN”@µEzçHr$©d(|º÷Áµ*zˆÜtiF¾ Õˆ›º&«Öþ«Œ{Ó5rT[°)C÷ =t†<¢na‹´€ï3å—³b«m ~WåÒ¯Ò-ÿ¢-ã*_>Góe‡È¾ºJµö!De:ñ‘1˜´‹ 4Åæ*ørkd›«Tý^ï\ä”(^”å·|a›ÊuØÝj“íË•û‘ÇNø×–GÁÔß² ‚Óh$ èÇ™¼Op—H.'çHã •Æ"&+t +Õd[øÍZìÿÏ—ŒþEßÁ1Éøktê±èŸ/È”’Ë7ï\xßY +hÊ^IJvh>üã\/µ?1ªX½ ¶Ç½þnyWlÕ.ÀëŽýAñka«i»³Yè4!@¬ž.‰Sø§Eg_»ç’Ž;Ûâb$;ˆ ‡ëÂótO¯EN,×@ß}Ë€¡À°ù¢g~Ÿ ÕŒª ÿìÓf,ÚtäyÁÓô–¼yËV½Ðc) ¤ðävŠM‘/ã¶"{i è~?pÕ·uŠCùMãâ ÙD=Þϵ0íŽâsñίŸSÖ΄V"å'»„¬†B &ïä·!©U,)úÛö8®RîÞ’¼JRD0’õ˜]¨<±M£r|±98CÙ׫NnŸ3Œ®=Cøl·âÛ ¬¹?×NÛ©Y$£õçÌO6­¾f¥;çHÄ2¶h,°èbþ=&qfžN¢é]ŒÜŽbt¸íÑ)Œª~±ƒ2¾3ªØÈFG?‹ì¼ˆç¯[¡PöÝ«_²Nò2@´kÕ +ç=‘ûC:•æ¨ÞÛ‡uVÝÂ%Oÿ^øðí"¢….œ-ٛ冕ÅK =°‡¹G,üû[{uscˆœ–8`ÏÏ=ýŸ,†aÒ… 4` ÆÅ ú>,®Ò¶Ö!?îòy)ÃéFë°ËåðÜîá„ 6áò.sv¼¿×W«:iAaQ±Ãà²$gŒ§õp¬$~ÓɹPKx 8IöJ«cxîÈœ6ò‡Í¯MæHkbŒTþ':ËX¨ £¤ IÖ°(ý¥t#˜+Ëd‚Ô¶dó‘áÏS¿¨¸ëçTOöh†¯Ã¬tÙRŠ<%¢(•Ð^Ì0ƒ.9u¯»U€˜÷ÒŠo4jµѾ9fyï)œeYgSÆ¡’#åKçÅÚ)«šàAªÆ¾‰kW2«Ìê1#áÚE~Üì›—‡‘€"@q´¡Ñí ¼3ýÍõ•Ý|aTõçÑ ²õçýÜ=iï¬Péi~‡ô¶!zå ¿I·&;çXÃÔe”eg¥8:¨ÞæKäÓª¦Då‘K[h¾$Ñ)Zd‘7Ï’–íÁmQ¸õF*TÕ™<ƒÀ•çãDMI ÷%’ê¬w¨}Ö姞!‰zQl#9Éñkãt²_©¤#åJèôn}ƒcy6PoÀ Óq_eÝŒñU¶]6-Q +±ÄÕÎr™}—G~D"ØiŸfì=¤öóåºÄzиƒ“ÒhΚ¿(±0ÐóøEÕ‘çë17MæÔã1Zͬå +è-óÔÓ“<q­œžOvÉ™/$«ú—¶#9æuÀÙ®ywÓ ”}w|ê&ŽÏÓúÇ{×?M + –±Ï~x3Ï L'-@Zºkv•hcîåQ Ñßž†JˆˆQbù<¿ +w‘­q¤žÈ$vßKGš¹è¨„¶ù4Ý[ ß´g´<ôçæáŸìa’éÒø4Ð}×D+VWFº].ÈÙÌY3‚8:Þ­*£VtE§;Ôa‚£Æzv âäÂŽwâþê•žúT¬¶ÕƒU·ðÊT³Çd¹,lW³Þêa|‹h6*¡úšÿíA»TÒfÎ’*”•*òþð!#ÞÔY‡Ñ¬¶ù} ™©爳ܒ@ Ë\ÖÛæ mÏÈ©õÜüÍ—Ðh\‚§ÅÃ0jÉïzôÑdA7y,¾Y‘‰õŽM5?̶ÀÒí„´™¼Äðï•òa õ1@Ñê5~#uñÔÖ ð'µœYá! +5 +¡Gí´ž ¶ò +êN¨ /?|$Ŧm§®µØ<£¾$(Ò [ÎýxxGµÊt„Që¨WâÖ˳uÜu±_.3YôNò&ÍŽ”£3ôëãÜ¥OÛL'ÔŒP??赨ðÕT!Ã¥¿ÿQž2ð¾B#7<.*zÿš¢¹ÎWSá®6zÂçjÃQyºtˆH h´t«p1ÓÇ-Y£¤`ÑÊßòaÕóñ9·³Ö<‡còÊ¸í±¦½lXôüT"t:ój˜Y|… +ùÉ,»oêã%þ¥Ý|å.' õ@qÞ8Š‹¥;ÁÏ;Oƒ˜"!L’LÄpëÚ42ð»ûÓºKG||mHƒvÚ®Vka›WŒ£Ìè{9 ¦nRgÏëaZ87͈ºŒ,ÒKØçÚÐê¯`˜vÕ+ѯÊZôvÈø–˜Å^(!ñ|øÛ¢ç~†}Mr(îéÊÙîY|ÙÅ~v,§ ƒO5í³¸¤·«ÓØ€@ïÝŒzªé ?|1òá?º§êŠRâT*kqMèÜ+pª^ñ\¿u PÍoCàŠ½zž¿$Åt@ò[àB-ïE,ì9g"Ù#£.º±:N¦ßú=¸Bœ*×ÝjyqëÀl6Þ]{j?Ê"AsŸNŒÜ9 +p¿3úù¶ô4}|0IÇ•çÜ›‰Ó±ŠõͯHöûê¥=ÍÝY©É§ÿÂ`?ö.¼5‡=¯ØP?Ÿ9<¯N›¥;Içq×ÈW²s1nÙ„&mèÛÁLÖ§_&ÿßczÙqâ9lÁÉ£Øg^[Uz(ß@ °ï™üî]øbžéõ½|ŠÝæx‰LB=öÇÙ”6Wé€ÀîûÍ*Gçt.P/6œn¼ª±*Ç|›Dï¼ëäÑ'+T%^–Hho'«‰ÝÄE¬ÁÖZÑü©xøT*!i¦…ÍZ±w2l°f7ƒ*VÄÈš8Ÿîá+ÌzìïÀÿxŸâ67HÿÆ0 +bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ +endstream +endobj +2267 0 obj << -/Type /FontDescriptor -/FontName /XKYJEW+LMMono10-Regular -/Flags 4 -/FontBBox [-451 -316 731 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2247 0 R +/Length1 1173 +/Length2 2916 +/Length3 0 +/Length 4089 +>> +stream +%!PS-AdobeFont-1.0: PazoMath 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def +end readonly def +/FontName /IKXQUG+PazoMath def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 165 /infinity put +dup 229 /summation put +readonly def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-40 -283 878 946} readonly def +currentdict end +currentfile eexec +ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U +nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ +s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× +‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 +9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, +ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. +>Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH +ƒ$ü-UÒÛÊ3¤³# +endstream +endobj +2269 0 obj +<< +/Length1 1188 +/Length2 2740 +/Length3 0 +/Length 3928 >> -% 2250 0 obj +stream +%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math Italic) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle -9.50 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def +end readonly def +/FontName /DUJUUF+PazoMath-Italic def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 97 /alpha put +dup 98 /beta put +readonly def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-70 -277 902 733} readonly def +currentdict end +currentfile eexec +ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û +…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 +¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ +UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp +‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq +1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú +T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: +wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ +AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V +6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ +endstream +endobj +2271 0 obj << -/Type /FontDescriptor -/FontName /EOXOPS+LMMono8-Regular -/Flags 4 -/FontBBox [-456 -320 743 1014] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle 0 -/StemV 76 -/XHeight 431 -/CharSet (/b/c/d/e/i/l/n/p/r/s/t) -/FontFile 2249 0 R +/Length1 1756 +/Length2 19614 +/Length3 0 +/Length 21370 >> -% 2252 0 obj +stream +%!PS-AdobeFont-1.0: LMRoman10-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 806 194 0 +%%EndComments +FontDirectory/LMRoman10-Regular known{/LMRoman10-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +17 dict begin +/FontInfo 9 dict dup begin +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMRoman10-Regular)readonly def +/FamilyName(LMRoman10)readonly def +/Weight(Normal)readonly def +/isFixedPitch false def +/ItalicAngle 0 def +/UnderlinePosition -146 def +/UnderlineThickness 40 def +end readonly def +/FontName /NCCVYE+LMRoman10-Regular def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 91 /bracketleft put +dup 93 /bracketright put +dup 61 /equal put +dup 40 /parenleft put +dup 41 /parenright put +dup 43 /plus put +readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-430 -290 1417 1127}readonly def +currentdict end +currentfile eexec +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿äŒ¥?ü‹(ä›:øE(ùqÞÚUé[‰s½ $ªgG '“\ +wšÃM•ˆÏ‘¤s¾u¢IÐC'žƒêµÑØú93ó|Y@TÛ‚—EìÛÂè—k$:™mGzR›†g»?·x= w;•*E ›¡ëJ²úM8Í›,õuøàý²èZmYË +þâøµÙ`Š”n›ë¿.Ë£†ýî/J +E:– €ÉB³Oà÷/g^Mj9Z6ñ¬ïF脨0 B‰KBÕˆ[—°GÓO¿rEÞ÷µå符õY8ÁÉà6ñ¹¹n¹XÕ”°*w„€FoÜt8CF :ÿg6}dPâ§Ék»©™]«!­ð$ú¼3h+Û†^]â;J˜ØRÛ*Ç-uCí4È⚈uŽðµ6Lj=!;Í`‰,7TàÈåìØÍZX Vʬ]w)ߧ±ÏÌɸ)Á²ê%NµLß±‹VÙŠüÓ’ôÚIþŸœü”|5ú…sBŽÏMedO&ÿNg°’$q&äàYשA Øuþ­(†@HÞV¦qûÃQyåï?>&_Ø@GKf¸0ÊZ E\¡¯¾±$ÿ3e­‚LÛá +°Ž:G(,æ fÔë‚Ë[MÆÜ]l¾n™ ±ô¨uEäÖÓì~0¿Rø÷š‡tö›»^¤S Pêþ–¿jÀòw¨£Wv6ä™ò!¦Ýé¬ +­Ðï‘1²nC22OÕœQµS ê³tyóžn”åG + óýµ¾Œ}=_÷Ž¨ÊóÎnŽW?^è‚2I·=>œÄÃ]ëL£¢‚‹-‹Í¬Iô®úq^ ͘´ EM +,|K93¼¬ðQÒbÖ¸Z×¹pu ÐÖòPÛ«%ÃFùj`(¡m-¦>¥ĸºtGT‹ïf• +ëb0UAã¤xð“>±¬|ïºz40 +—BŽèCGÒ¡ó Œº%"èânHè¯â¨#Ü•· diKs¿öýx‘²cî³"ÕÖHc öAå2Ÿ·¦áskÝ6¢.ab?ìÀCGZրݣêÞ~côc>U¤Ú”!«U ·ð…Îìæø‚ب ®Zl¡p;ÿ@6CñÖþá‘ÑžØOå.©a‰ÞˆRÙ&‹UÕ÷ìÕtºA’ó•²_Kã·Éfq +á(CŠÿ¿$gUà^½†«/¨—è"z ×RkÌf ÿž¦vPGÃyQ”}ƒiòî0Ïñ}ãÄ*‡Ïí+»z>³šnÓ ˜ˆy!2XÁŒô{”Z6’”ã0Ŭá‡Wë ZîxVêŽ*ü2'PÔ§ˆxh}·C}—«Bºû—²â•.†ÈŽ”ºp&…îj…Žÿ©×·ù—dãqŒõª×â'gº¶0ˆéù·!gzŒ”$Í…AÊ\/=Çj‘ÂëU˜EB·ÎÈÏm–/ºöðÄ §ÎÖy²]Â"Q²5Q.Žš_xÕ(çæº]ïnõ´R©Å{æj„Fæ.6Á‹SµÇå0&‹M…P!>æÞÉô>¾ú¾òÇ’Ü¡Q°Øá±A&%_¢ÆÍ¡¢°•¯ß ~æ›eài6œSËܯIƒ_1pº×$€$~á<À-’.Í/¦pY7jU‡Ëcd适™ÊM“Tj)9Z[æaì +ƒIjðŽÁàQЖÌ@é1¾°tªž2»ú6“Îh½e>}[ˆ’E»fagŸ~ùg¯$íP81lÎÑ_ÿŽh8é*îðµ5îCÑÕ,ý áUwF`‘àeүͿýå;;1"c%¢|PüPh\CMNñ½‹ Qn1:ü .«hÑ+±ÁUe‚w€5­¿Ï6e–õãÜKì0k‹º(@çs¤ìQ-rñ¹­DÉ%úÝ}òzz®®RüãÚÉ7ùušÌÑKfÉÒ ¶1óú(±Æ¾Hµ¹^PÁ(ÿó ôB'vhuŠ fgÀ›ó!ÓÆá±› ¬š>¡Ôgªã¦‰ZLºyå’ûM«SŒ({º’÷ÔCªE§‡]éûæ;ïþÇ&m±ûP†4 }:FkR‹{˜÷"¯KÅ ;\Çc¡‘/¤[ápUÝ)6)gÔsô‡ÔÁµ +„.Œ +wçøʘXóÔ¼Ï68…|%Ç;xõÃ_ðÝêÿò¼€jA÷ñw(¿šdŒÿ—BsÑŒð¼é’>„èú~è>‹­bÛ þûµa™‰5s8«Û÷èݯÿÃÐ>ןqˆ§ î!/‡ßÑÇjWKŸpDzÂ¥›Á™ùN=0óCÈ72K™¿¯0Ôër¦|]´*LÛí­Åø†Æxå\þÒ¨’ëü +üG:Æü—c{7&Lš3ÛÊP‡ÙàDúîfº$FV‰—ÒeŽ‘ü=…X`5 :cZ+ˆ2a ]ê.…D`©“KÊÇk^%÷ÂIh´MHžŸ—/F? A¸]bu¨\Ék)¹šT¾Ÿ¸@ú,³¡ÈØö®d[‹ñÏ¿ÐBí®‚, Hh«¤ÁŒª^Û¯ÏI±±*ˆ™qjT‘qûbx`J@̤HIæ{…¾€Û£;§qOÒ]ßûTe„7”xwy÷i”CåoQ.<èÈV¼ÓYx}½ +kLÞ‡1‡Ú†ÒÁµÒ'mȾ­ZzË\0©çž…Ë‹õ8FôXqàŽÕÝêTòt-1À¶ÝAºˆrz€†–&‚ +ß"iå/3 KÅKÓ¨÷å ÙŸ7bA-ÞÄ +œ¾Ë÷y“²#ĹÀWMN«ë¬]Jþ—ו¦ÀU *É;.Ï ‘ %wB©¡åy;h¢"1ӡ환%NÑ©p1ú ‚Œ‰ð@+VJ–ÅSƒ€).—¾&µ˜yš‘õ+¿p<l)Ùlw†ý¥?Ê̹”FfG•òµ ~r®#ßýÍ]%?£ÓöLh0R"1ƒY,”1ªÌì´¦ˆ`H+blb„›¶Uû¢—“Š<˜nÑ[s {åyA$ºÁÙNwtú•Œ&Bºˆ!L‹3e,DD12–r¿T5ˆ ÿ ¢Hù¬í{bLÔåëe/wyBQ~ªæíÉâÁÿOžQk6¥ÐðàÊüºñÂ$+æåB ^<‚HZ°~“ÓNp¼þ¬å#³j*µô¯gqWkM6z¥±½Ã·Ø2‰w¢õÙÖ8©”¡ùèýTèÚ|JÄÊÆ,ܱJÖŸUVzÅ%C/•Tü­R(x÷j‡‹Ø q?táÐhSÜõL陼æB\j äò¥Ei¥cB ßgŸb £š=e¨ÎáX2)ƒm ØÊ9 ý˜odšB°a%\“ìÙ¸Ü *sr“ê„7ìzóE±ë;~‡€ðPØÈÙ¨ê ѽ„Ð •Lù%*DCî̯Væªpdmô™›öÿo­Põû›B¬­6¨é9OsÉE‡Ríœ"(¶$@A.6'y[)GG¬˜`Ùšqè!ØùfGŒ—õÓ(OZEü2u[\îÓ澶-ËXu[é]’¼ËÉÄ…üe¡[þ£@×$@ù´¸zýJ&„ûäàŒíU, ͸ +Û«+û|äï¥íØø½ +¹ËF– +‘Ž6ždnú¨å‘§Ô[°E-x•þÔ»‘ïÙR¹,*[c—ŽPÇLCã 6'«ç»µûøÍ~ô8q!÷.ë:š¿÷©ÄkS´kúªn98@Ì?-±×Tùt¡B€Ô¬™Æ×Eš!3`yl& WAÁÑvïËØ8æª8 +˜Wç2¢4åCqMAÌa©Â·½qqYqfìžžœâÓö“õŸ¯„bۘDŽ5Ÿ(‰ZÊ$hÃߦ‘·m±­ÜÞ,Å·ð,ï]ªx¡óNõ8Û4 öøtè»G—= ØXv´Ògkñgc q¼ÜdfÜ%Mž› SG—øPïm©«É,,ÆÚÈî¯ÆåL ²åŽAvŠ¨9l1ð¤Hë€`™Cø⃗Æ!Tà¹!2RÅ9QN›õIuV;¯D\õ½ÖGCöhtAÀÚ†‡eS6ã ¤À[2ÆÑV$¨<¸oÄÚº®~ Òro1U>&=éþÓ³ö¸‡Ñ%<ÅìÊhh +Ð*8‰‚ƒeõ”NåakU±u%ãvH²EDÔÐÒŠ58ê‰võ"ȉª?H‚}Ù( 6Ö˜s[1O=xZ1ÁÏ[$Ñ'ÏÐ!Ö„¯„«W$†ê?ÒãضdsÇHˆ» \éfÖB–Ë6ÁEÌ%øXãKm'á:Nw;b%Ì÷šA5Q•¹ÑœyacP»)tLq=͘F.’ %O -¼Iˆhke¸ÏÌ!òw†™¬«ï(Lö<tÉÏl%"Én…Q´)ã4a +iw+ 2bgr8%#ÃnxTËG&yû«ñß1Ño¢•È0LäúewÕÈz¶ó3áÂî«Â +i„¡e9Y½o¥“÷ò÷'ºâ}zf *ê8!é¯ï6¹¶Ôï8S´("úÈ,7MXJ‰ªALìÎÃî©…ÎI1sëÚ6$)ϺÑøjbø¶ŽcÞZÉ͔զIG™'`þ#áÜ|ˆ5+…DÝ÷×bm6›iæ¹Û>‘]ÇÁ,2¹ÿ“Jó ÖàŠo5@|JK6!CõÉL&dxXñBÝ8À‚p9™j4¾ [ú™Ù‡èGtö´bú.Ô/ï _9"Å:Nªx ðèýùV¯ª)$›®ÕúÎÍÕ¥þ»tùV5è©çû4jô·°ðCYÈ­§ü·†Uçï-ÁÃi73)‚IF27¦øñsÓx¤ƒ:¤­ùqdAÃÙºXHzõÏlaV/Úõ·üDïû8š4&MÞ¬–ög¦V®1¡±Rü­¯„˜<éÍ8„Îí ì?Ðb¥ 6¸[êèZøŠ$ŸÛR ¨ÖvƒT-Á|âî0àV¿ ¿|Ð?Dµ£…7ê•Fê<Ǽ”i;zHèè­8Ùc,o“H_š‹³žK" oo%££&T€»ðT{ݱߎZ¼ï\Ù=øŽ`ì㬀:ŽÛzXÀî Ú ©›QDWn®*Ry£Ê£çW­^kDÑ!&™Ÿ§ÏÝp`|Oú*¾—W^¿k¸ˆWn\Ÿa^È0§AzÓk­@ñÚß66¢‹zOÈçË¢^ƒcb-!„zp$‰²Œö'he–÷WÅÁ}Êþ?'Ï˹Yp˜•2þ¡íÎü¸xþÌtÚÐßïD;9\”Äwè{d\’w¯ŒŒþª€*§VÒ•ä²³1Í }¥½÷¬FTîÂÑ/¿oôs€G‹Sú ÉþˆyI‚ˆzüÏÞxÄÙP¬OZãMŸAôÝ'FÚ·jf×zM†`7”U»˜µ‚ë*÷…0š†»@áW·ØòBÛßX€3Êo¹Ê•:c6˜‰Úø£÷R‘ôEÝÄ!Pÿܨ^F£θej]Ó¬¤!mð®=Ü¡ÙPàñ:4®ZIqõêvknåZUêûÓËšË]P$ÏT¶ËýÌØ%.‹þÔ3¡Óÿ‰8‰ƒå`®1ã!¡MxéRîíŠ ‰½š=ŸåN‹­ó#xPtâð#Ï&Tt·+i~®u“$Ž­zÝY(ê=ìÅÏ>T–q–ZÈ„›;ˆ[}ªp­ßa€~ô¿ Ë[pî‡ÖsŸ!c yÞ;àôÅ.e\éNhôéî]"óXˆRñ€‹‘’þ3å+w^Yë$àÍ­’÷a³a{›ÍÙcçFäSŽu1\ŽÁƒ,*ÛFD­ý6, ËeYÃÚÉ VOªñ~ÿ<‡Þ¹•5å0„Þ´Sc†YNr¹t¨E{óÖaœ°Šç,Å»:4 W ¿¦\…eXµÝ¿+ÆÖßWiæôÝ6çÇ :ÅŠ²ß£íÔ–ÁŒ‰tì˜ \1O|å³”åÄh”<“¢"­eøuÎ ß"¼¬¬k(Fî 9õ?ƒ?'y•Š‹xI“xCf&Ëó,»·èfö0ÆGû°Ã£¡^Ül‡5\_|‚*‰æõÑm 4ËIžÈd²3$)Éf˜ÕΦÔeÌžÁd<‰ùp3W¬KàNîmÊB˜‘' KÞ×<2†‘–§ÁxÓÑ3œJÜ‘j¦ôõþŠd-¢åOB$ìA9ÙáVtËÍÁ!- €¾/EJ}†ÐÏd¬[ÌyÚ{öÐÚH/ã8ÿqb³Žpí¦w?…àjù§¹Y¨Þ¨+?¯=Œ¡—ë²ôþÞˆ‡Fò›#¯N˜:îáznmy.!Ö‡¸ýA6q#Ïîà,Ænc+âžo +rCR²ß` +"h³ZSÏC×f'Öƒ|ë‰OÅJÑ¢Þ4qmպă0¼á×¹­‰ kÆFÅÏ›$y´çöýT÷ùÓJAê$碬¶e•’˜˜L||gBø|ÿ{Ý$·W“CÚ^UGè€!±ßÚ·‰¬ÐþZ/e‡ºj†³Î‰jž‡$,£:»©¼ê–CŒk¿)µÏ8SJc¸ ®¬ñãêŒzžÅÃëÓUM‘ùNðT§þû¬f»{¹·ÄK‰×ÏS‚?O~Ý¡8RÃR¾}Íó¦™Ô@‹“\aI:^·Àlââ†ÐyÛkH—@—¤Ý".,Ôÿ˜ÜyɉÌÀ†Ê©ûo!TïÚiâSPz8çC3öF.áÛÓJ¼·tÃà ^ ¾žâƒ3xv%¶£ ªn`ñ=Õ 7ˆ"¥^>hC2)+›qLvW¯ +g–ëZÏÙ­㦨̰ÀôÅBäƒ$é£@®Š‚ñvÉ…º&ÝvP²Š2o‹’ôát›8ã~v8ÙÍžc»d_MNö.¿lßÑvSÒÖ¥Û(ëﻺtÉW:HèëµàcÚ'l‰[“)ßUžä÷4–ýÒµ‹ G[^@Á^r\Åò‹¯ÑéLý:)®zpÌjm4ÕÝnx¡÷Ñ¢TúÙñ%²Y›Y¯COè…ĤșŠ ­b‚Øܤ!Ic=ô±¿Ä!Ä€ÎÉ?3¤—ÇÍZuv£ÞîàDI6ž!u±Ü¶ ÔM±?Çb5‰£zùp$EöÏìÜE¨Ùm{ƒ<燑 ˿ÆÔ摪‰œžoš¾.'W@/•|au‰û¨t’ ¯¸˜‰)muP#4ü«Ñ¹©Òß¬¤Á2ñðP|ˆZŸ9#^†.p×é40ïîôÊAÆ5&Íj|$mGô.1ˆ`Šò8Z@$9¨Õõ²Hà!Rá÷iŒ²Áƒ6©'ÎÎïÒ‰G¼»É1“tânkõnÌaÎô$¥Nb}*Ú@[œ´Ã“xB#Sí.ÿL?ôÀ˜öü¤'Ò¤S`©×‚vªŒz¹×Ö·#dº¯Øëf0Ì‹Káǯ—ʳc%ýÙñ¸ <á€dà!šl:ÀXKW0®m¦V—)-L%€½¦kRYMX Ùœ|,˜Àyž©.™B8ó¶ꄉï™çpî׊–Æ*ܾÛæô?ÞG.Q¡{åáQ&³;õ­ÕùÌ¿ 'öç!}·ˆƒî ¬ôo¹£/—܈í‚D-¯;)ø+lÊ”ÍÚ lT${Ñ‹zO‹Å”a¡NÚx¥¦¸R‹Ÿ+€G¤^»óá$:àÅÛ¿®ãÐå²Ñ‡ûj¶»}`˦zRÃa0› È—rmÆFbP¯4'ã#í´•š'0ç¨âô ™ ˆß¡š>Î:!C穤¯ýqG PjÑ]ŽÎ6yâROFË©éX¨m¶GºUß­tK®u‹GŽþ\»«Q8Öä«©:(vüIªe41“ù=ò9¡)’è`È™ÈxÂ|`ZÕxüŽ0«ÖϾöÉH©&û¹Éqáá å¾ü*@˜çp  7© Yy¦Bï͹xÝ¿¢™¶qß°Œ`ÁHšÂ»pÈÓHÇýÉj¶ÓÄX »DÕÿ±ÚÖ×µ`1’åéØE+yÿ88#¼‚Rõ}Å– •  û~ LÈ…"ðÿ¯´*¿nD<ÁNXºBŒØr%Çÿ(ýÍO¸˜ R ±¤ýd’úókðpEÖ+Úë€ÛHDòÆgæ$²MDí=?v(Í-Œ§¡±3¦‘¡=N½•­Ë÷rrËuH³aÒÎ ©¬!¨s¤¬»ä¾™Ww`'K´¢Ubúó“6‰¬Ò^ê*a%†~õ#ÂÖÏ'®(Q³ªp…AÄg8¡àÌÌ@@[k‹ÿ,2¢£ŽS“EôµkŽ>7 Ù¥\BŠîUIÓ¼£©”H0³L‡©.G³ ñ )œEæÛ<ŽžíMÝí ,£raá0‘ +]á¯XÊÃðmÑø?¥ FꛢcR9|=ÅZÍ•'ex‹WÃ4«-¼›rÃ×Å›o2•ÃkúƒÌ¸á[,÷þøÉœ)½1ᶪ¸Ÿ ³›¨ozqw‚÷¹¶à{]ü%ö ,pëˆÍç< ‰.>eë(ļydgÄQ‚£ý2=\bÙÉ8Z .xÙç««7­%M}ÈïÕ¯jÿãWvD ˜dçG¬¬…|D[ÜÕmh—ó|ø×çxðgúúàîjŽæ£»ùÁRLO+H©oâêå%ZF&Ÿ÷'ã`}ýŽ5+…DÝ÷×bm6›iæ¹Û>^­ÿWÂú¿5ÙðtÉŒm˜b°©‚ež†“D{ùýM§ë/µ‰ec@MÈH¸{q¸8‡B<ŽÀ•ïžB•hFÜ­ÓÔ÷½\‰÷éXµ„)ƃ1â…Ùªv‡(å£@—õßlä|÷Eä/ò9L{'\ðã}̳¦­=ßòõ|pI:ÿx8l¦ºsÛÔ>B¥ÇrÔÍ5)ٱģ Y—‡q¾]óÄ$&eT31ÚEŸÚ‘§ˆhÚñÈV+/YƤ(ã¨X¢–~E>¦¬š¦<&rïy|kVqÕ6Ò—í ¼uÍœ0éPÓÁÕ}g¼½ÄX´.ˆåHÒ.¢{aýl‰Ö[óNf4å0w kihxàŽ'…³œ¼_3bßÿ'QJC”z‰a â?¢]Ð$!:€‡ Žþ<ilì›­áÙxeøÂÙµ\KØ'{Ý.†‡¦¸Ô?ˆ>yK>鯊\Ñ +4~Ç9£Ÿ¿ðf+“² cUÝ$d¹íšïMejÏ¢jÃÅS]©6!W#u:$Ñ ÛN“ÆÔ•\Z?äžëoò‚[¶§oûÔöä½Ý‚AöŠ{ÊßË=$v>–òÃ…¹ùÃN‚ð.¸È¿Ÿ˜ÿß<.­ Õ­—å\¬ +åcVOÁìðåÈðš& üçÀ@ÑuKÀ‚·\ß•fšA•[,¼fp˜–ÖŸJìÒ~J%÷e¼µyTÄËZšBÆÏn Ø ly4D¥¢"ôš»#¼aï;³=Ä\d¤Qü§PsJo§]»„’yHN‰Le(“3Fªszˆ©É, ±K²Øz£•ïnŠj–pSäë—´€(^8Æ.þø–ox6®FWÌÉ Tú^|ÈܦBÏ天Jª¡SÐõõë<¼­èË +YXux›Ï—‹,#8 +4’ø~FšJ |Y&Ñ°låç iòB€EÍ`ž#Î7yb•·B O€»O÷y¶¤e²V²Ä;'âŽ%ãN6HDð¿¾PB`‰ìpq?QqLƒ\œ•Ö-€‰ä®{Fó;:‡=3󣬦‡û³ô*w»Ö‚;°‡í®ùZRE— &*TUrüÙöM**=`D“±ÂMYâ¦õ…XÊ'N@qxäæ¥?ê”Eûá*˜Ô›‰]¬yʃ?Üçv¬ŠõÓ©ÞˆÇÖ¸B7XmÔš)U¦tÆ Wtç~ÒNbõ¨]ËL¯•¾‚Ϫdà!ËSì2 +­lìÐdüõ¹Š ýóÞÈ­I3òš:ORB>¢EVp;'vnNŽ>6ùØK‹\qàëñ_4ýÙ»N’U–þMÚ“lÆ%¡[.ªê_1ؘ—‘%Ò¬4ŽÊH±Ñjw¤yeŸvhºD¶j„c®0…]8ªÐuɯü`b¬Žû9£ÅMÇ&Õ¯Š±}Ñ :ª~¼z¬é®•Ÿ{Âî#É£yý©÷¿¨Þ,ZíQ‰I>š`ÄÕ>ëD 6.V¿S³o0†ìr:x¡kÿ£°•|4ŠÎ¢G´ÊY +]wcÞ©u]k„ Áv©ôV—î‡úW¹ÍíÎ[åìò=°Oétw*"$ü;Êw–ß{Œ©´ÿŸçpK†é€–#ó㣮55RÆÖÒ¼ º·Ú–ž’™ó[&Þç>6 ¢F¦´#˜‰_•ÕöŒê -‹æÜÔž{b=i7fÞÞ‡5Öz®“ÃÔ˜§Ó¤- óy#tbci4Ýñ0-Î^èTH¥ÃÏYm}€%x¦¶ÙͺhŒ0A±:]øÄéT¶9[‡þXe7¢Jð„çTMŠvIB¬ÎÐ:w…؉5Júàþ€@¦À7à ¹`p»¢º„upÝ&œê9adœ ÏS(…¤•™ +œb1¡%™,hh2ÚzQ+$2%l@izɚϓ­g%sAâ8¯óÆM)¸Õ= §A‚þâ8ËÜT:XJâ+·;GýÑ5t‰…oå D+ëŠwù)Šu;C`øÞ~ºL%ƒ—Ím§bG T\æ¸ÜJŒ~7‘atðê© Ÿ„@ƒÏ•œ›œÇy‡½—š™qe™~Á-n‹ÜÒ?¬®%ÞÖéütÞñ*¯ã7š®†b{¡‚e(ƒ—‰¸äzaX ,Û[²‡®m¥×Y˜!»ªd ]’7ŽÚµiÃG^‚‡àQvĽž@Zÿã:¥3ú&Á*@šñ~nò1ìzÁ• A¸±Þ2>­¬GûÔ‘bl§q⶜åÊ«ªÓ§vvI™m²joX†¤6%Ʀw£}]ô>àþ6Þ_'¯VŒÁô,Û5ߨyO‘ÓTTÄ-æÿø¬†ƒÝbírq&ò6Ç]&…òý3N&`<vØÓ¼êì’XÕ«G“Ä M}Bg"Mu|ìõQ­ô³DÆ’dÌü.ŸE’b®±=“èD$h‘&Ÿ0þÖkÙ)‘Š)Pw†¦ÑdÂ:6›ûp¢ +J.Èã>rW•úrìi8(±ˆ¸¸P›š||”ŽnnJ mTpB”G‹LfJNŸ¡Uø®ÅBé„-yɘ—JÕ™Y~_§¬Ìã²Ð£”f€ßòá s›ÄÅlE'Þ‹1àõSþC†:T·ìFÁ Ç÷‘RÞÙW :py†¹s³ÍœZ[å‹YÀ ¸@==g~6ëˆôRõa“ÉÖÓW*ªÅZ@[ðô‚nid¡³É²Ø(D£šÿ_æ†UàÃv<Åøîaÿ$]á1êf° I“à©”L ´q‰¢°ÐD Ë„FߋПś•GB½²t+( +ï•ûI-_ï‘>xb!òijHèÞ¿9M’`챓öOîóœòßôž:š%Ig8ê:!zPÀ›QK~IÎf¡¶¹ rq›5It{²éãþ¼â‡“ÄD©‰†ž¸JHSuN‹Çf.>À›ÒíS©²Òv.P6)ÈÞø*CÖOFŒs¢N¢c|€ï É‘ÅÝÅqü³‹j‹i{‰tÎqÆY…¼0dbè­YÜãÿÇü–3BšÉYÜô%P"?6 +¾û}FrĘOð-Øe流Pz˜Aþ;,ÍÛdòÆ-†$áü¥Kµwô´Ò2¨ºj +eX¡è\kE*ÿ2(P†_?f Yä÷Æõž=ü}LO¯UáQßï‹Gä] J×ÒÊñwP—5zBuÜ9C$9<Ÿ–Šü3Úsu´ð´Òª-K°æ¦–Ô¢Ií×ó¶võ#Er¡q (àYܽ6Œ^!b’4˜„Þ.UÿòÖ×1Ä}`H‡ö½‚ͨžò=œ£þ:C…ëþyI¸CÕÜôœ³ÈÝ oXÛ¹›r"CPÉ]r¢vw2òž+6èÏÉ2¯-Ú(Ö1ÅY»Ìô(_ÔíùÃ2³Qiµà:m\5ëp = î‘YU&…xZòù^£°ˆªP²æãþQ‡Þ$ÝEèTÆd®S=”PºÛ†Lþ½|æÅïWké…¬xaÝW|œe×VÇSlaòU| …4ÐÊ’äT~ìïBÚxlb4û˜Û†˜ò”·Ú%+K«ï,aY3à$rçPq×ùÅ/æU2Û&p,Ü‚òÐÆç ðP€øz›`IMô ó”” N=Æ"(¡wÿ¾qŸmÒôBHÞf¶êÜÊj ÷+h²ÈM´A`¨+zx¶m×0% hRZ³œ‘Ö¡4A”Š¢ùÖ HÙ0`BžÜb=Ð,2=pd”M‰ë.l 0/¦àmµÆ‰ÛãsºŒœ ?ólˆª©½X_5aüX²X ƒÜbi«jMõq‰¤JWïügÏäß`£K°óÔoä/˜[Ï=”“­Ì³q}bÝG`ÚMÝ^°—³o¾¬©gLxê~!ÛqWS¡ÉñÍÆ7rÂú(‡Ro= +½((›F5‘|l.2@ÈgP#€'¹¸á)ã“—Yš­NåS“žîaïK7–öòWŸß}&gÅ +9ÐÆÎiîÞ% ÅŒ›5¶°"r2æþäaKÞ ù¨GI ‚î.ÚZ󆛾ßØ!cl§¿yµ¸À’^ȹp( >¬b …´ÀÆ7î)uv–Ãñ5©‰Õj*³Ä΃n™Þó*RPvZKI@.w»h!®9>xq<½QÈ©ÞáYkh£ÚÜþ _‡ûœScßjÞî©+±LkÅ)–6„ÜYåá?nWS yTHÄ& MÈ«*²=$OÛíà˜a5ê™™h¦Æ_¯¨@ô£“Ù¿Û›åÒM6îëC)¸Ú³SÉ"C.’9J•m© ,v"³e]*Õ×*X6ÊDŽžøù?®Û˜ÛÇþ¦ü L†ò˜M£¬D =¡Rnó]Y»—I€øÐG‰5ÅwªÎ&âU½Ÿ}9ôŽåØotÏéä<Âd2õ²=ˆë6¼.išìâŽo+87Î’»d<‡Ý”Ê+±…¼Ó|x ÷ž¯ «­~9oËÀZ mÅBûS-£k9àÄ•iºý¾d,–4p~AÚW+&T{¤t&+åÎ}(ç+ž”zÕ“´‹=Ð] +„¾oìæ +ÀÜéŒyãà5EÃÙX’UxR ðÂ]é¯Éò׃ ƒ°¸Ü§gl{ßâ4Å]ÓúŽkØ·™ShÍÐN⻦1¦\Ã(“TÑCÍžÜÑr8‘Ø´½Ç˳bíeqç¾1F…¡¶Êƈä]e;ÂŽ.{ñ:Êk;µNXrlè0Ž­y¦ù“š)³œÖ»$¦?ŠÓá»ì +bñøjù²¥³â¨ç­‰0ÉwzЫËtSK‰e«‡’{µì¡š·é9GB'süKb×f²WÛ.IG÷PP‹vßD0Ÿ=›¡mQÿîðKzõó‹!šÌ—Cãè€auLªcå&˜ +o•Á\tÚÆä(s% üDÜÊu/W€mpê» 5‡u„ŽŒ±¥ï_)CÚ¦'Ü‚ÇÏVé“rzË9ÈÕÇ ×ÁªáECápÑCyN/ãk¥¿éìˆç€ú•‡ÝÖ`9üßÎø»C‚1SæÂ=11!£ÇÆçš~Ęۺ‹4“ŸeãDù_‹(¾'Ëbß"* þ³‘¡x£Z%ˆ>ߊx¨a.]?a}°˜¸‰ŸË3Ø\”W2ë¹À·ŸhYÒçŸKOµ¸Ý$A‡U³@¶VÙä™d×ÁXV?ù¼À´Â­ãتI)4^NŪÂ×f¶pÚq+”s–Î&s}6ÿ1{H‚NC¢1&˜=~ ¡aÑĬ…ÁŠZ®é·$ð?1†]wô×OzR–?î~ f€X"Ëû2¨O«¼‰Õ/¹ê¡É•·Ñ ð÷;ƒÈ„>š0¹;n`ð!§ÒZæ?g¹±À.ÉhQ³³TºiÀ'Y.!í¤O$8²…·,ÈètßÞ,~õ³ÅB(ë¤ÒßT=š_ò5½Ý_$”œë‰©9Èk*çh¿osØãÈQÜ?1aLZ³õáŸ:9ìCæ‘ ÖN«çÃÆ+S8VöWWE^ŽH¦;ˆ†¾&R‚^ˆoJø¸‹¼ÙèssËnZ¢ãx˜e—mqâ-|2Ýj%AÈNݯg“ÚÝU©$…‚QC³êhk5ð-Ê¿R²l°mg®³Ç¡Ã½ß”ÌM¶Â.ÍõºH +èËÓ~©žaÌËÌ 91/#MMSÖL_A0§’Iöt_P–?Ž+4‰§å§lĦöú½:ΊÜE83ÎÑ$OÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:ukYµÐÊø¯âü÷ö×'´û?› +ågšª¬È« „Ë»)žÓQÍÌý2(|?òÀ¸#t+•Gº—²°â>šà›ßŽ«;0ÍO“0Nž µ]ÔØIt8³ªçú—CÝ 5üÛ¢¾ KtúA8ñ«|ºÕC?2à°‡¶˜ÊIâD¨§L‹9¦Ú8üøž¢¼üT»a-Û\¢–~E>¦¬š¦<&rïy|kVq×’z™Œ‹Žû©ök¾Î¡73{0rÄ‹v +¨á̆1ÜëÃ݃ԑ,oóZѨ!¶¾ËÍA*}j“¥|9â¿ +šé °/_Lz­F?òïò þÆ”..›ù£ZÐ +öO1PZ®ÉÓŒ$|!ð}ãLPþI÷Zê°8½0ëvA +ôT.rçdH¶Î*«%­¶¶²¯õ )I»Z½c„qï€C°-¥)—Ô:Úõ©A$«YÅ‚¶¶gn6gö¿a¿XO×ór)îÆRa,á¹tÊ{â@S jÊ"ZéEUåµY¿ g7ѳ钅»çlöó‚kævª9ùíKÎ5×pŸu#ä” ¥.˜>¿ÍDr”±ùnÔ¬[¯{ˆlÙõOïï›T +™¶hØÓη¿ëÞ +d}bJDZîÀ.ÿÔ~X] +ÝìO•Ã­g»A'X·Mt˜Äïå™Rh¯1ØQûJ"¨…(#‚ûTâ1z»aÙò‚g}ÐÙ£Ãx3kt¯‹™1¾ÀÄÏ‹Hu˜5ëbTþáR¸÷‰ú™ö´ñ•P£7äUÜ¿¯Ì„Ñë°«g+ÔZ„â’N䀣Š}Ë¿aíwiõÝ#aË“@ÅxíÛ^ +!ŒybT˜¯Ý¤Ròª<÷Ì("©ñ "kk5tf6H‚†*“ô6°µNáÎ2º’n4¨øÃ|£ŠAšÿ÷ßpe™+MVvEîM/Â1cJ6™†tøÍaSØ7À˜4"`Áœ~À8SÎ^¤Û¦r‰FÁ5¿§Z›d,)™ÏBN;ï­SA¨à¡›ër¼Ítê"æ@7ZœªREf}|•òÊ•™9 jÅ ÜÆÚG^$EÔg&¦ÔQ‹øQ ©òCaêLˆs1…âü[Ór ¯{.¿¸ØÐ5©êÔƉÑÅT¼s!†… >l:«–,¹áj$Í´óõpã±í„Bjø[66Ì࢓ù—J 7 ï4Kn‚:±Ô ²:ŒE[æïG¸å³¢™:µÐõ§Ü;㸅™›øÚ‡3R€·ÀÆrC²žXɸfVÅñȹŽ"PA:U4ø±Ä:‡7Ñ×0^sÒ£˜B—»QŠ‡DE2vœÞš–…obPÖ%þsÂÚ82 £q¥dÍÄàoTO Uö +ÍJ_ +¢yÆIa‹âÙ±á ì© fðŽívF±ò¹w“~p·!@i `Ù‡ÕïC' +_€£’yÅúÝb­ªE®ÖÛÎÆs¶»8ɯY” «V€¢n/`–>Œ³ñVÅ$á\~]ЄÙÃý²$Š­X=K>Ö¾.ð!‚)|Rb¬ªW‹ýƒØž`°½àd8ÎN.:ÈŸ–-"Ñôñ »Ë1‚^?ê;çQÝ8WbI¦‰I”¦ÿ@ì ïCÏäÀ\€Ãâ¹I¹=ÑJÄ +NB&õìÓÚêË&ê^ÉQÂ<ìT«îÉÐ"#H8ÐjJ"D“òò¡°Ñ?Ý÷æG®(² ½ž3^E¯4†à`v‹¥ê"‘SHÔ¸5ÿÐs(VVr¯äÒ`³ÅËÍÒâÁׂ"~‘eµ62p» tõ+”›A}»•ëÜp´3·A1µÉ5× éÞu@zéJÄ);Š}Y^ãùÇé°×‰î؇ôÇåâ`„XÈJ˼ñT*¤­sÔÝek\.ºM‚N{ƒ>ˆÐŸ"‘ú¦þŒLÍW§¨Éõ“â 7:œQÒÅû¥/ÙlVˆlzgRˆ!Œ¤‹Æˆû)œë0¨©•Ÿ7L&‘ÍTp-ò•’ë}4Á°<6¨PæÒò¾¾9#šÛG½+ †·P!n±ÓÙHå_àüFJ ->÷·÷dÂcM s x!…›±‘Õ3˜¢ma S®jZ˜›ÒëO!ËçuA£™F,– CS@#ÝÒZZÝ"À1¢&ˆ¾@ÑËüNÿßuá|¥šWº;r “Ð.>˜ª_ò2šÆAwVªØ š*2èô¯–’qÿRÙ¹žÿn*Ãh•À$”ñÑçýÐ2©9t-µ`As$àÇƨ>^£„tÆš:±Á)ñ+µK>¬œ3%ýô+븜œƸØØP þKø ˆ²Ùy/hû¹§–­ Bÿ‰¬„: @†Îø[$~j¥Œ{:eÙ E˜Þmòªß~@È“ÙBÁE Lü֥ƟïÂ[`äRp.,©QK„Ügj.Þ¶¯¯ôé'ÌцúÝ}z¿‘äyS~…BÅ™Ôæºdøý¾4„êÌ(º“5¥“da’<̓Ê’”3áòPLÜñ'E5šãâWàÕ¤ñù®ŽÆ[q‚½H­1EûjU[Ç&cœ~ý98U:ê¶Æý °â›ûâ5b5-c° æNW@$#¿ZTe¿BÉõÝE;88YÔ ›ÝæRJx7&4 Ÿ"ñn@J6—Ãhäàš![ä‰õâ%Å컿Ë}^Ü÷ßßG¹}‰ÜîG* ]…¶Ûe_dÙ#Ü°3Q–ÄõQw (Çüz3ö-?ä¦=Ið+oûÔãr³¸^Á¶µ9“&̯Núç ʪ´ÿÑ„ÿËîEÒˆ»Ž:²¨0â©t„8þòCx:1›/ÿfO¼á§°eÇÇzŠçöjꮕR¥ö)ÌÅš„ÝåÕÿ™]ëU  SÖ$}zÈ£îoþˆLúH5âÐaà†Ò{AÉQn°ZŽ¨¥½1âýJOǨû"³ÓA½´gð›úÓ^NUo¿ÁtӕйD* Ê TîJá_&§0Jš—°ä—úÜ¢ž¡1Ô‚™ ¶L dÒÑ=wsö­ñ$_àq—™¬1¨»NWrŒÊÞ n ©Íçeæ€GKŸ—“uñÚÖØ1БÀȯ¨ý\@û"„/æF¢Ÿ7|>ÐáR5³²Ä34A—tg 5&†v|§Q@3z Õs9\ËnÏy¤vÇŒŽÁDÞ_”ûºÃæßv¢jŠˆÄ`Fuês„ó9ŽI@Jüá›C]? ‡8¶ê<^A£ææêçf];ÑŒ§[LÀb*µJâ„ïAÿ.\”\=PPxesQŽ‰0û•ˆ3 xc1pŠðØ‚9#Φøzž4%÷A.’ %O -¼Iˆhke¸ÏÌ!÷yâËì¦Âçà¦ýÀÑZi¹›6Bò°T%=÷êñNÔÞ[ˆO§¯?\é¸m¹ùÁˆÿœ;§:Š…ˆz{':`Õe¤ϽgÌ|gu¡·¶¾ª|ù/Ü47\A ûŠÆɆeÍ~ø€ù’)ªÙ˜È‚¹URÅ!QƒåûQ`[ªyHÖå|×à0*?’:ìy/4Å©îJ(ƒ„ž|Ï5^O,MoU]¬šmÂcö=UÖBL^FÃР: +´ØË)Í#>Þƒ¦Ã £1„Ö”‚õuω®ô'Ènþ¦úNUûÍ]€´±%½+Œ?ov ‚E¡­ŸPŽ0BkCî÷UDëv•%ú}€´§Ø §lã û¥ ëâ¾(ýŽmåX"DH'Gs… ùðÍp'@ïÁ;mûÃÒ…¤™2ò\ ÆS7?.9R’¶^ue¬Zð&ïDsŒb»¢Æ­1 ÔKŸÓéèϼ0 +Ú€¼3…nÒ›š´1”Ÿÿ] ïÊÎgÝ‚Ñ¡Ò—Ñ—>a%ÿ€^ÓŒvõµñZÝ%óø¥3\7!o¿Ë{á%Uƒx.…b 8€£ÁŽÄP=?U£7DtñÔ¾rqüôN×çˆíÐC,—·Ï{¯˜3ÍJ™rºê£¬üæ qâùã­°pS:q‹òYº Òá“‚Ìßû%æo·d½ sýÌ{oôÜHÞ„z¤È¥béH\$è›ø |Ú÷Ù9ü}RCú¿|«ÑnBÆ +3ÀãC»D™aó 4Ñ“1wåêÚŠñv‘¯ãÊ{XoŒBjqߨÎÛãß|>²‹A’x$Ô÷Œ9ðDíjð<¤E“þoÆþéŽkųÅ’±Æm1JšJýèz²î]¯@3ð9Æ!M(‚ú•Dƒ˜ŸKójrMAHI¶=AŸKE»‡'ÌR\]•y-¦¿n «UüþŽ²ÖÏk¹5 WÙôÏÜLþøÒ°Ê.({í“ß×Í°ÀÔç¤`û!e0ª†Á 4mŸË,¢x+A…xb.j3Ëy¶tn…nÙTãªÙúA–bÙZWš¾Vfz›uÈKs²ÉõÝE;88YÔ ›ÝæRK9ü=ÛÎ@`hKðbCëI¼F‚[ƒ¡)šÀ¹i­Ò^¿wÛÃø£‹ÀbU:ÚÈuªVW ä¥X« ©0W—2èfm_hy…פœ~éÐH¾¬ +Ì¥-úøYÁ.ùëšÕ„“ZXgivÝÒ¶áý@–ýÊÅ› * §e/í±C‘ >4‘uˆ”¡lSPG‘0¶\ñ@QM}ë©›ñ“Ðb-£Ö%SËž³§GJï|wïý »‹³KQÉ´®z62j[K]²mÕ¶Êö>¶wÂY›ª&–Ýð 'Ùáª-œ‰ ñ¼ü˜ðð58ZI¥ÉÙ ö.6ô± }l1TêÉî$Ü_Ùßßñ¥¾ÎÇÐUªØÈ\a–Ü(lôÄ£º¯ÁËs IN*·wõ˜*öýT¸Ác“˜³Ò¬$À5f]ÙŽ&`l±£¨Åz‚KMP¹ë óÐJ;”i˜‚m“%צ‹ U6åVî!}îuˆNô¹ÀbΣqÄ|Р±4*±ØÍqLJMIÙt± oj^¢ð2 6¯%K:ï:»lå'›úO=»§Õ FN?)z,Â>´—St:™„ï6%M`w*íÊ€ #FšçêoÁÀ+_Ä®øÑ6IÂPGÕ£|Æ™™L§”# +UeêH‚Mž¬ ³Ž;þpn§[ÿ¤¤³QÌt¬¸²³ H(R¦‡‘ÚÿY™¨ ¢jF”@ÇZK¨nK)Kú×%ðÁ»ki'üÔÚ"•$ §ƒØ4¶îÌwÑc„~cÓɪA-T»ì-ݾ®I?íÓûîfgí¦¯$Ïî+˜óÛfD†Så6£Ø“†áCQR6¯êÔÏ6¦ä«V~Aþ¯ª_9&š¾šœÈˆi5ý÷²£±|dV¨oùÇ+Y«û©ê‹Ìdo97$!_S_é‘’†öWLŠwE¹«§Ùøû¢)¸uL“•˜•(~Éçt—3Œã ­áÅ¿íH60¿·1e)f{Û+y¦É{T¸¿è*m?è”æSa% R/Ź¹€×[6Îñò;•Œ%û‚Z\ýÙ¬ˆ<ÐzžÌg^j ¾Í¯óÝЪ«¨¶¾a ÏûÞŒÂE8Ñ"ÇS2Xh÷ßÒ“=_  »E«_vI°2sEÛÕPôÓ¨_ë àŸ@‹o°@€óÞˆÃej}•Zèž ¬”nü-¬¢sÆ®ù¥åðFtî:&jþ-é‡qÚ¦ÈhtsÀFq g”ÖêÑpŠîCñ o÷Û­8Єl%YvZ£{¡ÑÂÙûní0 +^©D0yK¯xYUŒyŒpÈx¢9*„ !^µsÇx[…ñ¶vxØãÈQÜ?1aLZ³õáŸ:9á«56{MØvrv_ÛÀ&àDª’N[ÁÜáú$9󯘛Ù˳¾ð‚eó×gñR!iæ L¿Xnf'µ–‹[ÆÀ׃¦ÈžÔºÀÅ ÝïRñ!™n$ƒéÄò#< @ö¯†¾—øÚ¨2n±¢´Q/j µæ$;(þhP3ÇáØ-Õ(ÍØÅ 3às!H­6=@üuë?”ýó§0u|˜!í5©H€܃L?%ZN:ÙžND‡œ•F§ÇºÞ+Yµº·Æ"ùt£×âžjÿ¤4·wÚqt(*µ]z–óî Ðþü‡Íä{„Øôò×ñu£è‚Áö¶à $¶Á.YÿÿqÛD²€G•£ßô<½$ðÄe{Óp*„ê7U–‚óÓ1v|ê/¸JZÌIOÉ Y!Ó·ì±öAk2WT<ËûUŽù—A‚•ëÇŠÔ@j ³ÖÁÆC* ´\4lCµó%—»ŒÒ¿cÚÚežqñÑеé$ÎoÑ}1ô‡¡øgܤ~önƒ+¶5-ÛuBlÏ<_YªµbXjr3F³ÖñßL0F*)WPg…¸ ­QeoرlHoÑI_–B`mæ]˜zñ ¹cŽ,àn›z;’Eñ;\¡Ñi>0ó$j5Íg¿„¡û©û¾$‹^æ.Hc =`h)e$¹¤—Ÿ¦ÿbE<]`QË&ôŸÎ‘SØc°WV`´ [u‰(³lå»J;Þù Ïó€åwþ´ÆŠD‚Lç,i©+G¦]1 „)ƒ „ßž Ï0‡{à g$*'|gùcjNí ¢ø7¹;Ñ%¯ìµß´±d=¤Ü4¡{cŒgÔzéæâlÁ'à'·ÖÝH3LY,k$ 1Ä~ÞÔ…§¶jOf;`§|^1j*=¥Ý•iÒ_˜›¨$¶‚³õnHͽæò%us1ÀXÚ8‚5^³¨¹ü¹©„R§6¤•>ÀmIeí¦r“îE„ú —ãÅ< ¤@¼­'[Õ}祠Ÿ˜Ô¥ØãIƒ/4>æ(«Ô„:ëo¤Ý”+L§òK  9'ìQܬµ$±bŒ0Øff4{lS²›„GõþˆZ‘od½Gû9Jᚤ¸y2—Њw³Ø=Lã£Òw|G¿¿q| +endstream +endobj +2273 0 obj << -/Type /FontDescriptor -/FontName /TWMFXI+LMMono9-Regular -/Flags 4 -/FontBBox [-451 -318 734 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle 0 -/StemV 74 -/XHeight 431 -/CharSet (/D/E/I/K/N/P/S/T/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2251 0 R +/Length1 2854 +/Length2 29958 +/Length3 0 +/Length 32812 >> -% 2254 0 obj +stream +%!PS-AdobeFont-1.0: LMMono10-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 +%%EndComments +FontDirectory/LMMono10-Regular known{/LMMono10-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +17 dict begin +/FontInfo 9 dict dup begin +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono10-Regular)readonly def +/FamilyName(LMMono10)readonly def +/Weight(Normal)readonly def +/isFixedPitch true def +/ItalicAngle 0 def +/UnderlinePosition -167 def +/UnderlineThickness 69 def +end readonly def +/FontName /XKYJEW+LMMono10-Regular def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +dup 97 /a put +dup 38 /ampersand put +dup 126 /asciitilde put +dup 42 /asterisk put +dup 98 /b put +dup 92 /backslash put +dup 91 /bracketleft put +dup 93 /bracketright put +dup 99 /c put +dup 58 /colon put +dup 44 /comma put +dup 100 /d put +dup 101 /e put +dup 56 /eight put +dup 61 /equal put +dup 102 /f put +dup 52 /four put +dup 103 /g put +dup 104 /h put +dup 45 /hyphen put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 57 /nine put +dup 111 /o put +dup 49 /one put +dup 112 /p put +dup 40 /parenleft put +dup 41 /parenright put +dup 37 /percent put +dup 46 /period put +dup 43 /plus put +dup 113 /q put +dup 39 /quotesingle put +dup 114 /r put +dup 115 /s put +dup 54 /six put +dup 47 /slash put +dup 116 /t put +dup 51 /three put +dup 50 /two put +dup 117 /u put +dup 95 /underscore put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 48 /zero put +readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-451 -316 731 1016}readonly def +currentdict end +currentfile eexec +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ßZ4 +œ3<¥¯@žRî¥bš¨[‹ž£s¢Šilk˜Ð`LØ®_/É{ªS”µ&ÚQµR`øSZC^鶃?í\j!m,©Á€jêk3\Ð<‡Ë5](¯R¿•_4šÉÂQŸ¿†j|À«64Cÿ¤ƒŸ¯AÆt7Ò1[ CŒ-#‡Î×€°È—(¿PüÔNžƒú³GF¸©a|‚säpa¶³¨m6&bê» ß4NaŸaéמY÷ñ.Í!Õ +ª>\•¿rénóÜÙ±M0/¬ÞT*fáv×XòA္í Ý-wúÙrÒËOœ± +BÊæg(JCÅèIøÛÄeP•ð9Ûçúæz»‘ÖÿêÿgþVƒ¬"ÒÊzow$ïá¼È1¨¡Ç=ÄVèXqmû¤°­XNþ…¦kžMv!:´ÐäP3Œw¦€V?¤Zõd dCBß»ø1sŠ ¨VžÃA‹µ¥rÛXUÉ«l݈“œ>©ÐÚáç>è;¥…‡íÞFý4ǤàõΪÉÔMYŒ©]±ºôW‚ &R`92.:ªÄBàBä:ÏÇ? Ò‰ªs%D7ùΚð’Õ©vã(Oá+ÝÛÊ}šÓ8Ÿ©<Ð:ŽÖUy±ky€ +ºïeýJÍ&^VÂ-ó/gvDgPgç Õ²,ÍA·¬*-äˆ7püS˜¦+zZxU×)\<äQ˜AÆÙ6Z›*G@†„áó ç²n‰Z·' pÓEøŠT¶ Úô”pܹÍÅ9´Hò]Ycð}’vÃefP×m›£m¦˜õ¶ ¾q|?TC[OÝzÏ¡;^3¦Øщ!'ÔXÒ³S‹|cª"¢2ÑóÛÇ¢ +ó|!èf±´Lý¦8QR«Ž•j¿’Ï'òÌj([ûI’Š¡¯ŒÿMÃæ¤TY[Òèyg˜½Ÿ±gÈGq—yÞ 6¸_Pa²Ì™MAïêªZ*Aãú¾$ÎIòs-{¥ÍŠ‘ÀhI6ž—;‡tf€Mj©€A{7bfÅ…¶ó±{#ÂkByÃ{Šiˆih>¯ÈóA»DŸf}Ù…¶Ûe_dÙ#Þ=Ÿ"ƒRõþ£X¿LØv¡Lëë3ÑBòæjªŽ@ûÏÉâ=$edèKpëÔÈèwwFü b|3 e™òà\`æRït?!ËðdøkbÖ;À^m;·p¯›Zt~¿ –ÈUhçm4­]M1OÌS‰„íÇ ›n$£âzIÎŒé“ÿ5 ô 6Ȥ—šˆZ +J¢oø4ŽÆ!‰´"—†ŠÒĈkâ:¡ƒ=*RÁŸ†•©~z¸ ú˜Ù·ÐÛýéBÊp`³¶,€6ñ`CÜÆ»·¦ç®øËÇÿ›jÓ¼œ€â˜ød’³Aƒýãw¨è¿‚í¢/Ê'NŬWÀ#—¶?¢"b€º-DHÔ­K‰¶}ôÒÊVš^þ…âM”tàOÒÂe/ ž y_Šêòû4ïs z\¢ù×ÌgÏðPníƒî@ÍÝww˜yý7u ãçQ‡ÎÓÚ•6è W¦ð.ßCÅë *šIŠ;²…%E–E§Þ|±oš$AÑ¡6¬ÑÉx + ò_©iš”hA%£„ø¿fóGîm¹TaY\™8X!f=;ìbÊÓÀ'’ËD¢ %ŽÖq”«éÛ-yÜ<¼þ4šígþ¶Y>ì¼™q“¾À·•Zsr뇙ž”»Rø{MWíJ¶@®t¸Ù$䎎ê{«~ùÒ>Ä.KsM\Z §pæ5™B’_à„ã:Yg‚`ÌŒ ’ÎùÒ«qă.S+F – B¼¶³… ©,דÀcYhwRÙ>·ŒO,˜“+ŸfúûK}Ä|Р±4*1:½Ïç/´ +¯ôÔ¦sºI,ìPá>¤ ž¨+‚ðÀ¸p1#û!  º'¹ 4ÐwäîíPÁ9Ë1HGPA,;²€âÿûGºûù' Å N\T4×21Šç‘íÇGò«9£þf&ÑK/‘}ß#XF»ôù¦ðDÌÄ–«qÌD߬ïIA¸åYŽý”%A[OuDT¬¿DÜô–hÛ°dL„·æ•|*SSv\x›æé„î±tù-ÊP<ÿüåÌðA (w·`P°wJbÞ?o¯Ì·<T§®C#oèÂIäÁm¤?ÌÖ§µ"qöŒnáDUÿ¼WXÿ ‘» ¶âBÍ벑‹“é¹Z™ÇÄ÷óL°ºªù:ÙC[S"~ÐVïæˆ3*5÷Ž˜#«TŒ+îÏù äÿVVqÏ®¬Ä>c ¶×•Ð™•Ú2h©ƒ Ÿ›¨©¶Ôk‘cþµ¬KÄ@›š—Ì«¥ÇaHˆ0®Çì:핤>ðÉÃ’½ +RS”.+¸szàÌ%^ëdsOÓînË?‹YSy šê¶n÷ZÍ!_¡^)LB†[ÏT“PË£ºì¿xþÌtÚÐßïD;9\”Äwè{d\—z(f„D>¦ýlS²ÏïW¤ ¨à­¡å"©Ÿº™”+Ølä´oõÆ›«Ê|‘MD}ºæD¬Z›ö +xÍš;nâæg§žK4"ƒÇ3=Ï÷©ˆnóížáÓ´¤~¦ãfׄ§z‚6²û?«&«»¦¾ÝƒZü,XB%ZmËÜ•»2䨉 ss[¸`†:OˆSÔÎOb_WAÚ7âš•„ìv´kïÃÉ€ù¶…ªØw<™Ü@Å;°ð¦Œ|IÁ(Pd‚!·íŠ*V?hÁÂðo0¯¥Wy¦€.&-ðúÀíÜqú~G2—ž&KmàÎòÿS€€hÝÑÁJ~ܵ„ýxMœßÿ‚m£—ÇÐßmˆ­Äÿi|\Êí'] A׿ц؊¸}¾Ÿ)® Ÿ¹œ$2Ù`%ä–¬úTŸ  QÔ¾¶ Ÿµó‰h‡ðÛ ” Õá +_çNdŸP!É¥*„GžôìÎ9µfñá—4y¼Ê×+çø¨ý3Nb¦ª¨|K‹ 1z™hxºy„¼ðV©Ó‹:ï±Y,P¦ãÖ#„ùìÁg›eÁ׳¦ 'éû‹ 6³³E¯6) +—;ÚusWÕ`v'Ü“©oaÓVM Dé¸ßÚ‚ÓxL‚Ö…‡ÿá­ž³€ÅÂïæȃ†á„fÆ ê ÃÄÝs'3h«‰ jýäXòŒˆbK|ÑþÌäФò5ÙbV8ˆ¿¦·¿ùêµæè^{Ç5¾²ñ{.çz%qù;LÙëX<uZ1AHƒÂœhÃ&5ƒ\¤¨ŒÉà]{$úÜ+-2d`&º9.êð•Ï¾Ë ÿ/f=B’ »UmÕºJŽCεĽ¥ “ô“õRx‹E%¥ oMs®‚ª›HMo‹fÑPYü¢k½zŽPAÿzæ}¿Ô­}|EtððQW]=1C/]L¼1 ̶ŸPbn«ªé?UªAÙ‡ nÒŽ&Gm×úlI,ĨûS›}Û„A7«5èbÎË—aÔý5ÇaR¬2DÓ¼¡ÉÑP྄á”CXz8ÀRº ÝlT£jI§}©!'83Jýÿ• +í1æ]€H³ƒì$ +â×léĈz`DÞy÷;Àð¼¢mWÛ/ZP³ØâÏÿïf_ŽÉÅw†m’‡š¯/ðSÁ7Ÿ@?œ*É™êõѧƒ‡Ã,#‚ [öq j°—íå¾›—oÊÿL½†1@rW.•Scj‘5/o8cÄ(k/”ÜݶPÂ÷ƒYMæ9÷‡Àc†féE‹*¤`È»™²6ž’2íÏ¥* +VÙckb8x»¡¿ fª €R”ZÄ1ïÃáA' .ÃͳÈ~™-æÞKÉO£\Ái¯Öœ„¡é[;¤î.Õ@ÎÔÆ⯂«¿Yçටû¤÷âË'Užœ7.u¯äêùÍWY uñÕ?þÜKWwÎþ“ª¾kÄž°aô* ÙÕ›pÏ e`öG°~iJò Ÿž|n_GüÎœ>sÜän‚¿¬5iY¸2ÿ9c$ôÖdL.É pµs1³}yll×'c&ÝWLU +£†L­/äÀ9÷A·ÔücðeòxÛ!t’H݉Œ càÖµpeW¸1“J¾m=Ì6·b™PežPµW[.¸~þ ðƒ0†ØÕŸ`ëå€&ý§€– l ¸yÔ\åIs5Å=ö°Š(J)£r„J¹—U…/¼n›!4-æµãã„g¢©5 Òo.¸©_KŽÉØÐÙh.­3⦞ðYuLÌûíuÁ5}N£Þo¼Ðüõ;L@{ü=x0 ZåçÍLPªd–÷¹²èJÞ$—+ˆB–ª·ú2weU±`ê+Aûw3¼ÑÓë¿‚ÄOå.W¯HÖtÏ‹ž¶“ùËÇ–C€®óš³—AëvGŒ &Ã’"2ûmÕÅáó ³¾uénqÙ»¢½ÇZf˜73¶Ò±¨S[½=*9¼qôùl<­Rã üh–âô¸@Ôû—†ç‚²((Í_É™,¹ÇÎTåþа¾òµÆF1†qB°¥y”IHWÊšN´ RR¹Z_L[–ÚaÅ_m|ZßiL8ƒ»)”‚j”É +D-ï ¶œÐÜÕDd5Ï"¨¬‹Æàxijt0¯ˆ£øQ2Ú%ZN:ÙžGã•dw8† JÚöñƒ¼V“–OA‡þΪϡ‘‡ ¬®Œý6<á<¨™ ÍÝtÖ5R¦¼—‹e̶è¼ýÛ«ª KsË.N¼÷„ÅáÙÉãßm +·÷Ñú!(0:¿eG]½ò%|оn=k¶¶ÁN¾ñÒ™¡gÛrD,Ç]+eóî~Š¡ùF§{ê!Xßj@yÙ+P~Ýíí Mgv”:2HW/¨pF[pƒâè؆Ù??Ec6¼Ãø­ÑbÞ¢g}FÔx®+k­z­K³½+´ýÈç©Ôj …&¾ß&ñqÅôÈq¬×Í2|²E/fÜÁ@>©L›–Ì¢ ¶õ˜Ú×ÈöÓ¤Û÷bIëG³Ü©øÞ~(ø~69Б’/ÉдÜqÜ §€Ð3y~åt¡[š$+Õã4 N ÷í«)(C,‰œYÆß×à‰¦ÃðÁ‚>xYÖŒß Ü~†áºb¾]H/¿ËVŠC¯ìŸóZÿÈá5ð¾ÿ7n‚VýG®kòý4¡À÷æO›ï|[}@u6Ï[Ö‚¾`æŽT–”—oÞRuÜÌÎ.ŸÍ~»v¶)-Í*ïTßFa ’ö,\)»mðê˜Üg?¸v4ºû‘:‡2ÕϯpáÖCxLÊ_÷ƒó)Ä3¹]Æ’…£&Y-c}É÷ ½ÉÄ¥Œ+ì™èéf¯3ãûɨʴªv½ŒÚð¸c›ÕÒÇU*õA[6lÜú‘8çÆä±Ìf_K†7f¢A@ǯŒ=Ä”EÅþ¦÷ +@õ<@œbmnÒV›<´ý²§%ÍsÎ,fa‡ÝÎÑ:7: BµpxãotÐ0(”IZµŸE®ýÔmËŒû–àÔ8ŠÈOk&ŒŒ/Ân|/6Âû²0>_Á• í…ÑÍÁ"M³-¥Z¶my +eC,]OF¨è‘èÅ­0?ß´Xõ;Â-ŽÁÄ×ÇÂí…´föLRð² Ú»…ÒDRà†9L·{eO¨Æúá7« +êEêÀÞ•¢$$ž/‚(ìÔ4ìÍÚÓG²cfM}—Ï&ZNÖ¥¹·+·ÇÂ;{ƒÝ%.Iv_7|Q¨ÿ9*‚"DõU Ýâú”Š·ó¥=ݼ®0¶)k–LV¡»Òœ¶b˜œ®ßcàÖµpeW¸1“J¾m=Ì6·g†Ñ!C èz¦Á ƒ²š®©–ú’®ú€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆBy®+k­z­K³½+´ýÈç©×Šè,(PL¡ì ?F{3©¡ÞûsF'ÔÅ´%실Y ÓU\.K¶—û²2H{žf›ÃÜ,«—ôvÌ|ÜãÛ]ß“½l¯ª¥c¶¥›dx'¼o¼,<×Íïñ—ÒêÉÈB>û?:-,®y:‚ +%»-“ê7#¾Øܦ-vÅ;x¢‹Ä4¯L“¤”k°Mɺ¯¢2ï×ä=ê_°Nu3Ô°ëisèº[·6S… ì-í°û¦‰o ºæ‡¯îsñÓií?ŒNî¡&¡ žò.O% Ò4€€E¢44ƒ¯Uò  ©1Œ Èj<¶õH¯6ô!›Ï.¢)çb-Ò·ý&yЄqkFGìÍó£èËJ¹‰òÝÄcÝo„Ú¹cõ!1OR+ÏM—;n¥ÿDü%Ûè§ÛÑŠ‹ž‚loøA•Gß/7DPî~&ôcýfúÕaf¨øUaßHÚÄÅÛZ*¦°ЮMfä³D‘L¿ö„ßa%$øV¤ÃU8Ά͛²2V˜´8àdT¢ (‘{Ä–Öª*©Ÿ/ÙÄ•|z¼,Ëá-©Pp:ÃR˜=oˆ†‚ï;i0>#vNš]¾d ©……Ú*JùÞZPF²_XZÂÁ˲Ø{ýÿvÝ`i5À™RdXµo‹LÌj¸yf- -/Åx^ìç iòB€EÍ`ž#Î7yb•±«yuûa3X•ôb&´Úðšþ']Y`‚ê;5™ƒ®øcf8oàœSïuôù7Ë3¥q“ t§\Ø»sM- WÞÕ CU5<6 † _p8D ºE?tÐîŒ V™ëÂHºªø_‚€âÛmHÆ/È"ötø{Œd>â·ëòèð\4ZOø(?qëÆt¶¾X>14FO^mD.}‹X +` +ÖÍô#\’˜ï¨Q¹ZOÍhá9¡S Ò æu¯ /ÖQÁu§èKÿ±Ù>\¡Xí|›ùaXFî6n1ð÷MinU°‹g*Ú§,6ª9x‚ŸÝ÷‡X' wTw²:¶/KÇŸoš•½Û .µs+·t½:wðŸ¯\ ¶¤>òY‹s½S-ôÙ¯¼@‘x®b€“ƒl| ‰¡º¢Dg²í°£CpqÔ…½òùÑàviübu¥´‚íÆÛ… yÇ•°Ç£ žØn™ì½P€õ‡÷ˆÓ‹v;›6ʪÒÿ­ÞÛ#Èó#Ybã(‡ŠR˜©¬Ëß8=JУü¨4Ä.fxňCjiudZh½@'œ”ûûçV ¡ÁAù)Òž¯D ¨ µGDå¡¡\¦vï@ð±ý“kcWµdùŒ°‘·Q¥D©I¹æèËÉêªÝÎ6yd·±iªg>·‚âuí¿àξw 1Õ[¿Ú ‹ 9êðÛè׶bÌRt òø„„áIJþ!¡– §ÔÒ슎üÈOX0–ÖVÉy,áGÂéÕ½4•íR*7±MwCÙuèt¥Ð5_ ÝJ¥Y) +Ó;¥Uâ/´hœ˜ž´œ{ϼ¤( Ê{ +v6^m„á¾Þ{»,²qN7¯ËvÁã»aÛŠiALnܽuTZs.€'mÇzþý¬Ý„3†šÏ7[U¸lš +Æ_š¸tìþà™³?Ä€v–7JJH¬¢ô,›–<#ZY¼„¹¶¢Ø{…ò9𤻔ôBn]'5¦Ò„DDØ “ûH+$ôñi€U€ôëÿ‡¹*@@ùõ¦UˆÔ›¡­M@è%‚‹Û¦|©ˆ›1ª‹b?9þ–jÁ!NM£-*ÅSEø50⹶Oü]}¸_TJGV-‡“‰mFCœtÇæoÆþ(|Çoïý:XDý©¢Ù.ËÌ—pÐ&(×Êá#MM®‰ ¿$š!à‹’ éúŽãea:ÿŒ2¸"LHå½À"”Íщn>-ƒA‘+‘âÈp³:Y¶WÙ +·ŒiYñ®Tâ§GÔTU bŒ~ë]An#GŠÕl†\ô‡9—jµ¬/¡*oäEx'ëc[ûm\ŒfÃÑ„pL†4:É%‚C˜Â“zò±î¥ˆ2Ý|õÁâ‘g:ã Ú·6)¡Ü×ÀX­ M[æÊüÇÐOCAˆºBÓiz>(Q{ HRÅ3úT(’!cëìÖ¥jØ;Nŧ&6ÔitÞWp›M­5WÓä8ñ’¯Ê*ïÙ—­!ÅV7m!ûpm&%+‚Ê— ©ˆ€Â±‹²*wáÕêÁzŒ.Ó{ŸK⨚×-Ò¿‹Æ³Jܳ‡ÞpÇ(ò<Ú1akÿû³©¶*w0lT1H¯³.Ü×Hͺ¯ãァØúQ ZÞˆûòÖ¹Oäê:›Û([íƒ RPo—®åüw‡ 埭Qú°­ZÁ¦´Á–Lëƒ ¥&Mkd7w® T‚‰yH°V¨fyr’¬p#ÌÉ´uø’øh‚<Å]HYÀ‘HRŸºW£‘c1ˆ€{W›¶ ÈöœÙ㶭鷘Ö[ÄvâJO²Ž«n/„7³„â=iË1+B(%®—æ8å9Ñâ--F0Cwà–!!g­â+W(õù±æ‰Ù¬,riaŒ¹§,F=Ô')Ã|AÛsGÑkœBV˜_æÛuüï›°÷Fe¤_ ¯!4á’bUýF¬hx„£T} 8•ߧr$7H÷ —R›œD•¡öq5B˜ÍÃD“f-s6¦ÊìÛ]a—˜”Uy*dRwv>b¢x”µ¹7ú­4:aÿ7|_]pƒˆ³EÌÛéée,qª2qÕq£ñ:iª£9ã‚ë/¥å°UæbbX¢BÍq§öá4¬ácÅQ ›Yqà><ßÆÓË^Ø3â¢ì¢ÀÂ꿱VÜ…®©DA¯ƒ\…¼0dbè­YÜãÿÇü–3BšÎF•miII³µáÜ!~Š‘Ñ7ŒAº¸´umõP’»ÍÏy£‰}>ÃfÞú¤ v=Y½u(r`àúà“x\:Æᛎ«Pä]îOÍ,¸A^N8Uô™[Š%{>¹[ýJ’VLßß·>í‰7‘Z°Wí,Y›B:Å$ò1?3˜´’8pÑ6k]Ò:ñ; @}âàÆ»y‘ËneM6N5‚†åw<3dÏq^cFŒ°,=1Þ^g·ouuüµÖSÚÑJ‚0ÖÏú7ÿbGV¯øñ +,`1 ý×ØÍs²²¨ +·¹$ñ¾«Ÿ`Ú,@ï—æ“Ûñïš+4m™ÝµDµ•JØÌ„×Ò^åý¹¥_óŽåV²³ÅGo°övÕ'⾧uKôLì°9¸o´t×.ŸÞC¤¯x´!Æ~Q®jDÑ´½Wɇòb‹±ÊLXljôøÒ²Ò¸;óÏRvFûÐVÝÐÂœ’ÃɃ,ƒi‰ÈðÑU¬&Ë™­ãïð!1“éeÇÚqc°– +2Ö’d©œýºê8¸: #ÃmrëÙ” ¼êu1köHÃÔeá,ÓaÝH’\¢&¾aø†–fÅ8&®H€QãkžWk˜3nWÃy9@ñ~y{!‰«o¢ë$êAßd>Á¤"$Ë燡¯óà„<³2J¢œ+Rº(íØ»'w{H)Ìa,öwñíÇ9e†Ö¨!,`µÁ)×ÆBùœÖF8k;Ðe× ó¶tz4µ,M6@Ê:6#8£²ú­ã6‰¹QŽ;ã? ucMö%{vµá©®å›ëÃáÐÕ©2±¬ÂWBKùèõÕÛ×»2ùvâ®FŠ4ø'‚‘œÍ°îocc¾ïŠIåÀB©5È>"‡Þ¡Û( ·œ´[0Œ¹ê¾ÑMâ2œ;'µú»¬Hð6dêÎ×:ìʾ¢*0CUD‰ž›Àælu]p½^+ðÝ޲̿šæœ–¨¾§næ²VjöT©ÇÃKìôŒÙrlò¤Cà}=/æë3 +Sœ©]îuk#„rZ‡ÌÂ_¹!.ÖÖr¯•]½ic¿B{y!J¨çï8ÅýÅ>·fʈÁ‰(ûͨ,‹ñX–§±ƒFÍ~€í2²Š*f‚ŒL«~os¬ Ȭòïja`¼”zêÖÙg Ù–ªŸäÔ&Š?Ûøñ­Ó"l_}å‘j^Eq#l°^%À¶î(UÓ3Ì5‹£…s¹š«é)u-ZŠÁÍR³7GÒ…ó„‹¹ýÑ/1Àd£Ä°Fe $ ›^˜ÊZR pzŠ+.õ1¢øo«”ëÖµ%·XÀæ¡Ð”(lŒ ë KmbÚÿ”ŸWjV!Û³V"¼®§1ËD}ý`ùF¦`ÚÏrºqTgVnþ(ßç)Šßw‰C1í%¿iUá= ´ÙÊÊ„g% ñÚ—¨ƒÛî÷]š˜iÑa-X'm|óÎüà—{h»ï´¼Äss6ê×3Í'DRëàv¸ú¬õÚ0µ©s>ºÑQ$ÄÍ¿sEu#·!²¹ÀÆÈ@^Õ³1 ¦0Gè‚êørÈ}5 •ŸÖåŇØduKwM¹ÍÂÛÞ¯4dsÄñš ™¹@׳±Ñ¢îüz‰øîgü†¨jMåÅ‘˜õGÊàÀ¥qŽÆÙ‚Âl–C“’Wq”¾ÙqÇ##’$§UMwÊÓÿŠôøÍ;'|(œ†HWÁBÉÔý*.è¶=f9oŠéß ø4?àÅì].¹Z7Ôlƒ˜£t¼BŹ<Ũ0µÅÕísò÷ÑYÄ[(hwDzjáeŠUä+üJžüq“]í\WÏ‘ª/w`uMŽÎ£4î&rVr lä±ÿÊd¾L:ÉQñ"½ÕÇ$Ë€#5ø0¡ŒS¾Ó’äA™gàÕi[Ž/Së=§ò9:ÐQÖ€…­!É‚ÇÞT—°šZePÚìs_Žü@—6¦´yÓ_¥‘£Ì»é{Pü"–Fe¼&ïdù| TzÒX¬wͼ–cnª¶vç$ÈD¿¥ÿήž—fG2kcÔ7èNÜapr’åŦêüì»á6`Õ69òÕ™”.:&ÆtdæÒÎ? ~#Å,ç½V}§ñìdø…^€öÑŠ½Eÿg4pÝÁö9íx·ASt­W[*äÓáVÖy~WÆ ±æÕ¸(Œ§çú,i JF9vY…o“OSB`÷½Yj&uÁý¸äKþ î[vî>“*p- $rÉ…w­m`‰\(’`èx¬äöU6$ §ÖïYwî±…Ôâ®æ<¢WãÀ͖҆óbÅ«¾„×¥¸):RNB(2—äó–F ÜÈqE¹ÃÃÅÎ"ÔµÞ¡x†²ÏÞÍ|›æ·Ål˜­…ûv$õäŒö¤áDû3mó[Ô³"‰÷þŒf¦¨-}u`ÑÎ)a vi?¼b¥LKðbì_Jƒ®0¥Tê ÀâüèPaœÚK¬úJ•‰‘çŸS¢4óÜ.Ò«ú?aGxë¶)SµoŽýO¢ ¦&kš•,ªîýªÜâÔ/¯Nkc“4:ÝÈN…#ì^s®Îcxxx!„‹C¤Ö±ºìÃÚŽ¢Wck_A»©ÒT”žX…/Á,m┵›á5¨•úe«cd6® å§sS‚<Æ~6rjð¯Ùë«swn{&Š†^;¡Ì?ZÃyƒ_\¼£¡9ö '§âA/BÔƒx“Ò¿ ÏMm7À.©ÆàýÉ© +Iß,S—U +£2³4ƒ%Ân ôt ýuö¥:¥ ˆF¾arâ^|¸*VY/'ü'ñÔ_ô»Àáb1€~&‚ÝÒ‰ksÁdÃ-»½ Îó=Ô/‘#)âËã÷ÁDžOlŠçÖzî›éÍEì4$ +jËùÂÞf™,ôÚ³6ŠdÉ«Zv…Äfè—–rúÉjÈâFº†q½Þƒ¼bKàÿÓ‰"Í¥Lx’ùL1»õZlC‡'™F³­ªDèª}|\ýò…šty.á° à7åKn¾JrQDØ”–v”`œ“ ªö„Ž:rßк„D)½;Yv:ã9!Ú]?.D„ØŒï@Î1<‡T¸XÐZ¡³­r5…Dk×9 +°ã9'΄T2WLš[fÚ­ +” ù©ceº¦.% QáÏ&!)dÛ.ÑÏóé'…h„ÃÄÂþàP©“Ù«Âe£žä¤”¼ÞàuùJçÓ’à’wûN?ÐöÊà+¢9‹öâOmÌò×"xB1êlò‰‚¤G +qVþJ>pËd7ÁŠoæ3AЙ³‘Õ†b–¥drIˆxcb&¬4­¡Y{+#Ag¹ë=¯5ç•¢Ó!“Ü.åªìmþ,†t÷Øÿeܶ»ß—Ò»w@§Pžs“•Ð€ßŠx–ŸóÀ…bÞ@ºï3Üq÷G{†:ÇæÌÓÒrÅ€!3©Åáhè¶ HÁ "’;ÞöAˆ¿–(EßòÁÆÁIÁsÇ(-¼€rñ^˜Ë¯’{Â8"„ŽÅõÕ\¡“Õ<5I“¥U ÙÞ(B* ¼ÅÿŒb¸”àw Té•~dƒ=f¯‹]r]!õ1!€ÁØcòFÂý¾n(ùTòž°þww}¿þøb̔΀OªÈiŠçFpVÌò Ü×ZCüóftÿÚ¤âNx¡Ž(QÓ®ŒÿwÀÈÂþÿAèá¿~œ°/.F—kQNIk´ìŒpƒMÈ‘ðiÕ((UŸ¯ ©0Ô`ÀåV94¤ ‘…FV¯¦Ãê†&~žD³KõŒ‚ +ËýÇåóõÅÕvm‰ÒÚ µ»3M[2÷NpÛ1,)‹ë ñ2©©sÊR©¾…¸L¸2x/Å°²+pÎúW6a¹ªƒ®+‘ÀÆå‡æ2G˜lò™!âzŽe¹ör/™ žÑtÛÑ LV€ìJ‰z>b¢x”µEñãx[ÿâ޻㨬…4¿l´K&CïddL_ۢʪN&çBU7?J[Îþ/ çÆPt©Ÿ¡5ìÇAS:\Æâ5¶<ïL‹¢’“·êhr¥Â£«piÉÆ'Ä£ ‚3N|v‡éo—Œk+%™Ã°lyq謇È5ðžË¯Þ(z2áùj7Í̓ˆUÞíP˜¬Y0T[cªžÒo&kѲ=pci ž1Æ‚àÙ£»¯ÚY*o6a ñÀ‹õÆÈ·0$}‰4]QÅ=";s{~-z…ë‘QJ€øç"og ‰pX+“ŽØÚ1ºî¾sŸú2TP‰…nT³C3ßI 1(+úåŠëX±$r¯"ùÉ™îÔr²Â¸[`¦±>:9X»ÊQå°6m¿mY+{ ÉÌ2¢·¼ËrÖâÝxŒE±q›€04-GûÉÇ‘|qé›xºÁ†Þ.øHD³ß꙳DYç¿‚­Yý6nw_+߯‰ãpWÞ Å²y›Jkb©É»ÏÀ'<>–¡rc¹ð6›fºläA–í“Vç%ücUÕÝœÿ!ºégñ8›¬ùï§IahP²wP—>QaÝÕ¥Çhx˜ +¸HÂØ 'r°]¦=ÁZZk¯íÙÊô^%Ù£s§ú."ãy%®ÆÈv¨´ÀˆCkåx +95]!JYe«¿™[À¯B–¢7åpÖ뻺é†×“Ê@=ÓépŠL3\A| 3ëT·¢µ%'Ö?=„Ïn¹×aÖ”áGÇÑþpñËÆGD"FË'@V¯j!Ϫ;Ù?çhŠôeþ|(D¿ƒ.MTˆ ¯&JD1ˆCíh·õù¸+Ë-‚äëkÁÒc£÷žÈAëg–n›oOÝÿbè+ËãÔªÿJe;¥HLÆÂ߇ðñǘ‚Ö—…à€tô`'¸4é°9l•ÀE’z™ªAdSÞ|fÕÓGz•ÂI€>cÝœ–ø[.¯š@R±£‚ª.¢Dð Ýθe M.ö¢Z'HR¿E0à» ÆÏ[s +¦eèúåÏ–ìñH¨¡è»!/":ÙÖÙ-ÞK ¦¿C`þ¤dýéà¶öô’øÓª·â’Ž‡D=oàipŠ‚O³ N;7q v'—g®#1—ç'ÜEé(p…¢«qx;¤ß§{t«÷Z¬ ì‡ìxòº[~e¨Ë¯$ó+N1*GYGÅ~›6äÕrß²ò…;(DÃóÀÀû1XkELÏÞ0c&Áyëòd»ÕŒš¿œÜåDTøë2¦š"ÌžC9.K^ô:’Ž«´gGHø3O—%ôìÆñS3¦y+K¿•Ñß8]¹Ï€šÐ“]m,±€=†­‰-™0v}æÊVÆYn7¨} Åh•K.ý.¿•Ù¢¤HÙæV\½™EÚË0 +QÊaözÊ"±ã‡ó6óPú]ÑÎ6ÎUa-5f~­r[- Pò^Ïô3[Å. ˜Ãjy¤±XeTc˜9lÇåNëqó²ÖÇÝþýæC˜翴r晪?çé+xýk²*¼àÏáÃ1¯pß.‡"« Þ ˆU 0˜Åo³+ËÀ¿ Ž3WÀðXëÓ}®g¾âÄ+r•Ÿ{©Yò}Z;llÀü-’X”ù½™qŠœ³sþ>I ú\ÞŒÚàÏñ2ÃÏ3©¿Â…‡`XufI¤è°"c•ŒØzqðÈç„a-¼ð¼×šÉ2šÙ?HWÁ‰„Š;áú×)›.Õbª•LªmæÆS#?žÍº~îw³Ñ~íëŒeë|<±pNLO?ÁJ©éˆ«º²0Îøø¾ÌÃ_â‹~ÎnÑÐRþL¼ˆTTjÀå×Ód¾TærWÉîùyŒYØ1uô CjlfÓ_Û³•lF_E¹¯Ÿ”(ãi^rÆK<.ò;á¨axEçëCÔˆW…ÔÑð}Ý7<µzB&p¢• í˜ÉS(?£ËÖºY¡¬+¬ñWê=j›ì-™ö0…Ùh(ô!UöÈÁÈP¼COrŸy4Ë¢;Z¥¶Üõ±m% ÛžÒñ]<ë º!D¶îgÁLÜgç°³aŽìñ~ãzbg­ËFÕó Ê5Eºägë´eP2ÿ;6¥Ê÷™j. ÍÀ7XuÒ¢ (ÈÎÍ2„Ș #Æ$cèçWwÖ#1 ¸wo ±  Óo•·˜|1oòçaüº­d/5\ÀŽù²°96#lôÈ£W+÷¬|ýr…u`-ëþé>㤻8ÝÒî”g¼ÈÝnæâcÆ!ÜÓíÞPns´ã–úìcur?´ b]t(ƒnAI²×hÎRiÄD›¶L^äÎÏÒúõwA|5+: ±Ž+­Å§"(Û‰Es¤rã!Õ  +ˆ)î›ÖÖ}fÀî–²fÎ*o¤]‚y:«ÆC”LvRÀ|jÕ€Ý@õFÌ¥ù8DU›?QfÛP >EäoúßÒʤU›Œ˜x¹cDPï?æ8ÌKŽi6nC:‰˜S #ˆ®oÿPý$Ø~†½IØ»~E»gdøˆLÀ»ûû¶üå—Ãò)Õp+mÆ©Ô85¡/BDë2Ê+˜­¢¿‚Òà¨`šŠ™ýÔSWy`+Žé; ø·ÚÇ]‰ŒP~ùæ•ëyQçqËçßQÔfŽH)Hê­x•xm™åuÅ,Š],CLÝ»¡ƒUí>nOdv—IƒZëåˆhtòÖ#r8ãò»¥ò*ã.W/fBê•CÝo@4ƶR Nž_pI–¯;rÏ_²áË8áRh>gÒÏœWŸ^pºLUÀ{‹•¡ùVñLJ” ð‡mÿ^zÈCµÍ‘¶{î~\â‹åIy&Ÿsð>‘£kÚèër&Uç$ýå8Ëž•FD©9yáýº4ÅakÜ:byàéÆ "ú…é¥+Vî~'7{y‹.òÅ)j¿ÿ‹%¨Un5d¡ÍìñO\¥ºûÓúŸm4¥œ†ðVœörÝÓZ§¢ÊKUqA?üî)0%lR$íå"d°ÉÜbîc4¹‘šÖï/ÓŠ ¿NíÖߺºv#*iòär€œv’]UÆÇIDí!ôî!Â10>J\Ý•Åiœìw}9ç W¹„ìR=ä¾Âí¼}ÁÑ—ƒ}ÇɤEÜž§y°ˆú â횦)'íO²Ôxw.¦æn8nyBšI)·Ä*"¢&Œ¿Dë›ë_øTåláuÕÙ!­ìL1¥È¹ÕÈ rkÔñ }Á"„å¡=á­c"°Ž‚æ½òŸ%BÂ6ãnËÝóÆÜ’oäÀëþ“l¥Y¼,Žê¶õ-ò2ÊùÄ{d´pÆ·ZÌhdã=¿cGU´.ãŽi¡Ù(ù²Îþ ¨|tù.`!ÁמÍšLnSë£ÙŽÐä”fÞè‡ç£¨¾ì„¹’ÔZ&€ºÆ4—Å“É(±+xÒ¿h/è7—K¤¨UƨÍóQýi~”®õm7ÔŽiû>˜5—NT9“è€$‘x‰]"ºFà¤Ôm[îU#ßû`&ÅÔŽå@C3ZBþ'ñ£ÅŒDŠ¥S…•XpfÐcˆ.™‹ÜCQR®Üü˜o1£KÆ„£!VCKÌ*'óCv6i›_HYÑ=$§‚ÀÔ«„ff3Hº‰ñ«»8Ä„ÅN¶¨;Ĉõø†ãÅ}‡OåÇÄõlup¼ÜÓ_³"ëÌrƤ}Ä+T–MÅ0N{%9³A]_F|2n3$Œµ&1©Ã¹¨Ø|9fuewã“Ã}ÍÃѱ‚¬Øg} +z¤¨ð7Wü|ë}–Z°O|¨4¶?nï+QæƒT|ùÊwU9åòœ¼„‘=è×~SÚÎݬì +©„~ÌX¼ r1ˆ˜E'³¶Í¦Ž"žË†onÃ÷X±%Åu¦ÕUö ±‹XgØ~ǯÛSODGÀ5«zS†Xèú5™A¶lÐ0HÀ5÷ÀÅÇ34's+)boC¼(s +°×ÕSò"£°Ö½ÄrÓi3—O¬Ñ`×Î'¶§M^TßL¢/Ór³ØYƒÕ¯ g¡GP«„„µ, †Óåihë^²Òðüo SÐWèH߇…µí ×t°i7l~–¦‘$ñ"e—±LêïP|–“öf£ïG˜Tpi0Þ¸"ê˪ZÆx L‹/8CèŠà nZKäÜHcI Ïãì#ÿÇÁ_ÚWy;l´iÜqÃH‡QéÚ–”rCéq¬w7ôs*ƒ®´ðÓ/ÅÞ~Œ~2žR__L™•,@Ž(qØš03¡1øb*vŽ©YdblÚ},%§‹‰ˆošÜNã³O6IXØÞYæ{£¶#) ¶¡uùh¨u=:ƒTiV—>t£önq%³Õ¯DšÞYžÖ.O_(reÄbÅø@7"›÷8Ó›Œ`_¬ƒÉ%ˆ*FË{𕽙YÚµ¡¶r<àô­”Êó0iÖ( 5Ý¿íä9Üðň»PIÊ´Ñ‹ù³óà„/ßγWbz¾uc“i*c!jµj†îä†æ×ÝÐåŒø+ °Ê´&<·SÏ/í°€•k½ªŒSu«i±wH ¯D24@þ¹KùQ¹ðy"=²m¡ ¹+UR6Èy¥ò²ù/9+öúã„2ú Déµyœ$äNAÿ$ÍÓ;ÊDdÿ 6-A{ú¥ä1þƒ³µMjôm ‘a‡>šý4ÚòÚ±gØ}Ëê.‰>æž‚<~K=‰.,2z.àˆˆ1Ÿ!Nb_ ÍBH±]>¢7éÍ w°ZÁØ”½ì‡»–ÔìµL¹ç…À‡—«Eyщ> vS…Á">ö×ôÜñe(va߬ÏGŠ¶qLF*K(îã›÷b,0%u îN¹Ó±âɈÂ|xÖ­ËÅ8Ï·¨ÕlÞÏfýà½eªÓÕLRN6i96O@ßI)Ž5#©$ŠŽººï‰è,¦YYÇ3û%Ÿ'öŸz2ét„j¿¯ÒF½ÝóÃ^MìE—Y×ÓW_oüƲ”–ZŒ,:|ŽE¯€±~ .ärÎÒ’ôí bGAQ]”¢È)r”3¬ÝjYjkýCoQWï ¯7>œìªÿNMkÉH²wÒ YÐý—\ÒK©­Ù¿L¼6QN¼CX¬Û‹ó.Kð\nº£»ùÁRLO-úü6 Ïɺ*!; prц؆Û`¬^¨9>QµXíÚÜQ|e,þ$·/Òó¯ g}&w§½…ž%Ý}»\ïü|‚ɘÑ6¡;ÂWu^¤Öv®Oj0ºS¯‘åe÷ǯC{ŠÔòõ©^Í»Jõ6b!߈ó!¾Ý<á|Å%KTËé ãÐt·çTÄw¾t5²´•y¤ÑV–T®gŠ]ÜìDÌuyèɳÉtº={Å·ÙÛ " ®7ZñK7îðËM·œäsû€A¨s‰ƒ2¿¥hü˜é¤Å[¨® RŠuUaDë0¹ Žà +ÔÆM¡_èkL51ÿ%Šgµ  Js‘?³3,e‘œ…S/Goƒ®\í´e©ÕuðÖ¨GVh'e¯D$NÜyê +Êà@—mY\}±)À¨:{ÔÈ‘p3~X´Ÿ |5Ƶ´{±g6: +JMuÇ^” J&Üše†Ü¡Uzı42Ôm„ÑqNÆÿ+Aá +ÕuÝ,ë´iÔ 9§!•¹±—:}ÙSR¿2ë‡ÜsFý%ÚPŽ‘²î>€Ôà’رTøNmô=¾ø²#q&+E w lËßÁî÷¡ swGjGtYØ‹uH‹ï„áŽÁ|2ëá˧¿'–?ø#—¯ƒ(†IŸ™´Š’ó|4¥]£[÷„Ú 7Ç@ƒ›Wz!ÝÐ÷1³!TŽ)V~è•!¤ ´˜—8øuåAåõñðùÉÎH·zÑK¼(?%Ø¡ˆB+^Œo'Æ4 Í ?ìðúH¤NýÍ;t5°j½Š!uð2a†]ħۭ Ö¢gŸŠ7de×)I[œ-HÚj2¢wÁÀ~dþ¨.êP4¸á á΃y20·¶§ÕõØÕÐUƒD’¦]œdBc3ÈA{‹ÒìÅÐÛ®È_PÕÍ2aS"G¨W ‚6¬ƒ  ‰žáÑYì[xEv-þ7¾ñþò2ȤoïËõ‰¼ ôº¤ÕÙeVjôB?âM&%æFÎrX„x¿”p•Õ'ó¸Ö4qëõs–‰7)y ¸‘€ciý@#×q`’|ÿ•MêØäëÍo˜§ç>¦•Ø] 5£¯§ ÿ¸=\´y-n4¿ç„ ¯qåcVåh¬Êº~å6 ‰g»uêzÚ‘L +t.¨m¶,?.?3’z[79ê€Ýe¦?Ò 8à,qÈsŠÿDsm¸wIѶó—A=ùl²!àþ¸Ð*]VMY²?#˜®\/d„‹+á«e÷mˆœÔ{^š¿¶¬1åMظs÷eYÇaЫ1ÞØ™~*)Gg±B(2—äõ 8GÏŒ²1(aq7ݘâjsº”—DYÔ)kÃ¥„ac¯/ðSÁ7ŸD€#¬v¡óC»>aÏMÏÏØ}pj0‚|§BcnN/“± +o%¦]à¿/¶Û€ äùÇã늒îŸrê¿ÁÜ4É÷H4Ü4Î{!XéyOö‘ÏéGÎ\šQZÀ®*T©œ¥: E·31Ooá›dù¡É¾ªøÈÔVvjN=”>“çhâ!¾¥*2BC¶åÂØLůώ·yL€øÈêîŽÁy¾‡cüß RC‰›ô—KªJê2~óÚªé2¯qHm€¹ÔârÑU­TÞê‚b¶¨bÓGSŒKV<ùŠHY €‰èû;é^ø•†TUœÖÓ ³6¤è:²ífyv/Öƒ[mH¬¦. {‘k+õŠcYaq¤­°Ü-(£”w‘n$ÙœwÔH¬²Õûç~çŒõàµòjâçùÈèÄùñò®;•`Éß_æšs‡=“Ñ{_E£X§¡bgžR… +)*ÏÓeÈM‘Jq‡ÓXO×p19Ë9Á¿}—YÐ!:o6`|Ç!Ö¸¤SÐè&-\ľ!ýˆ©2|6 ؈E$‘{uau…“–S&5¹ŒP¡V„ù¼ÇšÖÛrUcY¨¶¿`Jýº¢hž™èú€™<(6ûY=§ÁÛÁ‹Ë‹¸FÁBÔ©K?Æó¥Fqª3vÌ),É# òƒ¶᪫};°ùÜ|ã­%ïcHã²Cø’Ä•š Ù¥/€Šgwšº…£Ø!ó%¨MÙÊú ®¯ +’}\}Üà=̲)ÄFxD=ïv1dbƸz6¨ÐRÒäz—%è2ùÅ/Yý½è‘Säá¼0bTË$U(Ë¿¤(»64Àe¤wxƒ•D¢âÑGØcgCRWcƒp±azuŒ¸ôž¥’ZáõqÒÔÈîID:ìÒºÍUµ1•] Ýt†9ÚÙù¿»î“¿+Îò5î9ÖÃÂì9ÜqO‰G›·‰\æó¦Ï‘2 ý û•s‚t„gC\ ì{¼ä´/7 d-¡tl)4JñüqRÌ †S^ŠjÑ,•ã^HùO—‘d'=N†Ž³†i¬¥wÝZ³¡”‚Ö”"ÒN´¤¨ýµ˜ä¶¶ +PUT?µ™àP[ÑVœÁ±ŠÓo2­2°W˜ þ"á&bWÚ¯ëÖz°ØMxÌ–DéÌŒ&:ПR~¬Oäë¶ûïƒøE; _äög! ¬·ù þwV‚5¡“õÓLõþR}5R•ÙVë›z“•IÙa9e˜dßö&Ìñ¢£b&gl\6©2‰Ûv[Qp2C|6Ð$Ì,>OrÿC†{¶"ãnNùPÒ‚%ÎFþ° ™@ù$× ¸¶Î*˜g°Û×X†§:¤][÷\JzœtÖ¢)¿æ¶¥+(àèõ*UNýÖruÃŒ¤ôaÆî‰nÈ…´;6ÌëŠËSl‚7íÂâÂI!’1ƒHrÜ{Aøh`Ý¡€ Ð~¸Ô˜Ö¶þR¥‹«hræδ!þp—±NJ[iÁouGˆ¶³ÃÂwmMÞ!ÇŒ\²ÆDÚ°&*I—‡Ð™¦`¶vbý=7|»ú3‡þ%ÏïCR’qJI*þ!Rü³‚j¬ôH›èÿ æ +ÿ„Ô_™F(Úåö߇O;èǹ +ŒDŒ;lB»Ç;q´KÖ¦µuÿ@¶ƒ™—Ïè_µ[V¬øäè­ûûÜ{K‡péb2'ŒI%s›£Ûã1Á!ù䤗{žùÁUÓ$È3¡®ôuJGU34n+Xa¯Võ‡4:¶¬åõMQ +Áqe@æZ.)G•z©¦3óŽ ×閺̱V†ÍºîöæC #T][™MýÞ\8³„YÒ ÌÁÁ‘Œ–½/þ` í4Dy¨a\/5:TîdÍ·i­`CNò‚BFÍK|u’u.¸c&;ýÏL±!Si¡ +o€§œ! ÂŸÀöí<çZ´àÁê Ön…Üešê–7V|ø/qŽ·ó¾±•êGÚQáèßYçÜ êÈuJâž®ZÈvÀÂhU•“üXÌç)lµÊÂGÝÉ6YýÎë‚ÎÖMùŒÈ@lXÿ XȆÒ€P=zyhq`.Ú1#7¾d*OèmË°i +À£”ëžòGõíóÎGï#qzÃ:”©K±¢œ¾fÕ*cqO}Ø…~öZô04yc.\µ¨V1¡ +ÐçD@Õs`Ñ1í‹”âüVMéœD|5ß×é¹lÝog•ÆOŬá‡Wë Zîr|Ë×/ݪ´`™{®Íäg +M.UÔ±8àž·Ò0Öî MüÐQTNìêC¯Ðp!l0ÀÎtº[X 6êÝ´O×Sis&õ +µNòÖ̲oà^1õâŽ[¬è „O~qð0ƒ»‰óó$Ý­e¼„HÉ7K#W]©¤3¡ŠA'Ês2åš*~2ò8’U°IR¹°Ýí1‹É©È©è×±¡Ö¿‰ÔÉ=¥…Ý/¥L ^a?t{ö£kŒ(´~¥¸ñ=È»!×¾2Ä‘x&Dˆ+l¾¿öGq +ôªuÃë]&LöF‘Ÿ>t‡™Ôœ0a*™2ñq,±¼ â á|CR;0̦Biª‘ +©ë–} 8,É’Ç”áv8v kþ²¹±fRÊ«6öZÄDΓ\º´1—5DœÂ«|Ÿe³.£:Ki‘»a*“ˆãLóšËKŒ"ëh€~°—Ä™mJê¬ëÞ=eêO6ÄÌÕç(Êx&¯$Ÿ”°»½Èù]Üÿð9Õàñzyv–eÇA~).÷™Ú‹\xb•uDèHD ~ܽýÓ{SÒE=Û‘ÝÂñg¸óƒB/“Û! i»jèœEP{á±dÁÒO³òè@‡ý/ÕG ˜#\ËBVv^ÌÌ´„½gÏ#ôôî:.¹‹ë\!PV“ý8 Bðw§_ÍÞå"³D_ ®i±‡övÍ/眊0ùÜÚ}ɤE…A5ÞÂ?6Ù©Rå.^iG‹ŒdY+Ή† +lºŠ±Ë2©îwA+žFçùË!‹á¶p묹Èwñ,û1ÚÛb­àf41`35 +¡?„tÃ"Þk¼ˆe•bÂA¢ñÏÖt-NÈ÷¿æŠ'Öå“‹˜µ/‘ô5ÍDu ,8OÜ/ôµÔ³½y6OEÝžT²±Ã¡%—RuäÓ“õó–ö{ŠÏCœ«þêÊHE?w옒¦;´­Á•3€{ÔÁÏÒŠ½£¤¹Œ%´ž®)£®Ûcð +ï¡|å5`}³*y—=ê±Ïð_à¾Ôy^@ÞïíûGÒ6ñßHŽ© Iš‡À­žML·³êx¾ÊMÚ9¤Ens4|Ã6ð"ˆSKd:d>Šƒ€)è2ð§ú'Êæd „ñêS™Šþ¬DGWDM'½Þˆ:Á(þlé<Î-þe‹ +rϱT7v%µ’OSpéÁ? +fˆÉOöñ©u;ìíûgCš÷Ó·°$ß]ì«£SòXCÁk&•D[•¦§Ht…¢uÕ«kýöj=Ê< *i’¿¬  ¦k†:…¥õ”×áýˆ³™<«¼™%Í㜠¦T×"Xðoµ+…ŠœŸ¾ ‰aÕ¼¼lŸ²³˜:Û“ŸÃݪÆ>–¬Ú¯,ùJmþÛ›Œ½ÀÑFÂÌtOW7|n•¬;t†5–ú4% 8Epdðt*-•ã@ 2› ø‘ÓÓÛUöM ;¶5ÓÆK ƒ_̤ÎÙH4G’yîÎ8ÓÛé“# +âJÈì°?ª©‹ý‰j:¦wÜ_Î6ÚXb²š2±„÷2u™Å (†9¹‡Ž¾4mÏxy7„H–â…:™"'Çæî?d[2ÀÆÅš†²bŽ»ŸˆÎ>Ú%Œ½C¨# +yzÎ87m°2}+3ÃzéâÏý°úÓaÄ• †Ê5g3ðIguTûãœÃÔ˜§Ó¤- óy#tbci4Ýñ2§½ŠÙ™N–2iÃÝñ¦qpËEò¬Ì]–ŒÞ#ƸòÒ< +ž üŸ‡£'?¸WZ`}çõÍ0(7ºIåŽ ù>Î÷9,ÍL=¼>âÖ¡…îjR£˜'W½…£{=cìüœˆ]cƒU×n Õážìz;¦ã¸¼z`„¤NýÍ;t5³ò3Þô à‚µD´¯q'êm[õ sVØt´åm?öPá¶ÆN%6;dl¸>yÕoå«® g©Wu—uÃòKµ=d<ŸrÑïVOJ{U„E¾5nË)»5Ѐ}Æ¡u¡Ìb§;4GƒÐe ¼³K:âwè?$S/’(À½àŽR‰ççjíù„ +‹td\7îiFŠÖHßuc ^)‘,×æ6.R‹ò!þJr¬‚+5²ç™ž\ÔÎZ_¯–"æ»ÔÁ1n^v&¡·¶ú¬t¥ØôwtÞ:Êá“jaê1¬¦O¤m¿Ì«uJvù^ÉvW/ä@×íÆëÍ*ðÕm\³Ù +è™S¯çΡXéž7äw;V\ÒîLÂÀVÅÿì0Ç~pôÒõÆ×ôFdÀ n×3 m õW'ÝTôWéÂÒÚ-Ò…³‚òÀ +àEk £6 +Ù™B m°ý‡(ÏG¡ƒÖ€˜à…v¾]{øhàe‹*¦pÔ‘•GÖb}šNíY86Ü”OFÒl>c|ÈX˜–ÖïëÉ™sÕWQןÁ;/§æv”^V’3P»¬ ÷Îñ{9û*—¬mˆ+ÚŒ&iø°qœ!­Õ.¶Åí‹Dð÷În0=*›æõs»¨’²§D–nA´%õñ®\Ô¢ýÐÝ𤞻Ÿ +سÔmᜣÎ,'õ‹Žl»iJzRW6—MÌ…çʹ=ëà›²;h…ö“˜oÅû9Aib&%òI:Ù^+ÿлé\Ó!OwãQu7 q“CºKAÉ¿nu_õ¥oï˜ÎWlÌ)§`UÆvLcÃç4Y ƒ&ú¡~«sOÓ0Ô¤KYñ¶ô~œŽ\))½ÇîöØhFD“ßF®ë-È"ötø{Œ~G¶4$CK† +ã® ïŸ 3ÄYë¨} +BO÷15=ËÛâH‘AøÅÏ’Xúé÷º2YÀrg2JWùb+é8Ñ“y—L¾ ïý–Ã¥¹b~Âÿï'ƒÄÌ5g€U?ŽÔnZˆ]ÏÊPBg+¡y¡%öTß[ù”µ®mh¶÷̉ê¯X[—î +…Ê—¶´ +ÀÕ-Š#«Z Ö¦XVÇ™IƒgÈìmk`j¼óßÜ£5§Z⤜Ðí㉠Œ̵ÿÙŽ¸Ôc-“yó16¿‘÷IÇkoŠyÄÙîop†…ƒ)ªÓDZÛÝ­áŒÌïf†®H/X€Š¨:Š3„Þ÷§÷<]KAåíú>QøÐbY¦{w§ OUØ„1˜žÅ#ŒUAk ß@Ø΢wÛzº{ +ÉùIb©Y)I£ÓÀcg³óÒCK$JŒ¥ù÷vð»"2º%ŸÉ .gmÀ„öÞ^½:Ò¿âÔ8Á¨p¯¾ŠI©Ñ¾ËŒY©ôv?%f§¥¦ÁTÚ-‰›vòUlíÆsò úBs@{\”=»Fôsõž•H#´ûk +§ˆŠ?Ie¦g¸*ÇÑüWY9>![õ¿@áªæ™¯7„«[EÙI"¥³Õáx¶#X¿^%öQÓõdK¶úl{]´Yvf Ì™ùTªÖñ„:Å©Y‹q½äoÀ´à±qn+ORN'¾Ç°Q¼WòBéðwÔ&ú@s¦…'ŒYˆÛ9iô.”ÏD×ÒKgŸ?8Jz-Aˆ+Ò0¿ +Sàp¨Õy½.+¼ÓŒo[+ /SºÇ¢¬T…½ÿ úÜ WµñO«"¥zfiVD#ñø£«ZìZTž¥psSõ ö„Ìþð¿±HázÂotŽÌ½Hwì–ïrÇIÍ(!M„ª zŽmY·²ª={²·Lߊ7œ"1r1††ížDŽ[Ê&Æ…âÇ%‚>åÒ``p×Ý`^R h½WÝ\Á[ŽP)1s¥‡19ûùdzÆn¿—Là‰`GVÚÔ*}îËuÂõtnü¥°.s óÊ¿yýTôÖ$ÉILz[$ }ãýWHy¥Öá·. áÿâ 0Âsê[ƒíjú\9BxC’¯ÁD°]ørëŠ+K¾t0ýf3È©—y=¬ŽÌmH[(úø¥”äß²3/7šåÀ{éçL#E»#;AIÃ`k±ü9Ë_ßçCÔÏ‘Œ_Xß6N)aQ`XøLÊxJõü>³òÙôû‡Ø‹1ê*¦ÄwQ˜†ý¬óˆƒKoã¼’'…IãÕã0nxQ¾¦b ÐÁÂÆïÒ)7’Èc²1’d kG20,?‡ô’71˜³`éÕÑî³ûßÞË< +…<–kü5€Ä]53µR_ƬۮôVxO¥9òJåw{ám™8že‰ 3ñÀõŽ;´Ò °²­©èy{‹‰@[T¯=·}Çw„–½(aÛ•-‘Õ?^ß›xyƒ–¤rfI áJ°J¹¦˜ŸòB¿¨›Ãý¿¬WÒ®á£M¥õ\SâÌ¡‰Ê™R$¶ÇDÎ[±§öê$X-mךl¾u¬iƒ`0íZèåaW_ÿb»óÔSÑR–Å-J&ö%ÞyŸ_!í>‹´ùJöÌÃüȃEÁ®ôßa„êñ X%”‹~Fz¯¨× +îQë +½î¬”¿6¦ÃV +)|½“Áøzèâïì`I¾­&½´^ÎSåÆ“wë¼Lº­¯Ià˜aG†$¡NÁ')ØÌ·‡NÁn>p±%=EÁMþâK+§„ñ3$ÛU‰£J}‚Ç[œdEjˆøuL?¥|XÞ¿´\z<>ÍÝ4pÄ•B åJ2Q—àÂ/ Æ%KÇanéÃD¡>coEZ%h«°ÀUä§ß.cÃTþíÏÕ|vÆHŸv;£=Ï€…éŸ/™)RŒèX‹‚RáÇNAûÏ¡‡úg¿ÓðôNŠgEžFävéÙ¶Bà“3b«\µƒ5³pÉBÍÁ._ã'ér‹|÷õèÖN|ûOš3.bž«ÉºEQûš ±H> +´½ðktôäšyN"S¥HOh}/9ôϘÞò•s æÅITîPÇ"~ï6Š-º¦-ÎLßÒÀeã)3j5Z›ØåÒÉW?“©éFî™ +w­‡tW&ÉTÇç›Ø'ðáí’TQ= ®ê8±c’”iTÊ8ÈjG=N¦íip@J-x„…îê³<54ŸÛÀèkGd%PY&½Îüb×(eÈ°&4ãàn³jO’Ô0Ó®Â2µ@ïj¥…ˆ ü`5ÙeþB|No¹Ít_šŒññjöØéDJpRsÖ’áÞ.š…ê´‘QI‚!Ö‰Ö²:e}eï½RÌ#sPŽ/õ5]ç"]í˜õÎÞ8é ^p ‚)äifVä6Fü”5¹eÎÀ¬àܘ#¼íëÁÙׯàæµÕƒÒÉÄ6{·L¢E\{†|6ŒîÐ){…Ö#$ÎYWÜl‘H™wé…H6Ûá8có¯ÄmTpZÈÇ¥Òøдï±uÿ¿’‘µšRWw.Q-ïæ §K,§ÌëI[¸Óäžø +Ôc\—2†¿dÞK*6ËÅ¢2_½=ý» 9x@÷¸ ‘%)ÁM¥ÝÇOL-²Æ›h&øùí÷jÍÕ5£2*aæ¼Z¢ÎA’ASe£{°lTLCøößb*â¡Óºn¡œ¥Š"vRŠXDÍó‘RÔÉãÙ^mIt0;™D KØQ¶ –!±h‘_„Ë×á€Îo«Ipör¡²Ýà¨jc°Õª“$‰EŽ~ ýÙ>YI!âcŸ6ñ¿0t’zb«þù(Xºh+¹YëWQ—™_Z»xL•\Àššò‹× °{mUÌ. ©sƒùÓÓé+ÛP ðÔÓMe¼û¢ âԢ͟6_Ñ^ è“f6 V\½ôqû[= W¤à=zèv¼ÙèssÀr‹kŸ,B:õW¼c¿Ã²t0§ªbÜLqáíüˆ&6#Έú^ ÁÑ&ÞrTMK_,óû¤:D §µ¨;»Ð˜÷¼À×ì°­[GЄœëBaFÛ¯8eì ι…ÜätV2‚e'+‚¾€ÁJ$¤„Ô“ÀÕµ…þ´•ëœ>LyPÏp:„9"q˜"nÚ«Ð|†*ÙêX?èýS‚²ÄÂjúN÷Él®M’€Õ)³ˆ`ñòcL7¹Ó«®ò.ͯ?àJläá +õ.a›31*.¾CoÖqW.{˜“©ÆÏäbÓàÞ•rM£” ¬ï ¢×cøIŒâq›µ—(ã%š`.AËDcyÙ‚BI½ƒˆg?ꃑÞd"·9,d£V³*xýþ£ëU…w{LÓ$tǦJcÝ ] +Ðç!VÝä ™j\yºút©¦4ÅØ-2W-™Ÿ%Tføòe³¾!†3VèqÏ!?H6`ŸÏŸ \V³Ö'ƒ–|µQËö¼­òZ4?ª¶‚ÓO3ͺ)ÅyóAýbj¯8&tÿôý”ÞL\y[Ãz¡–-ºÍ \©äÁr ö¨[>û^úE´?X„,^ÖÂܼt,K‡ÜÐ󔨾?¢¦ä´äixýç•`ÃË™ÅÉkÆ #ú–Uƒ"Ø$àcøèüƒõp˜@q® åñ’öBÚ Nq0úê­W?ÆRqŒspŸéð'~çØZhmëÌÂýç"ôÙ‹_º 5¹@M¬–?ù ê.æ*‹ ÊewµzºÉß™åž çP÷éüí¼XÏw‹ªq²»êþD$»úŒ>F*‰è§ÊÔ[eSù« ÀCŒ_š°ÎOþàaÍ¿Þ”Ú£Wn$ØžáôP¿SǺmíSý¸™sµ×´×~ØSÔHiCfÍ*rMä0Å,5bÕk0pÛurÂV'WfTn(Y¢Oì´ð˜,Ûb½ö±XŸ'dÇ—;@Ð!Â,ƒ-&%êÀYé°÷éž™K,Õ‹C^è+–ûˆõ ûBJo‡š˜e )ê>vÃ'”ðÊU²Û‡õ«ñ×%U¹A¯ãG˜hÂÛÝX?o½¥»Ðv¬%LìëÇÏàÙ[-x›Zfñ3,j«t\¤ æ‘SOcák!`¢¼„!º²c›#ä{|êÈÝÔ\éxT—ç dA¢’70þ•t3òb¨þbY¿Ç¬þ‰è!ýÔ¦”}š´Ãª×®US@vÌòc>Ü®¹¨IÖ'Ãò$8ÒÝÍ)(5›b1Æžm;º(±:ÑEPź/§Ü3‘Üù—ö(<¹ (_¬r‡5Yî1Ú¸ &–‹†3n¬âRkf¼8°Ì–ÇúÄìÄ€EÁ·Qgìâ(öf@Þ½¬Ä]GÖ.oëö‹ +ø›wäŽ]ïn8 'atò©KI}âÁ&øCüpß«•ôP ®™T'“2ôvÿ@e±ž¶ +s½³hû'@‡ÚÜRU3X˫ΑÐshwóþš³³ÚF‹™Ã”´°:ÚµáF2Ÿ[~„¼Zu%[ÌRL(fû€UÉì~ñíþfCü×õ^r”ûî r—¹-+:}:©½×÷]W.fm·¾÷QÒ +úZÒàü˜WÖÁT}©¨nSv+¹V†D0ˆk±Gã,ŒÊ‚kíw¹y`ç +ó»ßhÌ@4Áü p1fÁ%BÆGÌô˜«ýÙYBõî{ÿÊêGO&`“ +°¿?µ·ƒüâaXîˆg”HrdWGlM‚©Ìó2AËF<Ä*Îèb´ýP‹@•¡Àóᩈý§8áއĤÁ…¸x37ßN¼ ”ÐX¿ÙuÉ"?E¼zZá¬|qbuAX²€‡•ª‚’„÷BŽT2üAË$ˆCí{ÑhŠ¹*à,–bM^¨šøŠŒÿÞáa äh)©‰2ÍØ*M=·«Ñ -Ç¿YÝ4^à”`Ƚ 6¼ˆN­¹§lÞQ¬²Òy”É i®9'ÐÖªÆA~–£Hˆ$!’&û¶":] . ‰'13CÓ)“Ó·îX$¸$Ï~®Ö#g©³À$‘+/õTù€Ìê†e1¨!0BðJ¬TËò\”Á4æ†É+qù©Ýú B&åÔÅ% -È«ÆÄz¬­¤¬¿„„[a1ŠkDNž¤OƘc—®|#|{óa€ç}¸‡NŽ>F­6!—Ž ¡ºk,|Á­ñæh;/L+©ySŸáø¢ƒ,vjbß¹B "bîö3Iûä\½ÃsÉÕ/ßÞçì@ „ídiÀ|­wöëæü…ÈЩt'±ÓAÌ·x,[KëÖ–3LÛqp¤#øH‡ìàÕRV{õ„—ìé£%LŠŒQM[LJ§•YÊ‹5ÐfÉ;Å7º +£"ÙodIH +&Åd_$T–ó&œXòæŸA(Rœ?ƒ‰//¡€¦ïY @§Î‡5ñ#ÜC'­ÚrWVÈ hïi³Øö¸þ~7èÊ—icÒt>¹¿Cæ!µàÁóú0MBä1‚eÎþp[Ìj–>šQÚIFPBh,y;tEKër¡6#ÏõÿèuKÔR PšÓˆÔ#_ë¬È5#áýÐ0.:E™bá6ŒùÇêÀ ôIÝÞñ9Ôéaœ Ÿ»´\$&€tÐþÂ.KpàìθKа­j{ÂÊ â Å€<î¯ þRQ—.¿O/“àÿÕœdzó‘Ý“hN#«Å‹æ™æMÏ$îÝÁ}öy4šî@ËÿuµÚMÕT"¿1»wGjSôôœ¢ÃÖ~CstIZó ³š#uA͇8êr{gíÖš`¾LH7§˜’WŒ‚ÑOQÆNqýZÔ­ÌøP·ø= ¼ú¬š Ì~‹š%×RLõ@ц·óóÕ;ttûIPHjL± ô#O·º™o•Sw~3Cô ’«GÆctô«Ña ¿’tÌQÓîÇR"ò¥0mMvdq‰3ïì"ª)c'¢{´óF© ‹\hº(v³Oèc^FäµáÃI&”ÝøPôÞ§›“X{j›ÿä»ãdCfÚª¤uꉴ ÚÍVB;¿€Žjâd×r#?%rŠ»,Ø2T)¹‡©¿¸bïÚS±¨9Nþ¼@ ÌŶ]z„œºópžÃàm¨{UÊÈ‘“AãÙ¯¨ 8ey[µ-e)¯"zð°D«Òm~…òÞÃØÖ‡#ª÷?l¯vOý¥ µ7VÜTО¸hæ=|lM¥¯sDBçkîÂÔjt³!¼Ù9v—õÍVˀ̈¼½ÔKù¡W•]õk}!-cÑ¡õÃ?ž¦-wô·žöí¬Æt6¦ýï*iÐSß¡|Ɉ§¡ƒâkËåóí-SÎÖ[£¹Z­o@_ÞÓº˜,OÃ|ÉLœií¥þm>:Vf…$gú¿tžï¡ª«â£,¥{`— Ú”1 ³-unÈï¬ÕÏY³±^7RYMYáÄŠûÞo§3¹³ÀЭå¸.àƒ¸ÏXï£Øx­ºÅ¥}}òqä­·äØ‘e)²°KÏ»H_U÷#F£ÔyJŽXðÖÝZ†sà'‰îšÓcÅ< ç0ƒ‹Å¦/Èà ÿýÃïy»Ga`ê£?Ï¢, +JZRêÏ+–/¯¬º–2…Ëü.©j†ôìŠR +[—dXsFŸ‹¢:æ<àVÛ+b7וQ[úGèM¼–‹=Qìj°ÙÊÏë±g¼"œöÉÑõ† §×®Ý‰[n6?,Á¼_xôšçÅê“R'Ü»sÐÃà +?=MÃÏÐæFš½‰Ž@Â:Ì«2ËkKÖêQÁÄÉ ¡Ur C‰òNt*¾8)¶Ž… ,d¤F*¶‘'pQ>L„:Ÿ÷lÝL,j|'Õ7ˆ˜Ó9˵Ì3¢žliRVòÙ0":„=jGK¢Rá9ö²£òÚÁÅ'Nª×$;ø¹y˜dЃ©ñŒ#£ +æ r´`³m\J²ò´³3ò€%b´dëÞQ™¬0qrù“žÁB$Z¤ù$‚Zïò™ykÁGq0m¦ý tÒà¨Q³WuðéG +endstream +endobj +2275 0 obj << -/Type /FontDescriptor -/FontName /XVBOSG+LMMono10-Italic -/Flags 4 -/FontBBox [-491 -316 834 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle -14 -/StemV 69 -/XHeight 431 -/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) -/FontFile 2253 0 R +/Length1 1776 +/Length2 19027 +/Length3 0 +/Length 20803 >> -% 2256 0 obj +stream +%!PS-AdobeFont-1.0: LMMono8-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 +%%EndComments +FontDirectory/LMMono8-Regular known{/LMMono8-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +17 dict begin +/FontInfo 9 dict dup begin +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono8-Regular)readonly def +/FamilyName(LMMono8)readonly def +/Weight(Normal)readonly def +/isFixedPitch true def +/ItalicAngle 0 def +/UnderlinePosition -133 def +/UnderlineThickness 61 def +end readonly def +/FontName /EOXOPS+LMMono8-Regular def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 105 /i put +dup 108 /l put +dup 110 /n put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-456 -320 743 1014}readonly def +currentdict end +currentfile eexec +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿[úKª•LI5Œƒ(¬Ú¶Ÿª>H·Vhg!ÁM8óyiÆ4´óW~Ή\ef5S›ƒDy¼îè ™/ÇÓs©jeX¨Qö²yýsÜC´rny,qš€ÀwʘNó>~ï:Þ„¡Ó98ˆ>Æ0—jìÐõãºE™ Û¸t–†”=ÎøxÌqÚ¡×ÍæsaÐ2Ô… )–cH.#{2­ÐVí°”ñ#ØB¦9Ü;öà‡êT§ðÿO›z9R¸BѹŠ:µ2@)s¼UFìŒÒïÔÕEº’»+¹ÓöŸÑ~`Nc’ŒdÙ`À§XXyÿ¯R1ð×T›ŽuGxei}¯¯'h©YÌ°®ëC·s¤ +E€ˆåψ#†poyL0 !~DðûÍ,ÃîYÀÙJC–Þ}”¦rH6¿ÓŒeN Ó¸l¥HŸñ¸È>·Mtô·Ùn¨cÈð=¤,LØ¡ šÛv~ÉÞž(… v”w¥*B¤@nx̽J 9܇A•&oóĬ‚ßžßIŸdyz„Ézg ªðNž•ÏA¿î +ÿ})/Äþ¹Ñ‘Z=q·´çx +ÞxG~½ýÇÞÕÆ»xzòˆW™…5@CütÕ¾ÞЈTîG©=ظçð’½A¸DÁÅ\g1*mÃaXŒÃç‹ò΃Þf»Rý +žàåqõÎ÷uú`e(Å¡Ž"av‘. œ{‰ÔL¸¤#eå¼ÇÓ(ìvŸKL9’¯ëeÛLHAkά&™õI¡ú§á0Çï¢q\JL›hÞÑ(Y|o=æ£6¦‘[aEáðŒfÄ£àI>8É»{Oæ*dÉofkÒ¢fŸ8V”J:_#w¾’.yŽÿoPxY/Ûð±T‚0RÀ|K¸ °Yk+qœÅHfƺ'/,þá:Üõ¡¿rÌSW÷UÄŽIôtG`㚺ÏÓý +¥Û¦IÄB£î“á6mz ñ|ÝrÍ3|«=5­º#“y.‚ø•E\®!å.³î´Z&f>hn§<¤gØ:Ù7Œ¥SÈЋk4ûóÝŸìH™ŽÔ"ç{¹–¹§ â 1{—Z«ðß›Cp¶Ä1¯(:_H.VO1|€¬ÞeøôXFu£ÅýÅ>·fÊŒ PbÄ—¨ÅÁsqM?&ÉÓ§40%s»’CdŠâVœö÷ŽL¬¬Û>Ù½Íxņz±çÐ=5Õ …ˆ[R@r®v¦yêD{”Û\²rÐå\,‰À­µÊäçšwHç¼ £ÆM³vÔ†€`ù02¶Šîwšãñ%}ôfõ‘dUu$†¸xž”ÐÑô ñVú¨–E¡C¹Ò¥\J£¸Xóø%x¬oü’ n»NKPŠ1:¹ënIüFZ8„Äwö¯ÓîG‰£uuÔð…YS24¶—_Û¼¦7ÌÐh¨gs£ûtÐ}Õ—/¨+çS+ÑœýÖ’…¿r_²)úÅ°F3fä˜È(ÍåQì³ÈÜÉ0$ù%ØÒí±Â²EÍb*K”Vü‰˜0Ö Ã#x [Èô&ü&ÕQÕí>°Ñ"@ høILÆ´1ºð€MƒR~ÎzÊÊY¹æWúžì¿@÷Ÿ¾†_€¯Ž”, Ý„|‚`Ù mœîD™ØÂÄm3,ÝU°waÞsIz;H"žëšÅäð%¦)‰ÉNyŽàëtk#Ë¢¢•$ò¢žáˆUÒ/¢µG€ü»I8n¹<µjÝVõõ«3/Á~«Öä%ÊTE\·þÅ}@çve)°`_QÐf(IñO.»ì„ÉØ9Ï’1ÔÞ”+yQß>wîá'"ùq/šˆÛ¨3 dn˜_¢Ìûºy닇œ×/âµPŸÿBþkN[hý­†UmzIÆZ+(°0Ìëû’Æþ/ëë-AFà¥2²wȧ=¯€\U®Bwè[<‡†á•D›ÌFßÏË.Ô5fù Á²Í‹YAsM@FC=€ÞÎù×oÚ£;©Îܲ*;ŒS}2µbâ»*—0/çP‘aô…˶ÓxÀ¯†€ØŽtHa5#Qû΋Û+™òl_B§‰Ö"Ìâ@ŽÈOC*rÙù1Ün:ñ)lQ‹_{ϵXV°üv&Ô.{e¬zÜF•<ØÓpòâ×+^àÃð:`:!jù}Gyì¨1Rx°´Ñ£ÞžÁ;DŸË×ÖwLõêS*¨†ì ƒžMÞÖ°RÐuÄvçy+Wîð.ðÛ?I²+(Ž`›Cwc‚Ä8“b®§þNc{E)\:}WŒj3v¹w-wù’¸Œ=Ã-õT/‡zÈ[ÿ"yL•Û­ +· üñÒô/oªà>¥<´$ã·aéu­¸þ5Gž ÍÝàÑQ@çÄO0LÓàZ…’ Õ÷Ù>D¹É” +‘¥”õ¡ªŠ_âÍOæXÛçGsš ’ïnÇNºl² +ÃüÍãÆ»žýÔ°Óf{_Ük㣀Sx„Ã2c,ÜÇPþ`«ÐöMÁ›á6€Ë~Ȥ¡ãTKÀàa2YÓö–cÿÞ¦Mkb;c1nŽ=-îšøøîȺ—! HíñDyЫåä4‰~,%ÉlOxôÐd4`ì•&É*í4@Ý9¸(ºóæRjýX3;UnóØü­G”G:e1ïO#FWÐR²&©a ˆ¤šßÓÄ)Ò×gJbêÍË»8GôAh–Ì‘q¤^]ÏÞŸNÍiý2YÔÈXœüŸnñq©¤ú@ ¶W…‰ëˆôRõa“ÉÖÓW*ªÅZ@Xl¤ùeª*ûViik +HRÆsìÆ,¨øáJyYstÜK!]~À•ëèj9áîD˜·ø®¿h¦iL$VgÄmQn¬pJot$žŸ^·Ê7€žïÃ?Í¿ŸBö_àiNQ"1 Çø#ì)I@dJÖtD¤¨¸Rü\‹u^¦ÿXè\VÉ|4{çð¦ÿ#_ÈdQ$zÏŒ‚c³sywFeOÁnØéšãOÕ#-J£/ÈC•Zй?’F/•³¸Ï÷3ïÀ†MÄÍI› SM3È""oÁ™Òaéàn!(9„óÆE_ÅRG›qrm{+ÇÕ>&ÄðöBퟔmr4Å| dlv3=>õ­y9äçT¾°Kù\…Ú·¤¿M䜃HªËÜ=&!­Áx†Ï¨Ÿíké°Ä–Jè8Ë9â=מpíŠI"ŸÔOEÌlÈ\!4¤m®,ôm¦Ì°wë„¥?´ ®¯î ¹+ÆÑ…‘3ÿwö·»GøJž:•’i$e8IÀ(áÅ`.µÔÔ€¼çcÂ{¹¶Žƒg™¡ØýÆA±D]©Š|ÏWWøY½ËP·ˆ2›P`+®el¤¹ óç±Ðó ¡Jž-þp}°\§#Ùä0§yω9ù +¢ þŠÓâO=ä†y$ä*¢à?ý--!ÏsèÂmQÃC,É̯7¤F½-ľòbïÆë°®ëj{Ù¦`oDTDT+žÝ6n`pbúý¾søöù•P궗<^¡K0TùpV +³›ý#ŠYºW™ÊªAŸ^™ûc,ëÖ‘ÁòšýR˽%Šß°´¾_$q¦ ™QؤW¤ñË4DwצQa0Ÿ1R¸„ tÄÄDéÄA*«2kTK%’$³Ö5ªÏQÕ¤L„–Œéú½ä; pi~y¥ôö_Ü1…úÛò÷à9õ¶UúÌvÖº(çÉž­ðÀ±è¼«meE'‡À¬K0ªÑü ^C¬I’탾œ»F‹i¢r)݆ìꪤu½äcwÏüH,ü1] eǵO5­:WˆÃµHQQôÞ«ta`±;gN¹q,8Ùt>!ÉŒ­³PèÜ›ÛûBË‚¥µ¹;ûEL|Õ˜¼ÅúØ®u³òé[÷@¡­Q»ߺZ>e,‚ +-Œ‚r#áíKDë"élÅÑ…ôñeÏy¤vÇŒŽÁDÞ_”ûºÃæÙ@En-2l ïL€Y4²û~ú ©‹È;ñƒB/“Û! i»jèœEP{á¶i3…]8ªÐuɯü`b¬Žû9£ÅHÚibì*Á°é˜sÙS¥Æ”õ½ ¿ÕÎJ@ì<\pï˜$l ½×ð.tSUQ–óB¹üdÁ?6,‡!KlR×µž§Jd®‚;¡ñGI¶Ž+ù7§D"eóšÐ¼ëP·å-ë¶`q'2™o•räK ViHBA¨Ö¯Ì±:7º®çE÷çMGœ·w³‹îÁeíðŠ¡ª›‹@¾ñ6ç -(M({ó¬ƒM›w„œ7°côòQ•ƒ$þ&GĬ)U·qÉwìf†›ßŠ`-'tì¦ò•kðòÜßS&½†ƒ¶’ÛýÃi)š»‘öb¥nþgã4ø*˜×¾%¾."™9àŠ$y¾vG~Q“”CSym†ª^(„ÃÛ9à8tD/?å :³jb*j‰™VM؉Ÿ*Šþjñܕݽ¥ÅX<ןñ6ëD¨Þ‡Ú'Ÿ÷ÕK@ùT’ô@(6AmÅs3P[‹ÑÇV6÷÷tP_þ²€¾7JH¡ 'ßÓ-êº)>ì3k¥¬[_Ï:!!¡Z2ŒU˜ÕÁ›s>·}Ypöúô4%˜‚‹øŽôÿiôoÂΨK + ÈÍ'xK¾A|Ò'*Ï“l¼H’¼÷Ë¿8ÅŽOÅa¡-+ë´Jq÷bH„å9K»þiOÄÐsc¾MpÜkÒ*¼ÐC"K<Õ +Ío]|Ë8º@ú€˜-}LÐá×Ï"t›D_sUé&­úWWç<ñ#ÌîcŸ*ÙrOF+ݯôV`&¼)Ó™ì“DÊ.œ°A‘:þ´äW#3²Ž¦@ò3 ù™'®ýµã9Ó0¼Þù˜Þ V×Ò…¹ŠãíÉ'k|›å½ýscÀ’5Û¯*6ŽHl Níõ=ÚMKÐÅTµÇ“·%˜Û)â/röÎ -*Ò²Jv«H¥ó ¨ôKÃÈyKÛ´")°ÁS-ç·yRB«TrW2â´MU»R+e^ëÔˆb9,¬>Eç7q*Ü}.%b‹&Ä=dÊ|bJr Q4aÌ¡)õñlJ$ºO¡n„·9ä?ôVµÄ1ˆÖOÿÕOû.šøëìÎŲK“¢!y,§QDç ê6Š5”~Ñ1EÞ[âÝÍÌêШ:"þØY+‹B 3c ÁüJ¿9›‡PµTUü^C”!±$ÕÍè 5×Ò2­ÜH#iÿäé1è¢^±ì·vfîÙˆŠ’¥Ÿ*j wh¹‰fÈ9ƒÑyû°Gc5Ñ9Þ8ïÈ.„ç6 `ëGuÊòeI¹Ÿ6átxM!Ê“‹1Ø{›dbȘ£¤ŸÇ2·ç®ªE²õm’Еkó!­…Ÿ*”sóå&ÜéѲ¦½lƒý)Qæ~ ž¥ûR²u˜%ÌH6Ý[|u¸£ßV.xš1ÞÇèÙÕ¸Àpf09X”ËÍá“jaê1¬¦O¤m¿Ì«uJvþYÀ`·^ñJºˆŽŠ†¹ +Ú:þt!k}óšE©su{ÁlÅ1%Ò¦Š‘*º}WØši/Ô¿Ð6Wÿêï…yÞ®'ÎÎïÒ‰G¼»É1“tânk÷ú(^²””“¶omÜÑ=ŸŠÈÎÌ‘î0Gc»¡ªù×K$ú~¬ï¼¬rÞƒO>×ùõ\! Omø¢(mŒ~½œÑâ· +‚ó,· ÌÈ ÎÔï@§:ñh#™rÌó2dˆÝ³Õ¯k‚…ä´hÛùÈ®?´þìÇøö?ºàdˆ3¨¨å4Äû΂æ|ð–£³7kt|:Ûªh×¥@~ ¢cÎÊóOõÌ­@ÏWQÉps]_Hö÷‰ÿNs­Ÿ&°÷ï +Ù m°³Õõp~¾1þfã ­&âk"qM€ì$¦d©‚`l´³@•æ{²mT§ž÷W)û•(Gb5]üwTåƒFÙÊ[t66®ØQBÌ +y‡"6Îj}¡n4­Ô3-1Âf.¡œf6VTÄ-æÿø¬†ƒÝbírq&ò6ÇX0ÿ+þõ–Å$³'–šqEŸ›I®°jv(jÜh©¨§|4;dWWVÕ9¤s±³:¸ü…¬{¾%TRM•Š$ó%Ê71å@X™É§å +û¬]áテs嘭žN¿aÈ:H¬ÊyŽŒùMZñ¬ed£7 êž«Ò¡DòXëMe{íß°d»^o¢Å¸zw–6v šUЈ–xàz9iq^Ä‘;8#φ‰xª!Hú£R·ãå†íÐÌÖŒËÓð¦ÕWVZƒ5@\UöïîM„ŠžáÉVgêÎZtÖ桾12ôgÃ{¿yÔ8V•*_D½°î˜›H¹Dt­;ã:0í iÿ¡‘áziTÕ;‘ÑĸÂÅÔ¥¼ ˆ.©jKǪ¯ž«Ö»'+MÚ¢jýøœ©‹æWÂSu8¤Ú\FîÂZÿ&!Øeøiz܃‘r‹] ®Âÿ½ô2ø£Ë9>¹-<òObC¼Bç±ñõuÔ‡zÌ•Q96ÛèG¹m~ƒõê_·%˜Z¯çΡXéž7äw;V\ÒîLÂÄ™UË [ºYyZS(Ϩ˜ú%´Ù¼YªÖ>7ÉÆ2™äV|lÅE™v›/"ò°./aóBršž¾‡{Ti–ÆR]úO^¤ÿcv:1=3cŒ^ðVý«gXšRÖlÔÓ¾{iŒ²d9ó+œ +¼k\*+èõ®LpAR›EqŽ_jüŽæâî˜v93Ø޳ƵÞG´G[¥}´ªõéVl»`âÎ +2…ÕJW\áî=Šh·‰¿˜ZdéØ˼œÜÎŽ…šåKäM‘•9â<ÔÇçíÿQÆþ2¡"Ÿ} +wTÄÂv ÖÎY%Ÿ×:Ø3Å1E°^>úÅÓãëJhœ)]·&Ñ“òö×3q嵺ʒ4u ]ή›’«j¹¦G¤æY¡9ƒ–ü.khoºòfzww÷B=*=¬ì0:'&oÁÐäÁ¦ûW‡[ÄozQ™Úç¼~ëL\EÚ³[ŠŒŽû×’Ș«ø òÅñÍÓ§²ÇÅÛï^0ý…”‡ù\j!"Íác_NRq"LÁ›mAucxhÔ€ßlS ƒ¨t³*Láô v Ï€ÿÆyƒ²åÁ<ªÃUé•©bÙ’vk¶€_€1[ËÁ´Às~»b?y³ÇcÎô¨ØβGz·G…ÈÓéW'œ„çgÆ6ìïÀVø,¢åÛ Ä>b¾+ßHTª‰žÎFvØŠªSÑbÐ?!¶Ýúf°B{õ¾?|+HƒÇÈ!EÁwJO¥W{Ô²UÍaªj0\Œ&6‚ÐShÛ|`"¼Å£¦Yž„@Ü7ØS3ŠŽb%j“~@óÅcVbîâì†q!)<erLoVyXœƒ=LŒ›S‘.!}Ì 'ç$³S FÔ²4ÊZñB.õK ³Î!E ù`Ï ™ëK@øk’ó¥$ŽO4Ä’SDU— zH ÎÏ^y62ÅN¬ž¡S Kµ|„!NŸâQ`»jX:'"w‹E¶ÂÚ×Ëüc§¦u®z¬/´1 +â@hµ†ÆyЛþœ£kF±¤­UlÐ"âo¨:„û^ÑF^„ìTäF¥çÇÑÅÍH`tŸ‚ÿÚá95†ïÕyÖf !gßM±ŽX‘~Æ„$Qã÷DMàATcíú÷ßcÞ¾¿`;c²÷PÛ£CCwäf‡`d›nþ–aÕÑp7¦Ë;¡˜ê÷”7U¿L*Ú 0k¹è<Dz,hýpérîOkÒGˆ ÉÖûCv! UN¦ŒÒ'o#˜[AÃ2 nØí­T‡w6Ÿma˜ú ‰§7›Ù)nnå¦=´äóhÕÍ"§á, Η`"#EC}Ø‘Po‰¦=þ»ˆÏÐkO8XgTÒ-è‹QãéØ·¯¿Y¤FKÁ ¾Ül©Ë…5DvóSM{—WÄc«²z¶çFοœè³IÎ~/IøªàÏâµ³¥ UK†&Ó\çPôIrî×]…fÛr‰)nF„QÏÿ$\Q²ÓÑWÊlö~}ÛUp§ 921ßÑØZ½c„qï€C°-¥)—Ô:ÞAy¿yh E2×Î1&pŸðƒ¸hL–\DÇøé&к©'«Áƒ¥8%çÍí¡aATx—^%Ñé(ņzI_ˆV[£¼ÑÆL©|0·bÇò +Jº … +jûýºnOY¯×Nrz=;Øo8ÒÇ"#ŽðTjïøDgÓ\•íj +)^àŸô_- +õ9©» ÿ‡pCÍÝÉö¾¹4ê31RÂ\'ÃÇqµV£20šºûÇ#7È™h±ã±Òw +RoðÊt³ô<åGÀýP¹¾¡”|y2êc/ˆé­Š1Q> o*D/d>–õh`ŒjŽ535î'mžž›ÄTŸ4€§U>Í'³(ê„ÐS1USóÅø§&aeŒÝ3¾4í »ï•%ÛìþZ™J¹ %ó襠€Ùì柎e˜¸5 ¹=ˆQ×ÓÞ<\c{«T+]ݤ[aR6jaÔ–[˜‰cg† †7˜'î÷B–´õ^ç+*dòù‰¦×­|‡]ËÛ93äüKAú7‘mi%T#0Df—Ðh•Êßp3Oö×´Fö{÷ +ëóZ*àk ÙtϦ”ìÃì2ªqNe +ò„’nÆ—0¹ˆÝ‚ÿÔa ÍÞSî"Þûš„áÐÏøÿ æz¨È¨ qÁ?žn±xÞ;ºÂk_Y\­æñí¯²ò°´Ò­ø*ï5aèlewOlÑåkYtzßç®uûËcÞ&"eÒ£œÞ™^¨.=Mîî:”ÙJþÙ$C ˆÚ`ÕM«ðò‹pu7‰Æ9ÔϚЕཕ0Õ望D×­O¾ I”õ(åi À?þŸsPIX Œ›Px:ñ,ã“>P“u‡iрݓæ\>J/0“ *·>¸¤«¥a1ÃÃâÛ=’T6:¿²ò²ÿÈcþHè Ð +=Øé<œ'€ÿ­%¼sOߢÙáLôþïó¾íÛ ¶xkF¦!çláý'Cwñ£­ÊÛáQ™A®·g1î&-hF'܃žìíŠð§€ZÎK^óFöìÍMÍÍGÝwëÄk4X›X/uÕÊ·±°µ0ÈÌ\Ahe°~í&ì +ÿRöX}\g×®¿ Ó»0±ÊЬKú5½9ã‚ë/¥å°[žòZW½;U`‡× BQŒCÜá‘o}-l—Rç5nê¸à6äæqå%ˆâÖ-hêŸ]¿û×dáæFû£=ø¬ÃÜÇBÈ’å=ó­–‘Ô"5W/g¬\ åž´õ%ãlRnuIʉ-}-©Û+LÇì´äxÔ u|mDT–Ížf\L²³Í¦Ã¾²r½¥Éôþ÷9©@TcÖ šÝß6|?ÏS;‰Èm¯'½ËÚ¼WR@bs²q]7\Ô©D¼ýj•Ãô`;¶öñÁ3sÿÅ%% \šû°!ƒ¢híAxÌ݇¾Œ!ë:š¿÷©Äj£[«@aßN­‡x3ùÏ<@ƒðb ¦ø’J Ìa„.N0ÁO…šÉpÅÒDÄœ& +SÛÓC>›¤5i¿ó…ïÔù ®/#;(N»`¶-ŠŒ«“êeþ&j×®ªZ¦8"SË+¦ëÌûÂk5½HDA<625ÕÙŽ)¦În³W$Òàl†ÌgöÕ¡™‡±¿¨£Sã'{ê×ý®ý7¯vmO[‡Ã ÷íÐ? +"°N"/¨ïj1¹‚ z¯||•/zà+%9öÚ͈­™¢¶†ûì4¦ùìO…ì1|8s‹Ö©ßžÂxZ ±RP™sXÊš?Û°rĸšAKBäÂt@Q=:sƒ×øwñ´]š§ ÜT‚×Ѭ™xgë1³ t @C“ŽuEˆô%x&X½¯cèy-y4 "<’Ì,Æ•›A•(²ƒà> /9¯óuVSmF.45Á)­ôNpmà5ÓŸ—þL¾GfUI_Hi°ZŽ¨¥½1âýJOtãd›=P Ï9¡’¾‘øÔ¯€´C’ÚD&ièRIíD½l5®\×sI\GC¼¦Úq·¨ŒcSlgðb-2ÝšVîrsì9=5bSÆô;>R:¨1<*NÕ "ÅØå"ê6ºz]3GL’u}®ªUµ]¨è1ÆÞ$öµX-wWgüdk© C† iÐC©ð‚žž¿ö­<äZrNÕôWqS'7ÊÄþ&Rf+Úp×™h4*^Þ×L›ï= ‚Ãi4½îbéŸoè,Wш,õóR¬CŸ +LUÍhúÜòjM¢Ò1•O¹?·Æ¸êÔoçá‰v+¬ÛC –°E®µ”Ìþaõ#›·o?ø¾h»Å¢%^xšË×]ÓÙØ`§ ËL ‰NŠw–SÁén­‚Æ]y( 킲ùÕË]2¹?,¨úTm±¥¢¿3ÇuŽ ’QÝLh"o&|¤À霤èy"²œÈ(­Ù²X,öÇåm±Ësí%f9JZx‚ß+‡“_žƒÎ0â:Lö/=U©Ø¿bÌÉ•%Ð(Üðø••À•›A•(²ƒà> /9¯óuVSmF.1¯ROŽ$«ÜmóVÁÝ„MœeÃ¥°Ù+‡rªSF×Ý‘°KÉ‚ [ŸOcêù L;ÎUkjoRLÚ>"–^/¥ªæÝ¢üêü´¶5̈ØïÀ„ÈÞ£(ë`飸ƒåÑÄå‚‘f¸Û»ÙHF)QW¼ò\×O‘É#œôÁlR3R)¢¢ \GURûÅĨÿ® kÔú"‡h<Ó›§\(¬0·@ý†«ÍYMå/þœ$÷ÌOù>î“Ofs¿Å»›£9 æþ=²ãð[Â.€/ÍÄ Bˆ‹üÇÕÍc§Rø—œz\¥Õ/¡´Œñ@¹4ëXX Qª(¶kÌüxUFr´ÏTô·¼ðßMU5cêÒ¥Û—Š9\VÚK™”·L?À_覅¹‘ùÏÖ…†³|$¿´+·ÝÖ-€—ôÂè ×þ \ÐÐa+jåÖªê–iq›®4N_ ùÛ)GbSz„ÞÊëÔâ»é„±é0?BŠhÖ¡•’ˆÿ´JÏTnXÚË»·òVDSKÂþq²`Fyâshda-„çä´Ñ˜—<¯ömªaJö›7ª,xC§dÇs/Gª/MÖe‡†}ÓÔŸ_1° JØêîWaµ3è°WÃ,dáÏ­œ$ki ÀÕ¼z-gÊfµL}Ër†-‡®‡ù$›/Ï“.ß݆´UôÖ{“ëdX+}{ŽDì–Ê(ˆ´yâ^X[þš‘ù>íÒ¥€§¤4ÌG*Ù0÷÷$£ÄÛ{¾ž>oé¯gv)ÚlEƒ£#»~»Áõë¸%UŠô»oódí +ÿ3û†3AÑ'Ψ +³Ùo`öív‹Ø|» (Ïyí=U¦½%Œ R|5ò;/°d–êF, 1Õ©  5%9h¢ß±@`Û½×E¼96Æ«¾Ú–&MwA{ s™°$ÐÔœ;V‘Á¬'žë¤([¦ «9yø$òð +X«Ý jH­ +é»A^N8Uò##ü !^ÃM ÚkÝS&þfìÌÌ"ï)hÍñÊS8àq&. Kd:6¤BŒ£0ÕlþÂh´UÊ©½ +*2† Âýú«ÓpÕ8K4ÖŒ´á%hë +¦K\Ÿzñ ¹cŽÉæ_uÄýy/&…ó(((é1xa8CR~…Ÿ!–B–k¨®©òçñ«m5?S¹ø«{†8DDz£”üÿ +K K»ÁØõm\A<ÓaþŒ€Qc¦•}æªJ÷úicçzÉ¡šÖ*Èc“YTIõÝcxÅASÈÕlæGŽ›ã2bf²Õ=ŒD¿Dd+á¨×õwaäPÆ^ÎG5RüÚHOõ7 Tº_Nʃy÷÷¿ÙÍI~fËãr‹iº9Ö¥•Ý`6à¿^ŠÎ<’…™aUry›et'ÛuÿŽ}ßnž?G*{ž0(ÄðÅaŽcµ `û a<„8é¯_ñÁ¼ŸÁuB`ÿÀ­DQ“¿n_k1l~AHô?h´3ç6Òá\¾8³~ˆáƒ€•èˆ@÷é¿™~Šff‘œPú1ˆ…È"Ù0«½Ü,õ:Á‰Ê6oºŸè‚1Y”çpO%e1åÈ,®Ê…­v8óQ/BžŒì"ʼÍþx•¡±£œñêËÜŠ‡ì”ÛK»´ÞkL:îA@I#ˆg-¸9¬”%&h® O#2š–Ž8cÞeıï8{Xé(¯ ²W¤ +Â)³?,-"ZH—ï|c¿\jöÀL7/Wq™Uý¢-é`„×W÷ tË„‘.@j,š¿ó†à=œ›£ñ¨ÓáÊ!VöX§ÿ_‹ò`G Ylx2œµ +ÊârÐbÞÑüERÀ·îé¿+FžÏ—e¥ÙØï«PÂh••>I<ÕãQ›¥FA½Xðì8Ÿ¬­£¡r:\$’ºöí÷º 9: ºÂx‹6Z¤ÛnE¯B#‰ÎÏU2»×%»’{“j‰ è»åH¨É-mR»½WÝ¿t ?:²nEl³¨ +JÃø‘PY¼UßææG…$ÕŸTž +]E 5¨¥¬â‰Ï-n—”MµÂ™‘Ö÷ȘœQ- fÖÛ¼$ÕσNE¹D²*Ú °øV«QÌßÔT}¸Á¢ì}äW3Çë¨6¥‹J:©³?^¹·Ž™o¦hIwrC°Úð,ú¶ëÒ4±³’ž¡ZO¸Ñ)ÚæxMˆ9€Ä–$…ßèŒ ]FÂS%*÷€\¯ëßÿxëÙ@ñ³ÇÇ‚!°Îà`5@jlo*x¡f«¼.sEPo¿B8’p¬‰2K 8ü¢å²˜\û´ŽãÅ8¯0ú>Xe/¨‚z¾"›©”ûJ…ã€W¸G’¿Ì[ˆÒW‘0¡2äN甥ª§îòÒËÿ§}ˆ‚r6f`Áœ¨ºìo !¬wQ®qÇkw–¶µO'þ±Ùý$ï-„‹-Ÿ6€$ýƒvr¥Úöò×Ùö€yþ¶ÃTËex$dÒ¾BÀØêû舿±‰È®Xæf¹¬Íú"E6LÊd? §ÐÀ;üMItfÇ𑢇ûŒ0†^§I ú;L} ‡”àxÿ¤ŸdLÈÝ›f⤤-å¤×åRPÅ*³…ê™è@`ëJºòç! §dÛpÀ¶©(U>ÑÐrÄã¶O÷^wáåÕ–í€Hu½;e†ãÄJÐ^çÐÛ¥¾¦ßx–bÃÈÉ^2†!A:g® ñ7÷»ÁŶ‚>/BW›=OŒb¸‘ÄÆÿrø;)fÑ•P<1ßuWœÒLËZ|ég/4[œ,'C‹í£ßRš™^,â‡.“®Üâ–â>îAùñ­÷øÌS²úKÔ)+Ý40:Æ üÖ‘˜‘¤4 ªÎ†{áô“ÍWŸ1'ÑØÌøÛ•óŒ]µ}æUz™µÆzÜ>|Æ÷ÅÄT³¨¹Yfä÷ž*ÍÇpZ÷“U¤N§…âsíRl$…Å7xt  ìãpƒËSgÙüQ§~'EÛ‹¢+yÒá1]qo–¸PÖÿaOjžQÌŠ†£P‡Ì&\'¿òk>„J–AëóKI»brñýX=9ÛÐÅΤÏÞ^osì³çÞíîÔ¡;ɬ†x‡OÃHk^ÇÒx ÕÚ»{ûã2àÑùñä \d]DÀÙ½¹9$2êõ/-PKíBG+tèöáµAäHèðg¾:¿œß¦ëÞûʤ~|Òn)RE#³nZ‹bùAKBÚà‡{amjrØ×8g»>B·»ÉD¥üs[M`<ïëù“¶{ç€nˆº¸4oC®áѧBÔžý³®Öì"J¢Ê@!‚°› º›@ ³Ýj_éÊ£·ûõ‘š(“ºÓ›™þÇý²Oýrn­C®¥w\E®j/ž—¿„tp·¬èÞSvO‹¿ÿXúÏÕ‹'ëÅÊ éBsÏj û:<„³Ã^‰@XLxJöò#õÎ¥±°ûl…°]ëàPȶŸÑñ%ôN/îäAü°Àá¤æÖÑi%³Š§jËeWñŽVf§¹†{úY6¢«|ºB,áî›ÎÒùí¸¢a‡öwÃùüî8‘ 媰¬ÿ\Êÿt¯•“ý„ý“YÃ÷W<ñ–¿âß(WitOÓÌÚFÉî«®%T £f±fô›ÿ²#€p9Pä3( :'Zp¤\"Úý±aÊÿÊ’8EÄ¢ZtZ¾•0(>kÇ*ëîƒÏõ8½-¶•Â7°Ïï0#ìÊßÀí ˜ö dŸ‚Ô +'æW'@Ü;]¥sTk—þö@‘4*Y‚“kTã(ëðÌמc +{¹NÔÝ0z—ßÄÂ:ÁÏîÐlÞ‘Üü¦Ú¿4¬‘&ô‚Ûô?(ÓL~,¢ó‹gô ÷ÀIõp´eʾþÕÊ"¯5ý¡ìÔµÁXÆlÜåèqÔ4v€ïŠÝÛBRRÀRiŠf¡«E‰è°× 4èa ¡¹}“µG$m¼»4-¬©/x»8Qeê ñ4K®ƒñºJçp« _é“Ô#'-ejŒKZ %_ ñþw*C¾$Ð*ÿV±ìc#è|<‚̽¸¦7n_³é„ÛûŒq³Õ*Ó¼ê?†ü%×… A øú +V>/^ßù² +õ7Å8KÛy£¦#^i7¢Óbµ^r¿i<‚.È&Cºx5÷KJ#ÍÖxäñŸöEWÛBB~(ÊaCö;˜AÑ¡8}®NyèñG½Ûƈ^ûúsC™ +ÀªÀtÖ1nVx2xÆìµ8±¿fãÂæ;4¬%Ÿ„¬çÖJÐ 'R«+|¥Þb !àÏÞ¯žÒ EÝzlk=ÐØP !2êùƒìtnœÖ›Žê4õD‚ñ¡™“¼[˜{”· +–H›x¨!L£T1TŸ¶¤íBt™–׻Ǣó /î$ÜZÖ•;øà.d^»Pï[Ž{é×~ÌfÔr ÛíÀà…{}›´Äñ{yýÈ?e°æ¿zbûl/r§ëµæ[:¯Ø{é#ÿ‰Ó$TÖoµ.ƒ(¨¦Y˜hVá—tI}ÚøXH H¸}þôî«Bªpƒrà@$Ÿ÷öý)p•,EQýKGnÏÚLð’ UhRj³×»1$«…F+sRcÊbåÄæüá^¼ÛmLØÑø‹º¡§–ñ£#GÀ©¶6• ¿Â=¢ö‹I“†KÑÿ}Â+5ÈÕ±Ìý‘^ ›Ã_Êio:O3M&ªæ¶ÂQsþ Ö•Evµ&5ÐbÃK…"›>Z^F…±¼E¨Aë;’æË«Žv¤MÝ°õà^hÿø•C3n"ÕPóZAÄjÆÉ}  +Ï ¨!G"2û×› +^8[¼9°£=E„§ ï„òD³äþj + äÝw'€1Aœòµ”"Ü´"×sKç’õX?ÒÇéÅ4´KbØù{:½ÛºbѦºöÍGÕ¶£éF‰SO„u)=|r2Üö%ÏÙE(—x$Œ #ׂ æXØÕ ØҨâ4s•P‡“¹ ÆàÓF…=§0Uú«-­ÙÞkµ‘ FæÒFÖâ|Ä'´ÚþÇÇŒ‹«Œ+È@óïBtQò% +Yya¶ch5#ßd¦ï—ªˆ¡¯3&wSyÓ¸æ”ܲÊÛ^G´”V^È%T3ÂñÉU(ëN/ÀˆÍ'Xn5Pñ3FR@‚âoúY¯4ƒH9Åõy[ þ<¸RºŒ¬9^LfC)†+ælXRÈ8¼;ÛMfž…|r€`^Û) Û´q¹oÔÛ,Ç°$ظÉ;xRà† + +8DÅÉl?½ýG0ÕXQЄJCç°Ÿ]‘-–Vœ.EÏôe¯/Ý먢D죌}ðDŸY¹©(N„ ÓÈ ýH˜ÿî•^|Š’}”~çÝÊv7œi©‘qš]¬œÐ°î}åõr+×ß,ºQÿ`q­©jÂ( ›´é‘;ÅiÑf —祫Ô'>ÿ©i–jxŸ¢ó}qìß¼±|‰ q#+JåyWm9È=]4BpÆ©D Õ¶›þ +ž@i`þRø¢›@;Om·8?4ÒØ+f'GEEo @¼¾«Àø„AÖ"/‚˜â~Xl¿-–~F‹.Žv4ÒË8—¤æÓ ”FúÀ/Ôèó0 +ŠêÅ÷³#ÓÚßBÔ1$O +uŸiÖ÷ÑNü<tS%ÿ†>Äö)êjl¶mDdSÞ|fÕÓGz•ÂI€>cÝœ—«ÔKn7csaHñ€sý-®ð¿å!F§ø"{-Ó¥A8ûþwvOðó.@“©‰Ÿˆ\ÿü'»"Ô,œÉÃ5ý÷"ÔÉš²å¯·IøþÊXÖãš~Ί>¾~d_ÆÆÿ¶ú6(±ëžªQ¸aîÉHXL‰@z}*…Ž ™7€ç%ÓÛ Iø<¯é3ssoøc("a¨`g­~vÁ/ÿ à#ÄšÝ;¹]cö#õo ò™6B'A5Õ ²XS«%ü¦»†p–„êgY ÁÃÌ#áý„œ ~ç¾ÿâè`c¼±øyZˆ­o¼.p•håVËMˆ›•.p™´Ñ·p©P£oYrõ~9.ùqkïùî¸ò™ìÏØ1Ï|UL6_ç‡jaî’6]JÜ–f~(– ÇU;RŸÛù×Ù†5Ck8žða@jÛæ_—ˆV;lÓÙù¬ÐY˜3 EE‡÷†Ž‡5#4kÕ©‘Ð ®âò¨.-EÔ[•<­ÿ6¥‹·`æ۴KõKk‚1P'uíšËÙ©ñp¾E+uA«£€,¬:ÿ ˆeÎ$ž/ÕØ~Móˆ)–”ÂaDÇM¬oºÔŸ5vMæü âQ×ü”9öö$~ÿx º>Q˜Ó|ê?€r™‹´é*ç,fˆ%€juØ_ÞÿÌ°B«ÛÆ+® #ÔÍ6ŒÌ¯Ä&v¤|*PRBjÝ)ùÁ.ËtD@|­3 ï´ÒÝtâû.[†ø‘`ËDŠdq†­íë!”Áa^AÆ•/Šß<`^ HD=h°¢_‰6—€ ¤}&Œ0æ™UÙõ°Ãç‘R€iÒáÇÄ<¹Þt!’%›ú˜\„Ι ~e‚òd½¾Þø%ÁCÞÛÀT¶»úÐþwfí½|àjdÅT[×úåÔ¨–z2œüOÝ«tÐÌ%ÀìÞ¥ëÉÞ†k_þ륪wÁ‘qµ¹Ü÷šÂ "¡;¨2cWŽǵžkÛƒÖ°½_d$#•æÈ·ÐÌœ§pgÄ°n"Wöë€1AŒƒà¨ª ö;qfp×\}l#‹ jh¹f°˜“UuŸ˜Kï‰sU¿öâè·û¡öϘÏÆÅ4òJ±…‘o±ÆY KƒP|5.Mƒ¡kò¤ØÏ4=Šs¿+ ;©Š•çÑM£›5\÷ÏH +ßž‹¾£ìú>Ôl-º\±×N +ïÁê&BdúL5?;û|Wà£ÞÍB0,ÆTw”=”LVrû½Ùlˆy“¥y×Ê«QMÜfÆ–m”?Ĥ‰Ã\Q‹å‘-¸“}D—ü&+m+&o·4[ Ý.Ó~ÏóØÅœ ­Ú+èÆ,Zbü%í×ί.Æv¿Y·ÝTbº0Ùp>!rü †`Lˆ;Í­Ûnõ$'àµ9ýÌMtTšRókÝúðgTŸ,–Ä3¡öo“*šPÒ…zŠÕÎÏ(Ôôïwòx?¾ä 3:ÐÓ‰{ƒ®€@‘\a;žl >/«4!½àqªr2ÐR“„ë¿°€²á0’™xVsXŒ¾„0£©0è8rØ¿¬ ‘büüXÞÁa‹vMêAØ‘H˜@'û»ÝˆBûú Úüq9û¨.@BßcCCä¦fÇ¢~j¾Þv´ƒuKT<¥9… ª¡ù7ÆË…ª”8€Tå{®fÎDq#ß\CIV¼{¤Y9P³¡;ÑD½úª¾>?š+5T ´£~xü7y>(œ[svÙšcŠÀÜGâ‹ÿE^U÷Q„·9ä?ôVµÄ6ö¨$ªú9ÆáS ·F`ýOà­ó/ZÍG‚¦`0×)ÄÜòéàí*Š$£,­Ð &‚àrÇܾ½JWõLM]È“É"Iúi=ÉvëÃŒŒFê¤"$,hÈÚ‡îr•÷:¢¥§g%Ó«…MÝ}Áÿü L©]ugª(ƒS’ƒdMîDèS+,Ô%“ŸÖåŇØduKwM¹ÍÂÛÞ¯1ÙýÆ°lk+õÂغy¸YÅÍQóŸbh/Èf3X¨²ƒ(yîë¦059[piY1Übb¸zn¦iÊ|ÉÀÛßÚõãüú’ùf¥’#3Ñݳô*½5ð€Ì¹wí]7¹"QXXÖ—¤HDòÃÑèM;T(©U‚4Åi`DAiܬ` *Txh®)TÂ…ÙT¾¹Yá`¶í™éê292<½¬¨z^>g\ʱ'™÷l2 • ù£ôS_0“ûÖŽG´L Úxò'ûè 83ÞìxH×À»´zÇüɇ/—ÐãéÔfÌ´îÃád)×C^Ú×æßÊ,Í¡5±OOÐXqÄøÓ× `oËŠ„‚WÉsÇð* Z6!ígˆn 77§Ìب'ˆ¤Ê«4a%ÿ€^ÓŒvõ´ÂÜ­¶âÀÝeD¡:(3cú»q®´¢ŸUòa¡à¼Ž%|§Íô|á$‰éÇ á¾mQÔe™ØÂÝþ”¢_ÂؘßXØÄPVÃ$º¢Ç‘œ~f)écð¸T­æõÅÀñ±îÓÅ®N¶ß¥¢ñ÷üL|Ã2©Sñ!ÄåÔˆÐEïgôä‹þ©ñ¬©>L¤èÚ´8ýÌgx–ðß6¢—“nº€¿[*½56¢E +µw‹òhú+C/)µ"ýBZŸ`ä6ü3JGZÉF¢fxíÞà­Ê–cßçŒà[ü<„ÿúP\0MQNTs¤™ä…«®°ñª2—Hë’’XAj4ÑòOA,q)eÍ-ÏŒ[5/ÔN€õ°²^|·Ðˆ¬Køc#œ’ù´€´´J'ç(&xHnP ·˜HyˆvGy~.6ø[—ûHš]Ze¿ò]Y*Û¿mÑ(造bX Ÿ¡È:¼C|­p±{šþ. )åña¨Ý¹KK]z¹NL?&@Hów¡øFð‹ØS= J¡ªØvÕÚúÒxq œH`þr XÕ#?FäÓØ0éʃº¾’Ÿ,ÙKÑ(-ÑIõ¡!–\ü{,¶­#°qŠîY¤íHm[[ó“!ÍÆZâ«ßàB!û€×õ¨À†s3ülP!è= N•®»½Å2f!‚¯zËàðø9œÂàû͉vÏ«kŠÈ”ÓÞZDy•(F°­ž…´<Ú‰`0š†ÿt ŠÑRá#Ѓ È ”¯UõñÏô +)Ì\ÜQþùÖý£ÕéÎs0`é©Ýü¾«W‚õkæ? …%‚½±ëiqòëÌ S‹ŸGGæö‡v;ñˆ¡;~) ¿2m#ýËõ_X©±½£ð2ß¹HÐw¬I\]…õT;½KzC‰¿T0‹=ÉÑ8Ù»s„GÂôFœ¸ÑE=˜n$…˜*qÕÖiïNyNöÖ2 ¤ \ý»V€NûdïX3è¡y40rFð¤¿.êTÁêz".NtÄñé –ÕGmæ¾ü@(õ~2¯>~eªÂ‰zéñ™»Î +77mÓ„ïúøx¹$ål§ B[0%$í*ߺä£o’~8Í'w|BùqZv“îKF<¦cµ²¡ì¶&/ÚãW?g¥b6x3g?ñ4CFBˆ»Jb.½êÿþ¸ÅW÷^Ïç#‹Þh*ßzñKÒúbX”ŸeŒ½DG'ð*£ÌGô¹fõƒ[~ߺè·@ej ²<\1Î&ØóNŒ„øÏÉ"ªco8¯°G2:¬zÔé!~¯‘,†Ëlջ߶œ£¥nóŸü×በoeh=þi?ÌàC§<ÎÔ15ª i,>¤wŸk IF)ƒÂÚp[µŸ¥€uS»Öéͬ(&ZÂòîJ=÷re-½ú´3¡û«Žæè¡°©‹ˆ_ïÆ*“%Ô[Gýö²½CV‘OªŸ=.Åq˜x‹¹#ŸÁÔØ%KIU1®ˆ„ ªtN£u5ù?•à%‘¥09>ùýæ1Px9 Cµm°´o¶1y«ñÙžºÔøûÓhQè2»›qEêgŽ®t5Ç‚<¬EQ;*™³–´ŠýJP§øîÏqëÝi0:·É^O8x–ÊâÓ,;g§ÓBEƒ°‚î튰yÀÍ=îwóSŠ»ñ<ß)~½)Ãݵ˜YV7iuñØn&nºª¯Pó22s`Çy¾N$¸çe¯aºÕiåÔ³DåÒ +¡úG2‡Qu2Ã8Þÿñʈ=È°®Â=w„1aˆN+øð&abñÙª;|¥ß^Ò·y5â¥s<Û4¡!žk ²çC‚¥-’<¹\ë¶x'½”±³Ãó«éÜ­ -RšXE`°6  +Ò–£ø#{“FXªg;’<pÀ´Zƒƒn}ƒñœÍ­ÁÅ_¾^XNRÙ#û©|âÔ­B&Û©UÊÛé]¿‘>÷e8Ê÷o‡ùà³Oaj×dîŒqÚâ[Ëè Bâô "\ƒ Ž”κ[/¥)ôoþUÎÈôpPú¾9Žý Äõ$Ù¸Ië€b}cœÒ¯˜OiÆ$odp¨µNäl—S=á1 jŸCÊP3<§éfØ d‚ß+ +A{ÛT=}©˜¯­…OTJéÜ0¬*kùÛq§@½ýH2Ký eñÙƒ\Ô1ó„šr–à³F¬±–„íÞv†kv™4@1WÛsæ8›tqüf½ýxæ,œfZ}e—Nƒ4<£»Ä +iw3–>ÁAäœê#1“v3†ƒ=·Î¤0'=/Þ\É¥ÝVY¯\ŸFk[‚)6Œê=MÊ +3ýµìïæSù%f$¤Rû¶> -% 2258 0 obj +stream +%!PS-AdobeFont-1.0: LMMono9-Regular 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 +%%EndComments +FontDirectory/LMMono9-Regular known{/LMMono9-Regular findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +17 dict begin +/FontInfo 9 dict dup begin +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono9-Regular)readonly def +/FamilyName(LMMono9)readonly def +/Weight(Normal)readonly def +/isFixedPitch true def +/ItalicAngle 0 def +/UnderlinePosition -150 def +/UnderlineThickness 67 def +end readonly def +/FontName /FREPJB+LMMono9-Regular def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 66 /B put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 89 /Y put +dup 97 /a put +dup 38 /ampersand put +dup 42 /asterisk put +dup 98 /b put +dup 99 /c put +dup 58 /colon put +dup 44 /comma put +dup 100 /d put +dup 101 /e put +dup 61 /equal put +dup 102 /f put +dup 52 /four put +dup 103 /g put +dup 62 /greater put +dup 104 /h put +dup 45 /hyphen put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 60 /less put +dup 109 /m put +dup 110 /n put +dup 57 /nine put +dup 111 /o put +dup 49 /one put +dup 112 /p put +dup 40 /parenleft put +dup 41 /parenright put +dup 37 /percent put +dup 46 /period put +dup 43 /plus put +dup 113 /q put +dup 39 /quotesingle put +dup 114 /r put +dup 115 /s put +dup 59 /semicolon put +dup 54 /six put +dup 47 /slash put +dup 116 /t put +dup 50 /two put +dup 117 /u put +dup 95 /underscore put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 48 /zero put +readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-451 -318 734 1016}readonly def +currentdict end +currentfile eexec +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ß]_ŽöÝW_ÝÉù(~ÿF†àv¶œñáWfE@ñ»Qëc»¯¢PNêd¥‡qclµY¿„§†]¾Ošå¡æ®kÖÔÁ r‹ lÈú¥n€8e‹ &ãy~¦8qE”<£ÍDÏb´]„Þþ$Ÿ<%ª¼GÜ¡Ìd`øF òž‡]æÍ"Ãb¶ZÊ9 'Nnð à¯]Œ½w¯ù90dÿQY°NS+Ý{M´>d¯Õó¡*Ÿf$_ÇÔÏ{}äþÎE¾ÊN5´Úw0Æÿa™ëmLÿ@°o²Ÿ­½praè,¿Yuš½vT fEC/øî -^°Ì[XâO¨åß2þêÿ WEƃØKQÙB:”ŠÒAvÑøy™°ug¶¯ÙíÏ=q“p5­—/¸…1[úÕÜ‚!l2T˜'9HCª¾a—€®ĉ€üw™±Š¯‰Cî3^—Cyœ’ÔÙ}^µÿ–…À 2ŸA‚ú3>ÑG|ºÂà”ãH.øˆç]¶J%KV`à8ß?½†Ã(Ì0Í÷ÌÌg¨óôƒêt,×OT7 Üà$n"JaoÕ82*tß®ìû‹¼Àç±.ÙøÄüÌÕ„ñøeÙþÌ]'2õçb×v–ó€Úè«ëþÐi“ß)kŸ+ã÷šT½:CY#M5×7¯^ÓkjÈþrcÖTÑDd¤;y9±§/ªä£EêÍœŽ‡îåÐIœ7K| òŽ”Sö­ÁÝ¿[l6ƒáå†ê«÷¥ +K|ßOV`bàÂß'EÙp…Öœ§höº‚ÒõÛ(Ñuóèfè*Ž†—âéþ­ñ؈{£s’G´Â(\–h‡M9?Šª¬5 ›gÀ|Ü 9û@£?ä +â…;ßò^;Z]“‚Ý_·pßêXÛæÆêì¯ô5Mlî•pCŠbØÁMDþ ¢¼›†âC³õ ![]¡ÒzºŒ>¼¦¤§¨Òn®žÔ¥ç˜R>X5 ks‚•Æ¾l© +yHRëàv¸ú,#«á#ymí­B[Ü! ºY¸‡Ÿ|+á´ˆÉÖÌ@w˜1Èy0¼–+[åÇç3Þ€ º©;ð.f¥Ká›ÕÒ$¶w:¼É; ×0´6‘áI@œÛ3úñù€Ð]…3Š}A‡íEêŽ:l9éÙñ;fQIïÜé1Ë×YÚÿuK­YßEXÒÖúñfhÚêƼ½mxâÓg{šG9ÆzÏ‚ªÁi¨{š£$ŸÍ@í½”–vœÖß2BG™4õê˜#­=„Ì-*n=׬>¹‘paŸ¬\ßµ ¨wQS©RÔ9 ~Rã~â-‡aªwî×8qWŸrM:åŽÚW”D)E/Øšî(ÇÏz×J·Ýœú¤w/‚‡Uu=åOyq?vïZ‘Î~±1ð-dIžoAàE.¢‘Gjá,›®zS*1Ñ ‘¯˜£aJ€„[Çr€9CëºçÆ*A½j ²æõ‰ ü˜ ÌÂúŠ(ïS˜ßhoTƒ åhŽ €i¡»¹ …un»–µêN„Tˆ·–‚»¼ÌÈ™ë¨uRm-Ùmq.b¿ÎÁ‡ÛZŒš.ÓùÑ‹>Ù[·C|„ªÚ ^ï¹KÜ©°Ã[Ò sv@󢘬ÿVAýx`üéðÇ!øä­ æŒÍA%'&\}ˈ]k߉ÈÝÇð  D 6L@0d‹Ã—ƒýzá‰Q µuh8Ú$Üx¯Øy4¯[þ¬íåÛØ +Š•ž˜uƒU¬cT\ºo¸é¥æ é\Ç‚ÿ§($æ‡FGwÄQ·IÊK• +Óµ‰Ðžþwž †—•§#LðœmúæÕïò‰©µ{ð#Ñ€ÖîvZÓQ ³ä~ïS§!»RŒ«¯éAj¥àlñ sq&"ˆ¿ËúbyD–¿=pXÿ+Qnæ,š•ñÀ^0Ic rŸˆsþ¨_KSºæ•(É•!ÚkˆS©#:°h˜‚ºé’J*ÅÖÜfWÚòÔƒê)N¥ÕÄäþLÅðpA@¹t£GÐ~Èeç»å5ò°Š€‡Lð؉(Ga°ß +DÙñì„18ˆüz¼T6|¶éj_;ï¢? ßLDÒ<|úIþœçæ÷K´ÆEùçó à ¦¨rÑzû¼©=qó£Ó!P µsƒ{¸ø<,Õ‰†Ó²i ì8æÞ»Þƒé>5ñˆâ%]L¢8ÕdkdDçÓ’à’wûN?ÐöÊà+¢9‹ò¬¢ƒÜìfR9:™¾Ww¯Þ’ ¶w§JÄŽ4YüÝ“(@ü£ruô?W‡ ZÊž4Ä[®ÙÙù=©•8yjXý™"MÉ +5dÍÒHÛðËè½Ø¢šIô@ãë´ÆÕãÓuK7ÅãµSèÕq›Dgÿ.»\t‰5ƒh +¼dí¶ÊþVžz¥¹©ªE"Æ„`p¢UNÑ’û‡3û‹DÌpeEN:rRáÁÒîY ,ÓÕ]øMzvä}7â*žˆI„ìuJÕÿ¢¡Ú¢dåTº_Nʃy÷÷¿ÙÍI~fËãr‹ew»X LÏU`ɼbåù»b8åZš¯ÔÜ1Gìcã•tæÌî±öw:SŠ„~“#,FdâÄ=ô™¾8Ê@‹²nβÖð`g‘ºÀ|l×?OèUuKȘZWd +a²ÒÉ–öÞ´³ÀÕJ´¶Ò4í÷ÃDI?,\8ñs®'ì…‰†a€D4OZ!ª\Èò&",f¯Âb‹³wQx&`HMòˆþ‹<ù'aàiÑômÖØãî“B¨£ +C*ó :¨)Ѳ*Sßé‘k.áG©f¨·t4½Çš)õq±÷æÕ@–~9ÏÑFœ¸€4k7ØÐ51£3 „¤™å p ^TßücôL$÷dKgZ§îej¬=s¸QÕJ/¥XbÝ|©3W¾üËÑŸ^ý‚b ÛwY% ¯Q ^ø=/iB› +&&¶29Þ9ÞZ«?!@)TŽËò½GòHEæî Á:SqÙUÍÒG„ÀŒ‚Y š°Õ&eRWÒTc;½–×·)LøÌ™¦¤hs¡všÌò[YËCm>³Jœ¶îA/TÞu³ì‰®²–ÙñV¨â`lˆ’¹® +è±öp4d9€Á‡ëàUÊæ\µó˜ð#lè'ËVPÆ*vfr4÷—µTûËbù + +€& Ïcªåao!žy²Àò×ðÖÜ”Î'³¾¬®?5ÔJêj +šõY}î±+¿oG~ž{z …'µ¤, Ëô=Á úU)6ÓÛŽÁg³«êq‹÷í3SƒïdÍá F½ +†ªÏì|-LÏóŸ¬~µkâz•.T½¡5(ûo«‘4rÚ´TzPÂÁåÃ^ç%uþ: ïHåÉŽêO™ÍÇ.¿/}'Û5-tD+ t…ž´“¼$`\[®­q ܉P¢Gg5òä:·öýãòUÑÅ­¢iÍÈò7¢’æ Ð|®FN ˆåÅÞõР”ýÔýt2’§ôË:ÿ’¦>G¡ +:d3¿ÀçpGE;w¤/wg01tBòy÷õ¤+_]óøNú¨Ùvm÷Ò%2Ï{I^”ââFËå=ØÈr£-^É<ørzÍã%\¡*ßÁ#ƒpç«SÑ­XvÀy qPÒ±à¡t"ão­ é½±ˆ8òU¯Š¼v<ÚË{¸åh&X¬o0 +½¹[oèTƒ)-9®ÄÌÝ\´ø—`²ã­ˆ¯!EƒÕ~.«Š%RÕj£Ä|ÍŒncžwŒ3ÿµ÷±ÿ‡J§Ìb 9󺊥«ÅE…„3*>ÿž“SJnb÷ëwU—@,Xj:áðÆKƒ îäŸk'Ý9ª`ûè}Þ›R²ýAn ]½ã„w‰Ðü³U#Eú—:Õº1ËóÁ¾4ЊŠ¢+Þ&ö©C!ÈΦ¥¢)QRÎ +Û/@q€@² ²QõâÙÅá¯äŠc%ÃõeM½¥¯õ°g4ß×á‹úéŠ$?6ˆ^ [Èô&ü&ÕQÕí>°Ñ"@ÆíH2 u'>n¸š) ݵf`žyÇ'\dÈdɺ‹G7 ,}¾æëÊ&]î¹îiÂ}0jP nð|8º>k[TÕMïú‘#¨Ü äYê·,ÏÓ‹W` 1^õÎüø›ßÎ$dÖC`Ÿw€|¤ ÚFª¬½Aâ~ë—¢±¾3ûâ>š íŸË&j›‡ÆÉ;zMšü<ˆ°â«_à¨CwE…£® ™+îÆ»ÖíîoÑ$§œýí²2 +6±±Àé5¬„ilZÁ’Àw”Ô¯’º]b¦—á¼$ Ø€9Ù\l}-ÿ7²iúý˜Ërv «ÉžnqË¿.›ùVWl'ej{Ub¹î~<-¹~<Îf!:ac¸´Lš‰Ž;SÒ6OŠ” yÿŒçT-·Éåd(3k¸3£”×>$åàLnÑ.ÿt¬öÞí²þüê:ˆ´Ld§—@8M ÍÍÀò8^¸ÔœìŸ‘¢MÐ\ä \‡_VöÞé£N’ã’T„ãúE4LÓÔÓ¦‹x!#WB¥RLÒŒ0:hy÷M¥†È"Û+u­¯>^›0 9~Zññ)>dÂaJã…À(,t[¥öñ¼KE‹ó%$=ZÔÕíÄéGX·ê±y®ö=˜×F"Ù–4ÂÂï´$÷=·Q u5›eH[Ÿ+¤WOH1ÌsÑ®ZëW2³ïÖýúv¦“2;OË¿²× +·^?I!é ›àÈŸ’a=´øcë,ˆè¨UNe„Pý…IÇçŠ{/ûAÄ™,Œ£ åKÆ,Y®]¨ÞKþzö-VYKÓEÝŽö}ˆ—Êñ¢"Õ€ßßGx!©‘5Ë (ø»N*£wo’|OÓà’¥}® Œ[š> öì¤ú‹ R^„žYç·^8OÁì}}³–`Ž«FEë}qêÀ@©'*ST‡g¼Ii €SH¶æF)?:+5<<Ÿƒíµš ‚Ñ!óa »9à"³N ƒÐB-é­ &_k±+€#*n‚Ö¨±î„ºÆ(îÔ¥‹«"¯›ˆáIL&ḣ·^P|ŸØ[eÌèغZXyç „ûјLõý)-~ÊA6ÿ²]ÇÉëJè=E¿È +¢€wóœ ¼©è¦›70»¹…ëU5äJbµº€)©ÐžO:cdž¦ÔÎêz0Z¨‹ Mõ‰®ïWÛlª_6Þ½Ù_騣åû™+,á¡TŽ.!ãL|ƒO|¸ýƒ·aéu­”¨4æ}yòÎ:v¡§eÖä\8H) ¸ºªãq…¡OáB¹$§yš‚×ëº.HuF´ ¦î§&ë¡(‹uIZ_ÚUêp o5wèzÞ“jj¿š•'Õ {3ç.`eoÙ>õ¤–©D@=A³ÃÇž€÷§ +l=m9«†ÉwõÂò +uŽôøßÐ7ƒ¼5¹–Ô9â_ÒP9:T¨aUmžO~´Ù½PZKçªACY³¬^4äáÛ*ÞÑt"ùÞ;²û¡]Ýð>ÜW&¢ˆâ[my‚Þb=RÓüCš?lë’D*©ÎÎ3fzôà£ÝPÆC$RììÍNGÝÃQ¢ÆÍ¡¢°•¯ß ~æ›eài6™3½Zª3æ›äôƒ‰õÅ%¬çÌ*¶?pÊHÚ³®¹/ŽhíÞPns´ã‘ñØ­ ÙçŽTÒfzÞ`h˜myÌK) "=¿E3œöl\+ª¥“SõÊ¿‚ISÒwÌfËÀ@dŒ–äíë¬ëÏÿbNó®~ïù 7Æûz 'ÅkD³|—æäNÑ·¦´)H’uWkv±>ü1×Íî ÃFRb[ˆ’E»fagŸ~ùg¯Þ_¡íM]>ªÕ<ô»!ÛXŽ dŬë>=ÿbJ>Ô&ꂹ·FÉ¿}u#ˆ^é +{Xð³§΋ÃËÄi‡cwÛÖqŸ= dù?ói’Œ@›¼ݸÜÝΔð†0¤X³Bkˆ#mWÛ/ZP³Û ù°J ƒê«€17sá®ê…sdïÞn!ûéÑÿ7zZÓ|‘xµDµ•JØÌ„×Þ-Ñ'ÊëâñîåílP‡BÁ’û{2¤Ä¸ýŒ°âhèu0]mzÉý‡IYF$T8Í[½dþTr ÀúDºFKhÚ¬‹†è°"6…Q§>©„,†µrT¦ëÃèt¸Š.OB7¢Kq0©Lï“"ß Îà@]R;Ø^=UÜBòæjªŽ@ûOšW[œƒÏ•)¨P9{£‚©ð«[’¬kñK,ÄVCéìºÔ°BNåxüô ¾ë‚SeFœ2mg÷¦×µ÷⳨k²IÏZeáï$#n äú*jM½z?0õÁ¸®õâeÕ&éëcg²M¾¾!U3d#Wƒcm>ǘ™b‰T08›°ÞÝæO$~¶Ü&ó¹µÎMã0Ú)HmÄ5‰ôRºtËh9ûaB— ³ß„Gä›ÝûÔÎÝ™TVuçCw“–…êµw‰¹}r¯ß7„Ü&¸[Ýîeî& P nÄΟXG—[ÙX ºßñŠ ?ŽÓwª–c‡4)¬B™wúÁÈw¬ë(üG«pP/ƒí§åÓ0²c—‰"Š¸Ü‹%: ˜¼ùñ²ZùŽðOÙ¤&”ŸUs?ñªÀÀº¡ 2èç8H6½è¦kÖlHÈ—Þ¸j³PÄrbÿvŽ5£ZŽá~záqA?âM&%æFNç­´Â-)äJÂUÙ묥CرŽ¢K$A£ó}mk»”³Û ¾ÿ½ª¹¯+«Hx€I«V·NnE’ Ò-â›ÒKHäÑà>sxÀ[bÜþˆu»iYÜÌÂäMÀÎk.ꩽâ10…ßý^¾ïƒÖ–Àú'¸iGz"ÀšQ½…£{=cìüœˆ]cƒU×n žj-BàJÖQJ¸î­„hˆ÷$Y¡|‰».üÓ¨‰·$?Î=¾øVr^Ljbw£/m]øÔëG1^[ÕûèŽfixèN…Ïån{¤|*ÑõT”uÚ„TèÖ¥ÆBZHäÙ(_,¯l«tŽêA2ôs™Á$£a=Ò‘õÑÑzo÷û¯Fa6F +Š½Äûzk ¹]!<˜ÐÐm/Xu0Ñ"£ÊUµÂöetgR‘”kì6‘$ {é!­¸2ÉéL?“'$Xèׯ1>pYNµÃT;ú‘$ñwî®á2®å½÷Ú4ÕG¬Êa¾mAì7ð°øO»Ž£ ?i­ùI…8ác ׆r +qúûâÈ Q²JªÍñ)²»„:2©wÙUÝöÀ( +HvÍš.¼&™ñøT1 ˆÂN&ï¥ÄUHTISÎØ.|u›Š+$ЮbL¶Hï +.ml<ƒü Þ*”­áYrT€ê³?ß'Ì2‘øÀ–G‰mLÿX™ ˆB“½ëi É(¦Žÿ½ ÞbAa‹qÖ Áƒå~`™¹ä%6ƒ ›m•þ1ïëcâ•è‚kù Èþ®; ‰ÝK×daÑ›nö¬ƒXc H†ä³ Hßx–¸“ ¬{ð• ywî?‹·MÈ·˜Ñ‡¹t{ÀëI=ü™GÞ=%ƒ†"﫵§¦g–¬[’[€!í^XúmxK0³9‡AýÙtœÏíöä‹š²bÚyÏ»Y å*öãZ„÷8hRü¤§rðòÈémðž#¢DÛNÕ`­{O¨í<`ŒFIo.°ïâ^b”츥È}Iå€ÐŽD0f^ÜìqÜ9XKǦvœk“ˆ¯ÈœKÉãŸVK o·ê¼{®a¥ž’§ß“ÜàP’ +a6ÖáU"±^aé aÇ» Ö ®±ŠNY(­ÀgÎÁŸ9åu²îxàL_ëÚ»• }ÌðÞT¹–Ç(½34)xÙ”dÖË_Ÿy¼­¬°Î1f…0OT’]íFN0dÉHHX.T€©íAšê±$#×€ÆïäDt€µB²)þÏÍ‘wˆü¶ñj´­]w_T·ŒyK5¤ʹ”“ÛìöbúôÏ-Î'ƒÔ±¹(MH]Ô Íü»I +BIëãr¡ý{ÝWz':ýÁ£÷z1Óƒ™ êÛ†X6¹Œ"ÛÀJ‘Î#{ŽÙÙòÑГ)Z›¡2=Þ ÛmÑ(aÚáiÄûéð}Nch—ä˜Æ*ð ß7võù ^ì+sš›7°~ŠfŽhÑ£á… 0ùmèD ‹l +JP:Yó¶6ßÓgd&7ëIá{D +Eš‰d/E©>†uIª,mÕŸLµQºãÄ‹ɇ˜Iœ‡Q~™Gîâ¹N¼²Y“ü9rÇaVê§ÖEíP¿U欠[T.í—CKw’ÿdQüýíÝ>/˜.¾ ‹©áDWS¸l•Pa´Ï8H‡º*šPK* +’ÖMÇ00áûˆŒÄq„múLÑ¢¥t¤ÎârÐbÞÑüERÀ·îé¿+FžÈÊ^>»Æ­£ç}êܲeý"ˆáºßÎ`Ò¨™nÍÜa8G‹)ñXŽÍa × ͽ|»ð¿¾PB`‰ìpq?Qv³úàeóDJÃÉ_ŠbKÉaC,gK+7ÀS3H³¥OóxÚXãöc–¾v ‡1ë˜õËŒèøJ–ùƒ¥…:£éS5Z‘(µ#âßä¯VFêŽì™âš05°ŒÎ;Rc§Œñ¼nÆï6{æm#÷ªë¹9Þ2’­Ë×8tm>ŸÏû?Õ©J5í\Å>ã ILÞ#>ج~i,~fï  ÖÅ}3—™t¦@)»¶Aò@`Mkaé²zÌ{ebûVŒþ=oþì;v%hQ×Æ7²‚»õÚ°,gî¶È¯Y\_F冰LzâðûלtÃjÚ”Š@ã‘ROôÑ8QÕd +«L–Ù¹³Àˆ£ ܲ<ëTÅ>n,©—CÆþŽ<(<¤e\W›òSÑý7™lj‡0ç/áb¼'x–9`VxIáöú¡êš-Ž«xÂÆÒÁb”)³# F,² âÆ”¦º<~ä) ‰‹³ä̪‘þ¤îª¦Dª™z^*ÜÒþ+W²Q7¤ 3O‹nw…jS鱯c)# ÒpDFw<Ý‹Kð¨Œï·Óú{]^Fv¸°‘‡TqG¡;©8ú½þ/ +Kbk;->ý¦f|ýIÒ#UÔ\H E„ yDV€7.¸£M—*«£ƒ‡²Ö·‰VŒÝƒyKŽ kïÅÜÝ]NïÝj¾Ôwp¿qíFÀ€§9 ಷEã]3€äâ Î£Ùkß؃d+ÛURSZ}O!Æ7mèE]¨‡ùr{§ îöLï-˜LÀ™®Dæ¿7i?|`ÝœÜß á±;Ë Ã~ÂQ½E(r,ñš9U¥‘å'YÚÏ28€åî~=¤÷ÞÐ'…*„ü)”4cMw-.ælÀÄú¡‘)xMÙ +\NAÖø”¾lª¢ Áì®  ŒË#ôœÌ‚QuÎ*>Ów#WÞK )ª¯Ç'â Wä½ó3Ðo©Å¹*íÃ5Ðyæ¬Æ›ÖKðq¢ç,¡ÊÔF3R‡éI²Ú„a¦«ŒHvâTFÉ÷ +¤3rŠp±Kk®2³Å†+û,ƒá<¶š(Œû„‰ËYl"ÏàBƒô¼¥ÐNôb_„%TâË.²I÷ÿé&к©'«Áƒ¥8%æ躟ÙP¥‘£™í¯2»V1áyuÎû¹\í±u^Üëäe(£†Ubã(‡ŠR˜©¬Ëß8=JУý^É„g% ñÚ—¨ƒÛî÷]š˜iÑa-X/ûFráp»˜·ˆ—,7'Å6†Ã vø‘ܼ&Çw +ÿ–:Ü£–ë&Òö¸Ç*/¼Å¶ÀtZô 0¢A²býdM˜—[шP»så1\èŠzLê¦ÊòþLc”1LÙ×9߈ÆU\Œ¥\z›”Ÿ *ó ²=ÃF ,ùï%—7òz£fÙUÌ€?ª¹2ʾF%6r.•ø·á%³œÙ'–‡qíÉï•*â:ÞÍá‰sò~µV‚›®d˜23·ðÄÕP +`ωj ÷žê%EØ[zú¢.ƒ‘ÃßÕŠNvhí`T’1ˆb|b07Ó˜&s.£«Ëm;ÎÓNÃH×y +7ÉuõØÅ‚OÆZï ãcꌋ¯i‹¼`FÙk©ï2¸¶±t|Žš(”\u¤+2Ûb…Íš1+ y; V7Eèf3óõš´qÏ*}:»d›ôW‘7]>fû.:¸Îìþe7¥/ѦmüÓfC/&HC˜¸Ÿ0LÊתÇß*ŽÝuŠ0áìyRîÍsœœB] ËP´´¾({ÍvQv&éÒïýzŽ˜_ì&>l½ ¢š'—ÄM ]4ü@l‡zêCöµýà‡»ù–Vʨ™CŒk¿.¾|è”bXÂ/k06— d~vZ0ûLßN×ÐEk³ëÕ !›pc”¬À䄨R£)‰¦8îꋦLþÊKà+©‡*ò¸^|>u +RÀp(˜"»ƒA$ɪ; +ÙÆÄ.Ê%ÀÙb n'^ jüF3_—¢ÿ êD÷”ÁßÖ±óõ,Õ+æo|Hóä?¿gt&ÆÐì/dW¬ÃõT "Îx뙨è #îœÕ2ã Ï6Ö,im€Þ§8ÂÀ=« Ñ Õ¥XïX,êm±]€m‰ïÀùV‘öi@3ÚÇ:³È¼¼^ЪqÓ½U®+½= WlµêwՃĬ™•]Ñ hB»ô묨ívÜ¿ 6+ 6S…†)gX4ç÷ø9»|‚›¸Ì\lXª>ŒS5Á¾-+m$ZºÂÕ þÒ¹æ J{Pàí•ÑæôZ§Ê¸nðÕ{é8Ç…ì!|?[Eù”eRíe)¿,žÆ´$ñÓg ¨›)ä‘ÑË®ØWMkG2Em«rGQ<¬ÁKöØ"ÅX1³3½¿›ñ‡ú¢ÄsN‘˜ü¡pX³9éóÊP¬g2]‘Pƒ¤îƒÿ˲6Ín‰®e*%‡ÒÞ* ¬i@à¡g!km”ŠiÀ£Âj\swöê´Ù{ °>«»ã7#<ô$b%ð³H4Œ”—à.ª¯`ßp%¶ñR9Ž +ìmmès÷ÐY€º-DHÔ­Nª`u«qÊq­À…pÕÞ> Ç¶:•ë øÕ;Ðý5ô%ðøð$0G¥$å‚8­´s¿#§.µîßX³j?ÀÎ8ÜÇ?@ þæ¾4ò[”k1¶çQíGFÒ’¸8¶×OX|BòĪu8ÛðJ‡ÈÌ'n¸ n:%hûh÷œøõßmQ5Ï?ž¢DeÙý`›þ÷Å„Úâ•ñoÖ"mûÜV"ÞI™Âú’£˜Ç§›[³Eæn¨`Tâ)Sbs¶Ý/÷ÍÄ5ì®{ƒB±‚°æ|h³aDêÛ…¬tŸñ‰ù²ò ålû$¶¬¼£ö)\-ìÈà†Ób?Â/Þ²]R~‹BˆÍÓ\?Ó ˜ðrÅ7»cæ²î•SÞõ•S<Ø»²ƒloÎm&N^âÏlîB³]:¾Pºí.&5%“cd­ÈYXÍÕÂÄo,a`j‰iÆUçÁ)8©DÎtéuI0m`$íéµtQr(ãáÄ›PŸ{ŽÐóDqEŽºò·3˜(šÀA—yo²k‹‰–÷i7CÍ¢»|îÔH"bßEÓI>MÒWõ âéÿnoé$¿ó6nF…Õ2,ª>jÓL:}8¿•¬\a“€ÑCÔØ/Ë_.6’\À†LÖÄÿ€ÞñÞ{@¯°‘Ld†ž¤~ôeʱ¢‚@Ø 7:­}aeW%ÌNÛúìºU}V¥OÓTiúL™u$» ªw˜S›Þ:b`Ài¥ +óMó­Ò7ÙøF¥wÐ Ñt3¢‹é‘eà˯&•‡QAö3‹8ÀŠW»êôà:G6 ÈÄC¯x„¶^o:ÝXç¡eðE‚pÇ-üºš¶v÷_ñ~–ç‡%-÷è}{ã ”a½±¿æ¡–d ñV¿§‘"íJÄ'yH16òœ¦=cÒw`+ô ü0-‘ êdøÛ17–v×»šùO¾’:c›Òy,çTX`š”Æ?®Ë-gÀý¨!…0åøüfVí—ÍÉ]|÷º_(ŠC:²ˆ¤›¾y$äØÖÊöUãàew»#Šãm…N%t¡ú§ÄE¿û!™DU‰B¤>ﺷb°ŒŽ·¼PäŒOð‡- ¯.8v³_5@<³Kº‘¬d¸¥Ï·¿®äaÝY9çá*MÛ§=Jß>±ï\Ù=øŽ`ì㬀:ŽÛzXnÕE¢x˜+DݽÜ÷øfà+J7óÏTÇ8¿=kÆ +Õ0¯}| +qãǨE0®ÿ[3)l°^%À¶î/>¡«©@›U' ®»u ~ð:ÀËrèì59gðÇ‚Õì¯F­4ÆëµY<7ÆÙ*¥è\™°ÏqÓV³óþíÅ;XàX;4ypm; Œ-­<"ÊÔ©7ƒÞÈÍžû:WjrÛ¦iH=k¶TH§çÌB:‘®$ꮨ+‹c–sd• ¬"¥Ïu)8»Pyç#V ½û­b¬ì7†W$Š|q«fƒÀd= \x҂ɇ@ñ€Y£T—SPßÀEXRtŒwq*š’X²“ ­j R÷‘P¢Ó[ÔÓC¦ò +¡Ëšãƒî'8sà7ºÎWÅIr¤5 ¤Há@R;–ö è¾çIá ;Ä+âô˜¦Æ¦Ö|²š^¸|-’š§×ÈJ’¬µ[i\$”pä#‚¤1Rõúv†±óšc'u»y™˜ÀÂËnÑ-ü2*§òeëKF¶˜Ò0²©jû§=>ÆïŒd“Û7ç7)dLMØžÝvJˆgG½ß VÒ¹ rœÍ­£=—Л³Mð«:ÚŒ…Çá¤Çúª~[W){5w‰/ÎFé³pò!-ê#²G~(×5ƒ«1Û¡ÿº‡K^Š6 ËËÞLößs<ÑÀ‹He¶× jì¯~—àݮЖ‘¦üÓüÏ6JêåbR:WˆÃµHÑ[k[‘žçªPø_éØEˆ²—jsùÆþiÄÅízBÖÇËøìô(Ý9G‰†ƒíqʃ€AšA‹ÃÃæÌJëDߪ‘páÃ/0/Ëâù¸yèØKª[Wº.bÌ^³²l„Ä(u#ü=;aŪ=Žp ¶!Ú³Y’Ù .ô°`þØ›u•• Ør®æëd EFS²bÌtÊ) ÿC¹C3D/dñh¹?»þ¬¯*‘Çi&'ÇT·ŸFSÂÅ? 7©˜Çegj®Ö +ÂðQî uXä{F ;¢ûÏyÚOÅ·oØV|æª+'8HH1Ž™L®¶é s†ºš'~ËuÃÿf ŒÂZª]TaÏ·¦µÄùdéó8äuàáI}H. ±Û›u¶Æ#ÝÀâ˜źiéM›…ßï3g¾¼Ô2@<_¬eäÂL‹j2ŠYmÓaà°©ðʦÉð™ +?-—Ï`sRFïÑ@B»Îj9û ¤'rüÿi¥¾ “ 0Ä|,à$\([ªkçÿWPHÌv‹¸ñ?¬eNœD}º_f¨cö×(Ÿí8¹ûõcˆ•Îd\è£ÒJKÃ[YŠ·d9°\ÚªÍ[;ÎÈÁU—ÕöPê¬yÖ#ÀžP°fåBªTd}sLž»Év?`²îž‹øR¿¢Ã®J‚âj^!̛Ͱ+Úîœ2q4µa—Äãäs }jª.ÿAo@6›QvZî–,ÜÁý²;Út¨¹z¿Å힪nÖi/ÉÏ%#8ò½¢W'½ûL£•ñÖ•k~ïdmÛÝG:1·Zg$ŽyZÛé\À´å–þHï‚/ôŠ2Ç?o÷ò©êÊÛôƒÃ§Ó.Ÿžgžö óXâRÒ«T)¿vá§ÐŠ¼¤D:¿ñszñ±©‚¥Î‡eâhd¸ØJ|×PNXÎ(Ëù§”´¿¨ÎÐÄdß{[»\ê0˜ÌæMÇN.jfC‘·¸N"€çgº5þKV×JÓ™þìºÕLfC^‘…CÜ’ÁÒ|Ƥ¡æ}]‹s’Å"Š w –±Fù¹t({Ÿ@´×„öŸõí1£Ãy+Ï­ä.¢4¡;«D!âf½Å&Ø0‹ÑÉÎL äìÿ“á׃–SßؽnÙùàh—L0ŽÈÊÕŠ¯kÆ>¸¿ñ„šÚs0}wß?fPX´ö,5,Àë:|=’””œí Bá^cxxðúJ§°jXš*ðþê_™q³NhMûç‚,´“ÑÓÛg•ré¿ò-Czl™h.µè«fž²jºÀËãXi3$%ù!É!˜ ÁÒ%HïZL‰¹)[&ÄDBc MQøBçåÍr.æ¡ "¹V¹ jãß÷\1 ëð¿¥»+m‹>^ˆ”G îD¤~m\dÚLÕ;c=ö—p]Ó.îàXð1nw ä‘kë€Õ¡Vãïê7^f]I‰+pXr`2‡xµ«”Ì4¤èãI2eÅx⚧SZb¿t7\£Ñœ½¹lØ@S„å؇d¼ú…8´Ò2F‘6b±¦šƒoáKÏ^3f±¼ + 4¢ØÜ'%ÒŽž :ãÆóßÎ,CŸÍzÃîg+×VDî¥&íœÌ´è¢îçß‚Ãm²$Å͇LkÍ]„;sþô–éc"WÍsL0Qœ]jæ冲o4Õ$mX;ô O,h4¦¸=ik&ÊŠ¤î +µ`:srW»VmôHµfÙ©v;èýí,Q6’³X(bÌþÔ1—±Ç•;ØôÚíìw8]3íl÷,Õ+æo|Hó’7Íý7¢Ö¾œÂ¦(¸zK'g;uùyóPú¼I¸Éó4Gmgø®°€Žxí˜*ú«ÉTOŽµqâùŽœ†‘#FÎÜ©‡á½IÇR'0#à–W_[‰9$ï§_Å^t xÔ¡Åþ.\^|îÁèÆv­QÉÒ%ÊaÕÏT'®ŸåK·:¼–yV64c¯Çõ­ +±¹?G( øa£mê8ƒïÙZ-BxÀ +ÒÜjÛnÎòýÓj/4m/Æ ï+–›ÏSÂ[Þ¬¢[Eá®’$ZÃL•·Pd@ó³L2žlEþrr{Ð`qš—±«’žTÉ}áxe(Yÿ¾fdmA™¦.ÒŠ0È“-Ä×…FêuKµÐèï´èÌÁÌÖyÙ“ADP`Uø>iþ„?îDá£qOlôî¹5›5é{ƒ—&»±£/™Û§“¡HªP~‰ä!»4x%z›Èa‡¬›{ØÔ /T‡¿ AmH‹ãÂ8d약bu§½ 6'^Vû°ÒeÉÎî>1Sü«0PÊu¨.”ƒì[?¾„åw +NŽeW~^ÓûÛIO  È«j[ Þ|¬œ/’ÌCDZ,¼—Ö );¿†·j+AŠ@LWH*5H•¾úE÷}«Š_sÅâ½×¢z–û‰ËÁ>‚JÖ1ß$å‹ ¼Ñ˜éyVi䥷ҺuÒ™vž¾hKtšÏÁùÓ,¿!É¥ˆ6… )¸0Õ£äÍšóPSK‰e«‡’{µì¡š·é9GE±Iè gº5Æúûý˜Â–‚u4Y¤×Õô^hiöÜò?@¥¿†¥¢Ï+ +.h×öD]G´6T½Mö€ÜVÂl;_ž²„µU8¨.ú´ŒêÓÈ*Î :ZXi_§Œí£ù™òi`‰L078™L´Ê›‹7NIué=ŸÓ-ú +èF™Ñƒø3aÐ;$Ž~u¼d)}<‹¯;ÉÀÒ }ÏבË%ûù)ôèÑIanjcZìçj¾v¡úþEЗÖÞ.\—ê}YWŒª¸œ! '&aÔ§ÉÛfÅð‹{{bŠÏek¯uà´×¶¢Zh9ìü÷ã­b˜möWCB’=T¸u°*`—£¡e2ƒ"u'FA{µJÛ ¯¶í0)wææ(DZ!+6?šÏh0J˜ +¿.!Þð ùÒywuGþW oåõò•®ö ª¹¶h%Î?$U{M†Ìý4é5µ{¯L3"ê§Âte9×7kÔ2èN +I¦Ô¸"Lpî#X «(D¬Ð‹÷ç€õŒ?dkJ‡L4{¡U^)"íµ±*ïI°cpgÅ ¥K[—‚ ˆ¡‹o^œ‚$lžG{‹'K„»Rohù2©jÃ-*á¨Å͆!~.·¸]á•W«bïÙ¶o0Hú4$iãÌ[TÕo—ÖUòšõ¿ú*a˜r½„à=®œ±-åOõK¦ê¾ûüHß«4¡‰úDÏî>+ÄÆ­>¦,,ÕÂ.¤%Eлdž˄f¿8›ðº•²¢ž»H ¶®ó±õ¦F/¿IæT»d`æ§þZVi +§p.ÚUÃ?çT-·Éåd(3k¸‹øªgYõVZ Êx&PÕKŽÌ7êõõnjŽ6*M({ó¬ƒM›Ûä ^ 9à¥¦Í +²S-PGŽB¼Ì*¸«™‹zWÇ¢*aw'³Ø‚oØíŠÏpßêD·a–µÓ¿øâë]¨”c .ÍÉ[þ‰4Zî?‘ &1¹Nœ“K>{Ù%ÔßDÊ-%>(„—é8V)ᎄIFñJqUU¿qõÑoT;΀5ÚÈŽNëyˆ—k€»ÏH–Gƒ¢84›‚½û‚úAy1Ê&™¸VÜ›qÄ¢…²ZØFüÞÈùÀN‹âØ£]ô`‹£=çs/<•œ>ŽsãïJ!CèAä¯ ·Ž ¬Ñ®¥(WL¹”=Ý‚k.h!kÕ·T²‹0ô5ß^NBYÑ6g&¦ã¾ü@N¼bŠŠy=ÄFã£jÊ°&«gù_fýøHÁRw¾ô|ˆ›ßÞÜ» ’Ï£áf6ç±%'3høÊ“jk“Þr”“íÆÿîœÛ…•CLmøH1f)ÊGÿ›ƒ7–oÔ²S©5£l]%þo¬¸˜ÖHï-C9J}ß2áÆ’X„íÒšÜ.EÝ;ðòÛ=Îÿq~¯ºôì{)°XëtD¼¥d¼Ý:·}Ypöúô4%˜‚‹øŽôÿm2f°0Ùf–æ°5ãÐúnÖ¯¯.|ØëáûVrŦʾÑ[Ó|Ôx± ÿjÆÉøaçÕµzǵ”:‰!Fㆼ˜v=r,+‰©Ié´û_¢Xz¥Q?_nñ›‡¡° ã©Q³š•2 ²qê£Ô+ö¥~Y©Ê|W[At(ɵ8WF Â{aÂN¨6·û8DŠëaàñhŒU­ÿ{ÁðªKK’ÇY”–8â’Q§áÌz©KX-™O-8Ƥ2ÀÃ0Z°"Ôó Òf3êƉOZ2^àlÊ€ÆÁO.D_2À—¼@V´®Á{~ÍŠ’¹­®ÈÆš¢¾p%½f ð‚±ü2„,w®¢Ö]ùöI$5x\ä®KO1ƒ9ƒÚw¯ l1…‘ǵLóBbŒF¶åK·9˜óDa±1§Ž÷-‘((ÎS]¢ÐðRíñK Sµè9|H»å"Ú0*ÂÆæéäý€µ€è·´ŽÊùý$˜ØK¬Md’ ÎßýeÝÇ/è7\‘ûÙXAvrX¿‰íÃ}C…t0#‘tHÃ_‡Yre§?Fžï†üÜóöÜ4pìQímKVƒ¾ô,ÙÎ!Ý%$bMyŸÞS +Þ(7…Úó/>Õ3n&nÁgziÜáj÷yÛ]襵­*ÍNt—4x!Ëø L“áè¾ïi¢tŽ·`{˜w¤rŸÇi~ïãD÷f]XOuîºÒùð‰U3ÅãR´×ÄÁg‰dàüå<Öö?ñªÈwµÔ4"!‘Ê Ü}½” ŒÉìf“UžR¯WÍ3¶õ_pGy1ë‘ÿNË'F†”gÞpxFOHt)]]ðÃASãkÀßWñLCˆÀG"£[͆{Ìϼ O¢Óšowè*„yÓe8±«Îðõ{´ ŠfOæ‹þÛ˜áN0s«óžñì=0húJÛu¾¤ß4:ÓDæ´Çø9>ãÛl ‘á-ŒÖ¦Æ/drw#r¤NëNò)t1ó«úÕd€iªE÷ÃÄñ½ð‰£¦9ŒTPÔÈ–Hâ¬$ÊþxL¸sóxɪlc¢Ë8Y-‘ T‹òi#Nú»÷p`V’kkV…´;éùOI·Ò¨ `¸…>6 ËJ•ÇjjÓ¿_œ€O'žo|!Ý!§ÁsÕ¼5¥Z¸ bq1¹^]vÍ*©uáˆ2©Œ7ôF«ž¸Ù´áÌè%(µ¢–¥RM-´^OßÔ‘º‰`cjß.“™÷Ôz˜T%Ï4UgŽ&ÒåwkÌ÷s‡ßxn) tùú(iï‡g÷ÐÙöùêÕTîsØòl ÌýYƒpyi-Dö6,}ßS¤“Þ•?¦¦‰šw€|¤ ÚFª¬½Aâ~ë—‹·>q­ÍÒÒÍ’*eYYÊy·H•È‹q”5ˆý°E ¬ =èÈl:$•³Õ8u…| ÙóZ¹¹ö“ø 1-½çlê÷_VHïe'‰î»‘ð”æÕ?%¾!hÂÃ:%ý‚õþƒ=!‡h_ÅÚ_{YŽYì1jiaÿÓá[¢ Ê,¢x+A…xb.j3Ëy¶tn…nÛÉYn>Ô^ÞΊ’Cã¦izêÈU]¹p$R½º‘fà2RÄŒµÕ<ÁL¥BGEÿ«›âL:ä%ó‡EX Œp@³ðΉÉ74î:ˆ)kùpHŸ>îPÜ3[.åâÕ¦@ÅŸc,…>43B˜¹~ I—Xì¤5gÈ(+A.As.ÆmK°¨‹R[-¢å‰K¶Y}äöŒ²œuä¶ó'–Ë›c½8" Òi//ýÔ¿p˶Gé úͱ‚c3—©­4å¶ÁºúvOëû¦¦Eg˜žÈÅòý¢}§Y3†¸èÀÞ­¶\wéf9:¥æ?;v"å§@/4Ã4‰^¸œícé´çŒï«[Fò÷¡Ÿ Ø!!ª&Ê™9í7÷ËéÍ šó†`ð C"’†2Ľl‰EqŠˆººÓ;'NÜŽ=ÿ÷Q2aS"G¨W ‚4Å·«¨¦XìéãUy¹:ê%OwB°dÄyÛMwÑ~ª5½}ïZTÐPr ëÈ)ja9fgm •ŸdkâŸÍºp +RÊ l™ÚÆñD_âRÄ/ßTíøóü§¾ö@¼õuoÇ2 £o¨øùBd]Öç‰s¿^³¤9"—k‡b“¡­î¹SÊ:GWB##ŒVS£¿Ÿ(ʽÎhiìRq^IopP¡jlbÖñ$Þ+¦0u–#Åärpg]¿?‘?€˜â,µnøq;ƒ©%M}ÈïÕ¯jÿãWvD ˜dçA‡ê+(¢ÌT´À&3ЭÚñ(äã6à×®Ç +¡'èQ§üù'<Å6 íq\S2:lT×=ƒeX•Ó!ùðà[ÌЗ’ý9 TÂ{ +>Íj5ÃxBÄ’Ú¤h®KÝ0kf¹5^Y¡ÙpSi}C(Óx“¿´$1n¤³‡F¤¬©°h? +x #«’è©|,â¼Ò´ZاâÔѧÀU#Ö¦Ô‚ž¿¥Ì𸴳„š °l]Tâ…c‰Ñ™ mG»èçR;Mê¹.Fp³“žHYÖO~5RüÚHOõ6hÆ]š?«ð„€Ö¹_rZroUEš_LkGê—ÿ_mÎJ¸,ŸùÍ¢ÎJÄ¥ýò5WêÀ9ÛzØqeÖŸLB3ªž¢Ö7ïuþÔ çÙ±C£æ“òJ=Û‘ÝÂñg»¦X]ϵ;÷!.)3Ý°‚ +ú*¹•ºƒ‚]B˜g.‡ §{t«÷Z­:%uÉi@Ü8G>˜+¯\iµ¢P8ì?áðÌÇõ9—bѼ™N”¶›|4:hùYî ÃV²WQ—”jåǹb>Ô%ÇR`ǺŠZGfîk‡Ÿ_[( +G¢ùô"©ÛÕÏÐ9“8Ëã©À°»˜êÓµ­«¸0Æ…¥ßª°1N4Ä’SDU—„íʾV0^ñ¾æM/þ*¥  ÄÈ›­ý2wš$’ÜŠ ³;î±ÚÑU{Û„Cþv*È©è·(÷Yуe´–¸’ľ+˜¦‘ÀUëÜêrjá¹êtý;C¡xÈoš—B8õú, º^ +írÄx¿9"~/6ǸxLɳŠaEçf³“¢3Xºå/í;'$cÐ¥l¦¡…?ÚxŽG ÔŒ›TÂ=o}å}˜R¹Ïò@€®¢¾×´ƒC¡Ý9@ë:ºäš0 G½gÌŒ ’ÎùÒ«qă*ÜI5fn2¶˜@ﻹp­bÕjÐækÎÕ··û^äßåFVÕ™ôh">‰ Èé~þŸ0™‚4¯…JŽÀòqsSûì@’~²NÈz‹Ìl8ï;,Ñá,¡uz›c +ªÖñÍF:¨é(ýÈT„²É%º›ö)$ÅŸ0k$2Rò½Ë«‚«–(6æÍC³ë¾ðå•^‚Ksêí¢ÜCä +¨#絚6kÇoàÕrZý GúKp¯¾X¯O&•ÔȆZ¾lÞûeÞÚû3÷Š¢Ã±îÍLS–¾3âUÚÑ_%.ßYyÁLF¡¬Ë¼a|ÅŠÑU`ÎD£•½kUQe ]A¾;‰æ}^üÚ•`Jò-õÚ’ý­ý+jìfuYƒèOY¸õqe³AÁB¢©ŠþËt‰ÛÔ-¡ (ì¯ÛlêüÑ$oa"i)"MNp¶ŸÑ…՞܌´›¸ª”¢y={·oòÚ% 'Åõ±ýÅ|Ì`Úkˆ¾|s®i–€s­—˜wÜÚA/cW8öx²D±]¸æ7óÁÉ.d+kml«É}à/m­Õ,úJg¾5º¡QÀÑÌ}ÿd Ä&?æV¾Ã•m^Ö’«d:z¼–Pnçµï>¹'Ýlª´y†£Úð>@Rœ£uSþ…øÅjžÈ5"|,ÔfËë•…“¯â`ùåõ¤ +Fœd@kzèb~ôèò±Ë SVtf8ÍÙýhãÝ­’×ëõ‚£ØQÊÜ`·3妕ê´#ñ gWeW8$î$é¥c¶ØØ‚ÀÔœÿXÊ,gÄÓã™y/ïð•ÚH*JD¤~>o0«ƒÉ×·øˆD¡·Ïo¢L|HÇkÙÁí·‹ö.šÒ".[îŸÑÆ3Uºâ¦Q¹{Á¸¬ÉÜfx4/¸ |ÝëëRO*Š¢…@¤Ø[^å#+ "ÌþÃZ# ×ðƒ;8&&¥x!h9¨l7úD“!ZÌšÉòÕÊúЂ!ïñBz’Ûû`aø¶Ã<äKaGzˆi¦b´™uòKsûwu…ø͸]ºâÚVîZž®”»³«’¾Ø†°S<}±Þ +m:sW-y¨Ëá˜Éö?ýp®´p‡uª‚U€0–ádk?;‘­ŸR…G’ëfç"ÖÓÙg^#ëî4x5.ªÞŦw.¸æÑ™uÀH¶¼¤ME­ù¯n=a6.?I÷™[ +Q«Ü)Ád͵·Ãpx’äÎ#G™Œ}SbCÄfÖ8®À?H¶0F§5À#g­±÷äÝl·ÊÒÁšo}äá›D)Dl ³@pÏ¿q¥ý0 úi†áC¦ @ž™zÕ3as·C0Nø«a{«£¥í <¬ZÄ1È“`}ÿ·<ÜáHi7þ…DÈèaë4Œß‚)¢®JâXíá% t¾Çw!-›w¸[·dEc¤ågšª¬È« „Ë»)žÓQÍÌý4Š·[ne_@úÄ_TkϺ©åhô´)Át,hü7ÆaãìË´uCÂqâ#?|/Ü\lZJÉâà¬ñÀ*›róÂdã[h’;‰¥ö(XÝ{¼×³—V«LøÕB¡8‚'ë1N*ǵ@2£>‚Ÿš“ÙRïÁœ(·$k<äNeôu7Bª•Æ>P¿€™2 a<ÿ˜0¹®¯`Ìõ?}’ ±Þ;q0Z¹ÞxÏ=•wŒÆÊÑBQJV%˜–á«o9SN °Þ„ªtCÓ < +x—#уšêúA)Á#aÞ8¿5.ÈAÝè ofºéó:Åà߀ŠQbû¹¹ö.:>•5ýÁ€qK`ãÌQ²=”¯egA}Yï6ÿ7ôJ#ñ\ÅQR¤¾éáEº¹ù” ÑçŒ:B€òë#˜}ygëé[ÐýÈ=ÕÔÆFÆý·5m!%~ãŠAÏ©Ã6›“0î,4u©õ¹b9‚ž¦&[“—Ð-NôÑu<Û·®> Q¿ôÑ):΄…*óƒ×dÈ +•Í)[BGÉ„³Ÿ¹Ð x€çÚ±cœ¢¢m]àu®`7>eCëœ÷L'0bÐtä4^Û%fTcC9S l| ÀT ËP​&à8á9óbKú°uŠ Ïv×(MÉí j5‘£ë¢s ”uªqc(%kÌm`°wÅ¢;ºÀÒ’î ±¶¯PÀÒø]í¢¨¥z·ò³ˆÒ§½Ë/Xè|Ï8CF— ù:L{ÅÿÃ| òÞØ==§®AEÉá õ/;OUúûV‡UÆ¢–#…( Þ.FýxÈ+ˆã4[¡` 6è ¨$oùnx«ŒÊ,g Пf¾A¼¨9 ÷¼ÁÆ¿ç<ºéHÛÚ®¬É¢Ij^'Ñðém†Ð¢ú¿¿| +ñO²XÃmRæƒ ƒÿ\ž®.2óÅ.P‚¢3·Ù ;ÇŽ‘¹™¸GÀ§¦Ÿý=áoì0ˆ ‹ã³BΪ"êG¹dýÏÌöÂM–jêiã i·^þ\a£-›lU2Óh„$°¤²Ö¹O ÿ²©ªK†Âl;Ê¢ ‰å³$èšÐ‰haO]mÜnøj˜ñµÑ^ÿn 44ç˜4¡J§ýZo¶yÛ³ìUá÷VC&E5%Ð!eøÈ‚[öüt²b²œ¡mºÐ¢¿š÷šk‡bÌéÐζ¯ü?w×ß@jm8¨óAÿN(ˆµlÓz)i•Í˜Ã^PÛâÔx’ƒ +ÅànüeÕuv·JÐB—`0EpgôæÙ‡J8P\Ifù‚#¹ïsú¼†‹Y _¸?…F‘nÖ·!žlrHˆü„ÀÿÛäRäd vvçUMÎt—õ2óØyÍ& í rÆ€~³ÄÎÂÛÏRš]°_Šæø¶úêh¨ÜC•î~°îȾÆùCîPÿ®«þó~Ót¾¬û@óšz ‹0t¶œ´£FÐjo«^»k¼ Î/rxk„¸¨ŠªzUuÑÁtÄt¤¸;eBÕ¯‚uG0@nõ˜T¸Ã…›‰] G«¢–sí¼8“ºA¾!·Zu–*Ù™=ŠIy9Èïh²½´Úšï!9‡ÃpÊÌ}WéoÃû¹Œš n'ó½"\°§| S›´‚¨¥G…íSxÔÝWÀùJ¡–Ïã.ò–Aöª±ƒÐ)ÿUC¬8Õ3&Yz:ð.¡´a&G²Z[vîG°Í®ÎE¶È> +p)×ÅV=A&Ä‘=/¶¯J{׊²y¤E#%²ø”œÂˆDwÕÌÂm—ÙY }EviÀWÀÊØkÔ½³exÆMOø‘WûA‡3Ù2Ò·`Wµš^¹µBTWdGϯ­nÊ”~Ò]™Kùã†5EôD½·M?¤õ퀧¬ +ž¡ZVP ób0˘¨:/ò³¹xª#Gýgw2eÀÈê„lÂu¼…`â3Ž‰|ód¸øBŠ”EŽüÄV‰Ú|›ß°ÁÿôW?Îh;ÐÖ ^¯û•¬ŒÖÑ7ƒ£4ýRºÝP:%pÔ¹RO ’ÄBબ§¯½GÐcˆ—­¬ ›ü–a>c¨ÕV¿ßs Ué‘_ÙæÖ¤ÜgüëµÕ屚ÕfEªiÃ…Ä~´Ùt²I[F˜z4æ´ñ"ç…l¯â¸vxaÍÌþ>«ŸÌŠÞ¡ŸeÙXŸœŽÞ Òصp6”×z‚˜¤#ÕÉs“¦=Ö6Ÿ67lúÛÁ¼ô„{2€€ÇŒB~L•á'^Ãà~ŒÝK“ƒH×ú S?·Õ’âŠAïúÆ µŸ™–ªq‰Ö‚f>§²ã¥îÜ@K¹mQLiHe?™æ ý‡Ê=˜º‰´Ðpw›à›HÃA4EJ(@:®$1àg³¸­ˆh€·ÏB¿°‹‚5Œ-0í„õ"÷µZÿ*CåR„-ê– ÌüwÜ’ ÿ õˆÌ¶{Š[@ŸjÂJ4†*Ò”Øq¯=,Š/kæêŘ<0L‡à³,Oâ*àóó`ŸWÑÂwÔ8¡J“¸ýø3Wé ~áöƒîLˆ‡©€=0/PFyéL¥]‰š BÄÖKJ»þÔºÀI¥ýGÒeú¸ +Aå4z´.Q’ÝÍ'&I瘕ù¿ ãD±gùç.Ï3! ™&Ä·‰²âLÞíQ-H(óZKÈ}ZåÈ1Ðb÷\ we&Y«~ë:1dˆŠ@èRU:a LÞjźü¶^sWâQé7WãÝ,—%lޤǡ)º¸6l†Ä„f^¹3ÀTФåÜEÅUG‡h$#¤ì);@XIq +· Ó5™+¾¼ˆISŽïºgˆ¨Z5Ñ÷t”dÚ¶i ä‹Íèµ7&HAPiä€P?òzïõ³de"bºÎ,ÙÌÑý$Ö´. Á¦h˜­ µFoîXf¸:V˜Wc›þ¦h+Bü()*6íF%M€ñ=øGàs0Ôª}þ{zÿåuA¢_˜;+c(a#·§…¦4ÉX¼¥mˆ¹qÄ7K53~Ûã…æèÝ&3†G#ÎÈ*êæÅ6lr:AX9BxC’¯ÁDà{p} [Ÿc 3oºh3¦.0¨¬“DÍ9´Kj\RäÌÃÞýôÒºILðÌìéƒSM’Ÿù?ý} +x94+¤ Ø] ¡|qÙ Ø‚úÁ,Bz]opcK/¢Yè €ÙjÎmŸ„ Û(†`e€ÑɳÛÓÁy…ã%_Ú^¬ Æ8( ;¤ÎaØUàkV~ì™V8‚‹gZæD`Õ%fhò†9¯÷ÅCx ŽËé÷YRR:ö* ÝÙÖQÿ‘¼| mÇ”m–Q–•´œ»Na7ì, +/T‰Ê:䜠¶}£^*Õã“08þ¤Šž YíºP7kîµ:þ +ÃRíæÚíHþ«ópÞØ`ÉÌ?ÿ¡›¯‰ÊeÉT]iIn“Ö“ênüwÀî.®-µÊˆ–ÿÒ¨*·ëÊÓÞ¥do¸FÕž“d+)´í%ôw!?Ñ9– þ’{Å +¼Éj.Li8”ò_&ÓL8ŘØbó¦ ˜r½&kŽø#=ØÑú¸Øï‰í3ÜA7ŽXuÜÝYýlb›‰w#²(×ðcF×dµ0ÒjKåžOD~2\=#–E¼,óàφHÒDsîÐMá~´j~jg§¡¬++ÀŒ8œæŒ¿W'FÓ + ‚©zmR.ž"ý12æ>T”[ +kËVŸv¾ÕýRñä Ù,2¤S™k"<ŒçèdµUÓÞÝÔöâø£m¸u/ô?•EËÇk‘ï“w*å8Èt´$¼ÜPœ¥ÁáRÓéJö,éÂúŒÅ±ÐFCÉ )Ôyÿ·  ÷–Õë|6š¬ +VlG Ò7œd¨W=QŸÎìÃ>±aÎh˜D~¾~Ë@~+@Oc®õ&¦Ï8/mSû–` y3B{å8ÄôÖ†'“ +¯…SÒç’ç7<å?<E4„e®Ù‘;ÄžÙFNõ­³C+zkˆXS`„¯äý²¦v… 䮓]8çJ›îȵ|b¬E›~~zËš¢©ÅP}“AE‡g2©H§6„=Çå£ÝóKË ]<ÙÔÜCü«\+T†Þ÷Þ’W·â½tì 2ãƒINµ‡9Ǽ]3›c ¬(r4„ÿšÝJdCîÃ=sð±R[êúÓÀ`'Á{ŽçÔÅ·œÁ@ƒà¼ÊS`\Ée[Ùk¢¶ÌSÁðʼn¡ÎŽ“Ó·ä$C²ù–§ EiÊ3oFû îØ/oò®Ë3gfÙl©3Kúg c"Ì#÷ÜÑHÿüä'’ e¤¨ÒLµbdž«6 Ò˜\M˜×@Øã1^c =uÿ¾TGXÆ–˜¢:œ¡œç¹µ™'\©M«X›É:Î9ñ+.õÂÐŒ³¡«#Å•u©!ûSÂé+§Âü64ì|'~q£’QJ[VŠ‹vÇxa°PøÁ_tĆê=Ò„ƒ=Ãü üªWãßêú¯×T²îÀÇŠ;Ä¡æø’'ë¬(/…=E’˜çK eÚ(õÜ5äI<îY˜º4 ™³­LmÒÍÍ¡Bœ^–HüLº¼·ËDNßß$XÄñ%î%j|iekDÆô'þfB/[)c ãÕRXêòZOƒjo±màü¯ÈˆcaaOáŶ¨ +¼B—÷4ý•€«)ÄxúTU¢LâX¨x.ÕÀ³ôÐ_ä³ÑÚ|0ÃU”Ÿ÷“;™Ülý€ü˜­ÔF@4Ê׿׹„>17=ÜÌf[®ÌÌ}Çû”éÖH+fÈj³«e»Ú¾ßA¾î=¢½Tmå¯ß•Rɠߢ>LýT–lò7J.µ¨"ź Ìp-“Õ_R¸ÆRÜIi|p”¬1™h›;0†fH·W8¥È­Ø©we{ù3w +/Ý“8¿&;!}©½—yo̬HÙR³V×·¶¸„ÿ2Óœìµ2ð]ÊèþEŠÖܺ.Þe%VÿIM°#T%$„š°Ú'¥œ¥Z‡{# Yûzé²01õb¥¶Žø§‚Ÿv¨‹œ†~·ƒnk^o<à4|óä脹—ÿË S¦™îŽ= ÌNÐn>]àöpÕn+‡\`7 †ÒßW_ϯÜå‚c" éÓDé3g¥Ì†¬ˆsÿ•ô5›ò”šî“‘Åâî£`¡‘oÿ˜Fúcú]±j7ìâ…nM…Ðê Å}]Y£h…||5aü,3(È´jiÌqâ×fnuc„؉µLÉîUÄYìù«TPc%e$œ7@äˆH§¬b“Ë»¢Ë~¸ñêïÑkå¬ÇÍ"Då§@_BúQó›Æ#Vˆn›'¯±:~”¯ õ©ë%aœmÇÄÆ̉áš~Ô¬Ki}òlF^lKJÿ³óÚ÷GÞŽ çݪ-þxHÞCFݪ1…ˆäþkà`óÞ¼´å“¸xÞÛMêÅ ºzKù[.”ò¸=¶ÉÙô´¨Î0½ÖíŒ@(‹i©ç¦ v0|[®d&˜*w«8õ‚¾Ù¯“?\Ï’lo*Ö¥™àDìŪ°ÖV‹ö¹ƒïºFD¯‚÷£sGÌêNòyævnGsxÑ XݦJ&%L½MK=á2g¸÷¤Å–z»ó¹ÃV‰byü”îâ ‘0T©Ê@ó¥¶ÂÛK™PÚ“£‘ +,TEáøÕ×Íyà%ÃÕGC£0q踵j¨aÔÛ‚-Þ¸Á”UæIƒö–QMx±Etá\wñ»á´²¦bNtÚPÊs¿‡_K¤rÐþ“õQõܱ‚*ÚŽ®Â|¢ïè÷ô’«:¾_Xç-ÙÊáˆ:zt¢¶™;¢£ Àå$%”eÝá< ÷îìñÉ5Ó‘üÆÇL"ÏO§ÆîK)Jh–Ö½…¾ErA.Í“¨éL +ŠB 9ß®ÈåÝñ/íO;LŸ»\•MSîaÛ¦Ë+©¼GeÚÓ ¹˜žU½ª,´õí_;Ù 7…ãA+:1£üªWÉà?ñ›,ÊâyÒØ-T2ÜAj´\¿HûyôÚNNhÅÚFDÏ_Ó«¬wGÂl#Ηƒc%{ýãm}o L䡹r{Hs#|;C›½´ì¹Ín±«!<ƒà/îûLljÖEìp¼ªWñ¯[ÓÒAB=ŒÇžzlÿì¡Áô ·Ò$´âe×k:óé摪rΟ1õ@õÏúŸd™ÖÔ¨õè®8ñ:ç_ŒQzÚ2rµ¨g¨!¨4ò²c³UŒ÷ ©{S+ñî·³V6EI\uŽÞIçäýêS^þû·ÑZþ] Œ²WAøG +zäz³V¾ÙòìÓDA–Ý áâêF1GîMx}Ž¨´iÿ² °ŸFÓ×›ò¯µ³û„')¼œ¾txñÊñuJãt;ã}&ôé–8O7ï°= ú`ÔñýÎþí7ôh¢÷( ø[=¢/ÐÒ¡Vãïê7^È‹X±qfNÖ³"W[ ¶Êù¶K‡"ò'bœéØGWF° Õ@~‘æ¶"sž‚¹4¬„æ¯|?ØàSó!ñúìÈ7`]¤È¸€Í9 ¨9)ìdã– ³öUÙW¦ñ9¿á€“…fÿ‚Ÿ˜b™óï’1nSkŒE†r ˆêµ›1‹³Ôc sû)ºf®ÛˆÝ>í>=áàNmÙÝÝÊ7«Ô$”š% 6¹!«#¥„îÒÏ)ø¶÷Á‹~¥Ä. êܦÒå%iìè± W…5€V0-Ík~¤T»ö÷Gö`‹p»šÄ +ú¾.’T<ùjYÙåBs~Ê•B)¹gˆ˜t2Èà¿ÆD訒…ÊuJH´/ß&ÝiÎDÂw’;,zè“E«¡m'mŒÙ=Q´ÕTo‘ SÔc'ÔÝ~«"L<J1܆‘€vŽb-®[‰?›;ªá¡—GÛ!E{ +endstream +endobj +2279 0 obj << -/Type /FontDescriptor -/FontName /GLTUCO+URWPalladioL-Roma -/Flags 4 -/FontBBox [-166 -283 1021 943] -/Ascent 715 -/CapHeight 680 -/Descent -282 -/ItalicAngle 0 -/StemV 84 -/XHeight 469 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2257 0 R +/Length1 2210 +/Length2 15959 +/Length3 0 +/Length 18169 >> -% 2260 0 obj +stream +%!PS-AdobeFont-1.0: LMMono10-Italic 2.004 +%%CreationDate: 7th October 2009 +% Generated by MetaType1 (a MetaPost-based engine) +% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). +% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. +% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki +% from GUST (http://www.gust.org.pl). +% This work is released under the GUST Font License. +% For the most recent version of this license see +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. +% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. +% ADL: 778 222 0 +%%EndComments +FontDirectory/LMMono10-Italic known{/LMMono10-Italic findfont dup/UniqueID known{dup +/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +17 dict begin +/FontInfo 9 dict dup begin +/version(2.004)readonly def +/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def +/FullName(LMMono10-Italic)readonly def +/FamilyName(LMMono10)readonly def +/Weight(Normal)readonly def +/isFixedPitch true def +/ItalicAngle -14.0362 def +/UnderlinePosition -167 def +/UnderlineThickness 69 def +end readonly def +/FontName /XVBOSG+LMMono10-Italic def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 80 /P put +dup 84 /T put +dup 86 /V put +dup 97 /a put +dup 99 /c put +dup 44 /comma put +dup 100 /d put +dup 101 /e put +dup 33 /exclam put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 45 /hyphen put +dup 105 /i put +dup 107 /k put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 40 /parenleft put +dup 41 /parenright put +dup 46 /period put +dup 114 /r put +dup 115 /s put +dup 47 /slash put +dup 116 /t put +dup 119 /w put +dup 120 /x put +dup 121 /y put +readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +%/UniqueID 0 def +/FontBBox{-491 -316 834 1016}readonly def +currentdict end +currentfile eexec +ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXì]› >:|s‡¬m’ºÍeaëŒØ„Œl¤·½v+¼¿:É‹£²D¾Ý([žÕˆÕÂG–ðúJJ¸£O´½Ä™I¦ªzÌ&ÀEnqšJâýEî†Ýðz€é¦&»CÍýªçx›h“+ ‘r‘nú«n¨»DœgúÃýEôŽ¼aw'À}ô”Ä|Ü ýꜱà$Ý%É—šš ד‘Z—VûgHTC(ûŠI_H‹áæÕ7}$¹%Ž\»yOaÛ‹'Oî¹ÀiÑÈ‘Ëi'Ç%Ïo2ê{´ô«PÉQÝwµåŒCÆX7%SëÃ?sê¯Íß~Õøu'iiqøúì³€þ€šN ÒÌ3w Q÷EŸ:šuÛ廕=šÓÛL•)M¿o¨i\ÉÑd·!Š®Ò<’ž0´ÎZEÑáR’Ë%qa‡´` ³õ°›Çkûâ)V&ìþ‰#û‚ÑÇRÇIœT´xMù‰k'ËeœkðŒ) ø}ƒÄIŽ¶³\ßqG¹#OÚëðv1ƒ;ÒdæpV5Ñ <Ô^¬c× ./#Q…E§UhÌÞZ»µµO÷¦GU˜c‡èeÿ¾5E«Ž„´»I©rô&÷¥¦v1Uçü4˜ÌSNä7èÌpk¤ÃÑøÁVe^qïÉT€†"šÚÄ•>î÷UѪ¯j "*ÚÈÉåá¯}”Iç’˜Ç]‹K•ÐÍÿŽ‡}Ø_p¸MVãÂ|~Ímv¤Ò5Ñ°¸žQ+-0"ô&'ƒ˜OºÖ`¶Âï iåÛmš¦h›¾)6¦k‹Ö¼eyˆj/ÿÛˆ…¨jú»Ýåo<“LÛÌC¹8ž&n°5Ì9È(àBüš,Á]©š;ˆ¼¯A‡4ÉXDÂÿ1Gv³èËJCò2ŒXÜ:.'I˜|ØÐ7ß©OŽãÖ—‹1_r:~‚–¯¿î‰ ŸŸ›8U ÐpÖ¡ýaErºÕ}Có±wú ¦{˱‚…½œ ƒ‡§l[]WóVëz,UŸ+gR訑²£hiLº¥][ƒcm>ǘ™b‰T08›°ÞÙ©ÿVAýx`üéðÇ!øä­ æŒÎw +.rmÏ){ìûz“´´"’ªý‰²5îxÂKå„0è9Ðu¤«@”ÅQ‚jS¾›_‰{•|Û'«¤€/å VF.¸ÄZ¤Á!z‹;ƒj”p.H‘¼R{ˆhBAŽ¡‡+Áiù*‰Ð?IŒ¢P„¸óøòaH‚È…Ár!ã‚~¢oë 2ÚßA9 SOœ}ÏÄž~4'±F§g»Cp’Ý|ºx{—ZÌ(HK›êÕ a[•…ï„,~m€3,£ÇÇñéTi”=¥EXò˜åa†©´}åÓÀËb9û-[Jã"O{R‡…ó1à*¤ã +–èÄÅl¢ë7H¯³.Ü×Hͺ¯ãァÝãÿ+2¾yÞºÊŦßÕkPG…v„´Õ”ƒ‘‹|¤q›+D€µè@i㻽IhJeþßH‘ìüõÍ=oÌu¦?ò6Ð0û+ýÙ¥r¨)têðÓlj»žñùÖR¤¾h§o1Wˆð”ÿLdO(üµb=¡5ÒâèN‡e@³cñ£¶H&Í•ð!™ïüôT¤ +Â)¿ˆWz½‚"˜_®×¶¡Ì‰VfíIfygñEŸYŽ<ºáÝ Q«JU÷»®œÄ$âwx‰SGZë…Éc¶µT* èOÁT¶ÿc bGn5ÀµÞ¦«¤ÞÖÞ2ñTMehXÖ=,Ðp8‚ W.©^ F¸`¸äz@}¶¤4奞3å¦Ò<ñT¿;0"eëø™Dï€Ï_9QÅŸ>  Y©cpìþéÅý‘ô³c÷†Qþa×馦î½m®+—rf]¸kLfzÆ/ÇZ=]n—Ì}Ùx·Ë8ƒìH’þ È›Q;}Ø7¦½ÿÓhG¼ñ šéZÈÇžE×£ÿjLÑ*m]Û´¿gN>ï2\s5ñ¶ÏŠ]k³âi'llG^}žU?fMUJÐìf&ŠŒcvRm¦a0$UnåÆÑ“IàjV;9ÌÛÏIº7¤®B›y`‡C‹Ù–ìgRËjQò‡bž»¢ºá6½0™þ” ·þyñµ› ý®,>vÏèîúÌ}J²b¾¦Xªg¸üPx|<ÂÍ’U%©ÀŸ`çÕ¬Uò.`ÒÙ +Ÿ´×½Yé)ìÕü “C Ã’ÁòýNþÖ‡0FñN… 0¼ý+jI¢‘&Ì +ØË{e~îØ_'ýX^®jRT´:3€Â䘙Ð7Ù9·rÖ—[X0%ŸlOX?VÁ'ãfmøGmZŠlÀ¥±B Òë⺵ˑ1§mêÁf§ÄI¥IêQõ¿yÛçwH(xtçÛY8fûRëžò±äb5j¼¼t‘ ë‹®‚ÉñNŸ;tKQÜ×Ò–_׃HÎ<‹c8GÞ`ŽdP]èj¢|é´Ô‡­j +ŽýÏ&»É¶©Ð¤c¼·•>(_Ö&áæ;óy¦¶ úÔã]À¡Ñè +‘±•·àòçÔª])J×b> w«’33ŠÀÚž¦ÙåŒÎ¾ç`ŠÅ¿„´¥Sçáævžmß¿LÆàoN"¡uÓoq”ÁðÓ–[˜‰cg† †7˜'î÷B–·wGɈ«é +üòUÝ|€$]žŸÔ4b€“©šak½ÌЃÙÄ Õ6ȆÒ[qÄz¶B³ªùv_÷ÿ.ÂÂAvÜô$ϱ€WäÍBÈ®á¼Ì¡ ÂÂÏmûœ÷~ð|Döôä^ʉÃ.ÈçÅ8Ì.Lõ¬ì´‚ü6¢2`dÆ…tû|Á¡]ÁE04ÿê$?ë¬kÔöJ!ÃËXg ^ûÞbÀÓ£JÛˆ ¦ä}3œfü$‰4P-dÔªÃuAz)] ±{'a[—Ï` Bwî~¶v9+„ÏA ^9Wƒ°fÕ¦[®J°8~@%|æñüF,ÈThÕ›Ú +rÆø<÷HÈ“ÙBÁE Lü֥ƟïÂ[`äÌëe—`€ÉÉ;Ì.‚sî4äï{8ùâ«=3bþ©¸1âiÄü‹,uáh¡1¯Çgs+Ã2¯Tpe:e$äýÏÜ­Ä +U;(©Ü3UŒIi”w>gª¤Å3î‹ý +ôîº,RŽâpØ‹¥4eÝH?6«j™Q¨xÔ[ßöÓ-ÆÄ-ظÜÞ÷y‡È¿’'˜„("î‘Ê_TÛ´Ú$Ñ4—ëæ3Ùà/×ò|…,—Îác +©šû“ÓTƒXЄá<±¯©©m5å­žÓ,ßð„ÑÀä‚…ë\×qÐE)CdW ©è0Àe„…Êcm|0Ü@ÂئïM…5^Yn&¶uå´6M—Xÿ¼%òÖ`Èñyƒp'ˆ°iÚffd¢ÜßCVì¿3%¢IK#ôsyöGð´ÞCh> Mú[’ÃèJÙC~Û}Pq_ýyóL+ ™ðŠ¬†Ý¢N~–׈Tr¡ó +]uÍÄ°Eþ)”‚bâçƒE±{‚–†Â=”ëêlžeÎݶ áø— +—;S I×W4Zi*I.á+ìNyqW· .U´>u}²’ ©­˜`l$ŽDSØë­ÁŸì3ÝoFo€3,£ÇÇñéTi”=¥EXò˜ã†tÐ94E%$â^FàÚé!‘}ÕØ7êØS7†ÐkDs#©ŽÛ+€6'1rf*gÒõ¦øoû¥Æ&z* ¸Ì{Nl'{{¬iªÁì5¯,>gJS³¥V~ó]X;©¼”ñ1íÉFÔ!´!üuÁ>ïìc+&Z¼Oqd4IGRiÎŒI‘ Șzw»ü úš’‰†ko|øÂÑi¶{2 [‰¡ÆÜ0B(Þ-àT¶ý½n¨¥/æµÃ¦e /´ÉçÕäôoèJò™–Ú~†ÐúP„IÒ!|‹Ñ!s©ÑdUg~2ØM¢CK”¬àöK…"Kƒî”…&”==~[÷Ëï†Û*±Ó¡ø™$‘Òvbж#šÉþǯhÓR|-‚âàu2 À¦SøôyÿHÌÃîº+uFXÞ±ø°{ž†A'âP7öò&O1UÔÝa´Ì´âOƒ_ˆ†ê.÷éÁesgO3LI¾ìõ×RÛÒÀUMDY’IãZEn&ñrÒ–?”sÝö%Lb?Ñ3Q*Bh{KfrØ岿QŠÊd Ô `uʼn³é~qvb©}´^Z– 0G>Ð…®"ʸœáìiXì»1($j2þjÈïn”›¼GưƃgNEÒÓ^•ÓÄ<ÜSàû“ê[á¸V îŸAý y¹º‡jÿ§hóàäÑ)E=̇ÒKî¹Ü£ñ½æ·ˆØÒ\rê_²9p«o%˜àaØ2áTue)ÝÒÁ$) òs6à ˜Ñ5àÖ×}ÉýTÏ!òÿ3ó'[Wýk"}!,ñ³Å\½·ðž³|Œ¨lœ‰Ù¹+4¢á²c« +Ãm‘»;qà@¿å#$Ï…Ðç n•x'á,Ë~"wEÛá\çš‘Á3+9|×¾õš ØèzŽ‚X‚À) -{¹•˜µt¹|@`qR"ÐÛ¡Œçæ˜#}Õ³|¡Ü®ˆ%ôÆG"hæo’p?OKÊx-"Ø¥ƒwõ±–äÑ\pîbÝ5™ƒyMõixÏ;ˆ°ó³ü77eìϘߒ’ßy^X5Ó‚~Œ9wgpÿ?¶ú^( Þœ±}A§’Hj0UE‰N + +ì8Dǧ›®ª©? Ix ù^{Ûi¨#ЛÒá Á»œ†BûÀ…F\ô%sÈxåáð©/&P\CXg¶ºJ;ѸI ½Þ9ÄYíx–*Њ wóx®¢“‘ ÊYé<`X’ÿ×$ÁöR%½OØKÙ89k3›ØgÓl˜õÄâÙD§¯iöÜ‹Lyp¤À:r Û©ÿá×I·6Ùjƒ9iûW2ÕÚøõ®®b›y/¥D=w3<‰(î¾ë1)Xqr¨}b0ûÇ™AÑDÎG9០+ß +&M›øì°kQ—æ¾4T¸Ê¶ÕòScS/½²O“â«+¤RRf‘%£è"Ž½Mƒ<.è¿b{ùôs¿À|î¿Iñ±/Oe“‹Å&{ú¿¤Íµ; UëC%N†X˜cL·hè]*¹Œ'jL‡pÓæ,~ê—YÓ7¨C~ Y®ž¡öl/ˆÀcUÆ#Lš¼zTË—!Ù±œ£ñÅ‹pÓ†Îñ_‚bzIš—NDÃ5¯ãÜÚ·-þÝl+›&æT.ƒáÈè¯E2U|§£+… +(éïy×òžy?oØõ;!Ÿ/1Ùã”F|Õƒ¯ngý6,¸/±Ì1nZïÈ.,xy°Ùj¦¸@>xl5Ûvðæß²ðɾä"“Ï”asÂÏRW‰Ô”’¿1õSbן6,0]8eÅ +Ã!ZË=µ‚Qo·$l{GáÈk‡Ø„ýyÅ|ž©”èù-ŠzW³‰þÌÜ¿·°ÍnE~#¶Ïs'¨úFpŽÛ^œ?”JÛàm7‚Eùψ™P—:n¬¾s/á€}Èò•úÙÏ묬Z†bÖ|QùðOdÝ¢}xnù­úÔæadWþ¾ûÐÉ/Œé×™UëhNo&›H}n¾fnW¸£übü8…`¬š+ s}³+R‹¥F5P÷§ªâwd˜ +åâ-4çLÇþ3²÷Ä<3väøjSfÃ}2³ÞdLs¾1$…ù}Û´XŽ=Ôøäþ“ëÑ\™ ÔÏV0'Þ– yÿŒçT-·Éåd(3k¸Ô%ÇR`ǺŠZGfîk‡˜ò‹‚º´'Ò³%ŽËxr +Ýžý*dúDâúì)!ºûØhü^Av΋Š˜l;«ê¸À¤â,X#R¢hœåæìÐJ ¦àH›ù!5£”8+È¢©Ky K]ÈR^BÕóï ¨¸<>ÄãÁ5(nÓ²bz){yîÍC¼á&ËF´ÝÍoõòÛs%›6) +–̱ÊOÇÝ|ú›%ã×ù†°#ºŒæ8|õlà%žYšÃniŸÕ7?Àb#@IF"MŒXúù¦ž ‘³êÝó}¶Ækxõ£z¾øÜáºAå)ê&¼#¤iá:»ÒA˜Löàëkip«¦?å? ã)ò` ¯hX)&ªÒ­ÃÐ"k[Œº+ÚÓñ^—pDÂGh61ÞøxÞQ™€—wŠ‰šn,/,·éñlØ Æ–þ[©˜OÇ1’2¹8j“#mGÄ'$¾zptr,ë•4q‘`=vsý»ñ´p’E”…Ú7=p¦HV^VÌF¢Ã[ˆà"áӯϑt¹+R÷õÚ_:9ýï­—è8›æ¶bw=EW ¼`â·q:³âP1qOL- !í˜1«=ë‘ÍO;R²ù‰‹=ÉdCƒ¥õ®6kº°t¯^X­¥›ÒÐPž¥ë‡}W¡yÿ4š8#?RóÊÐèCâºèT§v‰ód‚Ü7G«2Â"õÂ=´àX¶[¬ +%ÃܧRÖK{Ý©I}ˆÕ$óY/eÅÎT˜Èœ9ó{—CÓÕâÕƒ¿[*zQÙ ž(b%¢bÚ>³\†åBÿ#!¶mì/fß=_ŠL+¦C¿êÁZ\…=ÅŠ;à¶8áfÚ6,Çx‰T!ñ¦`=.¯·ÜPkœêxøy„ùp§yq>åFhRyß\Þ˜úÑ{ó t4<ô]lâØŽ'%¹*ÎÖÿ‰€ã}A` p Áz¹·ÛŠñ̤PR‹ iieDö±ñ)¨¤’~€Ÿ¶ÔÂ÷ú†&£Ú´o—Y0¿/ãx¿ê¬HÈØèì,`i¯:…òL¹"ç€eJ™é¹ ç¼w…ì< Ê GG"Ä°c¾]g;qdZ‘*Í<›¯Í³.Û¢óåÛŽi÷‚ÊÌUnMÙ’joƒÞ³áq—‘×ã£èo-ö¹Älÿ$Nc/·Ú7Úäò%ñÍÂÊàÏêiö#“î„;Ÿ‡¿T½’—[‰©}´׫„{¦Ê¾Îæ~B¸ôžÐh”~€­£ÄÊÓP¬67.Åp›Rà½ú Ó%ü”{™Ž¬=gnñ˜d´#ï$(ˆvå´š…æ '`¥HÇtRâù† Iž‘ƒ¸0ùFVÁ¤ð¥Ò²&GÙÁyL‰–FÛbÊ OpäûÁÅxMÊa‹ÁƒÐ6ÅêÎ<½™Où#'g‹P'JÐßr#R—Ì´|ý»bkTVrfê/Êe¼2ÂvyiÖ«â•/™€krÚ|ÃúüŠ÷‡Ž°«1PªLOmx,Á‰ï+Uv­TÉV냗Äâ‹ûÀlÉ!ä•DYÎ;üzªº1u.ÿÜÃÒq>î‚W·;²ItM8M‹ˆ»¡êúTFc÷: +Ø¥`Þó°í­žẆá<ŒV_“Ê>Òe!þSžKЯB '™==dÐHÎ4V ¿Äa⤿wÁ01tÙ%°zÌÌÐüˆÊú™ƒ–*ô€ÃÄÃQÞæsM à âh,ÏdÌl‚šJ®d…&e¼¦´Áƒþ•ïªÞ6vYƒQCBH»„%+"NÛn‹bÕ ædÍN„´Õ*É6Ça6é}°Q¾ý9-o :Õ,Š™GH€™£r±9’9[Âø U/°‡`lñóMTÝÄåt¥Ü[øWB«Õ†ècˆq™¬÷6ý‰¢s<‡ÐÜ@Nþ Aè‰ P.Δ–'F8QHëĆJã–7©M•j÷­¯o2jœðxŠrCÃF!Ë>eH{r¥N N̆Öýz]Òã<üÁJ 1üŠzo}D‘^)¾Ûïõí•Ó æÅN š93yõ2Hèöýb÷¾æÌ™¹½²~»ŒO=R{“oÖñïÿ˾J´ÃÍ3_>‹€Êô ·åYøòÇô­`É8÷s=¸5¯8òÚ­Ž§vUtÜÚýR«þÂ>gúÒi’‚tL(Ë @ññ;²ÄðïZ5Øbëð> +±»¡\‡˜l2ùô)ËíüøÙ/ µ*Jµ[X¾ã¥mц +sÒê‰(>†Ž]7ùc¡[ëdž3»àjŸVcwÒÞ læp¯0d¼œsȹ«@¼ŠžêÁ¹:äëoVÓôo.^ ÄЯ¾Ñ©¹ó%ÏÁ¡“´•–³»ºîšÿâôež: à}F*.Qé׌ «‚sž{–R ÕVbú¡8ŽßÃÌ+p¹sQØßë7ÿ˜ñq–ëYK¨—èªWÔ£ŽéèKðÚâõ®¶šŽë{£Rs¢@Iƒn\‹ÚïYõyµˆÞï¿ yÉAÃ-„JUÞÎ%XInkùGEt +í¥Cn0fœÚet.ÐŽFTÿsŠoX­Û‡Ý ˆ:öUu8P¦7V]Œ¢äœœ¡Í®Ìû,;.ð9l¾nEC¡L4ô×(éè ’y9)Ì=A—l£ð£<Ũ0µÅÕíøRÜûˆ¦ÉlOâï»RCs†ãéIbÍnYÃ$KÈœ)bØ¥0m¡Î\Ò A‰0˜ÜXíÏ9¬Î,{+H±Ú¢®ë¼DlF-¯õ­óxEN¶ñ4ªÉmÁÞÒ4ÃsP=5/0ŒwcТC¦Ï3ÑüW–®iüçn¡‘rÍ÷R͉˜P?‰( r’NAe‹½sÅ=«&Œ¤^5=_≽éZbõÖˆÒU5·ÏÜ¿Â6½Î›×u!“<¶?Œ)%ù‘o‹‚J‘÷ã‘FŠ–+ª|nÆ9¡p€3/èøFÆN7"$ÕP%køÚTé)qÎþè¹$û1œÙûy=ñ}<ù‹=ëÜÇFù®«´A#ðúÈY'ãºÑÌmk2o±h’~I%S&„¤)öSkyö”Á*ë{¬¯CW_²#í~¯[Ü2¯Øû1w¿+n«Ò [·}ÓTX¶b„Õ¢ätSŠRL;…³{h‘< ûíù¾,â¼jA }íЂ, qîYóíÆÉš´ÌP ÑEc‡¥"÷ÂU&ãÕàìŽï¼’™‰33˜'í„OàwóŸm¬£zÙ +£oÕ‚íÎiîÞ% ÅŒœâ©ŠŽæÓ8`Éê»xOç–TçÞ¶Õ–ý¢A61Yˆàw2ö™ó‚¶ÕC×´áN¦\`(ÎÍóË´n(DÕ< +µS‚EòÆ0Ô‹Ï8tV¾î›µÈ} µ¾ —‰ƒ¯ê¯o¶xob÷Biî½&ÿE=ÁM™ð$‘5JþÓ|ÒŠ¦¶¡ÐXkä„…«:ékº´,#±0礧V‘ËO£\Ái¯Öœ„¡é[;¤î.Õ@Í% ±,ܲÿ R& +ÕPoñìT8¯†€×µiY³ÃVy¤Ÿ³˜’Ôéú^ÇÁ,2¹ÿ“Jó ÖàŠo5áÙV¡ŽL¬oíšúsØÕ,°í‘AÑ`¼ Ó<êéYýS°N&îFŸ^I–¹k;ø¿òsCüšN3:…=À3åŸì€„>òEºC…¸Þ¼âPÚ2Ôý¶j¹MÝbè‰}¹Ìé£qpðÀ*œqC×"ÏÀ†wb'¯–fý‘ƒß…ºOKÖ§pDvu9Áý'ëÔ0ôf1be†ýw’yõuþ3>/¥/eË’[Ú\˜éŒ{¥â^áRþuocÀe "ò ¼“ˆð7{CåÜù„¢¸Ýk£JCq¦6#®eÓÊë€A:`D“±ÂMYâ¦õ…XÊ'N@q~šõ={Ó‡¸ýA6q#ς؈½ZÃCUŸ¼rÐSçטA¶Êxñ&³úk'%Y~æ.ø taŒÁÜZU˜CÓèlöÞ¼ð‰ÿ‘3`¶¾a쀅ómq’O¼zD#vÕdÊû_¶*Óî\^æÚ*8¿èÚô¬¼ÆQuÿ2'k¾”Aô¿Ýx¹L=ÍÝpãÃÎ7R¦h„l\YöðAn AÓkHe""] dÄsH )…-Î}mÿ‚ÅæcyýÑKqIrEÌ‘e#•Ä,Û™Gs;Û°K;ÀÔÞ6”o¿ÄÑ„Ë4qùXù‹]A3ÕÌ¢ByŒ«ìˆþ"v$‘yn•Ç“Àð•$B€­‡ eÓù´LŸ7[œù‚Ð<KÌTµÐµ)Ë®JÙ†ˆ?Ùâ³·Ø”À²:—ЀÂd¿ˆzKįÀ ¡6ãEÚ-æXƒOS—CÇÝÁ9˜®ƒÇcæ×E~¨ÍÏ.ªÙ|mšl'tS4àtTbv~ŽŽ¥<˜…>Ú§,)ćB·ËRDz_ÓÂ&_(e;1z‡´‡ßg)|Õ¸Ýò§M K­GÊÕî(ð¯U¤¸d¸"ä½Ë¾)ìS$‡e£Š¨ÅîÝ;GH%XHu\‡$æIùü‡t\,ôF^ñK¨2¶ÞÁ½…˜m ]Eu‚é ·£ëû¨p°øЗÌlŽ¿ê8H Ïe/`.$¥€0 Qɾ|ºb—惇¡a÷,‡PHÆa 1, +“S†}Ú Zâ}è9@+É)“Ý,8HÖUªè`qV)“ª;°kª€5‹ÓŠRóI#çÆ>œ¹â„Ús<¦Ž/ ýeÝÇ/è7\‘ûÙXAvrX¸&Äc«²z¶çFοœè³IÎ~/9Ó½ó“«Õý´ý(¦íAÕù¢XfPé.—jB`á ¸{»~Êh ¦Ä9µ§™^”½ª K’ðÉÆ"r<¬UôÕ#f(s–ØïZÍUÖxÿO‚páÀã6PâO5>B:’TÜNk^¥vŠ©â& +ùQf%Q§½oÇmW Öª¶Ý†rooØŠ¦yã>>ÜD²ŒÎu°ŽÈ]÷í–ú >2ëq<Êê8™]ñ04CÜdÅjæ¸þ¡P9QEO篢œÝï–éQª©¸î³ù·¢®-£iƒ¢—%\Ú™Z0¸JÆ´Iè gº5Æúûý˜Â–‚u4^«»é‡pm"§ 6Žyq*]Ø®’ß÷áá³”ôv×dE´å~ˆ(¶ j°Š=þ˜•'ùè2%–Âyz_†¢í‚Ñ_Ì?Ú—ÕÛ 99.5æ[ó+¥HjU +† å†y“—$=±òüZ‘Z᧲rÐ.=xâSQÀ”K*ßÁ'qÆÐáJRÙFR#³íž&¥Þ·¸“’—N ÂA>œQ"¡p1\9Q¥®ÅÖ¼÷Âé³ +b8v,¡LeØã/sÑ]¨zžQêÒÙ¤ÉÆ´žË¥MÑÄv®µÚûsš+C¿¢6<§O§&hüv¹À¾·MÃ@*¡ÞEü—„»i=¦ÖyÇ ©Ç=ðÇôQïÂ&Ë;ÄAQ‚ôR1ÛA–ÑyÚL\{äïõU³í€M%ïÙr—ņ$ŸãŸAo³üh¹îQüOjLß5/ßÔŽvÅsrSû]*㫽‹ZýC¢õÿ¤G h¥œát<Å=–¹@&¡>,R:ï™}5-i6T SÙçˆö×& J]°À^i¢9õ/XþA‡)=ê–¼p¹œÚ™Y^=f®ÜC3ùç U¶ ~sU>í4ߧšî=ý˜-.†³ËcÉhC•t˜Ì1SU3_¡ñ®éA××H3ËB÷—d+Ë{°½€j”¾nû(s<ãœóØ«ÞJ±Tì‡n +é§$£1 <è4Ç¿ ÈSª´|æÅl bÀª¹2ʾF%6r.•ÿ<)Øp–óNTvZó’øöšé—ØÂ+Uúí#¬Áêó™ßÆu|òÝ„ýRþëqP«›_~YÿC–æ7ÓC`0‡"ÞNÁBJ6RzZñÒý§¸Qoó)Wd] gå7À½aºfMÕǾ¹…. ö+²*:Q¾È»˜ßþ q[Lzk8dfåG`ÿ¥©üÖ{a‡´` ³õ°›Çkûâ)V&í©h +„X%†æ认?ÕEtde +Š_wRƒÎ<ž œ:Õ`»É§*P³Ÿ6z¶ká®RŒu&.öŶ Ø'p”]=ll;ï ŒÑXæû0/Û‡½ëÇqÔêbžTU\úæ„6™äÃ9O­4yºÿ¶†FêªÙúA–bÙZWš¾Vfz›uÈvµçÄò…ù½aJÞh%W!‰¡“­>|CºŒ[–„£Í—m!@¬Æú?`^éåXy´¡ÁG»F‚¦)õ;Â-ŽÁÄÕa³•µT¤J@ßp+E •ËÜ!õ”50XÛÛ‹‘±ÂH¥¿óû³Íèÿ³È!_¡^)LB†[ÏT“PË£ºè`bîÕjÔt™í_¡˜!–@&Ô€QWñÂ¥³kŠ l­©¹ó$jì ú_;«Rĵ’Ÿ#õ«O§@Åèg¿/pÕ³àélqGŸã¤¥ÌØgå5zœ!Ž ܾÅiÙøæÁÂÆ4è;epëŲZf>ŠeÞ¨ì7‘c˜ûŒéUá-Š‰­ë¤tØ™G^SÞu@P×ã6•FêÓ´²ásèFÞB”\¡õ¨ +gÒË_Ó‚™R  +)G1Ÿ±dërsizè0z V݈„H§éŠxù]ìXØGÜeéË7£û´ÔŸ?ÀA€šÍ¤UÆ*vµs Û=;@#Žiî›Îü‚Õ½‹ÆQ½-~èD¹¨îPäÄF«nÊìTQ˜ Òuè—hgGW1¿Ë÷y“²#ĹÀUÔäðÏÔ¥ýÉ„o+Sï{ó¹ Yd|­/|QíÃÏwRoõŸý`a#¤²ž  R}û•d믴)%e{ +©[”8N_¨ß?g£½on/ãÐ</…^é2´FlP›µ¼}f–c>µ÷<ÜC3xÍß›ÿ}7IŠn/ŠÂäÎó?hyÙç:”È*–R 2=ïMÈaùèÐà–¿8˜ê¤Á}SäÏÆ¡}ǘ™ë3Œ˜Àh©–'­Ø3¼Äü£RñA¹৻¹ …un»–µêN„Tˆ·–„„á‹ µª}±÷Œ^R_SRéTŒj3%w],·p¶Fj ¤v_]•ÌYûŒÌ&¨¼ ãZNdšwÉÓB²8§{Ú€ˆ‹¤HLq‘¼ 2ö ÜTnØM#ßèÄOãî€ÀØ•APÛ>,«!J’çÍš¢Çôɉv#µ&’°#ÆYíþ9б¹dZ<XL{ÚðùlÕpÕ™ Ù´Ê—&ÊÅ"L…?")ð³5t°L˜_f›Tl€ÛÉáÝçÄ£4ª»Òde£·ÄP ¶ÅìÚ׺¨ÎÍÕŒôjZÐ"å=ËuÚ#*¸¹ÚB2àå=«V½uŸªv¨ç¯I/cKµDçäºh†ODÅΠ¹Élw,}wQy~D f% 9ã97]`£FŸ÷£ê¾™o^vŸ„îÑXárˆG˜‰[Y.{•ñ÷Ñ9PàÊ…jÛ5·öcŽÅììcônÁF–`V|ÐEGõbDÜh8¹éÈ3‡×øš®æWh&2˜|=™YåŠêï}Tž!¤11Ă}Õ˜ÑÛé}ŽdÐéé/¶ú!”;©ÃªEéRWÔ´A5dXRFV›ÎEÒèº*%•&/Ü$±ç¾Ó…º Í­úŸ-¾Ö Jèä°\äF–‰m?L \vª@ŃÚÆ8<ÓÄÇç5£¬Ëk@⢒MeokÞþyš} ?ÏÖjƒý¡ BE“FÈžá+w¸b¹ñæcçS’z‡Ãü¹r˜Ê=Λެ /6Ào§²b—[1¾Ë¯+có ™B£c ýo&»Ö˜î“:É£ƒ„:8—ÙÒC!Õ°ˆ$Q8–Ÿõ3ˆ}<3`rÛ«8>§C¸æ¿ösIÁã&Ab ¦ÈJÎÙà-žÆæ.iüm³hbÚàË™‡ºqsʼnÚaV¸\Íuu#2eˆ8¹ñ(Ï÷Ÿe‹Äß–¢ØÉ.æõíDà!7ø€Fx‚cÿn  ãU›Rn" f™f´â$d ¾7š¶Ûž›Ýë³ßª]LòÚ-aú®þ ‡¦‡Y LÏU`ɼì"‹>F}?Œî2Z¶ÕiØ£²8ía4CúÈ^&èp…aa”釱çiÁ"Î +&¥–eIï*äXi®ŠÆfKJ™ÛÁ¼ËT‘Ë@9’tûÈÁ×Fžì(Ö±g·qôõÀÞØœ¬ï1Y2בY^þn+1n—È;þïyü¨Þ´9¬#¬~I 9ç ×.I/áב™¤.LÝ¥¾¤ý‚°èJAéæÿÃá-eÑ¢žwùAžN˜šçˆ¢Òø‡ƒpjïo¤5µ‡àµúÚR},D¢ë‚ƒ}cÚG¦K‰ŸO͈]Ká&îæ¸îQ„Ð!éeSV´¼›= +DÎG@|Skµ÷Šl;¸cêÒr Ùgý•He£úÅ<SZù&¡˜ÜBë–Vž€Ü×"—{Ò骴?>0¬“Àw¶ûòÎâ.”ÉàW›ØYŒuKa®ÿË„u×»)S÷pçõª *-³Iföv¢å´9õ÷&–¥ŒZMúPwÂvtê)Ч‹Õ÷R5°Ä6 ¾!?¡{o@«ñ½ŽŽjšâÚ3C†œÃáQtc%;¢¯^œsÏL‡_È{:“ç7û.éRÌêÆj–PyPê!3À±ÍÂ>šËr«f3þ×Y‚éh?ÄN” ¾¨' +ÛOò KDJøä1®ì*C¦÷%\lŸ1ÙHëJÌ3¯Â\’ÆklˆxJ¦ŒÆÅŸPLCô,ùþ­˜Ðêy ÛBa?ÒjÃ’'trú÷ÁGf̉‰-x’Úѽª¡J¸6æ wêeñGÖò1´a"]¾IR³›ëi¹úf¢É=afÙÊõwJ]Ü;¢Þˆ’·CîÒ©±e^S«BëäN}Ô^Mô+Ú‹[$ãäšXõÕJKÒ<Ïä웊ûMGÑzÄTظ'û j—è@61†™¿s¶?–(Úº˜oúü<ù¯4 å¶Wp VÈà.ƒÖxÔú^T­ãÙ@„¡Ü)¢|)È$w}ß}?½)ÁÜ\‚$Z·÷9ïùý­i•†ºMœÆûƽ’M[¤vÒ•¹Ã"8šR}J1·3,–÷C®@ +Ò/ëëZFRÞ¬ NËtZB=‹ü›ô¡Õ&%ßX1Cê €–ú†ñêœwwʳ&Ušã)Òc ‚’á2Ððž¹60ñô*­Þ´! k†Ñ¹OJ³KèÆ£wÊG4ÇKyã´ì5áP&¹=‘Ä£F1¾£º/Ñ2JãÆP…ciÐnýÆ—f"MƒFÌun§¾8VÁí.®¼%uy[i3vNµ#œ;2DZӈàž¾ÈùÎ1ÆoB8Š{áköJºãf€È­¥lÖž&A©Iñ`Ì)›–­ÂV{Ž[6í_Û$J©.¨Ýd®®ËöÇdÎAÉLá;Òy<]Àö eé¹×‘)Í6¸È~8AøÌmÇ9ÆGš¶CT3j[ëÁn7ìGïùÒa¶€º¿.îCD¿^’Ï5Zžóð(\A8æØ'_|Š¹˜@¤–Gù8gj\®Bé-? +"›‘§|gò3› p·B¸!ôÁ”°Ú§›èá)ÆéÆGØ%÷š°ÈJã9œÆlMoÙêœ ‚Z/ÞĮܑӦèÂZeÅ gM<¥ñí›gýâ}ÇU|Áð†”ìlr䳫~¦YÚd}âR•÷Ót”ÎùÝR—(¿ü1§›í•¢_*J§\Ñ-ÄÍyºu[J¥jrA%Z’׋=ÕÐïÿLês5'.ÒΕp\ +çýª–Ç´†ôlÛ\*’ŠO³ä_gŽ7·Jýbû ;lžE˦Oíú~7¼,'ù12¢…w?ÁÛö–d}ò³Æ5÷\ÂY…Ê¢²I(½ˆpmŒ –+_uÍu”­¦9—£cæ1¨{¶æ¨ÓQ·Zê%‚11áA´Ð\JëŠV;`öÿfsæXÌÆ;Î:M4ŠÑ/Þ  }‹íÞ¬œºj~Vè=kj•‘=ЊÉ‚gäÎéž$Ê'Åo»€*C2™_’ž.´´ +ý2ßÎ2&‚0DÙÜŸžæ¹ußb#”Š‹Y©Ó?&žOÄG'‘Ò7¯øE€´iØÍ”ÆÓ'Ð +z-Z)ÏÛýZpâ)¼ÒšrJ䱚jïc…û‚0ñí°D¬˜¡›#+‘kÉÔèÌo{.^›Éì[4Œ—‘âÿîœÔM)ñôv£Z(»ýSªÔã¹é$ksFUñmØØÖn8µpÎfŸeq Qx‘P‰R®ªe™ždÖ•ÿ +endstream +endobj +2281 0 obj << -/Type /FontDescriptor -/FontName /LHHPET+URWPalladioL-Ital -/Flags 4 -/FontBBox [-170 -305 1010 941] -/Ascent 722 -/CapHeight 693 -/Descent -261 -/ItalicAngle -9 -/StemV 78 -/XHeight 482 -/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2259 0 R +/Length1 1614 +/Length2 22531 +/Length3 0 +/Length 24145 >> -% 2231 0 obj +stream +%!PS-AdobeFont-1.0: URWPalladioL-Bold 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (URW Palladio L Bold) readonly def +/FamilyName (URW Palladio L) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /BDDEWM+URWPalladioL-Bold def +/PaintType 0 def +/WMode 0 def +/FontBBox {-152 -301 1000 935} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +ÙÖoc;„j˜›™t°ŸÆÌD[ÂÀ1Æ…p§³T¤¢€®o¿˜ˆà9«`ü¯….´Î:þ¹yÕêpýäJ*åÈÀl'¿–eî¡}#)Á¢Ý&»7+å‚/^§ ™ëWŒ{ïÔLßZ60VåáÌQR^¦üλ3rï÷)€#v¢€$öp~c—²¼´°£êë&“è÷ö'ÄÉÇÆÅ¿ñÁä+ž %;a~•ê!”ty`rô³cþúv5‘© Nx8Ì+ÞRO„åŠLéŸèY€ažW=?!®>詧¶zÁ$Îã8Ðå +s(kzýOÿ1>¢Š5òŠ-Óãr‡BöH@´eT¡±cëÆëO†Ôõ:b±IeæØ—;"”tß¹Û!M–’Ï+Ñ”Ê0|‹rÍÐY<Û € +Ó¿EâLGFô_™îßxÄiÞ¬‚Ç5, +€T üBÁ)þ¼‰äŽÿ©.s†€«ÍLÁUt +…µÛ«€Ã±$)Lè¦ä xM¹ó`Ñ0õ„ß^üÓº[—U´[éѸ\Üî²™ P0¢þØ“ 뎇aWºî³¤ê;ü]´Æ ̨۟eÞ&§6È&þ~sD3ÈR¢œ=‰çŠR–Ck Ê‹6ïá>O2‘S;ì—z250Œý"¯²)ŒcèÞd/ArÿÀÙ;òK8+“f^²Ñ9ÀEŽhpFRtgŒ,,zÑf€x0±œ“5¦z êÉl“ʢжˆ6\¨E+PõOCêj“ðˆ6=,¢œ3 .óh­…aD¡ YW0þ„šÉ ‘†…râºGüÆßÇSì£W­=¡ûø˜¶k½¦cnÍÞ0¨7 ?Ý›ú`÷ߌÖD©çì«D}Ò£€Ó$‡!”g *ýV¬µ#ªHô;(ö˜èxSG >Ú|írIúÎx„:[[O£eÉÚ>8‹^tûíÎá8Õ…\-áwÐk(lÙ.9FÌâ&S6¥0J½r‰#D‰’àÂÿ­^b2>PèEoó¡#­C@—Hêg @¢aˆm°1%-½~@RÖ@,DÃÜFXÅP¤c*ûöõ®~G +áf ØÁ »»- +kDMu¸‘‹¦Xœêà2+m˜ìQžMý'¹é…õÎõG’¯j*4×<#BL’Š†²l´N‰ ] ´ÛÂK’[ÁŸ^G |ãhLV8œ¤6K[ƒÜÌS¢…>ü‘¥êÓïšÀHÛw[ísýa…jÿ_:@³A"ÓD"ŸZ0­†äf„Ú’æ»ç®¡v¼rãVkÖO¹C5&Òl€<Ku<¾u{ä-›¢z’-ËGFø·ª“+PiEÅÄB¢Iÿ³†È šš-¨ýu»TŽIˆ¥€Ý“ò„±&ÆáÖ;1ß]Þ'8\Í1D·zë¥çÅïÐ9?âÌm&¨x\±¡¹ETØ"IÜy¾™ëÌà“÷ÄõŠdÊû-µIæÑy¦S´x/¾zñ¡Õ­NmP+ü Nl-d«íRpåÅo&Q„´gö•áðE0pÐ2XÆ*B¤éù6]‘Mé¹eó.0záV¥î´@ aâÇÅÏÿad¦&ÉÝf‚ÑV»+r +ªçJÚrZ»n–€žÑ@~mÐâ%*ë»—þ^AøÆ6%ªNý!“Á_ÄàÌx˜/Nj¶s·ìõêK.‡6»l0M”ÇÏq ¢6 •à›KùÎÌoC +s}Z4IEŸ;•Øi91_ª Ž`~Ÿ]{»þ:U-ðÒ ПÐÔ<_ Ûìyl>Ò’ Ï~F»FC6ÓþÓXUŸ2ÿÉàl©&F_Â’B>ßô…†|^;¡•¿WGy)ˆï÷4Û0J\ß ¹Ÿˆ$›âÎeàÌ_¼‘¼þêh:OÒ4™mFÓN°§#îYsJëÍ|TÛ©øÄqžoÚ]Z÷ð£ +°ïCQÇÓ–‚Î$˜»¡÷nÐl…Ÿ-PýJq”̪àn3 6ý`ú ç° hµ/<oLµàHX€Ä÷Ú8¨U¦Åµ-xÔ#Êe:zaÛ—~ǽÆÜÊgf‚òÑAä´›øì®&–.)OŠðrºcä^ +mÍÜB‚·4Ú„×+¨/tá>IB´ ¿K ·ËÕõ#}ô¾ö˜ú½¬œ…× ŠâíHCöJú È/÷©z©W5…ÐgàÉùYÛOë‚*‰W8¡œÉEv(ŽK³$ñ!!NÓ11™ïwϬj3«Û’|=M‰¾C!gp3 ukZ¸G°C²ñ”Ï7©V¥˜#+OÉ —õ1Œ–ZÒðåo”‚¸¯š?þj`;Fù_~ gœ _à. ùªEbˆD¥BscŠ‡Ñ(bû¶s‹'õÑ›­UÀ¼^ƒP¸ôƒÈúY®è=ZL™2®ŒCñ UÝ'ƒÌ‘@º5ò4Ò¥^ý±'u%¤3Üèýåþ"Uþ¾PÛQ²ÛÂPª˜ÓÐ'%¡Y5‘ºࣔÒB¼°š/¬´M[—m–IùX[H:¡× +q6ïÂ|!mm9IÓõïñnÝJìÞ@Ã#ŽÝ ½§s{·‘Ñðd]ÎlËšmÛƒ$2ÒÄp{êmÛ}§T+¥ˆ9›®ÝEÅÅ,7h3̜ћ°ŠVŸ¸ÒªÛǃ;ý—x%™¿S¥éˆw®»O+z}ŽóU|ØGpG‘ëÐÐ+z;Ž*:E›…2“¢£I‘ÞäCñTAR°‡Ö«ƒ…ý6iVùã + Ái)É>ãA=ÓògöFE·[ïK¾/R?½WŠžm˜î[pºg:­t¦yáUÎx4=üÛÙ•˜tÍb¡!Ëü´éJÙ NÈ6=õÛfâ¡Ùn<…ÿø‰<ÄCTÊ +"EAPüaÿ&­¨¯rÐ9l ±ªá‡r‹ù¹ë?Á ZBdʱ~3Ë»´‹Õß\b¬«Àa ø+â\S?;Ř¾Ó6§?ñ#‡ÅWÖ¶g­º".ÆöäyU +ný<ÍÇŒŽüêN;0¶µý•ès!  .‘~ÃäŠE³86ðo=òËm¤>¡€Ê:ø1.C,]9ð™&ës<×yGÿ#È`ÂL™±Êµy!œ´c2¸Ò”=3,]ÝŽ—»´?ZC †šIö³Ú"‰œŒòÌ7®c[‡g Çùâgj~ù°PºúØ/¡Ç*ëîƒÏÂS6‹ãÅmIxÑ~ë\+à¤2Úg ‘­1Ó’x:ÿÉ2ç(øîôä½÷LS&Žg}ãàìPõåùõV{±ÍqCCþ­…Í°»V›µUñ‘Z^ò=ê,ß¾Ô¼|ËU¨O~¶ÿJŒö„þjÐa¾ëâ ÓÃãe$ !Ç:!î–mÀ +ka·,´D:øm¾ÆGÔ)¨ßãm4†!‹|¡¹ß4²CY1¦sXHü¡f°•µ+ߥyƒälú8áe»ÆÑ*Q2DSðkŠ5$q¥ÍÜ:¯4~ð_÷÷þž¤Ê°èÑWö¾Ó°° Çòn`‘µÔû²Ø×£i™ˆzÔÑ-Úä\ªÿÕ[h©‹S´t\Ý*z|äTFl»è±çêX¹aÇKl•å%,¾­¨që×ÕÏ×òKWv !ÐWYðS¼E}è©:­Q”&ýZºŒ /)ó™“n¡â‡©4‘BÖÃñüNØT‰e,!"ïš bJxœÎ¥«>1qUMáVäB‹¤Êg¶`4S@¦ý-å²’ÙÑà_z¯!$‚,•¯‰1­Ú¤‰…›&8cr§”ðN8®²¾ ³”dùaפGÐ\WªÊ½ƒú¤ÊògÍÚ6CȽA4 öJgðKËË'<ì¿©Ýwx$›÷̵«Üj½è§O_L{´(3‘#çrM/î {¦ +C+cÞk¢¶ÌSÁð¼ðQjDùjžqK¨f`Áœ¨ºïð2õÙ›ûXDËC·7(¶´6h íå²ö„‡§ÌÀÀÕ„›ö/¬/.)ïàqêB¾ËÕꃙøÂüÁ#=~Úmü9Ï&’¸£‰ £èŽëÉÓ³ÃÂdÿjc„AŽÌQ¼hSôÔ—£Žiáçë²ïØÐ¥Û œ6±]ûgCP[Þ”‰ÞXi£Í©gÎ<+³Î¡æ±ÿ–—‚Àm¯V‡)Çï¢ ƒ\Ö‘’Bï˜=IÝ--Ÿ^}»í±¥Üh¦uM‡ŠîàäÊF¤òóžE›¸S^Ï_‹IEýy J˜[¢E¿¹/I{Ù3/´uIWX~:ñx…!=D,u^JxúÁ÷ðÌf¬»žÊ,ñÏÒorï¦Ï\MÔ_³¿PtÞËÚlBýã]ÙËïê Ì£Œ Š32…í´q×Òƒ†c°À>#€XÙÐB€g ðxÝþ×ú­“ÁbéàþâgðÙí]m  :ˆ±¼‡k߸„šõlS2&­ŒÕ¨ï¨¦j'~‘‰‹\lÅ[GGÚ:jØO„»Í=ÖÓu!Ç£¨Ðv®…}™»¤·Bµ­ôLže†¾Þ›AIñÔ·Ò®žžæŒEÃ+5'V»º`—*Gx!”Ðú{„³ÉŠpä4GïÂå +V@ÑÄƈÜÕìG‹bI¡%¾Úò39öö$~‹)QõrFe•òì[úÑ«â{Képc ɯE$$µÇèº$L×ÂÊ<%þž¸;J±.ßÉx³$ze´F«Â0»4#îþ*Go«±‡XJÛ94¾ô|ÊKÍt´­›ð/;%I£Hå4âfHJCÔÙb4Æhð\¬$3vyèX ¶ÈÎœ¾K€åÆRM—IˆìHÔm_^)7É[PÐ TÞ°2ü@¬Až¿é"ÜÒnL ö:5Ww~¡ \xÅ+²†•¸z(0GnÕÙaY›™›úš-L+M$ã³"Öu£ù›VEÔtL$?¢,¸¶ówë®+Íb]O½sò[kvc§Ujé™ùa)Žc(€uÕ®gæFí²”§ÏW0Î'ÆÎÒYÖCØ"%++• ‰h˜bJA¹¶é +£h@&×>rWeQ`ÀSMé´míàe謺v¬ß 5%kªVÓ¸¿nkÁh@öèÅÍ€åOš$U¡¡£]Ïû@ŸÌ¥ÈÔ‘q8–ÑÜ[»zòTGù¸WÚž¹xÈïhÂÃâ ÞEæÆ|i¦h´:ã ¤À[2Æú†ùÆžg‰;¢rßTŽÿ:ºŠb×YºÌƒ¾*í…OÈÈÌÈ@¶ jNô?¢Ó…ÊÓ–sÏ€fœ%Û1w„ +ìsí?ù…›¹L@ãB;DÈcM7ΊÀì™V)ïj“í×ÕKà)š÷+GNÝ_ýð ’• +¯[U@¿†*ÌRo>_Ÿ^”¡Ü×Û¾miz £IÅxÝ0'õÔ›<Fÿ–ÁA˜÷=U¿~ž´3DËjó]*©eï*9=7³Lo-É)<œÃ¾*LþìåÓè‘»ÇÏpÀs3~(@ qjqM†sÅ}™éæøþJ|YìžÐKÐyƒM&ç'Kûór„6ãÑç“S ŽTH(|øõ•ñUZªfœ(´w΀ðk@Ùd#z]ŽD­ê¯®C&"¼Y\Š¹& Y** Sp·?0¦¾ ƘuRú©x“ª²ái‰9Z©QÜ“½®ø@&²ÃPw”¢i9»Ó>L»®x„!ˆ’ôƒ½‹ñ[ã/ËÁ°.¦k&GæŒÙ—¿7õ˜¸WRh´Iì.Cœ>>ƒ\ö ‘¥ —¿¾Ä(Õ&Ö¯ø©¨XÅ$ý6~¦ÞÙŠy±™?ã; K€ÝëWŒsª¦ÜëÅ)ì±Eĸ4+S¹çß<ž¿‘BšÎÔÅìí>Ubq)S6ö×Àî‚J*.¡›²Ð&õÞâÃ$X o´ü4îŒî.Æö µ‹Ö*izµƒ\Qª}qPF§ºƒ9]q£ Á$ Ù‘“2ç%cê‰j]”Ú +;é#î%$6üØ>OïÑP(}ú nœq!$Òý“OXÙöjM/ã„A…Žz^ÐÊ$kq;²’á8¬œ©„ƒßzÎI$š‚ éüÊRwŽTi™öÙXIs[~}Ä,dQü®½ôc*¦@/¸”J ƒÂäî^l¢©Î~ÃÞWA ¡.p6ÂÝ#sDå—ý äoöA™ŒktÝ åþ ©ÎÇÝ¢¼Î¯*Òœ‚f3'Xš~é]kJ€Á¿¨'äñ^b:–úLFyCĨN$=ݼ±/&û»œCÝ{÷f]\„KûvN¤ÖOЫtc5##K2z¸.'p+ø3 Ã¨šÒ¥à6Ìf뢨¥z·òÔ^3—›Ÿçñ1 ª< Å z%šó/LÙ³”pÙ™<¼:½¼Bb¢mgžÔ؉²Óÿˆ®ÆqïY™Ö¬žÖøãœF¯{j- »²`çÕ!7½nå0ã2¡›ñ«8mš4&5Œ•sRHà`†ÐA¿û•å¸$Œ(Gú¯¿ P LãYšKgadŸ[»ŽÓN.³ú8!übÃËÈ!½ó nõ/ #ü@öÉäŸë°ёަ`UîÈ12r½  Âb#Q8ï:“ ÔñA~½‰õyuøåÜË‹3ØÖ_Öi‹+q ÚxÜsúÃMßãkêlÉÉ΋a²`À¹IQâùlÈmÎiûÿJJ÷Ðu½6óÞ*øܘuÂ"ûùÉ-GnÉ8PÎÜ‚ÀTñ—"j2w<tÈ·S½(·×1R5Ïo„õ=¿íÚ-I×$ñBÄ™ÓjéÂyœR@´PÒ +· +‚ó,· ˜Xœy?QHE|®Ü<ÇŠoR1<4êå4áÅ,!¹éñâY§ßk¤ fí¥?#;™Ó»0¡ak:{•#! êJÕøÈ_÷ÊÖa\ÁÚþñøc™d;Ntæå”sî >8Pú«œƒê¬6]õ÷ÌÕaÜz¼8E9BB9ÆñÙ/g#椫Òƒpl×rÓ0Úy.<<©º÷m¿µx=³ÀöÖ4¾YKe×i·äˆœ#¹±Ô©o>¬]âŸôæñN„E…ø>!W›£jÆìÜ_:†rRu8Y‡A¶Ò<3)›ÍÁ˜÷™ìÓ‹°,oG0—¿‘’>„èúýk ¢^ǘâ3â½TÞÎvúíÐÙCˆ¶®³ó öHkE³9&Ž¦\ÏE{o;¨–94çÊòj7Í̓ˆPйÁ((É̯7¤F½¥‹Ä-6Ù†QJøF|ÊÁçåQ'[pû5Cfקvôë-º£`QWiBy}‡Ï0fz1o ¨E2Ü °PVp*–loübÀÚ‹:J¼êmå¹kR¬M+¢OÊvñ0f¨1 2§hô_bDÆ:RÖ†#Ü÷˜¶w^¸5Ñ4¿aM…Ñ*êµR7ÌÝA‡`µ1ª¶ möÚq'±òGÿG<_‘¼N#5{b¨Ô„r5^r»¬%%7ã=y·æÉê}¬Ž5OêœvÑW낉FÉ3©L\õ:zEø“(Õ󯚛šË <Ëü'^sqâ–Sw˃×.áïÞç²6 +¦üg±%ÛãÜ!sKBÔ1Ce>w®¾_êñÕòãÖ¡»¤þXâ¨Æùpä+‚a·4œæîR¤uKAüû_€†¾Ù'J‡ 'ðÃÍ#2%lñ*èy}S«ÐÖ‘›Xù‹Èntw"Kv!.L!¨^Aëc‘0̸ÙIâ]}´>ó,âÌÄ¡ sûŒäÑÿ£¹BÞôÆÇ”SúµšÀíÆ ñI§2Š=åííëõ aÙ pUÇk}aÙÁ1I™tˆ¦b=¦ÉßÖÀ04ŠýxžœÈÒ²8­:I#_ó¸Ë%‰8søKïÓ n}èˆùˆßB<`û{6ä=ÆØwP>[ŸŸâåú÷wÞ{M‰õÔ½‡iÖ]ân¯Å6øäð4÷6*þNÙ'3—Èê‰ÔM;óžÙ6Ö°M„ì'*…bôOÈ”óßþpÄM–1bM‘gî³ÓÜ›þ„«]C~ƒo´çå6œž j •©¿¨Å½û¯1 aƯ^$Œýr¥S§ê)³ˆ¸Ã08IúËoö CŸÒ8ÏÜÓCKc +]=@°BßIÍOö`íÏäIÑ_ŒÓ1Gð®Œeq„Mß*¨öߦE˜åûSø„ˆHƪŠÍ@j†‰ÚÍZ×cÔ¯—UŽ1>@†ÅqBôÈPû©Ú|?.}i¯k÷­õÚ¿þ«£ÀÙlÖ–Ç Ðw`dþû{9ÛI’|á›üã%Œhm€}Ì8Œx‹A™Àâa›Î|ÁºáÈàuR¶oüjc×u§­2e‰‚ƒ4fôVqÜ‚I#Ø'—£>K4Ìhô M‡ª‘øUòbŸŠžÓªï(%ƈÚâºóµÔ§Ÿg{~‹˜ÿóÌLT±{óQ!XŒÃ”ý••ÜXfÑFe5˽؉ħäò0ÀöÀ`{‚›ÑݽèОµ5±‘!ÜïB»÷Á!á©÷†²šjã±xÕ +­üîD±Z¿ŒÏ[LÂâ­?Bg8Ì&ú±¼„!~æ-ùÊoŸ€FÉ)! Òùؘz¯­#H,K[Òšýÿÿăed*eDœ·š®Ïð%@ÿ3Ë™épHݾúzÓÒŠÑn—í®ç»~Þì—"eüA#Ïê†ijz=ÄÛà“véE«ž¶n˜FÆ×»Ú¢£^±?!¾=ˆÒno_h…]I~'.I–»O˜µG(r{Í/¨ê„oá +]mmgf³Ù£ºï\ÛleÉ!5¬cG‹”ƒ´U [d] ô`ÁÓBÉC"îA‘ʸ`ìϲ¸˜,aÆéo'oÃM( ÐØßVÙžÓÛ> +í)×ß=1î’£}¿Ó?uÎùµèa¨ p‹ç©Ú©ùßz%沃ࡠ+ø{oJ¿c?ˆˆiëi’‰ ü˜ ÌÂþìڰ¢Z¦„­wÊ7mORwl"l›Šè¼™@3삽å‹CF÷¸33¾hr‡ ÿkªVmç,«Õ£gÍp1,üb1Cã²c”d©$È´–õA`•`hã.Ë1ë(dKåªUs7#‚©zYVdièk0XÊ»>Ñ"ó➤Ԃÿã[ÌW£}×-ZÍ !hÂÃ:%ýó+–Äò·'ÓÛƳgfä`»ê!wÈrã>7^EÊ|Ž¿C%ìYäc0¬ t'úh/©œûÝZ~~y…AGñ7›W n*È:Ú÷QŸæª.YW‰,.^¹vÏ×ÈÛ)}J ܈è…)ÿÆŽú-ËÀÂWp/MP÷£-©Œ@É"³´¦®AHl¸Àpf09X”Êè­9 ýXØÖ)A} %T*ãPi¢wisÎ<-«'Q­:Ýô ÖœÀ‡8Ì¢Z¥±â°tãÆ4T¯² ){, ¬ç<ª¢‰8•3¡þÿ†.ߪ–ËÌ䌙¦U¨A½Õ[Ç-´ÿ}ÖT*ß›J‚†ay&„ã ²'ùÌa¾_$1æb{U±H#ï†Ìz¯ ¢ªª—Ôf"ùÔ‘Ü~,Ú”ß*Àù-9‡¾ 0—cEtEO™ÚVÕ^í_ºÎ’8”¶\0G“¸.ô08(2³ 4 ä+ç¨âô ™cyJØÎAz*B„×#ªß åÌ™d5 b…@ä a!%ú°M¾‚¸j[§t?l³ð¹ç 3É¥Þ!ÜU{UÓŠ–/á@JÓ‡sK€V+!Æкã"ÒY(c„)*.Ða½"ƒm:²wp_Çš‹òËbí‹ÑÓÊO¶¹û ~\Â^æcò‰¼B1uëÈ$°¾rå%mxÀ’¶øýy$‹µÕ{[ÆîÙãDïP. ÷‘fÅ7› +-[ãµþ^P‰Ö¾?M]åÂP€Ló»ØÃì˱9äý¤Å}Ër8fŸmQK…·¥Š —û¹™gx`ŸQ J»7Ö7X…ÈEv1ûN ß"PK R±!×V¼ãʪիkÀàåì ÌHÅ5חǽ-¸NOÀUÊ8&þ“ØãX;ÛE +BmC":ÚDw|ò™¡²FYVf(÷ZŒfF=b«Ì~C³fw§nꘅãä ðõ&i^«´)H’uWkõüëP`š…KÒ(%9©»´ /:=°œ'œ!/™ß8=JУÿ=¥§9r¼««}<Ž²‹Ò,tMD{p°Ì?äN k·ÜNvò7køª³’õ±{ Bv?³²+ƒhAÞê’Œ=¿£Ëî—JsÀ«€?iHÐé1ŒkV—:Ìnð Ï‘èŽôrн ³â–mÙ.O„FæD‘.lLçò ')aãw¶¬`t¤ˆ¡ìA#;•FæÝ8€~ø%ô„ñHšÀá;×I›AZتý™¨:ý®Íà@n:†Ú(£q';yûÜ‘1j—lóðÜâ BáBq–'ÚÝúÑ܊ﱪýÆzÜ>|Æ÷ÀÍkù‚æ¾Ç=e"ĨåK¯ÕW +ipµÓÁµY-§bJÝÏwpvõS:õ4óøn¸?,b)Dós ‚S®‹¼¼è­GCŠ g°œÆB´n*X]Ø¿€Ö Ô*f q[ï¦}NÎ yZÂì¹uVìÄ@GmÌLϾ¥åô:÷É’0oUý®àb›€k~ÇBA_€ë°Ÿ‘M¾,ƒ–¬˜‡¶8ű‘ë–½¤m6è×WÜ'µ :§¾£R¾ºÅ~ ¶rƒQÕO>é%³*Š]¹eŠ«|x„ë|´T".ïsiX­7”È“¹Î—¿•ÒÄ~Ð1-%·«çÐØηá¿L+ÓÜŠ‡rÒ ¤±ŽôQxpÍÞ)QP9ܬáúì;›§´æ êdÈß÷!-q k× Ø%ÅÑm*c_8pI ÃY!RhÉ¢ˆãËÖÐ,¿öp¥e¹I¢C¢„-$âcŒ¹Ø•Rɠߢ>b Mâ\G0" %²0RAê·&±Âc´OB`)›zÈ£cÓZh4|HF¼ÞFFW­ùø Lô“Ë¡W­×îÍdðLld»Qßéï챈0CQ9(O^½èÉF:ŒÝoíż[(ÌÏuGÝž"q8j +ˆ –íz.F>ip"fûχõ–HÂÓ_A ;–71{òø5h¤Td}³yÄåyÖ`ïـ܌¹©ÙIž•‹ã}TZ6Íð\“öAºÒµw2ˆ•Ã¢º£T,bÁŽçÔG¿"¥Æ­øÆû-ŒÝd!ñ¢èlÑ™OÂýHY˜\e&þ£ÄuÌ=§âùàÏá!(54ùþJLê¤Ò¤þ0°öRüzá^kRU“Ÿ£Þ¢u÷I@Ã,ûÎóí)ëaàáªÓ4ÊÕ‘+{(På4y Q¼®ß…\Êmsyö¾/õ^[iˆê?v@ðé"jÓÄ„ „\Z+ìµ¥ û“/!Ù_=aSú8¯‡¹Ä +¤Ükæ+ǶçV óåiýwíï·ÈÈÑ5UŸük"@!ô½‡ôl6›3Tìõ\Ùí»ñ õR‚ÀŸuŸbÔ¿#;ô¶¬E âT;ûõü¢G§9›5K]Ý“zŠöVVE}£jHÛGô+¬w>ðÝž÷ gFÇàý'î8ð + +eª\Ã6OÐM9Eâ´yIW¬w#û<ËŒ)Ùp%¦¤æŠ¯þq\ÎDs“#¡ÔWô<Ìœèèúõd̨ßHJ«çVkr5›QŽ¶«· ‰ ©£œ_ùç !=;¾2t?!fš÷Óη¿ëÞ¢€%þm®.÷õÕwËÜr¿j2ÇXÜš,Rªm¤Ñ™«%mè•rcâ4ç€2—(2^œAªÙ¸IÒk™¬µrí»ru®¤,G}³¥jЄ)¼î³ó<òˆ|ÓÀVäZXô ¾ë‚SeAAý/öªå„<”™R>ž¤)\:qPš4±…= £a(uê3©1~:ø^ðàZX»Æä+½8iù7_[ú™ÇNòþßDp)„3.©Óƒ¥L®›µLíÞ\ñΗ³}VòÖ"Agýlvâ²33«òáYþþ‰Ênˆô>,±G`ø¹¡ZZÍ +3è¶2šx}]O-iD¦u¦VQD%émÙpØMçMî”ÑÎß-)»C†Jµ·p¡L˜¤6ãÕdÖ1A±í æÿÑØ,äЄ5.—ð•ïdUšS¿Ç̽®-‚1»|јé|u“Ã`óÈî:zåœf\ÖBõñë£F=ªˆ.©jKǪ¯ž«Ö»'+MÚ¢jþ»&õ×æ@ ÜÑ^­¾Þ8uR<ßÿ>¾.ÊŒ°w¸£Qƒb 8S•uÝ€Œ^#TÐ +öO1PZ®ÉÓŒ$|%Ï!¿)OãÎóz¦Y°F1òH/$Lt¥èâ‡MùšßÒá“‚Ìßû%æo·a+¿ã×™ p"D›vz£©ë.\'ø±`+žÀNcéã¥&8‡{ìe‚œo3§Ï¶Ö˯·fuL‰4ù«s‰0ëvTÉbƒ¯Y7^XWG–Bïgc§n[w½µ¾àÄ9´>š§\µT®·vöžÿí'nÓDŸ·Ó ’­qr¿L¼f§ˆÒ Pü*/™±‰»…¤ÏU¸º‘´wˆÈ¡ˆåÉf3 +=£c3oy&˜Ü8¸|1H‹™Ý#g&¼ñÚ49TV]5•Èæö¬8äê‰mÒÚ¹Ù†ü]Ú±MÆF ÜUÃìÁ¸·# f°'[Ö¸´òÂK¥Fˆ‰KÑ©Þ͸W]Ú¸¯“XñÅÒ:"¦¿M=sX¦ ^&Xµeö‡É§uÙjIüPdóX—Tå =Dït œ‰)¶QÈ©ú¦˜»";垎ã«ù†:ò \E:Là—#‘’šEøÊòGXÄÔdvß@ºuúìqÑçùæ”è?—Ó§"áÝSØ•}Ö"ó¬zåÕ—ÙÊo{$i0Ýûé¡Ïˆ4æ/Ô pvÓ”þi혤 y±×¬¤ëG±ø%­¼ͯ:ÞâÜ‚ ØÿƒãH7l#Uÿž úÜ*+¶X*{ò¾§NÐ,ÛÜRh§˜ŽR[‡ê!{´’>î›eÎÀA˜FY"Fªžƒ9ñ“Ÿ•ø¿é®þ±É·²jÞ9Y‰Ã\²Óäö_Nœ'W)Cûdï3²ôB×LzMLN óO…X[`˜®j¶H5¦?¨æ³MR‹ÐðäìËãNîŠÐ;>#G3c;¥)§`UÆvLfioÉxY’õ‰¶&;„)•QܱÁ®G^òýØ"›H¦£ô™™>jHDkº.­”_Æ«Ï>MÁ&:0–‚AhˆýD@CºÈò7¢’æ A›ÍámIŸ¾T\€A×Ñ2‹u¯‡lX6`òçnfmÿÎ{_Ü0´‘(.ÜW—ägcmþI÷ZfƒFan½dÒÅj,SÈ©cyÉUâèЕa`•‹‰a5“]€*Ü,Y\ú57÷©–==´5lN,ŽnÛÕ·-Ðk£JCq¦µ +÷÷éº!á ´ ÏÃ̺¶¬8ØàC‘L'2•£ ¡v³6Æ Ç.ßßÂwŽ”ÈÒ+·¥Ný8ö"‹@gbp}&©¾\kš Ñéî‹9¦Ñs\ðž¿FxϫѦÓû¿ƒWÔÜ'É”úðA(øcHûšQÉÅò¤”Š¸ëPeB½[À»>¼âçÅn sulÍ®¬’¦Ú7"^Ž¡ü\¥V4É8ˬŒÚ‰—W¬ÀÏO)Ã1ÃtÐaDÒPãQ˜;ñF!Œò6'O布î„ýô6­;dmýõgƒÄfYúw1ù`¢=PºM†MWY"hã“¿ Fêù¼=†ã`x2ÐåÜ:ab(™¦Í¡¶ºwÏE%é7ó óùðj¿dm%Ä©¹7úÕÌ0Z6ÅÇ@¼[6ŠŽ}e4<§ºðñ:Zkn¯Ã¼¡Å°þðÜ¢“ðž1,´Ö½enþG¥÷Œ4³Ýø:ä#YL*GÇoGÐè‚üv›![©N»ìë c l_Í2=çu¹ôëø@ãòÙAa“Õï´,y§x’ˆÓ¯p +\¤ëøýô_l7´&Ü$jdŽˆ:B»¿IPåÈ¡qJ+ôµ7Ñ\f¶Àîº .»ì„ÉØ9ÏBbdìbJ^{.B²Á¬œŸ{v˜Žö¥ûVÇÅ3Ä(lH„Å|ìà«œ¸uçô_‰X”™5âNûŠHn‹½‰%üL›÷ϦÀ Ê»·!5Ô”´Ö¾ªØšÐ¾ÈSÁ<ó£m/|£:QJåo>'û(Ê: DX^U¯Y½ÌMÊEõpy‰>Äz‚ã–µœ@€ëH§wØš_†½‘ C UýkºýoZ°ç&ÖÜnðú¶s£?¤ëHrª0=3ÕG‰•µ3†K«ÚX©¡‚ ĶL›ýQÂà? TæëÂá@C6@²OJ¾4]j:%<–{ÑöÐæ΢tÅT¸„ý¦€\m˜1«æÃÈ,uò¬îU ‹€kC%ªôW^(.ãÐãÁ£•‚Š·WÖùÜ¢-!´ +½š|ü AûqOîPïGˆŒ…íèU\a¡}Q[&IqHñ†¨2Þí\Ÿ´&5¹C{;§þºéórÃ}K"bw ›åGºÂòàÅ ÇGiä—ðó Fæp•• Ør®æš«Jïy[¾xÒ±š§óÌYƃْ‰MÙÀuÃÜIL€ê;¤`b#+ŒMúNº±íùŒM$ÒP¬?k÷×ØUêà—ÃQ ÒzaMò|:r±i¨è÷a×ix¹!ªñå"°E'Bi—ÔC@ŽBšù±Üi/…+¶—éÞBâx/íL´ŒÎaaÏ_|‹F·¥pËV1¬ê4êºðÞL"6Ó~Ǧ¸îO/³9e`äV†.‰Až°iY–¯™áR%!e +ïšéñ¿Vxúýz‘ͪc6P„˜2)toŸÃ×0š v;XMâÀ2R’wM Û®ÎÆÙh*Ø¡Ñ{ÒWP‘<íUM3YŸµŠÔuÍK·VÄaÎ9 <Ä•N‰Ú +cä°(É?Ìç#ÁºKô¤o~L4~¡5¥ó^EÄZlã0‡“¢°{ïc6VböD|&ëS^‹;’·o½ù`0´á™™­¢3y€òHÑ â° êñR½HÇî;c%Is>7Ú}v)‚n˜]Q8ÁŒÿ`ô­ö‘Í]ö!$Tá(ût6gù[éòYSÊ4Ï4k-mž³câ[*FÅmi¼«ÈH­w#@™ÂRš÷ž£©Ôo¯N,vžÄÕ6ã`Ké}_PÐâêí8µ`¢ß3¯›ï™––ïU—HE\'=êk*·¥¨KìBŽIjÕá¡“êÌãX%Yú¦ýÃßß‹×=Eëõ[#6•œJ9é°}Nªwß1û4Yåõg‹)­´6ù“Ëu…l(ŽêDW¹8qâ¨qB~8^~^L)®?Y½š6?eö8ä6îºIÊõë©ðÃÔ@ÿ«RÌãÏorqFán¢8íؾ¹d__Ͷô_ÚÙr½J!Zn¹G`~«|ØgòœÅ¢*Ì^åcD>Å-2Ý_ý€â_c„öõˆÍ}òÕ)p™†ú#µŒ<¼U‹z¾!JÐK÷‰@NÿžbÔøòIX²G”ŸJ°TLäÀíuT9F +Ý×(c Ý•ZGkðÉÙ„gÙ\1Ù6‡¾í.f¿üIò8¢ãŽ£’dJ¤ ûg×=Ò8]„Sò5©æ98·+[?KM9MÚ%ã?f#lTðEø ¦¼—ŠQ,j“0bœbü9s§J.¿õð2qìĤ÷Àx!RˆÝ¼ÓæÜÄ0²:e÷âri~¬ìè•ÏWcœÕOéÜ®µ§ãIÄKtå\rU<2—»ÚT­Ä%®,­8¼Ÿ ûìqftÎGéµ/$’¶ÄqØoc!ß]AV웚Y3NÕc`‡L—ºå» ✽õ ¶ ~FJ¸ˆ÷²T€Ž^L õÀoþÇ%Ýʧ9NûRýŽàì3`x¾z²…«£$Œ‘Oá†r&;b“¨¿‹îÄUEÍLÚ<~ôB!ËÏ~½võy8ð æ’ V'ñÜ­˜¿öÓœšÏv„Ys†ãŽ\öË.˜ü4…D=KxŸ;Y8â¦Aù ©ü_zû1ÃIP¤;´S¨l» ÞLi¤}ˆ§Ê/!RŒóúp¤:g¼¢Ÿœå·† ód"Á•Â˜IÍ~•©?è$a:Ë"d£õ}2“žž±tþäE®Lׂ§.d øÑytïa+ïÄ@çlY™.ðêb‘ЯqN Ö@èŽ5¿¯äâòwr†e"¸DÐPX›w¬Yî0m»%2ÌðÔ +5ú»$['·‚Ͳ„c´V"ƒÞ¨à@õŸáøì‡ÞB´QÕm"Šx”U²¿™’„‹Kéa­h†rt]«¥›Õ +.p›˜]&îpO%ýßW¡4Dß}åzà²fîÞNL[ € :û1SSQLv+"DCPžîooñ½:LBygnUÞœÍÙ«×”[®žûúeÐ`Ê;»¯XL5¬–ŽÖp„Ôq-b¼‘€‚²Ðezï,¼xY¹-)…í==£ìø3E~‚a “ûSŒ'NrûL8«ÕÌŽbZá¿Ž¦—9D£t-íÿ2RÛôÍ#p£YÖ9ËÝ«…ݧŠcUÀƒ«ÃãÕEå‚ð¸æ­j²™%0C¯H–ÈÄÂýÐÐÀÏ`s„¦ ++ö3^9zî IÕ×¹Œ¬}èŽn“†;ä}€¢I5>Wuí´æÑÍ„8ÏoÇ+ýa Pˆ0â!ŸM§¸ð þj“ì"Sk/mÇñ’M¿£¯NbÁRäZù&N•ì|8j5ô¾¯E;Á£A*¾‰-›šŽˆî Êpô›èßÈ?Sœ¾ÓW÷ñs*NÔÒ`9Ÿd$dô1ÍLZkЙ± «2ÆÊpñN:®Ædk?›‡ 0fêéÝðÛé4 +rätÌU©[ øþ‘«jC-_¨A›ÓøÙœùxÕ'Ôê»vPµ0çÛÃV±³äÉH06h|œo3‘/rŒ¤ Æ×k¸3åÓ]‚ ßÂÆ$I\ÓꪢóðñåÔ£[Üêwû羪$Ïüâ Õ6\[_%ö!Ã+߇–ïgÛåÌó»– ®î ˲6 ˆ_uª`‡C§õr¶®¿[Û|¼Ÿ;ª{| Ç­ûúú›îÀí7Œ¬QŸè¨÷0û Õäßáhæt”Wzn˜0œOb`E~ñìK7’ 60Ƕq~‹yJ²ÛjÜ€œŸ·#Êö5wŽ{4c²~¦ŸKìKØ#”R1°Oo\+Où~prИ¸ôlà–á&„‚@±Ç?‚tÇoã¿!Õ÷ŽhÃÁòœ {Ú¦CòpÑÒ0Ý„ÔÂÒ­B,ÆÕÍgåÕœ™ +|¡5æø–Qš€ÀÏn™kŽ ÄŸÂ™òûZç e›¹´¥§–.@to½W¥=Ñ’]u3%pÞ°ó8Cxz°Â:‰ Æ÷·a>²É …ßÈl‹s÷«Û¯L²6&CÓ‡âè“”Bú.Ù‹Ii Š¥U9CTƒ#¤( zÝœŸ(K•âá—á8u(ç¼qCS)ŸO6/Åkªúôú«»ÅßuZ*óì6lðqÄsvjЃôk—_ur5OmÙ{(UºòÖT‚wO +Nˆ Ãl¶Iì¿ëF WR}7¿Åù¸±‡¹…Æ[ãCfô0$ðäõñ<Ño…¯eóg­ÈÓyÒñ{p…jü»kx ØÌõjÛ¿K Uæ(–ǵÇ'Äzñ4÷èýëò7—ÿAóoùR§@á@ˆÞÅþÌ9`á¤Z凄Þú / 4˜otñ©?r]êiç|Ïm1«Ø0OÆ›ÒÑ‹ý^u²^}™›¶ºÇ‹|Ç»ÍßKËê¸ái¥ñ,di ™¤üµÓÃ]}ÙE¿H‘$,¤:Â]_³|ÑŒØ?T 3¼ÇETâã&ýV.Øçìù"‹ýüŠø "‘4@·ôÃÏQ§ÕŒT sHß"&e0‡KÍ"|=Ž…Ø7“Ñ®ü‘½°†G'íÜîý”8b"#UÆDL¶ ë)­s|õäÂw>…Ñøº’}3}PþqÕ^‚þ~|#R¾™ZŸm,Ô¦ÁÄB‡à£îÙåâÒ é™Ú¯¯¤¤zÝߥ±–©· èó\JñYz ãçhRϸ«é 62ùâßÉúâ9ùuDˆŠç ‚»ýrÖû#‘^W\T¯˜2ä<ÎÛÏÜ —ßÜ/ +ù¿Ü ú•8f©'¶ùÀóuÚVñ’™©.d§Ú,i ¹ú+HTzw¡ïõqFÎѾ™N¿le "…ºèX¨¤å¡’æZ˜ ’q£ÅK‰iߧÊ"½úJ¦5¶Þ!î¡ì#ü$ ž*+ J×ô•|ï)åÆüQÅËÅvŽH¨¡÷ råÙu˜üŒ ,Fµ Ddÿ`qõÌùܼu„Y½ íž4šs +Ü»ýžo6Û¿A_* +×õüp¦ÅG½´Ra$Ñžl~ð«Þ9éÉGâa‘6l{Í„ÒiM×oª~Y·+‹ f¬F¿KŸjVP3{ÿ”žÃfò¶S£ÞñBSïçP7Ðîd!Õñ-lÔèl;Öá—r³lz¿'—Hhb»ÿøû¤}Èw²ñòj\îgð”@€nÔNà qúÞä» ¼6¿\ ŽmuX"øqßmÔ) 5/H^ì#ìï<”º‚Z^O{DtË+ó‰|ïÿÝcÎÌÒü±nÓþ\3ÛNsñòÕ¶t‰Ã-…˜nöÖÅÂ{ã±bˆ®÷çÓ÷óˆeBý’ÐÀymÊvȉÞÞ#ó¥¡þ‡ö!9Ü«“u¨#x!F¢"†8{Kpv¾Út8áÔ’öã3å%Ü×&43檑9t‡IlPhïb”w}‚.½BÑÏEûKj€Í×°‰ÎG?Ý“õÂÑÜÏÜÒ*ØC„yR,@dØñÛ¬ ªÄI€‚G~ÝŠ toAvAö¶Ö³ìçß<.ì‹ÿA¥úîsúâŠoTµc§µÌ‡Ô†,Ì°"kÀfwá`ù?ŸU­8ÿ·á‡ÔÄÿt&ë½ ùÞ:nAJ`uúdã­êìš'øýuØ`S6©¯Ë)«èÁ¶3£Ö©›ãâ R„‹vç"–ÂÌKE±+2ï*[h!œŸ“…m"Ž5œh:gó@uF æ\‡š¥.X»(øµ¹Ìãû,Ôà•<­ww ý[p–Ê–Ú¢Á‹Zª‰aF >vC%{¸Êÿ*z<$TÐ.Vyñ=K¶âW;"%Â-goà½uÇŠwÎ+´•ÞbQ?Ú,Bö¯1JR¦ïYn±l/;]ñ)5j„é çÜ>m¨îobê¡Še/¹kY„\¤^ÃmæüF. Äåe}ûDÿÆÂ@ƒUî0 ëaë„ü«[˜Ž©¤IÄßô¶d|Vg`ü”ó®PR‰OEÑ°¶4¦qúÌK½cJâ±WM‡Vô@íÖD‰‡±êƒÆ±‘Ñ%5é»ÝcÞÆ°2ûö*¯éŒ«¼˜}úÁ¦ ;å:YxöFJ4¨«ô[ ªô·3‚•Ï’/öÖ%¢Eo™rŠ—µ?=Kå­B b/òlÆ òÖÅ,£¾šq1:ð?„Þ˜ÝÜ(r²áF°’„ßò±±Kþ)îh߈~ÌfÀÀ8ç~/ñHN°æ&ª¼Š?µÿßëq±z¶l©üý,Ö˜$ ¹Ó~>€_Jb߬J_PJ´—tø';^˜ ·*·†¬}½;àÚÈ "ÞówGñdU:d ì´^3[ÑDª\›t‚&þÛOq“Èscy„g2KLSTºÕHKûÃ;91lZ©¤§˜á¿‘þrÉý…òê%¡[ +aU[ ð¼ñ"cÂ8)¿²ï‚\amFñjËHão0.ÜV‹óE‡ŽçWI×Ó&ô±ïUëSj—uXÄãÃqÀö%kE Çíœq5·ÚŸÆ_&Çç,IþDzíýœ3×HÎÔ2„À ^¢%µ’>*ã1H´þÉA[Ú±Z$`NÏŠ§ö±§XmNm|ê#{â€7jû¹[øXä4ë:ÛÕ°¯YŒ6vOO)†Â»›Ÿoó`ØФ©+¬Â¤wU/Ì`»ÙvúÁ¿¾M×Ü WŠŒ§2¹‚/ß×Æuÿö`¥Ç©`1ÂMé >¶Øëòš{»ß„¸ ~Fp‚Q6'‡ü6Ô”ùýÔ³qЛ‘òWE˜:Ú‘daže#Vip †çô’ñfJÞïjs%ã‡E˜¯p½”y½€y Ç·‰yG+ðôó(Â-ö¬0ZZvO:c]ßçSSEZ¿·7®Õ`Ù ® #"’t¬ +xÞîBSÔ·HÖ_f,~·&ßù@þôz]ˆÕØ!/öð-¤j7Ò½éáŒJIp•kíþ ­cìA/çRÕÃ8·ú©Ç•°Ç£ žH:ÜžÓ?Sû#„`%ѤMánóÀÑÑ;’êF8ÿøU7Ú,r†Ÿ@Ûà³==Òò­€ø¦I/³ÅxÖT8)&fþ[ƒ_‰}Y ‡L¤žD9ûÉÏ9­ŸöÂrÏ!hX¡“/w4xz°Ÿ[qXPÅ[< Á\¤Y.Öì#©GcõØ„?`˜°[Q°`¡>ƒúa<Û ¥ïú¸u€~€µg0.!ßÖ7Ã,Ò%á޵ײ+Ùοô$G±oˆcJ+‚m3ëµ;ÞuA&:è@ÒÙ|ŽS)ÞÛ1!,¹ÖSjÜÉqÔµ[ñ:E‹W: ÂDYçe»zê³þmFeg7l™sø]gÍa^C¼&IO÷E¤»àoŒÖ>ž47¥K»m÷üzüŠynThm1úG cg@%‘ +Žψ«"û\Õ©>ö.êÆC’Í"E5#Ëæèkrò.aÓûsáóhÐìî‚ ˜“7UÿÜã´¢p VÜ\Vï¦ÂH'½ ±Î„H¼Æj}lŠà®YI½^~yHׇ®¡3ÌSóXx¿/|Þå7ž[…ËŽN ò¸(FÝLŠ}ø6ŒêŠ¥o9®èîA®€+*†Ä÷½c÷p‹ÕãÑ+¨õíÙ›Ë ^tÃð +ef,éX¢µxdc +~¿H+Ø« Ô˜'rè®c´¿«Xƒ7Š.]¿—ºOì‡q¿”D@QTp %BfË¿lôòÁ75¦Çy’ûÚÀDý6·l›pme¯øŠÆ©`ìb÷õ.×)V㪾5°™鵕Iœ‰é?Eù–AÑîÀüOö-)|µv¸æ½1²_+, +¬ÂëÖ±ð7¶JøǶңâí€æ.›¹§”åmG£«XlÀ ì¸ïzyD.æébÕP/„îÿûœFrP4|ÇÓ~ ñ]®õšfïóÞÞã¸|§§üPbKû>픉ŠÛ5žÔ<‘ ·¸ñW;›…¦fÏaûÌ +ôQ å¢Ä©Z nÑ?ó~ÓªàÆb朤qÀrªÇߪOÓ#ïÆ#éÕríé¹–cà¥8ÆbE‹’í‹Áx¢9eðJÉ{ÀDÎëžÞ™K´hVÃ¥G¯=,qIM„`ÌG€}ÂÆ”õFúp[ö„¶C=y‰R¤Õ¸8­åm.ð(õÀ_B²œßkö}úò“âý{ 2V¸¤â‰x÷]ˆðήA>Vi^ÜóúyíH¿Ñ>Òõ5æôAÌdf/“¸'Vß„EŒNvï×à©PÈÅaF×Gáå¶böEPË'K½™–Pp'¿  Õ,9©QîаBIŠ©H{1¥ñ<žw%*ÞWK³o¹…ÿòÎÿ:rª¡Ìfð! Ì¡–²â(T æ"Étx¥L6nÍ|9‡ƒh¿A‹`‹($ZÏ¿ÿÍZŒºF­êo|ÉvúÐÔ³à_9Ò°ÚŠ$³mUËì=Fh®`¢¿5ðg®c´ŠZ½qŽ‚ž»®r'áÆml¸ŠÔZ‚l¡Æ`šFk; ùœ¿½Ââ0ÏcoêI q?”kÒÇk2™‰°#™«7²Ë¹A0ëXႲzzµ¶S%å7&mùâr!©K¼Z¸y’î¶K8¤ßW=²ÚÚ0¼ªãAÉû<%Ý){ZQ*ktªñ³"~1[‰ÝÜOp¹ôé„ÈÄäÇ›‹µ¿×ÍvT³»(4ZL»Œ+ønUâ(‡0µhDqgÅä.ÿ¤v†ÎÈà.9–Å…ÃNkao”|—å(îËÃÈÉŸË3œJî]¢[YFñE(“}zÑå•XF©ù Ò2,‹<}|s—ÝCGÎb¸6ÚtÛù*lrny]Éüð©÷Åð$-ôɦbnF'1q#…P¬!¯jÀSÑm£Cî@õõEe¿3O3É•ùú=ÀÑ’žÛéÌ]ü•*€©~kæ²f$»zìNGé7v +s‹üs¡!²¼wfbE¨Ý^ìŽP/vV"çæ}£ +þ·"þÅp®®ä€&DxÀ¨0µR+Ð1DÈ<4E{W"†Ñ¸§.ENÖ>71,[ÙúÙhPèWRI‘¯ò¤–„8üÏëý·éUìø"M—È,½þçmˆ P0ñzKz`´>¾µè]}Üû£M?0—j÷’Lçž,ijFf}¡QJ‰RQ0N•-¹@pd[LÄ¥ÃO*½À™ãå2ýmˆÒn"C+.GæX“7%¸RÿÈOŸéæÖÞù:úx‹cÁa%>61jÑ'ÀÛD¯x(yð@†ËhUÝ-fð÷z2wêæ;¯ÕÜçB1ä¾&&Ág92ø<|0/•"×”,"jܒѱÁqmÒ×^7û߸úC™˜³‰c0ð/ÚL€qè¹)¿9lcé‚ aƸ–¿PzNȲÀ)Å®þ„Ah>6V-ÂÁwœU?so$]v¶Ú÷rÝ&¾[î´ž”ÞŒà,‚níYlO·lž5«¥ˆ{ÝzRiõ«N6_™¤doÆ¢SNÐ ž zoú.¨Û4S»vªV „H{Õ>i†9dÞìæ÷GwjVâ*Jß.öÖz2ñCðÌVÞžH[gçeÌÑlÖŸF¥bg’’Šw\7¤êu%1d¥F­ºCÆJ)ô”?x¾AFÀ­¥¶o]ÅÑYÏ_¹ lüÕ:…áí×7´®¶·/0F€Ô(rçí+¬€Âsíw)Â'>èˆ7q‘-i‘ú¢µÚž¨Õh†Qá ?Õ$%LòÔ«fÕ²=Ö¾!4ì !Aþwr¨ô\ ÝNSÓ~ò8œÉð¿JŽiNJ…¾píx¯¶„›X¢Žp ±Â4sÒ‰bÆ;eMnÏBBê£Fº˜Ð&éUù]v¡’g×ÌŒ|z k/•¹3;‚ÁnËøé4N\%8 འþj|.ŽWgÖˆd¾Ì4º£ ¾ÆVÏÈðò#Üž …ªÈÀh>NFV)†5*uQ”ð™v˜ÁUU#,Ú?Ô ƒ~·ÁÞcõ®Â3ÚE$rn›#§È•»AúÑé÷&"ðoR¾Aò*§LÌ)WÛ°A«I Ê@ÛöûÔE ¬koʾ|,]îõAªïò]€"7M_Qc®©Ñ kÊ–6«%7#¹Qãf›Ik $.ŒÖxˆpŒôÊò Àsé+¥tB|¾ ìS@;2‚µc x{baTn¤WZ +êeä¼>ôòf0à(hËh ñÙžð +–¼Æs4[œR‚ƒ[âÛ^ý*FØ™e£^™ŠbÖv†Çþ¤ˆ× °Ÿ„ôj©Ñ«|_¬ó)heS.y>y•*·&6ØæP`ƒèª¸ öíÂ7Ø8öM)IªÃ5&À¶Å1@Ý”±Q¬·˜çµº({8ŠµÉâÉ¶Ì +éØžzBX‡—¦½ƱÂöî´«ï.~K55>=&-†Ú7æŒå.‘qòù«JÇ‹»Æ÷uŒãäiêþþÜ¡ïOzP\'L™½[«©ÓJnOœÅ|Á–“˜Æ6?ÑÈï±IËgA 0mÊPÝq•]c)?çdºС–Ù%¥$J¤lÚqâó?ò›,õk=Ä¢¾Ý·”4RÈâ"ý£PXëcó¦0K\J‚SM_Š´é“¢¨é« +ñëN^Ï¢ÙÒ«=ô½É¨ÜØNÙÇ6(°ñÅêÊY¸.h–Â5Ù‰£][ÿ4ø·ýqwÑÙf ¤Ç"/ÀX•hXd/ìvI»ºm­Ýç¥GfØX÷ +ÿK=ö² ’á(ÛHfUïÎãrÒø¾IQ$W0LÇòÅÕµ8ŽÅX‘k¯ß‰ô¹­JÏMÐz{äPãÀ÷–¢Ô“‹¾>$ yò§ÑéÚ"Éjrº½¾‹Xf¯yÓLEœtnÖy“ÉŽœ‰ö•ƒQ]Ex.ò¢B‚…;®úˆ[„çðÂXánÍUîOýÅ›1Nd É¸&÷ïÎŒþ +endstream +endobj +2283 0 obj << -/Type /Encoding -/Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] +/Length1 1616 +/Length2 24418 +/Length3 0 +/Length 26034 >> -% 2219 0 obj +stream +%!PS-AdobeFont-1.0: URWPalladioL-Roma 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (URW Palladio L Roman) readonly def +/FamilyName (URW Palladio L) readonly def +/Weight (Roman) readonly def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /GLTUCO+URWPalladioL-Roma def +/PaintType 0 def +/WMode 0 def +/FontBBox {-166 -283 1021 943} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +ÙÖoc;„j˜›™t°ŸÆÌD[ÂÀ1Æ…p§³T¤¢€®o¿˜ˆà9«`ü¯….´Î:þ¹yÕêpýäJ*åÈÀl'¿–eî¡}#)Á¢Ý&»7+å‚/^§ ™ëWŒ{ïÔLßZ60VåáÌQR^¦üλ3rï÷)€#v¢€$öp~c—²¼´°£êë&“è÷ö'ÄÉÇÆÅ¿ñÁä+ž %;a~•ê!”ty`rô³cþúv5øb‘/¼W©¹™zî²#gß|fà‡ +ËÞSS°CŽ¼3R>›NnÁ'Р(ÒeadÌ/³¾•BÒ¡ ¢ÑnKs­Ò¡¦ï°êß w8H3øETzðÒX‘H£W‘}ÎàæÒó±EpúÔÚÅsg“¾cxHSAÑB±Î]& *Pí>9Ýš.‰ÎTZwŒ½¢^±q$ÛšÎÊS²Ï ¾·QÂgÉX¯ušV,Ð’"ª%_â /w!¦•ÿjßTšƒûaù­¼ÝJç@¢Æâ„Pq[¿vÜõ·ÐM~³ïˆµ­ZIêf ·†îÚèè1÷N4Æ6{ÉAö"‡Ç€ôŽ¤ò<Ãhú8ôØ›Ø)¢²¼˜Ð—Âæ¯xl¸aì®-Etö T"ÿ5ñÚµ^1z=Ê̸õe.°ä`•¥Éâé`̹–å,±âÀl‚Iº þõpïpšäЮ#QçrWJ^URòlUïQ6ë·O {Àµà6OQžD´;•Dn +¹`]NèIHΣ{¦ü+¹à×Î#ß逞(BUndê/’‚¶*ƒ ÓošâÀxq¸Ýð{ïo1Ø1«€Hÿ(Áä虸·ˆãÏ–à ¢Ÿ•[äävå ™‡½½i•ïÓ'¾²òj"E`$•Ì·…ÄИ8K¦°iÈbÚîjë{äÃ0eLáÂUluJP, ãiËÙfÆà'ÛªhŸÉ7 › ³®$6â༊:f‰W½<Û6 -%)p\àÏçèeþjÊïÝa—ß\" ûÿ9!œg‰Ç @GˆLmúÂs0½_JEn|‘&$SÁ…Ÿ·úÐ@È\mèªÿý<؇Áu®Zý=½]¡m€jX “æâ}i·¨]ÌP»Û¸ˆ]…à'`€ùL¥Õû}½ÏY>ªÔ;h÷ñŽõdã¯Èg ¨¡û‚ol^k¨‡ i‚âŽEb¹µËЯ'ÕA´vàÅíYqe}¼±ØnŽ—PÞÔA 5Ñ]«X]a¬î-ÎæñÞãš]3ÎÌP›ïä7úÞ <ÌA +³ó£¸NPl…G6³/†E†ø¾’?¯‚]Ÿ`©#dÄ'ñ¹Û  õƒ†~ÊþxL¸sóÿ%ˆ*4d‰^¯|‘Q™ÉìµÍúX½U¬ú=ƒŽ=Êh-lvŸö_ÃxÙÉ÷…±OJk܇âi Êé¯DÙ‰¼®Ì¬íÄ 4ÇÞò—”ý ¢trBÜœB§=Ä,vÊ© ÒTÙ³0$íŒ <*¦qkp¸`´h1=݈òDy.Ubo\dˆÔŠÉNí„ÎÀí"¾·6>ó”ÀU7FäPö•ðÄÌb Á–ùäBbŒF¶åK×úêPå©°¨»Äœ›oŸ?&D†…×Ðœ 2áE¬´ž´¦FŸLXô§³ÊàÒœÜã'(^˜­´H¤?l‘€þ}ÜDçO(ÑÇ¡¸UI.2 µ'ØmåçëbŽ™ßƒŽ#Xíö„¦²üÁîâ‰ÕærÂÏX¨"b_æ£ïV¶ü`)è­…1#ǵøð±uRÿ?ª%ÇÃ{K·btèí2ø›ÈÓËÔh‘h˜Ðªwr‹Aqhîœ2r÷{ ¸÷…ËÚKÊ^û;8ˆ‘á`“JÑ:;œjâ€Gꊚ1ÔZS ßÚm¢AO4óøS"ÝÒëø ˆ—Mq|E9s-­&þPF þ’zä‹÷é¸k|¨ÑNÕ8̵È}–¹·Û€aLCó³Â‘ f§‘ Å»]´Þ©Ch  ‰àL¸á²á7Zg§Zq†ëÊ‘°d“¬®¸ô;¢æãÈñ•wöäøæµ @I&ytŠ±R€­7X^í=iŽ?+¨Cð«bÓê+©îwVªŠÝ\0“±S´ó ÈÙâÆü œzK|V– ÂÐÐnz ¿…qݼ‡É³i;Þw ½vð@%ŸÜC±(º,$…‘ƒ‘ëiŒg2A‹-ô³CRu‹9à 0ü*o‰ ŸÏ@çè¯%«1Ü­´Âÿ­>Ø'éÇø©¦(fôè×¥Z[T[DùÖ™¢åÛ Ä>b´-¥·\˜‚oU‰Œ­k•÷äÃøÊ#Ê’ÉÀŠý¤pÇûªŒ-TR!šõLÎr«³“ÍŒ^¨ÇvLE·`#â3¤Á½°œŸ jÏhØm# oÞa|•…š[F«¾Ño¹Žo±š05âføŠö´iw¥-(8íŠø/žØ/2Sj²¯·Zés8QI@61Z?eA*ÌÝtêÝØlù –¦+#?ÞñښĒ|“™©fóÙ†>™-`›sjòc½ -"íèØ•ŒJê#å†!í³6? ²w­ÁÖ„¶ºn•‘ð?) Ô(Zжu(Y`Xë¾å`À-–Zvô¨k@Q0Óвu“=½–\œ‚Fà +ù÷gî˜J­çQíƒ0}б“˪~ÒÙü+$b%Þ]ÒïMr¨»ÎñŸ@]Ð)nÕYÐÅÇÒǶ6›;µ=wA=š4vºƒçìg5š«Â!OwãQu7Ž~8ú%PM½ª¡Æuì°Þ0Ú’ +™«;.}0ØñvËm¤ +w–Ð,²˜‹„´o‡(8—Úd½MÄ$Ðz5jŽ äó%!¶ßuÕÀ´¬ 3°Npü#ÖºA ¿4û„ó[<•ÛåwUv5—ÖÌ–TNÃÐæ˜Ø!êìÑšøây{µ, VñÆë-¼146r/¦Êó’^•'ð¹•4ûI;ë§Ú€þf¹tÑœâ9™ÀÓ˜ôHÓ*-÷èZ¢?6ο–È] ÉYÖ„Š(8g¹k‰Œ©FgÙÄùP”ëû,Âj±OÆiæÒ2ÄúAfG=×a¯;6R°T„HbGmäºe¶‹îÎÐòHÁ=NÎ`±ÄBЧãn¼¢-nZV—OIÀf@ñ¨•û\ˆvª”Iä‘Ë]ã$ÍÃrÅï 5Äݯ¸=t8ú>Xe/¨‚z¾"›©”ûJ…ã€Sg˜ ƒ?s†sf ÑÇjWKŸ‡Ùz1—žqë€Ú…¹ª mÅ7ÇÞ‰øW2Wø亄I·šXâË[öºhìZ½âÄý3ëPVL°~€àìõµG¨;#pÞ:ÂlÑP¦ «uA·y—»ö‹%'±Z‡~e¹HõÛš.¢­/:R\Âi¸¥¾ÎqO±«°ï§¼)? :°„×p59I½[Ÿ3aLŽÆ°Û]Œ˜"ˆ«À¬¹&WvtèÕKéí‘dTmÕZÏÆuÕ*îm·REàDD+9 ߆Ê?î™Yø¤\÷ËîÛ‘Û®nP7­šÃ¾úX¼o|X=¥š@ PÝÃׂ"~‘eµ62p» tõ+”›AßæÂs–íz ¢—y0yË«vNâËÐÍy6îz_38BÈ6»ÔÀU§šó@êñÖ ¥)å<æøÀ }f·’#@Ñ=•sߟР•Ðßtè9ê;éÓfÌ©u:ÀÆšàñò¤óC.4èVÄìqú{zÊ!pf;ÐjÒŒö,yv€9ïÏÊØ|>È ¸ý®§cܾîo ]øœ46xØáþ/Á©ÚI©`®Zê&+d¬#qI„”ýDžg¾H™ ÷”è‹*K–ƒgðº)Ùá<ïÞÑ7×6}¥)øüŽÆ ±RÀr}þ49óØtÞMãc±^$KK\ù “ù~®Tr¡ +f€[äLì]Ëøu%×Ò7¨ú]àµÑUšP[Ö¹›ñ'Ü®ëÔÆݺ¨øÞ` z†a^œéMJ‘ÊñyLìårsØ)›*ªzüo±Ÿ‰ùË£ä~ðvj1æÌx³ÒRò…B‘æÿ’}æJ挋±Àáo<¯\;Ù ¤ÊÐdä>P›—ò5ÑJ¿F[nüÓÛcøÅÏf!Â6¯|—ç—ýÚïõt{9µ¡¦ßÀfGDѺ ™¸J'Œœ²é´òNŸÐûÛ“av Òî„1Y¬Ú9·% 1Ò •ŽÁ‚ ˆM…!=BŸ«Q$E<æUÝÆ â¼H¡è‘†õE|Øï†pqapÅê}·vßgœ ×z²N†êûxöŸ/Lb©OŽ=*Ë +8:ð&¸?)HªfKù])ºœÜÖ î†E`å–Bdl·á~éÊ¡ŒÈ?}1Öp’„ÈïóV³—Rñ—‹îã>P ÿF~ß¿‡ÄôÌ0ß ÷óæÙÙ )?'Y`Ð)‹sR¼|–Ï΄WJüG!pzÌEäÜͧjc"ý.å_=5½E +*‰„ýkÈÏÆå(Ùæ‰z–E6ŒÌbäû]q@øù{ˆÆö½Cþ[®/X%u±Hä[Íp[Šíå <Ã2ܶ±ÈfÊ‘ N2 ÒŒ#_ËÌF @hšyw¢Xšå6ÕÝA\‚éDåèš……Š*%-Y»šB¢,G?Þ–ìžó~r¬òÓ*€QUXÍ&^à ®70l¹ûú)¾Ö(„•škRË(‰ªLxöµ†X%yÄÇšŸU½x.Ï™C5ù˜ÙÅÄ!ÚÍ•þñàhùšžJ-ái-_á*¯îd +hA¾:kLÑŸGt‹¥#Ïú‡Ö°Ôš¼ûçøרåð¹á¦bP•±ÿ¦0z/„™¹#¶E\µG·qððãÈ;]-µ"j<ænø)XMŽîI¨w \£×;¶¶[êZ}Š]ÅGáúÀíÜqú~G²AÓ9‰ á#BîÓóh¿ó2§Qûý 2I‹×ÿ/ÑJ(?Mq”DÌ#¢?õý,gðÏ„lå‡ßý?QçÝÙÆB’®^.`†ñ~þAÝÆžC)Ý—¡ÍNÒãßÑš:BÔr½]ƒév^/"ο6!ZÿÁN–DôÍ{~’‹BÜ:ž–ý{6aZ£ÈÏ«œþ?}/ÿªƒ–žT>Æ÷P_ µùÅ‘Ë¥‹Ø7i±«CU´ÙuueÓ!Ú \ì‘“3ëàë²*æô¸S\nE´u§ßvÍL„Ú uiÛ +]’X‡vãu( ü>šÊz˜—Ï.–@º¸éÏߣI–ÊE«0‚³÷ù#ç:õ¬(4ÞaÞW/47-ø"ZÉ4ò:מ„[ÆixHÖc„žBœÍ± …—€ãH[܈¾”C;R £Â¨XÙw›ž\ÌFŽàsšÇ ௹Ê0¢ˆ¹¼MÓ*KÔÚkH‡pahwÕ*¸gÝÞç¼æDQ}õ ë5ôNk)aKËA÷cü Åðb“·wî¸PÇH6žˆù‡˜:ðþWT(šZ[]†îÏÊsÏþ[8¬‡±ý† ¥&§i{Áwÿø(N”eåBv÷7;F’¦jrÑŸàÂ+õXf•úXTœ[\GT0EjêŠNã%7­Ù+z¬c1<²^OÙF «tÿ%TŽ{}A@ÒÍ‹óE Uk¿›ô]Ì9é‡W ´jðî#2ãY߆¼§Æâ†Ú‚ZÞùí "®#"x4Û¢lÏDïRõœÏ0i<’W2Æ¡¯üš öS@“/ͽÜÏqÞè +²8`×\åØi=ñuhº2&fö¿YÆø”ËV¤¶vAx.2˜ÀÎÖ_Ý+ÒߥE§²<€M¹(\-¯F­À±°S2þÓþÍmÿÅ>ésçËì¬ï¬Ä|§%eÂÇó:sL©ÖWáË)Úõ·ÃNÛˆßLq;´UàVßZPOIõ;ã_¶ߥ¤Ç|–}»ð~å&ÕF½é’Uud\ÇìsíšËÙ©ñpL¹+ +„æÓ%°èw[vÌ;e.KgEVÐ,À0¾HÊú­§}íþ²³€®í…±»’Ëõy ~S+‡µ¼úZ(Ý‚ e/Øww^ç·+ùk\¨ÆP<7p;2 foß?”é#ÆÕžW1í† +c ­mxþK‘\©Y^=F3‹0ÍÇB»—‚t÷•½OŸê4x&%–xàX¢F|ƒúΩ¼¢üvsßä_ê5»õ¯fþw.R/z€ùIÊ”U' V$ËÎ÷ÉŠLîp©ERŒ:†^E>ÐaéCó+8KvWJP5Ì]§SG€8‡ÆöÎ%ÉܽVèƒäžäù_*g ¯'SÝž«º;ük] +æ¶ûÂ}ÈÒE}Ú³Ç梷L^„†Â¿æ&´Rûû+§V9[„ö- ‚òÊyÔ£{œðn!5vÌ£èTwa'ý|ôÃ9tª‹É6õ,âÛ¾?f Zâ32¨°ý„k(‚äX=Mâ‘©Q›…Æ]’Ù⻳‹¦2×R!c²‡Ûõ†'p«š•¬CîI×ÁÌ•Ëç?/V3:Ò4H}“Qææ×èJG©…âá`[ãÒò-á}‹"%Ý…7ÅBµW9ŽßÐIôM§É6YýÎë‚Á[Vç7U¸×²’JðM‡;” Õ7t¸ðqÐ^Û¬OLu_H(ŸïNWê~ŸæÉÆò>( –þX‰¹Þ©Z²Q(ôU ”èÄ·ý¸]´ÜP¼õRb†'sµú?ðQµ¹ -NöÊÆ×Qd<±Á-Á”â˲ŠðûšZ–7¾„ZŽ&£|¥Âè¥ì2\&ö0Ž¨Y[å-éÖ¯g~läÝ´s§3îg +Ô„L÷“á1êf° D®r o–èÐ[—óô\û,Òiv™2¡I”É_RÁe¤‘ 'ŒMî­ˆAÜ­ùX¹Äuì8ôE’ Ì¡×KM9ÁÝm°ÄsA–µk7ä“-Ø6¥’=>m¬Ú‘}¹nbÂüZº¼u-¡cs ¾‚`—™È‹yÉRD(›pgUšbô,vb",¾SyUišµàô/o•Þsü‘[”´%VÝñé§mþ ÇÁ `fd“þ*¥«¶Y-ÿ]Ó/OÐF +P$è.Š2_'9Îñµ»_€TcŸoìovZƒE.ÇÑIEu9·oõèüÃÝ$e–ßúnY®é‰ >™~hU~5z¡PßäþÒ–ìÒ‰¥›onI@ߣÑ%#àKâN +-¼SÀ!CLÂýÃZO܈ãeô Wg´Â)Ef6;‚ …{3O&Õ]Òéz¶kà÷xâ_¼~]Z*eÀ}O¼»¹Kà]ÿ+?½ }×5áá†ð~Ëï³´G÷­E fF¤î\©šÔÕùuÍŠÛäj¶¼Å˜š9Ù,’ÀùÔÄYoÁ 1ÌÕ+­¦]¿ ë© )“{ƒÏk߆¹2Ðl?Ù‡¤ š½­‡‰(g±›†Xë +žd½û _Ä}#ûZéM„µºÊýS³µbÙ6n +»GŽ|'Hèr¢³ñÄyTÊl‰ˆ0r¾¥R°üN 7ô¤E?tæB!–6àéøy·”@N`ÌŽ£;R¬%–)|u‰Þs-³ ÷þ@aÆ쇗 ].ì|7 PäÔàØ#J˜‡7ɦXU%ÐæFO?©éº’Š19ú ÍÄž*ÐÝQ{oõéYôhàˆð©¨œÈWÕºaòú˘T÷ìŸÌÏÅ#øMTpý—}A» Ë,‘=v‡ï„GÁ70g™Ä V¬õÞlÅ4R;›×ãCÓo£‰a‚/¡åƒ !¹O´Æ‘kwõ|tÖ•Åð<©YÌÔŽþÝ ‚”‰Á€>I?¨lùØÇâ?ÛO|)9;µ,²8KƒƒHö@.“D)µZè«& +ýŒ]¢ÔÌzÂ’‡uPÞy·ã©……ôÔ¬U¿µ7Ùí{‰SxÌ\ÑGÂø8Ç”Aé@Aøžçƒýç“j£üƒ$ÕýnA¬X¦ºi G > n„~¡”OïÆ2@G0”Å懪+äB\æK¹P€!x"³ Rö™V7Ó` xŒÂûðotݼÙ_÷atœIÌ•æð/ërz.†U’˜+ÆŽïX¯¶j÷ÌÌ€ù«àQ‹¶òí•0ºæ u‡õzäb›ºäŠª:ü:€?7%ߦÜrûµÕsC@uT¼×Á? 1» îüÂ2_‰rÎHàD•Ö*¹×–“ל³Óƒg:KKCÇL §ã&”z‡™æ4"‘F©sz³Ëåo]¢Äq6æ›?C3Q6ûóè+”Ød€F|§À¸gM"3C,+TÕÊåÛÆ"»ëÛ£”¹Ú(ïo—`ÍD×»rYÿ=tP3é†<$¤Rêǘ,?i`µ3üÛ_ü í€±‡ÚIÇÐ~“UFèó)líüiÎé: þÌ÷šôQô\îpõ½´•ïùè^â"Œs6à/(Á#•¿IК2Âòí€â³ +àEé(Otn¼úVsMÜBQ6«Æ‚€÷fËÔ8q$eh1†/ðˆ~•ðĆ|ÝoÐ7ྔîíàwÃh¦è„nS]¸S9V?÷J¹m”^H@¸ÝT`åŒbÔ\©^cÊ<ÓêN¦Œƒ½Á¥I7³=†ù¿¸",Y(G!â¯Vóƒ-ÞÍkölàSK7\Þ<¦ÝqELôª¥±¤–¯iàÂ¥k#ÿ=º$Ð@,ž+öô` ©áÄHß‘M'f­y;Ð;ú0¢á²c« +Ãm‘»;qà@¿å#!¿^3‡öƒ&æÅšžvXQXnŸoC{ç‰&)É…8{ Ü;Ʀ¦ +±Å(N=çÞ‰ÂiíÞ‘Dh]1îw!Ÿ…}ŠA‚˜¿½Fû¥/б§#Ä2´´%ñÿ4ÿÐÅ’'j`Ñ·)$‰Öùqàª: Ë™T¿ѯ2ŒÐ]ž<¸c‘7?gädØ|^ñ>·,®ºtüßN…⦌F¸¦3è./Ú@R&æX ÂáTÇÊÐ8ü›Bù>JÛ°UóAÝÇZÆ«QUôƒ~å† ½£ý&Ø ¯qÏmgråç}j‰¿zÅþìYgrô>ª?±î?CsüvàÐôî¤ è +¾‹ÂÕI"8ê/½Ë©n§6¾VF‹w^]*[äFî À|¾>²IÙU£:&Õ¹ÅwÔV˜£ÈnGËáÓˆÆï„«ˆ4‰¡LŽ®Dá*7i“)T¥ìÉ#-%ì9ZæÚwR@éWå¿B/ÁW)å7Š?m”wû=´"óTë` aã,cNÌý÷yOEoÌ\PG÷Áj¡Í¼Ò­2ÆÞ«A ÃÒŒÀ§7Ç =.ò3?0Jº+;ÒøߌÁ~|úU_¢”¶XBå"(~¦Ø) yO{ëEÆÙÐ¶Ì ™Ÿf5—îž0M3žooD 3œö£ ŸIö¯ ÐSL +C¯ë]ó$""oÁ™Òa£Ò–Š!#\û·M¬p§ÎÚ-í +0êX¬¯3´ j1­šW«©©¹%&AŸsùmâ˜]ºCÎ,\glh©/Ò&GðhÚZ + ì(Âé:è~1ÅÎÔ!bZJ¼xØwLSïݘï'Ü ¬át7ÔeÅHÊÿiÕâÝݼ) wAM9Ö¨2O‚¹áÔ×õ I)õ},=’cÓ¡LA½ºYJ…ª<ýHl…¯ë–íLŠ§"ÚW˜ÙX— ·ž" ^½•?Îœí÷×ÙVððcèyÑ"ôøÓr‘…Ïw +c.áËŠÄ{$Æ4_>–Ø߈B ÍæÚÝáfðF3K€pý?‹å…4a´“1WŽÏkðmÂ%± bgÐOä©>wí+u5n‚^ðfVª;^]ÉÇ÷µ§ƒ5ϯ¹á«8-.Våïû=·‚e_~SŸáø¢ƒ,vÅî©€]AÆÙ²0CG\ 5%ëW)دP[&ùž¬r¨rÃâD¾@út²°ƒTì¾²‘RNI¤d.µY‹ó±ú7C«tHžjÃpdµ?—u’PežPµW[.¸~þ ðƒ0†ß¿>6ª[Á2nˆrn-og#R¡^ß/e>´õrRùUŽcom&ù'Ëè*0úÌ‘ÛÊÏ¿ˆ_Ë¡ãÈ\qS“Äq çé³ý“H"#S>4“H#¦AQc›½\Fx(ìº*Å2MÜ’ï ÄÙ(q—¬…Dí¬êñ9îšüéo ¶×xøüø2[*+/² 鈣†:”„5›ÿ甧[°}TMØ ¹üñ8nwEl±ËP¡bhè~.´ÀWžA®úW«eÄLÀ™ˆá¯’lJ{ 7¯/¹K >ÉQ:ÖÌèŸéí‰J§7›ÏfP.šŽÌySÂC±2€ªÃ /DØûÉÖædj«º©ë§^n⤋2¡h»ÃÔ˜À‘[·Ï?W,úÑT_S|Œ)aFP–K¿ò öˆÏ4*Ñv Œ*Í.üèX+L˜·60¹äØ0‘¯#ߟß,Zð6ÜN¶÷*=僔Oë÷›„‰FìêEfò8G?„V:Ò òâ«ÎTÒƺ¼‰!U$Œ1w<ðxÖfXØ7î +Z_<©:lþöÌyw8†öí²®€Kaßëµuåà•c2Ñ9:ð†#ö®Ý ÙôS¼„äšA›™»³wÅø—«IRVxìèªMƒ„…„ŒCÜ•`äkcÚN“?-8Ý€óÒ&‰bÐv=8àùaRÿꜹÑ÷‰cmã:Òÿ½È‚€O G¡t·‚ÛîúJâ©ñ•aÚbÚüv%ž%† +7-«¢¼œ>µgòé%gŽádY,xĽÜùxFws—7åaË«¾cÚ®Ât×è­£qúåHg¡šî8w­3Ó”ÅtÚ¼™<(ô·F©t%cQeÑ[ác$ïET£-§·éʲ®÷§;ùñwë‘«æJÕV¤áÒÐ.'ÚKÙUµ˜Óèxâ“ÿvuí"÷@òÎýMxZALê`L"[´Ø ±ÛN"~èý3b²w„–X×sdËÓJAºß/šQ½½"Lò xZoFç«d×(7IÀÕ)wÛñ‚®’_/¥ÖÇ'Y4óþ]9Ë/Qfÿa}bß-°ÔußœÚ +’obÖ#k…m5P>cìNˆE;äraŒÚ laÓ´¶°þS¯r)xÁekæʯ} ñßòRè ã\¸héã™ÓõPbù_VÐì‹;ÑðÙÔÁÏÅâÿOFÍc¥&%á©p}OY3ö%" Ž#+sx­b—bïP‚ʵ€cf_wTX;OŸ¼ŽP1e„ßséÖçÀµ²él[qYñ+ÍpÜÆÇtpsË ²0Z’dR‘ +·ó¹}ÙØå +s®»jXª™'MùW! +@E­úÇ! YRg:qU¨3`0O Ó þHJþü|z7®#íÿ8ê ŠPú2ª×¸{2Ÿ‘Ð+`æ‚hÌZ•÷m¹I3®¬YG¼Lغ!}¨Äm ÚÏG3n›ùKј¡:pFµ¥í”º©Ï÷}p^^°‹ÿáÕà,î·"åŽ + ?ëÃYžq•õý«ef¤òsŸÚ™æÆ+æõO=3y(VóïPSÄ.Ïw¥ÉòÄÿß;ø•ÿÍ/¼9´ŠÛïõX¯fÁ[ÑøSü¢6Sás9@;É4b.k ýZuÜI9ÃAŠb _sv­ +].#i}Å\`f0bœdfwJ T/ h÷KÝ0rØxü’°ÙOTγzVýI®¥u’Y|)ûÕlnÛ‡êÛ­ðÕ[ XÐ;= j,i ÎNa°á! %¿5€-ÍãNËhÐ{…ÀÝ1‚¬ÝnqƒÅnu‚ì‰;"FÍgœL{rÓ[Ó?¤):˜|‹\Uô ’îÊÔHÓ6¢†(­¯GxÆ12d¶*zœ×Dùrëúý>¬‹q&‘ë +§˜]§OHP £B_VÂí*LµŽñ裎A 'vvuͽr‚¶ñ4RËR¤Ý@à ¢o’,çÚñ×b”þ>¥yÒkm¾ˆHCÕZèµ Fc•¹ŠgË]—ëîÂÕüBþH”Š/—’QnKfA£"LFŠ»“<“ØÜ·Ÿž¹ž€nä1ˆ € %Fúû¸y\±õr{˜¹anX<É­nÛU³Ð:o¬"Tè ½WÁ¹nO{X4½="\9¦KÞøïR¸û»£^KDZ‘>H¶=Œ³EÚGÝyˆ +N¬Èý„Þq¤ˆ9ÞTxE;ò_æäòÂOšš6¨¶fDÑ!&™Ÿ'™³ÑÂ`óé&®Šë÷1ðe"8ØA…X’2ʺ~> —änpç§1† Z€5©¿£ø²ù€Ìç°RŠ.]íËöû„査@càÚé’@i\fÎ(鈿R–ŸðyŒçRòËë(gÁìÇGÃnëÁè’Bœ¬Ù[;Šç<ç÷Ê]\ í +o9wü½(Nšï¬¯Î§ÙéÚ«*uˆâÉé8ªy-*5òËÉ£czVK<÷ºp^ø17Û_Û3[Øn`¨s=×Y’Ö['@‘W‹È*êöÑT_S|ŒªÍÜW)i†Høë¥%‡"WRE׌´/b),Ò©G[–s¥ZÙ,®e¿]ìÎ÷j–ÅvË:aÍÖdZœ}´/Ý_ùî_©‹/Ö˜ 6SX`R;À9+ ¯ø7Ç嶌˜7„ÌíjK aô·p(A\N‚Òm6n1ú°Nëú¸›M¬p¯´Yòæoý]FPiÕ_–Ò 7;ÞF·8‹6@ G+Ü´¹&uüÁC®lœÍRü¯¦é(µI¸,ªŠ"|«eèöÚ7Ô8š—}ÝEíYBYvvb±IÂ#c½nl¬ü¢Ê +7›_½e¶LZ†o¤"/ߊXO„ò'¶ÊÙâ¶Ûø×|Å2ÏõñÐõÎ]ÒÊH, † ºÞƲ¯*¶Ë9»ˆWnÿ\´—mQêšFÀ´ó¢Ö²Å>0W¬9žü©c|Bà99óS³åÏRÝŽ ¥a#‚וnW^{^ä}¤½d-úعð¹í¬iˆc&i%÷{5¸Áß]'Òírqñlä‚fa[ÄÒ/ºurY¥Ó*­:jéF2 “FRùo7½òÿ¶:‹ŸAX?u¢Ñ3šF<¤?XÜAeMIuqýè¤âø]¡¢øJšoÏ ”X}§©;v =jl…R¿¿>;ìÀ<§óAdfænµ°Q·Öºõ¢Zõaî~ú ÞÐ)Ò'02áȥ͚Åå,Ô;‘ œÀbÞI&f#¯š´»6~—QŒÎdÒ”d÷¦jÀxr˜¢Î°ÿe©¯JÅÆŽ··¤5f1Ê‚U³?"§'¦£-^4yoϲ"Å°ÀôàÙc¾ÜpZÕâóÃ8äÊFéˆZðJáñOS4H¾ëjOÀøSö‚Øv}Ê]HÏõVû¥Êþo§áîàõƒø–Ñ{÷…oë¬Äj‘w×SýÆ5aÎy¦êß$ ucÓ柼̪úáA’=2^°3!#½I$ž¸>R#Bu5ì¢ûËáIöH5#ˆß5ÔÈc)rœ5DG'ð*¦ZfçÓõ·i[/5R7Í÷|ÊSÿ WY½7ëÀÖ¢Ô¾î!&ó©bi¹ŠGx\ï»MÆègrRBÛG|çg™IAé¥×ÚIÈ͆öj¦ Ð%d¸ £òÕ’‹l–Û3)ðoßÊ6¿ê •~O´»<ýHh½¢Fg9 »[±fȶµ#Õ³ªüÀú$\g1">ŸhÑŠ')üZõõ”³ÆöÅ4'ù£Ñ¿ïÔø<ëÀòÙ.vçÿÑ»ÕÖúK¹¡;~šˆ3Øx1±ö*Ul­oCÌl-×GäƤJ5^¾J|µ 62¡¥¬tYñtôúk4%üb´f%)+ø§.s+Ý~U*[á¸ãŸ'b“ëûï þ3§Åî½´LkZݤÉ;mÂy9…q Jª¹§d OÊ kaùx3P+%[sÖÐ8u¹ü4jP7,X!‚ƒg2âЪž–ÑÔ””dÍ›­J©h»à¶CŠ.?äˆMˆo;ëƒÛþ8-stßœ!—o G€¦X|öé¶#Sé{›H¿oOõE˜y‡@ý€Ÿ,pãQ˜êų½y6OEÝž×cmb¥«‰…6 Ã9x T'±¾Ù4™“ŸülÅ;Þ1šbj2¶äIä1ó*ý=lž….OŸÂϺÏÊñÃ![67@oýÜ5»¯5z2ÍN_ì q’%½J°åE¤âM*¹²¥Ù0Í1œ°l"ñ•£¯ðËïYó+GÔƒnÌHÌ®·Û»n×m¼´ Y¨ŒšádCÅç Á’CÖö·¼8U£‰>JoZ3¬4 m®^‹»š[ÖTÿdtv3pîÌž`Y†ëLKË=ð&JK%žK¬5\ÙÑÝ o·DS°ÍÕ®,ü¯:ñE¹¿þTiNëwþÀ!H®™ŠËòfþ·Ú'ÏÀß«Gü§5 ÿ£{lÀ­5üýÛ÷´¶Â¾iß×,×3ðí/¢ÝnÙ)ò3o”øãb†¬†/Å’s “9xý1Q­8þ%§\†ÍjLÚQªu¥›¯†ã9mz…ÓÓu5ëýÈõÙôÅ&[Ò¸|¦žóØ@¶n*FœTÁÜö61âÃç¶áôuõ…²æ™l½ÈKÙê%$p›9fk_=ž·¡RÇxJÆonÇRÔ'§ ^>»Æ­£ç}êܲeý"ˆàØèÂEü•ôH?í€BKÍxly°¡öJö¡EÝâá1—SÀÂÛ«;ÙqÇ"hK”=‰Ö9fü˜ÙÊ2¹y3„*½Ï±=^1}Ó¯DähþÙ|¤R€jí!ªäŸâÒp—°‘Ü •=JÚßÞ)¿(Ò«‡@†¨JR¦ýfò^ä¶þ3€Ìƒãò³Ik!?4†hÝ÷Zý`A#& ecÚj…×ܲA¿f%ŸVß¡uŒ6ûOê4µ‡´#>i0Š=t¶Ýûºy닇œ×/bñ4¶æVͣѺ·b[ä±Ñt¬°’F ¨¹ˆ`ñòcL7…³Kž>l@ŠÛ5Jd‚ŠFhkÜìÓVi¾–(”ËÚ2ÿ+p2«‚(M ‹Ë¯¼jpZœwµ!†õL§ÒàwwöÑíR€…O@¶¾MC©Üt¤óKgÉ—_œŽ2Q”^rù£3û`ëZDT`%%¬ÔçÆdÂjòV–U7ÐJ”‚GÃêwÀ1N5[šN +P¥—NÔ³ǼŸß–§Š°K#>ÚŠÉcn³ÿ°ÛÙ)(<éd!Þíz*`ûßÏÓ. èÏì7ÌÎQR6›-VVŠKÊA8bÅé–¸…dy Ê\»ì™í(Ò´§¶Í—¿‘’†À;n¨v*BâíÅ—´s73] ¿^PÁ(ÿó!ΣåÕÕ5.̶‡Z¾+•J¬6ì•B"´ñëF½k­ë[ C‘Š‡~J¼GXyo0Nâ¤TØC¾$‡\RrƒbP)$'ŒøÖPÓ¶àS$¡#ÃrøMÄ{T–ÀÈŒú)jj&FȤ'+žÝ6nkô˜Abͦï\ÑrÍÇ A ‰}9±ÂŠ„ê-ßDqx×QG’,Áš‰bå˜óî®Wϼê’yIg¥K†Aqhîœ2rtØ +×'•šbÊÏ_¥73w¢¹*] +fM^¨pÞsêàäÁbèfÜÔ‹¶{œáÐ×À ²õ(ûG„FLè¡Iï‘!ˆ)Óû¨3ÝQ¦· '£•ŠfÔr ÛíÀà…{}›´ÃÍ•}L±ÛÏutŠ~ÎOÜÊ?ùÄ8N¿)ˆZiØÕGàŒKZ %_'\Ñ÷a÷‚ÜÒ<†FÆÇ +[•„ˆR +FµÕÖ%£q¥øÜ•Cå3b©éÜÎW¦‡‘ÚÿY™¨ ¢jF”@ÇZK­gï»`àLÝü.›äp™VX?;žï äÔ›£åšÑÌwc‘ÊÏ—µcgïΩܖ^V„tÆ ïÏÐÿ¦±Ì£‘¸÷ ~£šÁy ¥»¬a^d5œÃr¾÷…]Gw`/s-ÌÚ·²b¸¨}ýšãe3ö+NW0©:‹ÄùŽ¥ )“A»º8…,t±Ò|%hL;—ó€4àë ÿð§÷Å.e\éNhôéî]"óXˆRñ€Šêi ®J¥³9Á‡õ&0µ# ƒO&mp%?q×DÚO—jâ8®èâu¦£ÊO|pØ>ÓVž^Ý#Zº!Œ‡çôì¥>sÀÃG#N…}†‡ôÐý(ïb¶lÌb…e4¸$¬Ê<ÕŒzæ>æ=4¦e?WÃÆ *>¯„]ÏÖv´I_•öD°8 £ü’ªš¦ê©Óýà{®¶`²ÒàÉpÑû´Íë_Ù}¡ûúó©$K¨´\¤B°/ÚQUùÃÙÃX´+ÙËÁ@õÎU5ù-¢—‚¡ênš­s¡ƒ›i¯0äþžC¢Š„\º‘)š„‹Á ª¯…`¢MÒIåùù÷ÒixDàýnw®áÖÐÊTC†Ò Ø<.ß·Ù¥íÔ·z^V±É-Æ<ûîX4òÂô‡Ê‹Àiæhê#óÏãõ1îCa/׬õÉC°céäšú)q¼ýÚ ¼Ök ï &†â5b5-c° æNW@$#¿ZTÁÝzñKÒúbX”ŸeŒ½DG'ð*§ʶµž”2bòæï²#²\ð¢'õy¥|´ ë°±œÓÑõ¸h]tÇEMšÝ-FwÍ AÞ¼±üO;(…ÎCq5pv=$êÇÿƒ“þßþH2§:òð‚–'ô¶]…EVWF¸îÿûRÏôƺUÛ¶(ŠÝ‘à|æ,àÉf43l=C +½ÉÄ¥Œ+ì=ï½pÝM#»x¬-ÉÁü·Ög‡Ýí—ý|/Ù|åZÆ¥•«Œ(_" ø09ÑkpùÒ:²“.ïò'æú§ÛÖ–z“mè}¹ýêEñµÌ¦%Ò§éà’¿ðµÈr¸…@êŽÓ)íØÃk×it³s¡žé¸ÐÑ7i4²€Ü~t¡Gn}gÑ­à¡›ër¼ÍqA©½ŽÍÏ…‡í°‡JEÒ’os/W­gg®´™÷Ö !à]&&,Ù½¹ÒZ匾“¼cð´ÓCù+]dÚ?Œ‰j’ä_×å…¤Š,Œ·÷?>Å-4c´hê‰4wþÔ(~•ÜÕ¿¡ƒ¥™ŠÞVÜÖž!Ø ÁñÈ »nê ©uIÓL Š¹ÛN£ŽÑ(JaŸ½’½yqŠB «“.…“L“‡b…ßÐ ”éKÖc“mI‰SÛ>ôؾ >h©Üt©Ò”W†“®ÇZÀªÝ °^*¼õ2ó‰[á»qgú$;û7®BEr¢Nü$WB´?KˆTS}m”R3o…A¶3:–­ ËÑt6¡ŒS¾Ó’äA™gàÕi[Ž/Së&QxäYY½}<ÊiļâÕéì”_ j!zÁa72¾I»Õz¥Ü(^£lØ7§þºéórà ¾˜ÇÏ$ö‡Sg›‹ñ³ó±ï$—MÖ‚JŽ3Z·ærq[ÙsWŽí5ÐiŒË•q",Í)W61EÈÔ—E³‡¶.gz¹LCØM^ï1t—² äw¸U5©5Öõ[€›ƒX+0ù¡L½Ç¤ÑÒx ÕÚ»{Çx?•Ý-ÜÆ4ÓÖ4'Ž½I³ËÜîü¬ r>ã ANì ‚KÓó4ƒ!EL·Y³Ø)ÑùŽo¯cû«8–ê©ŽB챜{(~®b̤ÓöÚ´ní@„]šûT:ã¶Ïts©ª¨—Y¶ú£r¼K…••È<½Û% Ñ¤‰ë ±iØž^|øây,þ[ƒáÒÝ3åø\R6eè›à…q$Oýß²‹ª¿§žI-ÊJS €f?3ø}DsYKÄmÊ…‚ *Kd&*gS /sîÛØéɇU0㊮FÕÝL£›PÞ_oƒiŒË•ð§ÇÞ{Žð°Â2 lÉk°nfeÉŽ0+> îf¡Š1)1®Qâq:{rÖ#~R—"[g°Ô© +üï§öㆰû¼ã`9¥à NLÊ·5šØhñH8Ê’àº5¯F;˜ºJZ²êuÀ›2×ðéó± „u§É¾˜O§|6¥îêÄ|þWZ?Ç€ßí¹‰Z³! Lc‡·›«ð½üÖ&Žf&¸žå™f)ž*Uñüõ~'Ú"íÆGSö‡BüIºLÕÛ6†ÏH®Ïˆú~?ÑÌ?E +§@Ø×8Sö¹õˆ X}Ÿ^.5n=þû¢-´&GËúí¹½5G’¬Ø÷LñzXp`Ô;N]çûÖí‡æ$ÐõqCQñ¬õˡ׈à‚ðTÁ°O+½Œ@^xô÷óª7ù8É[S‡ÝÀן ”Añl™WÝÝ%OÞ»šLÀ™®Dævý®{±”ÿ„ ÙdƒkSêï8s<5'ûüýõî¾ü#”ë7¿™õ¯ò8?Þ6³9†k¬Fýu@n]‰žù/8³Ø¿@ 0‘E¶û¥ð2Šl}‚û÷½ä\†BÖi93*ö¹ÓçÉÕÝøY—4>zÞò‡é‹vôûʘÒeWŸÃUÂÄ8üIà&›õ`~¡z`ž6:9㬟 Ð7;uòsN‘ïK(Ÿ,Z‹ ä'¸-Ü‚-@ºGÜø!ÿjiZ*j(ðñzhÕ»Þ”[nØ­Vù$X½ÀŽßx&šý¿2ç!ã4*o’‡+ ÉÄ>/ýÇ ›Â¯Ôà\²¹€ˆ¤TžkVç`MùFª6°Ùm§¦¾2¥v9ÍGÎÖ؈¡›ý’^ QìÁŠìº¢Åž*æ‘2Þã`ŸLÅ9*ŸnܸÙç ¸/)B”–¯K +J!œ‰×LÇJ!{¨hdqîžÃˆÞ±Q6›ï¶Þ¢ òW±Wo¸mR"Ø÷ ¥‹n£ê#(íý—¤•ºÅÍÉO}Ù-V¹àZõýçãĉaŠj­„ü<®—çf<ÙÍ…8éû¬X<1œy¸í¾GÃáz -Ñk\’lˆbƒ?suÈÝÚÕ.g§Œ¯WilyÝL&Ý=Ùßgž€åæ y +ž¾;ûéh1¢ª¢ÒrÝ°;¡¬1½þIöNÛå&I'9ƒ_øw€€zöRW²;¶ØQ«°•¥l§SÞŸS†4îñ %^ç¢hÞ‰Ð7c-ZwVë_Æ,éž«±mb!Î’Ø®IY¯H‡3ƒß}^ß‚ŒÐL‘^°=%‘* + 8{^¼ßy¤ÿ§! ŸøÏ(š²ˆÏMšÂõÝHéSŽ+ÖÞÞ?%ëá02•¯pfg%@s_AÍ«XPˆ)ˆ,°~¢C*0þ茸Ûô™¬ÌÔÅ@nˆZqtTMùÂZlòÄŠ Ql„l¹LÃÃF-ÃÍ‚««Ú[¿ßË}>œ°Ÿ\‡ÕsËÝ…Ê›¯‘À®²‘ Á—žamξC·æ¹Ût&­<+c„5Ü. +ìveMN:kí«v’ÕGùÍ&~ ¡ *TÓ¹OÊÈÑ?÷梆ÀhÈfF›;Cwî‡&=[·•ÿ]Í`_hεC°w'2¸åWw-p[Šc’ýO)æîVðxN&×KI³¯‹óºÔ¾Z2JóÞÝmU<‹TŸ(¢®Y²^›>0}õgaOzž´ô×U„LŠhØD•üN‹%ÑîÀ›…ƒœµöÁè!é¡u×V¶­«<Ïìc2€_ØÉzvÇ‹»×Y£¼Ç&–Þ@ëi=&ú¸\áDׄQëTC&Õ¶¶¿@û€zÊøa³äuŠèI¨£^B70»Q¼KUʽh¦ ð®k+¢³nÐ[s½=)¦[v¤²ÓKnÞÐoSlra”ÞÝ.ïlv“:"R+òÇO¿X–ÉmMÇbM¸õ²|©Ó¨L+dªóØt7*Æîv´Þ1^ ?«ÿI–ÉV­Å—í/o¼áhWúèȪt#k5ûà3VšÜ/å–-Ãøâ’ŸC¤½ý/04ˆU´‘ïL åNžñpþ0,%G¹“ËÐTŸ +^½Ø¸;i†šݨ ÁAmé|¯òÿ±‘•v©±Ø²‚Rã›øÉda` û"8‚‡¦ßá–”K$i-{ֶ󢀘#w\q$~ùøÔð ÅX8 ÿ%zÂ\N;-50xÿ÷â…¡ÙB)èMÖ½ £²êºFìe @Zœzx©HVa‹7Ë8jÌ^ÒÆKsñO(\ÈY­j:?ÿYîËq›c#ÚÊ;yƒ„ò{÷¡4ÍÜ‹ÑŠP<ˆðŽJ`ºT-XþŒánÉ÷Tý"𦜌vÇI$¼õSJñ—ø%˜ƒ·Àžs™7ÚMM_P¯}”BÉÒ8ú›Çš”„Sñ‡nجï‘h×ùÅ‹IqD…»5gêÁ5‡*­¯¯fCBvwè>lúøÒœdS»bª:TXº2ùºîýŒÂü[/-=JƒÆq ¾uúGáÒ¤wàW¾™™ºÎÂM®o2IÝ\þ‚žµúªèÿ‘šÏÓøzta~½,“E?©P Á½}-ì°¬…G)êÄ€V¹ê†æ1ZÊï Ý®|oÚ-jßEp,@áÂõ©,Ó YA;½y’<ÛGËÊ‹M؆zËH¹Ø”ö‡p«hç×’a¡/!¬ %Þ+P‚5é5—D8¾Øb°$)B0hru@ZÄ]Ë(áÏ0û”‚²5-é™ÑIëuœnò„”¶úP¸§ƒeØéUýê‹ö€Ér;8¦M”¶Ë×oÞéÀwrbè¿Ôñ–‘øây{µ, V©ù1VÜRÌC–æ¹²·5Sÿߥ—@_XqYüÛ± dY±½12G/µ«5e;.©GÅœ¶ÔŒ0éUd½‘à}IȸӿD`ˉ‡JÌ{Ãg/ØEØÜO¬¾u:lÅ'»÷ÈÚñôõÍÇÄ‚}iñÎeÌ|¬±®eñ¾SÖ”oîþ»< py12´ˆi¤€©*N»„´߬A?*½ÛÓÕ¯ÖZD’¯Q]›ç0§‰qmOÀ½!Éá‹|ÂxäÉÅ;’ƒTBtâR‰¯’ÉöíÒ“©nOgfãÁU†sɸ|¹ÙÁ¶Ó\Év:å!žÌ ºÐutÙà™SmÓ'èW®”К›O~,£½Œ mß ˆ” í·jÂóë5Ѷ·ßyc@˜¤Â¢ñ#V—4/62¾<·y™>‘A§r= CŸx«‡Î>]¾[{ÉIrç• +$@ÒW +¶?þ…Ò0㨤 +B¡èþõ+ïví06Å?ŸmOu['kUôS1ð+”ÞõÌâ4/஋±9u7ß$áuc‚Â'\—ËÇóe¼¾€[  †57É–ÔâQÚðw +ã¸YS8HG½1GÍ09 ‘ Ûzö¦ËÈ£÷Gr/nÇã·J]žÓÀÆ®K/+©ÁKŒåƒ¤ËÁ'îÙl^-ðÝ¢ˆÎJ¯þ¼'•@Ek–ˆí®n€Q‘,MšÝyMtc’$)ïôS ¸%실Y ÓUÀF 2 +J·µXnŒ®xÁë”ƬÌáBqåÏv†/Z§>bÛÕCLòÍN`M# ÖZyìz^µCÿˆ¨Cp÷(ØÆ}‹!n9ÀèUÁGÔt™áWµ|!å|?ÜòñmUá.“·é§¶A0)ã_sêô>³A·F‚Üð´s7•@ Ek†wˆ#îÐg÷GNÈ‹_sr9·2wbâ´k Ö +—Òä—a °ö*‘Òë¢gÈ_Ô'IÐH«n”íNŒcbñùÿƒF‡ˆ†´Ô‹–_­“{ „ CâxÜÞù¢ëm®a^¦lT/ÑmUºËß×: ™&S„S”®¤JS¶zÌÖçƒÆV 7¦ùœaqbýƒz-ï¯2Ô|£Jê¥æË­{øŸ–ˆ›‘ÒŽ!åÄ—;f@~æ(+ílø¥ûøt%v?'|½HpH¤3r)+þ‡Ñ»U!&ú•*‡¿òŸjYwÔGnPû¹ pPyyÌj¨¼>åð8˜V¿s×.'_ï˜a  Læ F,‡×É÷±éeÁsàôÅY°V7N­†!R‘\ÜAvgF¶a/%]¿¡$æ©+/Ë +LþÇ8D*û2Ò:ÛIŒ)úuqxaÖœë!¢q3y—Š?›2þ'#*YEî+LžÌ:O«žO|¢X:ñ?¬æ.ñî€÷1žB´ñ¥cÎlŠ/ZýCz9!Rz=ˆ²þ3²`e¤T@ÈàÕÃNÞ´¸0Ê ?2xœk쥖ٵŠh}Ï„#=ß'c~Cu’Ðøô «/üAXSä~$ +5r×»òqyÕò8[Љ†êMôXôÃzÍÉ–i´—ÏÂŽ@„à;8‡#Oªïô¾ä(\Æ™T¡ +™9| @%ä¸ÔÃVb#½>Oè‹«Uõ‡ÛhsDRÈtÎìsî¡¢767ì˜ô¦÷ì(Æ£ú·‚! ·¢(Õš|5D +€ëZ;ã*b.ã è¿N'Üue˜N‚ŽLa%ò' »Î·V0š(2pŽΤißЦ~ä ú»œdc‚`@ç4ø ¯W“"èøÚöM:EgÈ0÷‚MÐ짒$«Cç™d¹sᬬÞlpüàôc»B†á¤ÚÃx¾%á%µS«ñ –r—%œômθÍ(ÅçIÞéôq9.ËÖì“ôŽñ亥͎➀TH{~ú/Õq™ˆ˜O¨(á^­4J0YšE¶XO*_(cª%²µÎ°”ÓÞKœÛ¸¨VL,mÛ¿yD÷oIq—CCv1‚À&~ª±¯¼®$;ßOŠÔ.0t™»‘6½Œ?Çù.VÌ°ÊÈRUœþçû,ÍúrÃÅk‰XóèöF’=“…Úû©†›Ì® Ær>V \½kŒm¤|I¯üS JpOÆx3eBb“ÔΦ§8 þïnó²¡Ã&58‡NÌ!J5øç1Æ^½Ôþ°[ú|+±pG œÉ“‡Oý©±g¾*ӥ ‚Æ«è 8!üëc´S m“«D&»‚ÕkÒS‹yO}ð->ÖÙR¹!Ó£¦¢öÆ Q¶#,Á8ª­½–#€&NdÓ4\Ê>\ÁÏq˜ù6ø6Œê§CÙ¦ìÏ"-$K¹´Jh}Nµéî ÒÜ“½~EUFH+îä"7’¤"…Q¤¹žš]ßM¯®P*@nuÎ* LÞKjði¶6”oÕIýsr¹gWìÚ^,cÃ-LAßÙäŒwïzìØê”JC‡2 §M¶»zkL9l%_°ÌæVÔd•—Š-ptÎÀMgÆvY÷nt&l¹¥cNñ÷rœÛt:Ò-6NY;èD™ øU®·Šu:4r¶âÇJg•'õ›UÜó(?“L ÔgXï`•Á¬Lx~§[|®— j0#^3µ˜ýŽUúûÝTÎüÐD»¨ ƒ‘µ[ÀŽTç° T õ‘ñ‚2Ô„T·2ÞRuª/ø¼dÂìУ¸–9Û;úøSª:OÅ«2>çæîü7R9×0ÒÂJ¡J–Ú6Ö6¨Þó=Vx&NÕ>ºzŠÝ”ÞÁnA)\ÆßVº0jhr®Xì½ZfæM."z{9û”¨î_JÐ gcã¿ûQìOrÀ)ôµåÄVÄ £Û‘ÉÁR@ »‚çé9'šD)²“Yó±¢dy¯Iä™UƒXÙ“©RiÀô|–¾‚ÐˬËëI;®³ÝñŒÈËÿZP-TîÁH`ô<í¬1{Œ’b¾FÀõ.j´²÷\è—ZöØ^‡þØäìfì«·Såä/IÕZÙÂν~xï3d‹ÿÀ=õó}†CTq{õüDQU…‚énÈ€Äñµ礑;çPb…¯RëGñ‚g]#äÛ jçno/áFø“/lÀ©3’?‰Öèí¯zü6®/þ]®úš2´íúPÄî¹›7öEÞ$Æ;u"ÅcgóEΚÊý¾þ/î‹qcúHŠŒYÅ×üVåÅL¨zç«2 +f{[Œ±0Bãàô\ykÈO‹1rÖ†b­Œž¿ü€a·ªð…øs_7ÛOª3_b{Ì«̵Z*Ï~ÇÝ;ˆVo…£†Ü'ŒÑÄוּ…Æ{\¾ŠKš(YÃS¦dOîðx™¢>—HsOZs1¬óûÚ둇@zÚwÀ=zÎmP³ivyDªß6³9ª´§ë žÛ¾æÀô¹ó5†~Aów£Ä7’'trÇÝDŠ§ì·ª3}Ò7Æ Ç>…û£ö=´ Ž›'¶Ž yi\K ÊsA&ŽD~Ê{›·Ã˜IaÂù®¾½ý²VEÂ)×›eúB|9®/ÙŽÆïó…´ß.n ÿ¬åþ1ŒƒÒ!˜ç+&[×}öŠ÷ž'b¢g/sž"±ŠœˆRM%å< +KW1fM[n¸D3„ÎR‹¾ÂæÏt…;“$W¾­˜ ƊЮ™ÃK(:ëPW¶¥·3a/²q÷tñ妳Nãu—fE€)8Í°kSŽNîVi-†è;ˆþžåìBÖC†œçﳼ›`:ª£*îÿN´P-%wœþe°)‰CRÂé¹ß§Âc+9‘¦¾¯+!Êo0 É”N$hŒk¹ (ŸcfÁlRX^‡õ ‡0ûÆ~!;€D–fjÚ m;4ú @¯r{*Ü©òºMºSAÁß®jV|dÿ¬Ê\–Î[!ÆÕÌ°Ù“ =ÐP7· ›—”ß«¨¼H ‘çÝÀ +G±H^.ÿh+î+*àlýñlP¢SÉ-Åo}¶Ý [(¥@¬<¤äLG¦w­7$Ä,¸ûÛÅ9ÕIt”Hß­Ã~–J’ŸPu€—yžÖh)L‚›öõ#û 9:Qæ!ü¸ò×gì¥$Ä„Vùy²¡5ÞüötMI2û¶pˆ¡¾™ÅÒ¤£Ñ¼F±°?Û„»U~'Ž€ë^-\åÉÑ»gœº¾Itcú1nœ!×ó’P%)l=퓈HÊ[µŽ º=C4#@[b_‘æWò’2ƒcÿ µ v*Ê8fú“;úíê$r­~ؤKéU5jÍ«%·†ÚJ8àþäâ½ ívΈ±ô9âü×åB(†\ ìÔYé"¨öí:ŽÖE¥…é½Êd…™¸_YJ)Ùõ2ÓÍ‚| ÍêlKÛË#c­<í%Sa&P”èôï¾m„¦KÊ÷’ñ|—NpòÛ×Â*°ýu?´ÁÚíóZé½$R”SÿyøÌ\6Þ?“ ´pO…(fØY¤®¶¿ÄéÚû<(†bóÅ*± 9à2Ç¢ä¹S3S –×LΫ㱸ߔ žÌß1sºpK©VÂVT\æoObêÆôG255¹' B1Û!V÷dçV¢ÁÚò.[7õ°½‘8ª¦––kNÒzÞ® s?¡(Ñ¿†]CÏrìÂH×e"ý†ÉH¨H%ŒZ|veˆI™É ¤´, ҃ǬŽÏaÕ©Fô}–Àšü…‹ÈkØ­%tÒp€ v ×Ý»ìÍκŒÓzIoŤKJ0"û†¸ö?½æ<¦Í•èì¬ãp-Å ´‰´y{¡:MöüUÍæôÓ¯#`ªÙcô“)ç‹y)+MLECçÍâuÃà’„ÁµGÆ5Qh¸Ãú#£)&‡¬‹‚ˆ+†–è20&èÆŽéTzÒÏâ:„_O€9覅‡ÃøÀzî¦L3X[»ë—(v¬ Ak³ù`t>“knµHçÀ¼W³MU§€L›ý?FFâý·_¹âÖ¿j× Cç@{šb$ #Âb +½2äòMá…: +涡KžAQ‹àÕÕ©×i‡Ž©¬Tñš˜€÷ÅŠ¾½„1b¦¿ú­ŽöÖÝwgJ‰ ¸Ô¿(ý-_æÐ$œ…@Š.5È» º_øÃäGËòT `·1A:GPD®ŽÓÀŠuXS®¸xSÎÿ‰Œ÷‰ÀÂœíÔ:ð$Ý—›µYÒ_1?Hö—$ŒØ–‹ô§¹ÖôÉY]o8å™i:±C÷èh„`µ€-ˆe”©j(Wö`‘¾Þ¯RðųóøQ,”ö±ó wúÝÕ\ÆÚ= •ESd‚Ë1€ ½2@ü#$ƒ埣Òæ—9¥&Üc})k>Ü;’°•cm9àGDIrmEcÚ‡¬òáó-lu%z:˜A ‘,z |Y"•#çÆÕÃðD¦Õ““Â4Þ Ñm2²o|eæQ<û¼š2ª¹3Üf4t+Œ¨Öc»Ñ»´9¦É›Mu Ða^òd¬¨ôJk´£O›Nã6¯{Ö)‰Ì‰ˆ×Ó Q’”üo…ºBm:”R¬ˆš”‘Ðv•ÛD¨f3ó¿q¹‰¤îwyÂ}¤(q²Ðûy\sØ€úFBî6¥ºÂ}¨¢ªârÿ€.çŽ*vÑÉX?ÔïƒÜ®–%òóOÜHä(åøÈÛÊ‘ä<-6ÒUýçÉî@xñ£rbÂÍÓ«CÇéýw»ÜÉrj §ñDYä~—Üø½ ÞçE’ʉýíFŠßîúŽ¤WwÓæ)ügÃýž|…Í ë|t‚†ÛÆ€êŞ׎ï®üßÆ]òä)ÍŒƒØáŸft%sih2¯ª#G£ÁñÍ¥„"Ì€/œÅ`Ad5#¸Æ£¿´a.õé¥e§ûb¬©ò ^ö&XÓ^MÛµëŒÄ@s¾å·¶ªÝTýCtnS ˜"véâ5Ó²†P`ÃÑ +c51Ù;^ezy—ßk þ7Y©AÓr¤Ô¨™¯à%—÷*P }1°ÝDrÚ©ú˵¨°ÍÌÑ4€Ô61NÕ'ÃT¯«qò_‹8zb«þù(D]•‡?•ÑºTjpá÷¼”ήƒ´^ÏÀ†<ˆfœ‘«‡ eÏà$]·{¥Î»í·i˜>„k•AÞ†‰Q¾-9Ï 7ÚÿÙÿß¹F"àùqMü½öŸyÕ¯$uä_:!ý¶KWØïá”f +zùr©=™2&¤4ýª")îÀËm † Ïòê÷± Kë^2‰ x|“WÙˆèOß|r›rXÇbÒc=ù™Ô;JKŠWó-] U bÞCV™§%7îIÒ»ï*Ú±=Õ:îV@Ñî¿zW®ñáÜ2±ªåã!”¶U]ø‰€”ýÖ<À Z«[àZIuó_KþŽ}(6WâÁŽO‘3ÕŸnK’^TÄ›ÃLîk½ u +AÌø2C0ˆ¯5§Œƒñ¸ûoÔ]}‰I(&*㤠½;Ã@ar½’§×@ ž\-@óˆ…Ô|†5J¾ÏZ¬¬Ò¿ÖTÛÆâ¼ .áç1åT–€"aõJk:‘¹bÄ–D»| +endstream +endobj +2285 0 obj << -/Type /Encoding -/Differences [33/exclam 40/parenleft/parenright 44/comma/hyphen/period/slash 65/A 67/C/D/E 72/H/I 75/K/L/M 80/P 84/T 86/V 97/a 99/c/d/e/f/g/h/i 107/k 109/m/n/o/p 114/r/s/t 119/w/x/y] +/Length1 1620 +/Length2 18673 +/Length3 0 +/Length 20293 >> - +stream +%!PS-AdobeFont-1.0: URWPalladioL-Ital 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (URW Palladio L Italic) readonly def +/FamilyName (URW Palladio L) readonly def +/Weight (Regular) readonly def +/ItalicAngle -9.5 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LHHPET+URWPalladioL-Ital def +/PaintType 0 def +/WMode 0 def +/FontBBox {-170 -305 1010 941} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +ÙÖoc;„j˜›™t°ŸÆÌD[ÂÀ1Æ…p§³T¤¢€®o¿˜ˆà9«`ü¯….´Î:þ¹yÕêpýäJ*åÈÀl'¿–eî¡}#)Á¢Ý&»7+å‚/^§ ™ëWŒ{ïÔLßZ60VåáÌQR^¦üλ3rï÷)€#v¢€$öp~c—²¼´°£êë&“è÷ö'ÄÉÇÆÅ¿ñÁä+ž %;a~•ê!”ty`rô³cþúv7qÎ ú¾˜hˆü‹¬Kê[z‚ñSß=¸E+öÃGQðF¦–½Š¸ë’WVMüì¹cY*ÚK/i¬¡ãËi;™t—¬EÆW¼(Ð$Ýôôe€‰oLD™œ)å žàA¢“…t[Xä7‰¶þÈ_ƒUæ*D ¡Xõ½Q“ ôYrôvB>¾Œ:—#usò¦€ +Œ·«”(†HõÓ-àk£ÿx¤;u àÇmâCõwWUåÆ/Ûç3kñªè2o{–{ºˆðñ€]Qå”`†^@Ï0Zé¹>1í£°` waÆÕÏ)&]þÛÄûÞu[x߯&‘?¤N~ &?VDäµ€P·(³».y-aîS¸lV„î˜6ˆÉÝ?!ˆ¯–ÒÛbŒ‚PÍGŽÝ°uµT†åN­×ž‰ q*«ÏÛeü¼­ö<*VΤ‹niå`½Õ™ˆoAò0¬U |¿)P]Å_"dÝÂN`,g¡ˆ´ù +U@?­ÒÃéúà$¹÷r8ú~L*vV™ö)‹U'Ž²ov7tJÍ\Àá{ù ›$} ë2ÓØäKáö(¸¨„”µ¤Üg>šç¯[/ˆéiÀÇ­2Q·Ý“ Ì$íBÇÌU¶×?–ëXJ·G(1‡ÈÏ|ÊÑïY²ë =Y¨'¢Î?»õ‡U‡âýâ¯éáZÒœeß¼çvôñàÆ·¸g¡ú¦ä +ò q!K:ÔF¶Q¸ðÎ&>)¦RÙº¸@×!ø·÷åbëáÝZDæÁÛW%aÔŸ1IŽV¾<'Ú+DøÕ-8¢2óuDª¬¨Ú¨l:rigº¾yä"—”ƒÌ ¨iD“‚¾«nö.À/ü¡nQ¸ «þˆ©Ùrr3§Ñ»É:cw·*|°4è í×ÄsÝFÍ8ì¸$q=çÇW6"CD‡U%ìˆrâRqz p](0R{âï™?uá‡Wë ZìƒáÄ ¹XQo!oÓBÜÿ¨ŽÝjX!6«wå™—Nåí15ŽL ²ÞEý’ Ŷõ.;'ùâ(öaRt™º]•ïÓf#ù?uÖøXÇõºPq-@4e@Ô·YžÂ6i'u oÑúzJ;«-›“)T°vèWZËðˆª¯™m–jæ\ãÖÔ3X{ÒÑo&_×Uü¤È»nn\Û b"—O tÍé7üRá'±7HÉûE€[adô'X½ÒÈÌ*Œ¡¦‘RèžÝ"Á +<¡Ü+ ׺HÌÙxo’›úö[Ÿ ?f®˜Û¡ë\}$Å ¹ +fðÿÀDÑèRЃn mÅ ΟËŒÙÇÀ>ŠÓ\øVÜ»=X¼¿‡MH2&½ÓB¾fæ8̽ëÓ܇“w¡<]ËJÀˆB%aLážæ]e~ãU½RZw˜žy‡V[‡hûV³òÉŠï»È‘M H&Áì§mȽ¸U+ îJ0V‰7ÏAø»®7ï²gþÄsü15§Ö7B`¢ßX±ä9¹úcµ…!Dq–&/™cÅýÐ@2¦›-Õ¨QŠZjÆ"xÊ)Ó+J0c 0V!f $øæÿ.0ŒÂ|·Õô ¾:R†š(fÛºy¹¼E{èÖKaÉ'Oq†2ºÆ¼#¯~fðŸ»È° ºÔà¨È_ؾ\I9Aò Ì0¦ ¦,A²Šx„aYb$™òl–ÿªÂ5¼†6ˆ´>È£ûùLïèÕ5áíG¢g!ÝÖP²ÏYÔáò)ftà׈[jyÊÞü™sZL¿´ìª"Jày,þÉRo·aQû):=sØÝž»K:¦ï’éݹn4f"•8u?"îN#i™ÇÑ÷^Aëú¹f˜þñ¦—BÌæÄÃeÍ°˜†ÎŠ»FªG:ûgžÆ"Lr±rÝ[muÏ‚ê;äÇ´¾¨} CÆ\·ZË‹ñiÚ¿ÖžÜ(¾Y ^Ï ,uýŸ‹oܧïö!-¦j9˜°¯$O¼Áo$úNÔ ôïþX ð f£âoò uïÜg‘à Ì9B$Öús~Žýu‹]—ٵ͖C^:oê/oúüÆ«GÍŠa¥²†õâ¯`´Kgv&†:§Ë +ÛpÆ‚éÏÕXØ~ ·®GÒ°#zß•èˆVI±‡$r–rÆ}¨WÞßE2dߟ· ÷¬ÜÄð\ØÛ£æ²ï~*‹›d#þaIAd¿TY¹í/J$×ÔŠ–1òó`¾^a¯Ã|x’.s¡YN5¼Zò1¹kw¿’k˜W‚*”íf``´Ã9žYͨ‚dêô!Ðtt.èú`”ûy­sÁ!wp•d×KÑ–Ñ«†<•b÷E<MQJœGØW-ã: §ä¤öJn\98%ò7~ÂUô»•uß?ðj-Æ«“$Ó,…b€¸Û´KõKk„‘ÞÙk4²€Ü~tÂt¼~>‡(Á0È·ïø`_èî>g²€Ú2÷”̨4HÑLV_˜‘¶Ké&åœõ«¬`Ò‹/2É‹é&ø˜w?fµÍ^këL(žb3Óâ÷Aôl9(7>yù6Wâˆô| a‚ƒVËD©Ô7úö»éW!'c +œ•œ?Î(™³H à‚ׇªËõ&ðZ€[æ!â ¶ƒ0 ´›š%‚#€'¹¸á/˜èDÕá#ý»ÔŸãj¨ùå‘È•Õ‘ÐÏœ¹mmV+Î2–•þŠƒ ùl•Mñ`{ËÉ%2“d4Vª`SF 6ŒõéY _?¹‡ˆò’ß/Š>ÔÊ hGyIâ<Ú+§›* VoÂjN=v¥ÛTÑÇÙÆ„’è_VwË(FŠšÛ3Ú¨,Å.[¿¨ÊntTFiÉ«Ë@NËdÈ…¦3Ã9¼C€hrZ"‹ý„G¶›Íoq'ÔC=gÔé¥Í}rIÕ‚¨ãõÂc—ÜÚ‚½¬˜;OPläÁÙMû¸;„‘Óž Û _õò%«€ +`!Ã=ˆYs“\‘Ë¿žA¢â*BáÇWÉŠ +¸=0׋kDTOk¤ydÔtãÓÃÔPö{ýVta?lÆx«hÊ»âèp n¬.Â×2V«rœ%v%i§å)à†*–‘¬™ÂDà/çP800…g†œ[Ä'bSÊàJŸŸûäðæzÄ/›·Ò$½“é5r¹ì5¶Ó˜]¥”–0Þø:N™ñiB¼%…Ä¿H)¬ÎeIÄ”€ØhS!ÈOX£Í㤿ìÕO4 ¡¹+¹2­®== `™ŸøÐôæëñ_4ýÙ»N’U–þMÚ“lÆ%ãŽÖõž¼å&°kaŽ÷ ;› ÉБöz–››¶›_vÂùKôt©f1F[Ñ“}á:ßF9>q0(Ñ"ŠÏØÆÅu3TQ á`cìµMŨ”Ø’£<Òó²Ý–ü»°­ýõ¤É¦Ô!¼²pE<"+¼ÚÀnÉLg!:˼ßAb^ïàlO²0®ÿÔÒiS rþû~wÑâÒ˜¥_ú™g@¹“ÇŠŸ…¦‹‚å¼Á‘:nfâ–Í%õ$î77JNÏHIH“VweÊž·%¯.¹ŸÑŒêx ÕãPÓSÓ!·Þ¢49$úÞjúÊ«Ó)@çÖÍ  <¥´Ê,­ÖG—KîÅ5‰ôKlÖfÄ–rÝÙ%LYÚï7“? ™TÄ.¡6¥?~ F 4R¬£u’–4] AÄ%”Jïë ;°âGù?è›òLb?çþãiôµØ¯(á4pÎh@©0…›1·ÞSUœ?>œÛœ–mÚÁ l QÏaêlM¯6’YŠi^¨GY{G`Rse­ JM®×2ÃŽÔâK^Œì~<™i¯§÷ά™¢ Ê5s®É7‘ä~®û÷µ%,tÅ{w[+¥a£¥:èžó‰ªª˜Jlºž““Ú,¯ä[B>Ô=<½ï&N3ËQ&aÚWY†‹•Y|ˆÔÍÈï˜^ŒhfÑÌ£×Ù0ñùè:«0:ÊA!éIeñθ û%ìü¯çÕ…övŠ¤ßÎÞüö¶zl u¯3km%Cñn庞xãotÐ0(sýU$o#j;ËtLïÀ@N™x¥o3lNùìžw¦ÄÞzšô–Tê3(RØ¡ÂàÓ°w‚ỄD&;¢¡ùþÆC¶[óÂáÕxòœe™(÷Ú®ŸCwÛ[ôšH€wï32€Â|xÏ¥“mk”Z.·ÚºÙ«ÈñMÁˆSš‘é$‚>½“ „iF²kÝ!´:¨Ÿo¨¡ðj8½U4afs74?i79 b‰}ƒ4{Qù•NÞÃUׄiÂN5š¹ƒ‚ºÎ ž.ã Á^‹›ÿƒü ¢|úžíõˆLæÇ¥À0³œµì‘kv °z­Oxu3qñ5¡ƒ„fÀšV€!Q'z#Äaœ9$ÑÒ> ü-šeGÐHu„‹4‰Ñ¥U*—Ò"U†ÐøÍÒP" ^É÷.EåðbÿÃ&uB%´ÒªÒŸ[æï˜×È®äfòJ)SC®È"âÏ‘UCö£rí{ÿ½{<9ʼn7 ‹º[3SÚANSí §çÐOø€ã̓ÒaW††[9¦£Ú­07L ”1m‚þ¸µ>)ñüÕ×öµ\в•n+tmþ; UÇ~ŠÉ•:5xÁq>à‰V£b¥dSA陼æB\j gf—CX6_:Æ` ’Í÷o3U6\<(L÷ÈÊT±oÉ´îóÍê7oDDÈ‚LD“˜ŽŒ™‡ÐÞŸ8D}T ¤‚öJЛjœÖ&™1vW +`ËúçFE2F¿Ó8ÒEï>Å×Ãþw6«(ô¼Ó™ô}ƒ0ÆÉOöûM@×9àùôI»² qS¾¯ð Ik&\}R»jâmòB´ë=Ûk-óÀw-½7õ7l d–w¢p7BNúDÆ9h~QŠ)¥’•Ûuåå˜,í&¤O1+Ûk›‚ÛRJWþ\0 oArœ@Ê‹þ«›P`ˆÛ<ùœxa:ö T éªÝÎ6yd·±iªg>·‚âuí¿àÄ!º¢ûúÖ(©þEÙŸB:‰û¶î™­΂«OŽ}€ mÆi”Zè†a§Nv‚d ¿Î²i²·D·qBüÊ5šõíÈŒ[$œXÎÕÆËÏc´ý"CäXHY’Û(¾Q^Ûz~|˜x1¾ó"dVêZx\Ý2nXþ%¦I ™ +ˆ‘¾_jøc‡9…bâæã‚ã~Ðîªq‰ÓáÉñ…JŽ?O~Ý¡8RÃÒ{Ûa{ ·ýWA<ª8[¸]u˜/ÿ»S{!VÀh×¾m¯áóÒÆÂb8@÷Bn]'5¦Òþ—¸ï6«½póÌošìïd4¿¶õusñU¬T0mÉþ¤tü]XÂÀ9¦{ƒk2u~Q«½6Λ@Ö0$_b5û3!ËkÇÓSHÂA:¯“³ÀÆ .Í/ßæ€Ä¿éãäðLR&i9±€6^ËÀ”Šç3õz–y°A1¹»ÎQæ +\s†}Ö˹Óz +YÞÈ£Ô_ÛY‹ +XÏá ÑÓª¸Õ&*õl@<éZH~ŠBÏõc¬]67Vw8¤j/¹L‹nƒ{sÞ$Ékü|h`z€ +ïùíëÂe¡^lî‘áö÷/’¶‘W84ó ×*¡Ös_#í+ö: ÑKt3Õ*Œ¡ëÄès‡¬âôÓ Nò ³••eŠ´)îõ5o|ÍäòýógZXЩ= +bnna„ø¡x)JÄƳHÓÞ¤»áÑœIãv?Ú¢F‚Å•W¡ãe{ ¿:Ôùuбãçžs7«—²ŒæAôV˜5ÁWªÞv>Á”å€"è<@ö¿D&ODTè-Ê ·LƒÌ/d ¨o)OWÆôS«­sx¨Ê`‘õê|¦IN–µßÉ¥—‘…©¾ä˨hÓR­Á +VNoÕ2-ì9ÐÝs®?&p'3¤Nµ³³…ÝLîçLöÇ4ZXËÖ+µYŒ’P¢ÂjNæ'.Áó›·à\6Í æB%KróZ”"†Ë Ø” ×.ËUþør¡P‹y±g&Õ½i…âkÕ +>tëZn¸yô§ôøA%…K™ÄèV¸sß–Y›I앇pjSµÕÝBDrn±|úˆ–ãi¢‹´€ ŠtÛq¸ +Ÿ/Ôf¶ˆÄë[35ñ +nudJRÁ8ûг£’†@ù{nfТU{juÕnú;èaË`”ž› s˜E2‚)…}Uex@ ;ÁÿÓÑãÈzȧmY4^ó TÕ¹®2Í@&ôkê÷ƽkÒÄ>Gï*ÿkå~'äp\f±…z]Uf_27a± kò/]†žitÉ71ÝÛú + <Èvt¥’ÙœßÐxaup;5(­fV»eºWôˆ·cŸž‚û³ÕL)ôÁf÷ôã +Î[pÿ6B¨1B*ˆwDrÛÒ|/)t­t”â+qÓÙ‹jõ)Mˆñ"{uTÚð}=ÝÞ@©Öméè‚xÖ±.fN#3¦»’›}$uϱœIá^¼jiVGõ‹±¼•w èJ‡²éA]Äàmíur˜ v…@¨»Ó¯É ¥ÇíèÜ,ÌV4buaLûÂûž]Ï +ÚFýÓmæsa-ÓŒ°Pf$í&²ü~iM Ùî I¯wlwšF¨§»r8X'U%Ž~ýÉÂ1¶úzÃ!ýœ.T[Ô¡Lã5ÝŸ½Yq¹U‚8‡6ýól´"’ù#$NðIïAý8*öîyxÿñ<[ýx™ïðý…“׸=Òlõ-׃1+3˜õ/éyò12Á&ä•êZƒ”*°¤›ò/ém‰Ü+ŠµåmLÞßSbz ¢É +ö+Òû”·Ú%+K«ï,aY3à$rçPu--ï¬f´tö¤¹6†ÃI©pGjŽŽµ‡!ªÂð ô–£ì›`¡€µûÙuk"³:A$â&@'sèØß/«í6¸‘½+5Û·ÎR¯­{åÙͤ¥}U4¶—=x„èsw¤Ò]ìwêp‰”ä1”nfªàk£)±ÑÜè[ŠÜü*GëJåÖý™..fÔDTe*"«ÃêÙ„Î ÜÂyäßXGÍó„WiJ-ôÏïÏcZ0Wn½2ÁV Á=ÀcÙyïFÂ(óÏ}ˆ~}á=ÜßCí2±¢Ê°èÑWö¾Ó1›]Ü1ÈoŽÌ7\˜‘Õ32A§4¢7ë7M4Æ¥*‚VoÉg¬?JºNo[,<0[ð²Õ¿£â¼ü|Ði&>BB)\Ì5ks¹ð'$rÛîKȺ8ä#Ë¥ý‰r–0ðY—üS‡•¢´afOíþGupzqÌ%‡ÈîÀzÊà ¨ÑÙ¦]‡Éw‹?‘À+oâBÅ«È@%’6*„¦:k"¹¬TÚ O‚Xª£U? æô¸LÀbž†cÕ|…_³ç&¾ƒ•FúgRÃÅ<¥·JòA^ÄÉ%«6´ÚþìX£µéO겞ゕa[QF‡Çr'aD ð±èêPkèç\6¯“H\\qξæÞZ-¼~ŽXª@ñ§ñ*ºÇÃN,þõˆ‡]±ô6üÁ[yÛ˜Öéúz¯[îy š¨¼ûIèÂQ…–ÓùåÆI»*0 €º»Â^<àXn/ófœ,Ò…Ós0¶ŒaÖâe™W¡ëjqHòmÇÿ§=kM6KbL*)Üà„µû+öG·œE +ªÐP6 uoäW5é8"pÄuHÍ¿}=žkUÚQ¬I¨å\´ñìWÝñ”¶DsYKÄmʇ`7]*½»nkº°ä +®~€Ì}•.„!Fƒ![¶ižX•2aÖ:A¢¢Ç÷ˆ"ß_Èåü(|­\ V»B‘‹-X¹f„³òºt¬§ÎÞïF‚åb ëýêáÈ„æWg6‰?’»÷?\‡Hô‡z_ÄY‡*HɽAÁ,¤=åõ»áÓ+Ó¡SaµFµ¹,i-ùvÀà1‘$xñk§ªK{gµîvfŒ“¼¤zÚWü2òo“ªU…¿§‡nR¿s7ô©–¬Äb j‰‚‹ +º\É`,ÛGôèÜ +,®-ãL4B¹h{o• Tâ!qgÆ™$ D³Záô”ÂïÚÖ¨Âr¹­\¹m0Ãg`»";°Ëͨ7>oæ¡ÜÿP ++W¥)8÷´`Gx{Æôê«Ò~Úm_`ÚË{á¼û› jªùþæ·HàE'ÙU]Ž‡ô à%Ý™´­]É…ñ ÁϨú:¢Ð¿b ¥°«ø–úâ{*–ìpäûEì¬ôëŠÜniÈaψkšk°†V´ÿ5icj^‡g‹.æÁ>šÚŸù +WQî¡aRD§ÃWG¨×í ÿùg§p‘ý€ý•ùApV=ƒüŸc%Z…¸€;bjvY²¯à¬Í~-ó¯²ÓøöG¿fÀü¯Ü.K.JÚÅzÄèƒN¥á÷tqqeºŒÿ0½ÉqŽ¨áÿí¢OÔ ÿzkkYR-Éß+eÃ;òUÂE+èC4;CÅÉ©ÿâd¼w] + ˆ“À¢gÀ¼.ª…Ëük…¥œÝãÜŽÄä&ö³{Ç}z<Þ=膃,ž•}*:GS !åX‡-CÊך1eÞ Í"gYª-¿ËˆßØ(‡kÕ?¦<̤¬•–'g³wX;¬ËA† ¶†BŒj€Â|b⺽hKþÉÓ1™+$GkpBjÊ°×#G¬ÇoAñÀâ°¨¹8£g T¨¢Üõ´3ôXŠ"‰œ±ç×e…a”3¾ŽKó~?*WøUÈEÓ;&º.™ÌzØFo™Onò"¸ÕÊ Ñ0;™×Ç*¨ƒ|ÅèPO"ŸB‚—ÊëðÌ烃Hj4ÎæÏŸïÿ.RZÅç™F¬îc›‘*]‚{׉¾Y—?#,5fùÍ'®Á@ À‰åRõ3ýærijµ•>,\ϵjŒgÿœÂ]~²5;$÷PQɨ§çß­Sæ +r+‹eŽ@ñRZ +»îñÈYÅþÞÚv’ˆªŽ¯¸âiJdt˜«\`ª¦ž$BÐN„ö–¶„g—FÓâÅèšvŽZ~Þ\PNÈ#pÞ:ÂiMEA81$eiHrÒc|@Ï–™-JžX"ÀÓfÐQ÷D½éçI/ÄGXÛdÞÀ9A¹ý@F™b‡ÜЇ ¹}…óûïî!+èÆ*¿ow?ÿÙŠg;Âàk0¾~$·!yŽ5ç-a)ÎHÀ%@†rKL¥xÂÛ#µK¹»·KÕ9¥c.O;Å:R(óN½¿?Å*ꌘG×’§á©`=ø9Ì:i¾H0^Xê`,„ØPô÷åó£³[îÒK~ã,ed?!rH­2ͯ‹Òvßé…EWÚC<®Þ—¿÷õöꀞ‡ñêS™Dvq›Ö­8åÒƒQ~ð?‚ Z;0Â|ÇPyŸÄz.¨Ëñ±_æ#ˆƒ +Ú{Ïï‚8 (á¾5LÜÛÍ< +ñ¿+ôZ™VÕô»mJã{ÅWxOCدfÓŠíBÒå˜ãúÿHH8ÁêZ·\-ö¾ÑÖö9EÆ`»ÑMùIÄ5°•F÷In8ÓŸƒbGÌa@N äÖ²„Ñó#ºƒ±³Rãõ½ ÃbɘÀ(õÈ¢­ªJ7ÂFÁƒJÅwý“ôOÛw:}žÙ3æi¸y!)¿É.°]¯1.ƒ(¨¦Y˜l«øÄSŸ0Q¼Fo€ÌÅDñÔ ÛWSíÖu“![/#´˜© Â(ÂËrÉI’IºŒS&ªäA¸Só§xOø³Vb‘~Èô[©×BŒUªùÃÆ!j%Ïm3ÇL$8”õ,¼¥}èlðvgõ÷ôã>ýûP––඙Owtp%œÝ!\å´+y$péVñP­V $så g& Þì{€a¶·UÌÁ>û çloÑ5Ó¢[¦E¦½÷» /( ]ìÏjËýP•K:a6﹪C2KÈ­§ *w-äXWhš½@.A´’ŸìÎò»c7”  NÚPÿó„©i(¡)ýÀêä8s-a-?p•ÿu‘ç„Ù£E>,}k’ó·#CO¼rÃÔ´ÁîHgŠ5’8>¢þÝD"ŒÆ?±À“jð¸¡:…fÙyïFÂ(óÏ}ˆ~}á=ÜßD£,Au¶¿²yN®×!¦ÅF!ñk>F¹Âßyð‹æ±¥ê+ù…™/êÑŸB’Ž&?ÂŒ©bº¹ +˜A”&Ûèæ·›Aè饘YlÀ¿Ýw[´¦úmêšíHÁEÑErÀ¬áå64¥C|û?ûžÉ„!ªÈÇ%~ê„àSwÜDSbÇéöLÉrŸ~#zžÃ,„‘Ë¥îä–ï³Óy +%ªrðí®ØQgÞB +ŒÈKÀ<æ‹`hûž{õ¼"F7#Ù°š¸&6t1Jø +äÂ)+¸‹êœið®Ðx·ß –\X3…I#Ö ~3ók ”Ëwf襪¢Îß ¸Få%«%çp¼ü[ƒ&ý½;Ó~¦ +¦Þ¨‰ÊÆ16=Or ™Ïœ´ÁÅ 94w2›†Áy›yó;°œ¶wc~ ê´ ®®îz¬Ö>b3ü>FžgU0à‹c(û‘4`²Ø’4/#Ã×Îuo²:ïm´0B|X•Ptl£²n¨2…Œ2]æËYZ»vX£í<ªwË}ö#bã$Q¶› |¾ûU•ÿÉ;Ë·îÛ´3ók¦pÔî5ãô5*ŠºO깿F¡>ÌYG>Öœ…–Ú' tE͸}pÕûŽßHÂ¥+1Àå ¹š£6,ÅC&±Fcã>¥ßc¨ÑR.“ ¬Œèš:Ç-?àß2ñ§|²Nõýü¨¾8TšfÖQK"É”»þg±sqíaã+j 1Ý«=yD +ÙB½Âã:¾¬E «"´<žvcÎÔM¾@Ú„õðñƒ4»¬ @µÂ™‘ÖwÁ/RCú¿|«Ñh–%µ3ä*ó*ù‡µlßUÿWá[_õyŽem‚JnïŠýƒÿµ`ƹlÌZO(F8µgÕ5Ê€rݽíÑùñä \d—M‘?œ6¥C²pRÄtY†+?’ìÍ8F3ÃX={(’éD«¸÷¼‡Kì="ý )¶†MÀÖRWÒTc;½–ßÇã8Œ•sRHà`†P„¼=¸,íºü÷ëN0á°‰Jz:dV–›ÿ¥ô ˜¼¤·úª¼¹9>Þ–F²Ùù0á@¡ á +%¨Ž^Á•u°ÇK  ÜÒ¶N#F:3ý=¼^ä­¬t¶môñ^b RƒÇÇÆzTkX0ìi6kâfwš“{$~Dñ¶ãkæ\úæ ZRïysã:õÍ¿%ùFòŠGmJ›Ý*ÆÏèi5½kÇ$Di3è‡ÍŒh® ?p|cˆîF3(ú7 ÜþΑdÊ2uâVŒˆñe˜¸5 ¹>¶á=£–HmÌúI¬ e´Ì¸sÝc¡¿0뾯Ÿì,Z÷ÒEŽÕû¹J²®É[: Sí|(¯+ë¤s«E ºèìÕ²£Y24æ—îñV%ëvDá«5ú5õ¾~ÏI}ÑàÓIEb, o·Ë}!ˆ¶ÎÆ»Â,ëÕÃÍ×ÓtEÙÜUЦhu†BÌ”¼žFíŠ'ím…õL)Õ$ö¼ùÓ&•$a p&+ VUpc?Üå’')‡](=õÓí‚Eo_ðÝ©Û—)†Î4hxå±N,®½¾§“凙š¼{ÕÀ'D@‚J•¶ B~lü¼18$oó±¸ê€ÿÖ“aø¯g~lïû8‹mÒ¹¨ö†ÖªI,Úˆà=0cû}›r°°{GR®¬fû6gþB%,èëpiÉæ~–ê‚^»©.Æ! Oa=³ê½.mK!’B¹#`?z¤AL×SDòÜ®iàþ/Ãæ Øwí¶‡ü´Ç$¼þÙnh™éØd¾=ÜŒB0÷è÷|*D†]—î¹ïÔ«|AZå…5(;Ò²#¤œÚé„—ôú|PHÀ†!@ùÎV0ækëÈ7%¿ãHBh5>¶¤¶‰É/ÅHÏ–]õ.Ü£Æ_»¦± ß];1Q}Lrâ¾ß©æãåL’ßþP®Å8âÆòäa˜4þ±âB–pxÂö?µ†¿ß\|ûÍrëÉ™sÕWQÓ]e +G¬Î÷±‚ûÐÐTbj…àG +Rg6¹h›_ÇîüMåäu]ƒ¾Â¦m7‰oâT·¸,UF›’6ª³HŽKá2:Ö_y|=²Ã„[[ÚÙbˆÛ>uÚKŠÍL˜ Ê º×þ‰Ö¨K!&ÓëHwºp¥‹âsIÝ”ÀxÎL©ºj]¬×ÐKúáUïáíßI¬†håƒd½‰Ñ>$çK• ·ŸûÓ È–ûÆÓ£|D¥‹c¯å˜Ãfá(ásºÛ³d8¹MõbCqFµ™m !è˜rýVJË6ËðX¦ÇfÔJ/½ÄíÚÌÁݵ.mÞxÁtl&¢£D«fA˜S,Ëéþx¼äÔ%AÒ0ùušÌÑKfÉÒ ¶1óú(±ÆµPÝTÁßÃä@ø‚Ï€9MÙHm²>6ª[Á2nˆrn-og#R¡])ö™l;nº1Ý=“Õ0’µQè¹ØÓh4èGžhwžZ$»‚°$â^ Ê¤Ã¨8—‰¶ºn‹Ýòµ8¼$µ&ìÜ +ß +AzÍÞüö¶zl öóä‘èŽS yÆBwœMS¸ïóGF}u«Ÿ–—?7Ážä\û¬?›<šS´LÕ]47€€:OóÔc­° x‚àŒpP²à·ì›~$k<äNeðÄ h$ßÀû'Ÿ†®l î ñä5q“V•Úå³®Ó@0ßRi´Mª+ü«ª¨è~÷E’¶û4¿¥ËoT€e[ÂÝcÒ¿-¼éÆ£‡®LpAR›GëbÍož uõô¯#ZýJòb-¶à¿c~F3ÝKú¥öÀõÿjzØ·pÑP}nIx>ŸBºù0«6Án!ÈiY QÇÓ–‚Î"?•è&èÃdúq0QúTƒ#dŒ áì÷p8#Yª1b2 4 sZ† Ž­ÒÉßÔ,¬Zò¼D#òüMíjÓÒ²Ù§B"ÙǸê!S¾žæLÄÒTJcj€M/ÖàÖ8,6ò‡ÇàŠM¬ õ™@æÕç¬NÍB<Õâ¢ûOìá~CìxôA»áÁ=~®ÏB™yüÌ+s|̺ƒ:Ãmný³æ åO ¼Op´½ãàùàš®’•äRLŠè}ù©º­¹°ȼð˜t¦Ô­ +qOÅÜá¯s•ðžnrÇZ'ùD­#Tµ—ê©®kVB3ê&¹Äç´R;;óa«sµëPxVu¿{ÚúbYÞ9L°Œ|–ˆ! }eÞÂnÞÊ7iÃÞøX„ç#wlë4W3˜L6Uª€ÈK¥Ù¼æUZ-î^È¿APW¾¬ÊæQJH”ŸòêPƒIò“a }bþ‡;™^ˆn‘âx³ËúåR¶"¹-.È_µ§†nÞG¦]~0JšËVÌ P{ 4°JÊìÏâñkø/j"í'{£ã¨¶zê(’‘VŒÛ”àkp¯mׂZl½V‚»- Sˆ$Wú#ý×]d¸M>mÍî^NÙ˜ÙVçù3ð·ÅU #t†Ð/«„ÑšQ-”}dºÞRpã}ñø?V­íQBbOHWÖV(bÿÜÅm&Ò|¾¥–_Ùš‚ßL€ævìÐõ$íðBîmŸ”jwú„ød¡ñ{1Ø8xœ²$zA¤8ÈО±Z#9F>†õgûÔ?é05`ZÔ1WâNÚ¨áÚ#?Ìøpó¯A‡1ŒNI„ËÃH‰€¸j)^J‘ÿÔÝÆñû_?¥ôÑŽ]ÈQMK¼3âÂ+8›0AesÆrM{x²ÃÛÔC)u‰$ZK©’RÿÚ¨[ȹ“!·3ùÜþDÕûþÊà_(t¸œ¿5è’UO<. s¢±mÃz6º ZôDšõ + º}¦]ûkÔý>#“ùPó¡Þ¾ƒ2ºu 3vŠBI,ìt䢅BÔQº´vC³±½»0ÎxmQP½D\ÍÿdÒRØò(¶L?‹± GÉå.åðVV›“ +ÉŸG@vð}W©¥¢‘žDºåø–‚lÑß¿/©"fÙ뺨Ì5,ÄùEë™X×{çÂ÷»6ðìÞÝú=1+ØUxáÖ?Ž[ð/™£d·šÁᙟáFd—¤UD¢u_“9±‡KojÆE½§#Ù…¤ÿ6 ð`WÂêÛ¹9×· ‰¤{Ð0ˆú_RT*‰ï ™v.§ÝŸ ¬Ò·•7˜ +§Èèv%.JÉZÍ0ÇÔF= Šu +öÌfcÖw•C!!}«¢LaGxÑ`G +¼xP÷xšòLñUí=?¯S0ã®S&Þ^¯Ú›® õ¦HóЧ›¤\©ëÖMd¤§éx%‰ÿÝ땇îÏŽ•Q´÷E’Å”ªã÷mH âfîÿ»»ô°zm(qþñ6.Xê(ò|ºi3ž“>'›tÆ'EÔ¦3OîƇMÏë‰%·/ð˜íäôä¢.£n†ûýÊút™¦ôűìA &9p†„gµ>‹·l¨F¥Eò¹[äš[šMàÉN5]Œ$ÿ»– b„gí ª†5‘V…½hãÜðî)/Ò8#—Íl;ÓöòçC!Òì5O«Þ“IˆK³<\Åÿ ®SÌYø,nÂÞ¶|lס5!š’Ô· `Ö—7ZåÛk¤Ä;Ñù²'µh=œ^K9|ÙQ¢©ò÷ NÐŒy@®’áx¿LG﮼zÀMØC~rÞ +Ë%5&˜Vð>føXÒŽgÈ_…8eÖ&[©údWgê Â5ŸÜBrP2Ò„ŒÐi ¹yïkOfc¿Îæ­†ù»Ü]t¾3f f„ÓÜ,}UÖÙÇYã. ,Ãâið‘¤úÞ=ÅÕOG=gªNûpùD´FóƒgÜ…`Í2§¸àêK7}æ§R‰XѲÿ!œt#V/›Ÿ!mü‘¬.Â*5nçkSGåt¼q!ò8…èmŒ-kU²º­ ýzªðN½°>Æ7’BTpùWÓâ '\Ü…h˜¼íÅUøÏ>r>Ä$ôc‘÷rš†x¶HsʬÓˆZŠDåD6‹ÓÎpÀž -%ü„YÕ¢‚Íä›í8 Ä“È[¹«Þ}G*Aí³yEf2çýɈ*Î)U´¿“Ggšv@zP¬”ë—Œù£fFÀ¦'ãøh4 {ît¶Vä›sË*ñÄï;Ò1¬ÿÙim©±Ó+þÒ®úåE‚Éß]¿üßĨýŽ£´]g¸_jB¢¿°½u§Ô«±õè™óûû‹;AR¦6Íø@¿ñ: zÒåQ}¯“×!Èæ´™ÈôuB£þ€ysÔæ´Õfdù,¶ðçz[þ’!•½‚ Q|À…Ì¢Õ×D9¢z%ø˜øvŒ§Õô²fbó©cÇ”YFzA«rÈša†0¡Â6NYOïþE–#¶‡ŒËÝnotœ³Ì-W£Úγ>Ñ7Ûy|Îò™(:Úã ÛÕ@a +&~=íÂÓ"M;¾µ vŠëv9Œ4%«*r×AŠìÛƒýkåcgrú›6ÏÓ™‡OlË"ò–ŠpxA‹>ü½9t|^Æù‰Ä~ô´9³ÐTÂy½…•Êj?Ó°¯ñ’¾ì§ûÆ«@€TP 0_ûóVx %äÞu68[âÑ/yá&Û1ÓaÙt?^ xO&ä‡Oµ©t® nú`Õ„˜&Èfûûª$_òÄ¢‘:§> + n'æîÑ>(‚^å?Q-ñ€bwÒÌbo²ú»Ñé¼[˜”º=ñH²ÆvÉÿþ‹ÙžÜ«p ºV¨k°VÖêåþrs*ÛP°ÎfÝ1=)Ö ­ãlz×ê…%‡ ¢A"L£9#Éò8Hï³jÿ3×ñ:5å#:Yfv‚j¹OƒÅ&áÒþìLÔSƒB¬"è¦Aæãz€¾¢Ù¤||<´Ü%àÚûQ¡AÒ?ÂÇ‹WaßË0Ù“šcá¸^LábŽ÷ñ(äÐ.ò ×?¾dHª¤ôøðäÐ&ƒ‘Ÿò ¦å+3ÊòFÚÊ’Éw¶“{vŒîÙ4%t-—Ì¡ƒéÙh)A…xmâc“%$g-Þå"æöOƒüÈq¯çÍE3áËá®É2„åzåeä’ߘ¿ŠL­:’=Œ{̾‚U{ÍK%™\®êIKÞ†Æ/jbìwJeëG‚°›tsëBBÃøõˆŠß5‡P®ß…Æß"x£.ÎÊêûÖu u6P¸r”$š".Wõà$A ;æ+ +k ,ÜïÒf¯B³H¢-ÒàH©!äŠZµ£;ã˜üL}¯g]J^s¼KX-!rSáf +p–îs|¹*Á¡÷#}ñûtu(~ø?¤H‘02yÓÓ¡^àþzW'¹›jC°&fv»#œ ¼äg9YºûfžNåg@Ò~°¾^Û†«Évå0øs k÷ôJiøµ®^öSõA±òÛ0Š ÁŒ(*{’¼“ÒÿYÑÝ¢IŒrðýüKB°!o?¿”ÞX, £Ê6P4 ÿ(óõ}rö§bŽED¿Çrx3§„/§¹Ì´OÙd¨/ŠÃÙÇÙF¡»ÊI¢¼†RGd”Ç f á}åJß)}Ìø)‹Áy˜zô…›ÔÅÉ6ÿO‹o~/ê–ìƒï*tÒŽ¡n¯x ’“õ9Çï°Kš6{Ó)ãe€_ƒ.ÞÀŒ‡^èeÞ)ÖËz„¢]Èñá/ϤŠMàYoÈô9,¢œ—Þìg£×TE눮}qtôºšGÍÛeÅX‚¥Ä_wxÃël ñNUá¾=wÆU¥w*ú5ëqï6¸Ù±]tR4‚6Œ[@[LJ*8Þ*ñèŸÊj‘Òës]p*4P+ã5[šâ +ÏùÖ 9¦}v·5¤$H•à”úúVbàöëìjíFaõý®?ôÖ}÷­ÀÀ„ì#bÉ5ö]ò*ýÿS"^ò6>Øù­ÊÓ}uFÀø¤Àa›d~QÚ¡d™z’‹ €–ü‡—Iø¡¤áo>Šún}ÄŠárËÀ©o 'ª÷‘¦Xdü`C- ¾Ó’duÇ‚TÄ(n¿v8Ímë³ß͘•ƒUÖ67ˆ¨áBYgøåR>ï‰`±l–Ÿþd³õ- +×ýc%ÄÆË£7£ÓÜ×Pä1xÀÞp]ãÒw/F¸N¡ºNæö’0àqûìÃeÂ7¯ê±åëYÁæÍÏË?Ù*KùPÏôp\þ|Âi HÓÕ¨ ãYNUÓ0ŒWsK9àæC†­Úº¾¹pS^Þ"戺•v#†iÙ"ÙʆIúCã¨Á"ŒIPA{QmtÑ_ØZѦnzE¨]½ U5Pd"ó[ùÃ`$k¬=ú̪G­ÖäË¡Zï‡ÿÉþÏfŽþ;ÇÿöíšþFèLx5†÷±†@>ëÊ æ£ÙkhºæVë»7Üèï +óÌ T¦@rrz‚)(å°]Ùß K¸ù+ؘfi©ÛÂDøŠÄÈ:HÕ±ëù÷ÞÞ»¥Â¬í‡Ž²B£WU!|5c}æ¶5‰R¥#Ó_훎ì¢Me¥z4ºQû:àîФÜàåký#ý8œA Pbâ—ÉwÆ™µhfOŽokï‘Z9ëè\©¶¨g„$o­Îà×.ÞϲWO~T5 ¨Gˆ$f’œÜÏ‹”“k½=r“ Ë/3Gq† Þ¡¤s­»ÅíÍŒ§)»vx*ýP*ÏÿÑ=ßÀcÑÀè~ÓáVô¸zíä7dNS×4B®ÅÐæS}©RNaVÁªPÛm„>ÍQ¿i6h%8ÀZÖ½±ïPGQqºÇÈÌIâph,‰1¾-Ãã…Â(†Þ°ñâ±÷ùÁ„çì¬ÉluU<ìh¸õZ๬rÉ ~%>—Ö}Imkõ|Ëë›㢠=ĺ©Y#Z¹dàÂ$Ú¾öÃÑN¹TDŒé”(gÉÃ)†u ßÄÿTÀvû#à&å“,vžq÷¿͹ |ú8@\Nˆ®.ÒUè4”ÄÅߢ?A°QÉ^éÆóp+¥™¡tŒün(ÏÎI`¸#Ǧ¬H˜hÒâØŽÔÁˆ¢0$%,K“µ®¢à3å*Z耘®1̃±²ÝYº9åû^¾5~\Á³*ºê™já¾7£ ó“o]ßÛ-”©N÷–É»5×Úƒ…f1Š!MÔPK§‘¶‚«°™ 7fÍ ƒiEÅ:Èka¸áD‚SœV +ôᦠŽÞÑ«ª¸™BÜZ*p ¨‚ã"Ô»[´V{•»V!3ú6•Ö>ùæ&lÝŸhæΟv¯Çè6ÊG¾ýC™„êÅ&ÕL¾mÖç¼Ψ…™bÈОÉ{³ÓÐíî »6½nS=µîo–;J¶Û§.'ï£R’ËÈõN œ–È¢ßÓâ[÷šƒ‚\Z^ß…Ù„ õ™ +­%–ëXZÜÿçuqË +«ágÕµ~ƒúíÖVÆÂ…–ý»Ve;˜[ÝýÅÁ ÉLMÝ ±ôÐ}ÈfŒŸÏÑ`t‡š—Ÿ7Ë ‰Q˜È4úŠ¶‹VZ#¼ª +’  +ýƒíë.¦Wànd¨E¾³ŠK×™»ÅɶªQÃ\åÜàØŽ¬Ý°y +Æ4à£øÕèß|)’Úñ_ˆZ}ûóÐ> R¸õY +ST‡¼ax5¬ µFõÅzÕ>þa~zë[KÊQ÷ÔHD~YÖ­kÕ‘²‘Ûsø¢ÛŽ•Ø›¿¤´fœþwŒüÒw'Q½üÔ¡þø,À¬0ts‰Ý¼h:ŠSqÏW°Ò=E2Í'jˆþŸAr+…Dé’!}AÑO:YEÀöT:Š€¸¹²c=öóìn O¨}Æí¤C2wp£rA˜CšDêo Ò )Àse4›uNôã™}ü¦ŒÓx 1šåÓ~Xð³§΋[/B™ “BöøR +î~çsÕ¤4(¥ Þ²î‰`Cœé9’¹•ŒôÂ:E"²º–€IY~&4£‰RYæ¶&{2Šý$±GÇrV›ÀÚâ?É›ãµDVàêkÁ—Za¨Æ4ë%›O*tÉÏ”¯Æâ,!«–N²U¹ÿl×*‰ÖÌ[=a§»#*‚³–RZ +Šãø¹ y"]M¡ÐcØÙU…%˜»Žƒ/TJ ͹Æ2„PËH~ëH=yišÍÖ1÷9× x {ááyÚ½ë·Ù"“êÿú²S¦YÐ^{Ķ3þœž÷Pk<ÈZ?\û/ß2Üw)€%!Z?ÑúT0F :ƒ!WˆuùÖ „óá¾7Ìî8 O7±ów#ÀÄ¿¤ßzÂ)¹>×…VŠh&ksLÆÊcjYÇFír­ô|#3 #Õá:^7 X÷p²š¿lTŠï6#¯ð}«1¿½\]Ó=U¼·¸Cîd»øøä_t}ô¥ +åˆ3©•ä!š4wîQ+¯æITÝÁ —ÒŽÝR^n¼ÿ¤bÏάU#mÁ´¯;]§—Ho7Ò½éáŒJI[ͨ!ªNIÕú˜Œ¨÷|Lb–'æÄèDÐð3R@ñ#Ü;ÁÕÁ2¾˜šŸÿ—hÓŒLÎèŸÍ8ýÕ?/ 0|—¸!ó +Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: endstream endobj -2262 0 obj +2287 0 obj << /Length 1007 >> @@ -34020,7 +34391,7 @@ end endstream endobj -2263 0 obj +2288 0 obj << /Length 1153 >> @@ -34098,7 +34469,7 @@ end endstream endobj -2264 0 obj +2289 0 obj << /Length 1535 >> @@ -34204,7 +34575,7 @@ end endstream endobj -2265 0 obj +2290 0 obj << /Length 1291 >> @@ -34292,7 +34663,7 @@ end endstream endobj -2266 0 obj +2291 0 obj << /Length 2050 >> @@ -34438,7 +34809,7 @@ end endstream endobj -2267 0 obj +2292 0 obj << /Length 1114 >> @@ -34514,7 +34885,7 @@ end endstream endobj -2268 0 obj +2293 0 obj << /Length 1109 >> @@ -34590,7 +34961,7 @@ end endstream endobj -2269 0 obj +2294 0 obj << /Length 1109 >> @@ -34666,7 +35037,7 @@ end endstream endobj -2270 0 obj +2295 0 obj << /Length 853 >> @@ -34724,7 +35095,7 @@ end endstream endobj -2271 0 obj +2296 0 obj << /Length 1113 >> @@ -34802,7 +35173,7 @@ end endstream endobj -2272 0 obj +2297 0 obj << /Length 1477 >> @@ -34905,7 +35276,7 @@ end endstream endobj -2273 0 obj +2298 0 obj << /Length 1477 >> @@ -35008,572 +35379,800 @@ end endstream endobj -2274 0 obj +2299 0 obj +<< +/Length 1482 +>> +stream +%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-pplri8r-8r-0) +%%Title: (TeX-pplri8r-8r-0 TeX pplri8r-8r 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (pplri8r-8r) +/Supplement 0 +>> def +/CMapName /TeX-pplri8r-8r-0 def +/CMapType 2 def +1 begincodespacerange +<00> +endcodespacerange +15 beginbfrange +<06> <07> <0141> +<0E> <0F> <017D> +<18> <19> <2264> +<20> <26> <0020> +<28> <5F> <0028> +<61> <7E> <0061> +<86> <87> <2020> +<93> <94> <201C> +<96> <97> <2013> + <00A1> + <00AE> + <00D8> + <00ED> + <00F7> + <00FC> +endbfrange +50 beginbfchar +<01> <02D9> +<02> <00660069> +<03> <0066006C> +<04> <2044> +<05> <02DD> +<08> <02DB> +<09> <02DA> +<0B> <02D8> +<0C> <2212> +<10> <02C7> +<11> <0131> +<12> <0237> +<13> <00660066> +<14> <006600660069> +<15> <00660066006C> +<16> <2260> +<17> <221E> +<1A> <2202> +<1B> <2211> +<1C> <220F> +<1D> <03C0> +<1E> <0060> +<1F> <0027> +<27> <2019> +<60> <2018> +<80> <20AC> +<81> <222B> +<82> <201A> +<83> <0192> +<84> <201E> +<85> <2026> +<88> <02C6> +<89> <2030> +<8A> <0160> +<8B> <2039> +<8C> <0152> +<8D> <2126> +<8E> <221A> +<8F> <2248> +<95> <2022> +<98> <02DC> +<99> <2122> +<9A> <0161> +<9B> <203A> +<9C> <0153> +<9D> <2206> +<9E> <25CA> +<9F> <0178> + <002D> + <00FF> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + +endstream +endobj +2256 0 obj +<< +/Type /ObjStm +/N 100 +/First 1027 +/Length 18269 +>> +stream +2255 0 2258 471 2259 1102 2260 1573 2262 2148 2264 2373 2266 2617 2268 2965 2270 3191 2272 3422 +2274 3707 2276 4232 2278 4479 2280 4956 2282 5299 2284 5778 2286 6354 2257 6783 2244 7224 2252 7442 +2249 7564 1860 7970 1791 8133 1469 8323 923 8484 922 8674 921 8834 979 9024 1025 9213 1263 9403 +1136 9568 673 9738 675 9928 674 10118 676 10308 889 10421 980 10534 1037 10650 1072 10770 1101 10890 +1143 11010 1189 11130 1231 11250 1290 11370 1342 11490 1391 11610 1440 11730 1480 11850 1519 11970 1566 12090 +1610 12210 1647 12330 1683 12450 1722 12570 1763 12690 1792 12810 1826 12930 1864 13050 1899 13170 1938 13290 +1975 13410 2013 13530 2052 13650 2105 13770 2207 13890 2237 14010 2300 14094 2301 14212 2302 14333 2303 14454 +2304 14575 2305 14696 2306 14780 2307 14885 663 14954 659 15028 655 15116 651 15204 647 15292 643 15380 +639 15468 635 15556 631 15644 627 15732 623 15820 619 15908 615 15996 611 16084 607 16158 602 16270 +598 16344 594 16432 590 16520 586 16594 582 16719 578 16793 574 16867 570 16992 566 17066 562 17154 +% 2255 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +% 2258 0 obj +[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] +% 2259 0 obj +[528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] +% 2260 0 obj +[611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] +% 2262 0 obj +<< +/Type /FontDescriptor +/FontName /MNPEHI+CMEX10 +/Flags 4 +/FontBBox [-24 -2960 1454 772] +/Ascent 40 +/CapHeight 0 +/Descent -600 +/ItalicAngle 0 +/StemV 47 +/XHeight 431 +/CharSet (/radicalbigg) +/FontFile 2261 0 R +>> +% 2264 0 obj +<< +/Type /FontDescriptor +/FontName /TPELEW+CMMI10 +/Flags 4 +/FontBBox [-32 -250 1048 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 72 +/XHeight 431 +/CharSet (/arrowhookleft/greater/less) +/FontFile 2263 0 R +>> +% 2266 0 obj +<< +/Type /FontDescriptor +/FontName /VKSUEJ+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 40 +/XHeight 431 +/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) +/FontFile 2265 0 R +>> +% 2268 0 obj +<< +/Type /FontDescriptor +/FontName /IKXQUG+PazoMath +/Flags 4 +/FontBBox [-40 -283 878 946] +/Ascent 0 +/CapHeight 0 +/Descent 0 +/ItalicAngle 0 +/StemV 95 +/XHeight 0 +/CharSet (/infinity/summation) +/FontFile 2267 0 R +>> +% 2270 0 obj +<< +/Type /FontDescriptor +/FontName /DUJUUF+PazoMath-Italic +/Flags 4 +/FontBBox [-70 -277 902 733] +/Ascent 482 +/CapHeight 0 +/Descent -276 +/ItalicAngle -9 +/StemV 65 +/XHeight 0 +/CharSet (/alpha/beta) +/FontFile 2269 0 R +>> +% 2272 0 obj +<< +/Type /FontDescriptor +/FontName /NCCVYE+LMRoman10-Regular +/Flags 4 +/FontBBox [-430 -290 1417 1127] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) +/FontFile 2271 0 R +>> +% 2274 0 obj +<< +/Type /FontDescriptor +/FontName /XKYJEW+LMMono10-Regular +/Flags 4 +/FontBBox [-451 -316 731 1016] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2273 0 R +>> +% 2276 0 obj +<< +/Type /FontDescriptor +/FontName /EOXOPS+LMMono8-Regular +/Flags 4 +/FontBBox [-456 -320 743 1014] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 76 +/XHeight 431 +/CharSet (/b/c/d/e/i/l/n/p/r/s/t) +/FontFile 2275 0 R +>> +% 2278 0 obj +<< +/Type /FontDescriptor +/FontName /FREPJB+LMMono9-Regular +/Flags 4 +/FontBBox [-451 -318 734 1016] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 74 +/XHeight 431 +/CharSet (/A/B/D/E/F/H/I/K/L/N/O/P/R/S/T/U/V/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2277 0 R +>> +% 2280 0 obj +<< +/Type /FontDescriptor +/FontName /XVBOSG+LMMono10-Italic +/Flags 4 +/FontBBox [-491 -316 834 1016] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle -14 +/StemV 69 +/XHeight 431 +/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) +/FontFile 2279 0 R +>> +% 2282 0 obj +<< +/Type /FontDescriptor +/FontName /BDDEWM+URWPalladioL-Bold +/Flags 4 +/FontBBox [-152 -301 1000 935] +/Ascent 708 +/CapHeight 672 +/Descent -266 +/ItalicAngle 0 +/StemV 123 +/XHeight 471 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 2281 0 R +>> +% 2284 0 obj << -/Length 1482 +/Type /FontDescriptor +/FontName /GLTUCO+URWPalladioL-Roma +/Flags 4 +/FontBBox [-166 -283 1021 943] +/Ascent 715 +/CapHeight 680 +/Descent -282 +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 2283 0 R >> -stream -%!PS-Adobe-3.0 Resource-CMap -%%DocumentNeededResources: ProcSet (CIDInit) -%%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-pplri8r-8r-0) -%%Title: (TeX-pplri8r-8r-0 TeX pplri8r-8r 0) -%%Version: 1.000 -%%EndComments -/CIDInit /ProcSet findresource begin -12 dict begin -begincmap -/CIDSystemInfo -<< /Registry (TeX) -/Ordering (pplri8r-8r) -/Supplement 0 ->> def -/CMapName /TeX-pplri8r-8r-0 def -/CMapType 2 def -1 begincodespacerange -<00> -endcodespacerange -15 beginbfrange -<06> <07> <0141> -<0E> <0F> <017D> -<18> <19> <2264> -<20> <26> <0020> -<28> <5F> <0028> -<61> <7E> <0061> -<86> <87> <2020> -<93> <94> <201C> -<96> <97> <2013> - <00A1> - <00AE> - <00D8> - <00ED> - <00F7> - <00FC> -endbfrange -50 beginbfchar -<01> <02D9> -<02> <00660069> -<03> <0066006C> -<04> <2044> -<05> <02DD> -<08> <02DB> -<09> <02DA> -<0B> <02D8> -<0C> <2212> -<10> <02C7> -<11> <0131> -<12> <0237> -<13> <00660066> -<14> <006600660069> -<15> <00660066006C> -<16> <2260> -<17> <221E> -<1A> <2202> -<1B> <2211> -<1C> <220F> -<1D> <03C0> -<1E> <0060> -<1F> <0027> -<27> <2019> -<60> <2018> -<80> <20AC> -<81> <222B> -<82> <201A> -<83> <0192> -<84> <201E> -<85> <2026> -<88> <02C6> -<89> <2030> -<8A> <0160> -<8B> <2039> -<8C> <0152> -<8D> <2126> -<8E> <221A> -<8F> <2248> -<95> <2022> -<98> <02DC> -<99> <2122> -<9A> <0161> -<9B> <203A> -<9C> <0153> -<9D> <2206> -<9E> <25CA> -<9F> <0178> - <002D> - <00FF> -endbfchar -endcmap -CMapName currentdict /CMap defineresource pop -end -end -%%EndResource -%%EOF - -endstream -endobj -2261 0 obj +% 2286 0 obj << -/Type /ObjStm -/N 100 -/First 953 -/Length 12429 ->> -stream -2227 0 2224 122 1857 528 1788 691 1466 881 920 1042 919 1232 918 1392 976 1582 1022 1771 -1260 1961 1133 2126 669 2296 671 2486 670 2676 672 2866 886 2979 977 3092 1034 3208 1069 3328 -1098 3448 1140 3568 1186 3688 1228 3808 1287 3928 1339 4048 1388 4168 1437 4288 1477 4408 1516 4528 -1563 4648 1607 4768 1644 4888 1680 5008 1719 5128 1760 5248 1789 5368 1823 5488 1861 5608 1896 5728 -1934 5848 1972 5968 2008 6088 2054 6208 2133 6328 2200 6448 2275 6550 2276 6668 2277 6789 2278 6910 -2279 7031 2280 7152 2281 7227 2282 7332 659 7401 655 7475 651 7563 647 7651 643 7739 639 7827 -635 7915 631 8003 627 8091 623 8179 619 8267 615 8355 611 8443 607 8531 602 8605 598 8717 -594 8791 590 8879 586 8967 582 9041 578 9166 574 9240 570 9314 566 9439 562 9513 558 9601 -554 9689 550 9777 546 9865 542 9939 538 10064 534 10138 530 10226 526 10314 522 10402 518 10490 -514 10564 510 10689 506 10763 502 10851 498 10939 494 11013 490 11138 486 11212 482 11300 478 11388 -% 2227 0 obj +/Type /FontDescriptor +/FontName /LHHPET+URWPalladioL-Ital +/Flags 4 +/FontBBox [-170 -305 1010 941] +/Ascent 722 +/CapHeight 693 +/Descent -261 +/ItalicAngle -9 +/StemV 78 +/XHeight 482 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 2285 0 R +>> +% 2257 0 obj +<< +/Type /Encoding +/Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] +>> +% 2244 0 obj +<< +/Type /Encoding +/Differences [33/exclam 40/parenleft/parenright 44/comma/hyphen/period/slash 65/A 67/C/D/E 72/H/I 75/K/L/M 80/P 84/T 86/V 97/a 99/c/d/e/f/g/h/i 107/k 109/m/n/o/p 114/r/s/t 119/w/x/y] +>> +% 2252 0 obj << /Type /Encoding /Differences [40/parenleft/parenright 43/plus 61/equal 91/bracketleft 93/bracketright] >> -% 2224 0 obj +% 2249 0 obj << /Type /Encoding /Differences [13/quotesingle 37/percent/ampersand 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four 54/six 56/eight/nine/colon/semicolon/less/equal/greater 65/A/B/C/D/E/F 72/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/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 126/asciitilde] >> -% 1857 0 obj +% 1860 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MNPEHI+CMEX10 -/FontDescriptor 2236 0 R +/FontDescriptor 2262 0 R /FirstChar 114 /LastChar 114 -/Widths 2218 0 R -/ToUnicode 2262 0 R +/Widths 2243 0 R +/ToUnicode 2287 0 R >> -% 1788 0 obj +% 1791 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XVBOSG+LMMono10-Italic -/FontDescriptor 2254 0 R +/FontDescriptor 2280 0 R /FirstChar 33 /LastChar 121 -/Widths 2220 0 R -/Encoding 2219 0 R -/ToUnicode 2263 0 R +/Widths 2245 0 R +/Encoding 2244 0 R +/ToUnicode 2288 0 R >> -% 1466 0 obj +% 1469 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TPELEW+CMMI10 -/FontDescriptor 2238 0 R +/FontDescriptor 2264 0 R /FirstChar 44 /LastChar 62 -/Widths 2221 0 R -/ToUnicode 2264 0 R +/Widths 2246 0 R +/ToUnicode 2289 0 R >> -% 920 0 obj +% 923 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NCCVYE+LMRoman10-Regular -/FontDescriptor 2246 0 R +/FontDescriptor 2272 0 R /FirstChar 40 /LastChar 93 -/Widths 2228 0 R -/Encoding 2227 0 R -/ToUnicode 2265 0 R +/Widths 2253 0 R +/Encoding 2252 0 R +/ToUnicode 2290 0 R >> -% 919 0 obj +% 922 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VKSUEJ+CMSY10 -/FontDescriptor 2240 0 R +/FontDescriptor 2266 0 R /FirstChar 0 /LastChar 112 -/Widths 2229 0 R -/ToUnicode 2266 0 R +/Widths 2254 0 R +/ToUnicode 2291 0 R >> -% 918 0 obj +% 921 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XKYJEW+LMMono10-Regular -/FontDescriptor 2248 0 R +/FontDescriptor 2274 0 R /FirstChar 13 /LastChar 126 -/Widths 2230 0 R -/Encoding 2224 0 R -/ToUnicode 2267 0 R +/Widths 2255 0 R +/Encoding 2249 0 R +/ToUnicode 2292 0 R >> -% 976 0 obj +% 979 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EOXOPS+LMMono8-Regular -/FontDescriptor 2250 0 R +/FontDescriptor 2276 0 R /FirstChar 98 /LastChar 116 -/Widths 2226 0 R -/Encoding 2224 0 R -/ToUnicode 2268 0 R +/Widths 2251 0 R +/Encoding 2249 0 R +/ToUnicode 2293 0 R >> -% 1022 0 obj +% 1025 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /TWMFXI+LMMono9-Regular -/FontDescriptor 2252 0 R +/BaseFont /FREPJB+LMMono9-Regular +/FontDescriptor 2278 0 R /FirstChar 13 /LastChar 122 -/Widths 2225 0 R -/Encoding 2224 0 R -/ToUnicode 2269 0 R +/Widths 2250 0 R +/Encoding 2249 0 R +/ToUnicode 2294 0 R >> -% 1260 0 obj +% 1263 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IKXQUG+PazoMath -/FontDescriptor 2242 0 R +/FontDescriptor 2268 0 R /FirstChar 165 /LastChar 229 -/Widths 2222 0 R -/ToUnicode 2270 0 R +/Widths 2247 0 R +/ToUnicode 2295 0 R >> -% 1133 0 obj +% 1136 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUJUUF+PazoMath-Italic -/FontDescriptor 2244 0 R +/FontDescriptor 2270 0 R /FirstChar 97 /LastChar 98 -/Widths 2223 0 R -/ToUnicode 2271 0 R +/Widths 2248 0 R +/ToUnicode 2296 0 R >> -% 669 0 obj +% 673 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BDDEWM+URWPalladioL-Bold -/FontDescriptor 2256 0 R +/FontDescriptor 2282 0 R /FirstChar 2 /LastChar 151 -/Widths 2234 0 R -/Encoding 2231 0 R -/ToUnicode 2272 0 R +/Widths 2260 0 R +/Encoding 2257 0 R +/ToUnicode 2297 0 R >> -% 671 0 obj +% 675 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GLTUCO+URWPalladioL-Roma -/FontDescriptor 2258 0 R +/FontDescriptor 2284 0 R /FirstChar 2 /LastChar 167 -/Widths 2232 0 R -/Encoding 2231 0 R -/ToUnicode 2273 0 R +/Widths 2258 0 R +/Encoding 2257 0 R +/ToUnicode 2298 0 R >> -% 670 0 obj +% 674 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LHHPET+URWPalladioL-Ital -/FontDescriptor 2260 0 R +/FontDescriptor 2286 0 R /FirstChar 2 /LastChar 122 -/Widths 2233 0 R -/Encoding 2231 0 R -/ToUnicode 2274 0 R +/Widths 2259 0 R +/Encoding 2257 0 R +/ToUnicode 2299 0 R >> -% 672 0 obj +% 676 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [662 0 R 675 0 R 721 0 R 778 0 R 825 0 R 866 0 R] +/Parent 2300 0 R +/Kids [666 0 R 679 0 R 726 0 R 782 0 R 829 0 R 870 0 R] >> -% 886 0 obj +% 889 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [884 0 R 903 0 R 915 0 R 928 0 R 940 0 R 945 0 R] +/Parent 2300 0 R +/Kids [887 0 R 906 0 R 918 0 R 931 0 R 943 0 R 948 0 R] >> -% 977 0 obj +% 980 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [958 0 R 981 0 R 992 0 R 1000 0 R 1011 0 R 1027 0 R] +/Parent 2300 0 R +/Kids [961 0 R 984 0 R 995 0 R 1003 0 R 1014 0 R 1030 0 R] >> -% 1034 0 obj +% 1037 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [1031 0 R 1036 0 R 1041 0 R 1048 0 R 1055 0 R 1060 0 R] +/Parent 2300 0 R +/Kids [1034 0 R 1039 0 R 1044 0 R 1051 0 R 1058 0 R 1063 0 R] >> -% 1069 0 obj +% 1072 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [1066 0 R 1071 0 R 1075 0 R 1079 0 R 1083 0 R 1089 0 R] +/Parent 2300 0 R +/Kids [1069 0 R 1074 0 R 1078 0 R 1082 0 R 1086 0 R 1092 0 R] >> -% 1098 0 obj +% 1101 0 obj << /Type /Pages /Count 6 -/Parent 2275 0 R -/Kids [1095 0 R 1102 0 R 1109 0 R 1115 0 R 1119 0 R 1130 0 R] +/Parent 2300 0 R +/Kids [1098 0 R 1105 0 R 1112 0 R 1118 0 R 1122 0 R 1133 0 R] >> -% 1140 0 obj +% 1143 0 obj << /Type /Pages /Count 6 -/Parent 2276 0 R -/Kids [1137 0 R 1147 0 R 1153 0 R 1165 0 R 1170 0 R 1177 0 R] +/Parent 2301 0 R +/Kids [1140 0 R 1150 0 R 1156 0 R 1168 0 R 1173 0 R 1180 0 R] >> -% 1186 0 obj +% 1189 0 obj << /Type /Pages /Count 6 -/Parent 2276 0 R -/Kids [1182 0 R 1191 0 R 1199 0 R 1204 0 R 1212 0 R 1217 0 R] +/Parent 2301 0 R +/Kids [1185 0 R 1194 0 R 1202 0 R 1207 0 R 1215 0 R 1220 0 R] >> -% 1228 0 obj +% 1231 0 obj << /Type /Pages /Count 6 -/Parent 2276 0 R -/Kids [1224 0 R 1230 0 R 1243 0 R 1250 0 R 1257 0 R 1268 0 R] +/Parent 2301 0 R +/Kids [1227 0 R 1233 0 R 1246 0 R 1253 0 R 1260 0 R 1271 0 R] >> -% 1287 0 obj +% 1290 0 obj << /Type /Pages /Count 6 -/Parent 2276 0 R -/Kids [1284 0 R 1291 0 R 1302 0 R 1308 0 R 1319 0 R 1324 0 R] +/Parent 2301 0 R +/Kids [1287 0 R 1294 0 R 1305 0 R 1311 0 R 1322 0 R 1327 0 R] >> -% 1339 0 obj +% 1342 0 obj << /Type /Pages /Count 6 -/Parent 2276 0 R -/Kids [1335 0 R 1341 0 R 1350 0 R 1356 0 R 1364 0 R 1371 0 R] +/Parent 2301 0 R +/Kids [1338 0 R 1344 0 R 1353 0 R 1359 0 R 1367 0 R 1374 0 R] >> -% 1388 0 obj +% 1391 0 obj << /Type /Pages /Count 6 -/Parent 2276 0 R -/Kids [1385 0 R 1393 0 R 1402 0 R 1410 0 R 1414 0 R 1429 0 R] +/Parent 2301 0 R +/Kids [1388 0 R 1396 0 R 1405 0 R 1413 0 R 1417 0 R 1432 0 R] >> -% 1437 0 obj +% 1440 0 obj << /Type /Pages /Count 6 -/Parent 2277 0 R -/Kids [1434 0 R 1441 0 R 1448 0 R 1452 0 R 1457 0 R 1463 0 R] +/Parent 2302 0 R +/Kids [1437 0 R 1444 0 R 1451 0 R 1455 0 R 1460 0 R 1466 0 R] >> -% 1477 0 obj +% 1480 0 obj << /Type /Pages /Count 6 -/Parent 2277 0 R -/Kids [1469 0 R 1480 0 R 1485 0 R 1494 0 R 1502 0 R 1507 0 R] +/Parent 2302 0 R +/Kids [1472 0 R 1483 0 R 1488 0 R 1497 0 R 1505 0 R 1510 0 R] >> -% 1516 0 obj +% 1519 0 obj << /Type /Pages /Count 6 -/Parent 2277 0 R -/Kids [1513 0 R 1518 0 R 1526 0 R 1531 0 R 1539 0 R 1545 0 R] +/Parent 2302 0 R +/Kids [1516 0 R 1521 0 R 1529 0 R 1534 0 R 1542 0 R 1548 0 R] >> -% 1563 0 obj +% 1566 0 obj << /Type /Pages /Count 6 -/Parent 2277 0 R -/Kids [1554 0 R 1568 0 R 1572 0 R 1585 0 R 1591 0 R 1598 0 R] +/Parent 2302 0 R +/Kids [1557 0 R 1571 0 R 1575 0 R 1588 0 R 1594 0 R 1601 0 R] >> -% 1607 0 obj +% 1610 0 obj << /Type /Pages /Count 6 -/Parent 2277 0 R -/Kids [1602 0 R 1611 0 R 1615 0 R 1624 0 R 1632 0 R 1636 0 R] +/Parent 2302 0 R +/Kids [1606 0 R 1614 0 R 1618 0 R 1627 0 R 1635 0 R 1639 0 R] >> -% 1644 0 obj +% 1647 0 obj << /Type /Pages /Count 6 -/Parent 2277 0 R -/Kids [1641 0 R 1646 0 R 1653 0 R 1658 0 R 1664 0 R 1670 0 R] +/Parent 2302 0 R +/Kids [1644 0 R 1649 0 R 1656 0 R 1661 0 R 1667 0 R 1673 0 R] >> -% 1680 0 obj +% 1683 0 obj << /Type /Pages /Count 6 -/Parent 2278 0 R -/Kids [1676 0 R 1683 0 R 1690 0 R 1697 0 R 1701 0 R 1711 0 R] +/Parent 2303 0 R +/Kids [1679 0 R 1686 0 R 1693 0 R 1700 0 R 1704 0 R 1714 0 R] >> -% 1719 0 obj +% 1722 0 obj << /Type /Pages /Count 6 -/Parent 2278 0 R -/Kids [1716 0 R 1721 0 R 1734 0 R 1738 0 R 1744 0 R 1750 0 R] +/Parent 2303 0 R +/Kids [1719 0 R 1724 0 R 1737 0 R 1741 0 R 1747 0 R 1753 0 R] >> -% 1760 0 obj +% 1763 0 obj << /Type /Pages /Count 6 -/Parent 2278 0 R -/Kids [1757 0 R 1762 0 R 1766 0 R 1770 0 R 1774 0 R 1778 0 R] +/Parent 2303 0 R +/Kids [1760 0 R 1765 0 R 1769 0 R 1773 0 R 1777 0 R 1781 0 R] >> -% 1789 0 obj +% 1792 0 obj << /Type /Pages /Count 6 -/Parent 2278 0 R -/Kids [1782 0 R 1791 0 R 1795 0 R 1802 0 R 1806 0 R 1813 0 R] +/Parent 2303 0 R +/Kids [1785 0 R 1794 0 R 1798 0 R 1805 0 R 1809 0 R 1816 0 R] >> -% 1823 0 obj +% 1826 0 obj << /Type /Pages /Count 6 -/Parent 2278 0 R -/Kids [1817 0 R 1826 0 R 1830 0 R 1837 0 R 1841 0 R 1848 0 R] +/Parent 2303 0 R +/Kids [1820 0 R 1829 0 R 1833 0 R 1840 0 R 1844 0 R 1851 0 R] >> -% 1861 0 obj +% 1864 0 obj << /Type /Pages /Count 6 -/Parent 2278 0 R -/Kids [1852 0 R 1863 0 R 1868 0 R 1875 0 R 1881 0 R 1885 0 R] +/Parent 2303 0 R +/Kids [1855 0 R 1866 0 R 1871 0 R 1878 0 R 1884 0 R 1888 0 R] >> -% 1896 0 obj +% 1899 0 obj << /Type /Pages /Count 6 -/Parent 2279 0 R -/Kids [1891 0 R 1898 0 R 1904 0 R 1910 0 R 1915 0 R 1922 0 R] +/Parent 2304 0 R +/Kids [1894 0 R 1901 0 R 1907 0 R 1913 0 R 1918 0 R 1925 0 R] >> -% 1934 0 obj +% 1938 0 obj << /Type /Pages /Count 6 -/Parent 2279 0 R -/Kids [1929 0 R 1938 0 R 1945 0 R 1952 0 R 1958 0 R 1962 0 R] +/Parent 2304 0 R +/Kids [1932 0 R 1941 0 R 1948 0 R 1955 0 R 1961 0 R 1965 0 R] >> -% 1972 0 obj +% 1975 0 obj << /Type /Pages /Count 6 -/Parent 2279 0 R -/Kids [1968 0 R 1978 0 R 1982 0 R 1990 0 R 1995 0 R 1999 0 R] +/Parent 2304 0 R +/Kids [1971 0 R 1980 0 R 1985 0 R 1990 0 R 1998 0 R 2002 0 R] >> -% 2008 0 obj +% 2013 0 obj << /Type /Pages /Count 6 -/Parent 2279 0 R -/Kids [2005 0 R 2010 0 R 2017 0 R 2028 0 R 2033 0 R 2041 0 R] +/Parent 2304 0 R +/Kids [2010 0 R 2016 0 R 2020 0 R 2026 0 R 2030 0 R 2037 0 R] >> -% 2054 0 obj +% 2052 0 obj << /Type /Pages /Count 6 -/Parent 2279 0 R -/Kids [2051 0 R 2056 0 R 2066 0 R 2080 0 R 2089 0 R 2100 0 R] +/Parent 2304 0 R +/Kids [2049 0 R 2055 0 R 2063 0 R 2072 0 R 2076 0 R 2086 0 R] >> -% 2133 0 obj +% 2105 0 obj +<< +/Type /Pages +/Count 6 +/Parent 2304 0 R +/Kids [2100 0 R 2110 0 R 2121 0 R 2149 0 R 2170 0 R 2188 0 R] +>> +% 2207 0 obj << /Type /Pages /Count 6 -/Parent 2279 0 R -/Kids [2128 0 R 2149 0 R 2167 0 R 2184 0 R 2188 0 R 2192 0 R] +/Parent 2305 0 R +/Kids [2204 0 R 2209 0 R 2213 0 R 2218 0 R 2222 0 R 2226 0 R] >> -% 2200 0 obj +% 2237 0 obj << /Type /Pages -/Count 4 -/Parent 2280 0 R -/Kids [2197 0 R 2202 0 R 2206 0 R 2214 0 R] +/Count 2 +/Parent 2305 0 R +/Kids [2230 0 R 2239 0 R] >> -% 2275 0 obj +% 2300 0 obj << /Type /Pages /Count 36 -/Parent 2281 0 R -/Kids [672 0 R 886 0 R 977 0 R 1034 0 R 1069 0 R 1098 0 R] +/Parent 2306 0 R +/Kids [676 0 R 889 0 R 980 0 R 1037 0 R 1072 0 R 1101 0 R] >> -% 2276 0 obj +% 2301 0 obj << /Type /Pages /Count 36 -/Parent 2281 0 R -/Kids [1140 0 R 1186 0 R 1228 0 R 1287 0 R 1339 0 R 1388 0 R] +/Parent 2306 0 R +/Kids [1143 0 R 1189 0 R 1231 0 R 1290 0 R 1342 0 R 1391 0 R] >> -% 2277 0 obj +% 2302 0 obj << /Type /Pages /Count 36 -/Parent 2281 0 R -/Kids [1437 0 R 1477 0 R 1516 0 R 1563 0 R 1607 0 R 1644 0 R] +/Parent 2306 0 R +/Kids [1440 0 R 1480 0 R 1519 0 R 1566 0 R 1610 0 R 1647 0 R] >> -% 2278 0 obj +% 2303 0 obj << /Type /Pages /Count 36 -/Parent 2281 0 R -/Kids [1680 0 R 1719 0 R 1760 0 R 1789 0 R 1823 0 R 1861 0 R] +/Parent 2306 0 R +/Kids [1683 0 R 1722 0 R 1763 0 R 1792 0 R 1826 0 R 1864 0 R] >> -% 2279 0 obj +% 2304 0 obj << /Type /Pages /Count 36 -/Parent 2281 0 R -/Kids [1896 0 R 1934 0 R 1972 0 R 2008 0 R 2054 0 R 2133 0 R] +/Parent 2306 0 R +/Kids [1899 0 R 1938 0 R 1975 0 R 2013 0 R 2052 0 R 2105 0 R] >> -% 2280 0 obj +% 2305 0 obj << /Type /Pages -/Count 4 -/Parent 2281 0 R -/Kids [2200 0 R] +/Count 8 +/Parent 2306 0 R +/Kids [2207 0 R 2237 0 R] >> -% 2281 0 obj +% 2306 0 obj << /Type /Pages -/Count 184 -/Kids [2275 0 R 2276 0 R 2277 0 R 2278 0 R 2279 0 R 2280 0 R] +/Count 188 +/Kids [2300 0 R 2301 0 R 2302 0 R 2303 0 R 2304 0 R 2305 0 R] >> -% 2282 0 obj +% 2307 0 obj << /Type /Outlines /First 4 0 R /Last 4 0 R /Count 1 >> +% 663 0 obj +<< +/Title 664 0 R +/A 661 0 R +/Parent 607 0 R +/Prev 659 0 R +>> % 659 0 obj << /Title 660 0 R /A 657 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 655 0 R +/Next 663 0 R >> % 655 0 obj << /Title 656 0 R /A 653 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 651 0 R /Next 659 0 R >> @@ -35581,7 +36180,7 @@ stream << /Title 652 0 R /A 649 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 647 0 R /Next 655 0 R >> @@ -35589,7 +36188,7 @@ stream << /Title 648 0 R /A 645 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 643 0 R /Next 651 0 R >> @@ -35597,7 +36196,7 @@ stream << /Title 644 0 R /A 641 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 639 0 R /Next 647 0 R >> @@ -35605,7 +36204,7 @@ stream << /Title 640 0 R /A 637 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 635 0 R /Next 643 0 R >> @@ -35613,7 +36212,7 @@ stream << /Title 636 0 R /A 633 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 631 0 R /Next 639 0 R >> @@ -35621,7 +36220,7 @@ stream << /Title 632 0 R /A 629 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 627 0 R /Next 635 0 R >> @@ -35629,7 +36228,7 @@ stream << /Title 628 0 R /A 625 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 623 0 R /Next 631 0 R >> @@ -35637,7 +36236,7 @@ stream << /Title 624 0 R /A 621 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 619 0 R /Next 627 0 R >> @@ -35645,7 +36244,7 @@ stream << /Title 620 0 R /A 617 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 615 0 R /Next 623 0 R >> @@ -35653,7 +36252,7 @@ stream << /Title 616 0 R /A 613 0 R -/Parent 602 0 R +/Parent 607 0 R /Prev 611 0 R /Next 619 0 R >> @@ -35661,39 +36260,39 @@ stream << /Title 612 0 R /A 609 0 R -/Parent 602 0 R -/Prev 607 0 R +/Parent 607 0 R /Next 615 0 R >> % 607 0 obj << /Title 608 0 R /A 604 0 R -/Parent 602 0 R -/Next 611 0 R +/Parent 4 0 R +/Prev 586 0 R +/First 611 0 R +/Last 663 0 R +/Count -14 >> % 602 0 obj << /Title 603 0 R /A 600 0 R -/Parent 4 0 R -/Prev 582 0 R -/First 607 0 R -/Last 659 0 R -/Count -14 +/Parent 586 0 R +/Prev 598 0 R >> % 598 0 obj << /Title 599 0 R /A 596 0 R -/Parent 582 0 R +/Parent 586 0 R /Prev 594 0 R +/Next 602 0 R >> % 594 0 obj << /Title 595 0 R /A 592 0 R -/Parent 582 0 R +/Parent 586 0 R /Prev 590 0 R /Next 598 0 R >> @@ -35701,52 +36300,51 @@ stream << /Title 591 0 R /A 588 0 R -/Parent 582 0 R -/Prev 586 0 R +/Parent 586 0 R /Next 594 0 R >> % 586 0 obj << /Title 587 0 R /A 584 0 R -/Parent 582 0 R -/Next 590 0 R +/Parent 4 0 R +/Prev 574 0 R +/Next 607 0 R +/First 590 0 R +/Last 602 0 R +/Count -4 >> % 582 0 obj << /Title 583 0 R /A 580 0 R -/Parent 4 0 R -/Prev 570 0 R -/Next 602 0 R -/First 586 0 R -/Last 598 0 R -/Count -4 +/Parent 574 0 R +/Prev 578 0 R >> % 578 0 obj << /Title 579 0 R /A 576 0 R -/Parent 570 0 R -/Prev 574 0 R +/Parent 574 0 R +/Next 582 0 R >> % 574 0 obj << /Title 575 0 R /A 572 0 R -/Parent 570 0 R -/Next 578 0 R +/Parent 4 0 R +/Prev 542 0 R +/Next 586 0 R +/First 578 0 R +/Last 582 0 R +/Count -2 >> % 570 0 obj << /Title 571 0 R /A 568 0 R -/Parent 4 0 R -/Prev 542 0 R -/Next 582 0 R -/First 574 0 R -/Last 578 0 R -/Count -2 +/Parent 542 0 R +/Prev 566 0 R >> % 566 0 obj << @@ -35754,6 +36352,7 @@ stream /A 564 0 R /Parent 542 0 R /Prev 562 0 R +/Next 570 0 R >> % 562 0 obj << @@ -35763,6 +36362,27 @@ stream /Prev 558 0 R /Next 566 0 R >> + +endstream +endobj +2308 0 obj +<< +/Type /ObjStm +/N 100 +/First 885 +/Length 9744 +>> +stream +558 0 554 88 550 176 546 264 542 338 538 463 534 537 530 625 526 713 522 801 +518 889 514 963 510 1088 506 1162 502 1250 498 1338 494 1412 490 1537 486 1611 482 1699 +478 1787 474 1875 470 1963 466 2051 462 2139 458 2227 454 2315 450 2403 446 2491 442 2579 +438 2667 434 2755 430 2843 426 2931 422 3005 418 3131 414 3205 410 3293 406 3381 401 3469 +397 3557 393 3645 389 3733 385 3821 381 3909 377 3997 373 4085 369 4173 365 4261 361 4349 +357 4437 353 4525 349 4613 345 4701 341 4789 337 4877 333 4965 329 5053 325 5141 321 5229 +317 5317 313 5405 309 5479 305 5605 301 5679 297 5767 293 5855 289 5929 285 6054 281 6128 +277 6216 273 6304 269 6392 265 6480 261 6568 257 6656 253 6744 249 6832 245 6920 241 7008 +237 7096 233 7184 229 7272 225 7360 221 7434 217 7559 213 7632 209 7719 205 7793 200 7881 +196 7969 192 8057 188 8145 184 8219 180 8345 176 8419 172 8507 168 8595 164 8683 160 8771 % 558 0 obj << /Title 559 0 R @@ -35800,10 +36420,10 @@ stream /A 540 0 R /Parent 4 0 R /Prev 514 0 R -/Next 570 0 R +/Next 574 0 R /First 546 0 R -/Last 566 0 R -/Count -6 +/Last 570 0 R +/Count -7 >> % 538 0 obj << @@ -35934,27 +36554,6 @@ stream /Prev 474 0 R /Next 482 0 R >> - -endstream -endobj -2283 0 obj -<< -/Type /ObjStm -/N 100 -/First 879 -/Length 9683 ->> -stream -474 0 470 88 466 176 462 264 458 352 454 440 450 528 446 616 442 704 438 792 -434 880 430 968 426 1056 422 1130 418 1256 414 1330 410 1418 406 1506 401 1594 397 1682 -393 1770 389 1858 385 1946 381 2034 377 2122 373 2210 369 2298 365 2386 361 2474 357 2562 -353 2650 349 2738 345 2826 341 2914 337 3002 333 3090 329 3178 325 3266 321 3354 317 3442 -313 3530 309 3604 305 3730 301 3804 297 3892 293 3980 289 4054 285 4179 281 4253 277 4341 -273 4429 269 4517 265 4605 261 4693 257 4781 253 4869 249 4957 245 5045 241 5133 237 5221 -233 5309 229 5397 225 5485 221 5559 217 5684 213 5757 209 5844 205 5918 200 6006 196 6094 -192 6182 188 6270 184 6344 180 6470 176 6544 172 6632 168 6720 164 6808 160 6896 156 6984 -152 7072 148 7160 144 7248 140 7336 136 7424 132 7512 128 7600 124 7688 120 7776 116 7864 -112 7952 108 8040 104 8114 100 8240 96 8311 92 8394 88 8476 84 8558 80 8640 76 8722 % 474 0 obj << /Title 475 0 R @@ -36591,6 +37190,27 @@ stream /Prev 156 0 R /Next 164 0 R >> + +endstream +endobj +2309 0 obj +<< +/Type /ObjStm +/N 100 +/First 944 +/Length 15516 +>> +stream +156 0 152 88 148 176 144 264 140 352 136 440 132 528 128 616 124 704 120 792 +116 880 112 968 108 1056 104 1130 100 1256 96 1327 92 1410 88 1492 84 1574 80 1656 +76 1738 72 1820 68 1902 64 1984 60 2066 56 2148 52 2230 48 2312 44 2394 40 2463 +36 2572 32 2692 28 2761 24 2817 20 2936 16 3018 12 3087 8 3204 4 3269 2310 3362 +2311 3558 2312 3731 2313 3911 2314 4088 2315 4265 2316 4445 2317 4623 2318 4803 2319 4981 2320 5161 +2321 5325 2322 5491 2323 5658 2324 5830 2325 6000 2326 6172 2327 6342 2328 6514 2329 6684 2330 6856 +2331 7025 2332 7194 2333 7366 2334 7536 2335 7708 2336 7892 2337 8087 2338 8305 2339 8524 2340 8725 +2341 8919 2342 9099 2343 9287 2344 9513 2345 9733 2346 9958 2347 10194 2348 10430 2349 10660 2350 10860 +2351 11040 2352 11219 2353 11399 2354 11578 2355 11758 2356 11937 2357 12117 2358 12295 2359 12473 2360 12653 +2361 12832 2362 13012 2363 13191 2364 13371 2365 13550 2366 13720 2367 13892 2368 14061 2369 14230 2370 14402 % 156 0 obj << /Title 157 0 R @@ -36760,27 +37380,6 @@ stream /Prev 72 0 R /Next 80 0 R >> - -endstream -endobj -2284 0 obj -<< -/Type /ObjStm -/N 100 -/First 982 -/Length 17769 ->> -stream -72 0 68 82 64 164 60 246 56 328 52 410 48 492 44 574 40 643 36 752 -32 872 28 941 24 997 20 1116 16 1198 12 1267 8 1384 4 1449 2285 1542 2286 1738 -2287 1911 2288 2091 2289 2268 2290 2445 2291 2625 2292 2803 2293 2983 2294 3161 2295 3341 2296 3505 -2297 3671 2298 3838 2299 4010 2300 4180 2301 4352 2302 4522 2303 4694 2304 4864 2305 5036 2306 5205 -2307 5374 2308 5546 2309 5716 2310 5888 2311 6072 2312 6267 2313 6485 2314 6704 2315 6905 2316 7099 -2317 7279 2318 7467 2319 7693 2320 7913 2321 8138 2322 8374 2323 8610 2324 8840 2325 9040 2326 9220 -2327 9399 2328 9579 2329 9758 2330 9938 2331 10117 2332 10297 2333 10475 2334 10653 2335 10833 2336 11012 -2337 11192 2338 11371 2339 11551 2340 11723 2341 11895 2342 12065 2343 12237 2344 12407 2345 12579 2346 12748 -2347 12917 2348 13089 2349 13259 2350 13431 2351 13601 2352 13773 2353 13943 2354 14115 2355 14285 2356 14481 -2357 14678 2358 14874 2359 15061 2360 15243 2361 15437 2362 15667 2363 15894 2364 16112 2365 16338 2366 16565 % 72 0 obj << /Title 73 0 R @@ -36926,715 +37525,724 @@ stream << /Title 5 0 R /A 1 0 R -/Parent 2282 0 R +/Parent 2307 0 R /First 8 0 R -/Last 602 0 R +/Last 607 0 R /Count -13 >> -% 2285 0 obj +% 2310 0 obj << -/Names [(Doc-Start) 668 0 R (Hfootnote.1) 921 0 R (Hfootnote.2) 922 0 R (Hfootnote.3) 975 0 R (Hfootnote.4) 1971 0 R (Hfootnote.5) 2023 0 R] +/Names [(Doc-Start) 672 0 R (Hfootnote.1) 924 0 R (Hfootnote.2) 925 0 R (Hfootnote.3) 978 0 R (Hfootnote.4) 1974 0 R (Hfootnote.5) 2043 0 R] /Limits [(Doc-Start) (Hfootnote.5)] >> -% 2286 0 obj +% 2311 0 obj << -/Names [(Item.1) 948 0 R (Item.10) 962 0 R (Item.100) 1694 0 R (Item.101) 1704 0 R (Item.102) 1705 0 R (Item.103) 1706 0 R] +/Names [(Item.1) 951 0 R (Item.10) 965 0 R (Item.100) 1697 0 R (Item.101) 1707 0 R (Item.102) 1708 0 R (Item.103) 1709 0 R] /Limits [(Item.1) (Item.103)] >> -% 2287 0 obj +% 2312 0 obj << -/Names [(Item.104) 1724 0 R (Item.105) 1725 0 R (Item.106) 1726 0 R (Item.107) 1727 0 R (Item.108) 1728 0 R (Item.109) 1729 0 R] +/Names [(Item.104) 1727 0 R (Item.105) 1728 0 R (Item.106) 1729 0 R (Item.107) 1730 0 R (Item.108) 1731 0 R (Item.109) 1732 0 R] /Limits [(Item.104) (Item.109)] >> -% 2288 0 obj +% 2313 0 obj << -/Names [(Item.11) 963 0 R (Item.110) 1730 0 R (Item.111) 1731 0 R (Item.112) 1732 0 R (Item.113) 1741 0 R (Item.114) 1742 0 R] +/Names [(Item.11) 966 0 R (Item.110) 1733 0 R (Item.111) 1734 0 R (Item.112) 1735 0 R (Item.113) 1744 0 R (Item.114) 1745 0 R] /Limits [(Item.11) (Item.114)] >> -% 2289 0 obj +% 2314 0 obj << -/Names [(Item.115) 1747 0 R (Item.116) 1748 0 R (Item.117) 1753 0 R (Item.118) 1754 0 R (Item.119) 1755 0 R (Item.12) 964 0 R] +/Names [(Item.115) 1750 0 R (Item.116) 1751 0 R (Item.117) 1756 0 R (Item.118) 1757 0 R (Item.119) 1758 0 R (Item.12) 967 0 R] /Limits [(Item.115) (Item.12)] >> -% 2290 0 obj +% 2315 0 obj << -/Names [(Item.120) 1785 0 R (Item.121) 1786 0 R (Item.122) 1787 0 R (Item.123) 1798 0 R (Item.124) 1799 0 R (Item.125) 1800 0 R] +/Names [(Item.120) 1788 0 R (Item.121) 1789 0 R (Item.122) 1790 0 R (Item.123) 1801 0 R (Item.124) 1802 0 R (Item.125) 1803 0 R] /Limits [(Item.120) (Item.125)] >> -% 2291 0 obj +% 2316 0 obj << -/Names [(Item.126) 1809 0 R (Item.127) 1810 0 R (Item.128) 1811 0 R (Item.129) 1820 0 R (Item.13) 965 0 R (Item.130) 1821 0 R] +/Names [(Item.126) 1812 0 R (Item.127) 1813 0 R (Item.128) 1814 0 R (Item.129) 1823 0 R (Item.13) 968 0 R (Item.130) 1824 0 R] /Limits [(Item.126) (Item.130)] >> -% 2292 0 obj +% 2317 0 obj << -/Names [(Item.131) 1822 0 R (Item.132) 1833 0 R (Item.133) 1834 0 R (Item.134) 1835 0 R (Item.135) 1844 0 R (Item.136) 1845 0 R] +/Names [(Item.131) 1825 0 R (Item.132) 1836 0 R (Item.133) 1837 0 R (Item.134) 1838 0 R (Item.135) 1847 0 R (Item.136) 1848 0 R] /Limits [(Item.131) (Item.136)] >> -% 2293 0 obj +% 2318 0 obj << -/Names [(Item.137) 1846 0 R (Item.138) 1855 0 R (Item.139) 1856 0 R (Item.14) 966 0 R (Item.140) 1858 0 R (Item.141) 1859 0 R] +/Names [(Item.137) 1849 0 R (Item.138) 1858 0 R (Item.139) 1859 0 R (Item.14) 969 0 R (Item.140) 1861 0 R (Item.141) 1862 0 R] /Limits [(Item.137) (Item.141)] >> -% 2294 0 obj +% 2319 0 obj << -/Names [(Item.142) 1860 0 R (Item.143) 1866 0 R (Item.144) 1871 0 R (Item.145) 2093 0 R (Item.146) 2094 0 R (Item.147) 2195 0 R] +/Names [(Item.142) 1863 0 R (Item.143) 1869 0 R (Item.144) 1874 0 R (Item.145) 2114 0 R (Item.146) 2115 0 R (Item.147) 2216 0 R] /Limits [(Item.142) (Item.147)] >> -% 2295 0 obj +% 2320 0 obj << -/Names [(Item.15) 967 0 R (Item.16) 968 0 R (Item.17) 969 0 R (Item.18) 970 0 R (Item.19) 971 0 R (Item.2) 949 0 R] +/Names [(Item.15) 970 0 R (Item.16) 971 0 R (Item.17) 972 0 R (Item.18) 973 0 R (Item.19) 974 0 R (Item.2) 952 0 R] /Limits [(Item.15) (Item.2)] >> -% 2296 0 obj +% 2321 0 obj << -/Names [(Item.20) 972 0 R (Item.21) 973 0 R (Item.22) 974 0 R (Item.23) 984 0 R (Item.24) 985 0 R (Item.25) 986 0 R] +/Names [(Item.20) 975 0 R (Item.21) 976 0 R (Item.22) 977 0 R (Item.23) 987 0 R (Item.24) 988 0 R (Item.25) 989 0 R] /Limits [(Item.20) (Item.25)] >> -% 2297 0 obj +% 2322 0 obj << -/Names [(Item.26) 987 0 R (Item.27) 988 0 R (Item.28) 989 0 R (Item.29) 1003 0 R (Item.3) 950 0 R (Item.30) 1004 0 R] +/Names [(Item.26) 990 0 R (Item.27) 991 0 R (Item.28) 992 0 R (Item.29) 1006 0 R (Item.3) 953 0 R (Item.30) 1007 0 R] /Limits [(Item.26) (Item.30)] >> -% 2298 0 obj +% 2323 0 obj << -/Names [(Item.31) 1005 0 R (Item.32) 1006 0 R (Item.33) 1007 0 R (Item.34) 1014 0 R (Item.35) 1015 0 R (Item.36) 1016 0 R] +/Names [(Item.31) 1008 0 R (Item.32) 1009 0 R (Item.33) 1010 0 R (Item.34) 1017 0 R (Item.35) 1018 0 R (Item.36) 1019 0 R] /Limits [(Item.31) (Item.36)] >> -% 2299 0 obj +% 2324 0 obj << -/Names [(Item.37) 1017 0 R (Item.38) 1018 0 R (Item.39) 1019 0 R (Item.4) 951 0 R (Item.40) 1020 0 R (Item.41) 1021 0 R] +/Names [(Item.37) 1020 0 R (Item.38) 1021 0 R (Item.39) 1022 0 R (Item.4) 954 0 R (Item.40) 1023 0 R (Item.41) 1024 0 R] /Limits [(Item.37) (Item.41)] >> -% 2300 0 obj +% 2325 0 obj << -/Names [(Item.42) 1063 0 R (Item.43) 1156 0 R (Item.44) 1185 0 R (Item.45) 1207 0 R (Item.46) 1233 0 R (Item.47) 1405 0 R] +/Names [(Item.42) 1066 0 R (Item.43) 1159 0 R (Item.44) 1188 0 R (Item.45) 1210 0 R (Item.46) 1236 0 R (Item.47) 1408 0 R] /Limits [(Item.42) (Item.47)] >> -% 2301 0 obj +% 2326 0 obj << -/Names [(Item.48) 1406 0 R (Item.49) 1407 0 R (Item.5) 952 0 R (Item.50) 1460 0 R (Item.51) 1467 0 R (Item.52) 1472 0 R] +/Names [(Item.48) 1409 0 R (Item.49) 1410 0 R (Item.5) 955 0 R (Item.50) 1463 0 R (Item.51) 1470 0 R (Item.52) 1475 0 R] /Limits [(Item.48) (Item.52)] >> -% 2302 0 obj +% 2327 0 obj << -/Names [(Item.53) 1473 0 R (Item.54) 1474 0 R (Item.55) 1475 0 R (Item.56) 1476 0 R (Item.57) 1488 0 R (Item.58) 1489 0 R] +/Names [(Item.53) 1476 0 R (Item.54) 1477 0 R (Item.55) 1478 0 R (Item.56) 1479 0 R (Item.57) 1491 0 R (Item.58) 1492 0 R] /Limits [(Item.53) (Item.58)] >> -% 2303 0 obj +% 2328 0 obj << -/Names [(Item.59) 1490 0 R (Item.6) 953 0 R (Item.60) 1497 0 R (Item.61) 1521 0 R (Item.62) 1522 0 R (Item.63) 1529 0 R] +/Names [(Item.59) 1493 0 R (Item.6) 956 0 R (Item.60) 1500 0 R (Item.61) 1524 0 R (Item.62) 1525 0 R (Item.63) 1532 0 R] /Limits [(Item.59) (Item.63)] >> -% 2304 0 obj +% 2329 0 obj << -/Names [(Item.64) 1534 0 R (Item.65) 1535 0 R (Item.66) 1536 0 R (Item.67) 1548 0 R (Item.68) 1549 0 R (Item.69) 1550 0 R] +/Names [(Item.64) 1537 0 R (Item.65) 1538 0 R (Item.66) 1539 0 R (Item.67) 1551 0 R (Item.68) 1552 0 R (Item.69) 1553 0 R] /Limits [(Item.64) (Item.69)] >> -% 2305 0 obj +% 2330 0 obj << -/Names [(Item.7) 954 0 R (Item.70) 1551 0 R (Item.71) 1552 0 R (Item.72) 1557 0 R (Item.73) 1558 0 R (Item.74) 1559 0 R] +/Names [(Item.7) 957 0 R (Item.70) 1554 0 R (Item.71) 1555 0 R (Item.72) 1560 0 R (Item.73) 1561 0 R (Item.74) 1562 0 R] /Limits [(Item.7) (Item.74)] >> -% 2306 0 obj +% 2331 0 obj << -/Names [(Item.75) 1560 0 R (Item.76) 1561 0 R (Item.77) 1562 0 R (Item.78) 1575 0 R (Item.79) 1576 0 R (Item.8) 955 0 R] +/Names [(Item.75) 1563 0 R (Item.76) 1564 0 R (Item.77) 1565 0 R (Item.78) 1578 0 R (Item.79) 1579 0 R (Item.8) 958 0 R] /Limits [(Item.75) (Item.8)] >> -% 2307 0 obj +% 2332 0 obj << -/Names [(Item.80) 1577 0 R (Item.81) 1578 0 R (Item.82) 1579 0 R (Item.83) 1580 0 R (Item.84) 1581 0 R (Item.85) 1594 0 R] +/Names [(Item.80) 1580 0 R (Item.81) 1581 0 R (Item.82) 1582 0 R (Item.83) 1583 0 R (Item.84) 1584 0 R (Item.85) 1597 0 R] /Limits [(Item.80) (Item.85)] >> -% 2308 0 obj +% 2333 0 obj << -/Names [(Item.86) 1605 0 R (Item.87) 1618 0 R (Item.88) 1619 0 R (Item.89) 1627 0 R (Item.9) 961 0 R (Item.90) 1628 0 R] +/Names [(Item.86) 1609 0 R (Item.87) 1621 0 R (Item.88) 1622 0 R (Item.89) 1630 0 R (Item.9) 964 0 R (Item.90) 1631 0 R] /Limits [(Item.86) (Item.90)] >> -% 2309 0 obj +% 2334 0 obj << -/Names [(Item.91) 1649 0 R (Item.92) 1650 0 R (Item.93) 1661 0 R (Item.94) 1667 0 R (Item.95) 1673 0 R (Item.96) 1679 0 R] +/Names [(Item.91) 1652 0 R (Item.92) 1653 0 R (Item.93) 1664 0 R (Item.94) 1670 0 R (Item.95) 1676 0 R (Item.96) 1682 0 R] /Limits [(Item.91) (Item.96)] >> -% 2310 0 obj +% 2335 0 obj << -/Names [(Item.97) 1686 0 R (Item.98) 1687 0 R (Item.99) 1693 0 R (algocf.1) 2098 0 R (algocf.2) 2145 0 R (algocfline.1) 2084 0 R] +/Names [(Item.97) 1689 0 R (Item.98) 1690 0 R (Item.99) 1696 0 R (algocf.1) 2119 0 R (algocf.2) 2165 0 R (algocfline.1) 2104 0 R] /Limits [(Item.97) (algocfline.1)] >> -% 2311 0 obj +% 2336 0 obj << -/Names [(algocfline.2) 2152 0 R (cite.2007c) 935 0 R (cite.2007d) 936 0 R (cite.BLACS) 911 0 R (cite.BLAS1) 894 0 R (cite.BLAS2) 895 0 R] +/Names [(algocfline.2) 2173 0 R (cite.2007c) 938 0 R (cite.2007d) 939 0 R (cite.BLACS) 914 0 R (cite.BLAS1) 897 0 R (cite.BLAS2) 898 0 R] /Limits [(algocfline.2) (cite.BLAS2)] >> -% 2312 0 obj +% 2337 0 obj << -/Names [(cite.BLAS3) 896 0 R (cite.CaFiRo:2014) 2070 0 R (cite.DesPat:11) 889 0 R (cite.DesignPatterns) 1052 0 R (cite.KIVA3PSBLAS) 2212 0 R (cite.METIS) 923 0 R] +/Names [(cite.BLAS3) 899 0 R (cite.CaFiRo:2014) 2090 0 R (cite.DesPat:11) 892 0 R (cite.DesignPatterns) 1055 0 R (cite.KIVA3PSBLAS) 2236 0 R (cite.METIS) 926 0 R] /Limits [(cite.BLAS3) (cite.METIS)] >> -% 2313 0 obj +% 2338 0 obj << -/Names [(cite.MPI1) 2217 0 R (cite.MRC:11) 2085 0 R (cite.OurTechRep) 2071 0 R (cite.PARA04FOREST) 2210 0 R (cite.PSBLAS) 2211 0 R (cite.RouXiaXu:11) 890 0 R] +/Names [(cite.MPI1) 2242 0 R (cite.MRC:11) 2106 0 R (cite.OurTechRep) 2091 0 R (cite.PARA04FOREST) 2234 0 R (cite.PSBLAS) 2235 0 R (cite.RouXiaXu:11) 893 0 R] /Limits [(cite.MPI1) (cite.RouXiaXu:11)] >> -% 2314 0 obj +% 2339 0 obj << -/Names [(cite.Sparse03) 888 0 R (cite.machiels) 891 0 R (cite.metcalf) 887 0 R (cite.sblas02) 893 0 R (cite.sblas97) 892 0 R (descdata) 995 0 R] +/Names [(cite.Sparse03) 891 0 R (cite.machiels) 894 0 R (cite.metcalf) 890 0 R (cite.sblas02) 896 0 R (cite.sblas97) 895 0 R (descdata) 998 0 R] /Limits [(cite.Sparse03) (descdata)] >> -% 2315 0 obj +% 2340 0 obj << -/Names [(equation.4.1) 1271 0 R (equation.4.2) 1272 0 R (equation.4.3) 1273 0 R (figure.1) 905 0 R (figure.2) 931 0 R (figure.3) 1374 0 R] +/Names [(equation.4.1) 1274 0 R (equation.4.2) 1275 0 R (equation.4.3) 1276 0 R (figure.1) 908 0 R (figure.2) 934 0 R (figure.3) 1377 0 R] /Limits [(equation.4.1) (figure.3)] >> -% 2316 0 obj +% 2341 0 obj << -/Names [(figure.4) 1408 0 R (figure.5) 2092 0 R (figure.6) 2087 0 R (figure.7) 2131 0 R (figure.8) 2144 0 R (figure.9) 2170 0 R] +/Names [(figure.4) 1411 0 R (figure.5) 2113 0 R (figure.6) 2108 0 R (figure.7) 2152 0 R (figure.8) 2164 0 R (figure.9) 2191 0 R] /Limits [(figure.4) (figure.9)] >> -% 2317 0 obj +% 2342 0 obj << -/Names [(listing.1) 1023 0 R (listing.2) 1053 0 R (listing.3) 1093 0 R (listing.4) 1113 0 R (listing.5) 1878 0 R (listing.6) 1879 0 R] +/Names [(listing.1) 1026 0 R (listing.2) 1056 0 R (listing.3) 1096 0 R (listing.4) 1116 0 R (listing.5) 1881 0 R (listing.6) 1882 0 R] /Limits [(listing.1) (listing.6)] >> -% 2318 0 obj +% 2343 0 obj << -/Names [(lstlisting.-1) 1234 0 R (lstlisting.-10) 1948 0 R (lstlisting.-11) 1955 0 R (lstlisting.-12) 2020 0 R (lstlisting.-13) 2044 0 R (lstlisting.-14) 2103 0 R] +/Names [(lstlisting.-1) 1237 0 R (lstlisting.-10) 1951 0 R (lstlisting.-11) 1958 0 R (lstlisting.-12) 2040 0 R (lstlisting.-13) 2066 0 R (lstlisting.-14) 2124 0 R] /Limits [(lstlisting.-1) (lstlisting.-14)] >> -% 2319 0 obj +% 2344 0 obj << -/Names [(lstlisting.-2) 1888 0 R (lstlisting.-3) 1894 0 R (lstlisting.-4) 1901 0 R (lstlisting.-5) 1907 0 R (lstlisting.-6) 1918 0 R (lstlisting.-7) 1925 0 R] +/Names [(lstlisting.-2) 1891 0 R (lstlisting.-3) 1897 0 R (lstlisting.-4) 1904 0 R (lstlisting.-5) 1910 0 R (lstlisting.-6) 1921 0 R (lstlisting.-7) 1928 0 R] /Limits [(lstlisting.-2) (lstlisting.-7)] >> -% 2320 0 obj +% 2345 0 obj << -/Names [(lstlisting.-8) 1932 0 R (lstlisting.-9) 1941 0 R (lstnumber.-1.1) 1235 0 R (lstnumber.-1.2) 1236 0 R (lstnumber.-1.3) 1237 0 R (lstnumber.-1.4) 1238 0 R] +/Names [(lstlisting.-8) 1935 0 R (lstlisting.-9) 1944 0 R (lstnumber.-1.1) 1238 0 R (lstnumber.-1.2) 1239 0 R (lstnumber.-1.3) 1240 0 R (lstnumber.-1.4) 1241 0 R] /Limits [(lstlisting.-8) (lstnumber.-1.4)] >> -% 2321 0 obj +% 2346 0 obj << -/Names [(lstnumber.-10.1) 1949 0 R (lstnumber.-11.1) 1956 0 R (lstnumber.-12.1) 2021 0 R (lstnumber.-12.2) 2022 0 R (lstnumber.-13.1) 2045 0 R (lstnumber.-13.2) 2046 0 R] +/Names [(lstnumber.-10.1) 1952 0 R (lstnumber.-11.1) 1959 0 R (lstnumber.-12.1) 2041 0 R (lstnumber.-12.2) 2042 0 R (lstnumber.-13.1) 2067 0 R (lstnumber.-13.2) 2068 0 R] /Limits [(lstnumber.-10.1) (lstnumber.-13.2)] >> -% 2322 0 obj +% 2347 0 obj << -/Names [(lstnumber.-14.1) 2104 0 R (lstnumber.-14.2) 2105 0 R (lstnumber.-14.3) 2106 0 R (lstnumber.-14.4) 2107 0 R (lstnumber.-14.5) 2108 0 R (lstnumber.-14.6) 2109 0 R] +/Names [(lstnumber.-14.1) 2125 0 R (lstnumber.-14.2) 2126 0 R (lstnumber.-14.3) 2127 0 R (lstnumber.-14.4) 2128 0 R (lstnumber.-14.5) 2129 0 R (lstnumber.-14.6) 2130 0 R] /Limits [(lstnumber.-14.1) (lstnumber.-14.6)] >> -% 2323 0 obj +% 2348 0 obj << -/Names [(lstnumber.-14.7) 2110 0 R (lstnumber.-2.1) 1889 0 R (lstnumber.-3.1) 1895 0 R (lstnumber.-4.1) 1902 0 R (lstnumber.-5.1) 1908 0 R (lstnumber.-6.1) 1919 0 R] +/Names [(lstnumber.-14.7) 2131 0 R (lstnumber.-2.1) 1892 0 R (lstnumber.-3.1) 1898 0 R (lstnumber.-4.1) 1905 0 R (lstnumber.-5.1) 1911 0 R (lstnumber.-6.1) 1922 0 R] /Limits [(lstnumber.-14.7) (lstnumber.-6.1)] >> -% 2324 0 obj +% 2349 0 obj << -/Names [(lstnumber.-7.1) 1926 0 R (lstnumber.-8.1) 1933 0 R (lstnumber.-9.1) 1942 0 R (page.1) 667 0 R (page.10) 1002 0 R (page.100) 1660 0 R] +/Names [(lstnumber.-7.1) 1929 0 R (lstnumber.-8.1) 1936 0 R (lstnumber.-9.1) 1945 0 R (page.1) 671 0 R (page.10) 1005 0 R (page.100) 1663 0 R] /Limits [(lstnumber.-7.1) (page.100)] >> -% 2325 0 obj +% 2350 0 obj << -/Names [(page.101) 1666 0 R (page.102) 1672 0 R (page.103) 1678 0 R (page.104) 1685 0 R (page.105) 1692 0 R (page.106) 1699 0 R] +/Names [(page.101) 1669 0 R (page.102) 1675 0 R (page.103) 1681 0 R (page.104) 1688 0 R (page.105) 1695 0 R (page.106) 1702 0 R] /Limits [(page.101) (page.106)] >> -% 2326 0 obj +% 2351 0 obj << -/Names [(page.107) 1703 0 R (page.108) 1713 0 R (page.109) 1718 0 R (page.11) 1013 0 R (page.110) 1723 0 R (page.111) 1736 0 R] +/Names [(page.107) 1706 0 R (page.108) 1716 0 R (page.109) 1721 0 R (page.11) 1016 0 R (page.110) 1726 0 R (page.111) 1739 0 R] /Limits [(page.107) (page.111)] >> -% 2327 0 obj +% 2352 0 obj << -/Names [(page.112) 1740 0 R (page.113) 1746 0 R (page.114) 1752 0 R (page.115) 1759 0 R (page.116) 1764 0 R (page.117) 1768 0 R] +/Names [(page.112) 1743 0 R (page.113) 1749 0 R (page.114) 1755 0 R (page.115) 1762 0 R (page.116) 1767 0 R (page.117) 1771 0 R] /Limits [(page.112) (page.117)] >> -% 2328 0 obj +% 2353 0 obj << -/Names [(page.118) 1772 0 R (page.119) 1776 0 R (page.12) 1029 0 R (page.120) 1780 0 R (page.121) 1784 0 R (page.122) 1793 0 R] +/Names [(page.118) 1775 0 R (page.119) 1779 0 R (page.12) 1032 0 R (page.120) 1783 0 R (page.121) 1787 0 R (page.122) 1796 0 R] /Limits [(page.118) (page.122)] >> -% 2329 0 obj +% 2354 0 obj << -/Names [(page.123) 1797 0 R (page.124) 1804 0 R (page.125) 1808 0 R (page.126) 1815 0 R (page.127) 1819 0 R (page.128) 1828 0 R] +/Names [(page.123) 1800 0 R (page.124) 1807 0 R (page.125) 1811 0 R (page.126) 1818 0 R (page.127) 1822 0 R (page.128) 1831 0 R] /Limits [(page.123) (page.128)] >> -% 2330 0 obj +% 2355 0 obj << -/Names [(page.129) 1832 0 R (page.13) 1033 0 R (page.130) 1839 0 R (page.131) 1843 0 R (page.132) 1850 0 R (page.133) 1854 0 R] +/Names [(page.129) 1835 0 R (page.13) 1036 0 R (page.130) 1842 0 R (page.131) 1846 0 R (page.132) 1853 0 R (page.133) 1857 0 R] /Limits [(page.129) (page.133)] >> -% 2331 0 obj +% 2356 0 obj << -/Names [(page.134) 1865 0 R (page.135) 1870 0 R (page.136) 1877 0 R (page.137) 1883 0 R (page.138) 1887 0 R (page.139) 1893 0 R] +/Names [(page.134) 1868 0 R (page.135) 1873 0 R (page.136) 1880 0 R (page.137) 1886 0 R (page.138) 1890 0 R (page.139) 1896 0 R] /Limits [(page.134) (page.139)] >> -% 2332 0 obj +% 2357 0 obj << -/Names [(page.14) 1038 0 R (page.140) 1900 0 R (page.141) 1906 0 R (page.142) 1912 0 R (page.143) 1917 0 R (page.144) 1924 0 R] +/Names [(page.14) 1041 0 R (page.140) 1903 0 R (page.141) 1909 0 R (page.142) 1915 0 R (page.143) 1920 0 R (page.144) 1927 0 R] /Limits [(page.14) (page.144)] >> -% 2333 0 obj +% 2358 0 obj << -/Names [(page.145) 1931 0 R (page.146) 1940 0 R (page.147) 1947 0 R (page.148) 1954 0 R (page.149) 1960 0 R (page.15) 1043 0 R] +/Names [(page.145) 1934 0 R (page.146) 1943 0 R (page.147) 1950 0 R (page.148) 1957 0 R (page.149) 1963 0 R (page.15) 1046 0 R] /Limits [(page.145) (page.15)] >> -% 2334 0 obj +% 2359 0 obj << -/Names [(page.150) 1964 0 R (page.151) 1970 0 R (page.152) 1980 0 R (page.153) 1984 0 R (page.154) 1992 0 R (page.155) 1997 0 R] +/Names [(page.150) 1967 0 R (page.151) 1973 0 R (page.152) 1982 0 R (page.153) 1987 0 R (page.154) 1992 0 R (page.155) 2000 0 R] /Limits [(page.150) (page.155)] >> -% 2335 0 obj +% 2360 0 obj << -/Names [(page.156) 2001 0 R (page.157) 2007 0 R (page.158) 2012 0 R (page.159) 2019 0 R (page.16) 1050 0 R (page.160) 2030 0 R] +/Names [(page.156) 2004 0 R (page.157) 2012 0 R (page.158) 2018 0 R (page.159) 2022 0 R (page.16) 1053 0 R (page.160) 2028 0 R] /Limits [(page.156) (page.160)] >> -% 2336 0 obj +% 2361 0 obj << -/Names [(page.161) 2035 0 R (page.162) 2043 0 R (page.163) 2053 0 R (page.164) 2058 0 R (page.165) 2068 0 R (page.166) 2082 0 R] +/Names [(page.161) 2032 0 R (page.162) 2039 0 R (page.163) 2051 0 R (page.164) 2057 0 R (page.165) 2065 0 R (page.166) 2074 0 R] /Limits [(page.161) (page.166)] >> -% 2337 0 obj +% 2362 0 obj << -/Names [(page.167) 2091 0 R (page.168) 2102 0 R (page.169) 2130 0 R (page.17) 1057 0 R (page.170) 2151 0 R (page.171) 2169 0 R] +/Names [(page.167) 2078 0 R (page.168) 2088 0 R (page.169) 2102 0 R (page.17) 1060 0 R (page.170) 2112 0 R (page.171) 2123 0 R] /Limits [(page.167) (page.171)] >> -% 2338 0 obj +% 2363 0 obj << -/Names [(page.172) 2186 0 R (page.173) 2190 0 R (page.174) 2194 0 R (page.175) 2199 0 R (page.176) 2204 0 R (page.177) 2208 0 R] +/Names [(page.172) 2151 0 R (page.173) 2172 0 R (page.174) 2190 0 R (page.175) 2206 0 R (page.176) 2211 0 R (page.177) 2215 0 R] /Limits [(page.172) (page.177)] >> -% 2339 0 obj +% 2364 0 obj << -/Names [(page.178) 2216 0 R (page.18) 1062 0 R (page.19) 1068 0 R (page.2) 677 0 R (page.20) 1073 0 R (page.21) 1077 0 R] -/Limits [(page.178) (page.21)] +/Names [(page.178) 2220 0 R (page.179) 2224 0 R (page.18) 1065 0 R (page.180) 2228 0 R (page.181) 2232 0 R (page.182) 2241 0 R] +/Limits [(page.178) (page.182)] >> -% 2340 0 obj +% 2365 0 obj << -/Names [(page.22) 1081 0 R (page.23) 1085 0 R (page.24) 1091 0 R (page.25) 1097 0 R (page.26) 1104 0 R (page.27) 1111 0 R] -/Limits [(page.22) (page.27)] +/Names [(page.19) 1071 0 R (page.2) 681 0 R (page.20) 1076 0 R (page.21) 1080 0 R (page.22) 1084 0 R (page.23) 1088 0 R] +/Limits [(page.19) (page.23)] >> -% 2341 0 obj +% 2366 0 obj << -/Names [(page.28) 1117 0 R (page.29) 1121 0 R (page.3) 917 0 R (page.30) 1132 0 R (page.31) 1139 0 R (page.32) 1149 0 R] -/Limits [(page.28) (page.32)] +/Names [(page.24) 1094 0 R (page.25) 1100 0 R (page.26) 1107 0 R (page.27) 1114 0 R (page.28) 1120 0 R (page.29) 1124 0 R] +/Limits [(page.24) (page.29)] >> -% 2342 0 obj +% 2367 0 obj << -/Names [(page.33) 1155 0 R (page.34) 1167 0 R (page.35) 1172 0 R (page.36) 1179 0 R (page.37) 1184 0 R (page.38) 1193 0 R] -/Limits [(page.33) (page.38)] +/Names [(page.3) 920 0 R (page.30) 1135 0 R (page.31) 1142 0 R (page.32) 1152 0 R (page.33) 1158 0 R (page.34) 1170 0 R] +/Limits [(page.3) (page.34)] >> -% 2343 0 obj +% 2368 0 obj << -/Names [(page.39) 1201 0 R (page.4) 930 0 R (page.40) 1206 0 R (page.41) 1214 0 R (page.42) 1219 0 R (page.43) 1226 0 R] -/Limits [(page.39) (page.43)] +/Names [(page.35) 1175 0 R (page.36) 1182 0 R (page.37) 1187 0 R (page.38) 1196 0 R (page.39) 1204 0 R (page.4) 933 0 R] +/Limits [(page.35) (page.4)] >> -% 2344 0 obj +% 2369 0 obj << -/Names [(page.44) 1232 0 R (page.45) 1245 0 R (page.46) 1252 0 R (page.47) 1259 0 R (page.48) 1270 0 R (page.49) 1286 0 R] -/Limits [(page.44) (page.49)] +/Names [(page.40) 1209 0 R (page.41) 1217 0 R (page.42) 1222 0 R (page.43) 1229 0 R (page.44) 1235 0 R (page.45) 1248 0 R] +/Limits [(page.40) (page.45)] >> -% 2345 0 obj +% 2370 0 obj << -/Names [(page.5) 942 0 R (page.50) 1293 0 R (page.51) 1304 0 R (page.52) 1310 0 R (page.53) 1321 0 R (page.54) 1326 0 R] -/Limits [(page.5) (page.54)] +/Names [(page.46) 1255 0 R (page.47) 1262 0 R (page.48) 1273 0 R (page.49) 1289 0 R (page.5) 945 0 R (page.50) 1296 0 R] +/Limits [(page.46) (page.50)] >> -% 2346 0 obj + +endstream +endobj +2439 0 obj << -/Names [(page.55) 1337 0 R (page.56) 1343 0 R (page.57) 1352 0 R (page.58) 1358 0 R (page.59) 1366 0 R (page.6) 947 0 R] -/Limits [(page.55) (page.6)] + /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() +/CreationDate (D:20241116120228+01'00') +/ModDate (D:20241116120228+01'00') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) >> -% 2347 0 obj +endobj +2372 0 obj +<< +/Type /ObjStm +/N 67 +/First 676 +/Length 12380 +>> +stream +2371 0 2373 172 2374 342 2375 514 2376 684 2377 856 2378 1026 2379 1198 2380 1367 2381 1536 +2382 1716 2383 1914 2384 2112 2385 2304 2386 2487 2387 2668 2388 2874 2389 3104 2390 3329 2391 3548 +2392 3775 2393 4001 2394 4223 2395 4448 2396 4678 2397 4907 2398 5135 2399 5357 2400 5585 2401 5811 +2402 6033 2403 6255 2404 6496 2405 6758 2406 7014 2407 7280 2408 7550 2409 7812 2410 8074 2411 8284 +2412 8464 2413 8643 2414 8815 2415 8944 2416 9058 2417 9170 2418 9281 2419 9392 2420 9504 2421 9627 +2422 9747 2423 9860 2424 9973 2425 10085 2426 10196 2427 10311 2428 10434 2429 10561 2430 10687 2431 10818 +2432 10943 2433 11016 2434 11136 2435 11259 2436 11372 2437 11456 2438 11491 +% 2371 0 obj << -/Names [(page.60) 1373 0 R (page.61) 1387 0 R (page.62) 1395 0 R (page.63) 1404 0 R (page.64) 1412 0 R (page.65) 1416 0 R] -/Limits [(page.60) (page.65)] +/Names [(page.51) 1307 0 R (page.52) 1313 0 R (page.53) 1324 0 R (page.54) 1329 0 R (page.55) 1340 0 R (page.56) 1346 0 R] +/Limits [(page.51) (page.56)] >> -% 2348 0 obj +% 2373 0 obj << -/Names [(page.66) 1431 0 R (page.67) 1436 0 R (page.68) 1443 0 R (page.69) 1450 0 R (page.7) 960 0 R (page.70) 1454 0 R] -/Limits [(page.66) (page.70)] +/Names [(page.57) 1355 0 R (page.58) 1361 0 R (page.59) 1369 0 R (page.6) 950 0 R (page.60) 1376 0 R (page.61) 1390 0 R] +/Limits [(page.57) (page.61)] >> -% 2349 0 obj +% 2374 0 obj << -/Names [(page.71) 1459 0 R (page.72) 1465 0 R (page.73) 1471 0 R (page.74) 1482 0 R (page.75) 1487 0 R (page.76) 1496 0 R] -/Limits [(page.71) (page.76)] +/Names [(page.62) 1398 0 R (page.63) 1407 0 R (page.64) 1415 0 R (page.65) 1419 0 R (page.66) 1434 0 R (page.67) 1439 0 R] +/Limits [(page.62) (page.67)] >> -% 2350 0 obj +% 2375 0 obj << -/Names [(page.77) 1504 0 R (page.78) 1509 0 R (page.79) 1515 0 R (page.8) 983 0 R (page.80) 1520 0 R (page.81) 1528 0 R] -/Limits [(page.77) (page.81)] +/Names [(page.68) 1446 0 R (page.69) 1453 0 R (page.7) 963 0 R (page.70) 1457 0 R (page.71) 1462 0 R (page.72) 1468 0 R] +/Limits [(page.68) (page.72)] >> -% 2351 0 obj +% 2376 0 obj << -/Names [(page.82) 1533 0 R (page.83) 1541 0 R (page.84) 1547 0 R (page.85) 1556 0 R (page.86) 1570 0 R (page.87) 1574 0 R] -/Limits [(page.82) (page.87)] +/Names [(page.73) 1474 0 R (page.74) 1485 0 R (page.75) 1490 0 R (page.76) 1499 0 R (page.77) 1507 0 R (page.78) 1512 0 R] +/Limits [(page.73) (page.78)] >> -% 2352 0 obj +% 2377 0 obj << -/Names [(page.88) 1587 0 R (page.89) 1593 0 R (page.9) 994 0 R (page.90) 1600 0 R (page.91) 1604 0 R (page.92) 1613 0 R] -/Limits [(page.88) (page.92)] +/Names [(page.79) 1518 0 R (page.8) 986 0 R (page.80) 1523 0 R (page.81) 1531 0 R (page.82) 1536 0 R (page.83) 1544 0 R] +/Limits [(page.79) (page.83)] >> -% 2353 0 obj +% 2378 0 obj << -/Names [(page.93) 1617 0 R (page.94) 1626 0 R (page.95) 1634 0 R (page.96) 1638 0 R (page.97) 1643 0 R (page.98) 1648 0 R] -/Limits [(page.93) (page.98)] +/Names [(page.84) 1550 0 R (page.85) 1559 0 R (page.86) 1573 0 R (page.87) 1577 0 R (page.88) 1590 0 R (page.89) 1596 0 R] +/Limits [(page.84) (page.89)] >> -% 2354 0 obj +% 2379 0 obj << -/Names [(page.99) 1655 0 R (page.i) 723 0 R (page.ii) 780 0 R (page.iii) 827 0 R (page.iv) 868 0 R (precdata) 1112 0 R] -/Limits [(page.99) (precdata)] +/Names [(page.9) 997 0 R (page.90) 1603 0 R (page.91) 1608 0 R (page.92) 1616 0 R (page.93) 1620 0 R (page.94) 1629 0 R] +/Limits [(page.9) (page.94)] >> -% 2355 0 obj +% 2380 0 obj << -/Names [(section*.1) 724 0 R (section*.10) 622 0 R (section*.11) 626 0 R (section*.12) 630 0 R (section*.13) 634 0 R (section*.14) 638 0 R] -/Limits [(section*.1) (section*.14)] +/Names [(page.95) 1637 0 R (page.96) 1641 0 R (page.97) 1646 0 R (page.98) 1651 0 R (page.99) 1658 0 R (page.i) 728 0 R] +/Limits [(page.95) (page.i)] >> -% 2356 0 obj +% 2381 0 obj << -/Names [(section*.15) 642 0 R (section*.16) 646 0 R (section*.17) 650 0 R (section*.18) 654 0 R (section*.19) 658 0 R (section*.2) 2083 0 R] -/Limits [(section*.15) (section*.2)] +/Names [(page.ii) 784 0 R (page.iii) 831 0 R (page.iv) 872 0 R (precdata) 1115 0 R (section*.1) 729 0 R (section*.10) 626 0 R] +/Limits [(page.ii) (section*.10)] >> -% 2357 0 obj +% 2382 0 obj << -/Names [(section*.20) 2209 0 R (section*.3) 2111 0 R (section*.4) 2132 0 R (section*.5) 2153 0 R (section*.6) 606 0 R (section*.7) 610 0 R] -/Limits [(section*.20) (section*.7)] +/Names [(section*.11) 630 0 R (section*.12) 634 0 R (section*.13) 638 0 R (section*.14) 642 0 R (section*.15) 646 0 R (section*.16) 650 0 R] +/Limits [(section*.11) (section*.16)] >> -% 2358 0 obj +% 2383 0 obj << -/Names [(section*.8) 614 0 R (section*.9) 618 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 569 0 R (section.12) 581 0 R] -/Limits [(section*.8) (section.12)] +/Names [(section*.17) 654 0 R (section*.18) 658 0 R (section*.19) 662 0 R (section*.2) 2103 0 R (section*.20) 2233 0 R (section*.3) 2132 0 R] +/Limits [(section*.17) (section*.3)] >> -% 2359 0 obj +% 2384 0 obj << -/Names [(section.13) 601 0 R (section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R] -/Limits [(section.13) (section.6)] +/Names [(section*.4) 2153 0 R (section*.5) 2174 0 R (section*.6) 610 0 R (section*.7) 614 0 R (section*.8) 618 0 R (section*.9) 622 0 R] +/Limits [(section*.4) (section*.9)] >> -% 2360 0 obj +% 2385 0 obj << -/Names [(section.7) 421 0 R (section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1058 0 R (spdata) 1051 0 R (subsection.10.1) 545 0 R] -/Limits [(section.7) (subsection.10.1)] +/Names [(section.1) 7 0 R (section.10) 541 0 R (section.11) 573 0 R (section.12) 585 0 R (section.13) 606 0 R (section.2) 11 0 R] +/Limits [(section.1) (section.2)] >> -% 2361 0 obj +% 2386 0 obj << -/Names [(subsection.10.2) 549 0 R (subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.11.1) 573 0 R] -/Limits [(subsection.10.2) (subsection.11.1)] +/Names [(section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R (section.7) 421 0 R (section.8) 493 0 R] +/Limits [(section.3) (section.8)] >> -% 2362 0 obj +% 2387 0 obj << -/Names [(subsection.11.2) 577 0 R (subsection.12.1) 585 0 R (subsection.12.2) 589 0 R (subsection.12.3) 593 0 R (subsection.12.4) 597 0 R (subsection.2.1) 15 0 R] -/Limits [(subsection.11.2) (subsection.2.1)] +/Names [(section.9) 513 0 R (spbasedata) 1061 0 R (spdata) 1054 0 R (subsection.10.1) 545 0 R (subsection.10.2) 549 0 R (subsection.10.3) 553 0 R] +/Limits [(section.9) (subsection.10.3)] >> -% 2363 0 obj +% 2388 0 obj << -/Names [(subsection.2.2) 19 0 R (subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R] -/Limits [(subsection.2.2) (subsection.3.3)] +/Names [(subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.10.7) 569 0 R (subsection.11.1) 577 0 R (subsection.11.2) 581 0 R] +/Limits [(subsection.10.4) (subsection.11.2)] >> -% 2364 0 obj +% 2389 0 obj << -/Names [(subsection.3.4) 212 0 R (subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R] -/Limits [(subsection.3.4) (subsection.4.12)] +/Names [(subsection.12.1) 589 0 R (subsection.12.2) 593 0 R (subsection.12.3) 597 0 R (subsection.12.4) 601 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] +/Limits [(subsection.12.1) (subsection.2.2)] >> -% 2365 0 obj +% 2390 0 obj << -/Names [(subsection.4.13) 272 0 R (subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R] -/Limits [(subsection.4.13) (subsection.4.3)] +/Names [(subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R (subsection.3.4) 212 0 R] +/Limits [(subsection.2.3) (subsection.3.4)] >> -% 2366 0 obj +% 2391 0 obj << -/Names [(subsection.4.4) 236 0 R (subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R] -/Limits [(subsection.4.4) (subsection.4.9)] +/Names [(subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R (subsection.4.13) 272 0 R] +/Limits [(subsection.3.5) (subsection.4.13)] >> - -endstream -endobj -2413 0 obj +% 2392 0 obj << - /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20241116104756+01'00') -/ModDate (D:20241116104756+01'00') -/Trapped /False -/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) +/Names [(subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R (subsection.4.4) 236 0 R] +/Limits [(subsection.4.14) (subsection.4.4)] >> -endobj -2368 0 obj +% 2393 0 obj << -/Type /ObjStm -/N 45 -/First 443 -/Length 7895 +/Names [(subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R (subsection.5.1) 292 0 R] +/Limits [(subsection.4.5) (subsection.5.1)] >> -stream -2367 0 2369 224 2370 454 2371 683 2372 913 2373 1135 2374 1362 2375 1589 2376 1811 2377 2033 -2378 2268 2379 2532 2380 2788 2381 3052 2382 3322 2383 3586 2384 3848 2385 4068 2386 4248 2387 4425 -2388 4597 2389 4707 2390 4821 2391 4933 2392 5044 2393 5155 2394 5267 2395 5390 2396 5510 2397 5623 -2398 5736 2399 5848 2400 5958 2401 6072 2402 6194 2403 6320 2404 6446 2405 6577 2406 6701 2407 6765 -2408 6885 2409 7007 2410 7120 2411 7204 2412 7239 -% 2367 0 obj +% 2394 0 obj << -/Names [(subsection.5.1) 292 0 R (subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R] -/Limits [(subsection.5.1) (subsection.6.10)] +/Names [(subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R (subsection.6.11) 352 0 R] +/Limits [(subsection.5.2) (subsection.6.11)] >> -% 2369 0 obj +% 2395 0 obj << -/Names [(subsection.6.11) 352 0 R (subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R] -/Limits [(subsection.6.11) (subsection.6.16)] +/Names [(subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R (subsection.6.17) 376 0 R] +/Limits [(subsection.6.12) (subsection.6.17)] >> -% 2370 0 obj +% 2396 0 obj << -/Names [(subsection.6.17) 376 0 R (subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R] -/Limits [(subsection.6.17) (subsection.6.21)] +/Names [(subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R (subsection.6.22) 396 0 R] +/Limits [(subsection.6.18) (subsection.6.22)] >> -% 2371 0 obj +% 2397 0 obj << -/Names [(subsection.6.22) 396 0 R (subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R] -/Limits [(subsection.6.22) (subsection.6.27)] +/Names [(subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R (subsection.6.3) 320 0 R] +/Limits [(subsection.6.23) (subsection.6.3)] >> -% 2372 0 obj +% 2398 0 obj << -/Names [(subsection.6.3) 320 0 R (subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R] -/Limits [(subsection.6.3) (subsection.6.8)] +/Names [(subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R (subsection.6.9) 344 0 R] +/Limits [(subsection.6.4) (subsection.6.9)] >> -% 2373 0 obj +% 2399 0 obj << -/Names [(subsection.6.9) 344 0 R (subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R] -/Limits [(subsection.6.9) (subsection.7.13)] +/Names [(subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R (subsection.7.14) 477 0 R] +/Limits [(subsection.7.1) (subsection.7.14)] >> -% 2374 0 obj +% 2400 0 obj << -/Names [(subsection.7.14) 477 0 R (subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R] -/Limits [(subsection.7.14) (subsection.7.3)] +/Names [(subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R (subsection.7.4) 437 0 R] +/Limits [(subsection.7.15) (subsection.7.4)] >> -% 2375 0 obj +% 2401 0 obj << -/Names [(subsection.7.4) 437 0 R (subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R] -/Limits [(subsection.7.4) (subsection.7.9)] +/Names [(subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R (subsection.8.1) 497 0 R] +/Limits [(subsection.7.5) (subsection.8.1)] >> -% 2376 0 obj +% 2402 0 obj << -/Names [(subsection.8.1) 497 0 R (subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R] -/Limits [(subsection.8.1) (subsection.9.2)] +/Names [(subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R (subsection.9.3) 525 0 R] +/Limits [(subsection.8.2) (subsection.9.3)] >> -% 2377 0 obj +% 2403 0 obj << -/Names [(subsection.9.3) 525 0 R (subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R] -/Limits [(subsection.9.3) (subsubsection.3.1.1)] +/Names [(subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R] +/Limits [(subsection.9.4) (subsubsection.3.1.10)] >> -% 2378 0 obj +% 2404 0 obj << -/Names [(subsubsection.3.1.10) 79 0 R (subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R] -/Limits [(subsubsection.3.1.10) (subsubsection.3.1.15)] +/Names [(subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R] +/Limits [(subsubsection.3.1.11) (subsubsection.3.1.2)] >> -% 2379 0 obj +% 2405 0 obj << -/Names [(subsubsection.3.1.2) 47 0 R (subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R] -/Limits [(subsubsection.3.1.2) (subsubsection.3.1.7)] +/Names [(subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R] +/Limits [(subsubsection.3.1.3) (subsubsection.3.1.8)] >> -% 2380 0 obj +% 2406 0 obj << -/Names [(subsubsection.3.1.8) 71 0 R (subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R] -/Limits [(subsubsection.3.1.8) (subsubsection.3.2.12)] +/Names [(subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R] +/Limits [(subsubsection.3.1.9) (subsubsection.3.2.13)] >> -% 2381 0 obj +% 2407 0 obj << -/Names [(subsubsection.3.2.13) 155 0 R (subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R] -/Limits [(subsubsection.3.2.13) (subsubsection.3.2.18)] +/Names [(subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R] +/Limits [(subsubsection.3.2.14) (subsubsection.3.2.19)] >> -% 2382 0 obj +% 2408 0 obj << -/Names [(subsubsection.3.2.19) 179 0 R (subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R] -/Limits [(subsubsection.3.2.19) (subsubsection.3.2.6)] +/Names [(subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R] +/Limits [(subsubsection.3.2.2) (subsubsection.3.2.7)] >> -% 2383 0 obj +% 2409 0 obj << -/Names [(subsubsection.3.2.7) 131 0 R (subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R] -/Limits [(subsubsection.3.2.7) (subsubsection.3.3.3)] +/Names [(subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R] +/Limits [(subsubsection.3.2.8) (subsubsection.3.3.4)] >> -% 2384 0 obj +% 2410 0 obj << -/Names [(subsubsection.3.3.4) 199 0 R (subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1105 0 R (table.10) 1253 0 R (table.11) 1261 0 R] -/Limits [(subsubsection.3.3.4) (table.11)] +/Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1108 0 R (table.10) 1256 0 R (table.11) 1264 0 R (table.12) 1277 0 R] +/Limits [(subsubsection.3.3.5) (table.12)] >> -% 2385 0 obj +% 2411 0 obj << -/Names [(table.12) 1274 0 R (table.13) 1294 0 R (table.14) 1322 0 R (table.15) 1338 0 R (table.16) 1353 0 R (table.17) 1367 0 R] -/Limits [(table.12) (table.17)] +/Names [(table.13) 1297 0 R (table.14) 1325 0 R (table.15) 1341 0 R (table.16) 1356 0 R (table.17) 1370 0 R (table.18) 1399 0 R] +/Limits [(table.13) (table.18)] >> -% 2386 0 obj +% 2412 0 obj << -/Names [(table.18) 1396 0 R (table.19) 1432 0 R (table.2) 1150 0 R (table.20) 1444 0 R (table.21) 2086 0 R (table.3) 1168 0 R] -/Limits [(table.18) (table.3)] +/Names [(table.19) 1435 0 R (table.2) 1153 0 R (table.20) 1447 0 R (table.21) 1988 0 R (table.22) 1983 0 R (table.23) 2107 0 R] +/Limits [(table.19) (table.23)] >> -% 2387 0 obj +% 2413 0 obj << -/Names [(table.4) 1180 0 R (table.5) 1194 0 R (table.6) 1202 0 R (table.7) 1215 0 R (table.8) 1227 0 R (table.9) 1246 0 R] -/Limits [(table.4) (table.9)] +/Names [(table.3) 1171 0 R (table.4) 1183 0 R (table.5) 1197 0 R (table.6) 1205 0 R (table.7) 1218 0 R (table.8) 1230 0 R] +/Limits [(table.3) (table.8)] >> -% 2388 0 obj +% 2414 0 obj << -/Names [(title.0) 3 0 R (vbasedata) 1039 0 R (vdata) 1092 0 R] -/Limits [(title.0) (vdata)] +/Names [(table.9) 1249 0 R (title.0) 3 0 R (vbasedata) 1042 0 R (vdata) 1095 0 R] +/Limits [(table.9) (vdata)] >> -% 2389 0 obj +% 2415 0 obj << -/Kids [2285 0 R 2286 0 R 2287 0 R 2288 0 R 2289 0 R 2290 0 R] +/Kids [2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R] /Limits [(Doc-Start) (Item.125)] >> -% 2390 0 obj +% 2416 0 obj << -/Kids [2291 0 R 2292 0 R 2293 0 R 2294 0 R 2295 0 R 2296 0 R] +/Kids [2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R] /Limits [(Item.126) (Item.25)] >> -% 2391 0 obj +% 2417 0 obj << -/Kids [2297 0 R 2298 0 R 2299 0 R 2300 0 R 2301 0 R 2302 0 R] +/Kids [2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R] /Limits [(Item.26) (Item.58)] >> -% 2392 0 obj +% 2418 0 obj << -/Kids [2303 0 R 2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R] +/Kids [2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R] /Limits [(Item.59) (Item.90)] >> -% 2393 0 obj +% 2419 0 obj << -/Kids [2309 0 R 2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R] +/Kids [2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R] /Limits [(Item.91) (descdata)] >> -% 2394 0 obj +% 2420 0 obj << -/Kids [2315 0 R 2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R] +/Kids [2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R] /Limits [(equation.4.1) (lstnumber.-1.4)] >> -% 2395 0 obj +% 2421 0 obj << -/Kids [2321 0 R 2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R] +/Kids [2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R] /Limits [(lstnumber.-10.1) (page.111)] >> -% 2396 0 obj +% 2422 0 obj << -/Kids [2327 0 R 2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R] +/Kids [2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R] /Limits [(page.112) (page.144)] >> -% 2397 0 obj +% 2423 0 obj << -/Kids [2333 0 R 2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R] +/Kids [2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R] /Limits [(page.145) (page.177)] >> -% 2398 0 obj +% 2424 0 obj << -/Kids [2339 0 R 2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R] -/Limits [(page.178) (page.49)] +/Kids [2364 0 R 2365 0 R 2366 0 R 2367 0 R 2368 0 R 2369 0 R] +/Limits [(page.178) (page.45)] >> -% 2399 0 obj +% 2425 0 obj << -/Kids [2345 0 R 2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R] -/Limits [(page.5) (page.81)] +/Kids [2370 0 R 2371 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R] +/Limits [(page.46) (page.78)] >> -% 2400 0 obj +% 2426 0 obj << -/Kids [2351 0 R 2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R] -/Limits [(page.82) (section*.2)] +/Kids [2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R] +/Limits [(page.79) (section*.16)] >> -% 2401 0 obj +% 2427 0 obj << -/Kids [2357 0 R 2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R] -/Limits [(section*.20) (subsection.2.1)] +/Kids [2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R] +/Limits [(section*.17) (subsection.11.2)] >> -% 2402 0 obj +% 2428 0 obj << -/Kids [2363 0 R 2364 0 R 2365 0 R 2366 0 R 2367 0 R 2369 0 R] -/Limits [(subsection.2.2) (subsection.6.16)] +/Kids [2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R] +/Limits [(subsection.12.1) (subsection.6.11)] >> -% 2403 0 obj +% 2429 0 obj << -/Kids [2370 0 R 2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R] -/Limits [(subsection.6.17) (subsection.7.9)] +/Kids [2395 0 R 2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R] +/Limits [(subsection.6.12) (subsection.7.4)] >> -% 2404 0 obj +% 2430 0 obj << -/Kids [2376 0 R 2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R] -/Limits [(subsection.8.1) (subsubsection.3.2.18)] +/Kids [2401 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R] +/Limits [(subsection.7.5) (subsubsection.3.2.13)] >> -% 2405 0 obj +% 2431 0 obj << -/Kids [2382 0 R 2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R] -/Limits [(subsubsection.3.2.19) (table.9)] +/Kids [2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2412 0 R] +/Limits [(subsubsection.3.2.14) (table.23)] >> -% 2406 0 obj +% 2432 0 obj << -/Kids [2388 0 R] -/Limits [(title.0) (vdata)] +/Kids [2413 0 R 2414 0 R] +/Limits [(table.3) (vdata)] >> -% 2407 0 obj +% 2433 0 obj << -/Kids [2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R] +/Kids [2415 0 R 2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R] /Limits [(Doc-Start) (lstnumber.-1.4)] >> -% 2408 0 obj +% 2434 0 obj << -/Kids [2395 0 R 2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R] -/Limits [(lstnumber.-10.1) (section*.2)] +/Kids [2421 0 R 2422 0 R 2423 0 R 2424 0 R 2425 0 R 2426 0 R] +/Limits [(lstnumber.-10.1) (section*.16)] >> -% 2409 0 obj +% 2435 0 obj << -/Kids [2401 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R] -/Limits [(section*.20) (vdata)] +/Kids [2427 0 R 2428 0 R 2429 0 R 2430 0 R 2431 0 R 2432 0 R] +/Limits [(section*.17) (vdata)] >> -% 2410 0 obj +% 2436 0 obj << -/Kids [2407 0 R 2408 0 R 2409 0 R] +/Kids [2433 0 R 2434 0 R 2435 0 R] /Limits [(Doc-Start) (vdata)] >> -% 2411 0 obj +% 2437 0 obj << -/Dests 2410 0 R +/Dests 2436 0 R >> -% 2412 0 obj +% 2438 0 obj << /Type /Catalog -/Pages 2281 0 R -/Outlines 2282 0 R -/Names 2411 0 R +/Pages 2306 0 R +/Outlines 2307 0 R +/Names 2437 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels<>2<>6<>]>> -/OpenAction 661 0 R +/OpenAction 665 0 R >> endstream endobj -2414 0 obj +2440 0 obj << /Type /XRef -/Index [0 2415] -/Size 2415 +/Index [0 2441] +/Size 2441 /W [1 3 1] -/Root 2412 0 R -/Info 2413 0 R -/ID [ ] -/Length 12075 ->> -stream -ÿ]!ìh&ìh0ìh8ìhDì   -hMì   Ò -ì  Òì -Òì ÒìÒ7ìÒ8ìÒ9ìÒ:ìÒ>ìÒ?ì Ò@ì!"ÒDì#$ÒEëc%&ÒGëb'(ÒHëa)*ÒLë`+,ÒMë_-.ÒNë^/0ÒUë]12ÒVë\34Ò]ë[56Ò^ëZ78ÒbëY9:ÒcëX;<(ëW=>(ëV?@(ëUAB(ëTCD( ëSEF( ëRGH(ëQIJ(ëPKL(ëOMN(ëNOP(ëMQR(ëLST(!ëKUV("ëJWX(#ëIYZ($ëH[\(*ëG]^(+ëF_`(,ëEab(2ëDcË?%(7ëCËË(8ëBËË(9ëAËË(@ë@ËË(Dë?Ë Ë -(Në>Ë Ë (^ë=Ë Ë… -ë<ËË…ë;ËË…!ë:ËË…)ë9ËË…5ë8ËË…@ë7ËË…Që6ËË…Xë5ËË…_ë4ËË ûë3Ë!Ë"ûë2Ë#Ë$û3ë1Ë%Ë&û@ë0Ë'Ë(ûOë/Ë)Ë*ûUë.Ë+Ë,û\ë-Ë-Ë.eë,Ë/Ë0e-ë+Ë1Ë2e6ë*Ë3Ë4eAë)Ë5Ë6eBë(Ë7Ë8eYë'Ë9Ë:Úë&Ë;Ë<Ú ë%Ë=Ë>Úë$Ë?Ë@Úë#ËAËBÚë"ËCËDÚ*ë!ËEËFÚEë ËGËHÚUëËIËJÚ[ëËKËLÚbëËMËNFëËOËPFëËQËRFëËSËTF ëËUËVF%ëËWËXF/ëËYËZF4ëË[Ë\F:ëË]Ë^F@ëË_Ë`FFëËaËbFLëËc”}ƒFSë””FZë””²ë””²ë””²ë ” ” -²ë ” ” ²!ë ” ”²'ë -””².ë ””²2ë””²6ë””²:ë””²>ë””²Bë””²Lë””²Vë”” ²`ë”!”" ë”#”$ Õc”%”& Õb”'”( &Õa”)”* +Õ`”+”, 2Õ_”-”. ;Õ^”/”0 AÕ]”1”2 GÕ\”3”4 MÕ[”5”6 SÕZ”7”8 XÕY”9”: _ÕX”;”<ÕW”=”> ÕV”?”@ÕU”A”BÕT”C”D ÕS”E”F&ÕR”G”H/ÕQ”I”J:ÕP”K”L?ÕO”M”NCÕN”O”PIÕM”Q”RMÕL”S”TSÕK”U”VÿÕJ”W”XÿÕI”Y”ZÿÕH”[”\ÿ$ÕG”]”^ÿ%ÕF”_”`{ÕE”a”b{ÕD”c]ýñ{ÕC]]{ÕB]]{ÕA]]{Õ@]]{Õ?] ] -{Õ>] ] {Õ=] ]{ Õ<]]{!Õ;]]{"Õ:]]{&Õ9]]{'Õ8]]{(Õ7]]{)Õ6]]]Áž]]"¾‰]] Õ ÕÕ ÕÒJ]%]#‚è]$]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9];]=]>]?]@]A]B]C]D]E]G]I]K]L]M]N]O]P]Q]R]S]T]Y]W]&ƒr]U]V]:]<]F]H]J]Z][]\]]]^]_]`]a]b]c           -                       ! " # ' %]X¿ $²k ( ) * + , - . / 0 1 2 3 4 5 6 7 8 : ; < = > ? @ A B C D E F G H I J K L M O P R T Y W &5ø V 9 N Q S U [ ] _ ` a b chhhhhhhhhh h -h h h hhhhhhhhhhhh X}Zh Z \ ^ÆŠhhhhh h!h"h#h$h%h'hò½Õ{@{7{D{B{?{4{5{>{1{2h-h.h/'7h4h2h(fh1h)h*h+h,+í{3h5h6h;h37h7ÕÕÕh9h:{=h@hAk"hEh<XhBhCh=h>h?{0{/hGhHhJhFqÌhIhXhVhK…GhLhNhOhPhQhRhShThUÒÒhW¦³hYhZh[h\h]h^h_h`hahbhcÒÒÒÒÒÕÕÒÒÒøUÒ Ò Ò Ò ÒÒÒÒÒÒ–ÒÒÒÒÒÒ$Ò4ÍÒÒÒ Ò!Ò"Ò#Ò&Ò'Ò2Ò%LÀÒ(Ò)Ò*Ò+Ò,Ò-Ò.Ò/Ò0Õ Ò1Ò4Ò5Ò;Ò3h‚Ò6ÒAÒ<|Ò=ÕÒIÒBhÒCÒFÒOÒJ 7ÒKÒQÒRÒSÒXÒP¶|ÒTÒW{9Ò[Ò_ÒYÔµÒZÒ\(Ò`ñËÒa(F((%P(Õ( ( 6ì( -((N$(((`i(((r¹((((&(‹ª( (%()(-('©ª((Õ(/(0(3(.½¯(1(O(5(=(;(4Í(6(:(?(A(<ÞÄ(>(E(Bï¤(C(G(H(I(J(K(L(R(P(Fð(MÕ (S(T(V(Q å(UÕ(X(Y(Z([(\(`(W†(](_(b…(a5¢(c…¯H………………… …o¯… … …… ‘3………………“¶…………²T……Õ…………#…¾t… …"…%…&…'…+…$×Ñ…(…*…/…,ôú…-….…1…2…3…7…0…4…6…:…8¨…9…<…=…>…B…;!,…?…AÕ…K…C;ˆ…D…E…F…G…H…I…J…M…N…O…S…LL§…P…R…U…V…Z…TeH…W…Y…\…]…a…[zŽ…^Õ -…`…cûûûû û …bçûûûûûÛ†û û ûûûûûûû -Ü“ûÕûûûûöTûûûûûû û!û"û$û-û#û&û'û)û%2éû(û+û,û-û.û/û0û1û5û*Dãû2û4û8û6bžû7û:û;û<û=û>ûDûEûBû9dû?ûAÕûGûC°ûFûIûJûKûLûMûQûH†õûNûPûSûVûR¤<ûTûXûYûZeû^ûW¦èû[û]Í+eeû_Áeeû`ûaûbûcee&hîB]e eoõeÕe e e ee -|eeeÀeeeešâeeeee&ee°fee'e¾‚e%ee e!e"e#e$Ξ e)e*e+e/e(/¥e,e.e2e0Qe1Õe4e:e8e3VÕe5e7e;e<e>e9te=eCe?ƒãe@eEeHeDœÏeFeGeJeMeIµÍeKÕeLeUeNÝ eOePeQeReSeTÕeWeZeVçCeXe\eae[Þe]e^e_e`ecÚÚebÚÚÚ?2ÚÚÚ -ÚUÚÚ ÚÚ a«Ú ÚÚÚÚj_ÚÕÚÚ€êÚÚÚÚÚÚ!Ú†óÚÚ Ú'Ú"sÚ#Ú$Ú%Ú&Ú-Ú+Ú(¢%Ú)Ú.Ú/Ú6Ú,·aÚ0Ú1Ú2Ú3Ú4Ú5Ú?Ú7ÒkÚ8Ú9Ú:Ú;Ú<Ú=Ú>ÕÚAÚBÚCÚFÚ@ä_ÚDÚPÚGÿ!ÚHÚIÚJÚKÚLÚMÚNÚOÚRÚSÚVÚQ ¨ÚTÚXÚYÚ]ÚWÚZÚ\Ú_Ú`ÚcÚ^&ßÚaFFgÉFFx’ÕFFF Fk£FFF -„ F F F FFFFF†øFFFFFFFŸFF!F«òFF#F&F"¸ÁF$Õ F+F'Ñ\F(F)F*F-F0F,Ô9F.F2F6F1éÈF3F5F8F<F7öfF9F;F>FBF= ^F?FAFDFHFCæFEFGÕ!FJFOFI(ÔFKFMFNFQFVFP7PFRFTFUFXF[FWEFYFaF\Z´F]F^F_F`Fc²²²Fbhº² ß²²¡»²Õ"²² ·ò² -² ² ² ²²²²²²²²Ô³²²²Õ›²²²²$²ë^² ²"²#²+²%ý²&²(²)²*²/², •²-Õ#²3²0 ~²1²7²4 $IJ5²;²8 )„²9²?²< /-²=²C²@ 4m²A²I²D J@²E²F²G²HÕÕ$²M²J _N²K²S²N vP²O²P²Q²R²W²T ‰ñ²U²]²X ŸÚ²Y²Z²[²\²a²^ ´‚²_ ²b Ët²c   Õ%"L<  !¿   !ì  -    !.’   !D      !Y  # !pZ   Õ  ! "Õ& ( $!‰ % ' - )!ž( * , / 0 3 .!³Q 1 6 7 8 4!Ëï 5 > 9!ôj : < = D ?"™ @ B CÕ' J E" - F H I P K"= L N O T Q"Z R V [ U"’ W Y Z ] b \"*˜ ^ ` a c">)Õ(#zi "qN -  "Æ"žB"º !"¼ì#$(""Á~%'Õ)*+,-0)"ÕS.31"ó$25678;4"÷^9=@<# Ä>DA#<BFGJE#FHÕ*NK#*LPQZXO#,eRTUVW[\]_Y#LØ^ac`#h£bÿÿÿÿ ÿ ÿ#¥½ÿÿÿÿ%FÐÿ ÿ ÿÿ -#Ç©ÿÕ+ÿÿ#âÿÿÿÿÿÿÿÿÿ#æ’ÿÿ{E{Fÿ ÿ!$8¤ÿ"$eÁÿ:ÿ,ÿ(ÿ$xÿ#ÿ&ÿ'{Aÿ.ÿ<ÿ2ÿ)$&…ÿ-ÿ/ÿ0ÿ1ÿ*ÿ+$G¾ÿEÿGÿ3$I;ÿ;ÿ=ÿ>ÿ?ÿ@ÿAÿBÿCÿDÿFÿ4ÿ5$pÿ6ÿ7ÿ8$qÿ9$r$s$‘ò$º2ÿOÿPÿQÿUÿH$›$ÿRÿSÿTÕ,ÿIÿJÿKÿLÿM$ƶÿN$Ç×$ÈÍ$Ö‰ÿ_ÿa%ëÿ]ÿcÿV$õ_ÿ^ÿ`ÿbÿWÿXÿYÿZÿ[%ôÿ\% ð%"%;%ž{{ -{%z"{{ )Éö{{%«Ê{{{%­;{%®7%¯W%Ìb{ { %Ù£{ {{%Ü[{{{%÷þ{{{#{& }{Õ-{*{$&"Á{%{:{+&-¤{,{-{.{6{8{G{;&F²{<{C{H{c{I{J{K{LÕ{M{NÕ{O{P{Q{b{R{S{T&X{{U&uZ{V&“g{W&»_{X&˼{Y&Ûx{Z'/W{['¯è{\({](n!{^(µ{_)5{`)zL{a*O§* *8*ö*2*z*'¹*,P*0â*5t*9*=œ*Cž*I Õ.Õ/Õ0Õ1Õ2Õ3Õ4Õ5*€‘*¦Áììììììììììììììì ì!ì"ì#ì$ì%ì&ì'ì(ì)ì*ì+ì,ì-ì.ì/ì0ì1ì2ì3ì4ì5ì6ì7ì8ì9ì:ì;ì<ì=ì>ì?ì@ì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ì[ì\ì]ì^ì_ì`ìaìbìc @*î² @ @ @ @ @ @ @ @ @  @ - @  @  @  @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @! @" @# @$ @% @& @' @( @) @* @+ @,*ì‡+ å +/Root 2438 0 R +/Info 2439 0 R +/ID [ ] +/Length 12205 +>> +stream +ÿ]# &k' %k1 $k9 #kE "  +kN !  Õ    Õ Õ Õ Õ8 Õ9 Õ: Õ; Õ? Õ@  ÕA !"ÕE #$ÕF %&ÕH '(ÕI )*ÕM +,ÕN -.ÕO /0ÕV 12ÕW  34Õ^  56Õ_  78Õc  +9:+  ;<+ =>+ ?@+ AB+ CD+  EF+  GH+ IJ+ KL+ MN+ cOP+ bQR+ aST+" `UV+# _WX+$ ^YZ+% ][\++ \]^+, [_`+- Zab+3 YcË?%+8 XËË+9 WËË+: VËË+A UËË+E TË Ë ++O SË Ë +_ RË Ëˆ  QËˈ PËˈ" OËˈ* NËˈ6 MËˈA LËˈR KËˈY JËˈ` IËË þ HË!Ë"þ GË#Ë$þ4 FË%Ë&þA EË'Ë(þP DË)Ë*þV CË+Ë,þ] BË-Ë.g AË/Ë0g. @Ë1Ë2g7 ?Ë3Ë4gB >Ë5Ë6gC =Ë7Ë8gZ <Ë9Ë:Ý ;Ë;Ë<Ý + :Ë=Ë>Ý 9Ë?Ë@Ý 8ËAËBÝ  7ËCËDÝ+ 6ËEËFÝF 5ËGËHÝV 4ËIËJÝ\ 3ËKËLÝc 2ËMËND  1ËOËPD 0ËQËRD /ËSËTD! .ËUËVD& -ËWËXD0 ,ËYËZD5 +Ë[Ë\D; *Ë]Ë^DA )Ë_Ë`DG (ËaËbDM 'Ëc”}ƒDT &””D[ %””µ $””µ #””µ "” ” +µ !” ” µ"  ” ”µ( ””µ/ ””µ3 ””µ7 ””µ; ””µ? ””µC ””µM ””µW ”” µa ”!”"# ”#”$# ”%”&# ”'”(#' ”)”*#, ”+”,#3 ”-”.#< ”/”0#B ”1”2#H  ”3”4#N  ”5”6#T  ”7”8#Y  +”9”:#`  ”;”<‘ ”=”>‘ + ”?”@‘ ”A”B‘ ”C”D‘! ”E”F‘' ”G”H‘/ ”I”J‘? ”K”L‘J ”M”N‘OÐc”O”P‘SÐb”Q”R‘YÐa”S”T‘]Ð`”U”V‘cÐ_”W”XüÐ^”Y”Zü,Ð]”[”\ü-Ð\”]”^ü4Ð[”_”`ü5ÐZ”a”bv ÐY”c]%v$ÐX]]v%ÐW]]v'ÐV]]v+ÐU]]v,ÐT] ] +v-ÐS] ] v.ÐR] ]v/ÐQ]]v0ÐP]]v1ÐO]]v2ÐN]]v6ÐM]]v7ÐL]]v8ÐK]]v9ÐJ]]]Áè] ]$¾Ó]!]"ÐÐ!Ð Ð"Ò”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c  +    !"#$%)']ZÂ"&´™*+,-./0123456789:;<=>?@ABCDEFGHIJKLMOPRTV[Y(7ØXNQSUW]_`abckkkkkkkkkk k +k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛÐ#vSvJvWvUvRvGvHvQvDvEk.k/k0/Wk5k3k)¸k2k*k+k,k-4 vFk6k7k<k4?°k8ÐÐÐk:k;vPkAkBy,kFk=dtkCkDk>k?k@vCvBkHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕÐÐ$&ŒÕ ÕÕÕ +Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ}ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÓÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ÐÕ2Õ5Õ6Õ<Õ4‡yÕ7ÕBÕ=›ÚÕ>Ð%ÕJÕC­˜ÕDÕGÕPÕKÁyÕLÕRÕSÕTÕYÕQØžÕUÕXvLÕ\Õ`ÕZø7Õ[Õ]+Õa›Õb+t¯+ +JÔ+Ð&++ +\Ò+ ++tÁ+++‡a+++™ý+++ +'+³Å+!+&+*+.+(Òù+)Ð'+0+1+4+/çc+2+P+6+>+<+5÷3+7+;+@+B+= +0+?+F+C€+D+H+I+J+K+L+M+S+Q+G[+NÐ+T+U+W+R:y+VÐ(+Y+Z+[+\+]+a+XD8+^+`+cˆ+bcˆˆã)ˆˆˆˆˆˆ ˆ ˆáˆ +ˆ ˆˆÀàˆˆˆˆˆˆÃcˆˆˆˆâ£ˆˆÐ)ˆˆˆ ˆ$ˆïˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ%³ˆ)ˆ+ˆ0ˆ-&{ˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ12ùˆ5ˆ7ˆ;ˆ9Pæˆ:ˆ=ˆ>ˆ?ˆCˆ<Shˆ@ˆBÐ*ˆLˆDnˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM݈QˆSˆVˆWˆ[ˆU˜¹ˆXˆZˆ]ˆ^ˆbˆ\®ˆ_Јaþþþþþ þ +ˆcÃfþþþþþ óþ þþþþþþþþ 6þÐ+þþþþ*­þþþþþ þ!þ"þ#þ%þJ¶þ$þ'þ(þ*þ&hþ)þ,þ-þ.þ/þ0þ1þ2þ6þ+zqþ3þ5þ9þ7˜Øþ8þ;þ<þ=þ>þ?þEþFþCþ:šOþ@þBÐ,þHþD¸ŸþGþJþKþLþMþNþRþI¾þOþQþTþWþSÜþUþYþZþ[gþ_þXÞãþ\þ^˜ggþ`ùÎggþaþbþcggp¡gH{Œg +g©$g Ð-g g ggg µIgggû3ggggÔ2ggggg'ggë™gg(gùµg&g g!g"g#g$g% Ñ=@g*g+g,g0g)jØg-g/g3g1Œ»g2Ð.g5g;g9g4’‚g6g8g<g=g?g:°Žg>gDg@À´gAgFgIgEÛ*gGgHgKgNgJõðgLÐgMgVgO#¥gPgQgRgSgTgUÐ/gXg[gW/gYg]gbg\KÜg^g_g`gaÝÝÝgcX#ÝÝ–YÝÝÝ ÝŸÁÝ Ý ÝÝ ¬cÝÝÝÝݵÝÐ0ÝÝÌ{ÝÝÝÝÝÝ"ÝÓÝÝ!Ý(Ý#ëÝ$Ý%Ý&Ý'Ý.Ý,Ý)ðZÝ*Ý/Ý0Ý7Ý-üÝ1Ý2Ý3Ý4Ý5Ý6Ý@Ý8# Ý9Ý:Ý;Ý<Ý=Ý>Ý?Ð1ÝBÝCÝDÝGÝA7ÿÝEÝQÝHS@ÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRa!ÝUÝYÝZÝ^ÝXmÝ[Ý]Ý`ÝaDÝ_|žÝbÛ]DD¿,DDÐ2DDD +DÃFDDD ÝOD D DDDDDDßÊDDDDDDDøÄDD"D´D D$D'D#{D%Ð3D,D(,’D)D*D+D.D1D-/ÖD/D3D7D2FÃD4D6D9D=D8SèD:D<D?DCD>hD@DBDEDIDDuDFDHÐ4DKDPDJ‰(DLDNDODRDWDQ˜!DSDUDVDYD\DX¦aDZDbD]¼^D^D_D`DaµµµµDcË[µ!Uëµ µ qµÐ5µµ + Hµ µ µ µµµµµµµµµ <Šµµµ =rµµµµ%µ  TMµ!µ#µ$µ,µ& fþµ'µ)µ*µ+µ0µ- xÙµ.Ð6µ4µ1 ƒ=µ2µ8µ5 ºµ6µ<µ9 •†µ:µ@µ= ›}µ>µDµA  ½µBµJµE ¸¬µFµGµHµIÐÐ7µNµK Î"µLµTµO 朵PµQµRµSµXµU ûEµVµ^µY!~µZµ[µ\µ]µbµ_!(žµ`#µc!@Û####Ð8"Åu##!{#### !“¤# +# # # ##!¨†###!Á######!Ö$##$#!î?### Ð#!#"##Ð9#)#%"÷#&#(#.#*"/#+#-#0#1#4#/"5h#2#7#8#9#5"P#6#?#:"yc#;#=#>#E#@"‡Š#A#C#DÐ:#K#F"(#G#I#J#Q#L"“•#M#O#P#U#R"›ð#S#W#\#V"žH#X#Z#[#^#c#]"±#_#a#b‘‘‘"êS‘‘‘$MÐ;‘‘ ‘"øã‘ ‘ ‘ ‘‘‘# +:‘‘‘‘‘‘#'Ö‘‘‘‘‘#E ‘‘"‘#Gב ‘$‘%‘)‘##M‘&‘(Ð<‘+‘,‘-‘0‘*#až‘.‘7‘4‘1#sá‘2‘3‘8‘5#†!‘6‘:‘;‘<‘=‘@‘9#•m‘>‘C‘A#³“‘B‘E‘F‘G‘H‘K‘D#¸=‘IÐ=‘M‘P‘L#Τ‘N‘T‘Q#Ü‚‘R‘V‘W‘Z‘U#àŒ‘X‘^‘[#ëb‘\‘`‘aüü‘_#íþ‘büüüü%°üüü ü ü$:4ü +Ð>ü üü $Vuüüüüüüü$h–üüüüüüüü$‹ üü"ü $¥Üü!ü$ü&ü'ü(ü)ü*ü.ü#$ª[ü+ü%vXvYü0ü1%Ôü2%0#üJü<ü8ü/$Ê„ü3ü6ü7Ð?vTü>üLüBü9$î²ü=ü?ü@üAü:ü;%îüUüWüC%küKüMüNüOüPüQüRüSüTüVüDüE%:rüFüGüH%;züI%'av?v@vAvIvKÐAvZvN'ËvOvVv[Ðv\v]v^v_Ðv`vaÐvbvcÐ+"ÐÐÐÐ'aºÐ'~™Ð'œ¦Ð'ÄžÐ'ÔûÐ'ä·Ð (8–Ð +(¹'Ð ) +ÏÐ )}²Ð )ÅÐ*#ÆÐ*‰ÝÐ*Ù‡*ݳ*âq*è­*íõ*ö4*úË*ÿ]+ï++ ++ÐBÐCÐDÐEÐFÐGÐHÐI+eÝ+ŒJ ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` a b c D+Ën D D D D D D D D D  D + D  D  D  D D D D D D D D D D D D D D D D D D D  D! D" D# D$ D% D& D' D( D) D* D+ D, D- D. D/ D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D: D; D< D= D> D? D@ DA DB+ÉC+ü& endstream endobj startxref -2821605 +2882598 %%EOF diff --git a/docs/src/precs.tex b/docs/src/precs.tex index 26492be9..9211f594 100644 --- a/docs/src/precs.tex +++ b/docs/src/precs.tex @@ -84,6 +84,102 @@ $ptype$ string as follows\footnote{The string is case-insensitive}: \end{description} + +\clearpage + +\subsection{Set\label{sec:precset} --- set preconditioner parameters} + +\begin{center} +\fortinline|call p%set(what,val,info)| +\end{center} + +\noindent +This method sets the parameters defining the subdomain solver when the +preconditioner type is \verb|BJAC|. More precisely, the parameter +identified by \fortinline|what| is assigned the value +contained in \fortinline|val|. + +{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip + +\begin{tabular}{p{1.2cm}p{12cm}} +\fortinline|what| & \fortinline|character(len=*)|. \\ + & The parameter to be set. It can be specified through its name; + the string is case-insensitive. See + Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ +\fortinline|val | & \fortinline|integer| \emph{or} \fortinline|character(len=*)| \emph{or} + \fortinline|real(psb_spk_)| \emph{or} \fortinline|real(psb_dpk_)|, + \fortinline|intent(in)|.\\ + & The value of the parameter to be set. The list of allowed + values and the corresponding data types is given in + Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}. + When the value is of type \fortinline|character(len=*)|, + it is also treated as case insensitive.\\ +\fortinline|info| & \fortinline|integer, intent(out)|.\\ + & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} + for details. +\end{tabular} + + +\noindent +A number of subdomain solvers can be chosen with this method; +a list of the parameters that can be set, along with their allowed and +default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ + + +\bsideways +\begin{center} +\small +\begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|} +\hline +\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} & +\textsc{comments} \\ \hline + +\fortinline|'SUB_SOLVE'| & \fortinline|character(len=*)| + & \fortinline|'ILU'| \par + \fortinline|'ILUT'| \par + \par \fortinline|'INVT'| \par \fortinline|'INVK'| \par \fortinline|'AINV'| + & + & The local solver to be used with the smoother or one-level + preconditioner ILU($p$), ILU($p,t$), + Approximate Inverses INVK($p,q$), + INVT($p_1,p2,t_1,t_2$) and + AINV($t$); note that approximate inverses + are specifically suited for GPUs since they + do not employ triangular system solve + kernels, + see~\cite{BERTACCINIFILIPPONE}.\\ \hline +\hline +\end{tabular} +\end{center} +\caption{Parameters defining the solver or the details of the one-level preconditioner. +\label{tab:p_smoother}} +\esideways + +\bsideways +\begin{center} +\small +\begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|} +\hline +\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} & +\textsc{comments} \\ \hline +\fortinline|'SUB_FILLIN'| & \fortinline|integer| + & Any integer \par number~$\ge 0$ + & 0 + & Fill-in level $p$ of the incomplete LU factorizations. \\ \hline +\fortinline|'SUB_ILUTHRS'| & \fortinline|real(kind_parameter)| + & Any real number~$\ge 0$ + & 0 + & Drop tolerance $t$ in the ILU($p,t$) factorization. \\ \hline +\hline +\end{tabular} +\end{center} +\caption{Parameters defining the smoother or the details of the one-level preconditioner +(continued).\label{tab:p_smoother_1}} +\esideways + + + + \clearpage\subsection{build --- Builds a preconditioner} \begin{verbatim} diff --git a/docs/src/userguide.tex b/docs/src/userguide.tex index 7113ca93..f2925f49 100644 --- a/docs/src/userguide.tex +++ b/docs/src/userguide.tex @@ -17,6 +17,8 @@ \newtheorem{theorem}{Theorem} \newtheorem{corollary}{Corollary} \usepackage{listings} +\usepackage{rotating} +\usepackage{microtype} \usepackage{algorithm2e} \usepackage{minted} \usemintedstyle{friendly} @@ -97,6 +99,8 @@ \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} \newcommand{\spbasedata}{\hypertarget{spbasedata}{{\tt psb\_T\_base\_sparse\_mat}}} \newcommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}} +\def\bsideways{\begin{sidewaystable}} +\def\esideways{\end{sidewaystable}} \begin{document} { diff --git a/docs/src/userhtml.tex b/docs/src/userhtml.tex index 770f9194..aa142adf 100644 --- a/docs/src/userhtml.tex +++ b/docs/src/userhtml.tex @@ -17,8 +17,14 @@ \newtheorem{theorem}{Theorem} \newtheorem{corollary}{Corollary} \usepackage{listings} -\usepackage{algorithm2e} +\usepackage{rotating} \usepackage{microtype} +\usepackage{algorithm2e} + +\definecolor{bg}{rgb}{0.95,0.95,0.95} +\usepackage{breakurl} +\usepackage{mathpazo} +\usepackage[english]{babel} \ifpdf \newmintinline[fortinline]{fortran}{} \else% @@ -84,6 +90,8 @@ \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} \newcommand{\spbasedata}{\hypertarget{spbasedata}{{\tt psb\_T\_base\_sparse\_mat}}} \newcommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}} +\def\bsideways{\begin{table}} +\def\esideways{\end{table}} \begin{document} \lstset{language=Fortran} diff --git a/test/pargen/runs/ppde.inp b/test/pargen/runs/ppde.inp index 470bcf58..6b758ab9 100644 --- a/test/pargen/runs/ppde.inp +++ b/test/pargen/runs/ppde.inp @@ -8,11 +8,11 @@ CSR Storage format for matrix A: CSR COO 0200 MAXIT 10 ITRACE 002 IRST restart for RGMRES and BiCGSTABL -INVK Block Solver ILU,ILUT,INVK,AINVT,AORTH +INVK Block Solver ILU,ILUT,INVK,INVT,AINV NONE If ILU : MILU or NONE othewise ignored NONE Scaling if ILUT: NONE, MAXVAL otherwise ignored 0 Level of fill for forward factorization -1 Level of fill for inverse factorization (only INVK) +1 Level of fill for inverse factorization (only INVK,INVT) 1E-1 Threshold for forward factorization -1E-1 Threshold for inverse factorization (Only INVK, AINVT) -LLK What orthogonalization algorithm? (Only AINVT) +1E-1 Threshold for inverse factorization (Only INVK, INVT) +LLK What orthogonalization algorithm? (Only AINV) From 7187575915955e36f3f43ea2130ae26dbb0744dc Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 16 Nov 2024 16:20:55 +0100 Subject: [PATCH 77/86] Doc fixes --- docs/Makefile | 4 +- docs/html/dia-.png | Bin 0 -> 50686 bytes docs/html/ell-.png | Bin 0 -> 52842 bytes docs/html/hdia-.png | Bin 0 -> 59145 bytes docs/html/hll-.png | Bin 0 -> 62128 bytes docs/html/index.html | 8 +- docs/html/mat-.png | Bin 0 -> 92468 bytes docs/html/userhtml.css | 13 - docs/html/userhtml.html | 8 +- docs/html/userhtmlli1.html | 50 +- docs/html/userhtmlli2.html | 70 +- docs/html/userhtmlse1.html | 20 +- docs/html/userhtmlse10.html | 501 ++-- docs/html/userhtmlse11.html | 8 +- docs/html/userhtmlse12.html | 86 +- docs/html/userhtmlse13.html | 32 +- docs/html/userhtmlse2.html | 8 +- docs/html/userhtmlse3.html | 4 +- docs/html/userhtmlse6.html | 2 +- docs/html/zplmr7y-42.png | Bin 0 -> 325 bytes docs/html/zplmr7y-48.png | Bin 0 -> 378 bytes docs/html/zplmr7y-49.png | Bin 0 -> 290 bytes docs/psblas-3.9.pdf | 4348 ++++++++++++++++++----------------- docs/src/biblio.tex | 14 +- docs/src/error.tex | 2 +- docs/src/precs.tex | 69 +- docs/src/userguide.tex | 2 +- docs/src/userhtml.tex | 2 +- 28 files changed, 2751 insertions(+), 2500 deletions(-) create mode 100644 docs/html/dia-.png create mode 100644 docs/html/ell-.png create mode 100644 docs/html/hdia-.png create mode 100644 docs/html/hll-.png create mode 100644 docs/html/mat-.png create mode 100644 docs/html/zplmr7y-42.png create mode 100644 docs/html/zplmr7y-48.png create mode 100644 docs/html/zplmr7y-49.png diff --git a/docs/Makefile b/docs/Makefile index b723f0d1..6ac24e64 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,7 +1,7 @@ all: guide guide: - cd src && $(MAKE) + cd src && $(MAKE) clean all doxy: - doxygen doxypsb \ No newline at end of file + doxygen doxypsb diff --git a/docs/html/dia-.png b/docs/html/dia-.png new file mode 100644 index 0000000000000000000000000000000000000000..de7db9197139e8b592815942792d983f23f3f93e GIT binary patch literal 50686 zcmc%wWmr`27e0y)As`Y0(v2`mcejYbNW;)wDlqgAl7fmf(t?B{HFOP~3L_x{DBU@9 zcb<)(@A?1Vob%%M>TIsLnAp$W&$HrQYu)SF;aVEci3#ZlK_C#Zs>)Lx5Qu;o1j2D4 zzyrR?%AaEa{$Y9OJb!{U-pvyPe897Q@%$<1=JqeUIX?mT=B}%Xkp~FG_we?G<&!J# z1$@cksch(}>tgTeZRKtUdak9$^8A&Hho^^)`)gNE7C`|%0UjgALSD)hQ5Hy_9BVG@VXoVhNaWXjKdA)HqaFuM=RWG8o%4fb}Z z7&D(?J_MS5rrsj^cbRPSynQSiD#fd+#G#jvHIxim{z5J7SkN^Ml#Iy$ z^8iYk`OUqsc}xDB6iTjTsIPBRj=qVdpG=ac-Iz- zms#{pUfjB}Wyr&6rYau4kGP-mNCHjiTN0{&2ate3mRy99kO(MVR^%cEZ>PeTeK#I+ zwm2U{1p<-00G3{D#lMe{LG$}bd{49+|C5%~6YHB9G`-)fAKI^eQDQ+N>Dm~{YCZ}m z+u3^f1Z;9ADChglw|T;o3$tF#D8mnSbP=)At5_2-i>JHhugYS?VtI8lHV9-xZL=4t z!{R$#x57bQV?k&Vqweq)w4rQb^i$L9$&H54+1yso|G%WQS-F8FmlT@ zc4h%7QA#`=$l8n1iymscaJw=$8R-(-(($hOjl|0NFdwtXN}k4#juqV+?Xx~RjYC}F zTqWK=^WT_X&_Vp77JVFc8T0taB}b+5kYmhiM{1z;GYw$Hj+{YJfF!#PM6+> z{*EiTj64Eo^Jn&JM*W0Q5PsXBAyK%>!J0y zo`ed1&Rj)~7{G@qjFK5Umu}FXEE`=G6eHZu%^+(So?fPJ3_QHziOJvCLh(C8dwCz)0Gj~4FE&s{FE_8*}gp#M6qyUAeuf`H-X@0{POTr)~J?|4j2?AIF9 z2THCX)}s4Avv*DAW94#Shx(szK_IU|*X45?E9v)`j#gPNr(V|)7B^qOe_*ejEup#d zdF?*Aj_LaKvHNwA4qUo{UGPA@nxv{%kEn?!y7`et-BKev`pco)z|u<+ZI9A0XR)$O zXouc$v!aiHb0S=~DP*quAE4Lb&R-?C@wZO04LU9h=X#nH8~@pN%jk52LEf3lIwtED zyungSU&4827YQ53cQjrH6(WW{#GAm|&_+ z{qj2CMY8Cm7SX~RERcdOnWxW~ma400#cW-K73)}aVc9jX6z8I>7Uhr=2fO7BzPAyl zEint2ru!;om&FZ|5ucb(8enHkixVTrl(DW-)%doN@NJt5XTXsiXf92DD>peCGMb8O zm^+`=PU?N3f$b~eiUs`#9e!rA&B~KkJbE;zro8VydPs9ucURSAs)yW^?J-sxE87D0 ziENp)O|~O7(KnVjb%UL142hxXf?4DI+X|cp1yB19E^8SXhVrm_o#JtG5+vZH|gyf2rypf;JOb0^M9yDNg^PTt1qG>V~N zX)N}R?Y(0S+odaZB~i_o6dClT(Dx`y++T3GD}5Wk5A%-ZxZoo!*QXrXy3TX zi3k0qZ*;b-x%k+AE7GgWczaH2U8hrie==`OuCiPABfJR+5C2EdJ3vom-Wifq?`0M@s$4# zyIL^pK?#re))l4MFn6$Jh1N{JN>L9viY(9{NaoDcHNhJMFERy=3*5COQ>6&g%S8EA zoZ{1P0})QOVzDBMq$6)g?`4H`E&p>~yqkzXNeqdUtQpNDeCtVq#tx0}HpqezU7cE~`qV*7TWC8Ygx>D^lZ%Cgv?01a@AZL+O zG1^(11W-^B^jR<42dys_mr+ZV z$VC4$e=}0VJYxSVF@po~RnxN(rZRdWffG8KP6f2rJrD>8=P}|(VOga0%wFs)PINDL zx>`ysqxOzTI=o?#i{`c2OSvV%TE&)p_%qL?N2_eo4M_ysMl1z8<~psz!HQGbvyo{Z zH^!GT<r#p+k&Omly8<+OfWigOQImLvZQdZr4bVA`9mGNmD@#CW0xjJ6PG zLQrN+bF2QB13f8brIyk@^s5OQB7yYcxbc^kdM(~Zl{;V%$cY=gzkw86Wve(w+V{^n zW7|xECpU<-6Bf-=a0k4yF9Ro=XYrjU#RQi?H*v8g;duvGp?5Wybuuxr#DSyFj?AKV zzu=97AJSHI`(MmJpK(tmQYjTm5k_S$;o$M>b3efMUyccyR+t;`Ga2^UoiP6$hdBe_ zv+7qLLoS)AfxT_imY`5}I?*#E6HTXVk>U2%a$Hdd2$XH-Ey~R;ty&!YeO^7_I5gR9 z`z-nK`YsHZ-(?+5`d>%I;j#`lEG3lZ?1%U(z1wUDcUvE1pTRF9szvgjs`zX|J z)_rg(O7+|}fVo$Uj_IUfDRd;%XHY|5u}m8ccNzzG3DgRX;HEDGxI$&!bS>e0k^X6> z=!)qCl)FZ#bAk!a{%enm_xqQV&4`?~2P$%w18fBPo2kVcpuZ*T61H=#Yvx|0M#)Li z52{4sHzxAI6tp&*A4&F`zynO_?08PX0&gCxdyT&&0R;;d-qV*k7O1cgcd;zBG>sui z6xe^!*<8qnED-q6cD+vHXCc{=yTH&X#HHqhSofjoHqjkjx|T<7xpo1QaY?9{R!peB zZmzZXD51F5V%>PhQV2-9JeMn#HkhtsML);m-y`h$uKcHcNIlt3Q<&~)sqpE>L=_lk zLXc>n_rn|W9Oqb=bL;)kh6VPtEg+YqiC#sI+~GQ>@ett*mmS{Q(qm+^`cCtX-Xz=4 zwLrn!p^ zPbi?rf94k56XY_718PhCdxVnDX$r_^Ycm!f`TU~$KycjicYh_1BW!l(5CvM83*CeL zI=J*w1A?yf%uw@giUa>%YkK_GQnts0Fnaa$sI%5GV)F*{@x5gX%H7GM8I%qvuAJ?o z!KUe7_4|LXuG){05&i9AiVZo2?=MAaHLg-i9W|ZlY#+u};EuAO9j&)2RLTG5y&Y6v zYozJqdH@2c1eq!urteM-&g&J@zxZNjBz82sZKF#~U|gLMocW*U7{W+RA}>_-%yn8$ z{!T}-KN&;_BD=+kqLMp3atw1-hqW!;0Rh=|s)kNb4iXD-@RLZ!p${(I!sgZxgdNjS zNNbv5_?FI>=LuJ;&qePF?jEG6`9;}GzP8kJi%x5y27!o_6Q0h=p>))b9eI*Hoy?8r9o4)7U?l=E#<$YaDmy%Sj5T&OS~<@-7F zT~n0bkJcp2^A|?6^EefAb`>+p?_WFJ(XjOhs8_P_GW_p%cfh&V_#LiW4BmfV)`qf7 zE!L&8M}1dOc#NN5Z&eJlMzEC|eMvB^EwKD!9lGzQrk?um)QkLHIXf6t=F$OVa#XF%vT?4Q64;P28^Jx!}Y`>WWNkym@St zTyh-lj~Gv$32kIxfN|uv#k|MXf-pNz==Vi72XhfczX&OYct>U@1rTz7m?8vg$DI51gi>$fuUq;NHr7 zpkybGxpE^4$G4Fx;5p0D*J`4&(n!GW>`Ot+z3oZb7?=t8SYc!Ad04&cdmp z07VX$tw@giuKk(ik~S)lZY^D!dJmz~$bpHwRpl)Bp`vBVZLrxmG#eiDin(v;0~puS z$PUO_L(KD}<@-V$IhSWCvS0~k9f&-!|L_knu$x&rP&df*Rz{xIhug;I19b%R+p|Wz z1V|a#mm8_XpP_d%M!!$mOa-lTNdjUHcOjz$(ysfjK5YC8g@!IhzUZ;QhAZ}4ZblAty$LA-RkP_evytlw4t*3;WgbQ zh$#I!&H!qp2?(sdkENtXG$HFuPY^lkLfF6vPvZQHIeU?bvG_*V!H3mcrJ|79G4nQ| zzLZ|Z?v@Ejey(-G8Myr|!FSM7A#OpY6{!6e6?$eh_nKA)m}-r_COFlCKy4pIX=904 zyOFBdRs~oaHQZA8&O3`SB_~MYnGytx8UkV0tsXi$kYPPg<(2Dqd6nlI9eJ1cBZM-E zxkx7FwYe=WM&z?tyZ-bVY_Qpd_XxH&P&}IU81gLq&NQ9JT?zj;~bN>qfA-yk&E%4 z1M1RVe$D#xVA8g4XQ%S2!+VnVHf&Cl1~7vX6NTBl(-;6`6z#3V5aWEU;_2mU=(~*4 z=p0>TklQRzo9BwTaDT^`*lj*a#d9FT{Cm#+o|0VIcr`!`F$2YmlUCZc*Six+5Xg|$ zp(ePpl!B$yn#7vAXp8Xt)EVD*3P_g$9e5E0G6EjRMs|(FNJa*&Rk_*X+$kKW`Gypt-=&cGLscwi!R;UWbp;iWJA`X?>Qu+y6p_{&-$M6n5^Y-@4Vm1RWgv60-;}=Cdz$@# zd2U-g6bN|0IHaDy6v@+TzArNiKMJ4*dzcG5#&VAm$CEyj`~*-pRu8)IZ>xdbH#t1L z{l`p~dO&y} zM@?MhAwv?taX!}nx(6n-qP#;dgTu67bQ|rGD`n6Za(F6hq>KrT9XMyA=mTaGA9R)@ zm^E-y*iT%_rpRd+7JonUK&Dk@?rV)bWE4V(HjTXfY!|h>>vw(2;$Op zh@Bi;rUL??p~&h^-q%ClNtuxkJ8%NO->OkZb&=L;m*vkXgGUpGMvRO4|185oQOsZo=SD?%&z;OUqB_(`pa6L1z%gjY=HXm zr{2U8xZ+4{`bk!$>TDz^;+FkTIJe3FmKrcU(y|NxoYcJ2&2)hmI9_?Vpp2`H4=Ww5 zc?>2`vt5+yRIqu_>~eshe!)i+dOpaYs;-Y^fzY0;C>t82jn;U=f7ft}Bx-k|5^WyxctNb+4@$2-J^D zAsL0~P>f?%79K}jDI3dpks)P3y&Ww=IdPh<(#T>oY3xmQY4M15;u2k-+bHe4@9S8= z>%W+;_-4W`DDJWI*))wl=V%;c@Xo}XaON_fs5rL*{HaNpO_y2gB(tA0g&ts?2)%H( z(GvcR6|b(Qf(4G2lrqlTSpZM~H6p2U4(-Y@A}M0DcgaVIEv{b!>UIX;^+5ofric5h z9|iP&Y3*th!_oAhgXQrkoP*2suU%bceqsyUQ>BDv{J$B|95$Tz6t4&MA6$y*pI96R zsHq>qrv$SOMCDvkcuz{L?;Khti~!{;Z$Pa@*8tc)+wl0xcN8XLt^GHzKI7Jby?l2v zf$I4N;Q!#67?ZL#<^li!oF;79{Y6yI>lo+Y*bk|AZ!B#$O?R3|1moCvo3Xpb*q_6GnQhF4ipyGuuSfjeXlH zLExD)o!&PQ91#;_?QGlFXgMJE&6Kw{I&PSMV{T{UMa4aIu}gkenG+^XeRSVLI~1}` zs4JacU(-D-y0Ni{g$FRG%@I+*tWmbK+&83qk_PnV?ltNHLPCS+oQLo@5)GmSK8F}- z(NxQ|DZ?^H>V26Yz$Z3;M(Q9;-YsztT1B@bte zFZ!s#i%lqKhra31B-u`>sU-=||33|zBq(Dk75ER>GKehkvg460O(?pc81L!x)iQ*U zct!puw1H9BctacVZ`%ty7rGQn>J>x&1SdllB3~k^rHbeq7noehSHFE)@-{Q&m;eO& zGr|s%dgpd9#?2h{O~~TCd8{;`bs2OSJ$NJk)gzliumGSyuYj7^{qpR)8lK0$wf8+q2)??Hh!dr~MOiG4F zLNr z1ppk^T1AEFYTuT8<-T`^S6GbpFZo`7wi_QM=x~v`J^(mg>)fAn#GC(_NF6{e0kO5@ zUZAa!*UZ87m^wMj2h+1)*=66BzDgd^F|;hLbmg;(Zwr{W$mFT&h^t$-aUvF=G3it0 zt>p2eo!B#=9h7{X0J@A=!g)hR`>At_kmsJdklQ&Z{s`lHk8>57{r*x38ljTS6|3l10Zuw&rZ8 z#3Hw_(7KQ^{HaP8+QnfYk$dOBNTj0oC1Z8@zWjLc^>;BVQBNaGR4dk>N*ib+J#+TQZbt8Pr5 zIlw(zfT}BEw&HD8g4o?QZ+7N^`d@lHUU=pWTz)iJy5gy`dR>JDU$BB|7p-7_En{01 z)il&r8;;p3L()xq!zzekbYlOzb<}c^Ls2?g71USoB`B-04J}mZ|cSL>sw`Of6v*?&P?harMLf ziO7_is9s*L(7{WGL7vH}w@K0zxLt%Qelve2ZBfA&LxxFtrZ<^6^CK*gto%M>fEAL# z;JY8(Z@~(v^0S4>;`mAHF6dr~((a0^WtaG68@|)toUlAH?1w=qIeXGmuHSN!seH9tjS8W zlp!-#oAt#`0Ey$zo|8|dT)BX`YikbM(oI_Pt(WH3PleL|x^>lJjPrD zeuSN6ilOqS*C9$g`fl=to(O}s>!!go_bKQ-b?0N1bBmXMPB-d{l77M>-IkTsVoBru z1>%pZt5WZA);5;*OqPk<<=HuE9PETo0XD(2Vt)ekLmWQK1Ca{O-4v{)?)`MZBRF&-c!UTVL}&9<%1`T-Ym- zBI+dR8|?rcO6Gbphjtgql9QP~Oh0JZalp6Y8?7lhF*iGid@|?nNcKv8a-l8)quVE! zIpO;|SJvz7j5D6PCkgD;(hmX+Kk|Ev@4RD+RzsBfK#PfBdkEM&9hPuiAZ9!OVwg*S+AhUuOG*jq!`F+p9lz8@)h#~yGh{K4m4i&9}dr7F4I*9t>aKY6H_|vo|G9XmiN2u5?*_HA>K54sdTHTzk1u_B+K$ zKWRrR`giGRbLfCb%CR&a*H=Y!HtAjNQyWyl#mM4DpxqTXDIV?RUOUf_b@J+=dP{Aj z7=<*Uhgl>s7E;NXd9Ygc$XM0$IW(LhfLG0d+|u0E=(ujt)INVy5PdL7@O>1otO{`E zK(7dlNWR$kU&GATpp42b?8C=W@5^us9e|n+lt5{-8%F##xTIDl%5opd&RBe}CGc6z zPqEOJR+l;lWD*Q}LMR!aQ?}Oi$>d#hb6I*kTp%(&;rml2XfkE#%ldim#;9P-%Y+?? z89#X6^Y?c|sfi5^nU;*5-TJe%0|P`nT<8%h!1j)7I|Y>PG2N(N(N4pBz`XEGV^Y%b zU|^ubzz6xo`f@1zOJT;JsR`R3HWI*QmzMSyCe8gI8b1vV2u@XQ3DI zWS+~FjJp}l2J&MH$4{TCtxvM{zy3jGG7#{rrXD31T4p1?&5LbP_}4tJFv^HvB1?QM z#sjk@LB}q7xF(D~m_=UYRWx`1rouGAt+koc^tIO9{YF$K-b`3W26w57NKaAgQ`(!< z^E>%E#}0lF!;8!J((rIhFk$%d4ZK#qPU9S=zf3cy#r|(Ii~u(oi}7D})=eAQ_S9wr zsb`f>1>>5FFa+zZ&&n^div&<_rq*JyuJTXOP}kiWE4FqqFTx0vcOxW(c0X`I`VsU& z=ULtplL?GB^59tS5%%XICd>>7&Nw! zCG&jJ*9c0Ix+?iQPu=yX+K?fE4PIHmXTmL{@E+FPg^Z}BzEmh^; zK+r4IP1S2I);pl!`cD9t_TRC&EDjJ~|2qVn<4OPbHn{nJqkzxHZ2!#V_Ls59C7l1A zVafl0bh7+mz`ub}qwe)G5YCLzrcJvFLw_$%6{276^-Tr7-5Bc%pS4w2nz&_m-((%B z$-}fx>%FOIvO#L}r!&`*@uyi>bJ*))D`)B`Hu!RE)(leU%&;*orI|4u#KA1G_~Cg5IFutJ@2s%Vdn!NCSz3zf zeEv*OzEsi^uz452Wu|&;8yd1+C5q`eia7ET*9~Va#9Oi|sWS@+AAU{I@)FVCemD zd~y8iDEX~9VVZgw^o`prs%`Ev^wg?FMt%h)n%~m`Tae6U|IdO~hZ$~X8T@&yCjM!% zT~Jx6%vXrM-dKM8uzQ7J6VhMiR&34x+(WHfBZ)n2GqNC_lJdCF_UMaF{J#~befUqa zJ?2QCEf-x#Q0t254PWlzg=}oN+k~MgAlw_E4?OGXEkX1vt8>INUB>(WZ(x#oS@Rwz zO4vw_{~*}Hh=;0H-Gbg^NM^Wc)4sxxfUSSPy?)Bj{4x5V75Fh_nvqP2%!C?NY@7@0 z3&s5MuN!gth6erlhvBL5W{(Ps+rIX6C5dz9-bm*j25p_r=+6SH79UQY5oVT2^AY$1l+C#I<@=Y+{0GqDk%owbmXvSsZG79+%U&r5tE>%S-;*nSeJHD!-Ew>Dj|mv1tsh>QAh!3$0^V@`2?;%&wg{T}sn4C=COB~f$=CAP8s z@!v2KrRD$cyx{)@wf+Z0L_fOs){G#pj}BsWAVH10qc?)Nhh;$V&Y7EX5?hOAA_a;& zQ1IJ-wjiMN2$hfF%#A#i1fWa&^yN*!{4CIwdI4Dz&OQ91^Tz+i$4_=u@piEShW{MF zo{gNObOBTRzSfk3$Mk#RwnmJm1z|V=KW~%#t!y5$o`Hh(DSJfAa?}pgo(69e9HPqf zJFz`CmQD}3;&Dp3wtHdHv03Q}i+=#d+6J+&dEoKB75u z9Z!6LYXz?XcCBEeJv_%1(re(?VpgGcz{PT9_;|QjszafZaN>Xp;zgbCp!Az*EwmEk z7lAqYL8Xdcws(0Ib#p_fYIOtbjMXG8yC4M&5RvHPLzSg#pgqr)dw2jySSZ(%|L$$T zw0v_rWo;{$)yTXg;^Xp(&~sLO6*&`Pc_Lsokx$--DkX37mBwF1J$-kpfMqOs3QKaf zwK;HZ^{d_eln#$$yWbZ9ColKZ%sIFpSomp=O<3t#Pq5`yOGwH!$Fk#ge*kU+qPUeS z!~{=(#ESA~T_iNV7W=_;l8%bR-LJM01RIC087z^tU33755*YXIV*Di-D&$)#lGPDwT`;g zC!GeaM2F;eu9g)cN6wKB)LCSIxk@w5I0%ceO^a|pSkvwvJXzaT@7IB7YLhLRlVi6r z|Ma-{YA^j=V<$sfb)IARQ3a!NP0j(Z?hU>epwkKp{s9=C0wjpYd`iSn^fTMQB~5!2 z2HXvLFZ3IlUG8XrcjiZ4!la<`0k+^n+UdiG8$a%^UiE!UIvF4kO%ALhr0 zixtNyZa+W!u9y4|@6J1`Gux11+&SCt1NX3O0#p(Q2%(J4r-E~BPL!O)d`5nTY4UuN zK!|7YC7h?|={v-tQAvDLcnOWMbh2b5dz=e#JV}J=qmraezLI!ZZXmgl&V-VO@Ja?7 zMc7ujIA$hgxw$Z?eVe&JP3{Ax?56Z>(HCfI0Jd62Ofdo67DPh>h*a3y-Tz#xs`E*H z5%}TfIl){{v#OvYpaEi{r&zbMFqX%qpDs7do+Xo?SUNfLunFSd6#!XlQRMib%+5-n zk5xqm#bp|~JhDuvTu61+1T?u=uUk4+K4Fb9c4rmvdjD=>!ONrQ`q-hjau^9mFT*yn z3rq`luNHYXE>g$LzwR&k&Of3=3iwC&gy1uK3(Ewe^VM5HsT8-9qYO<$gx@3q`=Iv$ zuR|^>U33EL;Zks;kcV!6!;$}`&^w@fC%loEe+}*zdOC$kV}A!NchD;G$0GR(e!bg* z#(3%OHC{c$m(eGtV{ZHmlB%hOBeB7`AYmpxyKqQc&6zHx{re4Djj&`d+`V`AuM`y=+F1 zE+r)?0$d`m3$X~>oto(amIsHdz4>h+|5INLlye_C85nbYln43&HgLPSxB~1yBXG+< zgCQ$ZIerFBkH8Xg72Iy&Hbv#}S;s7LV*gQ#n>~2_hd)>&RhR~7r+|bhD9$t;rCQKM z-$TDb$$S8WjArRfd91AOm8o+sNzOesceryoEgy|F&_FV=r4>)ob8CFF@-u;IoF(_l zd4ZNYN)lV`nO<<=gu}dOeCM-zb;aU^`Y7CpN_;fjauu*#G@$sP2xtWC&K>>S+MtLF zd0}m`DBJIZk#Y!x1mDAoYm_1DnGL&bGHQ<6jd_3y{B!55dW~8ke@Y1-vX9jk^)&p- z#ZjuYmq3E_jY~TqrW67ly*pj8*6`pM6kUE0X6O2KCgvtko!$r7`RIG&)3`G~fFwuN z@fpGsF=wqQ!5}qdHS?gN)1s6*7Xyyv=x6MWX8P>ZrAW*24t$#LG~P}VJosqQbP!ugqbCY zR3L%{sy9(HUl_8OmVK{V%T#4lICF!9yFmI32RGF#WjFeO?D7_suwPBqMkEPmapsoU zG`YBt-zBi%zFzNGq7z`JM|Mblf1ecd#|G5<2E+l`p3{6-yYmilmL`4j*6P4d zjvo+LBrEbFrLh0c=0e!5tNs{|^C>qLlnf8}2pG0GV6FT%nw{T<=Ym8`APi4%9oMnN zTElVQ9Rf}~%E&ljP8g04?@qi8&isPDI0A&9x-Dudx4hO*ssOXRkhs~e+StBDR0m4t z;6Wn;oipGejHsdYq?5wa1I%fCbW*&yNpf@m5Do*p_!&wXpD5>`2~q)xNb`r}Z7=58ftrv+DScd3~FfT25?pK}7Qld;|&=9oSh+ z4H6|y00jqjQ4v>FSsiuWe9}2bzX%db!+n?bGZf(=EQu4P4qa%!Maq^io3*K1D3SRQ zag~~LYHoj~hJQ}2_;w#sgszi!32=#U;74meYkpl*3XQ9BNT>U-BZ#dNOWFOdw&M4| z{YQVtH|>8<^}Z~AHPa1TX9K_;o6dljaOS$Hqh`s+tr+327NF_K*+%$qK-Rw2_!1P*GIIp0c@)y4c zYAp*?WloC{hl0#jElWi>L-7R&1XKCse^|Vv@w_pvC>iQVhA71Lgj*GrY#ukrKerxF z;f3&7bXJ9Yx&?ut8=s4Y(ul#^wRTp;VsRJil~#In9#ADaUSC?r95C3-o%rh?-plrb zqFd~MM~7|!7d0W|&0FX#k z-Yjxxh3gmms;w$vQ5Os41^`VU;5p4jPx=-)at}G;4@pYx8}YmGIe;V@43}u_nT`^k+Tt3FOjGE| z(>wxHkaw$sv+c-XHlW|hxDiikFKbZ+w8Vn%hWERiDW1}0{FO{|EL_PrCSKI55r4?w8q~H{3$3$U)e@pn} zo(7k1U*~AzG6Famc(^N_A|_*D0i-E?+T(z68HV~7hxPS&smS*JVB4P7uynt)ys{s?lL--FF%obx*Up!MNRqD^86oE z+*6M4WJ|w|_MqG}dd?tb-6@KSDcbWX@5yLBiu)ucr3P@w{$73VdDPY`NUGzR>&4HMogN zzyorrK5<+v2|0kz-z89(?Lp@lp!XbveKK(_zqKDrgJr+^!LMSJuFXe|NTXp^9l)GD z5KNoEmch1PoWo5?`zP+AUv+-ttIMh2Lljme_E<{JG}Hz_0oZWQgsx` z-m#@J1IlyIWrij(teVd*c7Z))bFvmeBSQcdjk#Nq0>06uS-A4y8+n`eTTCWNzB&}+ zI^b2ViTwl}j{jO+%Y|?Ylp3Ryypa*Iv%N@cz=j?5JI^oOjoGtorw3pC{A0Y3RRbVB z97klmdByS*oZBm++uWsfryiX*wm+v{&hk=Kpix**d~@RigdU=9?<7(^fr;?z`vS@v zAw=j*N&&-w6l*c$`!!%v&c!8fTtC8M@^3Zqk#l$|f|I0AdIJ}h5G?TSXDD&r7)h|3 zP+Um`IJ_94i7Q|X;L3CQZP*DTGs!N#O+hs~D+O5PfAU)3Bfc6q!2%6PDMtQo>BW_k zl#^xl{opF;Iw7?MBa)kV{q4}82>0D^5Gm*0+@J460$MhKOjrY%aPHE~QFbe= zKcn8zJK6F8n7sw^vLa%SE~NNtm1Ue@H(i9UAGDj+hV;ov;3b^$z7FK(Aefv~N7>bd zh}#gT-r2YHFW?PR{=$4o!&MD(ofE)GzA8?gtPA-+m9u-uW zumd3VJmoMCaU13@DG86>ym&Gm7pyhny`XsJZMO*nG+6QICsuhYBEVjLYmEq0^&JQV zhPBHbmV@@I9r33xo(+aSYkG{Dezv+2hQ$ z?GdYQg4MOYqQz1fpWbYxb&6J(Sycbc9!WRb~`l?UV> zt=qf15j}5ZyYbuN2ufX!rybs%#EK`8O4I=lL=y&l1ZXOtldNAW+grJrH_+918U@tP z0h3wn&LhRnmuj45C!Q)G12UzI7zZLwql(1jLz}0d?Ae?}L{3V`}>b`b%O1u!-p*pmNNeo+qS^CinIer2Q09Y&|tBevAzd8xf@Chr8hT{vs`y8Cls zSqT@Zl4gVV=E@fGosxnFP*gc9@)`C$%OhqSHHF7%*3zJ^ z#YXm-g~QGNdoO@cQWOFx)6Ai2P3c5)1M4BOu*;T_=I7K|tOdijl%+c~0qFgF_-!h{7tObo zQZhLKFz!T_X+$e&XPzGz2p*TLMn$O3C5yMB%?en>LNQpzv|F8iDG ziWWF={HuHpgq=t}@%q%*cXV34zFB~vX0ZzpTjX7*ErLUZ);Sg?arWaNq= zg#!85UJ;>8QJ_}Iy5DEW^Kbr4_?)BD&lcJt%y$XMesR}^7FJ^cww;MVnxEDnc7Diy z(Eys;qPd5nAty!Mt;~~OR(lUFrH&7__Jy|>g^P!_#()G!eXRuvQ12$A{WCO)2_SI{Bm`74G0}-xi)9pVVuZ0P+}E=c zv_9dw4z#FJXSLf44jN6_+ninRc}*{}V*M6T#oMTHPvT{^^gp~u;=&cMsRGeo&X#p7 zVgfu)b!9TN=Qa!59y8?}zI1eih-$vpG8ZMAF}@R}#LiUgX^N$|k0oFWMSBcKUGFj& zkGTU>4o!+b_vI%LPSo>+V01fD!D)8}n?pbdh=N7%Zv2&q6QIFmN$1q8|%e;2gLQtn&yJc#i-Z zh4_ z%VnH^hctJApgG;(OBKmrd<$&YY!@w;mZpIJBtKez$r&QHta$!FnjDJpG}wC??fKcK z+<~(7g>n;O`xHwE%HQ0eK~V zqJx~7o}R4Fj2MkP+X-b5ayW240L)a(kd6HWiVYd|z9WF^H`|-f!u5Yq_Z~n|HPO20 zAR>xNP?Dk`ppqo%FF8jEk|bv_AX&0x6wpybkc?y%2}2Z+90gI*CJ`3k^+qU4kJY=}kNA!g>>XPzs*|c;!cO(cfcwtp z>$99j)uko1%K#|Dy~2@NB;Av9(I(-7g0lUHlZFjhznm=O$M))<0btdkdr0PDN+g^0 zhXnsaFO3J1n{~+BErMDT#4Nty|J}g+sWw~X0VUt##{m28H?ll) zjiL}!F#_JrT!v-YI4R8G+@qv7UoZ1eY{y(XDzX$Ac=bJ;spwOb_oMs)*zNMM2E0!s z_!A~v_x#X*bop;NrYMTTs^+z8$IbZ!?8=rqRti+3k<6|vce5}n z92emRQ`OeY5^iIDK=qAAr;8%1IyCag8_1C$U_LxE8H-FHdoj=R{vepbT!t&^GGck0 z$s?Di{rM@){jGw3H+(=fGSm9oDoZ@lJwx_Xr3Q6GzAJznN*`iluRor`WgOyTbHB#h zRmo$%J{Z^-cA7#L;%BsvfDXtyhcE-9aYE;< z!Ts??`yFXHuF)!i^*xwN3d}{w!qj^Z=hEq%NQiGfG=JQQ*R57px@Z`QT?a$j-^uK1 zfAdr`&`m}w6klLVK0*wt+Ww2{TBz!wfQe(S6IE4n(p$ILah z$@t*#Fv3)a+W1D!ZLiVePRtb7W>4sD(CN?Eb=MWj+$(8x6%48^__z><- z$wiqJ{soHZV#LqWO5G99v#ku~|9&y)7~heVovMOu>0qW3D+bc2RC9lraF}h`cPb?F zbgj6bHeQl>n6sIs;4LR+gI`$>t9;j1H*up4YCN1eONEJZ{;429ouScs?UQGCWSR5zw@h`iHg^HKO&!H5a-5<_ z;yg00tGb_hUR$Rw1j1!|7S#9H>lmNPg96(P;(ivcp$PGeP&R~x zF%Ue=z4*2#AIUK5ge~Z96c)?wRbR2WXukZ6lin`^(A@6by$slI1a5@z^bHW=1(TN! z91=upFM<&>0RvZ^+k1Z+L7%UrxrmNidZij_cI`JNJMK0!9txm6rj1c*ok(4*;vW)z zk&G*K*A4L*5M*P~E$^wCeDD>!eWpBw`+YMH!q~Xyj8ogCay}lp)fM0f$hr7737@eh zhtr_$jZ?1VNREC2#^iqIY}mdms?M>8uvxAz?}fY@Th33_E^KW?!d*}JAuoto_F?r$ z&C*DI-)i+F_TZNCj2V44@hu$qVu&kru(k54F2fYu{!GA|9Y7U->&cgO}%r=`{895cQ0jP~J~CrFy4#o)x&wYCp9_qRDuX=Ys(I&$gNO8WIU z%qa?g1GLoM#8V<1XWepU-o?OQerr=19r^a*t`OMZ8($Ece`QhH$V?L-=wIXb$|rpD z%bftG!nU6aZyLT=*nR2c7raH&YOD}WJT|rAJr1Y-91BrCXWZPatHUFRL~%!3^NzO< zuboNBfaszejZ)~kunX4C>VoMK95p``j=d7iq4IgLLptuV*-t19Cfr{?(x7SZRN~lk z2l2{)Kiq*(uR@i>&U4>{I-JrTlqo*DsIM1nhkx4A9=!f z$>FA=YM7vbbOrrvsZaZ;dqLLKF3q(@fg>F6D2j8-hpQwy|Jf90lH5B)ALY8C`J9w= zjgSRzz(I&E&~xefL_()YyDWU@P*sfNtGe#Nr)qmD^B%u;3SP<2D{WoslPWunZ%G;e z$KMh=KJEIu!#sJJI#I#P>`)=FI&KUb^YJGm;^ zMz#)Vuq`^M6Z81ljk+|j_`A~H84Nyodi);79Dk?ivEJCoZDiVFP~VVEZ^M)pS>0&d za>r2}e?z(SSN`|WzS-6lK+w721Tpd_SMsc2quWT4NbmzpAnADBR94D9yf`3TX1UBd zYFAqR*?#VQb9{oYh1?k(UVnpN%XL?= zin*lZDa@4L#fuV6<9L-3znaq<6S!C@@nA1p7j1+?)jAi-?VoYfXC!Q?vR0f10LNh_ zNB6nk4Cr)>By3lUp{Jjl#o@0L=IWL!=D1<&EKik;s zk9j~Gulv1PVf8sVs}$O6^j<)-G?(Q`m70Ae<(Ump#%^;?P9j^Y45FuZU0F{UeQws) zNxD-lOG))qu?F?!&R}8BQZqq_vacxzXNg|KpTu0$Q#zW=Pw8uK!&GqepS+I;f{Tyo z8Cm^rcimNad+JN*b)6&aEa+m+p1pI&IC50catxIZ^gr$t=6iN?Qu>oQ`t576PgL9t zdLmFsyM6pJ_Oa&2kCC$9b0^GxeyekhSdY~6{~SXriJ*RIX>)tNe7>aPntJ)U zX~m-utf%$_3iX@9Vz<1g=^xZN(~GN0w6o6vLh`*wlLG0siQFj}6RFL&#@v9mbFm#g zXZQN92L5am`Q1xyDPe)%i^Rq?yKKn3sHz)m@F$%HRbUWxW~vc^@VZ>G=jIgy>3T|* zSlwBq`ll5shvbC(m>URtCe{q^V%gE!@&$%ZEA;pFa!yQ3r;3edovP2BD0japqD1xG z^W}SDB5r?L`Fl^yblBLn*+sw;K!sb4$>!Watk!nVYwFF}YADD@Nxg=iyI;^uZg8aS zfTw#`zaOYay8Trr#iJOTO0!6uuPlR>3k;Si4)zHr6Y${3PSN?ukRt1d^)s<^{kgFM zeW3Ul0kV7WzEtw|MHcFS?>mv5W+ZRSY%zS^kPTol+}AB!Z5@}EeZ;=(NEj(06<8?L z7$775Ir1#^*4XLDYTiz7>Vq2nw+GHT9}LPSt;^~Tbq_nJyX3{<%6oQkQ0V)kdxf9F?~^gl(ze7=&lQR})0BU! z9OtciBt9c$nT)?5i4-<^92f*IH3qu49+*JMB=nu!*WWzKif?$)vpXgLg-P3; z@G{6@(mHc1hHJkGHLYHK#n|Npt+TGH(k)n7Z1up7uk zP`_IKYh`L~I8A?FVR%=IMZu=+Rv7XTPf$2OvBMKNl``%&^5C=Yx}J$rL4I?2*yVr|cwmv8w^QxKOTtXThAym!tovDa^X2cUyoCmKIa)>-gh$(k_4Ig}W z6Zy<;9V|gKN16{?z%0IY)7^C^g5S;{dJl(G^|sk$N5&`1=0@H*M_9rsy*F!AZYG&# z%VkqFgd_5+e>{SMHn`D7dBzp4cI1=IZs=CD_9M0BULjFVxI1a*2!+JAy5EPU5C%lu zBGgnNW5Yu)_`mn4O(1XsJpP(HsvP2ik51yWdjw2HM97~`6-)1!Gm0rrelEU$+UM!s z)+_z=!ks*@WAM0r0*%sAj)B_j&qexIicWHJ(+1yDw(8w*{4V()h48SqpO)^J$Cg(f z^tt_O0RAtl^ZgH!t9F7zxGHcB`>biF8oSNhN}8@`J}FLNW4Kty8LLAqYGAuD{+R5e zzva-yU$JrNZCb?r>hY~wR-2CIXvT4?LA8eY$ws&PAGS`t6g4n!eAaMMbw8ynm}Zj0 z;B=>g&Iem}!Ar##U%b6BS@-O!$DHnKi`SJKx;_&A-v>)xR4Ureu1+T`ZSA3sun;P! zk!hZggV#;{dFav0|4x99a^zntXnvvoe_B4NK*CDG$Ne88Z@c~T5L5lR*8t!BHywYS zc}t4YR(Us+@B(c^#h>VVGtKXQj$DJa+!e(J>xxc8PV>^*W7a?8dpfS&zHG9MWf>K` z>agQZwNi60iK2z%1RY@{A(?toDYFnyXAu_r_qBB)L=xEc8XkoPEx9Y7M02`W8Q33= zo?V|*B|AGXO(oNeQ;^%OYMpvct#7D`J#rgf_6Sb~{RnZ2ib$0=s~xAQ=%~6M>t1<( zhG2{v36<`vO^I46l_+&LQt}V4mOIrI8;s>zug|u1C8lVBkYe>-gf37`ux9AZt`DOF zTuJ7PKie-)CMr~wB?vIkY0LRLDbbMMC(ZO-eet1V@BS^y+Z^HyMGl08^$$NK;ZIe< z<-+In^;T<3rn^`78rM_$+%z-i5Ko*N3?bB@@6Q@3L+Z?N(S`m%U2b=Q*m%y;I^9A! zE80mVjoN=KB5CiIl_@@1u3^H2R}zi(iD}2iF`rFoerRFseowqVCeKwXG&~-YmW(wOeM58Q%o+zR!K1YQSjn@PzLRm&d z<2LqjZt3f6KdS0n!?L)pQLRM4{3xk#GDlGXO4yM^0VC3rZ}#YBEam>0ZM)&zFtKJ+ zFlfciG?#+Rlbw5nm|mL0h0onTq&h0Gw(hnps)9DfEa|1q&v-%d@7H`qSccTu5~mWg z1IA)FQwh>?>=}yL9yRYto@+#xCdyCh@)W7*upg`{s@6H z4*hon#~f>w*;Qt+i=&Ra2CB?Yx6rZbSWMytnW1ZQ_gZ2Vsyteb&`CMWoPnXpv=wiQ z1U1}eSf8BDy?}`}L^fa6zH*uf#l~7Jxv7-=yUx0AZO5siv)o7Pl5>AzH)u)uc`7rt z)MuvmSw~I#!VbUEcsEpen#z6WFhw-$s3-h>Xt9V^jpgvq#UkC#s$9i}9PQ_qu-aMS z9bC1C`931s_ikuc$@5FH-0}q*&bE<7f!Q`M4j1G-)3srU{)DMj49*o6lu}YTq{f=3qhyX&8D23~*&Eu4xoM)N z4-Y$Bxefg_Ba;@~H>?V1sHo0NX{k4KkFw{9R`8o}nQ*nc96uC?a}Kj)&Wt$+cG5l4haFKC6ZLKAQ$& zCSKt^Y9lw&+zgL%+~}J#sJfG@=`eH?r-w|FQ*{&dv@=nH?agqX4rj?JEsfC}#;PI9 z#MpoUrTCSqL!vm?bX}S!q@r3hfu=NCZikL;zaW<767TWrz_itEZpqi9euU(bLqgtjXJ+lZ0~hNfEM6 zkqI!5=Mob?>G~6Oho1jdRwfEG5~iU{c=(hNj@uwQ_M6Ad{jR?JwFqBc51MmDmPAh# zJU>hY-5jfXN4oO+M?eJAPcCIUXM6mE_|qKPvt`J=01bYywuiSPZ<#G>zNqYQBcc4r zmXLmH>-GhubVZz6*pR)up$f@~8U3`=#UAkn&T1Wpbb2sV-QC@~yQ784F`xRRc`N!R z$91Mw2ar`j{1QERRdeQWmM132wBy)RyfCkcvlh8;rn-D&kXw4!T#?m8T3dFd(~$ew z_4{~(V;aY-SgSFkbzi@RgsKL4z#BWQj_u^j!|T6%i%ndX!135$r&mCVP4k zTVh{3W}eS7fQp5Mg%@2YrkbO_J>8XbsYF{?DlYBhX0GKnq84j)Yz1XoZ(|>yfBlc; zo>S-)Ufd3;yFg`0Z=$kz9h_IX`J!)OBh*^B$1Cp!ynfxy8e0^u7DHa8y*_cjU8&C? z{lQ~SC5EMqj|;^D0sv933If$k+B2ta$z@Qea&1 zn;pZ;@0WOEUA**-3dXJ64Y_8v!qToE*SKU-7m$;avuTS4Wk#0TiHmS|M}w!HRKw0A zedpPyP%mDq)V?FE7k!>61(Tf2>8X8O1DuTo#~6P zP;jmXL%o3hsyjb(os^*XhXW~6-rO&&@?*7NUKeCC@DZSQp#J9~`xA4m>VeZmBrl20 z%`%-jlV)$m$McSYGB%#fqAy{wxbAGnqZ5RzV9H&ji;wX$7y&x7=6>^^o{wLD&k)Qz zc6ma@S43j1Acx<|e>+>3S0tJ;~Jh2DrykTm19*SPc@oT^h6Q|r+fco`uoGI*It`$pe|7W=mt&#>2Oo|beOK@{|E z9>Zhxq=TzTaY+~`7?lD3v90~EWw#v|vxQMo`B2)9b z@6B(1S}QWwa_F53uq4(fRjBG+zjAin?YQtq$^H+;rZ6Ci9b866bZ%RtTY9nKcYS5< z#LaeJyDMtfvRAV_k20-wuNQ;Q$YMgt&v}xI8<}z4zc`WRi5MWM=f{|&ith?yqqLWJ zch=)LADnwQP%dEVSw#0cW;H1h=J*4zEursM%?Pf$G2}y_R;kM+XM^>#(AYnmQo{em zgP-vp40n1P_3+L1d?II>GBl{tLW?}2(yo$e#A^H8!y2o%1SNeODYwboL+&Y|NKQ-m z&wlNvKP@qhJ#yupj83FpjE`@YH;Ouw>p~e`wIzsg)%Q!LFY;N9LvS|Fd$56Z-<~r} z=Xi%jw)!K?DfywIuCq{6Z)Dx!@M7j|Kvbpn+bJaLVOP^@@kfki+zHR$iDUP*D+jHn?5CXlqjxG%^!#m3D-jp8e z&0(bS!%Rz~?%LT`vwI#*>sc&{W&j(%s%k1vNL$oifoe51^&b`=@VNQRqCeJQ=iI-uh`G^qVGyZxPzzqIaELs)#qAfAaTS3J2s5Za(X#{-pPSasB z=-S~*f31wfTpDr0RD`IZPulo9dG|$d!}X*mFu6+$3RQ7?`%`+W^=AOyNaK@O%zLmi z^TRV6BYy@NgRP~RR$Il*d0s(!jJ?X`qk(}d7^VC#xYUx$n_MFoQ`k-7Cr?{mesM;r z_}C0$0jME1%DPk`BtDoS7^R1eDOut4uGO#xmnss1 zk-HfgN=O>CmfK_EZlZmAObL6HeyhfBxw|zrmRcl~Zb}R6A5*!pM^gAa;wL$oDz6fe zLlgf~aF)oFf;)RV%hUv?TAp6D<+(Z^7(sq{$!2s5Mcp>Jh57dME3oSDuoDqX+~wY4 zm++YPusn7=lXk83eBX8$>C|SUeI&9uyG};dCQW@G@BM~oxXFSu*;zsYUICtbU1+ef zrt+j7Tl^Vo#C+$i%SeCbNc;IzriCQsB|eZsEm7orv0)BaCjHQ`OiE<=q>dpW09fC& zgpSI3Ql&oQR$uYx&M#L^RM-kxWkI9{8hTZWhJ+oHd*Nq8Tp{>|-9S}>JyeEe)Ao=B})9#IA9j2M%DeHxzE%aBx6?LpOdS-19zi+7QH zMS~m`^QK4qJ(GCrcb8$NiL0N=zTUVI&)XZZ+nL2Aw|4Y0H}yZX{$gH}T*ZdmAiN3K z0wj1G7i-bUM?_#h1`C$*)3ff#os!D7MhLu%JI40-UfNF?S47kcvu3LESylUwpw>Pn zRPlM}t_PgpCV&OXhz7JA8RJ3Vg7nJWtTuUto1BA*;y)y>k1o(1j_~hLu`|aPQN#*e z(;V<`=ID32-CKxUz)leZNBGv3&+Xfe5AQTlE4umkVCyRjAtkM=xB= ztnYD|{1{CL1TH}W+I2r*MQ_iq@KTpvU!tz5>rr~o8R`f4ExxRg_oBi*Fy6;m>#B$Q z13_RaSgh>h8UEomC!C-)q2}Bt1nGWV;w;)jVEUV)A$Tb zY2rz+@TZqh{!Wlmk2n>oKVMHhdI5B~l%>&UEADhc__E%TD?NPVo$EsZm< zerlmkvn|b;vVJ~&g{_d$hh_~tVUC)prlaz(yKfH}W#gfzBz$4odnt2eKAaIdqYTv9-YiY7?S@bnmEL1Mi;w9m9JgyQ z3r2@#=`&vn*?O1IS@2rfS(N#>wr<`O9%Ox|i=nxeaVNUZW}HBe|lgPgB7~g32Z7zco zF4v&$nef2$6}sdw#qTaKPZ0FEiX-u;uK{yfD^Z&E$qBX4lUX;??-W}QJ(bB?bh##) z&hQB(^Co6!?uV&LEW$da9C~^ujqGcbz~pdqQnZR&bN2Afy$%&{JngWVUgESVtWiwW zNuJEa&%&|}t!0OWCsCwfo@RZXbhLw)gR;KdqS^ zhDy#-2^RMt-X!A)=&@4;Ee5A1tY~ey9C0c4P~+`tT#a-Y@bjyVHT4J!`qKAN)(OiZD?mHRd;edA>oM+8!| zzfJBjV)60yACPtHVg^j>LX<%b4HeF3NI*~f=xx1Y>&fr=lr2l!PPE!1 zsKN)h;-W$RNk!2EJBGPcqoen2McZJyJjit^@ps*ex(K2{uq|g zPa*O`jNo|EG#yOU{r0`=4zIm7`3o3xOIw6#2wcuZO zN}f9{Q~KI>u6IILa2;EKYF6 z3cqqA+HpGxGW~XJ+7HiF4M%A_3%`-BmX}U@)SX;EXZ!*-=wLNW)=(LHBuWDn4!-hD z-{inIjJ`9he5v<}ld+Jy1Omta7^Cj}a!0$rkAHZv$UgaZJ~D>T5r~Zi0`n`@wv_a5 zvJJW^mmEJY_56L?eu-9pWTM-ZJ%O-S9jm#~yvh%W$8R{N8-a5z*1PxkR=Qdf!!3s| zfIwtR`qA3V*%TBMINIJ(t}Bis-fh)a>asmzJ&5eFlrZoHylIVdL1_IO6ONXq1*ALD zIRNH=Y`mZGv}mg);fZo*#gn6?ndoKCXg3n_B3+bF3QWY|I>s=E7J`KK`{=%J8J?kCJTG`HH!8Lo%{CEqDY-UF=oA9T1}ESon$icR*M>+ zY-5^6t+!lj`h|K`PsVvrufFJe9O6v6ZZb*&sVH&>z3Z4DYN=`K#{99LnVpVcj?w5+ zm)l$drnUgG;LvD7Qq^x%#uPIdSTJYcw?NbH*mfLAL{KN#Mu>k)Y0a$Xn$BfXdkxKe zqDhawy_qICb-Z^j)3ez@v7si}W9A?PeK7dpbnS`~b`sGa%bJI^U`16E;?SU7Iy4BK%aY)GS&kT6O2{{_#3+iNayIA>9V)Mu}kG^$k+Ci%r=dflS#d{ul zT<4t?2%lv`7#_ZcjxPsJ*5C3wFOPi5brV*!veNr46-78~R0Ix)j|GU2Nr1T5aw+S7 z=K3-IwB9!6nn@1sn}znMmplj$y;NFAe*es$m8=4f~qgzJcd!7JB(tcX#Q<_me}De5Q^nE{hjj6&0=E`#nWi z5&Ey+pHXNnn=i&Lt(2(!X4D?QV+X<>NA{BRUjSl;v`Nu; zM~S4L3JtfplwO8}nDh<}4K0at8oa)K;}RyQx3@Qnl@ZBCrEViTf-U2pi^~%5S=c^oKnD){tEPeU7|c0LRCt8cn|Cn5Wnj5(n47Y*yTbGtPv`e!p5XU`U{Td{v#cN9>DjfX^m;-Db{?R@Tgxs$^W~6lZXp|(0UU7( z!s+%FUl8|cNcNp_9tNzc1*~_AqBkI7zQQH(YPfQ}V-bvBK=KcMH4s?Pxj#vlNk_Ko zvpRuAeY<9C7?~uJ+P@gNnFzrQ*UbBY%3Drw$*=!t5ReCT&tJ;Tv zK~cphFSVzc<=wThAsFSjzBqaY1}~4j<|y9Am|WxM6n?uS81M3!;4zTAZuB2i?Z~N}!)nFySk@+Dq+Wr;vn}@3#XD%KR>TCrX+)oC7r1`qbQt ztq(T{i{BeyU|^u)$jI-{yp?`ub^h*8wH^!jQlriv#c4WtL;4m@421J%Mp#fJb^dU2 zf5vyI|JN_{`V`i}&Szo50*5JgnbE4;YwxGxh~zt9!>x>jN)qJpUVcY0Iu`2JHz%8Z zEAMw1y0i#Pm78z0##uIx~Qb3{K4~oNaR4w^rdQrQD#wq*Yo3dX zY1Dg?8aj*7D=UhQ`^7jUg!W|)^n!>ANc1<7_&P*CA7(r0`TLImhz}=6vFZsa(hJad zE5TS_s?cO_U)#EXY>Zysmx^Ie!Tr#K9o{j9;a$&~lJ@tFGf8#FpkM?}T{>u9m1$i- z;?^Kma}VxsyLQ|yHMf6^DU!}^c%9=h zDW_iYog3V2Ihf-e+c@~W;aRm{NOqw$VSXAiuS+CXm(u+2#{fw{mOQ)wf$tliIeCRmGsElwB#H31%7mM4*=MO+CF5#sKAgwqw}rBbH}6@FwxEtd|gkVW-y zhy#ABH-hOrN@_)m5@%{Ej{$sgvzJXW7`l#xQ*Z~_k4I}4Buw_+>qX_*P_4XHCIn7h z7hwo%y)#3(H@6czErItCD!`NF%`UhPy^{1gP#+s~sOq2Nc8{7OK`GoMGaqWfJXi-= zyth-PzW5TTOEYhLFr0;?ja3)2H$y^OuaTYL1FuCdlWA;ce`W}wae!V5TH6zU>EMl< zbKLOTTpH_0Q}N)%LSDR~?yC)eAFtilsi(Y5;=bC=)}&Ropn>Ta@u~N>I38pjLd=&` z5UlsZ@_x*TCD;`MTU%S|Ygw|}%}d^w_H9?x$G{FuRCz-dI3&EKNrXyBD54ss5kr=@ z>sfLms4v~Me4+*Iv1Wc6s-<)dZe)RJ0EdyiY}eo(mFZKCzv#Qti{)}Y%QH9Ig<0V} z=&E@Mx-wZM7Nbl_j5?86M0DW$sjGf+GMK=Y;catD>&`z$$ezwF_0`GD&dfIi_eSXT zqFpWaUY?}ysz=`Gdr?j^9ch~}2eW=5!v_JwEnWszrYLj$K^2A-UgWG)n^&Q{x#MyRxlJh8h zIEJ#_Yu4?J%U09oCwjGM4xv)4%Vi?Lq@3{4!DPdtReCH$hH*e!DPiDP(p*R`3LSSs*i3|nUzQ_2} zY+YwDTfx3}RVfwCG-3osL8*FMt|6bIac1*MZ91}h1DKE>m~H8vo@3C`-vUM^NsBNo z?43)NJkxgCQFLgp+b_a>Yw=s?Vbt%gwD03dzwd^&ZM&UM_O6Q@T3M2ki z>N%jr*B1;P4EFV%?UkrCAgnTvO%)Ub)FlZIK~($o)6Zs4&^^=dx`dcMMGnTa(DLZD zsmKG0iUDbb*mz`jy?X2afnXzZqCTlv7xKc!lNo_dPw0D!Op)~=uwO~Jw|3PU7S^MN z_muG++5l2UAK0V(wWi;U<%pk__?6R?pcll2tO-I|&Gr`7mKPV_yDc)tRnti$akLBG z@Dx60T^81P-~4@!cuNi*(j<5^P67DL4DO$^f^Sb%c!))yirzIRL9RF3Pj zU5L%@ZK3@@IyE)@IYPAjUFcL^l%40rC_5iBVwi8)fGRNhpT5I)7`8fpXs1_ulglXVwoWUWg3 z#qgN%cpgPPocC;yvwxYv*EQe>r^OeX=Ja z7Mt8KtU{Llu`BghEaJVWZFf;iXG;BS{Para~<`eQUOM9S;)g zypcnUQnqLF4l4;OIYm|SYV>k{zkYj|=)bi9{Uu%lch&tUi7ahZKTdXyTy@?{O<fi5Rusxazz4`M^qj)BMhuhnVMX#&>>sIe<{U9%tJ1;D1NtKXy;T z%mBDSfQ_IE<;9tsBriilrc4;){1JLe%3vb550&;)=jrBWCO`ew8=P;OzSTuVFdc)J zV?Zl$fgUC6;%g>72%*!0P<<%1Fdgm;^7JxOO;hZ+TRLKCA{B-{cnnR7)LfMi&|M?Y zuc3udnO>Iy~n|c(?CV2{( zAs{&^hUK)nlAFO4z^8tjxbiFSlPLG`PL$Nld*SA!ZlZe9t;<-qAc|;UoR#-0ki#LQ zgxFfE+pgHrSyIVU5?{|UF=35j7ezFWqBK~%WWpmX*>HWwUluVgu(uK}dMMXh(`sXr zf@VS`_pQ7^z+i@($JT{79^5{QVlT|aYh*FaUxzgqx)(*jl9Xj20!Xh|e=V4ui~rv1tpg_ zNpSa%ta3lH`7cA(P$@vnYBky__tUy~{@;<18W1aN{o3Bn#u(}F!EMKP9ItVCiP*W& zdAV~a4H6UQ=;KrEbl1Yeg+ZbJr+`SaOqpR8uXSsQ&k;aXXY0Z`=RxJ-ndhs$!c8>S3z&} z)&pRZS&jC7|Ha?u@97YNF(jno72`{lDR^7+}ykR(GJ9--Y@E5wr3C=a2uzvava z1yAwPTnj%G5*pgH)#HR=bn)>)MrBWexTfD*WbmMaqWa+T=H^&3t>D{32zm)1c5e&p zhDsN_0>`N%b6=co2bh(-{E6@7kM`gGsiLKUT$QF9vt7ruKPGuD4u3pdE%8;RO5Rk} z#YYflz{XC3xE_yNQeE~3NVo~5XPgSKz_ z)@^|0NO{!@+?rR^`RYN)o^cS{WQ0>+t%}NVaz!YQvDNs-lk>5NuoK5`dDOj_K$jY{ zW*{pm#15&^shNxVdR9XY2P-9nb9!Pnwo<@@2axWtjgCtA3*WVTN~z7cAsc{z$M8<- z9?f_UI*oK&m1Q`nER7IhD1`8Sssh~ry6{EM!JAuRcjZ}Q$n4Q70gv1snVq*B z?RVJX9vtU|`P1E35?knaH?khkQ1K@}K?)*K+JNPr$kcwb;VI{0*Xp-9MlpsFtfoZ* zB8wyLQh7I%=6Vj?g;}bzN%>HG)*WAV7b<&rl4|H3RIAQFk%^kGIVqpxeU|FYNjl_! zd+_EdGytC+wc~~8Sjqsx{-%X&m2@cVF>Wjkhaz%%uTS^;BzLg~x4m~lYt93J zCHA8LT(k&}S>-u1Z(Q&mZJHkI=!dJ7C{#_jz&yajT6r6Y-ufR_$xuzPQT7lv*_*bA*<% zuLkIC4oIAXUM!ptpv6P`W()yaG);S3?<6-MP=o9wy#%DtZ;^ryxhnwul@$qzcg0x!!PK58+uWC?FK=~4Prs(kFsoB0JAdWeD8Q3^ z9j5n^=rZMHA)XtdO9n|bJ zLeLsT4>ej+>Y1nNEV5qYpO!&W--s14pBYN~sdoF)o-;qUH!(^h%mkV&cmRNTTFsmW_}KU7VqY^_?@OY2)^Y2)O!KfjePB84djCv z7ec63x{-0mK`d{r>*kld$s=vOz-bGH8 z31??&23!|HaKSB+J9?i=N;bT(4m?+`B>akHuYr7%E9pEdmOxi+p@qMm8#!9drfX?w z8AG~z4p}V}@tN&qX}MN~h5`QJu_c9usyo%Bmp%=DknzO2tKH?({(=x+tfLtD&;Xe~ zL=O``X&mdhx(&GFWz4jURO|r7dY2kmky^Bn?WN~1>ag~=7kbytFJUHt5$a-PMB>>0 z%zJSfIMNgAek@Poj3G1+T7lbWe;>r){r&HMx$}mUaKaE&<-V~LXBilF+92y$n#U#i zl~+~mIgpEA&6+l?p#utG-xjhcvvaG?yiBWONKgNX3sZTvRSGPY&u}53(au)phrMcE zST;$#I5O(83b1(kXtXq4z;=?`b2L^G5>E~IaK^FR}S$XE9a6i5LL_sK5ag> z>hovk{g;Wp>%r%M!$m`x%TuSMxYnr`MI)8eRKf7svMEI^>uSJ&kmnb$*werYIL!Cy zCyBuALGHab2xmoAKu@KjRuf}JG)&h5jaJZqZ;{vXgQ;WjEi3TmW|{2xvZ@rPwvhlW zFjk*Es=mgX_O^H5O%32-A&RpLEOP{M}PBW(Z7 z6mp%d4UNnE=P7`@!pQ>hdS)A(zW&DUq`i-lRN~tp^qRvzc4(;eHv2R2hx8!V6Ob#><&AgN z@D2h_1K^_X^$D*W-)sOH%PTqjt|{~_^fumbS2aPH0m@K&p507yJ0aL%wGku>7I(#m zsP+Imw0F7qwY}F{(^FsR1NeXCa*AAdt6u7LDBVOh|Jm>IshyD8Yo&O~W^rP!QQw*p zvA|VI0Za81!5@N$STd?wNP_CYMcW_I;vV^|v z{Y4XL3=?w1%9k# z*e_VUN%0OBAB6}E^7&op3YMa#apXsnrrCy-+%7jqq_fI4UVe7Y`rpN*fpnSJ1~Zoz z{+v{HY^`E&v4mwQee9hDZEW_~@8#bgUB#ZG%_8jGoj(3myi#sx;s{L~SVyOdn%aX~ zNS~3Oo_kQE>X*K^GBs9|o_%o)f2)Qq_x{i7O&9OG{|?1nD9?+c4=wImkIHu3MnvA< zWmT(Ape`)s5)u`?*qNkGf${+g+ERM z+z?G9wb?=R%Xc*?oih#lO;yt_B8^uT-$-!}O@KRRUG3!w7Z=6l-9 zwbg&r=K@6&kJR#ySxnxvzfo)Su~f z!3IBL=b7d$L;4Qx*}3{mmp&IUGBWYAHf!MhHuq;XwXuNyl3XO&FgudxE|RG1@+o~Q z|G+CDF_GNVREeyOt1;WU{Nm1NPu<-0K{|(pze~6RpotUq6kX*<>dVmG~gO=C+E7 z(mZWyT8sAO# z{da>bV1taGz9OfTxZ$2Kv}M-yj_&D;smo07TmEBd$H6E}tiC@GgdKXCcoO?!cfI zLEDp0n5uB(cBXf3U44}4)WnmWlS@IuIUoE(tNu(>|6k`8aT!MErLclzGaz_Qj z8!p2hQnuNj!tP8K;^)P~T#Bq!e!cN}dBya2)9Z(+W;y@%i&N-Ca6`rR;x4r>QJ$yg zWnOiCqlCeIS88AETYu>wBCR){Xs^Eu@JvqH7(Vo=(rxN0+jr_V`p;1gLy1aT`E&D1 zvf-|)GF@4c3r9X!*`Nbn?IvY({Sko#3^8)MuO;_%a>L)x+1^Sn^u>DF@62vL|0MEl z@rDBuQ1xZ4A69y~Jl*AKFC6V4E}qw9y;B>NVg0<|s* zuf5u*$_+n!mW7i`r@wN7J-wPK)^pyNrCI?nOTUyR z&ru}>iZBH&@49-3^L|{xpZeM>Y;)mSTKj`EU$&m9NgFa}UQ*qqPOc#HCC$8ctr$<; zhJ zn3B02)v zZ9f>#^sPB`TogS{d_8sp?b*#G%yt-7Gxyo7b>ERu=C1c9v7?9Y?oX_E(r;ryFsZD> zHOyUCs+U;S>jR4_D`jqmU*E1P6)8v65E*me8UGbuBF^z-<;!&|Mi*rQLL5^3M? zO6$Rw`343m$Ab_x?eydQR&EK5CpLP0oaxi1>Gd%D>*7xeIK}bQuLHs-t`<4V*7&{S2kj!jCKDi z)#7RKwEqwlDRhIwn7-EQ-`kXPhhfkd4PlAi7&K1pOR(lOD;v;6_a|~vt97beX==Hr z^Tu344PFfr+GF<+W+XXGhtg0{Yn*N1NgsUfB9_d#8aWPO^qI*-FY4Oq35JDpKF*%}k#%g$`#djCTrIsxii%YFe zeW$a!NSgjgT098RDoEj6EA>_tJNrg&6fb}U4Y)u&3qJ{JRWbRsBhz22p{3l}zMBTe zm#a+ePl-aji`H?mXubU>T8@FI1mFp@nzE(+M`D)e_v&BK(d}7Ion)1&IgsI^GMAzK zpAi?pZg^`x!Eb9(k~Z`%!m{sD{|p-iApIi<+yt{-F|iX9E3+z z5HugePA!+riMietnI<);f<0OOT<$cE52y?|a4}E^nB>TMBd2z??m$Vpl`|E1dr+@6Z z>*;T%7Sl5hL;}QSj>->|tLiOy9OWIb(ns)B*JQ$PK1QgyFSg#1aB;NSriJKDbi znBfJ;sQm8?t@&RuBNtc+^Y*AzoxeSw9{lH4eYlki)+C~)Um3p5psmrrp%Id^hwYQX zCvCe2Ml7`cMEI(Z_n+bC9*JRRhj8<9=&iZ1J6q^sDZgc{577;Ju^x3J?!>$jf>aUN zr_*vntEYkLDhy58Lx@{6`p(jee$XQ>L_GYbNgx&rce2)}P9QKkktr|JkwUHJl(+O1#zhY{VIcPAvZoi>`hIq-mX(~=^Op+ec?Ym+RrJ^2j88mMP#CZEASGt4a`$_Y@VP}$ z2Ou*tl0k4Op`GN#5QgqGN=Zu2mZ8Hhm2{U)(oYlZ>4-1)JZmz)NuaNelhwNj-lR6T zc0jL^e!`teD-K(tbit2xZbXgd)>wDrGNbdUhR+cUPj}Ch3-$fj*6WAO`=xC=rar10 z%u^LQrWTtIVkRe`s;j}ooDCk>Kn8{OkMOaCz1tUlH?+0>6dqXs6LlMsHrzL`vi|~u zA^x}FYj2@P*iXS8ZoaoU*Ti|(3j0UWV@1x_3?ic~?jPwX>90jPuf>lb!ii^~-XOkr zXb|3?2b;Y^(+M3ve-_>=e7xJbpp&2(KTEfH@SrsQ8`L?YP-({8mCPp6#R;UqNtb&P z2YB2GJ-v>Yo%K^h*ezl0#}e;7=WP9EQ-BS^8Ai%#r<*p6hJX6^`3>Ree>=I6Zh&Np*3U6O zx&(EG$S>sjpZxLbUVww%-hAjxyRQ6BxvF{SdvkdDLjhu0Fb-Lq6^b~|*dUICcR+o% z2hT_Mu;{zz!JgYn?*&(Ea6wZb9nyt}GD->Ei>C!kCPOG^o5t8A%OI0ceI21bgZ?9jrR|LaF~c8W857( zddKeVg~OM_=;qM4Z5;Dej#U3hV7dcmdU`KaZX>U3I-zulp*wzvuNBkoR90lAj7CXn zcpV~b{yX<$aT%Q2)am!KT0N-c=Oxx}1^dr^o=w4DTq`}l7I#}l;5f^{ha661qV_Zm zmRJ`LCG|CG)dTJ$HF>QbMPZ^em^q(xmBuBz`WFRMIa6sax*}WgUa> zGi#2$pI7foFFTxZ%5Jw(&1x+srH_$=uw3kT?W%nVf+Y}uX6F$7wo&AfwvkQhD7y*- zdb{dbn%`N}IaLEI-Ds>!QuFfeZgVM_I4Jl}Znaj)YYHej?{xwFmq1>8>s+ z(rMH+*p%muBdSgi2`8QG%$;P{VH4Z=52VekBXKiW%!8WlqUFM7>uUIQh5I`gS{qmt zh4p0t9zQ{AwP>7jlCk%6I0OkaUeD>U(_zyWOU2B9xj=kX-4$0NrXYoFcX}FFwyW~s z(Wjm{2hPc`MLX%7mnx$)l9%VuF%5XiT31{V1X)t!JrFiDhI-H!z<7TJGT3fZ`A-mR zi|JLnHH#K28en07gAFVVEop@9%$Zo7!^#BVeg-d>p#5J$bo*X@sB~B6=CxORTSpVr zoCyicI`RpJ&@%0P0y1$r0BxL;U0Hg_TZ21NSun^1%Esa>7%Hv6R;6yo z!8*RD_Y<@m(MY>GY33W9$_UTQO)>>AO^H{17dqNxWmopmR|XSuvHvJo7guV$ zXBLV3QI3XT^IWH33OY}%_9!F-h4i;}j2C+_oY)ONL6ru}oTsp|rPGZBSE8*J#(6j&0xCY1gdGG+ni)A#D?TdY$)_hErk6*bA^<0G z>{;Uvso`6n5wLWM(wjEh(@UKTes@+5W+zt|nj3i&iUu>&ItAZM18lf4eTSBH)rxZ* z^DzeCSGt?sHf%uX*gSWESc_QCm=i16ohKFMS4IB?KvKQ*#8zyJ`$aXTY3TQ9rm?-$ z=G`*;oK~0JTEtEYv(NY^OEF&I2Z*|^Xms2(&mtz_tqA1`7%4!k3KRW?HRQVpMEdHi z1AS?3CL?K0Pnu2rPQVcM)*(7NRDBmwwd$LbH`pGcx6~pE1tbm#=0tyjZ}58C;HGr< zs9%u(&`kTZ_SvyD{d=3^7+u{>|Qg znykMsCVvJSipXh}YiMsD%c$Gw7lK{3_=idWkv^x*9x4#4-$1N8E?#b4#B%fPK|K@j zMw+EPp?&YAj$AW2vuPU<+@C`9>UuspuDOIttPHKBc2-OrN9(+osn*Pd=3u-joJS3L z2O?!$%WBcx0YBRg*4@`Vc%8EL=y#$JX|sgj1=e+ETK*Ikay`8t zQ8b8h+rf#v|R&*vQq!!3P?(&rS-qS8PKK?*#OX^O3^gWt`E-Ss1Hp9}TC zS~UW)eU%6Q(n1+^^sG0-pv&E0BIy~9N6`W{dGQBqGmy0qUA8COzKuBv zopn*rtT9Kc$85U7U+47vjR)&xirLzZv*2DOH3Lt;$w+&G=3B-i~0^M;jLPVCL zxjiw~mDpB+6XZF_$@XT4^D>!7Pr=DaWN^fE_#%VtL^T6ClXweWE%lc_3FIpzXQ|Kt z=5Nryd~ZcfPsbXSI^IpDsRj)2yxw+YYaIc5)X08zm`@mY?K&3Ib-8oIIo6Yr6r8>S zAYQAuo>Pv=?<1ikN;0YEAtetAt9uthz1L+IQ5jZe~;Ook_a!xm714O5J+T_rR_n zU3Qs-W)RhCAgcbK!N%Hqz4W}H4?={Y9-b9*`NQ0M^AZJhM>ZZ%fixu}XlGpGCsmGk zG)G=i?mE>hNTb;mal@_@(Sr<`|i^Xra~Mlkz*N9wr= zAsqUmT5`J-mxXSxd};A+AM-g3iECm#1l;<2|po_Q5tmm}+mp`3N1^UxImq z${byd3==&LmobOpuDb|7%`Y0qYc_YnAvSaOs}(a7Tz+q1A-MO(ze8r(A=DsT)Z?i8XwT*L zi4QKTk46_V>Z=&Aly@e8>$*EHZfyzoG0CS9g)rCN5X2Qw|GCh4i%~YFhdL=@@oYAJ1Fxd8N$+x23F{kgU0b#TbS#7LK z<_<45nZCSKf+R#J7O@z+n+-n9?Pttm-fGD)UJ%6!T^V+LgL*VO>}W46_?R^I?aCJY zeFPCtyPa{(qW2=d6taoDgHSEMFd|&BUhazTy2{F1fR#Rxn=k&QgkUb_FZe>|ZpLrZ znjp%BPt@{xf2}x@E{eb20B3Gu#&xbJE!<9Z|K@djyoNZcu4k+vg4NC|dJ?hrH+fDd zp>sA}+r&Y_XC|rTtdD0WjK|@ikYap%9A{o==%wv<0l_!Cxl$no^peQ1yr9WZcdJI$ zxPVuSc>qz+)Q>WD6*1~{ll2f#C?9NLR}>I74b&>wl{edRi(wY%HqXAUq#6%YwF?t9LG=}6od zqedGwxV}vU>F?0LMGweF-J{v<22Gk#?hTgXJYF7QXqF*|n~jnO*EC$C4Zbw0A&+?5 z&x*F9I76=(rC(N6yzMwET%>QJBAWQX($bPylpt!!FXhrNXJ|x>^=2Sy zx}$|H`T4Ij)iH1O9X(&2ox&%yt7SiHY|0j)(J&ClUDuKaZy4B}cc%Ud_7QVN(VL`4 zTm9bNj*wgi%(did7@Or?OFt8Jb=dawKU;WSEd@aT{VI~Y1JkC~7s}@Q zp8&W3-4-@y|C zd{)0r7+&RK%>=OeP{m8$W3ktM@Xr4x*bb@toEveHQOfO;)STYNGpy z@dEswzad2{2^d^#-ocq9E+E%ptZH8t&cv}tGzW4813|lWfByjt>}|i&(T1gkn~*g$ z3owPhAB{zj{*0)%yW~y|pKaIlTe7eisOCSTbj||9I0zP%7K)Ag3tU-c9=I8kZi&#jIVD?)pZ zJTFV9ZuhT#cc)$=rlF-RiI@BLMK#fL4ue_M9+^~P%Z4)VA#ok|MU@u7RN)mWfGHbL zu$+D*F21lsA{++5OK2-x^7{sv)04=~>UY0>?Bs0b;+p0HGUSZ7c+8^Ar2fo?Cx!Dv zP@F&@(aifF8P&8rkpeK-r23uJq&b^;Au(j-KuZk{RUcD_|FsC2bOAG&2C3YK1kX^h zg=DjeK{&1wt~4btVRjS}8r)SLapd|uZ{4*lt9OGSMb!PWOT%o_34sLD{QRXOQ?oG#HZnKgOf=`F z#1)SC`#sCCPV?v``IrXFQx{L{@22bTOx&R@f8E&hZ8t#yFxGXNLL(@h(YqU3;|usE z)Y%YyHvsAj3stm@^4bHQBV2@DI%z~o{W)FAe>>%VD+|^Za}@AuHrT>~;(s`+4!1E= zBK=KTo;CmwtFb~*;P}dDvd;wx*P3E^s*Cf+0TAag%ZKc zCT#fhkeDUWY{7sqS-r#(kTYT2D+eGAi{w?<7pG6CK%gcm^Wn?VuNp zD&$mWcNjgiG%7pP-1EftX(?;k-u|<}Jea%vf0rg>T=p?kQO%&FIBD%9Z(4ibvF&Y(BT?jFQum zc1Z)81aF`DG{~dM&GHSFJxoqB%^mzs?;Y*RbJ%VoNb@VQa6k5fDUID;b7!)SkTU0G zm9!bFUMZc~pM1&Zc(20ipk0;AhduLW-C7Py3^OL;4GjkPa0Ww9$GL?qy5+U68sH8! zS;$L{Bria--4@(SqG2K!n}SA{t$md$*p!+Lk*ZqAW^rqg?Aau{bKcB?m)6-+FXU8af)BeXJPxGcZ%5 zN54-S5UHXFTintnqhNU<-9tycY3-4Lm`v!da$o_2$%ipKn*N%%ck%*t#pgClvoIsS ze0n#ai};u?KkN}X;qu{8BBj>C($ZzLho^$TkmzaOvD5rp7MATvy7Pec1u_gN_8CXz z(n}uZU=A>O5N%IR&UeZ~#aQUX1cm&Veb3)3AHuwjIE8!yb1Q*ID0N;$d%#@!FqBTJ zmkDKUwQE)X(@B%M{3jHtwIs$=4hRHxpci460MfAy7E+FnA)ZfgQWAy2s24W)gK?xt z9PXv>=$!Y3Ea&5|1AjToj8Z~xIgX35cLk+H(VGFk%DclO`^9}4VbFoWuJ)xiO}QjH zcD#UW55PrxcbC18phWXX0kR0oB>2GOvz^5xi9ibbOb7e+g5xalr8+*xN0?Id8Z753 z30Mr2jiHk|C%mZpLl*6`+wm0lEa#ChT@fOf0%c!MTb1y{XXdK&)sKE;Q4TU>k&%dCSYf5;spQV>)*um z3ZOG^6CE zB|O2L{C;HBqoh0j=j$j;pz0uTrTvP>+G++5`B8)EFnL?SKgSn=e3Ep;Fj6vaQz0IC z94-*&cJ>#328u%3kfwfGsQ3a;=*a8;MgrI^ta25WgYY-&aAWYwOnlo{AhhhZdklCf z%Qh}cGvw@$2^2PLz<3d(6KW-KfNm4Y*%sj#+WHF)Am}+Iiky*dW{xD$#bSNXmAJQB`)0aoSY|9J>`rkyN2Um1V*7FN-R0JAIOIhy#9n zm%Nplau0ULf%d80>_C&^9WXmJ-ZfdRCV*TOL>>j{6s_#Pn|^4xk0A-i3PcjkIy8BY z|HAEk=_I8vy@)xuM3HjXH(WKvpYcw8<05JMNzPjY5mw|J}ve?FE?8}&l#r+XqI zf$KArg>GE`-9Dx^O)U7CGd8$E4|Q(|{5PN<*9`=fhE8t!iNmF{&+zd|9vjfcw{;4; zn;~-4dajCxx92?ND`D6m;DzGr3Y{WgABsUpB;WzIb@D3|QRZ20I9{MGvaAUj7Q?~GUU?f*tImpHIf zg#~p2pB)>F$X0hV%$T8tdDcd7V$e z=hi&2u;^#bC?;rr^B>c`1{1$D5EuCPiwFBmY1_oZz4<2*$)q8>U4n+ocYS!$=f?WPHU9tO3QA6UvRzHgg|W~`fv z;NH!f?xPZi4g}Wps%k0z9A9v!KdjW;gtEDw+~mdy3}vs4igHQYgoQ7%Qwx;=$4#Rg zKz=~Kwc(8RyIG0yV&I_~v32$9MM3$+=Tl?ut75zz>U}pvrFmBVr1u958w~O!Ic%EU3C=VnK4dF@wFm2GyS4CgR`Ni`pj^dN@n@ zP)E|i&j|5iNN#Szych{4#_ZXUACPsDyyiP(=jF$6dLa<4S;OLm!yP{sKO0tl6cII2 z-=fH0s=;zt`OMb-hfJ{H-KH_4?*ddtuw*0B_7;TbM^U7%<%uCYmDFTqYLE~1*=DgP z;G;l3VmE8_#p%SqZXUsH8hy7#;>cs;@;!U4nYLdl-(*y-#J?jl)Gjf#Zg=98N4kJx zyNM`v4Yeu;{j=6?ci{k^vn&(zwRr6-L-E4EZ7607b_S6p1(>|)t*TYdH(WkzH6Rv< zQm*@oCNgt5^Ut+u8L$#wec5D0`s z_0dCJ2!ucd0>RTK#0T$$Ex(op|GV@;S4H8{L@#eJ_y*rvUF9L<0{2gLOJO2-=bGCi zqZbeeKRfQfOTKVfZ}29or;?%PljruHK2{!f5EbpmtSXMrUwFQ-@p$Iu$tonsFDT3} z)M@ekE%+!z^`ZPz-;Zn4T8_LEnRoYZ#=Sav(_TDbn>ewn=+m}gMLo>-lAxJZkb<`P zenP;YIc?|_b6=t4D2@w$Ace_dXzh_#TjqxEe#9P~?blKN{cwno;ENiS zYTl;4YFadTrJs-pen}Vi5l+TTR%)srSg+9ty!4oYv1t9Z1bMabdmblV39%Q zbTsSaxJ5$P(A!e82cqA!U&p=yvXX`hr7*JxEgD2d$PINAOO0-~E%RYuryAq{-Ft`2lR=_Zw0#R2`INUFbNfq;6IWp0q86 z5j_fkLWc{o$Z!JNTnSYIZlS9Ysc#$IGO$PM%wk+{mOg9{*L%!aL=R!wz^!c6XKgPP zX$G8ME8OMF>@3J6%JI$9MX%DX1VM+(CvB4L?rvQis%~BEkomsN!b)K(WGgl9hI#y4 zCEfLn#h`vH>|DZ$8Yh`^)Uq|&ztizLEJX?E?z zOGK|rm~2%m$@+{P&~@U3L2TF<*I)WRx~QEuNb$>@UAIc4emOjL$7&enVgj{%XE&jA z#lQ>EBSXR$xHRvlA^UNv5FfiB4fkZY_j`s0aoYw(ng?a&K$lFcz?Q>-U#5jhz@aGIlX=nJ;K5@q>4&O6 z^hvx>#x-O6w2O{o*Cgv@46VCDqMN*qAN-YvR1}|d7n*_^Il5Ea;qu|O572+#7O2Wq z)-q$BiQTNy{OR65SyH{~QDidGwPQSFTh?FO@rjU1>xo(+$;<_}Jw+X~=wy$L$tiA( z1fw&VO}sgoTfx&*U(ShJUoQBXN>hca*??D{cHN>=Z`N#(Er(wJkfa$!{Dvg2iwO3@+y2sp7r8C zjiEm(;+Bj9Oos@bHez;81J$S8s24kFX7Zpee3k^b9b2CCGp<(>5~h{bHlmHf(W5MZ zt~^U`EsLA+mo4pMy?2{8Olwj&UiwtTD$eegM6J84vS=^zD)j3swVCk;2lCKf#VxZW zJLgz00$W0%zarqt@#Yk){Oq4i zHNDQ8)+6TIu;y5tjvQm@jxK~f81J48?t;xIEce5fru?SEINFCb?Ro1<$xcR&fZ@5U z+Rqh;_O03*c|W0F%K69-fzy`Xyui5=9s#KM`QxlP}u@nA)5T)}mLHv-B8+E&!bD z9h+Q(K&IYdkGwLmg?^dAYFw~M*73l%eVntu{m!{&R{hEFE~7)~!t(Yc-1~D|7z>kH zWA^J+1#8~sH4wl6R5>Txl}*Qyx@URY-h~Qdc6y{R0(rBNv2q?}n|iQWg8FBJEWr$C z?$f$*n}e+~UH3HgiXjrL=oj~nnr_>h^Ye3?&tJ|yO{?G;_{1QoZ&`{_XmS6ehj@zFDc=Y3)<% zL-7tn;8>*%$uML0>DJ2n)q~t3xg8LhGg){C7j5e7PfYs11zP-Y?rLS~ZW-4(JyGpk zbTFT%t&xZbia7aR2dnQL+KJ|oI#K0Fkx(?fB-ilHnFn&;;)%Jw#!h znKj(?{`U?nFS@P@|Jmm5Li5IxL}6hV@AJvtGkUoI7vT<%jBR9=x>#}jD;)^rn3cIs z%x@`p_8q|vdV@{WjNXP=BA|cNF?b9>Mt5}6?2PlG-#JCFH_N@P0UM4PzfihY0G8j> zWl53%L$IuX3fr5N-}H7pYeYxV9r_I7Bfni-*1pBKo@`AQb3i4(0MqysR~AOS6*lWh zIi<%dfqEY{5s<%w^}?jRj>uqs(D=~cpk!>l>gzVrC^;j^^=H!XRY>;pG~%_Xlb@(a z`81`wFtY&nbbpWjw3;$p1gHMLMDS-oIgzBby{jU}wTbu@NAY*iQPVtGMBkttgRWdM z`6v_7>Z0~Xb)9u%XS|K3Hca7(hAu%x?dCUO4=N;SXhyyAh*%CPNeA9|2BQ3Dnc3S) ziIT~z^&R2jDvPsC?w7z;jLAIe7D@|hma;dzOorar)Ybl!?n8@SyD4C7j(7n!kgQqL z>uc^lS^2zaygff=dnd~QLjyr-iBFP~3sa8WFXAEBIXEeMkBE?S$PhRRP3_vd;dQ8z zr-k*>DyJ`P8MIBd9P{)*;g2$>6Au~cnI9B;^8QtWkN?y1D*mNL+Nqsa_!7bWb<^jg zgzc`A*W1DywD?vYr$_%9Uzk|vdpXQPg<*_DJee&My8exQw6O%QfVxsnl% z6sew89JY7G?PVk4KlN_kZFxWq`%%bW*Xvt8v|t`I(zYDK_vw+{PZ2pSLKR6?Wj!ht zIuSF&Kt0EIbuf7fINzAj71$iN!VrHl;WG^j%qst9r9H*3Xn%w7eDsOP=lxWWZiO#; z1?y^#6={O}D6Jsp;pV27$wDgCXUG}yLvo7*we*idO(0Qp;&$|DZ`(3;Qc1XU_lxTg ze>w3<64|tNN}5Nt^rnxXEgzM5`CC=x{BPV*$h@UZpF5K|2JHoDE4ms(&RUM-glTeR z?BA(e=?x;Ol`hva7sI!sbZDB{hk6S`AiGLGcqls)^u}fgswlq{J+N0FneJrXuN=}B z*#ATTt?qsCQXjqAjp(0$kz8OGbZLojZYi^?2tL15;uYGB9D9ED>h|R!jzzg*MtBl) zxW1DQA-0x}oYCCQXg^-}c+zre^W;YK{xekg59Tr6iV|G>UDMw(p9A@p`AutLWXDs* zSfg5wP-7E;45S@wqENHGm(!+cbsH%Lzi2HpK@x_zlE-e$Dp?gwoP_6e6%!?7yr$L> zoo}$>isCllf*0~fM>zMg4mdwCN@lV%@}`hAAorF9*=7kL>2tL^W+lxJeSK%%TYAc! zh%ABpQENJ4Dl}>6$us*34xcnU7fD0#J%Ww$^Vf!GPsK<`oxRnd(Wx?>}a#}qf#ao*9J#XCwfqW6?^uwsX_}bI$oHZtX)If=KkD%?@AP^-n+1v-UA0+J z!VUom?V#EL%YA3tb@!a!HJv;Opx>s*1AKwSJACsf1GAK@y=5agbw&i$t)dddpyf~4 za=Xl4wT7~#kn9(ohPYtMOE~r+F6psd>^RS!sFKh8{dS=HDLCT9G38-jjp=Ijh zjULoWI!*@?aL?x7U+NQi(S3Oc35QZ_Ehj&5dJ?7Il4X3uQ_+>g}F7DF>g%pw$3!s$OdgJ=D{rv4p(NJ8{>ihkCxZGdds4 zirglZJ^I0)WcZfOuaHC`IX4Q1dE{*Q9qYwre|HpU!=<{lQ)bT%RRcH!OO{Bsj_K+Z z{w-`tCK02z`%wa)d%u1}KtGZ$2vr6dA&?#~oT=|66kP3Ce81@ROX_`a#Yg_XrfXwy zuSDXB^&R_n=Aw*U@2#hrWZ0p*Sg)M9tB$j390$;UBoyAd!bR#*&Om8)a8htbAOJ1o zyik1quwHE#t8O+p0i!oeZ+5ACJXE}mG=STHJhe@ZP{oH=O=#@}zHOmG6k&Q=Y{Sah znhv&h$S<^3NVA&PL_(n=PXc8z3D}FuyImnU-lHa`K_e8bcg>8Dwo$+$tSwgXFJ`cQ zGwBIPaDw)l-hVNo5MYEHSs-GQgf?gXs;wA6oj&E;=#?&3_zZxeA*~n*||ffWm0qgwn<| zv>h5B=1oC)e`WxmPa{eINuSo3FDjIi>bUxAEh)W=PoxqiuD+HeeQDJX`p3^Jqw`s! zPP9%eT=mcN(wU4?(Mhe~_x*<0x&a{o2=WHy!Fm1zxsmyH%cQgihgmD2O+c~c@5>RMv06TKivL;8XWtk+%ZeapmZc8lYu$Az8$ zsh;Af(7R(TWS;`gekO0Y^#_3pq!TP(%^MJL3FS2vjKbWgdfU1_96z;?w&?YK_$uwC zdn!Jh=xPfpWlpGp>LRK5xSDzIztCL$b0VZ0%!6)J^EQU z!eZA`_6Y$zKTWoCfXnx%^RMd|)NL34K4_Us71?I&S(JkBLNl>gzs%<+%sx{RO(ok4lCC$7GF}}q(9pgb;y$n*35tyc5&YoUm&SDp{fNfpf%rbtso4F4^W~V8f zebd!?!CJu6^52M(Tm5v){~{0Z(C5ROm@xc3q-Wbc|vJukmtr2PC&L0-iuRn`-OS9Qz0b=z0lzb1^q9)%{fWN?0x z%-%uL07^$pDkTfSE9vwHsX0Ct^ehh0ZJCscu_?6okyWXKwcPRIQ`@?-O@ehc`{0DX za&^b))rUQg{Mx?lKXZW!e;~ge;^ukMm(x~0Mp1OqT(HR7M( zdDzdkF-AN2OTwQz9}gmzmC@CP3B!>Aap(7oo_dY`S`F&qy>FWKo7LXL+i5Cgd0FOJ zA|yJ&&9kX5FPquNtd32lqI|&)`XGvGYT8&e{tla#PU0S;j}M0czsATHHhR-J3rCEX3p3aQ~~0+A=y;bh*>NL2L3hBoCw{353LGi|rHR zFHOBJXbu`h^bD2_u$p&JCOySOol{bngVvcPIgImr4mN!r_EY-U(#KrzC~CC_WKJmM z@62O^3ycS_m|MW#N(@D9vc^VQi1Zi{@HAeH7ehlK%Vx`6e~&UDb}|!kspPuke(ktV zV&wv0PEXPx9uxZlqgu@aJAvyH89K_p?7N~XdT9N|t}04Z=%w|yN;*07MS?7beW}DG zWg8GfJ!DrF6{m0+nAd&j9$*%~Bk}TQ>uYLyire46F-kW3oc+Dkt)F|r?>y6P!jD%H z;Z(V;lx&AFn>y!~p2XeXAh38Q zPqv$YMqz0o5am2;)sIb3V#ipFkr$ay9bB-`D|W)kFH_dR$U8%~I9>JV0lGSc|0#9J z@E&Z4;}Wf;otH_H-GqEnkE#Bx9T0)j&G^Nc5u<6z)l$(Ejp(`x)l_$i%`K7rz0wAb zXN-9uhrz}1NF7hWmx7(uQ{M;x>`+RXlv$`W&QAaLLL17D_3 zR-CL5s_hY}pSz{7#6gXiKA^gdGspJ?w_SP0i%OPW4COid_mp-6Zwlm+aagI2-Aoj{ z)>dTam$@0h;4i@3$I|6k$U$~GYoomI;@GNczpl=XJeBdYDAeD5k9O){N;k{BYWoH% z_$^U$N=IwG7u!LCE^=U}`TbBqI{lzu%d0Jaj6ppwvmisF|CB60{v5_) z)=vgSbq_Hg>>k;O5lt`#nVvnS9s4EkB zK@6DCqTsgKZMojU4$Gwj!uxfi4G$FH6(S=qM(JG|ofT#6rwCJXKf5Ht-Rp#Zx#3n$ z{*RUIzv_%8VEy!IqPthkx1~^DcTVpE%>8A*Cazp+zqJEBJ)i8t^{PA#cx#`OQh1@( zi?z1Sz0@~MA07@ph@G&{)ip}YUb|&~$J^XsUp4(o$mTVbi4UNA)1=K0VhTigzOmgo zjhjH!gr~FdHFyAEPL zxS7y^*bgm!fgoT)#6=00XmH2CVykO2>M=M^_({+K_$5e)l@re)=NoFTJHk`?2YzpK z_-jC|;r+2N$=u2O1*nXN@~TTuaQ+N=dAI~r-5(jEYcl?70X-$ zNS~I}7VKy;j4~hxp3O{$t|9VKXxOU=5GWW2)Pu-&?m&RIS=v z%y$_Vf@KfgK~{G^S9Id3K%XF9rSw0mxi%PWV^#E4w?l1d5bUL43>#y;s4ZhyL5Wl1@Vf*YCwr#l$UW>$XWQLyq3-%ho`($FuSZE+sDxA zPZ^mG5TuGYu7CNBq~vl`USwOg6RZ``!M^6D_PiE6ux}BUEfxxe5 zbZmUQ;@26n4)mK|YVn{5MsJl~O0_w)AnyI?sThRs=HJGjXD96IW(By3h^+L;kY9kL zIDS`qg=n*-=JWGpJFzBW);wOvVcm2b70C2_wkXyp*$%`j>HEY;()kvF$?*%vDJ+S- z4D-XbeYk3yNDYkM1k|(){MKez4$@okGY2l7kUCcMPT=em*gr(jpWIgp+E6fOqqZD4 zY0ESJCgAKIN!^R0MRgrg_oEW!6UBE}_En`KP7f|_0 zt~7IB2xJcC*yrRku@fpXs2V<~Y$+0YZ`X)+SZJ!_q%d`{+1-(8&S3aM1W_EQ^$X_y zF3v22T2sW*hn!LTqqoON9#SQ#?s^}W_W;vv#$^sHTJG;10fEsSnEjT&oj~wS6D#B2 z_6Bf6`TzXDKRy6{N_+LM$AMRZ*Z_fANjf^uj@%^c3&f2GK&HNlGiq>Uz>_rfPtS$m3v-_v7z>ihoy>Pqb+_FD zOjjl!MtZmV9-e3S9}wsT25bL5!He~71q|drvjAWT$Bb&g$Kk%(I7{!nzy-yh^+|07 zOUuj4`Szp15;8KaGt<;nTFJxNrR}=(t@o7k+eKb)Mw4%4$WPRzSo~v(>AIKGa})95 z+tN$SWawwwqxsT@1GI5S=ZFPKo2P*e+I1s~DM=&$TWv7xd1hv&D}C$!=J&Ipm;-AF zXoa>&VOGs|EM%pnGuB-4mO_JzDrlKzSxzH1$wU`UYyu}w&l@CVWP+Yqr2|cbWS(%q zJx7KD&YHUpatT(LU3#3)9q%$IW}Su}zPvii!v5^j)OGtxde;g>wrASLlGr^Na`7J=M$pTW&dV|w*3()tt%Q7Q(Jiqz5 z|6Fgk=hqfgZJEs3dF(_&z4 z84aDkf@$kR@yS?&a?4GFq;_j!#g!)Ul)T6~=*Va3ehu07GOfR)n5CmUYi`eOhW|G% zq*aw`S~PGy_?_ zpg9bI!GG9WWeqzH2<)Ii!Ob-_8bC#I7}yJ7|I-U$!1`50$nKt(E(Zt^gKzF~!QYeB z1G+IQE-sG6r(SPuYIyj`bmw|-aRn{S|HBcoO991=`x3l9yB2^4UWBv+7}-o@+*0S% z-X(jYc9H#CB)#UI{}&JXr$r^yza(u;SIXHEHlw%xWXOk=@uP0z0%XWL+~tF=zFD#H zHJ3=7{j7B8tXoO(7Rnoi!tVz?@m)lx z!jgMkSe!WTYnx5D+Zv20tA_x*Z7psta`R8#0QI_y#0O~=lLoQGN|Rg*&bqKVzT+^S zvwud0YShJz+0<-i?tdg7PX-+ZrPF+{k1SoJXs8>?+Wx2B#}qI7t3ls&PEETWcT9o3 zOq0rHCB*I$`3zF;{_WI5Dlg4B%D-kYSQJhn;Tbqv$@^XpI?oIDtU-e?E2DK6Q9{`N-f|`<`8Z5glk4nj$7aw6-QzC&vkoP-Z>1&I?jHCI=4Ty;LCr;Dgz`PXT{TfyenRc66GVc}zxQ!oF$qB_g( zbB;N-D|%nmX;#mrd+6g?uHU-#-TyK0SX0!Wdbn9(;>7yu)agEZmR7CdlidP&&dEvt zY$5hT{-CsSXa59UiMR2)lWF?Urx#$ME=eiMqTrwDkLV`Syv%`uP93xt783 zJR$W}^{+MFt*^KKB16bxP~9fU_!~lUX8kLy0_4IUH#}fC z`#Ax--q?elbHP1ZY|n-$?-6AIEl8~D>$1hpDQXD%r|3!q!O}N9WBytj__Q$G)7Y@H zrthn#@CgMQJwv33nZX_rhG~h$)%iHA;`kpVGIaHvTLPc>sC(SJFebnSM+0GnunH{g zy-NmRYy{--qGosBCn!8><$a7)=Ysje(k(V#ByRu#TYJzTr}mkHXnF1Tvz0Ggk91B6Qid&L#Y3K$7~|cevMyb@w=6zkI7W?7}d^ zy)H&YofN~pYZnpm%}&WbZDAjbm6Ym~1q>ItOu-)hm-uWekm-4_5sZ#ltYR(az4!0TK)p@1#%Q4YS7 z15nxkQNh!l1$%0{L|W?hqz7ddMY$G#cN>z>{w5Fn*iC8qJJwKr+m9^0t}eC38+n^m zI_k_ej8HikHE*y9nrZxRtdxWT{sb!djmT2R^Bd3#x*Kk-_Au`g_3#{r2?UJu{#|e> zU;a&=kj)A@Vd#@jRk)>I_BSK)@xVyS`n5-@Ba7e`vv{v52Qyh2jy&$yj1oLR8E>!3 zW@_4BbjFH(+R3#r)Ym=Y2Yalt5H}wZ__*{Bxc&?XB~@XEd`c7YXIkV8;Chuld}o!! z9E6P$X&3!Mjk}1bq@h`h?NwB=?(wWovuauD*}&#G;8JDFe0zg$B5ohGr`$Q~u)~~$ zr7Y1DE1X9i{!OVsf()(1*+kRZgao@35Gn28j{?~Hip}}2J$hb{Xf$$MoJTqLQ{yW- zNLFoQzkAIm=m3zj7dUywTh$;0Ijm|10b?k>5aZ92f>u!V@fob69sZ41Hez4g?%O}o z`6R42k=L;x3hd`%j_$e!eE-@-f#!{HZ0D^J7n8$vC;vhRvw#hWb^`pojgGrQBtK=f|QK zSj6nnG^+l#?V5|6F-s2R?dz!W`OR6CKO#jdN>9@@?Hva1K9x@Amf)=|ELpZq)>WG%g1Gc%_pJa| zEQyR7J|OJGmzLNBA*K2DS_7>O-PZ=IPigXjO|&qvizwL(yJWjy0r+kOkNH?5MUzJ8 z;4Unn!Ccq1(P@7nyGtTZ@2umegO)N%n+g(F4O}Or4wzgg@VW=^T`wUM&)KQZ-k)0* z$9zXCm(RW%Jv}-e!I_i;4RJqE0XPzwkaiP4t(o1Rd22UlA7_Gxu#wg8Ju6;m*Y0+(<-(_%^vt!X<)5pJo zJ)xRgziwL0{!Zb7|1!ic>QlY4GUXHp5u^_#R7rVlwW)5e9@9SV@K*1tb$yBb4IdHK z>HD;15k{elQ7byH7sEt?Ba^Ro+X(LCFi(_&k|~Q&S$4DN>9$^tfIs)ZY;~(uRgKpA zWR6hkiKh}6&v=Opp@hg--k5VNJnsa{hR5xZOiIk(V4%_w}ll-pWCc|dHxGkk}Tyk?h?)3x`IeXH>dsLj(#*M%tb#0*BcFF`_Bn&Pr{fG+AmNF63@E(b<1 zJKDdLTX@TnTh_rpZX!4fBsBG_QZ^CUyPmxsVra%x@^J<*YodqIlliXo(4-{YtGEo( zhVRc5+dcnlF)IE<8mfu?oK~_JRm6t5!9!rp!kvd)4e>N-ca$HgqBRXL91`$#BfrJT z@&pIQ&QUkkPWPbZN6~Y@CZFLiv%W96A>HHuj)nd;3xXhSjI-8R*;4lVw0eb^X1&66 z|1U-8RmkYrs+(u8QiR)XPhZb3){ZFR@s6N<#%3t2A=K5c>CS z(Z-F~{CkmB3%6*YUfyoa7Q;q84tVC*9SFTe+8TOyh(j|jS!%S9sQkKIb-MW6+psr6 zZB;)e!MRM@1zeW9U|KkHq!KFoyLSxjL*3SP;UQ4|(<0_uw(O?bmlS@)iI`pf0yFkm z=Z<#~zV=Y^Qi#Z&D5Dw0QmTk?8Dj)V)oc4Bg+Gn!3?J(7hNQ3LJyR8z$gj)JcYU$= z%ft35pczWL((>@gokjVJxu;#5xQ$BXi%p$SBQomGelZ7_ut`Ir&9XWNx0Swt1kaRE zw``?>`1fVWS2G#?)VLi!5kxi=@w242_cQ7_1@MJtDglyv>bJR#HuXWmrgQ(wX%UC> zD1Fjo{;K@fzvKBUOJ2>Cm7Q%5hIm>4T^`||Tgu&g zi-xw-%c+B4#KNPDB!iwAfe_9?eel^w^5dtmg$JYB8zVg{oi}e<>%U;a6M$@}9p(t%r%*FHq}84?gc4G=u#F{-jhS z;tPH1;I!SWEO{AdPZ;5v-sc1L5(J|ccIZsTshvD_M&vwj@cA78j=VBlX8ujvU*H~pU}GmX&QxB=#}0P`J}GaHDZg+=FJRx~nl zZ^v-sZcky@p!0pAM;DvrSMu-<5*hHt2y25p0t*s9fCvh)6kEA0iWk&Wvb+->rICdK za2JZdn!Hg;c^^Wo3KkNkiP{SfjPA=BAHb_h3)z)jvJ^BXMZXbDY-lDMWhgTk5%^0Z zdgpB%g`G@pAT55?X0b1s8cdfCW5?$pavWSj{UV$c5w8Hk`zKYmJI3b_=Pr(IL8U1}va z8D{y^?NK6wJ8=Dd74b=Ey>s(EC?!QmAAveZ`<5@a^$@Di<+i+!$oQL5Vs>z3NIH-C z{@;vi!wpePoD+?sBX%c>19rSdYixu0pQx=qwKJxR@1D#rx%?ehhVJ>N6GDo$-G|10?H4pMFHs^I70jT+zX}5*AE2=7Yv`aZ?&w`Un<&l_>n!p_C*SgY+ zAqL{c6~z{`3fiOqx(Uz*t zAfXbbBjaTxlI0aDy3cFxSqaTxeM036S2eD$7xS3liT5G*UEBJ?-QJmv6oloi(sdA913k!yn`~p_@R<8$908i3 zNir(}V=0=zBMre?TxO`&uNVL>ivHmQkc@9=T=34V-O=a4++a|kt?SpcCl@18rjekG z*JsLNGj%kmeRi+UfWg|&4!5x3J|j9U;mjM^ey_e{NbaI1mCp%Z2;!nD&^f40`l6rF ztV}A@mC$NjcZ$Cd=_-i)_AbOT9>J9oo&Q~+RNs{d#{z}$MLAIG-BWq~UTeMHSJa(; z(M`<#2;ePHSd%P42;a&JapP7)Q~g-mUF+#rY;RcgXg-=alcnS55i#NB7@y1%JgqKl zW;qVKqx?+(Sd!<6Qdd@siL)myz{pK-<{gqzRt>-wH&_7tDEb@m9=L5)KGpk_tf5lr zr5Rn!i=qFa_F*v&tQkQ12>o(S`_j;Z{>nX6b3ga%tI9xa2t4_R(BX zP)=iUP4)Y z)iB9nfMn}c6ZcPNXp$Mgn-1p7Lqh$x_z#GbO_Cp?wD~_trsAG(`=+FBAJh8$M&{s6 z_W`jo$30wOP}8gmI?&)wf>MKN$`ojPjnP&n?xx8VqA1$X~SCmTIe(UJROh zg!*$+Z3V=RwHb}BQk_Ll0`BA^KhCT3tC_2yIM|1;uQ);ky%mX65-0Lxb(k~uWj^cj zxwGq#K9c=GUB?v7zjli?CTd%#pStvV-yV^yz6|pw9&arO_21~K!fpLVm)37&4aVyx zeTH#Lr!)bcVA67^!zgKjD*m#ZI!IUexpF=+2S-eJEZ(sFLNmRnz4nuR_1+pct=YJ| zoUs>gc+HHX+Ux;Q92Gmrs;wTv>%iq8^G%uejzFf;QV6w*%B9@E4)M-`NO@$P{O8#f z_^Nnhi03dx3q(%70%w~(qa)I)t`{UAH zoG^79wy9TUAlwiSo}z1b-jt*@bG*kIBe#~n+amz1-AkY?fE}bRUzwQ#P};Q@iln_jLHit;N`d@mTZi*W;_T9$t}hh zxzfO@L9k>IK!cQk@mN@6>>gvJe)yspkur@8eLVlQJ{9r^*lkXhqN?}$AZm}N7nwda z9bEubow-Ov3Ud_vW3k$Df$#bD_yX(}tC>%4I)avv1XB786e$g5grCd1^+RR(ThS*! z4y|1Xb3NVkIQ1L%9SuSU!!+=Q2t#|ABlw8=dd3A9lh1vh;y|&j{IlHR{Mn(|YYXBp z3469tqa>1m{#i{nEe{;M3Mmy$b@NnZ1y!&`x32O%{=RPJaK5Kui#Q%gCGQBy9L?`S z8$UzXmx8~TXOx~dUl7F(va6RN zD0dLz_LwkP|?ZCa*s!rLij_tJFL7^I`3utr!ajF3Kg?B%vJ ze5%;)s}Dz%u&TVVGLPK1&fsoaEtPA&(F&!DI$lD@b`l@X&SZc^YFr-DyBDFtm?W@D zgKrX401h(;ydIp!yGwdpG3V7V!qW5G%INVAUpWtAd-K9|#u(@kE99_9J}htfgeaot z4$Tc&u1^xIdW%nH!P9%>#4$!Aj!m6OLs`3gv}Q#_kDjP$Q3apVT5WNH3}G|n$}0oB z4H_ANWtst8Nen6DkxBQ9-7X^5zVfcbKBge8wDEbZ#ki((?@OChh?|B=%~bw_WN z-`xL>eXCxWyzlLOd3vHr7fNJ~#fCj!HIA;AZeI>X$S z0M86NEjtI@jDQ|3 z;QSO6__F3(2^WKp+gU!xbUo`L9AMic(qr4q_zOH{LSMYMT$BYRm?cYOs6s!c*L;%K z`+PYB%HSz(%=yXKi`*Ts7_GRtA?-5RoqLMyOsFLpHLHX@1qc`nMmdHfEzWAe69wRj zx9*tni|U23i$g#+%x?N7N<3GROUt!5{4pFf_e=@JihI(~QRhcoaO?$TbS%0&i>~PM zRR|vtl@`QlQ^ia8Aj%`Hg;Sb*6)wX|NAg>t`6XwDiAdiH3}uh%2%^F@_^b zN3wuqz5rfdV;&J?HPQAqYKg|5JRWdL2*4p83;j({(O2@;3=_Rn(#tijL!#LjHDs@_ z^{9{1OGRpzB34P1Z+PFl^hnS01y-TCF;yPvqA{ADs`F!_t@%cRfHT79)u4YB^?Gs8 zoU<07QPIa?AmUd2)tU4w9s1-(=##|71d!ENhU);kI$>S7V;`>{W*xPMpLNT3CAwkh z9BB)~C39e_7RVdmIhd(a52a6o2*Up7$om0q5+9hlT?XwCZ)SfLJbtzqe*H{A?`;~0 zf8W}J=89EOmA}4%h(cQfqI*<(m5^NWSqTY`Nl@&!+ldUbOT z%EkK!%;Dgcq5zJ1DNTF_^B_mSuP0iy*<+`-5(d2p$faP@K97tEl~CoWe8;J}$CL;* zBgI`JEMPbj6;PF9UeAaCe-1hhPjN;1w{mF=ZOdB+$_%~EypHYz^v8oS}`B{$3 zO0o8Rc#fLBqk-=mGem`mMsLyeK(q-HYQ zH$7IJf`o|R2G7S+z%5LB3I|00bT;|}xKSiX$^~@1cdFKZvf1Cx{ERXB`lb4SlPHjf z&{>NSJxq8@Ao*ixsA1eLH@`Sbo^%beK=HNf-LNb@^W4DV_~tudL314E!KJzzG#l); z&tv{xFoVR6XnvWKuCrh<98LD?LtF8;ZI><&&DCNel}#x!NXTBaD6pqeG2aIn{TuAJ z&8U@`x;HC85*NV6IlYv7|5Y49;m_dbTc?$6$H`!g3V>};HbD#OgiOAHDX{<8Y|mdI zpa{z7is(S#N6Gwd`j1%vnr1GAK~R|ZjT|=yYM;t_GsA0rCIH4<9^}}##p-htu$14b zX&<%}-Ks^4D3@%gT+N&IuyAD1BLzZK)f0JF@G;H|kjes`H+e+vIoq@}StWh?1%y4+ z_j;&<_h}LJ=JQ!y@hF7U zGIzy|JmQv&|-qIcp(ikH^W4?8ioG;rl`RH2Oj11+Vv{!+!3Yc1e9t5 zv&o~E%|IWTL;zl^5tbWJ*8@&upNC^}vQ5&6KmOQnVdsmqiiV#thcx&i!}q+>$#QRC6m>Nuhdj3YhVvttLY7fHDW2ChP+x(ox%`e2+zOwX zl<3k)Mz2BVJ6BVxVd}?W2oa%NJ69Yon+x2B13LaPH$ycuWj)fyvL7qv2!A}lL zB>)HxUZPIPWV+P$`*j|P66o;hB4dbt=SA*aP6;cB@_IzGO4gd6WS-Q$ zR-yE1gtH|8v@>#<7^(TqqoBDB%usjfp&myv`>XqpLxZeF{Bv;tw)Dx+JFj<}hepV` z-z(^iQo|lRwB1qIvF-$v*)_LVr6WUjn|l#iOBSxlSMoN=qp$a0`ib{Ck0ByzNM$uV zK1eF@Ti9~MGLGDAxFuym9BEdV``vnU+&W}EYQlVa$TEDU)o=709(lZs%G>GUI?p8C zV+r6cVEpif5NC#_eH1)^U;im*fT#^6WRmUgTvQRjv+d*=rz%F3NIH8i7)y~YUyE$| zs)t}PQacXkjKIci`j1UT5vTQtfhd@K42X0fgE>Xk##{|~cQVl`27(vvF(5F35185D zf9o_f_=^%rLuOX0a1Gw%?W5bYS3|r%JitxSX}9+e%)N-622;U%rB+^akd}pzM62u}`7Db|$3YKg?a|p5m;*VT=@12Z z2t@ioLv1++esJ7LJsZVb6i~@jaik(SLF>9?+Ma{wBm=-xa)B}Xg3QUomUylAy5Sr2 z9X{O=hXa;o>HH{9u$fd{wF!Zst*8-$GO#M(1R5?~F767ws?G$y4fP5P{CLOC3%6Z> zA65UW$_;z2s}`qWp89_q{V8*0GCTO6Cw{(>+!aAx*r_dJyleP8L%=b?92c1V3d&#H zj62w`!_E6HA)d#^#c8EC{{iD#RwIffQkaYU|C*qAla^uzhRMXP|D+2C*V6p^&c(vv z;i11ux+1~vxiJ0u z|M(Jjy?n;qu=mH;}_xf)5h7>CnJ4~V`v zzBOsc=rxlAd60-6>0|26BQPQ#XSvoo&1atu1m-e*D!|!BK8zBK>nup;Zf2wiO+@TSq$o2>`Ag+mj!MrEs6|`tJo(1yaVO2|LZ*2q+Zi2RvNsc;XjHN zp5;h6C+=|z=&Ct{#XqI3wgZLmtx3hiKihEa{oO|2AfV4+15y=`GLFG961+8`U>b*p zZQ1BQCvghkFD|xcPwkHPEY2j(e$Srk9e;fuw39b`wujmm>ziAe0@`o>V?;2B{~tp} zN_nIzL_)kLqpADy z%-{W6duOQ$4E`V4H`hrxaAQAQr&g|}j!Xn!4LGKYfWu8zp^}FUBxfv2wu1LjtnPiI zoP*v@bR26N@Qn^wXP z+1<6F224QXR^^D;)S)h^6N|;=fI>p>CpPi<``NRrzr&1NIhm%{Tqit~`C~U-Cv;Qo zPu-u?qYGKPovOzyr^Je#V6gE)K@Wq`iHV39cgaZbPO;{BWNBoeO~cDw?*P=;;1%eL zB9zw%i>JJ2mnW3tK;DpUio6P?2zi(j=sM}AP96I=8x#6xt7e)qoB|#-vRYLQ?&lz^ zM)Kah2DELZkj7{iZ;sb*`(c;U)4ut*j`Z(+k{5-ZhizX5>GjepE$kc&epHZ=lJxvT z2C>CLzb(J?BdmoGUgSYyY_{4TbNo)#+eTBvv{xrSIR9!e&q|lIDL`>U=wIXKZuO1V1U$!N8Nl!a$qvKi927 zyvbsF=$&+E2_3S@)U|Y*?TkP^5rcOps6gqKw)sxqTY?#0gyBQc;?7xgrhPA+w5{=Pfw z(%0xoA$59WQC?lG)jbNUm^OlmwN0e zoWT8>{tF+L_l&549s)TJ^WvP{8aYkk=|K}rz5w@2IB`JLset78F%K~@aX9tljT|rI z`xXW@=Kt+BH|!Dg1&#t-#FZsjDJLFxsvg;_+at$O%2!dPu8>52D*@>((ghaU0I#45 z89LRMOeyJgrs%tS6lWqQfMXRfxlX#nFu$s6h3#8`*AT+2wSP!bu&{V#1KcP4TkHdN z6s#fjPVBUu5JKm)a9G{YW>H4hs%dNkH$+g)DrTrCP+-faG)I6NdR)Epb6#cc%T!() zk#*2Oy(7PcfvO@FIY6X0V0=*80ZF&w$YPC9MVwW+b`1<3qpU8+R<=>4rd>j)BDz$V zKW)I?>qq_e(a(9Mt6Ap*^|7#<=RBPMoxp}b>WL)dHrG+B6noTeh~W{f3QR_ZHLrE# zXtKdEiAbH|1P;o`!)$_qqQribePQwl{21KJ&cZ78eoji3y9p7Te-(wQx(S5xF379Z zOrMd>mJTEXpQt%udqHyu1!E()&7zpuw5e;nCT;2n9905)jk!jTb-E4}I!gXz4Ws{- zK8u|^I+w?m=WOh4*e6)g?LT0YtUkPX9M7bHuY>{|h(csln0&xrP+8fxk{NL2+O=zc z?XJ05#_5U}o|VB51eJQ1*FQklOD++ps0hRof|Ai0Eeb+I2UvcPrqKBWm)>k>sdhRBcM&GM)*{zBnak&~8hBrWh63Afz>T z!-E$3ky3KP@2-!JPg_(z1OzYTFa5P@%Nc<7SC*Y=`A$QPVa<7dt3tM!T+}|>Ybl;KdCSPXAqD?DW@(paYBp7l3yFiht*R9@9#wu)L@tp1+01Xo z%{nicJbq;NGc)QIogRZ@@tCE4*D*)JI~b>zqoeAopPW3Hr3D73F=$(v_$g|*AVV)AGDFa2_nU`)Jh&3^| zUh9=_SK}q28#XWcOE-I30{<&em`C@a~}hO})<|B;iCO|DHj?3@VN z4NFOvN#LH1(PI_&->s>FWl6ZDV5{NxZ$6{krI>Qbjkt1tJ)0PM|7@>yDl%_agC`kA z?X8eE;eU(NVNvs)+>^-{plv9U$^ItmweSJRH|}tn{zsk2+l9`jQAL3k#hWr-zO>=R zB;vk;Fl~5$=DcsfrI&BjX=P1+cVbb-B!L+S&cG`4ZG;e*;Liu~LHSlQDmtAv(5!D= zQx?dbCMA2%3qZ7rLn`dy4(NhblE_!}(5!;RA4WBM85zI3Q!1C&hQGDKN^XfcXTCqw zS$L*%Da7s}{<4Qq#Y2k2UYh>_-lAJFc&yp)>Z~U`s2{G=da?zB$_5OL2^1LyF=5qU z4L`m*XO8iSSxc0--^FI9AMcj3e@H1&@Tq_Uk*Eus=DPvOEdZM6-r%>6`(@4P9qPfD zaw>5;D50M^t5A(nc{ruM{8I2#pGO4s&p(~k#ky#$`x~@RHLmBTx^gunN?On4AoLKb%*x-EkJO+=uIg+e8FIyLU)ULFN#xB^pKC37 zD(tmnMkv6t@aE*?fKs+(j;LqA~Sxw-vSfRtvA-shr(2{$f*$p>n{11@gx8L5r;u zCfEvh`+gy(<_lYP92a~K#^f_+2Ddi(U3zjhp(rNpZdDa0<8&QtHgYaW&#ZMZ*?-P2U(Bd0$dT;VrzvK z-wQV|Y7}J3C|2UV3M@#cwg2+|e0hMzH<8ZGQc8)y4+nE?5k+XnOP`aZr(e8NE=>Bb zBn8S+vh-mv5j2WkHM5|Lo5Z>PlqB$-xdgNUfZN2}dJ8T{JVIw;4R`y!9xGU7GG+_I z9{{0oLd|Z66FcG<<=*%^H970bX(8@j7wF{Z%RDhG1o9i3|G87Gv{f-7ME2ic<*e&X z_+hbI?M75kd&|O$FU~G0T&jaa7C0IEowds=0nuSiV%wul4=o>>?Fci?r4xxC8WP^^ z`ko@{veXQZXCH;vQ&-u-^t z%A$J!TC=uCHD3NLZ3v)*i{M~Qn+o+({Zjv{f+mWvBxU(8acm0`n5>Zh>) z?mSlmh@+pOl@u*>5Zg;i9cC7hk#eR(HgD7L#-pjwyM z+(1zjO=Gw1NoCO#uH&)bb1ODFUXWY!w>AI}NoIwseW`yFD5rXH+UHh9j3V|bAz3=% zlB-E>u#00NgD0BDKB@8S7m?9=&#jAnZ09SNz~;=p0bt3Rpv1d59}l_6uUy_d)bi6j z3)bfI2;zuTqK;nD6dxCJsA-O?Kx#(G$+cye8i%F$Jt%Y(hkngSNe{?LdKcd@TmN_H zHR=7(fh~*&K{!}1oWo8AF;Hh~?SF!r-65(`bKWS)8UrGEe+Y&hJPyWb%Tr}_Mq z-y)p)xfc=LKY0+F0-)AiFRfqjAgoQ#HwUIGAm51CT|^#vGR?hVmVbm(>U{mZn>x~4 zVCG%=i(sx!V%RsX`dZaV1#`Wd*xD%YW9%ali9fod0iY6<=wAKv{SOU>uCvm=Y2J4l zIk}7zSilM{H;V7dHuYyYzbG#E8eXI+yZWcaW~2-y)iHj6P=Y80zRE>kngr$E-d>3+6SKNg0cht+&47ZL4Ke=_MH zgs9FHfAYX$(uXapWyh-gh#C^Y3UUR4=r3+%@kYtCR@a+Lags3X)m+*G6y#2~Z#bwiv*QSh{T30aWs z_ehH95bI`U{MNEmu zrxxGQt(e=5ElPj77##}07H`et-MNiwM{rWn;!H_4_DXxWDHSQ=oYLgJqt46xkrC`LLQe45om|%r1bMOo@U@`) zL@8HK5h}*ez^9O>4aIy4j0*>*SF=B@j{9b7vekm`oL0fOwM)=F48#v4Ricm19j<-N z*jGXB{?T|e^==WgE_Fw{xOJED)o6{6X}mHB9@*ae18pPWG()yOk|{ZSum?|f2f3b~ z5A#wMagRMhLI)atI$ar9)RZ|X1B}qxOoTviCble_8j{4!y9PLjHoWxdE>&ABaf0xW z0yrO6^yw6(Z~UR9tQlrGVa5GM=@~lf^^C>TME{WBtvddrZ#je?Ozcb82d8&HEk{GW z*8->g>+qk!x&nLh+e?CFxAebPz*+6&4f<(A>ckCu-)Jd>;8v$P;hE}KZStQ{#5k42 z=tv;N$RLrbZ{r#8OkNwSq+TiSM)u>jtHq-t38N6;7);{t6+ydSzkaQ8&8*sRTbIPL zI%Hh1chUN0qlP*^Y@Zd!Ydxr8Xz*y-D+XU|(S0sgZT(A-7-E39-_n1NHNX8AX%jR7AOfHXY82&Vb3P%E10oLBsuu3t!obgn)Bg= zexWHtqA+(#z@o2Sqbm@Sqy`CaPxd8IR@vNr54@r~-Ze^+U1SjcK_Q}1z8?g!cFh7u zfkyH2$saeaI^_Jy58qs>)cI=Prak%GShXo&Ht=A3g%5&THP#Qm`1wbIjJD;N%C>)ef7P+ zw7eWaJroa!8e1%>lf<}sw+9yAJfTySG*r>xs2 z7N9tq0uxu!`PFq0|F>tP?Q&v|PG*slz@M}cz70b@v4=f`IuTOCe_2_6n^CvAw%!Aw z-t%W8rx3^IfO-tA)Qk$#2Am6~3oe-SxIUC^h$h=_?Ut7vOe10{l{i zoSI)2@v`3?GBh|JD|PoI*jPhN4IDFp9D}DWM8B@Cq_m(?a5UcsX0v$?`L>h5fg|$D zH7J()P4=D0(1NFJ-OpH_lDG&N&nUry;AF(_#yKtUvY!QAwyA@$UUK<+Bcv%RJ zWre-ROD%6fSf7vLm|=Y(J+3ACcNbXmj7Mxsme*{CB#@l?pCPj^JDo6>_j4Ft-nT$a zp~FT~7X1`7Zn+ENG3by7t>eb-eoZgjj8<;Eu0 zzJ{GWC*$8Hysv3wXX<0MMC-A%NH>gZa+dr@* zPZR_Rlv-~aeChX=!c*aAhJg<7OVlVfGU`H{#S7Xt%fja{fMlA|v96o^$2XnxBCqO; zL=^z~n&)T|8!3RHO>3XXVSR`9N;mIjy<=x9z^g_T?v>Ar(_Oi(HPI`y9r%zGJ#enG zg3ry|Z$_NU_qz&uHd{Z-4gha21SvaR$e@p4#hq!+oZwjG6&aHOeMLaW+QT>5Y-9}} zz}GiCpvyKIdb@)q@6D&{9WN60cG?Go=b~~PzMq|)t&)`WCGEAi?SU_r_99v}aC^zf zjVeptR9n*Vm?D92=fT0xH>`C8`21+RIijxMT{>oI23vXY;vWd1ll$Jl$ntoC4dV3v z?ET4Mc28l|pW@+(=gmU}!Pr}%A^jxE>FP5K(EJN@D|a5~61ZY-p=Tt3t33@`oQ$~`+B`(dBrY2D$qzz>=eAPh`9fNnz_Jk-{;F(u6qOJ6o*2n3sUNHQvJ zsGq!!aoTT*c^l&7%ZX=7a)P^8FTEzWg#i(wYG7x3HoNH)S=gcEa#o!LB`XFk`Fo6DBi*c=G@#JYqPQGpytENxHxpKdnff)w(H$3+Z5hZp5|3R;&A<)jp+T>V&qJ@7ZQEJntI9-4D)QXGU<7 zAe8C7I$H9}1S6^n@RaN#>7X74BA1=V#wwRBH)8Pqnl0+3KFu_j5tJ-@%U?EeBdmrE z$XkBijy6{)+#5a}Pc;yeF&j}7S0E2%vG4DEd4Mu#9Q1goCuZKZtZ0it*;jS^Ao`I+ z*>3mxtm3chlgB?IzX>Nq+|p%UrIVeO%sK=YWFw6xeg`+RYa2PmnO0z2tvSVst{5cz zroR3ArG;G1Ob;k|^}p>04JhKh)b;BKB7en?bTFtH6y}~xn#Co+-f6tT_-BhDo5Ylf zL2eeZiHZ?RziiW4z^pS_rB$yKk?aXQJHB|C1 zx;DAwob^>DgEwl+yQDhF%kTEcreCIZfEGI}Nbr4hxsPb-Ppo&Q;)dWsP>fKCSFWFH zf478)=qcu(+eLi@RYyiu`|1OMjbfdoSTe*Ey=P6ev_A?IdRqawPt&#h^QbGJ6bmK~maKL=cjKL{QPwb!FSb@!Kv zj|}g>*=#8Rpk@w;YEmpz`Y~bT&8(0VVo=I}7fUSrH~Xla0Z>!f$Zo3<%xmIe3_Q4* zHgl~9qQXX3NJKSGC#U6yoj&_nzsUYNXD>(o)mjb08u<4h93vv|G0|WXE#^7I2~~&s z6Y)Q&mr-FGl}`!3EXyE?X-CuvBpup5bo>wruwZ7|6v0Pw2Y)W4&OCJ|=olfqdlxd4 z{O>|x;NDFhr?1Izd#;o8gGKvz!_VJfI+e^nMpwogO2c+b3J@ z-)#RWd5AJAz8DNNW_kcPk1#x#LGQa7a4c@@m&aX9-kp3MzxJcx!OZ6Alo&q5DC8g0 zV*biq= z{GU^}q&fe03K!!4_JYAKpFVve>G1mfk>BFt5HLj{l2V(?pZN^v=LK!RAJM0`XtTxy zRDS*Hg<6qu^sWzxZ9cum^7}l?{K46UlZBa?nT^S7fF>bI>v~W0XqJOp?Vo2a&ro4p z)Hnk2R&aP+{2BdJ?@UXHFmBNk?Ov$y-|@fHPX3VrJ`y-E_LW9 z+3u^pp^nZNtM@IQF7@@@x{h<70=z>S*|f`*wg}3Aoq;Ra5B;4Yl}VQ7Pdxo1qj>`8 zNUH|(V>0!n>Me%4@?FBd`^fou_8I-kS5^z4CcWIKNq03fTlCJZ!k%O$-N2dpvha#7 zt0QjowUaUB*QK6)`5)AlZ@ry=EE~w)#IZy8rvdPl*UyH*Iw1WV+~$UA`1& zg0l#4DH(xi>_88No_!)MJ^lb1iUCgEStj`6(8C4niesPWa(VS;DD~|5Ygw?kt*6&s zKRCW97tG|vI_Z56d$7W$DU|m1_Wt5?_vvF!zvhSZ^z^(d6%`RVBJ6nD5c!D9px$%m zmFZ`L`T(9Er`L4;{R@1W=jJ$es0sT*IsWJM!4r?#tHjQ2Grwu|rikvv7=q7oFdMkP zpO3s~WR^Jwc9|?X(?=PeFzj`p4F#CzCJ{39zf$OrI2M$Rz<$2yP0U*suG#)yK zzX;^Le$3WM_TOv@fjAO?Zp#TfZs`k#BP#O(ZlkXNkDXj0g}vd=C}l6B4C8vS)207{ zz7WL6I?C9Bdnq^ZdI?F?VFmxS!3}~OU8Rxub;7R*`s3E{96bQEMm#AhxXS^$$%v>h zG~2b$UWv?e@F$Z>GOJj9g4#C`YY@df2vaD%W&U565m3xru_nlB-~AI|Q4Ts@Ks{ly zb!-5ILcgzTO^5MY^!gqoZ~0x;?QCrMib)>Lvh2i>NGb$e-19%1r;pjY57*$S;vy2& z2jma@0Ml0vKql& zia$?ivw1u)=rrk-DNIS!OV}Xg(+kK?z>L!#?dgG%BxcX7F_{vZkUt##m61X++^qpi zlvvQPZ3@IKKqlaOVJn>GxAV|lYNp4x2ZU4N;H-#UhC5qC^_%@!@;j|k{=(Cz z{XRRJBr~*!W--U&txY)i$ zA7D%#rWl3=Yf;Yq8OywUSo-uks_~m%1R9G0;qndcDPG3EE-v<5yP=ZAf1kimlzth! zL4iwjO7^VaU^mJYn)J_%jEGRg@*P$mYr%rMOI`9EQ4v)dw9n0%_->ufMEzaumHsTx zE%~iBA1QBc|D%qr_AL3Bii=L?aUVyR5Beufb*eM4G<$|e(V%1SI&>`(|8sKeFhGK6~D zR73r8Ib{+g z1fdT=x$`2(!t5+Vn)tcE#adQ61x4iHdT@5Y?&XCd)~b4Z#)?4<{HW|I0%D;XH#e0Z zs8fzCms_##mZ1LTowNPcbYep559-p%x(5nX0^GLI$&}#)a@RWcuwtb=dSco>aE*gs z*eWLOUDdRwlv^@2MI^BcGpG4k4PaW`8V&rgBru=>k|^e)3FJaoX~nkcmbm3WR8q#o zPSc|#Mv7Kw!05#ENb##vI;}xd4{+}8rn~f}HP&Ep zESKSP?SR{H>nrv-{|VA^3epkgxnj*%N5DTK!|Dn87hQWUdEBH-I`JR(>)yZd^uq~- zE0pE=)|9-XFODi9>bg9*mNnwO+rqu2pMxs%S*auzTxV4K*obtwBX!>4dAd>kC2ey< zcCE$wjcd>cuU8cy7D%2fw0_LL1zp^U>%a=ccB3Z%Hv zFU2i>I;V5?XFk1cdfH%kPzx^`q!m6t!lFDk$*H>N>Kc@ZdQw&L-oEmaNzlc|^8aFh z6U!Rut^7yJU$goYpD?s5&?OkLkjKGH#u?n$tF6;9<4rJg+Ilo$Ww_u!;`-o91~EGb zw!(Ye5m7310k>n)#U;;WQh$M1b=GmYAFzlT(+>|jRgT`vse1bHRB3Z#<0j!p^8pYl z=Cf3sU!T*gK1m}2$}8vcUxiSv!M_4Vp#Ce}eSCf&%o;D~&|99O^mjq6gi zm!ah~H6llvOBj8RRi?%E+4+XUN;4s*p*nySqJ3xF5-6TStwhC{UUEe-ZUpi-Ie_Mw zjo(yA$e5DP(`jYnmi2wPsCm#6WMiO(TP5p|ee(ph z5vr0?jZLNRd*|=Wo%<9)Q(1 znV**OMxE3NtGDr+DrK&;YU-(uKfSSPpfX%u9e2l-IDuW^%MvHy7EXSO5@;uHX!tZ+ z!f<2LJp5Nv>nZB0ZPU_b5LoGA&bXGdo>+`zFVcU={`lF)y_Sx#gv6Yx(_{PT9XqUt z6S3*ttv_yxW52+5*lijZT%l~N4QY?jPMig}4|C9wesrf%lcugou9H#7M{bkQzNxSk zyiPH;TYAsvO)tf`)u(Z{U;1fsOfl|0M*9>zqlaid286othDO&kA3ykEh0Cd9$7P--JBr;#jU2KXd3mN-?R=8uA!EX}CeoDcwRc>X+j2H_2 zlDuE|n($j(Dlan1B}er@rd@-=0iw#5Kp;OzklTG&Aj&9XhIN7Z^TP=p74-4VaL?> zz1uqy+;GFm4_6A#(qX}u9e)PzrI$Er_1x=mxG7n$H!uC?2S)$EsB#(P)ZOUQ`nY9w zvD;VSsAA{D6w}5;8So>o3oBB>n|N7wZpsZT(+E3$&Ga*~N`Y&oIkl+K20gGzER+wO zn($h6%9EDbO8PQ-H&7}6xkxhHo33`O3B*)7zY|5L*N@BqAoMzoDH(Qb`pL{kU z&*O9cI%bJ}z|b=;Yza`ST~NOQdO$ScJ4zJDeT?2**n~{P5zG0g%Xt@BNmj`1jfOGBTP%4Wox_LYY( zvOd~9EoA4u@cu^kwVnQz=a4q;LR{dF#z1}f>&_AAySY1-|iM4)* zpk;3DSJcE&;V1(K_33x0@crts6%}u%f@F}flSZ2tCyxVN&9R@{-r1Lci*+568Ke&b zTwe5&IC0I9>C<7ehyXW$-e`A&Tk+s`A#$e$TYGttj|_)J?6^^A&QPb4Jmqx{(SmT9 zMgf;s`(em_DpE_jXGrNDv0Tj+(R{DdnY?4z!!tguAnTd6s@t^5Lz*0sz-6 zU`o@-W;!A2;sknf{`b_Xe?_bzE3k{=bQ8B}5uA{7=EC`$!axmHp-#=hv~}}w*aC~d z!`R7>M$e|wjHRxC)6H|>CyoNenvY!jw?PH61Kw>nt?|!JnvM>%_4J^=o-hWu6u@mL z!Zsk2UeOljUZ^4~(SQNNAUa`(N)&S^;YR8Z86-v1nAV%eJC%$$1IEd1pxSyhne~8>X@^_$4nV*KsHdI zYb}&7^aXl!=@RAYb8jsE3Jxz+lf$Ft9~p>yK7aLnmnqzzm|yw+jz9~qc}Kodk5#vE zRx}$r3la|pJ#$&%gJ5IBt^zv0Rd+7_KMLQNSufQM4py#m{W4b`w(jh6Pj3fl+v#;O zqo|D6Vl-fKlAN-Fh(K%vkp7^8P+dMaOP7BfKk+BE7t!{rWflh5L$7uZtb~Zz7&NPQiaogq-?wu>AwhY;rdKl z6hR;8ErPm7llBp{n23m~XtJ@e7+K--150a^odFeNDaxKV3s6CP*X6rRH>gS*K(W|P ztN=jW6d7{qt6gb7g4Lv{KTQqx2Ug#4UHWFc5VXg8k37VzE1yokbG#H)RB>qVOHObC zZ1bNjDSF=;C6)^LM#|roRgvjk1B#e$;Ofy9Pp+kJ@E)F+$^ldnWvUq?Hy+^nQaU;M zoiQxSW_)$HJ>TYli9`N_$|%=e2mx%#asOBF6Xg}zC%(%cVl<=W+Qto_#|BqTj`=7^ zH4n9UxEH!~o-+YWPv9VL(cNv4Q*AyPdwTwiyLV%A%dE5mYll~>wxAAS@%>4oNp;@8!a~6Mc6e?>;p<(1V-2eW#2F(!EBKym744*8CPFn4a8 zzyUThkz_ZMvTDpzUS_tp!Z9IPFa+AICc#?H?4Ds)K1F0WltjKojngf(D@nM}5!mdv z=g$Zm_i8avVLj83?C{?CkPjGd94qV0WVA9yhCmK)`6XLzv3)OS3cj6Id+2m1}dLG9S`Q^ohZP*ICYvDw*azXgID+6 zVciGBA4#aEFALKq*!E8#m5TTztJ9ikfB$2E3(3*==%~pcq$js%8NYDV1{&H(!s#a8 zrTttr7#4N@@!tQ@0{F{M*ojeubdGo`})j7djY?tCF12C%w_BAqd}?T!It*Hy+339x9&0B z&69e+s_|5Oe0rMF2{b3c77Y;N)$26VhnoGt4oPDbgoxe(sQw@y>JfM>>kFro zOKXDfLvm%vo$RdUou7+hp9eDN!ZBY?>k|c6v3~9I1yq+^#|472*|hhdp8#(8 zbx?aN88=e%>VEnXD7XTJ~G=_DqZ!(qU(eLIK$$54Z&KMpl^}4m6|T&HoH7QUzig+d~=76 z0wQgfaL{`c@HXtS7$X%!ClQV<1=^xnkJB$YnyAzN_@+*6`Zv;m;)=`l`MaS0NXPvq z3jXBPWWbcwmFw>Fn2(=DZuXzPuR6iZ0s74FkEPP= zHoS6lT~0a`C;?&!vkoFKrV)?&zWL+rEFh4=sTCC$G&SIhZ@lYPaN>I=KQed7!lHvq z^BL$k^PFAR_vOLDgT;%27Twh!RIWZze>NF|hNwO= zdqEOizj|@hbXEgYm`~v3`gs#2oj-rW(D3Rv*WfBdbU_efd}CE!=VE?@i@ zz}>fXV%wLxh-|nau$oWoa;L4`K*%&zcu}7gG%#P2j5`olwGwPfy{GL$kM(665$}6H z)I_~)Vb@!|iT$_{!NealIJJZ4n|~hhnn4L+Iy_(%_!;qDzTVI*r4+fRECVh~Nm_V? zg#Kg-Y{6d@f^=u3MgfuZ{RBSfhUzy3}!onX8ww^44A5nTPJx;kh{jIf{ zqq5=V*rxn!_b6hWt=l8k$wmeM^6_Q`Z*xvVHMt@K+9st_OHNp|}IV zTKuom$HjaO0S`-Gz*N#*9xKRwz4J?h^S($}I4uAZs-Oc1l%v8YbOxbS$35>NxliLA3(M{Ra95t!^Nml?xt) z<6%TZUBwsP1fo9NxvRB$@9@XdY)1jz_WJFNAZ*f4L25R;Rc~b;ka?=9iTZRMirJ5P zon9ST_2}@txu_YkzRwp)3L(ahIoQw9KWZk6rW2HsN=L&h!_mgnnWKf^@j}f0NYwG$ z&cszHf*Fep@jO4<;>AiDI-C3a5J)U%@Jq}o-R;QX)-ogK<(iH7LAQ+qQ#cWqFj%Wj zSf^b|M*S~8i;m(*{6HP`aj@U}OQ%?#788nCKkOPc+L1NB;QGht}TRzua&(h{(F z4v&X`)&_hxQvTY)nYdmzNH#bAj#FVwxwCIY4oef<3q{dN^t-_c6ddTjFsXEk*T$Q>~ze>!Z*OGl6Q zX^Id?v%wgl`t;&sXXi7gugA4wmfi%>6mULEC?=82@D{*WI4)Sg80DAnWR5=&KH&4m zUl;sK{>*`Vq7T4KRMGIK?Bp{bYQlZKh&0SkJ(^#V;&ONm-%GL7(>& zl-k>7mW~`u-okWOvkqLXPkqeYIy;T~`U#X6Pk*ibX4?=JW4E2*+rm+W1F7nKSKJ$B zPPxCWjOmzZ4trI+TG!v|!x!OhNMfkE8s4yH49g(;~pdj_7>Rl?ZdNK5C7_|qZ-J7d?{3I@)hdNrCU zl(}`j(lCyf9Z{tkswbMLH@aH#cP>yg-u%Xc>vCG&@`WEG_oNl8n zhy-dxrDFBpmT(3N(jD&081&IjOn_c@hVswg;0Ujc$Lmxf2hbY&UW>Y^PK1Lz@kzWtjDStTA*H5#i0QBUl&J% zr1bQdwh^S3qAxHfpv#n4F8~O@?`1PED#szBt62@D4O6RCsInB^RS!PvzBWbpZWMw1 z`lM))@^A>$L-@fcLU?NwCP*NCUy}s;on zv&WFrFJcNr=A)(cnQlVN)hv0lDwyAVr||9}(2aI|;9AD>C0Uz9c&Q@Bd={3m61)2H z_^-b*G=aU$FHavG*H?84W3{O~podcX;qW+e=&dFD$S5dxtO;ZtfFKB~ZRTg9Gk;@* zGW_$XaNyuDf307!c%Vse;p??kNh-luif_y3jVx-#DIP_ly^#D!m!~8~$siOV#^Zkf z`gDR_rHkKEN1;1g7w1h8)ieHeH8^R%S_%ovkH!<~8J68sC-RoSw4oUIQuEqhXUMi6 z|A{kuQzialRQFgG9uUEvMU*b1uJ;zj7uD5!{l+%LfIc-$MRMvbXi3iDdp^c0%@?12 z0Hi0P8U~P`Q;t#PB?8-I1l^XWH?6V;?P3UKScf-UOBwsX(!0%@A(%n3MPK+(Uvbwv zRhbqcZvxL-@a^dj&|~MH-?0Jrw5GU)lf5OzVdR#Aqsq3(6?a$Gy1;wk&FpIu|JzN@ z^IG#$^o_dR-;`H&bGpjor}+3QRcN_Ni>;r0&xt6#dHS_C8*Gs$c2|Pb5`tQ%ekN1O zojtdJmpXeY@ceDiF=8tTumMt^AC+E5SZ^vR=%GibbVqwvgQLD9>GzjdsX*(#0Td1-F*LEcM*F{Gk!s+FWLO;fdi+@k z>RImVZ&`4LGy;)jbi*%ZSg!?MqlZE6E;YnljT30XYl8&%#m|ZZ&UJS=FT^izE?KhdMoZgA?R7KxJHoK zFXCl2*sGNs=USwQ8dEGqb@ytMItd4_n*uSWhYS1i2xl#RMz}fm`Nz-u=Kd0e*4qF( zQZ_m7Y0YcdUs(Tz-PE&zd!;Ec>6h(&9U!IbBB`s@AtwC$rb@7cuL-X|a5Yj$VcPph z3V(>f03LG!!RhGO;q0s|ydAX0bU(#m&)DcG`p=Ys9C%=EonJ$(etWH@W-kcc3cT_O z0kM$9z1bh1)eB#OHmR52N4=;ptgacH-r;7-!wTBA*f|qxtPYw9d&GvWm0IPzsggR6 zg!1BIvD4v$)LhVJdyRp3qdR3e=D;Vx^pbbdV67J?C;PR)&W}-b=Xv>{LkC=aef8en z54>N09d`N>RDM1)m-c_D-kqgSGmj2<)38GZwMXOm;izjT=S?a5U+Si8E8Q!UaeZDb zv;`CHtPZkZ4++trpT~M|ts@&iRZ#fP+PG*uN;#IH)hc@MH9#Mlj(%hT03UY0unl`q zhem?|dhjuzg!U%*`8Obqm$~OWov6B1n=){)C^ufm%WZVZ?hDif^Zsk8nr#-(a&A0h zJaDd6@#OT2%%YT*RKToOMQGz-Y6u#ItDe5MNNE~4lhiG}IhU#2(r*NI z7V3-KEhx6`RczJrzrwl>26>NiLE`c}ID3rMh8uk9_P0?EVF7KW z8O7$&sUpI81C9xRO-(Ul_MpK_10>7f6Tr!}MJ~-4gg=`&iJ=D6?jOAeJzzdt1FWLJ zK;qI&p%&xI4TK)4Yf0XFEg%5SS7HRQmb%kz&2twi*H!Gmdx$_p`pw^uuHJAJFVeX# zrUL>{+Z#!A)O1?gxv>Y98qVyKQZEe>Ky}bQgdDMN(=tbDMdC=+c}iEcoESVCXl*JwoX}WFy+RiyCihdu z%bm#-U9?;Ko{G&x3(uUv>(8sFqX9i#deQ9ylDvq=;UBF4V6SM9`{_NBlvR~w2-@2p zz5RoigY`?WV_1cLK8g(D~YeOH%)#kk@DGEk9-G@S`z_SZw3$Nht7AaL#}WZnFrg>wPg8KD;e zo86O6kAKPNvXNoU3j+B#aGrIrj|15U3To`3A>eo(I6~hoyLgGGFP(lmV)u=VwnLmN z3pbt;qg83!TGad|sWVtbr~jwD_l|1v`T9kJiqb))cPt5B9&A`rTC2wgy0Xwplhqm~APCv~u>pIIG)Vo0IyeWa7mivN z*8HG)tLNG2V8e-Pr|TcJy+Wvjt!0vbxuaEaeK!*KSmLAHABIBtN6#z`#`=Z+0ynX~ z0O1Mm`ag{yIKF!%C-KUElMa1*Mttx5K@h`aeJ=_ctRaW^EulW1$niA(Ph?1QM!~@! zfLd0i(SeKZv<&;r8|N>#P|ccAlHA*x*x8Tu@;1!sr?3zD#Fo*xO-z?;^v5pUa=F zC`^wj7azr{(GZz!yA562bwAIg!7!ynACO*USUxqqed_{;?0W&R#ojHMa#SXLTsE+X zEfl!u;thbTSt}2lxF&%Hh_%FazRSeDfi$^Euj?>SaoSbg5STOew04!H{;^{5T zyZB$tQRH!tzCpy!fB}o4d0q;`xkqBe_-JLDyS{e z$Ui3tP{&N^gYF5$qY4t|@z=M|%9dO`5De3+&9jG;7$*7$vjFQ+VuwXF59dJ`J2~y>Jd&W_`Z^pN8(VtG{o+d7+xU|Z@L4=Zfc~{FpfK#5 zIqc#Ow)0;e>i%60F@q9B)3KK_9K`4C>W2C#35X8c-W~>BFCJj{EM=3^oRO((`47DL z0?^x>@qY*OhW-~ouiI@CmoaO4(mi8w;;Ru8O0Av>0ACz}hoPyMlMHw`Gy_-sPs{%+ zu=D>mAOCl8>=zF__whW4pL+ClA76x4x~@+&G@6HXWxR=q3nxydZ|cRBH6tT@ zcUQ=DCuy9g7MP!{JGMp>_iwVu=e}?=ogk(*}B z-gZ1D8B6HsEB~zN|D|_<-DZX|4CP7dg=8($WG$(O=0CuhA&rx(Yabn8T-y2L4Ro?& z1T0g1?gwysQqO4v^Wwm6Q$?NL{nSj+W@L1A<`!Q9lfrr+ng15HTaXg1mI0c!pR4c_ zemwb{)4G83nwxT8Q^{H)qYIKu?nzM-%4a^FL6fos)*qS+N8&a=!EJ-h&h}GRuOK%O zpk3ZIf9>4&ThUaJQ64uMB0`#33Fd+B0_X!&V3r!S&I(*)@z%kefY6qZtsP7-nL!(_ z!^2+$VSX#EhxUgKB^H@=6Hvsz1#i zhl_mGp1W1~puIJpI)RoH+X94&nZEaadH<m_R~68b0cx$Eae}ecXa1jWX}X zVViS$S$7&aggmc%RPD`4POxi!vd@(7F+R9Y1N4Sc)}2Aty)w{9pu3f9>`hs<6D8)pN z=%pB#LSkb2W_LO}6VD@c3=K&mDipK~8*k8BTN`_yDrq$$8EGTljqhgoZ_4A%=5;kM zzRO(s!7?_GljY!b@@w^+@eEUx-C{$$g?c8T^^*rroXTNug`$b<9 zn2#I;G>jzQ`N?I@&(AyT{xTJj5F_g7=uq>CXzqv%HcQqNZf%c^D0yRcTd!9A@Ws}> zz|H=-gSocfJ!~;3qP2tL*_9zxkw4DlQj83*gBj#~cmv5uT4zVA3~QZ_dfe|humx^@ z9k#)ID=pz)tZFCHFgB>JEfrl31 zGVI~6&A9{9*nl01)~IFqLZ{FhJ>L$!%WVc(RLip`JCMYzbNtsB{A*3NJ zftx}$2Gc~V@uO@JArFI&Oq1ClkR@IzajEdWNZs3g(c&zDr(`V#c*Y&8_g@cKRT{RJ zx+qkQYI81!`f9hi1UA1uF61~lYqw^c8r>k79(A2huP1BCw<|8w+|It#1N|^-k+N$@ z3B_UX79+sSoX3vSx?IOnY-{U{h`SqEk*xu#a54Ix&Ix?ns$Px1`4&lf4Z{7m84t3U`51 zf)}8ydo&9e;o1U>B+`t*0dCivNWX_Q%orbT3))XtQ-C)6@>%O|${vc^eO8qxfH*vq z3!5fobEcs+Fm)fasyvXxD>liY3hP?15}YJ0^H)W%*=4xv@4FD?%gSiF$T56pRQ7zN zIsRoONr?WV)KD8qZt}a3$>HZ-@3)-{_&gl9Mc2-cSWimNj|VSBt72(w=yNWJ^gP#8 zr9SvPY||J{YMG)|aKkI@pk=Xj_IR^c8cuu-LlSo*JQBO&W*CvgjrB*G1Mc)!SQtN} zELUdl^5cnvZ_dWf>vv(ZRl<$W`LW_h@0o*DFHm8^)BYB$sCd}!3e z;=G^7VC8r<ePoQxPU1i>9?G{!Jj@#sgftho@1$+HeEP?5=c+%}w^GtGh zQKsF8#s~AK1rN}|GI6h32HdaeF3I&~h?N++m_9i=T#Z=@LeHFN?7^B_x{2ljo-akNyJ60C z@_PAOgE@PgmI|9Ul!4YUB9MD**W)>R5IJf_6gKOx)SC46JT1SHF)RCk9x6yqjBa0E z4WIK(rG6{5u`g!WN4dT)29)HoeAOt7Om65jv$2e#4$3|V;ot<>gqiXOY^$IToN5eO z3kwTQhx6+g*u!28uO`Hg=QTv~>uTTx`Br;-xbC~q62+PNb56jGo-@@9>Lf)Igxj$% z1$dE??z(v}7PgYfuQB!>g|Ee(wygW18Afs~UDQ3sxPCQ3A|SUNu(q;bLd6`jr-Ko5q^~Xp_wavuntG4{1jJug-~_+O=rqbiqBc*(ZSXC8^21k zF+Z;W2U#viS8~24^Hq0g_WX&J79Ep4l?ciP{%_Nbro&E9%XsZqDxwK$?E8;&hwZlw z$dz+j3d8Yt{C%At&0J05UG6>0|3JqYOks1PqD=zfyVan<=p9kcba{XY$lH3m;+=9J zLy4-G*7n8fww_gDmkf&f1EO3}WvYJz-2m5kvo1fpawJJN(Nw~8xq1E2yu4yfiMF=b ztPr<8;fGR{j6v=ny=D@XyYbx(zVhF#)5Y)<@*93i@*Tn(8c*dc1W*f80YRAbuDaUc z_nI{O`#){7C(M+$!CyQUtT=y+-a`)Cur=!P0V!_YO9(9lNbv-!v$JVw1+*Yuu=xy) z)?*l*#f1{oM+5*(W^7w{-40zV`KKtP@b$4aSS30rP-vte#r$?30Z>~VWn7FMQK#%0 zfv*{VJ(vT!vBAj?*9u`NQs53NGQd-^45(`e)vIsg1Q{m@`9%e9-P*#hWadn@vA5_%>kkh6&D zA#9_w0Fqm6CW!lcNb3R2d=SBP4RW|YC2~@`VhKj(FthmyOwl)vK}(@r56QUb_pY_e zR@R+LT?EyJ-w-?3N`HHaYouX%U~-QPs--Z+F&_^xdurgMA@}onXc2S7K?Ravj|xbW zPornIme&s|MsX3JTxTux4w)t?%FdUQyQ+G6_>E`9$LU@YT{ettsJDwXZvAr#H?CWB zEJAp}z*@BTA!TDr@2<(k<>w{$NbI_r!(l4cHO^cE$W^i$}N%lIVO|eI(M?fr7kZqhZsfdK&Kr-^y=-8SRLp*0qxDe6L%5Bj6gll^ zPdYQ=+WO5GW~@gPjEQQfN6}eab>!%-ddUcE@hzC~=AX?sRilZMCT>3(^kor zm}&L>Fe1jvL!^AaoKCiyDj+K;xgRxpsDsQt5%05FXb`eWqiBO2REe_}NnaXP%Xbi1 zJ*lp(e9^nTY?x@=mr6cq@w!|d;cYfn;_uqsH&@jDF&sB*Dd@9dZe(u=(B@W+eyrqG z?;DtwpFw=diPNYIdibdszSegYQfWuNw^INR#O@47Cti(kp0Ze5yWw2K!e;s*h z=6+hr%yCNDKTA^3eji)5OPkoT0f!$Rjv+VAdd$@$&a_duu`9r=*2uQ`U|WR)sjWvT zOVByI51W#I*tT)0ktg4{x_cZYfhspMBTCDxG^Jb5e)qWjRpI&?Z!SUF_3ks_^p^up zr)QTqlEdIvN2q;cHNqSOcvjNzTY(I?OA{QV#gaH6w52*V5O>K>%Ndwl`5Zj&_^-|* z9o!CWMKe`yTv?nqC-V{UN>>*=DoL>#f7Rj$@x9Bb6K>Gf=Cbrie0rjeNp_5zeG_Gy zSGTZgB>!zM75U~mrMjw~vrk=ezm9;)L$KGVjM7=nDn#<1z$WhJ9K*l4X&Z*|;h ziT2Ns2!a`NT6dU)PUBt$-3kI?Da&4YJKPH5E1#^Q|M}GH`C|FdutJRjAONt7Uv!_< z-jwBYQmSQzTJe~iB?`;{EI4QW_N>JWjU#)A@k3@;g)Tp>@1Wj7s$3~B(Ox+l96B7% zAfth^srbr3L{0F|#;M^f(D*RT@=GK$46o|P0|+5a+iOJ@x(Yn^f;D+VW2E^kGVIFr%G;h@6Q6|q%AyM+q4Dl9X982q2R8*5i8_#SY;)o<@+P() z8&-~o(diOKT*-Qu^eNj;>(Sy0dGh6rJ0&bkxw&BDkoL`UAl5oHFB31QD-6R1Jl8zC z^TL&0Du`%xlifiPn!9!bEOn=7jQik5OIO!~z}D=h_edYJqNvlWnEpKCjARYRfXqXk%mS&{)*|Nw3kaha4Se7UYH_I_vIB zAhP)90lms(Y@R6N+ALiMp9J#82%!zA0t$c;oStMlucDkN0X}S4z~`Jb_$vfNLvDy zTc>Q8N7azq|7QM3;`jqNkBdzv>@|yY4)oRbZ$|%DshL&=)T5Y# zvUb^Z0OgI#i5c=o3W02fOyV4Wm&4uJfDgRyaNk;U0d6bLPvs%pytlkw=YQz@Tzgk# z|1ekA_^Qg~SYohvwz)mb^F3p=yzoSwVulSwbuY1eAFCFk{A$)isH;8e*p^B|dJ0E- z-+HW|1!vn(x(fMeay2&am?iKUh!DLW7XP?>^!+LvjN=NoOXth|vSR^m&!DWPt~^H( zkJm3HrKC^<-rq?>emkq(_}ItHb|vrW-L1q@pf{f6uhWY*-UjuQTUOl3J}!4#${AFZ z&_j&!fMpnSNb3pC9oy~^R=OdaNYdy!vv1#vZ2Jukq#Iy+g(P zbv;qr?~(w!m7+%UAPrApmD^4LF15>Q-u3lf4K#~mFj02g*2TJP=E{%9cR`&)j;cO3 zwne>X@~_nUhFu4AvyDnq(6LP(t7&*WZrc^`#6!2?X2P_Z3vye_uxLz-chE7ya2bA3E?_V02HjwMjW zQRTz5NFXIDg|9vHhi#6%ve?OjikJ|e%xKm_*zh0?K4Z``OlN9 z&u&JJWZt`+n>Z1eb*a=uR61QJIO|e$=Yy7Qv2a}DvGA{`SA_$S`|o$maTjA=1uary zKm}W?wQ?3x`d+6b_IAL>(yr&7TO?L>?D|B@s8p_bt0e&uz z7jZ9f^_9@8FtZ>NL5J5=I_*dA!oQ0+l`Er=n?*+lVpO6#{?n-t2#rbh%0^M^q| z=rK#6I6u6$aO?}zdW0fwK-rBqc)sKb%=~7)P>xmL5mS+vN(yq$Pvt||L^{786mm$^ zjhYqW=e|c2kw*o20Pdy9lu30>Og%ENn&H@OvC@<0B1%^6Z7nGkMX@HCzzspbjZ@>j zRDz@GA?jlxzIM^_?Q=tMeM%k_E^L{K@NwQJF{~I;>x}I$2z~6QRT@tAxsrDYcd^Y8 zuE}wJ>u!EwIA6ioA~4S^8l|$rl~%=UKjA>`$$KfoBo;%^hMS9gm)D)yRSlj_r_#Fk znZj9%wknfs52$>vLk-xa$}H;MELy=dzs}J{C`?n;cQnLI$ydPNj=}x zN#0}4kV2%;uaQWL6ciVSC}dp+9z~62g@2LVtE)j~Xpv?1oq|qaG%f1&hIWrVDbdWT zlo4-TcErXcea_4bzJK87{juKmJMs8iJm$!@Mzj2rP+3QSKFAO3><9#IdbD)daR1Ut zuqjX7NF{4Y)+nprB?N0GCr0WESQXsMR$Ap+vpLy3Ww|X$1{6itpFE2Nt{SDS6XkJ? z+ugcbxk9|TCP8CQ?v@gia>euLqYz~IyvftQP8265BWq7Gd&Ko|yeaS`jC#>9l&jC<1-{hqTLA2-03J~GH z6Iki>7lNY{)9dW4`(>W1gNLG!d}GL38rlei&(ob)U=5fG_K$@qgJefToG=7JsJ1KCed)nx?&1np{q)hqbj5?H2b_%7j;`ea8guKWx_;%QMbj$0>9n6rhbLK$DWrKp531Qy1$i(Z{^Ll+S zF{POGr9HYuy-tFzKic2QJgx8M$0A^}$#kRkuPY{s)&n#&phw^aos!4GMP{h?6%4>j zna>O;!#^LiyxIkuFD zMFo*zZW_A%B!QCvH?gZ8@j<`VS#+uz?zG!`%!tH+P$F{0)WMPhku~e?KRO`3;S4Pb zdTE*0U1L`GE)tl)Zu3{SVO^&l19lPOu{ac(M}vtVw3P~__~=2`OE+rwD#)1EYU-t% zk>@UPmEB2U3a9pUT)(lQMZ?}fBq;3rQrddEy@F1gA||hg(A*$ApA}VD;8S|Si354k z5m+`29hLD1mO!e1m+I`jp(FtfR@}tp`+1H(4skU!7F!1_xX8M5gB2CB2Jl9Oip}e- z*Ot|Vfx*T_K3V2pM!KDuPv8q^)E717z781$7{?-xk+3E$ekQDD{Ehzlg;NmN}ZNC$% zIo(A)m3NLp_-k#%U=Kc*#*FOOxZ3E9YU5kQpZfS|%Q$HH-E@2RN01FFCwlV3xh>vC z*~6^#5zC-rO+vNvFGoj0H2QSCu0Xi)NeS&e{ws=kN;W&czsPXizJ~^c`hmo<&{EI> z;z}7R7j-0=SE!KnzUoab%AD*nq~JqAS8Dy?+NICSs;Eh~n-gQG6C~|=k{~!U;YcFX zUzM)JFIF?zL7+>*Qy?}7Gg)O90?0cc%mxeABkJyx&?Axk6t2`Yp$&3&K6QySzIa_X zK~cr&>R3_UZy9{@rf4_Rl=f3J`i#Xo=6hrt2>51q5!xoLY;5^GAPTSf zBvij)-PDy2RU*G!dWWikuq7=AKiK&4i^pzHDFTBlRLL%3Ts>145UrrRax@d|NEetK z$K@cvZC2mKvcwibf-7D+@b30sf|P*Od~Da=QvRFviF(S-Z5`WWDv{#SB5gTFRB45s zK?$bes=91p%YcP=MGyv?+Om~3{H#YzJ{c7rB!eqmtn-~_6?g|7i+Te}?h;th6tQ`_ z&Sa&l=w-X(F>{2NWbY#!2pEXC=~B$aJ0`OuV#f?@udTFKNbbdDfhYPvXtxBB=&8_) z!;&+qmIidHhHcQic>B|%U~~I4hXWGlPT8iu3VzMdy32<~nzmG>&T=SsF3~Z_G=wsZxe<&TxOrVl+P6$GE? z%)qjiaCz=Xtu9Ao!BWJNgk245igBQ-#h>|-$~X1neVx6%C8ru{V#lQfuRipmA$?Ic z@qViI4JXirT+5#*Gctk@T_yIh-$)hE4M2$6p%J6V=uwUFje7gJ*M2=++mltlZ$?kZ zT!yGLjEU_WeNT2{u!sB#rDNTmNd7Xjo_E7!Z{c%Pq9)~LTnwbEUm5(Y4rFQ`%SKO=wOlUlW3hxaPY^oE6{d&>B6E=yTPx$Z zSPXClBeA+tg(jTsyY8U@mZi@(FtGKz|l0rF5zdnUx4r(o9?m4Nhy>gsS9W**M@?-jw66Jqu5B`(4lG}dRex1QK~v>`bVb{rMr$fI*k2}wG||Lxm@@*H0-&KG zXg14o@-}!Y{sspoKs|ju{L=l8T}dzY3s<3C0?^ECXe0^E>K7`>f|r*oD5+<(|V9iP5q+7 ziGHw$W7RKN18a`o7;I(`LpFQM3!O0E_~m@Cr~y;X8UAJkEV|?Jk7brX!v~bnAdMTj zEWk`&{$mfRasB?!v@hG+0|MqTJcIp79V0gAJAX}EWD^w@0{q&>EI9$*O~Tr`bUIm@`lp7$ZD_yXBL?@a>6 z`nIoVZjhk|6zR!nolhXh7`7T>&_N(wzNl{z9KlI9+rF19A8RvN%JG4nsF$$sF5eG31wccg?-AsaW%FV>#kI37q^Q-IiBtkZkZtMi%6O~bXs5a!8z z|B*QD$~lw6tWC3K_oT+Mo0G&Iwj_borMK*7N^4;9ZBDtEZ%X~gxHt#74a%1sr7|AX{Ha~@4$uc3W6umLEu~2RiIDo6s(gSfEIE9yi)>m zaWbQ9#I7iiD94NESv=#{-jvE|F3PLUcUxoi0a6d(5oo078%QxyNWxQiV+vseu(9av z3>xp}O|P0l{mYU;y(yrE9Bg+ivX_E%h3zORd}rR#vGx!yW4Srx(hmQ;@qCv8V7%+t zKqjzno}wl0%Rgb9Yu!@==}YFJq3V7~TijnbUk%wj z9U+y^T#yA`Bi{MRZ2Ihe;iUX1Hrp}fbh|cT><>%X>0h&sCOSVnOV0*}bO_MSjzs9r zrc0lc-J_l+WtqAeo@Ph^&Q;7$He3$+#QZG3C@f5ziRoL{$$d4{0O4MC#XhyTaXydN$&e4!w+Cf;qTU39IzZ_m_ApNAS(VX?vl>eun|Tcne8TGmULgIy)@kqq}8 zsHhm<52c@q%8k3lVQ6e#8=C{(T5-r62C#R15-h-EseS1)Kkvc3e-*QhvdQAljF&bx z9h=M<$OafUJzRn)2Hl+p+l+bI*69n86JIuJwn9(u)jOaQ=yDYP%c*5sZ=ay8ZY zTF3cDyGCGIcf$As&W?MUHoYFg%hPFS4HbPK>G`FM4j^|ekq6UEHRnN@$CGw=v%?wF zJTm%sXd;8lNM(3U?!_JTm%;YBWu5V=E&v(;Ndv~aJgEF8IB3IfeJrly@@PsML%lRu zq!0Nj1^?W~53ca@M5YbwzlrwLhg9Y%;X}N!-_z-+(FNXK%%(d)X5bwy#(Q&C!dt`J} z&b09Q$Y^n3`-Bb_<0Mpspx)PpK#1QdK6I9_xyj+S?fh9vg6t!(dd$JB!{geog2syKquKMl8M}l3DJOELYw#9r0Y{dgLNo2QY zSDFA4sa5NKT-_lT-g%dNhwsdt6f8NN3>x@{YqMv-#ux-604mx6ud+f(U+RE&i3@w|3Q?$d4km=?rBakcyuatBLX9CbMsNP5T zlvO2$1lQE9uLiGy>YV5jA5@y+`gvic9Ny$@zwfDpf!X2#TVx%y6nqcX=--GirrDKnlQvW$B9%J9uB~m8>o_3Dj&N%4KJD8;dx}?XruRO$Ni70s zqI8x3x^eh0zA}QB=r1?g|hQj6(b>KW;KJaR~g#UQiD7P)Mg!9dPK0y*Z zx!J0%rcHMh22jKZY|;LtF#Z=X8^9HbE`oO8Dl`87j_=|P8{wxr0!-DFmHX++FJ2I$ zrPr4~2{k0onO0)IdW}CS>v9r5T5O2sKE9>JctHA~+Q)%$gXvx3&guNGdd~ybW!E=g z_%detBrH?uOP9kaS?7)$)Aya;e>~UQ$1QO@lRJ^SH6<;=c0j67<8$XV>L9AHMh_ff z1W|$gTh~`n>$uA2xN44j99$pX|2b3dDQ;$XrQqvW?a6q74{v4DS;Nm$pOmz;v*RG% zXvATZnzIKVQ_g%HyI9K!hRlCnU{G~zuT}CkcZ`ADqYav04t+*HJ}ax93kPocygvPW zurcjPW^#f0WwzB_7X96HoggJ(tBJ3}ax>ObL5HIx$cM~mu9FU?M&Y44wuVpR4&c{-R1hD{63b!LH9frJqu8tO?pB+XE55akU z&+e^`-jx1=#+=u^c^{`ZKexNPdrouH^3A!?M^H6+N}77{40|`1|GyCS8$2K&3ogn0 zay1umHBY!rerRQDyWW@z$T^D7+wrW%{Rp-{1@RR6*Q={8X15`Jdz^|KbS^QH* z`;KwkUsP=^Z+bmO$RJBSCqk_7oR)Nh#xil2*1x>koX;w=gSQZn)?fj1Ax5Mo3FX#BC|GKlqo zS2rv6Xf_ZQD6$E?Y6ShOls!ZXUlt0XeEwGjeF)^AW!|JDA}OiQc}xq*75*D3?{s(J z%EfKfB|8$E?oY5SLyX4%p2nW(0=g{Q&sQ(n>}lg7JDtdGw_VFEd3;=pR-xQxkyXEB(cEO-f{lOC=WngZZG* z^6S?xo$*mn=>KnCP2glIw`mvj~!joL;oBmvabc3@OjCfwd ze78!l@`tEQ1Jd-h00^WwZ(_)g?-LU`8xd^*SX1V6rw0xs|KH6-cmCav^S`Gt^FL7V z|F=dNfJ}liQ|3Si3#_i^ zCmb#4-=xy;SE2BgzZrQU${-NMzqcus+`x+BF0gy?_uqoCNe^H2uiKPnSuS=6`kH~; z9E|+|WEx`hqhJ+xgbJdC-6-gEzx#4{2m|(V0(P;Ot?%xZuUSJf6h=ly9PPOnoxxYk t&qoNsNdGfq|FH!B-757@Z$Q5e&q?q86r|5~a{>246y=p470DX;|6g%Z0sjC1 literal 0 HcmV?d00001 diff --git a/docs/html/hdia-.png b/docs/html/hdia-.png new file mode 100644 index 0000000000000000000000000000000000000000..08bfb5ffe8515da22a16750d333eaacd6a716570 GIT binary patch literal 59145 zcmdSBbyO7E7X~^Y5=u%+h~gEbLplY-pt}(ylp2s2kQhP)l+;T%gACm@=R0p?lW6wH+MHHSG%|FcLfFb1cdkmJIqHufsaC7 zJdxLZm%1?{=ls`HJ?paGGp4t1?>lic-sN|1`%=kdxB$_&mbfd2Pekax^aRoqK;1!- zB;oS-l!=s@>2KzDiT!N?Umjgk^w)qk^3l;KKV{8Dj1qA-ZGeyX19Q)ze|~_@_SK;(GSd80*4%bAF_? zkw=pD>7Ubo=Y*hJc#u_vBWSO53`H6_TR)*(h^)2IAuoI1oVN1zB>p3-IGYKj4+?yY z_zLUqR5@qHu3uxb*m>~&VKpKEG1<*`>6DH!nv1UEc5&+4v|x&aT9`;VvcgXhP>tQh zhHn)c?ClCErjNE%@Um(~c2Ci7nPcGaMUh6v<fh-c@a0hh8W9x!6RgE zac**-yi)D5drYR9$%Axa4%3ne(R8*aJ7wRkO{@C(SuUM^(y?0NzZDwIk<<^X<5zQ% zjlJBIxBGiPTQRPnA$AC6UaFBVq&Rd$HpzB6pgI zIhlckj=X5>&M;=LOSfFOa+(Qv_TdX(gZ}vn__ndP8r#0DEO?>ECKlmE7Vg zdK6-1*kRLg#BVwD#@+J$nOpyp(@jbFF9pOw)1_LydFzYKU7`k1=+~pTQ|<`KyTAUz zXAs!CcH*T`UG&nDMa&Zy*BhvFkgM4gQN4p62SuY+22nwO_@Sqs&Q zyk*|F4E%P}v3NL$rEp*#Gg~!oS(AZR^v1_f`@#FeHeX8`sPnrUZ9fd+yyF(bqPHwH#lG_>cZ?n1dBeMV*fS^G7W z{+2mAO-s@qbdKU^ihSYS(bcliUna_{9ir4LBL0<)FohWNu{`U_Bh(k0iJIiz*je*J z_@`EME^Uiz8s=m({qmPtI)>Hf)WmGE`=sQD(f2w3e(d>}$dy{!PiAZw_Jn4vF_OK; zq(qHXv{+drZmb3|gnqi+K|b}P=)(8@M_n@WV%l3loH|JwHqEeTiRwA-yn&kE>xGi6 zxTQXpv*#uY=95n_GjLhmJ3cG;YdG63_}ySMGTxM%~I$O95{%+?rTY2 zvW=PvhpCUfd-biF+ohwj?!>$MjJ09*LUvtqjRO@MnYlY{nV9>7*w8#uttu=Z?du$m z0ks$hCIj~H#dqKXjlUUT#=1Kbts^hz+M(ucO|pNy{7i0$(|DBgQb$Df`7&Lx#GU9a z7ha~B=`X7k0Dut?L2`Xvy3R#WzEU)tsBhP}Tt0Z60|Mdc*iQB<+Y}{+k1zhxp0Z`K zZjOk$nh&`_s%Ls67}zq1qAE2xkRFr}aBm1-Guurp#CNBs;+i_#CiUA4qdiVjTTNWN zK)b6=d26!G>NM$>Bn_>b>{Ye3OoUF+j?!7gD`%vrUF5Dy56U?Xi}hm9Ik^goPE#A# z7TqeWKg+77W1N3-bjFtAMKa$q_TFXHIF?`R{UsA!-@6#N*rWS8QIGyuTTu8(!?lJ+a0ujUUt>_NE8nurk2))4U{zQwEs>HnHk%DxQsFSSUXVLIr zH%k$J5rN9B&fj^CX!fnAw>(benTIV*-nTcyiU!6^T1ypM4~6>DEwBR}=sD-OBz$+mfnFg{zu`Kiu_&Sntcs4?ET;S|fqsfV^0sL;#GwA2(tbpD*d zjQ}VK88p{!uhE_~?NE>V&oIh_tmr=bi#7JnZjWo8l=6kH93DVYHb`}!ENZC1X+m`I zHMhB%rgQ1!BT{0A#)jURnIVUJnSM$%&For+2Z@Ki`Kd0e zWVqo#AmUM;=NdI=hdCT)5APCzN5;r?Svk2;n4O=6l5KmjM)F^ah(@DB*hVzBh>Ma* zWf>~Gm8YeP>R-K^w1Fi_me;r*h%l)UmD4bAu?|~bQ$#=y`d*@3Ka%9@r40qeznIKV zbg;GM4=hRc5K3O}pqqR-w;&0Z`}@E6G_-cX{g6P z2%3}Xl35-Lx%3t!^hn2e>H8vMXS);v8$v#vuze5=?Mi??bx{Yl`2%|nS6&^H;lCvw z>2@K~U*T*NFQQj%HpQGVoW6lnTlTvA3^JQ>!n2DIH}WpFOLLqJPkB2_=g{`(I#OIZ zm=;cMErzd8H%Jf8VZ557yVfB^^0u~aOX{sA?(+t)Ji^ueC$;&T&f6jaxO_NRK-`dS{>7pP^Vs9^B= z0F9yx`ct2;k670__|Z`9l)~U9@MfTg5F#Mu60OUkBYpdwytCjhQ!x~bHD+aO)C^+D zyef--t)&}o>oDife)MTBayJzSM286XWZCYSUAS{4jofd(MJg3thn%vdfF4C~2;SM@ z?LPMr?7>uVD^~YP53*vV<>uyPv66$>G+xxFF1f;GhW@d-x=3@#KnNPW+{Y5oK+gR_ zgK%x9>Uv0e*4p5#645K&YpZUgq`@eUw{nj|i;HJwHde(~dfKAiznm+jvYHC=3(XM- ze963+&29YnTHMK@!;P^4dY$&egtH=7KG}}8>;-# zI4Rp*mVDVgBRM7k3Ary^75JPqLF&{q?h0Blw(s+u&K`ECZrww-S5;L-0L`u zxT~lFQ?PmC!-vNPM)3ztnYK}b`SkbgW5yh&DYhFEXaujWCA1zU|Zqphs z_#0fm$9HIYr>eMqz(iGul$||2oP61$@NU*4172#WlU7aJlyl~6md^D_4>!T;ricWK zQ3VH(BxrdP?#K#!5K}Ty-(mAmh>D@vQ@t;nXQxg3dMh zjZ}*T7_v5m#DP@LJM}^jQK#E(9A*ll31FQPQL;Ulkp!)(-dev@Pf};Ityig;l0SB9 zUkKa^_)Sb!%-Q~6DaupC@h4sLxXQEK2fL;W)+QBm1Pz{r!QPHZhBj(R<3SCW%yX( zzbU3PExdN{y>eQPN9cb_2P9%VzME@kWH3f#-gy=VnsAu zEhhng&8E`uiNKJXvGtg-5@L}a;|sOhye(~Yb(mjRf5j~IJ-D^UO|30W~B z$6I4Kbhm(Fm5(;y6m63+q@}z04aDDqkEz?(?QUzoYQ;ynt(uHJwh!5BC)pJ|n=xA` z%O$j4&zKJlN_@HGUWP$=$X953z!0 zqxPL)aMfZ@x@Frnqb|2&wTmEQ_~Dc_kLIdS#(^Etb+Qt!n|rK#(%ZKz@hz-Bg#6NZ z*>!=k+&gbZVq2os6-|hiIq{joX$l+OurP#?TTBrwOc77YPt9etKUrA`QWFuCTm~|8 z+%K)*ITLCZsyGwq62(&yUHe?z=i8y3m%lZ)udQg|lvyZ`Td-hV{kl zTd_WaiY&NER`E?GXl$NqEJ&zjs`+hDKHq?)ROB`4rajuMFk^(=|4X z$Cm}Pzd0HAx zM;@e-7x&k8j%*d@?4>@PVYhneFgF#e*CXWgtn4vM02v7xjD~u4Davn3lnN?0XY(w# zKl>*`JDU%vOyxm7Nq>t$ncAMntewNhD5>(3p^dFQ=MApzN19@6XYBoIet3m zh7|&MK8eG35rJ4qR8aE~diF`em>;Pap_(`MYTYvvR<{j_rme`wTCkPZghBL$JT@@u zf#5#hvqvGLf$RU5GC!@zCG;e2aa~PWulODD6-35oV8`iWg_CzAX6mBClh{R;C4(`- z<)SC$ij)q8&^}A8GH5U4^;6rtpkqoNjrJ-S;SFg1tQm|kN9d%Q9@(mS084VScnBk% zR9&izcDg0pUs1`^-yE?!p1cnq@Jcr?b&=s|2>bNYDA)nixS#A_$JkLnR_4NPhW7cU zW@06q%QI{}X|4PC6#d(v zW+JD^d$XQN9_9o=?f0XJ1gMriZRX~c{RF6V#?zm!uR3q~+6Wa6m(A6F^%|3vJe&|R zmOUP2O)jPb%W;hn?p*gTSMowz;=9b1Za<8c7{o>!#UsfSJ_8OVrBK-}elb`pPo#gs@PnpQ8=Nk_Rxa7FA{(<4~+eNIV%u z?lGKN@$e8@ETG89ppSYbNwknT=ZF?3j>{6{^oosg{x*dk^;nBUWYo`s-d2DhNLl9} zPpt>2L+1c1Lx+fo1ADtFXd%|+TK!dKnV4J#YG`~SjNG>&p#J(54i8MzNpcQdc=_8t zqUTrkwiQUKB)2$!T@=-E@d_Dws-S;{#l?&1*i%Cw5!!YB7rJJj<1r_S{qJYPK@H$3 zPIrJt3`$|jSJfgeQpvgSd7wE$eqV-!(}(|>vW`%!(mUcsaRNKbOXMz&y1KcFH_(Yf zAReez#2<0Prv!wnxN0lH(UdK#j25+@^jKonH2KjlLNDIkehyLuqj;Il$ZqzwuEN?+ zr}It38xwyipt!Iw(LO8vB>o3Dd|Xjcd)UHh?cb2~-gcLv;l|3GCv(OnP51+PnP&oD za6ojVt-~b8y6KiIpK_k4eLA@(MGvxO_i3{w9h-FQFLBvc-|_S!Gg!+|^{qB7r6s>E zf;Qmn3HsEeYj?TQQrG{qE-zeQW&0}%$@QAoQnO>5pDG0_QN%)gL_VQE16z$eOw?Px z1__vrt(ox(4^U5ItF5$`-&SYGf`l{dx`&yx`+`t_8$i6c6gbwZx=3GC0JFj@!GR`b7$%&!i*)ly%ZEx4+Yfin(IX>-G<< z^x&@xWzHrI&a@sM?>W56US>B(#GX@Eq;5(fs8)LHqu>+!2XHZq6iD8qPn09tU2p!J z@yb3bVY4V4ya8$bJC37tJDI&<@vN|WU!#I&%0}SQ>H}H5xC$qHYIiqcLifk&UCY${ ztfjF#-lk8g+^FBF$2iAOZP?v3V=2mu)lJP^8-%J53Ot$$2@y@UHgi+(c)q0G){&!U zo265^7Ib1AE_5aA6aFHpg!+-v+i%uW;$+Qz?EjRJAS{8ry^(m4)X%h#6b4|R1(@l* z%UO0Y5Bgod={Ij}pw;;(H2tIaNL~8V64N3&IrCAB?3B%eLFvJ5 zF=AO700ue2e5l|T0N}$hLnxCjc*L1{J3;!e7qQP6nP=>y;D?_2#%?R~FSBDJmKleB1A>CyP2KT< z!IdOVZ9=#dLgZ5$Ij9&^K)BXUqJRXDU1;vI(XFA@$}*2!$EE^-DY$gZqvZiB-Ct2k zg-T56O&>PvtJwIfze0nm#0XY;#6bJ%nH)+Gfe{`Pt@|ZvL#59%$U38*pG*r`r(!Jd z)LN}FwK0l!K8w?~PuXu?u`BcEqJ4en6g00X@h3#owZ(G{h6?9;?R~BEZ1Es z=1E~`a~`_H@9{Qn;<@lJ&F^~gHh@!}lVrZS7{8{d586yxBe^V&oxAQ&u7Ot)^( zKKQE|Y*kaud%=#$fiRSh?Lt<`EPak)vW=OGOil2W+=}3{QAD)Ev?DX=JLqgDF2{+( z1?w&@M-Ui)f!`sJj#{1>`X;D&Qp?(e-YY29VyA5ihz7_D#H7hUlpn$mu*OCL^`=^j&5UVUYcsco~(7}lP&9tekT)OMYufCMUD-Zt+q$?+u$Y(w7r z^6-|*HTL}wsq+(8BAKIj@J67^E%#6PA$mrfX#fJ!ZFYRW9 zs?k60X6p~7J$lD+_R^LKzCalERv5UN>DX`%;|e^pKN5N?;pv@N#nKJ zncfn2yC9tgM9SA;;$JW$IQSq^3sYt;CBQ~iWJ_jXZ6vyX0Mhs1@Of_xuZ*X!IM`fz zk(+NDB0NimM3?2Bn*;U&X9mzRm?l^EmgVoc72c)Pc+;Nq4nW&f#txOTbl>B9CQBh$ zh^cB7O_Ge_kMI+`1-YPPJk>f0I(-#NE3zf!JMN?%RaK;8_?M(&xY*ddX7;Gb)MS8I zER;GE>I11{?K)duZ-0E&6~aDy|hKm{h=lJT@GAisAy zeRycnS}26zaS~edBjs}m@$&Ud1&5(`De8*8^Pa2Yj!f#wk=kIAH>)~5B#nX$Hd1*L z_iKNo{aD}O!dQ$2*6~pvRT7hRb?$xFRro02#)bV!giC=kpOvG_rJaEH!>8V@>S_4D zx&KdC^}{i`uazc1*6rl+&ep_aO`k__Plv>M~b~rMU758(T62y`W0Pm_ToXIp(d?u3=`H*4$D-QJ>|2hso!URV;%%17(30HU0W(@j(Z#@t znQ) zE=Z}mNDI2do?E{G_kHA^CDC6IBnUmCr6rQ}I3CR>2z8Popgx?Ca5^*5aF`~pWL**% zwE4grDsU2@X6oF(9ayKU{yrbaGvp170e%Srp?lb!9p|YNXFVs zz(`SI5+5@>^Gk*s#ECMjxI?40+FjoQ4C*SczHS=knvA(`zI1gDxnHeqU%A27U$Jf` z7aFA(A{%vHZJM>FHmkN#I9o`5jnOR;a-r+ZDr>(kKo0B%VCR&!>?u!wMGRa|2^0r^ z7sQ>^ldqLNI6ZE7x1yy50=LD_zHrf5k19jU(c0}7AXm1!U8wGVr&OKS>LR#5cIaR$ z+Mf4^T_i*F@n`MR3d;>yC58|rHPXlISA&UU)cvh>uHs}X|J7M6PHcV8?6iLF|il} zUa=cBkBo22ag36z4g*WKjMK@OEb!PoW1J}*H%9u({QULm2|)MAzR}{IQ0#8N0uIV@{0MiXv3fmpuGd!Fj@6OZ?b(sr?DG>Y&l>wf-Y47qZ;vfUY zPeu11v&u^!(0|nNoy1(3X zO{pbTElP&W)LY3ekG1qZiK^Rb@}k95X%rF)-#OGHaiX_;oa-IAdGY!k+a^i(hGIYF zvP*XM4Hs5T-^`|YHXjtwtpl451I(eqP&wEDha!5s9>)%(NVX0F)e6L ze|zR&IfKvs(@UJ~5l12rU);Go;iRKG?H$cTUl+Hl$=1vr8;D%a)3AaBp&+1wqi_|Q zTT6?{uL7E?2j6Yh>(eAEyj>|-I`N%UB9gh|HrhF1rV&@t{dUuMY$e*OtGc}AaES5` z&s1J=H-l5wV)u3~-dC35%-iQD?Xg|Ta!e8v1lFIJO0ORk=2_s!!Wo!|n!!ZK76Gpl>R zUj+rD)mLU}D;{3WUz=px81e?h)Tt$2$DN?6O8b26B%wDT7Ft=`rdzq2l9Y3zeDDbo zUmYX&u_KwsdI_?74;2)3WOJ{bpkI{~ikX5QYprFELwB?h_OC?JW0#ivL@r!gAJnd^*M%NfX9A?f` zfh(F8^R(wa58tz;xOXbc$MQ96EFbJ9L&Z4_Q!9UZOas;dmtzyut^MeIq5I{84s*<= zaBI$dIIqB!ZtVRa5<9n_-l)dewC+}|!rW2t=~uz*WOokxy8*M=$~P{lONV_s$H zb)fQcP$d^t+nEJH$8R_VrF}PleI0hYnPIEATlzT;gMw@i8Ky-n5!J(hfU3p&N_(F;=3cx|?_t zNvR&z;=^=hVrqVttm~u9Y4+?v5iGhqZ_7>6z3T&=iNVd)lS;SkO_CgT{Lh8>Ob+G^ z%A;*1`lgk$+RCh_eB2o}6B&{(#b%FKT&G8Lqa;cOp>3I=umb$9H#^_M4hVo~7K72kdh5-Q%Unt)xJ~}v{=?hi+WcJx9*X&*tass4=b60d zrhL;r#({ZIeee-v_zN<2QkF(^^rR!ZgJ@X42VH(`2(*|Km0p`{bK9)OvZm#Pr{hC3 z1n;@l*!4J#L9M#xHiafC<7B7w=9FU+6J)A_dJ+xm*L^B%o^4v?vit_^B?woYgJFV~ z6l2l3w%j!)s@_{`$vBp*S)zf3!{h-|6oNDUW zMVYT&kXm?dGPNk3?4%{EI|)@=MJX$o6>7vy_3P|T7~hz5Cs}r)eX>dUoN>q`9n*4n zky&neU>}KTbjiF832@3Pc4h|U2xc=ThI4XRVAz5t29;f6PJbO+0XRcW_YG{rP;SW93M^>gOOFd-QUt{0w!(8R-lJpmB-2TM$=@%^p67q8*Z2f87sXo8nFyv6) zMmFw5AJ-{mV(@QwNW@FU(Nyyzi4q2@On>{6YEY=kIUb9f@ZT*wPqRNpY}^~fVw*32 zu`j!;`y4aD31ZY2Wh*ydzFzN>aPw8SlZRGdtf(0A4T%x=Act&D1Q`Uq0d<_I`oC)!bvadsE8LmoX}K`usJ-=2KG$bFj8qyHVlCI}5FqO~Ihg4jO6P~P#&)t*+IOWQ3M6Db5(iq8Ije)|?=aC3`+~&5iehTE zWHNrkW97wVQu;8v8CT7rHbQ(5+fW+tm&u%a6VGr0Yl*aIO}woa~#$bj@p3KF)(~kF$6S_2FIC>{wjW253iu zc5DlWb#aMtbH&R#QqimqGY{Iu@Qqq&oH23(5hS;6nj4rK9%f>G^0 zf2`tI&s5y)jA3?q7C($o!Rr2!V$XapX8h8@tkPTkrejR;f=feV6unHw8^}}Te|yRx zUjAASXt~-BHT5kEa5IK)#DKTmNduTWt;`R1&ljcrSI|Gm+1~Bdsq9!e z4cgg3T_de(RXO3C$LmV4Dg?ehWa9;(bkIGx{wfG$z))2`CTiMD&D+3#U59HkIYMV1*j-})Qmd!0;q`bk{uVFP?5+*_RJlY>qvX- zN=|p7MjgV(E{7Sf{@j}!05RUvu6fW-5bFB9#lOM^hRi+o=GF_IJT|>1z^9=2&-AV8 zO0+SN9L0d=_Lh!s=6LE9UM8>m_=IlGKLc|@F%{P}$d4kXltIRBEjp9eSMO^7SdF?P z2O3w$NCI`09%ef%CATZ4V=({C6wqQ`Jz7U-A^jobpYb8yw_*-7K%wJs(!}=IoenRn zzVG3Z@=zpt#-2ZGdVMh=}Sj5WwBb zvHqVUWJ>n>;F@Y5hj!c%$F%Z|r<4A>2Cxy`ht?2?k3Q$4l1_2C{C|JA@ZJL@W$e(4 z-8p^Q!3;NY@ae}HIHeqJ=jgsZzlY536xYj*6I#Ul)XyBK{s8Joz15aVyy)PIw?A;( zzY@6#Dyn}U7O(!NPH^b^|L`>ml+8x*HeO5Xjw_3nh9b~~*DF@|{|)%?|E}Wyw_l$N z?E`^S!6}oNjO?`B!>g-w))cSfv$(5E3~0h8bLWXja3HzLK4+b5W!uMxtva1uhqO+Hv2Dn4}2eBP|v3{S_LbfBWYy8{;Apc(eBiT%&v zc7l{bfyMknzqxzNniG3De0+7Kp}abGa6CTHQOb$**FD|#PtiUd4(RC+uZ!OS0{?$}-9ifgM-tHWI{fqZE+|^>BHe%OaD(=Yp4g$`{&nndIz{vsaY<>} z=bUNX{^^|tzwccdFeN2@?O0qe%>e4f#txYq_$|$Kp7{HC!Tp$51n}6^{?kH0T6h3j zi2xD?2)`>?WNiAv`aPsO|6f9K&q8~aM2C=Rrg4|hU4K^Y%|FmwqVK=h?z&UqwYxrd zjPo~5y%IlC`nDs8+~3(dJx8AsLvC^i|I@$@X;ps$`NPu=aR~mvNE7!AT!#s2n=@o!ucf@$}~pzC~yHw(!lS3pec z3ud^yrKie}L>vcKr>ZlQ|U`+YBb1%YXQYoNCCB zgGbwmBbpOgqdTn6#;i}^A13;4NU#>%{HT9eO+96Bz%$z+rc|9l9v1crXdVQ7RnCj` z*daN-tA+k`H@dM5UCARel%&+B9kh+|solxB(-%DHD$(U-#vwzZYexaMiqDqp{dr z4h{bb;>Z#ZzgY8|0NcoJzLnvM?2jYGF^@fla(aS zw7HzoH%qdZNcl9c-OKcr#PJi!eV14gBp#%wl!mYtB)4o3*Evt(`|sJneywXip0@-S zPuOT&FZND-$1vrZ{FA*HazsS~arku2`RwF^;I>Xprjdm7ew$&(GF#C>{?hDaKFwdg zrn^24;a3`@QtxrO1+Nu9s4e?n67)CCC=^*Qoi=ztdXs~R} zho^`2FjFew@B*Deu6gDs2T4;v9qVxBsZ?fQ0#y;)(p_G2D)0F5AA901r})X?*U72Ajn*q0NU0g=udt*cUC*dYP~xMpvL4w;H=VkQGUUI-hhK02TLdO z0){paQA2#QiK$?63evc*7 zW>O&WI=820y61n)fNyy1%k^LL=?eRqav^*3*V09k>aHK_ltn|_R|tef$-jh?c#kG7 z_(xC0;^PmuW=n~KY1#txXk!c&IfaMZ&0l`#d#criWS7>(s7l$jKFol^sD@P0>ZXSpY^y9pL>$cB|cdMK;3KH&lCI)#yF93MdOEd zx`>JjZ7Hvoth94;psXwRfDWc6?Vo}57Nb_ms~12_m?O0)7u6kOTE;W$2$Dn)+KiJ1 z@F0gc=i|};N$#Sb^8C zEw3A!jrP`r$Sx{VX_uPhzq6`dDQj%uyuEnhAK{}1fiOM^M$`*@pVEDQ*G91Pr~BN= z>dMZ$h*803#SaABSvRePF1Cmh;mMfJ8su}M7mRxsr8 z_LkN4LHLJ={t_$NK?aVLi2=QiJ4epkhtbXlKwIF0zUDgLvscE_olnOdyUtQ*3aeAv zeJBJO&h!~$;cM%&0)%@lqUVMn_-3|+DRmuD5hvPH{)L>|y2lFKcu+?Rc#yTFG z=op_SLXlax+e`ezKu~e2mM!4zd>{1E>sVrxs+z}6L)x7tf zjMaYYh5CKf&KoWnGsv~RIS|XP`em54`6UTLZWN-HlN(Y(BszPELi#KRviO*@*=`GP zD=40K0;LKls9g}{*o;~%{KAOqdx-=?;w3+eU7wwML`SW@bk=COwAv#R?2)`Bh|_7_ zPsICgJot*i#Ns1RPdJ_4(>$uFfUzdoD+iFVj`{lEYD0i)E>}j_rvCA6XF*G!l6uU! zi+Uj9Zwe7BH6^8r`Wa&g`!m~*k~lyw*V^-3U`zD-wX-P8?I(O-pb;+jfkK&;}anW;4WK%()0m#es_2t<4%8&x)X$BLQ)&+%8{Ka>gAVskK{y4>J zFnTQ18Yzz^)%Fym^fbV|;OR^6Gi$f$hPkFMnbZ~-tHM{UsLm`{0_1d6cbiMp8quI{^EsJk%H}H3`chO++?C3X3nZ}snJgY= z0B32bZF_(6DG-@s&uaIKR!;xGMB_T`D`${tMhlkJJ4c$tY@UENh@33GowAQN*lYwT zv^QHsud~xV*xD|%@^ls{9rLszCx_l*;A#XhVkF{C>W_Dh*n*rsv{@s$iq6<9y+0h1 zqh|XtR&^O7&=@UPehg6U7#H8gWQi<9CkY2m$#Zha;bV2=3vGE|kQQgdzy=-OqZ$?F z5kiO|=X>(pIA=K?Vam^JG@8Zft~NylK-Ya|r-Fo`C=${*9yaMAN;;Loc1w`Kb=e!a z>~o&)GzHRb`yldgQi5zbXF0tZ?GtW9j$E_&}*h5EoJSD!39F9YK2vvs*ihDg^<~Jb%F9dV6 zS%O+jj!}wpUE+EN)rO`IGw(s%8tmR$f1F42;VV9X{m!o&fa+!REEJN`GNJ@^N%0c@ z`gfYAIqQ*_7s{(Sy6|sr2qOk5P3Gw)3F|OI0YvA|@bDTFjPqgKDQvGb4G@WrNn3?l^cNY8VSU3mX%{g{;4uY#bv40ZzQr|M=?$dhn}Pzd zuZ>-DO417FPb=3PT{Co&=s!H>Ws3|*bGqO^GAmJ2($GAaRxlJnw;g=Yx)CM-Wb zKZ68o=^z9Nhytd?Z+V`rO8doo^zu*Fdj&kHQqjurd35?U#D2RO1oH3S1yJlVd=2A+ zuKgA=iGk@H`6YT=km5)YoU1B><&DW)Hy8w$fx&RN0Pg$slyc)c`u9HHH6xYVe}X3* z4Drm$L~cV`2X(1dOPualaUufNu)bluN#3KNdv*?I#$k_Qm_tEYBumY;@p^UiTYwiO zBhG}aJZ2WHSh8bFfK_1(wTMU^R>IaLzi|F63V5Ea&>cgDowOaDE%o6Q6k77nW zDk|rn10~>HQ_R0-DmuFJQS-NV!S>C?AFbIq5=(%D-R&v+(CSNi3lebHbtQ`2kM{PP z4uAOIf<~;-Q|l?i${Uty?{y$BD0?51G(99*2(1Wtswm7Ulwv#p;ssXD4Y z)r)1l+BsWnIWKGhH&?d-ccXQ(iwn@XIrD?9frx#O>H53BGra(Jid+g7A82%|8+g;u z;OD5?e&lp_R9imZ5Gt^Nl%>VgroRNmG5zm*LDm8kgq0Tevb-&Z;a^9~AP`zI6ZX1L ztLlsbRq*wU+iwVS+7GQs)t+4oD6a(o zgR8CqqWQwy-!+c3v5x1ak%@Yk;)#U@N@v#nxk}>|1y}|y1C>senzmp3(b%*$zxNS_ z;$qUWc=$ap?Ys*9`*DvTE$k=_w8i#PGG^TbF^H!Zcpy7+KNlF51{pFj(4%-e4Im1F zD2;T!wNvR^O+IO(UK#{)u%@7>IF}JQqv3X&j5cN28jTryATC_dicV$VH&X04j;~Y0 z#ZX+({?7OH6piybmC;aeD<&Dm?gJPU6tEi*Gj9lS376>CK)kmQh=Qh?FQ|D<F9o*!2YlUaG7ac7Fx(td625k58lyHX4O&N ze)%#(F8S?;3GAIvJBLZpkzatHMz^ea*!Tcdo@?kRUtz<{Pu9VH`PcO*7GQ@RfUTVi z3?Lwn#c(_pIj5H=Xg7SOk*NFdZ4!kw9_%Z}`*-f}&1 z0UrR6;G&7Ml=pG2w&AxoWCPLi&WSZS#l3fe1Mncfe%Yk@t;RDD<~vo3JeRT~A-(YD zM79{5%%a;674kLiQ<^j4`GWBtqYfX=v@L`jHM-I6!VtqHd!h_lP@ZGK=6eEwslit) zd!&;WwsJu+Y=c9t?-w-IhPDsVU?WYkDmSlhfa@_21om;4zrbqz&9Rj&EVhLe_GR|2 z2tHmP}^uE`ucBS3-%c)*Sn z*c%PbRu7C?6{_mrPRzbnga#tOdi)R1d*sf+)ryweMsID&BNB=buMFal!8Za)DrIi# zWV+#(sb+Y;ivYYTt_;oMpo}Ju#+qG4g6}$x`3Lpdu}Fg&Lza5snkc$TWCB#6m1oaz zGsa9PC>HX%tRw214_0OAzIu|7(q8T2X1hG*zghz)dsl#EFxU0-oHL2jQ`FOea%jYf zmJXrqVXx}zLT?1#*0TGk9wTukK?54{0PZU(+YJw9)M)D=C{!p&+X6z;Yqwp=lGf%~ zc+7NczrB%#JSHNeb^Q>cUl@WP&qzG(g+#zW_D`k9oUBrtBbl>!S~jU+rAgO|r^6=v z0T<*~UI+POLH&CSY;7HgSFL7C9#ldaMLGl<zXwVE~a91qp#cq+97$QV>u{ zX{4kZkyb!NV(1QGq;qJg`OX35d4B8t-oL)@kKe3yuXQ_dUT5rm>|-B$Ul(iDgsE$u z0W<7cUSDqj@VC_FBLUE`Br%qwemA{Za$yAqGqRg5wE-)5=?8Pt49pT;Q~!KDebK>-((myuf2M()QcE58Ck1rrQr6pu%!9qJcS1- zPOf|W?n80)kjd?1gr)0m49@I%{E-Bg!199)ctp46gzMA;MmzW>0gq@vZ*vDL?($h+ zWPQwKGyu-)5S;rSuwfT={6^Q7!xtTX#!5QZ@XN?%PnHiZ+vO5nfaK2uBdj+)(l`HP zu;Zko5#3(B0V|q*CwUPT;DsB+te{!YFR=4VL4enpM$>8k!Gu%a;0R{RxDro^7l=yv zX+OJxL5pT?TRpnAIRfeH+4ZKslengPp|216+T<<;1kOL;-5;Rd7(w%D`5}p)BL&ia zKqO=Gn@J5G;k8{lx_D#zXY(&hKI~gqm0|;H{y<8@jN$(`3fa+Ku^OU4v+~{pxVCIc zz-sZM{>j+g&)%%c3d#loHb&KP_h})%$paIVm$8q`!;RiL4QM9jXbtF$af2mD-~<6S zWU)lRsL5hQ849PQWxq6s1O-6f2d;D*@{J(MW7z2(ThWxK*JTtwVHnRycWdL*3Zkf$ zXT`UFzWU4;e6g?B5ph87Hv)m=uS;fb=WN#Lb2BG@w3OO*cxkNVv;~cQK<&wL2o{r! z-Vd5$M9&%?t0d3+00kuUX9Rk8VMEwvYmfP^CjC@gdt4K2R>Ix^U|(_L-rcKdGH{AV zXUn~$3gGu+Zg&N(T3k@zojIw6VYVla$3j|f5^sL%ABiV~q?$PxK3Y}N-+drwN(^kc z$dW>mrw~1&?lAYfuV7`Dnu>j;YDT@n-95f%Tx(+MlSh5%)uA>^f$>&g3eiY7#Q4Uk zGvR>kJbDlfi7Tkw+vUbd9|L)Y5HAxS)z~A8ABWTsxR_I#ujNi!%j>(!`od3hjuACK zeT3>HIf%%>C76ZDUziR2`jMEMCW!t05`m8uI+Wzvg{|vQ*{@(nAvN8D*|f}wg(;W& zN-eGK=;>aBSWg2xD>Qw8!pM!P&e!AKR^M%$c$F7CZmVZw{-aUd2={ARLj3xKt*dML zRf0p0%WpdG!=lrwhw$N7`~z>r0ii0@g)gnaQp1PxVo%<|2ND8?-vK!qCU_9|=Or29 zP$KMnyh|Odgr$Yorr%X}cc^_QrDET{Mi&CtcTz^)e&zb2mz+xPc|}^arS*`r8djF# zS;hw`*2}}`P#x0wFwDwerTI($2ZZ$o&c}qwz8AD_a3NH({&cxxQAvQ|Joe*PO8co^ z7xsZZUUSps(hJPwnvH!#*ya@^{;_Y7wz-f)e z+Ys_lREHT&I60t(aN(n17XZNq>Xa5CC&j@yzRQ4bv@~5DgI**SWaTRWM3_oN8YZ)> zwsAGRO(Et}_@}49CaB&DKjMgdm+=L-#(n!+uS_adp9$R)p>aa2KTN^K{k{h5KZ}Xe zRP|~cG>xeqbBRXc0U}NcZg;w8miSb7SxwDAzD_9|9vlUhk?O-}Rqyg8)#j(55=nhWI-3aSK&zg8q+J6vVr2TX+YK5?*^4WcA$S`f){r)jVTxKc1U;4 zwTq#*amFeOEvZdP5-#94`As!eVK{X!Ef~M#*y^FcI~_Y1`8C<4gOs6*bX}hW{O=Km znNl$snOE^eMifWv-G$eBY%x8S~&2jA4GyY7hB-b2UxU zK_w6LG*bJ93u+8K_Tmrbx1F5o$HbIR)KOe&_N6X3bj#9$iBG1qxb}RPLZ^rH(}zN07!8kGW)) zX$%L$Jge4}z>dH&j%AJI!DmLInT}U`dz(-q!6`R2P;Sw>O{($u{#^T$S1`Vzo=4KM z@K17_7wksAe6+suGEGLw{?m#>&eu|4YY{{(xRQvQ!sL3ZUY1l5!V#-vY(@gbIw_0&b8g=S$cl6aSwGh{*DF{g z@osBfHa@dnNOwnr0g59MoSWj;G<5d{2f9A3xA(oL`6q>4lgN@JKCnBIua{vHTl-Z} zs|&uffabpgkp(VWO(?JG-uV1wq4AFCK&Pl50;9(e`3bx9q?jDlHvEwuw;RN6nH(1b z7gpP@TcV((1dY6@d!JgoerE?tf~#ABYITF&gXnqt+~^#@VC=x*-tUY!F}`$@MVk;{?)}0C?x*1!Gu^x;C$vbeV8hITC(D4{>$0L(=aMt5<<}M_&u+g(kOZ1lkjyx44Fi`5 zLhfv;jIG?^UAG%;_I=*xm30kdMHhn|jJ|7Hq64kpESQ(SzJ znf^$5PP{n;5%iJH*#C8xmSdw7I|m6Q3c%*Pgham_-?S%49gY)#_vxrbs6~YQQYY+s zgiDGDIWhb5M6fDC(sW`;5NGbVlP3NGOijz{B7_h_O+f72&oR;~0;)(0xYo|_D~Yqx<0U-h-RDrr^2} zV29UP;vN&>f!jV$i?S_W7zaGKatZV^qf{-uk76`vCY*>;?bwNW+AwPa|G6pV*m9JV zRXx}TiELu4f8%^$*8q5oP7+A!ASMs!7bb9`WkJ1g9*oa;DG*K(kFz)dy8t1~fAk=O zTi5~6RZLj{!0;=tV6H6NkCw_0;R}*$Z1=7`jVp~)I-t_i8o14l@T6{vF^P8Wb>w+Y zxhe}c4-np4fBa_oiM;EADPeTmNBqs9xG8IV!XyGhETz<5QY$x5$_s~X%fZ~IeyI(7xTf_^~0>*=qoTE*4dIG;d1w}<1B{q-<``>B)N!x48(ia{0}!t5k= zm0VR(jGXWeTepTthP{>5@&sm7F;Q{vH_jR^3_xMUJpE|xaI*f<%cat+=UO8>pawnh z)SU)spgwPMp9u*_ot#uNg4!lAYV^C7g%HtD(KparKm0-#3);BXLl>{InQTfbab zqkoH6x-U>-epFcV>)(=LiXekbEs9HD!U|b^^Ee0?*Yu>t+>JJUw7SWTeAo@^`5Cc4{}<49B>RT3LF3!0meT`(V8`xJ*D#Tia_Es&Dcp0|{9 ziv4)(8L|W;A-ge>n_+ z`Jj*8xfWXaF^Q1F0KL4e*YYV+c;1YjJ<8@I-W5rFe60Sff2RRw`#6IzwpMf0#mA+y z);9Ug#2zRv3z5x?dmZ{hn-VHEQJf?mUH>SWx&)7OA}h+4Mcnzp7s-6u>mF~Go6P){0+%?qeHN9Ugw7{I!qOin5s2jNyYf*taSo8D%x&KZcQOT7a|Gcbm{fP9FGSxqLKM zio|cF>t=>n1T`*psFka38&8ft3x8W{Hm%fZ5pH>gLEgLT=TIn2H*4g z+l&f+?W+Bs&Nbfu>SE*NjW}euiy#&o{;tM6lOn)yn8G}>E;cNfXH|qcK{Jr~Onh}l zhz;ZXodK`CA2Cr_EArUwGuVjQjsAKV9G0Lz1MfvZ)epI;G&LbzJ0kSdcB;&@TA}oD5TKwM}ae zM`&4T$taz8c(OBa24AJ&ZzB^3?3*9fmCmQTK{)M5D3YC^$!1E zXN3RlAZG?i6_0YQ?c1Z$wgu(`WtR7f@SB~}{^lw^84-M3-}8HtblHC=#&x(4GwMd$*UIkXq>(v(O&lSdH%2}iH)2r z0~z`gDo0AKHDqh?b1pZ+gG$ha*U2Exdn`COMNo1F9U9D@M8eFhnnVeyW`Q=tgsZ0` zq)x9gs8IdEQAlNbeG*B7+T9j&(~^~?%Wj)N=5q6h((`ubkzfBHX*xdWJm%-7^+Y+G zT2r6FMMz`rofhjzJ<@IZ9vLb{Sz^cob>cS7nM8T11+oVCNWjmsnJ*@1P0@pf@!M0$ z@uX{`w(er!eNGjMgj<2vqDTE%ncf$K3pJ3DAy{Uy#vQ5s>I`@`~`R%<4EKzj_)Z^As|4mFDR?PNh>PF3#%B*!U{Z zBooFJxhSc6^~8+K!8vv?2#Qtb)}Co2_%QTG;dKaS1UbcM zjY(N|OTWfb%D#qHH?1Q(u<0s3&oyJk9x_hFStg9sxA0kBVQ~KtP8}m!n_YhJ!@!cV zx@UIQq}J__m7AyGb-Nu8a-zn?XMfmd+stjN554|ST}h2a@{72DKQc3;E4Ny_ zetk%(HNJ1#IZj5l<})6>WD2xbyKBidD<+}F!C<3v$Zlp;$PT&u*=~~H^29*D+q5vV z0XXJCBBja8(HA;^lEAFYqvU+lxEy`jsoh=D-)ryKlue)gw!4n)*zSF$#D`mx@yff1 z{q0q-t1($4hW&BAd7Jsd)l6{Lci((lL-BVrHxTXe3mbm~n6lcQYw=LH(dkhx&bvA4 z_aVmYCcm#w9tlo*9-A5=<3xE@vVoPk+0qU%j%MaodzKVSW97dE5yE$;S372fnK{w^ z)Lpf-ScWmEC>lOr?4M;%fv*k;T?#aiZ|=+G zW-Py)pWBWs?-)?E6tXNMBP;6lq~y;?LFDPYOk1x%6!dmOh3?O`@KDfDSt`y490$9K zUJmWt5C?;F5kNpUow+6b@@qneC0o>|@xVrvWo9dv+whT-2uFFDJ@}fI(;v5Ll-Hmzu?GBo;Pwj<^TT16 zDKA>XiNtCwu(YBd_)jEe9jo0yrdNLO&)d&hwu`#X(cj&#b z)b_^2le;n%@t{I4La!A8=(R|46{dMG*)%HOSSQ&U*xE^V6Nlh9`& zbt47iZx2-{)OqZ2dvA^T1fw@*eS)Xz{@6%ev~~zpUo^#!G8lS;T|DR?xBws#_hFku z`}@;X=YJCCsO1F^NLcD#@j^;*>dc7K@IyKm-rlSbdu3`YUeJQOxZjW zy5Fv|nt{~o(~|Y%+b*7V;?jtXjYYK=d6PAqbQWQ3|Cn$C=V4lJ<%=PCS-Q+)D!9FW zV4R+N8gE_Ya@t?4(ozGke47_)wTWJ2e}XPp+WeT?Zk8jR(fRHdX$KEB*RHAOzML+z z<)WsOo3jdSr@Uo4^)q|(T(>pF(0+`O@iZLBJuxuY<*yP`JVfSuJy)~Gqhd~Ds^+cZ z9I?=hEjz(GhU+Q2yJydMMv`Wo@^d zthnB6f}CC4b#HXhG6cE8qjbZ%vzA6NA)(fyS zWVplskvQXcYw^v^#qdN*UnVk|nMqSlCFe=x+fy*EN_qTHC|Ff_R3_Ym=Al_{FD&Jr z>=w?`z$0{~Ka@FkX#e^0F{jw5Pb>La8O_L`;(=t5zZtjpj>*wlr`;j- zqo7{zYJL`B$M?H0d@DfVu}*n_OjSGP6o=s0V3#UQstq!VJ9R%TZ89?_S3rsNKXcOZ z&c@H?vNAPQ$`?gPjhc_r1c7Jp_f&F@jVeq{MVnODAM89v%`FQZ6Ix>Ro{SF43jLT} z@HM(ZGgH5twS>p@7yMss=DSV`^3jnUE_d_xN6Dz$43)V6s9rEqD7G9OH5=sSg}$Q+ zGN|-ixQ+;^ES~+TG&K~BoCb&B%taFzUwE1La?}Ms0ANX(lmsz1PtR7{$YL?N@^Vk? z@;GP8H+7q-smbawBuKu_5H>9!qR#~O_3CUtplz^RNTv(UMN*?8Z9{=xhgF|0p^bTwlS%SK`DRK%Qh zP^tdiLx;Fg*TIRhVDrhl4LwzD-t;R1vB`&PHFn6E$A-H?A93IBA}d7@eoh2ISjwQ$ ztngn5oY6>EE#vzw&ed~={E)22`rb${J61uV|9$2eVeE}T1Kn>+I_+1qJaQ^*W;553 zb;zk2m-U%;Loe#}$+~4bILWP5L}#YR5FZ`R2CfWjJpNzkmmj;dU=&Zq=)YZ8iOrx) z+!WPc+Dq8id2pwDEnk=(_ zn=0X^wIbi_jGQie$;r2!oXf4Ir+ZUyE5BHo`lv@*slB`X<)pUvaIfID=fGH?X$9f& zoJ+%^ow~&RL#G$Sj)R+?5Dw4;HYRFWd%c{K8nc&;mX-VyyDoYPEksm$xTZ)l{G0rF{A{ro!m8j5t-w6ip|Q-(tWS!Ana=kMz61)D)Vquv~E)N}-LP zqiOOPweiL6V=%RfQl5K9)txn;{nd?_n^ua4Zv1qWd0_K|z~(iVf?fjfvbwI~D99#e zXc?0-!d~(&e&6WR=q_5CTWK(AG%%jXriPf6jS|YW|E^Z)X&q+--F9ak%V0#)UfQZ2xJ+RxdW@*OiQaoc^_+;e@go! zZdYWUPJWjojmflxa|FMw>?uDYL{p#R^e+Nv7el{(8E~!oQcnDsEl6lH-~418jyHPY zML6|CjqZ(~S4<>`=IaYNRd&}VYEI>jQ%Zw!%t(#Jo!ad8An?k{xwi!j-?6+b#-;>_ItRs*3l)EC)H&22&n=(GmmUF} zueb@7mGv<0bd#mq6~1BHeP#2MzyO%cbULN1IC-n1skHKDaSr?iZAO6^ZXLpEO3Ag9gG`utQRQ>I zq~zKXx+Bu@Rv_W|k>nFQuDQO+u&Eshf0Lmj2~t+J7*rHL|-Us}q<{LebO-@cs|F!kq+t+x1N;|U`F@tbE(Py|6(_Gfe2`6N>M0PzcnPYi>tscn&_17s1MBQ1Qoz=&!&W#6%~|- z=~)K$lX}=mt8ptheq?2{9Z9Nf6Cec4bew9eu?;4twTgEyQS#lqe?VRKu~#&210O z<=$g?n*C>HJ$#pW#wq#QV*|p|9pFfF^RiFRcF2EU@cqzCBJAS9^&2iOozaXj$7cJJ z`;z;25zP{uhXBU_5EjpA{QP4fOV?HM;r?>Bbn-RsTbOA#T3V=D3tr@VGEhq_iU|8q zY#Gla()z~gw@wcsVGI5xqM|oy_6zdgG8%QS(7eJjFDLGd^qf?hX7agy`tzl#E3O~- z+Bz8pie6eq!4=9QCsf8zjw2D&kH4F}E~ORlA&EH_!Ku3TuIFX$((`R~Lk>g;s`QP? z0!X_$%VxHMg+qcTJZw!lxE?#ly;3+G^tqK)+emM6pRIiAPecgQmtIw1O7fbqGFMhd zZOaXIDdIVh9-F^CFx3C}ji~@M#cUoM&Sg&X>gD|c7=n3bq_zO&rd2yAdV1%fQjyK3 zdrgo-en=%PcdP^iqHjq66E^K|&ir6Ka#72|b3F{zhGaV?GH(Nh>udl-Y>d|uKGKYB zB|`xqL7eSb5bTs4iAJ#oC8SYe`HsX#Hc@Ko;}h}Su-U>1r{>zsA2t^;?ciVEd^<@y ze{TwXi$UU!lQ?Ybq=6m5-&jHS$EdNK7;|=wa44IQkUpY@9UBraMR~P}P!XRdS&+fj zN;mCzzV~Q^D~|(tbP~k4!~cGE$TL|jwoV2ASEYX- z-#TeF3%QjkZMk&(g>SZ+*1d)i3NhNF>q0anML&TFu%t0vmsvh7IOJE9*ABWNjj(+4 z3Xha~RbqLeF}G@x<`BPKHEGOyg{M4{0|Iq*;t92_WMGXRqPFy-%l77{C*v7EbW{nJ zxnjZDo;w14_B2lVEK1OjSg|F%H)~m=fp*slP2P)OXt_7_Syl)3qCrZjfe~T_x(2JB z<~o`CbPcBYiF2qvIsHRSzM0(=zHXCE!Z8}j*KDLhH3=YhW8)9eSvP-9mi<(URCyx8 zV@`XJUfv)yU!}DQ3<>Z_-iMm8L1ZY$F3P)OXZVroWAVClPURI4Da-{;2sOt9lvQAa zI%6m6y6E+$8+u%6?a@}L_m!gRhHmY!F?w+dZ{O=8XdDG~fMy6wt+ zE?B2vPT95xR9hq8xgv-}&4pQ%p95f4 z3=Hh8nzB+j*zjPqqzw_abjx4e!-8jCCc^rhbp~BpdX`-l3BwGVVcs5#)wAWXd6gZc zoHClR*<3J-WE+dhO8Yk?Vw^_|Tq zFE6+K*fdYplGaktEWggt*qHywz61vgvY=r#rf#`N6GhHCVkz#aJ22~@23wNV6JBYH zWJ7^n8=p#bf4{q2`Go`HZD4+TrM`n{UymJ5(MZBl&)q6mXrI2roVt2lKusG64j|cy z>crQ|FR=P{W4SbHI(i+6%jk0@f`Q0Z)U7DfWWnS>0-`PEC-(E=gkk|qjEoNvnzkiLw#QhxkGW~l?LaedV|BX|hHmf-0`$_iB%&c+sXlq26!+UzKPF#s zs?{UxKBMP`@X0oA%8t+{+?d^YC*nY?Crr>w9R<1VWx3obU4K4WurPxNg;G582Jzs^ zOs(YXS(iaw-H_GPS=ga&;ICYul9+X1(E&VoQfRgMTgRdM%AGd?PfC}5?rrt#Nrk9M z{V7lB5l<~={ETfz(sx2q90T^aE2E-2rE5gAJn!t_D0nIqp|Nx!P9#_v>#LgWL8=cg zUhQ5ho;^VS4*XS7M=gwfTW`#45HR=p6ppWHYLX|?M{V~Q_xL~IzTKUA%+;=$Y(aft zFsYlg`}SYY7X@k$ACk2(Qk)~ceIvitu@3dgg6pxcbw3hLK^e^ z#i*ad7MHQ|tvr6@1)Epi(wA-KzuIIE_7GuuX$63QIl)kVzT=S<0W7Ity7ZaKq0N?< z)WJ$C>ML%`0i4{F2qsAI&L<~gNIES(gEm70_C&Rpm5Wn&_ zMq_l%zjWJ7u@xC5+{tNu4w`_QsvS}f(`D&qjP4@J$_+0Pf@<_es>X7+s%#<%Id$8( z_w=H9F}Q25wsy;Q zAM-6{Yz|yDuc-p*c#J`L?k<|47J4j|MW(u$onm&)e5G~5ScHqUdPR%3Dv4E2Kn?aZ zPSS&|(NQ7r0Fm=2Sk*VD+Zk=>$7Bvr8Rh6ghw#Nje!o z0u{{h7UT|Ke*+R{8dUnI+~$=qvop&~s0qOZWfgp%ci)E{fwJD~bUzhlaX%rQ~{x>m~F9xh-wG8_+4&j9hu~hAMh8 zrrJT6s$cMEE0u4wAJh)-<1-#a*}Vm{MGfJwT(Yeuc_4hU(&|Hz;=O6Ht`q|h1?ZnV z%ro%sZqlLTzQ8UC|2oohMWu=kUH4nPvMV>lw|`0d=G+I;S>(5OGHPlnCrvZ@L-LW< zSvT8N84h&4SvVc_mwSvfV-cL11Kgd9;x%ig8>hgK&bV`x0cf>ih>%D}gSd*QEQ;H{ z&%PW?`%34X@zTYX11~E@wgOntVn7|`4#sqNgB-(F<&v+NEmrG~-B^*wzd)CX69P&M zYX=8UETN++N|#p+u9AoJGoyN+Kien<>qC@1WuxawM(j&Wga@yRb8xe^zLA5z1SUQr zZ2DwgoJ;ej!gB&m{k3@=2T_j1t%aWS{ohE&W;RCjb)ZkPayQhy5i)Fe4V2=_trC!f zChX?uB~f-TVjY3UO%*@t4J~gY=zJ_xTUFC#aNvgw5DUi46z*+tIW{&Y$5@N>dT++6 zEk0RN=G{gI-NCu8-VF3^zyF3!RSu~;)TsbH`^fcEr~JY27WsA2Bq7H*vzEbr)YD}O z^lx!`9?pkO_in>?+$`f0uCa$j)T1AGk~6ksr+Cs}6xH2?B4p>7kON3Qi;BdqT~A7+ zwdIe6UM2u!6uWVh8q_K4TZ?<;(|ep{6QK-~)Df*3KQ0Q=gvB>#2O&|z6Pzwl2HW%# z(=v^mL2Im-G%nR{*-=77zotgbc>lMDgi;tuC+&$~_M~9%vkm?Hql^u6sHlbKR5lXj zn%&A&@=Ob*{r;N|u1oEtl!$y{HX2>TJcFQ3;n!id;-KfZy?P~n^5kb_7bo&bKbK7A zW1z-VT3cJ_l@B6Z{p8ItqW?ny2rncN9RS>A&z(q*R*YtW^h<#*vIBGuU`+j{T$VL>u zoN{7%pl#OXwo{U!nu1;V<^^hNM8kuRgZIIE^e>sTy-$VwFOh|R)<2hrasABDT+op{ zD$Z^9dYRUOkwptmHk!7#ygzuKkWA-07?4t3sCt>j1i$&0ki8WM>Ai zd2kgiGGhmHG0zP9OXU}mZ;HJMZYm$2-sVf^n2$7;uNL`$8x`Kuy0|JQ%43~5?^@Qx zO3&ZbH}-)xD7L-d%}6SVva(mi=*5yq zJ@+&B+1j_sX3|W)BA|bS0Ya>8i7F6wSAVRo@dQK}MAY;wE z0Y(kzzq0MvB^Fu9f=Mks=!yRo`(r?RQn4U_gQ2tN0Inni`0`-*nMr|vR$*dq%o)ak ze>Pf!Y(e)g%LM;^3>czSQIDvjVI-Kio0hesusC=d^K!KZUxh1!#J;oS!^Ho=_rRwl z;Q4J-QGjOvrb9y(^upQ{5VkYu2A{$;!MJ_^!RyZ_5{UT$=NUf&-yn0*wTBS1e>xe7M_!%P9 z#DSZ4Il1k9;vC6Y8;D5>A$|*b(3{be%Po=pcUbW% z>7c;xNK{wt7*&}37@0$_tE-(jgA19$Q#r6m2V|O$1VhB02Msa3B2&sSNX}ShZUy+R z8S^kZZ{@qbi@AI1<6s52{0m_ByqqRPqhh2mZ^GNa0HD5KH7|v>7&8W2*Y%*p)O*-d zYNC}j_`t!(pk$Tfv`|kO z%FGO0T23?8?92*%!@=N@!MwK#Ao=AeS56DOW()uoF9D+r4+b@N*YHkjx#neY4r0;s zvn&Vq#Vvp*00Y~X3=IYqX};F1U7-FYnYCyIHT_%29&k%Xg)_GV%gDQHj+bhDZZX=< zGB60i$MbVAxe2{geD^;e%Y%G07G*+4s>Mq$V$8ro!0kGmjc=&{(iH=S+KR?*huy$A2mEB z+Z_8M{PoUeU+{iU|6v2@zS$FIh>0-1+;gV^6B0g4gargmi{Oe1(L}U*MPR{;do_$b za-rT@4nt5U&M>J+IT7EWi(1p=ho)orkBhR-DfJlTDy4Wvb8K6@qEU z0b*2lI=~7jw$GYXuW0$uboXEL(l!R$ApsZ&0DIsb5y7EA&S7CD2DNP|VBr+whaO}o z-G5haJOHq%eHDbjtl6J)7WAY2{{Xf41YCG9_}@4XAj;#xiO!Mkmnhg+tG{U~m;?9| z1z7oC3iX2iW9<^)VWm{QATazdhW_hi*mtDElriKN7NBor7)ukI&mw+E`uB-*zSlrx z;Z+BfsjQ9e?{o>ELkBocvXe0M@8ME(Y(9fr1R9BhtS19mD?lv{W&;pAyZ>|iyecrr zx$a6u^*{bqo81KF2S#-{A64|D1)lF7*sW|b2hmnj)&kgn0*`Mv=&*xlkspjClsPRx znGMdz)@A_v@dW6Ho#jtPcIgtn1Y=;1TNJLBh6je$?Xt41B+Ul>e=6(40e}ZV> z&(yj}KoE34zj&$?D6qAgLl2t50Sw$b4#&|pIiCpwi0hvP>B%iw#4nAC# zSQLzle);oEJ!L)S<w+nyB?0_^+W@BUA%5lLNEQJS7-{?#d2M3Xw~0J~tuG|SlV6O2DJ_Opf;7gpp>-OJT%5(Q z2lVg-MN7QV4`oi~r>H%ACYy6A;s>hP;HNg1+Xnn{z?FFr{aYS*I)c9?gbxHy#W=Jhs)g~bO|G2!8{-oubw+QhHLst z=PYf4hNo=$a^kvkkI82T9)olLpEvV914|@~`R5JrPndzl|ItcJ_X^hCy#m<1e}?62 z!U}G*e~1ZTz*@FI&zD(?^SNCuV4m6q1)5yUE7(>!v5kB)AQ9)qFkchQP5N9wYEb~9 zC{U(X&p|5&)bRK2(1d*lRBL=s7(xMLO|bYgbZV>yO)jeOMrmz_7i1enDmZ5os9 ztl-z{Uzy+&=R*x*?f@A7dOX|gEbAJco%^=jw&-1aUYleIWdPW?JE_(@)kZu zgIU+KmK4)@-#HHVdio#BwB3xvuEnXMifBDK0a_H5FxdMzAoGJ}!9;NRH3^}zXi#nI z+ce{howvCEMeZOE+b(5bt1MV}(Swwe{_s*4WfM|_kpUs1g66DqT7+`dfJCOzR|h;i zR}@IdfB}KJkdEw=j*^@@aSmXeB?ITYdotYu4<{<-AWf;^e1g2 zDGRri6uqptzy|w#s>HcJ-z1Aq#OGa;6duMFT}1%zZEq7xN4bhmbyN9+rsh0)6LE$J z3Mm@jfwy3H@JUXAF4*+}rs4@hhWCb|L6^!3SRCvGE{)^;-LgS4eXHetY1rEq+2s;Syd4*y;j8M%3(j*EpAUr({S6KxueSn&n zo-aOQaj*&IksAS4<8oX{tHFb!mk ze|16d~e12k`ikkKwXjras6JiD*o|GCQe#SJTT>Z&7tKg6iCmmw~rGT z<(m;%ljsCc(nS`1T>|yTqg%&lP->l*hzL44mXkgD(|@SX7^>}ketb5S*(d0A<{3M& z$rGK{F+kYi*nc^UFKCi^LodLMKQ$mHOP58#qJ^=t@ZiXtAm{JM65hr}Oump~{B;qu zPA|GCY+FNV=rimsWM$v9A|Euc%%q7J5=P8>x{A-2Q-{g-QQDAz)ANpKnx^4uXaWw< zzEbxEw>=W;F33E^iUJ}p~w%h)v5-C`57}y}bi|L)QF<35)W&IB9Me43#>?(Ei!w z<~@8u04ng;U~C35HGrgX$OzxCVAtpi3gC=u?L08)zI_ta~YGYJAMrIY~ za6U)TVjRqc?}JVO5dHcd!QB2w$_@_zY^Cx2IixsZo))X+`wtFNl>j;x%baTg`T(+h zuk|@Bcfb4h6)N!bB8c{b)5Pfi4H9EO8wn)8_$)pCpO^@z!c4IROtI&|a(D9is5og% zYtNuGVPCnRjRs#ie4xp^(7()Lj z7_tD0g#W=%j5LtH^t=Jdr0S7u)}mvnh;e@{^?1mrst~V@YMuU`9mv6ZpD#xy#Dr6N zUAzhjjr}HF^KjlT%rUuYZA$rM51K>^M6VKFto#_q7l(uWR!s#7wvKjgHm>iy(b%2q zm}fcTShwf~g@gQWCkS&_P<|kkTKqEpYL~-=QLiB12ZhP@vKeu%hBa0e-)k7O5@lQI zvb(70HZGvzbADMm^&qs2-jGbBI^s$$yu z93T&U_kGVAYYbB=6z!gV)~zDQ@|4G`GZYBJVR%AxSezfq31`x&}a$t-EK4nRe_&Rn0km6dTg92`7PhGJ)~$GjI13t4!Od<~Q-6J?v1$+w?8gMYH%@ah~| zbl<6HPsW-6!aZmMO9x^XGcg4nm1VqtyCJ9<0BIh(sf@~O z5bwmO2Dcd_0jEjKi3O^i?@6Y8mjV9jIQyq9Obg!UDKE;{*eO}r=Go7&sF7@1KAL0H zWIuYY;kXDXb=-;;KAD(8dmSx3ZU|{WANo+Dcc+fV_6Lf*o%-h3kRvKXHx0UWh%VTh z<>)N@;vR~f^4=0;X2$f}yC6}FU1Tb1$(}sm#wgV9wmoL%8PHYWn$T%?uh}{IS}R$} z`sf`_Rd*ZLw+6J6KQX=fv<-(%>&L%cySG6J5Q)NNY{q3256AQZM7FBU^rX{zJQwV% z?cLfw^l{I&Glu|=_T}hhQ~@__tQ@0PCRD8TEaG`~A4gf}#Bk~q=GtDkk#%8+{fCPF zc-55~l%EXRD6779OpM&;ooKfr$(mog^R6duHr2@FmGvF|;3N|lW7b{UYUe@LzOQw6 z)ql!a8eVX}dts%Js%sx)zS|)Ampv>E!dm++^~L@F~h9ql+x4h@@$HxygQG={g-_!=i`x&d-6u z?(U@}%YBsEN!7ZOp(jdizfoL=CreKtJ< zxbWWh((CGQJ_T90nk^9hK(?*{+b|15{-FY70ZX`V4{kc!j|7mXMwm{{csKKGVYeI&=@0P5)WU;H7b3Rr)8-&IW2A+S0G=uR?C#`E|a;O z{^qNZU<-U-dU};u#=v#;W9X#h>E-)7IgKJgoa*+hxTp`x1Z?fsxFH=viNUg z{(>Z`iVJzZr=YUNZA)2~kU|H99;Qr~O$El{5*WEHDgv8*yIoqLT~@94Tm4UCS~y5m zX*v&7IV&eZ^%=T8PB<;x7tiseTrRnI1zV$_zwj|f1um06&%LCGj+I<3ODmM>EYH0U zE>mehrZM_gd|(jTC1p#d8|f@tCNr;-!JHs1inc z(OyKl;H}v#-9NnNLn(ROlWoB>_DRb!B2nx@qCVZdZMWWvFIsumk|lj;y!Uq2vnZ&Rpx+!U zxeUxiJ1cJA%BP|_y2Hg=4vzWgBwEu;va+op6Q`#*Da%;hvL#B$GqWm`RrQzu-cUS`h>gjrCHysG^yn2C`fNk!SFY_+y z$+r`X-{C@Ho5mOmK2vUW^OzDD?CE*1zce-#l#NIsX8)$#k}Y)rJvvTrAn-vitbYS= z)vILNa-qZuACgTj)h?yrUPw|(j( zj9{~X;Wd6}E`+7jBJ~fgnEdbgsW#6jFB(m;pf0lixy~7-M$gFY!P9NmlG;5XUv^R@ zVavYug5kTZ*=LXHq%WT$rRllewASexMznwj9}>Q9slLC4Bp7=tYLy#3S`c2Wu0iI) zh7(XI5Wh3Vcm0|FUHN7tI$z&cVDt(Ol@|HI+~N=henbg`KC1a_TkMmd5e+1aK1U9{ zeM0_SSn`y1C-;vyr`EWkp++xNS7$vBjx0u%1ZOG~Qt#EC#M4lXd+n}vV7Ga!t~TId z?7jT>k=P?is}wyp%pVMLWeYPso}{WKo^Wq1gnf^ieOs*V-SQ3A8`K_DqSV|tqo1zh zL)Y51?flmM0h=B}W(6;UUj?&wBckd)L#xY-w;we{C`rUjJ=1N@a@wY)l;+g8+%hB3 zHZp%R6Ex)ZjEeZhP?@qPC)ift3sHp%(^zVqsWP_`sxKuh%*}8%G)w><+C_7Us zZf(MS)a`$TTPb&Q4Z^P!O_g8t({XTgB=-g#{k`ATg+iS5A7CbJ7G~;oC|*rWWTdR4 z`iP@qM;l5`@iPtUWg0*XZQ2H*r&mHLCt3A{4G5SPB%`tByG<7KyVQhn z`GikQ2;Z}fgczlHe3Kcu_IbyJUPb(}4D9W79CL;p$;lBpW-G17kDKNUZ2~djf>mN- z%|JJ9hP2V5g_y-_{sk;#oqx54FTpUAtHw&1v<0#1H8i4IpoOtPGj`r#!5b^C=?Yi5 zG10!{gZfa~1D;{(hcOO(oZC0TIpSMhU0J_H!SG&&uI4sY>dU9|Zwvgh*BW5+cUU#zcF5#12+FeymDLuX0+FZXUzSf{=N(Kop|fOmTyhzSo5BH@{2O}SUYA) z+{RqR7AXDrN!<53byk?){WkMKl@GzSn+ub`d0Jmo{8`d4-z-8uQn*SA86H@z5~yQhcs%3)hw&yO&fwgiSg!k zd*va0(miKms%QKsJ(|~%z4#~RMp=R+L2O)AW!6htf9-1R zHf%m<7ep#4YU29C!6n;-{xt+4fv_)3rBe31oe-`mG$?hVUaB10K3L65(u7X2`DMLwx2=nuf~2=0NsTie30?z-dvO;&&R7FuQb4mblqq zjq#3Sk1M%0Dt@f)_&2BR7Ibn9QBkH5%7@K@&JrPW9gBS)IXRkG?Xb>dMQla!9Y2wx ztc18u3hU&W)Y6{GhpS>$*M4T%jMp?*pD}mUmk)}9IjJD_ad-W>_x0Nd4Bf?^kpgT8 z$OicDJFH{lSUSU72{nidR4uomS4a$~tbn{dX8vSoAU(AQ9+y?svz=OA(Efm$VbN54 zhi4o0TGn2i4rf;7&8tg(tdq>0UD2B?V=jIvidxMR$xgzEO-whr=&i z=zH#ESs_|I%p&9YkCxj8+ZD0g9!mGfiAQrwuaa())ohhD9T*-Q%mX{6%Y;vS1t0%N zRy%NKcg5N7_@N|;2YFmvTbwQT7!@zAXx6Wd`%NNy%_MvKB$mWnpn$a?|*MdfMjh)y^-Qt)> zSIX5CvJk=im@*5Ax0{Q>eY+K-Ep0CN;gXLT%u{ZphjphDH3+3pmCgwB3e&`J_EaDX zGLby*c9@7>jz3V9Cj%*LR@22VIO`w#@<2m2XU+~#i5c65*u4KV3NHh%bQ73$9}V}u z{e5#zk2^IiQo;(3TvNC{z`=&bvJZ(zAAabfo1q)XSHk+HZXlVj<_iSUcwW7)nw%{R zBxQ|twUBU`e0F&vW-4g?)?8|5>qZuO*qin({iWHsZ#%ybT{JOpcrCwhlD0@>iEM|K zu3a|!6o0nyT>63%7*762IofT{0=GLGDEP^7!l?UaYm0KqjS3O&nJX{0MNv;P-Pnqc z`uwA4;EyJNFDw@2B4f7GcM)JW7MJ@t;+<23faw8;IvW|L5OnB*pT}(^~7=`zP zA5iJerCvH%V~y68OIPm*JVOwQ<4d27`Ld0UccOZCWS;?Vwo144QQfrLW`l(6$711n z;HCSJTvG}>vXQ&xW8ebkecdjos6>(&K4!{g$u#_0%YET){np17(PJp^IyiEMu2!Pg z;{{HZ=C>Q}Kt81TY-V?~>+0k*m&nf)*mD`NLuABz_95*Ns1~_@zoQN`qz_d>p_RBKd|elV5O$$lAU5TPd4k%U?$^X51m*%*&rtplH!(664N>W4y2cN ziCjb2Yb-fTbY>W&$PpJKp1fHiNz4y@NSyQSQ64j+sS~%p6zLI(ae{ZO* z=7u;8Gv6RLt#3bI&jj3Ua*gamW*5JxP^Y_4hJu zrthk0wC7f0HT=GOciUyigM0hUhG>%TAv*3EDiqAW(-Cge3{Y#hi;Uh)y}S1)Q(Hvf zYd0`6^_F3$Q$(i|ZH-lwhybp&i485w8>;aG4{YNZMclW&S8uwbN~QFaiELM{wsVp( z+R@16e1v$UqJ^9G7IG4sdZwR{ER~Xfhlj(SwE`|e7z>ZTto4GOI8)jgy zesU8^LTPG}lK9hi2KRpMP84|{?A=z0R-;`F_b5t1IzR7T_D4B@7^0Bx3du>|`0|F& z@wm|Y7vnk7z0v(SW3L0pB!?bEstrFNR2~+8{pH}PW8i^`e|mUuKefCWSM2u-@TKH| z7fx4%vazE0k-DproodS;?%ML1-f(kqgobI1skVVFtrQMi4?pqRYTJ;Q6q%{GE?bqP zkh7!s>pfpR6I#i%k39oyRR}_D5D8GzJ+K+!UDQ{`zbaD7Z#aJ1;!E+yi)l^rI?v>d zTdvNkDn!6S75yM2+tpZZTo{udAtH-oUL+RQw%T1v!gz;u^>;qi@6J&0tf{8 z9hk||Ar3f0oyDiWOKB)wvi@vwHUEU&F6ks@K$g(*atN8o6g|Ee} zyt=N-Fb=gcq{l>94aIPW47xL?>Jev!Ql2iMIOBNT*0C1Uk2Sw}D25B$)rPM7jqXq~ zWDV5zkx`g26O!di_#}Gur5#c|pv!LnjF!fZy6(ED17^=R=FfQU3?J!Km=%7#4jT6} z>D0d~$Ig?1flJ_xs9IdROQN_WwqhBL&VzE7yBl*pq~uc$Vk^oNx76z8Wj{|JfSqSe%YI-t zo37MGH{Q;0cL+4w9(pkyQ8wVsdelzdXF96xL9gx!jOd5LeVMewfh@>FSO;wb$jc#$#Ki$fn z$aL&pmeD&?CkTbwJ&{Pijjj01w=Sq-OK@dtMc(2k2@LjoT>t_+NvC$Xs=3j%cFHcr z^p2(Y@dsTP+#|xl%yZ*^a0{&{s}1uWrVE#r4G>M|>JCcM;t-cC_EZcXJJnuZTH;OW z`Oz0~HSk=wHBIXyQH-3m)3@1b2X9+2RqdyIOr<`U*12g|y>jn4CxMm4lA1{-8noG% zl(fntmMCh)wShz4Z^Xep$LL)la69WZD$CPac(b$DHvJ8bwT|6JNbE-y3DNVCsIS)& zcpYwL%z@oT8CI4Zw_EP%V;p(<{VWNyR7P!tpFC;N{dB!%uhA>~S{Zv;N{(4!!;%HqYAKOb(IS#Z_AZzvDn#}BR85zT6XkKtFPG2r zI(J?PJxZ&3c6JB|XC34bvc53y!HW!(aQHfaMgTfAaHvD;_$GwYKbyU!r6n%T4DEO} z|Bv3STXy51M}+@TE^8dN9bpAS!575dApFTBVfVX$sAg2TQ?HTyG&WaC@X6B@gWI0% zBK5u`^lOW%>K z5tP@hI|2AyGX=cowd!>h8MDc#i6)1p>LI})21|mIqe{B;aD0s=F&cM9Y}b7IOr-m+ zkB>$I72i}iTXe0g3M(^L94bd~W#RsKv@lW<;CZh`CeqpbP*3KRkDKdc=Q`>^uWNHx zmFo~HZhT02BBC4hnf?wKZU{m~jt@=7r6H354k@a;8QwuTGX-WsVU`?iYFr<1i7XYZ z1YJ&1a^I*-OnS>vaE42|OkDcY^$rg?b>U@YFc!H#R*T$^cxl3l8->w zY-%tyV5G%MZ7r;>5g7?^PA<_qyxg@s06uvg%64QUed7X7d~Ob9z02q56nhad*U^-J zR-+Z#w5^ig#Zon``uG)EA1$Q+oI9AOY;CyRS<}ARza}xV+CpgV%F(#K&-e1_ss`h& zN`7hLr>BY21cEPxv~1ME4}QHbZq+yUzqZz)y3-F?Czvof@EqjVJA(C`;@>i}{5me9 z?M#x%c%sD%3;S9cXvV5T$np*N479ir+u6Xc1b*WL5l7LGM838G6OQ=j+A$*bNtqQ> zPoOoH6}luG_z{kG`72_9K6$?kjMh{qDI$VOWSc3W=dgE3O?pa36P4;rtt;m?6FT>S zS%xz_SPsB{wYL^-0$9hS@GA&-wUx=pmnB7SbHs9k=!&&rMGkD}G^()u#ekeyGi4r?84gT`5IDZTagw`ZfS(elTqZkuN(~HuxXkrV$^}14lAZhna^S)r>TJ`Vg(yG<%}n11Y26Xqkt#4d_fkobPnE9oJY;zCp$>vny`~`C_^Sgi zdOcTqog1c#4h*9_UFjnLc6IkGd31Aw85Gv{cwp9a=d;~?&Nfvtc z%tKNGr#WW))jl?CG3So@YER;_e~=bnmdHB-Gkjb52QQnA&MJNteJ9hDRGUwI&V){5 zyTy0joX#NxUVYu|%6Fys*XAR?-|o~}zMf<)qWKy*NyiZE?vED>B^dI{IO%V{))2@! z(8O9$(--eQ^p@cX=SvpamrYu3hJ}sny=w5wmTutcj?6{fuD|#Ee18o246w1EJeXTa z+5Oxy$M}jzd6fZL(Raj##~0&j*9u~bF0l@cY*Y^37uGRXn9mHr zOe_niDRa_5cDI0yKR#>YI*z;AbYi>$`cvY;>|9MaiuQG}wfytE?{c+w@IT8f6%x3Oo$aLu%`O|+O$ zxx-wB4={3hp_%lH-5KK|J-2B(yx-v!CnnPvQ zm=Qs-;|}zi0;tak*8Im9!L$rD(;y}fDO#E@1?7YHjbk60O2ES>)+gnDiHRAs5;AmL zV{g%AwLHAEHLT*0LCbq!qb2tCqv7hu@En!%X6wdr;co zRW*mpNj!4glPKZc*#HRkYOia=Bivq@4O(BXvb{9=s;jnfW}>x21DJ98dzW7%^pUwy{e9H9DQmdDQ%CzT zBQ3)v)X=`dr%26DW8zZ-&$ivm zXX2Xj!2Z7&l6h1$_<-7)TDcNM+~>-b9cmmfMX*-E23VF+cP^ zfN{{zQ>nm~Bj63HZ|xv_bkR?=1h?thve*;^Wxph<7i8~T`@G>X7C^5IqRSBkp{H&J zEqRDu6f;+CTx!#4M1O0UO@Drsj_7@mX5~%pX`q-Gg?W$C1=V~kmrmz;rO=aH%qb%v zc2f`-md=LEEr&Cdu~}^b4a1k-nrts#m^>EvqQ*`LC+zAfj-F9+kmpq^@#smv6zeR7 zS>cvatB-5ipLi#RW7SSh8G#pDq06{`b;2)TQr+8+$7}{)Ys1B+pwFg1BP{dmM?Zw4 zYk9tV*u1T4WjS_;8*dNhkUFDxYoU}yRjhUO)ih?S8)5VF;=`uZd|-gZixoNWggdhf zv3O3u6_E>MH!(9I22pQ8-5oukJ+0e6+F^Gc`^Y@bb@g)PDy!GveZ>5uA`0*6w8J@g zc}4@l_Lai-u`^w`;5}{&#^0(Nj*mV#v=pO{LA6c0<(Qw&>CaX*ofIrz86-8RFHaE* zurijX;*E@GpfEA5kpwbg=d;x1Gv3a3!k8PHsr@R^2e@rVU}A~ea8}+r z7}IAuIy67^lOz%2xc5>&fu+&&R0G@j6iizWoi+nNm+7W_6xIzmT~jWb_9P7xh!zh< zHWU-Mf9DI;eMciGB)BJApIUVuM8JfJ+K9b|m&9`4b~)C=ptzdgF(&caNAA_1;xwPImX z8uitzVGqFuXBYN!Lx;HaRG3eRx;PV=&PZD^F#wD#!kwP@d^F&aUFLjNv2*j-3@rW} z71fbI%iwxjs1wSiQ6e@1eq;~cPrMk|G`u88cVWa+2y@C5sW4EEj(<)mj9)4-dGX*3 zFcr9ux9OT*gBNf4ysfTld5|6VP+np0VuzljnO8O$)4gwr!$Ig5SO6$WS85aJ=JpI_*-boCR{mCFR>Ew0E z%#6$?%IUhJ(_PwMOfS^)oE`Rz#tkl6>bhPDw>pwtYyy~nZjgtdscFq?nuKux;?_u? zV?QwNOKUg}BV3RfaIquqWY(W>-sO`S|9IJBoN4XE^?IT|fph3rm%m|cJBs2I{% z;2xaQ5)lz!Ik|YHKWq!|#A9?(CmfMrlDK9s!5rbLK7)9`fyy}z08-c>Cw>>&7?G^~9 z_+|{-**g08q*PFJ(Q&L}r`%D*=E5^pyC;LpPZInhF}vl@6Zcny1FC%cr!pbJ!UF14 z&1--4`|is}!9N#;LMs*qsV5|9v6bkge(g@hxPYX+fRO2{K16!RiytpayzE4l-}$!Y z(kRu_?;@S(4gvq-Uh#ssL^V(<2Z7l(X-{D~$X0N32Q+K)a~8*1-@mmgoN!O)t6i?w z^$RRJvR$PhNXg>it+Y?iY=RFlxMMk_DGUlP9F)>Ole=&JD4Bf){z<4%Vz-0NJoIci zP*bwwb0wB%&qgSvqn6D(*h7tatOB7A4Ik?-&lYE5E?#8$g1(BB;OnaVI0A;q5du{l`^~M##Ed%t8sLKJ3>vinz&4k68 zmtUyQ{(4bSE_}GQEb#3Rl-j`9M6Fa_Sr*gVE4(gMtE>LVqVgH_IV@yljp1}c%kll|yM0Wl_e4XdRP94H(n4086$bJLk#>alA=#A`L za<~1H8y7;d>=r$097rh2*nnhv%#SZWK0Z|bsqzA7{^s;IG(l{}ciFQ%>=bW*4uJ{G zurw|KFn(Y&suKW4$4k5+i{cFbc_bSGjfUtrMest$GYzb?lA40R`IMiocN0n2(x|h( zQF}&?l3cUjpq<4ry$2k7V<5~O;6PqD^JA&&%Z+^@wT1?fzSoeR$uv3pB#``T3}447 zh@L~n{FgLWJ6BF zNfn&}`$BwnQh3JxdraZ^s^CN+T9)X8-0e67H1c$RhTs6s%biFoyVeEPWt9UK99~Xggg{VhK*kxLZqW=K)1NTK1tEy~0PZof# zQs^SA&{l)5=_#d@q<-?*T?xqSkn+g1Cr;96BLN@to5&diKjaLa6b;N>al^SuqMh z5u1Sp7ohE@u3Lv%s;^)4@Unysn2pDORg~1bb1g4Vd6~A{A`)hkfFlSYx|Xj#iehJn zF2Bs#<|{cVIoSW{Cxaq#e-ca|Ms)1y03WiNWe;^e6XUSAa%SVR-4zZ`Okr-5RGW%Q zSAm!?o?29FH7p_44Oqcfo@Bog{=5-b$RWMYhRpp%9C44of^o}#E6aM)aPerGjNR{& zu$V8HLZ`4=viGXBR7R-a>XP>eV}EFpQu8oVAfw%9Y4fjSXisS}sBEo%FWW3W`xeLu zQH5^V%xc-G-nJEGse-{TWkgSD9(@t#OuM1?`NwwF?H6lc=VQs3=C@Xn>xsGcbwJDf zoYz9i9pgkFs9FfqY%#R0Zd72wW-xPuyi>O8?R^|yvf^45HzInVa@omi>&}Ka#l>~q@r4owPO#(V(obWaUk6&lz@%< z3{Ylj;-%`saU<5-wX79Gg14$qYrsZ0x#>Mbq%Ai012+~N^FLp10>4kKda~I8W@@pZJ7GYU70LdbK}m92AfN% zW$pphJeV1$cv!nK24<$smI?}dJbV&wYokgZu;!i)ymX>{&w$N@)$;2tV=2FF3EG!P zzk$pvz?rK8Sbq%GlfJ!LTB*Lr9UfKR9C4W2Zm#gPluo^=i0Mt~#8LjjX-A;C9=b7d z!fRf3v2*DAh)w51lZ`|;eGPS$H%HV}5Qw4*?>(yHv+Or6T^VSrW_GGl4BV2oXgGNt zT08~tkIJbT!>cauNB|yL$DR=L{u*eU~K`yhBi);}wON7Cdotpa>BY~nqu~!w=8;CKWa`uy=E%0=! z6B@5p@POh&=($XS&aTTAT-XF)F5CBeura1Yp)Qoi7}aactVUg2{?CCgjj?2kFx) z_SSpv_x79GKypLpHGdee4%sG+5|4C*2@`lg^&yDvVX!`cRyl#LjwqE#^78ba0AY2j zP~g^k%GTmqmNP&RX`7C2DC(pIXc5pC8)oZLMiRt4!*i16NGtdv5&$vJI>XD!+t_z; z3CG80pR|vf^JaRqf4{dXF!vKLB|a{0IDIkv9q@789WV}dvn?b$J2o=nlTRm_QommS z^>yd1uo=-~s~r|eKypGeGs@aVfY8BnQo(VOw3((ui^W((+TBKHG21LpcUdf5G2EL8 z;q|tRFf9|#Qa>^1y)=?#;ax1^csAjJ8TD}eyWz}CdI$Dk1DvgvisUB9EHF|Z+f+?h z>%_jsN|9ln&93k=sdgEMweVGRT01RY#vcAgPSF9oy|^#uT768)(n)z}&AvVOw}sXh zJDVOyP(r@xG!+|zME=8@Q3^16YV_!uBkMdl<*GYwm^)1{Aba{fAHqe_(^nb=g*%%^GkTYl-TcI3>)^X-(=~M zTVYy!y2}8n4c5WqkQgC19v+^J^7}BDH)y1%Txf~N8d%T~22U(ZOiWB2Hj9*w>`3Jq zHX{eMA5yeu5^9NSu*$MWF(X?;*I6yW_n{{MYm zBfJKRfq37pQMUGGG_^HQwi+FuP4Nkll+9WaTH243wA{I2M)Sl;fW@pG%sir2)ld&n}z;94 zR9dWB4W0qoKm&)cE5nM+8QC}WE1{GuotI{<*%Q9gjGp+IoY@$n*NW|mF|h~!6Dv8K zn{|J=00Drqwh`m>^cCJW^}>cG1J(-{R6mZ?6fYfQ)UEj|gS4P@V;!$;wJ*9IR(ys`>9huGJGajJsi7v9lI6bc;I` zKypSZC95Mrf`|>PE1}Ljq0TBxln)hEC9<1P=fYVmwkxAx)d)qhDWm+->mttO4F%ri8 z`12z1+S>HL-!K=1Bu|x^pG);XbZ4iyXAoy<0948hrsjbEre)0q%}MiWY5?@fo}`{v z;_PDi)v196VekyEr7jqjcQtyRbNdGJ_Ytzp^YGA9zEE zmE4OU#SbPv2|xd_JwIR8t*OQw8W1DxdnNyw6su`4ZvJ3V^sze z?0)aqBN4;LQ>={v*IZ{k zQ#MBZLA{iJ-8!A1VCdoD*Q?1^n=$ZfVgvL7fNHYSceW1R7b+uKU2B40bFUtuVyT4y zmc|`~yh8fE32<0j#wsz%1Wr(W)8?wu@>;1?s9TsZB827@lwaf68>i8cyh_$;dgqLGLsk?Z3A?+b=w5 ztZ^wKA)p7lm5D~n^-k%h+=R)4Oj;B z{K*46v}bbKmrq$)o4gs}H~jo1((yF60EO6qawcFkTt2FLJ+s}B-xRPS$Dq=dA`DVQ zq66>%d}*X+g&&r7opRDn)qT;m&C-*S-mNPRL?c&CDboM32vS%i2BC~7wcy${gssj% zQtMySQ`;_Lri~yR_07Z-z3PB6h2-1Jz>-1^#D^fCdN!b8uWTro3#)gcxZ#Rym;u39} zdnS(qnxL4xRb1Of$YlH-c=;^FS*YQ2CQs`B#v9X7+0Rwfl$w(XFd@MbqKiZ1a#*-ouUh;fSuCrNx-U*0KzerMx!rUZ#6t0a4d z(vKCcKFJdPSVh#PYpc*-3%3TW^>i-m&;e$K<(=Kb;Z5*w$Na6QJFpRNCt6}DgSR+P zg_w%+L0wQ~hwovPVhC7(py^HIAPtw8q2*sJS_@}dI#;~SZ&gj&n5q79WJFR@pQ>lf z<(ws;WT?`zZ;u`b@{WzH=O$keGo^!b_WyBXf{?bkPW3vVCKR=rk1ur9va8>j2dU0i z+t>{L$Z-9m-Oq~XG4SMsjC+Iu1a>V?*iAE_t2Wt?_d{BrE)x4QFB=t(WW_(^COxFb z#qYlIS8>~$2V(mO#_`IN1Z7@{vPpluyre=kv+6=;LGshp)nc~-Nj&%s&&+DE9aRB8`ML`m?>dC z_O}%WjmwOS1m4$pEnY`tSrlM(Hmd+V^BJO!zx($Y7NtF(l{ed`#0zOS}CNJ(Y?kf@{nAM3%Jc8C4;jgh{*<`N8s#wF7SWj9I z>HP75fA6YOy7U6hpho{Ai3A4$8%+#g^`;s1H=h9$ge7Eu+-ZNM`GHD@T#w8HOqMZI zZz7zjs|Vi3384VrqubZ!UTz^5OiAz1UbbKeC&0(Fj{K|1CX6BiTTmrl5ssn*q%Y?+ z6195qaiULGWPf-j@B?#jMWUQVQ6!hrpXz!77BZ@-(g36j%j79m8l7^y7JIB!=C zHXc~F>Ri}(G|{G}Va-^UQ6|6;rraa_;?enP?7`b6<1f)utsgK7VKY1CuOCM;d(?hP zxX2|jun!7av00)PX`7>`u?z$BYqN)a1U2}_glRpD3$m$nA639?U(>B)u3>FF5 zfMJaDv{c`&2mSa&AQhO~^Q&&^f!YN*yWEjl7rl2!`}BNayCxb$sZ&oar2*4(?X=_6 zY^(308TaWIPvDxwE))l?{;?@R!D=f^P&w{7b^n({;)vxxZ&%FFk%R48lBPLc0D$2P zD{|cc1o$D$!(L2yJHMTT4s>>|Dq3qj92= znjXN}NGV@0*5|*570>ICW~z?WK&e|B_qbh$1!Qm8@>S;veW91LvOy64jf9DBE(YCK zT9U|VyYn&W(m}Y3p3`1znFe15o$~u{>Jv6UA7v`IbPPNmT`Ek9e~?Y{PL#a^S~vna zI)+9?a=X%T#_`?LYObYoy^d_m%rQ|R5HGHqt&J=wJA8P(Nb z=Z2k9-~$XBXVJTXZ|sb_I%)$|{F`t#Qa2hTH75gqNgzh{()kHV{WpNd4|yqfl3e{8 z|3~E%zkQ**EBGPg6xF$x7Q;*hXS|fn+xW6<%iU&hZ-*EQgGPmhlF`VFoLH0@?4iX7k*2yWO2Rk#bAK zfxOsgi2cs2?Wue+rMxP7l>1o2dr3m%*cH1rVI0U^bisLy#FkuzeT!A zAaet!NCG)OZ+X?0Ev;z1p#0}@eG)1#hK=u?m&qfFsCi=`wD< z`&V`uox~rM@}srd%WoBZ;stwFPBpD&>-Yt@?x$#t#V{?8qw?IpwnScaz4^ygjLLo= zXzPb zZY)VHF^VtUeJOq*`|^7XY1I2Ola@+39Yohxr1sB00i^uto+pLyn@3r>TMla0(^s>K zHR7}sL%3q+)fgrc-KIF!+!^UFXAkSpqUmUiN0G(8Bd-X5CEWO9v*QCzJM6Qc&+10y zy`sP(j3(n@qeeJY#pJSGoVrk1_+>+gH?0W$Sl8>NquQdLnze%E%fD9Rv}PxrGA57l zsf#rGm<=rL)d|llXwjoT2OhNI*8lAMuxj`)c_?jL{`M6U5b0j}Qtw(Ly{43cC&f{Z zpEaPK*S_;^YRCM7gj6QT{ey$;td`gSLDdE_E~-9WnB(MybUw3;1RYbthU{$D!@1p; zoE#TgaSSKTbsn2;eBZ`fByQt8iGyk-Gc{dCe!~)nqodb2xo8yKEdv@iN|nnpI$&Dn zTc9weB_Ti#2l{u| zvj??Y2)_1;G>$V?O~mzKN$4eKsy5br`U1`v6&CtY2?GSo*f#P@>5KCg%lC1`ej9>_ zi&S?F$>ZEFiiFAGYm8mLN)Pu{@t50CVph@3i#g^WSCzUdXh)jk@^V={FQGJa;hahX zo=Kyqzw}^h2#DwYr@UjwkLN>$AG?4*xyPH~7FzHq;NeE9J6}_(z=kMqQ4x9#V$vBW z(0kgkZ<%CA0vo3FcihdoESf_B-p4-nr@Gj%XNfFdB8%3k@^sZ~1v;!;sj8ist*tyi z7NPyrpQJ5h%_4IQ=@>3W*H&VZ*tqx>iDMti^eht7B>lCuisqZ_Tx_?!h-M?#a;co? ztrosSUZ{Pv3NmPKka0^#HDSF8d7+ny>BKn1kNPh@MnAm}AcU=WAFMWdE>0SGQdzjv z)tdl!&(k$O-4~9swt;2v%ycn^P?FbX7EyzQ&$OqKQ1Dch`Yzv zF?qP}Lh=4(4#}-m!c~_WlOkY2TkeXvG*5O)*84g69_P=iHih~tKd;k!PGO2^0HLj# zK_N-L7*+ zFo*w2z~T1x?#qYaAa3NAF*&&8yjuSC;&niayZ^zG5Wo&xYf>O~^~u-=)@?Oqcu&@> zx|&Ub#?(+<+7Y_>-}&MtL|!vA67=hQ1;SNmg_Vsq;~R|H->TO2B)Mrm0}LV8qlx2q z>mCa8@PYRONsX(D5dW+)y%BZse$tw33n*I29ay-h^(jSHr$d(H+&TmWKV?rTvdW4R zeV2}Ny+2Tmn}_yVT|mC>yE_LSnM0PprVoX>A499KsO79(2)-Bgd??!i>?TGU#UCfS z_N(&VZeJ))T(W0>pq+)^A3L1obwoU&v@Ri<SO;<>Pi+#$5^Mc2_3a2@-bHuTOPVv>3@o-C4KJEG5O{ksLN`0PdhXllq6`^QJjmc zy>uB70ruDcgkRsfI4Ca*Xb1&WI(iA)ZX05+J*M7uy~yngRg%>oFpa7Ik4a8_RYFfN zxd8Zk@k7_xH_~yAKHbW5pX{yx+@eb!DGU*fb6$hBaS%xKvHtaL(hSV|#n`J7+ePB{ z`bD%`CQpKS`)>c<|JjSbaQ+M6JqT$M&VXbwyA(mY2MR4(RA|Pp$?gTRtK(jUCP;8g zc>XWqJ5XZU{{1K*YA!y0;LT;n_&qK?h0SwFlG?1{h!P zK0Fsiw4iBj)9PAd64^Wx6tw)1bO!PB2j;`?6^KYO1%f-Y*z z-2Dp7gpe+52C2&~!KIT(0;K?r8(z}HjMJXNiv~aNoM!0OB7b}W`M7fbxqKH8B1r2m zt+ZAG{?+IrF-}~>GsfOpLB)l?VLpukDc0^q93dgWyeZR6I~)W@9eZf%u;D+;s>Wy> z>@dUk4sQVOnWuA8RU@XbHTfio4mTt zY4IqAtLE?ghDWDzcW>%i)5rRRI;)vqFWN2IpydXr6giYG<5Cb-OvYhdRt9YGjZbsl z$tRIC_6;WKoexuaZ~poy%cRY8mKOVn(C> z!a!FR!kI;q9FUeu0JUn(-*43GooL;6sp%rq$Nh>yS?Bcz{%jJksdX+qe7WlVkmEG| z+>JI|&2Fwg56D_W>WXZFbhEPumy5JEcX{*~$mJ$vOvj|Zj1nxRtOo=ez)OAo)sBn$ zcdz7!cd!_tZRiw5pSEOwARq+9s5}n_qF@{v!*L|5E2S7bSqceuMdK3i)+%&H16|^E7(9J`KmLRD9YcVw z_%=yLFA}qwU=+qrZN(kY!ND|ty@~kC$OX04&%^XXuO3onnWivZuo{nh!rpO4)e&@S zZtR^QAAVJ`wQ8hVL5kZ|-p6nsgyb-jshCydvWp*TH}(;3BV84y&Q4+25EPkuO+F&P z!?Zq&*Z<>=Hp_=7Q-tkzeT3txE^l9@0!)EgYz`ddhYlTcO_yf)Vn41=bj*NBc=3AW z2QX5=OytywB0cbg7XL9sFY@CP>efjDf09tn?<@jhSd^2?QQsC!M&UC@gighjhUhWS zh>^);x7cOylWywh#9w-C7J9yoD6A_6cn1K(lqF_=+%D%22?+F|<(@h}w44)Eb@{$6 z1YrB0Dw#l^37FK=(9+SW5HYT{&oz;YZU7pNljjGF6nkjJ^k_K*O#|FKrK>g*=nWVH zMris$+Yxb4DgtV~LMU5(hU_7>A%y%M9Q023e*#cxsh|p`p#}i)N$bkSTmCs5^l1tp zX<`5h2qnSdfs*|f&A_r{qbe%YH}nlm3;-cRDAuRG+P zjtmELwO&a*_r-vTMKXUgl|+mB7c%4`VX6$aeis$DepesaHtq%Ow)sej+ zNG8eUGqf5Z(+w@Pskpj-0^Pw#Xf~>S?|AH55_qs*OC6lpz0hAhAHkEC#M;yj+d1?; zbU(Gr$*idozcSp=a7*hbdHphh%7$FMvG;qL>s9NOLV11_Yl}PHhx5a%4`k(pcA^iJ zdBU7Z*HFj_)Lkq55!2H7Z!M>@J&sL=^b~7rw|a(ohPQXS%^Rc07wHxs$Ywh2irSPJ zzFNQ4Gq3WjhvM02>$R=;dxIR$Xm1ISiV#J)b-SHaK#$a&j_a>3#U% zdb-25H@hI-;BRNKBmrzPzDGa9>Bd19`*g~Y7<`=bKbwf%td)BYf@dP+vsFsV!J?^OA_=N~gmWm_S_GuC|c}l$g zWE#`B8$3)WC40{x6d@}#ga20$i?xvp)tH?f(DTvj_h(zW( zJ7<6PwxW^ALSWKd?$DIV=5VJ~Ryd&YMjW+aWzT$j*~s`rN65HQ-PFMOZP;|GRL@oh z=D`PpVKw`;Z*xy3{*@qy{~5L5+fb@MOeFwS{;&V}6*(X}Lx)$EmIhyO>f&N?oA9Q=k6*qO*C;9)P z?Y;S^@LP5#xKDH2eJ!G9`1u%`!KV!Y9`vXFNs1t`^XbOQkPq zQU0&bE&sEd$QO)^KPq%sasf?tmIHDYepqoW6Z&+&&JnA+;$G8+E%*RWxN!-_cP`#` zBXnT25e-n&E{hC8`3qGLqb`WCng&c@%?GbASn=oHi9Ba?3;5yVp0o==B9#BdDe}3I zy~mOW_}QlLD?M!C-ws*zlMV~;ge_4t4qGfVDFqqOhJryfmQ=$Dv%YO?ulNjng5lq_ zZ*X;e4D}&f|J|LNZZ~0{e(MbQ5(cxJ{1=zZtR;RWax^DnQX=o9b?q1!8c4-kll74wDV^G(_d zc#+xjrJkpztBt3(`CDs{g1R!Zf}N{}r-$WRdpA#Jem)*P0UrLJrjyaYTS1C1WVL*< zb{3?gxDa2M{%WUE&PH!=Y$>2tjcvMm4({1E#xfB8c5<_LV$;ZY-XER!q!#B+j$)R0 zn!8!p_wPa+HCBmdAvoe$gt+(;v#jELV%2AEy}N%&X>zf`u*2NMo6AN@G}}tcTH9K0 zf|!I*Ig*kKr?x6nr42!j6>KUKfWZGQ<)5yti~svep5#01|GDR5d52B%I%$nvF-b@< zDYCNZ8>eED5xe5sRJQ(9HpQGIwhPWZ%bQc~n=7S&TkRw^TVZKwm87+jY)K1K#iXp> zW8ViOhnk8HUwvY`pbhTi#@R4-mEMiEUS~HU8yNU?c1pEmXds`&rr#R&ERtik!LKJyTBhaM6gLo~;cSYX@5zTD1p6%E zWcC@IO{WVgfUHl$-5$y{6R~J{o$2}zvOJFOZbMK{32us z3F-GDK0EKT^qCl9XV{TanLt#EVxRZwZBLoMfFeasm(v>Dc!Ls72gz?y!i$D<6}C2U z?zwa0^6Ag58Ma4ln+qH5UyUS!Ak&dxt@O_NCSncv2DBXdt7Z>gQu4t2_*$lcNsa(j zW8pR?Q*_|}cco+GeH$6VEqSJ;Q^g^tmuNoFaA^tHd&=RLg*A?YUEdC+q%~m=7rC8~ z%F9aUSut0$wlhvT#C~90_IhLx>a5Mgp}ooD(0uuC)SbjfvjWv07-Ceeon1yItRcDZ z2o@KQk~H<(d#EjS-NVyFwtkN*|9%suGjW{)a3|=FUF}|S1+0FKLolKhitzLNy|)^8 zp4R%E$2J{(HG)F3DVhk7EUUmfV9jbz;1=lt!}LGdbF4FcA`tjxq|O^Y4+jLzTIKgJ58_T^G4sc16`b-oGzwkI*b_9x;l79!QipjG7|#OBJlF>3g?BbnnAzciO6Z=Ed;-W z2B@JDPX6Pm%7i@KQeU%L(d5hY*wcwN9I(_PgrKRY^{f|pXx!`MjJP~@*kt_+iumdZ zEgn5SOUd7y@MUmhcw3H!5^eW(&GDRCY^Iyy;RW5mq)pbkrk&KUd_D|cNI5}_4_D4A z{wTohGb+I|Ukz6HgNmCux@>p`{1<2}K<4@=8?7b_+9tH&kSaPsWkK1&b49YxLn_Tp z=KS0EK{YF0YX|=le4$DCr91r4F9C);tmfvuUIfGAHf9KqjQ@Q5i*lMsm<@TMFTOOp zCDr3hIu#t*aC`qOt$*!jC|WXYl@5+y?$I$Xg4^ELRq#kVG;At~wo^i*?qs@KE$-fB9^h}$@wC_dc z@1Qb$PR;4!=ZA|bo19@Hradu-m6rYwPH4d`}D@V3M(e=bESM`=% zo#Eue3FlYGX(5aH!?cSVxis-V2K|M8zWeFR?b#ua2NPR*3qO_t0&PE5PHkEi5XzK0+TVq@TUExh$mKS&PraPw$nZ7yFUJ>czs7%20My|A0k25P>BR=kFvifPU zyP}#avjgJ(>O~IwD^GatUkZX?$g%5fTO23Xt!$|rc-DV`udt=ztHq1|dY6buD9Bw} zCVOPx&*5vSaPC?9^!nP<>1Lwz_QCSILw%6O9qeSivC}VR(8!x_m;^8gSKQljMFq-fOMn zxyE_H=Afv6gRAvKRVEPaL=0Mccy!M2vKTO@<9~U(#!mw`mNloPW5q;fxdE z{0fTfbo(s;L`u0vFwJBQ%^#`LTID`I&urV~NXl5bwth*Z6w2P0GbDO@_4>8{;Nhi@ zi3EQ)*oqqmQDu^%aB9Jp?VrdG?b9$X)3qTHUCtB7za^6z;e)Q2CVX9kX z(-UL~-4P)XVIyDA{z{|k%(X=x_NeVC=t=fs@k>h*qIz)#oyM$_zn5;|rK@cns?ulf zBB2#N*)-cw^34*KsS5ND{%6|4VI#g-){d|6Yt(Q!KEZ{-hO~kAqgnfFHHW9OkElZ^ zw+=BvQuqa!veCzF!by=@MwGe;RJnTwBUj?`bT#!7 z0O_jk8~-hHPG6g4NiYnt{@sE>*z9Fw{tDAwcBVQfs{b@90|}k|&Ay)bJ*06Aj(~79DnREOUPuyQ{yZ#Mr5!vCm6o

                  ty&2WiY_*9Me>m`_w^L~}6eTEclcUODnE=}S8$fPTH1upJ8VA+}I9$16M;r}ft zG~iB~9hoczN%B>rwNuVg81Ms3)Eo$)zaS@pUHCeH(__ho;#l*}NhkEg-?o(V!Uirbp_cTu zrlITyFMKNhmSj4qaLYNP(3l&qt|{M{chnJ5Vu*^ilwTq)RPLiN&UI`*O)JqkhOT@r z(Z=%2AHjrTB=XqT+7Dk76NAhg)m=0BSt|N}CG^U`MuuDGu@m35pyb}QYcip#KZy?6 zMF#-w7-=o^v}OHm-=5Efb%|dVls;;5@?(z@QjspS&*(9u0I>=rw?cEpY)*#A2iF*p zwR@6N4&`@kZ9V-dDseX#L3_G$hNOHU#{=QSHP1^Q;Jm{|59<6fIi@a|C%AZ|%Uyxi zda^u~s(LVtefQAj)H)W}yQ=u+k$K*53saAfnPSpBiE~LfPE(7juP@D9jo5pZ6v7Zv z;%_bsPvU1ug&~Dur5j{sx%m3*maNuO?g+=ysb;2&t$Y=XcLa8s+PjJ?FO4|b;;TnK ze>H+~OkCIKpea;QHzUIO`ghSHKo zicDF%qU>?4YgH}Rr8Fy~*5o!(tbUESH07c5RrO6f_RJd%N*xst#*$RD@H>pdQa@nUL6Yq!;- zS&*MCQTnEUi10;VPK5oE^QM0hl3XECCe>$<{*l2*_6hj!lZlHzF zF*=!G<51UZ7t6K1v4{7z509wLMr##mHjpv&Q~*69mtqnxB_Uxr*5@!Vnaqap;zTr? z;;>_cfZytjbNuJsz^6X8{LYtDUH+364qock*m=%4WrnDCmO6tfE`EcLpz{4Eihz}@ z04u?MSC;6wzJ>k3L^1zYOxJoD;b|f@+L?r_KHG!ffOYDPgUg>zbt=JLs!w&5XRAnt~>A0B7MmT}0HQ7k(AN z+DZ-?LrUo0EVS~{*DR1N%?5B~9^eDmFw3&h zFl%U|WW|{ml5teKj~40^NH5&F4%Ms(5^Zpp)v5#4I~HTINgK&&dt?4SkmF8$yZSJN z-P|BaNM$fMjcr}}sz9ws)$Y`auGVp`tI+<^JYnftXUrU(za{Je&^Hc+bUrjTXa_8mgP=V%it9{aAzJX?@mNe7pNo?Y-)fPfM;cl)NXFvk&_OnW;HIE#D8j#>%L{_?- z6N`+dA^Z>R7FspqXRCVg%gV$YiiYbpEteE(iJf!%jMxGGBkpv()NdD3ew$%HombT7 z){EQez~lTy%MWE|Do+-Fs%!$IaDpQ1P_z&%KU*P;uXYJ!9Jl_&tUX`Fi3uN?mL<;) ztiTkuer=b_GYIc5?TPYvt*fln$@Iz~y8G2mKZOEbPYBJTsO8RS+s3(JhcT>o)9pV-B{39SJu zr?rmCi!*P{GVGH*pK7pLRasA*$wnx+WuRyYjWYeGFNIh_|s{fz*2f&`JpPA)l3omHX{~e6{B{R7Hvep4vqHY! zn~~3Jl0UJ-%D7UC>0&qM@@(Cr;1ROg?^SIL2j2@6I^9k262hA?<&+{ zgsAgIXi!pdkV{0>JwO*ux0ke<*S9PxGl8QFg}+zJWM_IaJ=KTCyYJgj{@MyKF2||w z9CG(-M@XjN%(f~gt?h+pdJ#dmC_zv7Kej>(=iV5l7+M=AN@_Q|W~&1hF19|834$&4;Re(4HyN*#8hE}zu27gF5~xtj@n z3Y8Z^<< z#IVNsHSAjBx2j>7T)r*zR20IHJ_HQb|=+g_E{uw(h7Y*Ul%JT zSGm0iF5dFE)BN9B7wD;1z*@n;T6&S?)@JB$&#?<0aU^~M3K=ZBNX2Le=~-$bav&Mj zV5?^)K3d(aJ|LUj)nww`+80?3P~vLFu1dy%vwzQ--HeZSA+K5@M+;W(jy8OptT0?p z`+R9+*;hUoI)%7X^KZdFL8p$E_O9+GcS*jG`i3m-rydc+j*%I=%8(gb-`t{eG=--c zooCv`+`Jn;X*39hZ)*MU%JX$ydHwC`OaIRcj)V|YxZu$rx(13 zUNr#j@XZxrY9)jIs*KHtyQeG8iV@EPUn_EcQ05FUyS#!rGb{U(x{`8jWz(D$|4Og+ z_0rJH-toA;$+6nSieW&{y_UE_S&U2+N!RkN~@T7&H!3l{BP)CRRxZwTO$DJBuyf5uQeWvw7-+c5M!8-%TyzXkJz%*u&I~7j2zMiou0o=V(Vw#CXrlvVtp@! zg=QNAR9zsFRTZ1Q3`b^?i@fU;G>>INO$SYOa@Eq-0?KO^RkJ@%w@q#{?;$TWo#`C) zm0VtjU%&8Lz@~}ipQ=Etq)m}4>}kDM9I@!= zDD&Gh@oWFj|0Xf`Zz00Z#BgF2yr$vTYC6Em_xc^S#?JZBqL%7{xc+A`Lq<*U80v0t ziHPWD4$Aw*fg~p#NtSf5;H#6}@2AZFow|r7|DoU` zjN^VO)YuB8qp#}-tQ-qzWcVgZ)iL+qmX9!)uZ1NSPI^*GI-9q+gK@|7yl&pw&ov_Q z{8bK~ub2#F%LQL1ke0^c{J@5!HI}IABOjfp+kRj}a-YJ^LXRe?#|BhO^UKS0enJSA z3)RS0y6c7Mhv_UAE+^^hBzul7TZV;N6_d0o+~@8}&i}XYC1&B8{9O3-Nj2$gRL(AD z;gmcX`l)oo$gRW4f;30fi~8p_+gW1QD%uLjma+0K0OKf?hii%7WqE!o$wfYBpl!ES zJ49u{1=n8RyV24Vb5Gn6KK!d?D)8AOhfPt0d31)rBt(kFap5wVzV2s_AKE#tiD$K= z33XZfpZ1e5+Ryr!1=l(KMmk$B^>6#xdEHFwu8*AKEGjQ^>hR_Lmf){)7odTfib-qb zYMK`?++Ao~6X|0vH`4;a+M(ALQ{ElZSrlPsR!khJHA(aDzk8R$kj`hWd1}#tW~~|R zo$)O$fluRSL&t@Tr^-baPq%z6Q*(Ac2@rOZ$1Vqb>sa@<6sxL0Dl*i%OU_`NuAv`j z1Ua^y@OB=vPpR?*scGLC)5vb(=QjAY%|0Nog#S(P?=g5m^i%~M z|7XkTz7EdeQBC169Re07TS18d3_dJYp8jTnH>$?k25@?Iu)9->QWZK~q!PKJU;iloBv05lKedQQ>L)2BJq zHejL=xSeaa*Dva9Jv+O)w|bES@OiGsx_9Dpd}0O37#szlNPGa{HoSHHFhU8HD|$fk z{5aM<_ec1EmGQPV=vpWPJ(Y+sR5cUYfJR~n;bv1!js!FSLq5(?Qx$u-i=X0cS|P}v z8C(#(p(OblSv(;dbdr4FAA#4IV^%R(CkCB{D}OkZ9A>L_rL7un6xNYieRb8!;0GbQ zo7KDP$`war%jq*$vnHd-5~_aOj;gQ_Om^mJ^Lj2UMA_@ju=Nner8s79tDYtKt@tX} zp|uu_Mj()s>W2E~dtZtd^~T)XPKu*Arz;YKYb>YdIyk32kV0O(30c$Lo@k*O0exMj zxtE|{G+WmW#k<^b54U`|1zN#YLZ#Ok>i-#IvPO_7t95ld8KLg^$xfIeMPq}#&dH)9 zU0E-$RQCK)_<^uuQo%$SKeHR9+LSJy`pP^^+KRu! zA)PzL#EYUd_Xs3gymlQq5Jp~c^Od(y^>0EcpCTF1=K*U;RM2?i0;F$mx~2=zr#2P{ z?rTk4l6-rP1)DwfHu6+?=6`DmAqo3bZpdW+8dg5#uURfS$qAqCkF@^ZSpdm- za$>IMMpGAySK<==ORvJvo)jbdm4VIRKlI$I`+H#N)F(5!s#V68i+|6(4IARr&{^=A z^oFvlK*_(YO&c9+EG}vltMt-nfzHa6L*HT!)Dy{E|DAm`l|{Ao_V&5psdK}w-yOGG zT5xQrBdk31C_}{9I|0=LMy=%n=LaSG6O#jLj4(hJp_}=wb>PyzqD5XiMD219Bh60} zYo`7==FUQTW6zx}| z@I+_zbF&!3?^MZ7={V{M-b1~0Q#I-hm#Wv!-_LZQQV$lG9q-UP1fZl~Te`ul&Yw$I z&-N?7aJeYRoAyS=)&1Vjfd#jf=;zShO2i=4Ckbnj?Lu!v3Tub_wUm$7*B>1}v`w$A zMTQEKuso-4>Ch(YHSP=of4^v%^9V+fV)^>|o^CX-#bfF*;t{C%9?u$ghm5j!4c-|?^hJ#ejwJI&vtnMCS*gEU7WAc74`+gw zUY4KGxAhJ84`^$yT=ot+zu(0*t@)rtB2-(b$;AY_;eM|twY1t$aMpk%hs^)2IQKrJ zx;+-=fgNVFbczUfOga)Qi(m+=#zUT)3X>C{Q<%l$RNlL|-cXS8c0sT%3QqKt z8e-AgJw=tV)Hey)%WXhCp}+WkTxY!Yef|dxFi4M*(vHO6&pD1fQG7e@4CM8#v>1bo zLPbqF&v$_xuIDzMjIJM4wB$@zRqTPzSJu%zx7BIqe6cO9TQZ$}P&Sc$#EyXN=V&1H&|Zjg6T?Z=&D} zk&@djRfn|xJEsZ@erlRvo4|4;y2G1<}~qgi_90l*0^q!&FbIH;9uELuxA|0(tlZrZ!wztt}&?#v>0l;Et9 zAW(?KoFOQL2bgsl{lKQkvjV9)AOL24WN_-6K%mHbRR1&g6GC{Q0;l`mfuMQ?_5ZzP zfARm_Vs!EUtRB`PD@Fg)aD+>Pfw4~edSHuDXMMf+NsmJV_%4f)R{Jg#c%`vk@!u>DNpPg477zGN%Eu) zYAaLn3 z#DUoWhGyjs7+JF0^56Ve8vo}!rwbS@v3^GP!gZ39uJYl;U3k3iw9w7-J1%$*o%KTs3gFto( z|JU~ZZ^IM7f&igh79oA+TBTDK6CwS{{NlJ&v|OjGNK*RPy~U`Kbcqe47r(v7fXJaE zB@W(~MJ(Z&_??khKrd8PWPfR@-M+yDu+H%b+%nZ^uZVV}yskSA8Uwa_ z{cFh<8y9bL0AN&Wmq)Ig1HSX1Q`%A~o$r8tPWA*Yk2p^1-`Eo@7vXotU`3Ne1y`&% zk8nGaUcb?fyf!9S&TXpat}hzC{u1r@4*!MOQOe-DKP7x}s`PDnzuMsXn?M%}hvb;V z!mTcK5sXi2H)=n7u&M<$c2mjY#*8MaPrPkumpl^$G-@2D@j{f5pySrM2v}R7iPGQJ zaI+$gnFMa>O(eT?;vFPEFq^2y=xU+3$&`RVZp<@9D?)?s)s<-JpSb964MlbehsTtPM| zD0Ae#?qU1Bzls>I-)%r60r2Vu6Cm|A1tyuPKJvmf>5K2KqYUU3@ge_P*E`tw$?do? zsN_a_P6XK3%0;V~M!MKwa`YYRFQzLOT~1pW2f*UB`4qAk3;g=`7+T7r#4d4j1+(;+ z-QtrAr$bt~=B4%uUG5<1$H1Ovk90Q%dm6U35b))TrHFfb7Is$a8NgqIy8flq`1=ZX zT_tc(Bm~c44Sj?1*Cxp-q9!ZP<2gFV#OJeF2YbABFA^`7$VYZ(<4=);S&`&9D;&rE z)+;A~L=w!*)siSc&0P=W&Ykx*P0yWv=L8-tQ={Es)@SUvNamOD4jpwGvvY~+WL{K@q zzbVi;w~k8p0I~V3|Jg(q(3gN0fll1^LM3(ZiNW$As%aw96h`p_p}JDLJL5$v6+!L- zCCyRgqVyI9M=>?6fB7y@^8rz{MZ;oYvTO%4`tygr?#f+Zcs!n?i{v_Dg7oCwep72dPACy zyk+0)I4DK@7A`S-yAaUmU+3YDMt%SU$W_XuSBY4m{IQ*x5M*N)Li}b!TTpJif zj*qe-i;=#VSOT7Q`#4-(gy^=03@fx9*qQrr<4tvevQap>31GwE$?tzjUT1|a=dWc{ z0~^~}zA)9!y0va+C%}|iKEHp~Rz03wVeulk-?GqNA?><2ZC&6g@c^E4t1i&i{c?wf zD^nylt2g&*3o|GP4A|bP_8V5-dBZN1k{lh(8h)^J_bwF>jJCj2lnC;jN^g)fwA<(l z-c0v3pix!{0We}n4J9ThU-u?<*ZxreJbJ`fjnhPze(H)d-g8(&uueuYJ+ZsX-s3h5mYdKb9Uy16NMbX0DgVU%TmPs0z$5jFc32O(I1Yo!9VvWF#E zL!AfvnrIC0Rb|vc@@%^NT^js%Kxfo+Hl0+HtR`{S=({Ki-@%|o8)tE{`rMOR^14le8EOtPj zM!#)isz{ooT~o`?X(6S=>H#)>PxULgde-swEM-s-ql`6(lOso__@C$a_&FE%6QJ0O!IxYhsO zwbYYN&2FjSwh1ktI0PaO^*An>jJ5(xM#gM=MQ~ixrsAS78>k6|wBro5KE@oG?_Cgu z2j<6(oj|DOin=1<2e3;N5(pL=$S zp$h7K4VU^($&T5jPp!EqFCx;MSx0VxvuIOdZZ35|>+Kb{s>F%O(EDm7%E{TcBbLOZ z&b{&jUmO=FhowPR$`Wk+YzL#`%nfvd(j*Gcb*55hv+rGqquba^TE4mxNzEH5h5r2MNl6BoKB>upL%3-J9 zc5-u4S{GQ!KhC+Wb^Ku$26>pf@|#fKI+zl~XW-s($UDbU#64U-=>@wU|BZe9U_?Xv zRo>Y#gqSV(Lzm&2a>#=WRt^x(BW4gNOMUDzsZ5Lnwb|PjHG&sMF-TYyrZ>sr*X3(? z>u~lyKOFCjn9ymk2P&K1oc=1EL*n)`YiJ*{hsrNQhh$tcA`6*6oT`G-CF`l@4Zq)N zwYB#=UZ}KuvY+67eZjOEy!0TP51BT9WD2=AGE~XDd(FbKs`p^&bl!bT)(uZyQ5}RY z^Y#Hq>|4^u)qVFDr&c|}_hM*S*+t(qTM1n_I{iVbF8#ztN8mPE6ilxTyrAblTewIV z^i-CAetRJxov!~Fl-9meYXzjq4Ik6?CI0bL_os#~e}tt3Z<>Ju73(-swQ_m9&*F97 zcZ+cZ>7LQK*o|Yf>AiTXD!XCg$D8pZk=1RK$ukK;nCpoLlchI)CSiQSE% zrNt~B$<~i@ZUgxKT0d1HUE57N^GpV?U8BXFgN>_N&Gg&{++#iGYslxk?n4&^HW?pS zhotvv=tIX=uQi3M-S;2gA<`O>a<4S%cE`obTVnIZ3ekKucVh3o!G6zMX8x?|HV#g_-hJ1hkAYCp5BNwXa|B=i|SSPZS1TgAruh^b&iS8 z)oqGH4;-m=xQ~saCJBk^8@Ms2fqVh9M_4pMWS7}bx7RW*e=U;-J-kkIJ#Po_k}ZSt z8^aIsmPSlRvc~W6RH^Q9WNMo^S$`@1=sYl(cvZf0J=?zW0m6p_^Xwr&hs6aQG3+Zk^a;UXb$VbXA3?!$OULQeCbNEujLLP0+D7 zYA^e=P>i($U^mJzxx#j~NA)iOEES^KtC3;rZhVpptQHoZIuVl}d*y!r-g(29RsOl! zhjec{GrewRMx38W3yrwR%EG>>P-_CcN$Kw*r)j?~=sv03kAd=CE8xFb^&P;@XG z&`9G5Gt)@7E3fn|t(Gxl361?Cz#oA>cy$qcTCTwnd^4i(7U+>`gGh<$Pv1YzSB@x) z-uMd^e83^-hARtzQ1Amf+yPqV#=(05K!G%MU>}%e;gLuTwiC^isrj-h&?-PP_yQOy zBa0VexWCEFM&2iO9YAcM|KV%S7>_g-sJa12hCnuXa;V>-qCN7>2EH2!&OY8Csb88T zTyq%2Bn}X0^Z^w7trFldfC7vNXw>T)Ryor>soq;|mFX`|;rAkHY@~XrX&xFchm8>U z=*q|7mtIY!sN$aTz9u^u6w+Bt#7-l*NCw4WgW;E!y~F0Ukquk@_u#t#7&vAmy9S!e zNU^~XYeLL(olo3a_6uqE?Icu7>~dA7H3FRU^2!orpZPPL6=xk3+^9-Y(ORJ?wAc^9tv6@J9+Fz)ChYukP!jxL} z!O9BFxbjjQ2Lamx?sj^4cYrgdNj{N-?l)4KW?I88OTuQE%lM!?3hmR;##Fhy87UkR zM$+W4BW12kOm9SeWd%7wu(gZGSbHvKQliv^X6{)B(VwLN?I za6IipwTuazC6xb;Q(wEQ3UGqXPA7u{vKy_GY0Q%u=?P^-d(HE%j$^;v^GXhNWWlmq z#PELIG|Ke_gnuS)fKRb}q71qbkjm@qG5Z13zKWk&oZH%WHvWN@6}6iaUN0_TazFBW z1bA4PW4{HK4G2Io3Ip4dBhz2^i-r(>)IT@cQttl3G=x>Nk8xMtetfAU-x)zJC2{LU z3m9R@XB+5V#AaS*&F#5J8J5ctJVP?d@v{A6A4lWGb^~V3%F!vJk&=MdH6312Lr+qD z0ZStCzQ62G!bxyv$C9-XqfjCPT3#mW)W_!l5m4E>$ZV%r^^X5vbJ#bFd(*(+iY^22 zJIZjr{LzK=b9uoZk428KKr)#FIo~k=QZ+@spcAm=Wr*#U$Yx^MAo4|k-~oXB4Hp}z z=rISN>ZLZIa|E`5DFs8nz(dcij-NdiwDYVjf5XnE-nb^C1C+HfE@5@E-{|S&tH6BS zP&!Zu)>D7{8lG#n05CI`+ov)^%*hRa9c(^^+{gI2Ov^F(592KBKP;+|qIQpwm(X#} z=X@J2w~RxZhn>X)gjZ@T;lcU``^J%YeR;)U{>sb6n*B>;;ng4zDHXh#H$&sk;@rtk z3WeL?4@&s-D}I2;R^qSzV?nhfVi;il)7x+jiPEeqD1QsnH z8zy?H5l>b9QTE4;QbN>Aq8F;>WGfQMLRzuTT1ryS#|_epDej$10PNSz&;4L{L3Q_x z{QQPQ3#>6%1=9rEy)xRa;^1&|4!m5RYp&;f5IT}i-n zO9VyW-`;j{f%R84AHXWGX|t*Rn@JKvr&BJjMA5Z)3wZdoGRt#Z&}hmP?I}z6f!LS4 z8!Jo$oYUoX|0nj#Wr{rWe~*mWApfxenEB^l=RoO|vAY-7;DiD(jx*z;KYyJif7$=_ z{^d=T8-NSzWC^Xv3CHV{kis!lnBZbXU+npbub}Y&o-X+}`$3S*hJYm1$bSCFeKMdX zR4%Jvzx~&S%m47x2MwVSEa6Ly2a@~l;P$C*iOVw$p`+97ZeiS_KTlChmOJEEl{+K0 zF=d)@E8;?I)eRUGHJyKwzK%&6IS2fdq7)bfxDen!8C$y$2n1+49(l3M*P2Hg!A{>< zKp~Cu)Zu*G;(XZdgk6zF>VE=9tcP6yuWS*(Dgw~|Xb7;wMx--{=F_>1ug6N2Z=7ru zj8Mw$KGfl%tWlm7ZVydScR*~Mn0{)}4BQfeZ3ti_3y5}*!%e<7m2{u{TzMGkqhUpo2&T#vuBcr0884hCwp*BTvzhET zRsnRND@WL6oKkjufy1JmYYM-P6kfutH?w~%MO!~wnw>pA!clpT+Xyy@$SYPRZsivo zE=%U*_^lfcA;-3dJYHROM%n z9jO?RlEaJ#EK*tVl?5o!g{51k%i6R5odp0i=SdvIyQF_3wL-xI7~8d$rEm+txp&M% zulRkL`l+s8Zb(bN&DpOatYXFRauw0p{TG~D($Ho_Au}n%=TyH*FUmaH{tE#((A1G( z{0Jx>R->-k)sjw-6)%dvSz!C+4bU_kEocpu_n9P*!1vx0%) zyk}s>0x@7a&QaeHk@M1~nfdkyoyn5Y`xzhiqky4QE~V~|7;r=|1%O=^Wr&+CM?!wknXy;-A@c} zuB78nu5ds?PrW#T`>#GFc8l%!$pW7b~4m0}{SKLP95Dn)@72DGRdLg+(^0 zho18H<2U;RXZ!}ZbGtX?N|M0GyH}(M31ejxo28I>GR{uO3wqm+<&H@soTF6#5T04O zz1WOjLUtX7Jsy#F$Q#M+b%CA2GZ8E5p|5-`edRQTwP zUMkHTH2Eh|XUAlq(Zn{VSInx&lE)5xucmJE)?Hf0{dTzsrGY+aGWZAT(16Q=`9x{5HP1 zO3?l;)MBWKNf>v4wu3CadtJ%s_2|8KtLjCXozWhFOme_j{qP9r&LkTq0N^GN0?fwX zthobiaEk&J4VhJQqKWg~i1IJjSv$X$XC4~V-vWd=`g=HTqkwtnZPOoE7t!6GS;`}8 z3xR@uCBPLAuM%!D$RUqDNdn78emJ#b2|X+gxNrBx`AJIp7wda51Vr7T|AKlFDDPj! z@h=Q(wz**Uc zr3-y1oXs^zZ|0`y^|+7o;^O030R>%CjE!ouR~I&jBehK7E@7;uWBzh8u59*^;Cp7l ztbh6>|G^u5t%gUoV(U(IxCzEz9e?1BCvBjQy}BXbZmiDE1I$}VN8Z0T1LU$>MS^8% z;0!nzPx__|;Bk!)_E9zY4gxC|w?>{ft5N8&S&Dlt*>ix8&M1^CNcP+UAiSy(fj9Ym zIsD(5K<+L87m_`T$#k-$uJivWj9|Lz%bibDMR8miM~9K`f{}r*%p3v3!dSv@o7uP$ z$z(8P1X|QV|Jmmz=7y1HHHo31W;LT4kO#o)Aa%J{A(W+p1&Cyuz%Y4Cc>#6R7Fha- z=W@&Q*L4F?Pt5Y1IyS;5nzgt;s_vQAP&Hp#V)rzlYUv$$o8ht4}3m^2Kc`k-0ypyG}Xh1~hv!O!4l zE1Mg&6r*r=5xmy`7Ib}2e)E5j_ulbT|L_0!K}exaGBQ#W4dW<#S0Y*2n?o-ldy}1v zvXU7Yg{(57tZ-x{am>h$kWKbHzw4=9@6Y)D^ZWCAyM3Rx+pBtcp7VG<#`U-!_v?P$ zuP3wG$o*D^Gv&Xq#Stf%=n2u!SP20D;3eio|Y3)IxoQGk!fD_iX1rc5|txjQ@~E{34F0_k4N?-n41yU4Tu${@ii!1t)D5 zT{-+;-8ppXzy#%=?cQv5j;1H!rn#A1ZxW(#u>?`_myeF%$G2)`uu1E5=F)vGN}F85 zhfsIkv^b!oo!J5PAty+D+Fs<^?7nQvdCv#fCbIRAZjmFI0^?@-N3hkxkfTVy(1 zt009j#1LT;>>l)!2u)N(T+A8VCtV=5Z+ndS%kOcQq9haLekg4GPlZEKA@e zF42_ULklZY9{2w8=*pKiLOev5K4UAsr|^54;cJSl<6FI-DN(^W6}>?$$zGJwFVJHz ze+Wz^VJo&G8gNT4wjv=PgW)?~x00nKd*>5l(_+ndv2%w=v5W{$+X!~N0oBfqZoK62kL{(%C5pG!MFU(q>A79 zifa%VRekw7ruCESz&owabVov2Jd4YYm5H525JDjS+~XOEWzp_9N<(TEw?p?rf$4Q+1Hh}(=na0``&44Xl3Ie zmfKM1-iM|u3o-G>yF9F2?swGg%vwHugLr1;Al)K~q@J9LUQUV%C4P*sF<-1^@u`F? z6q0kZ2}o^DF=cN*YsSWJaQb2Ut(_}V1ilnP#gy}om-_m?VOM0F!#>gIt)lTw@!>q) zjj~cZIf#bVo3+{fciuKyEaY2GEj(wSbAQ}&{A6qrh(SsjIDDwje*EVKiNjW5=;l`) zIx=6rXcWH+Pj$VJ3_fJkGrt4Twhyq;c-pH} z`-7=bRn!`o<0$1@@HiQG9K#dgI^3mdkTsO`J5eo*M(7QsxHjOVRiBrMV=4Tv$h~#L zPyd7WHCSB#eW>@*l%g;Wj#yzu;~T`a*2H^Sn66Pimpz-MonbW^dr@H6QAnzyy+Pm* z>)rI)n;g6Dak@U(-je}~Hp`d}UG4(4k zRU8KQ@`=pLXKzH!UwB6k_NJ^*`D0ahirGpm&){{w@AI5l`kobIC*A;}w1a?OI&X}G z5ZZCZ`XWu&y=@&7iXm%W?H@xs@;i!1F6jv(orBBb%l{C@AujjeLf*6X|JpyL{?%i( z$M)QZlCm2QP--n4xB^}`d98Q!rQ`vZP0((TaC;FVbH<#Ka^=)5(huS#Z*Bm znQ8Myi=h-0`Vl}^oGP#+LD>=s`U2JElo0?z9*Ed;7s%&Q+C|H;ei_0XGJYj@k>4B7 z4AhXJ zepsk-cs!9$S##rP@1cG+1eC1}1s!jT*z$u>+a|vD)m=^@4BkqYuPET_yv5$ZKX0w0 z{OspnH6e5Vohd{Hyc5GDJX{zU>vC)ImAV?r(U-fD^Y zrW^6^1@ZE=XleOpVLT|y2i&V8ar%)OFIFUe-_35!YB*I5IaenpI zFM6aINj_*3J@K2DpkQygCe1OhMWgk!Rgugg!_YL0C_1S=iK`wp-pm$?j-p%$T-@n` zcQxGqkjU*wx2REBq0?~b9gnW>!W7BznR~H3ks5NEQzWJJ5@#iL8u`GUlJ(zba4>@8N__VIf$7KQDP` zt@5tF6>y*KDY?)mFV%E?l(>VJf&b=HixZKZy*??lau|ab4HpsXv+jL(U6s(UvotA&)pTf;-*1E!#ez7uMflU3eWJ`8Mst^Zb7y`p z!erU2Nn>B(K5uP#c&$zHS4)b8mfF=kF1BkM+uapsV|!=3$5iz0T_<5RRnuh)v!APW zZ85KxGk@D7FXxjq=Ng43GO-pQ+lGnFs16*Jr`vll^^jG|#bd~@29566*r8@O<=xwr zqv1MaD^o8kTHw=E{bs{z<@D6X z#$#0*9R*EJ(Hxb-QSg{{$dALo?^x1rMDvCEG@*;)>HL|DA1RqXaSP@;3X zfPYez%j1@4du*FDK6AA3TJ9#M8yTO+_Jdq|oUo>$q|(b6BPnm^n+awTY}9HY|6E?X zh>RlKv)C5?#`t#H4w!3mk+EhqyeHQ*bX~lk<*FI4l2ZhD6X!$Mj$`h6IV`cZZAGQ>P&Cr^*?+5Ek_R!W4l zUTKFFeRU@A*6Gz;D$1hMXuR4lq&dCX4iXG!XGV9iZfUx)X8h%1TN0GLTPM%#UddC@ zuSPO+t?G{#oU1qMF1N`pa-(e5lb!GaV6@Q>*$3)Qi|x(u8&y9zWjEsEv_ZvmR-#{m7Yiz8$WpX#lR>rz*)^=I7 zkqfmjrTg+(7sECw`yBPrh!@Gp4S2~tOZdC>wWd(aC1qj`K8M1Tmx$aKYxQm$h{_v$SbgV~ z9g%y?{+-{hDYTrHUHwLy@ey@~YSR)gyN*&BE_W|J`nK{$Sa~l!&sTbdSproo6q(7T zNrUn`A4j*p9xUDsgRvu1s?fZM+H(JVgULgSa>vu+{N9-U_RVJ;o~e||Ka*hvr;ND_ zZ>4GLjxIkf9&nU3rpU6!MjGU%9!EjGtEf##}+-trI$d7w8 z;8m?s`8(U|*X8i5$1GC7%x{2;HQ=)sRh;@KWi>h8V^HHhkJ2G2rscvkSi~G>bqVX* z*$Zs0_u4bWRC^{&QfS3)xXQYLk9{-qu4kNe?|KcxkLJ<6FNn`s-!gab@sX_58hVw> z6S?xHkJ+)HB*nbJRx@5<2Ncb(JG8H1PYd02Q0Vlow+$%Rag`DOQao1lq%@TGt?yi< z4vENZco|mCr)7D);$JKZ7W_ zrBs>v$#?NR`7@3M1%oCvhS%hwPn-GtIYPoB^r_XGH$Qssv|2N|$ibGpEvHVY71!5R ze7#v6^^5&XyOFoa_!>ou4~y0GuPh}K|AtuehV?@BuMbRCO^)tOuSq@$vCUO0lKLt6 zzE{dMuIM+*pn%*lTv&#`2Eo+Zj?Hy8f+IzilvGdb)Dct*Pq-8r=aOC#!=QT4gqHF9 z*D3G$A9vhFtol=?d=)*fasBu2->vnWnsO`VULW5`6WpLcZGL;oPG*tHS$h1$FI}b3 z+Am*u(^iKuT<6-AHlE+jBg&YuJ*GA>VdBbiioA>Fq~CXs?)V@v@XcoqjR5#32VHy3i-efhGMnJDSdK8r;L& zs_QCi*2y8mxB_Nfs6wf1M5Wot#%M`B4*3>4qcEOdoBS!yX7J)0<6YXlF)^OK=f+k0 zrh?qhUpm|I&y8GX+Bt;cjwdE2&*|RHF2AXFCiW34?Fo_F<5{gC?ss}7Zi7olFJss~ z*cQqw-E#8Jz%3V6JH%Ws6Iye>&?ZaaaFTlf)SYCH!SNbHGQaiSrUAvpC!H+`S zGwo9jtD*}&w9%>a#+Wm_t6v7p;M+#1_+?k}yvSr97e>2kpQ|tncSIjz?bRIX9tohh zO9n~MEV*7*K`(bUyrs zy|Yx7+wyImak0qLpoRhBBsQg8qyF%f-#sng`7L}XlVUW;=>0x;Bvzl+cG*hLwbuO&2kRA|{{zsbgF6QrJMN$chhsE^?jjn^a|D z2`1I?17SAK+FGW*BaFjD?zEVF(>$DOZG~67-WpOaT)n^HuHTl?%Nu0nRP&26=t+&Z zHwzq!S1ajS{n63SW-mUXLcN9c01p2g}#F}c@pR#f@ulc?O zXvFz2XHHBFtYbCbNh;-w8MxF`{5VWpCV7o0!5`-EwUf(&M&h9J9MsC;N2dr;x36ob zNDap|NbQ-1#BGEw?w-Qq@tQQ7m+Q74jgzBBEA^z}3>^0~KYU2+JJhSK=40^rAMgIu zhWT4Pr)9a@S+k^Xu{UbahBzO(#zZ{a&H&GeO5)(o;=k{>;;zBSfYPyMcm0@%Q;=1( z<=z`h^>KJFxE{*?ay^-%uVDB^YJ*;?=Ld$?pV~p zL->pawi_~~Mv@9fzP>)cVpXW}W>VM0jS1CGR@KnEz^!?f$#s|Bi6=0;0K@~E_nNy2 z`7@VopjF1R7f{?$w^8AVgZvjMq2Z+!0w&h&XMsWgMEk?yrnS)J{%^e1G^a(Rq$0Zt zl+Ak+xA^C(EuX_qGKgRP`MY1Ca^KB%d~Dk2XRgSMuEvzvM>%Z`nvk=!<%w7Fb8(tK zNYf(IP$f;8P1J+m$OTcD8#&@XN0lla)8eU;{?Y00jN5Lg*X!c#j7VA>MWR17YLn&I@rm>E{HmS| z!6bx1@1zsU7}sjunapn!p;k=nRaY*|hfKVyeH_%IrX76aUoAk%iqENO`e-YKnzB{% z?V0eqv`K1f^peP-&o)ANDQr z%F1@b`;ts!FHVi!$yuR;)9TyTB7T1f_hV+ICs4R~5yv+T28nA7?gptkjXQ!CFQ9h; zcgay{X0me+KAaK%^hoRkU5bx`gv~U4K(v>+xiLQfe5eWLLZN6n{NjTW|0iWDmcs$W zv(xT}Mvpus2GpY~p5FGA|1+`Qguq--8P(C0E`}Et32XIDHtoFmb~!r@h0Vow!_~=3 zcj=n2sfGF!DC}+awiv1WnNDUwq4ydaw)RXwDsP3q;keV2iHyf6-ZmuGiaC#}^3hu8 ztp2)>LypS9F{k%Vcuv8&ccSL~j7emASI3(#Li0_ee9)k?jJ2o{uI=Ef`up$1~MhOqv3 zpZ9}9HaUxJWdi7OjCUKEOKrYyHRDHuIrFC{(|> z*xm#9qF_09xGrxu??915yD-d?QF;W6aL!Dpa(qz6Q(QEhlvBDL&s{tL+oDi(H&bW_ zEU%T)pAb%TNlN&9E(vXC^HS0#=Fn?MOte^a7m-{iZtYj9$-i0ebA&P*bMP(uKtRLl z0z_y1C*ZXQuPAa!rAda9T}b>U!$n-vJeyi|^>QBK`f;VbYJvWBA$>6Se8*5fSFY+4_;W9fG;0p>12CgcC3R$xtonk6a!?!QvqH z(8t7oXFF)#$T5`^g?TA{S&(f^ex#$ka@uoJmA)xsd?Z{y*HK*lJ@H*$9)K_{*KYuGi`N!cdw6?6`kAO;@v5JPwgEJ|z>Z z?A^7AWE=BHq1_=SK@CPJ2-S1wH!?Ec;2vKf*&ExAt1>p2q1jk?eu-hc)4e)Z0fKwK z%W%B2pz%!_mf_VN-Kv^S&q*{5QxwaF?R)r|yBOY+bwYZe(SGAti+OkOLeyPy#$t(c z%c42TjK3BVW5`G2sCEWZf67+0l1U}SJN!_oDXY$0ps!m%FVuMY3Wn=42Y7$-rbFS5 z=RB0=#6Ov`9Pi0kd6|b^KBwto=A)#ii8T=Z`GKpaifNDxY*8|TrOZ3Hm*G(OJ8lfP zJ0{l~Z*p6E$mqYuJ8by-IC#IErN49}tS3m42xZUiq4fqrD+o*XG_GNNpLj-ioA_^O z_L#YSYS?`5{8J_x_5)ejPVjjMyS8Zqc&_;eX}Ea6YTlC(Pq`9Xb_pI~b4rzLz+;s? z?1ELfbLBDE(3T1{47*pW2*W$YR?ROI?yj3jMG&J#Wq-dZyY<75)AEKs%}Vl4#MuNZ zPZ~)(vA4$jX3wh4UQpi!AmVsR04wTz@7_vog_mB>L_kR2{R@~S#p`r_K~!X<+=n9t z=N9kj2Eak|v%izKTAh0~*=;y{XM;rw^Qq92hvq3H@?Y>8PJ7?1uPf=eU*NyoS*@hC za#52uVfD1-OfMgcxdY}$S9sTfhvP|qNZca)Tto-~**IKV%tY9?PV96!4t~YWDe+6@ zJ<4HGWCSCi+zh^53Hwr|G{HL-$jt08QsEIQ`Kr_e^23dBaLbUsa<6UE?%{2n^&jdmhED zwxQ%dfZY;p$FqI4KG3Ry-Tq-G7_n`)gv79S^NAQBc2< zQB{fvmOsmASgytQ2r6FqMXzmfx8_##gAoazQSWR1DXLA>*~4TgOtOX{b}ac9aoY-a zYp|4J=(duua_@tuf|E+`q82_2vv7bMv&E!4cw9~89?vs>9Iiz3v?zMn01F9yN->0-_yC1&KdTXdQY}*gRirQP6w`30)bL3Ad9-*{;9b>KT z??2Ri426v`5o#W|YSCmMFSkvpe1$nnK3A}vH^{=HrmUOOXX%F=*f8@c2fT|Z@d;F# z2sEB-U#)S|pOmlA!}f9@8Fla>@`%oj4Yn}{2)5w%={IrWufFtRa=Gdr9h^ov;oDeo z<$%kRKm9%^5;uP3YpNJUoH`0>Wvt$t}fCo{?zTTX&#%pQ0E%1QW0u) z>KA?8`wzz8On|O2A@r>xyEsyE_u9t?dkxl1Li&|Aaw(kE&46Z3ET%!@8^xP~a!8{m z^OAHvrd~LQ^x4F`Ozr|HP^L~ThE)z zrqCvz6;q{FPbi>W4Q*Ks4KaBc5?M`99jxqan+|YhZYsP_tdv}S1SS29xMiF!hDD;? zDE-pqjba|+-u5;zZ=DmCo%c1Kw2_Yy=ghp*2e$;)lJ{7~0Kmvo<4;gXW1 z;3)?8Z)3^+sB@OJPWBy665#hw2~4+T;_FN*8}%!fvW$Px2gqvDZgy}=-ET!7g5yE9 zKKksj=U%Yky|n{fY@S*@=ZlT?)S&TWvS?zFZq(loyFV zk>59__2-?<#io61(`xeLStdt)he|O0u(Qo<7U|=O^EMVoA|s`?-CemW*e{;5e;Tni z;}#P!3-qF^p#ZhEO`11Hj(hKyr$UOLkfrO*RuhxsPHi_3CGq#SY}P>eUxih+7D`vtD>t6xi%xO-&Mw zlNM3vCV#4ar;}F)A*$fwX`(JsgjgAni~s|Jdz^WLPybDF>Cg;(w8{Cc6fTFS*1n%V zjmXQ0D<6IJHp|#cq2^ZS!j?i0hvfDW`7*4=3#D{h-4xnN_UqsEIarBM3tu(wE`N*c z(!XaATbW+cOkIY!Uunx%uH9q#Y6%MYyqG2XuO5cczhvs2V7jy(h-bVQzb`YFW%x~j zoqLz+sP2N!W~EFG;52rn3d1ApzPlYw4ut)^@BA}yKXsQa>ScbWu#+RfdP4DJ@{N%b zK;m=;mF8t{ld6N?Yv6yE=$EWA4_q98=_GW~_dD28q=zjZ4x@1PmS30LKih__IV-lR zd7aK^z#jDlMtL<9{eev3BVx8byLHC8iG|XMj|N$Px2ucApiq;IkMG!tWq9HpdJaAM zXaZ@6!i1pMPn4ElTp?{z$cw?0kt~Tm2q>5W05$*AHaj?TvA1ig_ETIEzSvX%|AdpB zgRX*ZAE;pl{!7x1i^El$J*<201Eqq_kjkxhxtEP(`$CQW;H%4*Qbk=$B|a2n=Q2<4 z&v)`!;?@8jJd~fn$Z?M{UU;u_gi`!g^m8Rrvc^n7aDw2T!b40#)AMrrzh?W54c?Bv zP0pT+VF}+{>6EKMat=)wx$K*dN$s0>!92Q+WM2%Yh0Lzuq76GlU!nuS*w5+2dNv=C#{)JPOd;g3R&E+lqOgt^1EnrKu1R$r;CaOVa*1o+ zht>HcI;l}H8uDc^ZBK?69rFa;)h#GI0B#x%u8!d^WBRNEdiqpANE}2`u z4s5YX{sn?Cz1sN~0qCCi3J#il6&M`jU0Z4<<7z-$%j2y3w?87#%X07$$KeR^lkkFz zgdCG=L}rr%CWI$XPUQMrs{^0opK-I_gyscjXAC7!SMrIYzU^4-=ozJa0L9za@6}22 zp3b~$>8k$8*A{$tbMcsmOj!SqYVDrP=0{9O=7Fw*HRI;mVwo?&XV-mA+jK3OwLxt0 zqgWDI1Rx6Vx#Zf1=J%x7m261xJboHb2ak<~Z`!D3o&<_&BEOVvP znFk&!>wF5{1Hu7mED9@P_#TyDy+IeWSY{c&%Do-l@6bMAGdlO_;xuFxi9%a7Vt+h4 zR=sg;cg=WfcDXLnS9oRoFeC{f+LS+XIE=Ao0kU#B_J>f|$)IE z{Am`272R!ScW3>Hsg*Z6DiiamnKx_la{HZ?&J9xUJv0HbRpIQjm%gPN3qzsE!TC?k zw$Q;E0F+qzcAexR=3Vl2_SBp8nlEE-K#wfi&c$+0&6i!8Yzk=@ODD@sztYq>>w_8l zG2DU8^{M54UO+NtlIifc0-0=nJu(ma2wDsghiFR+2|5Ec?)zll3NW~GZx zuda?6EcOgfN$>uaC0OeDd5X49UF%nRmqHvJ{iuVws|`C9I&x+2;Wf+n-n!~%FK-wp zA?xL}RCSDPEZD)-l`hLpd3-gm%YA1(iHR`BU%q)E+>9Jw%rbc)Tzg)T#ILe6rO}-0 zDL>iB0+SU>W^d6zy>O*nQ5m6n>@(Z4qr%>O-}=3uDY?e>J7CU48HWAo93KynCg>%e zlTd74FBwKJeN=BxBZ)anCe{W}bS&p>{au_eXo#=oG zrJ0(VT5cUEg>3MZP5oh|YmeTqzVF`{=6gKe&8cx58?_S3b73`BX)N&vI#Jugf&O6CB0+$D3pQ{cknV zAg%ztysxQpIbXPP^%AFLX%dS(%D$2#XRg?GyzA3}DCFoLcUInm zSgm}#^JP_YRx8lCI+Q7_kOhWJihSrwmBU0An)aq`oqVE&mqE`&G$V+dpk4K#CGwZmGV~yeOh5*1Q&YK4vnmH29G+GZooYjteN94y44ps0L*+?-mq( zqi48tf&u$DOy}@iGE4Qh4S_b3ehRM_KHiCRDZ0|zq;(m5qg^3=Fv=>svGQIaj*I$U zG27P{wf)hkG60tb{LVRYReaKf>yD5cG)|Thv-EQ9V!vJBm_YX=P&{67M3~U=wAv{q zf{f<4-zg}v!?Jl#9aHi8Hb?snNR<>?TR1l~My`*#Wi&rjNM)5g+Hay*v$;rCy%(=( zxF1?+#Zvr~ZiAP5Da-H)!CS_wdt+W3z1;LA3Ub*H9zs&iJzXF0FfxhuK zMjY6fyklj90!gUVf9d1sCm*GuP`y`@YGr?-DG+33C{pQ9JZa zI?z99hLo)0BIb+|B?>O5j71B+ zD|At+c>@5tKVO}NXN@XDW}F^D)&iSN?wl;>bOmJKX!K_@5wI z))#f5DQVKk5n z=LU0waRbMAl}(U|l5%cRx2XRP&7aQF#ihYiBP>2lK}Ssd03E}@mr(FlFL1Cp91x99 zLdGxhyzggauqb@|=jKsJxB3OD!l{tkLJn~3_Z#;V^P5??kC0(wHH4E^V2Q+{36 zttW#VbO)CWq)Bj}a%UVl*%B!!#aoI^)Bp1=WQcTnn(>?n+J7Tge+}>ict7OAy#py6 z_97hG73xN|>AaZ2Z~u;9@>3EoxjEQdylfxXUtMjO09*mCWhkUip%>8|#oa0$ zFjUecvm1!47|K5q#9jRE-S1g?diwE{6{~I8oi}gZ?Dm&czcemUzp+TcnXEjO{gR^y zURRj#*tWDXiEb&eWN6+sshUIK^}xK5#P160g0AVgK{cncn_vi8(|h+4{WUq+L=Spg z7y~iUD78=9NOgK@9rLNu<1bQH2GGj`Zk=Z)8_#*ydCH0jtftsApp&Qs9-n`IV`Ee9>>%?5YLUNN9DB{VawvdoSPq3vv33RE#D}_3s zxT5Qnp)3>^yUa_y=iD=ahe(V|GT&Z_peU-n`2{RsUwDY3FMbAUnY#g|CKh0zkR&HF^P{& zrKhUmR8$v;kJBkHD@$-;!m$=Dfj6nmpr~h!^hi8@S1deFc{P=N zj8K*S!QPEy>!Zb(gh^J{G_!y`i{G~-?Ede6eAhzi2VIXo$J_GG8h$+r zM;$h-B%2`2a<)*S_MbgXQFMoV&k5E#gYhlqAc_w1jv z25OKItj*$prp&}!r2JOi4zdi`bsiI1; zXE5!_za5$Wx&mo+q$6~h;IZrc{r6xw82|RZ{R+~1ajXA;MpaUq#dH+C7ND z-QV6z7QbA9E`l7Bd|fLdwvruSUMbsIbrnravtu4n)lc9ZA`?7bl<<)gLyt5~t>N-L zJj50rD+icAbC!6;?3p}D=+XQtzY^Q0v?{*HBm)CwBW*v@u4(6wZcg%9T_VfnZ5Z%D zeS5xQTOYATZ$SI_wSo#0Wm_tiU%cQVnw%_lpV}#VV1D5>X=jvZa@&`o_lIqH@K5Hu zQ?n#)j|ywj|2vIrY-0zjZ=eM!dl~UtVu!OXDwWZp5!ChH9q`dF9VA@O95Quce*Mrn z#Ty4J!ig@5Hg7P><*_$w2;=+1^VDgW;A&_O=E&lr+%XjHAw=r+0Ym^$CoOI|aDcJ|6vKP36pP{(mg=i=XNNauDzC@`w3+fawB->HFgS$9x zzyf}BR>GKeC0a6w>X8c@0nMNwjVTM}_+Jx{a2L!MR|=l<1w28S@&4(9Pq!m#^wDQ0 z8Tuka-v3uWoseNOfJ#R>7t=0-#b)Kg?{N7$I9p_J40!-N9CCU7ou{kFW>N$hThB>4 zpr2-9;>DC{$x{9u8}>T#^!NPC48n@EWYkQ5pNR+h83ZB|@L8C`jm$>FZD zRTuUT`ou0E8{udcz&Uy}r@F!YKMXk1 zKMNYLdaMb6Xd1KU+uAbx4s* zW7EVYCIsQw8P-2=C_0xe1M&lTussPtf;@Cla`kqyO#QcphK8|#^~ z`H<9rutCV4n@$IifX(O?UtTt!yI-ANzm2Fh-DYJUtEnDaCNQH3Gt>ihy9~@L$F?`n z%XW*|+=IyuixfXrUcGOu;^bfR=$LmFZLBGg1sH1eYrn%iRW)p*{2w#3iC!Ka9v{!I zU11yX(Xiy@(IS4zS;df7I(h*~%|D(~U58J&E)?pboGxk}>QmAretjO(?l@%IJ9-Lb z5!$Mp{Si!+>dtz@#ShG1zL&Iei$BAWJt&NC#W&q!C-p;{1uXQyFCPob00eDgBq zu;^2|ML=-gzwswL@e_mB;DlOsUa^R@EoVU;P5(c_0<0?NJ08kw5_1^FFlxJ?(p&gAYuG!$Z?TLqqGFU$1Ag6oAYc0HSFkOA+d= zz;T8ILFXP;1|6&H#|NLbzl&g0Tq~Tv&e~d9)aYX@Rw}8QH5Zrxl{j9B(4a6r;Sw4r`BEX4-KjDZWt$=t)lOcB-fTG zgCL{{Op&m=kXXlZY9r;iB(L7=myJhcQoIq2Wn^5>*vGwXpD#ofsQ?^%xQ;Tvg7GaISi*saitF8LY9FX;v|`uu#TS1-9hq#%*eZ#1DLn zyur!JO&N|yT`GqhgcdxLmCdIj;K|QNC2FT`DkvfTjQHN?1LHgefsU=>abo^q37g?hXC5Nm zO;G<6mUSUyKmN(zec4j-zjb6BI(GmnfP(?NnjRIWqP*NYV`fy~t0?0C6A0^vVAYj}kdQxN^WC zjAULYI^@79`gc-vsF7_8p)T<4AV=?0Xrgdd%k)e7MM@@$E<%L6bxN7%A$t%Wver%S zi72t^LN*(yBqTGc)$c+l3g>A_dxmmheW zuzTm#M6QY{8&^r%GfZzLSK9EwL~scrL!vu4>$gcr2Gk8~p|S=HGb}_R^r|8oH?idH zP``kqzS`dz)?39dE3-i?3k3;VCFOCBOr5heQQJ5rBf{cpz<#gPn!jc4YYZ^^zq1RB z6?5q?Os_qjcdq)i798S!Nf8O{w2@`Bh^od(mlk}&DcL|>5y0fWA1!I1wA!X4B6oYD zVkNLPqO5nutG`s*qQjkfHSmV*+M0?~%WMq_reO9cIVBa5QjXgYL`4zX+mG;^&@Kal zAKI^5W=(v9Hwhj1HMLDFo~O-Kq4JSim+7cdWO>=+;fJd}di)Eyt_~ZWvr_YXoI)Lh zZB~)fX4M(&R-(OcIQZT|As8r99FEY;|0x9H9ZGTm5T1bWjj%;-o7bsSW`BDeg5*Q8 z4Ab4%xD~J51*8Hr6%!g?PTG#d=ok2`_9 zq;OO}M`Oc8@8|c_F@t5hmdKH7SgZgWXzG^l$WK=aOcO6dZ5>Qlp0KwQqq(`c(7s2i z*YD<1TC)AoW4=<7NbiLR+bUyt!cb~c>TZ%$`An&+n(?6egO4K7)hhgJ+j8}#X9HmJ zLp(PY8lX3$Q20-Kv_83d;}uH*VP3xHpT^VXPCh=TjjKfVKHSG4)oo*Qb6kc~4W)ZO z0v5fGFMho0_yuZlY?)tg9BR^lb!ZojfCy;x*?}kZI*!%{N`hz52s`T0U+bX{eD^3_ zfl8{zz5UVLn`8f$oK5rkFiH{T%$GqmpF{tc-1~Pk=W=DuhFB2+zi+AGa%zV#ml`4V zI<1#JHa+$FgT2%YU#F{{dmu9(hngaX-&^LYgk9e8pDXyrdD%sl$luu=LB~Pe^m0l& z@DS8Vu%xE!vdyHzo8{fNOlO|rFi!)si%`(e@BV|zO{%P!;YC08ap#Q%O30saPZ z6%d-qI2Wkvc|Gb0=~L?cuFz}K{{WI4AUqiQ^j;peV9m_O<>9gUJYHkN4a()5y>BCg zx0`Qk2>Q#Mgh`b#);$%%h5Z)aEkclljQ}^L?U0(3!F|i7&FH+gBwr}Cd;W1h%Q(3a zN(T?@p^4S|1V}Ad*Gr5@pTR!cSSayV-~zrpkC?dX((zsiEvz0a^zzu;O|Ru`&E3(u z$T84N2+!mUOjpepK^?yRRm&Hf7ly9pXD*vATD*%65x!k>TCUzihIwnyCKbpNbseXw z#gtc4pS=e+Tuz{abER619t=H*t<%b@FnI2g)F^M`)7{(qU~m3{H;Y`ox?Fb$l%%0h zVIVbx<1%YcC`jm|24Slm=;MfO4mwc}Ezs4Kci~)4J#`(EI<>a#>#;3b?Y=kDKh-Am zmY!jgp3p=%MVKY*)`WqB1LVr1bEUlG=>yDS0Rfct^#|2(gn(n?Q3tGKrGSl`S{!iYt{Mh1l!|3th@;cY1h7&wrEi#r~Z{>D2F2A z#_TbwInju)4^FGF_B5axDn${_u&t|A5MDp<_Ycs&KvI)@iM~B;)lJknYO}T1ZY-;2 z(-N_x$epN$P4&iz&VKL4LxxAimHL}fZdvg|m`>Eak8f_b_TA=P)ixZHCOsmGAo zYfu^QndOz$6oN$U^4D44tKPLy3X4Cg0=JNlJr6##jg*6Ban^*WsQB>BTnJk`NoOxk zfeMR?SnxQFu2k1Z@r+qGDg_i!Z<+NLL_ARuZ#}PEyES^Ls`~ff-u^t?;nt+`l$^L1 zB^Dj=d4R=@x&L?-Zt2>QQ_^_|3b5x!u=TH+vsR8K_k_4jJN)>s6-vz&LD6R;JUAhb zbj$}_iTrK{{KERp@hrj>pZVVXJQEd=^_p+DSXjO@`!!3LS)s>Ahec_UP9=UHCch&|*cOMu*O>?`_bA#zH<>8}>7l)XQ6VD-;`OVb^UgT8!&Oa9< z30An-CACvC=H|QT79=s4biCd8S;;L?{&S8EwsYk!Fu>FlgYwYb$GwF6mTa#7xJ1Fm z8uU(oy$Z{UxYP7cRFxMQh){3i>BiR=vkz^#>XrOM6n-R$6Uar~o{7G4sHTckd+)Dm zLgYVkk=s%FO!ZDRe>T!_US8edgGaI4qs^*4LIstg_+BW@(zO=)UN@P*VFZglxW^sgJRj9c}pZIj( zAzAKSV<26cLjng+`!6y6M*BS#H1{jvY_T&})M3Jinv z0~3Nxcp}tPS~(2OW_}^An=H^^xI2x+`g*#$y2iS?9w}rq1K!4XEiJ7Sh(r@U6JuY) zIz-wDU+gYUlpL2OC6k@!`c<0TIT^-xzjp}`h1Y(=SS)SLm&N_z#jsqi_Wpy>oHxU_ zwdG&JS3d=?b5Fy}Us>OnpsMC>dUt7uGu8J)d(U~YWTIl z)hiz%6<0KGb?fpTmCqm@UL}Y@$W&&MFlf6>`qU^rkGK~gJGIh%6^p?|@0d%*_V0(P z9ron6H_GCxIiBl3FIU}oBkwloK%&h+i?JB9P)yJVTEP!S^uSD2&RbgIN)##XBfxgc z#FPE^K_nf0^P}NJI;W#$7!(4XPUZg2=74A2{ju1DjEK@R`|U(yY6gqQNQLRL^A9-u zMUgVfxtHEF;WaVCcDz+n)n03k7cWsz&IFnU_1&={_WK||{<3zcgwxV|6O4Z2!An2+ z)xc)A{Ejfq$_DyR>$FZie6QJXIytG~d9rD#VH^D368ST~bBIlB?*i&2S&W*b+blbf0VlAvj?6+)7H+Pw| zQ}+7hs44$H^4>BosxRsv9b$+9$w5FsQb`HvZULnm=@10z6ltUz1?lcaX^>PxQVHos zKxz=A>+X@?bD#g)`{KU2_k2DogK*A1Yp-74wKiAfz3x= zqeZn|eb*{tgL`h#go}%g=qLjK8h=+&NZn)EJL?i3^q0-R&bIzV7AA(3Bu;@s{Kn@ zIv}9kX=tNLf0NwCtJ>@b$&2YEWezq@nW6`s?{cbc9wY7{Ji7nfv-7;-AlJ6}7d?Ou z`DDYqy{WM5@tHfZ?I`}TV>h0YIM_VRV*-W_qf~>jnxSd>9=w>M3aTC6r+-ti+<4gM zv!Y;ul!bX{shlj1OJe>7psVOc-0OsRRz7w8?23^2slt_xwxtek;O6sUT(aur$L?DD zSpj8t$ogjo7ZUb*2Gj4--zl_m5dKiT-#zt28r3_UT;lWaU}wp!`@A}-hoLu<=Q8R~ z(w3kS4D9OWYtDiMb!N5vV^s$WC^>?HFkk-3*9%{9iCh-u0=QXFVAN}0#34ul3?fl= zDbE+R?S7hWKK#CYq*&2Var8ru`Wwg176&GEy{}f&%#DwDUgSml*ze6iu5G+3%5ch) zsw#FjQ&?H+n~Dnkou+#KE#FS33V+g&v4U=NI z=d!5=;>;-gr9k=!KEk=%+A|8n1)zH*5}p|o<5>P}J27*RQJYg04HMnLfZx@#d8|Ou z0UZumd-u;xZO+a&6fqZ611Ek#_H{9|@}{C+Ms^2vi6H)I<6Z$Ya1Vh>C$xt{+N*K( z2f-i6;AFiQzZHVD2;y5d1as2-8Q>?OxkALr!*Z@9{%*h*g1Y$mE#A-de>cD<34&W5 z{pcD1GqELo!xb~Wqhysb6WKEA?E8IdtMu}B)>ZhPwDw)-#2@P451r1|AGbvJs}7Fr zJ=Y27d;KAD;Lx_70n^CXIu_fi7nJ7H3E*op(&fi~#XKj%88C;t@~I~>V>2GBHsXkK z1D{C*}58JTs_3mfb zBkzXd^HH^jqJwd25ZLDR^)*|Lqcam-i^c*Q1kzJEZIccNWkrmKTOQemL#h)}+U2o0 z^Z`7LaW*ovqO!8z_grm&zLd{a(+O1 zY#rK&K-97G5F1%eStGA*k~d>dU519aEVA;qs})@1<(qHT`s-*ZflX#A280;{f3h8& zi?4Sg`$A7nPA+U@fMcYM1;uceUCVm7|A^16qMnMNNl#jG9~0@`p8Kh&me_B;w;PlG)~(L zDrRSRyvtvqJP|%*R&w$+$E9i>bxkmVSNXgY_gye5%%;>t-WX>StT?Xvhv2{f>*?;#cVZ^cDMbQ?+Ph)xaz0 zLh=Y!C9DdMx%5um=+sMcsLgn2D+Cfcadr6@spWS^ifT{tsLzdrKAOzg@(Mg*duO)e zub7)B5fL|zv5IMegACFjeWHtH6&FUk!C{{%(=$XZg>A$dj>cu}7F`tL8yBgs0OQ`T z&t)ps7gUzd&ssjKHoNKFY{8z~K61?O67P%v4`%I0~If@v*Ik~$a$m=UH@4br?`}tQoLC%@z$BHo!bn8838T_HZn-vp! zI!Axh=Ax@GX<9U-{Wja*=UubB;$xA7zjb3#T@dG3q?ZqI{&r%M)~4gdOovJLxIa25 z^!2hA?<~i;u3&l>qxc0i2K7w!+SDei?eQB?p{Fljc5&D5_+|7B>2%Sng)9>Pi)bZl zCgj0GwZ%d;(~jRKWVO-K zz72At*A?O>1=4#TodsIO&y$X$slN|-THI`tM|9P@CX&GgE3so`$c2=q-Y9|{1hhEV zb_^StKW=@#Rqfv_PQV}N=n=TP5nqx23c)4}vz>Y~f@P2Nk|F+cs=I08Dj%Pl+~bp7 zll@7-MO#j({5vmJ>>a+?>F=d4vK+7{^*0~viJs5zWw^F@yu~N=xk>wbWe|iuXm7uW zCuZSN1S%?p50{VrDpnZC;qmH6zo%`6g@x_pW8)N?)9qb%(9&b>Bph71{oFvWL{WW> zOx8l;1Se#d0N*I;GIQGLe<^omifh|Qu0Q;9y%|ey2#xUNra2IPB8S2~gm{uUtY)4g z_1p&wKgIfqdRTNXxB+>Xm#Apwin|Fp6T)J~AA1-_upPzfnZ(P2gF+^a$g^zR^{P z>i5x`X*;Fi-@f7ox}uf8^C7a_ZzLKOKx>5V*VarTc%R_JAJeI>tC)L_vRw#V6nBV- zs*Qe9K}Um(BD{?u1hVB+t!{d`E`6umrNd%SrAN`3ZG|5K84LU^dW_Az87Uc!B0zbNwRqSGO=*iWKTv!iX4wpkCyp_SG;VV+jDW_J1)S)Qp19BQ_?NhI(UVx`lr20$h%iyI| zU<42el-)N77G z4gC=1>!MyW@e*j)lza3hTV#Y*4bwK`jMdgm7#goPGbq!kZMS(aF%v)i+x2WF@O-_R z2?1tDc~B<92x0~qMb>$?i~6wdHf>9(6;E2GZA3`p)nM1cr5Dr?6RCevfm|iTzvQrW zrkR$h`kBP+eIP#`LDe0FVV}pNRnQ<&n8-xH?G+a+s&ugjSlTK5$FYf&rml%cpI?1t z7iu#nXkH8WkN+SVM>luG_8o2}{a68^jbGI8(%$U(U3eT&->lxuo=kb{I&jZsRwou{ zm1wdohh9s&>!U@@r-a#}`!Of#YQ$Oi+KX)~fduIfsic(6sAGwG1=C<>XZlt?_t4ec`w9=GZ7Pf z0#D-T>kUb}B-xN7sUVbq@rN;}FF=Og0+YZ@*U)Y#x@2@v@n>3`7hZWaqNS5ppWO<` zlv>H)9kH)UQsCs(?Db)McVYpHHGiM+DgPui+JNRTZ-FkaVmsallVpDsP973_1+yU^ zl*WPc7I3}+1VVS-g$lX{rtK6^UTVL8))^VdxZM5{mWjnxn=JlA^d*iEjDdAX#=gk$ zJ?JA?ro_FxN~k|L{?j@Wu*E>YzLUkLADzwG!A)|Htfvr$6D8CGk$=kxOTRTNjw;5g zOJ!BQN%J4z{-(U1`P|Y0s^7f@W;4IY@5^%AqtT{r6!mR@x>4a%l2}ar@8ScF?>SN0 zbcBiGTLVHbj@g*~5^zF%R?g%S(f{)4*!~ZO|LJ)s zBs^vLq`Q6}3j#4OTJNX6Bl7u`Db|=9hm6Iu!&3zyCwy0Vm_g8(@sH3JhLBM2szTvm z2yQ?&lJ-lPeM2cKH&;c|whF_E12xTeS9{X*p^|C>558P;NZ|~s0rMBTjvbqOZ= z7;*gWcj+U`vX5EI4^0QXtK3b<_-RVhBuYRD!wr*qZm*DC?i(r46GVte7eOh8 zflXJ8vcdNycvD;%(ODe?1VPqe9a9vm7wXjRuqAlThbM7 zo}x6v{xT;%ZI=4@NY*T(3;SuoyUM(vM;GE!lh$3|)xKCavlHJ%_H4iA)ROQed=nPu zpRp40ch^)-5qSCaVImZtt}a6m6N*%KR7I=7OI8 zmmj>9yJwnq+>V#=(2Ohwo3%?C)F{%xv_9O5e$fXECKbCuv9SiKS|}%`F=TMTlL6IApzOAiG~JYVK3)>lA~l-V>% z-Au#ZTb7w>sWS8|FAdEBnvNMl0ee{Qba1lHf;vGUVge5fTj0UR>{8Tz{M?wFtAs3N z)efR&$BS(2=u~;35M{xt&bzlf9a^$tWsGuJv*`OU>w0}`hmXZPWMWMFF1prfj>ApT zKuuw8F|onSjZk4)H9MyKhr1v0H6!N4N`T&~Et|Q0n!AjJ%2i^VKgB~q`nK4uu%z|Z zsWW`0EbpH9DAAFCdoSGU_|!B*JX7(I`U8h?ebDf0yKqu-)HRstb3 zXV!Fl!X06jOal5w1tf#fW5$iKu^Z{FV=fxivfWfh#YS@TAicEZpz|7Bj_LMVXFwo_ zn+VY>>q&Jk+N&yjn?zVypRrEcX<`7v{I-gTvT~HkCusXrn>zHtqR&xroY@vG?x&iQZ-hPJjv;HmgQLXTg=r3cEhnY5y?dd!fgt&;6o6U134r zYsJ~?k35-~wUb_HZ0WSE5(ees4Pj~BD`Wp+^%4Qzz>a<4@AabK2(1oIuoDh57ebXL zl#T~iEx)$7sAvDS&P)mE7gv!?7We~s{5Rtn0+D77H%wDTqkMLbtKa5r*@Qh(KZxlns!yg@w%0UVIT=5X&qwSU{sKAoR)kC z5LsYm_FHE<^V>;@9^BpYsp1Ii29?^!?S72psJ65-vM`-dp~|+QF}E z6A%|qYCk<}j{`;CoqC(D4|kK4=rIjgvF_t7XtE|gJ$QZe(Y~OS7w~7{Rr|ILe}KO| zTX3<-(B+&r9|bQo@u}=j9qMf{*RE(u~Ox;z{}SoaF+$Lz&ComWBWDsQq*W=gjze z$jF_7PjW&|YpirxdJ-0BbA!O!yK(mXsmb%`^I4Op2J2PxtBb|_X`3Cq7#adXJ!2o+ z7Y*U+B@C|ywwoOXQ-s99pp?&SV8Xo@qPYFZLY~PMa#8N>Gbc7qHLGZpr0zmd zd;Xvm?xDL9`zHe8KzX^jYXrHu4-3LRt76YAjcjmpb8~>T%8#Q${BueO(c|4OfcR*f z{p0N?O7aEj@e?oX;!nX!1h||{;%08*&0Z=>wpN>IM`x9;2>AXrn6&FsRpsE3hU7k? z8=>0f1b5QLlS1u05qnjCZxA+;JcFrV*w{0DSB#lSbwe~QW89awV$+zq*Qv0_A~}Yu zlF;-)OXVht+~DA#ZCKwxGHHb!2@PObvec*F!}wZ+vbzmeE-ozuRw^ zJ2NB~NQ5&X`>G2y@o9JM&4|nz;Oj)=LVM!QLtXX}%LXTNb(X}n)+5HkcvuUI3>w6L z44B9`StM71@Xw3qlCkDBRw!q~F3(hKoYP^M-J@?-TYIaxLV&SaR1L&C+=JgoKRMlRx z*~{3j@hgXc6C3*2CROnUcH8g3fwk4XoDyFm<5j1zLv@Md9|Fz{%JGEAx3c@*h#)GPe~dQVyzSaQ*;ss5H1^FNO|JS= zE#0%ofkONm8xfGg5IAm~X$zwaqQ=)=ZEt@4z@f70(`*Of;KR~nLRa!!Lt^jI1-8Mrf%dLnXM9?g8_+Q%xI;NBC4 z@0l?1HwlU^-gKFvPE|GzNI*R9ypNy|lmt#zHhW0co#BV1gl8*}9BUi1?Q#E98wG!U zcAPa9HhKoSt`E_Xq6b>BL1yB~&rJCvHQuy}d+H^c?~W#V6=+ekql>a(8#60sGyTtV zdNkM`v8OdhhQY8MYseu>Jh!PV*)Ennw*9t8R^xS=qh3XMYC5@P5ElcTz>=s=#~|xD zC*2QJ&?u^XO_~>*hlw!h-!{yyq;HRI^$;hBkat1I|8bA*68NdU*O#OR+s0QylX+O{ z8|$kx5m_Z^PhCw%RWEK*>~Ao;PZA3f4PxoAj@xO+zu%3Ioxb^^w)?_k;&76YY*&qa zqanbwN#tU0ig${U0oaQSmd!TGu{ng34Kcir@hDTMl47hGq~7@0vZYWt%p=BJF(|5d zBJmHaC7g^KiX~<6LdYeTyz0=T$s+d59Ho2_>kv-zbtQacu;U+wN033_>qS&k+s9dItGy#~B2)xtc zF5CMN0dHgU1T&3URPUV_*=PhqN6Vj+)(OqQiLe%02+ygAkGzZY;@elf>S|Zx8R-hq z%n0Pe?+Bh5*?l>&;kc8*f`^Uwg#;byAK291?m#iKwfS8P&J8MtO(VLr#5C2}P-4W@&1Slc|<+Yr2ijWv&c zpb`wNos8};4Dqo@Iu*_Ppz56ooBb40%Bx&t^mJeO~Wm$WIitq8a@%joN3*B2% zsfoK6({|n-Q3)QqTMWTIM^PseUozIDq-^Ji_ZF^ z#=jw^%|A<57W?nN*axKC)D{ekzx_&k22x}ivu!}rv2n0JaN`qD<44Difj|frS43Y~ zfjnxk8Z^6-LPh55_)o*}RpA5aKYY7M_GRDs5gXJ%xt*AwtIu}6ezz|MVkU0$^Yd^J z(cPovoT4&e#X`#$=!uyi!>Pnxf(ro?=IZC?XDQzg#Z#&<1)j})mfDCZUE3Sr+I}0! zx{{iE$;duep7#~xSRC-dZTa!J*Y=R<_V!Z6X%lX6&kR@Y~X&xW}owdua6)>+uaP26-U2*{%pq87B+R9=19Qf{bhPPo%% zB|>rPlH1i!My&5Q^41)r<}XUeBpu6xTb46QevlN=IhSAGSz-(PuU_%h6^WfpF8&_; z+K>bT)9SJn!2Q_&IUs-ev-%f|5#Nw6``6fyp{%S7S$9fY^gC2qTP$a*2n&-hc+6Py z>!6x7j+sD3_vH0Ul<=nr1Z&nPd?M$_K|x&5)p11Fi~|||m*s^lbq2cswF&Ms0;l;nB46d|xMpfZ zf$V`vm(4P>hV10VmmNRyioP_A3vo;-Lqy2lM?1*@zxFIGfxGVUuOLFS>2HoV4O+CxS6SRFoCNkaO(oaD(PzEAIftky z|J;4Ze;GY8VXXvVc)T<)XQAt8J@tjuqa`e;_ql5x8y5nnNfX?{7?N|Gl^ck*{Jo#rxh8T09H5b%l$XtdXnQ8Ck*CwOSHO2_#+JoC4J9(TrG# zll&{{9hc*FSEtS(LPC>QaFDIUHB*xAx=#9b!Dz)yEgWH7p2mP3CwLyAeKOR_Wp50t}Y7$?@f@2TB zwcITW8)W+;-?UyoUN+meu(H~ihVx?!s#Q(CXP?9OaCbj0sufIr2j4(9;-E}iN$=Q( z#?dYyz670Id@q^Y)~7poygc^0-GO!(n=@ry6!HW_qyP8y|7Z65e@)c>r&wSQf`O2* zpc`D9$i9-W+O&!uYmBroX5gcIIA479r6?VvR~qD+Rh-7+Xn{tH>?;gIznKsuB($!- z$2c}Gr1%ao5qM=U#F$=INWA@WkiSA;##@kdG+5^=B^ZqL&r1r4qrKQkG3 z>1w&EJieO#%J;9kmF+f%(;-t#k~5ow`du2DfmttOF>+#K1x%iHf;z!qi7JYK!2J*w z)O+Z%Yj%W!;8hivcq9ULw23-yAKP};6vvh9#G9ksq5Qgl> z0Ul4vb1F&$%7x%VyQ`NyBQuCde)Twn!JXY zjzdfM90?}ovgHEP5c-C8^$7_9i4vq5-n9+I+8=tsl12 zUYXPC7ENxqvJx2%9JTZU4`pyf^xc*>FF5`A0iAw1O$M75?%cC6rIqttq}vWC5dCq# zYz$DX!D~{7$2Kbxcy=#*?Tzja>8!$n5U>dlXBRPvh?Wxg#kry}V-d`Q-#VJzZd8fJ z8fF&1PeF=^=mGDe5b*8}?>m#(0t(6Ze1n3t0@UcsakYUif%1NFGy;tISc%XLbSW87 zTg-X&b~otz%hNhj4j!?nldacst^8>{#dJ|AFqlu~k$Vs!J9(@rY4}tF4G?B$Jy5Rkpq!AI?&is@Z~_+Bpuzs`WqvV znOv-+nVixfjfA68%ZtWxtlDF>H?_T+)JZbOk4Q#`ZbS~?AboQXV3ja^&S5|Huxpzd ziGUH2JM0072@+C7nnbEGooQ5cQu*3|-MIf?s4( z4depqUeZ8*2}Gio*DX~=cZtXn4n*qM={P2wV&LP&0V7JZ0ZVh~zXX?ujuO2OulSuk zkAx~CJ3)CiMspblLLi;NYOI{?Uz=kT>RGi%b95a^@*7%kY`m}_r#JuDmk8-lSH5qr zWn)kU8foNR4^}a|`G|~#qtmy{iWB^QKBJpgvd8~m0U%){soZ2urU0q523Cc9B;Y5O zv^$h>xvEri{%a4%WNJf`{n8Vr0lh)Yp0*r2L0$GbBI0p3-Xt+_TrFa|I zRzM(H8qPiK!@Ny*M83~;tM}yfPo85MU0!F-s|wZ+jZ3Nxpd%`sbMFsP9@a26Hf=7| z(Rl|@D=XdZ@t)ak!`*voWl5e0E!&=WS8}sj&8I-9fjNoH1>BhPUZQ4VO6kH)Q-@-H z15vCNqJ8TUcgT~B8E>sO1A+gnPn90JvY2fGEyV@EFqn7!)QogQ1o(#@(CV18TMw4D-0Cu0$^C5 zH78v?=R!-0PxhK8qw8}vsh_#s75L%3*-Oao|xrBLHH9xa~@CsIqv_RxIe zE4!CBJ|wd%NV}Y#Mgi1Ko7Yi=HEwtFJq_~-B?-uDCO0FV3La6Cci&J`c6A*Ne1S32Cu@AwM~yy$(SL<{Q- z2r`lWzWy^6=UM>V9kG=00#iZW?ary1p3gf{vN0i|1ppeqkPQS;pI9|aFZWF+t*-pppI4|Dx2=Yn?YqL|GZe}botR@8Py%`+0iE~ znj}qxl;y)5TY}3#Qy}l4uSapI>Zp903?NB;ogJ@k!ozm(YScA+_FN{IC1#s!J3fE{ z_5JF5@H0{)sCW8U;_t8=-z+85ZQ=>L{EBN=SRP3g$8rq4(!j6rYrrL#3Q*CP7GL#Rp2L+L=3vZotDQsbwu6fX#x=NdV zy`-dIAwz=j~GH%gx-m~ZkgCl{H^q&MN1Ul92UKLnj=pHJCz}a07S^)*sGewhH}GwmieDB`7T@mi3<4Hf~Zg*5!(PGFv^^a?4pC zEjrp-N&G!`qJEVrKwCK$l>>g3YdMsv?tl=I{#Z3^8t}ilz8>%*lr_pvc}N0OZI>Yn zAMfn8Pyv{Y9}69I8OaoJ66b;c>bE;ih@oCj${s3};C8Y93cXB_ClR^8yarSAn-FQN z%{Y7WdRiFSeh<#stmsxkQmSkj-+%?HS8YVvLe@=D2ZNO?=EAKPRklZ&yFQZ`cpWKS z9GF{$Jdj2Proi!Daw052#UEObyK0lqJH2p#I@GVuy-{={O15nAGv`NX)`&9P%Nz-^ zM}0h89VS$%)a$<70=o^}DM_C{nqjmosN=P_cTkia7A3{`x`oQGPEaezKp@~(VJKR8 zHSahcU@v=i_R4E!c>62mO`2>wZ9>RzjC6p3VF5NbCD1w8m=_%)Eu>j?eZu&sTT7Co zGW$!qQ)F>G+VbS6bVPG^eq~aFCgGVU#>EdfyzfQYC7s5+@xjBr=jEaS-=EI8sBUf} zNB@B9*cB>~wyxY8Zk@KLse?j77JfMhsP&T+U6v#WG%*|L5G*+RKtGr%Dy#iiFRaNL=e0TmJel8U+O(JG&?$aJO#%mZL~IPDDrAiN7D zx5v5v@U^(Bz^>G%t*~M*>V-_z4dS)1W(;nqtc8?md?Nro#*?Q0N2o&fYC32v;!(OV z)y70Ot0C9R*^j7B44gz`zOzq(gZ=T#*S`%9b?C%zx_<@ldGtIFSqyedi@l?Ti)dMP zbMZ3wDN3nE%FU2o%OVO5y%Q9SrTJj8=I>SyU}SmKp-wv;2@Pn|@~~ayTw*2l)9h-= ze}f~yL?XJ~uN+lI!dejA&uz`)qB}BNeQ+`^5k_q<7oUPx{Chhvv%2S?4-E|NN{7Xv zfSRCn5?Mn>vs5r{h|6QW4H)s%E2uAEl3a(=8OtvN zk~_jeOxc?zatNdQJ}!fDzC_g|ceG)3iHTw;Vf3UI1?}_1#(xX!W$LQ@Iqm#-r_5TKpfb1Hxv(xT@%@0m#+S<5p`w8bU!S*M^ zzwJ>`#$aY{HDhnKLVWU%K3j@}x&T$+D(jN=B;oHBTcrmX_E%SuYU@Qb32oO5PhB@7 zM;1j7_?xhJwAaOrAJL+iout*deBbp-s`r(|oxpDQ&3>!J9}q2l92pYr9xZ**z8eTu zDcb0Kx^*6X2tXzw`--$2*K!icOd;z{x;pJD!IrQvUXzKrt-IuQ@_91+;nE)R2mg>uD zQIKkS4uuA{l6B8L_@2?N)$0)T=`J^_l2bMDUl#mWN|4WrQR6Jozn`w_#`dzhR0KNY zqP|HGZl8F!>WH+@Hm`-XL|H zgm1|Nl@IjJmo0#e(~h3e#2t10U@~z^Bb@|Ii$SB(PAoDZ8&g{&P*`hx$VBkMi60x1 z462*EC0!~6MDjJyi3JOVWP%p)sXiJ1QEiU%!ZODs_~7OdUfyyaH#!^nh^4zdc=;Ag zsNmjP7kW$>Y1T2pN_FQmLd{ygLKdMLU}x%s<>}@vr%v9~yMd*%6(6qOr$zB9Ry|kS z%o)1{0e0T+u}5{Kb$Uv;;4t+8<7SN{EHiWNN12-D9a`Ap!a#ST+E+gDik7O z>9Bl9{?LRrifY$1uA1sJbckXiK(T2;Nwm{v-^QaQCjeSAYAoP2KH9d268{HO!Z|Do z&9?4#kag1KmkKcN9NeGNomP_|h11BGSqkvMNSQ{1DfXJ@ZTSiz&GW(_9@2BbfWY6q zp+0}CsVW9=4bKLicngMt`@`LAQvw@%H5Mq>7QYH15q~_A0bPbT$O$xH4$G*{+<5KK z6L|#4dMhO-^hJMI5S6VGNZlinHRR3AM{KN65{{@Ua;$tL+-3ODG-UY@?VgFNhp)0J|&cL;_De4<28fSue!PR0X8 z^=HPa{v`2#T!SA!(-yXl2&_$t&BIoono-L}Y?x_zib%)hhC$7RV7Ll32s=?mNXJ`H zhE|bjgU7c9smz0pf(e)z924*mA&Y>85H+VegbeLgFVc^*eHR2why|ysD{hr3V(Ni&=D;^mM)48^NzrvypRcvDB#0-My=h3&JRI|C~312-v&I zGF2glQjIpwF)kIz0^`_JfP2k^$qq=w)aW@NU%|g5ygsccPlD|W%Y_n-CG9Z@R8LUk z9o^lxW7$)J`7QQ3{lD5~S!KQP$OX9=48IQp95u655~_cqCeFE%mOxAzYi3V8Vgew3 z#(NvX$>{6azZlYy3Hm#6yB)Hg9|^=!xZds#p&r*87q9n2AK+m)P;OG+p3u>&%FSli zsgO$gZ*0GtJNm+D$phVGal-+;;M8c>D4O&&EuFAAOzS>Z2+bt8Ww-*Fu!KJr*}s+; zFkR2q5Jgmt9X`0p#`SpHuSfv2F-hD5An%8#^mNpbeJ+H8@c7XB9C3B1^cof*GPE$R zgS_{ibGc*h!#q&*xV-?Dfo{S2`+bAD;zjKYjF8>7Pn9#XW20h>JoK2unoQ_qMS!h= zj6YO&huf-{YV<^aW2gSROz8fD&Vy1kb!p&Db#MYzGi_kdC3u< z(4lc8tj3|YihD0??lW^@BZK^7fc9?1Chm3Oe7x-t=4=c0!wJAZLg@~cw4_^9X_YP}Wfl2t@eH5Kbuo5sVk#sz9`YE5jI?b<7SH!ah zr{vT&01AJQjKdF_qZrCG*FP-;ISJt0bO-y7OOs3SST$p!K(79S_EUdq0p}t{mDJBh zQFibEE|k@3-2Tr%3vV)U=0BCyXQ;~&m^2IzZLzZP~Uw!Z)DQff3%mQ!Yx_DSuB14|< z0RSaR!Z2^A@X{3~L2kMRDeU8MUkXw!Jp8n9V{P;n=8@&!B8jAnzV0Itbi-#(&+Nlw zeKDj@(3w)d%m3tOei(fBuXJ_swmidJM_X(W5ZO1%5dZL3_4j(2tyIR;Xwbld6H)?E zfjJ~ZotB;I5&QZDX$u?DgJ(}an(-J}TRsFj=H9 zI;pNG3#I2b#uXRGZReN$ESR6hG5GRc&C`OeSB#LTlzWn@DyKY8@Gagd<0an(LBsro zmH?xYs>!>JvivH;KJ$dKd*DGGkK$JzLd{y8J+&Jm<_byje8h3OO}M2yYaP3n66ksb zHn2cPl~Vi&p-)-u6v8rt=w4l&2gMr)jh1vcUlSX8Lu*fyRYU93FlDCRXpDq|T zLh?;WSCdk3c3aw`5EFFV?j_5z_zem;y@t3>{vlQ_fVbK6NXI*v9ou=8XwpeosAj~9 za9G(qU;_}eaWH^|^)ZS_6k?+Oj@{}k0EiF}qADPoYIc}Z`~HVbr8QAos>uE_J>U0l zBN(qQCxBy%zVx-+&_ilW#1xH8uGMm>^OJY^CZ|5tSLqPQ7~Dg-?suzzzi;6WI$2-8 z=syDoZW5#x*sN=>;J1E{XuMV){Ox(-(+7sMeWes2clEu2WkL1SHI-JxbmC(+VUwgv z7(;)()-Tuh^1b_@hZeNpgm2HtG@x`yflMc9Jk^&_&#d6;{MAmlfG5FXS;22j)jspY zY(Q+t()}KM22NK!rZrjPz&7*F>NgA4srxcHk)75AbPAS#N}Zb(7`}fts!yv3*-MH%|TYNms9m7UoFTG9Cf)#>keHb+5XyeeXH| z#xO82vS=|C%*9dGee;&ixu)*Cm<1%1YNk`ux!?+RB6zMb0GxmNjDQXVR-fie)2m-= zoqa^2^ooad3dVk0G{_2qdPV*@6A^>UFC^uNbY3!B5EgC%)i+q%mV}ttJN)!0nWYEM zgv@8M^d1E<)`thd_%N^X(SJ^bqlU3$832X^Z<)F4zo!S~f?;@|=4lQhWZTS5^63M1 z5?PrKq)D#$v#Pkt^v;76nfQ#>nK-Q4iDiG#d{|up$S|Eap#ZvzfRyQ@m_z}kHRtt6 zXCV}27&r${6y*ZC+S_|%7^q0~T;WVRANv!*Oee_FLp#Dav$(#|l}`YC@9^}=^Jt0) zQ)SRL)V!}Kyu4n=>-vZa;IpEb3F8wBzzp}8t_8Bu%?mvMR|0qu3()6kiZx#MX!ZmW zXJt3rD~=KqK_T3M5TP4)BJ{9L7Sa@v0hnnSXeCZ~i$8dv|J(6kEzwId=n8c+_Dfg} zKr-c3-jHewP#mV7ywzM5b}nxbc|%v2 z=C6c82RQ7+S$=Rpr@3u9ABOMu~Mri`ej-q2{P(8gs-&;UI&VZwo3us&f z7%rB?{-rOBF}10&-u7ci1Yxa2(^~q1|pRUVc=5o#0=yashfb>PME`Wyu zz;jn>=c{$swGCs?)!?>N{bAXovmY6~ZDJ>Np%$or8&~R>L54FRe_m)wQcMy|2DutX zv{;X0wI9mo?^&fRBvr+lU-|=GWfr5s+M{{vni4P*=&+DzIDHjDqG8P%H7eGXNT&hR zQ5hce4Dj2ds_pfWmb+x(s^Wf&rJ2ba143LVM5ND0UOiDMzlEZvd;+M{O(_dTcsazx z?3gE3Pc00Ez;x%~QiqpqRQMZX`(`6QM^ze2kr3V!?49;pBzq7%GYpc8SOIUitrMe7 ztrgAMXP6#d%>GFQliJT=H~a{?4Di}CQWq`D#aEqN50EhSM+h+>?uxxPB{|Co}(zo@g{#6&~qH=5!xU{XNq10fjlNxkt+cqDko2z=7Rb;H5O+v9aXpj!v|;+TV+NGvh~H!>mGJArNU`;ae)pDWk2^ ze7AH_IHe5t#VEW*3a{Sebh{1+ByrH^ABe(y*txC8UYf8g9VUqA;uj%jIjP+ zdaS}vzXlm^vAf1Y{3Ssd1>l)C+H_iU{KP<2D*&_|ai@h|ou|OUpDMIm=4t%2z=4YA~K) z0s!B&HiD9!?lH0`VnUSF%6yG+;m<$=7Kl5562UnV%=5i^B!%k#UUB1&5dSZYRC|;Z zH#pYxWVAXw{;lZ~0^pQ%aNf(StPHKVh4pj@JF&_w>U)6#_u;hN92o$03HksfV;&Y?;AVm|Q0D(F8c3^XyAmAaJhLbJ4cQL%5xh}5W6VtioGu%VG!h@k;P}#GG0t+R7P;FPfN+fe6x$} zY<=PkpXvqcP{bt_$#uVCvGB@L-4*~cE5hnaCJU2TaQQdC|6JO){Rz$@02Mi7V5CYA z6PaZc9tZ#`_H?)k2L`e4*TnV?pQ8*Qrk|#Pm)7JU8Q0brWJ`+hBzfO-e+1>o$WJ<>tikMfGCP~hul)Fz-d!9nsmW3fjCvnK=&bVi zaR&P8nx?H5s?%jq#~+ zFPy1As=I#&766J4YX?Iw_O$Vk;(%nBOPm>nEJeQoP~@OQoEueCq)j$}y#O>sR-rxS zp+KqV85umTBO%q%##Tf&foNnvV=x>pp_1=FUi9F6OTBr%Wrt7G9KbR_?SHikw^kx1 zM+hffEb|Kf%e zC0ouD4-Zc9=v=D2e^W7i1llp0jpj#P6-6|vQ~=y|XJ#8Y6dhb2k#f^4DIl<_1lSuq z2;jH5_;(A-VoN`P7x?w*kMl-?`)D4>wO{0PnHaa6fj*=ZfZ<1uacLA8@mBT(trG>o z1^M=v@W5UP63r}%=feHKfdHb9e0S2ET;M4HOT2=LYBymQbX4(cHGh7QBWI$dl+ z-e#MzebYeHWTvBY4XdxRx4t|iT#9=k#W;v<^oXck#vX4USQ$~DS*BNO(biyEvAHdE6STZ9zQ()Xr1ZwJ$UW+Y7ug~ zK#y~{y$aY6fC&Mr_ycIP$bu6IsP$sd2GEvJw2!R7fMJ;^`M=t``e-P(H9m9-lQWDt zqI@KCMW|$4$=B4FA~7k3?#UIA>GX+-l8+{ZL5)L+iHH;O`WPyo$yY;S4sMcegpiMh zB*V~P&VFb3=dN}Cxc8jaS>1K_TC>)EXWn=3=iU4FJbTaHzx_O^7%;g4v)@L+{+`6* zgyMVDIx1*$kX)^-MYym!ke?Mxj+wku8_=GCGy)R_P;(|Ar~q0NFdn#DuiC}Ta%Ni4 zO=G%)%La+;A&&iz_utOnGF|g1p8@~`DOYanJj=?YcE*9H>baU zJ3f<;xGdusJ|h>xD*1(R-DWsSV-TzPprZRmDWIBnjW%{AbEVF&1N8e$@K**bd%V%8 zi!wDPsq?O@Ww*#Yu5!tZY20<2O2}@H<0f;9QZQjG3-*rmd~YvYC_I&=-4HLsDF1le z`6r7Xl-rQVFklv50KUf1%pR}?S9D=s zQH!}3ovRIoC+GTFn*$~eAx;UDxg7(^OMq&FP$%#eK(P_f|yZ< z6@b6I%=@1ATFP7F2}A{CLcV^!O=%Fk$N*$kXqBnu5@u5znEA5pnSDRQjyFK~H1Vl- z1H)q5OPzpjcVbIs?E_qNYE5k=aN1miyUvn*-usaeuUYW={ z8%9E7UOG!iRP3{J&>?z_>7$*&0T_aRe`(H$0XS^{=)__pA-9H;?W|{03K()ZI!4}r zrnn{!<19tddlVgPc23`}JqH={a?`4zXFHYRPft^*P07A_jO(6t*!Eu}*ZM0eOS@r@ zULkr0WX)K>{sIsPX)*c4{ZyFZJxHT$t?rur85$SXAf?(YG_0M_#yY5i$mlCw7+rbw zTw2Yx@S0#p!LS1n1(1S9%GzlGuz4-7wcqfkIlrRtHGS1a;}Z zW`A)C)j^)VN?5_gu96~=-)+^APGelk-F5~t3Cdd>gCyT&eR;U;=x`LqU%$|_vWAc@ zao}?Nc$+WUtbyHUx3EJo&aon9(8T~E-oY44Ez6&@G>hA~r83&&0tj+4fVA4B(|1iV zeMVYQy7xeM-E>m_C%{!5RrO#wC`DVINZIRJHbPWW`7RQvtE#*DYKu&A1Y^ZSnCDed zH@X{%IW1lU#q&Dz1j24Nh7?aG+-d~XCl4R92h{k$%)ISzW;xl(i92WM`u8xie+Q}i z&w11kct}f|2J65GL^w?GZuoR;(HcEBp-6g^pd*%(i#LIX1*labEl6IfIvS6`$MSJ=9(&aV zkZAC|nVA{x8oWxeoW35r{$DzRBWC67ylfscq6EK)3vf(^Pvh}-ZBUDDtftS+3O8#8 zId-cLK5H(MYnjiU`S@{Tf&S{6kshqJgPNpTt#l;K>aLYeq&tE3oEAS6@)9LMxJy9f zVD1uLPx&2w;5}QORDr+1(%P`k=PLh-KeuewM0*NPo}QR%@Yu+*z|?VfAKq$-Va#4E z!q@R>v0i7ZTiIj$IXrW&75dVtcXEt>$v#!aoKnI^z*=DNBH;0pkO}_l@c;^S-Xhri z@!OA+30kp>r+JS+n7sLmr{yj${oh5WFSoyurl{w@C2fyb^FX$ZF52aR?^%Zy@p(XQCzc>GCLnv9 zD4J-)zh9Sz{Zhf{-xO-O8HBY!7*QYd5P7fo^w-s&rX$xfK}xGXoQu z(@&qJF#}6@U>l`I;5D?@+f7(FT>YHW%<0y*P_ghLZ?+JPUid~1m;Sn{aPTB~+*=h` zQImL1_a62!qPgNqRn7i=q{`ui)Rj_Cx_{o)h-=RWwD^^t>c;5XkUKQ0}zC- zq?ckV?u|o<&2ii+dvky-pJ30KNfkjz))4IO4?#<4i-NhbgOTvht^J>5=qZkNY7jaUm;f@FwyK(jasKA=nu&~IFdX~OJ1m~Ix*K3EUbb9VuZ%{qsqrHA~RGmcbtkT(@f|fR~Wl zg4-Ious9UCA1^Bi=|mZbD+71eNE%L^qpw7fi;rAX{~{I;e7zGZJS5rqHx6x4bF{k2Pn$0&%UP8)!MYEslmIYSbIg~{pm8uBNa z?_t{$T~U{MC`0dGOaV|$++cQbDr4ya50)^Ad7c?q#XH6OnOw}1g*#g|!tuK^;FJ0= z7h>TU0Ntw3$QNR>CoeRw69W6xWhuXN`}JCPEc=JYcP`F{G-XJF&OkOyD-T zhz?QZHSeqb8xIFU57DN9Emuqt+1o+|X5c#Xd2Hf(=tF6gH5efnIyh^gPYLAr=BE)( zlxX6_En*(u3}Va_a?B53Ts504Rx;Ez1h(@n zX-S3olb*sO2z@R@=R>#7n zI(nxP*`;)o^(0J?a)DNvf{cNbNVDO_HR}HWIzW{Eli}yv!RNOl>Hjt9e_NB{gpw^+ VT?j%#*c7a9dv}wF1qAo7-vFpbPeK3y literal 0 HcmV?d00001 diff --git a/docs/html/index.html b/docs/html/index.html index 7174fd18..becc711a 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities
                   10 Preconditioner routines
                   11 Iterative Methods +href="userhtmlse11.html#x17-14300011" id="QQ2-17-174">Iterative Methods
                   12 Extensions +href="userhtmlse12.html#x19-14600012" id="QQ2-19-177">Extensions
                   13 CUDA Environment Routines +href="userhtmlse13.html#x20-15500013" id="QQ2-20-192">CUDA Environment Routines
                   References +href="userhtmlli2.html#x21-170000" id="QQ2-21-221">References

                  diff --git a/docs/html/mat-.png b/docs/html/mat-.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f5c6f97763e00ac51e3febf2db6a9e5112863b GIT binary patch literal 92468 zcmYgY2RxPS`+q1|uTVy>O=*}7JM)m4j2t@04%vHeg`AvlD7=wTna4i%PLlPa%#N8+ zHXVEW-zW9{{!bqtdOYVI*L{ueb$zeLGwpjSG*m295CqYvsVeD05IHvlopGW#1MW1gsof#e&`o9P-Il2rrBkzO<(G_ias{u(~$_ zoo6pj`6?|9$S|EeY;%r#hQ<=%bt&ZZuNxt5ur~V++>!)O>Y&Wo-_KyT7r}s*h%FJG z=mie)le@L?R$xwF{cVY1b>5k$r!gnD596#5CfgT=)hVhU_dkI{l)r9&zJ*Bm{-JI0 zJghL*3a_9fo$Jqb^89BeSQ{fwU<8e__KZ38>t2Xo?$bIB?io8Ro`;Pq3MbEL%PGwK z2*YTAwOVqjp4_XF<+gk#(7CmI>SPxASi80^3hquBG^)Oa{AAzq>l8dg=V44>^_O_g z{kjxlTU$6=m1jsm`6O-%y*zH=b_I5c_+is%rxnvU*x>xB}^~2V4vh3Clw= zPcP30{_jJAK008Oj3Mp}zTexc;I-1)kO|ZKGY^wYkw2vQWrR+b@zRL^MzUDe4C`tB z8@TusmV2KChJA8!m}Uk*utolVc`jQ0Zyt6(FweqZ?f*upO|Zh7j9KK|Uxlf{e;=dX zx4s&3?QD~9%%4q|ZTm68ls|^n{62qqIZH$W*hJ07<*>Vf-r>JLSZq;G$$cNfFVe`L zh%rasG>?0q0X9s1A{~hDGn!79U;ktWIroHNswBU+<2i4kG1w4>QSqcb`7N~fcAeWY z!D^r0ReM|F7)&0; z_HkP(u?@(ai~y<1=K4eMc|VF=M*fpqdikZ?mVDM@MSl+Z`cPs*e#-wO`&qu;rkyYB zM6OT;_62cSv}F&;etkau8BU;ck)ye=-gF!Cnkil(aS3d0%GufWx{;zOWXE!rMvU$G z*{srb-?8bF2|KKO$LrHYJ8@bU9~QlBPWkQ|)cDq-eB9-_6bcopms^u|lsXvxiFw|F zLn=k(Bi=)-I^V2K&q3nCa<*5;dT=v2bz{O|t!xacGyFK(qv5rb%CCW|a*Yl6fB2>@ zugwk>xN}?Dwe018P^97>x^PyRRyU+mUs2d?-y&XI6J_g!`|p zh1lo5wX#bLZ4-Km>Cyd1hmqT|$>n;Ifj9>f->}zw0JlSLR_SD~B<{jJ1J`Jye?u4N z9o&#j1PBT_tGb>Tin^fmF^xZ9mzHO$SDFDzPY%OW_T|#u?8MchcFLxjskmQ=+_-&@ z(^D!2)!K)j$^YT1{ZQgUS5GV!c{#Bfg;MFJhaj^ruq$c1UUWnA{cbutpJU0ObYO^; zedTm(S9wzP10HbCRGu%tLhtI)WoFxuI5Aa(-eS5Ov`@{MEQLm$SGa%cFY`bEuc;LT06rRnmazcW_Zp~L|HGyGxY|ZT^qj@7=ZgR!dIj{_LHsp?kp+- z7|LgQ@vpF%I?I^WMo#);^U3`c=B;Sys}AfX(cQoD|mCet0QTXE27Y{MX0v{XusMcvu5@$AccG0be9#QTYgKAq(&1c#@#C(k= zi^aq^Vup;Xw4$SJ+a~1(7DJOAHm73QMB&N zVQ57TU)b~LGqE7ly=N-0FKrXdkhzswM3MN3o&Xl=tGAtDE0z3O)A~gW&y)_b09nRN z-=ka3VHh`@8ibo-lQfi2u`~Xj+#S15PjG3MJV);;&GtMs(~J>Cv_r93EEv`JNHMTn+(Rw8y5~O_2q{DS|&G=h! z8}U*5^<10^I{zf|?YzTHlYf@teQ$!%sa`obOI$d7huSesxVs|UE9utwc(%>f@9Iwp znUJe~bo9q=;MY+sPl1aamB$7diA6+ttOnzXRo6Tc(YD#Ze^6bLySHqZ7#{1-q(};V z=1rjhN>SS#L~YdkVWwbdQ$}-A*J8x_uJwz~e%ILth-nB;F`MpRtKkCYDbXF7p! zU0?LX?rcd*A_&*N^(cLmV^AW6aCJ&M;U(QtyJKx2N!F4(Q(8ypsUGKts zK@EPP&aJmq&rvG5HN|iySQZXjXBBLcp!#Cciex4@5ld~z3-6XSI;TJJ40WvYfChrP z;(iqMBnoIZ++`2o5OefL?RcGCli-n6XH2@|e+?y#HMfBv7kgt$?t;HY-!kB&`E8q| z((2+hqmkUBDlq=!IDX14rR-)!{#X}o=v^g~ zJ_~acP-GveYcv` zK=Q{RkiYV;*N?#1%Bfbo%dc5>0CtEq7l>DPe8ia$Ft3_9aywcB$(|yddeM=ZNBl3Y zSz3rAK5QVOxv9;Q0)qH}2}URUYpPXqPQJU~pNOUG`s*anT$a`%$NP#hDS)%8*>mGH zN@y0p$C(wr(5=O{@|x<-Zv|#LxV|;@i!S3ujf#Z4))0*CfcY|(f^|L?@irbz$#jq% z^0Vd86%&_JWqboX?E{$VLp9WzL_y6`RGD+zoyk7Fu?BcWug`0&YLSf}o$narCRC6w zv=ZZo(YFBFRSOsMmNCVpm)+`pi^q}0wr)k7hSJ-Stgx)qDyItPYh(^BnB}*f`|^dZ zx@*-qs8C#&(GrpAfVbaF$vP7&PQ%440pfr9!{(+rh4#_Sn>;Jq<|K|u?-INE;J{CK zXd7&WJ2(Om=w{#X;l;fo9%Ek3rO0@v2$>=eei;?9S99Wms8JXsX&P=cYX7Klb`}V1 z35oc+RZL4VGYTAPhCeMN@9go=v`vhtlFrw{FSoRJAnYXZ)_h}ey!+uMdAb$X6lTOo z+sLdG0)=}(9RFG_;yorDuqPl$x5T>Ne+v4{;&_&uvtK6U>{Ua-YFx`B&WvXct~YBZ z`UWzsnug1JVrxR%1j#Y6TOS0@lLGsbzy*njZwQj7&d`V0IMeFeQ{_A@6cygTDcx#q)&s- zBSvMfYl5kQc|R9D$BC*le*N2t6RA-s&A;MI-p!>z%+w>5@3MP7?e%%w+bFK zOuGmti>>{Oi`fVfnDW68g1&93Gb?A2Jq|P&j2<*P4TUJ%+Ed^&)Y~d5LasGD%?1Gm zmsKJHM_AdUUG{8|TimUImorGi`@%JD8uWKAuwAPu03_Cr}#&=#hNgI*YAlnCW~b}gNc2zKLrajA>tuz z6124efAYImF%aaSlRAqSv#=>049C!5m1>`(_I*<;T}d+-7k>a%2}B@}UeOMLJ)a%P zW8r5o)E!$7=kJf0fMb?ITMvO~ojs5L$isaJdY>@xw^BtQ(3GbbP0A3Ca*>edacb>@ z!wz2Bh}yBN)04G&(keo_R&#@n{HXkEAs^y?=WE|?&K^5Pf-z^+fwmETAy^!2;1=Hn@Hyozw%+P_SD4q*Xu(xJgn#B zmDNVZFAF395M04GGA>Vn;DJXlnX-;3LXd}Q@^-j`Aq75cARq=f8bM=Un(R`wWW@nK zhP=@v7mgL(0+Qh@1I$^r^u*P-#1air#63@VoE zUazx1pJoEz9s3+VWFv85(^1!8-nUVKZZ}v=AY@||m~BP2#P;g2bihcVfPe{(ks5;Z zu#Vi8DdJxe*>j#ej~gofsvMWsVe(E$Ypw%p#hyH{hM^fW2U8h;I|dR^-ss%(X?qoTK;-?+GLLrg;Ijz&RVv^WKisVG-SKL<$3D$LYWVsV%#Z-fX9r2Ph)2hdArp7eM{ z*|o5Icg6`@^6e*Knxf{6Yr(iFzs*qTp5u3st@r!GhQP*Z-q&w-F)+sr)?TFV=SMn92VIO4ad$q-0q7n4?t?j_ul7m8O+Cy28!V4pz1g!aRQ_<_ zZMY|kd$a?ceD|2GJRKs#kA;{!rN6^EwGS&75E0c#UI|N{28rd%(-+0^OjkSXMN%|t zjM)9HXxk>u^mcu5JRt`+d5#w2WOx?;;_2+B2g*Xc3}bOPecL+}h;@@Q*`gf&%!PW@ zH019FQ>sMm?`E1A6i{)M3hZkDBX5jCH4YSW{mO|$IC864*7~So${8Igxfij6w|mwP z)Zq_0;}3lu9yB5eoAbkxI(l2Pc>*~m%<}h+<|Yoz0}O3 zWZnYDU2d-dGTX(imzqj?utNQSKq+HN$rR0wqk#C+1IcGF?le?9i#5t5kbJfPe(%Ev z{AQ$k+`S${5W6EP!Z4ni5;cR7o_JZ$%N`mT`sFP{*|hxX=<|aq5e`E%T(d0al$d(x z&j$g+=b*MW0RG3yeXr2_C;0gDNJCtO`m|zO*_TJ`aAlw@wJetyu3V(GV^Lv!SuYky z!Hv#~@%D=*2GYD+C~!`+Wfo*mNCDrtmZ3x~5}`UWF#9(I)hAdX@@m#ZWyA7a<=VR8 z3PM-!&21&-zs?B2jeK{vSW!nMe5fd>b%Z1hEa(tk(G(y{`t~D|BuTw(pzvR{gtBsw zG#;9OP_t;GNP$q1@QR)FO?3X+2@@H>e2*;ZoR5<^Uz@eWhTm&!aU{dIi;~5*xX%Qr zjaY#E^H$6Ld}tZ`%y(ot3kQ^rF0&N85+*P-uU-k#U6Y%+d3jT1C3~ZfZjlw-b{we% zfu^v73t;!<#JfBGu0%(6Hh$UKW^&2RfT?Ft1k}-dBIt0VRZlJS3nZ>dsy?Qg;HQ4H z&v1P?-*L5&w5^&dv<*kjefa>ORO&u_#!~9=2mHA}6KQJbvj~>E$j*b}mDtz(n(rOJ z4F=j|+E~r|wWv8w3_Gl3fB{amRYyK)n_6^z#TP{ag^XP5R{7VUb2E?taMLQlO-Th* zEbOpBJu*Bxd9w^xR#iEvquFfx8l*XTy^l%_7@ahRw>ZWg2`6B|T8z)c0vJ&|!!mFZ z^X586rQwH!!Uo|~GHC7{5iVtgVGK5T!tO>sZV#fGKuHMg8l`ndRZmIcDrd?Oc?*!6 zQ-p#gevu0lOhT4F$9YDT87mht_kfJW0aVzGfB24P>qlDon{rHK^%hVk=qaRbmUaD5 zL$oY;0t^5a0b-0TnHPbi4OBknEwll~Hxvh@6b+^)*suTt{G$0iQb_yaKCD55Vzxgi$gH-5iArvs5a6kUA1yba&I6Xv@aZXLD>Pr3YA8}+CTjc8 zzLb|=?cFMnG?v?9OtQBOj6e-Ul(tV`iU7VXK+d!tZk-^cP7OmBHCau}7DAAw&K-?G zfzCB!P7790Zv;-Eu4urilW%N+;>qGhnI-SMS`QHfEYl!HnQy#p0(;a91^#IxBZJB< z|2qI+OV3wi4C2F!r^`YZ0BBOA*sULjD|8p+c=(SeJ~O6DdF5c40M;*!y^YyHoIDbpMEI_N#;PLr8V;291%)WVthiQ#@9PxLLXh9D7q5{|{>*?6z z?{WI|v%eNs4;GgiA5d5deyyX#Q2DV+l^QrU8w?-7yP?WYG02j^i_7-gIWrn6xyH8H z8B{&iR+GJPLvOZwC3TtV*eh>@yf!?qbhOPolwtJ-6hewm*^-!*P`87!7oVZtup~dz zXXFJ+=<|J0!1jzWX9uOHz46G++qPsNAf9Wr9k9BR0j>EeF^p^*DSy0J;EC)H0 zRd8L&;fC;Xm)AoZ)%vg$ESJM;DSIA{&jM7|_>yVDwkd1gCOb1@(E z&=Z6c1D4Z9$Uz8Nc)_HU&^3~pwQDjYZH$xo7|0#~j;E^u(?!Fb_gaD?MLnba-*+O_ z*Q8j^DyL;IzAA_vZV%GMJrUt~_ef)Xuhg!+|i! zJDrEFgX8~ZOsm1vwUWt&Tj*B5{elTfg!{-2HjzUiVm3wqULXeenZq#}8ERdJyo|Br z^n|y9{F)Kq)XScf{i}x5>=YF&6F$VwbVh)hS-!c=Py&)hm^$~k#Y1d&+x`N`Nwtd~ zepymb3g}JnUAPIVbD-7&n1FY2!f6lWsUdko5uvbrb2(M+87iXXEfOn2#PPHA>%hr0 z15rxzbZp`3?g~CAAF2yyP&#VW_^=@M`r^LrlVi*F$^$J@fX{3aL<|HC@75%OJRB+_ z=>mKx9I(nW|Ut0YzS7ed@Y<#tm~zDV5Z$tvsvq2da+IN2QSwfX;F- z1LZ6sN}h}5kBkRtvSW3bUuh*sGb5O407$kFy%CmwGhL$K=YxVoWP(ug#?qaSMCEwf z&6v%4Mq`$q5Gx~6!5=;lqrb#kbK${|Z}d{;R-JG{nRq0s3WbURiIG}MGsr~?xdjD` z#mFV?I!!ihqc;NDZ^gPIl?=D6fhYfD_mBc%bz2{f8G3oyhg0~~w>x|L{z;epRN$Ih zzycMh5@Zqd0^#i=E1B+=c$2rWmj|?FAA5$+wjIHCs<3w3B4ikt9T6jjORD0fSBq^^ z{FwwDxN-S*>y{v$zZn6%OVl`^Ie0se)+>>i$umHIc0oz-Dw(8;hQ1v~R!lYsP9pV# zAW^ckZ*sPSyZ^(-F%&*Dn_HeGBhQZk1wH%j*h7&oK~ikbyL%hnjey!}@2+c=Lf$M| zq-p3aGk}hd%v1O3X2yfZt7mhrZ6DaKwoWsmZG`*SDz-{UA(z{}sn(hkwXOy%j36NB zTQSa9rOv|ISk?2cbJCK(BP2b$pFuaLkhGDKtzNp0s;av8?Ioc zg3I+tk*1ofySMRL+`UaSTU7OTU#R=<4J;)+_RMJ9UcLN%p6yxq`la6Ln{qKuZb3>? zDxc=1ZD+^;uVt*Dj>MsPg7RX z-{$HN5e(~(EYH-v;425`=g8zM(_GGuaXdKe$(uW^L35uXU!3wHdW)HfZ}f)|y)015 zR#1F>Q6}1kt!|wX-0NfsDA->vryxiIqjq22_ICsr~#udY)zSlz$t zMpt#-01%j@A17<_fVZZxcy$_U=EiX$?as$cyH+Rl;G$W=iu%;mrQHX0%0@y<=Xb|a zW3lW2mc0${mZ4>0l3&4H)Oh7PGE}n64MB4?pTaPJ4TSrw3xCAwB-v0tdw_L`mH^Q) zqyX{Y66-b0sK>;oWT}*hn3^&Wo~XgY;w3wUH@GwO^FhWTAJ0VE-Xh3zR?G%p({aad z<@y8%tOca@wOc$qxEgYuO8|pGke@Sd*Si z;TZTzGZC*rPy(OBc~|7R3$W8_=^l`vt<|*ZWZw3qHB*4cV-hu&&>+bmUdCTC=-e9L zPUrmQ8$;O7!A=q`$Z!BfOuL(@Xs`Sl6QozSlBy;wFT&cW^0*W!eiOC>K)eeait&3) zFq0p?K{{VbPDV~oOgabS(DQg*8W|0o67i}Zcu9xDs{hAO7Fz^TbHjhn_da@ngJ`O7 z{y`LKohs&pmV+kR*QG}Wdb)A>*td;Q{TwiTe57d4dS_(x?+4&SGL%V_J1if2?mt#l zFP)Ox(kdRq$o`w^^efQf&LEZ-h*ysMc~~2ExCHxqUm;ZeEHJi};POAc0K{cLfBUB9 z{n@xaa3_E>rt&m^t-w9l{!pwQ$X_+ye>&Id8cKfA)6x7A{Q%%^^Gn>De%?AAO4V%Q zbgdJ2EZwu-*zjY-&sS(YdN!}&A1l0E`}#p}j+2B)lszRP;m|8}wz2Yu|B*@RY_RrN zjt#WR$&jM-aW#LJW0hHE>M)emO>mOEkXK;RXJntny`4Uhhy3aQ z`>&%~|KCv=cvBz-Ov3+AvMg_|3Eub4tsrUy7Rx2PE0l*kRWjE`KxBxJ zRCLTqPuORS3V-A#IA1N$c@zMo64vd z!q2lq=Mr3m)nm6~j^_RK`!o=#Lw!tQow!+g*9T2+WINW4H1v_?fVM(--}mzHcnKHh zNdhcZQLRfF;KF1IZ6ri6_LM+!*LhNlb}RN(R8%fQMA^S3_|$pb`*HZzv@Y1?d?7DG zb%OS%`m1-w<-YmX4maNDSsy;88Nf%EM?yFMbWvy*NGZ1Q*(jc{*brkLZ`i-M{5ZZg zl=km#0Qn-&38B4xVF4R9nl~r$N7Q>iUI5d;M0y5lss1idKzjLo@fhFK zG`Q<;;Z_v_8?R|C<~JTc|DOr;r+3C<{*0NU@SOa9mF1w zi3g-1ed2%SlJw(F3VG4RuzWsGIOU0A%@pa<(B2Q_+jVY@QzPRfBp6Ro<@Pd@f z0JkM@T3dgNH7V!MPb}YkQwL<8I_61*~%f(=oL! z7}-=JW(b$>^#}f^ICjHfsz~Xh7L)9u3O%9GUyKB}>ke3(KqofmNybGmKxnu=dU05& zJ6MYWDg4xhBuTg&DN~q(3<4Nv#g*!k7Qj$dQ^bjBJki$Yndh5JDWPI3W%C#0< zK5pBvem_DJjIm#Hn^s1(vAg;CbhuqM$WYuWrnX5L)#GDYiDdgkP1V%^L+P_nRwwEk;uAd$OL(GyB*&(TNgy!-2t`<0q!m!haI_4! zArBcHT70_}_h8whnohN5K7u9V*`e#+*N?VTY(-1c5}=r8cO#6*vS~!`nl&Ht&YI7J zGAJXfz#iE3zf{nb{B+=9O4a;#Rx;I!1WL&`7uPZNcF&e|tJgKASMwN<(UQ65Y@csa zPfmYH;`(`$r@OaR|MHCOmnK^!Y4!a|X;sdBji63*B{s17Qk0LSDS(A@2_ka7y6dIS zRQCsB`qnAIrZ$W~O`Pbar@tofDYk{uG|UdJNqaXBYK!LtMaIc+B*J-@h09DwZPK1@ zY+eD-RCWK(*MhR0Z}_C`Cm`b1E%JRYWA5}-k{&nH`Dm_G2g+qJMj$+=9~PEKtlf4V z4>&(j=X<`$G?<;9zNjIHQSSIBbF9^>hsZua?Gp@Jm{HS`pRP`_sh}j@Mm)It*uS`) zhgFWH^c2MU0j=s5#d^@^%h>OTjbXy3oE2?mcUOBLB0fNa6s?tP{}4p-W5Nn9mQ}+2^*hEAj1Gz5W56MGvuAY zW0{K|-|#!)1MDEsL! zWv+A}-Gxqg)g!a;we%ch#?ME|oi|Jy_Xr%YKM?V5q|BfYGbsu=ES!}P$;mj9A@CJY ztGP5(E;ROqBdy1L_lpQcRqqN}%C@5Jyhx&qrkEU+IqY&2}PFkM_PN5?X`T z9Cxbnu&tVc0xwNA9j1Ih4!ur1@?>!2VinjdTHXELS&gHHp8GpHIV(R)Y~CDBHS^AX z)}dk@U20~@C0oSW%P%saGssC}z|s5qy$4=ZL>_r{M-5*$v$;4#oTHV1pG|8?7N6+9 z^_~~l@u(?KuE)FN&}T8Q8My6O^Kzl8KZCTP?xs{~_hn8k>lbL2rxhhc;O(@PSZ*5d zW`Qz6V;S9vEbcBMi9&|Bu!AGFY=?#WEbV?rxYoJT*K?HNI%xrp zToR3nF_2E)`3Nj&uHq!}38rAf{#~ytr>zmmVP_XP!WP0hcby^ zRa8~H-m0nDN=f?efMP-1*5g`EdMgWNC743ZS!w>=UW5Utc9vtuQ9^{^1bo8B)rKBt^A0^m_cxTegDBwB9vU*O_cy3V>s*3|9>PM$t@peLRs(*xOv(Q!c;5e=?-VaJM2cXf5bW z;3LLp;7rm=*pMYXuDYy+c?BB9C(6KZ_UU!>ceiu+sp$uO^m?fRgn6RvSwNKE09`?T z$icuxoFd7L(Slg!MNk;$gX_Wc;q<+^-}2f)6m*?<62S=9(sDeb6%$`jC1dN)|3foV zy(fYfZ5DkW6o8;5RjTnqaP|l2p6P+1qJ_Wvqcg3~Psa)S0)aXZiQJB9O77}}4YNSR zPi?P@qr9Ei)H2yO-e7cdQ0jav+?!D)uKV2^U#=wz0^XA9FzIB6(E;!Z&xIQf;4-1u z?&&z|^X9>-Q2H~_RF;Q)#v7Kej1S!`l|4)Mk@fyZ`6d zcp$stTdgg3R*OssuZ5}N z>D6A)Q)lzCP!C4Mm8Y{Mf9P7XyBr0qi;3PkTx-?PRW;^i_)1FAQxjgY;+Ab5crRFD zpuv+0)5e3Fz*!si*x1DZ@604yFUR)$bS$Vqd1Ri`1q;*QOB32d?v`aNv`5LNBo>nG zhij!}Qo2mUla(-C`4w<>+iq`vCB{9|gFW=#8F&#+vdwk))_Ex1%Q!b|3C?Sx*+E({ zt}mPUKJ&u+6Q#6KW<`Uv3F+RuPeOh^_brASAb0$wguJ6SFEW{SMz4BQGfH}EszjsIP1^L zP2=$apu?;7EyzBXB&>t$Q#+6%R@L*nFB1ic7RM6#sf|mZTK8nu7}XjC*tC7PkWijSEVh^ z$p<;Nmp&t}K$AcV6^kH+jwpn+jnTsj4f3hV$=Om~Y@NSm(gzeWzFw#hpmi5_gH+-A zg9R&@i?)S0vbR6Dq0bM0Ww4VKUhFV^o*wsjiQ4;vk?^^FA^-PZ$gN%&IKI-zkUSiHlwm$b(~m#KbAipv-BRwOTadl-{WdAIh%}59h1>8t5@cf{rv%s zc2K>(W@{hny^?JjcnA+XWtU?mh_Gil3&|^~5V815w0?eaDLI?5fpnU&zd`NVUPeL% zP^e8K%3hO(-bhc%kroJw>J3*{El}{zz5q+j77I19qLrvAd_XymEJot}U(kVCcj0P^ zwFXiBfVCAmi*)G^7JMSLh0?`p&vK(_3%nI5s&BWj!V8!aRVN*8yrh@-%-gc~*nZW{ zD*o-|V<4Zv)lrqk19irkn;Ki$;5M-3LKezY`KRw^}-YG38vlD;QyqUs`{JJMDZ*V})o3`Hxkb}701&uH1 zJI_G*)_d{q4#s0Xo};nwV{c7R60!$Qvc>V?)GzmS*PkJ6?4Jk-G60>}v!Lg9PonlO z?mV6gBT+ayTz)-QC&E$H;NUhGSJ>`CYgSOv3W)$=mP8-+Jej!EG z{Yes!=40cv>R`|_iG5naaF~MHSr6|ytWWx+yJ5=6#B-n!W$`PW%h4O*=UyhKEcS0S zU8_E}mr8zaf1&d>aOuIwzqmo!d!oo$X#yl|jRrgYzM6_B9~wR(D zpDhKZ&bN3*drJx&Bx}u!<+U4taTuw1p$=kN*+a)hu##5l<6ywE2boO!umJ9XUHRks zhwO6G4F2wmQ)ZLLpzVbHWxzdN5IIIajMaKCf<1!xbH`frFEYr?Iv!(1YwF!}3b1<# zL;TcMdW*e`Eqt;=VFO0Mp1*Asjw()6zhhZD;{h@ryUFe-tHS&^ux@yGr=usY2VjX{ z2;3;CoQ3dU=J zW*AQKT@N*aUoCKl9R1)dt~Q7jg51+3&>(fcZhQQm7t_K`P_~kH95$i67B(6?@1R>@ zDi5D@Gi2mX8=dRpEu>^shff1Lk$C{tn$%JAtnPT+fAg;_nMh-M0n}+=BYAYXEk@!D zie)&N?j4gG7}s}N)*0==gx5^41b%mf6x6D9smDPXNWN$oXr6uLIqw`WZD^SMb zjO*_K%KKHrtZ8+*zcTzF^8#%6l#^t<)`kLJayhBkj7Zt%OM3|d(@L(zrLU^U)fx1t zCiM{WEFCXKn7+;pYu=$1{3$2*7Oo$lAhUDSHMwIiH?OK;eDqry~-z%fa%8R6h&h|EvG{9ePnBKEK&mRLm z`?QyI!h0nbl)K_9I<7j!%-~N$+Ia;LpeW4Pd||kY!)4Ld8! zZ}IunFkA1H(P#d0pdI6-r_~KkpcUn4^)@Ui-|{lnoVIGS?DiXR0Q!8}?S>WiTa*PT zEj0It@ug62V=T~AWAMoo={#B__!N|*nLJXW`V!WG8Rqf%gTIS3FDBuwmbTQ z<|0zM<;pKEr<7fNx0JL~^>h*>I|lW)h8o;w?;Xsv%H;xAtSiP@ z0y<)H#)LqHm2V~tGw`>{N2^J970?X!V6%_^noG4VS?(C6j1E(=%)D*(weT{9tQ?ZgGtq7Ff2)(2aPczj~f{C<2f>7sMA(FMKe0C>qG5fsgPcXNuKGT5f<;$uX;pCobdW zp>N`L1n92O(%3S7hVscFzM14@4SXLOh-oL3^Ha=fp!P)ig3gx1hw%+a{#}`9SpOPM zHgfx*`_TUXP+xEmy zxkyle{901Bv)V!W-ZWq*nK16ZI&>>1GDA`gFRcMyar!J_NCSGY`0X_-sY%oPWQ_DT z_4<6ggy4P&V>4->A-`4hFG?0GkiZM${bxWkoXp|}p71idH%n69pk;rl7P#tx8UUiZ zQ*IO1Cw6>CtNXe{w?P_J8Yi4W1pOj9hN~UpA{TonOYgEC9ujJ7B@UzR`nAjl+EBj-l4K2 zft)}h5nv$aKf-Of$Z!1h-z02ycbVy3@!cMcEvfqFsEFa>54F7uBYkng>=|4*Y~*gi z?~(yNPXFIR;JLNmfs&s(*|&PmF*I%PU<#L;xvPh(dA1~IL$Db+%WY`*{ljJ^Hrus5 zF}hZp{uQ<&Raml!bJ(6F!LMv)`1*w0R?gEK#v>m@zbUjQf;TsU{N_Md>$gOxBydjb zbIBgyBMO|m06)6bSC`?SFniG*yam%f?03b>YTb1qc1wYOe_w(~^p|;ZR_PU#3xouK z{9zV~V_T@EKRx(*T(ZRC!a>jZYUvate=8$ez<>#Mv@=dl z0IM%8SFl80*lmyVZJ!2FV=(*-=v1u;WFGuV-m%o*yrJDN$HgOSJ0j~sJ*kKYk-C>B z@L04rG$f)$1{p_APXI3m$=LQj3m+(IqP=$ZBjr-`xx8#mX3Df?Z{kN(BC{@smfEB0vkQVW0T zaw^wxzEy)S>!R_+==R6v{PNJE(Hk$qkd^cIBR z{Q+91Q`GA(K(=a{wQT;c1{5;*)r+Efi9|>yR)1R1FxI<2EHe8}IP_M4t6sH$dASs- z#BiJmcwI=_iRIbuvzyQYyIcn?Uv=nk>fG-OeL$r1Nk4D&eu#`Q23nUcqpQ80<6w{S zm#blJ+)Qp{yygDEoV3{S4PL3i;d^^Txx!FJVmdBghUF2#ZJ@cA2Su$z41#) zyXDP6Z?PN&4#cpx&f!8DVq1F#vUXH1=SJJ0MT_!`>zHafw^O?3{t-wwg6q7 zdg`9o$skKCetD>~Dyky$GY+RFMSD_khrG^H(&2Ph4EKEBCuDZalzMbM$afnztYUgu zZdLz}fp+$>TntJhz8gReqd+lNkFoF=@6~a^{f&tEX{l~zWD)WbCFBw9mEZpmR5RgfSt$UeU);fDRn6Isn#`>>Yw4?eIx$OKWPtbk& z;6?010GE8TZR>Bs(g8jKQ(gZ3f^Pcc@L=@je}pk4-e2*DOi!PzV1%tW66e(UZ%&;P zhA;~`5G~r{&JFS<;wAF>&phw-t$b4_R>(nzky1cSIeo$BtaE)?7h+nquvk4S{v(*u zfm_%1Yq$tg(xOY((D8MiBhNb)Z(bQ`09N~;J85;-8a~$i<-)j}4|tusF=cjFcrYM& z8yy6g;Br9Dekc#SxpK!hVmrn}N=8bGWk?29*oIs3njAkj(mgpo@u4S&@0(jw^{Y^t z@flm@;I#bpP8!myE`sJ`q1=0|wv{Bns80Saz`jb4LlxJ+J{e$peIo2B#b=PPSpP4n zgrhGSv!1jen?Sss>j!Rza$2|bPxfh+mqJxR4}>yleR2b0FNp$W8?Suk{~cAhSh>X* zk{0>NqS>i@KM81ZKw&IKeuCWs z5Ww-E_r zLZgP`5<*e34@*(lybE*sxVmS^p+KVYZrB?IB*sZx#RR zAAnYE?*Auh74X`2uQAn0}!0XHJ`E6-$)9CV!MY#IX0j4e|X^^;lBemH(aRL*cdcOQO67df<{92WK zGO@L>U$W4FI4h(t-y4_gA|K6VmOm{Ru7FJ5Hm5HyZOOAc$ zArDaoP4}Rd2(auc25FAW^y2)M1+nE!3-(O;H371?X?9L#$ZMfnFlhCYBk^x_fM!!C zkc)$Hv*`g@9L-O`h5oT@k_OmWW`I9(rlwE59~{j(=N62f{`Gjyo#91-1pJbdUI1ZX z(ExA_LlcMFBL|LkL5F)C+hf)4S5_K=w^K}miP?_-YC)h#ZQ6%6a(dUBDVh$3Wb%1s zZ`kvqUOh%RUpc)V$o!*`L%@NwaV`(FGr=?EW?s6DMoFZBu1!W-V9Yi-{Z6jI=1wJP zL4qUejz>R_rMpByRR=I~K29WpiCCJnd}_{#-z+AG&YO;NJ6p@ja>v9l3f4zYPq=9k zw7m<0tK7=roXP0^WPO$Y_6nBM^#Xka*r5OqN9_vqnaPoY`*Esz9v!oI&_o%{MofYu z1E{cf_ce#!7heVlNiO&899NfUVc+-Ms;h2C>p~Z&M3yJKYR0~h*1lxAEoba0=(GMK z*=KiPyJ=di-gjLyfbhL&ipVAc7_)nfudV%Bfs?-RGg$YnB@!nPpI6JEI!86SpG4|4 zhCbb-e}xtcQTna@P^W$L!?px_=koqP<@e`W6`Jp@N%TFiFVT_-{i{P5eb<8d>zZP3 z{Ct4f^V6F(tfvMr5ZpW7sx!{^)wya~&-tm=dInydy2P1Pa)!~%*Va`v$J~2%gI`zO zG>zJ=-pw(|eH7TPtaLCiys)Q#?)gg_8u>TImnb9`g67^csNRen5hr`PtiLvqQa-SG zrTtNpMKWl$xc(|`=9B)z>E&CO#LwFC+D=rxI(><=oL82LPF{g`Achu~>MX)SzttuTbj48x5OnMchO&w z7`@x=Z_{Ivpaz2dc`h}VI&Zc1CrU)ht#%ao6)qVB&=OGH^bF}0eaI`xcdi0`T>HCP9;fwtzv0%SJao?s>@*zdJ z0)6!6-eT(PqeqY483|dFox+XY8@x~uroyO!d6#i>uP^`fTw-~%kE;(ISk606qey+~ zuM6>Z0)j#<|K9Dj zsd|rnJO#b?QGG&P@NGJGpJ~%iCfcM?eemziTL#iyJzXl9H<<@^?ezHK`%Hpr1t)d3 z8QYq`$rqq@E-fFlzIZY1vv*+I6QroqZ!++93(KT|)+niR5nSe_9n>FkUS4tv7TNnk zB44qt50j!jCy}U78pj%?Tqm`+^=%tnChxmFw%Ss=8YDb^Jh@LGXvs$R$Q?@u5sHH8 z(+<}rHuGK@sX0xpUP?aQ{rof(@&svU+$gU4vjofp4g<_7WHjH8%wuC~K)F@38T`n* zAtyeu`d8)WK(e*i(_C_zwaWdAn>%}WgX(e<8T4W3p@gjDv&@#vtBIXsTF!+9g%hLr zu_LauFC^D()iZmQOYwEuovW@ktyFhWGo!8khhk@t=pB95jLx5+%+cb%TF)G-r*?$z zITktEmD)da!(YV@Uc!i%8xUT~g-sh?aX>;poAZJ(tSSFDz= zr#9|nSuIWt*drL@md6Zazv9Qd{-QB@8${AZ)Pjm*fwaddeVxPR{V}GkhC>tT_B}Nv z;P~b5T!IwWY?WRLtu*N;;E$4!?UlkRWxq%O;`)AYj>@%zrb&w1|pBjDa^%{k`i_nmWL+z!Xu6{w>2J^86ypz!s} zj;%QA(4FSx6~CI0+alUVgp2}JIr$MtyW6iWdM)p)R!;_rpUxO=+w>mLj2uDulciZK z>Jw<&7&$4H!loXBX?_#`hL)wu5V-&q2F8~NhV#45rlau3(LAKs(<*7tp46;Tb2}}h zl0AY(K!yl?K#s|~$+v5zI;Ci>KJJ#e9v$Yp>G*qAAX_Un2YhKvM8m8Sf3LVop0%)$ zP-tOlh?-54Mz>RS3>F>sxv8W`(U&Qu2cTv3)-xZ6EO}w$YHbPD3q1uTB%-y+{b_hQ z>+EG%!~Qa%uf>*PuoN&3GJYPR4)lUGrHUWv9AieD_kukj9WI52aWTPu2F9hB*%X&_ z^G!JXP>Vt)r3Qs9C!c)8(kUW5YOnPe-cs_k{<0sAn8{p-32z{8!?QOFhq9gxTk<|w+wXth{$8)DpkX9Gzrev+M_J%X z2wDOrp80}7Ag!VAN@_-A2wBMsB;;8G%QKGFAp<>7h)$oL_?{F#K7Fy4ExOX+hCq-P zy?-=;)~OL6>!zM>BjVqB4h;CC)~Lz#)z*Ekig4d=gjE;x@E$l`R~aTnY(D%>GxM&S z=^JJ5A>wj$3ByX|Tko<{+hrtu^4zD>lln|8Y2kG$1mZc1!sb%W_ng{X6=g)xELc06 zBT7gn&=L+>LHP5|JQ38Z)S3-EhGsb**Pk!9<=M9ymu}#aN zKhbjR>wa@3SRS_yeDehc%Gp$BX31S4lH$OA9wE&9^jFEU>1T3~CM3 z#=88)924!0UAGm;h(S-s_YY4c` zpT}5NMSZV;tC}Dx6zn;t>XLo<8se~^V{$_G&!!)eqhAtpX)(wdCFQ5mRx`|)*F=3^ zPX@})$kn6L(IF;VbT$i8*6!<8;vUt98^MSP=|xh@iH9ka8A?NwqV?1ik`*~<`^SB8 zvx-_ZpB&q-!)cDjG)J>asG-B}`iHWr@BQuRXkT>MlQcPbe3j_5O+1wPxI3(h+EoJ( zwE4I`bw^+8ZkMHgr=crn`s|#U<*2XL#qVW2le}7UOMWbMQDGC|$DXOaDAmM2pA&G^ z?80X6*+~My>J*uE-ZGK>-*ev&cZ;L}|Ht`ere;56r{&kS2a>NxIm=v1@$WRtsV;oA}AUZSt*=|zP*x%_++2{?B}ax+E8Nh`4Z2vZGag0N}* zQHmp1zom{+9*Z9to^a-0anf+5MIZ>7ayFM1n4Go_EUiaBxQYk~spc6uZJjAm$juhP zL~Tzm{_1vq?NOUD^jcd<8zKAimZW?FH|Hz_T7jxUYzl&z9LM8>?LVtBNctY~E@8$& z@9P$lsuq__JA%FppvL*NZhxi}eOX_slM~~s!7*#$)IrRR2!5g{KXuEan-*;h77W;% zhra8c8{of|d>(%Zfjuutzg*oe&G4oOOy;ZcWfar?prpFwO`+whaWh?5laHYxz>+^P zv!*3H^Q&a5dGS8W8W$otGI%VMauAe|`y46kMYmrD&RTs+fzr+M*=sfXytp?t@@Vt9 z;yv0nnD28W8O{p4!R!!Z?%&`-=vPVM()vsN8o7GG?`SB@XI{?A;`S&F)H^4_s|hxR z*0~8JA+q%OSJc^L&^4E>EE`Z4X)2JWTf8OJ99q zFH{WT=mXcWYa2jaE7oqoi5=6c_|d`+r~iGgrLs4{ypKWlku3uc;^7Doku3)MU-4yT zwrG0(b{yAUwI1Bj6EoQz zmTkFLpwtxJ#_DAd&g!rPZIgCn0XH={9Tnw;!y~KS-FYzpYf2q@JV`PwU5mX-I{P6R zQ$F+5CoC(*l+eEVnuAgnco~`iF%;>ijqtY`EUt515xk#1qH!+g8N#_;v2-NMjidgAy(%9n$9op&43$x!oU<0|YxjcZ zTHV-jIJ+54Z6IPf-qD=mC1hEs_~LmC1WPWRj+9upCqm*y3IkS5_%Wb>lM6ob=%QO5 zGWK1DMWO!udJj<$pYR!kpOOY^j0evT9L*UThC4>w(LFNHxnU1(9`o5nX~qlqmJp#ns0S zP86`d7nRg56#3|b0hrLy%X_lXT?_T$4bNkqAnNSwlnn?~IgVBm-Dat!yo}(Kwm2tc zy@AocRBv_KvAk@{&SB8w!0UZ9Yk0zXvU$@tW|y<*XqT84T})q>l&8}1lU#=S1rmw1 z$F{EKOywKFL6B}9-%;bdjCii_r^#S6e#`z;snRyFI5jvm487L5t;MKm41?dT3gy&L z?X<}f6GkPovTS^AELw~TTNuSoiDIR+N96C1SPA2kb3d_V06{znN9gAkXPwR0?-TU< zd3Z|qQ+Da*TJ5fZ*HM&j>{=j+_{qAP$jJ$0JCI6@H}|XObT;+L8X5!2IV$ z1+g1(9o^5cx-<1}$YrX(1kba32j8k-_f{*Utz>AOTGT)g{+g6-oU}cj-A7rVGpZgp zX$nxJt6*cE)W&zbX{g!l{Pa8=FQ$5U2K7h>iMV!gekqMvih;8iVwcD@hQt?Kji1B7}=iN3@J>ux)OjA!-@@aKBhd_{6*&&h_hf;Ya z-n4w#sfW7e{bW>5>`+e5p#?4??(GM(|H^rA_Ejc)d%t*oKiE_mRz2?CFvQJ;0b&Ua zyphReD9lW{olV-e84k4z-#uTB-Q;m!9>r*2si?-qDJrg>=+BxiHuQ<@F>0311Tu%f z9@@yJuT^r7^{WK%U%zBfmCrfo>RL|i%6ydjZZ-NYRW6)pNDt})CK_^VQGeuywoz{G zo7k|q;f;pe1r@fY6Llmj(nLZ>ulH9>ZtgFBig`FC5Whh_KEl6vp+e#K2-P#a|A<4k zU(f-34^E#(Tb$!f(QR%_w%i1oS>d9`E?lV*7nLjZL-Piot-eSFh0IICF=D_uk1iI~{x!Pmuz3>yO`n@1S%eK+qCZ6;% z_I>s{P1f9mH}!`T3jI2H1RD3xB@hQpMAjf0gpP+%UJ*1554A-vdFRrKXccCdvxv7@ z@PapbEc%I8vQ>5PJ8SEOfB*+Z|I+G-u$wnI=6T*Eb#-=TC1b2BD=#Kq_Ve%*JDTjT9O3Xup&p@h zwZca~V1@^!;n4bHDizIp^f_iSe~5Jq6Xhc-ypg5# z(9Ws}-+TN07q*!8##AER9L)!_2YOa&qUzXq5(Ze1$o#6zIbEba<^{!SfVRjl-EfiW zvF@i(s(%_^6HA%3cA;gBQS_m2@9pfg9d#t~v|3^EcVJvvhwQE%dB0Uy%4|8NWAa-KF7Z#lme=vYwwUKWQtLf7LuK9*EO?`Za<0qsaW zPV@E-gUAi=z7`Tf9q%wF6n#`Bs1;@n)wUxw7?bWx)mHu|AJuQf zO*glX=}xvBqgOMX`VzvK)f&Zkf7pu;5gbVgb0r-?)*R*CwSf{*o
                    4w@Zg$yMp-)cbNb4H44i%R*ly?tt$lyY zT%Nm>kT7!302xZj=FoC9?lshLjTxggr9cyL=i-@(oH)hIm=0=uPQ20cUTco?so!6w zp7g58iN7Pr)nwg(v6`AuiS=zl>Ud)U*GjG&oR(?wuz}^QlaO{neT-IDWt=n8v4B!P zEyLqOcDjaA9%Y}1gRcgK`-p{XY{#rXOz&Eaw>83<4Nu}%E0)CDa~^R%OOY)Y%HcB& zyJ3Cjy-uUVPjrv=zD$OIbmw_0c!bR~rr-Xaq?g@&9rYfkr6}Hef-#DWpb}KDkR{o> zSY$@d=$HzPVqbB()$A2xY4w;2XhzndhTNu;%O_vXX3oB!oaC`N9%CDxd^NasR4RG0 zBG<+zm4=C+*I|v}?>^v@QNHASjX~KjLv#_>N?-%Jki}>l4(ajP*A;t8DN(5}mS5YC zwo0OjEr@QG4E~iwkt%!V^QTE)`KX$*wQ()9PDt?9$gem^ zt|vo37}}5b^ef0U;>c2*oAv%4mDf#X2VDjPz zpGp%_6T{H@7!p%{h)uI*lYh49BP8dhFy-{J_SReYOvsk;Z%+|M@6TNcr~zIQf(e~k z8aSQt6;Y}mcZN=@b%JbgPA!imiMbg8uSr`nIDDhU|mVEV` z8aza(FgZG+xm)d*?0ydlB#QE5y~C-%xoPiYKC>Go8qzUJ`b{aaTs%0iJaXEwjDZ=! zxr$@g!g>}@AN|~85M>KA{0DB^p3a2%lA%L%5a2{NeYS{vF9JN^OYV_3^q;P@PEKRY zzIAi@$*d^Ga&iub(J{G4HVzt^9KwXH>P#jslF$_VG4k=&|OJ%cjYHqWzZnTquRC3&gI0e7d%NL4-MCeVQ3tc zhNqTxF2_Da%@xTzRp2WskjWvCHCFiK6BmYBZ&VqC>ByB@@?M$uSOc)4v!{zFa{SvS zi>}En;bBV5N+rxly_J@3sNf12KD8!#zY@A8)0lEz385TCheKtjk>PzeEsko;{Gf008K|M4Nx{u8<=^a{fX*dE`V{7!iSNYje?Dt#`e%0tYa z`7Vk@bC208VeLKeq%cirN7x@nnqG#QQeU1#&@1`~QY}JV_lDto{Y@aUqAx!@F3Sr} z7jetWTO}Y4p#Q?fZ}}IwH===x?Dy4h2X6T1$J;K}7m74lLpE=LH$q=Vo#&ux;C}KS z&I)3Fz?NSrZhsBJPe^f1UEs>S)EQ_#{l4CO$+mEJ{P85b%Ut8{Q=0F=?|=Tg;V~t{ zS@*1yg8%&LtnqgPJ7EkI(!VcG&3`_9=Mu+R=u$yG_WQc5Va=a-Yd{BFZ)YiDOC+t^jp@~PoORr)Aj!{Cvxw8`6w)uhcM-@rg$k+hF@lnWR&3N%@3 z$87n1z1nR~YDR2*xT@~nMa&UZp^uDS%C2el;*#m4PKvU@qtaJuoid2Fp9@<=Sw4EC zK|6XjS~2s)zn%a_km=t-cUEYmtgK9S{}fyVToUDniHV7BsB4Y9Eb14EEdNq-{J5C^ za})=HaF9l_RgWIc!be}6v^aQD1;IvFIXvmTZvOe(6v@SWs->u!|9k|YuiX2ODB?*2 z{;VJ3c`nGmIF&tyAJ`1Dztz0q$ zQmeCn6=UjwDuLAZtG)l|Yz)^Vl?O+TG26Z~6>h zia)Wd#T~f)zpsk;{wLvV^jH27>;LnZyYK$ebsF~m6(Mv2|9qW1mkyhjdj6kL{)Dd= z1Y2GuCjPHwiA*93sNqZdtN)~F|4^^|@M!*7-~Xw=W;nD;nSJe+FG#}Vj(q++vw?9z z2hZImVEWIm2z*e>iK{a%|488}$v@VAK7vDLr_p zcyR=IEQ7yUx}8|%$d2LAu=H3}Nhy=Jr8j;9!_wt|t9+mx!XcSJ9EkT?3_;VWf5pWUnYGVITyaeqb3K_ZyNL=Zxm96jPlhUT)lm=KIQ1{It8 zV+RK!;7~o=4z?n;uOp(e+Rz%fICSs?yKmRGu9W-`%FK&>j zZhLJ~4^YAJvbXG%6h?#zFy^eX?ZswB*ATszfiQRFq3o5HH-@qi!RX=Q8$%|=gGXqf zJ;l|Lh;1mnj7G6!8oh&Ry%-W(+>nw#iK}Cd+?aD>kD
                      _r&jN_2NpBM8y6k(D0r z_)(D?Q9jsf*{O_q8>kWj-or?4)qwtuEhrMaT>rcZEcRcue$_NU&cbp5;LMG zy_pc7obWOs!QbB3UbZn?p}O{vKMLbj+Yv?sXR?L22Vgoa%*+mRkq3^V(C}-qf%rPv z$!KveRhGMcB9@(?p#s#6=CXobqUTfgRS3w_0DwVX@YQJEsKlv{hfxs;bpFzW4MU*s zv(}*#xnrH!CgouBMqpMyG8I)T$se|~?J*E)eb-Yf2$%-`C&$PwA9E-!(b+O!{V=yf z?|oTm+Y*k0DC+ZqH@mTp6CzLeY z?c$V1Bg|1<({&t=Z3^pjr|N}sw@ojm>a1vSjBq~wo!7$v(bc8ajeH(t$!*Nmg#9yq z#uO#VyKQY7iSCRXKelh71v0fR^DlM5VJ?P{4VG7xJNwqvb_v83NlpNkk!j?w7PUhy zc0lGIoErH~u|7jtbL`R4rPQ;u{2XkmfSNMb8nO%R>iXhp?_G6Venv3dwQaox07xI} ziUdE6!@WHw*xffOj|Q88!UMI(P@!m_x%$ZF56EMum8i%OqG(l9DiS-+FjVhAr=o&h zTqO-Au|r4O&>{Bhp@%-zLB5)UY$G#F9$j@)-~ZKsAlK_MFNP-SYxl6*ppOyqxp>s3 zqT;zt_g@1x4_qF{_06fS2RFYYGiYctei336uU9)L{UHi>kL;S}%|ADb9uKl6Wsoe# z<@>N)Q5c5o7qo&gYHbr0k(jE1i~uax9|Crnxpx(GFww>nK+J#^F9V*5W(AC47H0lSao71bCx|#{d=nBI74p= z7-gj`O}PlIyFjtf>qa8+c3C}SD2Vw+Y%x8Zv?%BQ6RqEvy z^p|hiywJTlCO?!NI*9ou93Q&Fw)|$x2<3PmEdt0w&l_B;v3iMQ$ZuHaK$`P?0oqI< z$dB4Ghd&+?`H=U|e1J@0adYRn>&`r9DUyzZo`BW4G2Q9T0qi}5taxny94UdPLMQaChYRA6R>sopVKmntLK zx706x@M7Di$V|aLfYmeQsyb87>MH%Es33yfSlo_jl{xw_M`w^z1S@5D8Uc#|OG6a!-?*fQxdB znMH&}hrvPu+r;&stI_>5-+h{&`^<5K*LHYxy>tB~kDv#mcvQ-{84b+pXG5bIt?xo> zV@ljGr!dj_J5pPMn7OV%_ssR-9^Fogco$Mn{DTnEE~9_C;_ix0RM=bFYJ?*1L|F zyxqwix*2$|IQq*&?Exnu_%$S#x1&nD7j>srsF%ac2BltWGv020u&u3*A-p}xA1?Bw z2=o9RR&J7Dm6X*pe-KJ0kFc;f;q?9E+gAcB`j7X(*L+Sr6?`YQ)IUTKL1Ko{ijMlX zBa(u?^$V|Z)`FUX!$ z<5S{)kSq`+>2-+^LQv5GXgQg#CKK~aJcTxD$_7o zNInRMpRQsXEG=g#pal=q3TSEyge1OD;1n*MxZB)gMaK)S2zX-1xeb+s7DP6WFU0ug z%LYyy-hYvQ9o@+SwaaND-7m1FxFI*x*cFE};vUi}P!5I8#E2zYlQO4EnV2aG5P83GttX?Kn3)56$F80ff~ZFM>?M8YEe&SX;j@J~m^CqNWQF&YC7 z3mVF@;1zldtRG|bB)KSuGY!xtvlRXKV!=Md+Ky-AI+`|XWu+e)R*!)3mh3XWUUP{87Y&z zAz+sM{6qrT#wgBwMu%F1)P+Yi2Op zhjzb@6mn@qMnkUEioMR|7nsO;jQWs$fBfVV%1c%q0iMdL9+&J0QQJvv2i7tlr_aV% zR?-%)k$euXLEa3TR!vly#BZ?_cw3QWkKN0}Mdt-F-E~Ehs*>J zPkbMo=|fnUp2&k_1*>7)dL(*%W}W#_HDIAeulhn=ZbCiwkV%x%xZh()wmi6LRoeb4 z)1{A86QtbT*Af&d2u@xeu_Kb6?Wc>Qa2pb~OY&pCZH5HLmXxD2)hu6Z1fkB|C*f-7 zq~4etVoK?oXHb}J_fGBSJYwp7C$%>yV)y&$D+!KN z$w-Pv?`MEPl*R(K(kxA)ykyyg6fbMA+5Pp7`78x#RqN7T3K}CvxaLyT`V1a_?aH`+ zv4NMzH|aB&UHq2zd(q*qIogn|$foxmuQL>=VX)A^y}ENP&U7{#XUnE@ZCoN$V5<#X zQ@Es5IJ$+Efr0bj1Qzy;k&)Zj$;IhdatE)V`k(46$(6xF(N;k~M(#P{4kuI#56MI& zdFSmi{!mcjGh__Z*lMF6$+n8|xI~H(AS{ee$iqPuHFKA6qa9B+85r9z@7zHfgN$5e zjkdsXrWPmQhf2L0x*xvv#NNG>7l|FOJr{-nX|n3zBbCky*T|IdG}3E`IH=3~iWlz9 zP^Bi#2t;y)@1S(`?o%H=`;PXo&5n@LrhW>38Li@)*xE3_<(rhef96eLs7+d9>`C9; zcu6G%;&~2>WGk~f5yH>kS#xtlaQS8?m5s7IpQ##6Y43pIT5z)%`MHPZ=fZ+`d=Xw9 zd>e$^bNb@95jV87FE|ZQX27tgKVi-ia?1T2Sdc=u)X+Rlk$`F)15 zc7s+34tMrvcGm9rVN__!00l#01Dwch#j-^PELsuFzHS`RWRwnqu9F%<0z!U1=?6+7 z!IRk-0;ys^)U)S;}$K|(^u{SWo_(ua2#a1~iNvqk>9?cGTE|8vQUYXBP&(Z#nb!A)_&GyB zyl7R=n|}RHL(R9F0*8i3+Y7C&JGDFl2THm#Dvg*u`)n2(H{$v+cStvM5rPD$mJx6c zs)JDsY?X|OkDg<+K24y2LALU8#C80J26?gF%tf z|E=m`^SK4MQ+??5L>rccP-dP%PL|mZ)xKuq77Jr@bAHxKgX~t^qnl!#W}Jw99$!Kb z?N>u5mF0KOOT<(J0431A@1Tk?)t8A)>oCiC9?{$YnS0c##A_LYs^A@`sFK#DeS^9A z0yJu`)Fzmc(Sy;T`^Uh^<>j1|WVsgxIu>pj8KCdc)y^gq46eHO zDZnjPN|5srk)BB++@=x-|Je7GE78y6vX>*bOL0{`7vv}=`D z?;6(q6rPeVUdsKXD5}DdWohrCj)yow7%0tdpW!)9zE0|Fbb`cG$?w|9b{)KGELRJ@ z6ecGL+R4bNDQPFZm;?&9mE_1vTbE)$2{`G5`K1dv*yjY^Jb`YoyhvE{1L}B>xv&!$ zhQ*L$2zy+IV`)|Rq$NI+S?Gk)+yg{~^Y5GWJTbG{@DQWF9^aG~WW_PdIa)hf8aH1R)`-pFt5_dE5SMBG}s?|TSikszv;>_#n0ww#tAjg9wJDU7O8oauH zA0ys%F3bVk`17AWPAgt${sxk7sxh(ohA84<|JDl08BSg+3kURV^Pay)Yk9(s?R(XV z0c_t)^)?4-q1L@+H5tw;Q%RlFAdwwf4E0n!f1U8!T{Y*}a{wTiFXki27%Xwc=i3A7H$sF$dQ9=h)mSAa zEjgYrd(&5{O&u3Bi8bVOQbV?cm=D(%@kHw0yrJJAOz-$$D?x-2ZkgC-0GkF#pcICe zt=-+724wH`f~z&f*xM}A#ZW=7@hQAb?XoHdp*EE2VQ7eW`;~OQg1ayxw*5{#w9g3MG z=;6J4_8mwXLzru;u&`fx!`|JC?3_+<6^|OiT#R;=qi*NN5v2Sr#(R-Ai?|a@{R+0b z6U@f*b?qLA%~<~Ff*DW{CJF6JUx4<~$i4+#0l?3MR&w%_C+y~J86wGQMKMOuFl%vP zvmy`;C_5Z>ZQQmPR`3u9f3ki?whQj|6LYG53W|D=^8QREd_mb@RQs31N)&W zkDCg%y`z+VQsjj(ln4|0975&$3)^kq*poDJ$*##Y60xrrF~XfQv`T{YT$VTcoV4@O z<-5-euAViL2fZTHaLQMy{k|jQl>SgP;S4o%ey!HfnLFg*mh@knzKt8rat8YvzjxjK zFj4zMiQ3?2?V<)!zgse6vQ9k|hWWp~0h0V#yAh@A=(586GDpW?iWV z+?$|Q>^^Lx8a_7_fnY$$Xm$=>L6Fj0d83||Jo^sF|M)$35y0#(L5FOg@Pm?#<1WDa zTQ-!QZWeBOL5V!T^!pC+^n^1{*cArjwc9N6EH^w~ll3o20q>AOcVX8y^bF@!bWMM~ za>plJKS-p+us-Nwux*zM@Hn_hO`-eB*ot{a9zC@xKw)vMI0otHz)&~3$JQD_G6jQ# z09I#ntZH)T->LugZO9zXSlvB`Fhrw|z*G?9AgvmFrIW?gaQ1h97<#SgCG&c1MIA~V zl}sH5`8OIx9O@q-2T$eN?y?~6$jh9SLV95+`-9prD>N@^57{6k8$ezW$tYePo;J^LPr?%SSuL2Lj1LaWkBlN}49h?$iA0mOU5g1Z3477|!uy=Iv?V{<) zQ%I;}<1GwWyFBH$T84)nhUx@}={NMhYkB^s7)IYBRVt{VUGBgXRGVm3n3#|d()7%R znAq`nw49*s&-ORCm;d)dfTt@pL;vgsOv%jb_71A2d(xMvTWH788b=nF z23=I38&7(Xy$*RdymY445XgtnP(^o&k37$4x7||c#?ZnhxC2-jsE%%`7+{l=fq}TX zOa0n0KVj_p^+S)N7Mz@%yjHgtkH%w)HFfP7QLi9qK2v9nvFA(d8Ysw~sQw_Tn}K+! z8#%9G}WwYk^D7hC0p+u1QquI?Uy zZ;Vl#Rq+$1`w1Y`|OGm6b62FItC+l-sVmcx}lmzWv z*bC`;%V+C=g^upm_ApgpGDvJBApw=bwa1HmN0G)si5vxqFK~>#!4|w2l<;Rw3p}yXRWOl zH1sH6?L~>Icl_0JX~_Zz6D6peq%2Fdl}7U>6v;d(t>$IV_eRYmWyv8kFUjRmsY^FP z4Yl;>;bEi*|1DLreIo3)7|qZ@@H1Wn4N;zp8jGuew+J0stuSV8Y+dN|iXQL0xbo(u4Pl@`#v=e+=Z z@%IdgzWMyQ${)*QsSgq`S*-%G`m@SUysi*pj{6ptv2<~eFsJq`aNNd225jX=ad z05A0WYPfUh?SJEzBW{7%9Upx(ny1q5hW(@cV0=y8o*T`xp9S1sVRnjNZY6 z%botk5EZ-3QDgPdim9@V%`CWI0q#!ss<$dGEp=g|)84#>`}BH@;;BjT$kE32n}| zE9(pJYfMt}e?V2`z>yl3!5#-sk7%duC5W+u7U4$_miEvIKm(#Af@rtE;P;{>pjm z8RX}op&?mmFOT*Pv2Ww!C5U)Bfbf9 z^1!#toM(HtwEFMK0}apqmCL`9`!5jJ;YoO=x)tN(+dslXM7^mc+0;J2Rv-7p^FIQO zV_9>3ujb_A`{yG@t()in%Gv}F@(E>6{l5YiEIfU^^9I!P_x0Z#hkuC||8p2ClC2?E zTmCN0S@g-Q=^Yrg`0*LGYUZ)kUvUS{+adl~qG%nK34HZnCL&wr{Nc`DjE zEW@ox4jVf;byLIBpviHvtuN4*Zb9FoIKQne&q7R0gB{`X7@!O)c^Yz=jR!akzax1M?uekizP90a-6^OFI&ACvU&D zD9v7n;K%u_y>A=FgD@MKKm+L`#%m^n0=tr)f30&bxkS9nv5t6kJ%MMH;Zd_0PHa&L zZqhZzN6qP1n2o@E}euprR|eq$KXbZnIw4&iW^g3!m6Rl?QRZ5xD1_-JQ~qd_Xb@ z`~0bAIFOVtcB2yA32ym45wv-jV^AoUJ`(70>;f40Ob>d`c<3-}f3HsvK|YdQ@=bj} zPsblgHtELrVTR4>sjI`+9=WA!X$HPjy;Uu(dtN1{x;dTa4)!Z3h*L*tuA%pT5e%(fenyHa|hurY9rp>?!6c#;*+zGuMo0ymgXJlOnK8eQs0m&j(7F@BRqqDxd z^tc9cQb7GR3pGv5v)1xARti)kDJAHmy~I|XlLzB-K|lbH14_Pai!itH7DM`$0q*;* zTL*XF>l;mtw8hAUg4$e};|j6$?H^;F?ORLe5|L&%nq=H4IEnFY89=dl>ByRbVO)c} z6oxh;U7Nu_3FOWpv-apvt{apH8|y;ryFtih>g9So!LFYBFBLN*w;3H+ zFG5>s?YtdLh9dtf>Ll0m{kmt=p5_iO-7Oq8IW-dhCnLA6?~yyidF$$NIa;6k+LlP- z$}Nm1k|65H!vTw@I2n@+6_sKVT<40kMTLY`<8_|Tj+Op0UKXWh={05);@Je?{$8E| zCVKppqdIEY=9kVSnS%`*)VuQk0fW&yiz9-wkDs5w#)twAc5}O{6TyLMk(B#kvfP4x z*W+xl#1?d(Jp>pHpkqRpVrC__sf!<}fg${{L-AX4AWL>&d{uS1=Z1eBU77v55uok6=>6* z6)D{iY@mU1M<-I|zV+|J1YmA^UBiZ<>~IFbAAq&o@!?+DB<6!hAcTI?>9c-Hkqr4> zk)?|$Gz{&tZ3asfX4;=U28@HfmHx@2)8&aCRXyE9=7VRSXwL`WZ_jfugjdBp!k%A0 z?=eLBi$wi6k@{uT)2OO|nQ=+lWcNHLytWJr(Z}g^PXyGJXzpq$&|v-a`;;UZt5LQ~ zJ!Vu>zI)=8(RUd8_VaVwveeQ#8&S5asaNN*^=na6+-_EmJY0SUIzz`?bCW&ELiK_~ zYoXttyU97AkahOe;`U5p)ZAxU4ODanP;ZYbsZJgr%E9>&-TBw2-QSudU&k3w7S#4m zxFoUDoahHUP_>Xnx&KFZ+%Wq`qZWIZ@x={cF)#IP*2juVKom9 z*5aTfaF=)a*Dvm)?USAwsgq0vdcQHsQp?#1M5izbmnTzU_VKcML7b@s44*N0DJ67{X;VY;AW8b5c%MxAv#~V4`WZ$VQzEg|P zV(rSM)*-n0SX%dWWBUSW4s!0ZKHUBJjl<>r=pj||WqLBf_bnfDsUqmn4~F+X89nf> zzC6eo+voyuKRzGh^Ms z3fA4&ASa~4E!Aq5$c@?N<1%@5jFO%7W9ztMOY6G`mcR=n@$!@Q&-^j#hFLk%^B2ck zb+Jc8Og>GWH^ThLs7Yt^dR~T2lpg6OTKw3oguI!NsZF&}*n8w5jB+0&PPi+eMVS1;#pZDB?QH?c8cJ!-sk@Ny_R+k$%DNBzU( zMw{bMqg#G8dm}=axY1`XejoK(r1px??0BUCflLo>d_kOJ=Z;qS*txa-$?SRco6d?9 zdGW4xoIA;x8^aKxVb?Z!=&?(@OOacW05)t~#}j&-`TGtL)!e^J}7 zErt}@m=qEgifq!MoRSM~jm+^{Ci8K$DSEpxuuX!duW(lG2 z5-*fBg(_)&W{Uw%ic{@!tu|AzTQL}Pb+-bE^|=-dn0*%95WP0|KI@j4kSf8r+wvX% zwoDG&Mc3+>$(5nPVFj8d`w)@ccQS)%h>OgQvgJIq{&z{(l+=2}h8}x0W%go3QMD1!z3TD9X45Ubh_snYU*+g{IP?C`4{9sL z@2ObTURBb?i#zT~1kP>8r%LY&`dRWE_!7Es%-AjM*d3U-F5B?ZSFv+6 zaradfC@?yTS=U@UB3;Ean!7_r1&^bzG-#I&dZraOXYc5)2-|FR#9!3W_`FAAG8p_3 z$zkfenzQ^fme;zM;Xj(K-h}tT|B{o-ckGcUF5|hY)QIXNk`g(}sS|SbIPEpv`JiDT z_Oq_<8uIUbi@agtsFdt_JD2Y{I5U=pjvto;!X;uGvE*fg;zrxZTP;(u2efTzE#ov^ z1;5GECeZmgGcU2US+%CT&=${GfK-WiEH<#=wZUtxSn;uOO=03o)`iRErpZFL4)YQ? zN-guPR?Bs0W$f0p;g~^$IUDfrx&8 z96RRD;jInSy~*)!qpGL2e(jX;dk`$OQ+5^Hd(QId)o`!Z8r;ACnte5DqxfB4z(&KQ z@8Kgoix4pi-%}S4u?Fb}Y(xHU#HPK=%G8@zUCt&AqzMgx5-Oa<%TTzO&P0G~7Etu+ z@f+8ln8E%pIimcZg8fnHgu_%9q)Tk)qF+Qux_;_}0 z4TenRSg`{67tb0eecRWh@*#?rSY%xwDPlx^9Npk&F==tX^j)LqolMJ}X|T;F;KVUL zo~4T4n$4Fy8Wx9R3dJeF!$(BQgg9Cv>zkqCOhido)jOCFlE#3iP3by17S|* znSkC4ZAr8i<;(NYv3T~*s7;i6(n$g$Ci<+r zGLE^Dr&=;9+$y@!G@EQ~gjLY^)fL;~KO4@|bToKAf5x`YjT!HLK0#JN*;9nRU))0m({(V?@EkVcj)aSj$+Q38(KD8{$PWC}){Fd4P$drq!cwP7$%!U!7RNd(KH^n4Tlh2%~ zc=T`PNGy0F@}JQ5ODhwG#`a0sr`Wu5uiHt;GZHa~=dWI3j_&m+w(hwE()nco(g~)! z-8zizW9OH{X^b_XHM-9=v9$EyhIyzayXlpt#;E{xWNi0rqtPfs`7=9strFx1?T^fa zSyB3TgT5ZXWX67GqBm!EoBoqghv3pnb(R^5*e zUsO+3a=#7!==Gpeyk#Iw;Lbc~;><6$7gZya%;?3mJkITyB7~wy<)(NDtD1}%L zFwHY72jByWg(EcrM}2t@3QP~MaMCl6LK&dRhK5<(2G)JSFbxp7=$z(iV|9#*8r?-6r{lzIIh=H3FT%B|}k-HIY5DWxEy0wRq; zhZsmJNJt|fDc$Xn1_31mNtIGcN;;$^m99;9BeBW7?|eM(dB5-8?;HQ|k9)_sdkl^T zczD)YbImp5_nT`iYuCNBhOT@m{AvNJR|5QbRIh?$)}nl(nZ2YhskhqSN59F)k2sKz z8^A=LDqiU5&4yKS%8mMm+xLMJQLhL;5gL=Mpq8XsZoUjnRx)PAQz02;a>@x+iw^q! zs{Xja6Rn|fZSL8euipz^s@yAFSzc@>Vuj;S=kfwd$;)tnc`rYBauN zl%!$qImNFwul|{9`0LB{jx}Eo>I6E5%m7ZyHa7W}9%irsET7Ih>xYIem+;H;{U1?L zK5s~QE%j|O0+RRPnZ-p|3%na z1w)~Ge$q!?yG?Mwuoml2vL*Xk}qD zpjF6j(+W^~4~^H8{Iy3RiYfmr6MvQv7pe!J`SAt7wG0aij(Uq#ei~biI};Q1-GM%&dhQr&<24f78^!zWp8k|4i%t`r*Vwo^<-ZLS*ntzabvF8aRWEhQ zqrP{%DRlQae?GSIryZY;4l&t*2!5K-jLP4Mi=>sV_la>GxxTU!%S?+#i%LdN^2_yG zh5-*=sFtM%R_x<<+ECGubYCQ6ovR$8P)_2oo}#O1{g=c1+~Pd*g;tVx9UtGh<9W{n zx2CqXEXS0dY5eJ4jb~CeJKxRu)Rp-GNXag`NK)hR76J^LH#*R%fp( zkdS)tzyr(fxrw34_oKUBywZ{rvHs>*V{9u|f{>;RTblY=#M zx{G-=bTOFAQg(EmOkGWkX=;mkc0MKD_ZMXi8@*u>gh7P^A3)#!gd9a<6`M}TT9+49 zH_*2!@vtu2x0j?q zXR=0+^F)EddFQN$Qb>qgv9~xUH+P!f=^zvKh;z-lubKl!t^2C&m73~e)NT15rG38N zg9N5{a)0@V2GtdqM-S2TOasw7lLv1@tId~?DES4KE}hrWhM zHIY-XSJrX-!&_=ebxT^#(Xbxc&?X!Wr@~wh=3(u0Ov1%y2@G)u#$P1o!F-r2`4X3SO=l4K;j>U zENPtYpU!V%XIG?S)2te>trIjfsnczAW*z)MnUmucx%+!dSOPTEi_z;tSWdM)jpJ1> z@mnc0uOS?Zx__*EO8>Ii{2pMX!)Mo^g{5Bpvl9=xJK^d;Uum)di(;2F(35v6-x|6m z;se6X9lecK{>nP)^o6*5+-vIvAMKNf&>JHOJfs2aInm$kbl1Ohs$hw$*N(L*iHTvYM)44Z`a$>|Ozo^QD-3jFRbV{*w0z#G-T8=8 z31CmS*1|(k1-By`ZGYd`#NbkjmG^7)!LVj$tRHwd+LYp+?W&*ZBX2eeGFcd2(wx<@ znd?<^d^-46noAf-KMVlA(STLp%{W#@{*1Wz3+b9$q#wKTnR1i|1zRsw*N-pj@_TE) zFlIRw;oY6;xrKrT343u*s@kMFefN|chvUeT$%2A@N?U|?4@apC2kDOHoYOwRsbf`N%2rquxXg)s+G`R50e&;=UZ?dN_DbJ%5Wum^IRVz+puyA45=jy=gEm(ysYi)~|PaHsW-^^oY8Z>c+k2Z;+V`)jw8` ztm75SKVDF(&r{DqJLiS94zE7XexLFOy!g5ly5CSe2cc!FPI4b;c69M1H|Hu&;t^4(ceAi|y1n}7$~7Y` z?-s{-vh-zkA|dqLqXc_Ansh?&@-=tr5e0rJwRdneL*JYuMwZ8?wX{Zs?Z@&p4&GSI zrSbumtA=N0bkTUGrE*VKtLHsm*8i@WtwjA+uRs@o-AU0vU^P&a82_1 z6FU15jAQ^)^)d7MJ{VUKnr5p-!@iYVfwY~JV#;c*F2*cYDRq2k^^))M^0MFM>b0ZL zxtHBR9LvgQL_vlf3e4jd9E?bolC_<%Qf1j*o{K{*{m(r#^u~A=wySDoHa#g-Vll}U& zq!VUmW_-Z{^19Dn_>O1KmKUK14THK|sMg}?din;~YnXY@Ju5ML^~T4epC?Ej`ml%G z>5-V0T|I#~+g#E1c!&5h-O}x8jKo}3`0+EgI){d!!sG&{Jox1w1?)~3?=`(yH@q~Q z>8^&lm0o$N9OsC5o<};T z1$gN71ET$28pEpZz0S+yCTG*vv~k>i2~#>*H+@8$Y)ZWyAlyEG({D3*!1)U;_v=AV z<6o_eff(uMZ5X~+H6p->-o8#wEs2)YC1;c^sD07y{*@NyPV##beHM0ORpR$wH6jBe zv$v;)o@WcQfE|rx1pM$;egw{>Kh+=*uac<-$0w@kehzfuhS}%-^6`UmJDUchS>l{- z)bory1U5EjVsK{a z#}1&(6Km9k4aAv6i1`u___ixWP~%7L)GZEy&aB0yLF_0gz>kw#t|EZFYIz?+an>47 zNgb@huaJr)$b43}ee}+>`D86xSa5WFWOUGtLdu0kYEa=YVQfp(mmDAn)8vx7hxQ`c zIy#E8=QS}kl_sNl7cFeti$pDo7LET zDp4k{$0|}nji~i`AV(7Sw0|(dK}uf_cgpy4@|UKjx@!+x>2w?CgZ&De?*VP%EJr{% z8Z;)`^BAv^oOq1~@2j*P8yQbtZe3rW@q)IK-5Gb#(3|hx>)}cunUkqFM|B^?Le6&D zdkBVnkJ<6eyu;MrlAIB;(E*2 z`faI1#F`jwlc)H$d23^1nv9cF9J#*`WwUqQZGmq|4fCzjMP19QPgY*5cJXxH&9L8e z3>99}a0JH-hnx7%x?|Xc+`FZQ=#_z4LqFBj(0G{5iXR(OePYZiK~SD?VrQG^z#vhP z%^~m18J7~l`0w{9Bncb88qARTB|&?=F@a|5^i`)h1TJY`531%hpE+gFQYPW{@=1-> zC=>G-Q%$+Vnwq7+fY!t=r|;K9%>Iop?BP-b?w!ZJ`>?8Tmwh*$jpm!&#j|o z`$~L_+1A`fWGw3AjAhs9tq;a-6iITt`9N65wwav29u7Svex#y6C@-fc z(uv-ak26hLp&_O}s3Kslq!f>Ng)|A*Zs?~U)V1sg){ev#r6m6h8El>Nlez4(-yM%4 zV)h;6&%q?UsZg1uar<6J94R(C;Ou=w$wuh@vR7w}sp|dI4x{JUrkhVxc5%n!stWsG z*4M|kPF!aVqXwUpMD|*hO>=?w<);tx!TIKd$a(`}N|Jf%k_8X8NAIWgxLv?*eD(KH zj#olH<_pF0#Cl^lz8yMUpZWIV{P$D(_qP=&vFF#r6RW+gmQ1g?+@#l#+QfXrcr1{m zI;THUsowSQIap-MBIR-@eX+M)j?oTsJZq0=v;ZWqvL9+v$n=5_nn8?=>O~S4HHW;; zu>}CTW-U*8viI(&->xH@X2PY>uyyM2!!dz_9dVp0!DNf#x22^Di6o3}$oJlZM>@aq zaM%UE_w66BIvmW$`@GsJ{(G45EOs#_pFDpWVPD=Mjh$tQrZ0UTfvT}2CMI4U7#Pr_ z?T18FIrvqPz;Wb5R0OLcxm(R86}?Q;d6^Cuaa7Oq>{j0OTPR-r3Y=&D;}tl~=FdkJ z`u+F+rOWcJ)awnzkXf}9`kqK) zF?tlj-+m~4Tse$Jd#Y~V?;WbEtJ~qMR`kY}kW0DTZi=r>)IH^FVr{){Okj|)u>7~s z%$N7q*4Faw>)lJFrjRoK=eDK)Cy@2OCZA$xkVeWyc$vq;)3b_qIgij7hAr?LW9#fZ zu&&s#y1J?pz85uLQBhITxnOsVxr=glch^aZfJfS6SP6cb_uN4y$_GQ{4^LK+Ft5yb zhG9b7;4&ozml)pmLf@O_kNsV7K0{g>8gx6HNx|5oF2#Q;8@~h-F^3Z!l>a@xT1JlR zz8*S12TuR}{aWllMO(H1XH)y%>B=oBg5~>q|5CO`jIYV-ra$uht8gxp^xr4s{O@Se zf7jgqx@vw&`v?c`H077&7gI@TkTF{}zx#GWe8=%l6tlWf&&HE!eQ@J$v)M zf+se>Y%f9b-j}G&>-@~#aM`xH6vLo^3(@w@MIRgdLpxL92olmcOHIFc!b!Dmp7sjhPom;s&$;p;0p@ z3gxU5vexh)FX@FoSrHguzHx-GeZ5#SW;NbfDkgF@gjzjLqUw9+z{p@2P82;lxU?GM z=>@Ud%};q`C`p8KN3HoIh06^$E_zq|SenYpYO`^5j6TSpQ@#Nis|>c3joFv&@5rOZ zG~}k1?U|Jx-NR9tM7;zPFU$S0-&eh#SWlTb+Z$SRogzm`?tt}1t;N7QyKyqGb73cD0YlM&Jb^7$4-p{#BBd8rr7k; zF9HBFfq0Z$1^LDXRntgUxF!!==uL)xbj`2+Ty?VE-f^SC)5Bt}LhS1Y`8f%Ty*kT! z)14aX7U!$qCOn1BX;&boF@>^-U03&&4cEc($b0jXDk8q*VRx6kI3ULP;8;UVLwiH+ zLo>7QI1*PhF%}H(oJ2j5gG)&i-&5@DCqrIb^0Ad)hVQ`!Z(Rg zti@&dJ6gIZS7>>RvFa>T!8y}Nl0xarq{`vS@<2zNzDD>f?1e;%dSo=;?h@cS-){r2 zIk~-JxVMF7f`6wI6%I(29fT)mwrAik@~PJS+GXJWx>gx*rH?|J1gq9h=qrP=EW;PB z)x5?H#)mWpRXkyy>8(0@z2d~)mB&|*lAmHPPn!BCR+qk29;mBzAe9?f4~(>+kXV`R zA$nv98V36L2&!W?K6}ROn2p%}Hp$+Shcn8PK%^;xuPbk#L)lQda=gw1iXRFW_NG^v z{QSe~-6F}LoS~4F$q7~xmU={xFCA8x3A1l6%DElolJ16?M~Yy|C04^uqhhH*LO#!6 zBXI4L#^@%V9<}p`meh>lqD#t49#v7dtcQ(1FV-I>Wj>O-kos#%ad3Qk=sh7w?~~>v z%@-)Kfa;|BAB!^m8H0?(s7K1k`|JQWa3~ z;VgQiTnGHV8%BGEXe$Av+NK--S3RN$P{On2)QlBB%sPp>6oQOY6l{+CeUe#a_32%; z^Iegk4It8v_bCg-ce>x-LKhaPRYEL!1XVvj7afAjzFaW(wwhlJ^Q0W{IDvXZigf5L zbjZd6CMA5@eEP)Jw{AfNMW5?|@)T@$oC5T4Fe~d}^M-7e?|rNb5-Bcr1$v%-p9dvr z`v(_G@qn(6_FLDlhLxkOblXzO9H5k@_=+7E3l6@a#{#z9S14M(NtDdzQm z`)xu`X7^U}gB|j^buSF&BSQ6dk-)sjE0~eTT4o&U!og-Hy&t`yI0Kaiq0~e=*94faqNu=j4>O9N z;Wr`I7J?~f@D`QTa;?;=KjD4ZrDKRoQz&`Z1X*dr0p_$1@lfY3 z3A~|ONlx&}M2^LP$=>p48PZdLD`ywLuF957E7(I}!nba$jCLFus+KXZctNrXkWg8e z!>GT&6bD&?QN18;p9U0rd|%Ts$zD&_shm&YCK+ZtBH?FH6Kk3GuOQM=18FsV14nsL zYLL;Ziu;8|Pp@Nb4VaE6bjKwi{UUoQXT;c@v%e3QLZ{I%rXte>F=*}8B!BY$Lp@mH zawBIoE(qaaTi5(U4IE_U#t!^{F@L+N_&9#I5``*Ep;5^AXKt_JJKb@rKo67c-W5A@ zR8hB(3Ii(Y!-VHZoV|UwBpGn7B#;s zp+GA2ba!+GTxt>w6vUrSJ%Evv;^XHfDmHVsh=Ua`N|vTpXJljLQ)U%5=bD|**PXo~ zbprMLA(!x<*`b1Fu7J;aL00nYMRG|ARdp*6t`ClH+(MYU#yDjAD36VipTNb$d3-m*x*P zG~MY}gR>kU7;1m7=^&3d2ToX`p>H+#mPK1E*_me!AdZ;c?n)B5Yq0IQ;8fA5qYz}g zLi6o_0W~oP3>aj@C}Sv|)Q`I76Jysz@HoT%&90rQRLjf0dHQjVUw-3MC?7NB5JgEu z^a?~j4ED0@HR<$2nOgH&4)&^>biLO4Bm841&PyB8LF1j zqEOEjxP+MzO~VIGV|`oD7S7C`6~^I=4VFp%#qae%Eg26r3SGSU&olbZhT)W#N9W-C zS`X;P-(mLuJw>X$_rAmZzMj+l$vG+mxuHSQMIEgA&Q7mj(Qn<*5|SA4o*(C zwkaa5v2pU<7v4c753-K5=fLQ)@v}B%i^Jkc&~%XcN22l#!PCF4pYLULvM;Coou&}V z$grl)9D$FDz4ecDG6zv~#`-BsN6{V~&zFK%%9vJw!eC?d$`h|{Vsf1ehB~lr`ac#pjd;A&faCne7r15{0Ja&p0b21 zmPB5=l&k=5+bVK5SaWVTi8vc!R^-hzAbz_>)C+yKPk1j^t2Ubfm!heaN!zI1k@(Pqht;dwcqK6Bzj^+i$m2Uk z${e1Jw#N8}&>w4m^+y$C-DyYK*X>~+%{dsN_&*(KGU(f+Q^r5Eo-&e&COOp&h}$31 z>lRBCAH7<%J%}VYm4@*SGABVWg9sfN?tdniem=CfACO`VWG2gkIl@#^&%g7j? z+E%Unm$v=ec1)iqV7~C$e^=U5O_Qu!H+NJY2RVczfq}lWNfSm_4&q*}6mP~?9&oGi z9j^CENNca5HCvXG#eHYULdxF0g;S*_?^qb`%?jAQO%29h^8;k3XuT#zjVasz!Ij6l zs@$RYsB01b$u1fOnOq=U@dqdk|A^VQxUabU>@Jl_tEl!utzty$9!6EnrJysP5q)jh-4}^69tJuk6O~e<-Y~;1Q}Zbj4l2l<34!zYZuf?uLBz#OpUjw=dWjtw)TSwd&X`4 zz)lL2Y~l?Uq3nD@7%bGR8v5xo6i{Vwt!m|O7nl|g%);Rm_X_E(hjpGsIWfO452h}p zC`L)u>Q@DDaywPWP&0!QUWMI(@_LLGzY^9J5Rn9fNG^!L{6>E3zHL%6G1@vb>k42p zyMIA3!b)1`Xl{R7D=8S>6dyPsLh0`=sf9dW`TYcml>nHUPD3$ag`&EMP!uB)g&yNbFJ z7{s)T+dSOdvpF|OZPW7m*M>p)9R}L_f z6+7)tC4S(Ej&_FmPj1m}>O#%VKZ(K=pev}uFq+qbj8umM+oky`vj@5t#x^Z~||V>%i92X1AQ5eAM# z(dU3Xs7(y|fL1cg3a{V8TNT+t=JyEO{Fv)m&dsF1N=0sOF?4{^0A(g|t~uA)NUXmd=`~8e+m^16&g4<$oww5N-{>8Hh0e6BV$q18@(Nh+=Yz9kZ z*1c^KYiH4Ws{XOI+0l_Acd9=^gj!o!R)t}{cWyMp?WY<#u5^fvfWH-lEhh+*v$SNl zG*AHZ4BXR);?Y)NlZ^2!^18gv(G#dxy~zHLiEWCIhG)SXSV0|JZDPpkUtWN(42QhJ zqKmq~i601WtV0gFwg2wYm*Xuhg-=|}9^unK2q|XmCDCmtc9-2dLA}~fA z-XospShKUUo&`B2P&o;D9@VOX=)V*Em~}LhNda2}V`YtbJ*d-Js=kjOsG(>A0vl8b zR2b?%eTW@w(F#G)YmmcZ#Y=n8)lWahDrxRnT+6k9eZyO4oUOLPyc!Vj$7vi#if z_WGg&dMZz_- zNFu%)SJy%r=pQQn$lB{7o;1uq7~T;N$J|->YDqlx{_Q6^sT!cyy!l?`ok2+k{lT`v zz>?K9CcXhI&j3N>7`7$KUP=DGueY&K+59%ho2}}bN)04OJAW-EW^cJ!Ehtpd>NdE; zaX0VVGVi;;OodEh0v}9Ll_rcgjL)G8$)!t!J1bI1}NfMju zEBE&(6)~(nQsZL0iVu&=oyi(-p2h`mE$8C{^Iv)ZN&O)lQi}Z5u8;-J%aDrjXXd42 z(FMm-okK;@i+QU~r&0O{0sH4UeeTAstDnnC?fc`BK)wmkmrHt|7XH4d9fkUG|Gy&t z|6k+!%O|VXwg8^jBi<`7E(Ca+QA&g7K$xxzV0WCSr{^)#74g*!dL7bPK(1Z^$?*rn z$Hk*(AKgx3fo%sz$-oKV)&t=R>)gCN+`vk1Fy#jJ``38@_bnRcU1~BZ)|o~lObGEr zNXoU4L??;A&C`z{%1W*8iym zfXkS^C9SWmwfYe~xkvE%pS|G!XJkj8@-N!jM0cQWb++&Se???KL2PW5A9T=B>xjELafY17nrjhXZ61?yn~$N|1Ay(7Ve+V|1VyMOdJaQHsBhJQiG(-qNL2( z%{X)zPNL&6!K5R>qyi2nfs~t0%fa6Ix!SoVHS5rPM!lui5*JO5*s5%s9y2&s1{sE_ z->9^Feszo~{4RmWX4;sGgUGyud!Ms6gCDtWg#-#UVJ-ELs1VSStE3A_GbBfa*_gAW zhq!hDW?x#{4a_q)by&RZ@uh>CG7KU!ellhSO$^die9{DyjSz4C+RlxA8jNXHtdwT0 zl8|aTrkFb3Y(0jHQqY9Vad8MwQ2iYpnV=I^vMK1haWj?yh4RrXpMBPBn;k&zG>yZ( z01HklScO`TPy>q}SyPj9R>L*lMk-He(G9@p=SKf< z6_Y~>O$_Sl?-1|OY0L&Fe;(61ll@Ja^N?hP9ZIkJl4Ffe7`ZkaPA^`qxaf|#w~k#v zbBO7!h4>+_{;=*vU$01Dz~=v^rW8b*7oZzkK>o~MsksFA(h29UE*09=rGcmW3FRECTf48D8IY6@ zVE*@V9Y4#*&+kaDfOKdiX$%oKG3=Of{x<0{n(6OQApEGXXASm>|5Ny3yB3~EURUGS zheAC`B!Bz)ymPb})OSGr1;T~Aq)ron?W9uBQ2?u(6B#tZS8bf8Q>@qfY2gTn(K6fm zG#OfvFuQ*d1mseC8=Gx?_!xjz z1Y}3h#D%*AIfr^De^6iotl-{*C-0#bfjR2Qvx$d;t4;`Jz2`A@(bVzgi~2}Bh!+f? zqPM?x-By&xP9zEa>?bG$3$;kDXvbj!vfDEI*z9@;W8o2_AXq0`7l@*v%(gHrc)`(d z2+BJSe#B0%HQZ0Hnf2_1ElztbPHq_(=|E!Znw2l2q&bH<8!5$a`@R)Bdy67Z54nPq zdm=MuCrYPIa!K#`=?Dlm5@6G(clF^FK?@Z4YvP6iWfD;Of75 zjD3VKK=%IvVX)=HzHGq+oPy`->fm4Y?&-AZRGZiql1n4WBhyEW=pcyfT%5O^dI!81 znp2gYyTJ_)HUYj7qp}Q=I1$oJDg@X~Uayuv)z0t1&_Ck0KX6!62cziEh&u;s>@9uq z!Y1rK`)Xr0h>Q(zd{^R213-}ki|oe!MfYfaj0xGOjO@R)_1<3VOE{dyz;Yc$R|8_f z0}W{~2;w+Mqwu%$__?5oe|Fpn8Y$^MvmsBE8f)akMydMtmZl#DDg7I^S!a-qL zsG;Six05A_Lgb#4EebZ|B4#!+G{vb9-;C)MHY)Mwiaj!!BWm9bp~4oUb-?KrFP{ z0NZ9$uvL=1t9Fu-i%;E0>Hrr0=!MB zK9^vDKj%yec~`NJFVCp{+r#YFfl2?4I3e>9P#W*8Jw+~2oj?aBJ1-&&0d^ciq%L!~ z;k43wCGZqVpBwDlL+#fI=OwE}yyBh5o|(O-OBL^XPYrKn! zwT!_c)m}_vll`y^fD1}!yB{ugg~n=4^GHy0?D&oSXp=TzpOfgvYsbt;x7G-l>E#$! zSk&To)hs*Zvf@R-a6Nrt(_dT*J7eNp=%rjnaZ)^$@$>Masw5ws*!NgOE$FSnDe?y{A5c%57cB&nw8CI@Z<`+3K;5+XV{1BwfQn*VHO?=7SP2{qQ zrAQWV{^>kx8?vY5fu(vnKhseay4mYSFzKwLf!_$$bYmIW?puD}I*E))<&`<&5#T*C zxs^YBzU16q9RNlJ=(OPggg;Aa#|A?z^?s_err}u);Qy`o^2{}b?M|8#YU+G8atQ%Q z?Hf=xjoQ5=GY*Tc3AU*{IWS9E@UgMa7eum^fjH0Z?5I(ISqE0Cys|BeK9*( z8THbyfDYc6G~8JaM^cPGyM>*KjUfuYNWlE#obw%05)Y`+;;0&S7=&SK9%eLengCic zDn+7v#waC5pG9iiv^gY<~O&WS)xxsz@bQ2|*c0+}z_F#?VnuSHj8w(kzN zDJ9l}aV?3Vv-c1c$x*27wLf6rasPIKpC#}Zj3!KKqqf2wpyARzyF|cYiZp6dpirUG z1Tr!A+Tw*tccmOG1OhL*s|JXehU_F$_YbDN0L_v}tTVokv>* zp>|=Cohppnhm%Llr2Q;KuAc&VQc1m?8`|J*3Ekx>wsmw|OrU{tv){mi_Mq&*o4#jE&^NzV&0J(2;d@)3flKer)Odms6Ie2=% zq;NN*=-u+S>u_P1)fI|NPw_nG3;jri+h>!zH1@X&-+kj%lRPd#Jn*7}zh17^!?UQ` z1ac{UOZ|=RMTeEYRt#%FSxaIFdY8OtX1+!xH}4__;92hTIm!@GG}Ei$A3wdS{JGpA zNyn3VSRMQ-<|TCo`>Xh2x&1iN+Y=y<{Ii@>RJ<(4D@R#vQ_T%^gHeeeieolKRQ{MY zq07Fhde447lez@wFW3*a;REW*D>dx8r1^pssu(gHQ$Ksi^_P~~>o;fk<;#G=n0?RY zgUxUNd!>%ormz_5tGLs1*m6iPgS%3R$c#@s6URL}UjQ*waT0bY`VFOW2KULFs;JZT z;TF9Gv?w1Tm>^#s4n-z5wS?i*ai8Z*ioilC2)*)>zxCpWFuAfGpc;x9Dx-Z-8cn3X zz97dvwbL_S6$?TsXr)@xOCUTKYQ`S_IM!TvZg34pOKezZ?6C0p00PI_1PZC{NYjw3 zzU}>G@;a|85_d17P~>$G;67{rwWxj0p3gpIWHo*DWVU5XRKNM|@1-xXA#qgf63MM& zNJDJQS3eisYkjx5_4!~Q%1&%91i6*DzZiYPHao8}%P0Npu}Q0<#6ha>9un}&f*I+m z_2DthVDeOU3LZvoks6}hDcHjPPV<#ly=Z^+|jJbKL4c%DfY%|e|APF zVNhr!>al;ajTB7vy`kV&bsXJH$LYn;(1ujJ75b%ZPU8uKiI9T5FwJ3QhhMUj!jt3W3x^WwT{|O+#jY zvX_F5VEqakhF$nN_9oXD)4AHYLBy8ggp`zpQ%gk`YZlGF&UG5PHaBOh)3KI!$0EtQmW z2q459sq|O%o-koicF!{t!B|DferkP1$NHAwr!xM{d-Rbk$ohz|)*sFHSogA3SGL2v zQ=#=!^K9oMe?t7Zuz0PcTX;Km97g}-{4Kf$UVj&tOyWj3x!ra_&(`z@mRCkw;H3_{0!p)*W0dK`UD>Y6vy!009 zy}M@hImhCdb~{9}g`e(~1m%~MFV3#37Y0X`Q@Rcss!wGc5^b;yz9ZL@D*Y>WR*rzp zv;U0uI>(^5xij^XH_;7(bQfMpZr}0$Dn1ugOY^=vp-W}9HTY4T&#h0Jn-``Th0<=f zc@Y(;e8^yXNTp2HIz*>+Fb{nmy5c+2iv2z&;#?FO!$&w)JPn~(ZjK3_p5la>nNXTW zR>5Ze{Cq;P-lKw&@YngEQNbUdyD1SLREN%m#W35k*0Q?80`$aV`?i)@+kIsk^Egdp z;S9&N;Mt)ohJ_ne!%s-S<}^B~9GvAO;Jmd?)AN=+YO4ZaCu?`kwhQ^n>&+&Rd%;aT@SgoGAKO{X9dLCyz7a-4YuI?r92!ha zOo&BCRLef2r3o^TB)53ObakF`rL(A9HNjg@JiVUc-Gi%xm(9X~P-AA#{dU&7pFcy^ zM&HHnk@K&6BC3{l-1<95(AhtL=;qZXQgHh#@=LN)R-d_R#w9()>RXMnAC_z924^e! z#u(zaJSvksRIQs^lm0xu%uCl;GVtH0z(HU0v=xA-i^jNo@u~G%sc*oID z35N?&fuVl=JbF&qI60g-!zdB%SJpRIwcqZ1czDKrWHEI-`pa0)+b#R`^l=CWHqLgV zm&6R0_V@i{lm709B!`wOi(j6Y1TLcIW7_SR;By(5zy+C0J@o%k8ZhmZ=9GjL`_UnK z+6=Hj)Hu&pkye#1Px`IXW!~1eERuH8>oP8h@aGYI9^T6La28rVH{(R~8|;9&Dx1Po zQ@2b_QaAUGTa~hi65Mju@qS_r&S|RRN{0%JM;Bc)&}!>Bs?WEke|J}zj+yP&cxcS3 zL@+KMguEoWNv6)EI=5dsq8&V&=KfUg%h47%h3%}S%*6FKWjD%*?#v()`Ajl)1%9q^ zHo*yQm9fR??ysj>kD1MN2WPPwqMYQ#m5+F4I}b2YT1sqm!8LEQ?$) z1mRFiJ$xWbHSzNICyq9bw8{{}7NgyqMzBG2H4f-I#(TSuCOy646i+Je22u3p!wXpaHJp~tkID?s z^c=J|`PLTkF%O&sEO$cX8w_VPJH^e|HO=A9PQ=-ou4n^@H)EpM#HQ5Jf;NR~R|YAM6Dv%NxMf^Cu26&-1nR1pTq3*{dS?_nyv zx8OR^kiO`?xN5wwg^PS9c=Hy{U3w#u(Mb>Q%q+>yF~;Bc04Mj>_euY%>}fyv9q&L1 zw&Qs)&^BSk<} zIL!)~;i}oRKks%myD}kB_*eQ|;&bFr9W$n$oX=mhb;s#Vv{9qLkW{GUtdu4!+&^obsUB{y;W*1=AgArMG@K_!3j1*7?S+GnfS zR|YIbPEu8jJ83JMp`aiTl0 zqL;^Zy>skY8p6Z9+DEiC0%2uq=sbPhOy<=RPdv0O$O>j40KU3$_UVvs&i@bAMVp8W;bxlS%aRq4=;c66liT#R?%a zQEJL!Mqo>&K)(IQ?1i%t=*jMgpKa;QS`ms-&y%jNwx9O)*q(kO$|NCrWIMPxh`!0z zk)Q|H+Gc+?j_&b|rz^fj{`uZA^fVL{CTOe!&dkeWO}OGzQ#~XxcqsGv0;rtgqS0Vm zrI4iw-pugv8LG4KbMv&hRNQ_F;Uyf2oSsP-572LI)yBA)A46cIo#W*;_r6bS=#~p) zi)Qr*ymx*-AmmvVd9vlD`#p%X77M(;mY{FV54O4~Z7JS>U;nZynQmJg5R$GyU(^x- zvwrhJhbiY+Stn~7I?!d+VPtg#yw8xv_>r`mxUO+k#tpqn?>x^POAjG2`enG1yJiDp zKWM6p*?0LQ3Ym%VRbQiQ<=B$K{OWzq%U(f&Y){wYll1}-wXbx@GqIfjx=S;s|8=zq zEMmWXKUk_$il0C(W+l)dJ96po&|5{y>QOjtCM+;{>$aqmVv6JSj}Eu*eCzD85}l8Q zw>7$nEfMc5TRDX~TwX7>F)L7Zj2~FsZ#kP~Q9P`w&zOInO;7Qo<5;lT@=DVMV~b+V zUfLyrA(9J=`-6%nQiDYyYyvDo>rGviw`I1qRa%hVb2@tZ5IhPBTH1MAFI$S7{-<*i zDtSCjbw@`fqc_anfn|u2ysot``ogC@r>T4Mmd$}y1v;$Xm4lnR^M=y*zU7d|@mZd2 zj+Aw2>_4g1YN~d(C|-4eT*E>DTEuuaZ&55>r|JS`NsvWD8 zaiQ5r;PP0yI|QLVZx_Ba6+|mmiB)wbTgvLc!5_M^ci<7)VNg!H z{n{PsT{4N7ua@Mhkg`QLxW2DzF&WTd*dtxMN4e6@Mg!{IMDsR4zGX7f$u1vx79q~>i6 zu<3Z0uR0wI$%mi0w+mg!s=J~bqEX0boc#9@vhalct4O|9+9vG@M% zW7oLrm~8aKzTirH^4c&7VDowaKoOb!9w4NM{tOXxQ?AAI$Frd%3&Ld!`yed7OlmZ^ zDCCo(4XogwPpt+uwbbtTCiDsUMEU-68VVi9tj53cj{JXbqcQyVHkzh?@7xLf_W>$& z97xEDe0Y&k%s(If?Eh$~@A9*Zg$IBC95p+6^?&&AzjsRfr`B)LQgmIO8j$gxZfk2R zlkx7lK0G#t6}p^6gC@;gt$EPkO~09xNLcK*xMSHcfK$JB)P;OAQ|Nn!Vsl)&a^Cx1 z!y#dDz+wt6rFnF8)Vrdx(nE0S#X*SqFK-(|akx&o(3i96w zW-;QUNejS!dg~Nog`(Q5JhYxuKC`i$s%7iyDkQMDPS|7R?tVBQ=yGdC46bO#j(jeK ztvziN)~;~G_>P-YhXK((rvW@7JY6vl53o8=f5fGX1FM<$iRRP}ZQn=Sgw`JChvY8G z0=kfHCESTf0r)Hxx-cZ^>FVn4Y_{eDY>a&VL#?U@3^3#WPI%YtTwV8b57+(vt*rl{ z6<>A+OptsRK6@97u?N|a`~m`))WCIE2*_tN_i|f4(Z5pX6yMQ*E`|P|SJ(e&>mU7> zl!5cTb!av{|GN(T^U!}9&Hv6K;W~##wG{mE3jLR-%sREk?l(+A>ecBR-*oClwly3Y z&9*3{(dN=-;6~#F7h*aQn_fN*j%P)bs>^PyARb!@o=7CYX6sr67LMl+<$+bq3Mk-* z+x-F}%yorDbP=@IW{$TKap3O)5(5V*gxiyfE^S{H!>d2(Tj?!c{wgETr2_otTL1a> zhSW!kPu*C5(~txlZ~b~Izj6@zHB)eUn+fV8Z*x^WoDNXjbBXj87mim~me}m4gBhJT z5N4jKi09s`FOfA+F`3+JjKvlwHqPg4i;WRoNY@*v`xz3?O*HG$P5q#97~I$Ez>>wA zqa%DrhjBjDHj9l4cbgd!QCs&9F0OYM=3mK9Vmu&2J%Ay4{OX$zH}n{aW0MF8Os;5p zce@e>7y6TsIb?80BJ95L^Ls?p-^!gXkAI`3H>m$c#oZ{EF{~TPr+t1-=3b@jIOZ#d z1LZ@-4`AhU_yXkW9i)DIjTJ=y8O>kKwpP05({EIJ^xdlV$Z8jW{5}PANL+#Hwk#*t z#Tr@Smiwo>62DINH66@3-K)%x6?J9z@Nn#T8)Vo^$o~!G>)dUxpKnT(y0O_8tH|LI zvewwpY2r&|bGip^{*XPdht<|sWtxT*&xd)G@J9|Zq-dImykZv*H>dO9N{e`Sdh|wc z?}M#Ts7olBdv~7vGB4&I*Md8QZ>xv6dGeXt+dt0Zd0?2&x1^=bWon&mT|EYI2iBh{ zSavOP^|T zx~*<&@mZDI44M~DZLi4PJE&a1TGSw6WNh;KzJ*~vMX~0K-jYSmtJM^O)Y3S(Q1^2x zu4@22+AmhU63QX{nn%Pi(3(zf_~$7ARDf-$SWYrGFBw64kztatIlFz;p5l^{iEWvP zPiCLFZN{(Are}sv2EWo!)TG{D6QGH-mKJW@-g2yKRxEXZy#N;&j21=jQc%EgtdKbB zhClyA|GH5Gg2jMij->ky-Wr_mv*QzjS3MpicnAeS)L`Kq4*%W8jztu>X3+2Wx!qj9 zDb2;|bdoJ&ob@5nV}YU3-Q(%DF}`~y95kXshP=NTtpF8I^lP7tV*gF6}X$D<}S4?x!2oqQY3=YRlX2>u*=SNaJgWhon!y@C5)QwV?ng z)0i>uzN`HCxv+4$7*-7?)>VGkt7mBQXQxFNEUcOTPCNZk zZ|h_WOyi!-HZwfG9>hhyBLZ={1Q{-{zGjS!xLo){UGW;bQPC5x9f{v3TP(0RyDZ^k zmF8q|(!&I|Vz8NVZvFIl$8d8^>gHgc>xr4hMpp*xjyP8I=+n>5S!?ej8m2IDk_*k2 zX`5+(W}h8^_BId{&*IF8kA-3jTRPQW$Ggqe^)&2WiV{=;5j26=8yrT6HXkh-9{u^v zCfm|X+mF7&I4Vm~1>*Zx);Wzz9h%4Uo-+49dq=K&(jSNe(84c!YH&wfAnkT{EfWgc zg+#y5bR0@Q_9p4!EensK<1*1TO7!^B){l(6)$nou7p89KDR5?=AP0KH0=@bHy&8ru zZ=*yvI7U|ed)-aWiYB%SM2PhVT~f){s>b|TE+b{qOSvSUjz4E{4st_dU4Zj zo$UK&L!Bv`iHB zkej`{w#8inDiy%htMuBbf)SB1v23E%0se*M__#FJyv@U;^I(=X=K~~uD{5q?brFOF z3Z#HAq72w(!^6V;RSROzCo0?$ilzpiM{5XRTM7}h`cN4ChF&-^DUnnwDpB?dO;vKL zdv${8j|dt?e%iq2EJjPWFW*GlUH*O0JvAxGKBAZ@ki$k>P&BeCc(i={^>?;}2!*TI z-|H)T$LP&FL${?#RczhfuuEMNR!pz1aY~1Io z@M%#3)q?2aWeX3XkNn?z4=X%YYPJr9;^V;VD?_6J&?x;^c*6c(<$|{-jZ&5IKIpu4 z#_y2r!mXW~J++Ktg%|l9L-+nK!rlX%%kPaJf77xmGD2l`dA;uY9R5S&*G&3j z6W@KC%3=|Fw7)~m#kRQ5ck|qDB_F774#Wvye{2HFuB-yTdI5bT4mp#Q^Zxu~XOc_D z8oZ(xo2k)GKYb-_l{ z{rc+$DlRMCktB$@hEOlfp zd4v(Nq7OD1Q5X@5C;F|&SNE?ib$+>OmiZl^t#{>5p zyBzEE#cS`h^S2itn0(og_iLhv)DrpuN^hq5WolXJKhpDhw)+#ESTRDn4^V?u?J5H3Y_6>G-{w6lq2d`myXT1bbMP8f);$f^7hAB9> ztygZf)2m%~BgZ0C>`|0+kINnjd8?KZLQt+|xcYYTXW^EX;bM5sI7ZgdC%AyIq5g(> z>p^9Dcu8!V55x-~1QT9(1&7kFeg!nFE@R@-#w2IfK6-PGZSr-(rw41I@2Op@iGB7y zNo;!K$2(5{m!XIEZU`K*F3Lsj1hl?Js-2RZ%uG5f2s6*wSXOS4V{fYZEZ|0BW<+G- zA~nsfOwwZ?>sMzdC&<-8CVN`6{7>A2{;N6ra5Z?dB$zA=g5FPNcFxwdKNUCe8_VGr z7VHvW-b>5b@>vkA?Sl`Hlir#ND3Q%aTjst8Pb?xXJY=d(hcrw3Cy@qYB4e z?(|3RDKK++{UJR$PUM`Y9tl@%h$g$WSJ4)2*pMievA7h5AJS&qfJQJbip;|r&^OMN zWZLROoC*HBS1hBqk=Ki-H;Kx~}nBMMh$xBIB4hjlhTei>XGm}1$^2ynxL^-c5hZmUBzX+nfq#m(y8t_YP zMsFdu@+dz|l))nS>JJi_J2osSH+T``PQ4 zwqnTaTU|P5pXXGr0rb|?pjx$QFRcV*$a>ueHZASBgyOZVP;Ky2Kg)qTwe}r5x)D5X z3(h2<1cLIg8#UyPlDulae;l<-DJaiH}d#{N;LeJmZ97{NvO(vX05W8{ws@5MD3a!_eM0w z^FE6A*7rEsEO4cQU`ud%Bh5$ zy>U-)dN8ufI?cwXn0Y5imav?}5$TrjqXSlCY%~j7QM6^ zyqFC>U5IJQ=Q^9^8W0SCdRujQ$sj)yuuYaH{HJ8+&$eTe%BnChqj!eZ*PYH48~;#e zcWq<4+0O&3L*BUD*Nga@ltW6t4o^_sA*b9-*jG2Ez1K`SVMY$wa;VPB)O2VUlF+ME zrn&WrRwqQ|7Dt&|+4zqFBj&Z{X1nVw+AFx;b!Ji{bv%VSdJM8X-6b<{qW1wvk(I`h zX&kQ#Pu^Tnboj`uf161o!|U~|YETOEI7maiEsrzVd_hZWgDjMNwl22V?KS`oqw;Ng z=e>l4C*LGoCo;ney_=y9I54V{j+*Yu33?AUnpr{Ny|B$S?LmL8tl8NoI5y=0Z?hw) zjVjL>e^V_F*^1 zPIht7F4Hz`DmCJbv=4pwZRgh`JVy`f-XmqL727_~QL*F37+;}8zY4e>FX?iU;CGOVFNj)Zu|P}Q zu8yD^{B|x8P9RDsgC!%?GvTyn^Nr%duF**jE=nQes~7l}ekrtX!_X)q?PDi=)=k-Te zR8k$4TqS9lMw^s;s(r}FHZ$;L&b+*Sh|Ji}mPfdyzP^AQC1R4RG>40qbRJRieYQN$ zb}qt@fPZpK)L%kkLv&oWC@5-`jDY?i@9JcaU9Rjf*k?J#BkAabRYx+u3J@nfz!I@n z#7WWuGH-&?wT7wz=n0AQ%0Xbdk@9~5VGOCYO6--`@L%%2(21wGx5x_AFKzc^;?*@c z9>1T%* zK+BY55G^|~nVPUl=(h@cTqP0{KD!MzFM(-p?dFw-GYu~eo(ua+@TtD;w^VHNs4G6L zup4}d<-rjKhXh%RWEqRaej<+|XnBkSD3uGznFJg1{Kh(3z^9asUl~(s_Ny=U34yoP z1Tk~yEOd;*M*_)^X~ors!+GU|{|OSA_2~o@tK84e>$Xh!P7l&`=-P+fSH6;7n|yaq z>z4FE%h`x(Fyt!jtG$ogNFU5If_P);ywe^S7}i5R80-eM*rScD(`RQ}1?F2cx&*rp zqghI%r@prGiPnV>H%3l#r6wOvo|YYhMQWam(l{V_F6??U%i?VYFg8=(ArfxF)1OPQ z%nA7Qn^$JuN^HH`*uPw=-6eiE$fYKUm^+f++im24FUjAHzb?K^i@jUmprz}$P5oRV zamo5m%It!GLK;k*G^Wr8y`~=&uDV`iNM+C(gVNB;SMSi4xTaFh@s{+OQfriLYPNij zc->ReTllg0UrD!XE=O$?d^&f~!lMdKa4XkOt!S>GoazMYvRY)K$)H)iWuIPuE9PPP zgt}(U#)C1PzX>5EMvmC9s7s7bDpaZA#CrYiCK<_=s+MZp^3KwJCb(2Q-$*<7fx1P`%Wht+EfBWgRh2EkY=si(~Nr{Q5Z1ZVhLAk013r_ zO+C+t&jEZ6@$V1;CJRK31{Upm#QQ+)lOD2U@PtR&o6ezU!fedj*3i>=(YY6(Z$4R? zuxw<`+OnIe-o@!B_i-c(NF`dY(ByC^C$;(I#!xr2EQj&0O21**8|ozbf)Haxujf_9onqa|!2Ah%fRls*G9ic9$3-|Q~+ z*haL9E&19?k8glY{0K2_+y*6C&fxLT(qB^FMcN>ADzpViC29 zys?lMPm80q+`b-tTtj!Jq;uL}M#{dxW>zKSwI{Q|DK_u%Iec^H1v3Ae@pa8hwe|S7 zhQh7R0<7Sq#wTMC@l<972zB~~Ocr*$w6#~ljQc+OBC_nW@5U908@v$^f}m*RK)ai{ zR~9J7E|(pJCdHe82!ye0fs6D=b3U@oXJ|t5H;AfvGTHbLS>RRH#TEy@p8@ zS!S3n`@k2jf8C-ize5foAod83FX_IrOm@fkVqaU-$H=EmeZYnn%PL28@9&G}p*=%3 z(^*d6Igv@dxap#|ttX}Usj>I`*z;ambtKT?vmlh zff_}tJ$-#GJ?4Y#vV^9FtO-Q*r3z(#As#1ho~j{Ne@OCbsS3c~VzCj9#34n};ooMp zGQTa4v#v0g?`_#QG90N6ym)F?Z1K%*XrbMF(A_Crsc>lBVX_V_`o&hGM}wVqLU#+- z_;8$FVC+mQwmWRE2CGmqa-E#U-D%lI~qJLb1s$GX8hc(LD-$14|omr zwx?X?5@5KmS&=pn`ISAttg=|(hh2DIyv&&RT>uYZgiUI>E#O}e2@!KKOT_WKQLU=N*LLNV#H#Jxxh(wHGe5_AEhY3Ke1Q371JOtB2wfj*amWp?$O~Ngb z*-WtR{s_BXHGZ`u!eAi1_}K|V75Lpti{LenXca37&0os=O}%T&=Mpz18-eJqe%m?m zeG`ENBFkd4RbJoEXouf6yFo_ygwlaEJmcgGmi69@lU850QMiL zt|EAOl2;|ymWI{zsWgAnC23=sGamZ1nDN=%G@7FCoSfVdfTL}sQ#E(MCs80-o3^=; zz26B`KIPr3bJWQs`v*IxvvvAJY42wqStM57gAr}wUOp|5ImWqs0FZ;07zOoJqO%bu zfxT6=nYW=UrF-Xn&RWWnJrhpC^gvGL<^{mlcHbEc~v}5C>A`)3J`KIn- zq0KXIM`kY~PWMbhf8U{fE1UZQxG#e#g(!aIS*}q2I8bTbH~B3##g4)TCx zwm+PI^DMAzUW@d`*S0bl|HntI+7bZ;_45z~@^Sg(kCW54NY2sH=;6jT%OSY7nb0qx zz@F1~8thEww^T9<$?q}@G9W%qSf!~9gM?cNSnb4jVjNF;G^9*JJwa$N`el_VI=KU> z0F^_~%@Fg@yKo2k+4qTya@1Xm)jbj5OlnpgQGs-+)uS{lh3&xKL7?K}#)%g+_&OoM z72&5+SLN#ZXPvhsZfi(aI~?7FB^kYoUEX|ulEr|Wz-B3{0_M-OLshg^;I^#L*qxzB}RZ(nUm-GK8+1;oIcUPrS_NwLt-Ni zRw^^2UcTz^8l0~^*D-SvXXJhp+D8DY4SQSV6G5ZQE`Q! zurC>76QUqCU0~_-2WTM|IjLx)s?PH_u>h{);x+NdnJShaTkb`8)D`xZtjb9Ub-3uS zE3PlpeOJ#Vh6Dj?mtXV{jNw@J8iWQ>N26vstgQe$)-U_kR}>bLobpHc|CR^`>RV$L~a7=Ha`Uo|WA`88JV$ z*N%budJS=DOSK`hay~Qao%y#{I?ARVv+z|fsj664D%RO2J-zrwJoEa9g8wb67s36; zM+Pg8C8`xN#|3&?K7BIl97{KSF!J#`Y_oxe8}i98%?@@_uisvKOs-!!27O2ghHwsP z|1v8Y8es8;DoL=D(Bfa7#9+Qq{ATps=~ddPI7en3r{PUDp_&&~riKrF>>|tEVil!C zs+yV_mwT{2OcEVae2f7Bb$hQy#(w@P$W1;L4=KQojp>qT2)X zvj6zpQ9ONZ;asj@U+P47!R(vystvN&83F8!_mC7UV= zAY2v%z#~OWhDbMP)9k~)E2T?PZ?%>_tAq4Pq;Qx>zWnoLv9^B^21RiY00D4{uSf19aH z6GQ|YSVc!i9}W3#?T;h>7@yK^0xkZuauncu#5p0n>yOjx`7_Wh>QjR$Hh+NReCAPB zQX)i`BtmqFB;u70IgL2Bb?kbF(3jQJ2(SLVLcOy3>+rCPt{rVoRx5sS-Q~sQ$9$ly zNMR}iNxV&Q`27=#zLye#_>kguk(%!Jzy9BYaEK|yySuuCuU3L%gOvJhHX^i_uO@3H zhVgp{?5LjOec}!o*`iX7xrQsyfVg-a|CrnGn`qjxH50h!eA7FwfoM(ZBSdW>iqC!nOsaO|QBqK+Mj ze%!FYASK2O#%X1(miH_p_(y+(q72+JsJ(SS4!<9&-&lhjRjBy%8qgVPMzbt;z&~6GQ^6;KPiFMGGzlL-F>-qukemfrl^iByS!FI?_&nnM4*#!7&mT6D0?P|EQeF zX1Cl97VU5;vMAUcoY6w1KoFPM>pr6bL8r@Qj0CGJ?u8B9Z6kiZiLmfB+}rkmE_Iee zBQkYgPd-*%UFcNPx9?GVoCK%q(Xo1~p2IA+hnm^@ye-1$V~1$&vmW@t(@VZiZ}5=A z4_3E?tXaF%N@R1#qH-(DHK@!A;9#-pJp8^ks&9j7t`z#{jn9*?s{L8q0K$D**we!< z0lq4@8w^Lo-E>xhGy!=%bnLs-)RGcdhgX<0hPd^XS`X?F z1H=NMM}(p61&221pR2zeirb6(Y)HIio&JNO(8Ezbml~0UB?c#G9kE?_U@@>~wFya$ zTDio)2LT`E@n%I0e5hKb;NRh+*F{C`v@EZdS^yMk3(>?Yn}M}tsCpt$$ugD~!G!|! zO6ztEw#dtC(^FM-D?pxu8*{tyE`+m6K#VEGX+i+}%mFQ$u$m8|2drwVAYLCOpU$mu zz>nUES)7>IH}}}7u^n)za^GALfDi$V$4H1kPeHmXt$vz9$;kKs7Rn17rb!utLYRk4 zc!oR@ez7yvulcM+2nh=T3R^;Af3t|hk-V$C>|H|HqTN**55>ox%c@{A#46HUDLu)4 zB>}TH(chM7mD6dfn^>{1ni+gIcVGgxtx+r2qyXD;*@IvJ`Ytt3PK{G=u-Z(P$wvm~ zUOoOF`Uh;gnnTH~fUv;`%fZzPAw zQlF2|+0L4%ud%rvH+G-oVi?r{F9^(jbKTKpehqgB6^YBmM3ulzb^&N`8`!h+y1f1b z3jn)M8!30SyLYuW3wumEZuIO`i1A0&+X0uM1Aq24Dt#V^-j@)@P=`CtG?EWb9&TSPbWt+xe`Jz{gW@<_EH2G6{q&Mtc;%72 zAg3$BSgtovYHV>TzUjv9Ixj`JHnwIC63_>!Rcze@%f+GFXZAsVeI|!i@iNIWgle2S za-o!Jk#e@$;a8)@guD_kCsmlk7@cnmbkk2@pb;tWd=K^;OJ5ZhNp?fHXu(3EMSr^< zWN}up{GzjogcrbP8{{jN<<`x6LGS**&JB0)j)rk@{c;ByCP#9r8t?`r*_`w?a?J#_+?7 zQW3m~E`OQ+_O(Y4uXb+K6(*(F>Kbpy``^60sy;ENEQqQ5AhHm=tuxCtC*kBh{0rMA z^Ag`m4u_6}I?t|{$U>Y5A|#I}{XR4eG83ZpcUQa~m5m@_1QRf6t@FvlK}kF*W)9iv z(l{aW@CDo+Hcpp#^74(dPIhh)Wwf>?Kp2N;#BJ(lH$n;;N`)$t?#l1~2K9jE+2ZfXn z_43MG_*kvConq|EjF;VGz#IBy@a1AAoVRKsg)@2@vsFEpr{7U5s1H=-K!2r#!SN35 z#O!@-P$Mz7#N2b8UC5Y0EX;j!9t;SsfYDCgOwXKGg<~1>E2^u7F8{KprhB4N*jLcb z`bVg*EPA~`ld9Vmql)vOLoasu)p9F1jm~MXz+88Ze^#ctjN!Eq7aw26R(bXW^%TT? zDqdH>$k2_e#v45mYb*XX!Y3l(3eygZZ~c;7ytwO3&aIrU5q%Kxq(yH!)TxHyMZ=Gc zJ=&Oin3xV4b31o{r9kr34FQq%N=h46bR>*sy^(R0VOLC9T|oY(-f!_Cb*|Z zyDu%>^o%hK9q`FbJUL>NqQ-}#4l$tI@=C*ayQzDnFll8Y43~y1%Sse)`BbpLIh4>z z-4o$aV0KtkhBL;ImN1GX^Phz;aojy&JCLC8Ci2PtjwXD?z#MKI2<ph&Co4=>vA`m4)!yT|m5!uRF1^{{p;+F5@fLy!8{%`leSeu8Kh>UUuNZ~Ieo2=uV~TUM&Re3 z6U2hfbAx%VUm}aKbtg-RSJQ6J{*)8|8Rg`6m7_&OH(ffc4rR>N)sd)S>ibKztdTQBw z1VcVE34aZY77()5`LXx;3H9i;KtjzurPM=qQNl0zV6kAJVfPkFcp~UE|CvzSB;gk= z!oaiGK5&HTSHE4sI~B*ND1Q5B1-W6DBb?3Be%zFAOAmg zNX=>L>!HB3gVCTDqTKW`)4J|R#w(wkRAp!ZmrPk-uK~{?H6D3j$Xe45k~L$?1Q*Ua zXMb$|9D;&dH4;KN;C2m1Fm0P80Tm%x|oaN|PN z^XTg7dECQtPV~fQs(IS;6tJNC+MKk-isImI?g$~8ML&~0-pDKs{r;?Rat+Vh)FI|v zwDkpL6f#})PB3n(E|V4L>HqL-JAMc}$D{y1G@P<}jZE;#ao{w__*EgVsk22)z<4lN z01krNW?~uOO2TtG*8^h-$fh-sbP5#d8w9>O90EB)c1N+|D;Buy0vQp~3{#t->VCEY zdX)mbLet0xJVjv7Nb8cq-MV}#%##Ga)?H$x1|=pX5ho8p2{Y~h(K1>ZN^9D;=dgxQ z;!HJ3XG{3w#r=Gne(+ZxH$sIF*%{?4tnFb8adKQQYT&-t%-rh;z8J49NH<_yOlB~F z&@(c6)zvxP{s0G6|2QV&@%=jxKL5!AJU-ncAMfUg#0hflboknRK*W!xpUObuCu-aZ z0VIw#F9LLAeKt-RK&L#y)Rp7uBsPr<(;199%Pa( z;L1Xvd=sa@iQ8m1dZP&|)zokM4WsQ|K^~pg$aM}4d-CFFi(9CaN{IBo=5Kim=J;J8 z{~UHZM$0d*<-!-aRV}B5%TOa&}C}ZZE!B2VzLaW(-QBBwTQ{6 zhga3*1Eo>JhTND^E(zU#d0;!xe80i0)yR0qW3Xc;2URa|77W}=x3gJMPtjpWqO4gP zQCsY{WzdqZy2xktPK%cUW{418fD0O{|FC|Hh2k&+zneBaEKm5uFfcCDjE?-GNAYcC z@SzkJXz}~K=dI26->gNt+VGx@2Y-(cuBk3qv_Hb_aEyMVo;%ah3TXWxb88|uHc5=iso{52h|uot?zQpAe-7($p__2==&cvoWLrxWnm0%44+36ocpIpBOn zQdmzPAUg=~H~?b>$2~jdHo6!<{o>_Xp#b0HA8atUn8tuzaPZU`l-|0%Cpi>OzJkhs~yo!Z}(ywFOBNZn&Gpm2ZtA>%F zzNv$S)3fMTvBYwQJePU=3o$p%Z20gcZdcMm7&FhJ$E$4h!lB94=Pl0ZE@Q^%mx#Z! zA)Se#Z{q$K9)K@0j%TfK-!Is8fTU4mF<~i*#6zhtD=d4o=;DurH@s9vR#@Hng{to%?3BhR*#a4JNZ|8Erf~s1cbt*sOQK z(8?k11UYD15rWMsgjbav=r4{E?f}D}!uR2xmYyH*VWglRunn<+juarXgDfIv%g8b= z5deRnvnGIa$d1c(;B6Q2_<3XHu%&@pL+u%KSQ|#P0FueR?ZLuv1?Kz#5rI{4tsauj z>BPUKDc=dxbbotp<>&R;jY&h6x=P`lK^PW}Yp^x%QLVHSL)f(;iY8zzzYqBVGG8^! zWP$AYi|`oD-c$zgG8G?~dJKh+gSSvouW& z1gj4K0SjM6<{80wHGeEx!Esk4uT?j4g=T_s-i{GfuX>3mZWw?Q0PK`FL6=8hQzJ;Q z3c13lx8Ff*?( zMA?zF&1-*BOYLTIzn^X3?fw!3go`?ydK~g+cvvAA+WjOJFJCtZ%CC6*cCqz2(JhNkmM>PdjjI8 zx@p1)o9?y|Z+*xI0rLUSe|hZgkDlAvO=;1WcdN(LwP zzP8p;mBCW&CG#OODaL^6@*6z|6q~#EKhKztE02|Oy^c4+HV5^@iJHkd`U2@VvX@M4 zXLFzxK)B!|*2_UO6>TZCSZ$wQv4Es`MmX{y8-FkkFb=L0B$8iMAigFHOGO@k0cw1vph4@bJ2r3YTH=H7dtRX44qstt7Ko(k`PL)FY}21 z*m8wX09sOsxFbQnL%OyD7l+V7dsog0u7CD*%KZVG1(G-7t$x=&^#FtkTO=YJu@^|r zw7;(-0RggEt;B5WtfH;^V2DF89@_~j_v8xHqDZyF)}_%>>inKd11&@R976O=Rk8Tz zn|2w)&xt&p4^?ES_4DO}3M|ZQwzwld%*$`AeQayszB#IJ{KhmtJI5^w4AEzqzYYpMTD?t_db@SWJIB3_)x-NIRzvK?8^?DAU7B7bwQgp~E>AE4eK@8qB4Ij`4!+zPkd3#h=U zMGA-diRU3^am&$s;D8{-faG)j1)G|MKdnbOs+3Vph3EVMK~bX$=x2X1|A1+x;XAn`-g>!fYnAXBH=Nbza-n(8|hcL@U0ZRwm5zPXETZk5JbNmgu?N z`(boPi5c^rk$jgInrpo2WDX zxi0wYDT+6xP5)uaYS1f(0kAm7W!WTxYU(ET%L!svEX;3xhm{-e;0`SJEk#5~{DpX&ko)^jUqa{YeL_Wrl1 zQMq!E66Q?m#@fzx&oNbDR6Cz6e(@uimHL}hCQZw5oXkz5WfPFL=@(n*^npib1svA; zR3C(Xw8I~3wM>s!b*FJ<>s8$je+;{b=v--8+1BFQ+3i^5r}DE~7hEc$Lt1nq^h87r zL~aoN0m(CT!syHf9+b=e6T-|$ypVGQRhmQ6@6L0y^l{hR?R@eOpHrbfTrdy}22x^J zhyUe-s1YZL=k4(c7^PZX?h)f5Uyb2{gWg~`DG1P>diFNPh2qit zD28h?Veb~MZ$Q({8RHvQj65sDckUipZs~88U>|u%{Ghx-IaaQE8Q!Pz7`JkYT2jH2 z4Y{^k6`J^F;Go3Q&TZQz^~7l}@^TscwQmehQC{(1;PSQ8SCY|2G@@c<`RgS=HqX;c z*h^HCgdjpc4QFC%_xvI%V2~Ma8mOOMhI7qk8|NPtP8i`eoc7YLkiqXeL(QSCQH+%w zXvitr>F{fI8lH(~#gMsr7b@_w{ASHJBI?BZy~F-_LJ!Tv9-N;wq(#u0^67&R%$3+@1rsQnfqMifv+n_skIGht?cza;(e)mU-(i_3B05MgXhY(AB9TcJxTr4uY={R zz7a;^3IYwmQr%DVWserR_WAQpAFl%{xuxw0)6b; zBBBB!Zo-2fpx3BKA7(*~lh4yJ*wiV5ZZ!K=Ak&kH{Ii z751wa?QLOjL@i;+Oh2^pJ-CF2l8=!Er=++9*Q4{CZIAuxDouCyIPv?dWM$A0fN>yI zX7aZZOsY@dR{bL>1if+VuM5VL>TYzk!Kd| z8h}?$K_cwVNOM>T6Xl{>C`#V{^~-cMqcn;iV#3B+FFfJCc|bN^=_`5!!Jlha;b2nt zMWMr;MbXJ0`{{b zHhIE*v3kyIQA=&=)1)O_Qnx_v{qFmD6*vulQHwWwMUJ7odY{PZ&Uo`3(IZu@pQ|~` zCyyxW_K8eqS6(IkVvGMK7X;t&Vtxm$b$2*?knA6PakZnZXZ6>{(wAW0iooTuwvfi9 zm68=~l=%|FP3eQ?r%#I;`fNwy>{!pAF7^dYr^;9FKwSp1MppuDf?v%S9NnYT9>7~ZJyzB|8C@oNQO#_5ZtSF3;y~#YRt`z{ zq8^Dc@u7_}>F3;ZIH?q=&%9^X-C>3vs!_V7W&iEGvs4q};La8vu`PJ3%H3+NzCs|H z<$E$E2oW1>M`&{K+em$WG|Cd^_oTqEp$2?5LXhr4PW0rcfo2p`$62|e~{#%D0=AGKpX5&gw*78-qH zXK5(Alclpif39=K!|1rGKq7k!P(wa7sU|#Ihr@z7(%6e%UEyGAr6F1Al*3)j5D>jb z;%k%<++ZJNjI3-t>YwwoH(#s0%SbkdFZb?#YTxVY_)&xMYR4AG%O!~ckwG*{1jLxonD5dxDr>XBSa0dxJ3sJh` zj#0LizaA@a&oJZ}TLW@OCc_poV#P2GM!iPZ94#sr*49)K_J3K7MLU#io%Z4np_9?x zBwZWj#&YI(ZH-bfKn{|oaVQXRaNc1aOX{|?2-iciHC$$YCjg)K>f1a;)zdxRI!v90r>^5oPqaOSe4}5)j~>~%J(>;qm$QIL=~3djTDKmq1UT4DB+Gq>tBa? zl{eL%c-Me9s8-K;;{oyWEIx>9aNVYE^U5KW$(8U#2rH#BOE;g z9{2Ba0Vd1bH$?>!gIHQwwJEiovHQW*i74p4DSc^M>AZWmD&gKD&a>hi#2qo{EKVD@ zuvku*`c@HLqOmIfksD>4Yb&Vk-u{}R;1u;Ksy*UrMov8B(S5r|-TQU(!X zt3EO=S`YpB#~b$;D-`h8j4&r#AFNZbAf`2KtLRR2^Z=fT?3Ais92~xgfbvThVIjydp;Jjg zFXwvWxfY-z=6P?nKF1C?k(FFamF9O~z`qjghv-#6PpOgq9#MmHFe*zqaij=yU;$Tr zCV{@5*f}y4+WK3(LIq1|b6>c1x?SlE$-Vlp#4#mzpM~%*-L6Qbs`@lV0Tne*4wF}* z4>i%!84}%klH(rdQS!3+BSj1{sn4)-Y#%FYKM6uSuX{Nq9Y&Y$f+zWJw^mfCfN$f8If+`BO3LUq6LlpRr}K;5=3rFAKd0} zlXx!14+I#=PN|7gT%m05L;AH^{+|7-G@ab}@DdGbEpo5;^8VT8K+)`eZenlmoljd; z1s81ICj1a51Y3$CO}6l>?aDBkH^iyr#i*Bt-GWM}0-6?QxJXo{yxo*H;V4qw_)$TN*P7spL2ql$$Ny1*Q`EMD6Gl|&_1l@ zB}(bl$ZbNS&U&}G_!yFtBQts*Qd=62$9ZvB+jZx#*n9pmTzwX`vbFTRy1;}R)tOuA zDK1EOfyK_w?F%1&q+tyEth=+jog0%O;@&jpvVR}alN7xY57+HhYKU7#+g(ZdQYvPo zNP-?^ZLL&2g-Csp(a`1OR-Ajj<}G?UlyTK#{Nfe-hXy8_r}|IQ6tZgmh&k?FjIr)Z z(8wDC8T#F>sSgNI>A9|g>M1UqcrROHzfk^us8I)3oFu{XMw#6s%#>^3i9TK9#G_;@ zZ2b7~zWwu@&@+(vK^bDgg#C!HznY>nF0uK& z-JFLuI~1-Dfa{=~^^dnqUf3WuxBe;(M4+=7c{rT2?q7PwxKK=LOV2~ZHen3)HxI`| zHT7cm+71?;4^*?X3Lg)BOu0tQc_D3A)h=oCG%Bsil^RR~UOJgDbzz^I?;f1GJ-}zE ztLv-@|C`eLkf@aJdJzB(Uf6=jDCPU;Xlf=bzRx?=GW)}Hg%}k9`*6~>-qr7VRyIvuBjPkWKAF6rujQ%`O+i;IdCF43JR z_4<&sCBhM$uZY9RdPfz`2t|oG7vt2`(Tz_VvK9^%FN zyh}kgtNR6612Q)=(DLToU4^7Kfd?L1^TT=tx=A~UmGsI2F-{L zu5I57qkVwN8r2o?bNBslxjlz^4>J_5wd!(<`aZm%efO;z3h8vtI*TB~bcr*TghLh2 zv|Dgc07eQ)1~nF3GxND8*LQC5jBrQz-t=C_i+lxSkfKFt;4LbTJ27zbP-aaqUwl`r zho)sV6zj4Z4Yq$*zs-2eDJS6XW9g58yqLuN;^9@D<0icNiuv zYJq-H^Rwfl_BW+cTz3g}9xmM#((cd4_L}E7n=T7>BoN-`jqlptT^({ZC6s>wS34CY zd6v5xVYC)^HzBT<<&3i)27uHJ+cxe3!J%+f;p+6Rh9q%fB@c#@T>no$R&X7njfXc& z_a4IkZBB~H>vn`we+}&k4m!WpafJZt;K<3d?Oo3c@8yx(ikj$<(pOOHv)jsw0fXeM z@A2jy_~Z7`RB7jVzm>e1Y?yT>4!tgU^^VU;g*!A8*(FFqY06O z&3&9_8E~FizNG@{b0il4{B0~Wwp?d5G$@++^xaiDa$0}S#MPJVb!6Pxo;jGvxM#G$ zEI?*LnIt;CR_BOiu+Hi7vDlt?!4lCk$@-A8$`SVd`8d+3g-7JWMYjQ#QVYf)RZwT% z=4QvQc>9(V)Tt?YakGur?QQi1&+WB%xP45MJA1qbGvoq0e8d397%K1B8(uq@-k!;| zn&=&VqkWRL%9U~4ZL=$-CVZtB+0i^^c@{!Yq`L`+A)hsOzJOl8I9T_JeW)(y(X%51 z=jnBt2lY=kTw&LG$Cwy#lk7l)+=vN0nFa1I!2ZzfV0#g6h`aRe4##!$H3faqLl>os z+2KF-TSh0Jpkml%!qN!cc0_|jo2T={1MS+n%OHre zi+w~I0z5TI+bO6RSF^Yv`qNH}7t**D#_41@gRY~vSa2mg%E0%#NH8wds5rJBwZd*n zxF-c68E@=+Uk$!g*U|H+Tqpgz&4(Sk?7*~)gJL7=Krl3d!?k!>0lC`3fp$VtLTKJy z5tcD%_Nsw1eXY|Mzw;OK5#-{fzdGDPAgEi{`>^pKeY$+;Q8WB?_d@Zw(H@cetTv_? zT5Wvpa*Q*G)2bNzP?7gT&)M6z)$_kR;(Y+N1-2ZLi?>*5Xomm8FUBpn$$NDkHN#>6 z?txp<=kb)v;!AF-(}=6fbq#l634oZI)?X}x>q%RMUPcm)ZvciMSo+m6muB{>M-g^T zqZZupT@UF3AM&n9(#oWMt>&9cXwhT*D)M457bTx>hAqBKR4VgZD*=*%EA52+eWRVf z`e+piG)|pNH%{XNg0t z8O>g-?$%EJVdQyQajoTtf<$$Y?*SVJVt+cblO~Olj6L7WQ8eFtuTjLfja8o)69rJj zY5RN05)wuOp@Lr}JTG9hJ!i9?uy;5_mgIU`qsdyp-CTV&(BDPiRlXvBT}m+;w8 zDmo=x^g^qz6Wr%g>Q2A-v+eEs{8Q(ONf^-eZ`$D0OcY1hBg)sVmQyZ0B2AA48U>2H7>3ESwRJ6zY6 z>sl?}J2rh&BH;$kX)kB{A*!@Mj}#&e?X0+Rq?wUb7j)coSCvpHQRM${$e62+XT{AS zRN}bk*bY%meZcA=d$}1_fV=}`G}Hl!9)nV^sURmfC>rUWRjUSHtZi~_f zzHqT&|86a@@7!v8=qRzT-RG2bCYe$voUSdokNd!;wckyz^I|gPXpAd1|EOH+gKO

                      Wi*ONIP0pF?xC~_8m$za={3qS6o10aop{`G_9)%ko&SGIOJz+Qe(u}{}GTV|s zcAa`)_7t!ePXb-B%ck_i*=>9IC)XcbyK)TZt1W4&ZNM%Iir7IQE7p#Qd?8n-i_FmP z-=Qqcbp8&2moM|9mff_p#oy9Em2nqP8EKt)^-ooJGXLE*r|$p2C9!z82wc%bEoJpc zmdRD*lu6)PJY*icu66KnJ2<-Cc*JbR_Bq@YJD3*X9oFk;Cx*hBZwUkW5civ$iN2LI zvwpu8e$fmP_^u~TVSBe=b?16C!bY5y>*prhvS0w)Ir}2aNQj-gk#6i{mOoGs(FCja zKOIvN=Z+}}!>thwpl-$^xi6cy)_B7ciN4#`t^G;M%gfrIx(JdfH-<+>_N>47r1bdj zOsqd2dBXlW+7;WmQ*wTK{e-2J@@hGp$pQZ3@4h#iC){jR)-Fa6lz@No;OYi>n4Ul0 zo5OP)8tnq));j<5(!y|2&L2X+%jJ?O{#qBQz6JhY`DR^T`gde%T=U-Z z2(-zQS{(B`bg`QC8#$Yt*D%En0KR_=%i%ArpLBbsD@IET>$GxV{1str2=P#^Kb!)3 z8{?vtVjy_$rNi@}hQT-J(%D)2>`kW5tCN#xpA>ZIFS$TZl9Q<0PuV2)8EpX^YI9-lUd< zTe8BpbH!e1*g&AvUj{_nrH{}l!F$v9OV=S5Q+)ub%EU*e$~`TBl}z;uCBe3xslbXd<~ zFZiWzYBww;ewZxwuDmmUv0GW3T!9tS1eIq)b7Nb!~+0Il6APF69kf zN2xsg+@=k_4xo{Zf7~YhEdV*It=wM$7`nZrJGnl!blA6+f<5YQ$*=%Upra!Nvie1~ z4ZdMNbBaI zhbfxQ+As!S@s)eCtF`tN1Oy#hNA^dWnoM}>(k3Z3;aK9!8lU$_y_h*NZtIt)!yz~hIo4v1$iV2V}sxZ@_uzQpMXV^Ll>lS{&`SXCGZR@-955e!Fp$z z0^U*_h};VnDWiB{ZiKGJc|eICUo6=&eITPlI;Fp-MSuw1e%kQv$gCx2LpPwQ>#*f` z?spE)CE&Akc?MXC7|yTHR)G320g|rvZ$gsn4f*Rc=zean722v@s=E1BNiHDbrcHzpW42|pX&Gh zAEgrBR(4q-D?|vHNsfrhI<_+2*;_Uxm61I{2xT4Q*jvM1m5{BhI7W6H<9og6{dxTU zf#2)>sCVae&b_Yty081XuIF{#x6toBAn4Zgix5w-u0=fyJb_xEfJ%aNu_QoN7aI2T zYubjik3bo*vDEsDUhRmiTrSZmfmXgLmA9oPU-1H<3BU0Rz!(4?bOVp)$kR>rsGB0N zn#tJyS;RBVIC84GjSQ(T*1Wg|`lgFVs|{s6ip0}+84L-tHT3ZFlKa%GRyG<9+xmPCzQBU8NO5MSgywWk8 z7D_ExU0`W;?`;*eNHnLDAg8>#1xIpEreUlMN-igfmnk&p1`P;Xg?xa1h zjrx!-g>#ktWSx6|;+&StzEUr_G^Z#`l4NoG(mI+b|%w;m_*D9}$n*SVH#q3qUk$ zg=9L$XiT4Bo;Z!~cMWdWWR$-VHIu)$=RSrftPslu^C8H%BH^oPz|O-#d?UVpTTSD8 zH6lfadn-Imyx6_rXj;>s&c{xHl($yCn*l5KinM>i7MH?t2K8}29o)5io<_O5$jojQ zI?8oyV_gtc{p&!Y%AtOMsud*Ih_%o&zDdSNnV5_Map_4q;zkMqIRR~LLp;XA0%-{Z ziUW`*F}7{5;W``m9$RQUke36vGcECq46wG=lmZH1fqhci}#v!Q?^MXhD@&xRTGbT>S% zN+`QfPj?p)W9~IZqv_UD3%f>RAAvGM0$PfBe1tj5w$m%BhH!`B(fp(@!lafz)Km!aoa~4o!D@C#p!I42g>R^7 zj5rXqrl!0ce);pR*CI-Qw@3 z0`Exeyz>@?y~S4qc53ij*ZB#Mf(=bXM~B8gzq=udWR<&w+YUIbV)oxiDsU4y7c#HA zq%J&j9!prnM4z!Yhms-yG{y2HI~v;j;IP5yb$gejmQesROq@7N?kw8v_E>g+Xr+MS z;%plo&v#r*Yh!qqBH#wo^U~K8DY1GAq-R5AfmF%3{13$}7j=G*=|zYnV6%2?wjwt# z7}bS*@407a`5M^(Zr>)-Osywrxly1;N?S@S@&Kl%QgXIxRQ|npZ-O3~OUANQ1E5=7 z2)gy<=4OfNkp;4(3hhbsN&Il!Z#I>T5tl*i)Fl<>CWB%Y3*(Kw1^?<=3;=N%F`J|J zN98JuQ72(D*xfPm`$O37Qs?%Bul2Pvx1C4}Py+5Z<%-b>`8ch0EicF%DSR`JRUrG$ zx4p;A$*y3<1er8+P{_%977~AUCbC@@Mmot5YJ(~!I`uJ^?n%#x+|sQ}-@{aTFZ1H` zX~-4dKG4^JWw2`4bG1+IKwNF;u#q7ztpK~q6#1LuRY}4Z3c31hnxqWJs<0q!m)J*I zv-sIFv*Iy)ss!!l1Kh89BFqLfMC&M1uBHdse5XWI26&OgbN&?iMBHC%N|UDK4hbVF zIw$xzxM{-CZQDQx=v|kL|76DX8IOYh{>l;l9nH{Tn5oMTc*$8nP_QZ*#-=re$E_sKoTM=g zepyOhQTgsOJ`w}5XaUJJ*Tusq9Gkun9f(*hx&dfE#^8gRibWQfCJBk+%cFve%#$5 zp(~AKHiA-5GgTAVVBsH%eXWO-5C$m+JQfnw1)e z2<#^}`VRE!)1)u4AJloe00y@PsQN@Ow(MJ(x}!qtJxPV2Js?}0T4#w39^GZxOC?3@ zyi|aM-4(5+kvCc99xe)U63rL&)+&Lme&9v-j6u^Nf@ip<{H?y8o`BSe`-K-r4ceuJ zN*pdyxV&}HX!g@-P|l3ns;~5quH>GbBO+^d9-rE_J2tET zo@vx8wkrM=sb>Mx_q|M$_j}jiBA%DIsw%Uv?$5Jl5yPf?6boQ8?z}i={F&dca9YiL zeCk{fSh|h>V&gFbFDf^s=(xB8;Et}GCCQMLY4zLG1kg= zuJLzJtg@6N(z>!HW#iu^CR;&TOqceh_sf0Xx}Th#c)uF5W^M%m0;s_O0WQR$!6Vri z);3gWcvHmlUF}cXRt(>|!a>F|r$Yv?NMqO3D_nW?s-~E^4sB8ii`(T>h8}kQmS882 zEq57uRbrF2-t7t47j#;-SSWQsux+eO(N-YfHh@hk_v;L-Vw-oy_+e?;7dV7#zw?yU zMP9O$vpm6#$T?#Q3a7bT79=&|YZA+7bP;U3@hSrD!oE!t1$M8C5ji^24T9E+@)!ZS zX=u+x0kKQ@FC+*ebtD^LJhT zBaHl!7cv{Y8xHX*ni&G#3;G?4kE|PCUcdo=reCdI+wA~DxON%O<{c5hf_7XSTD}30 zK;Ox=f%vlY)9aiV4L=-5&D| z0*pAusol>Dv^h@eHj6&^>4d!Ap^rd>($x80>R~shENqJE(}w}V%Lw}N@;8(gX5akv=N;w|Wui37;e) z&2Jaj%o$nzAVM@pMI6;8!zz+p_VF9Du$eak)*ns;Cn5*DhWV6rc&~)c){viyT(DRs z7S0feVwWiPqoZN0zQHqHnj)ily{j_rT#(P*4`N!1L|Qzg^&8p*ek+dUbbiOWPhDwE zu0&+F)A%&4g3tD^{FnL>07ho$M4g2C`!gL$(f54qIX((-^;4XZPgVM4Qfg)~Vp)97 zh7*;+M4hhhKWFsE?Sf>9u#=5=G6MBI2NZ8i=;b?*fLfdep)!l3j~5DWkapin;RAx6 zAf`;!5#>uHM^iQkMVak|wg4tND1*bY@lHN)|3)3wC!nJkY^@StZ9&=q+IPc-5R1kJ zV-!WaZU~)E6fv9ncVHhr5n;-z{XVUe)PTo+O29P{s*n^5(`l^zM4&-+_&qfB6W3xw zPt2AkeWRS^$R||UWlf1pQ4_Z9=J@-us8@$*>}|H9^58JMr+YBeOhDTXTsfPhZo_8Q zTG>D&AF$H;XxqOHH-CkVD!m_mr`;by$9+%dF$8`PTCjznxx0J=!*Ow3IF_^PWT#-06Tpfsd9> zzYf#W!<}@vg1d(C8;v75CJ`+3j-$S zS_1Y2NXTOCb@u)HTBsQ`WjOEmtuC8%CnwV?2>mBP|M5Z^Z(cZrV0g!= z1aN-}zro6XU|oAbI_LGS*4a)*YAHZ5^GjtpixE)a^Mr!Z?j>ev%_wk;?Jexz{!;@= z&)nKxCcZ}I`5vaMuj~-k#0>cC4!M|Xd2?5jFf zf2(BvMjFUj0#P=Dh<%I0NK0cflZbs5w*TV3Yj<5UH~u}0GVk>|V=1qL`eRg{w!y*S z9-3MM;p2E;|1%I%txsR@Z-rcQc1H)|e_a*(8=4N=9XLv-vYtr{?tL7L(8>z|4RN|2 zhe&4W)}7CC=gR-!5Tv`q$@e{61dtiyo-w-raB&5R6^JP{5Jn@DXohxlkTZzzlf#q@ zH4vRXa0ZVMM}~vU5CqP*J~~}|*@r_HFX zTxemowsGw`0@&eE(XmdsivSWdJ~Tw{E?T0^&yTm%#8esxE_t0(`eb8g5A>M1R?+m+ z4nP67Ukn48-j7ZS%XmfO;2@*H9Dk2aJlX*(-dmJ{Z`FQ~q?7dd&UG$xbP5TH@DprP z{}}k^Vgy2MXSr!A4WwGRt&2+35dD2dt;cH}O&6B3?zO%VXRe34op?t#8aGgaSN71b zi9W|nfi3SUDlz5xc1s(QPRyp;?n79oa1*vk*MqQfj3)AI%kia+xaUb^pePe??3c0l z(o$Ut4ETU5rz>N5!Wg@EYuUp89stRM$2Utj1%<`(PAkT*{z&3%yVdvREm*qZf!?q7 zJX0;+$hKkc43zk@UXGG(mG%CIO2RW@4g)Py0g*m_imA~D)_iSsT3PC- zbgJRDsI447Hj5aK78N+uEY(z@qgYwn3+Q<=`Rmy0!^yVP2-N!K9SgBN|4nPhWz)jT zeAV`7yA#T?N`J9chKM{!K8b_-A`mnO9#wH%T;zXIcmBi4cu;*nHa_-&o7JE} zBTr{t-r;_8_`$Tf^Cl&j!&J!m5AdYlftF&t79oBdRkx|G%>+GJ&-xUP`HyCrkMh7? z{AAsV=sSl+2xf+^60?KidiY76WS$Z_a1M9tKeRTWDn4uOQ+NGYI|3AzhDt8pwaTIQ z^2PjBEFGM-R(}3o-Mo`90=t5L@CpBTWA$p(kQ{&COZYlSxpVz2q}d+!Hzo< z5GGZ6U;T&%8mj-JVL|)j$d_3CEF`M&hzf}YZX}BFeJAw{?)-i6uKGAT5^Qj2Bp<#@ z*NVAHfqgMg9W)}eqW>RBg%u7)PF_ZTP=u3 zvd~p5ynwDkcrT5ffL9L4|<;5Qo{vSlsJ}ghb5TSp9T@=q{qVZp@WV0!7 zESaOGv#BN}b^2TIJ;J*8ZLHg2g^Thf1)<6zBMpYIYkq5jhi3%fIah2$Vv%xE@*)J{V=|H~q&Y^u5vsO$> zN&AlX2U?@kGx-bcE0i znaN_f46vz%qTv94sHY*>cK8v?62|Z>1Wm;r)NgH%KYd6=RRi^ULweu|c4#T`0;%lM zi=nDz0C`G>S>+DAFDxoSwwCV_*aZMlLu{Spfv+5>#P4omtm2}CurlP{Lz>6BAJ^J5 z!6r--betg*iKGztE^#?G3zAY6H5LIBZvt2?s_4tBPbTDd#F@e?8%ob^C3PYH3s*K< zIq(v%w}NhPFCv4rLYMsrHAD3QP#|kq`tv^AvL&bwu4UzVWe>Sb+Jc3sUOhd%FbMQT zBK<(iR`B0L(S`ZML!#l0df~<(62(pLc+R$+()C{AoP12z9L2{+5rBtOB&AdI0zL)l zb7K`89Akc|l@QmrQ3l z1oc*qpQw~H(^P18zj7tQf1EczbA93pfR|?jD zdV5C)w5KE1<(*RWK1y!2RB4drU6`AivRPpDf$LHltbtYGhzEuI5C(VwY3Y zVj(n4F7!2&9-*dPd2P> zukOz{zM|Owx6??E_ZcexqB-`n z3TA)bKm4-iSi}5h`|bT@p{1m)1t*x(?c%&D=Dy`VxmZ(i?EZsb z49~k0mVun+^>7U1%{QkSxx$BYSbZf!w(2}q>bDAGrzYR^nokXTIJ9U}?pK#r@877_ zr-N#9a?AQQ;^2?m*WDJXYze8jIG?lb&Z`^aS8ghZ+zAv@`%+rXmaj~WP2{5rAXR1F z7!MVnhapaiH@%T6VDlOG)^&aMM^c;O#W{H-T1e}z)Y`$zdj!XJ_WWv>>-ZOyv)5AS ze3uuOX?@#@Z1Qmp{O?Y*Yd+zevP8*k&FbV&KW3ab`+x>-WxUcnr|jEVmMuE@tK;_W z#*d;ava;RY+bE^o0pxrsf}8}`{sRXoJO#Xe(IC4k7IVGt<0ge{vkB|Iu9oSZ0IgoA z$F&U^L2tr@OKYfBfetUK+s%<(akcIA1j@U&H^O&vV`7R{{I-m~Y+(4s7obi}R;$zb zH@bJy{-OA}w`3a@Tb0wR*O^F!lY861m(%dTxGBj3&A5%_Pu}JVf6oY zN@UjZqaq?A_)T~dXM2Ard~ze7fmyt+EPaVm=3)$D|-@s=mZ37e3+k{ocy)7_qvu={e9y1E}BWp0G!qvPIL6DNGdA13jKmOQlE43b_E56 zMN>w)*op>S*Mb`b>-fFzd*3^T-^m#m82RgW=RtJ=p(<8efs&E;yLZY&EyKEtcxR3Y zJ87#b+Q;v%X$KLgOWe7rH{eNfz1i-2b^~G^O;9U$FRAllWVI<-)cxZji6Ffj0HioX%XH&*R|w8}i4ui<<3 zyHNEsYJu5OFW#a6JK#tghf?IW=zh{!7fhMXu3XKwMIk%GHOchaRBx}<6v>A&!0OR1(k_L!9=V5i7^_67u z+x^$h%{R*coT~&p8dCXkl6cI7;Wz_6?Q{)$Q+?p`Jbmg_^+8fiDx%AuTMYw1oP{$C z$#(C*Z>epuJlr>J871@SQ|6fOt2tFwo=CYyKQ*m&kp%620Rq2!;5^t7p>&j=ES~kk z1(W*@{zbKYozF6bZg>tPT-67nM;{Rk-SH`&d{U7P ztPZ1`2Q^<@kecOd=G9z#6@+p-TBLp;GqwBJpv}(0KnDBwlJ&*1tmkHA=(d8-7Mj&D zp<46taIa*6;RKE#&z9}AyN{1;iR{$xwbtOhD1{{`r&;JK&dO8RE%{MGAC^5Z-j9}$ z{J`f?LABL!&;H!ypw7v!ts;54P3s)4^E>tXJ5ZwJtCYKEelle`kHy5Dp&_C+iqzF@ z;+)FI(mOWOtg#0&F%M!`eYXv}RV}}-tT+K*{%8RqgESUc;;ArTGD++DG{i>!jyn;y zeT^+MDC3eb3zfQI}VJ3gc-FfHd6Nkrqk5zVu->Rz^u(xVZ$@ zWcoOLFT*UZ4K+4-qt}GQQKxTKK^cDiKrl;*vvGql*Ikstxi*EoCPd+|1C1|t|Kuk& zUm5+@82f8g8uHZ4OAw2DnxXOs%5c(0vT4>5PI4`1N2x$32dvWX zy_?Ygr@OUk==!0m-F}I3!0{Yz+qwDoGaG{O0xUu-@$(tFn^FWx@=X)lhKq>YC_y=G zY`=(TAd?fZJfW)f)HCw-G^cq6GqveyEwa=eZ^Vp8eiK*ug7%NSwuWL7DI(h85q&#< z*!1CtZ%q*vLZ)~4UIlex7vRtfUhi`RpY3&bbot=xZ}Fn|xb=2pg3H?NzI}@4WPRPP z5gC@;nzbCfndte7`4#q%TvLvgawfMHvc*x9=~vxU6nBJ=C)NfEt}(l~Oc!KvIOp-X z%_DOvd7^ttioIvR{<#f7jP6qn6BvJtgyVGc$Vm9A&K)Yr<)|)1Pl&xgp(a@9RDa7V z%ixS$NSBCGp zbnUccNnZX6KAwn)vaU$6k-TzEn+tx}$vsf~LRUCATjx1t`dPQ_^*%cyVTEC7gY!-2 z)+A;-&}zi44sL5K_)&y>2)CR`8RdPkeK-+u`0r8c7$BY+HMQyL z30VWu>V2jHQ~O8xNI-YG(wwcVp5bC}HsPZCur@~c{QMOPk@?slH6M8*wSJYrr;Mk^ z6O*C41fq6Rsya=5<0I|MWPJVSSNwf_Y??dZdY(-QK$s8G3PQF>KpPoh>2$O&V5>3`tW;FVul-j-)O61 zwI0ZicJQDdSv^A)O6sv%t=Kg1`nX$Nh}eAm|K@*~!OyX#hH}xp!0(CS(AS@%wJql% z9}*ZLFREnc=Z9C$IwI#GAWLAZd-0U-r9GgjPRl8*HF*Gu>f;fUR9|t+lA%*D;cI!^ z<1lM=od?JYO(&bf$bKeAI~F>GH4TS)HcboNB|Bw$kCUCS@)`Zd5_aeplXPcYI_c{6 zx-PN^4I5iu)=k)&c!Mw6p;oPD@s{QbDU&89H#Nn#{AezYL)zpg43H0gGFz&sAq5j9 znAO34+14(;gagW(rnp+NUa9ba88$auym(P??$PnLZ{1O?N^A_KtKzHG?8&8O%dS$z zrIoQ;(bkBtNwhm}we_ayO|9bO(EQl^JQT<)JmgH8_-c0M8Z(EA;bI>vt|I;4ae{~) zo@h6>AWJF1;?iIA3Zig5mIY?()nud#~K1T%6o-nHK&G>^p8jLS)o@gIUo$8vxW!i&oyaGKzDeH0@DopX?TXZz zr6t!;Z6&bAR%Fxs9LYs@eeb}2mc}c?K{vRiy zr*y-q(rs_(I z>q@3~9H82qNY{8)Mv0P2#|sX|_ogojO^+>{p<3zK?C!_a(g)xMg7Wn;yMdsN3=>RQ zlBdu2Im0}Z<(*v^o2TQ_F{v&@R$?CStGOG^o)_U@m(d_C)XmVF*Pr*zf_CXxFrON9 znVxzg>5xtEDMp5sG#xiP;?k(9ph=yju@3LKGRece&Qs_sqkm)jsP}aV4s9g*5TZ6R z8d^He^b)pgCazV%_LjzAI*%*x870ZZSi_}hHs~lXhxfW zP6;&IogMQJnfa$P%SC*i`mkH)C#j>diTkxxm5^g?e(ZnD(Cfsldk`lk&HFque%0?B zVB>1}QTEO{gHa$c)GhB6IB?m~0o#79s! zJ=Mz9Wu};3^%WqrXz>Gt+kw+4Sg)QP$gKjlcyosmNM|ibt9PKKW$FuJ0=^4_1@p2p z!_9t488cGnVfH zrYF*q^_|Lyp2sw!7U)(8FIGP8`A0`tz#UD+wWVi~29^r!za(sM{A@XsNoc8bsQC)p zg{vsO-PC!m62OZZNW9uz(>(PJp`qhJnz{Lw&ejl3G{~TXMIS@MO3|g+y5idi$!AnA z1+v}^GXZ{ke(Y)zbtPxc#}hAi4Bsh6*EGy zQw!HWk+$7{@lBLAdfB<{p+jsiWd2>SE9(KbgA~pfUv8Pr^#959G>xJGKMS$Om0|}P zhWFK4CecNA4Kv@doi!awiVcD^)`o<-Qvq*L$>XfOZ}$eCJ=9t+gQiN0jbDJKd1Yr+ zl7jmPbM(XncjLuB3JvHC_^UH-ji}>uZ)LA72jf!)!^bBr z@~C5xQz;3Y-&DR21@kuiOz)qK+T|)Gr*&NqEqccemAMC`hE$~{txPNNaEOK~mKk(%V{i;u#%-4vVU4l*SS z3i>UTu3q%MNT421?axeATwGpVA8olQtM1?Iu44Sfa%auj+lt>K2T8nayq@*_L+G<- z(5D;MoWfB!@+Pq}caOz=$pPIMVPxsAGuswBG+=3DGjH9XTA2z#wRMRmyE3~%=?VQT zh%S7+(M~)0x$c|UHaCZOg-7|w(#byeq6OmETql&uXe2?&MZ3b2;@^=f(gv@mjTUK0 z%u&C9;_{5aqy>{{iOuaVIdB(<$E#n~H-r_7HHx)kF<*+?o4MFyW~o;EErf^yLM2N` zDj0#A3HZ))acfL6Rx`auGmR26QhfoTVbO|R=o+*}j5c@@W8ZoxDBq2VY*QZm>#t9D zXGy3FK!5(unPrb`VeoKYoK9ydDh5F=flwBnm<&>p2d>n2{-4jQ$;ublX| z=#BB0Wl3_Gk9^nx%W)Ryq6M+e=w|R*(Nq0kMSw$i5{`7XPOzUGUOxD*0%5}F$Z=cH zA`gEvA>yhq6BDH7iUcLY(`c@u_|MR@XA&^r!xsUA*`(M+&MC%R=G6r3-xS40+n9i} z8r04z@fJmp<1&al{3(H{5VaY9OksI+A%v39R3vNeW2z!5BObTNsK`&Ho{~brl zG*f?QRFHtF?B9`Fq2!HIIHwq9{`Q2DIx>Nq#PgrEzvuH!ICHWKHTxV=vvu+13emew6(Eq_`n)Y4w^A}#wR;m^B zrs_P?AXj-hjf-pzt;phiJ9v9f!9qpW*oeOaiyhEpEYPvx;_wT7W@W|VV2R$m`@G{X zAzuEJ>c82F#Uxk^u90dXRwq32_fd+*3h@>~UsGC*2md0S0qFB2p4ZXwbs)hwIY1qS x$29Wg-;p;e&Haaya;yG_LnQK`{_=!r#y)F;ia|jh#oRnn5Op0+URE@H^nY6dK6wBD literal 0 HcmV?d00001 diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css index 55445be8..7e85fe60 100644 --- a/docs/html/userhtml.css +++ b/docs/html/userhtml.css @@ -3,7 +3,6 @@ .pplb7t-x-x-172{font-size:172%;font-weight: bold;} .pplb7t-x-x-172{font-weight: bold;} .pplb7t-x-x-172{font-weight: bold;} -.pplb7t-x-x-172{font-weight: bold;} .pplri7t-{font-style: italic;} .pplri7t-{font-style: italic;} .pplri7t-x-x-120{font-size:120%;font-style: italic;} @@ -11,7 +10,6 @@ .pplb7t-{font-weight: bold;} .pplb7t-{font-weight: bold;} .pplb7t-{font-weight: bold;} -.pplb7t-{font-weight: bold;} .cmtt-10{font-family: monospace,monospace;} .cmtt-10{font-family: monospace,monospace;} .cmtt-10{font-family: monospace,monospace;} @@ -38,7 +36,6 @@ .pplb7t-x-x-120{font-size:120%;font-weight: bold;} .pplb7t-x-x-120{font-weight: bold;} .pplb7t-x-x-120{font-weight: bold;} -.pplb7t-x-x-120{font-weight: bold;} .cmtt-8{font-size:80%;font-family: monospace,monospace;} .cmtt-8{font-family: monospace,monospace;} .cmtt-8{font-family: monospace,monospace;} @@ -59,10 +56,6 @@ .zplmr7m-x-x-80{font-style: italic;} .zplmr7t-x-x-80{font-size:80%;} .pplrc7t-x-x-90{font-size:90%;} -.pplb7t-x-x-90{font-size:90%;font-weight: bold;} -.pplb7t-x-x-90{font-weight: bold;} -.pplb7t-x-x-90{font-weight: bold;} -.pplb7t-x-x-90{font-weight: bold;} .small-caps{font-variant: small-caps; } p{margin-top:0;margin-bottom:0} p.indent{text-indent:0;} @@ -200,11 +193,5 @@ pre.lstinputlisting{ font-family: monospace,monospace; white-space: pre-wrap; } #TBL-24-3{border-right:1px solid black;} #TBL-24-4{border-right:1px solid black;} #TBL-24-5{border-right:1px solid black;} -#TBL-25-1{border-left: 1px solid black;} -#TBL-25-1{border-right:1px solid black;} -#TBL-25-2{border-right:1px solid black;} -#TBL-25-3{border-right:1px solid black;} -#TBL-25-4{border-right:1px solid black;} -#TBL-25-5{border-right:1px solid black;} /* end css.sty */ diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index 7174fd18..becc711a 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities
                       10 Preconditioner routines
                       11 Iterative Methods +href="userhtmlse11.html#x17-14300011" id="QQ2-17-174">Iterative Methods
                       12 Extensions +href="userhtmlse12.html#x19-14600012" id="QQ2-19-177">Extensions
                       13 CUDA Environment Routines +href="userhtmlse13.html#x20-15500013" id="QQ2-20-192">CUDA Environment Routines
                       References +href="userhtmlli2.html#x21-170000" id="QQ2-21-221">References

                  diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html index 1a48b7aa..77486e09 100644 --- a/docs/html/userhtmlli1.html +++ b/docs/html/userhtmlli1.html @@ -299,61 +299,61 @@ href="userhtmlse10.html#x15-13600010.1" id="QQ2-15-166">init — Initialize
                    10.2 Set — set preconditioner parameters
                    10.3 build — Builds a preconditioner +href="userhtmlse10.html#x15-13800010.3" id="QQ2-15-169">build — Builds a preconditioner
                    10.4 apply — Preconditioner application routine +href="userhtmlse10.html#x15-13900010.4" id="QQ2-15-170">apply — Preconditioner application routine
                    10.5 descr — Prints a description of current preconditioner +href="userhtmlse10.html#x15-14000010.5" id="QQ2-15-171">descr — Prints a description of current preconditioner
                    10.6 clone — clone current preconditioner +href="userhtmlse10.html#x15-14100010.6" id="QQ2-15-172">clone — clone current preconditioner
                    10.7 free — Free a preconditioner +href="userhtmlse10.html#x15-14200010.7" id="QQ2-15-173">free — Free a preconditioner
                   11 Iterative Methods
                    11.1 psb_krylov — Krylov Methods Driver Routine +href="userhtmlse11.html#x17-14400011.1" id="QQ2-17-175">psb_krylov — Krylov Methods Driver Routine
                    11.2 psb_richardson — Richardson Iteration Driver Routine +href="userhtmlse11.html#x17-14500011.2" id="QQ2-17-176">psb_richardson — Richardson Iteration Driver Routine
                   12 Extensions
                    12.1 Using the extensions +href="userhtmlse12.html#x19-14700012.1" id="QQ2-19-178">Using the extensions
                    12.2 Extensions’ Data Structures +href="userhtmlse12.html#x19-14800012.2" id="QQ2-19-179">Extensions’ Data Structures
                    12.3 CPU-class extensions +href="userhtmlse12.html#x19-14900012.3" id="QQ2-19-182">CPU-class extensions
                    12.4 CUDA-class extensions +href="userhtmlse12.html#x19-15400012.4" id="QQ2-19-191">CUDA-class extensions
                   13 CUDA Environment Routines
                    psb_cuda_init +href="userhtmlse13.html#Q1-20-194">psb_cuda_init
                    psb_cuda_exit +href="userhtmlse13.html#Q1-20-196">psb_cuda_exit
                    psb_cuda_DeviceSync +href="userhtmlse13.html#Q1-20-198">psb_cuda_DeviceSync
                    psb_cuda_getDeviceCount +href="userhtmlse13.html#Q1-20-200">psb_cuda_getDeviceCount
                    psb_cuda_getDevice +href="userhtmlse13.html#Q1-20-202">psb_cuda_getDevice
                    psb_cuda_setDevice +href="userhtmlse13.html#Q1-20-204">psb_cuda_setDevice
                    psb_cuda_DeviceHasUVA +href="userhtmlse13.html#Q1-20-206">psb_cuda_DeviceHasUVA
                    psb_cuda_WarpSize +href="userhtmlse13.html#Q1-20-208">psb_cuda_WarpSize
                    psb_cuda_MultiProcessors +href="userhtmlse13.html#Q1-20-210">psb_cuda_MultiProcessors
                    psb_cuda_MaxThreadsPerMP +href="userhtmlse13.html#Q1-20-212">psb_cuda_MaxThreadsPerMP
                    psb_cuda_MaxRegisterPerBlock +href="userhtmlse13.html#Q1-20-214">psb_cuda_MaxRegisterPerBlock
                    psb_cuda_MemoryClockRate +href="userhtmlse13.html#Q1-20-216">psb_cuda_MemoryClockRate
                    psb_cuda_MemoryBusWidth +href="userhtmlse13.html#Q1-20-218">psb_cuda_MemoryBusWidth
                    psb_cuda_MemoryPeakBandwidth +href="userhtmlse13.html#Q1-20-220">psb_cuda_MemoryPeakBandwidth diff --git a/docs/html/userhtmlli2.html b/docs/html/userhtmlli2.html index 08bf60fc..953072ab 100644 --- a/docs/html/userhtmlli2.html +++ b/docs/html/userhtmlli2.html @@ -31,44 +31,52 @@ class="pplri7t-">for Forest Fires, in J. Dongarra, K.&#x

                  [2]   D. Bertaccini and S. Filippone, Sparse approximate + inverse preconditioners on high performance GPU platforms, Comput. Math. + Appl., 71, (2016), no. 3, 693–711. +

                  +

                  + [3]   A. Buttari, D. di Serafino, P. D’Ambra, S. Filippone, 2LEV-D2P4: a package of high-performance preconditioners, Applicable Algebra in Engineering, Communications and Computing, Volume 18, Number 3, May, 2007, pp. 223-239

                  - [3]      P. D’Ambra, S. Filippone, D. Di Serafino On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners Applied Numerical Mathematics, Elsevier Science, Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196.

                  - [4]      Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., An Extended Set of Fortran Basic Linear Algebra Subprograms, ACM Trans. Math. Softw. vol. 14, 1–17, 1988.

                  - [5]      Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., A Set of level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw. vol. 16, 1–17, 1990. + + +

                  - [6]      J. J. Dongarra and R. C. Whaley, A User’s Guide to the BLACS v. 1.1, Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of Tennessee, March 1995 (updated May 1997). - - -

                  - [7]      I. Duff, M. Marrone, G. Radicati and C. Vittoli, Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: a User Level I Transactions on Mathematical Software, 23(3), pp. 379–401, 1997.

                  - [8]      I. Duff, M. Heroux and R. Pozo, An Overview of the Sparse Basic Linear Algebra Subprograms: the New Standard from the BLAS Technical F Transactions on Mathematical Software, 28(2), pp. 239–267, 2002.

                  - [9]      S. Filippone and M. Colajanni, PSBLAS: A Library for Parallel Linear Algebra Computation on Sparse Matrices, Mathematical Software, 26(4), pp. 527–550, 2000.

                  - [10]      S. Filippone and A. Buttari, Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, ACM Transactions o Software, 38(4), 2012.

                  - [11]      S. Filippone, P. D’Ambra, M. Colajanni, Using a Parallel Library of Clusters, in G. Joubert, A. Murli, College Press, 2002.

                  - [12]       Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.

                  - [13]      Karypis, G. and Kumar, V., METIS: Unstructured Graph Partitioning and Sparse Matrix Ordering System. Minneapolis, MN of Minnesota, Department of Computer Science, 1995. Internet Address: http://www.cs.umn.edu/~karypis. + + +

                  - [14]      Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., Basic Linear Algebra Subprograms for Fortran usage, ACM Trans. Math. Softw. vol. 5, 38–329, 1979. - - -

                  - [15]      Machiels, L. and Deville, M. Fortran 90: An entry to object-oriented programming for the solution of partial differential equ Math. Softw. vol. 23, 32–49.

                  - [16]      Metcalf, M., Reid, J. and Cohen, M. Fortran 95/2003 explained. Oxford University Press, 2004.

                  - [17]      Metcalf, M., Reid, J. and Cohen, M. Modern Fortran explained. Oxford University Press, 2011.

                  - [18]      Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The Object-Oriented Way. Cambridge University Press (2011)

                  - [19]      M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, MIT Press, 1998.

                  - [20]      D. Barbieri, V. Cardellini, S. Filippone and D. Rouson Design Patterns for Scientific Computations @@ -179,7 +187,7 @@ class="pplri7t-">on Sparse Matrices, HPSS 2011, Algorithms and Pro 2011

                  - [21]       Cardellini, V., Filippone, S., and Rouson, D. 2014, Design patterns for sparse-matrix computations on hybrid CPU/GPU platforms, Scientific @@ -187,11 +195,21 @@ class="pplri7t-">Scientific class="pplri7t-">Programming 22, 1, 1–19.

                  + + +

                  - [22]      D. Barbieri, V. Cardellini, A. Fanfarillo, S. Filippone, Three storage formats for sparse matrices on GPGPUs, Tech. Rep. DICII RR-15.6, Università di Roma Tor Vergata (February 2015). +

                  +

                  + [24]   S. Filippone, V. Cardellini, D. Barbieri, and A. Fanfarillo. Sparse + matrix-vector multiplication on GPGPUs. ACM Trans. Math. Softw., + 43(4):30:1–30:49, 2017.

                  diff --git a/docs/html/userhtmlse1.html b/docs/html/userhtmlse1.html index 3c051ada..d442f68e 100644 --- a/docs/html/userhtmlse1.html +++ b/docs/html/userhtmlse1.html @@ -28,35 +28,35 @@ routines for dense matrix operations. The current implementation of PSBLAS addresses a distributed memory execution model operating with message passing.

                  The PSBLAS library version 3 is implemented in the Fortran 2003 [16] +href="userhtmlli2.html#Xmetcalf">17] programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines.

                  The use of Fortran 2003 offers a number of advantages over Fortran 95, mostly in the handling of requirements for evolution and adaptation of the library to new computing architectures and integration of new algorithms. For a detailed discussion of our design see [10]; other works discussing advanced programming in +href="userhtmlli2.html#XSparse03">11]; other works discussing advanced programming in Fortran 2003 include [2018]; sufficient support for Fortran 2003 is now available +href="userhtmlli2.html#XDesPat:11">21, 19]; sufficient support for Fortran 2003 is now available from many compilers, including the GNU Fortran compiler from the Free Software Foundation (as of version 4.8).

                  Previous approaches have been based on mixing Fortran 95, with its support for object-based design, with other languages; these have been advocated by a number of authors, e.g. [15]. Moreover, the Fortran 95 facilities for dynamic memory +href="userhtmlli2.html#Xmachiels">16]. Moreover, the Fortran 95 facilities for dynamic memory management and interface overloading greatly enhance the usability of the PSBLAS subroutines. In this way, the library can take care of runtime memory requirements that are quite difficult or even impossible to predict at implementation or compilation time.

                  The presentation of the PSBLAS library follows the general structure of the proposal for serial Sparse BLAS [78], which in its turn is based on the proposal for +href="userhtmlli2.html#Xsblas97">8, 9], which in its turn is based on the proposal for BLAS on dense matrices [1445]. +href="userhtmlli2.html#XBLAS1">15, 56].

                  The applicability of sparse iterative solvers to many different areas causes some terminology problems because the same concept may be denoted through different names depending on the application area. The PSBLAS diff --git a/docs/html/userhtmlse10.html b/docs/html/userhtmlse10.html index 0ba3cd87..6968240e 100644 --- a/docs/html/userhtmlse10.html +++ b/docs/html/userhtmlse10.html @@ -101,7 +101,7 @@ class="pplb7t-">inout.
                  Specified as: a preconditioner data structure psb_prec_Tprec_type. @@ -144,14 +144,12 @@ class="zplmr7m-">A; BJAC

                  -

                  Precondition by a factorization of the block-diagonal of matrix A, where - block boundaries are determined by the data allocation boundaries - for each process; requires no communication. Only the incomplete - factorization ILU(0) is currently implemented.

                  +

                  Precondition by a factorization or an approximante inverse of the + block-diagonal of matrix A, where block boundaries are determined + by the data allocation boundaries for each process; requires no + communication. See also Table-21. @@ -159,13 +157,13 @@ class="zplmr7t-">) is currently implemented. id="x15-13700010.2">Set — set preconditioner parameters

                  -

                  -

                  call p%set(what,val,info)

                  -

                  This method sets the parameters defining the subdomain solver when the +

                  +

                  call p%set(what,val,info) +

                  This method sets the parameters defining the subdomain solver when the preconditioner type is BJAC. More precisely, the parameter identified by what is assigned the value contained in val. -

                  Arguments

                  Arguments id="TBL-23-1"> +class="td11">

                  what

                  +class="td11">

                  +class="td11">

                  info

                  what

                  character(len=*).

                  character(len=*).

                  The parameter to be set. It can be specified through its name; the string is -case-insensitive. See Tables ??-22.

                  The parameter to be set. It can be specified through its name; the string is +case-insensitive. See Table 21.

                  val

                  integer

                  val

                  integer or character(len=*) or real(psb_spk_) or real(psb_dpk_), intent(in).

                  The value of the parameter to be set. The list of allowed values and the -corresponding data types is given in Tables ??-22. When the value is of type +class="td11">

                  The value of the parameter to be set. The list of allowed values and the +corresponding data types is given in Table 21. When the value is of type character(len=*), it is also treated as case insensitive.

                  info

                  integer, intent(out).

                  integer, intent(out).

                  Error code. If no error, 0 is returned. See Section ?? for details.

                  -

                  A number of subdomain solvers can be chosen with this method; a list of the +class="td11">

                  Error code. If no error, 0 is returned. See Section 8 for details. +

                  A number of subdomain solvers can be chosen with this method; a list of the parameters that can be set, along with their allowed and default values, is given in -Tables ??-22.
                  21.

                  -


                  @@ -225,7 +220,7 @@ class="newline" />
                  -

                  +

                  s +class="pplr7t-x-x-90">.





                  what

                  what

                  da type

                  val

                  e

                  val

                  dfault

                  t

                  cments






                  SUB_SOLVE

                  character(len=*)

                  SUB_SOLVE

                  character(len=*)

                  ILU

                  ILUT

                  INVT

                  INVK -

                  AINV

                  AINV

                  The local solver to be used with the smoother +class="pplr7t-x-x-90">The local solver to be used with the smoother or one-level preconditioner ILU(p, t), Approximate Inverses +class="pplr7t-x-x-90">Approximate Inverses INVK(p, q), INVT(), INVT(p1, 1, t2) and AINV() and AINV(t); note that approximate inverses are specifically +class="pplr7t-x-x-90">note that approximate inverses are specifically suited for GPUs since they do not employ +class="pplr7t-x-x-90">suited for GPUs since they do not employ triangular system solve kernels, see [?[2].











                  -
                  Table 21: Parameters defining the solver or the details of the one-level -preconditioner.
                  - - - -

                  -
                  -
                  - - - -


                  - - - -
                  -

                  -

                  + + + + +





                  what

                  data type

                  val

                  default

                  comments






                  SUB_FILLIN

                  integer

                  SUB_FILLIN

                  integer

                  Any integer -

                  number 0

                  0

                  0

                  0

                  Fill-in level p of the incomplete LU @@ -410,19 +338,19 @@ class="pplr7t-x-x-90">of the incomplete LU class="pplr7t-x-x-90">factorizations.






                  SUB_ILUTHRS

                  real(kind_parameter)

                  SUB_ILUTHRS

                  real(kind_parameter)

                  Any real number 0

                  0

                  0

                  0

                  Drop tolerance t in the ILU(, t) factorization.











                  ILU_ALG

                  character(len=*)

                  MILU

                  NONE

                  ILU algorithmic variant






                  ILUT_SCALE

                  character(len=*)

                  MAXVAL +

                  DIAG +

                  ARSWUM +

                  ARCSUM +

                  ACLSUM +

                  NONE

                  NONE

                  ILU scaling strategy






                  INV_FILLIN

                  integer

                  Any integer +

                  number 0

                  0

                  Second fill-in level q of the INVK(p, q) +approximate inverse.






                  INV_ILUTHRS

                  real(kind_parameter)

                  Any real +number 0

                  0

                  Second drop tolerance s in the INVT(t, s) +approximate inverse.






                  AINV_ALG

                  character(len=*)

                  LLK +

                  SYM-LLK +

                  STAB-LLK +

                  MLK,LMX

                  LLK

                  AINV algorithmic strategy.







                  Table 22: Parameters defining the smoother or the details of the one-level -preconditioner (continued).
                  +>Table 21: Parameters defining the solver of the BJAC preconditioner.
                  @@ -455,26 +464,26 @@ preconditioner (continued).
                   call prec%build(a, desc_a, info[,amold,vmold,imold])
                   
                  -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Synchronous. +

                  Synchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the system sparse matrix. Scope:

                  the system sparse matrix. Scope: local
                  Type: required
                  psb_Tspmat_type.

                  -

                  +

                  prec

                  -

                  the preconditioner.

                  the preconditioner.
                  Scope: local
                  Type: Specified as: an already initialized precondtioner psb_prec_Tprec_type

                  -

                  +

                  desc_a

                  -

                  the problem communication descriptor. Scope:

                  the problem communication descriptor. Scope: local
                  Type: required
                  psb_desc_type.

                  -

                  +

                  amold

                  -

                  The desired dynamic type for the internal matrix storage.

                  The desired dynamic type for the internal matrix storage.
                  Scope: local.
                  Type: _base_sparse_mat.

                  -

                  +

                  vmold

                  -

                  The desired dynamic type for the internal vector storage.

                  The desired dynamic type for the internal vector storage.
                  Scope: local.
                  Type: _base_vect_type.

                  -

                  +

                  imold

                  -

                  The desired dynamic type for the internal integer vector storage.

                  The desired dynamic type for the internal integer vector storage.
                  Scope: local.
                  Type: _T_base_vect_type.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  prec

                  -

                  the preconditioner.

                  the preconditioner.
                  Scope: local
                  Type: inout.
                  Specified as: a precondtioner data structure psb_prec_Tprec_type

                  -

                  +

                  info

                  -

                  Error code.

                  Error code.
                  Scope: local
                  Type: An integer value; 0 means no error has been detected.

                  The

                  The amold, vmold and imold arguments may be employed to interface with special @@ -640,26 +649,26 @@ devices, such as GPUs and other accelerators. call prec%apply(x,y,desc_a,info,trans,work) call prec%apply(x,desc_a,info,trans) -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Synchronous. +

                  Synchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  prec

                  -

                  the preconditioner. Scope:

                  the preconditioner. Scope: local
                  Type: required
                  in.
                  Specified as: a preconditioner data structure psb_prec_Tprec_type.

                  -

                  +

                  x

                  -

                  the source vector. Scope:

                  the source vector. Scope: local
                  Type: required
                  _T_vect_type.

                  -

                  +

                  desc_a

                  -

                  the problem communication descriptor. Scope:

                  the problem communication descriptor. Scope: local
                  Type: required
                  psb_desc_type.

                  -

                  +

                  trans

                  -

                  Scope:

                  Scope:
                  Type: optional
                  Intent: Specified as: a character.

                  -

                  +

                  work

                  -

                  an optional work space Scope:

                  an optional work space Scope: local
                  Type: optional
                  Intent: inout.
                  Specified as: a double precision array.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  y

                  -

                  the destination vector. Scope:

                  the destination vector. Scope: local
                  Type: required
                  _T_vect_type.

                  -

                  +

                  info

                  -

                  Error code.

                  Error code.
                  Scope: local
                  Type: An integer value; 0 means no error has been detected.

                  -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  prec

                  -

                  the preconditioner. Scope:

                  the preconditioner. Scope: local
                  Type: required
                  in.
                  Specified as: a preconditioner data structure psb_prec_Tprec_type.

                  -

                  +

                  iout

                  -

                  output unit. Scope:

                  output unit. Scope: local
                  Type: optional
                  Intent: in.
                  Specified as: an integer number. Default: default output unit.

                  -

                  +

                  root

                  -

                  Process from which to print Scope:

                  Process from which to print Scope: local
                  Type: optional
                  - 1, in which case class="zplmr7y-">-1, in which case all processes will print. Default: 0.

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  info

                  -

                  Error code.

                  Error code.
                  Scope: local
                  Type: An integer value; 0 means no error has been detected.

                  call  prec%clone(precout,info) -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  prec

                  -

                  the preconditioner.

                  the preconditioner.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  precout

                  -

                  A copy of the input object. +

                  A copy of the input object.

                  -

                  +

                  info

                  -

                  Return code.

                  +

                  Return code. @@ -924,26 +933,26 @@ class="description">

                   call prec%free(info)
                   
                  -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  prec

                  -

                  the preconditioner.

                  the preconditioner.
                  Scope: local.
                  Type: inout.
                  Specified as: a preconditioner data structure psb_prec_Tprec_type.

                  -

                  +

                  On Exit

                  -

                  +

                  -

                  +

                  prec

                  -

                  Scope:

                  Scope: local
                  Type: required
                  inout.
                  Specified as: a preconditioner data structure psb_prec_Tprec_type.

                  -

                  +

                  info

                  -

                  Scope:

                  Scope: global
                  Type: required
                  Intent: out.
                  Error code: if no error, 0 is returned.

                  -

                  Notes Releases all internal storage. diff --git a/docs/html/userhtmlse11.html b/docs/html/userhtmlse11.html index 460347a4..bd2de1e4 100644 --- a/docs/html/userhtmlse11.html +++ b/docs/html/userhtmlse11.html @@ -82,7 +82,7 @@ iteration. -

                  call psb_krylovin.
                  Specified as: a structured data of type psb_prec_Tprec_type.

                  @@ -524,7 +524,7 @@ class="zplmr7m-x-x-76">i the corresponding residual at the i-th iteration. -

                  call psb_richardsonin.
                  Specified as: a structured data of type psb_prec_Tprec_type.

                  diff --git a/docs/html/userhtmlse12.html b/docs/html/userhtmlse12.html index d5ab2548..70b3b138 100644 --- a/docs/html/userhtmlse12.html +++ b/docs/html/userhtmlse12.html @@ -42,11 +42,11 @@ class="cmtt-10">http://sourceforge.net/projects/librsb/, for comput multicore parallel machines.

                  The infrastructure laid out in the base library to allow for these extensions is detailed in the references [202110]; the CUDA-specific data formats are described +href="userhtmlli2.html#XDesPat:11">21, 2211]; the CUDA-specific data formats are described in [22]. +href="userhtmlli2.html#XOurTechRep">23].

                  12.1 Using the extensions

                  @@ -149,120 +149,120 @@ the base classes in PSBLAS, through the Fortran 2003 mechanism of type extension [17]. +href="userhtmlli2.html#XMRC:11">18].

                  The data classes are divided between the general purpose CPU extensions, the GPU interfaces and the RSB interfaces. In the description we will make use of the notation introduced in Table 23. +href="#x19-148001r22">22.



                  Table 23: Notation for parameters describing a sparse matrix
                  +>Table 22: Notation for parameters describing a sparse matrix

                  -



                  Name Name Description


                  M M Number of rows in matrix
                  N N Number of columns in matrix
                  NZ NZ Number of nonzeros in matrix
                  AVGNZR AVGNZR Average number of nonzeros per row
                  MAXNZRMAXNZRMaximum number of nonzeros per row
                  NDIAG NDIAG Numero of nonzero diagonals
                  AS AS Coefficients array
                  IA IA Row indices array
                  JA JA Column indices array
                  IRP IRP Row start pointers array
                  JCP JCP Column start pointers array
                  NZR NZR Number of nonzeros per row array
                  OFFSET OFFSET Offset for diagonals


                  @@ -343,7 +343,7 @@ href="#x19-148002r5">5
                  -
                    up] 

                  psb_cuda_init — Initializes PSBLAS-CUDA environment

                  + id="Q1-20-194">

                  @@ -70,7 +70,7 @@ class="pplb7t-x-x-120">Notes

                  psb_cuda_exit — Exit from PSBLAS-CUDA environment

                  + id="Q1-20-196">

                  @@ -108,7 +108,7 @@ class="newline" />Specified as: an integer variable.

                  psb_cuda_DeviceSync — Synchronize CUDA device

                  + id="Q1-20-198"> @@ -125,7 +125,7 @@ CUDA-side code, have completed.

                  psb_cuda_getDeviceCount

                  + id="Q1-20-200">

                  @@ -138,7 +138,7 @@ ngpus =  psb_cuda_getDeviceCount()

                  psb_cuda_getDevice

                  + id="Q1-20-202">

                  @@ -154,7 +154,7 @@ ngpus =  psb_cuda_getDevice()

                  psb_cuda_setDevice

                  + id="Q1-20-204">

                  @@ -167,7 +167,7 @@ info = psb_cuda_setDevice(dev)

                  psb_cuda_DeviceHasUVA

                  + id="Q1-20-206">

                  @@ -180,7 +180,7 @@ hasUva = psb_cuda_DeviceHasUVA()

                  psb_cuda_WarpSize

                  + id="Q1-20-208">

                  @@ -196,7 +196,7 @@ nw = psb_cuda_WarpSize()

                  psb_cuda_MultiProcessors

                  + id="Q1-20-210">

                  @@ -209,7 +209,7 @@ nmp = psb_cuda_MultiProcessors()

                  psb_cuda_MaxThreadsPerMP

                  + id="Q1-20-212">

                  @@ -222,7 +222,7 @@ nt = psb_cuda_MaxThreadsPerMP()

                  psb_cuda_MaxRegistersPerBlock

                  + id="Q1-20-214">

                  @@ -238,7 +238,7 @@ nr = psb_cuda_MaxRegistersPerBlock()

                  psb_cuda_MemoryClockRate

                  + id="Q1-20-216">

                  @@ -251,7 +251,7 @@ cl = psb_cuda_MemoryClockRate()

                  psb_cuda_MemoryBusWidth

                  + id="Q1-20-218">

                  @@ -264,7 +264,7 @@ nb = psb_cuda_MemoryBusWidth()

                  psb_cuda_MemoryPeakBandwidth

                  + id="Q1-20-220">

                  @@ -282,6 +282,10 @@ bw = psb_cuda_MemoryPeakBandwidth() +

                  + + + diff --git a/docs/html/userhtmlse2.html b/docs/html/userhtmlse2.html index f9fb994e..7ef19577 100644 --- a/docs/html/userhtmlse2.html +++ b/docs/html/userhtmlse2.html @@ -35,7 +35,7 @@ process are executed through calls to the serial sparse BLAS subroutines. In a similar way, the inter-process message exchanges are encapsulated in an applicaiton layer that has been strongly inspired by the Basic Linear Algebra Communication Subroutines (BLACS) library [6]. Usually there is no need to deal +href="userhtmlli2.html#XBLACS">7]. Usually there is no need to deal directly with MPI; however, in some cases, MPI routines are used directly to improve efficiency. For further details on our communication layer see Sec. BLOCK, as well as completely arbitrary assignments of equation indices to processes. In particular it is consistent with the usage of graph partitioning tools commonly available in the literature, e.g. METIS [13]. Dense vectors conform to sparse matrices, +href="userhtmlli2.html#XMETIS">14]. Dense vectors conform to sparse matrices, that is, the entries of a vector follow the same distribution of the matrix rows.

                  We assume that the sparse matrix is built in parallel, where each process generates @@ -164,8 +164,8 @@ class="description">

                  Overlap points do not usually exist in the basic data distributions; however they are a feature of Domain Decomposition Schwarz preconditioners which are the subject of related research work [32]. +href="userhtmlli2.html#X2007c">4, 3].

                  We denote the sets of internal, boundary and halo points for a given subdomain by _Tspmat_type class contains all information about the local portion of the sparse matrix and its storage mode. Its design is based on the STATE design pattern [12] as detailed in [10]; the type declaration is shown in figure 13] as detailed in [11]; the type declaration is shown in figure 2 where T is a placeholder for the data type and precision variants

                  diff --git a/docs/html/userhtmlse6.html b/docs/html/userhtmlse6.html index 382f28d3..9369ac6f 100644 --- a/docs/html/userhtmlse6.html +++ b/docs/html/userhtmlse6.html @@ -3843,7 +3843,7 @@ class="pplb7t-">in.
                  Specified as: a preconditioner data structure psb_prec_Tprec_type. diff --git a/docs/html/zplmr7y-42.png b/docs/html/zplmr7y-42.png new file mode 100644 index 0000000000000000000000000000000000000000..1879254dc632fa7a83a3d1745c711cea3bac8800 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa&H|6fVxZU&5N4dJ%_j{M{O;-E z7@{FsI*GCHumO*2yo89eB8#(PiU`-j!vP#Xq}}SM(KfBI{QN{4)xAH@i68%8|I%A* zt!WW6`vb0;>AQssnCCeNzux0y(dH4b$nlR<2AkLe^&{IAO&Cfxwy#&1YgF)nE&8Ku zLI~scrAdk=n{Vt9&+>lovH!%cXL3t~78SI5r(C$Dnv*Z{rnPKcI`g@C-K859vnW%3UUc@oe$`6ZJ8x}nxxTMG?woe+y}sf?uVri| Soh-m0VDNPHb6Mw<&;$U#-F<8T literal 0 HcmV?d00001 diff --git a/docs/html/zplmr7y-48.png b/docs/html/zplmr7y-48.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d208c1a4abd6c872a4fbf921938d72f0e15532 GIT binary patch literal 378 zcmV-=0fqjFP)m8Vx?lHXl&;f`9a8Fbw3gp2JT`g&zDp@T1FV*^E_38WrHslD?e)6~;FO}l za?qD3V}a|fTr7`$+AS2LslzP|C-pr=Z#2nseTeoNN}5ccf5rmW1CwY1YmyEU#c@WAp2+YYwU|vVNi! z@~hw1Zkei*aj;~EX`ux;by035kKpNV54{az2)8ymYpuzt2*82c;rG} zGvl)%w(WoYu4u7KO!E@cV|sn?%jW|>Urw93e*e$Y8DhT lk^g?PY> stream 843 0 844 153 845 306 846 459 847 606 848 758 849 911 850 1058 851 1211 852 1364 853 1517 854 1670 855 1817 856 1965 857 2113 858 2261 859 2408 860 2557 861 2706 862 2855 863 3004 864 3153 865 3302 866 3451 867 3600 868 3749 872 3897 869 3954 887 4034 876 4240 -877 4390 878 4541 879 4693 880 4847 881 4998 882 5148 883 5298 884 5446 885 5594 7 5742 -886 5796 906 5889 909 6039 910 6280 911 6322 912 6708 900 7008 901 7154 902 7301 11 7448 -908 7503 905 7560 918 7681 904 7831 915 7979 916 8127 920 8275 15 8331 924 8386 925 8443 -917 8500 931 8635 935 8777 936 8891 937 8933 927 9002 928 9149 933 9297 934 9354 19 9411 -930 9467 943 9616 940 9758 941 9905 945 10051 942 10107 948 10201 950 10315 23 10372 951 10428 -952 10485 953 10542 954 10599 955 10656 956 10713 957 10770 958 10827 947 10884 961 11005 946 11139 -963 11287 964 11343 965 11399 966 11455 967 11511 968 11567 969 11623 970 11679 971 11735 972 11791 +877 4390 878 4541 879 4692 880 4846 881 4997 882 5147 883 5297 884 5445 885 5593 7 5741 +886 5795 906 5888 909 6038 910 6279 911 6321 912 6707 900 7007 901 7153 902 7300 11 7447 +908 7502 905 7559 918 7680 904 7830 915 7978 916 8126 920 8274 15 8330 924 8385 925 8442 +917 8499 931 8634 935 8776 936 8890 937 8932 927 9001 928 9149 933 9296 934 9353 19 9410 +930 9466 943 9615 940 9757 941 9904 945 10050 942 10106 948 10200 950 10314 23 10371 951 10427 +952 10484 953 10541 954 10598 955 10655 956 10712 957 10769 958 10826 947 10883 961 11004 946 11138 +963 11286 964 11342 965 11398 966 11454 967 11510 968 11566 969 11622 970 11678 971 11734 972 11790 % 843 0 obj << /Type /Annot @@ -5316,7 +5316,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [409.709 585.966 421.664 595.071] +/Rect [409.709 586.065 421.664 595.071] /A << /S /GoTo /D (cite.metcalf) >> >> % 877 0 obj @@ -5324,7 +5324,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [275.556 514.126 287.511 523.231] +/Rect [275.556 514.225 287.511 523.231] /A << /S /GoTo /D (cite.Sparse03) >> >> % 878 0 obj @@ -5332,7 +5332,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [264.473 502.171 276.428 511.127] +/Rect [264.473 502.27 276.428 511.276] /A << /S /GoTo /D (cite.DesPat:11) >> >> % 879 0 obj @@ -5356,7 +5356,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [241.109 370.546 248.083 379.402] +/Rect [241.109 370.446 248.083 379.402] /A << /S /GoTo /D (cite.sblas97) >> >> % 882 0 obj @@ -5372,7 +5372,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [226.689 358.591 238.644 367.597] +/Rect [226.689 358.491 238.644 367.597] /A << /S /GoTo /D (cite.BLAS1) >> >> % 884 0 obj @@ -5380,7 +5380,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [241.633 358.591 248.606 367.597] +/Rect [241.633 358.491 248.606 367.447] /A << /S /GoTo /D (cite.BLAS2) >> >> % 885 0 obj @@ -5463,7 +5463,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [446.157 464.02 453.131 472.977] +/Rect [446.157 464.12 453.131 472.977] /A << /S /GoTo /D (cite.BLACS) >> >> % 902 0 obj @@ -5502,7 +5502,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [275.033 609.332 286.988 618.438] +/Rect [275.033 609.432 286.988 618.438] /A << /S /GoTo /D (cite.METIS) >> >> % 915 0 obj @@ -5573,7 +5573,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [294.972 638.21 301.946 647.166] +/Rect [294.972 638.309 301.946 647.315] /A << /S /GoTo /D (cite.2007c) >> >> % 928 0 obj @@ -5581,7 +5581,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [304.935 638.309 311.909 647.166] +/Rect [304.935 638.21 311.909 647.166] /A << /S /GoTo /D (cite.2007d) >> >> % 933 0 obj @@ -7065,11 +7065,11 @@ Q BT /F131 9.9626 Tf 224.511 265.359 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 247.932 265.359 Tm [(class)-246(contains)-246(all)-246(information)-246(about)-246(the)-246(local)-246(portion)-246(of)]TJ 0.98 0 0 1 150.705 253.404 Tm [(the)-252(sparse)-253(matrix)-252(and)-252(its)-252(storage)-253(mode.)-315(Its)-252(design)-253(is)-252(based)-252(on)-253(the)-252(ST)76(A)75(TE)-252(design)]TJ 0.98 0 0 1 150.406 241.449 Tm [(pattern)-251([)]TJ 1 0 0 rg 1 0 0 RG - 1 0 0 1 187.44 241.449 Tm [(12)]TJ + 1 0 0 1 187.44 241.449 Tm [(13)]TJ 0 g 0 G 0.98 0 0 1 197.402 241.449 Tm [(])-251(as)-251(detailed)-252(in)-251([)]TJ 1 0 0 rg 1 0 0 RG - 1 0 0 1 266.289 241.449 Tm [(10)]TJ + 1 0 0 1 266.289 241.449 Tm [(11)]TJ 0 g 0 G 0.98 0 0 1 276.252 241.449 Tm [(];)-252(the)-252(type)-251(declaration)-251(is)-251(shown)-251(in)-251(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG @@ -7879,7 +7879,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [186.443 240.393 198.399 249.399] +/Rect [186.443 240.293 198.399 249.399] /A << /S /GoTo /D (cite.DesignPatterns) >> >> % 1048 0 obj @@ -7887,7 +7887,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [265.293 240.293 277.248 249.399] +/Rect [265.293 240.393 277.248 249.399] /A << /S /GoTo /D (cite.Sparse03) >> >> % 1049 0 obj @@ -21158,7 +21158,7 @@ endstream endobj 1715 0 obj << -/Length 4037 +/Length 4038 >> stream 0 g 0 G @@ -21245,18 +21245,18 @@ q []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 391.579 408.211 Td [(prec)]TJ +/F131 9.9626 Tf 391.579 408.211 Td [(Tprec)]TJ ET q -1 0 0 1 413.128 408.41 cm +1 0 0 1 418.358 408.41 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 416.266 408.211 Td [(type)]TJ +/F131 9.9626 Tf 421.497 408.211 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -286.483 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -291.713 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ @@ -23247,7 +23247,7 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 404.405 438.184 416.465] +/Rect [371.126 404.405 443.414 416.465] /A << /S /GoTo /D (precdata) >> >> % 1716 0 obj @@ -26493,9 +26493,9 @@ ET endstream endobj -1972 0 obj +1973 0 obj << -/Length 5195 +/Length 5045 >> stream 0 g 0 G @@ -26535,18 +26535,18 @@ q []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 340.77 446.069 Td [(prec)]TJ +/F131 9.9626 Tf 340.77 446.069 Td [(Tprec)]TJ ET q -1 0 0 1 362.319 446.268 cm +1 0 0 1 367.549 446.268 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 365.457 446.069 Td [(type)]TJ +/F131 9.9626 Tf 370.687 446.069 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -286.483 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -291.714 -19.925 Td [(info)]TJ 0 g 0 G /F84 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -30.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F75 11.9552 Tf 0.998 0 0 1 99.895 368.361 Tm [(Notes)]TJ/F84 9.9626 Tf 0.998 0 0 1 134.195 368.361 Tm [(Legal)-251(inputs)-250(to)-251(this)-250(subr)18(outine)-251(ar)18(e)-250(interpr)18(eted)-251(depending)-250(on)-251(the)]TJ/F78 9.9626 Tf 1 0 0 1 419.801 368.361 Tm [(p)-25(t)-25(y)-80(p)-25(e)]TJ/F84 9.9626 Tf -319.906 -11.956 Td [(string)-250(as)-250(follows)]TJ 0 0 1 rg 0 0 1 RG @@ -26564,7 +26564,11 @@ BT 0 g 0 G /F75 9.9626 Tf -162.171 -19.926 Td [(BJAC)]TJ 0 g 0 G -/F84 9.9626 Tf 0.987 0 0 1 130.341 272.719 Tm [(Pr)18(econdition)-252(by)-253(a)-253(factorization)-252(of)-253(the)-252(block-diagonal)-253(of)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 404.297 272.719 Tm [(A)]TJ/F84 9.9626 Tf 0.987 0 0 1 411.614 272.719 Tm [(,)-253(wher)18(e)]TJ 1.02 0 0 1 124.802 260.764 Tm [(block)-280(boundaries)-280(ar)18(e)-280(determined)-279(by)-280(the)-280(data)-280(allocation)-280(boundar)1(ies)-280(for)]TJ 0.999 0 0 1 124.802 248.809 Tm [(each)-251(pr)18(ocess;)-251(r)18(equir)18(es)-250(no)-251(communication.)-312(Only)-251(the)-251(incomplete)-250(factoriza-)]TJ 1 0 0 1 124.802 236.854 Tm [(tion)]TJ/F78 9.9626 Tf 20.498 0 Td [(I)-96(L)-9(U)]TJ/F181 10.3811 Tf 18.202 0 Td [(\050)]TJ/F84 9.9626 Tf 4.149 0 Td [(0)]TJ/F181 10.3811 Tf 5.106 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(is)-250(curr)18(ently)-250(implemented.)]TJ +/F84 9.9626 Tf 0.994 0 0 1 130.341 272.719 Tm [(Pr)18(econdition)-250(by)-251(a)-250(factorization)-251(or)-250(an)-250(appr)18(oximante)-251(inverse)-250(of)-251(the)-250(block-)]TJ 0.982 0 0 1 124.802 260.764 Tm [(diagonal)-255(of)-256(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 207.927 260.764 Tm [(A)]TJ/F84 9.9626 Tf 0.982 0 0 1 215.244 260.764 Tm [(,)-256(wher)19(e)-256(block)-255(boundaries)-255(ar)18(e)-255(determined)-255(by)-256(the)-255(data)]TJ 1.015 0 0 1 124.802 248.809 Tm [(allocation)-246(boundaries)-247(for)-246(each)-246(pr)18(ocess;)-247(r)18(equir)18(es)-247(no)-246(communication.)-305(See)]TJ 1 0 0 1 124.802 236.854 Tm [(also)-250(T)92(able-)]TJ +0 0 1 rg 0 0 1 RG + [(21)]TJ +0 g 0 G + [(.)]TJ 0 g 0 G ET q @@ -26581,9 +26585,9 @@ ET endstream endobj -1981 0 obj +1985 0 obj << -/Length 4614 +/Length 4360 >> stream 0 g 0 G @@ -26606,11 +26610,11 @@ BT 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=*)]TJ 0 g 0 G - [(\051)]TJ/F84 9.9626 Tf 129.918 0 Td [(.)]TJ 1.02 0 0 1 217.288 583.96 Tm [(The)-322(parameter)-321(to)-322(be)-321(set.)-533(It)-322(can)-321(be)-322(speci\002ed)-321(thr)17(ough)-321(its)-322(name;)-359(the)-322(string)-321(is)]TJ 1 0 0 1 217.597 572.005 Tm [(case-insensitive.)-310(See)-250(T)92(ables)]TJ/F75 9.9626 Tf 121.792 0 Td [(??)]TJ/F84 9.9626 Tf 8.847 0 Td [(-)]TJ + [(\051)]TJ/F84 9.9626 Tf 129.918 0 Td [(.)]TJ 1.02 0 0 1 217.288 583.96 Tm [(The)-322(parameter)-321(to)-322(be)-321(set.)-533(It)-322(can)-321(be)-322(speci\002ed)-321(thr)17(ough)-321(its)-322(name;)-359(the)-322(string)-321(is)]TJ 1 0 0 1 217.597 572.005 Tm [(case-insensitive.)-310(See)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG - [(22)]TJ + [-250(21)]TJ 0 g 0 G - [(.)]TJ/F131 9.9626 Tf -176.871 -11.955 Td [(val)]TJ + [(.)]TJ/F131 9.9626 Tf -46.232 -11.955 Td [(val)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG @@ -26639,11 +26643,11 @@ BT 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG /F131 9.9626 Tf 1 0 0 1 217.597 548.095 Tm [(intent)]TJ 0 g 0 G - [(\050in\051)]TJ/F84 9.9626 Tf 52.304 0 Td [(.)]TJ 1.02 0 0 1 217.288 536.14 Tm [(The)-390(value)-390(of)-390(the)-389(parameter)-390(to)-390(be)-390(set.)-738(The)-390(list)-390(of)-390(allowed)-390(values)-390(and)-389(the)]TJ 1.02 0 0 1 217.597 524.184 Tm [(corr)18(esponding)-256(data)-256(types)-256(is)-256(given)-256(in)-256(T)90(ables)]TJ/F75 9.9626 Tf 1 0 0 1 414.533 524.184 Tm [(??)]TJ/F84 9.9626 Tf 1.02 0 0 1 423.38 524.184 Tm [(-)]TJ + [(\050in\051)]TJ/F84 9.9626 Tf 52.304 0 Td [(.)]TJ 1.02 0 0 1 217.288 536.14 Tm [(The)-390(value)-390(of)-390(the)-389(parameter)-390(to)-390(be)-390(set.)-738(The)-390(list)-390(of)-390(allowed)-390(values)-390(and)-389(the)]TJ 1.02 0 0 1 217.597 524.184 Tm [(corr)18(esponding)-365(data)-364(types)-365(is)-364(given)-365(in)-364(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [(22)]TJ + [-364(21)]TJ 0 g 0 G - [(.)-337(When)-256(the)-256(value)-256(i)1(s)-256(of)-256(type)]TJ + [(.)-663(When)-364(the)-365(value)-364(is)-365(of)-364(type)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG /F131 9.9626 Tf 1 0 0 1 217.597 512.229 Tm [(character)]TJ 0 g 0 G @@ -26664,21 +26668,25 @@ BT 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG [-525(intent)]TJ 0 g 0 G - [(\050out\051)]TJ/F84 9.9626 Tf 150.578 0 Td [(.)]TJ -104.607 -11.955 Td [(Err)18(or)-250(code.)-310(If)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)-310(See)-250(Section)]TJ/F75 9.9626 Tf 213.527 0 Td [(??)]TJ/F84 9.9626 Tf 11.338 0 Td [(for)-250(details.)]TJ 1.02 0 0 1 150.316 476.478 Tm [(A)-253(number)-253(of)-253(subdomain)-253(solvers)-253(can)-253(be)-253(chosen)-254(with)-253(this)-253(method;)-257(a)-253(list)-253(of)-253(the)]TJ 0.98 0 0 1 150.406 464.523 Tm [(parameters)-247(that)-247(can)-247(be)-247(set,)-248(along)-247(with)-247(their)-247(allowed)-247(and)-247(default)-246(values,)-249(is)-247(given)]TJ 1 0 0 1 150.705 452.568 Tm [(in)-250(T)92(ables)]TJ/F75 9.9626 Tf 41.255 0 Td [(??)]TJ/F84 9.9626 Tf 8.846 0 Td [(-)]TJ + [(\050out\051)]TJ/F84 9.9626 Tf 150.578 0 Td [(.)]TJ -104.607 -11.955 Td [(Err)18(or)-250(code.)-310(If)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)-310(See)-250(Section)]TJ +0 0 1 rg 0 0 1 RG + [-250(8)]TJ +0 g 0 G + [-250(for)-250(details.)]TJ 1.02 0 0 1 150.316 476.478 Tm [(A)-253(number)-253(of)-253(subdomain)-253(solvers)-253(can)-253(be)-253(chosen)-254(with)-253(this)-253(method;)-257(a)-253(list)-253(of)-253(the)]TJ 0.98 0 0 1 150.406 464.523 Tm [(parameters)-247(that)-247(can)-247(be)-247(set,)-248(along)-247(with)-247(their)-247(allowed)-247(and)-247(default)-246(values,)-249(is)-247(given)]TJ 1 0 0 1 150.705 452.568 Tm [(in)-250(T)92(able-)]TJ 0 0 1 rg 0 0 1 RG - [(22)]TJ + [(21)]TJ 0 g 0 G [(.)]TJ 0 g 0 G - 114.282 -362.13 Td [(152)]TJ + 164.383 -362.13 Td [(152)]TJ 0 g 0 G ET endstream endobj -1986 0 obj +1989 0 obj << -/Length 4611 +/Length 13614 >> stream 0 g 0 G @@ -26691,69 +26699,69 @@ q 0 g 0 G 0 g 0 G q -1 0 0 1 9.234 63.215 cm -[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S +1 0 0 1 6.906 167.723 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q q -1 0 0 1 9.234 52.057 cm +1 0 0 1 6.906 156.565 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q 1 0 0 1 -271.751 -120.326 cm BT -/F231 8.9664 Tf 286.727 175.671 Td [(what)]TJ +/F231 8.9664 Tf 284.399 280.179 Td [(what)]TJ ET q -1 0 0 1 394.988 172.383 cm +1 0 0 1 381.321 276.891 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F84 7.1731 Tf 401.189 175.671 Td [(D)-62(A)11(T)12(A)-374(T)-62(Y)-62(P)-62(E)]TJ +/F84 7.1731 Tf 387.523 280.179 Td [(D)-62(A)12(T)11(A)-374(T)-62(Y)-62(P)-62(E)]TJ ET q -1 0 0 1 482.26 172.383 cm +1 0 0 1 487.422 276.891 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F231 8.9664 Tf 488.002 175.671 Td [(val)]TJ +/F231 8.9664 Tf 493.164 280.179 Td [(val)]TJ ET q -1 0 0 1 548.073 172.383 cm +1 0 0 1 573.078 276.891 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F84 7.1731 Tf 554.275 175.671 Td [(D)-62(E)-62(F)13(A)-62(U)-62(L)12(T)]TJ +/F84 7.1731 Tf 579.28 280.179 Td [(D)-62(E)-62(F)13(A)-62(U)-62(L)12(T)]TJ ET q -1 0 0 1 662.075 172.383 cm +1 0 0 1 658.734 276.891 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F84 7.1731 Tf 668.277 175.671 Td [(C)-62(O)-62(M)-61(M)-62(E)-61(N)-62(T)-62(S)]TJ +/F84 7.1731 Tf 664.936 280.179 Td [(C)-62(O)-62(M)-61(M)-62(E)-61(N)-62(T)-62(S)]TJ ET q -1 0 0 1 858.283 172.383 cm +1 0 0 1 860.611 276.891 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q q -1 0 0 1 280.985 172.184 cm -[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S +1 0 0 1 278.657 276.692 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q q -1 0 0 1 280.985 95.272 cm +1 0 0 1 278.657 199.78 cm []0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q 0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F231 8.9664 Tf 286.963 164.313 Td [(\015SUB_SOLVE\015)]TJ +/F231 8.9664 Tf 284.635 268.821 Td [(\015SUB_SOLVE\015)]TJ 0 g 0 G ET q -1 0 0 1 394.988 95.272 cm +1 0 0 1 381.321 199.78 cm []0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F231 8.9664 Tf 400.965 164.313 Td [(character)]TJ +/F231 8.9664 Tf 387.299 268.821 Td [(character)]TJ 0 g 0 G [(\050)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG @@ -26765,12 +26773,12 @@ BT [(\051)]TJ ET q -1 0 0 1 482.26 95.272 cm +1 0 0 1 487.422 199.78 cm []0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q 0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F231 8.9664 Tf 488.237 164.313 Td [(\015ILU\015)]TJ +/F231 8.9664 Tf 493.4 268.821 Td [(\015ILU\015)]TJ 0 g 0 G 0.25 0.44 0.63 rg 0.25 0.44 0.63 RG 0 -10.959 Td [(\015ILUT\015)]TJ @@ -26786,234 +26794,446 @@ BT 0 g 0 G ET q -1 0 0 1 548.073 95.272 cm +1 0 0 1 573.078 199.78 cm []0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q q -1 0 0 1 662.075 95.272 cm +1 0 0 1 658.734 199.78 cm []0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q BT -/F84 8.9664 Tf 1.02 0 0 1 667.775 164.313 Tm [(The)-899(local)-898(solver)-899(to)-898(be)-899(used)-898(with)-899(the)]TJ 1.02 0 0 1 668.053 153.354 Tm [(smoother)-335(or)-335(one-level)-336(pr)18(econditioner)-335(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 843.499 153.354 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 848.094 153.354 Tm [(\051,)]TJ 1.02 0 0 1 668.053 142.395 Tm [(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 687.489 142.395 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 692.084 142.395 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 695.977 142.395 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 699.075 142.395 Tm [(\051,)-623(Appr)18(oximate)-548(Inverses)-547(INVK\050)]TJ/F78 8.9664 Tf 1 0 0 1 835.342 142.395 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 839.938 142.395 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 843.83 142.395 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 848.094 142.395 Tm [(\051,)]TJ 1.02 0 0 1 668.053 131.436 Tm [(INVT\050)]TJ/F78 8.9664 Tf 1 0 0 1 694.595 131.436 Tm [(p)]TJ/F84 6.9738 Tf 4.595 -1.783 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 703.175 131.436 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 707.561 131.436 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 712.157 131.436 Tm [(2,)]TJ/F78 8.9664 Tf 1 0 0 1 720.622 131.436 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.783 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 727.705 131.436 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 731.598 131.436 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.678 Td [(2)]TJ/F84 8.9664 Tf 1.02 0 0 1 738.681 131.436 Tm [(\051)-649(and)-648(AINV\050)]TJ/F78 8.9664 Tf 1 0 0 1 796.631 131.436 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 799.729 131.436 Tm [(\051;)-850(note)-649(that)]TJ 1.02 0 0 1 668.053 120.478 Tm [(appr)18(oximate)-468(inverses)-468(ar)18(e)-468(speci\002cally)-467(suited)]TJ 1.02 0 0 1 668.053 109.519 Tm [(for)-251(GPUs)-250(since)-251(they)-250(do)-251(not)-250(employ)-251(triangular)]TJ 1 0 0 1 668.053 98.56 Tm [(system)-250(solve)-250(kernels,)-250(see)-250([)]TJ/F75 8.9664 Tf 103.722 0 Td [(?)]TJ/F84 8.9664 Tf 3.981 0 Td [(].)]TJ +/F84 8.9664 Tf 1.02 0 0 1 664.434 268.821 Tm [(The)-987(local)-987(solver)-987(to)-987(be)-987(used)-987(with)-988(the)]TJ 1.02 0 0 1 664.712 257.862 Tm [(smoother)-490(or)-490(one-level)-491(pr)18(econditioner)-490(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 845.827 257.862 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 850.422 257.862 Tm [(\051,)]TJ 1.02 0 0 1 664.712 246.903 Tm [(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 684.148 246.903 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 688.743 246.903 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 692.636 246.903 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 695.734 246.903 Tm [(\051,)-862(App)1(r)17(oximate)-738(Inverses)-738(INVK\050)]TJ/F78 8.9664 Tf 1 0 0 1 837.67 246.903 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 842.266 246.903 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 846.158 246.903 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 850.422 246.903 Tm [(\051,)]TJ 1.02 0 0 1 664.712 235.945 Tm [(INVT\050)]TJ/F78 8.9664 Tf 1 0 0 1 691.254 235.945 Tm [(p)]TJ/F84 6.9738 Tf 4.595 -1.784 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 699.834 235.945 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 704.22 235.945 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 708.815 235.945 Tm [(2,)]TJ/F78 8.9664 Tf 1 0 0 1 717.281 235.945 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.784 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 724.364 235.945 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 728.257 235.945 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.679 Td [(2)]TJ/F84 8.9664 Tf 1.02 0 0 1 735.34 235.945 Tm [(\051)-786(and)-787(AINV\050)]TJ/F78 8.9664 Tf 1 0 0 1 795.809 235.945 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 798.907 235.945 Tm [(\051;)-1057(note)-786(that)]TJ 1.02 0 0 1 664.712 224.986 Tm [(appr)18(oximate)-623(inverses)-623(ar)18(e)-623(speci\002)1(cally)-623(suited)]TJ 1.02 0 0 1 664.712 214.027 Tm [(for)-339(GPUs)-339(since)-339(they)-339(do)-340(not)-339(employ)-339(triangular)]TJ 1 0 0 1 664.712 203.068 Tm [(system)-250(solve)-250(kernels,)-250(see)-250([)]TJ +1 0 0 rg 1 0 0 RG + [(2)]TJ +0 g 0 G + [(].)]TJ ET q -1 0 0 1 858.283 95.272 cm +1 0 0 1 860.611 199.78 cm []0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q q -1 0 0 1 280.985 95.073 cm -[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S +1 0 0 1 278.657 199.581 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q q -1 0 0 1 280.985 93.08 cm -[]0 d 0 J 0.398 w 0 0 m 577.297 0 l S +1 0 0 1 278.657 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q -0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F84 9.9626 Tf 380.202 64.702 Td [(T)92(able)-250(21:)-310(Parameters)-250(de\002ning)-250(the)-250(solver)-250(or)-250(the)-250(details)-250(of)-250(the)-250(one-level)-250(pr)18(econditioner)74(.)]TJ -0 g 0 G +/F231 8.9664 Tf 284.635 191.71 Td [(\015SUB_FILLIN\015)]TJ 0 g 0 G ET -1 0 0 1 271.751 120.326 cm +q +1 0 0 1 381.321 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q -0 g 0 G -0 g 0 G -1 0 0 1 -271.751 -120.326 cm +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F84 9.9626 Tf 264.279 90.438 Td [(153)]TJ +/F231 8.9664 Tf 387.299 191.71 Td [(integer)]TJ 0 g 0 G ET - -endstream -endobj -1991 0 obj -<< -/Length 3855 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -1 0 0 1 322.56 716.092 cm q -0 -1 1 0 0 0 cm -0 g 0 G +1 0 0 1 487.422 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 493.05 191.71 Td [(Any)-250(integer)]TJ 0.35 -10.959 Td [(number)]TJ/F179 9.343 Tf 33.69 0 Td [(\025)]TJ/F84 8.9664 Tf 9.866 0 Td [(0)]TJ +ET +q +1 0 0 1 573.078 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 579.056 191.71 Td [(0)]TJ +ET +q +1 0 0 1 658.734 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 0.98 0 0 1 664.712 191.71 Tm [(Fill-in)-207(level)]TJ/F78 8.9664 Tf 1 0 0 1 710.61 191.71 Tm [(p)]TJ/F84 8.9664 Tf 0.98 0 0 1 717.027 191.71 Tm [(of)-207(the)-208(incomplete)-207(LU)-207(factorizations.)]TJ +ET +q +1 0 0 1 860.611 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +q +1 0 0 1 278.657 177.265 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 278.657 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 284.635 169.394 Td [(\015SUB_ILUTHRS\015)]TJ 0 g 0 G +ET +q +1 0 0 1 381.321 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +BT +/F231 8.9664 Tf 387.299 169.394 Td [(real)]TJ 0 g 0 G + [(\050kind_parameter\051)]TJ +ET q -1 0 0 1 6.907 46.976 cm +1 0 0 1 487.422 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 1.02 0 0 1 493.05 169.394 Tm [(Any)-1148(r)18(eal)-1148(nu)1(m-)]TJ 1 0 0 1 493.4 158.435 Tm [(ber)]TJ/F179 9.343 Tf 15.148 0 Td [(\025)]TJ/F84 8.9664 Tf 9.865 0 Td [(0)]TJ +ET +q +1 0 0 1 573.078 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 579.056 169.394 Td [(0)]TJ +ET +q +1 0 0 1 658.734 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +BT +/F84 8.9664 Tf 664.712 169.394 Td [(Dr)18(op)-250(tolerance)]TJ/F78 8.9664 Tf 61.441 0 Td [(t)]TJ/F84 8.9664 Tf 5.34 0 Td [(in)-250(the)-250(ILU\050)]TJ/F78 8.9664 Tf 43.813 0 Td [(p)]TJ/F84 8.9664 Tf 4.595 0 Td [(,)]TJ/F78 8.9664 Tf 3.848 0 Td [(t)]TJ/F84 8.9664 Tf 3.098 0 Td [(\051)-250(factorization.)]TJ +ET +q +1 0 0 1 860.611 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +q +1 0 0 1 278.657 154.948 cm []0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q q -1 0 0 1 6.907 35.818 cm +1 0 0 1 278.657 143.79 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q -1 0 0 1 -322.56 -716.092 cm +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F231 8.9664 Tf 335.209 755.197 Td [(what)]TJ +/F231 8.9664 Tf 284.635 147.078 Td [(\015ILU_ALG\015)]TJ +0 g 0 G ET q -1 0 0 1 432.13 751.91 cm +1 0 0 1 381.321 143.79 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F84 7.1731 Tf 438.332 755.197 Td [(D)-62(A)11(T)12(A)-374(T)-62(Y)-62(P)-62(E)]TJ +/F231 8.9664 Tf 387.299 147.078 Td [(character)]TJ +0 g 0 G + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ ET q -1 0 0 1 538.231 751.91 cm +1 0 0 1 487.422 143.79 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F231 8.9664 Tf 543.974 755.197 Td [(val)]TJ +/F231 8.9664 Tf 493.4 147.078 Td [(\015MILU\015)]TJ +0 g 0 G ET q -1 0 0 1 623.888 751.91 cm +1 0 0 1 573.078 143.79 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F84 7.1731 Tf 630.089 755.197 Td [(D)-62(E)-62(F)12(A)-62(U)-62(L)13(T)]TJ +/F231 8.9664 Tf 579.056 147.078 Td [(\015NONE\015)]TJ +0 g 0 G ET q -1 0 0 1 709.544 751.91 cm +1 0 0 1 658.734 143.79 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F84 7.1731 Tf 715.745 755.197 Td [(C)-62(O)-62(M)-61(M)-62(E)-61(N)-62(T)-62(S)]TJ +/F84 8.9664 Tf 664.712 147.078 Td [(ILU)-250(algorithmic)-250(variant)]TJ ET q -1 0 0 1 911.42 751.91 cm +1 0 0 1 860.611 143.79 cm []0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q q -1 0 0 1 329.467 751.71 cm +1 0 0 1 278.657 143.591 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 278.657 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 284.635 135.72 Td [(\015ILUT_SCALE\015)]TJ +0 g 0 G +ET +q +1 0 0 1 381.321 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +BT +/F231 8.9664 Tf 387.299 135.72 Td [(character)]TJ +0 g 0 G + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ +ET +q +1 0 0 1 487.422 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 493.4 135.72 Td [(\015MAXVAL\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015DIAG\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.958 Td [(\015ARSWUM\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015ARCSUM\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015ACLSUM\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015NONE\015)]TJ +0 g 0 G +ET +q +1 0 0 1 573.078 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 579.056 135.72 Td [(\015NONE\015)]TJ +0 g 0 G +ET +q +1 0 0 1 658.734 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +BT +/F84 8.9664 Tf 664.712 135.72 Td [(ILU)-250(scaling)-250(strategy)]TJ +ET +q +1 0 0 1 860.611 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +q +1 0 0 1 278.657 77.439 cm []0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q q -1 0 0 1 329.467 729.593 cm +1 0 0 1 278.657 55.322 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q 0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F231 8.9664 Tf 335.444 743.84 Td [(\015SUB_FILLIN\015)]TJ +/F231 8.9664 Tf 284.635 69.568 Td [(\015INV_FILLIN\015)]TJ 0 g 0 G ET q -1 0 0 1 432.13 729.593 cm +1 0 0 1 381.321 55.322 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F231 8.9664 Tf 438.108 743.84 Td [(integer)]TJ +/F231 8.9664 Tf 387.299 69.568 Td [(integer)]TJ 0 g 0 G ET q -1 0 0 1 538.231 729.593 cm +1 0 0 1 487.422 55.322 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F84 8.9664 Tf 543.859 743.84 Td [(Any)-250(integer)]TJ 0.35 -10.959 Td [(number)]TJ/F179 9.343 Tf 33.691 0 Td [(\025)]TJ/F84 8.9664 Tf 9.865 0 Td [(0)]TJ +/F84 8.9664 Tf 493.05 69.568 Td [(Any)-250(integer)]TJ 0.35 -10.958 Td [(number)]TJ/F179 9.343 Tf 33.69 0 Td [(\025)]TJ/F84 8.9664 Tf 9.866 0 Td [(0)]TJ ET q -1 0 0 1 623.888 729.593 cm +1 0 0 1 573.078 55.322 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F84 8.9664 Tf 629.865 743.84 Td [(0)]TJ +/F84 8.9664 Tf 579.056 69.568 Td [(0)]TJ ET q -1 0 0 1 709.544 729.593 cm +1 0 0 1 658.734 55.322 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F84 8.9664 Tf 0.98 0 0 1 715.521 743.84 Tm [(Fill-in)-207(level)]TJ/F78 8.9664 Tf 1 0 0 1 761.42 743.84 Tm [(p)]TJ/F84 8.9664 Tf 0.98 0 0 1 767.837 743.84 Tm [(of)-207(the)-208(incomplete)-207(LU)-207(factorizations.)]TJ +/F84 8.9664 Tf 1.02 0 0 1 664.712 69.568 Tm [(Second)-285(\002)1(ll-in)-285(level)]TJ/F78 8.9664 Tf 1 0 0 1 742.915 69.568 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 749.781 69.568 Tm [(of)-285(the)-284(INVK\050)]TJ/F78 8.9664 Tf 1 0 0 1 803.286 69.568 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 807.881 69.568 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 811.774 69.568 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 816.037 69.568 Tm [(\051)-285(appr)18(oxi-)]TJ 1 0 0 1 664.712 58.61 Tm [(mate)-250(inverse.)]TJ ET q -1 0 0 1 911.42 729.593 cm +1 0 0 1 860.611 55.322 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q q -1 0 0 1 329.467 729.394 cm +1 0 0 1 278.657 55.123 cm []0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q q -1 0 0 1 329.467 707.277 cm +1 0 0 1 278.657 33.006 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q 0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F231 8.9664 Tf 335.444 721.524 Td [(\015SUB_ILUTHRS\015)]TJ +/F231 8.9664 Tf 284.635 47.252 Td [(\015INV_ILUTHRS\015)]TJ 0 g 0 G ET q -1 0 0 1 432.13 707.277 cm +1 0 0 1 381.321 33.006 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F231 8.9664 Tf 438.108 721.524 Td [(real)]TJ +/F231 8.9664 Tf 387.299 47.252 Td [(real)]TJ 0 g 0 G [(\050kind_parameter\051)]TJ ET q -1 0 0 1 538.231 707.277 cm +1 0 0 1 487.422 33.006 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F84 8.9664 Tf 1.02 0 0 1 543.859 721.524 Tm [(Any)-1148(r)18(eal)-1148(num-)]TJ 1 0 0 1 544.209 710.565 Tm [(ber)]TJ/F179 9.343 Tf 15.148 0 Td [(\025)]TJ/F84 8.9664 Tf 9.866 0 Td [(0)]TJ +/F84 8.9664 Tf 1.02 0 0 1 493.05 47.252 Tm [(Any)-1148(r)18(eal)-1148(nu)1(m-)]TJ 1 0 0 1 493.4 36.293 Tm [(ber)]TJ/F179 9.343 Tf 15.148 0 Td [(\025)]TJ/F84 8.9664 Tf 9.865 0 Td [(0)]TJ ET q -1 0 0 1 623.888 707.277 cm +1 0 0 1 573.078 33.006 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F84 8.9664 Tf 629.865 721.524 Td [(0)]TJ +/F84 8.9664 Tf 579.056 47.252 Td [(0)]TJ ET q -1 0 0 1 709.544 707.277 cm +1 0 0 1 658.734 33.006 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F84 8.9664 Tf 715.521 721.524 Td [(Dr)18(op)-250(tolerance)]TJ/F78 8.9664 Tf 61.442 0 Td [(t)]TJ/F84 8.9664 Tf 5.339 0 Td [(in)-250(the)-250(ILU\050)]TJ/F78 8.9664 Tf 43.814 0 Td [(p)]TJ/F84 8.9664 Tf 4.595 0 Td [(,)]TJ/F78 8.9664 Tf 3.848 0 Td [(t)]TJ/F84 8.9664 Tf 3.098 0 Td [(\051)-250(factorization.)]TJ +/F84 8.9664 Tf 0.985 0 0 1 664.712 47.252 Tm [(Second)-255(dr)19(op)-255(tolerance)]TJ/F78 8.9664 Tf 1 0 0 1 754.271 47.252 Tm [(s)]TJ/F84 8.9664 Tf 0.985 0 0 1 760.121 47.252 Tm [(in)-255(the)-254(INVT\050)]TJ/F78 8.9664 Tf 1 0 0 1 809.739 47.252 Tm [(t)]TJ/F84 8.9664 Tf 0.985 0 0 1 812.837 47.252 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 816.652 47.252 Tm [(s)]TJ/F84 8.9664 Tf 0.985 0 0 1 820.252 47.252 Tm [(\051)-255(appr)19(ox-)]TJ 1 0 0 1 664.712 36.293 Tm [(imate)-250(inverse.)]TJ ET q -1 0 0 1 911.42 707.277 cm +1 0 0 1 860.611 33.006 cm []0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q q -1 0 0 1 329.467 707.078 cm +1 0 0 1 278.657 32.806 cm []0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q q -1 0 0 1 329.467 705.085 cm +1 0 0 1 278.657 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 284.635 24.936 Td [(\015AINV_ALG\015)]TJ +0 g 0 G +ET +q +1 0 0 1 381.321 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +BT +/F231 8.9664 Tf 387.299 24.936 Td [(character)]TJ +0 g 0 G + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ +ET +q +1 0 0 1 487.422 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 493.4 24.936 Td [(\015LLK\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015SYM-LLK\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015STAB-LLK\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015MLK,LMX\015)]TJ +0 g 0 G +ET +q +1 0 0 1 573.078 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 579.056 24.936 Td [(\015LLK\015)]TJ +0 g 0 G +ET +q +1 0 0 1 658.734 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +BT +/F84 8.9664 Tf 664.362 24.936 Td [(AINV)-250(algorithmic)-250(strategy)111(.)]TJ +ET +q +1 0 0 1 860.611 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +q +1 0 0 1 278.657 -11.428 cm []0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q 0 g 0 G BT -/F84 9.9626 Tf 398.01 676.707 Td [(T)92(able)-250(22:)-310(Parameters)-250(de\002ning)-250(the)-250(smoother)-250(or)-250(the)-250(details)-250(of)-250(the)-250(one-level)-250(pr)18(econditioner)-250(\050continued\051.)]TJ +/F84 9.9626 Tf 419.673 -39.806 Td [(T)92(able)-250(21:)-310(Parameters)-250(de\002ning)-250(the)-250(solver)-250(of)-250(the)-250(BJAC)-250(pr)18(econditioner)74(.)]TJ 0 g 0 G 0 g 0 G ET -1 0 0 1 322.56 716.092 cm +1 0 0 1 271.751 120.326 cm Q 0 g 0 G 0 g 0 G -1 0 0 1 -322.56 -716.092 cm +1 0 0 1 -271.751 -120.326 cm BT -/F84 9.9626 Tf 315.088 90.438 Td [(154)]TJ +/F84 9.9626 Tf 264.279 90.438 Td [(153)]TJ 0 g 0 G ET endstream endobj -1999 0 obj +1998 0 obj << -/Length 7657 +/Length 7669 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 99.895 706.129 Td [(10.3)-1000(build)-250(\227)-250(Builds)-250(a)-250(preconditioner)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.3)-1000(build)-250(\227)-250(Builds)-250(a)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G /F131 9.9626 Tf 0 -20.364 Td [(call)-525(prec%build\050a,)-525(desc_a,)-525(info[,amold,vmold,imold]\051)]TJ @@ -27027,230 +27247,230 @@ BT 0 g 0 G 0 -22.816 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(system)-250(sparse)-250(matrix.)-310(Scope:)]TJ/F75 9.9626 Tf 146.23 0 Td [(local)]TJ/F84 9.9626 Tf -131.595 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(sparse)-250(matrix)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(system)-250(sparse)-250(matrix.)-310(Scope:)]TJ/F75 9.9626 Tf 146.229 0 Td [(local)]TJ/F84 9.9626 Tf -131.594 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(sparse)-250(matrix)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 190.872 0 Td [(psb)]TJ ET q -1 0 0 1 331.993 580.382 cm +1 0 0 1 382.802 580.382 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 335.131 580.183 Td [(Tspmat)]TJ +/F131 9.9626 Tf 385.94 580.183 Td [(Tspmat)]TJ ET q -1 0 0 1 367.141 580.382 cm +1 0 0 1 417.95 580.382 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 370.279 580.183 Td [(type)]TJ +/F131 9.9626 Tf 421.088 580.183 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -291.305 -22.815 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 509.547 Tm [(Speci\002ed)-194(as:)-286(an)-193(alr)18(eady)-194(initialized)-194(pr)19(econdtioner)-194(data)-194(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 509.547 Tm [(Speci\002ed)-194(as:)-286(an)-193(alr)18(eady)-194(initialized)-194(pr)19(econdtioner)-194(data)-194(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 1 0 0 1 396.852 509.547 Tm [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 447.661 509.547 Tm [(psb)]TJ ET q -1 0 0 1 413.17 509.746 cm +1 0 0 1 463.98 509.746 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 416.309 509.547 Td [(prec)]TJ +/F131 9.9626 Tf 467.118 509.547 Td [(Tprec)]TJ ET q -1 0 0 1 437.858 509.746 cm +1 0 0 1 493.897 509.746 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 440.996 509.547 Td [(type)]TJ +/F131 9.9626 Tf 497.036 509.547 Td [(type)]TJ 0 g 0 G 0 g 0 G -/F75 9.9626 Tf -341.101 -34.771 Td [(desc)]TJ +/F75 9.9626 Tf -346.331 -34.771 Td [(desc)]TJ ET q -1 0 0 1 120.408 474.975 cm +1 0 0 1 171.218 474.975 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F75 9.9626 Tf 123.397 474.776 Td [(a)]TJ +/F75 9.9626 Tf 174.207 474.776 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(descriptor)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.491 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(descriptor)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 247.648 0 Td [(psb)]TJ +/F131 9.9626 Tf 247.649 0 Td [(psb)]TJ ET q -1 0 0 1 388.769 439.11 cm +1 0 0 1 439.579 439.11 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 391.907 438.911 Td [(desc)]TJ +/F131 9.9626 Tf 442.717 438.911 Td [(desc)]TJ ET q -1 0 0 1 413.456 439.11 cm +1 0 0 1 464.266 439.11 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 416.594 438.911 Td [(type)]TJ +/F131 9.9626 Tf 467.404 438.911 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -337.621 -22.816 Td [(amold)]TJ +/F75 9.9626 Tf -337.62 -22.816 Td [(amold)]TJ 0 g 0 G -/F84 9.9626 Tf 33.455 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -8.548 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ +/F84 9.9626 Tf 33.454 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -8.548 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ ET q -1 0 0 1 342.513 368.474 cm +1 0 0 1 393.323 368.474 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 345.652 368.275 Td [(T)]TJ +/F131 9.9626 Tf 396.461 368.275 Td [(T)]TJ ET q -1 0 0 1 351.51 368.474 cm +1 0 0 1 402.319 368.474 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 354.648 368.275 Td [(base)]TJ +/F131 9.9626 Tf 405.457 368.275 Td [(base)]TJ ET q -1 0 0 1 376.197 368.474 cm +1 0 0 1 427.006 368.474 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 379.335 368.275 Td [(sparse)]TJ +/F131 9.9626 Tf 430.144 368.275 Td [(sparse)]TJ ET q -1 0 0 1 411.345 368.474 cm +1 0 0 1 462.154 368.474 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 414.483 368.275 Td [(mat)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ +/F131 9.9626 Tf 465.292 368.275 Td [(mat)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -330.279 -22.816 Td [(vmold)]TJ +/F75 9.9626 Tf -330.278 -22.816 Td [(vmold)]TJ 0 g 0 G -/F84 9.9626 Tf 34.013 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -9.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ +/F84 9.9626 Tf 34.012 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -9.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ ET q -1 0 0 1 342.513 297.838 cm +1 0 0 1 393.323 297.838 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 345.652 297.638 Td [(T)]TJ +/F131 9.9626 Tf 396.461 297.638 Td [(T)]TJ ET q -1 0 0 1 351.51 297.838 cm +1 0 0 1 402.319 297.838 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 354.648 297.638 Td [(base)]TJ +/F131 9.9626 Tf 405.457 297.638 Td [(base)]TJ ET q -1 0 0 1 376.197 297.838 cm +1 0 0 1 427.006 297.838 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 379.335 297.638 Td [(vect)]TJ +/F131 9.9626 Tf 430.144 297.638 Td [(vect)]TJ ET q -1 0 0 1 400.884 297.838 cm +1 0 0 1 451.693 297.838 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 404.022 297.638 Td [(type)]TJ/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F131 9.9626 Tf 454.832 297.638 Td [(type)]TJ/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -325.049 -22.815 Td [(imold)]TJ +/F75 9.9626 Tf -325.048 -22.815 Td [(imold)]TJ 0 g 0 G -/F84 9.9626 Tf 31.791 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(integer)-250(vector)-250(storage.)]TJ -6.884 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 227.002 Tm [(Speci\002ed)-194(as:)-286(an)-193(object)-194(of)-194(a)-194(class)-194(derived)-194(fr)19(om)-194(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 356.282 227.002 Tm [(psb)]TJ +/F84 9.9626 Tf 31.79 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(integer)-250(vector)-250(storage.)]TJ -6.884 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 227.002 Tm [(Speci\002ed)-194(as:)-286(an)-193(object)-194(of)-194(a)-194(class)-194(derived)-194(fr)19(om)-194(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 407.092 227.002 Tm [(psb)]TJ ET q -1 0 0 1 372.601 227.202 cm +1 0 0 1 423.41 227.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 375.739 227.002 Td [(T)]TJ +/F131 9.9626 Tf 426.549 227.002 Td [(T)]TJ ET q -1 0 0 1 381.597 227.202 cm +1 0 0 1 432.406 227.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 384.735 227.002 Td [(base)]TJ +/F131 9.9626 Tf 435.545 227.002 Td [(base)]TJ ET q -1 0 0 1 406.284 227.202 cm +1 0 0 1 457.094 227.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 409.422 227.002 Td [(vect)]TJ +/F131 9.9626 Tf 460.232 227.002 Td [(vect)]TJ ET q -1 0 0 1 430.971 227.202 cm +1 0 0 1 481.781 227.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 434.11 227.002 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 455.031 227.002 Tm [(.)]TJ +/F131 9.9626 Tf 484.919 227.002 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 505.84 227.002 Tm [(.)]TJ 0 g 0 G -/F75 9.9626 Tf 1 0 0 1 99.895 202.917 Tm [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 202.917 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.816 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econdtioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econdtioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 193.612 0 Td [(psb)]TJ ET q -1 0 0 1 334.732 132.48 cm +1 0 0 1 385.542 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 337.871 132.281 Td [(prec)]TJ +/F131 9.9626 Tf 388.68 132.281 Td [(Tprec)]TJ ET q -1 0 0 1 359.42 132.48 cm +1 0 0 1 415.459 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 362.558 132.281 Td [(type)]TJ +/F131 9.9626 Tf 418.598 132.281 Td [(type)]TJ 0 g 0 G 0 g 0 G -/F84 9.9626 Tf -98.279 -41.843 Td [(155)]TJ +/F84 9.9626 Tf -103.51 -41.843 Td [(154)]TJ 0 g 0 G ET endstream endobj -2003 0 obj +2002 0 obj << -/Length 1133 +/Length 1131 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F75 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 1.02 0 0 1 150.396 636.39 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 170.746 636.39 Tm [(amold)]TJ/F84 9.9626 Tf 1.02 0 0 1 196.898 636.39 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 202.989 636.39 Tm [(vmold)]TJ/F84 9.9626 Tf 1.02 0 0 1 232.48 636.39 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 253.023 636.39 Tm [(imold)]TJ/F84 9.9626 Tf 1.02 0 0 1 282.514 636.39 Tm [(ar)18(guments)-329(may)-328(be)-329(employed)-329(to)-328(interface)-329(with)]TJ 1 0 0 1 150.705 624.435 Tm [(special)-250(devices,)-250(such)-250(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 1.02 0 0 1 99.587 636.39 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 119.936 636.39 Tm [(amold)]TJ/F84 9.9626 Tf 1.02 0 0 1 146.088 636.39 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 152.18 636.39 Tm [(vmold)]TJ/F84 9.9626 Tf 1.02 0 0 1 181.67 636.39 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 202.214 636.39 Tm [(imold)]TJ/F84 9.9626 Tf 1.02 0 0 1 231.704 636.39 Tm [(ar)18(guments)-329(may)-329(be)-328(employed)-329(to)-328(interface)-329(with)]TJ 1 0 0 1 99.895 624.435 Tm [(special)-250(devices,)-250(such)-250(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ 0 g 0 G - 164.383 -533.997 Td [(156)]TJ + 164.384 -533.997 Td [(155)]TJ 0 g 0 G ET endstream endobj -2011 0 obj +2010 0 obj << -/Length 5674 +/Length 5678 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 99.895 706.129 Td [(10.4)-1000(apply)-250(\227)-250(Preconditioner)-250(application)-250(routine)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.4)-1000(apply)-250(\227)-250(Preconditioner)-250(application)-250(routine)]TJ 0 g 0 G 0 g 0 G /F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%apply\050x,y,desc_a,info,trans,work\051)]TJ 0 -11.955 Td [(call)-525(prec%apply\050x,desc_a,info,trans\051)]TJ @@ -27264,81 +27484,81 @@ BT 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.836 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.837 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 337.631 577.775 cm +1 0 0 1 388.441 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 340.77 577.576 Td [(prec)]TJ +/F131 9.9626 Tf 391.579 577.576 Td [(Tprec)]TJ ET q -1 0 0 1 362.319 577.775 cm +1 0 0 1 418.358 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 365.457 577.576 Td [(type)]TJ +/F131 9.9626 Tf 421.497 577.576 Td [(type)]TJ 0 g 0 G /F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -286.483 -19.925 Td [(x)]TJ +/F75 9.9626 Tf -291.713 -19.925 Td [(x)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(sour)18(ce)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 111.142 0 Td [(local)]TJ/F84 9.9626 Tf -96.507 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sour)18(ce)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 111.142 0 Td [(local)]TJ/F84 9.9626 Tf -96.506 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 521.985 cm +1 0 0 1 410.618 521.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 362.947 521.785 Td [(T)]TJ +/F131 9.9626 Tf 413.756 521.785 Td [(T)]TJ ET q -1 0 0 1 368.804 521.985 cm +1 0 0 1 419.614 521.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 371.943 521.785 Td [(vect)]TJ +/F131 9.9626 Tf 422.752 521.785 Td [(vect)]TJ ET q -1 0 0 1 393.492 521.985 cm +1 0 0 1 444.301 521.985 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 396.63 521.785 Td [(type)]TJ +/F131 9.9626 Tf 447.439 521.785 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -317.656 -19.925 Td [(desc)]TJ ET q -1 0 0 1 120.408 502.059 cm +1 0 0 1 171.218 502.059 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F75 9.9626 Tf 123.397 501.86 Td [(a)]TJ +/F75 9.9626 Tf 174.207 501.86 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.491 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 200.207 0 Td [(psb)]TJ +/F131 9.9626 Tf 200.208 0 Td [(psb)]TJ ET q -1 0 0 1 341.328 466.194 cm +1 0 0 1 392.137 466.194 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 344.466 465.994 Td [(desc)]TJ +/F131 9.9626 Tf 395.275 465.994 Td [(desc)]TJ ET q -1 0 0 1 366.015 466.194 cm +1 0 0 1 416.824 466.194 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 369.153 465.994 Td [(type)]TJ +/F131 9.9626 Tf 419.963 465.994 Td [(type)]TJ 0 g 0 G /F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G @@ -27348,138 +27568,138 @@ BT 0 g 0 G /F75 9.9626 Tf -24.907 -19.926 Td [(work)]TJ 0 g 0 G -/F84 9.9626 Tf 28.782 0 Td [(an)-250(optional)-250(work)-250(space)-250(Scope:)]TJ/F75 9.9626 Tf 136.477 0 Td [(local)]TJ/F84 9.9626 Tf -140.661 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(double)-250(pr)18(ecision)-250(array)111(.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(an)-250(optional)-250(work)-250(space)-250(Scope:)]TJ/F75 9.9626 Tf 136.476 0 Td [(local)]TJ/F84 9.9626 Tf -140.66 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(double)-250(pr)18(ecision)-250(array)111(.)]TJ 0 g 0 G /F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F84 9.9626 Tf 10.521 0 Td [(the)-250(destination)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 131.913 0 Td [(local)]TJ/F84 9.9626 Tf -117.836 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(destination)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 131.914 0 Td [(local)]TJ/F84 9.9626 Tf -117.836 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.687 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 276.904 cm +1 0 0 1 410.618 276.904 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 362.947 276.704 Td [(T)]TJ +/F131 9.9626 Tf 413.756 276.704 Td [(T)]TJ ET q -1 0 0 1 368.804 276.904 cm +1 0 0 1 419.614 276.904 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 371.943 276.704 Td [(vect)]TJ +/F131 9.9626 Tf 422.752 276.704 Td [(vect)]TJ ET q -1 0 0 1 393.492 276.904 cm +1 0 0 1 444.301 276.904 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 396.63 276.704 Td [(type)]TJ +/F131 9.9626 Tf 447.439 276.704 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -317.656 -19.925 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.866 -118.52 Td [(157)]TJ + 139.865 -118.52 Td [(156)]TJ 0 g 0 G ET endstream endobj -2017 0 obj +2015 0 obj << -/Length 3489 +/Length 3485 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 150.705 706.129 Td [(10.5)-1000(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(current)-250(preconditioner)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(10.5)-1000(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(current)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G /F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%descr\050info\051)]TJ 0 -11.955 Td [(call)-525(prec%descr\050info,iout,)-525(root\051)]TJ 0 g 0 G /F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.837 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.836 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 388.441 577.775 cm +1 0 0 1 337.631 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 391.579 577.576 Td [(prec)]TJ +/F131 9.9626 Tf 340.77 577.576 Td [(Tprec)]TJ ET q -1 0 0 1 413.128 577.775 cm +1 0 0 1 367.549 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 416.266 577.576 Td [(type)]TJ +/F131 9.9626 Tf 370.687 577.576 Td [(type)]TJ 0 g 0 G /F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -286.483 -19.925 Td [(iout)]TJ +/F75 9.9626 Tf -291.714 -19.925 Td [(iout)]TJ 0 g 0 G -/F84 9.9626 Tf 23.243 0 Td [(output)-250(unit.)-310(Scope:)]TJ/F75 9.9626 Tf 87.39 0 Td [(local)]TJ/F84 9.9626 Tf -86.035 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(number)74(.)-310(Default:)-310(default)-250(output)-250(unit.)]TJ +/F84 9.9626 Tf 23.243 0 Td [(output)-250(unit.)-310(Scope:)]TJ/F75 9.9626 Tf 87.391 0 Td [(local)]TJ/F84 9.9626 Tf -86.036 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(number)74(.)-310(Default:)-310(default)-250(output)-250(unit.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.906 -19.925 Td [(root)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(root)]TJ 0 g 0 G -/F84 9.9626 Tf 23.252 0 Td [(Pr)18(ocess)-250(fr)18(om)-250(which)-250(to)-250(print)-250(Scope:)]TJ/F75 9.9626 Tf 155.834 0 Td [(local)]TJ/F84 9.9626 Tf -154.488 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 465.994 Tm [(Speci\002ed)-342(as:)-498(an)-341(integer)-342(number)-342(between)-342(0)-342(and)]TJ/F78 9.9626 Tf 1 0 0 1 396.349 465.994 Tm [(n)-80(p)]TJ/F179 10.3811 Tf 13.868 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 420.713 465.994 Tm [(1,)-366(in)-342(which)-342(case)]TJ 1.02 0 0 1 175.611 454.039 Tm [(the)-264(speci\002ed)-265(pr)18(ocess)-265(will)-264(print)-264(the)-265(description,)-269(or)]TJ/F179 10.3811 Tf 1 0 0 1 401.395 454.039 Tm [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 409.589 454.039 Tm [(1,)-269(in)-265(which)-264(case)-265(all)]TJ 1 0 0 1 175.313 442.084 Tm [(pr)18(ocesses)-250(will)-250(print.)-310(Default:)-310(0.)]TJ +/F84 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-250(fr)18(om)-250(which)-250(to)-250(print)-250(Scope:)]TJ/F75 9.9626 Tf 155.834 0 Td [(local)]TJ/F84 9.9626 Tf -154.489 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 465.994 Tm [(Speci\002ed)-342(as:)-497(an)-342(integer)-342(number)-342(between)-342(0)-342(and)]TJ/F78 9.9626 Tf 1 0 0 1 345.539 465.994 Tm [(n)-80(p)]TJ/F179 10.3811 Tf 13.868 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 369.903 465.994 Tm [(1,)-366(in)-342(which)-342(case)]TJ 1.02 0 0 1 124.802 454.039 Tm [(the)-264(speci\002ed)-265(pr)18(ocess)-265(will)-264(print)-264(the)-265(description,)-269(or)]TJ/F179 10.3811 Tf 1 0 0 1 350.586 454.039 Tm [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 358.78 454.039 Tm [(1,)-269(in)-265(which)-264(case)-265(all)]TJ 1 0 0 1 124.503 442.084 Tm [(pr)18(ocesses)-250(will)-250(print.)-310(Default:)-310(0.)]TJ 0 g 0 G /F75 9.9626 Tf -24.608 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.865 -263.975 Td [(158)]TJ + 139.866 -263.975 Td [(157)]TJ 0 g 0 G ET endstream endobj -2021 0 obj +2020 0 obj << -/Length 973 +/Length 974 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 99.895 706.129 Td [(10.6)-1000(clone)-250(\227)-250(clone)-250(current)-250(preconditioner)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.6)-1000(clone)-250(\227)-250(clone)-250(current)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G /F131 9.9626 Tf 0 -18.964 Td [(call)-1050(prec%clone\050precout,info\051)]TJ 0 g 0 G /F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -77.918 -33.873 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -33.873 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(precout)]TJ @@ -27488,92 +27708,92 @@ BT 0 g 0 G /F75 9.9626 Tf -38.904 -19.925 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ 0 g 0 G - 140.583 -449.28 Td [(159)]TJ + 140.583 -449.28 Td [(158)]TJ 0 g 0 G ET endstream endobj -2027 0 obj +2026 0 obj << -/Length 2713 +/Length 2709 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 150.705 706.129 Td [(10.7)-1000(free)-250(\227)-250(Free)-250(a)-250(preconditioner)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(10.7)-1000(free)-250(\227)-250(Free)-250(a)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G /F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%free\050info\051)]TJ 0 g 0 G /F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 388.441 577.775 cm +1 0 0 1 337.631 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 391.579 577.576 Td [(prec)]TJ +/F131 9.9626 Tf 340.77 577.576 Td [(Tprec)]TJ ET q -1 0 0 1 413.128 577.775 cm +1 0 0 1 367.549 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 416.266 577.576 Td [(type)]TJ +/F131 9.9626 Tf 370.687 577.576 Td [(type)]TJ 0 g 0 G /F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -286.483 -19.925 Td [(On)-250(Exit)]TJ +/F75 9.9626 Tf -291.714 -19.925 Td [(On)-250(Exit)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.182 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.183 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 388.441 502.059 cm +1 0 0 1 337.631 502.059 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 391.579 501.86 Td [(prec)]TJ +/F131 9.9626 Tf 340.77 501.86 Td [(Tprec)]TJ ET q -1 0 0 1 413.128 502.059 cm +1 0 0 1 367.549 502.059 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 416.266 501.86 Td [(type)]TJ +/F131 9.9626 Tf 370.687 501.86 Td [(type)]TJ 0 g 0 G /F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -286.483 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -291.714 -19.925 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.8 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -30.634 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F75 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ/F84 9.9626 Tf 34.363 0 Td [(Releases)-250(all)-250(internal)-250(storage.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -30.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ/F84 9.9626 Tf 34.363 0 Td [(Releases)-250(all)-250(internal)-250(storage.)]TJ 0 g 0 G - 130.02 -333.713 Td [(160)]TJ + 130.021 -333.713 Td [(159)]TJ 0 g 0 G ET endstream endobj -2031 0 obj +2030 0 obj << /Length 607 >> @@ -27581,81 +27801,81 @@ stream 0 g 0 G 0 g 0 G BT -/F75 14.3462 Tf 99.895 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F84 9.9626 Tf 1.006 0 0 1 99.895 683.082 Tm [(In)-249(this)-250(chapter)-249(we)-250(pr)18(ovide)-249(r)18(outines)-250(for)-249(pr)18(econditioners)-250(and)-249(iterative)-249(methods.)]TJ 0.98 0 0 1 99.587 671.127 Tm [(The)-194(interfaces)-194(for)-194(it)1(erative)-194(methods)-194(ar)18(e)-194(available)-194(in)-193(the)-194(module)]TJ/F131 9.9626 Tf 1 0 0 1 369.457 671.127 Tm [(psb_linsolve_mod)]TJ/F84 9.9626 Tf 0.98 0 0 1 453.142 671.127 Tm [(.)]TJ +/F75 14.3462 Tf 150.705 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F84 9.9626 Tf 1.006 0 0 1 150.705 683.082 Tm [(In)-249(this)-250(chapter)-249(we)-250(pr)18(ovide)-249(r)18(outines)-250(for)-249(pr)18(econditioners)-250(and)-249(iterative)-249(methods.)]TJ 0.98 0 0 1 150.396 671.127 Tm [(The)-194(interfaces)-194(for)-194(iterative)-193(methods)-194(ar)18(e)-194(available)-194(in)-193(the)-194(module)]TJ/F131 9.9626 Tf 1 0 0 1 420.266 671.127 Tm [(psb_linsolve_mod)]TJ/F84 9.9626 Tf 0.98 0 0 1 503.952 671.127 Tm [(.)]TJ 0 g 0 G - 1 0 0 1 264.279 90.438 Tm [(161)]TJ + 1 0 0 1 315.088 90.438 Tm [(160)]TJ 0 g 0 G ET endstream endobj -2038 0 obj +2037 0 obj << -/Length 8466 +/Length 8455 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 150.705 706.129 Td [(11.1)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(11.1)-1000(psb)]TJ ET q -1 0 0 1 204.216 706.328 cm +1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 207.803 706.129 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf 1.013 0 0 1 150.396 687.165 Tm [(This)-247(subr)18(outine)-247(is)-248(a)-247(driver)-247(that)-247(pr)18(ovides)-247(a)-247(general)-247(interface)-248(for)-247(all)-247(the)-247(Krylov-)]TJ 1 0 0 1 150.705 675.21 Tm [(Subspace)-250(family)-250(methods)-250(implemented)-250(in)-250(PSBLAS)-250(version)-250(2.)]TJ 14.944 -11.955 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf 1.013 0 0 1 99.587 687.165 Tm [(This)-247(subr)18(outine)-247(is)-247(a)-248(driver)-247(that)-247(pr)18(ovides)-247(a)-247(general)-247(interface)-248(fo)1(r)-248(all)-247(the)-247(Krylov-)]TJ 1 0 0 1 99.895 675.21 Tm [(Subspace)-250(family)-250(methods)-250(implemented)-250(in)-250(PSBLAS)-250(version)-250(2.)]TJ 14.944 -11.955 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G /F75 9.9626 Tf -14.944 -18.774 Td [(1)]TJ 0 g 0 G -/F84 9.9626 Tf 0.99 0 0 1 160.667 644.481 Tm [(normwise)-253(backwar)19(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 269.703 617.617 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 0.99 0 0 1 109.858 644.481 Tm [(normwise)-252(backwar)18(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 218.894 617.617 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 40.62 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 297.001 620.108 cm +1 0 0 1 246.191 620.108 cm []0 d 0 J 0.398 w 0 0 m 74.372 0 l S Q BT -/F181 10.3811 Tf 297.125 610.783 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.377 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F181 10.3811 Tf 5.439 0 Td [(\051)]TJ/F134 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +/F181 10.3811 Tf 246.316 610.783 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.876 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.376 0 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.861 0 Td [(k)]TJ/F181 10.3811 Tf 5.44 0 Td [(\051)]TJ/F134 10.3811 Tf 8.236 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.087 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F75 9.9626 Tf -235.841 -29.908 Td [(2)]TJ +/F75 9.9626 Tf -235.842 -29.908 Td [(2)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 324.174 563.335 cm +1 0 0 1 273.365 563.335 cm []0 d 0 J 0.398 w 0 0 m 20.025 0 l S Q BT -/F179 10.3811 Tf 324.299 554.01 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +/F179 10.3811 Tf 273.49 554.01 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F75 9.9626 Tf -208.667 -29.848 Td [(3)]TJ +/F75 9.9626 Tf -208.668 -29.848 Td [(3)]TJ 0 g 0 G -/F84 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 15.169 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 15.17 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 322.451 506.622 cm +1 0 0 1 271.641 506.622 cm []0 d 0 J 0.398 w 0 0 m 23.472 0 l S Q BT -/F179 10.3811 Tf 322.575 497.297 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 474.283 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 150.705 462.327 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 194.836 462.327 Tm [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 204.675 462.327 Tm [(is)-199(the)-199(tentative)-198(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 324.514 462.327 Tm [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.642 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 379.269 462.327 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 150.705 450.372 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -17.357 Td [(c)-175(a)-175(l)-174(l)-880(p)-105(s)-105(b)]TJ +/F179 10.3811 Tf 271.766 497.297 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.408 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.587 474.283 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 99.895 462.327 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 144.027 462.327 Tm [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 153.866 462.327 Tm [(is)-199(the)-199(tentat)1(ive)-199(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 273.705 462.327 Tm [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.643 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.758 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 328.46 462.327 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 99.895 450.372 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.305 -17.357 Td [(c)-175(a)-175(l)-174(l)-880(p)-105(s)-105(b)]TJ ET q -1 0 0 1 201.089 433.215 cm +1 0 0 1 150.28 433.215 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F84 9.9626 Tf 205.122 433.015 Td [(k)-105(r)-105(y)-105(l)-104(o)-105(v)-238(\050)-156(m)-21(e)-22(t)-22(h)-21(o)-22(d)-218(,)-208(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +/F84 9.9626 Tf 154.313 433.015 Td [(k)-105(r)-105(y)-104(l)-105(o)-105(v)-238(\050)-156(m)-21(e)-22(t)-21(h)-22(o)-22(d)-218(,)-208(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ ET q -1 0 0 1 402.829 433.215 cm +1 0 0 1 352.02 433.215 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F84 9.9626 Tf 406.792 433.015 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -227.086 -11.955 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-336(i)-161(r)-160(s)-161(t)-496(,)-291(i)-116(s)-116(t)-116(o)-116(p)-407(,)-219(c)-43(o)-44(n)-43(d)-177(\051)]TJ +/F84 9.9626 Tf 355.983 433.015 Td [(a)-370(,)-283(i)-108(n)-108(f)-108(o)-274(,)-57(&)]TJ -227.086 -11.955 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-336(i)-161(r)-160(s)-161(t)-496(,)-291(i)-116(s)-116(t)-116(o)-116(p)-407(,)-219(c)-43(o)-43(n)-44(d)-177(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F75 9.9626 Tf -29.001 -25.88 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -29.002 -25.88 Td [(T)90(ype:)]TJ 0 g 0 G /F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G @@ -27664,7 +27884,7 @@ BT 0 g 0 G 0 -19.349 Td [(method)]TJ 0 g 0 G -/F84 9.9626 Tf 0.98 0 0 1 190.555 356.482 Tm [(a)-253(string)-254(that)-253(de\002nes)-253(the)-253(iterative)-254(method)-253(to)-253(be)-254(used.)-315(Supported)-254(values)]TJ 1 0 0 1 175.611 344.526 Tm [(ar)18(e:)]TJ +/F84 9.9626 Tf 0.98 0 0 1 139.746 356.482 Tm [(a)-253(string)-254(that)-253(de\002nes)-253(the)-253(iterative)-254(method)-253(to)-253(be)-254(used.)-315(Supported)-254(values)]TJ 1 0 0 1 124.802 344.526 Tm [(ar)18(e:)]TJ 0 g 0 G /F75 9.9626 Tf 0 -19.349 Td [(CG:)]TJ 0 g 0 G @@ -27682,58 +27902,58 @@ BT 0 g 0 G /F84 9.9626 Tf 28.503 0 Td [(the)-250(Flexible)-250(Conjugate)-250(Gradient)-250(method)]TJ 0 0 1 rg 0 0 1 RG -/F84 7.5716 Tf 176.855 3.616 Td [(5)]TJ +/F84 7.5716 Tf 176.854 3.616 Td [(5)]TJ 0 g 0 G /F84 9.9626 Tf 4.284 -3.616 Td [(;)]TJ 0 g 0 G -/F75 9.9626 Tf -209.642 -15.364 Td [(BICG:)]TJ +/F75 9.9626 Tf -209.641 -15.364 Td [(BICG:)]TJ 0 g 0 G -/F84 9.9626 Tf 33.485 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(method;)]TJ +/F84 9.9626 Tf 33.484 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(method;)]TJ 0 g 0 G -/F75 9.9626 Tf -33.485 -15.365 Td [(BICGST)92(AB:)]TJ +/F75 9.9626 Tf -33.484 -15.365 Td [(BICGST)92(AB:)]TJ 0 g 0 G /F84 9.9626 Tf 59.696 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ 0 g 0 G /F75 9.9626 Tf -59.696 -15.364 Td [(BICGST)92(ABL:)]TJ 0 g 0 G -/F84 9.9626 Tf 0.999 0 0 1 241.394 232.991 Tm [(the)-250(Bi-Conjugate)-249(Gradient)-250(Stabilized)-250(metho)1(d)-250(with)-250(r)18(estart-)]TJ 1 0 0 1 197.529 221.036 Tm [(ing;)]TJ +/F84 9.9626 Tf 0.999 0 0 1 190.585 232.991 Tm [(the)-250(Bi-Conjugate)-249(Gradient)-250(Stabilized)-249(method)-250(with)-250(r)18(estart-)]TJ 1 0 0 1 146.72 221.036 Tm [(ing;)]TJ 0 g 0 G /F75 9.9626 Tf -21.918 -15.365 Td [(RGMRES:)]TJ 0 g 0 G /F84 9.9626 Tf 52.294 0 Td [(the)-250(Generalized)-250(Minimal)-250(Residual)-250(method)-250(with)-250(r)18(estarting.)]TJ 0 g 0 G -/F75 9.9626 Tf -77.2 -19.349 Td [(a)]TJ +/F75 9.9626 Tf -77.201 -19.349 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -170.787 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 360.068 138.701 cm +1 0 0 1 309.258 138.701 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 363.206 138.501 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 138.501 Td [(Tspmat)]TJ ET q -1 0 0 1 395.216 138.701 cm +1 0 0 1 344.406 138.701 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 398.354 138.501 Td [(type)]TJ +/F131 9.9626 Tf 347.544 138.501 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G ET q -1 0 0 1 150.705 130.091 cm +1 0 0 1 99.895 130.091 cm []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F84 5.9776 Tf 161.564 123.219 Td [(5)]TJ/F84 7.9701 Tf 3.487 -2.893 Td [(Note:)-310(the)-250(implementation)-250(is)-250(for)]TJ/F78 7.9701 Tf 113.298 0 Td [(F)-31(C)-45(G)]TJ/F181 8.3049 Tf 16.386 0 Td [(\050)]TJ/F84 7.9701 Tf 3.32 0 Td [(1)]TJ/F181 8.3049 Tf 4.085 0 Td [(\051)]TJ/F84 7.9701 Tf 3.319 0 Td [(.)]TJ +/F84 5.9776 Tf 110.755 123.219 Td [(5)]TJ/F84 7.9701 Tf 3.487 -2.893 Td [(Note:)-310(the)-250(implementation)-250(is)-250(for)]TJ/F78 7.9701 Tf 113.297 0 Td [(F)-31(C)-45(G)]TJ/F181 8.3049 Tf 16.387 0 Td [(\050)]TJ/F84 7.9701 Tf 3.319 0 Td [(1)]TJ/F181 8.3049 Tf 4.085 0 Td [(\051)]TJ/F84 7.9701 Tf 3.32 0 Td [(.)]TJ 0 g 0 G 0 g 0 G -/F84 9.9626 Tf 9.629 -29.888 Td [(162)]TJ +/F84 9.9626 Tf 9.629 -29.888 Td [(161)]TJ 0 g 0 G ET @@ -27743,20 +27963,20 @@ endobj << /Type /ObjStm /N 100 -/First 973 -/Length 10890 +/First 974 +/Length 11085 >> stream 1932 0 1930 139 1934 284 525 342 1935 399 1936 456 1931 514 1941 609 1939 748 1943 891 529 950 1944 1008 1945 1066 1940 1125 1948 1220 1946 1359 1950 1504 533 1562 1951 1619 1952 1677 1947 1735 1955 1858 1953 1997 1957 2139 537 2198 1958 2256 1959 2315 1954 2374 1961 2497 1963 2615 -1960 2673 1965 2756 1967 2874 541 2933 1964 2991 1971 3086 1968 3234 1969 3381 1973 3529 545 3587 -1974 3644 1970 3702 1980 3824 1976 3981 1977 4128 1978 4275 1982 4422 549 4481 1979 4539 1985 4647 -1987 4765 1988 4823 1984 4881 1990 4990 1992 5108 1983 5167 1989 5227 1998 5337 1993 5503 1994 5648 -1995 5795 1996 5942 2000 6089 553 6147 1997 6204 2002 6299 2004 6417 2001 6476 2010 6571 2005 6737 -2006 6882 2007 7025 2008 7172 2012 7316 557 7374 2009 7431 2016 7526 2014 7665 2018 7810 561 7869 -2015 7927 2020 8049 2022 8167 565 8225 2019 8282 2026 8377 2023 8525 2024 8670 2028 8817 569 8876 -2025 8934 2030 9029 2032 9147 573 9205 2029 9262 2037 9357 2033 9505 2034 9655 2039 9800 577 9859 +1960 2673 1965 2756 1967 2874 541 2933 1964 2991 1972 3086 1968 3243 1969 3390 1970 3538 1974 3684 +545 3742 1975 3799 1971 3857 1984 3965 1978 4131 1979 4278 1980 4425 1981 4573 1986 4720 549 4779 +1983 4837 1988 4945 1982 5084 1990 5247 1977 5305 1987 5364 1997 5474 1992 5640 1993 5785 1994 5932 +1995 6079 1999 6226 553 6285 1996 6343 2001 6438 2003 6556 2000 6614 2009 6709 2004 6875 2005 7020 +2006 7163 2007 7309 2011 7453 557 7512 2008 7570 2014 7665 2012 7804 2016 7949 561 8007 2013 8064 +2019 8186 2021 8304 565 8363 2018 8421 2025 8516 2022 8664 2023 8809 2027 8956 569 9014 2024 9071 +2029 9166 2031 9284 573 9343 2028 9401 2036 9496 2032 9644 2033 9793 2038 9938 577 9996 2039 10053 % 1932 0 obj << /Type /Page @@ -27947,21 +28167,21 @@ stream /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1971 0 obj +% 1972 0 obj << /Type /Page -/Contents 1972 0 R -/Resources 1970 0 R +/Contents 1973 0 R +/Resources 1971 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1975 0 R -/Annots [ 1968 0 R 1969 0 R ] +/Parent 1976 0 R +/Annots [ 1968 0 R 1969 0 R 1970 0 R ] >> % 1968 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 442.264 387.374 454.323] +/Rect [320.317 442.264 392.605 454.323] /A << /S /GoTo /D (precdata) >> >> % 1969 0 obj @@ -27972,656 +28192,664 @@ stream /Rect [171.257 352.6 177.533 366.303] /A << /S /GoTo /D (Hfootnote.4) >> >> -% 1973 0 obj +% 1970 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.51 235.698 182.465 245.108] +/A << /S /GoTo /D (table.21) >> +>> +% 1974 0 obj << -/D [1971 0 R /XYZ 98.895 753.953 null] +/D [1972 0 R /XYZ 98.895 753.953 null] >> % 545 0 obj << -/D [1971 0 R /XYZ 99.895 716.092 null] +/D [1972 0 R /XYZ 99.895 716.092 null] >> -% 1974 0 obj +% 1975 0 obj << -/D [1971 0 R /XYZ 114.242 129.79 null] +/D [1972 0 R /XYZ 114.242 129.79 null] >> -% 1970 0 obj +% 1971 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1980 0 obj +% 1984 0 obj << /Type /Page -/Contents 1981 0 R -/Resources 1979 0 R +/Contents 1985 0 R +/Resources 1983 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1975 0 R -/Annots [ 1976 0 R 1977 0 R 1978 0 R ] +/Parent 1976 0 R +/Annots [ 1978 0 R 1979 0 R 1980 0 R 1981 0 R ] >> -% 1976 0 obj +% 1978 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [350.557 567.422 362.512 580.259] -/A << /S /GoTo /D (table.22) >> +/Rect [334.168 567.422 346.124 580.259] +/A << /S /GoTo /D (table.21) >> >> -% 1977 0 obj +% 1979 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [425.768 520.379 437.922 532.438] -/A << /S /GoTo /D (table.22) >> +/Rect [416.947 520.379 429.101 532.438] +/A << /S /GoTo /D (table.21) >> >> -% 1978 0 obj +% 1980 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [203.128 451.412 215.083 460.822] -/A << /S /GoTo /D (table.22) >> +/Rect [430.128 483.736 437.102 496.573] +/A << /S /GoTo /D (section.8) >> >> -% 1982 0 obj +% 1981 0 obj << -/D [1980 0 R /XYZ 149.705 753.953 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.566 451.412 199.521 460.822] +/A << /S /GoTo /D (table.21) >> +>> +% 1986 0 obj +<< +/D [1984 0 R /XYZ 149.705 753.953 null] >> % 549 0 obj << -/D [1980 0 R /XYZ 150.705 716.092 null] +/D [1984 0 R /XYZ 150.705 716.092 null] >> -% 1979 0 obj +% 1983 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1985 0 obj +% 1988 0 obj << /Type /Page -/Contents 1986 0 R -/Resources 1984 0 R +/Contents 1989 0 R +/Resources 1987 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1975 0 R ->> -% 1987 0 obj -<< -/D [1985 0 R /XYZ 98.895 753.953 null] ->> -% 1988 0 obj -<< -/D [1985 0 R /XYZ 314.14 120.326 null] +/Parent 1976 0 R +/Annots [ 1982 0 R ] >> -% 1984 0 obj +% 1982 0 obj << -/Font << /F231 1025 0 R /F84 675 0 R /F78 674 0 R /F75 673 0 R >> -/ProcSet [ /PDF /Text ] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [181.889 616.012 190.059 623.484] +/A << /S /GoTo /D (cite.BERTACCINIFILIPPONE) >> >> % 1990 0 obj << -/Type /Page -/Contents 1991 0 R -/Resources 1989 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1975 0 R ->> -% 1992 0 obj -<< -/D [1990 0 R /XYZ 149.705 753.953 null] +/D [1988 0 R /XYZ 98.895 753.953 null] >> -% 1983 0 obj +% 1977 0 obj << -/D [1990 0 R /XYZ -3779.305 719.08 null] +/D [1988 0 R /XYZ 418.648 120.326 null] >> -% 1989 0 obj +% 1987 0 obj << -/Font << /F231 1025 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1998 0 obj +% 1997 0 obj << /Type /Page -/Contents 1999 0 R -/Resources 1997 0 R +/Contents 1998 0 R +/Resources 1996 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1975 0 R -/Annots [ 1993 0 R 1994 0 R 1995 0 R 1996 0 R ] +/Parent 1976 0 R +/Annots [ 1992 0 R 1993 0 R 1994 0 R 1995 0 R ] >> -% 1993 0 obj +% 1992 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [314.678 576.377 392.197 588.437] +/Rect [365.487 576.377 443.006 588.437] /A << /S /GoTo /D (spdata) >> >> -% 1994 0 obj +% 1993 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [395.856 505.741 462.914 517.801] +/Rect [446.665 505.741 518.953 517.801] /A << /S /GoTo /D (precdata) >> >> -% 1995 0 obj +% 1994 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.454 435.105 438.512 447.165] +/Rect [422.264 435.105 489.322 447.165] /A << /S /GoTo /D (descdata) >> >> -% 1996 0 obj +% 1995 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [317.418 128.475 384.475 140.535] +/Rect [368.227 128.475 440.515 140.535] /A << /S /GoTo /D (precdata) >> >> -% 2000 0 obj +% 1999 0 obj << -/D [1998 0 R /XYZ 98.895 753.953 null] +/D [1997 0 R /XYZ 149.705 753.953 null] >> % 553 0 obj << -/D [1998 0 R /XYZ 99.895 716.092 null] +/D [1997 0 R /XYZ 150.705 716.092 null] >> -% 1997 0 obj +% 1996 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2002 0 obj +% 2001 0 obj << /Type /Page -/Contents 2003 0 R -/Resources 2001 0 R +/Contents 2002 0 R +/Resources 2000 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1975 0 R +/Parent 1976 0 R >> -% 2004 0 obj +% 2003 0 obj << -/D [2002 0 R /XYZ 149.705 753.953 null] +/D [2001 0 R /XYZ 98.895 753.953 null] >> -% 2001 0 obj +% 2000 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2010 0 obj +% 2009 0 obj << /Type /Page -/Contents 2011 0 R -/Resources 2009 0 R +/Contents 2010 0 R +/Resources 2008 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2013 0 R -/Annots [ 2005 0 R 2006 0 R 2007 0 R 2008 0 R ] +/Parent 1976 0 R +/Annots [ 2004 0 R 2005 0 R 2006 0 R 2007 0 R ] >> -% 2005 0 obj +% 2004 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 573.77 387.374 585.83] +/Rect [371.126 573.77 443.414 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2006 0 obj +% 2005 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 517.98 418.548 530.039] +/Rect [393.303 517.98 469.357 530.039] /A << /S /GoTo /D (vdata) >> >> -% 2007 0 obj +% 2006 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.013 462.189 391.071 474.248] +/Rect [374.822 462.189 441.88 474.248] /A << /S /GoTo /D (descdata) >> >> -% 2008 0 obj +% 2007 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 272.899 418.548 284.958] +/Rect [393.303 272.899 469.357 284.958] /A << /S /GoTo /D (vdata) >> >> -% 2012 0 obj +% 2011 0 obj << -/D [2010 0 R /XYZ 98.895 753.953 null] +/D [2009 0 R /XYZ 149.705 753.953 null] >> % 557 0 obj << -/D [2010 0 R /XYZ 99.895 716.092 null] +/D [2009 0 R /XYZ 150.705 716.092 null] >> -% 2009 0 obj +% 2008 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2016 0 obj +% 2014 0 obj << /Type /Page -/Contents 2017 0 R -/Resources 2015 0 R +/Contents 2015 0 R +/Resources 2013 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2013 0 R -/Annots [ 2014 0 R ] +/Parent 2017 0 R +/Annots [ 2012 0 R ] >> -% 2014 0 obj +% 2012 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 573.77 438.184 585.83] +/Rect [320.317 573.77 392.605 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2018 0 obj +% 2016 0 obj << -/D [2016 0 R /XYZ 149.705 753.953 null] +/D [2014 0 R /XYZ 98.895 753.953 null] >> % 561 0 obj << -/D [2016 0 R /XYZ 150.705 716.092 null] +/D [2014 0 R /XYZ 99.895 716.092 null] >> -% 2015 0 obj +% 2013 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 2020 0 obj +% 2019 0 obj << /Type /Page -/Contents 2021 0 R -/Resources 2019 0 R +/Contents 2020 0 R +/Resources 2018 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2013 0 R +/Parent 2017 0 R >> -% 2022 0 obj +% 2021 0 obj << -/D [2020 0 R /XYZ 98.895 753.953 null] +/D [2019 0 R /XYZ 149.705 753.953 null] >> % 565 0 obj << -/D [2020 0 R /XYZ 99.895 716.092 null] +/D [2019 0 R /XYZ 150.705 716.092 null] >> -% 2019 0 obj +% 2018 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2026 0 obj +% 2025 0 obj << /Type /Page -/Contents 2027 0 R -/Resources 2025 0 R +/Contents 2026 0 R +/Resources 2024 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2013 0 R -/Annots [ 2023 0 R 2024 0 R ] +/Parent 2017 0 R +/Annots [ 2022 0 R 2023 0 R ] >> -% 2023 0 obj +% 2022 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 573.77 438.184 585.83] +/Rect [320.317 573.77 392.605 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2024 0 obj +% 2023 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 498.054 438.184 510.114] +/Rect [320.317 498.054 392.605 510.114] /A << /S /GoTo /D (precdata) >> >> -% 2028 0 obj +% 2027 0 obj << -/D [2026 0 R /XYZ 149.705 753.953 null] +/D [2025 0 R /XYZ 98.895 753.953 null] >> % 569 0 obj << -/D [2026 0 R /XYZ 150.705 716.092 null] +/D [2025 0 R /XYZ 99.895 716.092 null] >> -% 2025 0 obj +% 2024 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2030 0 obj +% 2029 0 obj << /Type /Page -/Contents 2031 0 R -/Resources 2029 0 R +/Contents 2030 0 R +/Resources 2028 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2013 0 R +/Parent 2017 0 R >> -% 2032 0 obj +% 2031 0 obj << -/D [2030 0 R /XYZ 98.895 753.953 null] +/D [2029 0 R /XYZ 149.705 753.953 null] >> % 573 0 obj << -/D [2030 0 R /XYZ 99.895 716.092 null] +/D [2029 0 R /XYZ 150.705 716.092 null] >> -% 2029 0 obj +% 2028 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2037 0 obj +% 2036 0 obj << /Type /Page -/Contents 2038 0 R -/Resources 2036 0 R +/Contents 2037 0 R +/Resources 2035 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2013 0 R -/Annots [ 2033 0 R 2034 0 R ] +/Parent 2017 0 R +/Annots [ 2032 0 R 2033 0 R ] >> -% 2033 0 obj +% 2032 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.973 275.278 386.249 288.868] +/Rect [329.163 275.278 335.44 288.868] /A << /S /GoTo /D (Hfootnote.5) >> >> -% 2034 0 obj +% 2033 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 134.696 420.271 146.755] +/Rect [291.943 134.696 369.462 146.755] /A << /S /GoTo /D (spdata) >> >> -% 2039 0 obj +% 2038 0 obj << -/D [2037 0 R /XYZ 149.705 753.953 null] +/D [2036 0 R /XYZ 98.895 753.953 null] >> % 577 0 obj << -/D [2037 0 R /XYZ 150.705 716.092 null] +/D [2036 0 R /XYZ 99.895 716.092 null] +>> +% 2039 0 obj +<< +/D [2036 0 R /XYZ 99.895 444.811 null] >> endstream endobj -2050 0 obj +2049 0 obj << -/Length 7172 +/Length 7179 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F75 9.9626 Tf 99.895 706.129 Td [(prec)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.867 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.866 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 658.507 cm +1 0 0 1 360.068 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 312.397 658.308 Td [(prec)]TJ +/F131 9.9626 Tf 363.206 658.308 Td [(Tprec)]TJ ET q -1 0 0 1 333.945 658.507 cm +1 0 0 1 389.985 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 337.084 658.308 Td [(type)]TJ +/F131 9.9626 Tf 393.124 658.308 Td [(type)]TJ 0 g 0 G /F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -258.11 -22.202 Td [(b)]TJ +/F75 9.9626 Tf -263.34 -22.202 Td [(b)]TJ 0 g 0 G -/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.687 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 588.484 cm +1 0 0 1 410.618 588.484 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 362.947 588.285 Td [(T)]TJ +/F131 9.9626 Tf 413.756 588.285 Td [(T)]TJ ET q -1 0 0 1 368.804 588.484 cm +1 0 0 1 419.614 588.484 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 371.943 588.285 Td [(vect)]TJ +/F131 9.9626 Tf 422.752 588.285 Td [(vect)]TJ ET q -1 0 0 1 393.492 588.484 cm +1 0 0 1 444.301 588.484 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 396.63 588.285 Td [(type)]TJ +/F131 9.9626 Tf 447.439 588.285 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -317.656 -22.202 Td [(x)]TJ 0 g 0 G -/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.253 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.252 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 518.461 cm +1 0 0 1 410.618 518.461 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 362.947 518.262 Td [(T)]TJ +/F131 9.9626 Tf 413.756 518.262 Td [(T)]TJ ET q -1 0 0 1 368.804 518.461 cm +1 0 0 1 419.614 518.461 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 371.943 518.262 Td [(vect)]TJ +/F131 9.9626 Tf 422.752 518.262 Td [(vect)]TJ ET q -1 0 0 1 393.492 518.461 cm +1 0 0 1 444.301 518.461 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 396.63 518.262 Td [(type)]TJ +/F131 9.9626 Tf 447.439 518.262 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -317.656 -22.203 Td [(eps)]TJ 0 g 0 G -/F84 9.9626 Tf 20.165 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 20.164 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.907 -22.203 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -22.203 Td [(desc)]TJ ET q -1 0 0 1 120.408 426.236 cm +1 0 0 1 171.218 426.236 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F75 9.9626 Tf 123.397 426.036 Td [(a)]TJ +/F75 9.9626 Tf 174.207 426.036 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 378.415 cm +1 0 0 1 360.068 378.415 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 312.397 378.216 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 378.216 Td [(desc)]TJ ET q -1 0 0 1 333.945 378.415 cm +1 0 0 1 384.755 378.415 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 337.084 378.216 Td [(type)]TJ +/F131 9.9626 Tf 387.893 378.216 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -258.11 -22.203 Td [(itmax)]TJ 0 g 0 G -/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.22 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.743 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(1000.)]TJ -77.275 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.744 0 Td [(\025)]TJ/F84 9.9626 Tf 10.961 0 Td [(1.)]TJ +/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.221 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.744 0 Td [(=)]TJ/F84 9.9626 Tf 10.961 0 Td [(1000.)]TJ -77.275 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.35 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.743 0 Td [(\025)]TJ/F84 9.9626 Tf 10.962 0 Td [(1.)]TJ 0 g 0 G /F75 9.9626 Tf -205.961 -22.202 Td [(itrace)]TJ 0 g 0 G -/F84 9.9626 Tf 0.98 0 0 1 129.773 274.035 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 138.672 274.035 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 149.634 274.035 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 419.702 274.035 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 180.583 274.035 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 189.481 274.035 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 200.443 274.035 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 470.511 274.035 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ 0 g 0 G -/F75 9.9626 Tf -109.554 -34.158 Td [(irst)]TJ +/F75 9.9626 Tf -109.553 -34.158 Td [(irst)]TJ 0 g 0 G -/F84 9.9626 Tf 19.527 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(r)18(estart)-250(parameter)74(.)]TJ 5.38 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.443 132.281 Tm [(V)90(alues:)]TJ/F78 9.9626 Tf 1 0 0 1 162.528 132.281 Tm [(i)-22(r)-35(s)-25(t)]TJ/F134 10.3811 Tf 20.115 0 Td [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 196.049 132.281 Tm [(0.)-694(Th)1(is)-375(is)-375(employed)-375(for)-375(the)-375(BiCGST)72(ABL)-375(or)-374(RGMRES)]TJ 1 0 0 1 124.802 120.326 Tm [(methods,)-250(otherwise)-250(it)-250(is)-250(ignor)18(ed.)]TJ +/F84 9.9626 Tf 19.526 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(r)18(estart)-250(parameter)74(.)]TJ 5.38 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.253 132.281 Tm [(V)90(alues:)]TJ/F78 9.9626 Tf 1 0 0 1 213.338 132.281 Tm [(i)-22(r)-35(s)-25(t)]TJ/F134 10.3811 Tf 20.115 0 Td [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 246.858 132.281 Tm [(0.)-694(This)-375(i)1(s)-375(employed)-375(for)-375(the)-375(BiCGST)72(ABL)-375(or)-375(RG)1(MRES)]TJ 1 0 0 1 175.611 120.326 Tm [(methods,)-250(otherwise)-250(it)-250(is)-250(ignor)18(ed.)]TJ 0 g 0 G - 139.477 -29.888 Td [(163)]TJ + 139.477 -29.888 Td [(162)]TJ 0 g 0 G ET endstream endobj -2056 0 obj +2054 0 obj << -/Length 4580 +/Length 4581 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F75 9.9626 Tf 150.705 706.129 Td [(istop)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(istop)]TJ 0 g 0 G -/F84 9.9626 Tf 27.277 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.012 0 0 1 175.253 658.308 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-247(err)17(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 175.611 646.353 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ +/F84 9.9626 Tf 27.278 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.012 0 0 1 124.443 658.308 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-248(err)18(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 124.802 646.353 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.906 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(x)]TJ 0 g 0 G -/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 558.881 cm +1 0 0 1 359.808 558.881 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 413.756 558.682 Td [(T)]TJ +/F131 9.9626 Tf 362.947 558.682 Td [(T)]TJ ET q -1 0 0 1 419.614 558.881 cm +1 0 0 1 368.804 558.881 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 422.752 558.682 Td [(vect)]TJ +/F131 9.9626 Tf 371.943 558.682 Td [(vect)]TJ ET q -1 0 0 1 444.301 558.881 cm +1 0 0 1 393.492 558.881 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 447.439 558.682 Td [(type)]TJ +/F131 9.9626 Tf 396.63 558.682 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -317.656 -19.925 Td [(iter)]TJ 0 g 0 G -/F84 9.9626 Tf 20.164 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 20.165 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.906 -19.925 Td [(err)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(err)]TJ 0 g 0 G -/F84 9.9626 Tf 17.404 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 17.405 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G /F75 9.9626 Tf -24.907 -19.925 Td [(cond)]TJ 0 g 0 G -/F84 9.9626 Tf 0.985 0 0 1 177.434 403.265 Tm [(An)-253(estimate)-254(of)-253(the)-253(condition)-253(number)-254(of)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 382.801 403.265 Tm [(A)]TJ/F84 9.9626 Tf 0.985 0 0 1 390.119 403.265 Tm [(;)-253(only)-254(available)-253(with)-253(the)]TJ/F78 9.9626 Tf 1 0 0 1 175.696 391.309 Tm [(C)-45(G)]TJ/F84 9.9626 Tf 17.001 0 Td [(method)-250(on)-250(r)18(eal)-250(data.)]TJ -17.086 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-249(as:)-310(a)-249(r)18(eal)-249(number)74(.)-310(A)-249(corr)18(ect)-250(r)18(esult)-249(will)-249(be)-249(gr)18(eater)-250(than)-249(or)-249(equal)]TJ 0.98 0 0 1 175.611 331.534 Tm [(to)-255(one;)-255(if)-255(speci\002ed)-254(for)-255(non-r)18(eal)-255(data,)-254(or)-255(an)-255(err)18(or)-254(occurr)18(ed,)-255(zer)18(o)-254(is)-255(r)18(eturned.)]TJ +/F84 9.9626 Tf 0.985 0 0 1 126.625 403.265 Tm [(An)-253(estimate)-254(of)-253(the)-253(condition)-253(number)-254(of)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 331.992 403.265 Tm [(A)]TJ/F84 9.9626 Tf 0.985 0 0 1 339.309 403.265 Tm [(;)-254(only)-253(available)-253(with)-253(the)]TJ/F78 9.9626 Tf 1 0 0 1 124.887 391.309 Tm [(C)-45(G)]TJ/F84 9.9626 Tf 17.001 0 Td [(method)-250(on)-250(r)18(eal)-250(data.)]TJ -17.086 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-249(as:)-310(a)-249(r)18(eal)-249(number)74(.)-310(A)-249(corr)18(ect)-250(r)18(esult)-249(will)-249(be)-249(gr)18(eater)-250(than)-249(or)-249(equal)]TJ 0.98 0 0 1 124.802 331.534 Tm [(to)-255(one;)-255(if)-255(s)1(peci\002ed)-255(for)-255(non-r)18(eal)-254(data,)-255(or)-255(an)-255(err)18(or)-254(occurr)18(ed,)-255(zer)18(o)-254(is)-255(r)18(eturned.)]TJ 0 g 0 G -/F75 9.9626 Tf 1 0 0 1 150.705 311.608 Tm [(info)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 311.608 Tm [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.865 -173.35 Td [(164)]TJ + 139.866 -173.35 Td [(163)]TJ 0 g 0 G ET endstream endobj -2064 0 obj +2063 0 obj << -/Length 8758 +/Length 8762 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 99.895 706.129 Td [(11.2)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(11.2)-1000(psb)]TJ ET q -1 0 0 1 153.407 706.328 cm +1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 156.993 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf -57.406 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F78 9.9626 Tf 111.157 -22.171 Td [(x)]TJ/F78 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F181 7.8896 Tf 3.589 0 Td [(+)]TJ/F84 7.5716 Tf 6.228 0 Td [(1)]TJ/F181 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F78 9.9626 Tf 11.534 0 Td [(M)]TJ/F179 7.8896 Tf 9.674 4.115 Td [(\000)]TJ/F84 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F181 10.3811 Tf 5.105 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(b)]TJ/F179 10.3811 Tf 6.799 0 Td [(\000)]TJ/F78 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.812 -2.085 Td [(k)]TJ/F181 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F78 9.9626 Tf 16.636 0 Td [(x)]TJ/F78 7.5716 Tf 5.201 -2.085 Td [(k)]TJ/F84 9.9626 Tf 3.992 2.085 Td [(,)]TJ -231.084 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F78 9.9626 Tf 147.599 0 Td [(M)]TJ/F84 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.307 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf -57.407 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F78 9.9626 Tf 111.158 -22.171 Td [(x)]TJ/F78 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F181 7.8896 Tf 3.589 0 Td [(+)]TJ/F84 7.5716 Tf 6.227 0 Td [(1)]TJ/F181 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F78 9.9626 Tf 11.535 0 Td [(M)]TJ/F179 7.8896 Tf 9.673 4.115 Td [(\000)]TJ/F84 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(b)]TJ/F179 10.3811 Tf 6.799 0 Td [(\000)]TJ/F78 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.811 -2.085 Td [(k)]TJ/F181 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F78 9.9626 Tf 16.637 0 Td [(x)]TJ/F78 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F84 9.9626 Tf 3.992 2.085 Td [(,)]TJ -231.084 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F78 9.9626 Tf 147.6 0 Td [(M)]TJ/F84 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.307 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G /F75 9.9626 Tf -14.944 -20.304 Td [(1)]TJ 0 g 0 G -/F84 9.9626 Tf 0.99 0 0 1 109.858 610.193 Tm [(normwise)-252(backwar)18(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 218.894 581.636 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 40.62 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 0.99 0 0 1 160.667 610.193 Tm [(normwise)-253(backwar)19(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 269.703 581.636 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 246.191 584.127 cm +1 0 0 1 297.001 584.127 cm []0 d 0 J 0.398 w 0 0 m 74.372 0 l S Q BT -/F181 10.3811 Tf 246.316 574.802 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.876 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.376 0 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.861 0 Td [(k)]TJ/F181 10.3811 Tf 5.44 0 Td [(\051)]TJ/F134 10.3811 Tf 8.236 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.087 0 Td [(e)-80(p)-25(s)]TJ +/F181 10.3811 Tf 297.125 574.802 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.377 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F181 10.3811 Tf 5.439 0 Td [(\051)]TJ/F134 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F75 9.9626 Tf -235.842 -32.142 Td [(2)]TJ +/F75 9.9626 Tf -235.841 -32.142 Td [(2)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 273.365 523.428 cm +1 0 0 1 324.174 523.428 cm []0 d 0 J 0.398 w 0 0 m 20.025 0 l S Q BT -/F179 10.3811 Tf 273.49 514.103 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +/F179 10.3811 Tf 324.299 514.103 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -/F75 9.9626 Tf -208.668 -32.082 Td [(3)]TJ +/F75 9.9626 Tf -208.667 -32.082 Td [(3)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 15.17 6.744 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 15.169 6.744 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 271.641 462.789 cm +1 0 0 1 322.451 462.789 cm []0 d 0 J 0.398 w 0 0 m 23.472 0 l S Q BT -/F179 10.3811 Tf 271.766 453.464 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.408 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.587 428.217 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 99.895 416.261 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 144.027 416.261 Tm [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 153.866 416.261 Tm [(is)-199(the)-199(tentat)1(ive)-199(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 273.705 416.261 Tm [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.643 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.758 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 328.46 416.261 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 99.895 404.306 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.305 -18.185 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ +/F179 10.3811 Tf 322.575 453.464 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 428.217 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 150.705 416.261 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 194.836 416.261 Tm [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 204.675 416.261 Tm [(is)-199(the)-199(tentative)-198(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 324.514 416.261 Tm [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.642 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 379.269 416.261 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 150.705 404.306 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -18.185 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ ET q -1 0 0 1 150.598 386.32 cm +1 0 0 1 201.407 386.32 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F84 9.9626 Tf 154.71 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-113(o)-112(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-98(s)-97(c)]TJ +/F84 9.9626 Tf 205.52 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-112(o)-113(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ ET q -1 0 0 1 334.087 386.32 cm +1 0 0 1 384.896 386.32 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F84 9.9626 Tf 338.05 386.121 Td [(a)-370(,)-283(i)-108(n)-109(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ +/F84 9.9626 Tf 388.859 386.121 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F75 9.9626 Tf -29.002 -28.653 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -29.001 -28.653 Td [(T)90(ype:)]TJ 0 g 0 G /F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G @@ -28630,301 +28858,301 @@ BT 0 g 0 G 0 -20.431 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -170.787 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 257.028 cm +1 0 0 1 360.068 257.028 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 312.397 256.829 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 256.829 Td [(Tspmat)]TJ ET q -1 0 0 1 344.406 257.028 cm +1 0 0 1 395.216 257.028 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 347.544 256.829 Td [(type)]TJ +/F131 9.9626 Tf 398.354 256.829 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -268.571 -20.431 Td [(prec)]TJ +/F75 9.9626 Tf -268.57 -20.431 Td [(prec)]TJ 0 g 0 G -/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.867 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.866 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 188.777 cm +1 0 0 1 360.068 188.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 312.397 188.577 Td [(prec)]TJ +/F131 9.9626 Tf 363.206 188.577 Td [(Tprec)]TJ ET q -1 0 0 1 333.945 188.777 cm +1 0 0 1 389.985 188.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 337.084 188.577 Td [(type)]TJ +/F131 9.9626 Tf 393.124 188.577 Td [(type)]TJ 0 g 0 G /F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -258.11 -20.431 Td [(b)]TJ +/F75 9.9626 Tf -263.34 -20.431 Td [(b)]TJ 0 g 0 G -/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 218.687 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 120.525 cm +1 0 0 1 410.618 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 362.947 120.326 Td [(T)]TJ +/F131 9.9626 Tf 413.756 120.326 Td [(T)]TJ ET q -1 0 0 1 368.804 120.525 cm +1 0 0 1 419.614 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 371.943 120.326 Td [(vect)]TJ +/F131 9.9626 Tf 422.752 120.326 Td [(vect)]TJ ET q -1 0 0 1 393.492 120.525 cm +1 0 0 1 444.301 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 396.63 120.326 Td [(type)]TJ +/F131 9.9626 Tf 447.439 120.326 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G - -153.272 -29.888 Td [(165)]TJ + -153.273 -29.888 Td [(164)]TJ 0 g 0 G ET endstream endobj -2073 0 obj +2072 0 obj << -/Length 6806 +/Length 6802 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F75 9.9626 Tf 150.705 706.129 Td [(x)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(x)]TJ 0 g 0 G -/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 658.507 cm +1 0 0 1 359.808 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 413.756 658.308 Td [(T)]TJ +/F131 9.9626 Tf 362.947 658.308 Td [(T)]TJ ET q -1 0 0 1 419.614 658.507 cm +1 0 0 1 368.804 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 422.752 658.308 Td [(vect)]TJ +/F131 9.9626 Tf 371.943 658.308 Td [(vect)]TJ ET q -1 0 0 1 444.301 658.507 cm +1 0 0 1 393.492 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 447.439 658.308 Td [(type)]TJ +/F131 9.9626 Tf 396.63 658.308 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -317.656 -19.427 Td [(eps)]TJ 0 g 0 G -/F84 9.9626 Tf 20.164 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 20.165 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.906 -19.427 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.427 Td [(desc)]TJ ET q -1 0 0 1 171.218 571.832 cm +1 0 0 1 120.408 571.832 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F75 9.9626 Tf 174.207 571.633 Td [(a)]TJ +/F75 9.9626 Tf 123.397 571.633 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 360.068 524.012 cm +1 0 0 1 309.258 524.012 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 363.206 523.813 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 523.813 Td [(desc)]TJ ET q -1 0 0 1 384.755 524.012 cm +1 0 0 1 333.945 524.012 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 387.893 523.813 Td [(type)]TJ +/F131 9.9626 Tf 337.084 523.813 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -258.11 -19.428 Td [(itmax)]TJ 0 g 0 G -/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.221 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.744 0 Td [(=)]TJ/F84 9.9626 Tf 10.961 0 Td [(1000.)]TJ -77.275 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.35 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.743 0 Td [(\025)]TJ/F84 9.9626 Tf 10.962 0 Td [(1.)]TJ +/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.22 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.743 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(1000.)]TJ -77.275 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.744 0 Td [(\025)]TJ/F84 9.9626 Tf 10.961 0 Td [(1.)]TJ 0 g 0 G /F75 9.9626 Tf -205.961 -19.428 Td [(itrace)]TJ 0 g 0 G -/F84 9.9626 Tf 0.98 0 0 1 180.583 425.182 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 189.481 425.182 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 200.443 425.182 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 470.511 425.182 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 129.773 425.182 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 138.672 425.182 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 149.634 425.182 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 419.702 425.182 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ 0 g 0 G -/F75 9.9626 Tf -109.553 -31.383 Td [(istop)]TJ +/F75 9.9626 Tf -109.554 -31.383 Td [(istop)]TJ 0 g 0 G -/F84 9.9626 Tf 27.277 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.012 0 0 1 175.253 286.204 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-247(err)17(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 175.611 274.248 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ +/F84 9.9626 Tf 27.278 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.012 0 0 1 124.443 286.204 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-248(err)18(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 124.802 274.248 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.906 -19.427 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -19.427 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.427 Td [(x)]TJ 0 g 0 G -/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 187.773 cm +1 0 0 1 359.808 187.773 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 413.756 187.573 Td [(T)]TJ +/F131 9.9626 Tf 362.947 187.573 Td [(T)]TJ ET q -1 0 0 1 419.614 187.773 cm +1 0 0 1 368.804 187.773 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 422.752 187.573 Td [(vect)]TJ +/F131 9.9626 Tf 371.943 187.573 Td [(vect)]TJ ET q -1 0 0 1 444.301 187.773 cm +1 0 0 1 393.492 187.773 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 447.439 187.573 Td [(type)]TJ +/F131 9.9626 Tf 396.63 187.573 Td [(type)]TJ 0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -317.656 -19.427 Td [(iter)]TJ 0 g 0 G -/F84 9.9626 Tf 20.164 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 20.165 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G - 139.477 -29.888 Td [(166)]TJ + 139.477 -29.888 Td [(165)]TJ 0 g 0 G ET endstream endobj -2077 0 obj +2076 0 obj << -/Length 1090 +/Length 1089 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F75 9.9626 Tf 99.895 706.129 Td [(err)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(err)]TJ 0 g 0 G -/F84 9.9626 Tf 17.405 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 17.404 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.866 -500.124 Td [(167)]TJ + 139.865 -500.124 Td [(166)]TJ 0 g 0 G ET endstream endobj -2087 0 obj +2086 0 obj << -/Length 8172 +/Length 8162 >> stream 0 g 0 G 0 g 0 G BT -/F75 14.3462 Tf 150.705 706.042 Td [(12)-1000(Extensions)]TJ/F84 9.9626 Tf 0.987 0 0 1 150.396 683.34 Tm [(The)-254(EXT)75(,)-254(CUDA)-254(and)-253(RSB)-254(subdir)18(ectories)-254(contains)-254(a)-254(set)-254(of)-253(extensions)-254(to)-254(the)-254(base)]TJ 1.02 0 0 1 150.705 671.385 Tm [(library)109(.)-500(Th)1(e)-311(extensions)-310(pr)18(ovide)-311(additi)1(onal)-311(storage)-310(formats)-310(beyond)-310(the)-311(ones)]TJ 1 0 0 1 150.705 659.43 Tm [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ +/F75 14.3462 Tf 99.895 706.042 Td [(12)-1000(Extensions)]TJ/F84 9.9626 Tf 0.987 0 0 1 99.587 683.34 Tm [(The)-254(EXT)75(,)-254(CUDA)-254(and)-253(RSB)-254(subdir)18(ectories)-254(contains)-254(a)-254(set)-253(of)-254(extensions)-254(to)-254(the)-254(base)]TJ 1.02 0 0 1 99.895 671.385 Tm [(library)109(.)-500(The)-310(extensions)-310(pr)18(ovide)-311(additional)-310(storage)-310(formats)-310(beyond)-310(the)-311(ones)]TJ 1 0 0 1 99.895 659.43 Tm [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ 0 g 0 G /F75 9.9626 Tf 0 -19.102 Td [(SPGPU)]TJ 0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 189.997 640.328 Tm [(a)-255(CUDA)-255(library)-255(originally)-254(published)-255(as)]TJ +/F84 9.9626 Tf 1.02 0 0 1 139.188 640.328 Tm [(a)-255(CUDA)-255(library)-255(original)1(ly)-255(published)-255(as)]TJ 0 1 0 0 k 0 1 0 0 K -/F131 9.9626 Tf 1 0 0 1 369.934 640.328 Tm [(https://code.google.com/)]TJ -194.323 -11.955 Td [(p/spgpu/)]TJ +/F131 9.9626 Tf 1 0 0 1 319.124 640.328 Tm [(https://code.google.com/)]TJ -194.322 -11.955 Td [(p/spgpu/)]TJ 0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 221.323 628.373 Tm [(and)-381(now)-380(included)-381(in)-381(the)]TJ/F131 9.9626 Tf 1 0 0 1 340.526 628.373 Tm [(cuda)]TJ/F84 9.9626 Tf 1.02 0 0 1 365.316 628.373 Tm [(subdir)73(,)-415(for)-381(computations)-380(on)]TJ 1 0 0 1 175.611 616.418 Tm [(NVIDIA)-250(GPUs;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 170.513 628.373 Tm [(and)-381(now)-380(included)-381(in)-381(the)]TJ/F131 9.9626 Tf 1 0 0 1 289.717 628.373 Tm [(cuda)]TJ/F84 9.9626 Tf 1.02 0 0 1 314.507 628.373 Tm [(subdir)73(,)-415(for)-381(computations)-380(on)]TJ 1 0 0 1 124.802 616.418 Tm [(NVIDIA)-250(GPUs;)]TJ 0 g 0 G -/F75 9.9626 Tf -24.906 -19.514 Td [(LIBRSB)]TJ +/F75 9.9626 Tf -24.907 -19.514 Td [(LIBRSB)]TJ 0 g 0 G 0 1 0 0 k 0 1 0 0 K /F131 9.9626 Tf 41.514 0 Td [(http://sourceforge.net/projects/librsb/)]TJ 0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 396.202 596.904 Tm [(,)-324(for)-309(computations)-308(on)]TJ 1 0 0 1 175.611 584.949 Tm [(multicor)18(e)-250(parallel)-250(machines.)]TJ 1.02 0 0 1 150.396 565.847 Tm [(The)-350(infrastr)8(uctur)18(e)-350(laid)-350(out)-350(in)-349(the)-350(base)-350(library)-350(to)-350(allow)-349(for)-350(these)-350(extensions)]TJ 1.02 0 0 1 150.705 553.891 Tm [(is)-306(detailed)-306(in)-306(the)-306(r)18(efer)17(ences)-306([)]TJ +/F84 9.9626 Tf 1.02 0 0 1 345.393 596.904 Tm [(,)-324(for)-309(computations)-308(on)]TJ 1 0 0 1 124.802 584.949 Tm [(multicor)18(e)-250(parallel)-250(machines.)]TJ 1.02 0 0 1 99.587 565.847 Tm [(The)-350(infrastr)8(uctur)18(e)-350(laid)-350(out)-350(in)-349(the)-350(base)-350(library)-350(to)-350(allow)-349(for)-350(these)-350(extensions)]TJ 1.02 0 0 1 99.895 553.891 Tm [(is)-306(detailed)-306(in)-306(the)-306(r)18(efer)17(ences)-306([)]TJ 1 0 0 rg 1 0 0 RG - 1 0 0 1 281.586 553.891 Tm [(20)]TJ + 1 0 0 1 230.777 553.891 Tm [(21)]TJ 0 g 0 G - 1.02 0 0 1 291.549 553.891 Tm [(,)]TJ + 1.02 0 0 1 240.739 553.891 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - 1 0 0 1 297.199 553.891 Tm [(21)]TJ + 1 0 0 1 246.389 553.891 Tm [(22)]TJ 0 g 0 G - 1.02 0 0 1 307.161 553.891 Tm [(,)]TJ + 1.02 0 0 1 256.352 553.891 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - 1 0 0 1 312.812 553.891 Tm [(10)]TJ + 1 0 0 1 262.002 553.891 Tm [(11)]TJ 0 g 0 G - 1.02 0 0 1 322.774 553.891 Tm [(];)-336(the)-306(CUDA-speci\002c)-306(data)-306(formats)-306(ar)17(e)]TJ 1 0 0 1 150.705 541.936 Tm [(described)-250(in)-250([)]TJ + 1.02 0 0 1 271.965 553.891 Tm [(];)-336(the)-306(CUDA-speci\002c)-306(data)-306(formats)-306(ar)17(e)]TJ 1 0 0 1 99.895 541.936 Tm [(described)-250(in)-250([)]TJ 1 0 0 rg 1 0 0 RG - [(22)]TJ + [(23)]TJ 0 g 0 G - [(].)]TJ/F75 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F84 9.9626 Tf 1.01 0 0 1 150.316 494.032 Tm [(A)-249(sample)-248(application)-249(using)-249(the)-249(PSBLAS)-248(extensions)-249(will)-249(contain)-248(the)-249(following)]TJ 1 0 0 1 150.705 482.077 Tm [(steps:)]TJ + [(].)]TJ/F75 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F84 9.9626 Tf 1.01 0 0 1 99.507 494.032 Tm [(A)-249(sample)-248(application)-249(using)-249(the)-249(PSBLAS)-248(extensions)-249(will)-249(contain)-248(the)-249(following)]TJ 1 0 0 1 99.895 482.077 Tm [(steps:)]TJ 0 g 0 G 13.888 -19.102 Td [(\225)]TJ 0 g 0 G -/F131 9.9626 Tf 11.018 0 Td [(USE)]TJ/F84 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F131 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F84 9.9626 Tf 57.534 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_cuda_mod)]TJ/F84 9.9626 Tf 62.764 0 Td [(\051;)]TJ +/F131 9.9626 Tf 11.019 0 Td [(USE)]TJ/F84 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F131 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F84 9.9626 Tf 57.533 0 Td [(,)]TJ/F131 9.9626 Tf 4.982 0 Td [(psb_cuda_mod)]TJ/F84 9.9626 Tf 62.764 0 Td [(\051;)]TJ 0 g 0 G - -264.515 -19.514 Td [(\225)]TJ + -264.516 -19.514 Td [(\225)]TJ 0 g 0 G - 0.98 0 0 1 175.611 443.461 Tm [(Declar)18(e)-214(a)]TJ/F78 9.9626 Tf 0.98 0 0 1 217.329 443.461 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 238.952 443.461 Tm [(variable)-215(of)-214(the)-215(necessary)-214(type)-215(\050e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 388.614 443.461 Tm [(psb_d_ell_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.22 443.461 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 431.506 Tm [(psb_d_hlg_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(,)]TJ/F131 9.9626 Tf 4.982 0 Td [(psb_d_vect_cuda)]TJ/F84 9.9626 Tf 78.455 0 Td [(\051;)]TJ + 0.98 0 0 1 124.802 443.461 Tm [(Declar)18(e)-214(a)]TJ/F78 9.9626 Tf 0.98 0 0 1 166.52 443.461 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 188.142 443.461 Tm [(variable)-215(of)-214(the)-215(necessary)-215(typ)1(e)-215(\050e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 337.804 443.461 Tm [(psb_d_ell_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 442.411 443.461 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 431.506 Tm [(psb_d_hlg_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_d_vect_cuda)]TJ/F84 9.9626 Tf 78.455 0 Td [(\051;)]TJ 0 g 0 G -199.062 -19.513 Td [(\225)]TJ 0 g 0 G - 0.98 0 0 1 175.611 411.993 Tm [(Pass)-215(the)-215(mold)-214(variable)-215(to)-215(the)-215(base)-214(library)-215(interface)-215(wher)19(e)-215(needed)-215(to)-215(ensur)19(e)]TJ 1 0 0 1 175.611 400.037 Tm [(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ 1.02 0 0 1 150.705 380.935 Tm [(Suppose)-302(you)-301(want)-302(to)-301(use)-302(the)-302(CUDA-enabled)-301(ELLP)90(ACK)-302(data)-301(str)8(uctur)17(e;)-330(you)]TJ 1.02 0 0 1 150.286 368.98 Tm [(would)-323(u)1(se)-323(a)-322(piece)-323(of)-322(code)-323(like)-322(this)-323(\050and)-322(don't)-323(for)18(get,)-342(you)-322(need)-323(CUDA-side)]TJ 1 0 0 1 150.426 357.025 Tm [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ + 0.98 0 0 1 124.802 411.993 Tm [(Pass)-215(the)-215(mo)1(ld)-215(variable)-215(to)-215(the)-214(base)-215(library)-215(interface)-215(wher)19(e)-215(needed)-215(to)-215(ensur)19(e)]TJ 1 0 0 1 124.802 400.037 Tm [(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ 1.02 0 0 1 99.895 380.935 Tm [(Suppose)-302(you)-301(want)-302(to)-302(u)1(se)-302(the)-302(CUDA-enabled)-301(ELLP)90(ACK)-302(data)-301(str)8(uctur)17(e;)-330(you)]TJ 1.02 0 0 1 99.477 368.98 Tm [(would)-322(use)-323(a)-322(piece)-323(of)-322(code)-323(like)-322(this)-323(\050and)-322(don't)-323(for)18(get,)-342(you)-322(need)-323(CUDA-side)]TJ 1 0 0 1 99.616 357.025 Tm [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 120.326 cm +1 0 0 1 99.895 120.326 cm 0 0 343.711 225.156 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F231 8.9664 Tf 153.694 334.821 Td [(program)]TJ +/F231 8.9664 Tf 102.884 334.821 Td [(program)]TJ 0 g 0 G [-525(my_cuda_test)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.414 -10.959 Td [(use)]TJ + 9.415 -10.959 Td [(use)]TJ 0 g 0 G [-525(psb_base_mod)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29083,15 +29311,15 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F84 9.9626 Tf 151.98 -58.082 Td [(168)]TJ +/F84 9.9626 Tf 151.98 -58.082 Td [(167)]TJ 0 g 0 G ET endstream endobj -2101 0 obj +2100 0 obj << -/Length 9201 +/Length 9251 >> stream 0 g 0 G @@ -29099,7 +29327,7 @@ stream 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG q -1 0 0 1 99.895 421.197 cm +1 0 0 1 150.705 421.197 cm 0 0 343.711 290.909 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29108,7 +29336,7 @@ Q 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG BT -/F279 8.9664 Tf 112.299 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ +/F279 8.9664 Tf 163.108 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29231,7 +29459,7 @@ BT 0 g 0 G [-525(psb_spmm\050done,agpu,xg,dzero,bg,desc_a,info\051)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - -9.415 -32.877 Td [(9999)]TJ + -9.414 -32.877 Td [(9999)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29239,7 +29467,7 @@ BT [-525(continue)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.415 -10.959 Td [(if)]TJ + 9.414 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29321,34 +29549,34 @@ BT 0 -10.959 Td [(stop)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(program)]TJ + -9.414 -10.959 Td [(end)-525(program)]TJ 0 g 0 G [-525(my_cuda_test)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 114.839 403.191 Tm [(A)-337(full)-338(example)-337(of)-337(this)-338(strategy)-337(can)-338(be)-337(seen)-337(in)-338(the)]TJ/F131 9.9626 Tf 1 0 0 1 344.519 403.191 Tm [(test/ext/kernel)]TJ/F84 9.9626 Tf 1.02 0 0 1 426.402 403.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 99.895 391.236 Tm [(test/cuda/kernel)]TJ/F84 9.9626 Tf 1.008 0 0 1 186.064 391.236 Tm [(subdir)18(ectories,)-248(wher)18(e)-247(we)-247(pr)18(ovide)-248(sample)-247(pr)18(ograms)-247(to)-248(test)]TJ 1.003 0 0 1 99.895 379.281 Tm [(the)-250(speed)-249(of)-250(the)-250(sparse)-249(matrix-vector)-250(pr)18(oduct)-249(with)-250(the)-250(various)-249(data)-250(str)8(uctur)18(es)]TJ 1 0 0 1 99.895 367.325 Tm [(included)-250(in)-250(the)-250(library)111(.)]TJ/F75 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F84 9.9626 Tf 0.995 0 0 1 99.507 319.088 Tm [(Access)-250(to)-250(the)-250(facilities)-250(pr)18(ovided)-250(by)-250(the)-250(EXT)-250(library)-251(is)-250(mainly)-250(achieved)-250(thr)18(ough)]TJ 1.02 0 0 1 99.895 307.133 Tm [(the)-335(data)-336(types)-335(that)-335(ar)18(e)-336(pr)18(ovided)-335(within.)-575(The)-335(data)-335(classes)-335(ar)17(e)-335(derived)-335(fr)17(om)]TJ 1.004 0 0 1 99.895 295.178 Tm [(the)-250(base)-249(classes)-250(in)-249(PSBLAS,)-250(thr)18(ough)-249(the)-250(Fortran)-249(2003)-250(mechanism)-249(of)]TJ/F78 9.9626 Tf 1.004 0 0 1 400.534 295.178 Tm [(type)-250(exten-)]TJ 1 0 0 1 99.895 283.222 Tm [(sion)]TJ/F84 9.9626 Tf 19.098 0 Td [([)]TJ +/F84 9.9626 Tf 1.02 0 0 1 165.649 403.191 Tm [(A)-337(full)-338(example)-337(of)-337(this)-338(strategy)-337(can)-338(be)-337(seen)-337(in)-338(the)]TJ/F131 9.9626 Tf 1 0 0 1 395.328 403.191 Tm [(test/ext/kernel)]TJ/F84 9.9626 Tf 1.02 0 0 1 477.212 403.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 391.236 Tm [(test/cuda/kernel)]TJ/F84 9.9626 Tf 1.008 0 0 1 236.874 391.236 Tm [(subdir)18(ectories,)-248(wher)18(e)-247(we)-247(pr)18(ovide)-248(sample)-247(pr)18(ograms)-247(to)-248(test)]TJ 1.003 0 0 1 150.705 379.281 Tm [(the)-250(speed)-249(of)-250(the)-250(s)1(parse)-250(matrix-vector)-250(pr)18(oduct)-249(with)-250(the)-250(various)-249(data)-250(str)8(uctur)18(es)]TJ 1 0 0 1 150.705 367.325 Tm [(included)-250(in)-250(the)-250(library)111(.)]TJ/F75 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F84 9.9626 Tf 0.995 0 0 1 150.316 319.088 Tm [(Access)-250(to)-250(the)-250(facilities)-250(pr)18(ovided)-250(by)-250(the)-250(EXT)-251(libr)1(a)-1(r)1(y)-251(is)-250(mainly)-250(achieved)-250(thr)18(ough)]TJ 1.02 0 0 1 150.705 307.133 Tm [(the)-335(data)-336(ty)1(pes)-336(that)-335(ar)18(e)-336(pr)18(ovided)-335(within.)-575(The)-335(data)-335(classes)-335(ar)17(e)-335(derived)-335(fr)17(om)]TJ 1.004 0 0 1 150.705 295.178 Tm [(the)-249(base)-250(classes)-249(in)-250(PSBLAS,)-249(thr)17(ough)-249(the)-250(Fo)1(rtran)-250(2003)-250(mec)1(hanism)-250(of)]TJ/F78 9.9626 Tf 1.004 0 0 1 451.344 295.178 Tm [(type)-250(e)1(xten-)]TJ 1 0 0 1 150.705 283.222 Tm [(sion)]TJ/F84 9.9626 Tf 19.098 0 Td [([)]TJ 1 0 0 rg 1 0 0 RG - [(17)]TJ + [(18)]TJ 0 g 0 G - [(].)]TJ 1.006 0 0 1 114.839 271.249 Tm [(The)-248(data)-247(classes)-248(ar)18(e)-247(divided)-248(between)-247(the)-248(general)-248(purpose)-247(CPU)-248(extensions,)]TJ 0.993 0 0 1 99.895 259.294 Tm [(the)-252(GPU)-251(interfaces)-252(and)-251(the)-252(RSB)-252(interfaces.)-312(In)-251(the)-252(description)-252(we)-251(will)-252(make)-251(use)]TJ 1 0 0 1 99.895 247.338 Tm [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ + [(].)]TJ 1.006 0 0 1 165.649 271.249 Tm [(The)-248(data)-247(classes)-248(ar)18(e)-247(divided)-248(between)-247(the)-248(general)-248(p)1(urpose)-248(CPU)-248(extensions,)]TJ 0.993 0 0 1 150.705 259.294 Tm [(the)-252(GPU)-251(interfaces)-252(and)-251(the)-252(RSB)-252(interfaces.)-312(In)-251(the)-252(description)-251(we)-252(will)-252(make)-251(use)]TJ 1 0 0 1 150.705 247.338 Tm [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG - [-250(23)]TJ + [-250(22)]TJ 0 g 0 G - [(.)]TJ/F75 11.9552 Tf 0 -29.237 Td [(12.3)-1000(CPU-class)-250(extensions)]TJ/F75 9.9626 Tf 0 -19 Td [(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 99.587 180.101 Tm [(The)-194(ELLP)94(ACK/ITP)94(ACK)-194(format)-194(\050shown)-194(in)-193(Figur)18(e)]TJ + [(.)]TJ/F75 11.9552 Tf 0 -29.237 Td [(12.3)-1000(CPU-class)-250(extensions)]TJ/F75 9.9626 Tf 0 -19 Td [(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.396 180.101 Tm [(The)-194(ELLP)94(ACK/ITP)94(ACK)-194(format)-194(\050shown)-194(in)-193(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-194(6)]TJ 0 g 0 G - [(\051)-194(comprises)-194(two)-193(2-dimensional)]TJ 1.02 0 0 1 99.895 168.146 Tm [(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 130.767 168.146 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 143.951 168.146 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 163.879 168.146 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 177.063 168.146 Tm [(with)]TJ/F131 9.9626 Tf 1 0 0 1 200.445 168.146 Tm [(M)]TJ/F84 9.9626 Tf 1.02 0 0 1 208.399 168.146 Tm [(r)18(ows)-268(and)]TJ/F131 9.9626 Tf 1 0 0 1 253.216 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 287.322 168.146 Tm [(columns,)-274(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 361.667 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 395.772 168.146 Tm [(is)-268(the)-268(max-)]TJ 1.02 0 0 1 99.895 156.191 Tm [(imum)-289(number)-288(of)-289(nonzer)17(os)-288(in)-289(any)-289(r)18(ow)-289([)]TJ/F75 9.9626 Tf 1 0 0 1 279.688 156.191 Tm [(?)]TJ/F84 9.9626 Tf 1.02 0 0 1 284.111 156.191 Tm [(].)-435(Each)-289(r)18(ow)-289(of)-288(the)-289(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 399.875 156.191 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 413.269 156.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 433.407 156.191 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 144.236 Tm [(contains)-357(the)-358(coef)18(\002cients)-357(and)-357(column)-358(indices;)-413(r)17(ows)-357(shorter)-357(than)]TJ/F131 9.9626 Tf 1 0 0 1 394.811 144.236 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 429.823 144.236 Tm [(ar)18(e)]TJ 0.98 0 0 1 99.596 132.281 Tm [(padded)-229(with)-229(zer)19(o)-229(coef)18(\002cients)-229(and)-229(appr)19(opriate)-229(column)-229(indices,)-234(e.g.)-307(the)-229(last)-229(valid)]TJ 1 0 0 1 99.895 120.326 Tm [(one)-250(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ + [(\051)-194(comprises)-194(two)-194(2-dimension)1(a)-1(l)]TJ 1.02 0 0 1 150.705 168.146 Tm [(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 181.577 168.146 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 194.761 168.146 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 214.688 168.146 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 227.872 168.146 Tm [(with)]TJ/F131 9.9626 Tf 1 0 0 1 251.255 168.146 Tm [(M)]TJ/F84 9.9626 Tf 1.02 0 0 1 259.208 168.146 Tm [(r)18(ows)-268(and)]TJ/F131 9.9626 Tf 1 0 0 1 304.026 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 338.131 168.146 Tm [(columns,)-274(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 412.476 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 446.582 168.146 Tm [(is)-268(the)-268(max-)]TJ 1.02 0 0 1 150.705 156.191 Tm [(imum)-289(number)-288(of)-289(nonzer)17(os)-288(in)-289(any)-289(r)18(ow)-289([)]TJ/F75 9.9626 Tf 1 0 0 1 330.497 156.191 Tm [(?)]TJ/F84 9.9626 Tf 1.02 0 0 1 334.921 156.191 Tm [(].)-435(Each)-289(r)18(ow)-289(of)-288(the)-289(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 450.684 156.191 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 464.078 156.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 484.217 156.191 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 144.236 Tm [(contains)-357(the)-358(coef)18(\002cients)-357(and)-357(column)-358(indices;)-413(r)17(ows)-357(shorter)-357(than)]TJ/F131 9.9626 Tf 1 0 0 1 445.62 144.236 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 480.633 144.236 Tm [(ar)18(e)]TJ 0.98 0 0 1 150.406 132.281 Tm [(padded)-229(with)-229(zer)19(o)-229(coef)18(\002cients)-229(and)-229(appr)19(opriate)-229(column)-229(indices,)-234(e.g.)-307(the)-229(last)-229(valid)]TJ 1 0 0 1 150.705 120.326 Tm [(one)-250(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ 0 g 0 G - 164.384 -29.888 Td [(169)]TJ + 164.383 -29.888 Td [(168)]TJ 0 g 0 G ET endstream endobj -2111 0 obj +2109 0 obj << -/Length 4837 +/Length 4816 >> stream 0 g 0 G @@ -29356,32 +29584,32 @@ stream 0 g 0 G 0 g 0 G BT -/F84 9.9626 Tf 189.471 698.871 Td [(T)92(able)-250(23:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 138.662 698.871 Td [(T)92(able)-250(22:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 222.652 684.904 cm +1 0 0 1 171.842 684.904 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q BT -/F84 7.9701 Tf 228.629 678.079 Td [(Name)-3364(Description)]TJ +/F84 7.9701 Tf 177.82 678.079 Td [(Name)-3364(Description)]TJ ET q -1 0 0 1 222.652 675.041 cm +1 0 0 1 171.842 675.041 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q BT -/F84 7.9701 Tf 228.629 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ +/F84 7.9701 Tf 177.82 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ ET q -1 0 0 1 222.652 551.604 cm +1 0 0 1 171.842 551.604 cm []0 d 0 J 0.398 w 0 0 m 199.817 0 l S Q 0 g 0 G 0 g 0 G -1 0 0 1 247.614 395.491 cm +1 0 0 1 196.805 395.491 cm q .33653 0 0 .33653 0 0 cm q @@ -29390,46 +29618,46 @@ q Q Q 0 g 0 G -1 0 0 1 -247.614 -395.491 cm +1 0 0 1 -196.805 -395.491 cm BT -/F84 9.9626 Tf 245.769 373.573 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 194.96 373.573 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G - 0.98 0 0 1 165.649 339.81 Tm [(The)-252(matrix-vector)-252(pr)19(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 282.309 339.81 Tm [(y)]TJ/F181 10.3811 Tf 7.997 0 Td [(=)]TJ/F78 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 317.166 339.81 Tm [(can)-252(be)-252(computed)-251(with)-252(the)-252(code)-252(shown)-252(in)]TJ 1.003 0 0 1 150.316 327.855 Tm [(Alg.)]TJ + 0.98 0 0 1 114.839 339.81 Tm [(The)-252(matrix-vector)-252(pr)19(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 231.499 339.81 Tm [(y)]TJ/F181 10.3811 Tf 7.998 0 Td [(=)]TJ/F78 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 266.356 339.81 Tm [(can)-252(be)-252(computed)-251(with)-252(the)-252(code)-252(shown)-252(in)]TJ 1.003 0 0 1 99.507 327.855 Tm [(Alg.)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G - [(;)-250(it)-250(costs)-250(one)-250(memory)-251(wri)1(te)-251(pe)1(r)-251(oute)1(r)-251(ite)1(ration,)-251(plus)-250(thr)18(ee)-250(memory)-250(r)18(eads)]TJ 1 0 0 1 150.705 315.9 Tm [(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 1.02 0 0 1 165.649 303.412 Tm [(Unless)-327(all)-327(r)18(ows)-327(have)-327(exactly)-326(the)-327(same)-327(number)-327(of)-327(nonzer)18(os,)-347(some)-327(of)-327(the)]TJ 1.02 0 0 1 150.705 291.457 Tm [(coef)18(\002cients)-388(in)-387(the)]TJ/F131 9.9626 Tf 1 0 0 1 235.636 291.457 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 250.035 291.457 Tm [(array)-388(will)-387(be)-388(zer)18(os;)-459(ther)18(efor)17(e)-387(this)-388(data)-388(str)8(uctur)18(e)-388(will)]TJ 1.02 0 0 1 150.705 279.501 Tm [(have)-270(an)-269(over)17(head)-269(both)-270(in)-270(ter)1(ms)-270(of)-270(memory)-269(space)-270(and)-270(r)18(edundant)-270(operations)]TJ 1 0 0 1 150.376 267.546 Tm [(\050multiplications)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ + [(;)-250(it)-250(costs)-250(one)-250(memory)-250(write)-250(per)-250(outer)-250(iteration,)-251(plus)-250(thr)18(ee)-250(memory)-250(r)18(eads)]TJ 1 0 0 1 99.895 315.9 Tm [(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 1.02 0 0 1 114.839 303.412 Tm [(Unless)-327(all)-327(r)18(ows)-327(have)-327(exactly)-327(t)1(he)-327(same)-327(number)-327(of)-327(nonzer)18(os,)-347(some)-327(of)-327(the)]TJ 1.02 0 0 1 99.895 291.457 Tm [(coef)18(\002cients)-388(in)-387(the)]TJ/F131 9.9626 Tf 1 0 0 1 184.827 291.457 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 199.225 291.457 Tm [(array)-388(will)-387(be)-388(zer)18(os;)-459(ther)17(efor)18(e)-388(this)-387(data)-388(str)8(uctur)18(e)-388(will)]TJ 1.02 0 0 1 99.895 279.501 Tm [(have)-270(an)-269(over)17(head)-269(both)-270(in)-270(terms)-269(of)-270(memory)-269(space)-270(and)-270(r)18(edundant)-270(operations)]TJ 1 0 0 1 99.567 267.546 Tm [(\050multiplications)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ 0 g 0 G 12.782 -21.523 Td [(1.)]TJ 0 g 0 G - 1.018 0 0 1 175.303 246.023 Tm [(The)-244(maximum)-245(number)-244(of)-245(nonzer)18(os)-244(per)-245(r)18(ow)-244(is)-245(not)-244(much)-245(lar)18(ger)-244(than)-245(the)]TJ 1 0 0 1 175.611 234.067 Tm [(average;)]TJ + 1.018 0 0 1 124.493 246.023 Tm [(The)-244(maximum)-245(number)-244(of)-245(nonzer)18(os)-244(per)-245(r)18(ow)-244(is)-245(not)-244(much)-245(lar)18(ger)-244(than)-245(the)]TJ 1 0 0 1 124.802 234.067 Tm [(average;)]TJ 0 g 0 G -12.453 -22.056 Td [(2.)]TJ 0 g 0 G - 0.98 0 0 1 175.303 212.011 Tm [(The)-243(r)19(egularity)-243(of)-243(th)1(e)-243(data)-243(str)8(uctur)19(e)-243(allows)-243(for)-242(faster)-243(code,)-245(e.g.)-312(by)-243(allowing)]TJ 1 0 0 1 175.333 200.056 Tm [(vectorization,)-250(ther)18(eby)-250(of)18(fsetting)-250(the)-250(additional)-250(storage)-250(r)18(equir)18(ements.)]TJ 1.02 0 0 1 150.705 178.532 Tm [(In)-323(the)-323(extr)18(eme)-324(case)-323(wher)18(e)-323(the)-323(input)-323(matrix)-323(has)-323(one)-323(full)-323(r)17(ow)91(,)-343(the)-323(ELLP)90(ACK)]TJ 1.01 0 0 1 150.705 166.577 Tm [(str)8(uctur)18(e)-246(would)-246(r)18(equir)17(e)-246(mor)18(e)-246(memory)-246(than)-246(the)-246(normal)-246(2D)-246(array)-246(storage.)-307(The)]TJ 1.02 0 0 1 150.705 154.621 Tm [(ELLP)90(ACK)-246(storage)-245(format)-246(was)-246(very)-246(popular)-245(in)-246(the)-246(vector)-246(computing)-245(days;)-247(in)]TJ 0.98 0 0 1 150.705 142.666 Tm [(modern)-231(CPUs)-231(it)-231(is)-231(not)-231(quite)-231(as)-231(popular)75(,)-236(but)-231(it)-231(is)-231(the)-231(basis)-231(for)-231(many)-231(GPU)-231(formats.)]TJ 1 0 0 1 165.649 130.178 Tm [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_ell_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ + 0.98 0 0 1 124.493 212.011 Tm [(The)-243(r)19(egularity)-243(of)-243(the)-242(data)-243(str)8(uctur)19(e)-243(allows)-243(for)-242(faster)-243(code,)-245(e.g.)-312(by)-243(allowing)]TJ 1 0 0 1 124.523 200.056 Tm [(vectorization,)-250(ther)18(eby)-250(of)18(fsetting)-250(the)-250(additional)-250(storage)-250(r)18(equir)18(ements.)]TJ 1.02 0 0 1 99.895 178.532 Tm [(In)-323(the)-323(extr)17(e)1(me)-324(case)-323(wher)18(e)-323(the)-323(input)-323(matrix)-323(has)-323(one)-323(full)-323(r)17(ow)90(,)-342(the)-323(ELLP)90(ACK)]TJ 1.01 0 0 1 99.895 166.577 Tm [(str)8(uctur)18(e)-246(would)-246(r)17(equ)1(ir)17(e)-246(mor)18(e)-246(memory)-246(than)-246(the)-246(normal)-246(2D)-246(array)-246(storage.)-307(The)]TJ 1.02 0 0 1 99.895 154.621 Tm [(ELLP)90(ACK)-246(storage)-245(format)-246(was)-246(very)-246(popular)-245(in)-246(the)-246(vector)-246(computing)-246(days;)-246(in)]TJ 0.98 0 0 1 99.895 142.666 Tm [(modern)-231(CPUs)-231(it)-231(is)-231(not)-231(quite)-231(as)-231(popular)75(,)-236(but)-231(it)-231(is)-231(the)-231(basis)-231(for)-231(many)-231(GPU)-231(formats.)]TJ 1 0 0 1 114.839 130.178 Tm [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_ell_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ 0 g 0 G - -66.12 -39.74 Td [(170)]TJ + -66.12 -39.74 Td [(169)]TJ 0 g 0 G ET endstream endobj -2094 0 obj +2093 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/mat.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2116 0 R +/PTEX.InfoDict 2115 0 R /BBox [0 0 438 395] /Resources << /ProcSet [ /PDF /ImageC ] /ExtGState << -/R7 2117 0 R +/R7 2116 0 R >>/XObject << -/R8 2118 0 R +/R8 2117 0 R >>>> /Length 3551 /Filter /FlateDecode @@ -29458,7 +29686,7 @@ r ´JXØxèóC¹ù[— S¬ë¹Ïæ^zÝ°.¼¯÷ëFÜ$ä 5`2. L£× 0 · æÁî# Z(Dô¿Sð÷žÅjý²¥¬³*'fÖåÃÝÖ;?buÞîR­rœ†þ—* Ýœ—"@„ÂúaËiý(ÿ« o^ÿ/o*o endstream endobj -2118 0 obj +2117 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29477,15 +29705,15 @@ stream & ÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÀ@ endstream endobj -2122 0 obj +2121 0 obj << -/Length 7547 +/Length 7548 >> stream 0 g 0 G 0 g 0 G 0 g 0 G -1 0 0 1 154.285 609.491 cm +1 0 0 1 205.095 609.491 cm q .52 0 0 .52 0 0 cm q @@ -29494,9 +29722,9 @@ q Q Q 0 g 0 G -1 0 0 1 -154.285 -609.491 cm +1 0 0 1 -205.095 -609.491 cm BT -/F84 9.9626 Tf 152.938 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 203.747 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G @@ -29504,13 +29732,13 @@ BT 0 g 0 G 0 g 0 G 0 g 0 G -/F75 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.537 -10.959 Td [(t)-168(=)-32(0)]TJ/F75 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.792 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F75 8.9664 Tf -102.419 -10.959 Td [(e)-19(n)-20(d)-630(d)-11(o)]TJ/F84 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F75 8.9664 Tf -10.782 -10.959 Td [(e)-19(n)-20(d)-630(d)-12(o)]TJ +/F75 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.536 -10.959 Td [(t)-168(=)-32(0)]TJ/F75 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.793 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F75 8.9664 Tf -102.419 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ/F84 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F75 8.9664 Tf -10.782 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F75 9.9626 Tf 16.498 -17.519 Td [(Algorithm)-250(1:)]TJ/F84 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ +/F75 9.9626 Tf 16.499 -17.519 Td [(Algorithm)-250(1:)]TJ/F84 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -29518,7 +29746,7 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 316.473 cm +1 0 0 1 150.705 316.473 cm 0 0 343.711 126.526 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29527,7 +29755,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F231 8.9664 Tf 112.299 432.339 Td [(type)]TJ +/F231 8.9664 Tf 163.108 432.339 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29547,7 +29775,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29606,43 +29834,43 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.918 Td [(contains)]TJ + -9.415 -21.918 Td [(contains)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 9.414 -10.959 Td [(....)]TJ + 9.415 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.958 Td [(end)-525(type)]TJ + -9.415 -10.958 Td [(end)-525(type)]TJ 0 g 0 G [-525(psb_d_ell_sparse_mat)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F75 9.9626 Tf -12.404 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 99.587 263.883 Tm [(The)]TJ/F78 9.9626 Tf 0.98 0 0 1 118.234 263.883 Tm [(hacked)-236(ELLP)132(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 190.781 263.883 Tm [(\050)]TJ/F75 9.9626 Tf 0.98 0 0 1 194.032 263.883 Tm [(HLL)]TJ/F84 9.9626 Tf 0.98 0 0 1 214.096 263.883 Tm [(\051)-236(format)-236(alleviates)-236(the)-236(main)-236(pr)19(oblem)-236(of)-236(the)-236(ELLP)94(ACK)]TJ 0.989 0 0 1 99.895 251.928 Tm [(format,)-252(that)-253(is,)-252(the)-252(amount)-253(of)-252(memory)-252(r)18(equir)18(ed)-252(by)-252(padding)-252(for)-253(sparse)-252(matrices)]TJ 1 0 0 1 99.895 239.973 Tm [(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 1.02 0 0 1 114.839 227.97 Tm [(The)-421(number)-421(of)-422(elements)-421(allocated)-421(to)-421(padding)-421(is)]TJ/F181 10.3811 Tf 1 0 0 1 345.511 227.97 Tm [([)-24(\050)]TJ/F78 9.9626 Tf 7.403 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf 8.039 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F181 10.3811 Tf 34.072 0 Td [(\051)]TJ/F179 10.3811 Tf 6.874 0 Td [(\000)]TJ/F181 10.3811 Tf 10.919 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf -338.123 -11.955 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.104 0 Td [(\051)-537(=)]TJ/F78 9.9626 Tf 23.266 0 Td [(m)]TJ/F179 10.3811 Tf 10.451 0 Td [(\003)]TJ/F181 10.3811 Tf 7.891 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F179 10.3811 Tf 36.523 0 Td [(\000)]TJ/F78 9.9626 Tf 10.919 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.103 0 Td [(\051)-23(])]TJ/F84 9.9626 Tf 1.02 0 0 1 266.856 216.015 Tm [(for)-382(both)]TJ/F131 9.9626 Tf 1 0 0 1 307.954 216.015 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 322.291 216.015 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 343.374 216.015 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 357.711 216.015 Tm [(arrays,)-416(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 424.587 216.015 Tm [(m)]TJ/F84 9.9626 Tf 1.02 0 0 1 436.341 216.015 Tm [(is)]TJ 0.995 0 0 1 99.895 204.06 Tm [(equal)-252(to)-252(the)-252(number)-252(of)-252(r)18(ows)-252(of)-252(the)-252(matrix)1(,)]TJ/F78 9.9626 Tf 1 0 0 1 287.784 204.06 Tm [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F84 9.9626 Tf 0.995 0 0 1 324.229 204.06 Tm [(is)-252(the)-252(maximum)-252(number)-252(of)]TJ 0.998 0 0 1 99.895 192.104 Tm [(nonzer)18(o)-251(elements)-251(in)-251(every)-251(r)18(ow)-252(and)]TJ/F78 9.9626 Tf 1 0 0 1 257.847 192.104 Tm [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F84 9.9626 Tf 0.998 0 0 1 291.322 192.104 Tm [(is)-251(the)-251(average)-251(number)-252(of)-251(nonzer)18(os.)]TJ 1.017 0 0 1 99.587 180.149 Tm [(Ther)18(efor)17(e)-245(a)-246(single)-245(densely)-246(populated)-245(r)17(ow)-245(can)-246(seriously)-246(af)18(fec)1(t)-246(the)-246(total)-245(size)-246(of)]TJ 1 0 0 1 99.895 168.194 Tm [(the)-250(allocation.)]TJ 1.02 0 0 1 114.839 156.191 Tm [(T)90(o)-335(limit)-336(this)-335(ef)18(fect,)-358(in)-336(t)1(he)-336(HLL)-335(format)-336(we)-335(br)18(eak)-336(the)-335(original)-336(matrix)-335(into)]TJ 0.985 0 0 1 99.895 144.236 Tm [(equally)-254(sized)-253(gr)18(oups)-253(of)-254(r)18(ows)-253(\050called)]TJ/F78 9.9626 Tf 0.985 0 0 1 259.082 144.236 Tm [(hacks)]TJ/F84 9.9626 Tf 0.985 0 0 1 280.514 144.236 Tm [(\051,)-254(and)-253(then)-254(stor)19(e)-254(these)-253(gr)18(oups)-254(as)-253(inde-)]TJ 1.02 0 0 1 99.596 132.281 Tm [(pendent)-249(matrices)-249(in)-249(ELLP)90(ACK)-249(format.)-315(The)-249(gr)18(oups)-249(can)-249(be)-249(arranged)-249(selecting)]TJ 1.02 0 0 1 99.895 120.326 Tm [(r)18(ows)-332(in)-331(an)-331(arbitrarily)-331(manner;)-374(indeed,)-353(if)-331(the)-331(r)18(ows)-332(ar)18(e)-331(sorted)-331(by)-331(decr)17(easing)]TJ +/F75 9.9626 Tf -12.403 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.396 263.883 Tm [(The)]TJ/F78 9.9626 Tf 0.98 0 0 1 169.043 263.883 Tm [(hacked)-236(ELLP)132(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 241.59 263.883 Tm [(\050)]TJ/F75 9.9626 Tf 0.98 0 0 1 244.841 263.883 Tm [(HLL)]TJ/F84 9.9626 Tf 0.98 0 0 1 264.905 263.883 Tm [(\051)-236(format)-236(alleviates)-236(the)-236(main)-236(pr)19(oblem)-236(of)-236(the)-236(ELLP)94(ACK)]TJ 0.989 0 0 1 150.705 251.928 Tm [(format,)-252(that)-253(is,)-252(the)-252(amount)-252(of)-253(memory)-252(r)18(equir)18(ed)-252(by)-252(padding)-252(for)-253(sparse)-252(matrices)]TJ 1 0 0 1 150.705 239.973 Tm [(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 1.02 0 0 1 165.649 227.97 Tm [(The)-421(number)-421(of)-422(elements)-421(allocated)-421(to)-421(padding)-421(is)]TJ/F181 10.3811 Tf 1 0 0 1 396.321 227.97 Tm [([)-24(\050)]TJ/F78 9.9626 Tf 7.402 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf 8.039 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F181 10.3811 Tf 34.072 0 Td [(\051)]TJ/F179 10.3811 Tf 6.874 0 Td [(\000)]TJ/F181 10.3811 Tf 10.919 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf -338.122 -11.955 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.103 0 Td [(\051)-537(=)]TJ/F78 9.9626 Tf 23.267 0 Td [(m)]TJ/F179 10.3811 Tf 10.451 0 Td [(\003)]TJ/F181 10.3811 Tf 7.89 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F179 10.3811 Tf 36.523 0 Td [(\000)]TJ/F78 9.9626 Tf 10.92 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.103 0 Td [(\051)-23(])]TJ/F84 9.9626 Tf 1.02 0 0 1 317.666 216.015 Tm [(for)-382(both)]TJ/F131 9.9626 Tf 1 0 0 1 358.763 216.015 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.101 216.015 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 394.183 216.015 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 408.521 216.015 Tm [(arrays,)-416(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 475.396 216.015 Tm [(m)]TJ/F84 9.9626 Tf 1.02 0 0 1 487.15 216.015 Tm [(is)]TJ 0.995 0 0 1 150.705 204.06 Tm [(equal)-252(to)-252(the)-252(number)-252(of)-252(r)18(ows)-252(of)-252(the)-251(matrix,)]TJ/F78 9.9626 Tf 1 0 0 1 338.593 204.06 Tm [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F84 9.9626 Tf 0.995 0 0 1 375.039 204.06 Tm [(is)-252(the)-252(maximum)-252(number)-252(of)]TJ 0.998 0 0 1 150.705 192.104 Tm [(nonzer)18(o)-251(elements)-251(in)-251(every)-251(r)18(ow)-252(and)]TJ/F78 9.9626 Tf 1 0 0 1 308.656 192.104 Tm [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F84 9.9626 Tf 0.998 0 0 1 342.132 192.104 Tm [(is)-251(the)-251(average)-251(number)-251(of)-252(nonzer)18(os.)]TJ 1.017 0 0 1 150.396 180.149 Tm [(Ther)18(efor)17(e)-245(a)-246(single)-245(densely)-246(populated)-245(r)17(ow)-245(can)-246(seriously)-246(af)18(fect)-245(the)-246(total)-245(size)-246(of)]TJ 1 0 0 1 150.705 168.194 Tm [(the)-250(allocation.)]TJ 1.02 0 0 1 165.649 156.191 Tm [(T)90(o)-335(limit)-336(this)-335(ef)18(fect,)-358(in)-335(the)-336(HLL)-335(format)-336(we)-335(br)18(eak)-336(the)-335(original)-336(matrix)-335(into)]TJ 0.985 0 0 1 150.705 144.236 Tm [(equally)-254(size)1(d)-254(gr)18(oups)-253(of)-254(r)18(ows)-253(\050called)]TJ/F78 9.9626 Tf 0.985 0 0 1 309.891 144.236 Tm [(hacks)]TJ/F84 9.9626 Tf 0.985 0 0 1 331.323 144.236 Tm [(\051,)-254(and)-253(then)-254(stor)19(e)-254(these)-254(gr)19(oups)-254(as)-253(inde-)]TJ 1.02 0 0 1 150.406 132.281 Tm [(pendent)-249(matrices)-249(in)-249(ELLP)90(ACK)-249(format.)-315(The)-249(gr)18(oups)-249(can)-249(be)-249(arranged)-249(selecting)]TJ 1.02 0 0 1 150.705 120.326 Tm [(r)18(ows)-331(in)-332(an)-331(arbitrarily)-331(manner;)-374(indeed,)-353(if)-331(the)-331(r)18(ows)-332(ar)18(e)-331(sorted)-331(by)-331(decr)17(easing)]TJ 0 g 0 G - 1 0 0 1 264.279 90.438 Tm [(171)]TJ + 1 0 0 1 315.088 90.438 Tm [(170)]TJ 0 g 0 G ET endstream endobj -2096 0 obj +2095 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/ell.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2133 0 R +/PTEX.InfoDict 2132 0 R /BBox [0 0 447 205] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2134 0 R +/R7 2133 0 R >>/XObject << -/R8 2135 0 R ->>/Font << /R9 2136 0 R/R11 2137 0 R>> +/R8 2134 0 R +>>/Font << /R9 2135 0 R/R11 2136 0 R>> >> /Length 2281 /Filter /FlateDecode @@ -29654,7 +29882,7 @@ x Íy-?ýíùï¯ßñGz·5®„ùËéOß}àMžså¾Atû·ÔÇÿ|THF endstream endobj -2135 0 obj +2134 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29673,7 +29901,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;Y¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà endstream endobj -2139 0 obj +2138 0 obj << /Filter /FlateDecode /Length 171 @@ -29682,7 +29910,7 @@ stream xœ]Mƒ F÷œ‚àOÛĸ±mš¶Àa0,‚¸èí; vÑ„ß›|ˆ~¸ÖD.ÁÁ #×ƪ€‹[ q2–•WâNy‡Yz&ú›ôïGNÔßåŒâYžóM¹9à.^i'dmQt­ÖC«þžªMõž¬)YŸ:2èDØ^26Y?‚iRªt4à°†€6æÞ¹Wêc,þ¾æO§Å¾=+V endstream endobj -2141 0 obj +2140 0 obj << /Filter /FlateDecode /Length 191 @@ -29692,7 +29920,7 @@ x â ±—Uˆ}íuT-mËüǸT¯)ÏuɺDÞyøýC ±¸(Š|iÑ_À endstream endobj -2142 0 obj +2141 0 obj << /Filter /FlateDecode /Length1 11124 @@ -29741,7 +29969,7 @@ B “žÑ endstream endobj -2143 0 obj +2142 0 obj << /Filter /FlateDecode /Length1 3512 @@ -29757,18 +29985,18 @@ a lþ'÷uþoL|E÷¾r«Ço¸ß9®ñߺӣú¾Á( endstream endobj -2150 0 obj +2149 0 obj << -/Length 8640 +/Length 8621 >> stream 0 g 0 G 0 g 0 G BT -/F84 9.9626 Tf 1.002 0 0 1 150.705 706.129 Tm [(number)-250(of)-250(nonzer)18(os)-251(we)-250(obtain)-250(essentially)-250(the)-250(JAgged)-250(Diagonals)-251(format.)-311(If)-250(the)]TJ 1.02 0 0 1 150.705 694.174 Tm [(r)18(ows)-295(ar)18(e)-294(not)-294(in)-295(the)-294(original)-294(or)18(der)72(,)-306(then)-294(an)-295(additional)-294(vector)]TJ/F78 9.9626 Tf 1.02 0 0 1 423.988 694.174 Tm [(rIdx)]TJ/F84 9.9626 Tf 1.02 0 0 1 444.477 694.174 Tm [(is)-294(r)17(equir)18(ed,)]TJ 1 0 0 1 150.705 682.219 Tm [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 0.981 0 0 1 165.649 670.198 Tm [(The)-255(multiple)-255(ELLP)94(ACK-like)-255(buf)18(fers)-255(ar)18(e)-255(stac)1(ked)-255(together)-255(inside)-255(a)-255(single,)-255(one)]TJ 0.993 0 0 1 150.705 658.242 Tm [(dimensional)-252(array;)-252(an)-251(additional)-252(vector)]TJ/F78 9.9626 Tf 0.993 0 0 1 326.015 658.242 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.993 0 0 1 374.299 658.242 Tm [(is)-252(pr)18(ovided)-251(to)-252(keep)-252(track)-252(of)]TJ 1.009 0 0 1 150.705 646.287 Tm [(the)-248(individual)-248(submatrices.)-308(All)-248(hacks)-249(have)-248(the)-248(same)-248(number)-248(of)-248(r)18(ows)]TJ/F78 9.9626 Tf 1.009 0 0 1 458.348 646.287 Tm [(hackSize)]TJ/F84 9.9626 Tf 1.009 0 0 1 493.148 646.287 Tm [(;)]TJ 0.985 0 0 1 150.705 634.332 Tm [(hence,)-255(the)]TJ/F78 9.9626 Tf 0.985 0 0 1 196.944 634.332 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.985 0 0 1 244.865 634.332 Tm [(vector)-254(is)-255(an)-254(array)-255(of)]TJ/F181 10.3811 Tf 1 0 0 1 333.788 634.332 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-210(+)]TJ/F84 9.9626 Tf 0.985 0 0 1 405.427 634.332 Tm [(1)-254(elements,)-255(each)-254(one)]TJ 0.985 0 0 1 150.406 622.377 Tm [(pointing)-253(to)-253(the)-253(\002rst)-253(index)-253(of)-253(a)-253(submatrix)-254(ins)1(ide)-254(the)-253(stacked)]TJ/F78 9.9626 Tf 0.985 0 0 1 408.705 622.377 Tm [(cM)]TJ/F84 9.9626 Tf 0.985 0 0 1 421.963 622.377 Tm [(/)]TJ/F78 9.9626 Tf 0.985 0 0 1 427.91 622.377 Tm [(rP)]TJ/F84 9.9626 Tf 0.985 0 0 1 440.206 622.377 Tm [(buf)18(fers,)-253(plus)]TJ 1.02 0 0 1 150.705 610.422 Tm [(an)-269(additional)-269(element)-268(pointing)-269(past)-269(the)-269(end)-269(of)-268(the)-269(last)-269(block,)-275(wher)18(e)-269(the)-269(next)]TJ 1.006 0 0 1 150.705 598.467 Tm [(one)-248(would)-249(begin.)-308(W)92(e)-249(thus)-248(have)-249(the)-248(pr)18(operty)-249(that)-248(the)-249(el)1(ements)-249(of)-248(the)]TJ/F78 9.9626 Tf 1 0 0 1 456.901 598.467 Tm [(k)]TJ/F84 9.9626 Tf 1.006 0 0 1 461.498 598.467 Tm [(-th)]TJ/F78 9.9626 Tf 1.006 0 0 1 476.426 598.467 Tm [(hack)]TJ/F84 9.9626 Tf 0.995 0 0 1 150.705 586.511 Tm [(ar)18(e)-252(stor)18(ed)-251(between)]TJ/F131 9.9626 Tf 1 0 0 1 236.017 586.511 Tm [(hackOffsets[k])]TJ/F84 9.9626 Tf 0.995 0 0 1 311.738 586.511 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 331.016 586.511 Tm [(hackOffsets[k+1])]TJ/F84 9.9626 Tf 0.995 0 0 1 414.702 586.511 Tm [(,)-252(similarly)-252(to)-252(what)]TJ 1 0 0 1 150.705 574.556 Tm [(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ +/F84 9.9626 Tf 1.002 0 0 1 99.895 706.129 Tm [(number)-250(of)-250(nonzer)18(os)-251(we)-250(obtain)-250(essentially)-250(the)-250(JAgged)-250(Diagonals)-251(format.)-311(If)-250(the)]TJ 1.02 0 0 1 99.895 694.174 Tm [(r)18(ows)-295(ar)18(e)-294(not)-294(in)-295(the)-294(original)-294(or)18(der)72(,)-306(then)-295(an)-294(additional)-294(vector)]TJ/F78 9.9626 Tf 1.02 0 0 1 373.179 694.174 Tm [(rIdx)]TJ/F84 9.9626 Tf 1.02 0 0 1 393.668 694.174 Tm [(is)-294(r)17(equir)18(ed,)]TJ 1 0 0 1 99.895 682.219 Tm [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 0.981 0 0 1 114.839 670.198 Tm [(The)-255(multiple)-255(ELLP)94(ACK-like)-255(buf)18(fers)-255(ar)18(e)-255(stacked)-255(t)1(ogether)-255(inside)-255(a)-255(single,)-255(one)]TJ 0.993 0 0 1 99.895 658.242 Tm [(dimensional)-252(array;)-252(an)-251(additional)-252(vector)]TJ/F78 9.9626 Tf 0.993 0 0 1 275.205 658.242 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.993 0 0 1 323.49 658.242 Tm [(is)-252(pr)18(ovided)-251(to)-252(keep)-252(track)-252(of)]TJ 1.009 0 0 1 99.895 646.287 Tm [(the)-248(individual)-248(submatrices.)-308(All)-248(hacks)-249(have)-248(the)-248(same)-248(number)-248(of)-248(r)18(ows)]TJ/F78 9.9626 Tf 1.009 0 0 1 407.538 646.287 Tm [(hackSize)]TJ/F84 9.9626 Tf 1.009 0 0 1 442.339 646.287 Tm [(;)]TJ 0.985 0 0 1 99.895 634.332 Tm [(hence,)-255(the)]TJ/F78 9.9626 Tf 0.985 0 0 1 146.134 634.332 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.985 0 0 1 194.055 634.332 Tm [(vector)-254(is)-255(an)-254(array)-255(of)]TJ/F181 10.3811 Tf 1 0 0 1 282.979 634.332 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-210(+)]TJ/F84 9.9626 Tf 0.985 0 0 1 354.618 634.332 Tm [(1)-254(elements,)-255(each)-254(one)]TJ 0.985 0 0 1 99.596 622.377 Tm [(pointing)-253(to)-253(the)-253(\002rst)-253(index)-253(of)-253(a)-254(submat)1(rix)-254(inside)-253(the)-253(stacked)]TJ/F78 9.9626 Tf 0.985 0 0 1 357.896 622.377 Tm [(cM)]TJ/F84 9.9626 Tf 0.985 0 0 1 371.153 622.377 Tm [(/)]TJ/F78 9.9626 Tf 0.985 0 0 1 377.1 622.377 Tm [(rP)]TJ/F84 9.9626 Tf 0.985 0 0 1 389.397 622.377 Tm [(buf)18(fers,)-253(plus)]TJ 1.02 0 0 1 99.895 610.422 Tm [(an)-269(additional)-269(element)-268(pointing)-269(past)-269(the)-269(end)-269(of)-268(the)-269(last)-269(block,)-275(wher)18(e)-269(the)-269(next)]TJ 1.006 0 0 1 99.895 598.467 Tm [(one)-248(would)-249(begin.)-308(W)91(e)-248(thus)-248(have)-249(the)-248(pr)18(operty)-249(that)-248(the)-249(elements)-248(of)-248(the)]TJ/F78 9.9626 Tf 1 0 0 1 406.091 598.467 Tm [(k)]TJ/F84 9.9626 Tf 1.006 0 0 1 410.689 598.467 Tm [(-th)]TJ/F78 9.9626 Tf 1.006 0 0 1 425.616 598.467 Tm [(hack)]TJ/F84 9.9626 Tf 0.995 0 0 1 99.895 586.511 Tm [(ar)18(e)-252(stor)18(ed)-251(between)]TJ/F131 9.9626 Tf 1 0 0 1 185.207 586.511 Tm [(hackOffsets[k])]TJ/F84 9.9626 Tf 0.995 0 0 1 260.928 586.511 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 280.207 586.511 Tm [(hackOffsets[k+1])]TJ/F84 9.9626 Tf 0.995 0 0 1 363.892 586.511 Tm [(,)-252(similarly)-252(to)-252(what)]TJ 1 0 0 1 99.895 574.556 Tm [(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ 0 g 0 G ET -1 0 0 1 197.579 452.455 cm +1 0 0 1 146.769 452.455 cm q .50096 0 0 .50096 0 0 cm q @@ -29777,20 +30005,20 @@ q Q Q 0 g 0 G -1 0 0 1 -197.579 -452.455 cm +1 0 0 1 -146.769 -452.455 cm BT -/F84 9.9626 Tf 185.456 430.537 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 134.646 430.537 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - 0.982 0 0 1 165.649 406.495 Tm [(W)56(ith)-254(this)-254(data)-254(str)8(uctur)19(e)-254(a)-254(very)-254(long)-254(r)18(ow)-254(only)-254(af)19(f)-1(ects)-254(one)-254(hack,)-254(and)-254(ther)19(efor)18(e)]TJ 1 0 0 1 150.705 394.54 Tm [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_hll_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ + 0.982 0 0 1 114.839 406.495 Tm [(W)56(ith)-254(this)-254(data)-254(str)8(uctur)19(e)-254(a)-254(very)-254(long)-254(r)18(ow)-254(only)-254(af)19(f)-1(ects)-254(one)-254(hack,)-254(and)-254(ther)19(efor)18(e)]TJ 1 0 0 1 99.895 394.54 Tm [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_hll_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 232.948 cm +1 0 0 1 99.895 232.948 cm 0 0 343.711 137.484 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -29799,7 +30027,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F231 8.9664 Tf 163.108 359.772 Td [(type)]TJ +/F231 8.9664 Tf 112.299 359.772 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29819,7 +30047,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29873,7 +30101,7 @@ BT [-525(idiag\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 18.829 -10.959 Td [(hkoffs\050:\051)]TJ/F134 5.1905 Tf -15.277 0 Td [(,)]TJ/F179 5.1905 Tf 0.61 0 Td [(!)]TJ + 18.83 -10.959 Td [(hkoffs\050:\051)]TJ/F134 5.1905 Tf -15.277 0 Td [(,)]TJ/F179 5.1905 Tf 0.609 0 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29897,48 +30125,48 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -21.918 Td [(contains)]TJ + -9.414 -21.918 Td [(contains)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 4.708 -10.959 Td [(....)]TJ + 4.707 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.708 -10.959 Td [(end)-525(type)]TJ + -4.707 -10.959 Td [(end)-525(type)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F75 9.9626 Tf -12.403 -39.966 Td [(Diagonal)-250(storage)]TJ/F84 9.9626 Tf 1.012 0 0 1 150.396 180.167 Tm [(The)-248(DIAgonal)-248(\050DIA\051)-247(format)-248(\050shown)-248(in)-248(Figur)18(e)]TJ +/F75 9.9626 Tf -12.404 -39.966 Td [(Diagonal)-250(storage)]TJ/F84 9.9626 Tf 1.012 0 0 1 99.587 180.167 Tm [(The)-248(DIAgonal)-248(\050DIA\051)-247(format)-248(\050shown)-248(in)-248(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-248(8)]TJ 0 g 0 G - [(\051)-248(has)-248(a)-247(2-dimensional)-248(array)]TJ/F131 9.9626 Tf 1 0 0 1 483.955 180.167 Tm [(AS)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.705 168.212 Tm [(containing)-223(in)-222(each)-223(column)-223(the)-222(coef)18(\002cients)-223(along)-223(a)-222(diagonal)-223(of)-223(the)-222(matrix,)-229(and)-223(an)]TJ 0.98 0 0 1 150.705 156.257 Tm [(integer)-254(array)]TJ/F131 9.9626 Tf 1 0 0 1 208.91 156.257 Tm [(OFFSET)]TJ/F84 9.9626 Tf 0.98 0 0 1 242.771 156.257 Tm [(that)-254(determines)-254(wher)19(e)-254(each)-254(diagonal)-254(starts.)-316(The)-253(diagonals)]TJ 1 0 0 1 150.705 144.302 Tm [(in)]TJ/F131 9.9626 Tf 11.188 0 Td [(AS)]TJ/F84 9.9626 Tf 12.951 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ 1.01 0 0 1 165.649 132.281 Tm [(The)-248(code)-248(to)-249(compute)-248(the)-248(matrix-vector)-248(pr)17(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 378.488 132.281 Tm [(y)]TJ/F181 10.3811 Tf 8.011 0 Td [(=)]TJ/F78 9.9626 Tf 11.598 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 1.01 0 0 1 413.412 132.281 Tm [(is)-248(shown)-249(in)-248(Alg.)]TJ + [(\051)-248(has)-248(a)-247(2-dimensional)-248(array)]TJ/F131 9.9626 Tf 1 0 0 1 433.146 180.167 Tm [(AS)]TJ/F84 9.9626 Tf 0.98 0 0 1 99.895 168.212 Tm [(containing)-223(in)-222(each)-223(column)-223(the)-222(coef)18(\002cients)-223(along)-223(a)-222(diagonal)-223(of)-223(the)-222(matrix,)-230(and)-222(an)]TJ 0.98 0 0 1 99.895 156.257 Tm [(integer)-254(array)]TJ/F131 9.9626 Tf 1 0 0 1 158.101 156.257 Tm [(OFFSET)]TJ/F84 9.9626 Tf 0.98 0 0 1 191.961 156.257 Tm [(that)-254(determines)-254(wher)19(e)-254(each)-254(diagonal)-254(starts.)-316(The)-254(di)1(agonals)]TJ 1 0 0 1 99.895 144.302 Tm [(in)]TJ/F131 9.9626 Tf 11.188 0 Td [(AS)]TJ/F84 9.9626 Tf 12.952 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ 1.01 0 0 1 114.839 132.281 Tm [(The)-248(code)-249(to)-248(compute)-248(the)-248(matrix-vector)-248(pr)17(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 327.678 132.281 Tm [(y)]TJ/F181 10.3811 Tf 8.012 0 Td [(=)]TJ/F78 9.9626 Tf 11.598 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 1.01 0 0 1 362.603 132.281 Tm [(is)-248(shown)-248(in)-249(Alg.)]TJ 0 0 1 rg 0 0 1 RG [-248(2)]TJ 0 g 0 G - [(;)]TJ 1.02 0 0 1 150.705 120.326 Tm [(it)-311(costs)-311(one)-311(memory)-311(r)18(ead)-311(per)-311(outer)-311(iteration,)-327(plus)-311(thr)18(ee)-311(memory)-311(r)18(eads,)-328(one)]TJ + [(;)]TJ 1.02 0 0 1 99.895 120.326 Tm [(it)-311(costs)-311(one)-311(memory)-311(r)18(ead)-311(per)-311(outer)-311(iteration,)-327(plus)-311(thr)18(ee)-311(memory)-311(r)18(eads,)-328(one)]TJ 0 g 0 G - 1 0 0 1 315.088 90.438 Tm [(172)]TJ + 1 0 0 1 264.279 90.438 Tm [(171)]TJ 0 g 0 G ET endstream endobj -2144 0 obj +2143 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hll.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2154 0 R +/PTEX.InfoDict 2153 0 R /BBox [0 0 494 214] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2155 0 R ->>/Font << /R8 2156 0 R/R10 2157 0 R>> +/R7 2154 0 R +>>/Font << /R8 2155 0 R/R10 2156 0 R>> >> /Length 2880 /Filter /FlateDecode @@ -29960,7 +30188,7 @@ l Ù<øÇ×O?Ó‚•2.šg9_ÿ*×Ps ŸOøYT¨•®U¼v²rƈºŸÂãSóøbzh”8†Ñ½ÂXZÊü°ó`—ú矆@8èwàô)aÿ…¢ªküœËEvëñ»›šK°|dG˜s%´D YšVòÔ@( ázé‹ñCüÿæ׬á¿8Ç7•xVÇ‹ éÑi3kè4½ðw(Ölú¸V*|ik¬Ô¦âÓ*økµøåÀ—žÑÑ÷K•_á•Box:ÀÀ¯¿Æë‘HÏ+x´“êˆÆi[‡;¬<ž¿Á²ÐùÅ+i œ°ùŸø`8¼=ÿ³·‡ endstream endobj -2159 0 obj +2158 0 obj << /Filter /FlateDecode /Length 214 @@ -29969,7 +30197,7 @@ stream xœ]Á‚0 †ï{Š½Á@²ì¢£¾ÀÙ±L<øö¶EOK šp#Ý&ÉQZ]ŒV«ÓqA« ×͈ÆãøÝn ¸G6Š¨Ñë4(„‡ ÇéÍÍé~¹R6èõ&Ž{øaÎxÿ.[±D½˜ÐK·ÈQ7idZñ?:õ;> -stream -2040 0 2041 59 2042 118 2043 177 2036 235 2049 386 2035 552 2045 699 2046 843 2047 987 -2051 1132 2048 1190 2055 1341 2053 1480 2057 1624 2054 1683 2063 1791 2058 1948 2059 2093 2060 2240 -2065 2382 581 2440 2066 2497 2067 2555 2068 2613 2062 2671 2072 2822 2061 2979 2069 3123 2070 3270 -2074 3414 2071 3473 2076 3624 2078 3742 2075 3800 2086 3881 2079 4074 2089 4250 2080 4425 2081 4608 -2082 4760 2083 4915 2084 5067 2088 5220 585 5279 589 5337 2085 5395 2100 5518 2092 5675 2093 5824 -2095 5971 2102 6118 593 6176 597 6233 2103 6290 2104 6348 2099 6406 2110 6544 2116 6683 2117 6863 -2098 6906 2112 7053 2107 7112 2113 7171 2114 7230 2115 7289 2109 7348 2121 7486 2133 7625 2134 7805 -2136 7848 2137 8053 2138 8342 2140 8563 2097 8776 2123 8922 2108 8980 2124 9039 2125 9098 2126 9157 -2127 9216 2128 9275 2129 9334 2130 9393 2131 9451 2119 9510 2132 9569 2120 9627 2149 9822 2154 9979 -2155 10159 2156 10202 2157 10505 2158 10710 2160 10923 2145 11144 2146 11291 2147 11438 2151 11585 2152 11644 +/First 994 +/Length 12698 +>> +stream +2040 0 2041 58 2042 116 2035 174 2048 325 2034 491 2044 638 2045 782 2046 926 2050 1071 +2047 1130 2053 1281 2051 1420 2055 1564 2052 1622 2062 1730 2057 1887 2058 2032 2059 2179 2064 2321 +581 2380 2065 2438 2066 2497 2067 2556 2061 2615 2071 2766 2060 2923 2068 3067 2069 3214 2073 3358 +2070 3416 2075 3567 2077 3685 2074 3744 2085 3825 2078 4018 2088 4194 2079 4370 2080 4553 2081 4705 +2082 4860 2083 5012 2087 5165 585 5223 589 5280 2084 5337 2099 5460 2091 5617 2092 5767 2094 5914 +2101 6060 593 6119 597 6177 2102 6235 2103 6294 2098 6353 2108 6491 2115 6630 2116 6810 2097 6853 +2110 7000 2105 7058 2111 7116 2112 7175 2113 7233 2107 7291 2120 7429 2132 7568 2133 7748 2135 7791 +2136 7996 2137 8285 2139 8506 2096 8719 2122 8865 2106 8924 2123 8983 2124 9042 2125 9101 2126 9160 +2127 9219 2128 9278 2129 9337 2130 9395 2118 9454 2131 9513 2119 9572 2148 9767 2153 9924 2154 10104 +2155 10147 2156 10450 2157 10655 2159 10868 2144 11089 2145 11236 2146 11383 2150 11530 2151 11588 2152 11646 % 2040 0 obj << -/D [2037 0 R /XYZ 150.705 444.811 null] +/D [2036 0 R /XYZ 99.895 444.971 null] >> % 2041 0 obj << -/D [2037 0 R /XYZ 150.705 444.971 null] +/D [2036 0 R /XYZ 99.895 433.015 null] >> % 2042 0 obj << -/D [2037 0 R /XYZ 150.705 433.015 null] ->> -% 2043 0 obj -<< -/D [2037 0 R /XYZ 165.051 129.79 null] +/D [2036 0 R /XYZ 114.242 129.79 null] >> -% 2036 0 obj +% 2035 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2049 0 obj +% 2048 0 obj << /Type /Page -/Contents 2050 0 R -/Resources 2048 0 R +/Contents 2049 0 R +/Resources 2047 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2052 0 R -/Annots [ 2035 0 R 2045 0 R 2046 0 R 2047 0 R ] +/Parent 2017 0 R +/Annots [ 2034 0 R 2044 0 R 2045 0 R 2046 0 R ] >> -% 2035 0 obj +% 2034 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 654.503 359.001 666.562] +/Rect [342.753 654.503 415.041 666.562] /A << /S /GoTo /D (precdata) >> >> -% 2045 0 obj +% 2044 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 584.479 418.548 596.539] +/Rect [393.303 584.479 469.357 596.539] /A << /S /GoTo /D (vdata) >> >> -% 2046 0 obj +% 2045 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 514.456 418.548 526.516] +/Rect [393.303 514.456 469.357 526.516] /A << /S /GoTo /D (vdata) >> >> -% 2047 0 obj +% 2046 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 374.41 359.001 386.47] +/Rect [342.753 374.41 409.811 386.47] /A << /S /GoTo /D (descdata) >> >> -% 2051 0 obj +% 2050 0 obj << -/D [2049 0 R /XYZ 98.895 753.953 null] +/D [2048 0 R /XYZ 149.705 753.953 null] >> -% 2048 0 obj +% 2047 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R >> /ProcSet [ /PDF /Text ] >> -% 2055 0 obj +% 2053 0 obj << /Type /Page -/Contents 2056 0 R -/Resources 2054 0 R +/Contents 2054 0 R +/Resources 2052 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2052 0 R -/Annots [ 2053 0 R ] +/Parent 2056 0 R +/Annots [ 2051 0 R ] >> -% 2053 0 obj +% 2051 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 554.876 469.357 566.936] +/Rect [342.493 554.876 418.548 566.936] /A << /S /GoTo /D (vdata) >> >> -% 2057 0 obj +% 2055 0 obj << -/D [2055 0 R /XYZ 149.705 753.953 null] +/D [2053 0 R /XYZ 98.895 753.953 null] >> -% 2054 0 obj +% 2052 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2063 0 obj +% 2062 0 obj << /Type /Page -/Contents 2064 0 R -/Resources 2062 0 R +/Contents 2063 0 R +/Resources 2061 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2052 0 R -/Annots [ 2058 0 R 2059 0 R 2060 0 R ] +/Parent 2056 0 R +/Annots [ 2057 0 R 2058 0 R 2059 0 R ] >> -% 2058 0 obj +% 2057 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 253.023 369.462 265.083] +/Rect [342.753 253.023 420.271 265.083] /A << /S /GoTo /D (spdata) >> >> -% 2059 0 obj +% 2058 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 184.772 359.001 196.831] +/Rect [342.753 184.772 415.041 196.831] /A << /S /GoTo /D (precdata) >> >> -% 2060 0 obj +% 2059 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 116.52 418.548 128.58] +/Rect [393.303 116.52 469.357 128.58] /A << /S /GoTo /D (vdata) >> >> -% 2065 0 obj +% 2064 0 obj << -/D [2063 0 R /XYZ 98.895 753.953 null] +/D [2062 0 R /XYZ 149.705 753.953 null] >> % 581 0 obj << -/D [2063 0 R /XYZ 99.895 716.092 null] +/D [2062 0 R /XYZ 150.705 716.092 null] >> -% 2066 0 obj +% 2065 0 obj << -/D [2063 0 R /XYZ 99.895 397.916 null] +/D [2062 0 R /XYZ 150.705 397.916 null] >> -% 2067 0 obj +% 2066 0 obj << -/D [2063 0 R /XYZ 99.895 398.076 null] +/D [2062 0 R /XYZ 150.705 398.076 null] >> -% 2068 0 obj +% 2067 0 obj << -/D [2063 0 R /XYZ 99.895 386.121 null] +/D [2062 0 R /XYZ 150.705 386.121 null] >> -% 2062 0 obj +% 2061 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2072 0 obj +% 2071 0 obj << /Type /Page -/Contents 2073 0 R -/Resources 2071 0 R +/Contents 2072 0 R +/Resources 2070 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2052 0 R -/Annots [ 2061 0 R 2069 0 R 2070 0 R ] +/Parent 2056 0 R +/Annots [ 2060 0 R 2068 0 R 2069 0 R ] >> -% 2061 0 obj +% 2060 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 654.503 469.357 666.562] +/Rect [342.493 654.503 418.548 666.562] /A << /S /GoTo /D (vdata) >> >> -% 2069 0 obj +% 2068 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 520.007 409.811 532.067] +/Rect [291.943 520.007 359.001 532.067] /A << /S /GoTo /D (descdata) >> >> -% 2070 0 obj +% 2069 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 183.768 469.357 195.827] +/Rect [342.493 183.768 418.548 195.827] /A << /S /GoTo /D (vdata) >> >> -% 2074 0 obj +% 2073 0 obj << -/D [2072 0 R /XYZ 149.705 753.953 null] +/D [2071 0 R /XYZ 98.895 753.953 null] >> -% 2071 0 obj +% 2070 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R >> /ProcSet [ /PDF /Text ] >> -% 2076 0 obj +% 2075 0 obj << /Type /Page -/Contents 2077 0 R -/Resources 2075 0 R +/Contents 2076 0 R +/Resources 2074 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2052 0 R +/Parent 2056 0 R >> -% 2078 0 obj +% 2077 0 obj << -/D [2076 0 R /XYZ 98.895 753.953 null] +/D [2075 0 R /XYZ 149.705 753.953 null] >> -% 2075 0 obj +% 2074 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2086 0 obj +% 2085 0 obj << /Type /Page -/Contents 2087 0 R -/Resources 2085 0 R +/Contents 2086 0 R +/Resources 2084 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2052 0 R -/Annots [ 2079 0 R 2089 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R ] +/Parent 2056 0 R +/Annots [ 2078 0 R 2088 0 R 2079 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R ] >> -% 2079 0 obj +% 2078 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [368.938 636.522 495.412 648.582] +/Rect [318.128 636.522 444.603 648.582] /Subtype/Link/A<> >> -% 2089 0 obj +% 2088 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [174.615 624.567 218.45 636.627] +/Rect [123.806 624.567 167.641 636.627] /Subtype/Link/A<> >> -% 2080 0 obj +% 2079 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [191.223 593.098 397.198 605.158] +/Rect [140.413 593.098 346.389 605.158] /Subtype/Link/A<> >> -% 2081 0 obj +% 2080 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [280.59 552.736 292.545 561.692] +/Rect [229.78 552.835 241.736 561.841] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 2082 0 obj +% 2081 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [296.203 552.835 308.158 561.841] +/Rect [245.393 552.835 257.348 561.692] /A << /S /GoTo /D (cite.CaFiRo:2014) >> >> -% 2083 0 obj +% 2082 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [311.815 552.736 323.771 561.841] +/Rect [261.006 552.835 272.961 561.841] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 2084 0 obj +% 2083 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [209.414 540.88 221.369 549.737] +/Rect [158.604 540.781 170.56 549.737] /A << /S /GoTo /D (cite.OurTechRep) >> >> -% 2088 0 obj +% 2087 0 obj << -/D [2086 0 R /XYZ 149.705 753.953 null] +/D [2085 0 R /XYZ 98.895 753.953 null] >> % 585 0 obj << -/D [2086 0 R /XYZ 150.705 716.092 null] +/D [2085 0 R /XYZ 99.895 716.092 null] >> % 589 0 obj << -/D [2086 0 R /XYZ 150.705 525.151 null] +/D [2085 0 R /XYZ 99.895 525.151 null] >> -% 2085 0 obj +% 2084 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 2100 0 obj +% 2099 0 obj << /Type /Page -/Contents 2101 0 R -/Resources 2099 0 R +/Contents 2100 0 R +/Resources 2098 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2105 0 R -/Annots [ 2092 0 R 2093 0 R 2095 0 R ] +/Parent 2056 0 R +/Annots [ 2091 0 R 2092 0 R 2094 0 R ] >> -% 2092 0 obj +% 2091 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [121.315 282.166 133.27 291.173] +/Rect [172.124 282.067 184.079 291.173] /A << /S /GoTo /D (cite.MRC:11) >> >> -% 2093 0 obj +% 2092 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.836 246.183 265.791 255.592] -/A << /S /GoTo /D (table.23) >> +/Rect [304.646 246.183 316.601 255.592] +/A << /S /GoTo /D (table.22) >> >> -% 2095 0 obj +% 2094 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.367 176.296 317.241 188.355] +/Rect [361.176 176.296 368.05 188.355] /A << /S /GoTo /D (figure.6) >> >> -% 2102 0 obj +% 2101 0 obj << -/D [2100 0 R /XYZ 98.895 753.953 null] +/D [2099 0 R /XYZ 149.705 753.953 null] >> % 593 0 obj << -/D [2100 0 R /XYZ 99.895 349.244 null] +/D [2099 0 R /XYZ 150.705 349.244 null] >> % 597 0 obj << -/D [2100 0 R /XYZ 99.895 231.907 null] +/D [2099 0 R /XYZ 150.705 231.907 null] >> -% 2103 0 obj +% 2102 0 obj << -/D [2100 0 R /XYZ 99.895 211.056 null] +/D [2099 0 R /XYZ 150.705 211.056 null] >> -% 2104 0 obj +% 2103 0 obj << -/D [2100 0 R /XYZ 99.895 120.166 null] +/D [2099 0 R /XYZ 150.705 120.166 null] >> -% 2099 0 obj +% 2098 0 obj << /Font << /F279 1791 0 R /F231 1025 0 R /F84 675 0 R /F131 921 0 R /F75 673 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2110 0 obj +% 2108 0 obj << /Type /Page -/Contents 2111 0 R -/Resources 2109 0 R +/Contents 2109 0 R +/Resources 2107 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2105 0 R -/Annots [ 2098 0 R ] +/Parent 2114 0 R +/Annots [ 2097 0 R ] >> -% 2116 0 obj +% 2115 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133929+01'00') /ModDate (D:20140329133929+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2117 0 obj +% 2116 0 obj << /Type /ExtGState /OPM 1 >> -% 2098 0 obj +% 2097 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [170.554 324.049 177.543 336.109] +/Rect [119.745 324.049 126.734 336.109] /A << /S /GoTo /D (algocf.1) >> >> -% 2112 0 obj +% 2110 0 obj << -/D [2110 0 R /XYZ 149.705 753.953 null] +/D [2108 0 R /XYZ 98.895 753.953 null] >> -% 2107 0 obj +% 2105 0 obj << -/D [2110 0 R /XYZ 150.705 716.092 null] +/D [2108 0 R /XYZ 99.895 716.092 null] >> -% 2113 0 obj +% 2111 0 obj << -/D [2110 0 R /XYZ 397.506 407.446 null] +/D [2108 0 R /XYZ 346.697 407.446 null] >> -% 2114 0 obj +% 2112 0 obj << -/D [2110 0 R /XYZ 150.705 260.219 null] +/D [2108 0 R /XYZ 99.895 260.219 null] >> -% 2115 0 obj +% 2113 0 obj << -/D [2110 0 R /XYZ 150.705 226.207 null] +/D [2108 0 R /XYZ 99.895 226.207 null] >> -% 2109 0 obj +% 2107 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> -/XObject << /Im6 2094 0 R >> +/XObject << /Im6 2093 0 R >> /ProcSet [ /PDF /Text ] >> -% 2121 0 obj +% 2120 0 obj << /Type /Page -/Contents 2122 0 R -/Resources 2120 0 R +/Contents 2121 0 R +/Resources 2119 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2105 0 R -/Annots [ 2097 0 R ] +/Parent 2114 0 R +/Annots [ 2096 0 R ] >> -% 2133 0 obj +% 2132 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2134 0 obj +% 2133 0 obj << /Type /ExtGState /OPM 1 >> -% 2136 0 obj +% 2135 0 obj << /BaseFont /YAZDUX+TimesNewRomanPSMT -/FontDescriptor 2138 0 R -/ToUnicode 2139 0 R +/FontDescriptor 2137 0 R +/ToUnicode 2138 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2137 0 obj +% 2136 0 obj << /BaseFont /NDNSMY+FreeSerif -/FontDescriptor 2140 0 R -/ToUnicode 2141 0 R +/FontDescriptor 2139 0 R +/ToUnicode 2140 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 0 0 0 0 0 385 0 0 0 0 0 0 0 667 529 0 0 0 0 0 701] /Subtype /TrueType >> -% 2138 0 obj +% 2137 0 obj << /Type /FontDescriptor /FontName /YAZDUX+TimesNewRomanPSMT @@ -30522,9 +30746,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2142 0 R +/FontFile2 2141 0 R >> -% 2140 0 obj +% 2139 0 obj << /Type /FontDescriptor /FontName /NDNSMY+FreeSerif @@ -30536,114 +30760,114 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2143 0 R +/FontFile2 2142 0 R >> -% 2097 0 obj +% 2096 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.587 583.767 391.56 595.827] +/Rect [435.396 583.767 442.37 595.827] /A << /S /GoTo /D (figure.5) >> >> -% 2123 0 obj +% 2122 0 obj << -/D [2121 0 R /XYZ 98.895 753.953 null] +/D [2120 0 R /XYZ 149.705 753.953 null] >> -% 2108 0 obj +% 2106 0 obj +<< +/D [2120 0 R /XYZ 440.026 621.446 null] +>> +% 2123 0 obj << -/D [2121 0 R /XYZ 389.217 621.446 null] +/D [2120 0 R /XYZ 165.649 563.747 null] >> % 2124 0 obj << -/D [2121 0 R /XYZ 114.839 563.747 null] +/D [2120 0 R /XYZ 165.649 567.034 null] >> % 2125 0 obj << -/D [2121 0 R /XYZ 114.839 567.034 null] +/D [2120 0 R /XYZ 165.649 556.075 null] >> % 2126 0 obj << -/D [2121 0 R /XYZ 114.839 556.075 null] +/D [2120 0 R /XYZ 165.649 545.116 null] >> % 2127 0 obj << -/D [2121 0 R /XYZ 114.839 545.116 null] +/D [2120 0 R /XYZ 165.649 534.158 null] >> % 2128 0 obj << -/D [2121 0 R /XYZ 114.839 534.158 null] +/D [2120 0 R /XYZ 165.649 523.199 null] >> % 2129 0 obj << -/D [2121 0 R /XYZ 114.839 523.199 null] +/D [2120 0 R /XYZ 165.649 512.24 null] >> % 2130 0 obj << -/D [2121 0 R /XYZ 114.839 512.24 null] ->> -% 2131 0 obj -<< -/D [2121 0 R /XYZ 114.839 501.281 null] +/D [2120 0 R /XYZ 165.649 501.281 null] >> -% 2119 0 obj +% 2118 0 obj << -/D [2121 0 R /XYZ 114.839 481.057 null] +/D [2120 0 R /XYZ 165.649 481.057 null] >> -% 2132 0 obj +% 2131 0 obj << -/D [2121 0 R /XYZ 99.895 294.895 null] +/D [2120 0 R /XYZ 150.705 294.895 null] >> -% 2120 0 obj +% 2119 0 obj << /Font << /F84 675 0 R /F75 673 0 R /F231 1025 0 R /F279 1791 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> -/XObject << /Im7 2096 0 R >> +/XObject << /Im7 2095 0 R >> /ProcSet [ /PDF /Text ] >> -% 2149 0 obj +% 2148 0 obj << /Type /Page -/Contents 2150 0 R -/Resources 2148 0 R +/Contents 2149 0 R +/Resources 2147 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2105 0 R -/Annots [ 2145 0 R 2146 0 R 2147 0 R ] +/Parent 2114 0 R +/Annots [ 2144 0 R 2145 0 R 2146 0 R ] >> -% 2154 0 obj +% 2153 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2155 0 obj +% 2154 0 obj << /Type /ExtGState /OPM 1 >> -% 2156 0 obj +% 2155 0 obj << /BaseFont /MCSFLP+FreeSerif -/FontDescriptor 2158 0 R -/ToUnicode 2159 0 R +/FontDescriptor 2157 0 R +/ToUnicode 2158 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 385 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2157 0 obj +% 2156 0 obj << /BaseFont /AJRCAD+TimesNewRomanPSMT -/FontDescriptor 2160 0 R -/ToUnicode 2161 0 R +/FontDescriptor 2159 0 R +/ToUnicode 2160 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2158 0 obj +% 2157 0 obj << /Type /FontDescriptor /FontName /MCSFLP+FreeSerif @@ -30655,9 +30879,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2162 0 R +/FontFile2 2161 0 R >> -% 2160 0 obj +% 2159 0 obj << /Type /FontDescriptor /FontName /AJRCAD+TimesNewRomanPSMT @@ -30669,55 +30893,59 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2163 0 R +/FontFile2 2162 0 R >> -% 2145 0 obj +% 2144 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [453.687 426.731 460.661 438.791] +/Rect [402.878 426.731 409.852 438.791] /A << /S /GoTo /D (figure.5) >> >> -% 2146 0 obj +% 2145 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.541 176.362 361.575 188.421] +/Rect [303.732 176.362 310.765 188.421] /A << /S /GoTo /D (figure.8) >> >> -% 2147 0 obj +% 2146 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [487.118 128.475 494.142 140.535] +/Rect [436.309 128.475 443.332 140.535] /A << /S /GoTo /D (algocf.2) >> >> +% 2150 0 obj +<< +/D [2148 0 R /XYZ 98.895 753.953 null] +>> % 2151 0 obj << -/D [2149 0 R /XYZ 149.705 753.953 null] +/D [2148 0 R /XYZ 396.732 464.41 null] >> % 2152 0 obj << -/D [2149 0 R /XYZ 447.542 464.41 null] +/D [2148 0 R /XYZ 99.895 211.214 null] >> endstream endobj -2171 0 obj +2170 0 obj << -/Length 8197 +/Length 8205 >> stream 0 g 0 G 0 g 0 G BT -/F84 9.9626 Tf 1.02 0 0 1 99.895 706.129 Tm [(memory)-286(write)-286(and)-286(two)-286(\003oating-point)-286(operations)-286(per)-286(inner)-287(iter)1(ation.)-427(The)-286(ac-)]TJ 0.984 0 0 1 99.895 694.174 Tm [(cesses)-255(to)]TJ/F131 9.9626 Tf 1 0 0 1 139.647 694.174 Tm [(AS)]TJ/F84 9.9626 Tf 0.984 0 0 1 152.603 694.174 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 171.695 694.174 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 179.42 694.174 Tm [(ar)18(e)-254(in)-255(strict)-254(sequential)-255(or)19(der)75(,)-255(ther)19(efor)18(e)-255(no)-254(indir)18(ect)-254(addr)18(essing)]TJ 1 0 0 1 99.895 682.219 Tm [(is)-250(r)18(equir)18(ed.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 150.705 706.129 Tm [(memory)-286(write)-286(and)-286(two)-286(\003oating-point)-286(operations)-286(per)-286(inner)-286(iteration.)-427(The)-286(ac-)]TJ 0.984 0 0 1 150.705 694.174 Tm [(cesses)-254(to)]TJ/F131 9.9626 Tf 1 0 0 1 190.457 694.174 Tm [(AS)]TJ/F84 9.9626 Tf 0.984 0 0 1 203.412 694.174 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 222.504 694.174 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 230.23 694.174 Tm [(ar)18(e)-254(in)-255(strict)-254(sequential)-255(or)19(der)75(,)-255(ther)19(efor)18(e)-255(no)-254(indir)18(ect)-254(addr)18(essing)]TJ 1 0 0 1 150.705 682.219 Tm [(is)-250(r)18(equir)18(ed.)]TJ 0 g 0 G ET -1 0 0 1 146.769 562.733 cm +1 0 0 1 197.579 562.733 cm q .49594 0 0 .49594 0 0 cm q @@ -30726,9 +30954,9 @@ q Q Q 0 g 0 G -1 0 0 1 -146.769 -562.733 cm +1 0 0 1 -197.579 -562.733 cm BT -/F84 9.9626 Tf 166.233 540.815 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 217.042 540.815 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G @@ -30740,7 +30968,7 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 114.839 389.447 cm +1 0 0 1 165.649 389.447 cm 0 0 313.823 115.567 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -30749,7 +30977,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F231 8.9664 Tf 136.657 494.353 Td [(do)]TJ +/F231 8.9664 Tf 187.467 494.353 Td [(do)]TJ 0 g 0 G [-525(j)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -30762,7 +30990,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.415 -10.959 Td [(if)]TJ + 9.414 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -30785,7 +31013,7 @@ BT 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 g 0 G - 9.414 -10.959 Td [(ir1)]TJ + 9.415 -10.959 Td [(ir1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -30819,11 +31047,11 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.958 Td [(else)]TJ + -9.415 -10.958 Td [(else)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 g 0 G - 9.414 -10.959 Td [(ir1)]TJ + 9.415 -10.959 Td [(ir1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -30856,7 +31084,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(if)]TJ + -9.415 -10.959 Td [(end)-525(if)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 -10.959 Td [(do)]TJ @@ -30868,7 +31096,7 @@ BT [(ir1,ir2)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 9.414 -10.959 Td [(y\050i\051)]TJ + 9.415 -10.959 Td [(y\050i\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -30900,26 +31128,26 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(do)]TJ + -9.415 -10.959 Td [(end)-525(do)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(do)]TJ + -9.414 -10.959 Td [(end)-525(do)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F75 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F84 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ +/F75 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F84 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -97.969 -26.977 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_dia_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ + -97.968 -26.977 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_dia_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 208.684 cm +1 0 0 1 150.705 208.684 cm 0 0 343.711 115.567 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -30928,7 +31156,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F231 8.9664 Tf 112.299 313.591 Td [(type)]TJ +/F231 8.9664 Tf 163.108 313.591 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -30948,7 +31176,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -31018,32 +31246,32 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.918 Td [(end)-525(type)]TJ + -9.415 -21.918 Td [(end)-525(type)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F75 9.9626 Tf -12.404 -39.731 Td [(Hacked)-250(DIA)]TJ/F84 9.9626 Tf 0.985 0 0 1 99.895 156.191 Tm [(Storage)-254(by)-253(DIAgonals)-254(is)-253(an)-254(attractive)-253(option)-254(for)-253(matrices)-254(whose)-253(coef)18(\002cients)-254(ar)18(e)]TJ 1.015 0 0 1 99.895 144.236 Tm [(located)-247(on)-246(a)-247(small)-247(set)-246(of)-247(diagonals,)-247(since)-246(they)-247(do)-247(away)-246(with)-247(storing)-247(explicitly)]TJ 0.988 0 0 1 99.895 132.281 Tm [(the)-253(indices)-254(and)-253(ther)18(efor)19(e)-254(r)19(educe)-254(signi\002cantly)-253(memory)-253(traf)18(\002c.)-315(However)75(,)-253(having)]TJ 0.98 0 0 1 99.895 120.326 Tm [(a)-246(few)-246(coef)19(\002)-1(cients)-245(outside)-246(of)-246(the)-246(main)-246(set)-245(of)-246(diagonals)-246(may)-246(signi\002cantly)-246(incr)19(ease)]TJ +/F75 9.9626 Tf -12.403 -39.731 Td [(Hacked)-250(DIA)]TJ/F84 9.9626 Tf 0.985 0 0 1 150.705 156.191 Tm [(Storage)-254(b)1(y)-254(DIAgonals)-254(is)-253(an)-254(attractive)-253(option)-254(for)-253(matrices)-254(whose)-253(coef)18(\002cients)-254(ar)19(e)]TJ 1.015 0 0 1 150.705 144.236 Tm [(located)-247(on)-246(a)-247(small)-247(set)-246(of)-247(diagonals,)-247(since)-246(they)-247(do)-247(away)-246(with)-247(storing)-247(explicitly)]TJ 0.988 0 0 1 150.705 132.281 Tm [(the)-253(indices)-254(and)-253(ther)18(efor)19(e)-254(r)19(educe)-254(signi\002cantly)-253(memory)-253(traf)18(\002c.)-315(However)75(,)-253(having)]TJ 0.98 0 0 1 150.705 120.326 Tm [(a)-246(few)-246(coef)19(\002)-1(cients)-245(outside)-246(of)-246(the)-246(main)-246(set)-245(of)-246(diagonals)-246(may)-246(signi\002cantly)-246(incr)19(ease)]TJ 0 g 0 G - 1 0 0 1 264.279 90.438 Tm [(173)]TJ + 1 0 0 1 315.088 90.438 Tm [(172)]TJ 0 g 0 G ET endstream endobj -2167 0 obj +2166 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/dia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2175 0 R +/PTEX.InfoDict 2174 0 R /BBox [0 0 499 211] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2176 0 R ->>/Font << /R8 2177 0 R/R10 2178 0 R>> +/R7 2175 0 R +>>/Font << /R8 2176 0 R/R10 2177 0 R>> >> /Length 2502 /Filter /FlateDecode @@ -31061,7 +31289,7 @@ $ rca™ñ8ÏzD—‹bH…°d'¥¢šÃ\LÀ/ó¹¬1ÙŒ,0F c¨)T#  7Ì,¥j7ß%Î¥šäÛæ›RÙ6ßq4›/ÉÙ¸g]åû\¦—×\ÃW\¬ò+3,êmó½Lr´›ïJŽ·Í7ñÅÓÐÈþ¶ù&þ?9³ù.y’QQШ» Ñ•Œ&Gs¼m¾7ì“LÏ‹I7=šûmóM¹m›/]”o›/ÉvóUQxT»ù._àlÛæ»òâ›QUÔÌá×.Ü$Rg{çæñÊØcé‚Lçúqçþú1º‡ç×><>¾bûJ:ªŠÞËÃ_ƽ:dº’·p>yºovª†ç¿‘ã¿ûîã·ÏÓ‘¯ì-u„縑óß¿Ë&& endstream endobj -2180 0 obj +2179 0 obj << /Filter /FlateDecode /Length 177 @@ -31071,7 +31299,7 @@ x ¢t s1#8ý÷ÕUÃlŽÉV‹"α’¡Cc×fÄb/Šû²íôåÅ9ሪ=Fp©œQbæxÖÁïÒàCvQùðY¢ endstream endobj -2182 0 obj +2181 0 obj << /Filter /FlateDecode /Length 197 @@ -31080,7 +31308,7 @@ stream xœ]Mƒ …÷œ‚ˆFmL»qѦi{ÄÁ° ꢷï0j]¼ Ìß#k»kçÝʳGœÍ Vn",ó ðFçY^ðÁ™õ ŠfÒeíM‡÷'Ç°;ßõÙ3¿ÐM¾×˜y€%hQû˜BIk?ü=Õ{AoÌ3“„ÀÈd™+’+Äš°Jh ›ËªP²*â ±Q$ĆFŸCÒÉι=7[ŒàWòLž’çá÷-a©Š£ØsÇbã endstream endobj -2183 0 obj +2182 0 obj << /Filter /FlateDecode /Length1 9528 @@ -31114,7 +31342,7 @@ E ó˜Ÿó_ ù[ØCÛ×,š0Z­ÊþÛ Ê+é×…¬Ã¿]úi ^gù\Þo´ùȯ›‰ò'/! `¢ìÁŠàÆ?GÿÁžÿ…&X‘³œ‰çI,¯ÖÆåbøQ ~¼ü÷8É߇㈭^×Ô:·éÛ š×ÕßZ½pÎ"£'ÛõDÊrms#×0F~6Mc£øÓ´ÎåBi6U ¯éÿðȾü?ôèGNÔÙý_XR‡=ñÑè—$=zC/]l»¼ÃQd‰E3ꊭÿîi endstream endobj -2184 0 obj +2183 0 obj << /Filter /FlateDecode /Length1 4304 @@ -31140,18 +31368,18 @@ Hp —øï}Ø».|wy endstream endobj -2189 0 obj +2188 0 obj << -/Length 9674 +/Length 9664 >> stream 0 g 0 G 0 g 0 G BT -/F84 9.9626 Tf 1.004 0 0 1 150.705 706.129 Tm [(the)-248(amount)-247(of)-248(needed)-248(padding;)-248(mor)18(eover)74(,)-248(while)-248(the)-248(DIA)-248(code)-247(is)-248(easily)-248(vector)18(-)]TJ 0.999 0 0 1 150.705 694.174 Tm [(ized,)-249(it)-249(does)-249(not)-249(necessarily)-250(make)-249(optimal)-249(use)-249(of)-249(the)-249(memory)-249(hierar)18(chy)111(.)-310(While)]TJ 0.99 0 0 1 150.406 682.219 Tm [(pr)18(ocessing)-252(each)-252(diagonal)-252(we)-252(ar)18(e)-252(updating)-252(entries)-252(in)-252(the)-252(output)-252(vector)]TJ/F131 9.9626 Tf 1 0 0 1 457.277 682.219 Tm [(y)]TJ/F84 9.9626 Tf 0.99 0 0 1 462.508 682.219 Tm [(,)-252(which)]TJ 0.98 0 0 1 150.705 670.263 Tm [(is)-248(then)-248(accessed)-247(multiple)-248(times;)-250(if)-248(the)-248(vector)]TJ/F131 9.9626 Tf 1 0 0 1 342.631 670.263 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 350.281 670.263 Tm [(is)-248(too)-248(lar)19(ge)-248(to)-248(r)19(emain)-248(in)-248(the)-248(cache)]TJ 1 0 0 1 150.705 658.308 Tm [(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 1.02 0 0 1 165.649 646.353 Tm [(The)]TJ/F78 9.9626 Tf 1.02 0 0 1 186.392 646.353 Tm [(hacked)-367(DIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 239.757 646.353 Tm [(\050)]TJ/F75 9.9626 Tf 1.02 0 0 1 243.141 646.353 Tm [(HDIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 271.929 646.353 Tm [(\051)-367(format)-368(was)-367(designed)-367(to)-367(contain)-368(the)-367(amount)-367(of)]TJ 1.02 0 0 1 150.406 634.398 Tm [(padding,)-346(by)-325(br)18(eaking)-326(the)-325(original)-326(matrix)-325(into)-326(equally)-325(sized)-325(gr)17(oups)-325(of)-326(r)18(ows)]TJ 1.013 0 0 1 150.376 622.443 Tm [(\050)]TJ/F78 9.9626 Tf 1.013 0 0 1 153.737 622.443 Tm [(hacks)]TJ/F84 9.9626 Tf 1.013 0 0 1 175.778 622.443 Tm [(\051,)-246(and)-245(then)-245(storing)-246(these)-245(gr)18(oups)-246(as)-245(independent)-246(matrices)-245(in)-245(DIA)-246(format.)]TJ 1.004 0 0 1 150.396 610.488 Tm [(This)-250(appr)18(oach)-250(is)-250(similar)-250(to)-250(that)-250(of)-250(HLL,)-250(and)-250(r)18(equir)18(es)-250(using)-250(an)-250(of)17(f)1(set)-250(vector)-250(for)]TJ 1.013 0 0 1 150.705 598.532 Tm [(each)-247(submatrix.)-306(Again,)-247(similarly)-246(to)-247(HLL,)-247(the)-247(various)-247(submatrices)-246(ar)17(e)-246(stacked)]TJ 0.991 0 0 1 150.705 586.577 Tm [(inside)-253(a)-252(linear)-253(array)-253(to)-252(impr)18(ove)-253(memory)-252(management.)-314(The)-253(fact)-252(that)-253(the)-253(matrix)]TJ 0.98 0 0 1 150.705 574.622 Tm [(is)-212(accessed)-212(in)-212(slices)-212(help)1(s)-212(in)-212(r)18(educing)-212(cache)-212(misses,)-220(especially)-212(r)18(egar)19(ding)-212(accesses)]TJ 1 0 0 1 150.705 562.667 Tm [(to)-250(the)-250(vector)]TJ/F131 9.9626 Tf 57.424 0 Td [(y)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 1.003 0 0 1 165.649 550.712 Tm [(An)-248(a)-1(ddi)1(tional)-249(vector)]TJ/F78 9.9626 Tf 1.003 0 0 1 259.673 550.712 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 1.003 0 0 1 308.411 550.712 Tm [(is)-249(pr)18(ovided)-248(to)-249(complete)-248(the)-249(matrix)-248(format;)]TJ 0.999 0 0 1 150.705 538.757 Tm [(given)-250(that)]TJ/F78 9.9626 Tf 0.999 0 0 1 197.561 538.757 Tm [(hackSize)]TJ/F84 9.9626 Tf 0.999 0 0 1 234.51 538.757 Tm [(is)-250(the)-251(number)-250(of)-251(r)18(ows)-250(of)-251(each)-250(hack,)-251(the)]TJ/F78 9.9626 Tf 0.999 0 0 1 408.824 538.757 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.999 0 0 1 457.388 538.757 Tm [(vector)-250(is)]TJ 1.013 0 0 1 150.705 526.801 Tm [(made)-246(by)-246(an)-246(array)-246(of)]TJ/F181 10.3811 Tf 1 0 0 1 242.857 526.801 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-209(+)]TJ/F84 9.9626 Tf 1.013 0 0 1 314.476 526.801 Tm [(1)-246(elements,)-246(pointing)-246(to)-246(the)-246(\002rst)-246(diagonal)]TJ 0.98 0 0 1 150.705 514.846 Tm [(of)18(fset)-215(of)-215(a)-214(submatrix)-215(inside)-215(the)-215(stacked)]TJ/F78 9.9626 Tf 0.98 0 0 1 318.648 514.846 Tm [(offsets)]TJ/F84 9.9626 Tf 0.98 0 0 1 345.153 514.846 Tm [(buf)18(fers,)-223(plus)-215(an)-214(additional)-215(element)]TJ 0.98 0 0 1 150.705 502.891 Tm [(equal)-226(to)-225(the)-226(number)-225(of)-226(nonzer)18(o)-225(diagonals)-226(in)-226(the)-225(whole)-226(matrix.)-306(W)94(e)-226(thus)-226(have)-225(the)]TJ 0.98 0 0 1 150.406 490.936 Tm [(pr)18(operty)-202(that)-202(the)-201(number)-202(of)-202(diagonals)-202(of)-202(the)]TJ/F78 9.9626 Tf 1 0 0 1 341.485 490.936 Tm [(k)]TJ/F84 9.9626 Tf 0.98 0 0 1 346.083 490.936 Tm [(-th)]TJ/F78 9.9626 Tf 0.98 0 0 1 360.171 490.936 Tm [(hack)]TJ/F84 9.9626 Tf 0.98 0 0 1 379.718 490.936 Tm [(is)-202(given)-202(by)]TJ/F78 9.9626 Tf 0.98 0 0 1 427.587 490.936 Tm [(hackOffsets[k+1])]TJ 1 0 0 1 149.709 478.981 Tm [(-)-250(hackOffsets[k])]TJ/F84 9.9626 Tf 62.983 0 Td [(.)]TJ +/F84 9.9626 Tf 1.004 0 0 1 99.895 706.129 Tm [(the)-248(amount)-248(of)-247(needed)-248(padding;)-248(mor)18(eover)73(,)-248(whil)1(e)-248(the)-248(DIA)-248(code)-248(i)1(s)-248(easily)-248(vector)18(-)]TJ 0.999 0 0 1 99.895 694.174 Tm [(ized,)-249(it)-249(does)-249(not)-250(necessarily)-249(make)-249(optimal)-249(use)-249(of)-249(the)-249(memory)-249(hierar)18(chy)111(.)-310(While)]TJ 0.99 0 0 1 99.596 682.219 Tm [(pr)18(ocessing)-252(each)-252(diagonal)-252(we)-252(ar)18(e)-252(updating)-252(entries)-252(in)-252(the)-252(output)-252(vector)]TJ/F131 9.9626 Tf 1 0 0 1 406.468 682.219 Tm [(y)]TJ/F84 9.9626 Tf 0.99 0 0 1 411.698 682.219 Tm [(,)-252(which)]TJ 0.98 0 0 1 99.895 670.263 Tm [(is)-248(then)-248(accessed)-247(multiple)-248(times;)-250(if)-248(the)-248(vector)]TJ/F131 9.9626 Tf 1 0 0 1 291.821 670.263 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 299.471 670.263 Tm [(is)-248(too)-248(lar)19(ge)-248(to)-248(r)18(em)1(a)-1(i)1(n)-248(in)-248(the)-248(cache)]TJ 1 0 0 1 99.895 658.308 Tm [(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 1.02 0 0 1 114.839 646.353 Tm [(The)]TJ/F78 9.9626 Tf 1.02 0 0 1 135.583 646.353 Tm [(hacked)-367(DIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 188.948 646.353 Tm [(\050)]TJ/F75 9.9626 Tf 1.02 0 0 1 192.332 646.353 Tm [(HDIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 221.12 646.353 Tm [(\051)-367(format)-367(was)-368(designed)-367(to)-367(contain)-368(the)-367(amount)-367(of)]TJ 1.02 0 0 1 99.596 634.398 Tm [(padding,)-346(by)-325(br)18(eaking)-326(the)-325(original)-326(matrix)-325(into)-326(equally)-325(sized)-325(gr)17(oups)-325(of)-326(r)18(ows)]TJ 1.013 0 0 1 99.567 622.443 Tm [(\050)]TJ/F78 9.9626 Tf 1.013 0 0 1 102.927 622.443 Tm [(hacks)]TJ/F84 9.9626 Tf 1.013 0 0 1 124.968 622.443 Tm [(\051,)-246(and)-245(then)-245(storing)-246(these)-245(gr)18(oups)-246(as)-245(independent)-246(matrices)-245(in)-245(DIA)-246(format.)]TJ 1.004 0 0 1 99.587 610.488 Tm [(This)-250(appr)18(oach)-250(is)-250(similar)-250(to)-250(that)-250(of)-250(HLL,)-250(and)-250(r)18(equir)18(es)-250(using)-250(an)-250(of)18(fset)-250(vector)-250(for)]TJ 1.013 0 0 1 99.895 598.532 Tm [(each)-247(submatrix.)-306(Again,)-247(similarly)-246(to)-247(HLL,)-247(the)-247(various)-247(submatrices)-246(ar)17(e)-246(stacked)]TJ 0.991 0 0 1 99.895 586.577 Tm [(inside)-253(a)-252(linear)-253(array)-253(to)-252(impr)18(ove)-253(memory)-252(management.)-314(The)-253(fact)-252(that)-253(the)-253(matrix)]TJ 0.98 0 0 1 99.895 574.622 Tm [(is)-212(accessed)-212(in)-212(slices)-212(helps)-211(in)-212(r)18(educing)-212(cache)-212(misses,)-220(especially)-212(r)18(egar)19(ding)-212(accesses)]TJ 1 0 0 1 99.895 562.667 Tm [(to)-250(the)-250(vector)]TJ/F131 9.9626 Tf 57.424 0 Td [(y)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 1.003 0 0 1 114.839 550.712 Tm [(An)-249(additional)-248(vector)]TJ/F78 9.9626 Tf 1.003 0 0 1 208.864 550.712 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 1.003 0 0 1 257.602 550.712 Tm [(is)-249(p)1(r)17(ovided)-248(to)-249(complete)-248(the)-249(matrix)-248(format;)]TJ 0.999 0 0 1 99.895 538.757 Tm [(given)-251(t)1(hat)]TJ/F78 9.9626 Tf 0.999 0 0 1 146.752 538.757 Tm [(hackSize)]TJ/F84 9.9626 Tf 0.999 0 0 1 183.701 538.757 Tm [(is)-250(the)-251(number)-250(of)-251(r)18(ows)-250(of)-251(each)-250(hack,)-251(the)]TJ/F78 9.9626 Tf 0.999 0 0 1 358.015 538.757 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.999 0 0 1 406.578 538.757 Tm [(vector)-250(is)]TJ 1.013 0 0 1 99.895 526.801 Tm [(made)-246(by)-246(an)-246(array)-246(of)]TJ/F181 10.3811 Tf 1 0 0 1 192.047 526.801 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.337 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-209(+)]TJ/F84 9.9626 Tf 1.013 0 0 1 263.667 526.801 Tm [(1)-246(elements,)-246(pointing)-246(to)-246(the)-246(\002rst)-246(diagonal)]TJ 0.98 0 0 1 99.895 514.846 Tm [(of)18(fset)-215(of)-215(a)-214(submatrix)-215(inside)-215(the)-215(stacked)]TJ/F78 9.9626 Tf 0.98 0 0 1 267.839 514.846 Tm [(offsets)]TJ/F84 9.9626 Tf 0.98 0 0 1 294.344 514.846 Tm [(buf)18(fers,)-223(plus)-215(an)-214(additional)-215(element)]TJ 0.98 0 0 1 99.895 502.891 Tm [(equal)-226(to)-225(the)-226(number)-225(of)-226(nonzer)18(o)-225(diagonals)-226(in)-226(the)-225(whole)-226(matrix.)-306(W)94(e)-226(thus)-226(have)-225(the)]TJ 0.98 0 0 1 99.596 490.936 Tm [(pr)18(operty)-202(that)-202(the)-202(number)-201(of)-202(diagonals)-202(of)-202(the)]TJ/F78 9.9626 Tf 1 0 0 1 290.676 490.936 Tm [(k)]TJ/F84 9.9626 Tf 0.98 0 0 1 295.273 490.936 Tm [(-th)]TJ/F78 9.9626 Tf 0.98 0 0 1 309.362 490.936 Tm [(hack)]TJ/F84 9.9626 Tf 0.98 0 0 1 328.908 490.936 Tm [(is)-202(given)-202(by)]TJ/F78 9.9626 Tf 0.98 0 0 1 376.777 490.936 Tm [(hackOffsets[k+1])]TJ 1 0 0 1 98.899 478.981 Tm [(-)-250(hackOffsets[k])]TJ/F84 9.9626 Tf 62.983 0 Td [(.)]TJ 0 g 0 G ET -1 0 0 1 197.579 370.389 cm +1 0 0 1 146.769 370.389 cm q .4451 0 0 .4451 0 0 cm q @@ -31160,20 +31388,20 @@ q Q Q 0 g 0 G -1 0 0 1 -197.579 -370.389 cm +1 0 0 1 -146.769 -370.389 cm BT -/F84 9.9626 Tf 198.751 348.472 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 147.941 348.472 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -33.102 -23.941 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_hdia_sparse_mat)]TJ/F84 9.9626 Tf 109.837 0 Td [(:)]TJ + -33.102 -23.941 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_hdia_sparse_mat)]TJ/F84 9.9626 Tf 109.837 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 120.326 cm +1 0 0 1 99.895 120.326 cm 0 0 343.711 192.279 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -31182,7 +31410,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F231 8.9664 Tf 163.108 301.945 Td [(type)]TJ +/F231 8.9664 Tf 112.299 301.945 Td [(type)]TJ 0 g 0 G [-525(pm)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -31267,7 +31495,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -31361,28 +31589,28 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F84 9.9626 Tf 142.565 -36.164 Td [(174)]TJ +/F84 9.9626 Tf 142.566 -36.164 Td [(173)]TJ 0 g 0 G ET endstream endobj -2185 0 obj +2184 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hdia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2192 0 R +/PTEX.InfoDict 2191 0 R /BBox [0 0 556 211] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2193 0 R +/R7 2192 0 R >>/XObject << -/R8 2194 0 R ->>/Font << /R9 2195 0 R/R11 2196 0 R>> +/R8 2193 0 R +>>/Font << /R9 2194 0 R/R11 2195 0 R>> >> /Length 3027 /Filter /FlateDecode @@ -31399,7 +31627,7 @@ mC àÕÀ–ÅèÚWšÙ‡ñZ1m¹©†CË8?¬¹e—¶Ühc·æÖó57‘-7ÖhhlABg–›Ä ŽQ ìYP×¾ÖÌÆZkaðfÃÞ%÷1#YSñüõtÃIoÃ`·FzT#Ô:ž©""ÒÒw+ ÄÁíj€eqA#Xƒ#͸g =з‰ 1€cP€D-¶,ÆZûJ3k-Í^Zn¢‘Ðrœ³ABÏqLË-‡9Ÿæ|S,›cÕphbABg–›Ä ‰Z lYŒµö•fF]æf^˜ò¨gÚ8ų7ÕÄŠýlT3"ª± Ú¿þV)Z?·¾ãf̺¡1Ö°X]]ƒùLÈ¿†ÙYáKjÏ¢ÖKedjˆ›<Ÿ®ð/o•¢‡‹í—çÛ>úéÆÅPó\+u¿Uóq™¿¨Ùñ¼(q|KàcÉtõ¼h|¤;ÓDŸ8TÜè3¦ÆÃYË«HŒÇŠ”Û+½’¬Q‹‰n¨û±ûìþǨÙ¡k£1*R$¢™®`˜jš“†Òè •f‘ª,vU#žÅûØ}JoÒ|íYÖ„5%sMè%Çxé?k‚SW-"RMXQ»Ö„G°Æ|d®ÉÕ§Ô„ì5kšéŠjÒãéÕwjt·n²¨VUÁne4;Ørô!”6t„A· ¡Y!éeB±:³h ¬yâJà×:ùD#†R[Dï°a§˜Ì–Isµ<H«eÕðd¡ èm8Ï% P§õ§#Þ´Ï·màxG¼ÎZË‘ýn9s…#Àƒjõ§á‚N5‚ÌcG,r©™®Çum”Ò|ûi¬½–»8¾PÃôE!øæ*]Šâ ÛæGR,_#ù¬ÝÍ?fCésöâÄñßâÝ´Ï·}$½”Ç®`Ly®…ÈR+Q—æ#­ÍK³ÙzT&zµ)ŠH_x6£=“¥O±ôù¢Og„ixLEð8•ˆÉ«KŽc³2žÙOO¦áU ¡òjSÃJ[êYâE,l^yÖÑgeƒ”´Ø¢þð™‰o² }DêBtôú§ëÏÎ'ºÖÑ"ý¨†ù‡Ç +Š}–é惄†Ì¶fbôBÍ™þïñùøÍÃí›7ýéxøñ6¿qžßŸ`Ú dœöPÀ‡çÛ{õð›Ïø%¥ƒ^w¬ã_îÎ…)ôzÜãÉŽ-îú ƒʪ#Oú! smèéRßa÷ý»;ÿê¾aÃì\º«¯þúð‡Û=–ŒsØﮆßÝݦ@ïwñÕ}Íî.ã?„NC ¬Ô,PŒ˜{¤ …áÛÔ…öJŸ«÷ôº8¬å¹×ô}¯ ÏHzw÷û׿ýãñ§ï¾{‹ÀU­áîÛ‡}±£ÇÀ„nbURA4Ûƒãǹ@7ú#Ãׯ"íW}¼{{¼~ófZÍÍã‡êðg)wæG?Üþ4º‘ endstream endobj -2194 0 obj +2193 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -31418,7 +31646,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0l?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@ endstream endobj -2198 0 obj +2197 0 obj << /Filter /FlateDecode /Length 177 @@ -31427,7 +31655,7 @@ stream xœ]1à EwNÁ €0´C”%]24ªÚ^€€‰ˆ¡·/8I‡¶ülë›õÃmð.SöHA¿ Së¼I°†-i ÌÎÑPãt>³^T$¬¿«øþD eìΣZ€=Å;b×è``JCR~ÒrÞµÖv¼ùÉ]0Ùc³1ç%“V¡KUP¼ J¼vêêáêð4Dõ–øŒo ÍjÏyø}C¬*Z‚|ïY› endstream endobj -2200 0 obj +2199 0 obj << /Filter /FlateDecode /Length 213 @@ -31439,7 +31667,7 @@ e ¦Y$àÅcÂß ó”yJê Ûál« endstream endobj -2201 0 obj +2200 0 obj << /Filter /FlateDecode /Length1 10604 @@ -31473,7 +31701,7 @@ b YÑF.þÎ X°bÍÒιKo˜ß¾¦ùúÚº9 ô,p÷xýÿÍg¼²xή`ŒÿK)ÄDÀl;Áy‚jö8Ô­ƒ¨[ßÿáí°×þÒï=2ØdqmŒëøá“žôèÕðÃú‹;­EÆP%ï÷ÿ=X endstream endobj -2202 0 obj +2201 0 obj << /Filter /FlateDecode /Length1 5080 @@ -31494,9 +31722,9 @@ Y2 pÓÇ}3ÇóyØà.”pÄ€×ÏôÁ›ýÿâqÁ%§t1Þ®onb©³eæÑM¸éÃáË0÷ǵ3kçéD ^ðoÛw# çô°'Ì?¸²rtåÁ3÷9#§þëò¾W|ÞÞ|¢ûïš«A†ûD¸Ÿàûe0¹bÎxõ¯`}u¤¸%üžÄ÷÷ðý\3“¹ÙZŸ­¾eÓ?¼|Odò?¸¯ðo2õU3ðÜÖÿãÿ­ðÿÍWúßÓ )' endstream endobj -2205 0 obj +2204 0 obj << -/Length 1097 +/Length 1098 >> stream 0 g 0 G @@ -31504,7 +31732,7 @@ stream 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG q -1 0 0 1 99.895 651.334 cm +1 0 0 1 150.705 651.334 cm 0 0 343.711 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -31513,7 +31741,7 @@ Q 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F231 8.9664 Tf 121.713 701.446 Td [(integer)]TJ +/F231 8.9664 Tf 172.523 701.446 Td [(integer)]TJ 0 g 0 G [(\050psb_long_int_k_\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -31535,55 +31763,55 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.917 Td [(contains)]TJ + -9.415 -21.917 Td [(contains)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 4.707 -10.959 Td [(....)]TJ + 4.708 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.707 -10.959 Td [(end)-525(type)]TJ + -4.708 -10.959 Td [(end)-525(type)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F84 9.9626 Tf 151.98 -567.173 Td [(175)]TJ +/F84 9.9626 Tf 151.98 -567.173 Td [(174)]TJ 0 g 0 G ET endstream endobj -2210 0 obj +2208 0 obj << -/Length 7873 +/Length 7855 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 150.705 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F84 9.9626 Tf 1.012 0 0 1 150.705 687.165 Tm [(For)-248(computing)-248(with)-247(CUDA)-248(we)-248(de\002ne)-248(a)-248(dual)-248(memorization)-247(strategy)-248(in)-248(which)]TJ 1.02 0 0 1 150.705 675.21 Tm [(each)-322(variable)-323(on)-322(the)-323(CPU)-322(\050\223host\224\051)-323(side)-322(has)-323(a)-322(GPU)-323(\050\223device\224\051)-322(side.)-536(When)-323(a)]TJ 1.02 0 0 1 150.705 663.255 Tm [(GPU-type)-295(variable)-295(is)-295(initialized,)-307(the)-295(data)-295(contained)-295(is)-295(\050usually\051)-295(the)-295(same)-295(on)]TJ 0.998 0 0 1 150.705 651.3 Tm [(both)-251(sides.)-314(Eac)1(h)-252(operator)-251(invoked)-252(o)1(n)-252(the)-251(variable)-252(may)-251(change)-251(the)-252(data)-251(so)-251(that)]TJ 1 0 0 1 150.705 639.344 Tm [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 0.981 0 0 1 165.649 627.389 Tm [(Keeping)-255(track)-256(of)-256(the)-255(updates)-256(to)-255(data)-256(in)-255(the)-256(variables)-255(is)-256(essential:)-317(we)-256(want)-255(to)]TJ 0.99 0 0 1 150.406 615.434 Tm [(perform)-252(most)-252(computations)-251(on)-252(the)-252(GPU,)-252(but)-252(we)-252(cannot)-252(af)19(f)-1(or)19(d)-252(the)-252(time)-252(needed)]TJ 1.02 0 0 1 150.705 603.479 Tm [(to)-270(move)-270(data)-271(between)-270(the)-270(host)-270(memory)-271(and)-270(the)-270(device)-270(memory)-270(because)-271(the)]TJ 0.981 0 0 1 150.705 591.524 Tm [(bandwidth)-254(of)-254(the)-254(inter)18(connection)-254(bus)-254(would)-255(become)-254(the)-254(main)-254(bottleneck)-254(of)-254(the)]TJ 0.984 0 0 1 150.705 579.569 Tm [(computation.)-315(Thus,)-254(each)-254(and)-255(every)-254(computational)-254(r)18(out)1(ine)-255(in)-254(the)-254(library)-254(is)-254(built)]TJ 1 0 0 1 150.705 567.613 Tm [(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F84 9.9626 Tf 1.012 0 0 1 99.895 687.165 Tm [(For)-248(computing)-248(with)-247(CUDA)-248(we)-248(de\002ne)-248(a)-248(dual)-248(memorization)-247(strategy)-248(in)-248(which)]TJ 1.02 0 0 1 99.895 675.21 Tm [(each)-323(vari)1(able)-323(on)-322(the)-323(CPU)-322(\050\223host\224\051)-323(side)-322(has)-323(a)-322(GPU)-323(\050\223device\224\051)-322(side.)-536(When)-323(a)]TJ 1.02 0 0 1 99.895 663.255 Tm [(GPU-type)-295(variable)-295(is)-295(initialized,)-307(the)-295(data)-295(contained)-295(is)-295(\050usually\051)-295(the)-295(same)-295(on)]TJ 0.998 0 0 1 99.895 651.3 Tm [(both)-251(sides.)-314(Each)-251(operator)-251(invoked)-252(on)-251(the)-251(variable)-252(may)-251(change)-251(the)-252(data)-251(so)-251(that)]TJ 1 0 0 1 99.895 639.344 Tm [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 0.981 0 0 1 114.839 627.389 Tm [(Keeping)-256(track)-255(of)-256(the)-255(updates)-256(to)-255(data)-256(in)-255(the)-256(variables)-255(is)-256(essential:)-317(we)-256(want)-255(to)]TJ 0.99 0 0 1 99.596 615.434 Tm [(perform)-252(most)-252(computations)-252(on)-251(the)-252(GPU,)-252(but)-252(we)-252(cannot)-252(af)19(f)-1(or)19(d)-252(the)-252(time)-252(needed)]TJ 1.02 0 0 1 99.895 603.479 Tm [(to)-270(move)-270(data)-271(between)-270(the)-270(host)-270(memory)-271(and)-270(the)-270(device)-270(memory)-270(because)-271(the)]TJ 0.981 0 0 1 99.895 591.524 Tm [(bandwidth)-254(of)-254(the)-255(int)1(er)18(connection)-254(bus)-254(would)-255(become)-254(the)-254(main)-254(bottleneck)-254(of)-254(the)]TJ 0.984 0 0 1 99.895 579.569 Tm [(computation.)-315(Thus,)-254(each)-255(and)-254(every)-254(computational)-254(r)18(outine)-254(in)-254(the)-254(library)-254(is)-254(built)]TJ 1 0 0 1 99.895 567.613 Tm [(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ 0 g 0 G 13.888 -18.472 Td [(\225)]TJ 0 g 0 G - 1.002 0 0 1 175.611 549.141 Tm [(If)-248(the)-249(data)-248(type)-248(being)-249(handled)-248(is)-248(GPU-enabled,)-249(make)-248(sur)18(e)-249(that)-248(its)-248(device)]TJ 1.02 0 0 1 175.611 537.186 Tm [(copy)-300(is)-300(up)-300(to)-300(date,)-313(perform)-300(any)-300(arithmetic)-300(operation)-300(on)-300(the)-300(GPU,)-300(and)]TJ 1.02 0 0 1 175.611 525.231 Tm [(if)-266(the)-266(data)-266(has)-267(been)-266(alter)18(ed)-266(as)-266(a)-266(r)17(esult,)-271(mark)-266(the)-266(main-memory)-267(copy)-266(as)]TJ 1 0 0 1 175.611 513.276 Tm [(outdated.)]TJ + 1.002 0 0 1 124.802 549.141 Tm [(If)-248(the)-249(data)-248(type)-248(being)-249(handled)-248(is)-248(GPU-enabled,)-249(make)-248(sur)18(e)-249(that)-248(its)-248(device)]TJ 1.02 0 0 1 124.802 537.186 Tm [(copy)-300(is)-300(up)-300(to)-300(date,)-313(perform)-300(any)-300(arithmetic)-300(operation)-300(on)-300(the)-300(GPU,)-300(and)]TJ 1.02 0 0 1 124.802 525.231 Tm [(if)-266(the)-266(data)-266(has)-267(been)-266(alter)18(ed)-266(as)-266(a)-266(r)17(esult,)-271(mark)-266(the)-266(main-memory)-267(copy)-266(as)]TJ 1 0 0 1 124.802 513.276 Tm [(outdated.)]TJ 0 g 0 G - -11.018 -19.199 Td [(\225)]TJ + -11.019 -19.199 Td [(\225)]TJ 0 g 0 G - 1.007 0 0 1 175.303 494.077 Tm [(The)-249(main-memory)-248(copy)-249(is)-249(never)-248(updated)-249(unless)-249(this)-248(is)-249(r)18(equested)-249(by)-248(the)]TJ 1 0 0 1 175.611 482.122 Tm [(user)-250(either)]TJ + 1.007 0 0 1 124.493 494.077 Tm [(The)-249(main-memory)-248(copy)-249(is)-249(never)-248(updated)-249(unless)-249(this)-248(is)-249(r)18(equested)-249(by)-248(the)]TJ 1 0 0 1 124.802 482.122 Tm [(user)-250(either)]TJ 0 g 0 G /F75 9.9626 Tf 0 -19.198 Td [(explicitly)]TJ 0 g 0 G -/F84 9.9626 Tf 47.582 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ +/F84 9.9626 Tf 47.581 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ 0 g 0 G -/F75 9.9626 Tf -47.582 -15.214 Td [(implicitly)]TJ +/F75 9.9626 Tf -47.581 -15.214 Td [(implicitly)]TJ 0 g 0 G -/F84 9.9626 Tf 1.011 0 0 1 225.404 447.71 Tm [(by)-247(invoking)-247(a)-246(method)-247(that)-247(involves)-247(other)-247(data)-247(items)-246(that)-247(ar)18(e)]TJ 1 0 0 1 197.529 435.755 Tm [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ 1.007 0 0 1 150.705 416.556 Tm [(In)-247(this)-247(way)110(,)-248(data)-247(items)-247(ar)18(e)-247(put)-248(on)-247(the)-247(GPU)-247(memory)-247(\223on)-248(demand\224)-247(and)-247(r)18(emain)]TJ 1.02 0 0 1 150.705 404.601 Tm [(ther)18(e)-289(as)-289(long)-289(as)-288(\223normal\224)-289(computations)-289(ar)18(e)-289(carried)-289(out.)-435(A)1(s)-289(an)-289(example,)-300(the)]TJ 1 0 0 1 150.705 392.646 Tm [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ +/F84 9.9626 Tf 1.011 0 0 1 174.595 447.71 Tm [(by)-247(invoking)-247(a)-246(method)-247(that)-247(involves)-247(other)-247(data)-247(i)1(tems)-247(that)-247(ar)18(e)]TJ 1 0 0 1 146.72 435.755 Tm [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ 1.007 0 0 1 99.895 416.556 Tm [(In)-247(this)-247(way)110(,)-248(data)-247(items)-247(ar)18(e)-247(put)-248(on)-247(the)-247(GPU)-247(memory)-248(\223on)-247(demand\224)-247(and)-247(r)18(emain)]TJ 1.02 0 0 1 99.895 404.601 Tm [(ther)18(e)-289(as)-289(long)-289(as)-288(\223normal\224)-289(computations)-289(ar)18(e)-289(carried)-289(out.)-435(As)-288(an)-289(example,)-300(the)]TJ 1 0 0 1 99.895 392.646 Tm [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 364.481 cm +1 0 0 1 99.895 364.481 cm 0 0 343.711 16.936 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -31592,73 +31820,73 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F231 8.9664 Tf 172.523 370.757 Td [(call)]TJ +/F231 8.9664 Tf 121.713 370.757 Td [(call)]TJ 0 g 0 G [-525(psb_spmm\050alpha,a,x,beta,y,desc_a,info\051)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 150.286 347.275 Tm [(will)-258(transpar)18(ently)-258(and)-258(automatically)-257(be)-258(performed)-258(on)-258(the)-257(GPU)-258(whenever)-258(all)]TJ 1.014 0 0 1 150.705 335.32 Tm [(thr)18(ee)-246(data)-245(inputs)]TJ/F131 9.9626 Tf 1 0 0 1 228.932 335.32 Tm [(a)]TJ/F84 9.9626 Tf 1.014 0 0 1 234.162 335.32 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 239.17 335.32 Tm [(x)]TJ/F84 9.9626 Tf 1.014 0 0 1 246.88 335.32 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 266.463 335.32 Tm [(y)]TJ/F84 9.9626 Tf 1.014 0 0 1 274.173 335.32 Tm [(ar)18(e)-246(GPU-enabled.)-305(If)-246(a)-245(pr)18(ogram)-246(makes)-245(many)-246(such)]TJ 1 0 0 1 150.705 323.364 Tm [(calls)-250(sequentially)111(,)-250(then)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.477 347.275 Tm [(will)-258(transpar)18(ently)-258(and)-258(automatically)-257(be)-258(performed)-258(on)-258(the)-257(GPU)-258(whenever)-258(all)]TJ 1.014 0 0 1 99.895 335.32 Tm [(thr)18(ee)-246(data)-245(inputs)]TJ/F131 9.9626 Tf 1 0 0 1 178.122 335.32 Tm [(a)]TJ/F84 9.9626 Tf 1.014 0 0 1 183.353 335.32 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 188.36 335.32 Tm [(x)]TJ/F84 9.9626 Tf 1.014 0 0 1 196.071 335.32 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 215.654 335.32 Tm [(y)]TJ/F84 9.9626 Tf 1.014 0 0 1 223.364 335.32 Tm [(ar)18(e)-246(GPU-enabled.)-305(If)-246(a)-245(pr)18(ogram)-246(makes)-245(many)-246(such)]TJ 1 0 0 1 99.895 323.364 Tm [(calls)-250(sequentially)111(,)-250(then)]TJ 0 g 0 G 13.888 -18.472 Td [(\225)]TJ 0 g 0 G - 1.02 0 0 1 175.303 304.892 Tm [(The)-273(\002rst)-273(kernel)-273(invocation)-273(will)-273(\002nd)-273(the)-273(data)-273(in)-273(main)-273(memory)109(,)-280(and)-273(will)]TJ 1.02 0 0 1 175.611 292.937 Tm [(copy)-303(it)-302(to)-302(the)-303(GPU)-302(memory)108(,)-316(thus)-303(incurring)-302(a)-303(signi\002cant)-302(over)17(head;)-331(the)]TJ 1 0 0 1 175.611 280.982 Tm [(r)18(esult)-250(is)-250(however)]TJ/F78 9.9626 Tf 78.156 0 Td [(not)]TJ/F84 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ + 1.02 0 0 1 124.493 304.892 Tm [(The)-273(\002rst)-273(kernel)-273(invocation)-273(will)-273(\002nd)-273(the)-273(data)-273(in)-273(main)-273(memory)109(,)-280(and)-273(will)]TJ 1.02 0 0 1 124.802 292.937 Tm [(copy)-302(it)-303(to)-302(the)-303(GPU)-302(memory)109(,)-317(thus)-303(incurring)-302(a)-303(signi\002cant)-302(over)18(head;)-332(the)]TJ 1 0 0 1 124.802 280.982 Tm [(r)18(esult)-250(is)-250(however)]TJ/F78 9.9626 Tf 78.156 0 Td [(not)]TJ/F84 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ 0 g 0 G - -104.945 -19.198 Td [(\225)]TJ + -104.946 -19.198 Td [(\225)]TJ 0 g 0 G - 1.02 0 0 1 175.611 261.784 Tm [(Subsequent)-308(kernel)-308(invocations)-308(involving)-307(the)-308(same)-308(vector)-308(will)-308(\002nd)-308(the)]TJ 1 0 0 1 175.611 249.828 Tm [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ 1.016 0 0 1 150.705 231.356 Tm [(For)-246(all)-245(invocations)-246(after)-246(the)-245(\002rst)-246(the)-246(only)-245(data)-246(that)-246(will)-245(have)-246(to)-246(be)-246(transferr)18(ed)]TJ 1.02 0 0 1 150.705 219.401 Tm [(to/fr)18(om)-254(the)-254(main)-253(memory)-254(will)-254(be)-253(the)-254(scalars)]TJ/F131 9.9626 Tf 1 0 0 1 355.319 219.401 Tm [(alpha)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.049 219.401 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 403.83 219.401 Tm [(beta)]TJ/F84 9.9626 Tf 1.02 0 0 1 424.752 219.401 Tm [(,)-256(and)-253(the)-254(r)18(eturn)]TJ 1 0 0 1 150.705 207.446 Tm [(code)]TJ/F131 9.9626 Tf 23.213 0 Td [(info)]TJ/F84 9.9626 Tf 20.921 0 Td [(.)]TJ + 1.02 0 0 1 124.802 261.784 Tm [(Subsequent)-308(kernel)-308(invocations)-308(inv)1(olving)-308(the)-308(same)-308(vector)-308(will)-308(\002nd)-308(the)]TJ 1 0 0 1 124.802 249.828 Tm [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ 1.016 0 0 1 99.895 231.356 Tm [(For)-246(all)-245(invocations)-246(after)-246(the)-245(\002rst)-246(the)-246(only)-245(data)-246(that)-246(will)-246(have)-245(to)-246(be)-246(transferr)18(ed)]TJ 1.02 0 0 1 99.895 219.401 Tm [(to/fr)18(om)-254(the)-254(main)-253(memory)-254(will)-254(be)-253(the)-254(scalars)]TJ/F131 9.9626 Tf 1 0 0 1 304.51 219.401 Tm [(alpha)]TJ/F84 9.9626 Tf 1.02 0 0 1 333.239 219.401 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 353.021 219.401 Tm [(beta)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.942 219.401 Tm [(,)-256(and)-254(the)-253(r)17(etu)1(rn)]TJ 1 0 0 1 99.895 207.446 Tm [(code)]TJ/F131 9.9626 Tf 23.213 0 Td [(info)]TJ/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G /F75 9.9626 Tf -44.134 -20.101 Td [(V)111(ectors:)]TJ 0 g 0 G -/F84 9.9626 Tf 1.003 0 0 1 191.073 187.345 Tm [(The)-248(data)-248(type)]TJ/F131 9.9626 Tf 1 0 0 1 254.2 187.345 Tm [(psb_T_vect_gpu)]TJ/F84 9.9626 Tf 1.003 0 0 1 329.904 187.345 Tm [(pr)18(ovides)-248(a)-248(GPU-enabled)-248(extension)-249(of)]TJ 1.02 0 0 1 175.611 175.39 Tm [(the)-261(inner)-261(type)]TJ/F131 9.9626 Tf 1 0 0 1 241.259 175.39 Tm [(psb_T_base_vect_type)]TJ/F84 9.9626 Tf 1.02 0 0 1 345.866 175.39 Tm [(,)-265(and)-260(must)-261(be)-261(used)-261(together)-260(with)]TJ 1.02 0 0 1 175.611 163.435 Tm [(the)-274(other)-275(inner)-274(matrix)-274(type)-275(to)-274(make)-274(full)-275(use)-274(of)-274(the)-275(G)1(PU)-275(computational)]TJ 1 0 0 1 175.611 151.479 Tm [(capabilities;)]TJ +/F84 9.9626 Tf 1.003 0 0 1 140.264 187.345 Tm [(The)-248(data)-248(type)]TJ/F131 9.9626 Tf 1 0 0 1 203.39 187.345 Tm [(psb_T_vect_gpu)]TJ/F84 9.9626 Tf 1.003 0 0 1 279.095 187.345 Tm [(pr)18(ovides)-248(a)-248(GPU-enabled)-248(extension)-249(of)]TJ 1.02 0 0 1 124.802 175.39 Tm [(the)-261(inner)-260(type)]TJ/F131 9.9626 Tf 1 0 0 1 190.45 175.39 Tm [(psb_T_base_vect_type)]TJ/F84 9.9626 Tf 1.02 0 0 1 295.057 175.39 Tm [(,)-265(and)-260(must)-261(be)-261(used)-261(together)-260(with)]TJ 1.02 0 0 1 124.802 163.435 Tm [(the)-274(other)-275(inner)-274(matrix)-274(type)-275(to)-274(make)-274(full)-274(use)-275(of)-274(the)-274(GPU)-275(computational)]TJ 1 0 0 1 124.802 151.479 Tm [(capabilities;)]TJ 0 g 0 G -/F75 9.9626 Tf -24.906 -19.198 Td [(CSR:)]TJ +/F75 9.9626 Tf -24.907 -19.198 Td [(CSR:)]TJ 0 g 0 G -/F84 9.9626 Tf 0.982 0 0 1 178.341 132.281 Tm [(The)-255(data)-256(type)]TJ/F131 9.9626 Tf 1 0 0 1 240.361 132.281 Tm [(psb_T_csrg_sparse_mat)]TJ/F84 9.9626 Tf 0.982 0 0 1 352.697 132.281 Tm [(pr)18(ovides)-255(an)-256(interface)-255(to)-255(the)-256(GPU)]TJ 1 0 0 1 175.333 120.326 Tm [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ +/F84 9.9626 Tf 0.982 0 0 1 127.532 132.281 Tm [(The)-255(data)-256(type)]TJ/F131 9.9626 Tf 1 0 0 1 189.551 132.281 Tm [(psb_T_csrg_sparse_mat)]TJ/F84 9.9626 Tf 0.982 0 0 1 301.888 132.281 Tm [(pr)18(ovides)-255(an)-256(i)1(nterface)-256(to)-255(the)-256(GPU)]TJ 1 0 0 1 124.523 120.326 Tm [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ 0 g 0 G - 139.755 -29.888 Td [(176)]TJ + 139.756 -29.888 Td [(175)]TJ 0 g 0 G ET endstream endobj -2214 0 obj +2213 0 obj << -/Length 5844 +/Length 5849 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F75 9.9626 Tf 99.895 706.129 Td [(HYB:)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(HYB:)]TJ 0 g 0 G -/F84 9.9626 Tf 0.98 0 0 1 128.647 706.129 Tm [(The)-251(data)-252(type)]TJ/F131 9.9626 Tf 1 0 0 1 190.423 706.129 Tm [(psb_T_hybg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 302.715 706.129 Tm [(pr)18(ovides)-251(an)-251(interface)-252(to)-251(the)-252(HYB)]TJ 1.02 0 0 1 124.802 694.174 Tm [(GPU)-295(storage)-296(available)-295(in)-295(the)-296(NVIDIA)-295(CuSP)90(ARSE)-295(library)109(.)-455(The)-296(internal)]TJ 1.001 0 0 1 124.802 682.219 Tm [(str)8(uctur)18(e)-249(is)-249(opaque,)-249(hence)-249(the)-250(h)1(ost)-250(side)-249(is)-249(just)-249(CSR;)-249(the)-249(HYB)-249(data)-249(format)]TJ 1 0 0 1 124.802 670.263 Tm [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 179.457 706.129 Tm [(The)-251(data)-252(type)]TJ/F131 9.9626 Tf 1 0 0 1 241.232 706.129 Tm [(psb_T_hybg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 353.524 706.129 Tm [(pr)18(ovides)-251(an)-251(interface)-252(to)-251(the)-252(HYB)]TJ 1.02 0 0 1 175.611 694.174 Tm [(GPU)-295(storage)-296(available)-295(in)-296(t)1(he)-296(NVIDIA)-295(CuSP)90(ARSE)-295(library)108(.)-454(The)-296(internal)]TJ 1.001 0 0 1 175.611 682.219 Tm [(str)8(uctur)18(e)-249(is)-249(opaque,)-249(hence)-249(the)-250(host)-249(side)-249(is)-249(just)-249(CSR;)-249(the)-249(HYB)-249(data)-249(format)]TJ 1 0 0 1 175.611 670.263 Tm [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.907 -20.26 Td [(ELL:)]TJ +/F75 9.9626 Tf -24.906 -20.26 Td [(ELL:)]TJ 0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 125.32 650.003 Tm [(The)-265(data)-265(type)]TJ/F131 9.9626 Tf 1 0 0 1 190.038 650.003 Tm [(psb_T_elg_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 297.34 650.003 Tm [(pr)18(ovides)-266(an)-265(interface)-265(to)-265(the)-265(ELL-)]TJ 1 0 0 1 124.802 638.048 Tm [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 176.129 650.003 Tm [(The)-265(data)-266(t)1(ype)]TJ/F131 9.9626 Tf 1 0 0 1 240.847 650.003 Tm [(psb_T_elg_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 348.149 650.003 Tm [(pr)18(ovides)-266(an)-265(interface)-265(to)-265(the)-265(ELL-)]TJ 1 0 0 1 175.611 638.048 Tm [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ 0 g 0 G -/F75 9.9626 Tf -24.907 -20.261 Td [(HLL:)]TJ +/F75 9.9626 Tf -24.906 -20.261 Td [(HLL:)]TJ 0 g 0 G -/F84 9.9626 Tf 0.98 0 0 1 127.532 617.787 Tm [(The)-194(data)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 187.621 617.787 Tm [(psb_T_hlg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 294.121 617.787 Tm [(pr)18(ovides)-193(an)-194(interface)-194(to)-194(the)-194(Hacked)]TJ 1 0 0 1 124.802 605.832 Tm [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +/F84 9.9626 Tf 0.98 0 0 1 178.341 617.787 Tm [(The)-194(data)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 238.431 617.787 Tm [(psb_T_hlg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 344.93 617.787 Tm [(pr)18(ovides)-194(an)-193(interface)-194(to)-194(the)-194(Hacked)]TJ 1 0 0 1 175.611 605.832 Tm [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ 0 g 0 G -/F75 9.9626 Tf -24.907 -20.261 Td [(HDIA:)]TJ +/F75 9.9626 Tf -24.906 -20.261 Td [(HDIA:)]TJ 0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 135.282 585.571 Tm [(The)-298(data)-297(type)]TJ/F131 9.9626 Tf 1 0 0 1 200.986 585.571 Tm [(psb_T_hdiag_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 319.077 585.571 Tm [(pr)18(ovides)-298(an)-298(in)1(terface)-298(to)-298(the)]TJ 1 0 0 1 124.802 573.616 Tm [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F75 14.3462 Tf -24.907 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F75 11.9552 Tf 0 -24.857 Td [(psb)]TJ +/F84 9.9626 Tf 1.02 0 0 1 186.092 585.571 Tm [(The)-298(data)-297(type)]TJ/F131 9.9626 Tf 1 0 0 1 251.795 585.571 Tm [(psb_T_hdiag_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 369.887 585.571 Tm [(pr)18(ovides)-298(an)-297(interface)-298(to)-298(the)]TJ 1 0 0 1 175.611 573.616 Tm [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F75 14.3462 Tf -24.906 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F75 11.9552 Tf 0 -24.857 Td [(psb)]TJ ET q -1 0 0 1 120.53 514.195 cm +1 0 0 1 171.339 514.195 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 124.116 513.996 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 513.996 Td [(cuda)]TJ ET q -1 0 0 1 150.729 514.195 cm +1 0 0 1 201.538 514.195 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 154.315 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ +/F75 11.9552 Tf 205.125 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG /F131 9.9626 Tf -54.42 -19.126 Td [(call)]TJ 0 g 0 G @@ -31679,29 +31907,29 @@ BT 0 g 0 G 0 -20.26 Td [(device)]TJ 0 g 0 G -/F84 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.003 0 0 1 124.802 364.098 Tm [(Speci\002ed)-249(as:)-308(an)-249(integer)-248(value.)-558(Default:)-308(use)]TJ +/F84 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.965 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.003 0 0 1 175.611 364.098 Tm [(Speci\002ed)-249(as:)-308(an)-249(integer)-248(value.)-558(Default:)-308(use)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F131 9.9626 Tf 1 0 0 1 317.836 364.098 Tm [(mod)]TJ +/F131 9.9626 Tf 1 0 0 1 368.645 364.098 Tm [(mod)]TJ 0 g 0 G - [(\050iam,ngpu\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 388.314 364.098 Tm [(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 418.287 364.098 Tm [(iam)]TJ/F84 9.9626 Tf 1.003 0 0 1 436.462 364.098 Tm [(is)]TJ 1.011 0 0 1 124.802 352.143 Tm [(the)-247(calling)-248(pr)18(ocess)-247(index)-248(and)]TJ/F131 9.9626 Tf 1 0 0 1 256.205 352.143 Tm [(ngpu)]TJ/F84 9.9626 Tf 1.011 0 0 1 279.618 352.143 Tm [(is)-247(the)-248(total)-247(number)-248(of)-247(CUDA)-247(devices)]TJ 1 0 0 1 124.802 340.187 Tm [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F75 11.9552 Tf -24.907 -20.176 Td [(Notes)]TJ + [(\050iam,ngpu\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 439.123 364.098 Tm [(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 469.097 364.098 Tm [(iam)]TJ/F84 9.9626 Tf 1.003 0 0 1 487.271 364.098 Tm [(is)]TJ 1.011 0 0 1 175.611 352.143 Tm [(the)-247(calling)-248(pr)18(ocess)-247(index)-248(and)]TJ/F131 9.9626 Tf 1 0 0 1 307.014 352.143 Tm [(ngpu)]TJ/F84 9.9626 Tf 1.011 0 0 1 330.428 352.143 Tm [(is)-247(the)-248(total)-247(number)-247(of)-248(CUDA)-247(devices)]TJ 1 0 0 1 175.611 340.187 Tm [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F75 11.9552 Tf -24.906 -20.176 Td [(Notes)]TJ 0 g 0 G -/F84 9.9626 Tf 12.454 -20.177 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -20.177 Td [(1.)]TJ 0 g 0 G - [-461(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F75 11.9552 Tf -12.454 -29.61 Td [(psb)]TJ + [-461(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F75 11.9552 Tf -12.453 -29.61 Td [(psb)]TJ ET q -1 0 0 1 120.53 270.423 cm +1 0 0 1 171.339 270.423 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 124.116 270.224 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 270.224 Td [(cuda)]TJ ET q -1 0 0 1 150.729 270.423 cm +1 0 0 1 201.538 270.423 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 154.315 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ +/F75 11.9552 Tf 205.125 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG /F131 9.9626 Tf -54.42 -19.126 Td [(call)]TJ 0 g 0 G @@ -31716,55 +31944,55 @@ BT 0 g 0 G 0 -20.261 Td [(ctxt)]TJ 0 g 0 G -/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G - 139.477 -29.888 Td [(177)]TJ + 139.477 -29.888 Td [(176)]TJ 0 g 0 G ET endstream endobj -2219 0 obj +2218 0 obj << -/Length 5434 +/Length 5422 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(psb)]TJ ET q -1 0 0 1 171.339 706.328 cm +1 0 0 1 120.53 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ ET q -1 0 0 1 201.538 706.328 cm +1 0 0 1 150.729 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ +/F75 11.9552 Tf 154.315 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG /F131 9.9626 Tf -54.42 -19.65 Td [(call)]TJ 0 g 0 G - [-525(psb_cuda_DeviceSync\050\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 165.649 663.146 Tm [(This)-249(subr)18(out)1(ine)-249(ensur)18(es)-249(that)-249(all)-249(pr)19(eviosly)-249(invoked)-249(kernels,)-250(i.e.)-315(all)-249(invocation)]TJ 1 0 0 1 150.705 651.191 Tm [(of)-250(CUDA-side)-250(code,)-250(have)-250(completed.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ + [-525(psb_cuda_DeviceSync\050\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 663.146 Tm [(This)-249(subr)18(outine)-248(ensur)18(es)-249(that)-249(all)-249(pr)18(evi)1(osly)-249(invoked)-249(kernels,)-250(i.e.)-315(all)-249(invocation)]TJ 1 0 0 1 99.895 651.191 Tm [(of)-250(CUDA-side)-250(code,)-250(have)-250(completed.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 620.243 cm +1 0 0 1 120.53 620.243 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 620.044 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 620.044 Td [(cuda)]TJ ET q -1 0 0 1 201.538 620.243 cm +1 0 0 1 150.729 620.243 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 620.044 Td [(getDeviceCount)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +/F75 11.9552 Tf 154.315 620.044 Td [(getDeviceCount)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31775,18 +32003,18 @@ BT [-1050(psb_cuda_getDeviceCount\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Get)-250(number)-250(of)-250(devices)-250(available)-250(on)-250(curr)18(ent)-250(computing)-250(node.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 546.113 cm +1 0 0 1 120.53 546.113 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 545.914 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 545.914 Td [(cuda)]TJ ET q -1 0 0 1 201.538 546.113 cm +1 0 0 1 150.729 546.113 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 545.914 Td [(getDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +/F75 11.9552 Tf 154.315 545.914 Td [(getDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31797,18 +32025,18 @@ BT [-1050(psb_cuda_getDevice\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Get)-250(device)-250(in)-250(use)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 471.983 cm +1 0 0 1 120.53 471.983 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 471.784 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 471.784 Td [(cuda)]TJ ET q -1 0 0 1 201.538 471.983 cm +1 0 0 1 150.729 471.983 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 471.784 Td [(setDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(info)]TJ +/F75 11.9552 Tf 154.315 471.784 Td [(setDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31819,18 +32047,18 @@ BT [-525(psb_cuda_setDevice\050dev\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Set)-250(device)-250(to)-250(be)-250(used)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 397.853 cm +1 0 0 1 120.53 397.853 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 397.654 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 397.654 Td [(cuda)]TJ ET q -1 0 0 1 201.538 397.853 cm +1 0 0 1 150.729 397.853 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 397.654 Td [(DeviceHasUV)129(A)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ +/F75 11.9552 Tf 154.315 397.654 Td [(DeviceHasUV)129(A)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31838,21 +32066,21 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 354.671 Tm [(Returns)-250(tr)8(ue)-251(if)-250(device)-251(curr)18(ently)-250(in)-251(use)-250(supports)-250(UV)108(A)-250(\050Uni\002ed)-250(V)54(irtual)-251(Ad-)]TJ 1 0 0 1 150.705 342.716 Tm [(dr)18(essing\051.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ + [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 354.671 Tm [(Returns)-250(tr)7(ue)-250(if)-250(device)-251(curr)18(ently)-250(in)-251(use)-250(supports)-250(UV)108(A)-250(\050Uni\002ed)-250(V)54(irtual)-251(Ad-)]TJ 1 0 0 1 99.895 342.716 Tm [(dr)18(essing\051.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 311.768 cm +1 0 0 1 120.53 311.768 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 311.569 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 311.569 Td [(cuda)]TJ ET q -1 0 0 1 201.538 311.768 cm +1 0 0 1 150.729 311.768 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 311.569 Td [(W)74(arpSize)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ +/F75 11.9552 Tf 154.315 311.569 Td [(W)74(arpSize)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31863,18 +32091,18 @@ BT [-525(psb_cuda_WarpSize\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(warp)-250(size.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 237.638 cm +1 0 0 1 120.53 237.638 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 237.439 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 237.439 Td [(cuda)]TJ ET q -1 0 0 1 201.538 237.638 cm +1 0 0 1 150.729 237.638 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 237.439 Td [(MultiProcessors)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ +/F75 11.9552 Tf 154.315 237.439 Td [(MultiProcessors)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31885,18 +32113,18 @@ BT [-525(psb_cuda_MultiProcessors\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(number)-250(of)-250(multipr)18(ocessors)-250(in)-250(the)-250(CUDA)-250(device.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ ET q -1 0 0 1 171.339 163.508 cm +1 0 0 1 120.53 163.508 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 174.926 163.309 Td [(cuda)]TJ +/F75 11.9552 Tf 124.116 163.309 Td [(cuda)]TJ ET q -1 0 0 1 201.538 163.508 cm +1 0 0 1 150.729 163.508 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 205.125 163.309 Td [(MaxThreadsPerMP)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ +/F75 11.9552 Tf 154.315 163.309 Td [(MaxThreadsPerMP)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31906,35 +32134,35 @@ BT 0 g 0 G [-525(psb_cuda_MaxThreadsPerMP\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(thr)18(eads)-250(per)-250(multipr)18(ocessor)74(.)]TJ 0 g 0 G - 149.439 -29.888 Td [(178)]TJ + 149.44 -29.888 Td [(177)]TJ 0 g 0 G ET endstream endobj -2223 0 obj +2222 0 obj << -/Length 2725 +/Length 2730 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(psb)]TJ ET q -1 0 0 1 120.53 706.328 cm +1 0 0 1 171.339 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ ET q -1 0 0 1 150.729 706.328 cm +1 0 0 1 201.538 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 154.315 706.129 Td [(MaxRegistersPerBlock)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ +/F75 11.9552 Tf 205.125 706.129 Td [(MaxRegistersPerBlock)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31945,18 +32173,18 @@ BT [-525(psb_cuda_MaxRegistersPerBlock\050\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(r)18(egister)-250(per)-250(thr)18(ead)-250(block.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 120.53 636.313 cm +1 0 0 1 171.339 636.313 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 124.116 636.114 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 636.114 Td [(cuda)]TJ ET q -1 0 0 1 150.729 636.313 cm +1 0 0 1 201.538 636.313 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 154.315 636.114 Td [(MemoryClockRate)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ +/F75 11.9552 Tf 205.125 636.114 Td [(MemoryClockRate)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31967,18 +32195,18 @@ BT [-525(psb_cuda_MemoryClockRate\050\051)]TJ/F84 9.9626 Tf 14.944 -21.917 Td [(Returns)-250(the)-250(memory)-250(clock)-250(rate)-250(in)-250(KHz,)-250(as)-250(an)-250(integer)74(.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 120.53 566.299 cm +1 0 0 1 171.339 566.299 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 124.116 566.1 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 566.1 Td [(cuda)]TJ ET q -1 0 0 1 150.729 566.299 cm +1 0 0 1 201.538 566.299 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 154.315 566.1 Td [(MemoryBusW)37(idth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ +/F75 11.9552 Tf 205.125 566.1 Td [(MemoryBusW)37(idth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -31989,18 +32217,18 @@ BT [-525(psb_cuda_MemoryBusWidth\050\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(memory)-250(bus)-250(width)-250(in)-250(bits.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ ET q -1 0 0 1 120.53 496.284 cm +1 0 0 1 171.339 496.284 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 124.116 496.085 Td [(cuda)]TJ +/F75 11.9552 Tf 174.926 496.085 Td [(cuda)]TJ ET q -1 0 0 1 150.729 496.284 cm +1 0 0 1 201.538 496.284 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 154.315 496.085 Td [(MemoryPeakBandwidth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ +/F75 11.9552 Tf 205.125 496.085 Td [(MemoryPeakBandwidth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -32010,30 +32238,15 @@ BT 0 g 0 G [-525(psb_cuda_MemoryPeakBandwidth\050\051)]TJ/F84 9.9626 Tf 0 -21.918 Td [(Returns)-250(the)-250(peak)-250(memory)-250(bandwidth)-250(in)-250(MB/s)-250(\050r)18(eal)-250(double)-250(pr)18(ecision\051.)]TJ 0 g 0 G - 164.384 -364.765 Td [(179)]TJ -0 g 0 G -ET - -endstream -endobj -2227 0 obj -<< -/Length 81 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F84 9.9626 Tf 315.088 90.438 Td [(180)]TJ + 164.383 -364.765 Td [(178)]TJ 0 g 0 G ET endstream endobj -2231 0 obj +2226 0 obj << -/Length 7213 +/Length 7303 >> stream 0 g 0 G @@ -32041,63 +32254,63 @@ stream BT /F75 14.3462 Tf 99.895 705.784 Td [(References)]TJ 0 g 0 G -/F84 9.9626 Tf 4.982 -24.083 Td [([1])]TJ +/F84 9.9626 Tf 4.982 -23.579 Td [([1])]TJ 0 g 0 G - 1.02 0 0 1 121.474 681.701 Tm [(G.)-316(Bella,)-333(S.)-316(Filippone,)-334(A.)-315(De)-316(Maio)-316(and)-316(M.)-316(T)91(esta,)]TJ/F78 9.9626 Tf 1.02 0 0 1 343.652 681.701 Tm [(A)-316(Simulation)-315(Model)-316(for)]TJ 0.986 0 0 1 121.195 669.746 Tm [(For)18(est)-255(Fir)19(es)]TJ/F84 9.9626 Tf 0.986 0 0 1 167.553 669.746 Tm [(,)-255(in)-255(J.)-255(Dongarra,)-255(K.)-255(Madsen,)-255(J.)-255(W)94(asniewski,)-256(editors,)-255(Pr)19(oceedings)]TJ 0.98 0 0 1 121.474 657.79 Tm [(of)-252(P)94(ARA)-251(04)-252(W)94(orkshop)-251(on)-252(State)-251(of)-252(the)-251(Art)-252(in)-251(Scienti\002c)-251(Computing,)-253(pp.)-251(546\226)]TJ 1 0 0 1 121.474 645.835 Tm [(553,)-250(Lectur)18(e)-250(Notes)-250(in)-250(Computer)-250(Science,)-250(Springer)74(,)-250(2005.)]TJ + 1.02 0 0 1 121.474 682.205 Tm [(G.)-316(Bella,)-333(S.)-316(Filippone,)-334(A.)-315(De)-316(Maio)-316(and)-316(M.)-316(T)91(esta,)]TJ/F78 9.9626 Tf 1.02 0 0 1 343.652 682.205 Tm [(A)-316(Simulation)-315(Model)-316(for)]TJ 0.986 0 0 1 121.195 670.25 Tm [(For)18(est)-255(Fir)19(es)]TJ/F84 9.9626 Tf 0.986 0 0 1 167.553 670.25 Tm [(,)-255(in)-255(J.)-255(Dongarra,)-255(K.)-255(Madsen,)-255(J.)-255(W)94(asniewski,)-256(editors,)-255(Pr)19(oceedings)]TJ 0.98 0 0 1 121.474 658.295 Tm [(of)-252(P)94(ARA)-251(04)-252(W)94(orkshop)-251(on)-252(State)-251(of)-252(the)-251(Art)-252(in)-251(Scienti\002c)-251(Computing,)-253(pp.)-251(546\226)]TJ 1 0 0 1 121.474 646.34 Tm [(553,)-250(Lectur)18(e)-250(Notes)-250(in)-250(Computer)-250(Science,)-250(Springer)74(,)-250(2005.)]TJ 0 g 0 G - -16.597 -22.776 Td [([2])]TJ + -16.597 -21.736 Td [([2])]TJ 0 g 0 G - 0.989 0 0 1 121.474 623.059 Tm [(A.)-252(Buttari,)-252(D.)-252(di)-252(Sera\002no,)-252(P)130(.)-252(D'Ambra,)-252(S.)-252(Filippone,)-111(2LEV)75(-D2P4:)-313(a)-252(package)]TJ 1.003 0 0 1 121.474 611.104 Tm [(of)-251(high-performance)-251(pr)17(ec)1(onditioners,)-115(A)1(pplicable)-252(Algebra)-251(in)-251(Engineering,)]TJ 1.02 0 0 1 121.474 599.148 Tm [(Communications)-246(and)-246(Computing,)-247(V)109(olume)-246(18,)-247(Number)-246(3,)-247(May)109(,)-246(2007,)-247(pp.)]TJ 1 0 0 1 121.474 587.193 Tm [(223-239)]TJ + 1.02 0 0 1 121.474 624.604 Tm [(D.)-322(Bertaccini)-322(and)-322(S.)-322(Filippone,)]TJ/F78 9.9626 Tf 1.02 0 0 1 263.46 624.604 Tm [(Sparse)-322(appr)18(oximate)-322(inverse)-322(pr)17(econditioners)]TJ 1.006 0 0 1 121.474 612.649 Tm [(on)-249(high)-250(performance)-249(GPU)-249(platforms)]TJ/F84 9.9626 Tf 1.006 0 0 1 268.626 612.649 Tm [(,)-250(Comput.)-249(Math.)-249(Appl.,)-250(71,)-249(\0502016\051,)-250(no.)-249(3,)]TJ 1 0 0 1 121.474 600.694 Tm [(693\226711.)]TJ 0 g 0 G - -16.597 -22.776 Td [([3])]TJ + -16.597 -21.736 Td [([3])]TJ 0 g 0 G - 1.005 0 0 1 121.474 564.417 Tm [(P)128(.)-248(D'Ambra,)-248(S.)-249(Filippone,)-248(D.)-248(Di)-249(Sera\002)1(no)-109(On)-249(the)-248(Development)-248(of)-248(PSBLAS-)]TJ 1.02 0 0 1 121.474 552.462 Tm [(based)-465(Parallel)-464(T)88(wo-level)-464(Schwarz)-465(Pr)18(econditioners)-1055(Applied)-465(Numeri-)]TJ 1.02 0 0 1 121.474 540.507 Tm [(cal)-323(Mathematics,)-343(Elsevier)-323(Science,)-342(V)109(olume)-323(57,)-343(Issues)-323(11-12,)-343(November)18(-)]TJ 1 0 0 1 121.474 528.551 Tm [(December)-250(2007,)-250(Pages)-250(1181-1196.)]TJ + 0.989 0 0 1 121.474 578.958 Tm [(A.)-252(Buttari,)-252(D.)-252(di)-252(Sera\002no,)-252(P)130(.)-252(D'Ambra,)-252(S.)-252(Filippone,)-111(2LEV)75(-D2P4:)-313(a)-252(package)]TJ 1.003 0 0 1 121.474 567.003 Tm [(of)-251(high-performance)-251(pr)17(ec)1(onditioners,)-115(A)1(pplicable)-252(Algebra)-251(in)-251(Engineering,)]TJ 1.02 0 0 1 121.474 555.048 Tm [(Communications)-246(and)-246(Computing,)-247(V)109(olume)-246(18,)-247(Number)-246(3,)-247(May)109(,)-246(2007,)-247(pp.)]TJ 1 0 0 1 121.474 543.093 Tm [(223-239)]TJ 0 g 0 G - -16.597 -22.776 Td [([4])]TJ + -16.597 -21.736 Td [([4])]TJ 0 g 0 G - 1.006 0 0 1 121.474 505.775 Tm [(Dongarra,)-250(J.)-249(J.,)-250(DuCr)18(oz,)-250(J)1(.,)-250(Hammarling,)-250(S.)-249(and)-250(Hanson,)-249(R.,)-250(An)-249(Extended)]TJ 0.98 0 0 1 121.474 493.82 Tm [(Set)-234(of)-234(Fortran)-233(Basic)-234(Linear)-234(Algebra)-233(Subpr)18(ograms,)-238(ACM)-234(T)92(rans.)-234(Math.)-233(Softw)93(.)]TJ 1 0 0 1 121.195 481.865 Tm [(vol.)-250(14,)-250(1\22617,)-250(1988.)]TJ + 1.005 0 0 1 121.474 521.357 Tm [(P)128(.)-248(D'Ambra,)-248(S.)-249(Filippone,)-248(D.)-248(Di)-249(Sera\002)1(no)-109(On)-249(the)-248(Development)-248(of)-248(PSBLAS-)]TJ 1.02 0 0 1 121.474 509.402 Tm [(based)-465(Parallel)-464(T)88(wo-level)-464(Schwarz)-465(Pr)18(econditioners)-1055(Applied)-465(Numeri-)]TJ 1.02 0 0 1 121.474 497.447 Tm [(cal)-323(Mathematics,)-343(Elsevier)-323(Science,)-342(V)109(olume)-323(57,)-343(Issues)-323(11-12,)-343(November)18(-)]TJ 1 0 0 1 121.474 485.492 Tm [(December)-250(2007,)-250(Pages)-250(1181-1196.)]TJ 0 g 0 G - -16.318 -22.777 Td [([5])]TJ + -16.597 -21.736 Td [([5])]TJ 0 g 0 G - 0.983 0 0 1 121.474 459.088 Tm [(Dongarra,)-255(J.,)-254(D)-1(u)1(Cr)18(oz,)-255(J.,)-255(Hammarling,)-254(S.)-255(and)-255(Duf)19(f)-1(,)-254(I.,)-255(A)-255(Set)-254(of)-255(level)-255(3)-254(Basic)]TJ 0.985 0 0 1 121.474 447.133 Tm [(Linear)-254(Algebra)-254(Subpr)19(ograms,)-254(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)-253(vol.)-254(16,)-254(1\22617,)-254(1990.)]TJ + 1.006 0 0 1 121.474 463.756 Tm [(Dongarra,)-250(J.)-249(J.,)-250(DuCr)18(oz,)-250(J)1(.,)-250(Hammarling,)-250(S.)-249(and)-250(Hanson,)-249(R.,)-250(An)-249(Extended)]TJ 0.98 0 0 1 121.474 451.801 Tm [(Set)-234(of)-234(Fortran)-233(Basic)-234(Linear)-234(Algebra)-233(Subpr)18(ograms,)-238(ACM)-234(T)92(rans.)-234(Math.)-233(Softw)93(.)]TJ 1 0 0 1 121.195 439.846 Tm [(vol.)-250(14,)-250(1\22617,)-250(1988.)]TJ 0 g 0 G - 1 0 0 1 104.877 424.357 Tm [([6])]TJ + -16.318 -21.735 Td [([6])]TJ 0 g 0 G - 0.993 0 0 1 121.474 424.357 Tm [(J.)-252(J.)-252(Dongarra)-252(and)-252(R.)-253(C.)-252(Whaley)112(,)]TJ/F78 9.9626 Tf 0.993 0 0 1 262.893 424.357 Tm [(A)-252(User)-37(')55(s)-252(Guide)-252(to)-252(the)-252(BLACS)-252(v)55(.)-252(1.1)]TJ/F84 9.9626 Tf 0.993 0 0 1 407.142 424.357 Tm [(,)-252(Lapack)]TJ 0.98 0 0 1 120.976 412.401 Tm [(W)94(orking)-229(Note)-230(94,)-234(T)94(ech.)-230(Rep.)-229(UT)56(-CS-95-281,)-234(University)-230(of)-229(T)94(ennessee,)-234(Mar)18(ch)]TJ 1 0 0 1 120.976 400.446 Tm [(1995)-250(\050updated)-250(May)-250(1997\051.)]TJ + 0.983 0 0 1 121.474 418.111 Tm [(Dongarra,)-255(J.,)-254(D)-1(u)1(Cr)18(oz,)-255(J.,)-255(Hammarling,)-254(S.)-255(and)-255(Duf)19(f)-1(,)-254(I.,)-255(A)-255(Set)-254(of)-255(level)-255(3)-254(Basic)]TJ 0.985 0 0 1 121.474 406.156 Tm [(Linear)-254(Algebra)-254(Subpr)19(ograms,)-254(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)-253(vol.)-254(16,)-254(1\22617,)-254(1990.)]TJ 0 g 0 G - -16.099 -22.776 Td [([7])]TJ + 1 0 0 1 104.877 384.42 Tm [([7])]TJ 0 g 0 G - 1.004 0 0 1 121.474 377.67 Tm [(I.)-250(Duf)18(f,)-250(M.)-250(Marr)18(one,)-250(G.)-250(Radicati)-250(and)-250(C.)-250(V)55(ittoli,)]TJ/F78 9.9626 Tf 1.004 0 0 1 328.201 377.67 Tm [(Level)-250(3)-250(Basic)-250(Linear)-250(Algebra)]TJ 0.982 0 0 1 121.195 365.715 Tm [(Subpr)18(ograms)-253(for)-254(Sparse)-254(Matrices:)-315(a)-254(User)-254(Level)-254(Interface)]TJ/F84 9.9626 Tf 0.982 0 0 1 344.719 365.715 Tm [(,)-254(ACM)-254(T)92(ransactions)-254(on)]TJ 1 0 0 1 121.474 353.759 Tm [(Mathematical)-250(Softwar)18(e,)-250(23\0503\051,)-250(pp.)-250(379\226401,)-250(1997.)]TJ + 0.993 0 0 1 121.474 384.42 Tm [(J.)-252(J.)-252(Dongarra)-252(and)-252(R.)-253(C.)-252(Whaley)112(,)]TJ/F78 9.9626 Tf 0.993 0 0 1 262.893 384.42 Tm [(A)-252(User)-37(')55(s)-252(Guide)-252(to)-252(the)-252(BLACS)-252(v)55(.)-252(1.1)]TJ/F84 9.9626 Tf 0.993 0 0 1 407.142 384.42 Tm [(,)-252(Lapack)]TJ 0.98 0 0 1 120.976 372.465 Tm [(W)94(orking)-229(Note)-230(94,)-234(T)94(ech.)-230(Rep.)-229(UT)56(-CS-95-281,)-234(University)-230(of)-229(T)94(ennessee,)-234(Mar)18(ch)]TJ 1 0 0 1 120.976 360.51 Tm [(1995)-250(\050updated)-250(May)-250(1997\051.)]TJ 0 g 0 G - -16.597 -22.776 Td [([8])]TJ + -16.099 -21.736 Td [([8])]TJ 0 g 0 G - 1.02 0 0 1 121.474 330.983 Tm [(I.)-354(Duf)18(f,)-381(M.)-354(Her)17(oux)-354(and)-354(R.)-354(Pozo,)]TJ/F78 9.9626 Tf 1.02 0 0 1 273.913 330.983 Tm [(An)-354(Overview)-354(of)-354(the)-354(Sparse)-354(Basic)-354(Linear)]TJ 0.982 0 0 1 121.116 319.028 Tm [(Algebra)-254(Subpr)18(ograms:)-316(the)-254(New)-254(Standard)-255(fr)19(om)-255(the)-254(BLAS)-255(T)113(echnical)-254(Forum)]TJ/F84 9.9626 Tf 0.982 0 0 1 414.869 319.028 Tm [(,)-254(ACM)]TJ 1 0 0 1 121.166 307.073 Tm [(T)90(ransactions)-250(on)-250(Mathematical)-250(Softwar)18(e,)-250(28\0502\051,)-250(pp.)-250(239\226267,)-250(2002.)]TJ + 1.004 0 0 1 121.474 338.774 Tm [(I.)-250(Duf)18(f,)-250(M.)-250(Marr)18(one,)-250(G.)-250(Radicati)-250(and)-250(C.)-250(V)55(ittoli,)]TJ/F78 9.9626 Tf 1.004 0 0 1 328.201 338.774 Tm [(Level)-250(3)-250(Basic)-250(Linear)-250(Algebra)]TJ 0.982 0 0 1 121.195 326.819 Tm [(Subpr)18(ograms)-253(for)-254(Sparse)-254(Matrices:)-315(a)-254(User)-254(Level)-254(Interface)]TJ/F84 9.9626 Tf 0.982 0 0 1 344.719 326.819 Tm [(,)-254(ACM)-254(T)92(ransactions)-254(on)]TJ 1 0 0 1 121.474 314.864 Tm [(Mathematical)-250(Softwar)18(e,)-250(23\0503\051,)-250(pp.)-250(379\226401,)-250(1997.)]TJ 0 g 0 G - -16.289 -22.777 Td [([9])]TJ + -16.597 -21.736 Td [([9])]TJ 0 g 0 G - 1.02 0 0 1 121.474 284.296 Tm [(S.)-256(Filippone)-256(and)-256(M.)-255(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 260.376 284.296 Tm [(PSBLAS:)-256(A)-256(Library)-255(for)-256(Parallel)-256(Linear)-256(Alge-)]TJ 1.02 0 0 1 121.474 272.341 Tm [(bra)-278(Computation)-278(on)-278(Sparse)-278(Matrices)]TJ/F84 9.9626 Tf 1.02 0 0 1 273.712 272.341 Tm [(,)-467(ACM)-278(T)88(ransactions)-278(on)-278(Mathematical)]TJ 1 0 0 1 121.474 260.386 Tm [(Softwar)18(e,)-250(26\0504\051,)-250(pp.)-250(527\226550,)-250(2000.)]TJ + 1.02 0 0 1 121.474 293.128 Tm [(I.)-354(Duf)18(f,)-381(M.)-354(Her)17(oux)-354(and)-354(R.)-354(Pozo,)]TJ/F78 9.9626 Tf 1.02 0 0 1 273.913 293.128 Tm [(An)-354(Overview)-354(of)-354(the)-354(Sparse)-354(Basic)-354(Linear)]TJ 0.982 0 0 1 121.116 281.173 Tm [(Algebra)-254(Subpr)18(ograms:)-316(the)-254(New)-254(Standard)-255(fr)19(om)-255(the)-254(BLAS)-255(T)113(echnical)-254(Forum)]TJ/F84 9.9626 Tf 0.982 0 0 1 414.869 281.173 Tm [(,)-254(ACM)]TJ 1 0 0 1 121.166 269.218 Tm [(T)90(ransactions)-250(on)-250(Mathematical)-250(Softwar)18(e,)-250(28\0502\051,)-250(pp.)-250(239\226267,)-250(2002.)]TJ 0 g 0 G - -21.579 -22.776 Td [([10])]TJ + -21.271 -21.735 Td [([10])]TJ 0 g 0 G - 1.02 0 0 1 121.474 237.61 Tm [(S.)-328(Filippone)-329(and)-328(A.)-329(Bu)1(ttari,)]TJ/F78 9.9626 Tf 1.02 0 0 1 250.516 237.61 Tm [(Object-Oriented)-328(T)109(echniques)-329(for)-328(Sparse)-328(Matrix)]TJ 0.98 0 0 1 121.146 225.654 Tm [(Computations)-227(in)-228(Fortran)-227(2003)]TJ/F84 9.9626 Tf 0.98 0 0 1 241.714 225.654 Tm [(,)-313(ACM)-227(T)92(ransactions)-228(on)-227(Mathematical)-228(Softwar)19(e,)]TJ 1 0 0 1 121.474 213.699 Tm [(38\0504\051,)-250(2012.)]TJ + 1.02 0 0 1 121.474 247.483 Tm [(S.)-256(Filippone)-256(and)-256(M.)-255(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 260.376 247.483 Tm [(PSBLAS:)-256(A)-256(Library)-255(for)-256(Parallel)-256(Linear)-256(Alge-)]TJ 1.02 0 0 1 121.474 235.528 Tm [(bra)-278(Computation)-278(on)-278(Sparse)-278(Matrices)]TJ/F84 9.9626 Tf 1.02 0 0 1 273.712 235.528 Tm [(,)-467(ACM)-278(T)88(ransactions)-278(on)-278(Mathematical)]TJ 1 0 0 1 121.474 223.572 Tm [(Softwar)18(e,)-250(26\0504\051,)-250(pp.)-250(527\226550,)-250(2000.)]TJ 0 g 0 G - -21.579 -22.776 Td [([11])]TJ + -21.579 -21.735 Td [([11])]TJ 0 g 0 G - 1.02 0 0 1 121.474 190.923 Tm [(S.)-284(Filippone,)-294(P)127(.)-284(D'Ambra,)-294(M.)-284(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 302.518 190.923 Tm [(Using)-284(a)-284(Parallel)-284(Library)-284(of)-284(Sparse)]TJ 1.02 0 0 1 121.195 178.968 Tm [(Linear)-296(Algebra)-296(in)-295(a)-296(Fluid)-296(Dynamics)-296(Applications)-296(Code)-295(on)-296(Linux)-296(Clusters)]TJ/F84 9.9626 Tf 1.02 0 0 1 429.06 178.968 Tm [(,)-308(in)]TJ 0.99 0 0 1 121.474 167.012 Tm [(G.)-254(Joubert,)-254(A.)-254(Murli,)-254(F)93(.)-254(Peters,)-254(M.)-254(V)93(anneschi,)-255(editors,)-254(Parallel)-254(Computing)-253(-)]TJ 1 0 0 1 121.086 155.057 Tm [(Advances)-250(&)-250(Curr)18(ent)-250(Issues,)-250(pp.)-250(441\226448,)-250(Imperial)-250(College)-250(Pr)18(ess,)-250(2002.)]TJ + 1.02 0 0 1 121.474 201.837 Tm [(S.)-328(Filippone)-329(and)-328(A.)-329(Bu)1(ttari,)]TJ/F78 9.9626 Tf 1.02 0 0 1 250.516 201.837 Tm [(Object-Oriented)-328(T)109(echniques)-329(for)-328(Sparse)-328(Matrix)]TJ 0.98 0 0 1 121.146 189.882 Tm [(Computations)-227(in)-228(Fortran)-227(2003)]TJ/F84 9.9626 Tf 0.98 0 0 1 241.714 189.882 Tm [(,)-313(ACM)-227(T)92(ransactions)-228(on)-227(Mathematical)-228(Softwar)19(e,)]TJ 1 0 0 1 121.474 177.927 Tm [(38\0504\051,)-250(2012.)]TJ 0 g 0 G - -21.191 -22.776 Td [([12])]TJ + -21.579 -21.736 Td [([12])]TJ 0 g 0 G - 0.984 0 0 1 121.474 132.281 Tm [(Gamma,)-254(E.,)-509(Helm,)-254(R.,)-508(Johnson,)-255(R.,)-508(and)-508(Vlissides,)-255(J.)-254(1995.)]TJ/F78 9.9626 Tf 0.984 0 0 1 377.318 132.281 Tm [(Design)-254(Patterns:)]TJ 1 0 0 1 121.166 120.326 Tm [(Elements)-250(of)-250(Reusable)-250(Object-Oriented)-250(Softwar)18(e)]TJ/F84 9.9626 Tf 190.781 0 Td [(.)-250(Addison-W)92(esley)111(.)]TJ + 1.02 0 0 1 121.474 156.191 Tm [(S.)-284(Filippone,)-294(P)127(.)-284(D'Ambra,)-294(M.)-284(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 302.518 156.191 Tm [(Using)-284(a)-284(Parallel)-284(Library)-284(of)-284(Sparse)]TJ 1.02 0 0 1 121.195 144.236 Tm [(Linear)-296(Algebra)-296(in)-295(a)-296(Fluid)-296(Dynamics)-296(Applications)-296(Code)-295(on)-296(Linux)-296(Clusters)]TJ/F84 9.9626 Tf 1.02 0 0 1 429.06 144.236 Tm [(,)-308(in)]TJ 0.99 0 0 1 121.474 132.281 Tm [(G.)-254(Joubert,)-254(A.)-254(Murli,)-254(F)93(.)-254(Peters,)-254(M.)-254(V)93(anneschi,)-255(editors,)-254(Parallel)-254(Computing)-253(-)]TJ 1 0 0 1 121.086 120.326 Tm [(Advances)-250(&)-250(Curr)18(ent)-250(Issues,)-250(pp.)-250(441\226448,)-250(Imperial)-250(College)-250(Pr)18(ess,)-250(2002.)]TJ 0 g 0 G - -47.668 -29.888 Td [(181)]TJ + 143.193 -29.888 Td [(179)]TJ 0 g 0 G ET endstream endobj -2240 0 obj +2234 0 obj << -/Length 5191 +/Length 6153 >> stream 0 g 0 G @@ -32106,122 +32319,126 @@ stream BT /F84 9.9626 Tf 150.705 706.129 Td [([13])]TJ 0 g 0 G - 1.02 0 0 1 172.284 706.129 Tm [(Karypis,)-341(G.)-322(and)-322(Kumar)73(,)-341(V)126(.,)]TJ/F78 9.9626 Tf 1.02 0 0 1 299.262 706.129 Tm [(METIS:)-322(Unstructur)18(ed)-322(Graph)-322(Partitioning)-322(and)]TJ 1.02 0 0 1 172.005 694.174 Tm [(Sparse)-386(Matrix)-386(Ordering)-386(System)]TJ/F84 9.9626 Tf 1.02 0 0 1 308.549 694.174 Tm [(.)-386(Minneapolis,)-421(MN)-386(55455:)-586(University)-386(of)]TJ 1.02 0 0 1 172.284 682.219 Tm [(Minnesota,)-447(Department)-406(of)-407(Computer)-406(Science,)-447(1995.)-407(Internet)-406(Addr)17(ess:)]TJ/F131 9.9626 Tf 1 0 0 1 172.284 670.263 Tm [(http://www.cs.umn.edu/~karypis)]TJ/F84 9.9626 Tf 156.91 0 Td [(.)]TJ + 0.984 0 0 1 172.284 706.129 Tm [(Gamma,)-254(E.,)-509(Helm,)-254(R.,)-508(Johnson,)-255(R.,)-508(and)-508(Vlissides,)-255(J.)-254(1995.)]TJ/F78 9.9626 Tf 0.984 0 0 1 428.128 706.129 Tm [(Design)-254(Patterns:)]TJ 1 0 0 1 171.975 694.174 Tm [(Elements)-250(of)-250(Reusable)-250(Object-Oriented)-250(Softwar)18(e)]TJ/F84 9.9626 Tf 190.781 0 Td [(.)-250(Addison-W)92(esley)111(.)]TJ 0 g 0 G - -178.489 -19.925 Td [([14])]TJ + -212.051 -19.926 Td [([14])]TJ 0 g 0 G - 1.02 0 0 1 172.284 650.338 Tm [(Lawson,)-252(C.,)-252(Hanson,)-252(R.,)-251(Kincaid,)-252(D.)-251(and)-250(Kr)17(ogh,)-251(F)90(.,)-252(Basic)-251(Linear)-250(Algebra)]TJ 1.018 0 0 1 172.284 638.383 Tm [(Subpr)18(ograms)-245(for)-245(Fortran)-244(usage,)-245(ACM)-245(T)88(rans.)-244(Math.)-245(Softw)90(.)-245(vo)1(l.)-245(5,)-245(38\226329,)]TJ 1 0 0 1 171.786 626.428 Tm [(1979.)]TJ + 1.02 0 0 1 172.284 674.248 Tm [(Karypis,)-341(G.)-322(and)-322(Kumar)73(,)-341(V)126(.,)]TJ/F78 9.9626 Tf 1.02 0 0 1 299.262 674.248 Tm [(METIS:)-322(Unstructur)18(ed)-322(Graph)-322(Partitioning)-322(and)]TJ 1.02 0 0 1 172.005 662.293 Tm [(Sparse)-386(Matrix)-386(Ordering)-386(System)]TJ/F84 9.9626 Tf 1.02 0 0 1 308.549 662.293 Tm [(.)-386(Minneapolis,)-421(MN)-386(55455:)-586(University)-386(of)]TJ 1.02 0 0 1 172.284 650.338 Tm [(Minnesota,)-447(Department)-406(of)-407(Computer)-406(Science,)-447(1995.)-407(Internet)-406(Addr)17(ess:)]TJ/F131 9.9626 Tf 1 0 0 1 172.284 638.383 Tm [(http://www.cs.umn.edu/~karypis)]TJ/F84 9.9626 Tf 156.91 0 Td [(.)]TJ 0 g 0 G - -21.081 -19.926 Td [([15])]TJ + -178.489 -19.925 Td [([15])]TJ 0 g 0 G - 1.002 0 0 1 172.284 606.502 Tm [(Machiels,)-248(L.)-249(and)-248(Deville,)-248(M.)]TJ/F78 9.9626 Tf 1.002 0 0 1 298.249 606.502 Tm [(Fortran)-248(90:)-309(An)-248(entry)-248(to)-249(object-or)1(iented)-249(pr)18(ogram-)]TJ 0.991 0 0 1 172.284 594.547 Tm [(ming)-253(for)-254(the)-253(solution)-254(of)-253(partial)-254(differ)18(ential)-253(equations.)]TJ/F84 9.9626 Tf 0.991 0 0 1 385.663 594.547 Tm [(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)]TJ 1 0 0 1 172.005 582.592 Tm [(vol.)-250(23,)-250(32\22649.)]TJ + 1.02 0 0 1 172.284 618.458 Tm [(Lawson,)-252(C.,)-252(Hanson,)-252(R.,)-251(Kincaid,)-252(D.)-251(and)-250(Kr)17(ogh,)-251(F)90(.,)-252(Basic)-251(Linear)-250(Algebra)]TJ 1.018 0 0 1 172.284 606.502 Tm [(Subpr)18(ograms)-245(for)-245(Fortran)-244(usage,)-245(ACM)-245(T)88(rans.)-244(Math.)-245(Softw)90(.)-245(vo)1(l.)-245(5,)-245(38\226329,)]TJ 1 0 0 1 171.786 594.547 Tm [(1979.)]TJ 0 g 0 G - -21.3 -19.925 Td [([16])]TJ + -21.081 -19.925 Td [([16])]TJ 0 g 0 G - 1.006 0 0 1 172.284 562.667 Tm [(Metcalf,)-248(M.,)-248(Reid,)-248(J.)-248(and)-248(Cohen,)-248(M.)]TJ/F78 9.9626 Tf 1.006 0 0 1 329.338 562.667 Tm [(Fortran)-248(95/2003)-248(explained.)]TJ/F84 9.9626 Tf 1.006 0 0 1 441.938 562.667 Tm [(Oxfor)18(d)-248(Uni-)]TJ 1 0 0 1 172.005 550.712 Tm [(versity)-250(Pr)18(ess,)-250(2004.)]TJ + 1.002 0 0 1 172.284 574.622 Tm [(Machiels,)-248(L.)-249(and)-248(Deville,)-248(M.)]TJ/F78 9.9626 Tf 1.002 0 0 1 298.249 574.622 Tm [(Fortran)-248(90:)-309(An)-248(entry)-248(to)-249(object-or)1(iented)-249(pr)18(ogram-)]TJ 0.991 0 0 1 172.284 562.667 Tm [(ming)-253(for)-254(the)-253(solution)-254(of)-253(partial)-254(differ)18(ential)-253(equations.)]TJ/F84 9.9626 Tf 0.991 0 0 1 385.663 562.667 Tm [(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)]TJ 1 0 0 1 172.005 550.712 Tm [(vol.)-250(23,)-250(32\22649.)]TJ 0 g 0 G -21.3 -19.926 Td [([17])]TJ 0 g 0 G - 1.008 0 0 1 172.284 530.786 Tm [(Metcalf,)-249(M.,)-249(Reid,)-249(J.)-249(and)-249(Cohen,)-249(M.)]TJ/F78 9.9626 Tf 1.008 0 0 1 329.715 530.786 Tm [(Modern)-249(Fortran)-249(explained.)]TJ/F84 9.9626 Tf 1.008 0 0 1 441.822 530.786 Tm [(Oxfor)18(d)-249(Uni-)]TJ 1 0 0 1 172.005 518.831 Tm [(versity)-250(Pr)18(ess,)-250(2011.)]TJ + 1.006 0 0 1 172.284 530.786 Tm [(Metcalf,)-248(M.,)-248(Reid,)-248(J.)-248(and)-248(Cohen,)-248(M.)]TJ/F78 9.9626 Tf 1.006 0 0 1 329.338 530.786 Tm [(Fortran)-248(95/2003)-248(explained.)]TJ/F84 9.9626 Tf 1.006 0 0 1 441.938 530.786 Tm [(Oxfor)18(d)-248(Uni-)]TJ 1 0 0 1 172.005 518.831 Tm [(versity)-250(Pr)18(ess,)-250(2004.)]TJ 0 g 0 G -21.3 -19.925 Td [([18])]TJ 0 g 0 G - 1.02 0 0 1 172.284 498.906 Tm [(Rouson,)-371(D.W)90(.I.,)-371(Xia,)-371(J.,)-371(Xu,)-371(X.:)-505(Scienti\002c)-346(Softwar)18(e)-346(Design:)-505(The)-346(Object-)]TJ 1 0 0 1 172.284 486.951 Tm [(Oriented)-250(W)92(ay.)-250(Cambridge)-250(University)-250(Pr)18(ess)-250(\0502011\051)]TJ + 1.008 0 0 1 172.284 498.906 Tm [(Metcalf,)-249(M.,)-249(Reid,)-249(J.)-249(and)-249(Cohen,)-249(M.)]TJ/F78 9.9626 Tf 1.008 0 0 1 329.715 498.906 Tm [(Modern)-249(Fortran)-249(explained.)]TJ/F84 9.9626 Tf 1.008 0 0 1 441.822 498.906 Tm [(Oxfor)18(d)-249(Uni-)]TJ 1 0 0 1 172.005 486.951 Tm [(versity)-250(Pr)18(ess,)-250(2011.)]TJ 0 g 0 G - -21.579 -19.925 Td [([19])]TJ + -21.3 -19.925 Td [([19])]TJ 0 g 0 G - 1.014 0 0 1 172.284 467.026 Tm [(M.)-247(Snir)73(,)-247(S.)-247(Otto,)-248(S.)-247(Huss-Lederman,)-247(D.)-247(W)91(alker)-247(and)-247(J.)-247(Dongarra,)]TJ/F78 9.9626 Tf 1.014 0 0 1 455.169 467.026 Tm [(MPI:)-247(The)]TJ 1.02 0 0 1 171.955 455.07 Tm [(Complete)-327(Refer)18(ence.)-327(V)72(olume)-327(1)-327(-)-327(The)-327(MPI)-327(Cor)18(e)]TJ/F84 9.9626 Tf 1.02 0 0 1 368.48 455.07 Tm [(,)-348(second)-327(edition,)-347(MIT)-327(Pr)17(ess,)]TJ 1 0 0 1 171.786 443.115 Tm [(1998.)]TJ + 1.02 0 0 1 172.284 467.026 Tm [(Rouson,)-371(D.W)90(.I.,)-371(Xia,)-371(J.,)-371(Xu,)-371(X.:)-505(Scienti\002c)-346(Softwar)18(e)-346(Design:)-505(The)-346(Object-)]TJ 1 0 0 1 172.284 455.07 Tm [(Oriented)-250(W)92(ay.)-250(Cambridge)-250(University)-250(Pr)18(ess)-250(\0502011\051)]TJ 0 g 0 G - -21.081 -19.925 Td [([20])]TJ + -21.579 -19.925 Td [([20])]TJ 0 g 0 G - 1.02 0 0 1 172.284 423.19 Tm [(D.)-389(Barbieri,)-425(V)127(.)-389(Car)18(dellini,)-425(S.)-389(Filippone)-389(and)-389(D.)-388(Rouson)]TJ/F78 9.9626 Tf 1.02 0 0 1 426.1 423.19 Tm [(Design)-389(Patterns)]TJ 1.018 0 0 1 172.284 411.235 Tm [(for)-245(Scienti\002c)-245(Computations)-245(on)-246(S)1(p)-1(a)1(rse)-246(Matrices)]TJ/F84 9.9626 Tf 1.018 0 0 1 365.291 411.235 Tm [(,)-245(HPSS)-245(2011,)-246(Algorithms)-245(and)]TJ 0.985 0 0 1 172.284 399.28 Tm [(Pr)18(ogramming)-251(T)93(ools)-252(for)-251(Next-Generation)-252(High-Performance)-251(Scienti\002c)-252(Soft-)]TJ 1 0 0 1 171.865 387.324 Tm [(war)18(e,)-250(Bor)18(deaux,)-250(Sep.)-250(2011)]TJ + 1.014 0 0 1 172.284 435.145 Tm [(M.)-247(Snir)73(,)-247(S.)-247(Otto,)-248(S.)-247(Huss-Lederman,)-247(D.)-247(W)91(alker)-247(and)-247(J.)-247(Dongarra,)]TJ/F78 9.9626 Tf 1.014 0 0 1 455.169 435.145 Tm [(MPI:)-247(The)]TJ 1.02 0 0 1 171.955 423.19 Tm [(Complete)-327(Refer)18(ence.)-327(V)72(olume)-327(1)-327(-)-327(The)-327(MPI)-327(Cor)18(e)]TJ/F84 9.9626 Tf 1.02 0 0 1 368.48 423.19 Tm [(,)-348(second)-327(edition,)-347(MIT)-327(Pr)17(ess,)]TJ 1 0 0 1 171.786 411.235 Tm [(1998.)]TJ 0 g 0 G - -21.16 -19.925 Td [([21])]TJ + -21.081 -19.926 Td [([21])]TJ 0 g 0 G - 1.02 0 0 1 172.284 367.399 Tm [(Car)18(dellini,)-300(V)127(.,)-600(Filippone,)-299(S.,)-599(and)-578(Rouson,)-299(D.)-289(2014,)-299(Design)-289(patterns)-289(for)]TJ 1.02 0 0 1 172.284 355.444 Tm [(sparse-matrix)-381(computations)-382(on)-381(hybrid)-381(CPU/GPU)-382(platforms,)]TJ/F78 9.9626 Tf 1.02 0 0 1 456.492 355.444 Tm [(Scienti\002c)]TJ 1 0 0 1 171.975 343.489 Tm [(Pr)18(ogramming)-250(22,)]TJ/F84 9.9626 Tf 73.713 0 Td [(1,)-250(1\22619.)]TJ + 1.02 0 0 1 172.284 391.309 Tm [(D.)-389(Barbieri,)-425(V)127(.)-389(Car)18(dellini,)-425(S.)-389(Filippone)-389(and)-389(D.)-388(Rouson)]TJ/F78 9.9626 Tf 1.02 0 0 1 426.1 391.309 Tm [(Design)-389(Patterns)]TJ 1.018 0 0 1 172.284 379.354 Tm [(for)-245(Scienti\002c)-245(Computations)-245(on)-246(S)1(p)-1(a)1(rse)-246(Matrices)]TJ/F84 9.9626 Tf 1.018 0 0 1 365.291 379.354 Tm [(,)-245(HPSS)-245(2011,)-246(Algorithms)-245(and)]TJ 0.985 0 0 1 172.284 367.399 Tm [(Pr)18(ogramming)-251(T)93(ools)-252(for)-251(Next-Generation)-252(High-Performance)-251(Scienti\002c)-252(Soft-)]TJ 1 0 0 1 171.865 355.444 Tm [(war)18(e,)-250(Bor)18(deaux,)-250(Sep.)-250(2011)]TJ 0 g 0 G - -94.983 -19.925 Td [([22])]TJ + -21.16 -19.925 Td [([22])]TJ 0 g 0 G - 0.985 0 0 1 172.284 323.563 Tm [(D.)-254(Barbieri,)-253(V)131(.)-254(Car)18(dellini,)-253(A.)-254(Fanfarillo,)-253(S.)-254(Filippone,)-254(Thr)19(ee)-254(storage)-254(formats)]TJ 1.02 0 0 1 172.284 311.608 Tm [(for)-257(sparse)-257(matrices)-257(on)-257(GPGPUs,)-260(T)91(ech.)-257(Rep.)-257(DICII)-257(RR-15.6,)-260(Universit)]TJ 1 0 0 1 478.39 311.633 Tm [(\036)]TJ 1.02 0 0 1 477.558 311.608 Tm [(a)-257(di)]TJ 1 0 0 1 172.284 299.653 Tm [(Roma)-250(T)92(or)-250(V)111(er)18(gata)-250(\050Febr)8(uary)-250(2015\051.)]TJ + 1.02 0 0 1 172.284 335.519 Tm [(Car)18(dellini,)-300(V)127(.,)-600(Filippone,)-299(S.,)-599(and)-578(Rouson,)-299(D.)-289(2014,)-299(Design)-289(patterns)-289(for)]TJ 1.02 0 0 1 172.284 323.563 Tm [(sparse-matrix)-381(computations)-382(on)-381(hybrid)-381(CPU/GPU)-382(platforms,)]TJ/F78 9.9626 Tf 1.02 0 0 1 456.492 323.563 Tm [(Scienti\002c)]TJ 1 0 0 1 171.975 311.608 Tm [(Pr)18(ogramming)-250(22,)]TJ/F84 9.9626 Tf 73.713 0 Td [(1,)-250(1\22619.)]TJ 0 g 0 G - 142.804 -209.215 Td [(182)]TJ + -94.983 -19.925 Td [([23])]TJ +0 g 0 G + 0.985 0 0 1 172.284 291.683 Tm [(D.)-254(Barbieri,)-253(V)131(.)-254(Car)18(dellini,)-253(A.)-254(Fanfarillo,)-253(S.)-254(Filippone,)-254(Thr)19(ee)-254(storage)-254(formats)]TJ 1.02 0 0 1 172.284 279.728 Tm [(for)-257(sparse)-257(matrices)-257(on)-257(GPGPUs,)-260(T)91(ech.)-257(Rep.)-257(DICII)-257(RR-15.6,)-260(Universit)]TJ 1 0 0 1 478.39 279.753 Tm [(\036)]TJ 1.02 0 0 1 477.558 279.728 Tm [(a)-257(di)]TJ 1 0 0 1 172.284 267.773 Tm [(Roma)-250(T)92(or)-250(V)111(er)18(gata)-250(\050Febr)8(uary)-250(2015\051.)]TJ +0 g 0 G + -21.579 -19.926 Td [([24])]TJ +0 g 0 G + 1.02 0 0 1 172.284 247.847 Tm [(S.)-284(Filippone,)-294(V)127(.)-284(Car)17(dellini,)-293(D.)-284(Barbieri,)-294(and)-284(A.)-284(Fanfarillo.)-284(Sparse)-284(matrix-)]TJ 1.02 0 0 1 172.005 235.892 Tm [(vector)-342(multiplication)-342(on)-342(GPGPUs.)]TJ/F78 9.9626 Tf 1.02 0 0 1 331.577 235.892 Tm [(ACM)-342(T)109(rans.)-342(Math.)-342(Softw)54(.)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.232 235.892 Tm [(,)-366(43\0504\051:30:1\226)]TJ 1 0 0 1 172.284 223.937 Tm [(30:49,)-250(2017.)]TJ +0 g 0 G + 142.804 -133.499 Td [(180)]TJ 0 g 0 G ET endstream endobj -2166 0 obj +2165 0 obj << /Type /ObjStm /N 100 -/First 960 -/Length 11534 ->> -stream -2153 0 2148 59 2170 269 2175 408 2176 588 2177 631 2178 832 2179 1127 2181 1348 2168 1561 -2172 1707 2164 1765 2173 1824 2165 1882 2174 1941 2169 1999 2188 2153 2192 2292 2193 2472 2195 2515 -2196 2722 2197 3023 2199 3244 2186 3457 2190 3604 2191 3663 2187 3722 2204 3904 2206 4022 2203 4080 -2209 4163 2211 4281 601 4340 2208 4398 2213 4521 2215 4639 606 4697 610 4753 2216 4810 614 4868 -2212 4925 2218 5020 2220 5138 618 5197 622 5255 626 5313 630 5371 634 5429 638 5487 642 5545 -646 5603 2217 5661 2222 5756 2224 5874 650 5932 654 5989 658 6046 662 6103 2221 6160 2226 6255 -2228 6373 2225 6432 2230 6500 2232 6618 2233 6676 2234 6734 939 6792 938 6849 898 6906 899 6963 -914 7019 895 7076 896 7133 2235 7190 891 7248 2236 7305 1055 7363 2229 7421 2239 7515 2241 7633 -926 7692 897 7750 894 7808 890 7866 2106 7924 893 7983 2242 8041 892 8100 2090 8158 2091 8216 -2238 8275 2243 8370 2245 8390 2246 8761 2247 8864 2248 9023 2250 9046 2251 9501 2253 9630 2254 9928 -% 2153 0 obj -<< -/D [2149 0 R /XYZ 150.705 211.214 null] ->> -% 2148 0 obj +/First 964 +/Length 12455 +>> +stream +2147 0 2169 210 2174 349 2175 529 2176 572 2177 773 2178 1068 2180 1289 2167 1502 2171 1648 +2163 1707 2172 1766 2164 1825 2173 1884 2168 1943 2187 2097 2191 2236 2192 2416 2194 2459 2195 2666 +2196 2967 2198 3188 2185 3401 2189 3548 2190 3606 2186 3665 2203 3847 2205 3965 2202 4024 2207 4107 +2209 4225 601 4283 2206 4340 2212 4463 2214 4581 606 4640 610 4697 2215 4755 614 4814 2211 4872 +2217 4967 2219 5085 618 5143 622 5200 626 5257 630 5314 634 5371 638 5428 642 5485 646 5542 +2216 5599 2221 5694 2223 5812 650 5871 654 5929 658 5987 662 6045 2220 6103 2225 6198 2227 6316 +2228 6374 2229 6432 1991 6490 939 6547 938 6604 898 6661 899 6718 914 6775 895 6832 896 6888 +2230 6945 891 7003 2231 7060 2224 7118 2233 7212 2235 7330 1055 7389 926 7448 897 7506 894 7564 +890 7622 2104 7680 893 7739 2236 7797 892 7856 2089 7913 2090 7972 2237 8031 2232 8090 2238 8185 +2240 8205 2241 8576 2242 8679 2243 8838 2245 8861 2246 9316 2248 9445 2249 9743 2250 10389 2252 10860 +% 2147 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R /F231 1025 0 R /F279 1791 0 R /F134 1469 0 R /F179 922 0 R /F75 673 0 R >> -/XObject << /Im8 2144 0 R >> +/XObject << /Im8 2143 0 R >> /ProcSet [ /PDF /Text ] >> -% 2170 0 obj +% 2169 0 obj << /Type /Page -/Contents 2171 0 R -/Resources 2169 0 R +/Contents 2170 0 R +/Resources 2168 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2105 0 R -/Annots [ 2168 0 R ] +/Parent 2114 0 R +/Annots [ 2167 0 R ] >> -% 2175 0 obj +% 2174 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133927+01'00') /ModDate (D:20140329133927+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2176 0 obj +% 2175 0 obj << /Type /ExtGState /OPM 1 >> -% 2177 0 obj +% 2176 0 obj << /BaseFont /BNRUAU+TimesNewRomanPSMT -/FontDescriptor 2179 0 R -/ToUnicode 2180 0 R +/FontDescriptor 2178 0 R +/ToUnicode 2179 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 500 0 0 0 0 500] /Subtype /TrueType >> -% 2178 0 obj +% 2177 0 obj << /BaseFont /ICFUKB+FreeSerif -/FontDescriptor 2181 0 R -/ToUnicode 2182 0 R +/FontDescriptor 2180 0 R +/ToUnicode 2181 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2179 0 obj +% 2178 0 obj << /Type /FontDescriptor /FontName /BNRUAU+TimesNewRomanPSMT @@ -32233,9 +32450,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2183 0 R +/FontFile2 2182 0 R >> -% 2181 0 obj +% 2180 0 obj << /Type /FontDescriptor /FontName /ICFUKB+FreeSerif @@ -32247,86 +32464,86 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2184 0 R +/FontFile2 2183 0 R >> -% 2168 0 obj +% 2167 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.292 537.01 378.265 549.069] +/Rect [422.101 537.01 429.075 549.069] /A << /S /GoTo /D (figure.5) >> >> -% 2172 0 obj +% 2171 0 obj << -/D [2170 0 R /XYZ 98.895 753.953 null] +/D [2169 0 R /XYZ 149.705 753.953 null] >> -% 2164 0 obj +% 2163 0 obj << -/D [2170 0 R /XYZ 396.732 574.688 null] +/D [2169 0 R /XYZ 447.542 574.688 null] >> -% 2173 0 obj +% 2172 0 obj << -/D [2170 0 R /XYZ 99.895 526.012 null] +/D [2169 0 R /XYZ 150.705 526.012 null] >> -% 2165 0 obj +% 2164 0 obj << -/D [2170 0 R /XYZ 114.839 383.469 null] +/D [2169 0 R /XYZ 165.649 383.469 null] >> -% 2174 0 obj +% 2173 0 obj << -/D [2170 0 R /XYZ 99.895 187.185 null] +/D [2169 0 R /XYZ 150.705 187.185 null] >> -% 2169 0 obj +% 2168 0 obj << /Font << /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F75 673 0 R /F279 1791 0 R >> -/XObject << /Im9 2167 0 R >> +/XObject << /Im9 2166 0 R >> /ProcSet [ /PDF /Text ] >> -% 2188 0 obj +% 2187 0 obj << /Type /Page -/Contents 2189 0 R -/Resources 2187 0 R +/Contents 2188 0 R +/Resources 2186 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2105 0 R -/Annots [ 2186 0 R ] +/Parent 2114 0 R +/Annots [ 2185 0 R ] >> -% 2192 0 obj +% 2191 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2193 0 obj +% 2192 0 obj << /Type /ExtGState /OPM 1 >> -% 2195 0 obj +% 2194 0 obj << /BaseFont /PBIKKX+TimesNewRomanPSMT -/FontDescriptor 2197 0 R -/ToUnicode 2198 0 R +/FontDescriptor 2196 0 R +/ToUnicode 2197 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 0 500 500 500 500 500] /Subtype /TrueType >> -% 2196 0 obj +% 2195 0 obj << /BaseFont /ZBHFTP+FreeSerif -/FontDescriptor 2199 0 R -/ToUnicode 2200 0 R +/FontDescriptor 2198 0 R +/ToUnicode 2199 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2197 0 obj +% 2196 0 obj << /Type /FontDescriptor /FontName /PBIKKX+TimesNewRomanPSMT @@ -32338,9 +32555,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2201 0 R +/FontFile2 2200 0 R >> -% 2199 0 obj +% 2198 0 obj << /Type /FontDescriptor /FontName /ZBHFTP+FreeSerif @@ -32352,348 +32569,343 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2202 0 R +/FontFile2 2201 0 R >> -% 2186 0 obj +% 2185 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [440.392 344.666 447.366 356.726] +/Rect [389.583 344.666 396.557 356.726] /A << /S /GoTo /D (figure.5) >> >> -% 2190 0 obj +% 2189 0 obj << -/D [2188 0 R /XYZ 149.705 753.953 null] +/D [2187 0 R /XYZ 98.895 753.953 null] >> -% 2191 0 obj +% 2190 0 obj << -/D [2188 0 R /XYZ 447.542 382.345 null] +/D [2187 0 R /XYZ 396.732 382.345 null] >> -% 2187 0 obj +% 2186 0 obj << /Font << /F84 675 0 R /F131 921 0 R /F78 674 0 R /F75 673 0 R /F181 923 0 R /F231 1025 0 R /F279 1791 0 R >> -/XObject << /Im10 2185 0 R >> +/XObject << /Im10 2184 0 R >> /ProcSet [ /PDF /Text ] >> -% 2204 0 obj +% 2203 0 obj << /Type /Page -/Contents 2205 0 R -/Resources 2203 0 R +/Contents 2204 0 R +/Resources 2202 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2207 0 R +/Parent 2114 0 R >> -% 2206 0 obj +% 2205 0 obj << -/D [2204 0 R /XYZ 98.895 753.953 null] +/D [2203 0 R /XYZ 149.705 753.953 null] >> -% 2203 0 obj +% 2202 0 obj << /Font << /F231 1025 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2209 0 obj +% 2207 0 obj << /Type /Page -/Contents 2210 0 R -/Resources 2208 0 R +/Contents 2208 0 R +/Resources 2206 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2207 0 R +/Parent 2210 0 R >> -% 2211 0 obj +% 2209 0 obj << -/D [2209 0 R /XYZ 149.705 753.953 null] +/D [2207 0 R /XYZ 98.895 753.953 null] >> % 601 0 obj << -/D [2209 0 R /XYZ 150.705 716.092 null] +/D [2207 0 R /XYZ 99.895 716.092 null] >> -% 2208 0 obj +% 2206 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F231 1025 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2213 0 obj +% 2212 0 obj << /Type /Page -/Contents 2214 0 R -/Resources 2212 0 R +/Contents 2213 0 R +/Resources 2211 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2207 0 R +/Parent 2210 0 R >> -% 2215 0 obj +% 2214 0 obj << -/D [2213 0 R /XYZ 98.895 753.953 null] +/D [2212 0 R /XYZ 149.705 753.953 null] >> % 606 0 obj << -/D [2213 0 R /XYZ 99.895 554.06 null] +/D [2212 0 R /XYZ 150.705 554.06 null] >> % 610 0 obj << -/D [2213 0 R /XYZ 99.895 527.944 null] +/D [2212 0 R /XYZ 150.705 527.944 null] >> -% 2216 0 obj +% 2215 0 obj << -/D [2213 0 R /XYZ 99.895 315.727 null] +/D [2212 0 R /XYZ 150.705 315.727 null] >> % 614 0 obj << -/D [2213 0 R /XYZ 99.895 284.171 null] +/D [2212 0 R /XYZ 150.705 284.171 null] >> -% 2212 0 obj +% 2211 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2218 0 obj +% 2217 0 obj << /Type /Page -/Contents 2219 0 R -/Resources 2217 0 R +/Contents 2218 0 R +/Resources 2216 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2207 0 R +/Parent 2210 0 R >> -% 2220 0 obj +% 2219 0 obj << -/D [2218 0 R /XYZ 149.705 753.953 null] +/D [2217 0 R /XYZ 98.895 753.953 null] >> % 618 0 obj << -/D [2218 0 R /XYZ 150.705 720.077 null] +/D [2217 0 R /XYZ 99.895 720.077 null] >> % 622 0 obj << -/D [2218 0 R /XYZ 150.705 633.991 null] +/D [2217 0 R /XYZ 99.895 633.991 null] >> % 626 0 obj << -/D [2218 0 R /XYZ 150.705 559.861 null] +/D [2217 0 R /XYZ 99.895 559.861 null] >> % 630 0 obj << -/D [2218 0 R /XYZ 150.705 485.732 null] +/D [2217 0 R /XYZ 99.895 485.732 null] >> % 634 0 obj << -/D [2218 0 R /XYZ 150.705 411.602 null] +/D [2217 0 R /XYZ 99.895 411.602 null] >> % 638 0 obj << -/D [2218 0 R /XYZ 150.705 325.516 null] +/D [2217 0 R /XYZ 99.895 325.516 null] >> % 642 0 obj << -/D [2218 0 R /XYZ 150.705 251.386 null] +/D [2217 0 R /XYZ 99.895 251.386 null] >> % 646 0 obj << -/D [2218 0 R /XYZ 150.705 177.256 null] +/D [2217 0 R /XYZ 99.895 177.256 null] >> -% 2217 0 obj +% 2216 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2222 0 obj +% 2221 0 obj << /Type /Page -/Contents 2223 0 R -/Resources 2221 0 R +/Contents 2222 0 R +/Resources 2220 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2207 0 R +/Parent 2210 0 R >> -% 2224 0 obj +% 2223 0 obj << -/D [2222 0 R /XYZ 98.895 753.953 null] +/D [2221 0 R /XYZ 149.705 753.953 null] >> % 650 0 obj << -/D [2222 0 R /XYZ 99.895 720.077 null] +/D [2221 0 R /XYZ 150.705 720.077 null] >> % 654 0 obj << -/D [2222 0 R /XYZ 99.895 650.062 null] +/D [2221 0 R /XYZ 150.705 650.062 null] >> % 658 0 obj << -/D [2222 0 R /XYZ 99.895 580.047 null] +/D [2221 0 R /XYZ 150.705 580.047 null] >> % 662 0 obj << -/D [2222 0 R /XYZ 99.895 510.033 null] +/D [2221 0 R /XYZ 150.705 510.033 null] >> -% 2221 0 obj +% 2220 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2226 0 obj +% 2225 0 obj << /Type /Page -/Contents 2227 0 R -/Resources 2225 0 R +/Contents 2226 0 R +/Resources 2224 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2207 0 R +/Parent 2210 0 R >> -% 2228 0 obj +% 2227 0 obj << -/D [2226 0 R /XYZ 149.705 753.953 null] +/D [2225 0 R /XYZ 98.895 753.953 null] >> -% 2225 0 obj -<< -/Font << /F84 675 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2230 0 obj -<< -/Type /Page -/Contents 2231 0 R -/Resources 2229 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2237 0 R ->> -% 2232 0 obj +% 2228 0 obj << -/D [2230 0 R /XYZ 98.895 753.953 null] +/D [2225 0 R /XYZ 99.895 723.717 null] >> -% 2233 0 obj +% 2229 0 obj << -/D [2230 0 R /XYZ 99.895 723.717 null] +/D [2225 0 R /XYZ 99.895 698.792 null] >> -% 2234 0 obj +% 1991 0 obj << -/D [2230 0 R /XYZ 99.895 698.808 null] +/D [2225 0 R /XYZ 99.895 638.64 null] >> % 939 0 obj << -/D [2230 0 R /XYZ 99.895 637.615 null] +/D [2225 0 R /XYZ 99.895 595.644 null] >> % 938 0 obj << -/D [2230 0 R /XYZ 99.895 581.623 null] +/D [2225 0 R /XYZ 99.895 538.043 null] >> % 898 0 obj << -/D [2230 0 R /XYZ 99.895 520.331 null] +/D [2225 0 R /XYZ 99.895 477.792 null] >> % 899 0 obj << -/D [2230 0 R /XYZ 99.895 474.92 null] +/D [2225 0 R /XYZ 99.895 433.422 null] >> % 914 0 obj << -/D [2230 0 R /XYZ 99.895 438.913 null] +/D [2225 0 R /XYZ 99.895 398.456 null] >> % 895 0 obj << -/D [2230 0 R /XYZ 99.895 392.226 null] +/D [2225 0 R /XYZ 99.895 352.81 null] >> % 896 0 obj << -/D [2230 0 R /XYZ 99.895 345.539 null] +/D [2225 0 R /XYZ 99.895 307.164 null] >> -% 2235 0 obj +% 2230 0 obj << -/D [2230 0 R /XYZ 99.895 298.853 null] +/D [2225 0 R /XYZ 99.895 261.519 null] >> % 891 0 obj << -/D [2230 0 R /XYZ 99.895 252.166 null] +/D [2225 0 R /XYZ 99.895 215.873 null] >> -% 2236 0 obj -<< -/D [2230 0 R /XYZ 99.895 206.147 null] ->> -% 1055 0 obj +% 2231 0 obj << -/D [2230 0 R /XYZ 99.895 146.837 null] +/D [2225 0 R /XYZ 99.895 170.895 null] >> -% 2229 0 obj +% 2224 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2239 0 obj +% 2233 0 obj << /Type /Page -/Contents 2240 0 R -/Resources 2238 0 R +/Contents 2234 0 R +/Resources 2232 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2237 0 R +/Parent 2210 0 R >> -% 2241 0 obj +% 2235 0 obj +<< +/D [2233 0 R /XYZ 149.705 753.953 null] +>> +% 1055 0 obj << -/D [2239 0 R /XYZ 149.705 753.953 null] +/D [2233 0 R /XYZ 150.705 716.092 null] >> % 926 0 obj << -/D [2239 0 R /XYZ 150.705 716.092 null] +/D [2233 0 R /XYZ 150.705 687.379 null] >> % 897 0 obj << -/D [2239 0 R /XYZ 150.705 664.064 null] +/D [2233 0 R /XYZ 150.705 632.184 null] >> % 894 0 obj << -/D [2239 0 R /XYZ 150.705 622.283 null] +/D [2233 0 R /XYZ 150.705 590.403 null] >> % 890 0 obj << -/D [2239 0 R /XYZ 150.705 577.073 null] +/D [2233 0 R /XYZ 150.705 545.192 null] >> -% 2106 0 obj +% 2104 0 obj << -/D [2239 0 R /XYZ 150.705 543.917 null] +/D [2233 0 R /XYZ 150.705 512.037 null] >> % 893 0 obj << -/D [2239 0 R /XYZ 150.705 512.037 null] +/D [2233 0 R /XYZ 150.705 480.156 null] >> -% 2242 0 obj +% 2236 0 obj << -/D [2239 0 R /XYZ 150.705 480.156 null] +/D [2233 0 R /XYZ 150.705 448.276 null] >> % 892 0 obj << -/D [2239 0 R /XYZ 150.705 438.971 null] +/D [2233 0 R /XYZ 150.705 407.09 null] +>> +% 2089 0 obj +<< +/D [2233 0 R /XYZ 150.705 348.649 null] >> % 2090 0 obj << -/D [2239 0 R /XYZ 150.705 380.53 null] +/D [2233 0 R /XYZ 150.705 304.874 null] >> -% 2091 0 obj +% 2237 0 obj << -/D [2239 0 R /XYZ 150.705 336.754 null] +/D [2233 0 R /XYZ 150.705 260.978 null] >> -% 2238 0 obj +% 2232 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2243 0 obj +% 2238 0 obj [1000] -% 2245 0 obj +% 2240 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2246 0 obj +% 2241 0 obj [277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] -% 2247 0 obj +% 2242 0 obj [853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] -% 2248 0 obj +% 2243 0 obj [528 542] -% 2250 0 obj +% 2245 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2251 0 obj +% 2246 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] -% 2253 0 obj +% 2248 0 obj [388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -% 2254 0 obj +% 2249 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] +% 2250 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +% 2252 0 obj +[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] endstream endobj -2261 0 obj +2256 0 obj << /Length1 1383 /Length2 5908 @@ -32764,7 +32976,7 @@ W ò6S&ªå_!“½SÎ|esU›FÌR™y† ¢Y‹¥ýžï­§N endstream endobj -2263 0 obj +2258 0 obj << /Length1 1442 /Length2 6151 @@ -32842,7 +33054,7 @@ n^ r sb¢VØb)l 2ÅþSŠ„T£­H+PMzjÔîëzËiÍfí$ŽDáŒMkV©° Ã?ã\Ù¼Ä>Ž¬߈ƶa¹<¡ÈèEE£ÜL½¦D…¯6=t¯–EÒ÷µ€ðàÀ.…(Á%FoÜ~­´ô6€rý¦\l•ù;séñ'$Öµ…ïß>ž4¹ÿr$ï2¨DZý~*®\R ù·Yi$=Þ¡¥k‡å'¯Öå“™úý.m…6¯Â–„tY0’O$ð)ºQñ’ršÈUQ…»+¶ßªúÔ4(¨«,‡°Qb8¬—mÓ©qý±âÀÁÝHä°=‘œ,YŠ8i  ÿ‡½ª”SZ6Žöã½mØ@ˆ»`é7~â"L7\ã¹ßFdN#FþýHR´K´KHpb40 2ÂÚ~HÇKε֊úøX endstream endobj -2265 0 obj +2260 0 obj << /Length1 1688 /Length2 8444 @@ -32933,7 +33145,7 @@ p bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ endstream endobj -2267 0 obj +2262 0 obj << /Length1 1173 /Length2 2916 @@ -32981,7 +33193,7 @@ s; ƒ$ü-UÒÛÊ3¤³# endstream endobj -2269 0 obj +2264 0 obj << /Length1 1188 /Length2 2740 @@ -33030,7 +33242,7 @@ AÖª^ 6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ endstream endobj -2271 0 obj +2266 0 obj << /Length1 1756 /Length2 19614 @@ -33162,7 +33374,7 @@ Ue ^©D0yK¯xYUŒyŒpÈx¢9*„ !^µsÇx[…ñ¶vxØãÈQÜ?1aLZ³õáŸ:9á«56{MØvrv_ÛÀ&àDª’N[ÁÜáú$9󯘛Ù˳¾ð‚eó×gñR!iæ L¿Xnf'µ–‹[ÆÀ׃¦ÈžÔºÀÅ ÝïRñ!™n$ƒéÄò#< @ö¯†¾—øÚ¨2n±¢´Q/j µæ$;(þhP3ÇáØ-Õ(ÍØÅ 3às!H­6=@üuë?”ýó§0u|˜!í5©H€܃L?%ZN:ÙžND‡œ•F§ÇºÞ+Yµº·Æ"ùt£×âžjÿ¤4·wÚqt(*µ]z–óî Ðþü‡Íä{„Øôò×ñu£è‚Áö¶à $¶Á.YÿÿqÛD²€G•£ßô<½$ðÄe{Óp*„ê7U–‚óÓ1v|ê/¸JZÌIOÉ Y!Ó·ì±öAk2WT<ËûUŽù—A‚•ëÇŠÔ@j ³ÖÁÆC* ´\4lCµó%—»ŒÒ¿cÚÚežqñÑеé$ÎoÑ}1ô‡¡øgܤ~önƒ+¶5-ÛuBlÏ<_YªµbXjr3F³ÖñßL0F*)WPg…¸ ­QeoرlHoÑI_–B`mæ]˜zñ ¹cŽ,àn›z;’Eñ;\¡Ñi>0ó$j5Íg¿„¡û©û¾$‹^æ.Hc =`h)e$¹¤—Ÿ¦ÿbE<]`QË&ôŸÎ‘SØc°WV`´ [u‰(³lå»J;Þù Ïó€åwþ´ÆŠD‚Lç,i©+G¦]1 „)ƒ „ßž Ï0‡{à g$*'|gùcjNí ¢ø7¹;Ñ%¯ìµß´±d=¤Ü4¡{cŒgÔzéæâlÁ'à'·ÖÝH3LY,k$ 1Ä~ÞÔ…§¶jOf;`§|^1j*=¥Ý•iÒ_˜›¨$¶‚³õnHͽæò%us1ÀXÚ8‚5^³¨¹ü¹©„R§6¤•>ÀmIeí¦r“îE„ú —ãÅ< ¤@¼­'[Õ}祠Ÿ˜Ô¥ØãIƒ/4>æ(«Ô„:ëo¤Ý”+L§òK  9'ìQܬµ$±bŒ0Øff4{lS²›„GõþˆZ‘od½Gû9Jᚤ¸y2—Њw³Ø=Lã£Òw|G¿¿q| endstream endobj -2273 0 obj +2268 0 obj << /Length1 2854 /Length2 29958 @@ -33416,7 +33628,7 @@ JZR æ r´`³m\J²ò´³3ò€%b´dëÞQ™¬0qrù“žÁB$Z¤ù$‚Zïò™ykÁGq0m¦ý tÒà¨Q³WuðéG endstream endobj -2275 0 obj +2270 0 obj << /Length1 1776 /Length2 19027 @@ -33561,12 +33773,12 @@ iw3 Öšš- endstream endobj -2277 0 obj +2272 0 obj << -/Length1 2692 -/Length2 26618 +/Length1 2762 +/Length2 27535 /Length3 0 -/Length 29310 +/Length 30297 >> stream %!PS-AdobeFont-1.0: LMMono9-Regular 2.004 @@ -33598,18 +33810,21 @@ FontDirectory/LMMono9-Regular known{/LMMono9-Regular findfont dup/UniqueID known /UnderlinePosition -150 def /UnderlineThickness 67 def end readonly def -/FontName /FREPJB+LMMono9-Regular def +/FontName /HBOWRG+LMMono9-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put dup 66 /B put +dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put +dup 71 /G put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put +dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put @@ -33618,6 +33833,8 @@ dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put +dup 87 /W put +dup 88 /X put dup 89 /Y put dup 97 /a put dup 38 /ampersand put @@ -33681,116 +33898,116 @@ currentfile eexec K|ßOV`bàÂß'EÙp…Öœ§höº‚ÒõÛ(Ñuóèfè*Ž†—âéþ­ñ؈{£s’G´Â(\–h‡M9?Šª¬5 ›gÀ|Ü 9û@£?ä â…;ßò^;Z]“‚Ý_·pßêXÛæÆêì¯ô5Mlî•pCŠbØÁMDþ ¢¼›†âC³õ ![]¡ÒzºŒ>¼¦¤§¨Òn®žÔ¥ç˜R>X5 ks‚•Æ¾l© yHRëàv¸ú,#«á#ymí­B[Ü! ºY¸‡Ÿ|+á´ˆÉÖÌ@w˜1Èy0¼–+[åÇç3Þ€ º©;ð.f¥Ká›ÕÒ$¶w:¼É; ×0´6‘áI@œÛ3úñù€Ð]…3Š}A‡íEêŽ:l9éÙñ;fQIïÜé1Ë×YÚÿuK­YßEXÒÖúñfhÚêƼ½mxâÓg{šG9ÆzÏ‚ªÁi¨{š£$ŸÍ@í½”–vœÖß2BG™4õê˜#­=„Ì-*n=׬>¹‘paŸ¬\ßµ ¨wQS©RÔ9 ~Rã~â-‡aªwî×8qWŸrM:åŽÚW”D)E/Øšî(ÇÏz×J·Ýœú¤w/‚‡Uu=åOyq?vïZ‘Î~±1ð-dIžoAàE.¢‘Gjá,›®zS*1Ñ ‘¯˜£aJ€„[Çr€9CëºçÆ*A½j ²æõ‰ ü˜ ÌÂúŠ(ïS˜ßhoTƒ åhŽ €i¡»¹ …un»–µêN„Tˆ·–‚»¼ÌÈ™ë¨uRm-Ùmq.b¿ÎÁ‡ÛZŒš.ÓùÑ‹>Ù[·C|„ªÚ ^ï¹KÜ©°Ã[Ò sv@󢘬ÿVAýx`üéðÇ!øä­ æŒÍA%'&\}ˈ]k߉ÈÝÇð  D 6L@0d‹Ã—ƒýzá‰Q µuh8Ú$Üx¯Øy4¯[þ¬íåÛØ -Š•ž˜uƒU¬cT\ºo¸é¥æ é\Ç‚ÿ§($æ‡FGwÄQ·IÊK• -Óµ‰Ðžþwž †—•§#LðœmúæÕïò‰©µ{ð#Ñ€ÖîvZÓQ ³ä~ïS§!»RŒ«¯éAj¥àlñ sq&"ˆ¿ËúbyD–¿=pXÿ+Qnæ,š•ñÀ^0Ic rŸˆsþ¨_KSºæ•(É•!ÚkˆS©#:°h˜‚ºé’J*ÅÖÜfWÚòÔƒê)N¥ÕÄäþLÅðpA@¹t£GÐ~Èeç»å5ò°Š€‡Lð؉(Ga°ß -DÙñì„18ˆüz¼T6|¶éj_;ï¢? ßLDÒ<|úIþœçæ÷K´ÆEùçó à ¦¨rÑzû¼©=qó£Ó!P µsƒ{¸ø<,Õ‰†Ó²i ì8æÞ»Þƒé>5ñˆâ%]L¢8ÕdkdDçÓ’à’wûN?ÐöÊà+¢9‹ò¬¢ƒÜìfR9:™¾Ww¯Þ’ ¶w§JÄŽ4YüÝ“(@ü£ruô?W‡ ZÊž4Ä[®ÙÙù=©•8yjXý™"MÉ -5dÍÒHÛðËè½Ø¢šIô@ãë´ÆÕãÓuK7ÅãµSèÕq›Dgÿ.»\t‰5ƒh -¼dí¶ÊþVžz¥¹©ªE"Æ„`p¢UNÑ’û‡3û‹DÌpeEN:rRáÁÒîY ,ÓÕ]øMzvä}7â*žˆI„ìuJÕÿ¢¡Ú¢dåTº_Nʃy÷÷¿ÙÍI~fËãr‹ew»X LÏU`ɼbåù»b8åZš¯ÔÜ1Gìcã•tæÌî±öw:SŠ„~“#,FdâÄ=ô™¾8Ê@‹²nβÖð`g‘ºÀ|l×?OèUuKȘZWd +a²ÒÉ–öÞ´³ÀÕJ´¶Ò4í÷ÃDI?,\8ñs®'ì…‰†a€D4OZ!ª\Èò&",f¯Âb‹³wQx&`HMòˆþ‹<ù'aàiÑômÖØãî“B¨£ -C*ó :¨)Ѳ*Sßé‘k.áG©f¨·t4½Çš)õq±÷æÕ@–~9ÏÑFœ¸€4k7ØÐ51£3 „¤™å p ^TßücôL$÷dKgZ§îej¬=s¸QÕJ/¥XbÝ|©3W¾üËÑŸ^ý‚b ÛwY% ¯Q ^ø=/iB› -&&¶29Þ9ÞZ«?!@)TŽËò½GòHEæî Á:SqÙUÍÒG„ÀŒ‚Y š°Õ&eRWÒTc;½–×·)LøÌ™¦¤hs¡všÌò[YËCm>³Jœ¶îA/TÞu³ì‰®²–ÙñV¨â`lˆ’¹® -è±öp4d9€Á‡ëàUÊæ\µó˜ð#lè'ËVPÆ*vfr4÷—µTûËbù - -€& Ïcªåao!žy²Àò×ðÖÜ”Î'³¾¬®?5ÔJêj -šõY}î±+¿oG~ž{z …'µ¤, Ëô=Á úU)6ÓÛŽÁg³«êq‹÷í3SƒïdÍá F½ -†ªÏì|-LÏóŸ¬~µkâz•.T½¡5(ûo«‘4rÚ´TzPÂÁåÃ^ç%uþ: ïHåÉŽêO™ÍÇ.¿/}'Û5-tD+ t…ž´“¼$`\[®­q ܉P¢Gg5òä:·öýãòUÑÅ­¢iÍÈò7¢’æ Ð|®FN ˆåÅÞõР”ýÔýt2’§ôË:ÿ’¦>G¡ -:d3¿ÀçpGE;w¤/wg01tBòy÷õ¤+_]óøNú¨Ùvm÷Ò%2Ï{I^”ââFËå=ØÈr£-^É<ørzÍã%\¡*ßÁ#ƒpç«SÑ­XvÀy qPÒ±à¡t"ão­ é½±ˆ8òU¯Š¼v<ÚË{¸åh&X¬o0 -½¹[oèTƒ)-9®ÄÌÝ\´ø—`²ã­ˆ¯!EƒÕ~.«Š%RÕj£Ä|ÍŒncžwŒ3ÿµ÷±ÿ‡J§Ìb 9󺊥«ÅE…„3*>ÿž“SJnb÷ëwU—@,Xj:áðÆKƒ îäŸk'Ý9ª`ûè}Þ›R²ýAn ]½ã„w‰Ðü³U#Eú—:Õº1ËóÁ¾4ЊŠ¢+Þ&ö©C!ÈΦ¥¢)QRÎ -Û/@q€@² ²QõâÙÅá¯äŠc%ÃõeM½¥¯õ°g4ß×á‹úéŠ$?6ˆ^ [Èô&ü&ÕQÕí>°Ñ"@ÆíH2 u'>n¸š) ݵf`žyÇ'\dÈdɺ‹G7 ,}¾æëÊ&]î¹îiÂ}0jP nð|8º>k[TÕMïú‘#¨Ü äYê·,ÏÓ‹W` 1^õÎüø›ßÎ$dÖC`Ÿw€|¤ ÚFª¬½Aâ~ë—¢±¾3ûâ>š íŸË&j›‡ÆÉ;zMšü<ˆ°â«_à¨CwE…£® ™+îÆ»ÖíîoÑ$§œýí²2 -6±±Àé5¬„ilZÁ’Àw”Ô¯’º]b¦—á¼$ Ø€9Ù\l}-ÿ7²iúý˜Ërv «ÉžnqË¿.›ùVWl'ej{Ub¹î~<-¹~<Îf!:ac¸´Lš‰Ž;SÒ6OŠ” yÿŒçT-·Éåd(3k¸3£”×>$åàLnÑ.ÿt¬öÞí²þüê:ˆ´Ld§—@8M ÍÍÀò8^¸ÔœìŸ‘¢MÐ\ä \‡_VöÞé£N’ã’T„ãúE4LÓÔÓ¦‹x!#WB¥RLÒŒ0:hy÷M¥†È"Û+u­¯>^›0 9~Zññ)>dÂaJã…À(,t[¥öñ¼KE‹ó%$=ZÔÕíÄéGX·ê±y®ö=˜×F"Ù–4ÂÂï´$÷=·Q u5›eH[Ÿ+¤WOH1ÌsÑ®ZëW2³ïÖýúv¦“2;OË¿²× -·^?I!é ›àÈŸ’a=´øcë,ˆè¨UNe„Pý…IÇçŠ{/ûAÄ™,Œ£ åKÆ,Y®]¨ÞKþzö-VYKÓEÝŽö}ˆ—Êñ¢"Õ€ßßGx!©‘5Ë (ø»N*£wo’|OÓà’¥}® Œ[š> öì¤ú‹ R^„žYç·^8OÁì}}³–`Ž«FEë}qêÀ@©'*ST‡g¼Ii €SH¶æF)?:+5<<Ÿƒíµš ‚Ñ!óa »9à"³N ƒÐB-é­ &_k±+€#*n‚Ö¨±î„ºÆ(îÔ¥‹«"¯›ˆáIL&ḣ·^P|ŸØ[eÌèغZXyç „ûјLõý)-~ÊA6ÿ²]ÇÉëJè=E¿È -¢€wóœ ¼©è¦›70»¹…ëU5äJbµº€)©ÐžO:cdž¦ÔÎêz0Z¨‹ Mõ‰®ïWÛlª_6Þ½Ù_騣åû™+,á¡TŽ.!ãL|ƒO|¸ýƒ·aéu­”¨4æ}yòÎ:v¡§eÖä\8H) ¸ºªãq…¡OáB¹$§yš‚×ëº.HuF´ ¦î§&ë¡(‹uIZ_ÚUêp o5wèzÞ“jj¿š•'Õ {3ç.`eoÙ>õ¤–©D@=A³ÃÇž€÷§ -l=m9«†ÉwõÂò -uŽôøßÐ7ƒ¼5¹–Ô9â_ÒP9:T¨aUmžO~´Ù½PZKçªACY³¬^4äáÛ*ÞÑt"ùÞ;²û¡]Ýð>ÜW&¢ˆâ[my‚Þb=RÓüCš?lë’D*©ÎÎ3fzôà£ÝPÆC$RììÍNGÝÃQ¢ÆÍ¡¢°•¯ß ~æ›eài6™3½Zª3æ›äôƒ‰õÅ%¬çÌ*¶?pÊHÚ³®¹/ŽhíÞPns´ã‘ñØ­ ÙçŽTÒfzÞ`h˜myÌK) "=¿E3œöl\+ª¥“SõÊ¿‚ISÒwÌfËÀ@dŒ–äíë¬ëÏÿbNó®~ïù 7Æûz 'ÅkD³|—æäNÑ·¦´)H’uWkv±>ü1×Íî ÃFRb[ˆ’E»fagŸ~ùg¯Þ_¡íM]>ªÕ<ô»!ÛXŽ dŬë>=ÿbJ>Ô&ꂹ·FÉ¿}u#ˆ^é -{Xð³§΋ÃËÄi‡cwÛÖqŸ= dù?ói’Œ@›¼ݸÜÝΔð†0¤X³Bkˆ#mWÛ/ZP³Û ù°J ƒê«€17sá®ê…sdïÞn!ûéÑÿ7zZÓ|‘xµDµ•JØÌ„×Þ-Ñ'ÊëâñîåílP‡BÁ’û{2¤Ä¸ýŒ°âhèu0]mzÉý‡IYF$T8Í[½dþTr ÀúDºFKhÚ¬‹†è°"6…Q§>©„,†µrT¦ëÃèt¸Š.OB7¢Kq0©Lï“"ß Îà@]R;Ø^=UÜBòæjªŽ@ûOšW[œƒÏ•)¨P9{£‚©ð«[’¬kñK,ÄVCéìºÔ°BNåxüô ¾ë‚SeFœ2mg÷¦×µ÷⳨k²IÏZeáï$#n äú*jM½z?0õÁ¸®õâeÕ&éëcg²M¾¾!U3d#Wƒcm>ǘ™b‰T08›°ÞÝæO$~¶Ü&ó¹µÎMã0Ú)HmÄ5‰ôRºtËh9ûaB— ³ß„Gä›ÝûÔÎÝ™TVuçCw“–…êµw‰¹}r¯ß7„Ü&¸[Ýîeî& P nÄΟXG—[ÙX ºßñŠ ?ŽÓwª–c‡4)¬B™wúÁÈw¬ë(üG«pP/ƒí§åÓ0²c—‰"Š¸Ü‹%: ˜¼ùñ²ZùŽðOÙ¤&”ŸUs?ñªÀÀº¡ 2èç8H6½è¦kÖlHÈ—Þ¸j³PÄrbÿvŽ5£ZŽá~záqA?âM&%æFNç­´Â-)äJÂUÙ묥CرŽ¢K$A£ó}mk»”³Û ¾ÿ½ª¹¯+«Hx€I«V·NnE’ Ò-â›ÒKHäÑà>sxÀ[bÜþˆu»iYÜÌÂäMÀÎk.ꩽâ10…ßý^¾ïƒÖ–Àú'¸iGz"ÀšQ½…£{=cìüœˆ]cƒU×n žj-BàJÖQJ¸î­„hˆ÷$Y¡|‰».üÓ¨‰·$?Î=¾øVr^Ljbw£/m]øÔëG1^[ÕûèŽfixèN…Ïån{¤|*ÑõT”uÚ„TèÖ¥ÆBZHäÙ(_,¯l«tŽêA2ôs™Á$£a=Ò‘õÑÑzo÷û¯Fa6F -Š½Äûzk ¹]!<˜ÐÐm/Xu0Ñ"£ÊUµÂöetgR‘”kì6‘$ {é!­¸2ÉéL?“'$Xèׯ1>pYNµÃT;ú‘$ñwî®á2®å½÷Ú4ÕG¬Êa¾mAì7ð°øO»Ž£ ?i­ùI…8ác ׆r -qúûâÈ Q²JªÍñ)²»„:2©wÙUÝöÀ( -HvÍš.¼&™ñøT1 ˆÂN&ï¥ÄUHTISÎØ.|u›Š+$ЮbL¶Hï -.ml<ƒü Þ*”­áYrT€ê³?ß'Ì2‘øÀ–G‰mLÿX™ ˆB“½ëi É(¦Žÿ½ ÞbAa‹qÖ Áƒå~`™¹ä%6ƒ ›m•þ1ïëcâ•è‚kù Èþ®; ‰ÝK×daÑ›nö¬ƒXc H†ä³ Hßx–¸“ ¬{ð• ywî?‹·MÈ·˜Ñ‡¹t{ÀëI=ü™GÞ=%ƒ†"﫵§¦g–¬[’[€!í^XúmxK0³9‡AýÙtœÏíöä‹š²bÚyÏ»Y å*öãZ„÷8hRü¤§rðòÈémðž#¢DÛNÕ`­{O¨í<`ŒFIo.°ïâ^b”츥È}Iå€ÐŽD0f^ÜìqÜ9XKǦvœk“ˆ¯ÈœKÉãŸVK o·ê¼{®a¥ž’§ß“ÜàP’ -a6ÖáU"±^aé aÇ» Ö ®±ŠNY(­ÀgÎÁŸ9åu²îxàL_ëÚ»• }ÌðÞT¹–Ç(½34)xÙ”dÖË_Ÿy¼­¬°Î1f…0OT’]íFN0dÉHHX.T€©íAšê±$#×€ÆïäDt€µB²)þÏÍ‘wˆü¶ñj´­]w_T·ŒyK5¤ʹ”“ÛìöbúôÏ-Î'ƒÔ±¹(MH]Ô Íü»I -BIëãr¡ý{ÝWz':ýÁ£÷z1Óƒ™ êÛ†X6¹Œ"ÛÀJ‘Î#{ŽÙÙòÑГ)Z›¡2=Þ ÛmÑ(aÚáiÄûéð}Nch—ä˜Æ*ð ß7võù ^ì+sš›7°~ŠfŽhÑ£á… 0ùmèD ‹l -JP:Yó¶6ßÓgd&7ëIá{D -Eš‰d/E©>†uIª,mÕŸLµQºãÄ‹ɇ˜Iœ‡Q~™Gîâ¹N¼²Y“ü9rÇaVê§ÖEíP¿U欠[T.í—CKw’ÿdQüýíÝ>/˜.¾ ‹©áDWS¸l•Pa´Ï8H‡º*šPK* -’ÖMÇ00áûˆŒÄq„múLÑ¢¥t¤ÎârÐbÞÑüERÀ·îé¿+FžÈÊ^>»Æ­£ç}êܲeý"ˆáºßÎ`Ò¨™nÍÜa8G‹)ñXŽÍa × ͽ|»ð¿¾PB`‰ìpq?Qv³úàeóDJÃÉ_ŠbKÉaC,gK+7ÀS3H³¥OóxÚXãöc–¾v ‡1ë˜õËŒèøJ–ùƒ¥…:£éS5Z‘(µ#âßä¯VFêŽì™âš05°ŒÎ;Rc§Œñ¼nÆï6{æm#÷ªë¹9Þ2’­Ë×8tm>ŸÏû?Õ©J5í\Å>ã ILÞ#>ج~i,~fï  ÖÅ}3—™t¦@)»¶Aò@`Mkaé²zÌ{ebûVŒþ=oþì;v%hQ×Æ7²‚»õÚ°,gî¶È¯Y\_F冰LzâðûלtÃjÚ”Š@ã‘ROôÑ8QÕd -«L–Ù¹³Àˆ£ ܲ<ëTÅ>n,©—CÆþŽ<(<¤e\W›òSÑý7™lj‡0ç/áb¼'x–9`VxIáöú¡êš-Ž«xÂÆÒÁb”)³# F,² âÆ”¦º<~ä) ‰‹³ä̪‘þ¤îª¦Dª™z^*ÜÒþ+W²Q7¤ 3O‹nw…jS鱯c)# ÒpDFw<Ý‹Kð¨Œï·Óú{]^Fv¸°‘‡TqG¡;©8ú½þ/ -Kbk;->ý¦f|ýIÒ#UÔ\H E„ yDV€7.¸£M—*«£ƒ‡²Ö·‰VŒÝƒyKŽ kïÅÜÝ]NïÝj¾Ôwp¿qíFÀ€§9 ಷEã]3€äâ Î£Ùkß؃d+ÛURSZ}O!Æ7mèE]¨‡ùr{§ îöLï-˜LÀ™®Dæ¿7i?|`ÝœÜß á±;Ë Ã~ÂQ½E(r,ñš9U¥‘å'YÚÏ28€åî~=¤÷ÞÐ'…*„ü)”4cMw-.ælÀÄú¡‘)xMÙ -\NAÖø”¾lª¢ Áì®  ŒË#ôœÌ‚QuÎ*>Ów#WÞK )ª¯Ç'â Wä½ó3Ðo©Å¹*íÃ5Ðyæ¬Æ›ÖKðq¢ç,¡ÊÔF3R‡éI²Ú„a¦«ŒHvâTFÉ÷ -¤3rŠp±Kk®2³Å†+û,ƒá<¶š(Œû„‰ËYl"ÏàBƒô¼¥ÐNôb_„%TâË.²I÷ÿé&к©'«Áƒ¥8%æ躟ÙP¥‘£™í¯2»V1áyuÎû¹\í±u^Üëäe(£†Ubã(‡ŠR˜©¬Ëß8=JУý^É„g% ñÚ—¨ƒÛî÷]š˜iÑa-X/ûFráp»˜·ˆ—,7'Å6†Ã vø‘ܼ&Çw -ÿ–:Ü£–ë&Òö¸Ç*/¼Å¶ÀtZô 0¢A²býdM˜—[шP»så1\èŠzLê¦ÊòþLc”1LÙ×9߈ÆU\Œ¥\z›”Ÿ *ó ²=ÃF ,ùï%—7òz£fÙUÌ€?ª¹2ʾF%6r.•ø·á%³œÙ'–‡qíÉï•*â:ÞÍá‰sò~µV‚›®d˜23·ðÄÕP -`ωj ÷žê%EØ[zú¢.ƒ‘ÃßÕŠNvhí`T’1ˆb|b07Ó˜&s.£«Ëm;ÎÓNÃH×y -7ÉuõØÅ‚OÆZï ãcꌋ¯i‹¼`FÙk©ï2¸¶±t|Žš(”\u¤+2Ûb…Íš1+ y; V7Eèf3óõš´qÏ*}:»d›ôW‘7]>fû.:¸Îìþe7¥/ѦmüÓfC/&HC˜¸Ÿ0LÊתÇß*ŽÝuŠ0áìyRîÍsœœB] ËP´´¾({ÍvQv&éÒïýzŽ˜_ì&>l½ ¢š'—ÄM ]4ü@l‡zêCöµýà‡»ù–Vʨ™CŒk¿.¾|è”bXÂ/k06— d~vZ0ûLßN×ÐEk³ëÕ !›pc”¬À䄨R£)‰¦8îꋦLþÊKà+©‡*ò¸^|>u -RÀp(˜"»ƒA$ɪ; -ÙÆÄ.Ê%ÀÙb n'^ jüF3_—¢ÿ êD÷”ÁßÖ±óõ,Õ+æo|Hóä?¿gt&ÆÐì/dW¬ÃõT "Îx뙨è #îœÕ2ã Ï6Ö,im€Þ§8ÂÀ=« Ñ Õ¥XïX,êm±]€m‰ïÀùV‘öi@3ÚÇ:³È¼¼^ЪqÓ½U®+½= WlµêwՃĬ™•]Ñ hB»ô묨ívÜ¿ 6+ 6S…†)gX4ç÷ø9»|‚›¸Ì\lXª>ŒS5Á¾-+m$ZºÂÕ þÒ¹æ J{Pàí•ÑæôZ§Ê¸nðÕ{é8Ç…ì!|?[Eù”eRíe)¿,žÆ´$ñÓg ¨›)ä‘ÑË®ØWMkG2Em«rGQ<¬ÁKöØ"ÅX1³3½¿›ñ‡ú¢ÄsN‘˜ü¡pX³9éóÊP¬g2]‘Pƒ¤îƒÿ˲6Ín‰®e*%‡ÒÞ* ¬i@à¡g!km”ŠiÀ£Âj\swöê´Ù{ °>«»ã7#<ô$b%ð³H4Œ”—à.ª¯`ßp%¶ñR9Ž -ìmmès÷ÐY€º-DHÔ­Nª`u«qÊq­À…pÕÞ> Ç¶:•ë øÕ;Ðý5ô%ðøð$0G¥$å‚8­´s¿#§.µîßX³j?ÀÎ8ÜÇ?@ þæ¾4ò[”k1¶çQíGFÒ’¸8¶×OX|BòĪu8ÛðJ‡ÈÌ'n¸ n:%hûh÷œøõßmQ5Ï?ž¢DeÙý`›þ÷Å„Úâ•ñoÖ"mûÜV"ÞI™Âú’£˜Ç§›[³Eæn¨`Tâ)Sbs¶Ý/÷ÍÄ5ì®{ƒB±‚°æ|h³aDêÛ…¬tŸñ‰ù²ò ålû$¶¬¼£ö)\-ìÈà†Ób?Â/Þ²]R~‹BˆÍÓ\?Ó ˜ðrÅ7»cæ²î•SÞõ•S<Ø»²ƒloÎm&N^âÏlîB³]:¾Pºí.&5%“cd­ÈYXÍÕÂÄo,a`j‰iÆUçÁ)8©DÎtéuI0m`$íéµtQr(ãáÄ›PŸ{ŽÐóDqEŽºò·3˜(šÀA—yo²k‹‰–÷i7CÍ¢»|îÔH"bßEÓI>MÒWõ âéÿnoé$¿ó6nF…Õ2,ª>jÓL:}8¿•¬\a“€ÑCÔØ/Ë_.6’\À†LÖÄÿ€ÞñÞ{@¯°‘Ld†ž¤~ôeʱ¢‚@Ø 7:­}aeW%ÌNÛúìºU}V¥OÓTiúL™u$» ªw˜S›Þ:b`Ài¥ -óMó­Ò7ÙøF¥wÐ Ñt3¢‹é‘eà˯&•‡QAö3‹8ÀŠW»êôà:G6 ÈÄC¯x„¶^o:ÝXç¡eðE‚pÇ-üºš¶v÷_ñ~–ç‡%-÷è}{ã ”a½±¿æ¡–d ñV¿§‘"íJÄ'yH16òœ¦=cÒw`+ô ü0-‘ êdøÛ17–v×»šùO¾’:c›Òy,çTX`š”Æ?®Ë-gÀý¨!…0åøüfVí—ÍÉ]|÷º_(ŠC:²ˆ¤›¾y$äØÖÊöUãàew»#Šãm…N%t¡ú§ÄE¿û!™DU‰B¤>ﺷb°ŒŽ·¼PäŒOð‡- ¯.8v³_5@<³Kº‘¬d¸¥Ï·¿®äaÝY9çá*MÛ§=Jß>±ï\Ù=øŽ`ì㬀:ŽÛzXnÕE¢x˜+DݽÜ÷øfà+J7óÏTÇ8¿=kÆ -Õ0¯}| -qãǨE0®ÿ[3)l°^%À¶î/>¡«©@›U' ®»u ~ð:ÀËrèì59gðÇ‚Õì¯F­4ÆëµY<7ÆÙ*¥è\™°ÏqÓV³óþíÅ;XàX;4ypm; Œ-­<"ÊÔ©7ƒÞÈÍžû:WjrÛ¦iH=k¶TH§çÌB:‘®$ꮨ+‹c–sd• ¬"¥Ïu)8»Pyç#V ½û­b¬ì7†W$Š|q«fƒÀd= \x҂ɇ@ñ€Y£T—SPßÀEXRtŒwq*š’X²“ ­j R÷‘P¢Ó[ÔÓC¦ò -¡Ëšãƒî'8sà7ºÎWÅIr¤5 ¤Há@R;–ö è¾çIá ;Ä+âô˜¦Æ¦Ö|²š^¸|-’š§×ÈJ’¬µ[i\$”pä#‚¤1Rõúv†±óšc'u»y™˜ÀÂËnÑ-ü2*§òeëKF¶˜Ò0²©jû§=>ÆïŒd“Û7ç7)dLMØžÝvJˆgG½ß VÒ¹ rœÍ­£=—Л³Mð«:ÚŒ…Çá¤Çúª~[W){5w‰/ÎFé³pò!-ê#²G~(×5ƒ«1Û¡ÿº‡K^Š6 ËËÞLößs<ÑÀ‹He¶× jì¯~—àݮЖ‘¦üÓüÏ6JêåbR:WˆÃµHÑ[k[‘žçªPø_éØEˆ²—jsùÆþiÄÅízBÖÇËøìô(Ý9G‰†ƒíqʃ€AšA‹ÃÃæÌJëDߪ‘páÃ/0/Ëâù¸yèØKª[Wº.bÌ^³²l„Ä(u#ü=;aŪ=Žp ¶!Ú³Y’Ù .ô°`þØ›u•• Ør®æëd EFS²bÌtÊ) ÿC¹C3D/dñh¹?»þ¬¯*‘Çi&'ÇT·ŸFSÂÅ? 7©˜Çegj®Ö -ÂðQî uXä{F ;¢ûÏyÚOÅ·oØV|æª+'8HH1Ž™L®¶é s†ºš'~ËuÃÿf ŒÂZª]TaÏ·¦µÄùdéó8äuàáI}H. ±Û›u¶Æ#ÝÀâ˜źiéM›…ßï3g¾¼Ô2@<_¬eäÂL‹j2ŠYmÓaà°©ðʦÉð™ -?-—Ï`sRFïÑ@B»Îj9û ¤'rüÿi¥¾ “ 0Ä|,à$\([ªkçÿWPHÌv‹¸ñ?¬eNœD}º_f¨cö×(Ÿí8¹ûõcˆ•Îd\è£ÒJKÃ[YŠ·d9°\ÚªÍ[;ÎÈÁU—ÕöPê¬yÖ#ÀžP°fåBªTd}sLž»Év?`²îž‹øR¿¢Ã®J‚âj^!̛Ͱ+Úîœ2q4µa—Äãäs }jª.ÿAo@6›QvZî–,ÜÁý²;Út¨¹z¿Å힪nÖi/ÉÏ%#8ò½¢W'½ûL£•ñÖ•k~ïdmÛÝG:1·Zg$ŽyZÛé\À´å–þHï‚/ôŠ2Ç?o÷ò©êÊÛôƒÃ§Ó.Ÿžgžö óXâRÒ«T)¿vá§ÐŠ¼¤D:¿ñszñ±©‚¥Î‡eâhd¸ØJ|×PNXÎ(Ëù§”´¿¨ÎÐÄdß{[»\ê0˜ÌæMÇN.jfC‘·¸N"€çgº5þKV×JÓ™þìºÕLfC^‘…CÜ’ÁÒ|Ƥ¡æ}]‹s’Å"Š w –±Fù¹t({Ÿ@´×„öŸõí1£Ãy+Ï­ä.¢4¡;«D!âf½Å&Ø0‹ÑÉÎL äìÿ“á׃–SßؽnÙùàh—L0ŽÈÊÕŠ¯kÆ>¸¿ñ„šÚs0}wß?fPX´ö,5,Àë:|=’””œí Bá^cxxðúJ§°jXš*ðþê_™q³NhMûç‚,´“ÑÓÛg•ré¿ò-Czl™h.µè«fž²jºÀËãXi3$%ù!É!˜ ÁÒ%HïZL‰¹)[&ÄDBc MQøBçåÍr.æ¡ "¹V¹ jãß÷\1 ëð¿¥»+m‹>^ˆ”G îD¤~m\dÚLÕ;c=ö—p]Ó.îàXð1nw ä‘kë€Õ¡Vãïê7^f]I‰+pXr`2‡xµ«”Ì4¤èãI2eÅx⚧SZb¿t7\£Ñœ½¹lØ@S„å؇d¼ú…8´Ò2F‘6b±¦šƒoáKÏ^3f±¼ - 4¢ØÜ'%ÒŽž :ãÆóßÎ,CŸÍzÃîg+×VDî¥&íœÌ´è¢îçß‚Ãm²$Å͇LkÍ]„;sþô–éc"WÍsL0Qœ]jæ冲o4Õ$mX;ô O,h4¦¸=ik&ÊŠ¤î -µ`:srW»VmôHµfÙ©v;èýí,Q6’³X(bÌþÔ1—±Ç•;ØôÚíìw8]3íl÷,Õ+æo|Hó’7Íý7¢Ö¾œÂ¦(¸zK'g;uùyóPú¼I¸Éó4Gmgø®°€Žxí˜*ú«ÉTOŽµqâùŽœ†‘#FÎÜ©‡á½IÇR'0#à–W_[‰9$ï§_Å^t xÔ¡Åþ.\^|îÁèÆv­QÉÒ%ÊaÕÏT'®ŸåK·:¼–yV64c¯Çõ­ -±¹?G( øa£mê8ƒïÙZ-BxÀ -ÒÜjÛnÎòýÓj/4m/Æ ï+–›ÏSÂ[Þ¬¢[Eá®’$ZÃL•·Pd@ó³L2žlEþrr{Ð`qš—±«’žTÉ}áxe(Yÿ¾fdmA™¦.ÒŠ0È“-Ä×…FêuKµÐèï´èÌÁÌÖyÙ“ADP`Uø>iþ„?îDá£qOlôî¹5›5é{ƒ—&»±£/™Û§“¡HªP~‰ä!»4x%z›Èa‡¬›{ØÔ /T‡¿ AmH‹ãÂ8d약bu§½ 6'^Vû°ÒeÉÎî>1Sü«0PÊu¨.”ƒì[?¾„åw -NŽeW~^ÓûÛIO  È«j[ Þ|¬œ/’ÌCDZ,¼—Ö );¿†·j+AŠ@LWH*5H•¾úE÷}«Š_sÅâ½×¢z–û‰ËÁ>‚JÖ1ß$å‹ ¼Ñ˜éyVi䥷ҺuÒ™vž¾hKtšÏÁùÓ,¿!É¥ˆ6… )¸0Õ£äÍšóPSK‰e«‡’{µì¡š·é9GE±Iè gº5Æúûý˜Â–‚u4Y¤×Õô^hiöÜò?@¥¿†¥¢Ï+ -.h×öD]G´6T½Mö€ÜVÂl;_ž²„µU8¨.ú´ŒêÓÈ*Î :ZXi_§Œí£ù™òi`‰L078™L´Ê›‹7NIué=ŸÓ-ú -èF™Ñƒø3aÐ;$Ž~u¼d)}<‹¯;ÉÀÒ }ÏבË%ûù)ôèÑIanjcZìçj¾v¡úþEЗÖÞ.\—ê}YWŒª¸œ! '&aÔ§ÉÛfÅð‹{{bŠÏek¯uà´×¶¢Zh9ìü÷ã­b˜möWCB’=T¸u°*`—£¡e2ƒ"u'FA{µJÛ ¯¶í0)wææ(DZ!+6?šÏh0J˜ -¿.!Þð ùÒywuGþW oåõò•®ö ª¹¶h%Î?$U{M†Ìý4é5µ{¯L3"ê§Âte9×7kÔ2èN -I¦Ô¸"Lpî#X «(D¬Ð‹÷ç€õŒ?dkJ‡L4{¡U^)"íµ±*ïI°cpgÅ ¥K[—‚ ˆ¡‹o^œ‚$lžG{‹'K„»Rohù2©jÃ-*á¨Å͆!~.·¸]á•W«bïÙ¶o0Hú4$iãÌ[TÕo—ÖUòšõ¿ú*a˜r½„à=®œ±-åOõK¦ê¾ûüHß«4¡‰úDÏî>+ÄÆ­>¦,,ÕÂ.¤%Eлdž˄f¿8›ðº•²¢ž»H ¶®ó±õ¦F/¿IæT»d`æ§þZVi -§p.ÚUÃ?çT-·Éåd(3k¸‹øªgYõVZ Êx&PÕKŽÌ7êõõnjŽ6*M({ó¬ƒM›Ûä ^ 9à¥¦Í -²S-PGŽB¼Ì*¸«™‹zWÇ¢*aw'³Ø‚oØíŠÏpßêD·a–µÓ¿øâë]¨”c .ÍÉ[þ‰4Zî?‘ &1¹Nœ“K>{Ù%ÔßDÊ-%>(„—é8V)ᎄIFñJqUU¿qõÑoT;΀5ÚÈŽNëyˆ—k€»ÏH–Gƒ¢84›‚½û‚úAy1Ê&™¸VÜ›qÄ¢…²ZØFüÞÈùÀN‹âØ£]ô`‹£=çs/<•œ>ŽsãïJ!CèAä¯ ·Ž ¬Ñ®¥(WL¹”=Ý‚k.h!kÕ·T²‹0ô5ß^NBYÑ6g&¦ã¾ü@N¼bŠŠy=ÄFã£jÊ°&«gù_fýøHÁRw¾ô|ˆ›ßÞÜ» ’Ï£áf6ç±%'3høÊ“jk“Þr”“íÆÿîœÛ…•CLmøH1f)ÊGÿ›ƒ7–oÔ²S©5£l]%þo¬¸˜ÖHï-C9J}ß2áÆ’X„íÒšÜ.EÝ;ðòÛ=Îÿq~¯ºôì{)°XëtD¼¥d¼Ý:·}Ypöúô4%˜‚‹øŽôÿm2f°0Ùf–æ°5ãÐúnÖ¯¯.|ØëáûVrŦʾÑ[Ó|Ôx± ÿjÆÉøaçÕµzǵ”:‰!Fㆼ˜v=r,+‰©Ié´û_¢Xz¥Q?_nñ›‡¡° ã©Q³š•2 ²qê£Ô+ö¥~Y©Ê|W[At(ɵ8WF Â{aÂN¨6·û8DŠëaàñhŒU­ÿ{ÁðªKK’ÇY”–8â’Q§áÌz©KX-™O-8Ƥ2ÀÃ0Z°"Ôó Òf3êƉOZ2^àlÊ€ÆÁO.D_2À—¼@V´®Á{~ÍŠ’¹­®ÈÆš¢¾p%½f ð‚±ü2„,w®¢Ö]ùöI$5x\ä®KO1ƒ9ƒÚw¯ l1…‘ǵLóBbŒF¶åK·9˜óDa±1§Ž÷-‘((ÎS]¢ÐðRíñK Sµè9|H»å"Ú0*ÂÆæéäý€µ€è·´ŽÊùý$˜ØK¬Md’ ÎßýeÝÇ/è7\‘ûÙXAvrX¿‰íÃ}C…t0#‘tHÃ_‡Yre§?Fžï†üÜóöÜ4pìQímKVƒ¾ô,ÙÎ!Ý%$bMyŸÞS -Þ(7…Úó/>Õ3n&nÁgziÜáj÷yÛ]襵­*ÍNt—4x!Ëø L“áè¾ïi¢tŽ·`{˜w¤rŸÇi~ïãD÷f]XOuîºÒùð‰U3ÅãR´×ÄÁg‰dàüå<Öö?ñªÈwµÔ4"!‘Ê Ü}½” ŒÉìf“UžR¯WÍ3¶õ_pGy1ë‘ÿNË'F†”gÞpxFOHt)]]ðÃASãkÀßWñLCˆÀG"£[͆{Ìϼ O¢Óšowè*„yÓe8±«Îðõ{´ ŠfOæ‹þÛ˜áN0s«óžñì=0húJÛu¾¤ß4:ÓDæ´Çø9>ãÛl ‘á-ŒÖ¦Æ/drw#r¤NëNò)t1ó«úÕd€iªE÷ÃÄñ½ð‰£¦9ŒTPÔÈ–Hâ¬$ÊþxL¸sóxɪlc¢Ë8Y-‘ T‹òi#Nú»÷p`V’kkV…´;éùOI·Ò¨ `¸…>6 ËJ•ÇjjÓ¿_œ€O'žo|!Ý!§ÁsÕ¼5¥Z¸ bq1¹^]vÍ*©uáˆ2©Œ7ôF«ž¸Ù´áÌè%(µ¢–¥RM-´^OßÔ‘º‰`cjß.“™÷Ôz˜T%Ï4UgŽ&ÒåwkÌ÷s‡ßxn) tùú(iï‡g÷ÐÙöùêÕTîsØòl ÌýYƒpyi-Dö6,}ßS¤“Þ•?¦¦‰šw€|¤ ÚFª¬½Aâ~ë—‹·>q­ÍÒÒÍ’*eYYÊy·H•È‹q”5ˆý°E ¬ =èÈl:$•³Õ8u…| ÙóZ¹¹ö“ø 1-½çlê÷_VHïe'‰î»‘ð”æÕ?%¾!hÂÃ:%ý‚õþƒ=!‡h_ÅÚ_{YŽYì1jiaÿÓá[¢ Ê,¢x+A…xb.j3Ëy¶tn…nÛÉYn>Ô^ÞΊ’Cã¦izêÈU]¹p$R½º‘fà2RÄŒµÕ<ÁL¥BGEÿ«›âL:ä%ó‡EX Œp@³ðΉÉ74î:ˆ)kùpHŸ>îPÜ3[.åâÕ¦@ÅŸc,…>43B˜¹~ I—Xì¤5gÈ(+A.As.ÆmK°¨‹R[-¢å‰K¶Y}äöŒ²œuä¶ó'–Ë›c½8" Òi//ýÔ¿p˶Gé úͱ‚c3—©­4å¶ÁºúvOëû¦¦Eg˜žÈÅòý¢}§Y3†¸èÀÞ­¶\wéf9:¥æ?;v"å§@/4Ã4‰^¸œícé´çŒï«[Fò÷¡Ÿ Ø!!ª&Ê™9í7÷ËéÍ šó†`ð C"’†2Ľl‰EqŠˆººÓ;'NÜŽ=ÿ÷Q2aS"G¨W ‚4Å·«¨¦XìéãUy¹:ê%OwB°dÄyÛMwÑ~ª5½}ïZTÐPr ëÈ)ja9fgm •ŸdkâŸÍºp -RÊ l™ÚÆñD_âRÄ/ßTíøóü§¾ö@¼õuoÇ2 £o¨øùBd]Öç‰s¿^³¤9"—k‡b“¡­î¹SÊ:GWB##ŒVS£¿Ÿ(ʽÎhiìRq^IopP¡jlbÖñ$Þ+¦0u–#Åärpg]¿?‘?€˜â,µnøq;ƒ©%M}ÈïÕ¯jÿãWvD ˜dçA‡ê+(¢ÌT´À&3ЭÚñ(äã6à×®Ç -¡'èQ§üù'<Å6 íq\S2:lT×=ƒeX•Ó!ùðà[ÌЗ’ý9 TÂ{ ->Íj5ÃxBÄ’Ú¤h®KÝ0kf¹5^Y¡ÙpSi}C(Óx“¿´$1n¤³‡F¤¬©°h? -x #«’è©|,â¼Ò´ZاâÔѧÀU#Ö¦Ô‚ž¿¥Ì𸴳„š °l]Tâ…c‰Ñ™ mG»èçR;Mê¹.Fp³“žHYÖO~5RüÚHOõ6hÆ]š?«ð„€Ö¹_rZroUEš_LkGê—ÿ_mÎJ¸,ŸùÍ¢ÎJÄ¥ýò5WêÀ9ÛzØqeÖŸLB3ªž¢Ö7ïuþÔ çÙ±C£æ“òJ=Û‘ÝÂñg»¦X]ϵ;÷!.)3Ý°‚ -ú*¹•ºƒ‚]B˜g.‡ §{t«÷Z­:%uÉi@Ü8G>˜+¯\iµ¢P8ì?áðÌÇõ9—bѼ™N”¶›|4:hùYî ÃV²WQ—”jåǹb>Ô%ÇR`ǺŠZGfîk‡Ÿ_[( -G¢ùô"©ÛÕÏÐ9“8Ëã©À°»˜êÓµ­«¸0Æ…¥ßª°1N4Ä’SDU—„íʾV0^ñ¾æM/þ*¥  ÄÈ›­ý2wš$’ÜŠ ³;î±ÚÑU{Û„Cþv*È©è·(÷Yуe´–¸’ľ+˜¦‘ÀUëÜêrjá¹êtý;C¡xÈoš—B8õú, º^ -írÄx¿9"~/6ǸxLɳŠaEçf³“¢3Xºå/í;'$cÐ¥l¦¡…?ÚxŽG ÔŒ›TÂ=o}å}˜R¹Ïò@€®¢¾×´ƒC¡Ý9@ë:ºäš0 G½gÌŒ ’ÎùÒ«qă*ÜI5fn2¶˜@ﻹp­bÕjÐækÎÕ··û^äßåFVÕ™ôh">‰ Èé~þŸ0™‚4¯…JŽÀòqsSûì@’~²NÈz‹Ìl8ï;,Ñá,¡uz›c -ªÖñÍF:¨é(ýÈT„²É%º›ö)$ÅŸ0k$2Rò½Ë«‚«–(6æÍC³ë¾ðå•^‚Ksêí¢ÜCä -¨#絚6kÇoàÕrZý GúKp¯¾X¯O&•ÔȆZ¾lÞûeÞÚû3÷Š¢Ã±îÍLS–¾3âUÚÑ_%.ßYyÁLF¡¬Ë¼a|ÅŠÑU`ÎD£•½kUQe ]A¾;‰æ}^üÚ•`Jò-õÚ’ý­ý+jìfuYƒèOY¸õqe³AÁB¢©ŠþËt‰ÛÔ-¡ (ì¯ÛlêüÑ$oa"i)"MNp¶ŸÑ…՞܌´›¸ª”¢y={·oòÚ% 'Åõ±ýÅ|Ì`Úkˆ¾|s®i–€s­—˜wÜÚA/cW8öx²D±]¸æ7óÁÉ.d+kml«É}à/m­Õ,úJg¾5º¡QÀÑÌ}ÿd Ä&?æV¾Ã•m^Ö’«d:z¼–Pnçµï>¹'Ýlª´y†£Úð>@Rœ£uSþ…øÅjžÈ5"|,ÔfËë•…“¯â`ùåõ¤ -Fœd@kzèb~ôèò±Ë SVtf8ÍÙýhãÝ­’×ëõ‚£ØQÊÜ`·3妕ê´#ñ gWeW8$î$é¥c¶ØØ‚ÀÔœÿXÊ,gÄÓã™y/ïð•ÚH*JD¤~>o0«ƒÉ×·øˆD¡·Ïo¢L|HÇkÙÁí·‹ö.šÒ".[îŸÑÆ3Uºâ¦Q¹{Á¸¬ÉÜfx4/¸ |ÝëëRO*Š¢…@¤Ø[^å#+ "ÌþÃZ# ×ðƒ;8&&¥x!h9¨l7úD“!ZÌšÉòÕÊúЂ!ïñBz’Ûû`aø¶Ã<äKaGzˆi¦b´™uòKsûwu…ø͸]ºâÚVîZž®”»³«’¾Ø†°S<}±Þ -m:sW-y¨Ëá˜Éö?ýp®´p‡uª‚U€0–ádk?;‘­ŸR…G’ëfç"ÖÓÙg^#ëî4x5.ªÞŦw.¸æÑ™uÀH¶¼¤ME­ù¯n=a6.?I÷™[ -Q«Ü)Ád͵·Ãpx’äÎ#G™Œ}SbCÄfÖ8®À?H¶0F§5À#g­±÷äÝl·ÊÒÁšo}äá›D)Dl ³@pÏ¿q¥ý0 úi†áC¦ @ž™zÕ3as·C0Nø«a{«£¥í <¬ZÄ1È“`}ÿ·<ÜáHi7þ…DÈèaë4Œß‚)¢®JâXíá% t¾Çw!-›w¸[·dEc¤ågšª¬È« „Ë»)žÓQÍÌý4Š·[ne_@úÄ_TkϺ©åhô´)Át,hü7ÆaãìË´uCÂqâ#?|/Ü\lZJÉâà¬ñÀ*›róÂdã[h’;‰¥ö(XÝ{¼×³—V«LøÕB¡8‚'ë1N*ǵ@2£>‚Ÿš“ÙRïÁœ(·$k<äNeôu7Bª•Æ>P¿€™2 a<ÿ˜0¹®¯`Ìõ?}’ ±Þ;q0Z¹ÞxÏ=•wŒÆÊÑBQJV%˜–á«o9SN °Þ„ªtCÓ < -x—#уšêúA)Á#aÞ8¿5.ÈAÝè ofºéó:Åà߀ŠQbû¹¹ö.:>•5ýÁ€qK`ãÌQ²=”¯egA}Yï6ÿ7ôJ#ñ\ÅQR¤¾éáEº¹ù” ÑçŒ:B€òë#˜}ygëé[ÐýÈ=ÕÔÆFÆý·5m!%~ãŠAÏ©Ã6›“0î,4u©õ¹b9‚ž¦&[“—Ð-NôÑu<Û·®> Q¿ôÑ):΄…*óƒ×dÈ +•Í)[BGÉ„³Ÿ¹Ð x€çÚ±cœ¢¢m]àu®`7>eCëœ÷L'0bÐtä4^Û%fTcC9S l| ÀT ËP​&à8á9óbKú°uŠ Ïv×(MÉí j5‘£ë¢s ”uªqc(%kÌm`°wÅ¢;ºÀÒ’î ±¶¯PÀÒø]í¢¨¥z·ò³ˆÒ§½Ë/Xè|Ï8CF— ù:L{ÅÿÃ| òÞØ==§®AEÉá õ/;OUúûV‡UÆ¢–#…( Þ.FýxÈ+ˆã4[¡` 6è ¨$oùnx«ŒÊ,g Пf¾A¼¨9 ÷¼ÁÆ¿ç<ºéHÛÚ®¬É¢Ij^'Ñðém†Ð¢ú¿¿| -ñO²XÃmRæƒ ƒÿ\ž®.2óÅ.P‚¢3·Ù ;ÇŽ‘¹™¸GÀ§¦Ÿý=áoì0ˆ ‹ã³BΪ"êG¹dýÏÌöÂM–jêiã i·^þ\a£-›lU2Óh„$°¤²Ö¹O ÿ²©ªK†Âl;Ê¢ ‰å³$èšÐ‰haO]mÜnøj˜ñµÑ^ÿn 44ç˜4¡J§ýZo¶yÛ³ìUá÷VC&E5%Ð!eøÈ‚[öüt²b²œ¡mºÐ¢¿š÷šk‡bÌéÐζ¯ü?w×ß@jm8¨óAÿN(ˆµlÓz)i•Í˜Ã^PÛâÔx’ƒ -ÅànüeÕuv·JÐB—`0EpgôæÙ‡J8P\Ifù‚#¹ïsú¼†‹Y _¸?…F‘nÖ·!žlrHˆü„ÀÿÛäRäd vvçUMÎt—õ2óØyÍ& í rÆ€~³ÄÎÂÛÏRš]°_Šæø¶úêh¨ÜC•î~°îȾÆùCîPÿ®«þó~Ót¾¬û@óšz ‹0t¶œ´£FÐjo«^»k¼ Î/rxk„¸¨ŠªzUuÑÁtÄt¤¸;eBÕ¯‚uG0@nõ˜T¸Ã…›‰] G«¢–sí¼8“ºA¾!·Zu–*Ù™=ŠIy9Èïh²½´Úšï!9‡ÃpÊÌ}WéoÃû¹Œš n'ó½"\°§| S›´‚¨¥G…íSxÔÝWÀùJ¡–Ïã.ò–Aöª±ƒÐ)ÿUC¬8Õ3&Yz:ð.¡´a&G²Z[vîG°Í®ÎE¶È> -p)×ÅV=A&Ä‘=/¶¯J{׊²y¤E#%²ø”œÂˆDwÕÌÂm—ÙY }EviÀWÀÊØkÔ½³exÆMOø‘WûA‡3Ù2Ò·`Wµš^¹µBTWdGϯ­nÊ”~Ò]™Kùã†5EôD½·M?¤õ퀧¬ -ž¡ZVP ób0˘¨:/ò³¹xª#Gýgw2eÀÈê„lÂu¼…`â3Ž‰|ód¸øBŠ”EŽüÄV‰Ú|›ß°ÁÿôW?Îh;ÐÖ ^¯û•¬ŒÖÑ7ƒ£4ýRºÝP:%pÔ¹RO ’ÄBબ§¯½GÐcˆ—­¬ ›ü–a>c¨ÕV¿ßs Ué‘_ÙæÖ¤ÜgüëµÕ屚ÕfEªiÃ…Ä~´Ùt²I[F˜z4æ´ñ"ç…l¯â¸vxaÍÌþ>«ŸÌŠÞ¡ŸeÙXŸœŽÞ Òصp6”×z‚˜¤#ÕÉs“¦=Ö6Ÿ67lúÛÁ¼ô„{2€€ÇŒB~L•á'^Ãà~ŒÝK“ƒH×ú S?·Õ’âŠAïúÆ µŸ™–ªq‰Ö‚f>§²ã¥îÜ@K¹mQLiHe?™æ ý‡Ê=˜º‰´Ðpw›à›HÃA4EJ(@:®$1àg³¸­ˆh€·ÏB¿°‹‚5Œ-0í„õ"÷µZÿ*CåR„-ê– ÌüwÜ’ ÿ õˆÌ¶{Š[@ŸjÂJ4†*Ò”Øq¯=,Š/kæêŘ<0L‡à³,Oâ*àóó`ŸWÑÂwÔ8¡J“¸ýø3Wé ~áöƒîLˆ‡©€=0/PFyéL¥]‰š BÄÖKJ»þÔºÀI¥ýGÒeú¸ -Aå4z´.Q’ÝÍ'&I瘕ù¿ ãD±gùç.Ï3! ™&Ä·‰²âLÞíQ-H(óZKÈ}ZåÈ1Ðb÷\ we&Y«~ë:1dˆŠ@èRU:a LÞjźü¶^sWâQé7WãÝ,—%lޤǡ)º¸6l†Ä„f^¹3ÀTФåÜEÅUG‡h$#¤ì);@XIq -· Ó5™+¾¼ˆISŽïºgˆ¨Z5Ñ÷t”dÚ¶i ä‹Íèµ7&HAPiä€P?òzïõ³de"bºÎ,ÙÌÑý$Ö´. Á¦h˜­ µFoîXf¸:V˜Wc›þ¦h+Bü()*6íF%M€ñ=øGàs0Ôª}þ{zÿåuA¢_˜;+c(a#·§…¦4ÉX¼¥mˆ¹qÄ7K53~Ûã…æèÝ&3†G#ÎÈ*êæÅ6lr:AX9BxC’¯ÁDà{p} [Ÿc 3oºh3¦.0¨¬“DÍ9´Kj\RäÌÃÞýôÒºILðÌìéƒSM’Ÿù?ý} -x94+¤ Ø] ¡|qÙ Ø‚úÁ,Bz]opcK/¢Yè €ÙjÎmŸ„ Û(†`e€ÑɳÛÓÁy…ã%_Ú^¬ Æ8( ;¤ÎaØUàkV~ì™V8‚‹gZæD`Õ%fhò†9¯÷ÅCx ŽËé÷YRR:ö* ÝÙÖQÿ‘¼| mÇ”m–Q–•´œ»Na7ì, -/T‰Ê:䜠¶}£^*Õã“08þ¤Šž YíºP7kîµ:þ -ÃRíæÚíHþ«ópÞØ`ÉÌ?ÿ¡›¯‰ÊeÉT]iIn“Ö“ênüwÀî.®-µÊˆ–ÿÒ¨*·ëÊÓÞ¥do¸FÕž“d+)´í%ôw!?Ñ9– þ’{Å -¼Éj.Li8”ò_&ÓL8ŘØbó¦ ˜r½&kŽø#=ØÑú¸Øï‰í3ÜA7ŽXuÜÝYýlb›‰w#²(×ðcF×dµ0ÒjKåžOD~2\=#–E¼,óàφHÒDsîÐMá~´j~jg§¡¬++ÀŒ8œæŒ¿W'FÓ - ‚©zmR.ž"ý12æ>T”[ -kËVŸv¾ÕýRñä Ù,2¤S™k"<ŒçèdµUÓÞÝÔöâø£m¸u/ô?•EËÇk‘ï“w*å8Èt´$¼ÜPœ¥ÁáRÓéJö,éÂúŒÅ±ÐFCÉ )Ôyÿ·  ÷–Õë|6š¬ +VlG Ò7œd¨W=QŸÎìÃ>±aÎh˜D~¾~Ë@~+@Oc®õ&¦Ï8/mSû–` y3B{å8ÄôÖ†'“ -¯…SÒç’ç7<å?<E4„e®Ù‘;ÄžÙFNõ­³C+zkˆXS`„¯äý²¦v… 䮓]8çJ›îȵ|b¬E›~~zËš¢©ÅP}“AE‡g2©H§6„=Çå£ÝóKË ]<ÙÔÜCü«\+T†Þ÷Þ’W·â½tì 2ãƒINµ‡9Ǽ]3›c ¬(r4„ÿšÝJdCîÃ=sð±R[êúÓÀ`'Á{ŽçÔÅ·œÁ@ƒà¼ÊS`\Ée[Ùk¢¶ÌSÁðʼn¡ÎŽ“Ó·ä$C²ù–§ EiÊ3oFû îØ/oò®Ë3gfÙl©3Kúg c"Ì#÷ÜÑHÿüä'’ e¤¨ÒLµbdž«6 Ò˜\M˜×@Øã1^c =uÿ¾TGXÆ–˜¢:œ¡œç¹µ™'\©M«X›É:Î9ñ+.õÂÐŒ³¡«#Å•u©!ûSÂé+§Âü64ì|'~q£’QJ[VŠ‹vÇxa°PøÁ_tĆê=Ò„ƒ=Ãü üªWãßêú¯×T²îÀÇŠ;Ä¡æø’'ë¬(/…=E’˜çK eÚ(õÜ5äI<îY˜º4 ™³­LmÒÍÍ¡Bœ^–HüLº¼·ËDNßß$XÄñ%î%j|iekDÆô'þfB/[)c ãÕRXêòZOƒjo±màü¯ÈˆcaaOáŶ¨ -¼B—÷4ý•€«)ÄxúTU¢LâX¨x.ÕÀ³ôÐ_ä³ÑÚ|0ÃU”Ÿ÷“;™Ülý€ü˜­ÔF@4Ê׿׹„>17=ÜÌf[®ÌÌ}Çû”éÖH+fÈj³«e»Ú¾ßA¾î=¢½Tmå¯ß•Rɠߢ>LýT–lò7J.µ¨"ź Ìp-“Õ_R¸ÆRÜIi|p”¬1™h›;0†fH·W8¥È­Ø©we{ù3w -/Ý“8¿&;!}©½—yo̬HÙR³V×·¶¸„ÿ2Óœìµ2ð]ÊèþEŠÖܺ.Þe%VÿIM°#T%$„š°Ú'¥œ¥Z‡{# Yûzé²01õb¥¶Žø§‚Ÿv¨‹œ†~·ƒnk^o<à4|óä脹—ÿË S¦™îŽ= ÌNÐn>]àöpÕn+‡\`7 †ÒßW_ϯÜå‚c" éÓDé3g¥Ì†¬ˆsÿ•ô5›ò”šî“‘Åâî£`¡‘oÿ˜Fúcú]±j7ìâ…nM…Ðê Å}]Y£h…||5aü,3(È´jiÌqâ×fnuc„؉µLÉîUÄYìù«TPc%e$œ7@äˆH§¬b“Ë»¢Ë~¸ñêïÑkå¬ÇÍ"Då§@_BúQó›Æ#Vˆn›'¯±:~”¯ õ©ë%aœmÇÄÆ̉áš~Ô¬Ki}òlF^lKJÿ³óÚ÷GÞŽ çݪ-þxHÞCFݪ1…ˆäþkà`óÞ¼´å“¸xÞÛMêÅ ºzKù[.”ò¸=¶ÉÙô´¨Î0½ÖíŒ@(‹i©ç¦ v0|[®d&˜*w«8õ‚¾Ù¯“?\Ï’lo*Ö¥™àDìŪ°ÖV‹ö¹ƒïºFD¯‚÷£sGÌêNòyævnGsxÑ XݦJ&%L½MK=á2g¸÷¤Å–z»ó¹ÃV‰byü”îâ ‘0T©Ê@ó¥¶ÂÛK™PÚ“£‘ -,TEáøÕ×Íyà%ÃÕGC£0q踵j¨aÔÛ‚-Þ¸Á”UæIƒö–QMx±Etá\wñ»á´²¦bNtÚPÊs¿‡_K¤rÐþ“õQõܱ‚*ÚŽ®Â|¢ïè÷ô’«:¾_Xç-ÙÊáˆ:zt¢¶™;¢£ Àå$%”eÝá< ÷îìñÉ5Ó‘üÆÇL"ÏO§ÆîK)Jh–Ö½…¾ErA.Í“¨éL -ŠB 9ß®ÈåÝñ/íO;LŸ»\•MSîaÛ¦Ë+©¼GeÚÓ ¹˜žU½ª,´õí_;Ù 7…ãA+:1£üªWÉà?ñ›,ÊâyÒØ-T2ÜAj´\¿HûyôÚNNhÅÚFDÏ_Ó«¬wGÂl#Ηƒc%{ýãm}o L䡹r{Hs#|;C›½´ì¹Ín±«!<ƒà/îûLljÖEìp¼ªWñ¯[ÓÒAB=ŒÇžzlÿì¡Áô ·Ò$´âe×k:óé摪rΟ1õ@õÏúŸd™ÖÔ¨õè®8ñ:ç_ŒQzÚ2rµ¨g¨!¨4ò²c³UŒ÷ ©{S+ñî·³V6EI\uŽÞIçäýêS^þû·ÑZþ] Œ²WAøG -zäz³V¾ÙòìÓDA–Ý áâêF1GîMx}Ž¨´iÿ² °ŸFÓ×›ò¯µ³û„')¼œ¾txñÊñuJãt;ã}&ôé–8O7ï°= ú`ÔñýÎþí7ôh¢÷( ø[=¢/ÐÒ¡Vãïê7^È‹X±qfNÖ³"W[ ¶Êù¶K‡"ò'bœéØGWF° Õ@~‘æ¶"sž‚¹4¬„æ¯|?ØàSó!ñúìÈ7`]¤È¸€Í9 ¨9)ìdã– ³öUÙW¦ñ9¿á€“…fÿ‚Ÿ˜b™óï’1nSkŒE†r ˆêµ›1‹³Ôc sû)ºf®ÛˆÝ>í>=áàNmÙÝÝÊ7«Ô$”š% 6¹!«#¥„îÒÏ)ø¶÷Á‹~¥Ä. êܦÒå%iìè± W…5€V0-Ík~¤T»ö÷Gö`‹p»šÄ -ú¾.’T<ùjYÙåBs~Ê•B)¹gˆ˜t2Èà¿ÆD訒…ÊuJH´/ß&ÝiÎDÂw’;,zè“E«¡m'mŒÙ=Q´ÕTo‘ SÔc'ÔÝ~«"L<J1܆‘€vŽb-®[‰?›;ªá¡—GÛ!E{ -endstream -endobj -2279 0 obj +7ùX/3²á˜“B”å**%?ß"LÊ´x¯i`Œ=ýõì’|ny—*Ñ NŠIbƒø”(7Ê™KJ~±#„‚_怲þòšµêÍ×S¥÷°PÀç+[¾ùoí8šÄŸ‘ßsdeÑsôû¡mîsçLVO×g¶Us@²ñ)ÅükÂ-*.ßö9§ÿà˜—Œ'„Àö à|¹µØÞ^ "E19¦@*D¼Œ­pDiÙ‘‹§¤4mÏÉF9A&íoŸû_ÇÇ„:Ä–Çî…ÛTõ2WñC±}Öuºl7ÓQÔ¨‰áå}h?}÷ZFŒæš ¥â”amô5ß…Úõ)㶛‰/—ˆ­C¦òg5,õ;„fP™ª‰l‡îÅAV‚2Î÷7?çS®Uq/.\_áÆÔH·ê €óè[w’A|ýƒæÒ_ÃK’¡ø5¼(p8dÊ9I4ËKø€9—¿ ¥ÐE79=¡XêüœàNzê,~ÁÐÅHÇåÂ9rŽ"£`Ù¢  úk‘–ai³ž„îzxnµžò4·#°6QU\svBºÀ=¤r­ +ʯÀÕ¹Cyp#\€[ÛëäɨÄ0U•õ¢¾Èœ):ÖË$C=;ÉgºKíøY,‡jƒÏHä¢÷é%Xå|>ØýXžÂCŠ}Óy™rFLçZ«v˜ßzÐ%òE‘åÂõ˜ÀôÍrß‚C›»ÃH)ï´`@—ëêÐêÝAÿ•èžBÓÀ¨Ü0‚ÓVž­|‹:øüªåÈ>Š?˜ +hjÛt EÐË{ëˆWöç?´ãÔ¨$4šV=b‹Å¸h*¶Oð‘]&¥&íi’¹ b•ë•#oÜýÄüÔ±itC©ŸúD‘ò¸]1ú>Ûå¸.®-T°{œü¹X¶z^äžÚšX]òÉjZáG0è· Œàf‘î Ú ©›QDWn®*Ry£Ê£àŽœyTµF:†±b;ÕC?eQÞ*§p4¦@“Ã<á0`>­…È_µPɵŽ„Q€-H!¨+Š$ÓfÙ²Ût΋qhxlî(µKëƃ€ã1³ÊÖ·§'t.붮L k…ª„æ`øýé9±¡úךWß½”¤üÁÖBÛ ¯¶í0)wææ(DZ!+6?šÌߨsvµ8«ôxÓÝ0´©n§¯÷(›a?©+Ô<ÿöЮCÆ7dÝ—„bÃF @¦ßÐf}ÄÉÑœGÇSK|¶gD?Œmnl¸˜€h&p²ˆÊ^R“³«¥òRñ‚æÆ<ûσו؀¤ó«»TÂÉ•Î󸦧SÁBS–IÈYdtðå}Í=èów% +j¿ï|Í”}lþè£,&ÆþwÀæ•×63 +G‡¹]z9ã½Hn¬ƒH¬•_F@óHDœèQÄsc!ÖßÎ 9+ÐÌ@%’6*„¦­NE9&`ï¤þ‰-¦ÈÇÁå3ÞK.3y¿ÿ³Ä¢Ôݚأäø[iB…ÄS'™‡Ñk\dƒÅ/'·£w H¾APË•Ç¢q_÷ˆIÆ»ý šÈ°ú|ÔÕétlû*þ$ëXU½1·“ä\è7•õJ‚t Ú8çUÝók8¼H~¢Ó]3Sk?ɪ.vñ)&J™‡]<Á£ðAkoU|8ŒÇc·°æÁ³È~™-æÞB†&Ý7QÆûŽ/(`”/,MË–âSߟ"‘ú¦þŒLÍW§¨Éõ“âQêéïs[ûG·âEMY öª=äÝô̈ϵ-^-Õ©¥ŸÐ®…bÔqï" Û=9 ¨u)Êaž1Jg®d™f<ˆ¶²¨ùGp +c ýjZ+½ '3G6 ,îX­œï2_k=PÁlzÚK:“&’aT’ÀF%|¬¹TVÃãrñ&¢*‡" '1‘nБ­nÑÒ×-ŸW¡Ü'Ìÿ„’]ç†úq"0a ƒôÉõÍàAáVÓ‹åÞ5ÜÒMgÞÓÅ­õ.íå~óêÉDÙ¯Žèh¡IgùÚ)_ì +óÝJõ¾º„õ “*Vùp%‡öT¡lÖ1a-Ÿ#Uƒ•@ÂÆ-aˆ Õ–|Õ·ž&)àoÉ^N4üÞ*yn˜`n…KŠ^gEMY ö«êþ‹ŽàÃ’žÀ¥ð¿µ¥ Ø +Z‡LÙ_Ü [òçÐJõòü¦œ7}Þ€×´”¡ò,ËÏøGQŸÝ3“Ÿ(v Š) J²Ì9àÃ!›£qZœÊü÷14Þ> Ä›ãº7¡YS¸A‚–´Å÷eË¥vÁª¸N…}ƒ]ȯ8qV7åk¦Ê˜¨pÁ=¼å BsŠÀ4{ö«°çûŠHn‹½‰&£d„"ŠË¤o]ßCÓÊC›EÌþòL}»»ïŒFnŽq€8ÓÀ+^‚“¾›»¨•ÆåèwLÓá)CS*·–Å“oC¢l$ÄbY.Ö}sqŽåeùÉ® ³ÜÌÁFyÔ‰¸öΫ½ibùÒÚžh¤R„@GžQ“¡˜µ¡ Êä•벶cx´¡dG#ñäL¬=}°d%ü}Z‹Í¡wÁvyä×™B]†Ÿu¨.|²<Ë]Õ¬CÞZÚZûø!Ðgÿ `¦Ž&ìp³›ˆ‚šŸï;UvÆZG­á½ çάN"ú01›Œhø÷Üóž_÷ìÚãˆMØæ–§²@¨6(—Jª«Ç™f©BîLª…¤p¼:JYáo Þ¶â„Ús<¥Û®½‹ZýC¢õÿ¤G h¥œát?—Ñ@(¡ dJru¼‰˜|á*Á´ +¬×Œ]¢·„Èñž² %üì°ûÎeoRUXFÙ“ä‰%õí÷‚qíEE°㦧èü§•D±¢÷VØÊâ5¥Œd߾ʪ¨R%ßù1Ђœ“…ÆÕô‹Á]Ôµ_cLJfrÅg-j„Å4š7yb%íØS7†ÐkDs#©ŽÛ+€6 kþ¿¦6(R +—´‚…Ú‡ÎØ©R f}X«ò–Ç©šŸ`h9Ž ˜Ó +™Sï†iþ‰Ó‘ÊX;š%÷Ã"ûKÕ ”êx=D¶Ì›É¥-ä:*¡s& ¹-Pç—Abt¾§7@VˆÏ’I1¦‹g@E%{ô5‘G?…?㢤;|ÃÛGÌš{øh,˜‹»CÜòAB:»¹ûˆžLDz£”üÿ +K K»ÁØõm\A9`)œˆXs|Uè¤bD•Ëʇ˜;ŽiŸ­Äž ®qOãE¯ŽAO»8ÿÐS8˜°ð*~ßµ-ÔÈë™»(‰E£9ÔCVb6M=8¼ðdE¨x8¢TŸ²UY”ì…WQ“&¡{çy¡ã§ +´‘ü¼ÖWuý̯‘ú¹#áî•ÃZD!l“?“³#4Mœ?PÕFi»¾YÓYÁˆøÖõÖÖú¡+%kWÌzSÜ¥º‡áŽO°+ênBëOïø)j¼ÃÚZ=LÌ°÷¥k)·úÊr‚ŸÎ¬C +Tª±ÇyOêÖÆoO¼Þï%p%0PBnü¨ƒ®dût°¨Çj¦É˜É&ðd.ôìri[­Ô×£+e"Ðþø³Ò)£¤:˜v +P=ÖΆm5P>cìNˆ9–G<B(8EU‚E†FßKYµxhYf"Bäû‰^äúåá{ÕÁþÿ8/§¹°´`sÔöf\`šõÈõ†Hq”|c¿\jöÀL7/R Ì4ˆÎPGGo 4þqѯnÑ2¢‡:Îýö*7ÁNôþAo³¹ÄT½Wtªû%”5@úÂz'µ–dèVíÞ) ÔývÛ¤x@R•>PœÖßO*ˆ¶k›ÌòZÙlŽjÏ«V`šlȃ¿p\næ ¢©bÉnD L³r6 P†]·Ä-ö%įÉATà·9‘Eºz¹ÕwTÖC¨é×÷6Óè.4‰â&Üè¦fÝwž”´ôÇ·,sO×%55BFó;./MüêÈqÔn§<ŠìÔ£þN îóó‡Õ‰—’‡Vk ¥€ñ‡+ dŒI°D^M‘ráˆpCÕ3“_”ò¥Š©9EˆˆóP-%…ÅðËŠÃ,ªSm‘%íæ—.õGjKjÙ¼‰c7.¢dÜt\yp¡ÌÉó’z'ÉôóFõ…¤‰jÝâä7Ü­©—Öí+ö ÀZÁ3ë⾃#ú/ÿŸ†HKjài2ˆg+ÌÍ~ h†RuìÞè}Ý<Õ'10cm‹gFÓ&}ÕÐËo6é>dæL“Mß%ÐÇÜTp¹ •DfÇ,oÓÞjÞ ë£ú£ +é´ƒ9Þè\æŰ˨ê¦1)¬óªwC³]•rùüà·Ø«ÜÉeB€^4N¶=U‹W!YyúVÖAp +Êô»DŸ¾A‹Aö›À19Yð[36”yŸ#ë)“SÍÉ›©Î-¢y"Š®E{çå_vúNÃ'5¤R‹"à¹o½í°·Ø®™%É/0ä·âK?¡ŽbºFv† ,º”$ \Ÿ–ÿz¨ê:û_+ðªÊ°Ç9gºEªÞêÄ2€H±†ùØ°»Ç¹Æ5»þe=ÃôŽ2/I/âÔi<Ý¥’oMfC|õš‚gsjF,ãi£9vh“ÏLmç^†¦[åŒç÷Û” uj-qšá,S»=¾òoÆÌ𧅇á%kìb Âá»–L‹èF‘iþ°£62—•ÛWšÈ‰óOû½ÚÏkCdOó^XF€‡ÖÅã <â{‘=þˆÏÞÿ”™ĶŸPöbžìhB·”Gühê|WJjywj…~üôßÆÿÂ`W¿ÄÐ +̲ˆ<#„În–>åëiö›­ @ûf7 é'6Ÿ€:Oó׃ ÏW!™÷FEÀÙ´Û©ec?]̓p2YÇÉëJè=¶äßTo¼‘Joð1mßÞL#±j”@­öºVζÐy¾‰•­U£?>e©JÁ9c¨N½D/£EáÙVá%IpÇCˆâR„Çʦå¶äd"_$ìÄèÆ<¥öÌ5qÑ +üv|=¬EäØó»žÇaðI Ó̉Œ`,y\ìB`j‚–Mâ[øL"œb挧Ì+¢Ê}0”xj‹’˜ £æȈ‰¤<ÝâbW:‚ë5ùnU ß›•Ø.–„­¾þ@Öï(ȱCàMü|QCµðç‘&øzã‹ßrF@ß¿µ¹>ú¦,!´kSþÉù„C’žqãaJ½ +#<Ü ŠãT­ïÑA©®†DbèⳫðàGËw,'b¡gk¶ÏnÔ>—m꧇úN"OŒýywé;ë®Öc²/ x¸DÃr¯Ïn´;^ÙŒm4Ë>€˜J!“o8Œà¬­ÃM8ó{SqsôN=9¬èhDš¨Y©uL­˜ 4zHÈð†ƒi£,sejE¸4u)‘ +zÉžCÍžð•z²Ú(« ŸdKåèéwsgÞÐïhÈÿ¼kOß7üLl~%qšW&N…Žá°®»*ºÂ¹ +QM—”U<Ã8ë=§e;ìozÆ‚ïÃ&3@Àúiûß:±”tÛ°«5Ÿ"ƒ¥*G9a¥^&ñØ´DqžÆvð«àõ/-PKíBG+tèöáµAâçí•_t•m|›3ßcn5öÑ—É¿T±€.û½oÒÙ —x‚©¡èûÜc{.¦á Ë |Ñ}”ØVD±îó1‹ƒ¶X¼OIKÓ]èR#§~´=ÔmàP¤H‰ûn'Âû™¹#¶E\µG·qððç\M¤Û½Ùì¯*Pt(?îã }=7pÿÃ2  ×Åa¶p¢ Þer.d^’„¯\\´øë˜Dú¾˜_’+ +è I¸ºÝQ ‚&?íÐ;>jé°mê»ÂÑ2;#™Dü'[j$áKƒÃd%•‡â)[ÔtˆqÕ£I7 +£öV´[]Xã»pæNíï ¢G„¡Û”]£É1 ‘ëÝ<¼þ4šígþ¶Y>ì¼™q“¾À·†9 þSú¤ÍžŒw’sÔwUʶÿö}ù̧/ŸÇUÄy?ºé1&mûæ­IÖ±ñŒÔÆeÔʪmêÃ}˜(ÄËÄg™Bdþ4…^JÓû½þfîn£æèû1:”l<=bj&siË4«3, =håH3dßÖ/quz†€´¤‡2vOé=«PPÓŽéšJhªÏ JôÊ,¹jÔHvÓý+ +!çÕg}°æLvPßoÜùQEYÔ|2@°Ô£ +8-íZõ…É8¨辦bµ¼íp¨|ÐÔy‹—Ö+³=qçRê0¨î1]Oß=+Rí©DoÛò¦Ä ŠNç¯ï_úIÕœ„BÌH[,d µ¹ÌÊPa ’k_UÉË(UÕÐOˆ>à^Xyðz{‘ý AH`ƒ-d¶¾ w5Æ'Îð$‰Z”7ÂÉ4˜ËI¢¦âz¶¢ýÎ•Ï +¾Ukïªa¢@× ‚Å_Ü/oùOžo=Â]nÂhåÄæLºR +~!'½ ÷Mð§Ñé{ªßƇ‘î3L±¦"Y@¤Ñ1vd›Ly\­ëRÓÎ7âö=4û½É¦J¸Â~ò‚|ì<Ä9öY€»ð)üžy/cÆ·ÿK pª:BìÁb=25<×hJú”…}ðÄ|£Ž):üh¬öPøÞÐäÑù¼ñ̦¤E§\’«´A²o3ß%ãKû¡›(¹Šæ) †M¿È\@.›ÜÀÄd¯±xúWʵV¥¤5úd}ã\2ç*âNX[„SÐ]^t߬ «­~9oËÀZ mÅBûS-£k9xÅ}EˆÛIWÝ(mEglŸÌœ‰LýˆÎ T$Í·b›à„wì¥ÞJÌøŽ¨"ÐŽ#±ÝȉÐ!Õü:ry¤5 +¬Ã뚟IÁØ&ºÀ¶ºÂ˜ƒÝ0m]DÀÙ½¹9"Y$¡Õ°júûJ ‡0óÉ’,ÁsO¦ŠïÄIÖòÅ€7´ÏÓÇzPßÈLªý2ªqc0öŒ1@‹ ÎfõH˜s‰[Ä!T¨q–?Î/­Ïžbx&è;êNHÀxö=LXD˜Â!ïêæµï‚Ö^S]µ´ ;CåÂz'µ–dèVíÞ) ÔýuÒ¹ƒêã— ªÔ:ÚîóÄC^1ð<¢ï•LªÙ½Â[´è:G-±ù¶^Ž9([ͶЇMšu €±Âê6"wÇV*çÏŽHí/A´øš%ƒP͹pVù|ÌB Ê¡ ßAKôá¸&ÞŸ&ßY²™[ZâÎ2¶Þ¥í‰FUç°`•Cï'¸±Fcã>¦Ž³­­¼V·n…·¶¥pUõ^LÏw Yk"ÈÖ +g6½¯Ø‘q³¦²€­=†´·“7EÖ†nÞ€…,]µo^ï?JÒû~ ЇYù?xóNØAý^0STÜsÍèù¸\ÿ!¹ó[(ï†Â10ÓÆ#%¢ÍýÁÞöÓZXÖZŽmýX=3c#!P\°Îéû~^-ߺÚÐ J+Rú +ºq| â‡B…&e;¶š",ha½¼Ëõ±z©ò¨ s/ Úùê˜!EL·Y³Ø)!«K’xæRÂó ¾›j"½VÁg f&ÿS-Ô:> vg³¨ä’1ß&>ÂŬ¼¿O‹h!Pú0$Cu¢€œÅ탢ޱ,€;²yĦkh™d¸~Ì#è?5û pØmtØÕ=Ðô¨µw:Ìß‘ämÇ$T&¥{H̃Ÿ]´lëFø{0?K6[¶gTÛŒ9†íÚ@ê—ºFÇ:×|º…ž/µÉî:-(Ò´v³º$ÚU°À]3…5Íw"Ñ懞[œ«šË‡µ®¥a~©3çÿ‰>2áT¸1w7ö:ÅÀÁõ×Á9®"ù8¥H’‰B¨Väû±è;È„½­.xdòå!­ÇÀiÄkF_ø°ÁÆ1<ðÍ)¬‘ÒÓtsB€­±ìK/2Þô à‚µD´¯q'êm[õ sS ˆ^‚êðù¯©À‡ô:Ð{þVýnÍ;N«g‹#§ëÊù€—†×3µQëô0Ê„9 «Á%5—ý„—Ó»ŽŸVT³ŠRÉ4œ6/Õ•¤Œr·P-®z+¢ÚáIöH5#ˆßÚí®>é(E4õçhà`D¶ã¯"K`)í/* X ÈÿÖ·Ñ<wå™åÇËÐús„»EÜ{ +²¸¹\çÃæáV‰¾Ó]î0½N¶¥zKWBe¦y3M^¼°sÿif½“ Õƒ¡—ÀÃmM5¯OuÔ§s•£Ö† <³ëÙ%}и2ËB JXAëÿ€ÁÊ>b΢‹nJÝg4¡X¦ÇÈRvY%ÜÒ¶N#F:3ƒ"f<.þé,ø?C™Âìu^!Îy?>yAÌëÑß Î0F›‰®u"oà âh,ε˜Üj%[æH::¡;>Îà@Ú( Óñ£E$Œn€æqÜ– ñ À)¿âZÆ“ÒõŽã[Äß}ï–Ò}=o¼%"­¥v×S©ä&™.Ö¼‹ïî­M~kFíFS ûÍ]PÑX\˜t0•l´1£û)nòÒÑà+ž)´üæ‹6Þ¯§kòË + ‹#-šž$jOËŸß/ñ6źl5ûfŸ? ‚ôb“’¯‘hIyM˜C}k¾LŽìt¶Ù»}lñ‡slÜËâÄYœþ¦¨w‰º˜O\YW†C˜Â“zò±î¥ˆ2Ý|õÁâ‘g;‘'Ö'E@Gn;»©k?ø/¢Fסv¡U³6Æ¡|Bx—¿“Ín Þ{ö’‰\„”¦X©XZÙ[7Áû +ÿä Q£¾¤IaF…µ#Q^ÁXˆN&¦îlú^ê%ôsÁJÔÕ"YS £&; ²,^Se.OJ{\äÀT µË*î£5µ½âë„‚5¬Öt>i,RåþQT<^BDœ6Ý»yžW:TèÁ”ÛCe¢$É<lìr†/Hð…H)lÁšÝ"üézÏúòì°eð™îe·‘Æ>Ư@em“ÖºQ ?àëƒ}¿ÿ¯;ˆ4«8µ³½É¶r+쥨¡q¤¤Ì +ŽhrSÚóWum­Â ¢kËŒ ŠÊlŽ”öÛ\6É ?:Nµ÷`ïv+" ¥è¡g\dƒÅ/'·£w H¾APË•Ãhtºèë1éÞ<à…OtšW5îõ:—âãžh¸4¿q]ƒŽVJ£o@{6NÅ–Ê‘@»¡ÎŽIþÇꑨM—§ÛNk¶VY#§r«ÒñÉxãMÑk¸®IŒ}X1+TQìü§ëŒ”Ç&ì*Í³ä ¾ýVô¢ëeŸS“òútòTNäþÖܦiÙ!ò=äGŠ-¡‘]üúÃ8°>zöï'_ Ó*³Óƒ~õ‚Rçÿþ[&¡òh¬8Gk^Äèuoýpš«R"Ï€ŽïaJAá\ÕxÁäI…?©¶Ô,Ic|ßéÐÕkX€;†A%¶ü¥«[È“zÙÿH˜Ùph›b×óîë`¦UJ,îœ"V9É&’kqÒò©ñê­\¾­~X?›Áܱê;§Ï€ÂZ?PPÞ¤™V<†R<ÉOA|¥ŒÊá{Œ˜+ƒ•±øíC[à~\üI¹Ëëí¦ƒú"¦€—D£Qæ2ãƒUænÔû-´Þ…8"ÆÞ äQÀ¾Ð˜”üz\óJº‹¸žÉ({7)r9ûCcÀ”n·îÍù¼Þ‹n¶‡>©{HO©™èíj1Zy&S"ä…J'Lty„Eº‚ðÇÍJ·Ìàáb‰j‰ÅT.¼B@ÍÄ£©.ØöHþ"…㋲±·e~{)€=.7符j²y7Š?<ŸPOK©]Ôý:´ÃŒΫúÄpY¨Ö[t áꕹû¼èØFÚæM—W̨/t°?³¶‚½i8Â,ª}Ã5áÒv>Ïfa9æl÷Òw«¥ªêUªy‚c‚-¤yä'”e¦ËÔ>µµÛ‹rébZóL¢[\þ]W?³Â¿=)Ïúéêð¼¶ÇsG I¯`È`ª„\>éi*“œY¯òÀrGÎR6ë·ñè¡Z¹°œ5išåÀ”k„_?-_ ö+d—öx2‰=bãÔù²™/ºm‘FÓ§A½ÌË~ÁßR}»- ò fzN ]kÅC–"Ðq VuEÌæ@f0k˜®Øè¢È˜˜÷ßá'x># ¼r¸9R„«ß B ¡-Í=‘;ÿŒ€ø*vøJìgØfÏ;£i[eJ»_X‚6˜c¸ì³ê¾çk¶¸}‰ÜîG* ]…¶Ûe_dÙ#Øyá ›,UÛ€‹¤†Ùxå“¥ø9LŽõàÉ2Y÷Þ;ô²µÿÄÈ}TN¡Ü½¶@pÊÐqü7fDµ +Ž”tÂF?^yí HIÄØo%þ`®__O?HbnWBžk×OübW¢àÎÿA§· ¤-?Þž’E”:#bzàÁÃK^k±W*¬ñ>cêN„8Úýnƒ9B÷ß6‘_&›{#]›aß|°4!Åôfwâ6ØH¿Ê·í¿åNK¥ºT=‡6jàc7›,»Eý¦RllY‹»o,IU‚=·ÑÑ.$5cLö˜ÑJ÷lÞØ“1l±OGNlÇÈûøk9ì´Ö0LšÌE +c’5ÆžŠ“ÑÐéD¦ž…%š,?Ù¦£‹³œ *5þ¹ìôx|óΠvÐ;l’¶Áx¹Ïhhp³§–í«sÛ7„ s)OÖ'?a$~›5 [¯îÙV*6‡} Δ¦Ï;môÒL£@(çâ@Åõ¦àM@»ê¬0c°æR¨É§ƒˆÿõ¥2ñ”Å$E€DÓÈ ´ e¿‘›®ƒ÷ÖC_Ƨ¹g/¢=Ÿ‡\vëéay“Õ¾ÀC¹aÅ/@Œ MÞ£l6LÉå=_#÷Ìu-/Ë$uðt ÔO±Ý™F–xveV¬¨ŽÚ¡Á®—é_ùÖ¬iãÀ²]žYÁHcÓHð÷ùc¤¯Ú¢É¶Þ¢·ñ½¶èÏ­ãïÏ Z¡‡éZ_[ÏËO<¿¹òVó +7º7uô.bèö@±_C[裞´TØ[Ä[¨•ªZÚþYžºgòdÝ. jÌv©Y„÷Œ&>wÄ,ÞP!M(å(Êf}b¤Ž)¾}J~Xaº 0ŒvB’]zJPÐ~:\Î㟲‡.G"Ÿà§W6ú¦œ $8-úß*LP‡Ë¹Õ…Vr€Éæ/d©}÷È ™ÐÁ>«€¢z>“zn ៱‡ðè3³Åw…G+Õî(! üäH#Õ^SÞ`¬‰.»™vO|é£ü£ê3_’>Ê㨫„EÜ{¡)«òrÔ̲›°““‘<¼\/:@ïÐߌúcËøŠ¦½PË—‘‡s™™€ _áaÒ­œF}¯4‰÷â'–À$1!OÅzdV=-h+ó +›Af8EQ)Oø¹¼ã‹Æ]ø +9ÝtÜ$:†v\Š vÖxâ’s²*¥Ls¿w«!ŽÁÁ…à¢~ +ÉVÄãd?¾p}Æj z¹šàêS'k¼¤9SV·ªÆ›¯NÖ¯Àü +)º#ôëàÜܾã×\PPǦޱž`r—‰. ¹xÃâÔËéÒ?- #hÏÄáÈ„©s%:¦íS¤—½v‡ÍôÃ}·/ǘҒ'”|ÿ¾în=ëï¿)|K-«ò?Õ¢ñ¦|þÏ5aÏ’=Ýj³Cáž_ì„æòé§Âé3Vëépë’åþr®ýç[~; +¤¦'êé¤æ âÁ"s”ñY‰OžU™r~‡L)§ÀžÃ0<‘m*:¸o©xç_öæ´õgT»?êå +hGbdw¤Ó†1_)Àjy³hNx÷˜};)˜Œñ¨ïxcV~†ëêÔ˜ò}…±véjR²“ ú°žQN¼ yz ”´ÿ:zªE|ô×Á¶³'& 1-ˆžÑsÅbà”VX÷$ó §³N~Dè¢]çÂ;b«Q:Åö‚…û·L3vpœˆâ+­®Ò'‚ÒªŸZ³6ØàÙ‘ÎŒYvj×ÄäõÝ®—㦠7ì!ËÕ5§|šthûû¿ æ# ]r]!õ1!W}ª}~[þSŽe–|dm ´AO\hc%Ív ^Øè—ZÜ^~±±Q×þ¹<˜Pcø «·æ:Ú»«^¹ºÒKûrúBrÚ»òvº´s+ô=øß †\,Û°5)Ôœ-s±×»:;Ý%|§r7‚åw$9÷¨*÷¿Ãj­5ø™¨ ´ëÌOõØ +qO©vM¶`}ˆµRG"Å{:v{±ö‘}VG™p TЄ».ÉMÑÐÝŃÙw¢NøÎb ›ª>ÿÓÿ:æ-C6öïϯMâóXà£Ïžá/º ´'þéºw©4j“®JÌRÒ6W«uÚWËk9uÙ¢hq¼ÛßgñóT±1táÅ)uô{†Ëòé1Cx"² ^9bÉW¼Ó,’_†á?Œ3ÕèU¸iD¶ó3ëY* ¨´sç~œÂßl¤‹vÁ®gAÎóügZ© +øÒþöL,tdŠnp¾…étßéC¨M`]ät'¬*™›¿#Êͬw¦—ãr)’Ÿt'Z˜fJ£"¼Äóy(Iº´ÇC~ü[rŠbaËì2¡ï‚Éd»ý7žŽßÓþõ6>Å0 ˆvôÛð~w¶£h“G¢QÀÂÚ6c÷ˆÙ9Á¶…'U' +•ÙBÁE Lü&^ ;ÿÂ{7#½ãS}=”?Y³~yAíÛ(6Öê\©GS€ï¦;AÉîôÞ³õð„°ôýHw;i°*²ŒDJKXiYR¤PðœJøcÔ¿À̩֞3êž×Ù/ŠÞLÂ? Gƒxåe‹Í¼9À ˜CHºäÖa? *æ2c,xW࢑@O‹ýÿ·¹¥‰Nt[ ¨˜—Û¿X qó€n…E'GËTŸÎÄÜr³ª96ÇÙv§TqFø8Û’üÉ‘ßôôç9‘QÅ_XjÈxé:Ï’'@$ò¦²é¨½<|¬€â"° ¦gEmý„LoXÿ¯RËÿ +€Ø äñ=eàåÃ4–™åj…Þ÷0‘ô¼õ —&ѯå:m×M!E“îoŒªY/i«æü ijcë™Ök<ƒTÿ¼ƒ|)˜ØmÙ»EùõÏýÝ1¦{¬„1þó©|Á€€¶eëÊòk÷†Kôž]g"N¹Üvå)²õU¦îÕC‘á’¢Sû~™3qnÉ.½5èñ{JÙÄŸü?5d¶i$ISÃ4b¶’÷o|u­fUªüó+ Š‰Â:—SFj²ŸSô|N¬|<×owJ%!ž áàÇ;˜&Ò²SW$d0ý\µ´7v5ä ÎJ±¤.”ŸÞÄg5ÇY=W©"Û^êÐ…iÿƒé¼ÿb*ÝÉt°ÜÞLÕ ÓfÁ<)ˆÌf{Nëp¼Ø•²gŠêÑV_ÖÓbYÄ3Ê\¨n±ÜÊf»9Ý×ñšxþÝjQSĶ`\B)þÖo„/Ù«”0>á“’y«Ðžß§d·\:vBhlÇ5ìB–Ú™®AQ#í")䤊üÑ +qÄ– åÅÊ{% K¿_Fr%PXÜ»w­P”ÚXÃA™€ª ÝAG: SF³N3}6MfJÆÿi:œEÏ|·t„Ì.õÙv hžž§ü¹†lâë=Ø„&û"ꇵóŒ™4ÿ« …/škxæ¬aRXæcÉÒUûì {ãiÜy™ÙK\)J* ,Špá>‘ÇN;IX¨´Nͦ!Ûªó7ê2Ï}tgý³}ŒhÌò}Íïô]U¢È\(Ñ+öâ,ÂŒ“qlÚ¯Ün¬ç™&Ýfõ2t¾ ‚Œ¬]Åñäyµìÿ{èN‡uËÊ󣫾ý¦5d„È£aÊ«cLÎÔí½¢k8¶âZ¨ßg­/›båíVUß#¡¡‡—&–qòf­ lÆe’Ý®5„/Ì]˜r4Õ実ëçH%ƒÙ1ÕJô™ï8F:5hTƒ%ÓÖœ°É£Š6°$ڼб²¨"éÇË¢ô¸P¼8&ÚKÇí +àÜžµU tLëX½DÑTô¬ö1=¾ŽBÔ±ͯç~­T 0iUµvõ$iE*ˆb/Y,‘VüŸy(+°&1þÃÊ_.8òö¦eöx½šñðŸh%—fVaD“ð—6ò8åxx·Äf|]¶[î*BaMj’t#™œ“êgCV¼l†n0AzBy>by0z9h½áêÚøsáßN]žñ¶Ä{:™*ÒL5Ñ5àNšSÝ€¨"šÔ—µ$ß6¯òõàéÑGutµ-‰ Ù…â5å6Ga²ˆšÄÁ +°m×KšíýVßç=²@sZDöum\&¼ð»Í},Ó hr âI4Z!ÉÝÓxX`÷‚¨wˆŽ¿l5›Uo`åÙæ ¿úàÎãã-ŽR§JÆô±~ù±²„¯pÞg"µˆæqèvÓÉ·Ø‚¸ùvG^¢°ÌŒƒ²RãÍòàPɘVVöæÄ*-‰±3è«ÚÓ+ 3«C¾ ¼°‡­ÖÒ€AW¶ªuÔ*}+vdñùÁSUX8ƒàèaæÆ¡‚ßX{Õ4ð)~6ô涽*ípííëõ aÙ¥xê/æŒBà +X²G:3¾‹Æ®3¿(õ_!”šTÕ9Ôç1 Sßý÷Ž†¯K®2á;ñð&ÞRLøÒŽÆê*R_¬bÀ/oì“󱤸…ŠdÛÄÿ[í§±©Is"m +~¿ eÖ)½wçaŠò¡“é‡å݆K˜p—ôG¨¡Üù»OµWžMSÎh<2"¦h‘ £s³(7³Oýŵxt‚T‚Kqœ‹W_ׄÚvˆú(piÔ»ToµéÖýUêd—I5®¾1²HÊÙRþ™})›‡ ©ZߥÔôIÕ Ó:ó*ÛÖ9V´+Áú‹0"Ĭ?ˆ|rÁ`ÊLXpû2Ö«Ð9&iX[¼7Há©×·ÁQpöM¯»œS¥ùà¿–(5Vv¯k6<O:ãüôÚ0S21rÝ€Ò…YÕŽ{…Ì÷¾KnPïƒ2N7žkD¥†Ø þ³"Fñl˜ƒ‹BÜ:ž–ý{µ¾A¦H¥æ³97܉˜¬UoÛtÁ=àbÿŒÀ‘tõ 1¨T3lMâÿÆÀð»ÅùË«Þóà9ø%Šgµ  JóNÜÈ1ìŸDG,gkGïyÏ¡Sù:£Ïø'6RŒøëQà@ê>jËËZZA|@#E‡;~Nƒ J_œ—Ôŧ96åJcp1)¬±CÕ_#ŽÆ›n»ÞYë¨ð•1¿$"±¸·Á•è¯þ„šèGÿMµÛÌÛÖ¥µâüÂNø!ôSòW“7¹[¬PŽY ýŽÇ9è¦)¿‚–þ0-õö·=«ôºsn{Ïjïš—dº†”ÜÀîD/8î²r_ªn ÂÞ?¿½ßW +†t€êðjŒ4´‰ìB Mè+™ºl›´³3«<#w×yÚ æü ‘ +²8`×\æ™.–JÀŽ= ¡|R3ÂËÉ-Ð<ŠÝâ=ÉãÞöGF ¶pc£~’ ©­˜`l$ŽDSØë­ÁŸì3Ýj\$ÖDzÌ¡PÐ[%ºœÜ/Y|K +;HvRu|<;@]“z?xJý0m!ye5–Þ[Á”mB¿œµßs³Õ"î0#sO5“CCyrš¢ã˜2KÍ~øËM¥úw\¢ô‰ +!GÓ=x—߀ ž'·f¡–Cn ä$Ÿz‚¼›ö[€¶ñAÔ©+ɸ8]Ö;\º“û¸zÀÑ\(ëÐjµ…©9 ¹Y$È%Øñn´£ÞF(>×þÕ½ç7bS†Óäïóªå'¬Ê½Î™ iœ®À&õgxm¡Ú[–ÙÄMEG?¯CŒÿMgÒö<+Ô +øQ¶×`%÷Ï,wÀÇ™2XV""’`kÂpÝ6Y›³§w&Q6Ï,Þ´orÒ‹´¥ÀÖãÕCáû©a,¯¶‘æ{–¹·Û€aLCó³Â‘ f§‘ÍÕüÍæ@Ù% +b©™“9`Ê ãž+À@¤±q‰»Ô}'mÇI2"Š¬uÃàÙdÔBë_@]_Dý¾a¯³?“Su°¨<¬ƒ)à€ÑS×kí‘&.‚gJ2îºá’4$¶R„Úh¿DUÖ¹µ´}¬è&-àïçØË“vÑÆáˉrªÎ½ãùÂt¯m‹F¿œ|uU03V”ˤ$»Éxî¥ù<¶™þhdЀòWÉkUòöÎqÎÛÄç°ëhA¯,†OTÚÿ¼]’OºƒDþí¬·‚èÎ’í|=[hàùÕöXËþˆ6­È|Ê9®¼¦Ïâí¬r1º§¹'†ð˜”Œ=‚áK4¾È˜d²Ø¡wd“¿o~‚ozü÷e&]4}NKŸ|‰°ÓLî@DPtûeåPt\EA˜¢OùðŽ{ÆT$õÄr ï°a2ïPlm/\Z1éÚÅ¡uÚÀê<¬¨ïDMÛ–I½Š„nkÓÓt¾¶¹ÛÕÁõchjFtöò4SÄG§\S¸x÷gžŒŸ%78±Üúþ-bÜKt–õs„= *hŽB•¬¼8äñùü2)†sÄÍ(ùØ3ÃV3pYá¼ àÝ1£&Y-c}É vüNå½/n^ñEò¹Öa1ÆÛ.™{Qç è¦Í®Ÿ~¸­øó¡e>Ÿ¶a¹>éS˦À Ê»·!5W.ü•û´jMi/}bbU9´D—›qsï4z²ˆµæ´ù `”²S(ûþ _x) I-”÷Ó›6vÄÐ=±Ó6õ/þ¬x‘燺aÉðÂEcG= ËÅ™{žì z”Áê´¡ª›+X¡NfÐðU0OÞAbLròµcÑÖFatQi‘¡–©Îiο„J>S±Áq|œüôMØ’RÍì£#ɈmЛ{Åð…σ¯Ç…ì)Ts²!àëïÿ$ÏÈÅì/^ƒ5½Oº+V·ã‰øÿ‰c+’tÞ›Ðb) ‘èD·O÷ ±:¸³¨†B´^IpÉ­¡2ð휙hIü¥h„‹€ ­Þ~‚È•ý®U(WËøç=€óÝá46š- •gœ´À'beQrÚ0(ή§å¢CöÑ—;¤õK€0T“L(5§fxê¶û<Ê‚®t"÷dÄŸé´š‰1ãËzœVYCœ»ÀÖ°\ŒW +ŸßŠÝ˜Ïåcúæ±L‰kËîo2iA ¢ëQ+G•²¨BD héJ3Y×IžsZ?žìj;¸âó¯òENõW»z,0§.Â'²z-!ÔÂá´@)Bð°˜ö9’ãTÌN)êÐ`ƒmxœKË*Â×ZÎȘÞL”!áøTâ|&¸PYeË—ã‹Vß!¹>ÛåQÞÐòG~ Xõ÷™û&•=_£˜õõPšÇ‹U~´ÔGÈiF)䜋·°‚p{+´gÛµAøA`<çÙ5èÖުƢ—” ÝúTå±×Õ‰/Tße–ü†iíù‘kár!H7cä.”®:È5¾WàQË“ª¡çAÑü¢~${3ëþ¶¬}æxÍËÄ.9yÇz$Õüé¹Ãú&œ…SZ £ u­ »híÌ!Cò„9º™EYx¬gË})p9,o‰”_íÐnƧ)¹î?PÔ”õûÑaûÌ]ºÑ–fÃ`½’lŽÝ®pŸŠ4º×ígQø{/ª~ãàŠóß`µ“Ú²ìiljðuµ¬Óqü&wÀ-²Ÿí'I›ð¥Zž kƒ"U‡fR'¢ÊÑDÜ“2«ü«¦…DóÌvˆÕ¯ÂnHs¼¢, [0SœæÄqÁ$úó”%V)ÍŽjé¡Ã7.×®H.îëKó¾ŸoX9ÿ¼/`bYâ Ì@¿³K‚8Œ]Œ&1—åý©MìS.r íâÒ’«{éq.#Bÿ¸<€¹ÖU¬•Qñ "9/Ô±nŠkó_`N)ƒÀ-Í 2ãšó%íècHWîÙÞ°Äà{äoÊ*iùg«ÈöŠçîuâÃT˜HÍdu³#Ï+o+…Àßn½ë»¾²Àtv8¶Ž RÀ èæcÿÌðrC–Y +;Bó¿½LœÀlzü•îS8!Aå#"²_4^ZBlxzgjdksß5w1?Â2´uÑ!Õ C¸òˆÀ®f{ÿŸdôßJ…’  I#4ü‘œq´Ó@çç…[Ì8kŸrˆxÌhÍ*C÷\C½mÈ£«µxJ•fÛ‡9®+OFÚ¹©¬Ï{¢=-5Whˆ×‡ü&T£´QÇò»ÏXŒ>¯ŒþõìÊmÞ€è—=¿7+¾\z ®d8û½zrIªà²ß(Ƶîõfûs8Ñ»WDŒoó['÷hÔeVÒá¤ùsè•›07ŒAÄŽêz"ƒ«^Ib Ûw]ƒ› údOå·ÊBM@P.KÏX*ñIsÜÎȘ×U:©45¯Gô}¢kÿÁ>}šódd8™5çyvõúÒØrùZ1Ù¥¥Ð?&Ëçtª|‘‚¶©F9ûõÀ—HÆø—‡\ÓÂTûOö|s1g²Ë}¢ 4 +º‘ÿ <’g˜6¨.[ÐÂÒ®d„ œBá^ÉoÚ:Ö5¿­ÇGDù:ßà‹L‹Þ—mÈöiï®úû_¼~]Z*eÀ}O¼»¹Kà]ÿ+;bS‡÷Aû¹ªXXÈÏïÍœ£‘PžÈïJJŸEöIµ7\“«~·!‡ÀÃÖdãÅ *ýaÀ!P°|’G{5øÀm‘$£svŸ.ÝQšÒcü}2 lj~NaÝz?Ù7?šr0j;٘󎤻X›ñw¢8Ó'ŸŸ}Ì öÙVË–XÅø$®,ýÄtÕæs‰ýÁ‡CcLf,œh†ˆ´-•V@p)ì;TçÝÉâÎ=ÍøÈ i?¾;™÷/ +î® §ÇÂw8¥ÏÇ,…­<„z$èƒyGÙÍßлV‚b¼ŽÆšRÙ0S Ø·þœq]¬qž¸˜Š‡†˜{/_>`Lág[M\¼l±ÆױР+ø&_m²Ñ— ¨vŒC~aªkÏy€vFÀ'µÞU»ìʳÇ×¹}¹*ç"(­²ÓÂêÙílô^ΩhåØÚ`ÿµ`ƹlÌZÏU·Q³,2o{šý2QŽé~ÓUÛ,&DßQnÈ°R8)†¯hðÍŸMÊÉŽ¤F2¡Ì»Ã´N`JŽ;šë‹+€kŸŠbŸ dºry”s™)Ý­¤î5‰Jj[˱6TŒO^?Ø"OP˜¹(¸ +íãöZZÞ¼™¾…ÛUÃìÁ¸·# æv†¥_é³N˺ٕd†ÉiB­e+‘ˆòÿ¡IT“—‚%SáÎlüúÀ†ª!ÒÛ§´™u=êæö +C±×„Ñ”¨1½£íž/+@¢—ÙIu…z‚Qb‡z +~ßÞ£ŸÚD³D–Âäg y°ñ òÓ¦lpŽŠŸuétc§¿¬îk~‚b¯¾¬(îÜÀ±¯7ea6…¥¦n\SýÃ\kU ªt×= +ðíËÆK¨öOf>›Í<Š¢Rüü‰ymžõV¯ì vR9 Ê‹õµ?¸.ÞRK+daÙé[ìó~>”´Â?1ªŠ$¤/Lá…ý$Úé]Ñ&Æ–H 2 ¦¸—Úîyxò¯Œw~¸ä¼%UËÅÞºEÝV»Í+ µÙHk\lÕ#Œ¹J €K­Æ«T6Ú=Ç™ýH&fô|Ø¥ºÖãÄщZA_ÀkÁi(sIÅ-9wªó©:‰$+a’|²M÷{dV}iÀøaä)³ŽhÁ§ïGÞ•C’¶h;±CÜÕ63û¤¯dqçaä#W"æÍ…Ã\Äb¶ÂbèÆáÒ‚žX³òUWùÚ¶‰sú¬õ ¶ ~FJ¸¤K]YloÓÎ×ð*ȪNíÿ£Å;߯$XÌ‹`E8Ð:¬ÏÀJ‹ Å ‡ßNJ;̾IÀºxÑFG¯ôõ|ßµe]ÏêÁ©3/‡( ]T°=Pªð¶´©ø‹aa¨©`Tl"Ó" kk>c0‘YÁ‰aX—©~´—ϵJÈÂ(Ù?<’hæÏCt”@ƒpõ\;¯D\õ½ÖGCöhtAÀÚ†‡bÀ`¬¬ *œã_sc毌ÑP(Õ@„¦­­øCö?ƒgl|Ft¼yÊøÊKÏF’ÊÏÕ46ªç´d×DìÌœûœïH©fuÐ G×…}±lµ:/pælïž{ºB„L +xVÙÿ1Ò|*Ý:g^1ù>•½§t9zm½/®¼å:+]ïq—•M¾pº +€¼§ç€.Æf“½¼¤çdsÿEAi íQ*} H'¶éX/ö÷íìá> ˆä ቫá¶èÜ e¸´õ·W¿«¬˜hé¸ûË©¯ÿrU­úQÌl:„ÓÓ&û’ž¯¹Sœ›ˆ·æ±Ø×Ø“,g 3÷¬g]Û£¸Kמ ²Ž&¾„¹‰þõc»ïê› HC»š+eÈõ¸|dWÇ4¡’tt‡=Ò †¡µîw“§\ªOLfÀÜ#MAÂ(¡¿‚xQå8s.zxè@×Oíä“W\÷ßèÿMЮ{»ÛëM>!Œ øŽºÈfÛô vG|)Ø_i ÞøÄQ¥£jVº”F ÿ/`f~%´ åøZž}öïRÅ»{›0S)Âç› 4 +HÚ[ ˜ÑݵȦ/ù¶€@º‰ž¾[£À—5ðѪèFtÑnŠöSž8è£gµa3ž?¨EáÙVá%IpÇCˆâR„ÇÊ¢•©5]ÄÜ#Üær°³} Nž'ÕùccÎurÁÔµn.²;¿rA]"^¯žs"Õ @ö¯†¾—øÚ¨2n±¢´Q"éøñ2¼p‰NÝK8_[ù^ÌÂ-òmaƒqÕ·uŠCùMÄy#Íþ'yÊkÖÜB–ˆË¥˜S>`.7yït”ä'ÅõŽY¦—[ªûªñç"`GúdÁl9€§d£=V„½”„òÖ¹Oäê:›Û([íƒ'Ô€éÚ’ÿü÷²ÖtLœa@2Sòd̳%N` +oUÉûHçˆ1Ä%%l<’á¬äpC›k½ÈKÙê%$wd ÄÕMfµÝæ¶J'YlÂ4Äökú½½‡eèÄ金('E.|·ÁŸÒêž› ×{y_ªœk +8Âcê<‡³ñüE!¸涬ehkl ÊìSÔçØ3;üÍLæ1·Nd‘ÔÍ£·&íÃÝ3”¬?`ùžáæF£7K ñxAý½]aqàÍ$rê.Pݧ/H¡1]è`öR]&‡of›:ͬÐ5wªÌt‹>½šR_º°x±’mâ™Ò¶ñ®Om¸^$šÃA:£È‹Ñäœô÷ÜQ¼hï©'vIúbÕƒaƒJÆÀ!zʇÁÖ.¨·„§¶ ­‹ŽˆªVŽØ㎠UQïˆB¤€€.û½oÒÙõÞjK´i˜ O 1Èjž¦jAäóÌ.- C†cÊüeSø §¯cêôÄN¸Ð¬5¦`øŸ çïà0`?·è½§Z-'é#©rÇþCAôwl£;?Ouž¹ øGseX«ò–Ç©šŸ`h9Ž ˜ÓÜáŒQÄŒ7K©tößN ‹èPñÏ›' ½Òî= †·©ŽBøòúa.¢rzàß¿‹¾„õ~SÇŽ—Q~÷ûxÏ”S¾›Ý:±`’µ©µ»{ÀÉZë¿«õLÍAo_°ˆ7hIN<2‚c;[Þؼ86Ä~D«žù#,ï¡ËžÞ@«<‚$ ©¤À‰¹T³Ëò\¾õÔrù VÚã1s +þ¬‘¦Ä4Q/jTLÏóoŠè™quøì°eð™îe·‘Æ>Ư@em“Ö·Å–"–ŸTˆvò"˜TkM`2 ðÙëYåá¹-.Gõô‰kŠúG´4MI£\Ái¯Öœ„¡é[;¤î.Õ@Éí$%ÚDÔŽ4¼8W€¸76zq/zWÐ`É ½Ò;í±( { ';UÂô A}Aµ¦¶á¯O°« çõâgÑüv)f‹MX€Ä÷Ú8¨U¦Åµ-xÔ!QIߪ9)›€òŸ!²©Øê ­ YÏ|œoüTïÀovÅ‚ùž½ÈMDCÝŸ‚öŽ9“­ “Aèw`SôJ³¯WG:Åê§9¬׬Wôr0ǹ^“NÖË¢¡Æ嘔‰íw)’ÌC‰2‘½Î¢Û±b¸^w!î$_½i±NÞj¯¶« £ë©â¦¬Íô6,x²Ûõ(úÀ*Ázî^]ZG"QjxÀò(À£ rjn¶!‚ÌüTÊ„Œ f9ߎw®d׫l,¶“q„ô'~Wé‘›Ñ\:ò^kDA¤ß9a×ý^C˜CÒ¾n¿4°—]R;|ý¬WÀ?\R–Î'LU^Šþ–ðÛ4s-¦³"0³î{ÆòÜÖ)P,fy®_€ Mhül\„:3Ä„ôf­*ö~‘ì+KèÇMr§š©¼íü'JR"ÏS#”—!Ð/½A“{l~ªçÑe=WowÔÚ1›û``ªôµ@ÍUÝsT "PA¤÷ïʆ­ ­v2YóÂÙN°§#îYsJëÍ|TÛ©øÄsyšä€Ža ɦìÛ\›¢¹¤AÚ)!©g¼hl%­\ཨml`/'ÔÑspÒ˜ Ú:WžÃ_8ɨ)».aFª›ˆôé™UÙõ°Ãç‘R€iÒáÇÄ<¹ÝM3SU°âgeŽ66“:`ÅT¸ Z|‚‡âíù¢nÎËO9dUºÀ!€mO›=žÉrÕ™ U—+C]ë<ŒOÍ šP +æ‘ZZ?)nÇ{û(GÁCË£&v^%çl%YfãÆîT<˜zÆ—ÒœÊ>IŽfrxâö÷m‰în)‚¾…Ã02®­ó2ˆ”S†°G.¦>t³ÖqåÊóF±ŠýKV/ºRÑÆn¬É •ÑK9D¦;9˜Žm¤&ê>idh®n•Wlz*%~ûÚ^uÎBðàÍ{q GóHŸ˜ïìRè½J¾a% ¢¾³fUíEBdNHeÏËH“'é6“ÄâUÝÑç&6®S‚2Á9fün„>OǨû#b®)4 ÑÃá!_I»ë•ÓÿiË(ü !^ÃM ÚkÝS&þfìÌÌ"íOûÈ^¦2õD+½É·|U´Ôæ€fÙ¸^õmô²[bó¤{7Š4x«šªˆ%,µ £Í4~ª]L°;&Ä£C¿é`7´Ì¡ôèOhôÒdÃùºôœ‰g„Û_ ²~|ãxíp°C2·:j²Ñ³3‘âÙ$û&üa#¤·…!A"ý‰“ÅØÖ«4¡‰úDÏî=xYó.ËWöœÊÊωzz\r û¨0VZ`}çõÍà¼"oÖ˜îp˜àogÛ<9±Ãp$Þ0r«ÌªL¶dx34à ¶Cƒ‚†§AIˆ*T‹O +µë›_M6Ð nƬ8ÔV2iz¯Qìgóëy¤ _á™Óš=§^°–æSk\ +Ü¡ùP`3|ÿÍ9ù+Ëv×Óɳ°r0aÍtìh‹‘Z¶h™Õs 1z™hxºy„¼ðV©Ó‹:ﱟÒlžøΰo2ã×ÿê,ýè7]Š&6 r²?©xs9[¥:³MâM¯_LϧÏD©#ΛÊù"KmïÌÍû‚™pVÊS´UawÜ0(rÚç¸d$tÜßÂ×NDþѤí¯¾Š?Ÿ‡ Ø@±¿Ý„¿IM+7ÀS3H³¥OóxÚXãöc“*寀&ÑTÍHÌl=~Aêö‘÷åZÒQƒ]Ê?¨ŠG^ÐMÌéL±¾¶»ìÓ¯£öq•„AZ$~M’u2ÒT;Ë|¤]Ðöp}Ç{䈣jTÙÝ”uÁMDþ ¢¼›†gв;ƒï€ož§ä¿…¡ ô\"…ÈýŠ±kÁt²*45]jþØë<Þ( Ç,´ó†”Ê€ %EA£þG±Ðs›ê[†íÆâéVAšH‡µ7s©ebvk°ÓL$¨Ø‘ÙÚY*o6a ñÂò½Uð?ƒ³%câÅŸ®}¤íúU ªðú; °Ïó„PbéG]Îo`ßé™é\[Ò +¾ægYHú3 PŒlϼ=&3¾s9›ˆt©d˜~¾{EƒüØ;«LÁuçzYÖúT,q3ØÞ¥¾é‰Þ·lý¦zž¨a¸¶°dòÚ´ 3Úìý}Á×KÞ§y0ô"‚+±]ü‰¨Q\”¨÷æ càü·Á®pà˜ÃæÊY`_#n¦º7y̯e^À0$hÊLP<|¢ÐW²c,ϤóÐŒsp%>*¿È–, S­CîzHY»cïêÂgµÐ\:ë-ß=:­ËcPhlVºLrOß5'.fè”Ë^·÷eqÿ†Û±,ˆºZ¡nñâoÈ»aå•ýÚ'†V%ÉaÏJ[èì–ù›ê ³sY¤ï^¨‰†Ù§‹âZuGdMÔ;rS°… +Þ¦øî·ÂWÐã”7%ŽY6sâ Ç ^YÓÙ×wƒ®i-ºÌŽæÄH™c?ÒäÏf¼¸6^òš>ó~üÞ#—½kN¤v°éŒéAX½o†¸à¡Ý`i ©.[û²2ÒÛöîÒ©;EžGŒ‹UE~“í¨ ÝܸXÛSLñFRÒ¿Ïør-º¶‡ÊKwßùáqû¡F‚Y+ü"n h¢£L¿,Ä›˜v¸‘# þ?6¸ U½åî8 +¨}Ðä¤}òÙf#{q/³û +Ïï0!ÔÊwùp$š*…=ÌN3|çõe Š`ÙœP"(—ø H¨.'^–è…@šþì+é|^G³"zâåû¸µ&"» >4nv\Väšë„ Û¡•A×åÜ4„±¿´> ‘¶¨LŸ£ôâw«U“V:òˆ8^p,°ð¾‡”9ÖÓ¯/ž Ãd·ýNª,wÄ£nÊ z=­&wî‚WqYÙ/ï‰ûåìån,5äH†èg#çÎÞ†å1 ¬ý0µ]±š±õ|†ÎOÖ¨…w&°0É÷#©=H*NT¹¹Ö$ ¸Ö¨¨¼zɃǮŠà˜´#‰¯¦4§ìò8É,†ø-‡ž²œq>Îú0^§YêQzc qÒr±\à‚ %ƒB¶¨ÜÇôw×0þ¤TuÑGñö›•ç7 Š«å#© »ùSªrV[ø¡ÊëâÐØë{{Ü3#™šCq'ç + jdGrÛ Î“«`ɦmwÄ&0Ûƒè($XJXöò81q¯w•·&íÇ'ÑO(Š];К‘’B‚Hëºw3É'ð‚cîë\tìaB/ íRÏųx¶;¾ °¨[£²D7›¡#Šow=‰'ˆîaæ@²0M°DÅjÜq-À”+&Í“åJùP…Ÿ¿E.ÔSBý¶Õµ¥MUˆlŒÇ´­ ïž´B,ØysOÔ”áWr‹ù¹¶kxH-šüZé;Cs’Ùñ–™ýÀr­yØW>ÌË°‚s¨nÓ*Û&‹ÄcÏÎ1ٳƽ¿ÚûV'η¯×²MŒcλòÕXù—ýz¼Ì×µiBÒï–>úôBò¯"†›zìíw5²Ô}‚¨b4QŸ~ëb‚aýè Üì4uüs«Ê„áIÆÍ­T½m ÉrMÿ¡®šEÖèç½÷Õ¼ú\03íG¦tn«”ëÖµ%Kƒý;•(AË›+û¿¹«C2Ò4Ì}¾“Ñ$â'µ+Ðܢ¨1È%Q0¸#ûbÏ5ÄMQ®k]áç²Õ1±ÝÞ¥øYФW_¬Ÿ˜5“O¤ɧãSâ3§œØb™ù<­\ƒØrÀWzy]ªR+H!˜^/;*’Ñ'V d€ñÁsó½œÆÌÅ?ÒZ9±½Zý@š{w®&_ +³XÉ!ÇuüjÏ=ÒDÃ*žìg% Žb?IȽbg„öqáˆÙ½P9­hèÐEÈô:"~üžíNÔiþÿÉÆÝz´Ò|:¸ )UmÍ>N[ð£FL¿'2¥á<ÅuwMÈ3¿Çg‹îCÃËa€Â17•MbŽok¹höƒ­ð•Í‹µñÔªPQ(“ |ŠËMúÈpWÍYˆýlŒòùŒµa‚žî¬ã„À^¬kÁ—qü¯1Æa°&“¡… +ãþ#šµóqœ’¯(‰sãÛÍ>F•ÆÍ™±–³à Œ‘=V,ïD‹{åÿÓlð›§ëê0Ȧøí9‚6Û~åÁ=;H½’|œþ‰XÑœfÿ™'¥`™ÞyS„v¶JªZ|IƒÔœ6 û¶½‘ŸU]=­žü¬ÆêhªSÿr1ŽÎ€wz_¥“Áþ[,?†6èeßîCb¾"T‚N“’g"š GÝëMÅÚgÞBŠc“Çšn™ ãYÞ}²dHëš`Qæ!@êjyÑ\„ÍžÀÍPÈ<ì+˜\ØþCÖyB$ }Å:Û£ö¤ìn~¢ s‚n{μΕŸfQ¨ˆ½ÐKÛ7Oë¬HVUÞ¦ªÑ‘k·Ûtþ[D9@ù°íZ +ðl½Xª»ßÍœl›$Õqõ»W4÷–§h$(7ûá³Rg`ÛE–º/uœZqû¥éµð`¹iÔCŠ˜m:Ó æ¢t‰íJÙ +h‰âO2ÑÕªû‹ìÁžOÀÐR# %„®[  ++ÀPbVÏd¸ªAL²Y·&Mÿ^ˆ§뼄u*€U›4¿”·Ñ•¿OšoÍN‹XH±ÞûmˆÙât¤Ü=L‹>¼+<ü<Ù͋棞®‡ö"’)[õ+[CRœ÷m©—•Ê(y¿hö—Þug«qY +&^Ø”ðC8XaN¿Nlm”Ù4Xl¶Ò>)f㉪(Ì +¨@BJ„íö‹$îç爩(£¡Ñ”Ò ‡lÄóð.;‡QàxøÑ ”¬q ò!å°R€€ôñ²JeäÝl‚e• ¤ó*öD¤“,ȬãÀ;3: è~iå¤ÕÚ“ßaR¡\]ónî›´lʱYÞ¬¥¸} 4š'úÐm)tO a+˜–ýðyŠC—ü£énüRz¾V6p͆!;î[Û° 5€ë€çêèD™œ5"ÚkЃÆq °’mí1I#ÜŠãà-ÀõŠ²‘ý”˜‹6g½+ä\Õ¸y‡£XÕ‡k³»^=³ òäY Øq V$¬÷ñ™ kiòü‹z´—åK³ÒÀSÑ~£·€”þùY{k2u¾IQxçQP[MÀJ=–c­S!v"kd,ïѾ€Á¦¹ mÇ„ÅIáúKc<¶YšŽâNËuá˜ÉeDÌÚ´ý{HPln¡Ñï©Džs¨£¦„Ó â 1K³›bq&ÁY »ç>ù–õkÓŸßÕ©á7ï !ýˆXWÙSiâK;ð–²t©OÍ« å*¥­£•9kÓÍ°&Ã?I¡ÛQNqºæ +’‘/SRnâgïíÌ7f7t&Ž^ìY}qø@£káÖ™?¤ + ”š×9Íéé 1Š º)áËI«¶¦î>¿g;èÉͽ`p×q&oÎëϘ"À‰Õž¸fá›KUàЅ݉ý!’ƒºíÀ.1š7]V¤…'#UÍ ­™ ³zä´ì¨âvv¦Ñ¢:¨£.T¬A(÷Í\âwCñ]ÓÙ‹o±2 +Q#Cì¿EKªlçŒ)%vu°.øÃ6'Ëk6TŠK# 4Q‘sÒO‘µJ_MtJį~:¦ž/ù›(±® È»Zžašao›3w€î¤i +@MKŽ; +hÀ ä‘g&㧤©Ü¹NÏò6< +C Âf fº ¿VûF7T¡ËÕ;÷ÍV ?´àØÛF[¼i™M+V벟eØð¢õ½[ÉyAXÒf.(Îè8o Dƒq8ÛÜúžÊ¿–Üи–Œ¤ßr{ +œÕ1ê)ß3Ž;×J‘–¿ÔŠÔé)%ÓÉ ¤6o4å>LÆ'`%øǨb¾aÉ.Pwâuo…µ1_)Å„ú!æ°I-š ÍÑ$«Ð:Ï 3…O'(4( „çøur7%w™¸Y>uÝûÆîcÛuÉpK„ é…DœðÔ +¿˜ÿ=õàþF“M­}5¢ñ²âßĶLSr£÷Ù„“¸÷ˆ„š§y/Býz©¢€$Séê1³ü¡êÞß?Œ‘ln<Ý>ýt> Ù;1 Àû¢¢|yóÄïM}N÷èÁ® Í!™2/$ô“ÂŒåZ܈e½XÿÄ‚•¤ŠR5µæ'TÄQ¦ï òw*á+ûÎcLYÌ°¬¸§“‚wòvïuº²¬ +Ü[çÀŠàQvï[¦ýæ†rUJo3_ë/™$ yò§ÑéÚ"Éjrº½¾‹Xf¯yÓLEœtnÖy“ÉŽœ‰ö•ƒQ]Ex.ò¢B‚…;®úˆ[„çðÂXánÍUîOýÅ›1Nd É¸&÷ïÎŒþ endstream endobj -2283 0 obj +2278 0 obj << /Length1 1616 /Length2 24418 @@ -34189,7 +34406,7 @@ c51 AÌø2C0ˆ¯5§Œƒñ¸ûoÔ]}‰I(&*㤠½;Ã@ar½’§×@ ž\-@óˆ…Ô|†5J¾ÏZ¬¬Ò¿ÖTÛÆâ¼ .áç1åT–€"aõJk:‘¹bÄ–D»| endstream endobj -2285 0 obj +2280 0 obj << /Length1 1620 /Length2 18673 @@ -34321,7 +34538,7 @@ ST Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: endstream endobj -2287 0 obj +2282 0 obj << /Length 1007 >> @@ -34391,7 +34608,7 @@ end endstream endobj -2288 0 obj +2283 0 obj << /Length 1153 >> @@ -34469,7 +34686,7 @@ end endstream endobj -2289 0 obj +2284 0 obj << /Length 1535 >> @@ -34575,7 +34792,7 @@ end endstream endobj -2290 0 obj +2285 0 obj << /Length 1291 >> @@ -34663,7 +34880,7 @@ end endstream endobj -2291 0 obj +2286 0 obj << /Length 2050 >> @@ -34809,7 +35026,7 @@ end endstream endobj -2292 0 obj +2287 0 obj << /Length 1114 >> @@ -34885,7 +35102,7 @@ end endstream endobj -2293 0 obj +2288 0 obj << /Length 1109 >> @@ -34961,7 +35178,7 @@ end endstream endobj -2294 0 obj +2289 0 obj << /Length 1109 >> @@ -35037,7 +35254,7 @@ end endstream endobj -2295 0 obj +2290 0 obj << /Length 853 >> @@ -35095,7 +35312,7 @@ end endstream endobj -2296 0 obj +2291 0 obj << /Length 1113 >> @@ -35173,7 +35390,7 @@ end endstream endobj -2297 0 obj +2292 0 obj << /Length 1477 >> @@ -35276,7 +35493,7 @@ end endstream endobj -2298 0 obj +2293 0 obj << /Length 1477 >> @@ -35379,7 +35596,7 @@ end endstream endobj -2299 0 obj +2294 0 obj << /Length 1482 >> @@ -35482,33 +35699,29 @@ end endstream endobj -2256 0 obj +2254 0 obj << /Type /ObjStm /N 100 -/First 1027 -/Length 18269 ->> -stream -2255 0 2258 471 2259 1102 2260 1573 2262 2148 2264 2373 2266 2617 2268 2965 2270 3191 2272 3422 -2274 3707 2276 4232 2278 4479 2280 4956 2282 5299 2284 5778 2286 6354 2257 6783 2244 7224 2252 7442 -2249 7564 1860 7970 1791 8133 1469 8323 923 8484 922 8674 921 8834 979 9024 1025 9213 1263 9403 -1136 9568 673 9738 675 9928 674 10118 676 10308 889 10421 980 10534 1037 10650 1072 10770 1101 10890 -1143 11010 1189 11130 1231 11250 1290 11370 1342 11490 1391 11610 1440 11730 1480 11850 1519 11970 1566 12090 -1610 12210 1647 12330 1683 12450 1722 12570 1763 12690 1792 12810 1826 12930 1864 13050 1899 13170 1938 13290 -1975 13410 2013 13530 2052 13650 2105 13770 2207 13890 2237 14010 2300 14094 2301 14212 2302 14333 2303 14454 -2304 14575 2305 14696 2306 14780 2307 14885 663 14954 659 15028 655 15116 651 15204 647 15292 643 15380 -639 15468 635 15556 631 15644 627 15732 623 15820 619 15908 615 15996 611 16084 607 16158 602 16270 -598 16344 594 16432 590 16520 586 16594 582 16719 578 16793 574 16867 570 16992 566 17066 562 17154 -% 2255 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2258 0 obj -[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] -% 2259 0 obj +/First 1018 +/Length 17338 +>> +stream +2253 0 2255 471 2257 1046 2259 1271 2261 1515 2263 1863 2265 2089 2267 2320 2269 2605 2271 3130 +2273 3377 2275 3864 2277 4207 2279 4686 2281 5262 2251 5691 2239 6132 2247 6350 2244 6472 1860 6877 +1791 7040 1469 7230 923 7391 922 7581 921 7741 979 7931 1025 8120 1263 8310 1136 8475 673 8645 +675 8835 674 9025 676 9215 889 9328 980 9441 1037 9557 1072 9677 1101 9797 1143 9917 1189 10037 +1231 10157 1290 10277 1342 10397 1391 10517 1440 10637 1480 10757 1519 10877 1566 10997 1610 11117 1647 11237 +1683 11357 1722 11477 1763 11597 1792 11717 1826 11837 1864 11957 1899 12077 1938 12197 1976 12317 2017 12437 +2056 12557 2114 12677 2210 12797 2295 12917 2296 13035 2297 13156 2298 13277 2299 13398 2300 13519 2301 13594 +2302 13699 663 13768 659 13842 655 13930 651 14018 647 14106 643 14194 639 14282 635 14370 631 14458 +627 14546 623 14634 619 14722 615 14810 611 14898 607 14972 602 15084 598 15158 594 15246 590 15334 +586 15408 582 15533 578 15607 574 15681 570 15806 566 15880 562 15968 558 16056 554 16144 550 16232 +% 2253 0 obj [528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] -% 2260 0 obj +% 2255 0 obj [611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] -% 2262 0 obj +% 2257 0 obj << /Type /FontDescriptor /FontName /MNPEHI+CMEX10 @@ -35521,9 +35734,9 @@ stream /StemV 47 /XHeight 431 /CharSet (/radicalbigg) -/FontFile 2261 0 R +/FontFile 2256 0 R >> -% 2264 0 obj +% 2259 0 obj << /Type /FontDescriptor /FontName /TPELEW+CMMI10 @@ -35536,9 +35749,9 @@ stream /StemV 72 /XHeight 431 /CharSet (/arrowhookleft/greater/less) -/FontFile 2263 0 R +/FontFile 2258 0 R >> -% 2266 0 obj +% 2261 0 obj << /Type /FontDescriptor /FontName /VKSUEJ+CMSY10 @@ -35551,9 +35764,9 @@ stream /StemV 40 /XHeight 431 /CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) -/FontFile 2265 0 R +/FontFile 2260 0 R >> -% 2268 0 obj +% 2263 0 obj << /Type /FontDescriptor /FontName /IKXQUG+PazoMath @@ -35566,9 +35779,9 @@ stream /StemV 95 /XHeight 0 /CharSet (/infinity/summation) -/FontFile 2267 0 R +/FontFile 2262 0 R >> -% 2270 0 obj +% 2265 0 obj << /Type /FontDescriptor /FontName /DUJUUF+PazoMath-Italic @@ -35581,9 +35794,9 @@ stream /StemV 65 /XHeight 0 /CharSet (/alpha/beta) -/FontFile 2269 0 R +/FontFile 2264 0 R >> -% 2272 0 obj +% 2267 0 obj << /Type /FontDescriptor /FontName /NCCVYE+LMRoman10-Regular @@ -35596,9 +35809,9 @@ stream /StemV 69 /XHeight 431 /CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) -/FontFile 2271 0 R +/FontFile 2266 0 R >> -% 2274 0 obj +% 2269 0 obj << /Type /FontDescriptor /FontName /XKYJEW+LMMono10-Regular @@ -35611,9 +35824,9 @@ stream /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2273 0 R +/FontFile 2268 0 R >> -% 2276 0 obj +% 2271 0 obj << /Type /FontDescriptor /FontName /EOXOPS+LMMono8-Regular @@ -35626,12 +35839,12 @@ stream /StemV 76 /XHeight 431 /CharSet (/b/c/d/e/i/l/n/p/r/s/t) -/FontFile 2275 0 R +/FontFile 2270 0 R >> -% 2278 0 obj +% 2273 0 obj << /Type /FontDescriptor -/FontName /FREPJB+LMMono9-Regular +/FontName /HBOWRG+LMMono9-Regular /Flags 4 /FontBBox [-451 -318 734 1016] /Ascent 611 @@ -35640,10 +35853,10 @@ stream /ItalicAngle 0 /StemV 74 /XHeight 431 -/CharSet (/A/B/D/E/F/H/I/K/L/N/O/P/R/S/T/U/V/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2277 0 R +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2272 0 R >> -% 2280 0 obj +% 2275 0 obj << /Type /FontDescriptor /FontName /XVBOSG+LMMono10-Italic @@ -35656,9 +35869,9 @@ stream /StemV 69 /XHeight 431 /CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) -/FontFile 2279 0 R +/FontFile 2274 0 R >> -% 2282 0 obj +% 2277 0 obj << /Type /FontDescriptor /FontName /BDDEWM+URWPalladioL-Bold @@ -35671,9 +35884,9 @@ stream /StemV 123 /XHeight 471 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2281 0 R +/FontFile 2276 0 R >> -% 2284 0 obj +% 2279 0 obj << /Type /FontDescriptor /FontName /GLTUCO+URWPalladioL-Roma @@ -35686,9 +35899,9 @@ stream /StemV 84 /XHeight 469 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2283 0 R +/FontFile 2278 0 R >> -% 2286 0 obj +% 2281 0 obj << /Type /FontDescriptor /FontName /LHHPET+URWPalladioL-Ital @@ -35701,452 +35914,445 @@ stream /StemV 78 /XHeight 482 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2285 0 R +/FontFile 2280 0 R >> -% 2257 0 obj +% 2251 0 obj << /Type /Encoding /Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] >> -% 2244 0 obj +% 2239 0 obj << /Type /Encoding /Differences [33/exclam 40/parenleft/parenright 44/comma/hyphen/period/slash 65/A 67/C/D/E 72/H/I 75/K/L/M 80/P 84/T 86/V 97/a 99/c/d/e/f/g/h/i 107/k 109/m/n/o/p 114/r/s/t 119/w/x/y] >> -% 2252 0 obj +% 2247 0 obj << /Type /Encoding /Differences [40/parenleft/parenright 43/plus 61/equal 91/bracketleft 93/bracketright] >> -% 2249 0 obj +% 2244 0 obj << /Type /Encoding -/Differences [13/quotesingle 37/percent/ampersand 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four 54/six 56/eight/nine/colon/semicolon/less/equal/greater 65/A/B/C/D/E/F 72/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/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 126/asciitilde] +/Differences [13/quotesingle 37/percent/ampersand 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four 54/six 56/eight/nine/colon/semicolon/less/equal/greater 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/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 126/asciitilde] >> % 1860 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MNPEHI+CMEX10 -/FontDescriptor 2262 0 R +/FontDescriptor 2257 0 R /FirstChar 114 /LastChar 114 -/Widths 2243 0 R -/ToUnicode 2287 0 R +/Widths 2238 0 R +/ToUnicode 2282 0 R >> % 1791 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XVBOSG+LMMono10-Italic -/FontDescriptor 2280 0 R +/FontDescriptor 2275 0 R /FirstChar 33 /LastChar 121 -/Widths 2245 0 R -/Encoding 2244 0 R -/ToUnicode 2288 0 R +/Widths 2240 0 R +/Encoding 2239 0 R +/ToUnicode 2283 0 R >> % 1469 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TPELEW+CMMI10 -/FontDescriptor 2264 0 R +/FontDescriptor 2259 0 R /FirstChar 44 /LastChar 62 -/Widths 2246 0 R -/ToUnicode 2289 0 R +/Widths 2241 0 R +/ToUnicode 2284 0 R >> % 923 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NCCVYE+LMRoman10-Regular -/FontDescriptor 2272 0 R +/FontDescriptor 2267 0 R /FirstChar 40 /LastChar 93 -/Widths 2253 0 R -/Encoding 2252 0 R -/ToUnicode 2290 0 R +/Widths 2248 0 R +/Encoding 2247 0 R +/ToUnicode 2285 0 R >> % 922 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VKSUEJ+CMSY10 -/FontDescriptor 2266 0 R +/FontDescriptor 2261 0 R /FirstChar 0 /LastChar 112 -/Widths 2254 0 R -/ToUnicode 2291 0 R +/Widths 2249 0 R +/ToUnicode 2286 0 R >> % 921 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XKYJEW+LMMono10-Regular -/FontDescriptor 2274 0 R +/FontDescriptor 2269 0 R /FirstChar 13 /LastChar 126 -/Widths 2255 0 R -/Encoding 2249 0 R -/ToUnicode 2292 0 R +/Widths 2250 0 R +/Encoding 2244 0 R +/ToUnicode 2287 0 R >> % 979 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EOXOPS+LMMono8-Regular -/FontDescriptor 2276 0 R +/FontDescriptor 2271 0 R /FirstChar 98 /LastChar 116 -/Widths 2251 0 R -/Encoding 2249 0 R -/ToUnicode 2293 0 R +/Widths 2246 0 R +/Encoding 2244 0 R +/ToUnicode 2288 0 R >> % 1025 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /FREPJB+LMMono9-Regular -/FontDescriptor 2278 0 R +/BaseFont /HBOWRG+LMMono9-Regular +/FontDescriptor 2273 0 R /FirstChar 13 /LastChar 122 -/Widths 2250 0 R -/Encoding 2249 0 R -/ToUnicode 2294 0 R +/Widths 2245 0 R +/Encoding 2244 0 R +/ToUnicode 2289 0 R >> % 1263 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IKXQUG+PazoMath -/FontDescriptor 2268 0 R +/FontDescriptor 2263 0 R /FirstChar 165 /LastChar 229 -/Widths 2247 0 R -/ToUnicode 2295 0 R +/Widths 2242 0 R +/ToUnicode 2290 0 R >> % 1136 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUJUUF+PazoMath-Italic -/FontDescriptor 2270 0 R +/FontDescriptor 2265 0 R /FirstChar 97 /LastChar 98 -/Widths 2248 0 R -/ToUnicode 2296 0 R +/Widths 2243 0 R +/ToUnicode 2291 0 R >> % 673 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BDDEWM+URWPalladioL-Bold -/FontDescriptor 2282 0 R +/FontDescriptor 2277 0 R /FirstChar 2 /LastChar 151 -/Widths 2260 0 R -/Encoding 2257 0 R -/ToUnicode 2297 0 R +/Widths 2255 0 R +/Encoding 2251 0 R +/ToUnicode 2292 0 R >> % 675 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GLTUCO+URWPalladioL-Roma -/FontDescriptor 2284 0 R +/FontDescriptor 2279 0 R /FirstChar 2 /LastChar 167 -/Widths 2258 0 R -/Encoding 2257 0 R -/ToUnicode 2298 0 R +/Widths 2252 0 R +/Encoding 2251 0 R +/ToUnicode 2293 0 R >> % 674 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LHHPET+URWPalladioL-Ital -/FontDescriptor 2286 0 R +/FontDescriptor 2281 0 R /FirstChar 2 /LastChar 122 -/Widths 2259 0 R -/Encoding 2257 0 R -/ToUnicode 2299 0 R +/Widths 2253 0 R +/Encoding 2251 0 R +/ToUnicode 2294 0 R >> % 676 0 obj << /Type /Pages /Count 6 -/Parent 2300 0 R +/Parent 2295 0 R /Kids [666 0 R 679 0 R 726 0 R 782 0 R 829 0 R 870 0 R] >> % 889 0 obj << /Type /Pages /Count 6 -/Parent 2300 0 R +/Parent 2295 0 R /Kids [887 0 R 906 0 R 918 0 R 931 0 R 943 0 R 948 0 R] >> % 980 0 obj << /Type /Pages /Count 6 -/Parent 2300 0 R +/Parent 2295 0 R /Kids [961 0 R 984 0 R 995 0 R 1003 0 R 1014 0 R 1030 0 R] >> % 1037 0 obj << /Type /Pages /Count 6 -/Parent 2300 0 R +/Parent 2295 0 R /Kids [1034 0 R 1039 0 R 1044 0 R 1051 0 R 1058 0 R 1063 0 R] >> % 1072 0 obj << /Type /Pages /Count 6 -/Parent 2300 0 R +/Parent 2295 0 R /Kids [1069 0 R 1074 0 R 1078 0 R 1082 0 R 1086 0 R 1092 0 R] >> % 1101 0 obj << /Type /Pages /Count 6 -/Parent 2300 0 R +/Parent 2295 0 R /Kids [1098 0 R 1105 0 R 1112 0 R 1118 0 R 1122 0 R 1133 0 R] >> % 1143 0 obj << /Type /Pages /Count 6 -/Parent 2301 0 R +/Parent 2296 0 R /Kids [1140 0 R 1150 0 R 1156 0 R 1168 0 R 1173 0 R 1180 0 R] >> % 1189 0 obj << /Type /Pages /Count 6 -/Parent 2301 0 R +/Parent 2296 0 R /Kids [1185 0 R 1194 0 R 1202 0 R 1207 0 R 1215 0 R 1220 0 R] >> % 1231 0 obj << /Type /Pages /Count 6 -/Parent 2301 0 R +/Parent 2296 0 R /Kids [1227 0 R 1233 0 R 1246 0 R 1253 0 R 1260 0 R 1271 0 R] >> % 1290 0 obj << /Type /Pages /Count 6 -/Parent 2301 0 R +/Parent 2296 0 R /Kids [1287 0 R 1294 0 R 1305 0 R 1311 0 R 1322 0 R 1327 0 R] >> % 1342 0 obj << /Type /Pages /Count 6 -/Parent 2301 0 R +/Parent 2296 0 R /Kids [1338 0 R 1344 0 R 1353 0 R 1359 0 R 1367 0 R 1374 0 R] >> % 1391 0 obj << /Type /Pages /Count 6 -/Parent 2301 0 R +/Parent 2296 0 R /Kids [1388 0 R 1396 0 R 1405 0 R 1413 0 R 1417 0 R 1432 0 R] >> % 1440 0 obj << /Type /Pages /Count 6 -/Parent 2302 0 R +/Parent 2297 0 R /Kids [1437 0 R 1444 0 R 1451 0 R 1455 0 R 1460 0 R 1466 0 R] >> % 1480 0 obj << /Type /Pages /Count 6 -/Parent 2302 0 R +/Parent 2297 0 R /Kids [1472 0 R 1483 0 R 1488 0 R 1497 0 R 1505 0 R 1510 0 R] >> % 1519 0 obj << /Type /Pages /Count 6 -/Parent 2302 0 R +/Parent 2297 0 R /Kids [1516 0 R 1521 0 R 1529 0 R 1534 0 R 1542 0 R 1548 0 R] >> % 1566 0 obj << /Type /Pages /Count 6 -/Parent 2302 0 R +/Parent 2297 0 R /Kids [1557 0 R 1571 0 R 1575 0 R 1588 0 R 1594 0 R 1601 0 R] >> % 1610 0 obj << /Type /Pages /Count 6 -/Parent 2302 0 R +/Parent 2297 0 R /Kids [1606 0 R 1614 0 R 1618 0 R 1627 0 R 1635 0 R 1639 0 R] >> % 1647 0 obj << /Type /Pages /Count 6 -/Parent 2302 0 R +/Parent 2297 0 R /Kids [1644 0 R 1649 0 R 1656 0 R 1661 0 R 1667 0 R 1673 0 R] >> % 1683 0 obj << /Type /Pages /Count 6 -/Parent 2303 0 R +/Parent 2298 0 R /Kids [1679 0 R 1686 0 R 1693 0 R 1700 0 R 1704 0 R 1714 0 R] >> % 1722 0 obj << /Type /Pages /Count 6 -/Parent 2303 0 R +/Parent 2298 0 R /Kids [1719 0 R 1724 0 R 1737 0 R 1741 0 R 1747 0 R 1753 0 R] >> % 1763 0 obj << /Type /Pages /Count 6 -/Parent 2303 0 R +/Parent 2298 0 R /Kids [1760 0 R 1765 0 R 1769 0 R 1773 0 R 1777 0 R 1781 0 R] >> % 1792 0 obj << /Type /Pages /Count 6 -/Parent 2303 0 R +/Parent 2298 0 R /Kids [1785 0 R 1794 0 R 1798 0 R 1805 0 R 1809 0 R 1816 0 R] >> % 1826 0 obj << /Type /Pages /Count 6 -/Parent 2303 0 R +/Parent 2298 0 R /Kids [1820 0 R 1829 0 R 1833 0 R 1840 0 R 1844 0 R 1851 0 R] >> % 1864 0 obj << /Type /Pages /Count 6 -/Parent 2303 0 R +/Parent 2298 0 R /Kids [1855 0 R 1866 0 R 1871 0 R 1878 0 R 1884 0 R 1888 0 R] >> % 1899 0 obj << /Type /Pages /Count 6 -/Parent 2304 0 R +/Parent 2299 0 R /Kids [1894 0 R 1901 0 R 1907 0 R 1913 0 R 1918 0 R 1925 0 R] >> % 1938 0 obj << /Type /Pages /Count 6 -/Parent 2304 0 R +/Parent 2299 0 R /Kids [1932 0 R 1941 0 R 1948 0 R 1955 0 R 1961 0 R 1965 0 R] >> -% 1975 0 obj +% 1976 0 obj << /Type /Pages /Count 6 -/Parent 2304 0 R -/Kids [1971 0 R 1980 0 R 1985 0 R 1990 0 R 1998 0 R 2002 0 R] +/Parent 2299 0 R +/Kids [1972 0 R 1984 0 R 1988 0 R 1997 0 R 2001 0 R 2009 0 R] >> -% 2013 0 obj +% 2017 0 obj << /Type /Pages /Count 6 -/Parent 2304 0 R -/Kids [2010 0 R 2016 0 R 2020 0 R 2026 0 R 2030 0 R 2037 0 R] +/Parent 2299 0 R +/Kids [2014 0 R 2019 0 R 2025 0 R 2029 0 R 2036 0 R 2048 0 R] >> -% 2052 0 obj +% 2056 0 obj << /Type /Pages /Count 6 -/Parent 2304 0 R -/Kids [2049 0 R 2055 0 R 2063 0 R 2072 0 R 2076 0 R 2086 0 R] +/Parent 2299 0 R +/Kids [2053 0 R 2062 0 R 2071 0 R 2075 0 R 2085 0 R 2099 0 R] >> -% 2105 0 obj +% 2114 0 obj << /Type /Pages /Count 6 -/Parent 2304 0 R -/Kids [2100 0 R 2110 0 R 2121 0 R 2149 0 R 2170 0 R 2188 0 R] +/Parent 2299 0 R +/Kids [2108 0 R 2120 0 R 2148 0 R 2169 0 R 2187 0 R 2203 0 R] >> -% 2207 0 obj +% 2210 0 obj << /Type /Pages /Count 6 -/Parent 2305 0 R -/Kids [2204 0 R 2209 0 R 2213 0 R 2218 0 R 2222 0 R 2226 0 R] ->> -% 2237 0 obj -<< -/Type /Pages -/Count 2 -/Parent 2305 0 R -/Kids [2230 0 R 2239 0 R] +/Parent 2300 0 R +/Kids [2207 0 R 2212 0 R 2217 0 R 2221 0 R 2225 0 R 2233 0 R] >> -% 2300 0 obj +% 2295 0 obj << /Type /Pages /Count 36 -/Parent 2306 0 R +/Parent 2301 0 R /Kids [676 0 R 889 0 R 980 0 R 1037 0 R 1072 0 R 1101 0 R] >> -% 2301 0 obj +% 2296 0 obj << /Type /Pages /Count 36 -/Parent 2306 0 R +/Parent 2301 0 R /Kids [1143 0 R 1189 0 R 1231 0 R 1290 0 R 1342 0 R 1391 0 R] >> -% 2302 0 obj +% 2297 0 obj << /Type /Pages /Count 36 -/Parent 2306 0 R +/Parent 2301 0 R /Kids [1440 0 R 1480 0 R 1519 0 R 1566 0 R 1610 0 R 1647 0 R] >> -% 2303 0 obj +% 2298 0 obj << /Type /Pages /Count 36 -/Parent 2306 0 R +/Parent 2301 0 R /Kids [1683 0 R 1722 0 R 1763 0 R 1792 0 R 1826 0 R 1864 0 R] >> -% 2304 0 obj +% 2299 0 obj << /Type /Pages /Count 36 -/Parent 2306 0 R -/Kids [1899 0 R 1938 0 R 1975 0 R 2013 0 R 2052 0 R 2105 0 R] +/Parent 2301 0 R +/Kids [1899 0 R 1938 0 R 1976 0 R 2017 0 R 2056 0 R 2114 0 R] >> -% 2305 0 obj +% 2300 0 obj << /Type /Pages -/Count 8 -/Parent 2306 0 R -/Kids [2207 0 R 2237 0 R] +/Count 6 +/Parent 2301 0 R +/Kids [2210 0 R] >> -% 2306 0 obj +% 2301 0 obj << /Type /Pages -/Count 188 -/Kids [2300 0 R 2301 0 R 2302 0 R 2303 0 R 2304 0 R 2305 0 R] +/Count 186 +/Kids [2295 0 R 2296 0 R 2297 0 R 2298 0 R 2299 0 R 2300 0 R] >> -% 2307 0 obj +% 2302 0 obj << /Type /Outlines /First 4 0 R @@ -36362,27 +36568,6 @@ stream /Prev 558 0 R /Next 566 0 R >> - -endstream -endobj -2308 0 obj -<< -/Type /ObjStm -/N 100 -/First 885 -/Length 9744 ->> -stream -558 0 554 88 550 176 546 264 542 338 538 463 534 537 530 625 526 713 522 801 -518 889 514 963 510 1088 506 1162 502 1250 498 1338 494 1412 490 1537 486 1611 482 1699 -478 1787 474 1875 470 1963 466 2051 462 2139 458 2227 454 2315 450 2403 446 2491 442 2579 -438 2667 434 2755 430 2843 426 2931 422 3005 418 3131 414 3205 410 3293 406 3381 401 3469 -397 3557 393 3645 389 3733 385 3821 381 3909 377 3997 373 4085 369 4173 365 4261 361 4349 -357 4437 353 4525 349 4613 345 4701 341 4789 337 4877 333 4965 329 5053 325 5141 321 5229 -317 5317 313 5405 309 5479 305 5605 301 5679 297 5767 293 5855 289 5929 285 6054 281 6128 -277 6216 273 6304 269 6392 265 6480 261 6568 257 6656 253 6744 249 6832 245 6920 241 7008 -237 7096 233 7184 229 7272 225 7360 221 7434 217 7559 213 7632 209 7719 205 7793 200 7881 -196 7969 192 8057 188 8145 184 8219 180 8345 176 8419 172 8507 168 8595 164 8683 160 8771 % 558 0 obj << /Title 559 0 R @@ -36407,6 +36592,27 @@ stream /Prev 546 0 R /Next 554 0 R >> + +endstream +endobj +2303 0 obj +<< +/Type /ObjStm +/N 100 +/First 885 +/Length 9744 +>> +stream +546 0 542 74 538 199 534 273 530 361 526 449 522 537 518 625 514 699 510 824 +506 898 502 986 498 1074 494 1148 490 1273 486 1347 482 1435 478 1523 474 1611 470 1699 +466 1787 462 1875 458 1963 454 2051 450 2139 446 2227 442 2315 438 2403 434 2491 430 2579 +426 2667 422 2741 418 2867 414 2941 410 3029 406 3117 401 3205 397 3293 393 3381 389 3469 +385 3557 381 3645 377 3733 373 3821 369 3909 365 3997 361 4085 357 4173 353 4261 349 4349 +345 4437 341 4525 337 4613 333 4701 329 4789 325 4877 321 4965 317 5053 313 5141 309 5215 +305 5341 301 5415 297 5503 293 5591 289 5665 285 5790 281 5864 277 5952 273 6040 269 6128 +265 6216 261 6304 257 6392 253 6480 249 6568 245 6656 241 6744 237 6832 233 6920 229 7008 +225 7096 221 7170 217 7295 213 7368 209 7455 205 7529 200 7617 196 7705 192 7793 188 7881 +184 7955 180 8081 176 8155 172 8243 168 8331 164 8419 160 8507 156 8595 152 8683 148 8771 % 546 0 obj << /Title 547 0 R @@ -37190,27 +37396,6 @@ stream /Prev 156 0 R /Next 164 0 R >> - -endstream -endobj -2309 0 obj -<< -/Type /ObjStm -/N 100 -/First 944 -/Length 15516 ->> -stream -156 0 152 88 148 176 144 264 140 352 136 440 132 528 128 616 124 704 120 792 -116 880 112 968 108 1056 104 1130 100 1256 96 1327 92 1410 88 1492 84 1574 80 1656 -76 1738 72 1820 68 1902 64 1984 60 2066 56 2148 52 2230 48 2312 44 2394 40 2463 -36 2572 32 2692 28 2761 24 2817 20 2936 16 3018 12 3087 8 3204 4 3269 2310 3362 -2311 3558 2312 3731 2313 3911 2314 4088 2315 4265 2316 4445 2317 4623 2318 4803 2319 4981 2320 5161 -2321 5325 2322 5491 2323 5658 2324 5830 2325 6000 2326 6172 2327 6342 2328 6514 2329 6684 2330 6856 -2331 7025 2332 7194 2333 7366 2334 7536 2335 7708 2336 7892 2337 8087 2338 8305 2339 8524 2340 8725 -2341 8919 2342 9099 2343 9287 2344 9513 2345 9733 2346 9958 2347 10194 2348 10430 2349 10660 2350 10860 -2351 11040 2352 11219 2353 11399 2354 11578 2355 11758 2356 11937 2357 12117 2358 12295 2359 12473 2360 12653 -2361 12832 2362 13012 2363 13191 2364 13371 2365 13550 2366 13720 2367 13892 2368 14061 2369 14230 2370 14402 % 156 0 obj << /Title 157 0 R @@ -37235,6 +37420,27 @@ stream /Prev 144 0 R /Next 152 0 R >> + +endstream +endobj +2304 0 obj +<< +/Type /ObjStm +/N 100 +/First 949 +/Length 15848 +>> +stream +144 0 140 88 136 176 132 264 128 352 124 440 120 528 116 616 112 704 108 792 +104 866 100 992 96 1063 92 1146 88 1228 84 1310 80 1392 76 1474 72 1556 68 1638 +64 1720 60 1802 56 1884 52 1966 48 2048 44 2130 40 2199 36 2308 32 2428 28 2497 +24 2553 20 2672 16 2754 12 2823 8 2940 4 3005 2305 3098 2306 3294 2307 3467 2308 3647 +2309 3824 2310 4001 2311 4181 2312 4359 2313 4539 2314 4717 2315 4897 2316 5061 2317 5227 2318 5394 +2319 5566 2320 5736 2321 5908 2322 6078 2323 6250 2324 6420 2325 6592 2326 6761 2327 6930 2328 7102 +2329 7272 2330 7444 2331 7628 2332 7838 2333 8108 2334 8334 2335 8545 2336 8742 2337 8921 2338 9106 +2339 9318 2340 9541 2341 9764 2342 9997 2343 10233 2344 10465 2345 10676 2346 10854 2347 11032 2348 11212 +2349 11391 2350 11571 2351 11750 2352 11930 2353 12109 2354 12289 2355 12468 2356 12648 2357 12826 2358 13004 +2359 13184 2360 13363 2361 13533 2362 13705 2363 13874 2364 14043 2365 14215 2366 14385 2367 14557 2368 14727 % 144 0 obj << /Title 145 0 R @@ -37525,724 +37731,724 @@ stream << /Title 5 0 R /A 1 0 R -/Parent 2307 0 R +/Parent 2302 0 R /First 8 0 R /Last 607 0 R /Count -13 >> -% 2310 0 obj +% 2305 0 obj << -/Names [(Doc-Start) 672 0 R (Hfootnote.1) 924 0 R (Hfootnote.2) 925 0 R (Hfootnote.3) 978 0 R (Hfootnote.4) 1974 0 R (Hfootnote.5) 2043 0 R] +/Names [(Doc-Start) 672 0 R (Hfootnote.1) 924 0 R (Hfootnote.2) 925 0 R (Hfootnote.3) 978 0 R (Hfootnote.4) 1975 0 R (Hfootnote.5) 2042 0 R] /Limits [(Doc-Start) (Hfootnote.5)] >> -% 2311 0 obj +% 2306 0 obj << /Names [(Item.1) 951 0 R (Item.10) 965 0 R (Item.100) 1697 0 R (Item.101) 1707 0 R (Item.102) 1708 0 R (Item.103) 1709 0 R] /Limits [(Item.1) (Item.103)] >> -% 2312 0 obj +% 2307 0 obj << /Names [(Item.104) 1727 0 R (Item.105) 1728 0 R (Item.106) 1729 0 R (Item.107) 1730 0 R (Item.108) 1731 0 R (Item.109) 1732 0 R] /Limits [(Item.104) (Item.109)] >> -% 2313 0 obj +% 2308 0 obj << /Names [(Item.11) 966 0 R (Item.110) 1733 0 R (Item.111) 1734 0 R (Item.112) 1735 0 R (Item.113) 1744 0 R (Item.114) 1745 0 R] /Limits [(Item.11) (Item.114)] >> -% 2314 0 obj +% 2309 0 obj << /Names [(Item.115) 1750 0 R (Item.116) 1751 0 R (Item.117) 1756 0 R (Item.118) 1757 0 R (Item.119) 1758 0 R (Item.12) 967 0 R] /Limits [(Item.115) (Item.12)] >> -% 2315 0 obj +% 2310 0 obj << /Names [(Item.120) 1788 0 R (Item.121) 1789 0 R (Item.122) 1790 0 R (Item.123) 1801 0 R (Item.124) 1802 0 R (Item.125) 1803 0 R] /Limits [(Item.120) (Item.125)] >> -% 2316 0 obj +% 2311 0 obj << /Names [(Item.126) 1812 0 R (Item.127) 1813 0 R (Item.128) 1814 0 R (Item.129) 1823 0 R (Item.13) 968 0 R (Item.130) 1824 0 R] /Limits [(Item.126) (Item.130)] >> -% 2317 0 obj +% 2312 0 obj << /Names [(Item.131) 1825 0 R (Item.132) 1836 0 R (Item.133) 1837 0 R (Item.134) 1838 0 R (Item.135) 1847 0 R (Item.136) 1848 0 R] /Limits [(Item.131) (Item.136)] >> -% 2318 0 obj +% 2313 0 obj << /Names [(Item.137) 1849 0 R (Item.138) 1858 0 R (Item.139) 1859 0 R (Item.14) 969 0 R (Item.140) 1861 0 R (Item.141) 1862 0 R] /Limits [(Item.137) (Item.141)] >> -% 2319 0 obj +% 2314 0 obj << -/Names [(Item.142) 1863 0 R (Item.143) 1869 0 R (Item.144) 1874 0 R (Item.145) 2114 0 R (Item.146) 2115 0 R (Item.147) 2216 0 R] +/Names [(Item.142) 1863 0 R (Item.143) 1869 0 R (Item.144) 1874 0 R (Item.145) 2112 0 R (Item.146) 2113 0 R (Item.147) 2215 0 R] /Limits [(Item.142) (Item.147)] >> -% 2320 0 obj +% 2315 0 obj << /Names [(Item.15) 970 0 R (Item.16) 971 0 R (Item.17) 972 0 R (Item.18) 973 0 R (Item.19) 974 0 R (Item.2) 952 0 R] /Limits [(Item.15) (Item.2)] >> -% 2321 0 obj +% 2316 0 obj << /Names [(Item.20) 975 0 R (Item.21) 976 0 R (Item.22) 977 0 R (Item.23) 987 0 R (Item.24) 988 0 R (Item.25) 989 0 R] /Limits [(Item.20) (Item.25)] >> -% 2322 0 obj +% 2317 0 obj << /Names [(Item.26) 990 0 R (Item.27) 991 0 R (Item.28) 992 0 R (Item.29) 1006 0 R (Item.3) 953 0 R (Item.30) 1007 0 R] /Limits [(Item.26) (Item.30)] >> -% 2323 0 obj +% 2318 0 obj << /Names [(Item.31) 1008 0 R (Item.32) 1009 0 R (Item.33) 1010 0 R (Item.34) 1017 0 R (Item.35) 1018 0 R (Item.36) 1019 0 R] /Limits [(Item.31) (Item.36)] >> -% 2324 0 obj +% 2319 0 obj << /Names [(Item.37) 1020 0 R (Item.38) 1021 0 R (Item.39) 1022 0 R (Item.4) 954 0 R (Item.40) 1023 0 R (Item.41) 1024 0 R] /Limits [(Item.37) (Item.41)] >> -% 2325 0 obj +% 2320 0 obj << /Names [(Item.42) 1066 0 R (Item.43) 1159 0 R (Item.44) 1188 0 R (Item.45) 1210 0 R (Item.46) 1236 0 R (Item.47) 1408 0 R] /Limits [(Item.42) (Item.47)] >> -% 2326 0 obj +% 2321 0 obj << /Names [(Item.48) 1409 0 R (Item.49) 1410 0 R (Item.5) 955 0 R (Item.50) 1463 0 R (Item.51) 1470 0 R (Item.52) 1475 0 R] /Limits [(Item.48) (Item.52)] >> -% 2327 0 obj +% 2322 0 obj << /Names [(Item.53) 1476 0 R (Item.54) 1477 0 R (Item.55) 1478 0 R (Item.56) 1479 0 R (Item.57) 1491 0 R (Item.58) 1492 0 R] /Limits [(Item.53) (Item.58)] >> -% 2328 0 obj +% 2323 0 obj << /Names [(Item.59) 1493 0 R (Item.6) 956 0 R (Item.60) 1500 0 R (Item.61) 1524 0 R (Item.62) 1525 0 R (Item.63) 1532 0 R] /Limits [(Item.59) (Item.63)] >> -% 2329 0 obj +% 2324 0 obj << /Names [(Item.64) 1537 0 R (Item.65) 1538 0 R (Item.66) 1539 0 R (Item.67) 1551 0 R (Item.68) 1552 0 R (Item.69) 1553 0 R] /Limits [(Item.64) (Item.69)] >> -% 2330 0 obj +% 2325 0 obj << /Names [(Item.7) 957 0 R (Item.70) 1554 0 R (Item.71) 1555 0 R (Item.72) 1560 0 R (Item.73) 1561 0 R (Item.74) 1562 0 R] /Limits [(Item.7) (Item.74)] >> -% 2331 0 obj +% 2326 0 obj << /Names [(Item.75) 1563 0 R (Item.76) 1564 0 R (Item.77) 1565 0 R (Item.78) 1578 0 R (Item.79) 1579 0 R (Item.8) 958 0 R] /Limits [(Item.75) (Item.8)] >> -% 2332 0 obj +% 2327 0 obj << /Names [(Item.80) 1580 0 R (Item.81) 1581 0 R (Item.82) 1582 0 R (Item.83) 1583 0 R (Item.84) 1584 0 R (Item.85) 1597 0 R] /Limits [(Item.80) (Item.85)] >> -% 2333 0 obj +% 2328 0 obj << /Names [(Item.86) 1609 0 R (Item.87) 1621 0 R (Item.88) 1622 0 R (Item.89) 1630 0 R (Item.9) 964 0 R (Item.90) 1631 0 R] /Limits [(Item.86) (Item.90)] >> -% 2334 0 obj +% 2329 0 obj << /Names [(Item.91) 1652 0 R (Item.92) 1653 0 R (Item.93) 1664 0 R (Item.94) 1670 0 R (Item.95) 1676 0 R (Item.96) 1682 0 R] /Limits [(Item.91) (Item.96)] >> -% 2335 0 obj +% 2330 0 obj << -/Names [(Item.97) 1689 0 R (Item.98) 1690 0 R (Item.99) 1696 0 R (algocf.1) 2119 0 R (algocf.2) 2165 0 R (algocfline.1) 2104 0 R] +/Names [(Item.97) 1689 0 R (Item.98) 1690 0 R (Item.99) 1696 0 R (algocf.1) 2118 0 R (algocf.2) 2164 0 R (algocfline.1) 2103 0 R] /Limits [(Item.97) (algocfline.1)] >> +% 2331 0 obj +<< +/Names [(algocfline.2) 2172 0 R (cite.2007c) 938 0 R (cite.2007d) 939 0 R (cite.BERTACCINIFILIPPONE) 1991 0 R (cite.BLACS) 914 0 R (cite.BLAS1) 897 0 R] +/Limits [(algocfline.2) (cite.BLAS1)] +>> +% 2332 0 obj +<< +/Names [(cite.BLAS2) 898 0 R (cite.BLAS3) 899 0 R (cite.CaFiRo:2014) 2089 0 R (cite.DesPat:11) 892 0 R (cite.DesignPatterns) 1055 0 R (cite.Filippone:2017:SMM:3034774.3017994) 2237 0 R] +/Limits [(cite.BLAS2) (cite.Filippone:2017:SMM:3034774.3017994)] +>> +% 2333 0 obj +<< +/Names [(cite.KIVA3PSBLAS) 2231 0 R (cite.METIS) 926 0 R (cite.MPI1) 2236 0 R (cite.MRC:11) 2104 0 R (cite.OurTechRep) 2090 0 R (cite.PARA04FOREST) 2229 0 R] +/Limits [(cite.KIVA3PSBLAS) (cite.PARA04FOREST)] +>> +% 2334 0 obj +<< +/Names [(cite.PSBLAS) 2230 0 R (cite.RouXiaXu:11) 893 0 R (cite.Sparse03) 891 0 R (cite.machiels) 894 0 R (cite.metcalf) 890 0 R (cite.sblas02) 896 0 R] +/Limits [(cite.PSBLAS) (cite.sblas02)] +>> +% 2335 0 obj +<< +/Names [(cite.sblas97) 895 0 R (descdata) 998 0 R (equation.4.1) 1274 0 R (equation.4.2) 1275 0 R (equation.4.3) 1276 0 R (figure.1) 908 0 R] +/Limits [(cite.sblas97) (figure.1)] +>> % 2336 0 obj << -/Names [(algocfline.2) 2173 0 R (cite.2007c) 938 0 R (cite.2007d) 939 0 R (cite.BLACS) 914 0 R (cite.BLAS1) 897 0 R (cite.BLAS2) 898 0 R] -/Limits [(algocfline.2) (cite.BLAS2)] +/Names [(figure.2) 934 0 R (figure.3) 1377 0 R (figure.4) 1411 0 R (figure.5) 2111 0 R (figure.6) 2106 0 R (figure.7) 2151 0 R] +/Limits [(figure.2) (figure.7)] >> % 2337 0 obj << -/Names [(cite.BLAS3) 899 0 R (cite.CaFiRo:2014) 2090 0 R (cite.DesPat:11) 892 0 R (cite.DesignPatterns) 1055 0 R (cite.KIVA3PSBLAS) 2236 0 R (cite.METIS) 926 0 R] -/Limits [(cite.BLAS3) (cite.METIS)] +/Names [(figure.8) 2163 0 R (figure.9) 2190 0 R (listing.1) 1026 0 R (listing.2) 1056 0 R (listing.3) 1096 0 R (listing.4) 1116 0 R] +/Limits [(figure.8) (listing.4)] >> % 2338 0 obj << -/Names [(cite.MPI1) 2242 0 R (cite.MRC:11) 2106 0 R (cite.OurTechRep) 2091 0 R (cite.PARA04FOREST) 2234 0 R (cite.PSBLAS) 2235 0 R (cite.RouXiaXu:11) 893 0 R] -/Limits [(cite.MPI1) (cite.RouXiaXu:11)] +/Names [(listing.5) 1881 0 R (listing.6) 1882 0 R (lstlisting.-1) 1237 0 R (lstlisting.-10) 1951 0 R (lstlisting.-11) 1958 0 R (lstlisting.-12) 2039 0 R] +/Limits [(listing.5) (lstlisting.-12)] >> % 2339 0 obj << -/Names [(cite.Sparse03) 891 0 R (cite.machiels) 894 0 R (cite.metcalf) 890 0 R (cite.sblas02) 896 0 R (cite.sblas97) 895 0 R (descdata) 998 0 R] -/Limits [(cite.Sparse03) (descdata)] +/Names [(lstlisting.-13) 2065 0 R (lstlisting.-14) 2123 0 R (lstlisting.-2) 1891 0 R (lstlisting.-3) 1897 0 R (lstlisting.-4) 1904 0 R (lstlisting.-5) 1910 0 R] +/Limits [(lstlisting.-13) (lstlisting.-5)] >> % 2340 0 obj << -/Names [(equation.4.1) 1274 0 R (equation.4.2) 1275 0 R (equation.4.3) 1276 0 R (figure.1) 908 0 R (figure.2) 934 0 R (figure.3) 1377 0 R] -/Limits [(equation.4.1) (figure.3)] +/Names [(lstlisting.-6) 1921 0 R (lstlisting.-7) 1928 0 R (lstlisting.-8) 1935 0 R (lstlisting.-9) 1944 0 R (lstnumber.-1.1) 1238 0 R (lstnumber.-1.2) 1239 0 R] +/Limits [(lstlisting.-6) (lstnumber.-1.2)] >> % 2341 0 obj << -/Names [(figure.4) 1411 0 R (figure.5) 2113 0 R (figure.6) 2108 0 R (figure.7) 2152 0 R (figure.8) 2164 0 R (figure.9) 2191 0 R] -/Limits [(figure.4) (figure.9)] +/Names [(lstnumber.-1.3) 1240 0 R (lstnumber.-1.4) 1241 0 R (lstnumber.-10.1) 1952 0 R (lstnumber.-11.1) 1959 0 R (lstnumber.-12.1) 2040 0 R (lstnumber.-12.2) 2041 0 R] +/Limits [(lstnumber.-1.3) (lstnumber.-12.2)] >> % 2342 0 obj << -/Names [(listing.1) 1026 0 R (listing.2) 1056 0 R (listing.3) 1096 0 R (listing.4) 1116 0 R (listing.5) 1881 0 R (listing.6) 1882 0 R] -/Limits [(listing.1) (listing.6)] +/Names [(lstnumber.-13.1) 2066 0 R (lstnumber.-13.2) 2067 0 R (lstnumber.-14.1) 2124 0 R (lstnumber.-14.2) 2125 0 R (lstnumber.-14.3) 2126 0 R (lstnumber.-14.4) 2127 0 R] +/Limits [(lstnumber.-13.1) (lstnumber.-14.4)] >> % 2343 0 obj << -/Names [(lstlisting.-1) 1237 0 R (lstlisting.-10) 1951 0 R (lstlisting.-11) 1958 0 R (lstlisting.-12) 2040 0 R (lstlisting.-13) 2066 0 R (lstlisting.-14) 2124 0 R] -/Limits [(lstlisting.-1) (lstlisting.-14)] +/Names [(lstnumber.-14.5) 2128 0 R (lstnumber.-14.6) 2129 0 R (lstnumber.-14.7) 2130 0 R (lstnumber.-2.1) 1892 0 R (lstnumber.-3.1) 1898 0 R (lstnumber.-4.1) 1905 0 R] +/Limits [(lstnumber.-14.5) (lstnumber.-4.1)] >> % 2344 0 obj << -/Names [(lstlisting.-2) 1891 0 R (lstlisting.-3) 1897 0 R (lstlisting.-4) 1904 0 R (lstlisting.-5) 1910 0 R (lstlisting.-6) 1921 0 R (lstlisting.-7) 1928 0 R] -/Limits [(lstlisting.-2) (lstlisting.-7)] +/Names [(lstnumber.-5.1) 1911 0 R (lstnumber.-6.1) 1922 0 R (lstnumber.-7.1) 1929 0 R (lstnumber.-8.1) 1936 0 R (lstnumber.-9.1) 1945 0 R (page.1) 671 0 R] +/Limits [(lstnumber.-5.1) (page.1)] >> % 2345 0 obj << -/Names [(lstlisting.-8) 1935 0 R (lstlisting.-9) 1944 0 R (lstnumber.-1.1) 1238 0 R (lstnumber.-1.2) 1239 0 R (lstnumber.-1.3) 1240 0 R (lstnumber.-1.4) 1241 0 R] -/Limits [(lstlisting.-8) (lstnumber.-1.4)] +/Names [(page.10) 1005 0 R (page.100) 1663 0 R (page.101) 1669 0 R (page.102) 1675 0 R (page.103) 1681 0 R (page.104) 1688 0 R] +/Limits [(page.10) (page.104)] >> % 2346 0 obj << -/Names [(lstnumber.-10.1) 1952 0 R (lstnumber.-11.1) 1959 0 R (lstnumber.-12.1) 2041 0 R (lstnumber.-12.2) 2042 0 R (lstnumber.-13.1) 2067 0 R (lstnumber.-13.2) 2068 0 R] -/Limits [(lstnumber.-10.1) (lstnumber.-13.2)] +/Names [(page.105) 1695 0 R (page.106) 1702 0 R (page.107) 1706 0 R (page.108) 1716 0 R (page.109) 1721 0 R (page.11) 1016 0 R] +/Limits [(page.105) (page.11)] >> % 2347 0 obj << -/Names [(lstnumber.-14.1) 2125 0 R (lstnumber.-14.2) 2126 0 R (lstnumber.-14.3) 2127 0 R (lstnumber.-14.4) 2128 0 R (lstnumber.-14.5) 2129 0 R (lstnumber.-14.6) 2130 0 R] -/Limits [(lstnumber.-14.1) (lstnumber.-14.6)] +/Names [(page.110) 1726 0 R (page.111) 1739 0 R (page.112) 1743 0 R (page.113) 1749 0 R (page.114) 1755 0 R (page.115) 1762 0 R] +/Limits [(page.110) (page.115)] >> % 2348 0 obj << -/Names [(lstnumber.-14.7) 2131 0 R (lstnumber.-2.1) 1892 0 R (lstnumber.-3.1) 1898 0 R (lstnumber.-4.1) 1905 0 R (lstnumber.-5.1) 1911 0 R (lstnumber.-6.1) 1922 0 R] -/Limits [(lstnumber.-14.7) (lstnumber.-6.1)] +/Names [(page.116) 1767 0 R (page.117) 1771 0 R (page.118) 1775 0 R (page.119) 1779 0 R (page.12) 1032 0 R (page.120) 1783 0 R] +/Limits [(page.116) (page.120)] >> % 2349 0 obj << -/Names [(lstnumber.-7.1) 1929 0 R (lstnumber.-8.1) 1936 0 R (lstnumber.-9.1) 1945 0 R (page.1) 671 0 R (page.10) 1005 0 R (page.100) 1663 0 R] -/Limits [(lstnumber.-7.1) (page.100)] +/Names [(page.121) 1787 0 R (page.122) 1796 0 R (page.123) 1800 0 R (page.124) 1807 0 R (page.125) 1811 0 R (page.126) 1818 0 R] +/Limits [(page.121) (page.126)] >> % 2350 0 obj << -/Names [(page.101) 1669 0 R (page.102) 1675 0 R (page.103) 1681 0 R (page.104) 1688 0 R (page.105) 1695 0 R (page.106) 1702 0 R] -/Limits [(page.101) (page.106)] +/Names [(page.127) 1822 0 R (page.128) 1831 0 R (page.129) 1835 0 R (page.13) 1036 0 R (page.130) 1842 0 R (page.131) 1846 0 R] +/Limits [(page.127) (page.131)] >> % 2351 0 obj << -/Names [(page.107) 1706 0 R (page.108) 1716 0 R (page.109) 1721 0 R (page.11) 1016 0 R (page.110) 1726 0 R (page.111) 1739 0 R] -/Limits [(page.107) (page.111)] +/Names [(page.132) 1853 0 R (page.133) 1857 0 R (page.134) 1868 0 R (page.135) 1873 0 R (page.136) 1880 0 R (page.137) 1886 0 R] +/Limits [(page.132) (page.137)] >> % 2352 0 obj << -/Names [(page.112) 1743 0 R (page.113) 1749 0 R (page.114) 1755 0 R (page.115) 1762 0 R (page.116) 1767 0 R (page.117) 1771 0 R] -/Limits [(page.112) (page.117)] +/Names [(page.138) 1890 0 R (page.139) 1896 0 R (page.14) 1041 0 R (page.140) 1903 0 R (page.141) 1909 0 R (page.142) 1915 0 R] +/Limits [(page.138) (page.142)] >> % 2353 0 obj << -/Names [(page.118) 1775 0 R (page.119) 1779 0 R (page.12) 1032 0 R (page.120) 1783 0 R (page.121) 1787 0 R (page.122) 1796 0 R] -/Limits [(page.118) (page.122)] +/Names [(page.143) 1920 0 R (page.144) 1927 0 R (page.145) 1934 0 R (page.146) 1943 0 R (page.147) 1950 0 R (page.148) 1957 0 R] +/Limits [(page.143) (page.148)] >> % 2354 0 obj << -/Names [(page.123) 1800 0 R (page.124) 1807 0 R (page.125) 1811 0 R (page.126) 1818 0 R (page.127) 1822 0 R (page.128) 1831 0 R] -/Limits [(page.123) (page.128)] +/Names [(page.149) 1963 0 R (page.15) 1046 0 R (page.150) 1967 0 R (page.151) 1974 0 R (page.152) 1986 0 R (page.153) 1990 0 R] +/Limits [(page.149) (page.153)] >> % 2355 0 obj << -/Names [(page.129) 1835 0 R (page.13) 1036 0 R (page.130) 1842 0 R (page.131) 1846 0 R (page.132) 1853 0 R (page.133) 1857 0 R] -/Limits [(page.129) (page.133)] +/Names [(page.154) 1999 0 R (page.155) 2003 0 R (page.156) 2011 0 R (page.157) 2016 0 R (page.158) 2021 0 R (page.159) 2027 0 R] +/Limits [(page.154) (page.159)] >> % 2356 0 obj << -/Names [(page.134) 1868 0 R (page.135) 1873 0 R (page.136) 1880 0 R (page.137) 1886 0 R (page.138) 1890 0 R (page.139) 1896 0 R] -/Limits [(page.134) (page.139)] +/Names [(page.16) 1053 0 R (page.160) 2031 0 R (page.161) 2038 0 R (page.162) 2050 0 R (page.163) 2055 0 R (page.164) 2064 0 R] +/Limits [(page.16) (page.164)] >> % 2357 0 obj << -/Names [(page.14) 1041 0 R (page.140) 1903 0 R (page.141) 1909 0 R (page.142) 1915 0 R (page.143) 1920 0 R (page.144) 1927 0 R] -/Limits [(page.14) (page.144)] +/Names [(page.165) 2073 0 R (page.166) 2077 0 R (page.167) 2087 0 R (page.168) 2101 0 R (page.169) 2110 0 R (page.17) 1060 0 R] +/Limits [(page.165) (page.17)] >> % 2358 0 obj << -/Names [(page.145) 1934 0 R (page.146) 1943 0 R (page.147) 1950 0 R (page.148) 1957 0 R (page.149) 1963 0 R (page.15) 1046 0 R] -/Limits [(page.145) (page.15)] +/Names [(page.170) 2122 0 R (page.171) 2150 0 R (page.172) 2171 0 R (page.173) 2189 0 R (page.174) 2205 0 R (page.175) 2209 0 R] +/Limits [(page.170) (page.175)] >> % 2359 0 obj << -/Names [(page.150) 1967 0 R (page.151) 1973 0 R (page.152) 1982 0 R (page.153) 1987 0 R (page.154) 1992 0 R (page.155) 2000 0 R] -/Limits [(page.150) (page.155)] +/Names [(page.176) 2214 0 R (page.177) 2219 0 R (page.178) 2223 0 R (page.179) 2227 0 R (page.18) 1065 0 R (page.180) 2235 0 R] +/Limits [(page.176) (page.180)] >> % 2360 0 obj << -/Names [(page.156) 2004 0 R (page.157) 2012 0 R (page.158) 2018 0 R (page.159) 2022 0 R (page.16) 1053 0 R (page.160) 2028 0 R] -/Limits [(page.156) (page.160)] +/Names [(page.19) 1071 0 R (page.2) 681 0 R (page.20) 1076 0 R (page.21) 1080 0 R (page.22) 1084 0 R (page.23) 1088 0 R] +/Limits [(page.19) (page.23)] >> % 2361 0 obj << -/Names [(page.161) 2032 0 R (page.162) 2039 0 R (page.163) 2051 0 R (page.164) 2057 0 R (page.165) 2065 0 R (page.166) 2074 0 R] -/Limits [(page.161) (page.166)] +/Names [(page.24) 1094 0 R (page.25) 1100 0 R (page.26) 1107 0 R (page.27) 1114 0 R (page.28) 1120 0 R (page.29) 1124 0 R] +/Limits [(page.24) (page.29)] >> % 2362 0 obj << -/Names [(page.167) 2078 0 R (page.168) 2088 0 R (page.169) 2102 0 R (page.17) 1060 0 R (page.170) 2112 0 R (page.171) 2123 0 R] -/Limits [(page.167) (page.171)] +/Names [(page.3) 920 0 R (page.30) 1135 0 R (page.31) 1142 0 R (page.32) 1152 0 R (page.33) 1158 0 R (page.34) 1170 0 R] +/Limits [(page.3) (page.34)] >> % 2363 0 obj << -/Names [(page.172) 2151 0 R (page.173) 2172 0 R (page.174) 2190 0 R (page.175) 2206 0 R (page.176) 2211 0 R (page.177) 2215 0 R] -/Limits [(page.172) (page.177)] +/Names [(page.35) 1175 0 R (page.36) 1182 0 R (page.37) 1187 0 R (page.38) 1196 0 R (page.39) 1204 0 R (page.4) 933 0 R] +/Limits [(page.35) (page.4)] >> % 2364 0 obj << -/Names [(page.178) 2220 0 R (page.179) 2224 0 R (page.18) 1065 0 R (page.180) 2228 0 R (page.181) 2232 0 R (page.182) 2241 0 R] -/Limits [(page.178) (page.182)] +/Names [(page.40) 1209 0 R (page.41) 1217 0 R (page.42) 1222 0 R (page.43) 1229 0 R (page.44) 1235 0 R (page.45) 1248 0 R] +/Limits [(page.40) (page.45)] >> % 2365 0 obj << -/Names [(page.19) 1071 0 R (page.2) 681 0 R (page.20) 1076 0 R (page.21) 1080 0 R (page.22) 1084 0 R (page.23) 1088 0 R] -/Limits [(page.19) (page.23)] +/Names [(page.46) 1255 0 R (page.47) 1262 0 R (page.48) 1273 0 R (page.49) 1289 0 R (page.5) 945 0 R (page.50) 1296 0 R] +/Limits [(page.46) (page.50)] >> % 2366 0 obj << -/Names [(page.24) 1094 0 R (page.25) 1100 0 R (page.26) 1107 0 R (page.27) 1114 0 R (page.28) 1120 0 R (page.29) 1124 0 R] -/Limits [(page.24) (page.29)] +/Names [(page.51) 1307 0 R (page.52) 1313 0 R (page.53) 1324 0 R (page.54) 1329 0 R (page.55) 1340 0 R (page.56) 1346 0 R] +/Limits [(page.51) (page.56)] >> % 2367 0 obj << -/Names [(page.3) 920 0 R (page.30) 1135 0 R (page.31) 1142 0 R (page.32) 1152 0 R (page.33) 1158 0 R (page.34) 1170 0 R] -/Limits [(page.3) (page.34)] +/Names [(page.57) 1355 0 R (page.58) 1361 0 R (page.59) 1369 0 R (page.6) 950 0 R (page.60) 1376 0 R (page.61) 1390 0 R] +/Limits [(page.57) (page.61)] >> % 2368 0 obj << -/Names [(page.35) 1175 0 R (page.36) 1182 0 R (page.37) 1187 0 R (page.38) 1196 0 R (page.39) 1204 0 R (page.4) 933 0 R] -/Limits [(page.35) (page.4)] ->> -% 2369 0 obj -<< -/Names [(page.40) 1209 0 R (page.41) 1217 0 R (page.42) 1222 0 R (page.43) 1229 0 R (page.44) 1235 0 R (page.45) 1248 0 R] -/Limits [(page.40) (page.45)] ->> -% 2370 0 obj -<< -/Names [(page.46) 1255 0 R (page.47) 1262 0 R (page.48) 1273 0 R (page.49) 1289 0 R (page.5) 945 0 R (page.50) 1296 0 R] -/Limits [(page.46) (page.50)] +/Names [(page.62) 1398 0 R (page.63) 1407 0 R (page.64) 1415 0 R (page.65) 1419 0 R (page.66) 1434 0 R (page.67) 1439 0 R] +/Limits [(page.62) (page.67)] >> endstream endobj -2439 0 obj +2434 0 obj << /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20241116120228+01'00') -/ModDate (D:20241116120228+01'00') +/CreationDate (D:20241116161709+01'00') +/ModDate (D:20241116161709+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) >> endobj -2372 0 obj +2370 0 obj << /Type /ObjStm -/N 67 -/First 676 -/Length 12380 ->> -stream -2371 0 2373 172 2374 342 2375 514 2376 684 2377 856 2378 1026 2379 1198 2380 1367 2381 1536 -2382 1716 2383 1914 2384 2112 2385 2304 2386 2487 2387 2668 2388 2874 2389 3104 2390 3329 2391 3548 -2392 3775 2393 4001 2394 4223 2395 4448 2396 4678 2397 4907 2398 5135 2399 5357 2400 5585 2401 5811 -2402 6033 2403 6255 2404 6496 2405 6758 2406 7014 2407 7280 2408 7550 2409 7812 2410 8074 2411 8284 -2412 8464 2413 8643 2414 8815 2415 8944 2416 9058 2417 9170 2418 9281 2419 9392 2420 9504 2421 9627 -2422 9747 2423 9860 2424 9973 2425 10085 2426 10196 2427 10311 2428 10434 2429 10561 2430 10687 2431 10818 -2432 10943 2433 11016 2434 11136 2435 11259 2436 11372 2437 11456 2438 11491 -% 2371 0 obj -<< -/Names [(page.51) 1307 0 R (page.52) 1313 0 R (page.53) 1324 0 R (page.54) 1329 0 R (page.55) 1340 0 R (page.56) 1346 0 R] -/Limits [(page.51) (page.56)] ->> -% 2373 0 obj -<< -/Names [(page.57) 1355 0 R (page.58) 1361 0 R (page.59) 1369 0 R (page.6) 950 0 R (page.60) 1376 0 R (page.61) 1390 0 R] -/Limits [(page.57) (page.61)] ->> -% 2374 0 obj -<< -/Names [(page.62) 1398 0 R (page.63) 1407 0 R (page.64) 1415 0 R (page.65) 1419 0 R (page.66) 1434 0 R (page.67) 1439 0 R] -/Limits [(page.62) (page.67)] ->> -% 2375 0 obj +/N 64 +/First 642 +/Length 11811 +>> +stream +2369 0 2371 170 2372 342 2373 512 2374 684 2375 853 2376 1022 2377 1202 2378 1400 2379 1598 +2380 1790 2381 1973 2382 2154 2383 2360 2384 2590 2385 2815 2386 3034 2387 3261 2388 3487 2389 3709 +2390 3934 2391 4164 2392 4393 2393 4621 2394 4843 2395 5071 2396 5297 2397 5519 2398 5741 2399 5982 +2400 6244 2401 6500 2402 6766 2403 7036 2404 7298 2405 7560 2406 7770 2407 7950 2408 8127 2409 8299 +2410 8409 2411 8523 2412 8635 2413 8746 2414 8857 2415 8973 2416 9096 2417 9214 2418 9327 2419 9440 +2420 9552 2421 9663 2422 9778 2423 9901 2424 10028 2425 10154 2426 10285 2427 10409 2428 10482 2429 10602 +2430 10724 2431 10837 2432 10921 2433 10956 +% 2369 0 obj << /Names [(page.68) 1446 0 R (page.69) 1453 0 R (page.7) 963 0 R (page.70) 1457 0 R (page.71) 1462 0 R (page.72) 1468 0 R] /Limits [(page.68) (page.72)] >> -% 2376 0 obj +% 2371 0 obj << /Names [(page.73) 1474 0 R (page.74) 1485 0 R (page.75) 1490 0 R (page.76) 1499 0 R (page.77) 1507 0 R (page.78) 1512 0 R] /Limits [(page.73) (page.78)] >> -% 2377 0 obj +% 2372 0 obj << /Names [(page.79) 1518 0 R (page.8) 986 0 R (page.80) 1523 0 R (page.81) 1531 0 R (page.82) 1536 0 R (page.83) 1544 0 R] /Limits [(page.79) (page.83)] >> -% 2378 0 obj +% 2373 0 obj << /Names [(page.84) 1550 0 R (page.85) 1559 0 R (page.86) 1573 0 R (page.87) 1577 0 R (page.88) 1590 0 R (page.89) 1596 0 R] /Limits [(page.84) (page.89)] >> -% 2379 0 obj +% 2374 0 obj << /Names [(page.9) 997 0 R (page.90) 1603 0 R (page.91) 1608 0 R (page.92) 1616 0 R (page.93) 1620 0 R (page.94) 1629 0 R] /Limits [(page.9) (page.94)] >> -% 2380 0 obj +% 2375 0 obj << /Names [(page.95) 1637 0 R (page.96) 1641 0 R (page.97) 1646 0 R (page.98) 1651 0 R (page.99) 1658 0 R (page.i) 728 0 R] /Limits [(page.95) (page.i)] >> -% 2381 0 obj +% 2376 0 obj << /Names [(page.ii) 784 0 R (page.iii) 831 0 R (page.iv) 872 0 R (precdata) 1115 0 R (section*.1) 729 0 R (section*.10) 626 0 R] /Limits [(page.ii) (section*.10)] >> -% 2382 0 obj +% 2377 0 obj << /Names [(section*.11) 630 0 R (section*.12) 634 0 R (section*.13) 638 0 R (section*.14) 642 0 R (section*.15) 646 0 R (section*.16) 650 0 R] /Limits [(section*.11) (section*.16)] >> -% 2383 0 obj +% 2378 0 obj << -/Names [(section*.17) 654 0 R (section*.18) 658 0 R (section*.19) 662 0 R (section*.2) 2103 0 R (section*.20) 2233 0 R (section*.3) 2132 0 R] +/Names [(section*.17) 654 0 R (section*.18) 658 0 R (section*.19) 662 0 R (section*.2) 2102 0 R (section*.20) 2228 0 R (section*.3) 2131 0 R] /Limits [(section*.17) (section*.3)] >> -% 2384 0 obj +% 2379 0 obj << -/Names [(section*.4) 2153 0 R (section*.5) 2174 0 R (section*.6) 610 0 R (section*.7) 614 0 R (section*.8) 618 0 R (section*.9) 622 0 R] +/Names [(section*.4) 2152 0 R (section*.5) 2173 0 R (section*.6) 610 0 R (section*.7) 614 0 R (section*.8) 618 0 R (section*.9) 622 0 R] /Limits [(section*.4) (section*.9)] >> -% 2385 0 obj +% 2380 0 obj << /Names [(section.1) 7 0 R (section.10) 541 0 R (section.11) 573 0 R (section.12) 585 0 R (section.13) 606 0 R (section.2) 11 0 R] /Limits [(section.1) (section.2)] >> -% 2386 0 obj +% 2381 0 obj << /Names [(section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R (section.7) 421 0 R (section.8) 493 0 R] /Limits [(section.3) (section.8)] >> -% 2387 0 obj +% 2382 0 obj << /Names [(section.9) 513 0 R (spbasedata) 1061 0 R (spdata) 1054 0 R (subsection.10.1) 545 0 R (subsection.10.2) 549 0 R (subsection.10.3) 553 0 R] /Limits [(section.9) (subsection.10.3)] >> -% 2388 0 obj +% 2383 0 obj << /Names [(subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.10.7) 569 0 R (subsection.11.1) 577 0 R (subsection.11.2) 581 0 R] /Limits [(subsection.10.4) (subsection.11.2)] >> -% 2389 0 obj +% 2384 0 obj << /Names [(subsection.12.1) 589 0 R (subsection.12.2) 593 0 R (subsection.12.3) 597 0 R (subsection.12.4) 601 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] /Limits [(subsection.12.1) (subsection.2.2)] >> -% 2390 0 obj +% 2385 0 obj << /Names [(subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R (subsection.3.4) 212 0 R] /Limits [(subsection.2.3) (subsection.3.4)] >> -% 2391 0 obj +% 2386 0 obj << /Names [(subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R (subsection.4.13) 272 0 R] /Limits [(subsection.3.5) (subsection.4.13)] >> -% 2392 0 obj +% 2387 0 obj << /Names [(subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R (subsection.4.4) 236 0 R] /Limits [(subsection.4.14) (subsection.4.4)] >> -% 2393 0 obj +% 2388 0 obj << /Names [(subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R (subsection.5.1) 292 0 R] /Limits [(subsection.4.5) (subsection.5.1)] >> -% 2394 0 obj +% 2389 0 obj << /Names [(subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R (subsection.6.11) 352 0 R] /Limits [(subsection.5.2) (subsection.6.11)] >> -% 2395 0 obj +% 2390 0 obj << /Names [(subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R (subsection.6.17) 376 0 R] /Limits [(subsection.6.12) (subsection.6.17)] >> -% 2396 0 obj +% 2391 0 obj << /Names [(subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R (subsection.6.22) 396 0 R] /Limits [(subsection.6.18) (subsection.6.22)] >> -% 2397 0 obj +% 2392 0 obj << /Names [(subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R (subsection.6.3) 320 0 R] /Limits [(subsection.6.23) (subsection.6.3)] >> -% 2398 0 obj +% 2393 0 obj << /Names [(subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R (subsection.6.9) 344 0 R] /Limits [(subsection.6.4) (subsection.6.9)] >> -% 2399 0 obj +% 2394 0 obj << /Names [(subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R (subsection.7.14) 477 0 R] /Limits [(subsection.7.1) (subsection.7.14)] >> -% 2400 0 obj +% 2395 0 obj << /Names [(subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R (subsection.7.4) 437 0 R] /Limits [(subsection.7.15) (subsection.7.4)] >> -% 2401 0 obj +% 2396 0 obj << /Names [(subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R (subsection.8.1) 497 0 R] /Limits [(subsection.7.5) (subsection.8.1)] >> -% 2402 0 obj +% 2397 0 obj << /Names [(subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R (subsection.9.3) 525 0 R] /Limits [(subsection.8.2) (subsection.9.3)] >> -% 2403 0 obj +% 2398 0 obj << /Names [(subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R] /Limits [(subsection.9.4) (subsubsection.3.1.10)] >> -% 2404 0 obj +% 2399 0 obj << /Names [(subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R] /Limits [(subsubsection.3.1.11) (subsubsection.3.1.2)] >> -% 2405 0 obj +% 2400 0 obj << /Names [(subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R] /Limits [(subsubsection.3.1.3) (subsubsection.3.1.8)] >> -% 2406 0 obj +% 2401 0 obj << /Names [(subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R] /Limits [(subsubsection.3.1.9) (subsubsection.3.2.13)] >> -% 2407 0 obj +% 2402 0 obj << /Names [(subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R] /Limits [(subsubsection.3.2.14) (subsubsection.3.2.19)] >> -% 2408 0 obj +% 2403 0 obj << /Names [(subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R] /Limits [(subsubsection.3.2.2) (subsubsection.3.2.7)] >> -% 2409 0 obj +% 2404 0 obj << /Names [(subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R] /Limits [(subsubsection.3.2.8) (subsubsection.3.3.4)] >> -% 2410 0 obj +% 2405 0 obj << /Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1108 0 R (table.10) 1256 0 R (table.11) 1264 0 R (table.12) 1277 0 R] /Limits [(subsubsection.3.3.5) (table.12)] >> -% 2411 0 obj +% 2406 0 obj << /Names [(table.13) 1297 0 R (table.14) 1325 0 R (table.15) 1341 0 R (table.16) 1356 0 R (table.17) 1370 0 R (table.18) 1399 0 R] /Limits [(table.13) (table.18)] >> -% 2412 0 obj +% 2407 0 obj << -/Names [(table.19) 1435 0 R (table.2) 1153 0 R (table.20) 1447 0 R (table.21) 1988 0 R (table.22) 1983 0 R (table.23) 2107 0 R] -/Limits [(table.19) (table.23)] +/Names [(table.19) 1435 0 R (table.2) 1153 0 R (table.20) 1447 0 R (table.21) 1977 0 R (table.22) 2105 0 R (table.3) 1171 0 R] +/Limits [(table.19) (table.3)] >> -% 2413 0 obj +% 2408 0 obj << -/Names [(table.3) 1171 0 R (table.4) 1183 0 R (table.5) 1197 0 R (table.6) 1205 0 R (table.7) 1218 0 R (table.8) 1230 0 R] -/Limits [(table.3) (table.8)] +/Names [(table.4) 1183 0 R (table.5) 1197 0 R (table.6) 1205 0 R (table.7) 1218 0 R (table.8) 1230 0 R (table.9) 1249 0 R] +/Limits [(table.4) (table.9)] >> -% 2414 0 obj +% 2409 0 obj << -/Names [(table.9) 1249 0 R (title.0) 3 0 R (vbasedata) 1042 0 R (vdata) 1095 0 R] -/Limits [(table.9) (vdata)] +/Names [(title.0) 3 0 R (vbasedata) 1042 0 R (vdata) 1095 0 R] +/Limits [(title.0) (vdata)] >> -% 2415 0 obj +% 2410 0 obj << -/Kids [2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R] +/Kids [2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R 2310 0 R] /Limits [(Doc-Start) (Item.125)] >> -% 2416 0 obj +% 2411 0 obj << -/Kids [2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R] +/Kids [2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R 2316 0 R] /Limits [(Item.126) (Item.25)] >> -% 2417 0 obj +% 2412 0 obj << -/Kids [2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R] +/Kids [2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R 2322 0 R] /Limits [(Item.26) (Item.58)] >> -% 2418 0 obj +% 2413 0 obj << -/Kids [2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R] +/Kids [2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R 2328 0 R] /Limits [(Item.59) (Item.90)] >> -% 2419 0 obj +% 2414 0 obj << -/Kids [2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R] -/Limits [(Item.91) (descdata)] +/Kids [2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R 2334 0 R] +/Limits [(Item.91) (cite.sblas02)] >> -% 2420 0 obj +% 2415 0 obj << -/Kids [2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R] -/Limits [(equation.4.1) (lstnumber.-1.4)] +/Kids [2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R 2340 0 R] +/Limits [(cite.sblas97) (lstnumber.-1.2)] >> -% 2421 0 obj +% 2416 0 obj << -/Kids [2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R] -/Limits [(lstnumber.-10.1) (page.111)] +/Kids [2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R 2346 0 R] +/Limits [(lstnumber.-1.3) (page.11)] >> -% 2422 0 obj +% 2417 0 obj << -/Kids [2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R] -/Limits [(page.112) (page.144)] +/Kids [2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R 2352 0 R] +/Limits [(page.110) (page.142)] >> -% 2423 0 obj +% 2418 0 obj << -/Kids [2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R] -/Limits [(page.145) (page.177)] +/Kids [2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R 2358 0 R] +/Limits [(page.143) (page.175)] >> -% 2424 0 obj +% 2419 0 obj << -/Kids [2364 0 R 2365 0 R 2366 0 R 2367 0 R 2368 0 R 2369 0 R] -/Limits [(page.178) (page.45)] +/Kids [2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R 2364 0 R] +/Limits [(page.176) (page.45)] >> -% 2425 0 obj +% 2420 0 obj << -/Kids [2370 0 R 2371 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R] +/Kids [2365 0 R 2366 0 R 2367 0 R 2368 0 R 2369 0 R 2371 0 R] /Limits [(page.46) (page.78)] >> -% 2426 0 obj +% 2421 0 obj << -/Kids [2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R] +/Kids [2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R 2377 0 R] /Limits [(page.79) (section*.16)] >> -% 2427 0 obj +% 2422 0 obj << -/Kids [2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R] +/Kids [2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R] /Limits [(section*.17) (subsection.11.2)] >> -% 2428 0 obj +% 2423 0 obj << -/Kids [2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R] +/Kids [2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R 2389 0 R] /Limits [(subsection.12.1) (subsection.6.11)] >> -% 2429 0 obj +% 2424 0 obj << -/Kids [2395 0 R 2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R] +/Kids [2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R 2395 0 R] /Limits [(subsection.6.12) (subsection.7.4)] >> -% 2430 0 obj +% 2425 0 obj << -/Kids [2401 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R] +/Kids [2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R 2401 0 R] /Limits [(subsection.7.5) (subsubsection.3.2.13)] >> -% 2431 0 obj +% 2426 0 obj << -/Kids [2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2412 0 R] -/Limits [(subsubsection.3.2.14) (table.23)] +/Kids [2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R 2407 0 R] +/Limits [(subsubsection.3.2.14) (table.3)] >> -% 2432 0 obj +% 2427 0 obj << -/Kids [2413 0 R 2414 0 R] -/Limits [(table.3) (vdata)] +/Kids [2408 0 R 2409 0 R] +/Limits [(table.4) (vdata)] >> -% 2433 0 obj +% 2428 0 obj << -/Kids [2415 0 R 2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R] -/Limits [(Doc-Start) (lstnumber.-1.4)] +/Kids [2410 0 R 2411 0 R 2412 0 R 2413 0 R 2414 0 R 2415 0 R] +/Limits [(Doc-Start) (lstnumber.-1.2)] >> -% 2434 0 obj +% 2429 0 obj << -/Kids [2421 0 R 2422 0 R 2423 0 R 2424 0 R 2425 0 R 2426 0 R] -/Limits [(lstnumber.-10.1) (section*.16)] +/Kids [2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R 2421 0 R] +/Limits [(lstnumber.-1.3) (section*.16)] >> -% 2435 0 obj +% 2430 0 obj << -/Kids [2427 0 R 2428 0 R 2429 0 R 2430 0 R 2431 0 R 2432 0 R] +/Kids [2422 0 R 2423 0 R 2424 0 R 2425 0 R 2426 0 R 2427 0 R] /Limits [(section*.17) (vdata)] >> -% 2436 0 obj +% 2431 0 obj << -/Kids [2433 0 R 2434 0 R 2435 0 R] +/Kids [2428 0 R 2429 0 R 2430 0 R] /Limits [(Doc-Start) (vdata)] >> -% 2437 0 obj +% 2432 0 obj << -/Dests 2436 0 R +/Dests 2431 0 R >> -% 2438 0 obj +% 2433 0 obj << /Type /Catalog -/Pages 2306 0 R -/Outlines 2307 0 R -/Names 2437 0 R +/Pages 2301 0 R +/Outlines 2302 0 R +/Names 2432 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels<>2<>6<>]>> /OpenAction 665 0 R >> endstream endobj -2440 0 obj +2435 0 obj << /Type /XRef -/Index [0 2441] -/Size 2441 +/Index [0 2436] +/Size 2436 /W [1 3 1] -/Root 2438 0 R -/Info 2439 0 R -/ID [ ] -/Length 12205 ->> -stream -ÿ]# &k' %k1 $k9 #kE "  -kN !  Õ    Õ Õ Õ Õ8 Õ9 Õ: Õ; Õ? Õ@  ÕA !"ÕE #$ÕF %&ÕH '(ÕI )*ÕM +,ÕN -.ÕO /0ÕV 12ÕW  34Õ^  56Õ_  78Õc  -9:+  ;<+ =>+ ?@+ AB+ CD+  EF+  GH+ IJ+ KL+ MN+ cOP+ bQR+ aST+" `UV+# _WX+$ ^YZ+% ][\++ \]^+, [_`+- Zab+3 YcË?%+8 XËË+9 WËË+: VËË+A UËË+E TË Ë -+O SË Ë +_ RË Ëˆ  QËˈ PËˈ" OËˈ* NËˈ6 MËˈA LËˈR KËˈY JËˈ` IËË þ HË!Ë"þ GË#Ë$þ4 FË%Ë&þA EË'Ë(þP DË)Ë*þV CË+Ë,þ] BË-Ë.g AË/Ë0g. @Ë1Ë2g7 ?Ë3Ë4gB >Ë5Ë6gC =Ë7Ë8gZ <Ë9Ë:Ý ;Ë;Ë<Ý - :Ë=Ë>Ý 9Ë?Ë@Ý 8ËAËBÝ  7ËCËDÝ+ 6ËEËFÝF 5ËGËHÝV 4ËIËJÝ\ 3ËKËLÝc 2ËMËND  1ËOËPD 0ËQËRD /ËSËTD! .ËUËVD& -ËWËXD0 ,ËYËZD5 +Ë[Ë\D; *Ë]Ë^DA )Ë_Ë`DG (ËaËbDM 'Ëc”}ƒDT &””D[ %””µ $””µ #””µ "” ” -µ !” ” µ"  ” ”µ( ””µ/ ””µ3 ””µ7 ””µ; ””µ? ””µC ””µM ””µW ”” µa ”!”"# ”#”$# ”%”&# ”'”(#' ”)”*#, ”+”,#3 ”-”.#< ”/”0#B ”1”2#H  ”3”4#N  ”5”6#T  ”7”8#Y  -”9”:#`  ”;”<‘ ”=”>‘ - ”?”@‘ ”A”B‘ ”C”D‘! ”E”F‘' ”G”H‘/ ”I”J‘? ”K”L‘J ”M”N‘OÐc”O”P‘SÐb”Q”R‘YÐa”S”T‘]Ð`”U”V‘cÐ_”W”XüÐ^”Y”Zü,Ð]”[”\ü-Ð\”]”^ü4Ð[”_”`ü5ÐZ”a”bv ÐY”c]%v$ÐX]]v%ÐW]]v'ÐV]]v+ÐU]]v,ÐT] ] -v-ÐS] ] v.ÐR] ]v/ÐQ]]v0ÐP]]v1ÐO]]v2ÐN]]v6ÐM]]v7ÐL]]v8ÐK]]v9ÐJ]]]Áè] ]$¾Ó]!]"ÐÐ!Ð Ð"Ò”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c  +/Root 2433 0 R +/Info 2434 0 R +/ID [<9F072B9C5E6EDDB3D2377362E85F3F5A> <9F072B9C5E6EDDB3D2377362E85F3F5A>] +/Length 12180 +>> +stream +ÿ]# #k' "k1 !k9 kE   +kN   Õ   Õ Õ Õ Õ8 Õ9 Õ: Õ; Õ? Õ@  ÕA !"ÕE #$ÕF %&ÕH '(ÕI )*ÕM +,ÕN -.ÕO /0ÕV 12ÕW +34Õ^ 56Õ_ 78Õc 9:+ ;<+ =>+ ?@+ AB+ CD+  EF+  GH+ÿcIJ+ÿbKL+ÿaMN+ÿ`OP+ÿ_QR+ÿ^ST+"ÿ]UV+#ÿ\WX+$ÿ[YZ+%ÿZ[\++ÿY]^+,ÿX_`+-ÿWab+3ÿVcË?%+8ÿUËË+9ÿTËË+:ÿSËË+AÿRËË+EÿQË Ë ++OÿPË Ë +_ÿOË Ëˆ ÿNËˈÿMËˈ"ÿLËˈ*ÿKËˈ6ÿJËˈAÿIËˈRÿHËˈYÿGËˈ`ÿFËË þÿEË!Ë"þÿDË#Ë$þ4ÿCË%Ë&þAÿBË'Ë(þPÿAË)Ë*þVÿ@Ë+Ë,þ]ÿ?Ë-Ë.gÿ>Ë/Ë0g.ÿ=Ë1Ë2g7ÿ<Ë3Ë4gBÿ;Ë5Ë6gCÿ:Ë7Ë8gZÿ9Ë9Ë:Ýÿ8Ë;Ë<Ý +ÿ7Ë=Ë>Ýÿ6Ë?Ë@Ýÿ5ËAËBÝ ÿ4ËCËDÝ+ÿ3ËEËFÝFÿ2ËGËHÝVÿ1ËIËJÝ\ÿ0ËKËLÝcÿ/ËMËND ÿ.ËOËPDÿ-ËQËRDÿ,ËSËTD!ÿ+ËUËVD&ÿ*ËWËXD0ÿ)ËYËZD5ÿ(Ë[Ë\D;ÿ'Ë]Ë^DAÿ&Ë_Ë`DGÿ%ËaËbDMÿ$Ëc”}ƒDTÿ#””D[ÿ"””µÿ!””µÿ ””µÿ” ” +µÿ” ” µ"ÿ” ”µ(ÿ””µ/ÿ””µ3ÿ””µ7ÿ””µ;ÿ””µ?ÿ””µCÿ””µMÿ””µWÿ”” µaÿ”!”"#ÿ”#”$#ÿ”%”&#ÿ”'”(#'ÿ”)”*#,ÿ”+”,#3ÿ ”-”.#<ÿ ”/”0#Bÿ ”1”2#Hÿ +”3”4#Nÿ ”5”6#Tÿ”7”8#Yÿ”9”:#`ÿ”;”<‘ÿ”=”>‘ +ÿ”?”@‘ÿ”A”B‘ÿ”C”D‘!ÿ”E”F‘(ÿ”G”H‘1Îc”I”J‘>Îb”K”L‘IÎa”M”N‘NÎ`”O”P‘RÎ_”Q”R‘XÎ^”S”T‘\Î]”U”V‘bÎ\”W”XûÎ[”Y”Zû+ÎZ”[”\û,ÎY”]”^û3ÎX”_”`û4ÎW”a”buÎV”c]%u#ÎU]]u$ÎT]]u&ÎS]]u*ÎR]]u+ÎQ] ] +u,ÎP] ] u-ÎO] ]u.ÎN]]u/ÎM]]u0ÎL]]u1ÎK]]u5ÎJ]]u6ÎI]]u7ÎH]]u8ÎG]]]Áè] ]$¾Ó]!]"ÎÎÎÎ Ò”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c      !"#$%)']ZÂ"&´™*+,-./0123456789:;<=>?@ABCDEFGHIJKLMOPRTV[Y(7ØXNQSUW]_`abckkkkkkkkkk k -k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛÐ#vSvJvWvUvRvGvHvQvDvEk.k/k0/Wk5k3k)¸k2k*k+k,k-4 vFk6k7k<k4?°k8ÐÐÐk:k;vPkAkBy,kFk=dtkCkDk>k?k@vCvBkHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕÐÐ$&ŒÕ ÕÕÕ -Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ}ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÓÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ÐÕ2Õ5Õ6Õ<Õ4‡yÕ7ÕBÕ=›ÚÕ>Ð%ÕJÕC­˜ÕDÕGÕPÕKÁyÕLÕRÕSÕTÕYÕQØžÕUÕXvLÕ\Õ`ÕZø7Õ[Õ]+Õa›Õb+t¯+ +JÔ+Ð&++ -\Ò+ ++tÁ+++‡a+++™ý+++ +'+³Å+!+&+*+.+(Òù+)Ð'+0+1+4+/çc+2+P+6+>+<+5÷3+7+;+@+B+= -0+?+F+C€+D+H+I+J+K+L+M+S+Q+G[+NÐ+T+U+W+R:y+VÐ(+Y+Z+[+\+]+a+XD8+^+`+cˆ+bcˆˆã)ˆˆˆˆˆˆ ˆ ˆáˆ -ˆ ˆˆÀàˆˆˆˆˆˆÃcˆˆˆˆâ£ˆˆÐ)ˆˆˆ ˆ$ˆïˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ%³ˆ)ˆ+ˆ0ˆ-&{ˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ12ùˆ5ˆ7ˆ;ˆ9Pæˆ:ˆ=ˆ>ˆ?ˆCˆ<Shˆ@ˆBÐ*ˆLˆDnˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM݈QˆSˆVˆWˆ[ˆU˜¹ˆXˆZˆ]ˆ^ˆbˆ\®ˆ_Јaþþþþþ þ -ˆcÃfþþþþþ óþ þþþþþþþþ 6þÐ+þþþþ*­þþþþþ þ!þ"þ#þ%þJ¶þ$þ'þ(þ*þ&hþ)þ,þ-þ.þ/þ0þ1þ2þ6þ+zqþ3þ5þ9þ7˜Øþ8þ;þ<þ=þ>þ?þEþFþCþ:šOþ@þBÐ,þHþD¸ŸþGþJþKþLþMþNþRþI¾þOþQþTþWþSÜþUþYþZþ[gþ_þXÞãþ\þ^˜ggþ`ùÎggþaþbþcggp¡gH{Œg -g©$g Ð-g g ggg µIgggû3ggggÔ2ggggg'ggë™gg(gùµg&g g!g"g#g$g% Ñ=@g*g+g,g0g)jØg-g/g3g1Œ»g2Ð.g5g;g9g4’‚g6g8g<g=g?g:°Žg>gDg@À´gAgFgIgEÛ*gGgHgKgNgJõðgLÐgMgVgO#¥gPgQgRgSgTgUÐ/gXg[gW/gYg]gbg\KÜg^g_g`gaÝÝÝgcX#ÝÝ–YÝÝÝ ÝŸÁÝ Ý ÝÝ ¬cÝÝÝÝݵÝÐ0ÝÝÌ{ÝÝÝÝÝÝ"ÝÓÝÝ!Ý(Ý#ëÝ$Ý%Ý&Ý'Ý.Ý,Ý)ðZÝ*Ý/Ý0Ý7Ý-üÝ1Ý2Ý3Ý4Ý5Ý6Ý@Ý8# Ý9Ý:Ý;Ý<Ý=Ý>Ý?Ð1ÝBÝCÝDÝGÝA7ÿÝEÝQÝHS@ÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRa!ÝUÝYÝZÝ^ÝXmÝ[Ý]Ý`ÝaDÝ_|žÝbÛ]DD¿,DDÐ2DDD -DÃFDDD ÝOD D DDDDDDßÊDDDDDDDøÄDD"D´D D$D'D#{D%Ð3D,D(,’D)D*D+D.D1D-/ÖD/D3D7D2FÃD4D6D9D=D8SèD:D<D?DCD>hD@DBDEDIDDuDFDHÐ4DKDPDJ‰(DLDNDODRDWDQ˜!DSDUDVDYD\DX¦aDZDbD]¼^D^D_D`DaµµµµDcË[µ!Uëµ µ qµÐ5µµ - Hµ µ µ µµµµµµµµµ <Šµµµ =rµµµµ%µ  TMµ!µ#µ$µ,µ& fþµ'µ)µ*µ+µ0µ- xÙµ.Ð6µ4µ1 ƒ=µ2µ8µ5 ºµ6µ<µ9 •†µ:µ@µ= ›}µ>µDµA  ½µBµJµE ¸¬µFµGµHµIÐÐ7µNµK Î"µLµTµO 朵PµQµRµSµXµU ûEµVµ^µY!~µZµ[µ\µ]µbµ_!(žµ`#µc!@Û####Ð8"Åu##!{#### !“¤# -# # # ##!¨†###!Á######!Ö$##$#!î?### Ð#!#"##Ð9#)#%"÷#&#(#.#*"/#+#-#0#1#4#/"5h#2#7#8#9#5"P#6#?#:"yc#;#=#>#E#@"‡Š#A#C#DÐ:#K#F"(#G#I#J#Q#L"“•#M#O#P#U#R"›ð#S#W#\#V"žH#X#Z#[#^#c#]"±#_#a#b‘‘‘"êS‘‘‘$MÐ;‘‘ ‘"øã‘ ‘ ‘ ‘‘‘# -:‘‘‘‘‘‘#'Ö‘‘‘‘‘#E ‘‘"‘#Gב ‘$‘%‘)‘##M‘&‘(Ð<‘+‘,‘-‘0‘*#až‘.‘7‘4‘1#sá‘2‘3‘8‘5#†!‘6‘:‘;‘<‘=‘@‘9#•m‘>‘C‘A#³“‘B‘E‘F‘G‘H‘K‘D#¸=‘IÐ=‘M‘P‘L#Τ‘N‘T‘Q#Ü‚‘R‘V‘W‘Z‘U#àŒ‘X‘^‘[#ëb‘\‘`‘aüü‘_#íþ‘büüüü%°üüü ü ü$:4ü -Ð>ü üü $Vuüüüüüüü$h–üüüüüüüü$‹ üü"ü $¥Üü!ü$ü&ü'ü(ü)ü*ü.ü#$ª[ü+ü%vXvYü0ü1%Ôü2%0#üJü<ü8ü/$Ê„ü3ü6ü7Ð?vTü>üLüBü9$î²ü=ü?ü@üAü:ü;%îüUüWüC%küKüMüNüOüPüQüRüSüTüVüDüE%:rüFüGüH%;züI%'av?v@vAvIvKÐAvZvN'ËvOvVv[Ðv\v]v^v_Ðv`vaÐvbvcÐ+"ÐÐÐÐ'aºÐ'~™Ð'œ¦Ð'ÄžÐ'ÔûÐ'ä·Ð (8–Ð -(¹'Ð ) -ÏÐ )}²Ð )ÅÐ*#ÆÐ*‰ÝÐ*Ù‡*ݳ*âq*è­*íõ*ö4*úË*ÿ]+ï++ ++ÐBÐCÐDÐEÐFÐGÐHÐI+eÝ+ŒJ ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` a b c D+Ën D D D D D D D D D  D - D  D  D  D D D D D D D D D D D D D D D D D D D  D! D" D# D$ D% D& D' D( D) D* D+ D, D- D. D/ D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D: D; D< D= D> D? D@ DA DB+ÉC+ü& +k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛÎ!uPuGuTuRuOuDuEuNuAuBk.k/k0/Wk5k3k)¸k2k*k+k,k-4 uCk6k7k<k4?°k8ÎÎÎk:k;uMkAkBy,kFk=dtkCkDk>k?k@u@u?kHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕÎÎ"&‹Õ ÕÕÕ +Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ|ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÒÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ÎÕ2Õ5Õ6Õ<Õ4‡xÕ7ÕBÕ=›ÙÕ>Î#ÕJÕC­—ÕDÕGÕPÕKÁxÕLÕRÕSÕTÕYÕQØÕUÕXuLÕ\Õ`ÕZø6Õ[Õ]+ÕašÕb+t®+ +JÓ+Î$++ +\Ñ+ ++tÀ+++‡`+++™ü+++ +'+³Ä+!+&+*+.+(Òø+)Î%+0+1+4+/çb+2+P+6+>+<+5÷2+7+;+@+B+= +/+?+F+C+D+H+I+J+K+L+M+S+Q+GZ+NÎ+T+U+W+R:x+VÎ&+Y+Z+[+\+]+a+XD7+^+`+cˆ+bcˆˆã(ˆˆˆˆˆˆ ˆ ˆàˆ +ˆ ˆˆÀ߈ˆˆˆˆˆÃbˆˆˆˆâ¢ˆˆÎ'ˆˆˆ ˆ$ˆïˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ%²ˆ)ˆ+ˆ0ˆ-&zˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ12øˆ5ˆ7ˆ;ˆ9Påˆ:ˆ=ˆ>ˆ?ˆCˆ<Sgˆ@ˆBÎ(ˆLˆDnˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM܈QˆSˆVˆWˆ[ˆU˜¸ˆXˆZˆ]ˆ^ˆbˆ\®ˆ_Έaþþþþþ þ +ˆcÃeþþþþþ òþ þþþþþþþþ 5þÎ)þþþþ*¬þþþþþ þ!þ"þ#þ%þJµþ$þ'þ(þ*þ&hþ)þ,þ-þ.þ/þ0þ1þ2þ6þ+zpþ3þ5þ9þ7˜×þ8þ;þ<þ=þ>þ?þEþFþCþ:šNþ@þBÎ*þHþD¸žþGþJþKþLþMþNþRþI¾þOþQþTþWþSÜþUþYþZþ[gþ_þXÞâþ\þ^—ggþ`ùÍggþaþbþcggp gH{‹g +g©#g Î+g g ggg µHgggû2ggggÔ1ggggg'ggë˜gg(gù´g&g g!g"g#g$g% Ð=?g*g+g,g0g)j×g-g/g3g1Œºg2Î,g5g;g9g4’g6g8g<g=g?g:°g>gDg@À³gAgFgIgEÛ)gGgHgKgNgJõïgLÎgMgVgO#¤gPgQgRgSgTgUÎ-gXg[gW/~gYg]gbg\KÛg^g_g`gaÝÝÝgcX"ÝÝ–XÝÝÝ ÝŸÀÝ Ý ÝÝ ¬bÝÝÝÝݵÝÎ.ÝÝÌzÝÝÝÝÝÝ"ÝÓŽÝÝ!Ý(Ý#ëÝ$Ý%Ý&Ý'Ý.Ý,Ý)ðYÝ*Ý/Ý0Ý7Ý-ûÝ1Ý2Ý3Ý4Ý5Ý6Ý@Ý8#Ý9Ý:Ý;Ý<Ý=Ý>Ý?Î/ÝBÝCÝDÝGÝA7þÝEÝQÝHS?ÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRa ÝUÝYÝZÝ^ÝXmÝ[Ý]Ý`ÝaDÝ_|ÝbÛ]DD¿+DDÎ0DDD +DÃEDDD ÝND D DDDDDDßÉDDDDDDDøÃDD"D³D D$D'D#zD%Î1D,D(,‘D)D*D+D.D1D-/ÕD/D3D7D2FÂD4D6D9D=D8SçD:D<D?DCD>hD@DBDEDIDDuDFDHÎ2DKDPDJ‰'DLDNDODRDWDQ˜ DSDUDVDYD\DX¦`DZDbD]¼]D^D_D`DaµµµµDcËZµ!Uëµ µ qµÎ3µµ + Hµ µ µ µµµµµµµµµ <Šµµµ =rµµµµ%µ  TMµ!µ#µ$µ,µ& fþµ'µ)µ*µ+µ0µ- xÙµ.Î4µ4µ1 ƒ=µ2µ8µ5 ºµ6µ<µ9 •†µ:µ@µ= ›}µ>µDµA  ½µBµJµE ¸¬µFµGµHµIÎÎ5µNµK Î"µLµTµO 朵PµQµRµSµXµU ûEµVµ^µY!~µZµ[µ\µ]µbµ_!(žµ`#µc!@Û####Î6"Åu##!{#### !“¤# +# # # ##!¨†###!Á######!Ö$##$#!î?### Î#!#"##Î7#)#%"÷#&#(#.#*"/#+#-#0#1#4#/"5h#2#7#8#9#5"P#6#?#:"yc#;#=#>#E#@"‡Š#A#C#DÎ8#K#F"(#G#I#J#Q#L"“•#M#O#P#U#R"›ð#S#W#\#V"žH#X#Z#[#^#c#]"±#_#a#b‘‘‘"êS‘‘‘$!”Î9‘‘ ‘"øã‘ ‘ ‘ ‘‘‘# +:‘‘‘‘‘‘#'Ö‘‘‘‘‘#E ‘‘"‘#Gב ‘$‘%‘&‘*‘##M‘'‘)Î:‘6‘,‘-‘.‘/‘4‘2‘+#a‘0‘7‘3#rM‘5u>‘9‘:‘;‘<‘?‘8#§¸‘=‘B‘@#Åê‘A‘D‘E‘F‘G‘J‘C#Ê’‘H‘L‘O‘K#àý‘MÎ;‘S‘P#îבQ‘U‘V‘Y‘T#òâ‘W‘]‘Z#ý´‘[‘_‘`ûû‘^$P‘a‘cûûû%ÕÂûûûû +û$M>û û ûû $i†û Î<ûûûûûû${¨ûûûûûûûû$žûû!û$¸îû û#û%û&û'û(û)û-û"$½lû*û$uUuVû/û0%øû1%CHûIû;û7û.$Ý‹û2û5û6uQû=ûKûAû8%ëû<û>û?û@Î=û9û:%$ûTûVûB%%ûJûLûMûNûOûPûQûRûSûUûCûD%M—ûEûFûG%NŸûH%O•%PŸ%oy%š•û^û_û`uûW%x«ûaûbûcûXûYûZû[û\%§û]%¨:%©0%¶ìu +u 'JÞ&(uuu&¹u u u uuuuu&3 u&4&5&Nµ&åuuu&Yèuuuu& uuu&Ž‘u&&­&­¸uu&ºùuu u&¿€uÎ>u'u!&Þlu"u%u2u(&õ‚u)u9u3' +íu4uIu:'Ôu;u<u=uFuHuXuJ'2˜uKuSuWuYÎuZu[u\u]Îu^u_Îu`uaubÎucÎ+<%Î'{âÎ'˜ÁÎ'¶ÎÎ'ÞÆÎ'ï#Î'þßÎ(R¾Î(ÓOÎ )$÷Î +)›µÎ )ãÎ *AÉÎ *§àÎ*÷Š*û¶+t+°+ ø+7+Î+`+!ò+%„+*+0+6Î?Î@ÎAÎBÎCÎDÎEÎF+€=+¦ª $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` a b c B+ç B B B B B B B B B  B + B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B< B= B> B?+äï,™ endstream endobj startxref -2882598 +2889113 %%EOF diff --git a/docs/src/biblio.tex b/docs/src/biblio.tex index 5ba3605c..41fa7ddd 100644 --- a/docs/src/biblio.tex +++ b/docs/src/biblio.tex @@ -8,6 +8,11 @@ in J.~Dongarra, K.~Madsen, J.~Wasniewski, editors, Proceedings of PARA~04 Workshop on State of the Art in Scientific Computing, pp.~546--553, Lecture Notes in Computer Science, Springer, 2005. +\bibitem{BERTACCINIFILIPPONE} +D. Bertaccini\ and\ S. Filippone, +{\em Sparse approximate inverse preconditioners on high performance GPU platforms}, +Comput. Math. Appl., 71, (2016), no.~3, 693--711. +% \bibitem{2007d} A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,\newblock 2LEV-D2P4: a package of high-performance preconditioners,\newblock Applicable Algebra in Engineering, Communications and Computing, @@ -183,7 +188,14 @@ MIT Press, 1998. {\em Scientific Programming\/}~{\em 22,\/}~1, 1--19. \bibitem{OurTechRep} D.~Barbieri, V.~Cardellini, A.~Fanfarillo, S.~Filippone, Three storage formats - for sparse matrices on {GPGPUs}, Tech. Rep. DICII RR-15.6, Universit\`a di + for sparse matrices on {GPGPUs}, Tech. Rep. DICII RR-15.6, + Universit\`a di Roma Tor Vergata (February 2015). +\bibitem{Filippone:2017:SMM:3034774.3017994} +S.~Filippone, V.~Cardellini, D.~Barbieri, and A.~Fanfarillo. + Sparse matrix-vector multiplication on {GPGPUs}. + {\em ACM Trans. Math. Softw.}, 43(4):30:1--30:49, 2017. + + \end{thebibliography} diff --git a/docs/src/error.tex b/docs/src/error.tex index e6bb0d2d..07d009d8 100644 --- a/docs/src/error.tex +++ b/docs/src/error.tex @@ -1,6 +1,6 @@ -\section{Error handling} +\section{Error handling\label{sec:errors}} The PSBLAS library error handling policy has been completely rewritten in version 2.0. The idea behind the design of this new error handling diff --git a/docs/src/precs.tex b/docs/src/precs.tex index 9211f594..30243827 100644 --- a/docs/src/precs.tex +++ b/docs/src/precs.tex @@ -76,11 +76,10 @@ $ptype$ string as follows\footnote{The string is case-insensitive}: \item[DIAG] Diagonal scaling; each entry of the input vector is multiplied by the reciprocal of the sum of the absolute values of the coefficients in the corresponding row of matrix $A$; -\item[BJAC] Precondition by a factorization of the - block-diagonal of matrix $A$, where block boundaries are determined - by the data allocation boundaries for each process; requires no - communication. Only the incomplete factorization $ILU(0)$ is - currently implemented. +\item[BJAC] Precondition by a factorization or an approximante inverse + of the block-diagonal of matrix $A$, where block boundaries are + determined by the data allocation boundaries for each process; + requires no communication. See also Table-\ref{tab:p_subsolve_1}. \end{description} @@ -105,13 +104,13 @@ contained in \fortinline|val|. \fortinline|what| & \fortinline|character(len=*)|. \\ & The parameter to be set. It can be specified through its name; the string is case-insensitive. See - Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ + Table~\ref{tab:p_subsolve_1}.\\ \fortinline|val | & \fortinline|integer| \emph{or} \fortinline|character(len=*)| \emph{or} \fortinline|real(psb_spk_)| \emph{or} \fortinline|real(psb_dpk_)|, \fortinline|intent(in)|.\\ & The value of the parameter to be set. The list of allowed values and the corresponding data types is given in - Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}. + Table~\ref{tab:p_subsolve_1}. When the value is of type \fortinline|character(len=*)|, it is also treated as case insensitive.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\ @@ -123,13 +122,14 @@ contained in \fortinline|val|. \noindent A number of subdomain solvers can be chosen with this method; a list of the parameters that can be set, along with their allowed and -default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ +default values, is given in Table-\ref{tab:p_subsolve_1}.\\ \bsideways \begin{center} \small -\begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|} +% \begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|} +\begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|} \hline \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} & \textsc{comments} \\ \hline @@ -148,20 +148,6 @@ default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ do not employ triangular system solve kernels, see~\cite{BERTACCINIFILIPPONE}.\\ \hline -\hline -\end{tabular} -\end{center} -\caption{Parameters defining the solver or the details of the one-level preconditioner. -\label{tab:p_smoother}} -\esideways - -\bsideways -\begin{center} -\small -\begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|} -\hline -\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} & -\textsc{comments} \\ \hline \fortinline|'SUB_FILLIN'| & \fortinline|integer| & Any integer \par number~$\ge 0$ & 0 @@ -170,12 +156,41 @@ default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ & Any real number~$\ge 0$ & 0 & Drop tolerance $t$ in the ILU($p,t$) factorization. \\ \hline -\hline +\fortinline|'ILU_ALG'| & \fortinline|character(len=*)| + & \fortinline|'MILU'| + & \fortinline|'NONE'| + & ILU algorithmic variant \\ \hline +\fortinline|'ILUT_SCALE'| & \fortinline|character(len=*)| + & \fortinline|'MAXVAL'| \par + \fortinline|'DIAG'| \par + \fortinline|'ARSWUM'| \par + \fortinline|'ARCSUM'| \par + \fortinline|'ACLSUM'| \par + \fortinline|'NONE'| + & \fortinline|'NONE'| + & ILU scaling strategy \\ \hline +\fortinline|'INV_FILLIN'| & \fortinline|integer| + & Any integer \par number~$\ge 0$ + & 0 + & Second fill-in level $q$ of the INVK($p,q$) + approximate inverse. \\ \hline +\fortinline|'INV_ILUTHRS'| & \fortinline|real(kind_parameter)| + & Any real number~$\ge 0$ + & 0 + & Second drop tolerance $s$ in the + INVT($t,s$) approximate inverse. \\ \hline +\fortinline|'AINV_ALG'| & \fortinline|character(len=*)| + & \fortinline|'LLK'| \par + \fortinline|'SYM-LLK'| \par + \fortinline|'STAB-LLK'| \par + \fortinline|'MLK,LMX'| + & \fortinline|'LLK'| + & AINV algorithmic strategy. \\ \hline \end{tabular} \end{center} -\caption{Parameters defining the smoother or the details of the one-level preconditioner -(continued).\label{tab:p_smoother_1}} -\esideways +\caption{Parameters defining the solver of the BJAC + preconditioner.\label{tab:p_subsolve_1}} + \esideways diff --git a/docs/src/userguide.tex b/docs/src/userguide.tex index f2925f49..0c18c5dd 100644 --- a/docs/src/userguide.tex +++ b/docs/src/userguide.tex @@ -93,7 +93,7 @@ \newcommand{\example}{\stepcounter{example}% \section*{\examplename~\theexample}} -\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}} +\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_Tprec\_type}}} \newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}} \newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}} \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} diff --git a/docs/src/userhtml.tex b/docs/src/userhtml.tex index aa142adf..525fb895 100644 --- a/docs/src/userhtml.tex +++ b/docs/src/userhtml.tex @@ -84,7 +84,7 @@ \newcommand{\example}{\stepcounter{example}% \section*{\examplename~\theexample}} -\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}} +\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_Tprec\_type}}} \newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}} \newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}} \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} From 8907a7600adbda127645fd815e5145b8881800e3 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Sun, 17 Nov 2024 15:10:39 +0100 Subject: [PATCH 78/86] Fix krylov-> linsolve in test/openacc --- test/openacc/Makefile | 2 +- test/openacc/psb_d_oacc_pde3d.F90 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/openacc/Makefile b/test/openacc/Makefile index d0bd4880..16673b35 100644 --- a/test/openacc/Makefile +++ b/test/openacc/Makefile @@ -9,7 +9,7 @@ INCDIR=$(TOPDIR)/include MODDIR=$(TOPDIR)/modules EXEDIR=./runs -PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBGPULDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) $(FMFLAG)$(PSBINCDIR) $(LIBRSB_DEFINES) diff --git a/test/openacc/psb_d_oacc_pde3d.F90 b/test/openacc/psb_d_oacc_pde3d.F90 index 7c0cb4ef..bc889b1f 100644 --- a/test/openacc/psb_d_oacc_pde3d.F90 +++ b/test/openacc/psb_d_oacc_pde3d.F90 @@ -653,7 +653,7 @@ end module psb_d_pde3d_mod program psb_d_oacc_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde3d_mod #if defined(OPENACC) From 931000cc681fb42be289dbc590402619333709af Mon Sep 17 00:00:00 2001 From: Fabio Durastante Date: Mon, 18 Nov 2024 10:15:20 +0100 Subject: [PATCH 79/86] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 952029de..31d52383 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,13 @@ The architecture, philosophy and implementation details of the library are conta >S. Filippone, M. Colajanni. PSBLAS: A library for parallel linear >algebra computation on sparse matrices, ACM Trans. on Math. Software, >26(4), Dec. 2000, pp. 527-550. +- The software infrastructure changes required to accommodate the implementation of the + Additive-Schwarz preconditioners available in [AMG4PSBLAS](https://github.com/sfilippone/amg4psblas/) are detailed in: + > A. Buttari, P. D'Ambra, D. di Serafino, S. Filippone, Extending PSBLAS to build parallel Schwarz preconditioners, Applied Parallel Computing. State of the Art in Scientific Computing: 7th International Workshop, PARA 2004, LNCS 3732, 2006, pp. 593-602. + + > A. Buttari, P. D'Ambra, D. Di Serafino, S. Filippone, 2LEV-D2P4: A package of high-performance preconditioners for scientific and engineering applications, Applicable Algebra in Engineering, Communications and Computing, 2007, 18(3), pp. 223-239. + + > P. D'Ambra, D. Di Serafino, S. Filippone, MLD2P4: A package of parallel algebraic multilevel domain decomposition preconditioners in Fortran 95 ACM Transactions on Mathematical Software, 2010, 37(3), 30 PSBLAS is the backbone of the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper: > D’Ambra, P., Durastante, F., & Filippone, S. (2023). Parallel Sparse Computation Toolkit. Software Impacts, 15, 100463. From 5936c05eb4c31c0dcb0285d90d4be3cabb56a903 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 18 Nov 2024 15:58:53 +0100 Subject: [PATCH 80/86] Fix UG --- docs/html/userhtmlse2.html | 2 +- docs/psblas-3.9.pdf | 2571 +++++++++++++++++------------------- docs/src/intro.tex | 2 +- 3 files changed, 1228 insertions(+), 1347 deletions(-) diff --git a/docs/html/userhtmlse2.html b/docs/html/userhtmlse2.html index 7ef19577..4fce53f3 100644 --- a/docs/html/userhtmlse2.html +++ b/docs/html/userhtmlse2.html @@ -361,7 +361,7 @@ class="description"> src="userhtml0x.png" alt="psb_version_string_ " class="math-display" >

                  whose current value is 3.8.0 +class="cmtt-10">3.9.0

                  2.3 Application structure

                  diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf index 4cb1ebcb..f92e8230 100644 --- a/docs/psblas-3.9.pdf +++ b/docs/psblas-3.9.pdf @@ -4914,7 +4914,7 @@ BT 0 g 0 G /F75 9.9626 Tf -24.907 -24.208 Td [(local)]TJ 0 g 0 G -/F84 9.9626 Tf 26.561 0 Td [(Each)-250(pr)18(ocess)-250(has)-250(its)-250(own)-250(value\050s\051)-250(independently)111(.)]TJ -26.869 -23.137 Td [(T)92(o)-250(\002nish)-250(our)-250(general)-250(description,)-250(we)-250(de\002ne)-250(a)-250(version)-250(string)-250(with)-250(the)-250(constant)]TJ/F131 9.9626 Tf 122.476 -24.059 Td [(psb_version_string_)]TJ/F84 9.9626 Tf -122.586 -24.059 Td [(whose)-250(curr)18(ent)-250(value)-250(is)]TJ/F131 9.9626 Tf 101.857 0 Td [(3.8.0)]TJ +/F84 9.9626 Tf 26.561 0 Td [(Each)-250(pr)18(ocess)-250(has)-250(its)-250(own)-250(value\050s\051)-250(independently)111(.)]TJ -26.869 -23.137 Td [(T)92(o)-250(\002nish)-250(our)-250(general)-250(description,)-250(we)-250(de\002ne)-250(a)-250(version)-250(string)-250(with)-250(the)-250(constant)]TJ/F131 9.9626 Tf 122.476 -24.059 Td [(psb_version_string_)]TJ/F84 9.9626 Tf -122.586 -24.059 Td [(whose)-250(curr)18(ent)-250(value)-250(is)]TJ/F131 9.9626 Tf 101.857 0 Td [(3.9.0)]TJ 0 g 0 G /F84 9.9626 Tf 67.926 -29.888 Td [(5)]TJ 0 g 0 G @@ -32388,7 +32388,7 @@ stream 2228 6374 2229 6432 1991 6490 939 6547 938 6604 898 6661 899 6718 914 6775 895 6832 896 6888 2230 6945 891 7003 2231 7060 2224 7118 2233 7212 2235 7330 1055 7389 926 7448 897 7506 894 7564 890 7622 2104 7680 893 7739 2236 7797 892 7856 2089 7913 2090 7972 2237 8031 2232 8090 2238 8185 -2240 8205 2241 8576 2242 8679 2243 8838 2245 8861 2246 9316 2248 9445 2249 9743 2250 10389 2252 10860 +2239 8205 2240 8576 2241 8679 2242 8838 2243 8861 2244 9316 2245 9445 2246 9743 2247 10389 2249 10860 % 2147 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R /F231 1025 0 R /F279 1791 0 R /F134 1469 0 R /F179 922 0 R /F75 673 0 R >> @@ -32882,30 +32882,30 @@ stream >> % 2238 0 obj [1000] -% 2240 0 obj +% 2239 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2241 0 obj +% 2240 0 obj [277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] -% 2242 0 obj +% 2241 0 obj [853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] -% 2243 0 obj +% 2242 0 obj [528 542] -% 2245 0 obj +% 2243 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2246 0 obj +% 2244 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] -% 2248 0 obj +% 2245 0 obj [388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -% 2249 0 obj +% 2246 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] -% 2250 0 obj +% 2247 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2252 0 obj +% 2249 0 obj [605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] endstream endobj -2256 0 obj +2253 0 obj << /Length1 1383 /Length2 5908 @@ -32976,7 +32976,124 @@ W ò6S&ªå_!“½SÎ|esU›FÌR™y† ¢Y‹¥ýžï­§N endstream endobj -2258 0 obj +2255 0 obj +<< +/Length1 1956 +/Length2 7144 +/Length3 0 +/Length 9100 +>> +stream +%!PS-AdobeFont-1.0: CMITT10 003.002 +%%Title: CMITT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMITT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMITT10 known{/CMITT10 findfont dup/UniqueID known{dup +/UniqueID get 5000779 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /SFGIZH+CMITT10 def +/FontBBox {11 -233 669 696 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMITT10.) readonly def +/FullName (CMITT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 80 /P put +dup 84 /T put +dup 86 /V put +dup 97 /a put +dup 99 /c put +dup 44 /comma put +dup 100 /d put +dup 101 /e put +dup 33 /exclam put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 45 /hyphen put +dup 105 /i put +dup 107 /k put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 40 /parenleft put +dup 41 /parenright put +dup 46 /period put +dup 114 /r put +dup 115 /s put +dup 47 /slash put +dup 116 /t put +dup 119 /w put +dup 120 /x put +dup 121 /y put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ3Ã6Uöÿu4 +lã.ÂNk©4¡õ8•DPËh>®[M†E7wk9B½.…H‰ì.³CÍS†oøZçèqO«£­ OèÖ)9ú‚îOHl~Q:ÔɾD0j‚‡— J¿¶Ñù'JZ ¶ì÷­½`ÕÖÄB 5Ô†G +t²ðbY©7:¾Í¿2úh½K@¾À,¥Š 'çó,¥É÷ÙL’~## ê¥gˆyëMŽ¢iMæç?à úi8ðZ¼‡ý+ÐÕ’~Ëó[\3©èMn‚Àû=r=_­VxÎgpÄÁ÷¢%vïbÒ¨ˆSr\ËÆ©ˆµÉ*ó£'"$¶Æ9iVˆ«ð¬2Ý;äxÕ¿£ü§`e'ËôóÄ«fz•+‹;¥æ€îZÑ)¢Ëÿ˜ýæÓ£ÿ°¸¡4š¸ÍêYŽ,Œ1i$ÂWšºVÁC™oì _±S*`6 »Ij$¨I‹Ý/}„½!9'n0%3SV´ÝP}vÖÂqôsF}¶OTÓŒ+¼œO*½6ž½¸’I¤é*\-ÌRÚ3ª°ÚNÙœ:gd¿;p/V;aZþÀ6è©¡Ü:£“s–wQu+MÉô…àåF€Ãœ•Õ¡n>s ¯­›”Éå*ŸÁHPëix€†Î¡\x6²¥u±»j^tüâTg'Dà¦i&kò|í5Üé.Æ+ E¦0E,¼€ýâì»TÙ™~Ìçô#N™ƒa½¡X®Ï–Ý.-ÁŒüEæJ:êcx¶éΖçxh¯¤N ýT#O½£¤ #k]ºFÖ¼‚…XNÉá±D –Aj†ùvÕÊóìfú rÆ®–/*{âŸ,Ed),É# òƒ¶¿ñvihÓÓÍøÊ@ÂŽ áçÌ`ܲ ~êy)öΚgÙ‰Š•ïÇZln÷ñÙüÖv»´ªø×é̉˭0È2L7Š‡ÏçPkg÷¦ûøcWÇïãÏ%» Nç «|]§É¼Üûgñ¶n– ÉL¢è³>DšõC¶çj}§x›t¨7$ËÀ 1€Œìµ—ÏõTõ +"ç*v’OBdÌNÓÇ#™/Ãõ_,N¿Ð f/’.˜1fuU¤oëÄÝ«ÿøcýtÜݶ.±¹ÆãaÂÿLœEE¬Ô O´¾¼8NFôm|@*7Ȫë–q—–EïIu£eXÊŠ Hm{+¹œRZ¹¾“\ Düç¤o þºŠ6Ã;‚%GÉí÷ã‡þC`•]m%4B­Hi*Gßö§Fn‡Ó²Ý/‰Á„ðÕ.'¶…–1#F\ÚŒ£SÆÈàÅÖ†Ek˜Sò*KbÒ¯ix VA‹yÍqÊÎÜøô‹·iú,ki”X—¡¹áÕWø&ô`BAâ…:[2« ôºGÖ’—LQ2”}—O6É%ù™Ú‘ÊšX;îåäñýóa~ŠS?ø雂KoÚ»6lðúTyª6D¼È±óF‡D“ðï×¥À±±W‰Ó\g?¢""Ñv™|]íJÊz`¡“%i~üH £õ‘ Ä69Ûtö @Y¦ P˜a¾÷Ъ' ¸é› $|,ú­ŒÐúÏký¿©ß’2Ç{fÉåC,ý1ŸšiJŸ•Ý¹`zÑ$ïR·I½)ôO!À¢lG{žINÇüNù~zj"(¢:ÑË.AòØoÓnãÑߦvSÃw_#a\ ÏöQ½THÁÌ5̯EUSûOjŽ¾Dò¦1ì7£Ø³BKÿ­TÖ*u¢»ôNºEh†ZÝwïÐ…Â?’rÄ81…¶ÙÔÅ:›ËðAíðJОö»Qú¨÷[»“‘Í¡`첈ã~lÙ÷&P}Ǹ­™?p™µ?{ªêÛF§.§t@…í_ÌbÃïkîÏçqµÁí‚ÓÝ ¤¥·ü 7/# àio »jihŠ¿÷'`±“7ƒ]7DÏço·™¶VÍKN4Ÿµe˜ïÍîí©œu +Ÿrp²Úáòùnó×¼‘ñÁ!7PÑ“Ðœ€šžwe¡®ŸÇÁ(ùíB +ßþ•É ³€Õg‰»¶ì­ D¹ÂÄ +þߦ¹Ñ‡çPqË2t…•Î¾Xm7š+‹tº?a’ä­å}“iÒ/Êk±5Ýiªœð:ˆS`ƒ$‰¼¢u²”5³n2ù/Ä¿K‡ô #é&}ùî•Ø 6ªÓÑf +{a$ò6šÊŸwºAòKY¤ó0×tÒ…dšïž³Ât¸¤ åIÀZ´IÍýù+ñàcÄC­Öð'àÕ0ë@-hœ¢q—m +–÷™ÅæyšóÏ3ÒP^Ù>]¥©à†A•ÔÓ{G +ÚI7®Ðè{¹ðp™ìõrÈ œÝµóÕ(órècÐ(j|/ Gç‚ì%! ›.åÍ +.I›ãö~NžKõGd}ý ]l5Ï, j]~ "¨´CçxûÊôóCHt¥ x@¶x /ÛÄ[ìo=Î~¶‡h7 /°æOawÒ÷Ü>0xd);?uš^q#+ˆuI£Ö¦| +ĽT,ïG…f¬Ku(˜‘ÊU ’êcÉ]~n8:>NA ôn›”åíc´wŠvZ÷ý¼B3]%ãö#q×c)¸Á„!ñÿ56#ý¹D!Ø¡oC¨>ÎFb£™2§y° X˜pätl‘ÿ0;µ¸4bO¿Á˜÷³NÌœÄmo OöAgn£¨]¤µumÇíiMC]GE½ŠØýoé±nÝõÞX5ÀcI+Q] +Áqe@E¥±„•ç…+­LíNv{*Hï‘!¥‚AǯÛÈ™ð·÷å?=A%;W xBÂ6JŠ&@;éì§l ƽƒ&=ȘŠ˜eÌi±™æyΧ®ðñ‹ +.ü} ì Ê-˘ñ½xÝVJÜï{npJ¬F岨ÇuÝ:õJA/‡õ%È›šý ØVဿOÄb0¸SK¿Ê”‚ëÁ_äœõñ4C©ß–J`ÔìèÐ@©`ÅÇŽƒ%* M º©^ÃA{y뿱)æ—šØÄû’ˆ³ÿ’dô«=§UÁ'oXRxº/8ôÊ–Ý~TM> žÙ¢Lêi;g}c[Í«.òàìlýv—ÿœj˜g‡)G£©66„û[þ>kxÙÄ-´áöSð´Ã¿³ë,M®/sVðiæ«êÍúŽ‹‘ÌÒj£³jü]’wɶÿ“u/¢Ûº*º,y¸©LðC÷¡|ŽQÔø±qSA†ú™pFî~_U³—ó¯ÙÅ0øˆ«|6¹;è"å–s;1Î(—V¥Ã$ŸÅ +YGr®àÄ“çÊă‹ÄoX¬r6¡0ź3jî‚wÁ…8«6*ˆ¬Ì£ÁyáVK£­¡evëG=Œú€¢>‚N£lÖðÑNÊ +…Ñæ¬Æ£ñ+ª@ðËñòÞ²¦î–g5ƒ¿:ƒ0_D¡‚’*Ñ… açõÈ·½»7¦6¨å¾M·ÿxv.Tï­RG†»&µÚßÛ!'PM7>ˆ‡z-™ˆ~‡±¿}Iì”EH}YN8‘Ùlj"ÞS7n£˜£yN»½§£R¦á_c–êá½…›äÿý„£+˜ñ¤ÅgfQÉ›ƒì½æayî³áêø ÿâô@< zß~ÕCÍÐÞ̃ùú´D:®`12Y¹åzåÿÌ—›­ÀçK€D»|‰ænd­5Ç„à?MµÇ GÄ&¿Š”ì‡û¬³[®;ʱÍÖþ G­ŽxIÅd§‡°êXhX7 ¿`⟵ÄmR¬IŒhölüöQ¹ØÝó”:CÍ–õ‰¨æ;;EÞWrU–k&´‰8Óþ.®[Ôh% fäYBÅ‹èÕ5Q —Á¡2m'c ¢F #Êׇ žeDõ»”ÂFJ0î7Dņ¦¡¸󩔪°é\g¡W}Lj̉Xÿ€ÔíÎéwFuæè§ËÂœº¼¬³ž¡T0C"N¹^c*´<À¹’wÛ3|‹ñ™B<¢ÁaYˆ:…»¢¢ÉŇ…99tÎ8IÚEäL}w½…mxPiòV§<4àÆYzänOZ×aH8x¦m¥ùºQ¬—Í¡9EëË‚sr6íàï‰öþìTü?~N{3iÄ Lh±Å.*s®Úai9J1?Ç-B[\†SOSÞ[ Ø÷h‡ ÈŸ bïug2ã£JUlÿkí›vgÇUÚû X»=ç>CxíYEk4è Ø`½UçV©ìèˆ0N sÔö–,—KU þŒ–!ä¥ú„lÞj =òÊ”}ÝwfXƒ±"uŸ'ªÆ”BºéŠsŸµ]P{­b‚×ÿð­aáܱl7r^c¥JÝY% x~Ú@¦£„ŸtýÖ åN¿¨%½õ†=œßb½Wa[´¶pT7·°29w¦¡¦"ƒ£6œ3M‚"‹¬(žMÓÊlàúY¹Äl U½&F†ÙFãJ®å«‹™‡Çj#™È6åE¼Šú¾ù¼éÒæäMkðwæÃÑ-hÕ£lµ½%s󲘮K6‚}žu‰nYA(uƒ–nrïÎ]‚Û ŒæRø™Wù?¦8^•Áv_Ö%4ïÜÄ5…]Z÷oH0ò¢gÜ?ãÛˆ®¯½Å2f!‚¯zËq³*. Ós¨¦¿f'Üö:"¹ë5aãMóÔ“6Ù·Lcùø$¸KØtÎÌÈ…¯¶•Ar’SÞ'\sW°F¨•™6 û &™µoðíß›L‹ y¶JYÿRVRnðØZïT 8žÛ7´=ù”n4P’ëärŽZ\JÌ¢t¿7ô¦v½h¸˜P¤;?'’Á\©z¬òÀ*ÚÛÆ™ õmÕ⌟)ÿ‰õìÈØVÕlÆÅ\‹…IG/r›+sã÷íZ|Ÿâªá§ººÍ5Ë®­ÜDªàCt C ˜ @'h ézHê]/mÛ)”µzýk¿ÃtàÄ[寴ÉE {êä¥NX¥cŠ¨KyÀX—ÉþG¦R |ÿÎûØA=1WÓÈ‘EJŒÉ½<¸ºnYr[ÕTƒ ‰asÒϼ=£1Šá=‹r%SíÒ¤ÔZ6T’’Wa9¾Ý KÆK­ã®0ÅýWŸ1"mƒNÂü6d]w#t>6ç¬ïÏ‘*½^œvú´[¸S÷JÈàž†÷$ +úÝ`D/Ì>¼w³­°jêEÕ*¿*ᜠXú(H“‘ö ò¦|¬ r¤=ÌŸòéƒz¸#-1Õ_1¬kmàøG\Ëeò+Æ@T‚o3©'P’îjÞ~-cÎv~û H3Z¸êW»-Z×ëzÔ"d¼mŽ+:éäšZoǹ Oì@aØ[C¹*DôÈ3* fT,í¤1´‡ˆÑñœQÐÙĤÓjôçJ àzÔ6þh¿[Ù+J£ÍJ6L|Þö"?ŽÀ°äN|¼ûieÝÉÔsï{ïÝŒÚ +A¹ehX‘ª'v2d*U1‡¶ã{®¶¬d^ +_g\e+J`Ú¼uÜ4ã¤Éî– +þšÅˆÈÁß"þr?ÿ±¡iœ„'5´DÇ*,uƒ¯Îêžö àeòH%. $åÇfØß'ÛT¡Õìx„ ÂýÉ®3aâÐ\©<ò;3&“à.8‚±Ìoé aè­?shp/Ú`ȶB¨F–{ˆ·D1U#¡¢¦†ùžË'õ@/ÒwNwú¿öæ½O{WC°Sž2ºtP=‹'B—\n’ ‹m‹…$`ˆ¼Õ≲Xÿv¸G^¹Hf0@Ǽ„8Dz”gˆðtÛ…ôÕ×-4ŽÌ}ôýGW +Ú ýó£XêYÖ¾q¥7¾D(m‘Dç¶ ³¢‰"ögFA­uÏÁÛshB…!&«s–X¤Ó’ü}¼W·üTÅÃZÈsµæc@ŽŠÙ‰úø`9’ÈîzmÚ§ÊuËÀxç“leà :»wæšýÞn§­Êa`uú‚•ÑÃÏ©n¡ëtÕvóí87”JMS”rrdI8üMïÔƒi¯6ß?é.ôÎÃ"{O-|ä‘lòÕÊð ‘vÐ~6|¬gªÇ|P.³¾SD~nLjàyDZŠãÓÛÒ®o‹äåW™$ÃQp$³äÿ,;øøCÀ꺵nÝÆ­ó|ƶ法dÓ…ëw€ÝPÂw?WL²Iqß>\h(óÉFÚìÍS*Ñ—Qs¤ä™“Á3 +ŸÚª´ ®N«×À@I€ß;ƒi±eg¤Ü|F\•ÿ‘;;MÌZk±_çä`÷½£ý:BçY–±9 »LxqyKÕN,H`#øWè$ãV=U‘DxkU.¬Þ Ò"*4è´xSR‹è¹?õ €±ü¡§PrP#‚ä½ü”Ýý¤®>³½iª$!¨E–Ö°sG&làzÒ¿g$|oüëjÚ0ÑPˆëËsÕëffÊÄXú ô_ÏÉèÏç°»ÿ§‚ñ£^ û颤Ñþa9ïMh- téŸÏÁ¸\œZéZ³çŸ ™¯ßHzÅŒ°)XHm]cÕ&Aƒsl†¾ÛY³² x=VZ]wq½¢³ Ù¾fp™n‘v%\Ü*iš;ü2ýf<¸¢ž“ŒÙªÿÿcZ}‡Z‚;“É{,X¸]“T´ûÔ]ÐÙ4~jýr²d×.1º²…ò=ºâx%LE(‘ö“C_ÇïLлF»|zyå8ÓÅ‘;èênö—F+G'jDWTÓ2-ÚÁ–ÆhZîVÛ‡ôÐ »öcAÔA­^dÃùE¹É_{0âŸvÇÈŸ)Š‡Ë7Þèyëß΂€Lhé ³á§9‘SFúsþù¨Úàf†®³_-vAYµó}Ö1ï)GMÚoÑ\‘<¬Ÿ+Â’‘Xc?«[´ªÖl&/”ÿ’øÇ_®ï¤ÐÝiËÿºâÇœÓT%˜jéü¡Ì.2‚Õô­ÌF"C"Ç#«à¥UѸ 4?“h)DÞnkcœ7@ñÊ*üãY­ÇÄÌ7sáîùÕݹõ=°žœRµ½ï»9YçBÝ…TZÞGýàkÇJý‡`íÊž`­ \þj+@{“kF]ÆÓ Oì­ç‰`èwŸqŽrÇÁ¿1-—F8©ÿA(èpóÔžèÆ@f]‹ Å»ƒ#xq"ï»Tïã›À× +*!Ñî¿/Š°¾µ§ãñ’û½š®K¹ÝBdî$¶ɉڊêý`²ÀÅiõç‘ÉçÝjÍMz³Jü7âä]Äjœ[¹‡¼JXö¶p h¬핤>ðÉÃ’mþ@¿ž4G«ëÐ׆‡õÁ®7¤ +¥ý2‚˜3>nå–“ éjVwYˆ³»2¥8Qד%ÕÊuÍh@}y‚S€._6dž‚òw…Al‚Ÿé¥Œ?Ê¡- +4ö8ɹ ˆÁktÃ’ë:öÿ×Øý]XŒû¼|jÄ9ž' 7ˆ,¶} +öR±{>þ¸gºõ7,}ù™¬‰ÃP+Þzm5ÞÇ˺ÀHõÿ‚èU?iSÂr,+ +F½Aa´´ÿ.P’gvŸþì˜Çaósl ø¯ZBh·õ´gæÇ –Wµ Û-‹BѶ”N˜°ŠÜhú`˨[ÉW÷jßí)qˆ(µÎãÓÌý÷ÍŒþð.wYÕæ‹$ÞQ¬ÿ0±€®Ñ]Šü +endstream +endobj +2257 0 obj << /Length1 1442 /Length2 6151 @@ -33054,7 +33171,88 @@ n^ r sb¢VØb)l 2ÅþSŠ„T£­H+PMzjÔîëzËiÍfí$ŽDáŒMkV©° Ã?ã\Ù¼Ä>Ž¬߈ƶa¹<¡ÈèEE£ÜL½¦D…¯6=t¯–EÒ÷µ€ðàÀ.…(Á%FoÜ~­´ô6€rý¦\l•ù;séñ'$Öµ…ïß>ž4¹ÿr$ï2¨DZý~*®\R ù·Yi$=Þ¡¥k‡å'¯Öå“™úý.m…6¯Â–„tY0’O$ð)ºQñ’ršÈUQ…»+¶ßªúÔ4(¨«,‡°Qb8¬—mÓ©qý±âÀÁÝHä°=‘œ,YŠ8i  ÿ‡½ª”SZ6Žöã½mØ@ˆ»`é7~â"L7\ã¹ßFdN#FþýHR´K´KHpb40 2ÂÚ~HÇKε֊úøX endstream endobj -2260 0 obj +2259 0 obj +<< +/Length1 1478 +/Length2 6403 +/Length3 0 +/Length 7881 +>> +stream +%!PS-AdobeFont-1.0: CMR10 003.002 +%%Title: CMR10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup +/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /SOSTRQ+CMR10 def +/FontBBox {-40 -250 1009 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 91 /bracketleft put +dup 93 /bracketright put +dup 61 /equal put +dup 40 /parenleft put +dup 41 /parenright put +dup 43 /plus put +readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» +ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ +}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¥ÜÆØx¹<¥Ÿ ,—Ü-.è2›¯iR‹n·Ã±vÌÙ¾1ä • „'Æ䓱©·_r"O¯»_‹t±3keè¾fBݼöVÁfj—Ú9Ò³ÿ Ô Yh뀸Á{û´qÝÉÊÆ-÷†—ºøÉ·ÊãÁ}W§?Å?gw1*Eh[ŠÜÛ:›—ªtÍÀWeI,Úv•8üa…<{‚ñBú1â¤00Z8ÃÌî5 |ñŽ}­µðN¾àÔ×lw]ƒÿƒ6Nÿb¿—ðð¤h3E`œ†(¡›EÁ‰¡Þ'Q;²eµÔƒª/ðà­.D©yL’â5ØñÇ$¥4IGÃå׮Ɋ\‚yjù9£.îV­U»5£Q!äì‹-ÍèµÈBƒ…Ä9ödèâö««B^éoVùð­wˆBÉŽáT7„¡‰¾R€ŸÀsO™GA‹¦÷ãÕà b#íTBv!m·WT=úãÍÀ¦üw,ªID%'¥ÙMÅKé<‡|Ù]ØD¥Ã°€@‰õ·€2²½Oø( œÝŽ%œæÛ#_½É·VñþBSTø¢#zàÃ×ÒÍã!ËÑã${l­\§4ĸ ;5Œ™l‘&!×〚óß=(ŒŠþfŠ¸ÞUwA´Ú±›ÔÆeßìÈÌB#½30>ÎìH ¤©'œÞL¥+ÿÖ“žjâz@ú¸=®s\²Þõ<…«=\ÀY$ßD?ˆUê Ðæü6•ŸÒxG¡QnÇ«šŠäi¯%Ö”ž!×Ñ +L2±[žšôã¥)!Œf…X‚cè‹ã<Õ'Ȳ–ñRP3E¡!„-:±'àþÐAJ¯.ÙIJCJÎJtª&Ã{76± +#VÐÃÐÀëÕÖHÕ“ó‹/©ÊF×gw"F5”wñSˆ$|¯ÿoQ<ÎçΗ Ñ`~¶<10©|™ÿ<»émï´·ùØœÞÉhðÞ „߭逵µ°°›?É`?ó7–ë _Ì [•¾ó8xP<41Õó=tÏøHÚ ;6™¹¸}rKu1é3ûšUCiš´Ht­²ÑÓ}öyÖþ~c%\ßqï€\ººæ4O4v![›_÷Iº¢°ï³¯üÆæc‹0ß«òMJùMŸY0¬Ìv{6ß”Ö\øà rŸqÉš"3=÷”TÒYK.ÜKêÉ)Á,GÊK{aˆCZBGž½ +yÛ(ŠK'†Ã2O0ÓV—®6IP$$lûéú¬¸-“à[ÀëÔeÍÉ‹øÇKÌ×&2%g”b¯z‡÷JÌ™,uo~M¬2ÄzÞu’™ ‡Ô6*š»*¦ Å «Ñÿ9¿Î¨ß?Ä£K”c)ËÏ÷á\ðgŸt­&?©ãŽÏÄôûnTëw½“æ¼$ dN\C¸›¤ÎÚOöÖÏ@¥W2xè8q!LdÒ®ãoë~ä1V/ŒÈB=@±ôúí!0’ÁY¡ozù$íùÐ÷Ç€%Ä­¿ÑÉwáÞá2]oªÃß ®_ý?IhËuè¡BmîF:µ1Ø–d©Èy6÷‚ÀÚÞ F ¨„Ln5Sòw&©-ëÓ°¯žGzø¨9ê=È'’ä(Ìý¼IühNú´Ö{äO ˜1LvcÕmiµ¦À&È"MìêmÄ@·WÕ†­¤­mÜb%0Ù˜*ú`šëÄ¡“ß“/fõÃl½%PE2¡:VA)SBL/æ<ªî5ªCžA£ß÷l;®{ËÀ (#ºØXnF’"‹˜„8{RØo’ÁÄT(ä_WðbAþK|oM _ÖÓ—Wßþ‘½ yäMèÿ6€« ±^½÷atž@O1ë¡/Fñ”¶3y#™ãcMM×ÐGÅZýÝ[m¬ÿºzÏŒF lªù«"ÂJ>®eØVBWB}çV)ÜSÈÛi,¡ïÞ§ïR¸¥½»FǪ½P.è½LÑ€xø¦_[ÎXVˆÇóôQ ¯ TPÿõvƒ ù +eÊ,’pþÚƒrh“ú¸“uñ„Œ`+l{÷eQ÷Ö_@f63HßPavÑzUÍ_°ŸÍÆZ«1*ªäǯM+Çbp€†;{ÝªÌ ­Q3èVV;Ø¡¼ÍˆÓ ®O.Ožài,¼88«ÖƒìÆ…gŸ=\=à@"FàúKFøT¡bû˜‘¾VŽl(lg®ÁÚbÒ­Ý!¸èªÕ–ÕË\áýùa4Q1°Ì~ «9âqV¥¸§Ì¥ ’s^kí¢sdŽ›nz‘Á­£ç¤:ÖLžz]Žðªr Š¥¢ªƒvND¾‹MG79$ILiþ&“AØgánl6y‡J FOµò;ð,zÉ´Ñ% +o»¯ß xÈ0˜s‚ÖÈW1FxÏîÔè—ß gþm‘µxVyõµÚÑ"]#z~—§pvòÁ †‘™öØŨ.rB9‰$n¸YC­C1úÄtªd@#÷¨8ÐkN‡Ô‹K° Ó;£ÀêÔ“lFú( ØŒNóŠ¦;àá¥dþ¬Âûí’­üß*¼Š<Ʀ¡•ãÅ„ªsÀ¦9<µG CE`…Vé¢hà½ÉÄ%Q“ÎF¥oP½Äâу$ª½"Ñ33¼÷P9×9ìZs9‡'`ã­ ìrÚWù:N”¥ìÈsÓõÇ”·@fƒ œ^WÝ…&24w©lz æ$Ô2Wï²wÝ…ÆìO9bÿ£å"O¦ŸÊÍWÃ*F]Ý/¦`yªŒQ± ˆÉ”\Q•ÂF*ªÜiTñè^N öd_£M`ƒ¤†S%T³NºK7¯+R™Öì[r¥›üÈYõÅíYqe}¼±Ø ¥‹÷ØY‡Púô +ÎFUE¢ìóþŒðÓKƒÀÕHŒ'²µ>ZQ@ÎIÙàt%£äÿ–œÀ[¨)7Ä&¾ü hÎn ±éY'ÔÛa¶TÃñ'XrÔß™/n_n•JL¡ (–@ +²ç ËК +­µN{KFµßÛð^k›bÞÂnê~í`L¯£]Ûa¤U¡¹Å{üˆvâïLßܺæ¢4“ô1˜$rmAÿîs•ÂÆóònZß*™»=©÷Êsõðo›b@{‘yÖ !CC‹{c.WZ¶ìïæ0n àbp…gsP˜d$-Ñ\ö¯ÎÔ›&L27J»Býóµs/g(ô©xQ,t>[®â8Í“GsŸ:R$9]6&ˆúmy®)iµŠvÉéjÂöW¨‹LÄRB^RBal¿ëx³_ ×Y:²5M§¯ßæîÛ»­µ¨û/j¤…àÅÙ¡!}Þ`”îëD&W€ÈªäÖQX¹$HߧçÌtI¤­¼ ÈÕ.ÙYñ@Øn«r–_ôìnÜ ¾OüãtAN-L n–‹—?_Þ^_…Ûg’µ~žÆ;`°Ðí¨KB‡Þð6eĶÁܯ‘¸ +>”èl¿Qp‘†«¢Ó)À†¶ùµ¥ò/;S' ^¹õ:ätJ±j@êx«³ƒE(0GÊ;κÛQqŽ©Ç”kT'¹ðž;ž ÷ÉDHj‡¢ãsr‚xÜ– +æ.Â>ÚÐÖ¯¯¡Ïk—®ÚlÄ;&–¯#<çÚš°òe)fÑäFz›`·Ç·?¢ãIc@SH&–<ÿ¼’îevn8F‚\ãV±ª3Åóa­A!yy¼ã:ñÓ+žc!£xð–‚bÏMþÖ‰á/f}3ß–›ë˦Çã"G©–­ç'fMsÑÔXWUý}üöµ·¸Yĵ^ €Ô×%jÍÇ!H¾ï‹OHÿÉÍŽ_ù¶‹;臲Îò‘âJ¸v¡²]Ü# +$ÙªÛ'Ch?5™<„Sý»íË°Áñ@“­ ša¬´€-™AcŠ†éloW´M(òr·§#Û`×ÐnY{jÛ`3|lv®`º'Il ýà±!å´ü¡õÓPÂÊì{”¢E¯˜ï=Îpaè^ ØhëOk`·î›ãpøú ­8uyÜ$rò–Ýó•u +f}cqÃ+5Áy~!ýÝ]ÕúøÀìU,­¾t )æi:Hò ¾O…ÄÛ(®_eOéFV¾þqÐ>¬uèàÄ-G:ˆáñÄzƒž…›HZ\%UívØÀ Ðzã^àËBy%€NT⸶3=®Xëà?¼mJ’ø-Ó3„÷iã×H@Üfσýk¸R.ë›õýv'€Çm.'ÍSãÂD»ÌÙlyü7“¢ YõÖC³­Åméµ^¶¯Gu5_G›øµÙ1¦ût/ŒÔ þàÌâð +à4‰±1­nˆ_ûD>}p+æfªg9h$ú¨Å]@ïMù`Ø^Ò¹GKö;5«¤wÇë»äIrqïA¨3fA‚ßYiu¬€ÂÝäÃò½ÑïìÒYréDõö:ÚdR¥Ý “At ë-ª,)âºaª¤ÉºhâÏ9[Ô§uÿSç9K’„ÄTK©aX$äwgÉ“¶Oƒ[âx‹qǃ£yI(–ÿ¼j5L§ªIÀcµ}|hÀ$‘zDâUÏÂw»Y+½ý¬Z:ÎïçÄϤŜ1¿òµlÙeÀÇ`uø@|¬ìÖ܈贚Æ^Ú6î/žyÑû`að¡¦È Š[¯ÎŠ`Ò¾ÌEž£ÂwÁìa ¡zæiòLa„}jÊ°çÉ@û£Šå}ÅxæïW¶™ån‡sŽ˜0n*{¯l?Z©zó‹•Ê‹>¸ç8íp-LÑ&È£ûïK`> `´¨%Â`–¢îÝ¿Ésª?ºvË»Æ^\ü‰*’ÖýQÊá¨Nbf…+Û¼¾Þ„žo" Ù§U ¼zÑógêgÍaäŽu´F Ñ™<ÃXúyݸª¬Ðú*¼Ègöÿ4?X2]Â4¨HšÍ¢›×òš^ÁÐqLeo²œ˜Uíó~ ÷¥’’Ð7>ì)Ƥó™Hnžº¨­A7"é{D†Rj)ÿ×¢Éÿ~áeàíVDJÕ|—ººX}ѧCrŠÈÆTÈAÈè fý˜£’”P};Š"Ó¼KöÓ#ΑT ·F÷ú\çý÷^Ô“ ;™ À|êR D\Ä‚ HuÔ6ÿQÅýИ'Q3Èb;x#¸Ž3óSÌ:ªjbíÛ%¸tJ‘/>Ê¡OÿîœrVÞÂx]°¹¼>)âïŸÁµ]€lù5o¾[ç¡ÐF;,N&¨'i©Š\±NQÁIòHÔÍôÐÀ?T:í@ØFïçNÿ SXÁÝ0±<¬)»hàWÖ½4f¹FD·hÛ.سT)^SÑ-…nw}ý, ˆZN¸EÐCô¯÷ Y ReµzÂÔöð3¼Ò\ +¶ØtíþþYá5`F~_›xÁƒUž|‹'X’µÇ‡„G@UÖ6I \™„çÜö>ü:ÉV_ûÉ>Õ¦9*I0}Óµ\"{Øï3UÚzÆñÉuäFœfÌÙ¤…õPߨÊ)Eˆ8‚üU¥œúw)®ðgŠËqÔ:àdj#¥¹¯ÜˆhqÇ ¥œ¼so -¹@’ +KG7ã"­|QЇæªúå Zòzs|…‚}£ÄLÕ´SŠ¥:€fªÕm¼§ÂA3ïÖðS 2Ä=‘Ö[³d·Ø“üJœ\ܳ­òcìÚ€üù|Ët¾j1ÑÆ›AçrþŠ®ÀÑ®þÌJvÂ,K| ò´…Ï•VÞœ +˜ü›Q„´[ÜÞ‹ ÑãÛéA£EKS/Œˆzýÿ˜åKcÅ +OÞ,¨4¾•e|Ó{‹G»Êø#Rvðà©KÎýyÝ{ K1èEúŸÖýVËVw¯b´æûÙç6­«ÂªÎÖ=…»ºyeçŸÀeìÜ‘üÆ÷ uEØ>M%;,ˆš1–W}w ~hW¹ «—¦˜_èFÌâÑî9QcyƼ®E¸~ôÙf®áz\©a’:a<ÿÔ2eugg°SRŸ1ØEÜ’(=F™=Ž£ƒ;âq')^1>Çu6 +GÁ0ÿÑûòÿ¦œÿ+B°¸+›æ¸žb¥qGYÀðitâLxRIPv®Õ½·hÎÄÓÔ¥ºÒÏ‹^ž½:nwåòœÕp5¿Ð>^؉R¥Þä}ð4ü¸¿Œò™áùÞaŒgül}×^™(©t7ƒaÝÔ &ó½¶)±ZS«ˆ‘ ”¾8ÿn}@f0;­b.Û£ELì›7†%·¹›3Cª,ò@ä7¹Õï[I [1sI¬îÅXÚ<Æü[›fÜŒ¹¶Ýa¯:?yºÈç3"èu/'Ø\Ödñ ÁDÓ¹Ú=»qUü êškóκùH‚â$ y§ïQ7¼plŽ*žmhS]ADäÛäøù5Îã½üÆ«ü‹79µ +endstream +endobj +2261 0 obj << /Length1 1688 /Length2 8444 @@ -33145,273 +33343,45 @@ p bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ endstream endobj -2262 0 obj +2263 0 obj << -/Length1 1173 -/Length2 2916 +/Length1 2571 +/Length2 18274 /Length3 0 -/Length 4089 +/Length 20845 >> stream -%!PS-AdobeFont-1.0: PazoMath 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 +%!PS-AdobeFont-1.0: CMTT10 003.002 +%%Title: CMTT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup +/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /IKXQUG+PazoMath def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 165 /infinity put -dup 229 /summation put -readonly def -/PaintType 0 def /FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-40 -283 878 946} readonly def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U -nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ -s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× -‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 -9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, -ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. ->Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH -ƒ$ü-UÒÛÊ3¤³# -endstream -endobj -2264 0 obj -<< -/Length1 1188 -/Length2 2740 -/Length3 0 -/Length 3928 ->> -stream -%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math Italic) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle -9.50 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /DUJUUF+PazoMath-Italic def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 97 /alpha put -dup 98 /beta put -readonly def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /XIQVGP+CMTT10 def +/FontBBox {-4 -233 537 696 }readonly def /PaintType 0 def -/FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-70 -277 902 733} readonly def -currentdict end -currentfile eexec -ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û -…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 -¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ -UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp -‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq -1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú -T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: -wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ -AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V -6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ -endstream -endobj -2266 0 obj -<< -/Length1 1756 -/Length2 19614 -/Length3 0 -/Length 21370 ->> -stream -%!PS-AdobeFont-1.0: LMRoman10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 806 194 0 -%%EndComments -FontDirectory/LMRoman10-Regular known{/LMRoman10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMRoman10-Regular)readonly def -/FamilyName(LMRoman10)readonly def -/Weight(Normal)readonly def -/isFixedPitch false def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -146 def -/UnderlineThickness 40 def -end readonly def -/FontName /NCCVYE+LMRoman10-Regular def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 91 /bracketleft put -dup 93 /bracketright put -dup 61 /equal put -dup 40 /parenleft put -dup 41 /parenright put -dup 43 /plus put -readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-430 -290 1417 1127}readonly def -currentdict end -currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿äŒ¥?ü‹(ä›:øE(ùqÞÚUé[‰s½ $ªgG '“\ -wšÃM•ˆÏ‘¤s¾u¢IÐC'žƒêµÑØú93ó|Y@TÛ‚—EìÛÂè—k$:™mGzR›†g»?·x= w;•*E ›¡ëJ²úM8Í›,õuøàý²èZmYË -þâøµÙ`Š”n›ë¿.Ë£†ýî/J -E:– €ÉB³Oà÷/g^Mj9Z6ñ¬ïF脨0 B‰KBÕˆ[—°GÓO¿rEÞ÷µå符õY8ÁÉà6ñ¹¹n¹XÕ”°*w„€FoÜt8CF :ÿg6}dPâ§Ék»©™]«!­ð$ú¼3h+Û†^]â;J˜ØRÛ*Ç-uCí4È⚈uŽðµ6Lj=!;Í`‰,7TàÈåìØÍZX Vʬ]w)ߧ±ÏÌɸ)Á²ê%NµLß±‹VÙŠüÓ’ôÚIþŸœü”|5ú…sBŽÏMedO&ÿNg°’$q&äàYשA Øuþ­(†@HÞV¦qûÃQyåï?>&_Ø@GKf¸0ÊZ E\¡¯¾±$ÿ3e­‚LÛá -°Ž:G(,æ fÔë‚Ë[MÆÜ]l¾n™ ±ô¨uEäÖÓì~0¿Rø÷š‡tö›»^¤S Pêþ–¿jÀòw¨£Wv6ä™ò!¦Ýé¬ -­Ðï‘1²nC22OÕœQµS ê³tyóžn”åG - óýµ¾Œ}=_÷Ž¨ÊóÎnŽW?^è‚2I·=>œÄÃ]ëL£¢‚‹-‹Í¬Iô®úq^ ͘´ EM -,|K93¼¬ðQÒbÖ¸Z×¹pu ÐÖòPÛ«%ÃFùj`(¡m-¦>¥ĸºtGT‹ïf• -ëb0UAã¤xð“>±¬|ïºz40 -—BŽèCGÒ¡ó Œº%"èânHè¯â¨#Ü•· diKs¿öýx‘²cî³"ÕÖHc öAå2Ÿ·¦áskÝ6¢.ab?ìÀCGZրݣêÞ~côc>U¤Ú”!«U ·ð…Îìæø‚ب ®Zl¡p;ÿ@6CñÖþá‘ÑžØOå.©a‰ÞˆRÙ&‹UÕ÷ìÕtºA’ó•²_Kã·Éfq -á(CŠÿ¿$gUà^½†«/¨—è"z ×RkÌf ÿž¦vPGÃyQ”}ƒiòî0Ïñ}ãÄ*‡Ïí+»z>³šnÓ ˜ˆy!2XÁŒô{”Z6’”ã0Ŭá‡Wë ZîxVêŽ*ü2'PÔ§ˆxh}·C}—«Bºû—²â•.†ÈŽ”ºp&…îj…Žÿ©×·ù—dãqŒõª×â'gº¶0ˆéù·!gzŒ”$Í…AÊ\/=Çj‘ÂëU˜EB·ÎÈÏm–/ºöðÄ §ÎÖy²]Â"Q²5Q.Žš_xÕ(çæº]ïnõ´R©Å{æj„Fæ.6Á‹SµÇå0&‹M…P!>æÞÉô>¾ú¾òÇ’Ü¡Q°Øá±A&%_¢ÆÍ¡¢°•¯ß ~æ›eài6œSËܯIƒ_1pº×$€$~á<À-’.Í/¦pY7jU‡Ëcd适™ÊM“Tj)9Z[æaì -ƒIjðŽÁàQЖÌ@é1¾°tªž2»ú6“Îh½e>}[ˆ’E»fagŸ~ùg¯$íP81lÎÑ_ÿŽh8é*îðµ5îCÑÕ,ý áUwF`‘àeүͿýå;;1"c%¢|PüPh\CMNñ½‹ Qn1:ü .«hÑ+±ÁUe‚w€5­¿Ï6e–õãÜKì0k‹º(@çs¤ìQ-rñ¹­DÉ%úÝ}òzz®®RüãÚÉ7ùušÌÑKfÉÒ ¶1óú(±Æ¾Hµ¹^PÁ(ÿó ôB'vhuŠ fgÀ›ó!ÓÆá±› ¬š>¡Ôgªã¦‰ZLºyå’ûM«SŒ({º’÷ÔCªE§‡]éûæ;ïþÇ&m±ûP†4 }:FkR‹{˜÷"¯KÅ ;\Çc¡‘/¤[ápUÝ)6)gÔsô‡ÔÁµ -„.Œ -wçøʘXóÔ¼Ï68…|%Ç;xõÃ_ðÝêÿò¼€jA÷ñw(¿šdŒÿ—BsÑŒð¼é’>„èú~è>‹­bÛ þûµa™‰5s8«Û÷èݯÿÃÐ>ןqˆ§ î!/‡ßÑÇjWKŸpDzÂ¥›Á™ùN=0óCÈ72K™¿¯0Ôër¦|]´*LÛí­Åø†Æxå\þÒ¨’ëü -üG:Æü—c{7&Lš3ÛÊP‡ÙàDúîfº$FV‰—ÒeŽ‘ü=…X`5 :cZ+ˆ2a ]ê.…D`©“KÊÇk^%÷ÂIh´MHžŸ—/F? A¸]bu¨\Ék)¹šT¾Ÿ¸@ú,³¡ÈØö®d[‹ñÏ¿ÐBí®‚, Hh«¤ÁŒª^Û¯ÏI±±*ˆ™qjT‘qûbx`J@̤HIæ{…¾€Û£;§qOÒ]ßûTe„7”xwy÷i”CåoQ.<èÈV¼ÓYx}½ -kLÞ‡1‡Ú†ÒÁµÒ'mȾ­ZzË\0©çž…Ë‹õ8FôXqàŽÕÝêTòt-1À¶ÝAºˆrz€†–&‚ -ß"iå/3 KÅKÓ¨÷å ÙŸ7bA-ÞÄ -œ¾Ë÷y“²#ĹÀWMN«ë¬]Jþ—ו¦ÀU *É;.Ï ‘ %wB©¡åy;h¢"1ӡ환%NÑ©p1ú ‚Œ‰ð@+VJ–ÅSƒ€).—¾&µ˜yš‘õ+¿p<l)Ùlw†ý¥?Ê̹”FfG•òµ ~r®#ßýÍ]%?£ÓöLh0R"1ƒY,”1ªÌì´¦ˆ`H+blb„›¶Uû¢—“Š<˜nÑ[s {åyA$ºÁÙNwtú•Œ&Bºˆ!L‹3e,DD12–r¿T5ˆ ÿ ¢Hù¬í{bLÔåëe/wyBQ~ªæíÉâÁÿOžQk6¥ÐðàÊüºñÂ$+æåB ^<‚HZ°~“ÓNp¼þ¬å#³j*µô¯gqWkM6z¥±½Ã·Ø2‰w¢õÙÖ8©”¡ùèýTèÚ|JÄÊÆ,ܱJÖŸUVzÅ%C/•Tü­R(x÷j‡‹Ø q?táÐhSÜõL陼æB\j äò¥Ei¥cB ßgŸb £š=e¨ÎáX2)ƒm ØÊ9 ý˜odšB°a%\“ìÙ¸Ü *sr“ê„7ìzóE±ë;~‡€ðPØÈÙ¨ê ѽ„Ð •Lù%*DCî̯Væªpdmô™›öÿo­Põû›B¬­6¨é9OsÉE‡Ríœ"(¶$@A.6'y[)GG¬˜`Ùšqè!ØùfGŒ—õÓ(OZEü2u[\îÓ澶-ËXu[é]’¼ËÉÄ…üe¡[þ£@×$@ù´¸zýJ&„ûäàŒíU, ͸ -Û«+û|äï¥íØø½ +¹ËF– -‘Ž6ždnú¨å‘§Ô[°E-x•þÔ»‘ïÙR¹,*[c—ŽPÇLCã 6'«ç»µûøÍ~ô8q!÷.ë:š¿÷©ÄkS´kúªn98@Ì?-±×Tùt¡B€Ô¬™Æ×Eš!3`yl& WAÁÑvïËØ8æª8 -˜Wç2¢4åCqMAÌa©Â·½qqYqfìžžœâÓö“õŸ¯„bۘDŽ5Ÿ(‰ZÊ$hÃߦ‘·m±­ÜÞ,Å·ð,ï]ªx¡óNõ8Û4 öøtè»G—= ØXv´Ògkñgc q¼ÜdfÜ%Mž› SG—øPïm©«É,,ÆÚÈî¯ÆåL ²åŽAvŠ¨9l1ð¤Hë€`™Cø⃗Æ!Tà¹!2RÅ9QN›õIuV;¯D\õ½ÖGCöhtAÀÚ†‡eS6ã ¤À[2ÆÑV$¨<¸oÄÚº®~ Òro1U>&=éþÓ³ö¸‡Ñ%<ÅìÊhh -Ð*8‰‚ƒeõ”NåakU±u%ãvH²EDÔÐÒŠ58ê‰võ"ȉª?H‚}Ù( 6Ö˜s[1O=xZ1ÁÏ[$Ñ'ÏÐ!Ö„¯„«W$†ê?ÒãضdsÇHˆ» \éfÖB–Ë6ÁEÌ%øXãKm'á:Nw;b%Ì÷šA5Q•¹ÑœyacP»)tLq=͘F.’ %O -¼Iˆhke¸ÏÌ!òw†™¬«ï(Lö<tÉÏl%"Én…Q´)ã4a -iw+ 2bgr8%#ÃnxTËG&yû«ñß1Ño¢•È0LäúewÕÈz¶ó3áÂî«Â -i„¡e9Y½o¥“÷ò÷'ºâ}zf *ê8!é¯ï6¹¶Ôï8S´("úÈ,7MXJ‰ªALìÎÃî©…ÎI1sëÚ6$)ϺÑøjbø¶ŽcÞZÉ͔զIG™'`þ#áÜ|ˆ5+…DÝ÷×bm6›iæ¹Û>‘]ÇÁ,2¹ÿ“Jó ÖàŠo5@|JK6!CõÉL&dxXñBÝ8À‚p9™j4¾ [ú™Ù‡èGtö´bú.Ô/ï _9"Å:Nªx ðèýùV¯ª)$›®ÕúÎÍÕ¥þ»tùV5è©çû4jô·°ðCYÈ­§ü·†Uçï-ÁÃi73)‚IF27¦øñsÓx¤ƒ:¤­ùqdAÃÙºXHzõÏlaV/Úõ·üDïû8š4&MÞ¬–ög¦V®1¡±Rü­¯„˜<éÍ8„Îí ì?Ðb¥ 6¸[êèZøŠ$ŸÛR ¨ÖvƒT-Á|âî0àV¿ ¿|Ð?Dµ£…7ê•Fê<Ǽ”i;zHèè­8Ùc,o“H_š‹³žK" oo%££&T€»ðT{ݱߎZ¼ï\Ù=øŽ`ì㬀:ŽÛzXÀî Ú ©›QDWn®*Ry£Ê£çW­^kDÑ!&™Ÿ§ÏÝp`|Oú*¾—W^¿k¸ˆWn\Ÿa^È0§AzÓk­@ñÚß66¢‹zOÈçË¢^ƒcb-!„zp$‰²Œö'he–÷WÅÁ}Êþ?'Ï˹Yp˜•2þ¡íÎü¸xþÌtÚÐßïD;9\”Äwè{d\’w¯ŒŒþª€*§VÒ•ä²³1Í }¥½÷¬FTîÂÑ/¿oôs€G‹Sú ÉþˆyI‚ˆzüÏÞxÄÙP¬OZãMŸAôÝ'FÚ·jf×zM†`7”U»˜µ‚ë*÷…0š†»@áW·ØòBÛßX€3Êo¹Ê•:c6˜‰Úø£÷R‘ôEÝÄ!Pÿܨ^F£θej]Ó¬¤!mð®=Ü¡ÙPàñ:4®ZIqõêvknåZUêûÓËšË]P$ÏT¶ËýÌØ%.‹þÔ3¡Óÿ‰8‰ƒå`®1ã!¡MxéRîíŠ ‰½š=ŸåN‹­ó#xPtâð#Ï&Tt·+i~®u“$Ž­zÝY(ê=ìÅÏ>T–q–ZÈ„›;ˆ[}ªp­ßa€~ô¿ Ë[pî‡ÖsŸ!c yÞ;àôÅ.e\éNhôéî]"óXˆRñ€‹‘’þ3å+w^Yë$àÍ­’÷a³a{›ÍÙcçFäSŽu1\ŽÁƒ,*ÛFD­ý6, ËeYÃÚÉ VOªñ~ÿ<‡Þ¹•5å0„Þ´Sc†YNr¹t¨E{óÖaœ°Šç,Å»:4 W ¿¦\…eXµÝ¿+ÆÖßWiæôÝ6çÇ :ÅŠ²ß£íÔ–ÁŒ‰tì˜ \1O|å³”åÄh”<“¢"­eøuÎ ß"¼¬¬k(Fî 9õ?ƒ?'y•Š‹xI“xCf&Ëó,»·èfö0ÆGû°Ã£¡^Ül‡5\_|‚*‰æõÑm 4ËIžÈd²3$)Éf˜ÕΦÔeÌžÁd<‰ùp3W¬KàNîmÊB˜‘' KÞ×<2†‘–§ÁxÓÑ3œJÜ‘j¦ôõþŠd-¢åOB$ìA9ÙáVtËÍÁ!- €¾/EJ}†ÐÏd¬[ÌyÚ{öÐÚH/ã8ÿqb³Žpí¦w?…àjù§¹Y¨Þ¨+?¯=Œ¡—ë²ôþÞˆ‡Fò›#¯N˜:îáznmy.!Ö‡¸ýA6q#Ïîà,Ænc+âžo -rCR²ß` -"h³ZSÏC×f'Öƒ|ë‰OÅJÑ¢Þ4qmպă0¼á×¹­‰ kÆFÅÏ›$y´çöýT÷ùÓJAê$碬¶e•’˜˜L||gBø|ÿ{Ý$·W“CÚ^UGè€!±ßÚ·‰¬ÐþZ/e‡ºj†³Î‰jž‡$,£:»©¼ê–CŒk¿)µÏ8SJc¸ ®¬ñãêŒzžÅÃëÓUM‘ùNðT§þû¬f»{¹·ÄK‰×ÏS‚?O~Ý¡8RÃR¾}Íó¦™Ô@‹“\aI:^·Àlââ†ÐyÛkH—@—¤Ý".,Ôÿ˜ÜyɉÌÀ†Ê©ûo!TïÚiâSPz8çC3öF.áÛÓJ¼·tÃà ^ ¾žâƒ3xv%¶£ ªn`ñ=Õ 7ˆ"¥^>hC2)+›qLvW¯ -g–ëZÏÙ­㦨̰ÀôÅBäƒ$é£@®Š‚ñvÉ…º&ÝvP²Š2o‹’ôát›8ã~v8ÙÍžc»d_MNö.¿lßÑvSÒÖ¥Û(ëﻺtÉW:HèëµàcÚ'l‰[“)ßUžä÷4–ýÒµ‹ G[^@Á^r\Åò‹¯ÑéLý:)®zpÌjm4ÕÝnx¡÷Ñ¢TúÙñ%²Y›Y¯COè…ĤșŠ ­b‚Øܤ!Ic=ô±¿Ä!Ä€ÎÉ?3¤—ÇÍZuv£ÞîàDI6ž!u±Ü¶ ÔM±?Çb5‰£zùp$EöÏìÜE¨Ùm{ƒ<燑 ˿ÆÔ摪‰œžoš¾.'W@/•|au‰û¨t’ ¯¸˜‰)muP#4ü«Ñ¹©Òß¬¤Á2ñðP|ˆZŸ9#^†.p×é40ïîôÊAÆ5&Íj|$mGô.1ˆ`Šò8Z@$9¨Õõ²Hà!Rá÷iŒ²Áƒ6©'ÎÎïÒ‰G¼»É1“tânkõnÌaÎô$¥Nb}*Ú@[œ´Ã“xB#Sí.ÿL?ôÀ˜öü¤'Ò¤S`©×‚vªŒz¹×Ö·#dº¯Øëf0Ì‹Káǯ—ʳc%ýÙñ¸ <á€dà!šl:ÀXKW0®m¦V—)-L%€½¦kRYMX Ùœ|,˜Àyž©.™B8ó¶ꄉï™çpî׊–Æ*ܾÛæô?ÞG.Q¡{åáQ&³;õ­ÕùÌ¿ 'öç!}·ˆƒî ¬ôo¹£/—܈í‚D-¯;)ø+lÊ”ÍÚ lT${Ñ‹zO‹Å”a¡NÚx¥¦¸R‹Ÿ+€G¤^»óá$:àÅÛ¿®ãÐå²Ñ‡ûj¶»}`˦zRÃa0› È—rmÆFbP¯4'ã#í´•š'0ç¨âô ™ ˆß¡š>Î:!C穤¯ýqG PjÑ]ŽÎ6yâROFË©éX¨m¶GºUß­tK®u‹GŽþ\»«Q8Öä«©:(vüIªe41“ù=ò9¡)’è`È™ÈxÂ|`ZÕxüŽ0«ÖϾöÉH©&û¹Éqáá å¾ü*@˜çp  7© Yy¦Bï͹xÝ¿¢™¶qß°Œ`ÁHšÂ»pÈÓHÇýÉj¶ÓÄX »DÕÿ±ÚÖ×µ`1’åéØE+yÿ88#¼‚Rõ}Å– •  û~ LÈ…"ðÿ¯´*¿nD<ÁNXºBŒØr%Çÿ(ýÍO¸˜ R ±¤ýd’úókðpEÖ+Úë€ÛHDòÆgæ$²MDí=?v(Í-Œ§¡±3¦‘¡=N½•­Ë÷rrËuH³aÒÎ ©¬!¨s¤¬»ä¾™Ww`'K´¢Ubúó“6‰¬Ò^ê*a%†~õ#ÂÖÏ'®(Q³ªp…AÄg8¡àÌÌ@@[k‹ÿ,2¢£ŽS“EôµkŽ>7 Ù¥\BŠîUIÓ¼£©”H0³L‡©.G³ ñ )œEæÛ<ŽžíMÝí ,£raá0‘ -]á¯XÊÃðmÑø?¥ FꛢcR9|=ÅZÍ•'ex‹WÃ4«-¼›rÃ×Å›o2•ÃkúƒÌ¸á[,÷þøÉœ)½1ᶪ¸Ÿ ³›¨ozqw‚÷¹¶à{]ü%ö ,pëˆÍç< ‰.>eë(ļydgÄQ‚£ý2=\bÙÉ8Z .xÙç««7­%M}ÈïÕ¯jÿãWvD ˜dçG¬¬…|D[ÜÕmh—ó|ø×çxðgúúàîjŽæ£»ùÁRLO+H©oâêå%ZF&Ÿ÷'ã`}ýŽ5+…DÝ÷×bm6›iæ¹Û>^­ÿWÂú¿5ÙðtÉŒm˜b°©‚ež†“D{ùýM§ë/µ‰ec@MÈH¸{q¸8‡B<ŽÀ•ïžB•hFÜ­ÓÔ÷½\‰÷éXµ„)ƃ1â…Ùªv‡(å£@—õßlä|÷Eä/ò9L{'\ðã}̳¦­=ßòõ|pI:ÿx8l¦ºsÛÔ>B¥ÇrÔÍ5)ٱģ Y—‡q¾]óÄ$&eT31ÚEŸÚ‘§ˆhÚñÈV+/YƤ(ã¨X¢–~E>¦¬š¦<&rïy|kVqÕ6Ò—í ¼uÍœ0éPÓÁÕ}g¼½ÄX´.ˆåHÒ.¢{aýl‰Ö[óNf4å0w kihxàŽ'…³œ¼_3bßÿ'QJC”z‰a â?¢]Ð$!:€‡ Žþ<ilì›­áÙxeøÂÙµ\KØ'{Ý.†‡¦¸Ô?ˆ>yK>鯊\Ñ -4~Ç9£Ÿ¿ðf+“² cUÝ$d¹íšïMejÏ¢jÃÅS]©6!W#u:$Ñ ÛN“ÆÔ•\Z?äžëoò‚[¶§oûÔöä½Ý‚AöŠ{ÊßË=$v>–òÃ…¹ùÃN‚ð.¸È¿Ÿ˜ÿß<.­ Õ­—å\¬ -åcVOÁìðåÈðš& üçÀ@ÑuKÀ‚·\ß•fšA•[,¼fp˜–ÖŸJìÒ~J%÷e¼µyTÄËZšBÆÏn Ø ly4D¥¢"ôš»#¼aï;³=Ä\d¤Qü§PsJo§]»„’yHN‰Le(“3Fªszˆ©É, ±K²Øz£•ïnŠj–pSäë—´€(^8Æ.þø–ox6®FWÌÉ Tú^|ÈܦBÏ天Jª¡SÐõõë<¼­èË -YXux›Ï—‹,#8 -4’ø~FšJ |Y&Ñ°låç iòB€EÍ`ž#Î7yb•·B O€»O÷y¶¤e²V²Ä;'âŽ%ãN6HDð¿¾PB`‰ìpq?QqLƒ\œ•Ö-€‰ä®{Fó;:‡=3󣬦‡û³ô*w»Ö‚;°‡í®ùZRE— &*TUrüÙöM**=`D“±ÂMYâ¦õ…XÊ'N@qxäæ¥?ê”Eûá*˜Ô›‰]¬yʃ?Üçv¬ŠõÓ©ÞˆÇÖ¸B7XmÔš)U¦tÆ Wtç~ÒNbõ¨]ËL¯•¾‚Ϫdà!ËSì2 -­lìÐdüõ¹Š ýóÞÈ­I3òš:ORB>¢EVp;'vnNŽ>6ùØK‹\qàëñ_4ýÙ»N’U–þMÚ“lÆ%¡[.ªê_1ؘ—‘%Ò¬4ŽÊH±Ñjw¤yeŸvhºD¶j„c®0…]8ªÐuɯü`b¬Žû9£ÅMÇ&Õ¯Š±}Ñ :ª~¼z¬é®•Ÿ{Âî#É£yý©÷¿¨Þ,ZíQ‰I>š`ÄÕ>ëD 6.V¿S³o0†ìr:x¡kÿ£°•|4ŠÎ¢G´ÊY -]wcÞ©u]k„ Áv©ôV—î‡úW¹ÍíÎ[åìò=°Oétw*"$ü;Êw–ß{Œ©´ÿŸçpK†é€–#ó㣮55RÆÖÒ¼ º·Ú–ž’™ó[&Þç>6 ¢F¦´#˜‰_•ÕöŒê -‹æÜÔž{b=i7fÞÞ‡5Öz®“ÃÔ˜§Ó¤- óy#tbci4Ýñ0-Î^èTH¥ÃÏYm}€%x¦¶ÙͺhŒ0A±:]øÄéT¶9[‡þXe7¢Jð„çTMŠvIB¬ÎÐ:w…؉5Júàþ€@¦À7à ¹`p»¢º„upÝ&œê9adœ ÏS(…¤•™ -œb1¡%™,hh2ÚzQ+$2%l@izɚϓ­g%sAâ8¯óÆM)¸Õ= §A‚þâ8ËÜT:XJâ+·;GýÑ5t‰…oå D+ëŠwù)Šu;C`øÞ~ºL%ƒ—Ím§bG T\æ¸ÜJŒ~7‘atðê© Ÿ„@ƒÏ•œ›œÇy‡½—š™qe™~Á-n‹ÜÒ?¬®%ÞÖéütÞñ*¯ã7š®†b{¡‚e(ƒ—‰¸äzaX ,Û[²‡®m¥×Y˜!»ªd ]’7ŽÚµiÃG^‚‡àQvĽž@Zÿã:¥3ú&Á*@šñ~nò1ìzÁ• A¸±Þ2>­¬GûÔ‘bl§q⶜åÊ«ªÓ§vvI™m²joX†¤6%Ʀw£}]ô>àþ6Þ_'¯VŒÁô,Û5ߨyO‘ÓTTÄ-æÿø¬†ƒÝbírq&ò6Ç]&…òý3N&`<vØÓ¼êì’XÕ«G“Ä M}Bg"Mu|ìõQ­ô³DÆ’dÌü.ŸE’b®±=“èD$h‘&Ÿ0þÖkÙ)‘Š)Pw†¦ÑdÂ:6›ûp¢ -J.Èã>rW•úrìi8(±ˆ¸¸P›š||”ŽnnJ mTpB”G‹LfJNŸ¡Uø®ÅBé„-yɘ—JÕ™Y~_§¬Ìã²Ð£”f€ßòá s›ÄÅlE'Þ‹1àõSþC†:T·ìFÁ Ç÷‘RÞÙW :py†¹s³ÍœZ[å‹YÀ ¸@==g~6ëˆôRõa“ÉÖÓW*ªÅZ@[ðô‚nid¡³É²Ø(D£šÿ_æ†UàÃv<Åøîaÿ$]á1êf° I“à©”L ´q‰¢°ÐD Ë„FߋПś•GB½²t+( -ï•ûI-_ï‘>xb!òijHèÞ¿9M’`챓öOîóœòßôž:š%Ig8ê:!zPÀ›QK~IÎf¡¶¹ rq›5It{²éãþ¼â‡“ÄD©‰†ž¸JHSuN‹Çf.>À›ÒíS©²Òv.P6)ÈÞø*CÖOFŒs¢N¢c|€ï É‘ÅÝÅqü³‹j‹i{‰tÎqÆY…¼0dbè­YÜãÿÇü–3BšÉYÜô%P"?6 -¾û}FrĘOð-Øe流Pz˜Aþ;,ÍÛdòÆ-†$áü¥Kµwô´Ò2¨ºj -eX¡è\kE*ÿ2(P†_?f Yä÷Æõž=ü}LO¯UáQßï‹Gä] J×ÒÊñwP—5zBuÜ9C$9<Ÿ–Šü3Úsu´ð´Òª-K°æ¦–Ô¢Ií×ó¶võ#Er¡q (àYܽ6Œ^!b’4˜„Þ.UÿòÖ×1Ä}`H‡ö½‚ͨžò=œ£þ:C…ëþyI¸CÕÜôœ³ÈÝ oXÛ¹›r"CPÉ]r¢vw2òž+6èÏÉ2¯-Ú(Ö1ÅY»Ìô(_ÔíùÃ2³Qiµà:m\5ëp = î‘YU&…xZòù^£°ˆªP²æãþQ‡Þ$ÝEèTÆd®S=”PºÛ†Lþ½|æÅïWké…¬xaÝW|œe×VÇSlaòU| …4ÐÊ’äT~ìïBÚxlb4û˜Û†˜ò”·Ú%+K«ï,aY3à$rçPq×ùÅ/æU2Û&p,Ü‚òÐÆç ðP€øz›`IMô ó”” N=Æ"(¡wÿ¾qŸmÒôBHÞf¶êÜÊj ÷+h²ÈM´A`¨+zx¶m×0% hRZ³œ‘Ö¡4A”Š¢ùÖ HÙ0`BžÜb=Ð,2=pd”M‰ë.l 0/¦àmµÆ‰ÛãsºŒœ ?ólˆª©½X_5aüX²X ƒÜbi«jMõq‰¤JWïügÏäß`£K°óÔoä/˜[Ï=”“­Ì³q}bÝG`ÚMÝ^°—³o¾¬©gLxê~!ÛqWS¡ÉñÍÆ7rÂú(‡Ro= -½((›F5‘|l.2@ÈgP#€'¹¸á)ã“—Yš­NåS“žîaïK7–öòWŸß}&gÅ -9ÐÆÎiîÞ% ÅŒ›5¶°"r2æþäaKÞ ù¨GI ‚î.ÚZ󆛾ßØ!cl§¿yµ¸À’^ȹp( >¬b …´ÀÆ7î)uv–Ãñ5©‰Õj*³Ä΃n™Þó*RPvZKI@.w»h!®9>xq<½QÈ©ÞáYkh£ÚÜþ _‡ûœScßjÞî©+±LkÅ)–6„ÜYåá?nWS yTHÄ& MÈ«*²=$OÛíà˜a5ê™™h¦Æ_¯¨@ô£“Ù¿Û›åÒM6îëC)¸Ú³SÉ"C.’9J•m© ,v"³e]*Õ×*X6ÊDŽžøù?®Û˜ÛÇþ¦ü L†ò˜M£¬D =¡Rnó]Y»—I€øÐG‰5ÅwªÎ&âU½Ÿ}9ôŽåØotÏéä<Âd2õ²=ˆë6¼.išìâŽo+87Î’»d<‡Ý”Ê+±…¼Ó|x ÷ž¯ «­~9oËÀZ mÅBûS-£k9àÄ•iºý¾d,–4p~AÚW+&T{¤t&+åÎ}(ç+ž”zÕ“´‹=Ð] -„¾oìæ -ÀÜéŒyãà5EÃÙX’UxR ðÂ]é¯Éò׃ ƒ°¸Ü§gl{ßâ4Å]ÓúŽkØ·™ShÍÐN⻦1¦\Ã(“TÑCÍžÜÑr8‘Ø´½Ç˳bíeqç¾1F…¡¶Êƈä]e;ÂŽ.{ñ:Êk;µNXrlè0Ž­y¦ù“š)³œÖ»$¦?ŠÓá»ì -bñøjù²¥³â¨ç­‰0ÉwzЫËtSK‰e«‡’{µì¡š·é9GB'süKb×f²WÛ.IG÷PP‹vßD0Ÿ=›¡mQÿîðKzõó‹!šÌ—Cãè€auLªcå&˜ -o•Á\tÚÆä(s% üDÜÊu/W€mpê» 5‡u„ŽŒ±¥ï_)CÚ¦'Ü‚ÇÏVé“rzË9ÈÕÇ ×ÁªáECápÑCyN/ãk¥¿éìˆç€ú•‡ÝÖ`9üßÎø»C‚1SæÂ=11!£ÇÆçš~Ęۺ‹4“ŸeãDù_‹(¾'Ëbß"* þ³‘¡x£Z%ˆ>ߊx¨a.]?a}°˜¸‰ŸË3Ø\”W2ë¹À·ŸhYÒçŸKOµ¸Ý$A‡U³@¶VÙä™d×ÁXV?ù¼À´Â­ãتI)4^NŪÂ×f¶pÚq+”s–Î&s}6ÿ1{H‚NC¢1&˜=~ ¡aÑĬ…ÁŠZ®é·$ð?1†]wô×OzR–?î~ f€X"Ëû2¨O«¼‰Õ/¹ê¡É•·Ñ ð÷;ƒÈ„>š0¹;n`ð!§ÒZæ?g¹±À.ÉhQ³³TºiÀ'Y.!í¤O$8²…·,ÈètßÞ,~õ³ÅB(ë¤ÒßT=š_ò5½Ý_$”œë‰©9Èk*çh¿osØãÈQÜ?1aLZ³õáŸ:9ìCæ‘ ÖN«çÃÆ+S8VöWWE^ŽH¦;ˆ†¾&R‚^ˆoJø¸‹¼ÙèssËnZ¢ãx˜e—mqâ-|2Ýj%AÈNݯg“ÚÝU©$…‚QC³êhk5ð-Ê¿R²l°mg®³Ç¡Ã½ß”ÌM¶Â.ÍõºH -èËÓ~©žaÌËÌ 91/#MMSÖL_A0§’Iöt_P–?Ž+4‰§å§lĦöú½:ΊÜE83ÎÑ$OÝ<ˆ3–àÍ/¼ºÇ‡ ‰É:ukYµÐÊø¯âü÷ö×'´û?› -ågšª¬È« „Ë»)žÓQÍÌý2(|?òÀ¸#t+•Gº—²°â>šà›ßŽ«;0ÍO“0Nž µ]ÔØIt8³ªçú—CÝ 5üÛ¢¾ KtúA8ñ«|ºÕC?2à°‡¶˜ÊIâD¨§L‹9¦Ú8üøž¢¼üT»a-Û\¢–~E>¦¬š¦<&rïy|kVq×’z™Œ‹Žû©ök¾Î¡73{0rÄ‹v -¨á̆1ÜëÃ݃ԑ,oóZѨ!¶¾ËÍA*}j“¥|9â¿ -šé °/_Lz­F?òïò þÆ”..›ù£ZÐ -öO1PZ®ÉÓŒ$|!ð}ãLPþI÷Zê°8½0ëvA -ôT.rçdH¶Î*«%­¶¶²¯õ )I»Z½c„qï€C°-¥)—Ô:Úõ©A$«YÅ‚¶¶gn6gö¿a¿XO×ór)îÆRa,á¹tÊ{â@S jÊ"ZéEUåµY¿ g7ѳ钅»çlöó‚kævª9ùíKÎ5×pŸu#ä” ¥.˜>¿ÍDr”±ùnÔ¬[¯{ˆlÙõOïï›T -™¶hØÓη¿ëÞ -d}bJDZîÀ.ÿÔ~X] -ÝìO•Ã­g»A'X·Mt˜Äïå™Rh¯1ØQûJ"¨…(#‚ûTâ1z»aÙò‚g}ÐÙ£Ãx3kt¯‹™1¾ÀÄÏ‹Hu˜5ëbTþáR¸÷‰ú™ö´ñ•P£7äUÜ¿¯Ì„Ñë°«g+ÔZ„â’N䀣Š}Ë¿aíwiõÝ#aË“@ÅxíÛ^ -!ŒybT˜¯Ý¤Ròª<÷Ì("©ñ "kk5tf6H‚†*“ô6°µNáÎ2º’n4¨øÃ|£ŠAšÿ÷ßpe™+MVvEîM/Â1cJ6™†tøÍaSØ7À˜4"`Áœ~À8SÎ^¤Û¦r‰FÁ5¿§Z›d,)™ÏBN;ï­SA¨à¡›ër¼Ítê"æ@7ZœªREf}|•òÊ•™9 jÅ ÜÆÚG^$EÔg&¦ÔQ‹øQ ©òCaêLˆs1…âü[Ór ¯{.¿¸ØÐ5©êÔƉÑÅT¼s!†… >l:«–,¹áj$Í´óõpã±í„Bjø[66Ì࢓ù—J 7 ï4Kn‚:±Ô ²:ŒE[æïG¸å³¢™:µÐõ§Ü;㸅™›øÚ‡3R€·ÀÆrC²žXɸfVÅñȹŽ"PA:U4ø±Ä:‡7Ñ×0^sÒ£˜B—»QŠ‡DE2vœÞš–…obPÖ%þsÂÚ82 £q¥dÍÄàoTO Uö -ÍJ_ +¢yÆIa‹âÙ±á ì© fðŽívF±ò¹w“~p·!@i `Ù‡ÕïC' -_€£’yÅúÝb­ªE®ÖÛÎÆs¶»8ɯY” «V€¢n/`–>Œ³ñVÅ$á\~]ЄÙÃý²$Š­X=K>Ö¾.ð!‚)|Rb¬ªW‹ýƒØž`°½àd8ÎN.:ÈŸ–-"Ñôñ »Ë1‚^?ê;çQÝ8WbI¦‰I”¦ÿ@ì ïCÏäÀ\€Ãâ¹I¹=ÑJÄ -NB&õìÓÚêË&ê^ÉQÂ<ìT«îÉÐ"#H8ÐjJ"D“òò¡°Ñ?Ý÷æG®(² ½ž3^E¯4†à`v‹¥ê"‘SHÔ¸5ÿÐs(VVr¯äÒ`³ÅËÍÒâÁׂ"~‘eµ62p» tõ+”›A}»•ëÜp´3·A1µÉ5× éÞu@zéJÄ);Š}Y^ãùÇé°×‰î؇ôÇåâ`„XÈJ˼ñT*¤­sÔÝek\.ºM‚N{ƒ>ˆÐŸ"‘ú¦þŒLÍW§¨Éõ“â 7:œQÒÅû¥/ÙlVˆlzgRˆ!Œ¤‹Æˆû)œë0¨©•Ÿ7L&‘ÍTp-ò•’ë}4Á°<6¨PæÒò¾¾9#šÛG½+ †·P!n±ÓÙHå_àüFJ ->÷·÷dÂcM s x!…›±‘Õ3˜¢ma S®jZ˜›ÒëO!ËçuA£™F,– CS@#ÝÒZZÝ"À1¢&ˆ¾@ÑËüNÿßuá|¥šWº;r “Ð.>˜ª_ò2šÆAwVªØ š*2èô¯–’qÿRÙ¹žÿn*Ãh•À$”ñÑçýÐ2©9t-µ`As$àÇƨ>^£„tÆš:±Á)ñ+µK>¬œ3%ýô+븜œƸØØP þKø ˆ²Ùy/hû¹§–­ Bÿ‰¬„: @†Îø[$~j¥Œ{:eÙ E˜Þmòªß~@È“ÙBÁE Lü֥ƟïÂ[`äRp.,©QK„Ügj.Þ¶¯¯ôé'ÌцúÝ}z¿‘äyS~…BÅ™Ôæºdøý¾4„êÌ(º“5¥“da’<̓Ê’”3áòPLÜñ'E5šãâWàÕ¤ñù®ŽÆ[q‚½H­1EûjU[Ç&cœ~ý98U:ê¶Æý °â›ûâ5b5-c° æNW@$#¿ZTe¿BÉõÝE;88YÔ ›ÝæRJx7&4 Ÿ"ñn@J6—Ãhäàš![ä‰õâ%Å컿Ë}^Ü÷ßßG¹}‰ÜîG* ]…¶Ûe_dÙ#Ü°3Q–ÄõQw (Çüz3ö-?ä¦=Ið+oûÔãr³¸^Á¶µ9“&̯Núç ʪ´ÿÑ„ÿËîEÒˆ»Ž:²¨0â©t„8þòCx:1›/ÿfO¼á§°eÇÇzŠçöjꮕR¥ö)ÌÅš„ÝåÕÿ™]ëU  SÖ$}zÈ£îoþˆLúH5âÐaà†Ò{AÉQn°ZŽ¨¥½1âýJOǨû"³ÓA½´gð›úÓ^NUo¿ÁtӕйD* Ê TîJá_&§0Jš—°ä—úÜ¢ž¡1Ô‚™ ¶L dÒÑ=wsö­ñ$_àq—™¬1¨»NWrŒÊÞ n ©Íçeæ€GKŸ—“uñÚÖØ1БÀȯ¨ý\@û"„/æF¢Ÿ7|>ÐáR5³²Ä34A—tg 5&†v|§Q@3z Õs9\ËnÏy¤vÇŒŽÁDÞ_”ûºÃæßv¢jŠˆÄ`Fuês„ó9ŽI@Jüá›C]? ‡8¶ê<^A£ææêçf];ÑŒ§[LÀb*µJâ„ïAÿ.\”\=PPxesQŽ‰0û•ˆ3 xc1pŠðØ‚9#Φøzž4%÷A.’ %O -¼Iˆhke¸ÏÌ!÷yâËì¦Âçà¦ýÀÑZi¹›6Bò°T%=÷êñNÔÞ[ˆO§¯?\é¸m¹ùÁˆÿœ;§:Š…ˆz{':`Õe¤ϽgÌ|gu¡·¶¾ª|ù/Ü47\A ûŠÆɆeÍ~ø€ù’)ªÙ˜È‚¹URÅ!QƒåûQ`[ªyHÖå|×à0*?’:ìy/4Å©îJ(ƒ„ž|Ï5^O,MoU]¬šmÂcö=UÖBL^FÃР: -´ØË)Í#>Þƒ¦Ã £1„Ö”‚õuω®ô'Ènþ¦úNUûÍ]€´±%½+Œ?ov ‚E¡­ŸPŽ0BkCî÷UDëv•%ú}€´§Ø §lã û¥ ëâ¾(ýŽmåX"DH'Gs… ùðÍp'@ïÁ;mûÃÒ…¤™2ò\ ÆS7?.9R’¶^ue¬Zð&ïDsŒb»¢Æ­1 ÔKŸÓéèϼ0 -Ú€¼3…nÒ›š´1”Ÿÿ] ïÊÎgÝ‚Ñ¡Ò—Ñ—>a%ÿ€^ÓŒvõµñZÝ%óø¥3\7!o¿Ë{á%Uƒx.…b 8€£ÁŽÄP=?U£7DtñÔ¾rqüôN×çˆíÐC,—·Ï{¯˜3ÍJ™rºê£¬üæ qâùã­°pS:q‹òYº Òá“‚Ìßû%æo·d½ sýÌ{oôÜHÞ„z¤È¥béH\$è›ø |Ú÷Ù9ü}RCú¿|«ÑnBÆ -3ÀãC»D™aó 4Ñ“1wåêÚŠñv‘¯ãÊ{XoŒBjqߨÎÛãß|>²‹A’x$Ô÷Œ9ðDíjð<¤E“þoÆþéŽkųÅ’±Æm1JšJýèz²î]¯@3ð9Æ!M(‚ú•Dƒ˜ŸKójrMAHI¶=AŸKE»‡'ÌR\]•y-¦¿n «UüþŽ²ÖÏk¹5 WÙôÏÜLþøÒ°Ê.({í“ß×Í°ÀÔç¤`û!e0ª†Á 4mŸË,¢x+A…xb.j3Ëy¶tn…nÙTãªÙúA–bÙZWš¾Vfz›uÈKs²ÉõÝE;88YÔ ›ÝæRK9ü=ÛÎ@`hKðbCëI¼F‚[ƒ¡)šÀ¹i­Ò^¿wÛÃø£‹ÀbU:ÚÈuªVW ä¥X« ©0W—2èfm_hy…פœ~éÐH¾¬ -Ì¥-úøYÁ.ùëšÕ„“ZXgivÝÒ¶áý@–ýÊÅ› * §e/í±C‘ >4‘uˆ”¡lSPG‘0¶\ñ@QM}ë©›ñ“Ðb-£Ö%SËž³§GJï|wïý »‹³KQÉ´®z62j[K]²mÕ¶Êö>¶wÂY›ª&–Ýð 'Ùáª-œ‰ ñ¼ü˜ðð58ZI¥ÉÙ ö.6ô± }l1TêÉî$Ü_Ùßßñ¥¾ÎÇÐUªØÈ\a–Ü(lôÄ£º¯ÁËs IN*·wõ˜*öýT¸Ác“˜³Ò¬$À5f]ÙŽ&`l±£¨Åz‚KMP¹ë óÐJ;”i˜‚m“%צ‹ U6åVî!}îuˆNô¹ÀbΣqÄ|Р±4*±ØÍqLJMIÙt± oj^¢ð2 6¯%K:ï:»lå'›úO=»§Õ FN?)z,Â>´—St:™„ï6%M`w*íÊ€ #FšçêoÁÀ+_Ä®øÑ6IÂPGÕ£|Æ™™L§”# -UeêH‚Mž¬ ³Ž;þpn§[ÿ¤¤³QÌt¬¸²³ H(R¦‡‘ÚÿY™¨ ¢jF”@ÇZK¨nK)Kú×%ðÁ»ki'üÔÚ"•$ §ƒØ4¶îÌwÑc„~cÓɪA-T»ì-ݾ®I?íÓûîfgí¦¯$Ïî+˜óÛfD†Så6£Ø“†áCQR6¯êÔÏ6¦ä«V~Aþ¯ª_9&š¾šœÈˆi5ý÷²£±|dV¨oùÇ+Y«û©ê‹Ìdo97$!_S_é‘’†öWLŠwE¹«§Ùøû¢)¸uL“•˜•(~Éçt—3Œã ­áÅ¿íH60¿·1e)f{Û+y¦É{T¸¿è*m?è”æSa% R/Ź¹€×[6Îñò;•Œ%û‚Z\ýÙ¬ˆ<ÐzžÌg^j ¾Í¯óÝЪ«¨¶¾a ÏûÞŒÂE8Ñ"ÇS2Xh÷ßÒ“=_  »E«_vI°2sEÛÕPôÓ¨_ë àŸ@‹o°@€óÞˆÃej}•Zèž ¬”nü-¬¢sÆ®ù¥åðFtî:&jþ-é‡qÚ¦ÈhtsÀFq g”ÖêÑpŠîCñ o÷Û­8Єl%YvZ£{¡ÑÂÙûní0 -^©D0yK¯xYUŒyŒpÈx¢9*„ !^µsÇx[…ñ¶vxØãÈQÜ?1aLZ³õáŸ:9á«56{MØvrv_ÛÀ&àDª’N[ÁÜáú$9󯘛Ù˳¾ð‚eó×gñR!iæ L¿Xnf'µ–‹[ÆÀ׃¦ÈžÔºÀÅ ÝïRñ!™n$ƒéÄò#< @ö¯†¾—øÚ¨2n±¢´Q/j µæ$;(þhP3ÇáØ-Õ(ÍØÅ 3às!H­6=@üuë?”ýó§0u|˜!í5©H€܃L?%ZN:ÙžND‡œ•F§ÇºÞ+Yµº·Æ"ùt£×âžjÿ¤4·wÚqt(*µ]z–óî Ðþü‡Íä{„Øôò×ñu£è‚Áö¶à $¶Á.YÿÿqÛD²€G•£ßô<½$ðÄe{Óp*„ê7U–‚óÓ1v|ê/¸JZÌIOÉ Y!Ó·ì±öAk2WT<ËûUŽù—A‚•ëÇŠÔ@j ³ÖÁÆC* ´\4lCµó%—»ŒÒ¿cÚÚežqñÑеé$ÎoÑ}1ô‡¡øgܤ~önƒ+¶5-ÛuBlÏ<_YªµbXjr3F³ÖñßL0F*)WPg…¸ ­QeoرlHoÑI_–B`mæ]˜zñ ¹cŽ,àn›z;’Eñ;\¡Ñi>0ó$j5Íg¿„¡û©û¾$‹^æ.Hc =`h)e$¹¤—Ÿ¦ÿbE<]`QË&ôŸÎ‘SØc°WV`´ [u‰(³lå»J;Þù Ïó€åwþ´ÆŠD‚Lç,i©+G¦]1 „)ƒ „ßž Ï0‡{à g$*'|gùcjNí ¢ø7¹;Ñ%¯ìµß´±d=¤Ü4¡{cŒgÔzéæâlÁ'à'·ÖÝH3LY,k$ 1Ä~ÞÔ…§¶jOf;`§|^1j*=¥Ý•iÒ_˜›¨$¶‚³õnHͽæò%us1ÀXÚ8‚5^³¨¹ü¹©„R§6¤•>ÀmIeí¦r“îE„ú —ãÅ< ¤@¼­'[Õ}祠Ÿ˜Ô¥ØãIƒ/4>æ(«Ô„:ëo¤Ý”+L§òK  9'ìQܬµ$±bŒ0Øff4{lS²›„GõþˆZ‘od½Gû9Jᚤ¸y2—Њw³Ø=Lã£Òw|G¿¿q| -endstream -endobj -2268 0 obj -<< -/Length1 2854 -/Length2 29958 -/Length3 0 -/Length 32812 ->> -stream -%!PS-AdobeFont-1.0: LMMono10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono10-Regular known{/LMMono10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Regular)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def /isFixedPitch true def -/ItalicAngle 0 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /XKYJEW+LMMono10-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put @@ -33451,7 +33421,6 @@ dup 58 /colon put dup 44 /comma put dup 100 /d put dup 101 /e put -dup 56 /eight put dup 61 /equal put dup 102 /f put dup 52 /four put @@ -33474,7 +33443,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 39 /quotesingle put +dup 13 /quotesingle put dup 114 /r put dup 115 /s put dup 54 /six put @@ -33491,181 +33460,118 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -316 731 1016}readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ßZ4 -œ3<¥¯@žRî¥bš¨[‹ž£s¢Šilk˜Ð`LØ®_/É{ªS”µ&ÚQµR`øSZC^鶃?í\j!m,©Á€jêk3\Ð<‡Ë5](¯R¿•_4šÉÂQŸ¿†j|À«64Cÿ¤ƒŸ¯AÆt7Ò1[ CŒ-#‡Î×€°È—(¿PüÔNžƒú³GF¸©a|‚säpa¶³¨m6&bê» ß4NaŸaéמY÷ñ.Í!Õ -ª>\•¿rénóÜÙ±M0/¬ÞT*fáv×XòA္í Ý-wúÙrÒËOœ± -BÊæg(JCÅèIøÛÄeP•ð9Ûçúæz»‘ÖÿêÿgþVƒ¬"ÒÊzow$ïá¼È1¨¡Ç=ÄVèXqmû¤°­XNþ…¦kžMv!:´ÐäP3Œw¦€V?¤Zõd dCBß»ø1sŠ ¨VžÃA‹µ¥rÛXUÉ«l݈“œ>©ÐÚáç>è;¥…‡íÞFý4ǤàõΪÉÔMYŒ©]±ºôW‚ &R`92.:ªÄBàBä:ÏÇ? Ò‰ªs%D7ùΚð’Õ©vã(Oá+ÝÛÊ}šÓ8Ÿ©<Ð:ŽÖUy±ky€ -ºïeýJÍ&^VÂ-ó/gvDgPgç Õ²,ÍA·¬*-äˆ7püS˜¦+zZxU×)\<äQ˜AÆÙ6Z›*G@†„áó ç²n‰Z·' pÓEøŠT¶ Úô”pܹÍÅ9´Hò]Ycð}’vÃefP×m›£m¦˜õ¶ ¾q|?TC[OÝzÏ¡;^3¦Øщ!'ÔXÒ³S‹|cª"¢2ÑóÛÇ¢ -ó|!èf±´Lý¦8QR«Ž•j¿’Ï'òÌj([ûI’Š¡¯ŒÿMÃæ¤TY[Òèyg˜½Ÿ±gÈGq—yÞ 6¸_Pa²Ì™MAïêªZ*Aãú¾$ÎIòs-{¥ÍŠ‘ÀhI6ž—;‡tf€Mj©€A{7bfÅ…¶ó±{#ÂkByÃ{Šiˆih>¯ÈóA»DŸf}Ù…¶Ûe_dÙ#Þ=Ÿ"ƒRõþ£X¿LØv¡Lëë3ÑBòæjªŽ@ûÏÉâ=$edèKpëÔÈèwwFü b|3 e™òà\`æRït?!ËðdøkbÖ;À^m;·p¯›Zt~¿ –ÈUhçm4­]M1OÌS‰„íÇ ›n$£âzIÎŒé“ÿ5 ô 6Ȥ—šˆZ -J¢oø4ŽÆ!‰´"—†ŠÒĈkâ:¡ƒ=*RÁŸ†•©~z¸ ú˜Ù·ÐÛýéBÊp`³¶,€6ñ`CÜÆ»·¦ç®øËÇÿ›jÓ¼œ€â˜ød’³Aƒýãw¨è¿‚í¢/Ê'NŬWÀ#—¶?¢"b€º-DHÔ­K‰¶}ôÒÊVš^þ…âM”tàOÒÂe/ ž y_Šêòû4ïs z\¢ù×ÌgÏðPníƒî@ÍÝww˜yý7u ãçQ‡ÎÓÚ•6è W¦ð.ßCÅë *šIŠ;²…%E–E§Þ|±oš$AÑ¡6¬ÑÉx - ò_©iš”hA%£„ø¿fóGîm¹TaY\™8X!f=;ìbÊÓÀ'’ËD¢ %ŽÖq”«éÛ-yÜ<¼þ4šígþ¶Y>ì¼™q“¾À·•Zsr뇙ž”»Rø{MWíJ¶@®t¸Ù$䎎ê{«~ùÒ>Ä.KsM\Z §pæ5™B’_à„ã:Yg‚`ÌŒ ’ÎùÒ«qă.S+F – B¼¶³… ©,דÀcYhwRÙ>·ŒO,˜“+ŸfúûK}Ä|Р±4*1:½Ïç/´ -¯ôÔ¦sºI,ìPá>¤ ž¨+‚ðÀ¸p1#û!  º'¹ 4ÐwäîíPÁ9Ë1HGPA,;²€âÿûGºûù' Å N\T4×21Šç‘íÇGò«9£þf&ÑK/‘}ß#XF»ôù¦ðDÌÄ–«qÌD߬ïIA¸åYŽý”%A[OuDT¬¿DÜô–hÛ°dL„·æ•|*SSv\x›æé„î±tù-ÊP<ÿüåÌðA (w·`P°wJbÞ?o¯Ì·<T§®C#oèÂIäÁm¤?ÌÖ§µ"qöŒnáDUÿ¼WXÿ ‘» ¶âBÍ벑‹“é¹Z™ÇÄ÷óL°ºªù:ÙC[S"~ÐVïæˆ3*5÷Ž˜#«TŒ+îÏù äÿVVqÏ®¬Ä>c ¶×•Ð™•Ú2h©ƒ Ÿ›¨©¶Ôk‘cþµ¬KÄ@›š—Ì«¥ÇaHˆ0®Çì:핤>ðÉÃ’½ -RS”.+¸szàÌ%^ëdsOÓînË?‹YSy šê¶n÷ZÍ!_¡^)LB†[ÏT“PË£ºì¿xþÌtÚÐßïD;9\”Äwè{d\—z(f„D>¦ýlS²ÏïW¤ ¨à­¡å"©Ÿº™”+Ølä´oõÆ›«Ê|‘MD}ºæD¬Z›ö -xÍš;nâæg§žK4"ƒÇ3=Ï÷©ˆnóížáÓ´¤~¦ãfׄ§z‚6²û?«&«»¦¾ÝƒZü,XB%ZmËÜ•»2䨉 ss[¸`†:OˆSÔÎOb_WAÚ7âš•„ìv´kïÃÉ€ù¶…ªØw<™Ü@Å;°ð¦Œ|IÁ(Pd‚!·íŠ*V?hÁÂðo0¯¥Wy¦€.&-ðúÀíÜqú~G2—ž&KmàÎòÿS€€hÝÑÁJ~ܵ„ýxMœßÿ‚m£—ÇÐßmˆ­Äÿi|\Êí'] A׿ц؊¸}¾Ÿ)® Ÿ¹œ$2Ù`%ä–¬úTŸ  QÔ¾¶ Ÿµó‰h‡ðÛ ” Õá -_çNdŸP!É¥*„GžôìÎ9µfñá—4y¼Ê×+çø¨ý3Nb¦ª¨|K‹ 1z™hxºy„¼ðV©Ó‹:ï±Y,P¦ãÖ#„ùìÁg›eÁ׳¦ 'éû‹ 6³³E¯6) -—;ÚusWÕ`v'Ü“©oaÓVM Dé¸ßÚ‚ÓxL‚Ö…‡ÿá­ž³€ÅÂïæȃ†á„fÆ ê ÃÄÝs'3h«‰ jýäXòŒˆbK|ÑþÌäФò5ÙbV8ˆ¿¦·¿ùêµæè^{Ç5¾²ñ{.çz%qù;LÙëX<uZ1AHƒÂœhÃ&5ƒ\¤¨ŒÉà]{$úÜ+-2d`&º9.êð•Ï¾Ë ÿ/f=B’ »UmÕºJŽCεĽ¥ “ô“õRx‹E%¥ oMs®‚ª›HMo‹fÑPYü¢k½zŽPAÿzæ}¿Ô­}|EtððQW]=1C/]L¼1 ̶ŸPbn«ªé?UªAÙ‡ nÒŽ&Gm×úlI,ĨûS›}Û„A7«5èbÎË—aÔý5ÇaR¬2DÓ¼¡ÉÑP྄á”CXz8ÀRº ÝlT£jI§}©!'83Jýÿ• -í1æ]€H³ƒì$ -â×léĈz`DÞy÷;Àð¼¢mWÛ/ZP³ØâÏÿïf_ŽÉÅw†m’‡š¯/ðSÁ7Ÿ@?œ*É™êõѧƒ‡Ã,#‚ [öq j°—íå¾›—oÊÿL½†1@rW.•Scj‘5/o8cÄ(k/”ÜݶPÂ÷ƒYMæ9÷‡Àc†féE‹*¤`È»™²6ž’2íÏ¥* -VÙckb8x»¡¿ fª €R”ZÄ1ïÃáA' .ÃͳÈ~™-æÞKÉO£\Ái¯Öœ„¡é[;¤î.Õ@ÎÔÆ⯂«¿Yçටû¤÷âË'Užœ7.u¯äêùÍWY uñÕ?þÜKWwÎþ“ª¾kÄž°aô* ÙÕ›pÏ e`öG°~iJò Ÿž|n_GüÎœ>sÜän‚¿¬5iY¸2ÿ9c$ôÖdL.É pµs1³}yll×'c&ÝWLU -£†L­/äÀ9÷A·ÔücðeòxÛ!t’H݉Œ càÖµpeW¸1“J¾m=Ì6·b™PežPµW[.¸~þ ðƒ0†ØÕŸ`ëå€&ý§€– l ¸yÔ\åIs5Å=ö°Š(J)£r„J¹—U…/¼n›!4-æµãã„g¢©5 Òo.¸©_KŽÉØÐÙh.­3⦞ðYuLÌûíuÁ5}N£Þo¼Ðüõ;L@{ü=x0 ZåçÍLPªd–÷¹²èJÞ$—+ˆB–ª·ú2weU±`ê+Aûw3¼ÑÓë¿‚ÄOå.W¯HÖtÏ‹ž¶“ùËÇ–C€®óš³—AëvGŒ &Ã’"2ûmÕÅáó ³¾uénqÙ»¢½ÇZf˜73¶Ò±¨S[½=*9¼qôùl<­Rã üh–âô¸@Ôû—†ç‚²((Í_É™,¹ÇÎTåþа¾òµÆF1†qB°¥y”IHWÊšN´ RR¹Z_L[–ÚaÅ_m|ZßiL8ƒ»)”‚j”É -D-ï ¶œÐÜÕDd5Ï"¨¬‹Æàxijt0¯ˆ£øQ2Ú%ZN:ÙžGã•dw8† JÚöñƒ¼V“–OA‡þΪϡ‘‡ ¬®Œý6<á<¨™ ÍÝtÖ5R¦¼—‹e̶è¼ýÛ«ª KsË.N¼÷„ÅáÙÉãßm -·÷Ñú!(0:¿eG]½ò%|оn=k¶¶ÁN¾ñÒ™¡gÛrD,Ç]+eóî~Š¡ùF§{ê!Xßj@yÙ+P~Ýíí Mgv”:2HW/¨pF[pƒâè؆Ù??Ec6¼Ãø­ÑbÞ¢g}FÔx®+k­z­K³½+´ýÈç©Ôj …&¾ß&ñqÅôÈq¬×Í2|²E/fÜÁ@>©L›–Ì¢ ¶õ˜Ú×ÈöÓ¤Û÷bIëG³Ü©øÞ~(ø~69Б’/ÉдÜqÜ §€Ð3y~åt¡[š$+Õã4 N ÷í«)(C,‰œYÆß×à‰¦ÃðÁ‚>xYÖŒß Ü~†áºb¾]H/¿ËVŠC¯ìŸóZÿÈá5ð¾ÿ7n‚VýG®kòý4¡À÷æO›ï|[}@u6Ï[Ö‚¾`æŽT–”—oÞRuÜÌÎ.ŸÍ~»v¶)-Í*ïTßFa ’ö,\)»mðê˜Üg?¸v4ºû‘:‡2ÕϯpáÖCxLÊ_÷ƒó)Ä3¹]Æ’…£&Y-c}É÷ ½ÉÄ¥Œ+ì™èéf¯3ãûɨʴªv½ŒÚð¸c›ÕÒÇU*õA[6lÜú‘8çÆä±Ìf_K†7f¢A@ǯŒ=Ä”EÅþ¦÷ -@õ<@œbmnÒV›<´ý²§%ÍsÎ,fa‡ÝÎÑ:7: BµpxãotÐ0(”IZµŸE®ýÔmËŒû–àÔ8ŠÈOk&ŒŒ/Ân|/6Âû²0>_Á• í…ÑÍÁ"M³-¥Z¶my -eC,]OF¨è‘èÅ­0?ß´Xõ;Â-ŽÁÄ×ÇÂí…´föLRð² Ú»…ÒDRà†9L·{eO¨Æúá7« -êEêÀÞ•¢$$ž/‚(ìÔ4ìÍÚÓG²cfM}—Ï&ZNÖ¥¹·+·ÇÂ;{ƒÝ%.Iv_7|Q¨ÿ9*‚"DõU Ýâú”Š·ó¥=ݼ®0¶)k–LV¡»Òœ¶b˜œ®ßcàÖµpeW¸1“J¾m=Ì6·g†Ñ!C èz¦Á ƒ²š®©–ú’®ú€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆBy®+k­z­K³½+´ýÈç©×Šè,(PL¡ì ?F{3©¡ÞûsF'ÔÅ´%실Y ÓU\.K¶—û²2H{žf›ÃÜ,«—ôvÌ|ÜãÛ]ß“½l¯ª¥c¶¥›dx'¼o¼,<×Íïñ—ÒêÉÈB>û?:-,®y:‚ -%»-“ê7#¾Øܦ-vÅ;x¢‹Ä4¯L“¤”k°Mɺ¯¢2ï×ä=ê_°Nu3Ô°ëisèº[·6S… ì-í°û¦‰o ºæ‡¯îsñÓií?ŒNî¡&¡ žò.O% Ò4€€E¢44ƒ¯Uò  ©1Œ Èj<¶õH¯6ô!›Ï.¢)çb-Ò·ý&yЄqkFGìÍó£èËJ¹‰òÝÄcÝo„Ú¹cõ!1OR+ÏM—;n¥ÿDü%Ûè§ÛÑŠ‹ž‚loøA•Gß/7DPî~&ôcýfúÕaf¨øUaßHÚÄÅÛZ*¦°ЮMfä³D‘L¿ö„ßa%$øV¤ÃU8Ά͛²2V˜´8àdT¢ (‘{Ä–Öª*©Ÿ/ÙÄ•|z¼,Ëá-©Pp:ÃR˜=oˆ†‚ï;i0>#vNš]¾d ©……Ú*JùÞZPF²_XZÂÁ˲Ø{ýÿvÝ`i5À™RdXµo‹LÌj¸yf- -/Åx^ìç iòB€EÍ`ž#Î7yb•±«yuûa3X•ôb&´Úðšþ']Y`‚ê;5™ƒ®øcf8oàœSïuôù7Ë3¥q“ t§\Ø»sM- WÞÕ CU5<6 † _p8D ºE?tÐîŒ V™ëÂHºªø_‚€âÛmHÆ/È"ötø{Œd>â·ëòèð\4ZOø(?qëÆt¶¾X>14FO^mD.}‹X -` -ÖÍô#\’˜ï¨Q¹ZOÍhá9¡S Ò æu¯ /ÖQÁu§èKÿ±Ù>\¡Xí|›ùaXFî6n1ð÷MinU°‹g*Ú§,6ª9x‚ŸÝ÷‡X' wTw²:¶/KÇŸoš•½Û .µs+·t½:wðŸ¯\ ¶¤>òY‹s½S-ôÙ¯¼@‘x®b€“ƒl| ‰¡º¢Dg²í°£CpqÔ…½òùÑàviübu¥´‚íÆÛ… yÇ•°Ç£ žØn™ì½P€õ‡÷ˆÓ‹v;›6ʪÒÿ­ÞÛ#Èó#Ybã(‡ŠR˜©¬Ëß8=JУü¨4Ä.fxňCjiudZh½@'œ”ûûçV ¡ÁAù)Òž¯D ¨ µGDå¡¡\¦vï@ð±ý“kcWµdùŒ°‘·Q¥D©I¹æèËÉêªÝÎ6yd·±iªg>·‚âuí¿àξw 1Õ[¿Ú ‹ 9êðÛè׶bÌRt òø„„áIJþ!¡– §ÔÒ슎üÈOX0–ÖVÉy,áGÂéÕ½4•íR*7±MwCÙuèt¥Ð5_ ÝJ¥Y) -Ó;¥Uâ/´hœ˜ž´œ{ϼ¤( Ê{ -v6^m„á¾Þ{»,²qN7¯ËvÁã»aÛŠiALnܽuTZs.€'mÇzþý¬Ý„3†šÏ7[U¸lš -Æ_š¸tìþà™³?Ä€v–7JJH¬¢ô,›–<#ZY¼„¹¶¢Ø{…ò9𤻔ôBn]'5¦Ò„DDØ “ûH+$ôñi€U€ôëÿ‡¹*@@ùõ¦UˆÔ›¡­M@è%‚‹Û¦|©ˆ›1ª‹b?9þ–jÁ!NM£-*ÅSEø50⹶Oü]}¸_TJGV-‡“‰mFCœtÇæoÆþ(|Çoïý:XDý©¢Ù.ËÌ—pÐ&(×Êá#MM®‰ ¿$š!à‹’ éúŽãea:ÿŒ2¸"LHå½À"”Íщn>-ƒA‘+‘âÈp³:Y¶WÙ -·ŒiYñ®Tâ§GÔTU bŒ~ë]An#GŠÕl†\ô‡9—jµ¬/¡*oäEx'ëc[ûm\ŒfÃÑ„pL†4:É%‚C˜Â“zò±î¥ˆ2Ý|õÁâ‘g:ã Ú·6)¡Ü×ÀX­ M[æÊüÇÐOCAˆºBÓiz>(Q{ HRÅ3úT(’!cëìÖ¥jØ;Nŧ&6ÔitÞWp›M­5WÓä8ñ’¯Ê*ïÙ—­!ÅV7m!ûpm&%+‚Ê— ©ˆ€Â±‹²*wáÕêÁzŒ.Ó{ŸK⨚×-Ò¿‹Æ³Jܳ‡ÞpÇ(ò<Ú1akÿû³©¶*w0lT1H¯³.Ü×Hͺ¯ãァØúQ ZÞˆûòÖ¹Oäê:›Û([íƒ RPo—®åüw‡ 埭Qú°­ZÁ¦´Á–Lëƒ ¥&Mkd7w® T‚‰yH°V¨fyr’¬p#ÌÉ´uø’øh‚<Å]HYÀ‘HRŸºW£‘c1ˆ€{W›¶ ÈöœÙ㶭鷘Ö[ÄvâJO²Ž«n/„7³„â=iË1+B(%®—æ8å9Ñâ--F0Cwà–!!g­â+W(õù±æ‰Ù¬,riaŒ¹§,F=Ô')Ã|AÛsGÑkœBV˜_æÛuüï›°÷Fe¤_ ¯!4á’bUýF¬hx„£T} 8•ߧr$7H÷ —R›œD•¡öq5B˜ÍÃD“f-s6¦ÊìÛ]a—˜”Uy*dRwv>b¢x”µ¹7ú­4:aÿ7|_]pƒˆ³EÌÛéée,qª2qÕq£ñ:iª£9ã‚ë/¥å°UæbbX¢BÍq§öá4¬ácÅQ ›Yqà><ßÆÓË^Ø3â¢ì¢ÀÂ꿱VÜ…®©DA¯ƒ\…¼0dbè­YÜãÿÇü–3BšÎF•miII³µáÜ!~Š‘Ñ7ŒAº¸´umõP’»ÍÏy£‰}>ÃfÞú¤ v=Y½u(r`àúà“x\:Æᛎ«Pä]îOÍ,¸A^N8Uô™[Š%{>¹[ýJ’VLßß·>í‰7‘Z°Wí,Y›B:Å$ò1?3˜´’8pÑ6k]Ò:ñ; @}âàÆ»y‘ËneM6N5‚†åw<3dÏq^cFŒ°,=1Þ^g·ouuüµÖSÚÑJ‚0ÖÏú7ÿbGV¯øñ -,`1 ý×ØÍs²²¨ -·¹$ñ¾«Ÿ`Ú,@ï—æ“Ûñïš+4m™ÝµDµ•JØÌ„×Ò^åý¹¥_óŽåV²³ÅGo°övÕ'⾧uKôLì°9¸o´t×.ŸÞC¤¯x´!Æ~Q®jDÑ´½Wɇòb‹±ÊLXljôøÒ²Ò¸;óÏRvFûÐVÝÐÂœ’ÃɃ,ƒi‰ÈðÑU¬&Ë™­ãïð!1“éeÇÚqc°– -2Ö’d©œýºê8¸: #ÃmrëÙ” ¼êu1köHÃÔeá,ÓaÝH’\¢&¾aø†–fÅ8&®H€QãkžWk˜3nWÃy9@ñ~y{!‰«o¢ë$êAßd>Á¤"$Ë燡¯óà„<³2J¢œ+Rº(íØ»'w{H)Ìa,öwñíÇ9e†Ö¨!,`µÁ)×ÆBùœÖF8k;Ðe× ó¶tz4µ,M6@Ê:6#8£²ú­ã6‰¹QŽ;ã? ucMö%{vµá©®å›ëÃáÐÕ©2±¬ÂWBKùèõÕÛ×»2ùvâ®FŠ4ø'‚‘œÍ°îocc¾ïŠIåÀB©5È>"‡Þ¡Û( ·œ´[0Œ¹ê¾ÑMâ2œ;'µú»¬Hð6dêÎ×:ìʾ¢*0CUD‰ž›Àælu]p½^+ðÝ޲̿šæœ–¨¾§næ²VjöT©ÇÃKìôŒÙrlò¤Cà}=/æë3 +Sœ©]îuk#„rZ‡ÌÂ_¹!.ÖÖr¯•]½ic¿B{y!J¨çï8ÅýÅ>·fʈÁ‰(ûͨ,‹ñX–§±ƒFÍ~€í2²Š*f‚ŒL«~os¬ Ȭòïja`¼”zêÖÙg Ù–ªŸäÔ&Š?Ûøñ­Ó"l_}å‘j^Eq#l°^%À¶î(UÓ3Ì5‹£…s¹š«é)u-ZŠÁÍR³7GÒ…ó„‹¹ýÑ/1Àd£Ä°Fe $ ›^˜ÊZR pzŠ+.õ1¢øo«”ëÖµ%·XÀæ¡Ð”(lŒ ë KmbÚÿ”ŸWjV!Û³V"¼®§1ËD}ý`ùF¦`ÚÏrºqTgVnþ(ßç)Šßw‰C1í%¿iUá= ´ÙÊÊ„g% ñÚ—¨ƒÛî÷]š˜iÑa-X'm|óÎüà—{h»ï´¼Äss6ê×3Í'DRëàv¸ú¬õÚ0µ©s>ºÑQ$ÄÍ¿sEu#·!²¹ÀÆÈ@^Õ³1 ¦0Gè‚êørÈ}5 •ŸÖåŇØduKwM¹ÍÂÛÞ¯4dsÄñš ™¹@׳±Ñ¢îüz‰øîgü†¨jMåÅ‘˜õGÊàÀ¥qŽÆÙ‚Âl–C“’Wq”¾ÙqÇ##’$§UMwÊÓÿŠôøÍ;'|(œ†HWÁBÉÔý*.è¶=f9oŠéß ø4?àÅì].¹Z7Ôlƒ˜£t¼BŹ<Ũ0µÅÕísò÷ÑYÄ[(hwDzjáeŠUä+üJžüq“]í\WÏ‘ª/w`uMŽÎ£4î&rVr lä±ÿÊd¾L:ÉQñ"½ÕÇ$Ë€#5ø0¡ŒS¾Ó’äA™gàÕi[Ž/Së=§ò9:ÐQÖ€…­!É‚ÇÞT—°šZePÚìs_Žü@—6¦´yÓ_¥‘£Ì»é{Pü"–Fe¼&ïdù| TzÒX¬wͼ–cnª¶vç$ÈD¿¥ÿήž—fG2kcÔ7èNÜapr’åŦêüì»á6`Õ69òÕ™”.:&ÆtdæÒÎ? ~#Å,ç½V}§ñìdø…^€öÑŠ½Eÿg4pÝÁö9íx·ASt­W[*äÓáVÖy~WÆ ±æÕ¸(Œ§çú,i JF9vY…o“OSB`÷½Yj&uÁý¸äKþ î[vî>“*p- $rÉ…w­m`‰\(’`èx¬äöU6$ §ÖïYwî±…Ôâ®æ<¢WãÀ͖҆óbÅ«¾„×¥¸):RNB(2—äó–F ÜÈqE¹ÃÃÅÎ"ÔµÞ¡x†²ÏÞÍ|›æ·Ål˜­…ûv$õäŒö¤áDû3mó[Ô³"‰÷þŒf¦¨-}u`ÑÎ)a vi?¼b¥LKðbì_Jƒ®0¥Tê ÀâüèPaœÚK¬úJ•‰‘çŸS¢4óÜ.Ò«ú?aGxë¶)SµoŽýO¢ ¦&kš•,ªîýªÜâÔ/¯Nkc“4:ÝÈN…#ì^s®Îcxxx!„‹C¤Ö±ºìÃÚŽ¢Wck_A»©ÒT”žX…/Á,m┵›á5¨•úe«cd6® å§sS‚<Æ~6rjð¯Ùë«swn{&Š†^;¡Ì?ZÃyƒ_\¼£¡9ö '§âA/BÔƒx“Ò¿ ÏMm7À.©ÆàýÉ© -Iß,S—U -£2³4ƒ%Ân ôt ýuö¥:¥ ˆF¾arâ^|¸*VY/'ü'ñÔ_ô»Àáb1€~&‚ÝÒ‰ksÁdÃ-»½ Îó=Ô/‘#)âËã÷ÁDžOlŠçÖzî›éÍEì4$ -jËùÂÞf™,ôÚ³6ŠdÉ«Zv…Äfè—–rúÉjÈâFº†q½Þƒ¼bKàÿÓ‰"Í¥Lx’ùL1»õZlC‡'™F³­ªDèª}|\ýò…šty.á° à7åKn¾JrQDØ”–v”`œ“ ªö„Ž:rßк„D)½;Yv:ã9!Ú]?.D„ØŒï@Î1<‡T¸XÐZ¡³­r5…Dk×9 -°ã9'΄T2WLš[fÚ­ -” ù©ceº¦.% QáÏ&!)dÛ.ÑÏóé'…h„ÃÄÂþàP©“Ù«Âe£žä¤”¼ÞàuùJçÓ’à’wûN?ÐöÊà+¢9‹öâOmÌò×"xB1êlò‰‚¤G -qVþJ>pËd7ÁŠoæ3AЙ³‘Õ†b–¥drIˆxcb&¬4­¡Y{+#Ag¹ë=¯5ç•¢Ó!“Ü.åªìmþ,†t÷Øÿeܶ»ß—Ò»w@§Pžs“•Ð€ßŠx–ŸóÀ…bÞ@ºï3Üq÷G{†:ÇæÌÓÒrÅ€!3©Åáhè¶ HÁ "’;ÞöAˆ¿–(EßòÁÆÁIÁsÇ(-¼€rñ^˜Ë¯’{Â8"„ŽÅõÕ\¡“Õ<5I“¥U ÙÞ(B* ¼ÅÿŒb¸”àw Té•~dƒ=f¯‹]r]!õ1!€ÁØcòFÂý¾n(ùTòž°þww}¿þøb̔΀OªÈiŠçFpVÌò Ü×ZCüóftÿÚ¤âNx¡Ž(QÓ®ŒÿwÀÈÂþÿAèá¿~œ°/.F—kQNIk´ìŒpƒMÈ‘ðiÕ((UŸ¯ ©0Ô`ÀåV94¤ ‘…FV¯¦Ãê†&~žD³KõŒ‚ -ËýÇåóõÅÕvm‰ÒÚ µ»3M[2÷NpÛ1,)‹ë ñ2©©sÊR©¾…¸L¸2x/Å°²+pÎúW6a¹ªƒ®+‘ÀÆå‡æ2G˜lò™!âzŽe¹ör/™ žÑtÛÑ LV€ìJ‰z>b¢x”µEñãx[ÿâ޻㨬…4¿l´K&CïddL_ۢʪN&çBU7?J[Îþ/ çÆPt©Ÿ¡5ìÇAS:\Æâ5¶<ïL‹¢’“·êhr¥Â£«piÉÆ'Ä£ ‚3N|v‡éo—Œk+%™Ã°lyq謇È5ðžË¯Þ(z2áùj7Í̓ˆUÞíP˜¬Y0T[cªžÒo&kѲ=pci ž1Æ‚àÙ£»¯ÚY*o6a ñÀ‹õÆÈ·0$}‰4]QÅ=";s{~-z…ë‘QJ€øç"og ‰pX+“ŽØÚ1ºî¾sŸú2TP‰…nT³C3ßI 1(+úåŠëX±$r¯"ùÉ™îÔr²Â¸[`¦±>:9X»ÊQå°6m¿mY+{ ÉÌ2¢·¼ËrÖâÝxŒE±q›€04-GûÉÇ‘|qé›xºÁ†Þ.øHD³ß꙳DYç¿‚­Yý6nw_+߯‰ãpWÞ Å²y›Jkb©É»ÏÀ'<>–¡rc¹ð6›fºläA–í“Vç%ücUÕÝœÿ!ºégñ8›¬ùï§IahP²wP—>QaÝÕ¥Çhx˜ -¸HÂØ 'r°]¦=ÁZZk¯íÙÊô^%Ù£s§ú."ãy%®ÆÈv¨´ÀˆCkåx -95]!JYe«¿™[À¯B–¢7åpÖ뻺é†×“Ê@=ÓépŠL3\A| 3ëT·¢µ%'Ö?=„Ïn¹×aÖ”áGÇÑþpñËÆGD"FË'@V¯j!Ϫ;Ù?çhŠôeþ|(D¿ƒ.MTˆ ¯&JD1ˆCíh·õù¸+Ë-‚äëkÁÒc£÷žÈAëg–n›oOÝÿbè+ËãÔªÿJe;¥HLÆÂ߇ðñǘ‚Ö—…à€tô`'¸4é°9l•ÀE’z™ªAdSÞ|fÕÓGz•ÂI€>cÝœ–ø[.¯š@R±£‚ª.¢Dð Ýθe M.ö¢Z'HR¿E0à» ÆÏ[s -¦eèúåÏ–ìñH¨¡è»!/":ÙÖÙ-ÞK ¦¿C`þ¤dýéà¶öô’øÓª·â’Ž‡D=oàipŠ‚O³ N;7q v'—g®#1—ç'ÜEé(p…¢«qx;¤ß§{t«÷Z¬ ì‡ìxòº[~e¨Ë¯$ó+N1*GYGÅ~›6äÕrß²ò…;(DÃóÀÀû1XkELÏÞ0c&Áyëòd»ÕŒš¿œÜåDTøë2¦š"ÌžC9.K^ô:’Ž«´gGHø3O—%ôìÆñS3¦y+K¿•Ñß8]¹Ï€šÐ“]m,±€=†­‰-™0v}æÊVÆYn7¨} Åh•K.ý.¿•Ù¢¤HÙæV\½™EÚË0 -QÊaözÊ"±ã‡ó6óPú]ÑÎ6ÎUa-5f~­r[- Pò^Ïô3[Å. ˜Ãjy¤±XeTc˜9lÇåNëqó²ÖÇÝþýæC˜翴r晪?çé+xýk²*¼àÏáÃ1¯pß.‡"« Þ ˆU 0˜Åo³+ËÀ¿ Ž3WÀðXëÓ}®g¾âÄ+r•Ÿ{©Yò}Z;llÀü-’X”ù½™qŠœ³sþ>I ú\ÞŒÚàÏñ2ÃÏ3©¿Â…‡`XufI¤è°"c•ŒØzqðÈç„a-¼ð¼×šÉ2šÙ?HWÁ‰„Š;áú×)›.Õbª•LªmæÆS#?žÍº~îw³Ñ~íëŒeë|<±pNLO?ÁJ©éˆ«º²0Îøø¾ÌÃ_â‹~ÎnÑÐRþL¼ˆTTjÀå×Ód¾TærWÉîùyŒYØ1uô CjlfÓ_Û³•lF_E¹¯Ÿ”(ãi^rÆK<.ò;á¨axEçëCÔˆW…ÔÑð}Ý7<µzB&p¢• í˜ÉS(?£ËÖºY¡¬+¬ñWê=j›ì-™ö0…Ùh(ô!UöÈÁÈP¼COrŸy4Ë¢;Z¥¶Üõ±m% ÛžÒñ]<ë º!D¶îgÁLÜgç°³aŽìñ~ãzbg­ËFÕó Ê5Eºägë´eP2ÿ;6¥Ê÷™j. ÍÀ7XuÒ¢ (ÈÎÍ2„Ș #Æ$cèçWwÖ#1 ¸wo ±  Óo•·˜|1oòçaüº­d/5\ÀŽù²°96#lôÈ£W+÷¬|ýr…u`-ëþé>㤻8ÝÒî”g¼ÈÝnæâcÆ!ÜÓíÞPns´ã–úìcur?´ b]t(ƒnAI²×hÎRiÄD›¶L^äÎÏÒúõwA|5+: ±Ž+­Å§"(Û‰Es¤rã!Õ  -ˆ)î›ÖÖ}fÀî–²fÎ*o¤]‚y:«ÆC”LvRÀ|jÕ€Ý@õFÌ¥ù8DU›?QfÛP >EäoúßÒʤU›Œ˜x¹cDPï?æ8ÌKŽi6nC:‰˜S #ˆ®oÿPý$Ø~†½IØ»~E»gdøˆLÀ»ûû¶üå—Ãò)Õp+mÆ©Ô85¡/BDë2Ê+˜­¢¿‚Òà¨`šŠ™ýÔSWy`+Žé; ø·ÚÇ]‰ŒP~ùæ•ëyQçqËçßQÔfŽH)Hê­x•xm™åuÅ,Š],CLÝ»¡ƒUí>nOdv—IƒZëåˆhtòÖ#r8ãò»¥ò*ã.W/fBê•CÝo@4ƶR Nž_pI–¯;rÏ_²áË8áRh>gÒÏœWŸ^pºLUÀ{‹•¡ùVñLJ” ð‡mÿ^zÈCµÍ‘¶{î~\â‹åIy&Ÿsð>‘£kÚèër&Uç$ýå8Ëž•FD©9yáýº4ÅakÜ:byàéÆ "ú…é¥+Vî~'7{y‹.òÅ)j¿ÿ‹%¨Un5d¡ÍìñO\¥ºûÓúŸm4¥œ†ðVœörÝÓZ§¢ÊKUqA?üî)0%lR$íå"d°ÉÜbîc4¹‘šÖï/ÓŠ ¿NíÖߺºv#*iòär€œv’]UÆÇIDí!ôî!Â10>J\Ý•Åiœìw}9ç W¹„ìR=ä¾Âí¼}ÁÑ—ƒ}ÇɤEÜž§y°ˆú â횦)'íO²Ôxw.¦æn8nyBšI)·Ä*"¢&Œ¿Dë›ë_øTåláuÕÙ!­ìL1¥È¹ÕÈ rkÔñ }Á"„å¡=á­c"°Ž‚æ½òŸ%BÂ6ãnËÝóÆÜ’oäÀëþ“l¥Y¼,Žê¶õ-ò2ÊùÄ{d´pÆ·ZÌhdã=¿cGU´.ãŽi¡Ù(ù²Îþ ¨|tù.`!ÁמÍšLnSë£ÙŽÐä”fÞè‡ç£¨¾ì„¹’ÔZ&€ºÆ4—Å“É(±+xÒ¿h/è7—K¤¨UƨÍóQýi~”®õm7ÔŽiû>˜5—NT9“è€$‘x‰]"ºFà¤Ôm[îU#ßû`&ÅÔŽå@C3ZBþ'ñ£ÅŒDŠ¥S…•XpfÐcˆ.™‹ÜCQR®Üü˜o1£KÆ„£!VCKÌ*'óCv6i›_HYÑ=$§‚ÀÔ«„ff3Hº‰ñ«»8Ä„ÅN¶¨;Ĉõø†ãÅ}‡OåÇÄõlup¼ÜÓ_³"ëÌrƤ}Ä+T–MÅ0N{%9³A]_F|2n3$Œµ&1©Ã¹¨Ø|9fuewã“Ã}ÍÃѱ‚¬Øg} -z¤¨ð7Wü|ë}–Z°O|¨4¶?nï+QæƒT|ùÊwU9åòœ¼„‘=è×~SÚÎݬì +©„~ÌX¼ r1ˆ˜E'³¶Í¦Ž"žË†onÃ÷X±%Åu¦ÕUö ±‹XgØ~ǯÛSODGÀ5«zS†Xèú5™A¶lÐ0HÀ5÷ÀÅÇ34's+)boC¼(s -°×ÕSò"£°Ö½ÄrÓi3—O¬Ñ`×Î'¶§M^TßL¢/Ór³ØYƒÕ¯ g¡GP«„„µ, †Óåihë^²Òðüo SÐWèH߇…µí ×t°i7l~–¦‘$ñ"e—±LêïP|–“öf£ïG˜Tpi0Þ¸"ê˪ZÆx L‹/8CèŠà nZKäÜHcI Ïãì#ÿÇÁ_ÚWy;l´iÜqÃH‡QéÚ–”rCéq¬w7ôs*ƒ®´ðÓ/ÅÞ~Œ~2žR__L™•,@Ž(qØš03¡1øb*vŽ©YdblÚ},%§‹‰ˆošÜNã³O6IXØÞYæ{£¶#) ¶¡uùh¨u=:ƒTiV—>t£önq%³Õ¯DšÞYžÖ.O_(reÄbÅø@7"›÷8Ó›Œ`_¬ƒÉ%ˆ*FË{𕽙YÚµ¡¶r<àô­”Êó0iÖ( 5Ý¿íä9Üðň»PIÊ´Ñ‹ù³óà„/ßγWbz¾uc“i*c!jµj†îä†æ×ÝÐåŒø+ °Ê´&<·SÏ/í°€•k½ªŒSu«i±wH ¯D24@þ¹KùQ¹ðy"=²m¡ ¹+UR6Èy¥ò²ù/9+öúã„2ú Déµyœ$äNAÿ$ÍÓ;ÊDdÿ 6-A{ú¥ä1þƒ³µMjôm ‘a‡>šý4ÚòÚ±gØ}Ëê.‰>æž‚<~K=‰.,2z.àˆˆ1Ÿ!Nb_ ÍBH±]>¢7éÍ w°ZÁØ”½ì‡»–ÔìµL¹ç…À‡—«Eyщ> vS…Á">ö×ôÜñe(va߬ÏGŠ¶qLF*K(îã›÷b,0%u îN¹Ó±âɈÂ|xÖ­ËÅ8Ï·¨ÕlÞÏfýà½eªÓÕLRN6i96O@ßI)Ž5#©$ŠŽººï‰è,¦YYÇ3û%Ÿ'öŸz2ét„j¿¯ÒF½ÝóÃ^MìE—Y×ÓW_oüƲ”–ZŒ,:|ŽE¯€±~ .ärÎÒ’ôí bGAQ]”¢È)r”3¬ÝjYjkýCoQWï ¯7>œìªÿNMkÉH²wÒ YÐý—\ÒK©­Ù¿L¼6QN¼CX¬Û‹ó.Kð\nº£»ùÁRLO-úü6 Ïɺ*!; prц؆Û`¬^¨9>QµXíÚÜQ|e,þ$·/Òó¯ g}&w§½…ž%Ý}»\ïü|‚ɘÑ6¡;ÂWu^¤Öv®Oj0ºS¯‘åe÷ǯC{ŠÔòõ©^Í»Jõ6b!߈ó!¾Ý<á|Å%KTËé ãÐt·çTÄw¾t5²´•y¤ÑV–T®gŠ]ÜìDÌuyèɳÉtº={Å·ÙÛ " ®7ZñK7îðËM·œäsû€A¨s‰ƒ2¿¥hü˜é¤Å[¨® RŠuUaDë0¹ Žà -ÔÆM¡_èkL51ÿ%Šgµ  Js‘?³3,e‘œ…S/Goƒ®\í´e©ÕuðÖ¨GVh'e¯D$NÜyê -Êà@—mY\}±)À¨:{ÔÈ‘p3~X´Ÿ |5Ƶ´{±g6: -JMuÇ^” J&Üše†Ü¡Uzı42Ôm„ÑqNÆÿ+Aá -ÕuÝ,ë´iÔ 9§!•¹±—:}ÙSR¿2ë‡ÜsFý%ÚPŽ‘²î>€Ôà’رTøNmô=¾ø²#q&+E w lËßÁî÷¡ swGjGtYØ‹uH‹ï„áŽÁ|2ëá˧¿'–?ø#—¯ƒ(†IŸ™´Š’ó|4¥]£[÷„Ú 7Ç@ƒ›Wz!ÝÐ÷1³!TŽ)V~è•!¤ ´˜—8øuåAåõñðùÉÎH·zÑK¼(?%Ø¡ˆB+^Œo'Æ4 Í ?ìðúH¤NýÍ;t5°j½Š!uð2a†]ħۭ Ö¢gŸŠ7de×)I[œ-HÚj2¢wÁÀ~dþ¨.êP4¸á á΃y20·¶§ÕõØÕÐUƒD’¦]œdBc3ÈA{‹ÒìÅÐÛ®È_PÕÍ2aS"G¨W ‚6¬ƒ  ‰žáÑYì[xEv-þ7¾ñþò2ȤoïËõ‰¼ ôº¤ÕÙeVjôB?âM&%æFÎrX„x¿”p•Õ'ó¸Ö4qëõs–‰7)y ¸‘€ciý@#×q`’|ÿ•MêØäëÍo˜§ç>¦•Ø] 5£¯§ ÿ¸=\´y-n4¿ç„ ¯qåcVåh¬Êº~å6 ‰g»uêzÚ‘L -t.¨m¶,?.?3’z[79ê€Ýe¦?Ò 8à,qÈsŠÿDsm¸wIѶó—A=ùl²!àþ¸Ð*]VMY²?#˜®\/d„‹+á«e÷mˆœÔ{^š¿¶¬1åMظs÷eYÇaЫ1ÞØ™~*)Gg±B(2—äõ 8GÏŒ²1(aq7ݘâjsº”—DYÔ)kÃ¥„ac¯/ðSÁ7ŸD€#¬v¡óC»>aÏMÏÏØ}pj0‚|§BcnN/“± -o%¦]à¿/¶Û€ äùÇã늒îŸrê¿ÁÜ4É÷H4Ü4Î{!XéyOö‘ÏéGÎ\šQZÀ®*T©œ¥: E·31Ooá›dù¡É¾ªøÈÔVvjN=”>“çhâ!¾¥*2BC¶åÂØLůώ·yL€øÈêîŽÁy¾‡cüß RC‰›ô—KªJê2~óÚªé2¯qHm€¹ÔârÑU­TÞê‚b¶¨bÓGSŒKV<ùŠHY €‰èû;é^ø•†TUœÖÓ ³6¤è:²ífyv/Öƒ[mH¬¦. {‘k+õŠcYaq¤­°Ü-(£”w‘n$ÙœwÔH¬²Õûç~çŒõàµòjâçùÈèÄùñò®;•`Éß_æšs‡=“Ñ{_E£X§¡bgžR… -)*ÏÓeÈM‘Jq‡ÓXO×p19Ë9Á¿}—YÐ!:o6`|Ç!Ö¸¤SÐè&-\ľ!ýˆ©2|6 ؈E$‘{uau…“–S&5¹ŒP¡V„ù¼ÇšÖÛrUcY¨¶¿`Jýº¢hž™èú€™<(6ûY=§ÁÛÁ‹Ë‹¸FÁBÔ©K?Æó¥Fqª3vÌ),É# òƒ¶᪫};°ùÜ|ã­%ïcHã²Cø’Ä•š Ù¥/€Šgwšº…£Ø!ó%¨MÙÊú ®¯ -’}\}Üà=̲)ÄFxD=ïv1dbƸz6¨ÐRÒäz—%è2ùÅ/Yý½è‘Säá¼0bTË$U(Ë¿¤(»64Àe¤wxƒ•D¢âÑGØcgCRWcƒp±azuŒ¸ôž¥’ZáõqÒÔÈîID:ìÒºÍUµ1•] Ýt†9ÚÙù¿»î“¿+Îò5î9ÖÃÂì9ÜqO‰G›·‰\æó¦Ï‘2 ý û•s‚t„gC\ ì{¼ä´/7 d-¡tl)4JñüqRÌ †S^ŠjÑ,•ã^HùO—‘d'=N†Ž³†i¬¥wÝZ³¡”‚Ö”"ÒN´¤¨ýµ˜ä¶¶ -PUT?µ™àP[ÑVœÁ±ŠÓo2­2°W˜ þ"á&bWÚ¯ëÖz°ØMxÌ–DéÌŒ&:ПR~¬Oäë¶ûïƒøE; _äög! ¬·ù þwV‚5¡“õÓLõþR}5R•ÙVë›z“•IÙa9e˜dßö&Ìñ¢£b&gl\6©2‰Ûv[Qp2C|6Ð$Ì,>OrÿC†{¶"ãnNùPÒ‚%ÎFþ° ™@ù$× ¸¶Î*˜g°Û×X†§:¤][÷\JzœtÖ¢)¿æ¶¥+(àèõ*UNýÖruÃŒ¤ôaÆî‰nÈ…´;6ÌëŠËSl‚7íÂâÂI!’1ƒHrÜ{Aøh`Ý¡€ Ð~¸Ô˜Ö¶þR¥‹«hræδ!þp—±NJ[iÁouGˆ¶³ÃÂwmMÞ!ÇŒ\²ÆDÚ°&*I—‡Ð™¦`¶vbý=7|»ú3‡þ%ÏïCR’qJI*þ!Rü³‚j¬ôH›èÿ æ -ÿ„Ô_™F(Úåö߇O;èǹ -ŒDŒ;lB»Ç;q´KÖ¦µuÿ@¶ƒ™—Ïè_µ[V¬øäè­ûûÜ{K‡péb2'ŒI%s›£Ûã1Á!ù䤗{žùÁUÓ$È3¡®ôuJGU34n+Xa¯Võ‡4:¶¬åõMQ -Áqe@æZ.)G•z©¦3óŽ ×閺̱V†ÍºîöæC #T][™MýÞ\8³„YÒ ÌÁÁ‘Œ–½/þ` í4Dy¨a\/5:TîdÍ·i­`CNò‚BFÍK|u’u.¸c&;ýÏL±!Si¡ -o€§œ! ÂŸÀöí<çZ´àÁê Ön…Üešê–7V|ø/qŽ·ó¾±•êGÚQáèßYçÜ êÈuJâž®ZÈvÀÂhU•“üXÌç)lµÊÂGÝÉ6YýÎë‚ÎÖMùŒÈ@lXÿ XȆÒ€P=zyhq`.Ú1#7¾d*OèmË°i -À£”ëžòGõíóÎGï#qzÃ:”©K±¢œ¾fÕ*cqO}Ø…~öZô04yc.\µ¨V1¡ -ÐçD@Õs`Ñ1í‹”âüVMéœD|5ß×é¹lÝog•ÆOŬá‡Wë Zîr|Ë×/ݪ´`™{®Íäg +M.UÔ±8àž·Ò0Öî MüÐQTNìêC¯Ðp!l0ÀÎtº[X 6êÝ´O×Sis&õ -µNòÖ̲oà^1õâŽ[¬è „O~qð0ƒ»‰óó$Ý­e¼„HÉ7K#W]©¤3¡ŠA'Ês2åš*~2ò8’U°IR¹°Ýí1‹É©È©è×±¡Ö¿‰ÔÉ=¥…Ý/¥L ^a?t{ö£kŒ(´~¥¸ñ=È»!×¾2Ä‘x&Dˆ+l¾¿öGq -ôªuÃë]&LöF‘Ÿ>t‡™Ôœ0a*™2ñq,±¼ â á|CR;0̦Biª‘ -©ë–} 8,É’Ç”áv8v kþ²¹±fRÊ«6öZÄDΓ\º´1—5DœÂ«|Ÿe³.£:Ki‘»a*“ˆãLóšËKŒ"ëh€~°—Ä™mJê¬ëÞ=eêO6ÄÌÕç(Êx&¯$Ÿ”°»½Èù]Üÿð9Õàñzyv–eÇA~).÷™Ú‹\xb•uDèHD ~ܽýÓ{SÒE=Û‘ÝÂñg¸óƒB/“Û! i»jèœEP{á±dÁÒO³òè@‡ý/ÕG ˜#\ËBVv^ÌÌ´„½gÏ#ôôî:.¹‹ë\!PV“ý8 Bðw§_ÍÞå"³D_ ®i±‡övÍ/眊0ùÜÚ}ɤE…A5ÞÂ?6Ù©Rå.^iG‹ŒdY+Ή† -lºŠ±Ë2©îwA+žFçùË!‹á¶p묹Èwñ,û1ÚÛb­àf41`35 -¡?„tÃ"Þk¼ˆe•bÂA¢ñÏÖt-NÈ÷¿æŠ'Öå“‹˜µ/‘ô5ÍDu ,8OÜ/ôµÔ³½y6OEÝžT²±Ã¡%—RuäÓ“õó–ö{ŠÏCœ«þêÊHE?w옒¦;´­Á•3€{ÔÁÏÒŠ½£¤¹Œ%´ž®)£®Ûcð -ï¡|å5`}³*y—=ê±Ïð_à¾Ôy^@ÞïíûGÒ6ñßHŽ© Iš‡À­žML·³êx¾ÊMÚ9¤Ens4|Ã6ð"ˆSKd:d>Šƒ€)è2ð§ú'Êæd „ñêS™Šþ¬DGWDM'½Þˆ:Á(þlé<Î-þe‹ -rϱT7v%µ’OSpéÁ? -fˆÉOöñ©u;ìíûgCš÷Ó·°$ß]ì«£SòXCÁk&•D[•¦§Ht…¢uÕ«kýöj=Ê< *i’¿¬  ¦k†:…¥õ”×áýˆ³™<«¼™%Í㜠¦T×"Xðoµ+…ŠœŸ¾ ‰aÕ¼¼lŸ²³˜:Û“ŸÃݪÆ>–¬Ú¯,ùJmþÛ›Œ½ÀÑFÂÌtOW7|n•¬;t†5–ú4% 8Epdðt*-•ã@ 2› ø‘ÓÓÛUöM ;¶5ÓÆK ƒ_̤ÎÙH4G’yîÎ8ÓÛé“# -âJÈì°?ª©‹ý‰j:¦wÜ_Î6ÚXb²š2±„÷2u™Å (†9¹‡Ž¾4mÏxy7„H–â…:™"'Çæî?d[2ÀÆÅš†²bŽ»ŸˆÎ>Ú%Œ½C¨# -yzÎ87m°2}+3ÃzéâÏý°úÓaÄ• †Ê5g3ðIguTûãœÃÔ˜§Ó¤- óy#tbci4Ýñ2§½ŠÙ™N–2iÃÝñ¦qpËEò¬Ì]–ŒÞ#ƸòÒ< +ž üŸ‡£'?¸WZ`}çõÍ0(7ºIåŽ ù>Î÷9,ÍL=¼>âÖ¡…îjR£˜'W½…£{=cìüœˆ]cƒU×n Õážìz;¦ã¸¼z`„¤NýÍ;t5³ò3Þô à‚µD´¯q'êm[õ sVØt´åm?öPá¶ÆN%6;dl¸>yÕoå«® g©Wu—uÃòKµ=d<ŸrÑïVOJ{U„E¾5nË)»5Ѐ}Æ¡u¡Ìb§;4GƒÐe ¼³K:âwè?$S/’(À½àŽR‰ççjíù„ -‹td\7îiFŠÖHßuc ^)‘,×æ6.R‹ò!þJr¬‚+5²ç™ž\ÔÎZ_¯–"æ»ÔÁ1n^v&¡·¶ú¬t¥ØôwtÞ:Êá“jaê1¬¦O¤m¿Ì«uJvù^ÉvW/ä@×íÆëÍ*ðÕm\³Ù -è™S¯çΡXéž7äw;V\ÒîLÂÀVÅÿì0Ç~pôÒõÆ×ôFdÀ n×3 m õW'ÝTôWéÂÒÚ-Ò…³‚òÀ -àEk £6 -Ù™B m°ý‡(ÏG¡ƒÖ€˜à…v¾]{øhàe‹*¦pÔ‘•GÖb}šNíY86Ü”OFÒl>c|ÈX˜–ÖïëÉ™sÕWQןÁ;/§æv”^V’3P»¬ ÷Îñ{9û*—¬mˆ+ÚŒ&iø°qœ!­Õ.¶Åí‹Dð÷În0=*›æõs»¨’²§D–nA´%õñ®\Ô¢ýÐÝ𤞻Ÿ -سÔmᜣÎ,'õ‹Žl»iJzRW6—MÌ…çʹ=ëà›²;h…ö“˜oÅû9Aib&%òI:Ù^+ÿлé\Ó!OwãQu7 q“CºKAÉ¿nu_õ¥oï˜ÎWlÌ)§`UÆvLcÃç4Y ƒ&ú¡~«sOÓ0Ô¤KYñ¶ô~œŽ\))½ÇîöØhFD“ßF®ë-È"ötø{Œ~G¶4$CK† -ã® ïŸ 3ÄYë¨} -BO÷15=ËÛâH‘AøÅÏ’Xúé÷º2YÀrg2JWùb+é8Ñ“y—L¾ ïý–Ã¥¹b~Âÿï'ƒÄÌ5g€U?ŽÔnZˆ]ÏÊPBg+¡y¡%öTß[ù”µ®mh¶÷̉ê¯X[—î -…Ê—¶´ -ÀÕ-Š#«Z Ö¦XVÇ™IƒgÈìmk`j¼óßÜ£5§Z⤜Ðí㉠Œ̵ÿÙŽ¸Ôc-“yó16¿‘÷IÇkoŠyÄÙîop†…ƒ)ªÓDZÛÝ­áŒÌïf†®H/X€Š¨:Š3„Þ÷§÷<]KAåíú>QøÐbY¦{w§ OUØ„1˜žÅ#ŒUAk ß@Ø΢wÛzº{ -ÉùIb©Y)I£ÓÀcg³óÒCK$JŒ¥ù÷vð»"2º%ŸÉ .gmÀ„öÞ^½:Ò¿âÔ8Á¨p¯¾ŠI©Ñ¾ËŒY©ôv?%f§¥¦ÁTÚ-‰›vòUlíÆsò úBs@{\”=»Fôsõž•H#´ûk -§ˆŠ?Ie¦g¸*ÇÑüWY9>![õ¿@áªæ™¯7„«[EÙI"¥³Õáx¶#X¿^%öQÓõdK¶úl{]´Yvf Ì™ùTªÖñ„:Å©Y‹q½äoÀ´à±qn+ORN'¾Ç°Q¼WòBéðwÔ&ú@s¦…'ŒYˆÛ9iô.”ÏD×ÒKgŸ?8Jz-Aˆ+Ò0¿ -Sàp¨Õy½.+¼ÓŒo[+ /SºÇ¢¬T…½ÿ úÜ WµñO«"¥zfiVD#ñø£«ZìZTž¥psSõ ö„Ìþð¿±HázÂotŽÌ½Hwì–ïrÇIÍ(!M„ª zŽmY·²ª={²·Lߊ7œ"1r1††ížDŽ[Ê&Æ…âÇ%‚>åÒ``p×Ý`^R h½WÝ\Á[ŽP)1s¥‡19ûùdzÆn¿—Là‰`GVÚÔ*}îËuÂõtnü¥°.s óÊ¿yýTôÖ$ÉILz[$ }ãýWHy¥Öá·. áÿâ 0Âsê[ƒíjú\9BxC’¯ÁD°]ørëŠ+K¾t0ýf3È©—y=¬ŽÌmH[(úø¥”äß²3/7šåÀ{éçL#E»#;AIÃ`k±ü9Ë_ßçCÔÏ‘Œ_Xß6N)aQ`XøLÊxJõü>³òÙôû‡Ø‹1ê*¦ÄwQ˜†ý¬óˆƒKoã¼’'…IãÕã0nxQ¾¦b ÐÁÂÆïÒ)7’Èc²1’d kG20,?‡ô’71˜³`éÕÑî³ûßÞË< -…<–kü5€Ä]53µR_ƬۮôVxO¥9òJåw{ám™8že‰ 3ñÀõŽ;´Ò °²­©èy{‹‰@[T¯=·}Çw„–½(aÛ•-‘Õ?^ß›xyƒ–¤rfI áJ°J¹¦˜ŸòB¿¨›Ãý¿¬WÒ®á£M¥õ\SâÌ¡‰Ê™R$¶ÇDÎ[±§öê$X-mךl¾u¬iƒ`0íZèåaW_ÿb»óÔSÑR–Å-J&ö%ÞyŸ_!í>‹´ùJöÌÃüȃEÁ®ôßa„êñ X%”‹~Fz¯¨× -îQë -½î¬”¿6¦ÃV -)|½“Áøzèâïì`I¾­&½´^ÎSåÆ“wë¼Lº­¯Ià˜aG†$¡NÁ')ØÌ·‡NÁn>p±%=EÁMþâK+§„ñ3$ÛU‰£J}‚Ç[œdEjˆøuL?¥|XÞ¿´\z<>ÍÝ4pÄ•B åJ2Q—àÂ/ Æ%KÇanéÃD¡>coEZ%h«°ÀUä§ß.cÃTþíÏÕ|vÆHŸv;£=Ï€…éŸ/™)RŒèX‹‚RáÇNAûÏ¡‡úg¿ÓðôNŠgEžFävéÙ¶Bà“3b«\µƒ5³pÉBÍÁ._ã'ér‹|÷õèÖN|ûOš3.bž«ÉºEQûš ±H> -´½ðktôäšyN"S¥HOh}/9ôϘÞò•s æÅITîPÇ"~ï6Š-º¦-ÎLßÒÀeã)3j5Z›ØåÒÉW?“©éFî™ -w­‡tW&ÉTÇç›Ø'ðáí’TQ= ®ê8±c’”iTÊ8ÈjG=N¦íip@J-x„…îê³<54ŸÛÀèkGd%PY&½Îüb×(eÈ°&4ãàn³jO’Ô0Ó®Â2µ@ïj¥…ˆ ü`5ÙeþB|No¹Ít_šŒññjöØéDJpRsÖ’áÞ.š…ê´‘QI‚!Ö‰Ö²:e}eï½RÌ#sPŽ/õ5]ç"]í˜õÎÞ8é ^p ‚)äifVä6Fü”5¹eÎÀ¬àܘ#¼íëÁÙׯàæµÕƒÒÉÄ6{·L¢E\{†|6ŒîÐ){…Ö#$ÎYWÜl‘H™wé…H6Ûá8có¯ÄmTpZÈÇ¥Òøдï±uÿ¿’‘µšRWw.Q-ïæ §K,§ÌëI[¸Óäžø -Ôc\—2†¿dÞK*6ËÅ¢2_½=ý» 9x@÷¸ ‘%)ÁM¥ÝÇOL-²Æ›h&øùí÷jÍÕ5£2*aæ¼Z¢ÎA’ASe£{°lTLCøößb*â¡Óºn¡œ¥Š"vRŠXDÍó‘RÔÉãÙ^mIt0;™D KØQ¶ –!±h‘_„Ë×á€Îo«Ipör¡²Ýà¨jc°Õª“$‰EŽ~ ýÙ>YI!âcŸ6ñ¿0t’zb«þù(Xºh+¹YëWQ—™_Z»xL•\Àššò‹× °{mUÌ. ©sƒùÓÓé+ÛP ðÔÓMe¼û¢ âԢ͟6_Ñ^ è“f6 V\½ôqû[= W¤à=zèv¼ÙèssÀr‹kŸ,B:õW¼c¿Ã²t0§ªbÜLqáíüˆ&6#Έú^ ÁÑ&ÞrTMK_,óû¤:D §µ¨;»Ð˜÷¼À×ì°­[GЄœëBaFÛ¯8eì ι…ÜätV2‚e'+‚¾€ÁJ$¤„Ô“ÀÕµ…þ´•ëœ>LyPÏp:„9"q˜"nÚ«Ð|†*ÙêX?èýS‚²ÄÂjúN÷Él®M’€Õ)³ˆ`ñòcL7¹Ó«®ò.ͯ?àJläá -õ.a›31*.¾CoÖqW.{˜“©ÆÏäbÓàÞ•rM£” ¬ï ¢×cøIŒâq›µ—(ã%š`.AËDcyÙ‚BI½ƒˆg?ꃑÞd"·9,d£V³*xýþ£ëU…w{LÓ$tǦJcÝ ] -Ðç!VÝä ™j\yºút©¦4ÅØ-2W-™Ÿ%Tføòe³¾!†3VèqÏ!?H6`ŸÏŸ \V³Ö'ƒ–|µQËö¼­òZ4?ª¶‚ÓO3ͺ)ÅyóAýbj¯8&tÿôý”ÞL\y[Ãz¡–-ºÍ \©äÁr ö¨[>û^úE´?X„,^ÖÂܼt,K‡ÜÐ󔨾?¢¦ä´äixýç•`ÃË™ÅÉkÆ #ú–Uƒ"Ø$àcøèüƒõp˜@q® åñ’öBÚ Nq0úê­W?ÆRqŒspŸéð'~çØZhmëÌÂýç"ôÙ‹_º 5¹@M¬–?ù ê.æ*‹ ÊewµzºÉß™åž çP÷éüí¼XÏw‹ªq²»êþD$»úŒ>F*‰è§ÊÔ[eSù« ÀCŒ_š°ÎOþàaÍ¿Þ”Ú£Wn$ØžáôP¿SǺmíSý¸™sµ×´×~ØSÔHiCfÍ*rMä0Å,5bÕk0pÛurÂV'WfTn(Y¢Oì´ð˜,Ûb½ö±XŸ'dÇ—;@Ð!Â,ƒ-&%êÀYé°÷éž™K,Õ‹C^è+–ûˆõ ûBJo‡š˜e )ê>vÃ'”ðÊU²Û‡õ«ñ×%U¹A¯ãG˜hÂÛÝX?o½¥»Ðv¬%LìëÇÏàÙ[-x›Zfñ3,j«t\¤ æ‘SOcák!`¢¼„!º²c›#ä{|êÈÝÔ\éxT—ç dA¢’70þ•t3òb¨þbY¿Ç¬þ‰è!ýÔ¦”}š´Ãª×®US@vÌòc>Ü®¹¨IÖ'Ãò$8ÒÝÍ)(5›b1Æžm;º(±:ÑEPź/§Ü3‘Üù—ö(<¹ (_¬r‡5Yî1Ú¸ &–‹†3n¬âRkf¼8°Ì–ÇúÄìÄ€EÁ·Qgìâ(öf@Þ½¬Ä]GÖ.oëö‹ -ø›wäŽ]ïn8 'atò©KI}âÁ&øCüpß«•ôP ®™T'“2ôvÿ@e±ž¶ -s½³hû'@‡ÚÜRU3X˫ΑÐshwóþš³³ÚF‹™Ã”´°:ÚµáF2Ÿ[~„¼Zu%[ÌRL(fû€UÉì~ñíþfCü×õ^r”ûî r—¹-+:}:©½×÷]W.fm·¾÷QÒ -úZÒàü˜WÖÁT}©¨nSv+¹V†D0ˆk±Gã,ŒÊ‚kíw¹y`ç -ó»ßhÌ@4Áü p1fÁ%BÆGÌô˜«ýÙYBõî{ÿÊêGO&`“ -°¿?µ·ƒüâaXîˆg”HrdWGlM‚©Ìó2AËF<Ä*Îèb´ýP‹@•¡Àóᩈý§8áއĤÁ…¸x37ßN¼ ”ÐX¿ÙuÉ"?E¼zZá¬|qbuAX²€‡•ª‚’„÷BŽT2üAË$ˆCí{ÑhŠ¹*à,–bM^¨šøŠŒÿÞáa äh)©‰2ÍØ*M=·«Ñ -Ç¿YÝ4^à”`Ƚ 6¼ˆN­¹§lÞQ¬²Òy”É i®9'ÐÖªÆA~–£Hˆ$!’&û¶":] . ‰'13CÓ)“Ó·îX$¸$Ï~®Ö#g©³À$‘+/õTù€Ìê†e1¨!0BðJ¬TËò\”Á4æ†É+qù©Ýú B&åÔÅ% -È«ÆÄz¬­¤¬¿„„[a1ŠkDNž¤OƘc—®|#|{óa€ç}¸‡NŽ>F­6!—Ž ¡ºk,|Á­ñæh;/L+©ySŸáø¢ƒ,vjbß¹B "bîö3Iûä\½ÃsÉÕ/ßÞçì@ „ídiÀ|­wöëæü…ÈЩt'±ÓAÌ·x,[KëÖ–3LÛqp¤#øH‡ìàÕRV{õ„—ìé£%LŠŒQM[LJ§•YÊ‹5ÐfÉ;Å7º -£"ÙodIH -&Åd_$T–ó&œXòæŸA(Rœ?ƒ‰//¡€¦ïY @§Î‡5ñ#ÜC'­ÚrWVÈ hïi³Øö¸þ~7èÊ—icÒt>¹¿Cæ!µàÁóú0MBä1‚eÎþp[Ìj–>šQÚIFPBh,y;tEKër¡6#ÏõÿèuKÔR PšÓˆÔ#_ë¬È5#áýÐ0.:E™bá6ŒùÇêÀ ôIÝÞñ9Ôéaœ Ÿ»´\$&€tÐþÂ.KpàìθKа­j{ÂÊ â Å€<î¯ þRQ—.¿O/“àÿÕœdzó‘Ý“hN#«Å‹æ™æMÏ$îÝÁ}öy4šî@ËÿuµÚMÕT"¿1»wGjSôôœ¢ÃÖ~CstIZó ³š#uA͇8êr{gíÖš`¾LH7§˜’WŒ‚ÑOQÆNqýZÔ­ÌøP·ø= ¼ú¬š Ì~‹š%×RLõ@ц·óóÕ;ttûIPHjL± ô#O·º™o•Sw~3Cô ’«GÆctô«Ña ¿’tÌQÓîÇR"ò¥0mMvdq‰3ïì"ª)c'¢{´óF© ‹\hº(v³Oèc^FäµáÃI&”ÝøPôÞ§›“X{j›ÿä»ãdCfÚª¤uꉴ ÚÍVB;¿€Žjâd×r#?%rŠ»,Ø2T)¹‡©¿¸bïÚS±¨9Nþ¼@ ÌŶ]z„œºópžÃàm¨{UÊÈ‘“AãÙ¯¨ 8ey[µ-e)¯"zð°D«Òm~…òÞÃØÖ‡#ª÷?l¯vOý¥ µ7VÜTО¸hæ=|lM¥¯sDBçkîÂÔjt³!¼Ù9v—õÍVˀ̈¼½ÔKù¡W•]õk}!-cÑ¡õÃ?ž¦-wô·žöí¬Æt6¦ýï*iÐSß¡|Ɉ§¡ƒâkËåóí-SÎÖ[£¹Z­o@_ÞÓº˜,OÃ|ÉLœií¥þm>:Vf…$gú¿tžï¡ª«â£,¥{`— Ú”1 ³-unÈï¬ÕÏY³±^7RYMYáÄŠûÞo§3¹³ÀЭå¸.àƒ¸ÏXï£Øx­ºÅ¥}}òqä­·äØ‘e)²°KÏ»H_U÷#F£ÔyJŽXðÖÝZ†sà'‰îšÓcÅ< ç0ƒ‹Å¦/Èà ÿýÃïy»Ga`ê£?Ï¢, -JZRêÏ+–/¯¬º–2…Ëü.©j†ôìŠR -[—dXsFŸ‹¢:æ<àVÛ+b7וQ[úGèM¼–‹=Qìj°ÙÊÏë±g¼"œöÉÑõ† §×®Ý‰[n6?,Á¼_xôšçÅê“R'Ü»sÐÃà -?=MÃÏÐæFš½‰Ž@Â:Ì«2ËkKÖêQÁÄÉ ¡Ur C‰òNt*¾8)¶Ž… ,d¤F*¶‘'pQ>L„:Ÿ÷lÝL,j|'Õ7ˆ˜Ó9˵Ì3¢žliRVòÙ0":„=jGK¢Rá9ö²£òÚÁÅ'Nª×$;ø¹y˜dЃ©ñŒ#£ -æ r´`³m\J²ò´³3ò€%b´dëÞQ™¬0qrù“žÁB$Z¤ù$‚Zïò™ykÁGq0m¦ý tÒà¨Q³WuðéG -endstream -endobj -2270 0 obj -<< -/Length1 1776 -/Length2 19027 +ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» +ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ +}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¦Œß=מ0).ßÌÅ|Ë¿!í:[LI0lrÙ9GÌ$}»³/Xà œåS`p*²pë×+fwwFG¢O¸¦Ä^æȇ ÷ˆr+dMvNy{æáÙõYëõKëí²Ï[zÊ[fâ +âÜ·BÝDý‡q}Môæ8À|¤j›©$±{ÃjÏìpÓxæxS½Æ«Eîu +¤•™¤š¶7%É‘õ±4\ ¯9»b \Á)[ÉÚFUÛ.qñæþ4í¡ÌZ˜8Kûzwwµyl”ϦI5b·jc‘íZ¬™Š,“7Ÿ¤ÖɪK±:ø#@JÛd®@Ñ»FìÍM‡ç÷Á_ª¡ûd#g+²úë=·è>ëŠÔZ‡a¸·—WŠNõŠH5Y/ÚãìÜ .rå¬pf{0DÀ|6@«çŸé;]ê/¯¾h|ÏÐ.ø§RAÞÉ°KÔmœlö^Ü&WÜ€‹ÝÇ{·¢ðýmFÄÝï«´—¿ÚÕ™É3FK~I†¥7@T7AÜMûOPŠ.;ŽÝŒHÊ+i†X±ž;}²’øžæjÅYXõE×u«¼£5Ç»pÛBI¼¦á¡ŠS ü© 7pQ½40cH™ÔÕ4ðu[ì wY½Ã–šžå2¼[tÐÒÉÊ–Ú£Œ´œ?hô™Š¸bœáþ*Ù$€ +dÆ¥`Š$ P… …›‰:"‚ ñ©)Ž©|UÑïÆ©ëŒfù«Dµ¤tøÔd—§ =¬›œ5Íó¼+¶¤îj7Á%ëi@ÿ—âÈ)шËT/ÐqˆUÜÐFé±÷¹1”tEÏ‚Ò·Ý¢@ Ñ¢€1ã²F^R?–-•ò¦q„^œ!ûŒ*1gw÷ç2À¡4/¦ Ÿ¸3¿@«â\°7zÛazêÑ1é)‰·.à™ðó‹Ex‚Y'ºÈª÷ê5ˆFc=nj¾2â½ÕÖcèw1 üøÌè3€bŸI]‡œŠÁy¸²:ŽÌä fÖ¡©Üê‹“åêñ¦û¨fgì%¿p¡ûÑ^`´(•­Ó'm™ú K'KâÓ '>ŸœEàPN,:Mè{ŠS3G2R@6\Ÿà?-ðÕ^X'€ÛèõF.qh˜Ã÷YŸòûl‚aª¨wÌÙN®Upͧ`­­ôâšM9±ä_JgÒbw!◠̼sÄÊTÒ”­DÀb‚É:Wq!]iÆ¡w»“`ÿ褩Œ'åÂ`àh^ TTI«nH‰el䶢½Í’òŽ÷à`ÝöÖ㘀ö×Ý '¨pˆß(=«Y1¹æö«‰ U¿Ñ¬¨/ìOúT +%`&ì{„(KÅ:.CìiÍK9¢¿xHÅ-vâEüÔ4x_5ˆå ÙºüŠšÄ,ôž§dâl5'bËbÝq,–Hö. O“°è8Åá NNn÷ZÄGòquͷDZÖM”¾ôÁgûéÔd/.oí~*Ľ–ẾÊ¿epø˵ +1î²}o€Kì(–ï{AÐsMã`?  žµË}|òœ¨^ÒÚ§(ûÚ1¿vŸMXüØAj!Vóƒk5=êÆ&›Y¡ìiÙwó†Ë|¨†vC¯‹PezãF±Þé`FƒâJO!À«þzÆ¡ÇãE.)8£Aœt`+—ÎoêÙê”®­ €ƒz`æ!|þ­a*®ÍdçU ).tIhq‘×þˆ*0 q±€¯>ç„NÇU Å3ÆÈà7Ä€9Ot¶[3|ð5r0ó¹pÆØþûØ8ß•W˜qDLŽ¼Ž{Üí`²“Èdw”|ׄ GJÿz/·œèH'¾Z$„‰Ù™ØMΤ8¤àŽÆZ̈Ž¤<7ß{¯LpÞÃ÷V)%áèkÊÜ3ƒ„ì™To¤üCn}4>·ZÿrÈ°{»rÁUZÿ9EªŸÖÔG®áu‘49Ú>à`oq¾Í/‚¤á~éxâ–S…|œf9׬?ÀXñ.uÈBxfGbEü.wW;û…™o,À ¥BLkkKµ{9fggü,lé|«&¼€ÒMÈa*£Ô$ö‰¿v#ܶ>ì7UìcéÍö«'·‡n¸NЙÎ1Œšç¦WÞÆ«þ¨ÙÿVÜ ©˜Nu+9ÿÚ47‹yG(ÑÂþßß ¨ ÂÀŠ"­zÊâoOÂ_”|¬cZþzB¤æƒ@·Z€Aݾùà@a£ex–åb?ç>"ΕÿÉYÀ…ïîœÖ‰éT¦gB´lÙ9UýFêJ¯?"[p] ÚÊpÎhŒØÁ ÎÀ’¨ñ†U8€ÏÕ“z¡çÞ¾L†?³€ú“ü:K‹;®õú¡Wÿ%ÌX”„õ$؇:bÉ9pã´F^dšBÎÖJR(6[-T*í4!œÑyY`'Mµý( ­¯íÊM«PA#Æf‘€T"fŒ"?e÷—þX§&’R¾ÄEÇë ]¨2L€ê†Ä6 ñ?h)8&Ì/Bafƒö–“!º0ˆµðt·M<Å‹X0z½1ß$6$·}ûW<ß1jåiâ76çý$¾4±e°´³ ç©Lå,vΡTuQèo¹:Ýò=ñ}µE´Ë¨(ãSÊËÍ0.“¿¯Ž1Þ) dû‹ƒ#óÊIÍ;»€P]½Éµñ¹R¿þ•ü蕺I,”"È?›“öãbBŸÏÎÈü×8|ÜÛGÏžÞÝï\;ºH +nÆác2ˆß¯xXΠ1!?:àá¹–åt#Ãà?%¹Ñ÷•g„ŠS¿e[zšŸeÍ…} Êßh)—úDì j-ú…„ÄìO„6võzu¤@bƒ ‹Å ix´cÆÝ`rÛ&rÀç IìêÚ¹_> 1SêSdôåY$î…`)¤Â­õÑÄ×:Šî¿•] øR]ÐFI®Tkxð›jgbžH“d.(: +Áâï«œ.ŒÐ—%¤pq¿ªô>¬>^ézx,Ú{^’Íc]r›â6o®·†µ¹õ¡ÈÞ¬tH“TÜCýÏ× •O;Ðqâ]8ù$y¸·BˆoLr €{=fÀ¶¬$' FøÅ}*õƒ%ù*‹úªútds¢›CNzc¶»š§û‚5G~Íظže ê2‹Ôd«Šã]bsz'¿È:åÏaWA´ª™>4+ +ý¦5uß=JTòú­“Hˆ8¨Yá·n¸ÐÏ{ü±-¼øúžtÿÒ}Püì”tÄ¢§Jx³•8×ÈÓRÛá.\{Ê`uÝÿ[ˆµ§ô%é¹3Áˆü…7Â\Õrn‚†NJµêþ‹Ïò™ý F­k¬² ³ò¾Oj¿—½®ßÚæ+´WeÕÐs©MÕV—‹)ªø˜–óÁàªJñYVñË›8´ìÀ1Áýd#JL1?M´È?"Å›b§ÌQÁï¾¹fc·ÐÓŸr´½¯ ar¼4דÕ@ùd¾ª—Á”çv¯5³꺜5eÄDfR+·c=Piÿs«ÛX‘8þšÔÐmm‹€šÛ;E­¯LêÄ]œH|­S“°±‡· #õÈ¿¿§ðøË´§åç°À»Æªlçõ²ù™ã È÷¨ò„S6ùŠæðe¤îÁ¿!3€BYTg˜Ú±}T¡Ta˜Îˆ‚ˆŸ«Ïf›ÔgŸ¦»ÔþðX¦_+t”1¡2)AÖ{ߨøïãcƒ×° ‘«¨zP*QË©—S×Råd*çlNíØbjɇ©w½u_ŧ0ß3¥_¿mÃ=/èßQñô³ufô⢠+ñ'I N¢»â?Éqjªñ™) +ÊŽëšÓ²+ž¶¡AÇÑÐr¢â»©6&HДC9Ömr|Ã7r²óGù%:‡òJrþ¶<Þ(«gG^ÂÄ´³~¯xPé^€KâÞÔÁàYúY…DË“"ø¸”$?f·7—Úšß}¹’XËäoèˆç3üœ'â+T…e|7õ~Ÿxø9F¾’ÖÊ“ •u +Ìiãh +9Nt’…9‚»uicæsÍäJ€w +cZ|¶Á$CÈ[ÑiŠ×eðƒ Ò"÷û²à¾Æ;3|A‘zFáY4öWØSHʘJ᧞é)~ÿ%œ§b[¿O?ÃñÅ;ŸRw‡ß¹ÇE­5£?"žWå|€;Õ®I6î”X'\dŠèKùôs}2Œ{QA)wJêtXàŽi3uŒR3T›q5‘b|~ëú’<é2ûÀ7bA}…Ÿ™¥LXÔO6çû/'`:ÏÔñ½´¿´‘¨ºñ8gŒI$õG,•ÿÌM`y}GꦜÊ?)c’ÜÞó–šÿ7áK !8BʽŽlÉ.Ü oõϵÕuˆv +K·„S?Í0Z<ª¼òM^žoEáÖï” §´"1é¦í\­eάI¶ SsÉBIT·ŒÕÔvòÙe赡 R»kvl$|­i÷ì0qpð½ +QxÑroãHúQˆ³™vzñç›ÅƒðeˆÙñ4`¨ÇÌe©b÷˜º?«V'¯axð Â*áÍ Ç¡»~‹MåCCô¢‰®”õ0Ò"ršs›ÎSC®æ=ÂÒyÊ û[ÔûÔ^þÕ”Iî1‡d#œJ9î&™I…#± ÏÅgŽß¶c*»B+¨­ÜFWnd†M}ÏRYu™bP·‚­všçc?_gMk5ZoÄoÝ䨟³ƒÒf †~ßíGÂ>Ôüصë͈,Ÿ ¬˜ãgkÉ]E8·?˜ŸØ`aˆN/`p§çÎâé22i¨útË (/[Ä@ã|;C¦ß]ar6ãÕXõ „W¸,¼C‹ŠOö‰Qì‰Y`¨ç`J_B¯àh§Ôqñé8 !;É.òÏÇ¿*Ä¿LM÷¬Çïç›b¿”¦MK—a{boK›IænÑU„o¸wÕgò3’ÁÕ|‘R¾q?ð«'ú©æSúÖoIÖV\ÄÛ]iÖTgÈ‹[_ßZµ_ìj†®£þ”5¤¯¨'N8wMˆ%+E:vŒ +ŠÊ"„¸Óªï©á“a¦x;ÏY Ž`³m ÷±ÎÆeòïï©"bsàiq>,ÄZnÊè›3æÂŒeÐÌ(¥±gÆØoû¦¼ =$ìRù·ÿŸµþܬú¯Ÿ'âJ:cjª3¦‚f2 +N’µ:3CC;OÊv"<ȳA?9=¿Ô‡a’ÓÈ{úúMË»Š¶ö&}Lænu¦¥4ÛŸV[Ìà+.¢_…bê¨$tö«1ê.¶}ÉÖÇÓÁcÑü¯{ä«<<›vì÷ܸßÌzÖô‡<ú Íñ–ÈУÝ9ÌrÞµ"œb‚t¶™Ê˜$yéЪ֡Vì ]W–ÂÖÒÔ>£Ýã0žõP¤B’·W*ZCÉÆ›ŠOžêS€ ë0³é€Õaº‚ÎÖÀºåS„±5Ε÷-}7‰‚ÔÆÙ-Á›*¸IC®{1ȹ†AŠ˜ßZųä®rO‘(G n˜6ã¼¢9iã5ßbDýN÷²'wL å,²j"•éWv³yMÎbfv›¹¤ù&,Õ†H®†ƒѶ¼G[‚f…íÄ&“©PÀx¸´&Iš™ÿë¤i=(Ë— èz:‚[} š$êú>ÖÑ]´¡çIlv®yPôÙüdŒÓ[‚tºzÑwä;Ñhc¥9–¯éX S8ì{‘ÕY¬J4ks¹ð'$r+›tšý‡æ7)„)ßm&‹LWÌQÔ ãL7“)­³gö€·†×ó‘Í‘¶".ˆÀ¼ÿf ˆE›ý*â +°MÊö‚:7¯õjm›˜ ª!µ'¦¿3¹xÄ<[r îä«ënÝ^™sºÉ:Ÿ^—M{Ã9E“Å·ÑÌ8ÑÝBãt<ÚW#ë³WsÛ 3’}Âæ~]ÏNAýÑx!¦ íf”ð%þÒ™ÄÇø°wÂÙ €ìˆëÃ˳,Ø¿QÖ㌴W싪ËŸ«D®t2ïó̉BŽ›°¸JD_æ£ 9b ʃ>,Šw©v­¯Ëà0ÍüV\åaµÙ4ŸT2G+¨óÿFä]ôÍ,Ùšå]©z ~aŒ1›æ›CÑÈãÓJU­Ús/ 'Ú«À±ÂìÅ“k‡¿[ÇM#I8ߦò’)¨´óq±U‹ë$ÔràCO>Å°½âŒtMÖý>úIóªŠV­Ì&¥õµ“€Mi`ªo k¾Öà ÊPìÅ^\ âm"¹eð¬]V¯D‘¶ÄÛ7uë\£»»~ò&øbÉìÀýOŽÄñ4˜ÃtÞ¡–KÛLôÔ¢”¸‡N\™-ÎvúaK’í¾D¹­~2W^€"á‰Ã¶¨ 8Y´JBX2UË[Ø0½låÂq°‚߃ýãÑ‹ˆ>â›ÒKHäÑà>sxÀ[bÜÿ§Ü¸÷ÝœYS«ú8–‚¹ kÅ)àöÃ!~¢w·öÅeÒÚmGäà "1™y¼­¬°Eïj^Á?5…ä‚m”H謥kØôC; Šíjc¹àº¢j%™(V«½qŒÕÙÌë½}óŸ‰<ü‹Ì9m·h>þæqóU’⌽"ýœHXù|yЄ’¬ãª><žòê%© -Ÿ˜‰»_2†æ”0Ój]yçWñ +ó>ÿ!ÙÔÄ‘rì,ÝQ?z⺑{@Ù$í…dâÀôÞ}*ÙÊE§J%GÙÛ ×)>­]6—ù¹÷t_ÜoK§ÐXBè½i§ºÐþN·9Ž¶T¥HOh}/99ÄçeéÅt¤sF¶|IìPq^‡ â¤Ï¨þêÐÓ›‚ø-­ÇfWÀîzžlìsÇ‚}–Ë/Q­ +ñ*=?áá¥ñ(m¹¦XÄiJj~†¹E§=*tÇeÐƘ!Ö7sàN•~Ìu ´9”#Âs ÌmAǃ 7Rà±a®yIB­uÏRÄ6Ë«Š{‹.z/xÞ"/oÕkýEßUw˜Éà5,ꯡàª÷ã|‹ÌÑ>d¥‚,ãwky ˆŽîJ‚d-0ö·â<äÐ:Œ'^-ÜD®: ;vn„Å›™ù.ñäp§ óê~AþÊì]±x 1y=ÃXŠ—œ“;Bën ›=D»þ¸#&J“TW òÓçߢTVET :@Á •ÿÿá:•)ô ÖÍ\Ê®vC¤@úÀŽjhXÔÉy~A·*óH}ìw™¯4lÛÜu‰Ê.’ß–øÊ™#2©rAO4óøS"Ø×ïéb—.ðnë›ÍµË,MiúÐU~ ~@TîØJ麜‡q"q„ìâÖ$ ¥î÷@jM¿ÛTºn[©‚ ‚ÏÊÁŒd¼J±Á„&Øê ò¥F¾mÑÕAEBôcò + +¨ ɹ)ßµ^ÅÊ>ÇS&Ž(Åq¹RÿÚ¨[ȹùmhÚ˜¹¿„²q_~_ÎÜ¥¨b±'cXC9íWÕ˜èz±!xmp¢i‘3jà0AH1˼D\K’Âòe¤»}ÿ&C¼kE:(1ÏrJ«fË…/3yñǺ¯›V:‰ª-Þª·“a®æÐõT˜ðRÀpï.©Úóev>IJárpô:½HÜÓCpwðr«ìIÈ»„×_!„Ç%>m(=A°“uhAðç9ôƒ)å~YWøö ^f©±Ôκîä»—©a/ÁÐÞÞY6BNÀŸê.„©®f{áÂ{H pDuf^ÿbÜi8û Gÿw•ÎxüúÈ— ¾ ·¼é,¡Hi © +M2C“ÉÎL™)Åy.ù)qõð¢?ÏÀ.Ø=û­L©ìN¶ÿè"»ü¯Ã=&g«þÕŽ–ñêÝ»,ðÝ©×CÄTß¿•¢ÐEºîâfôJë—/ž„7¼Ü¾À·øafÆé[=ãíN>OâIR&ÖÒ5)v}Ððȸê{ý åÆ–â‚ÉOlïKµýDüBD}û²VeNpü¢”læÿTœžæe–I'àÚ=´T±N:Èý-ÏŒp <‘ªQ€ŽCÍm‘ŒŒg2e†rožÊ\›«úÉ2³^Èz[jx  Žêu4³ì…Á¡¥Ç‘Àì¾ËÉýÏÞ·¯n^©¤yÒp\`V +¬‹†è°"699¸ê¿-p;ã‚1QÄ|íº®>ÇPúàÅÑáZ½¯à±ˆ^rƒy®ßL}Í ƒ¯Vè_Ÿ¼¤d·7ò ¹Îóh݃mâˈ= G¦K&=ûïšÍRu|2}¦`ÐîE8¦ Ä‡NHn`7³ÛÏ•Z¡Yúší}ÖŽo/Ñ@uäa_­­8÷lzÌ棘ÃËOn{[k;a&Y(ßI¤ ¿ ‰ðͤ#Ó]+Ñ rIÉSk£Ñ¢u)uçb<ÞðÏoÇ[J«Cm«_2Ñcc¥YEïe”æ2û.¼ ÝþeKšœ©± 2íçZ†IO˜¨2Š-šò½/(Ñ=3ˆÝé®!¯å¿KŠÐ¡ãÒÞœT˜DLJ¶©S>cÎ%øyBjë ã‹ž6Ï¡Ò\¦›YRKÃݽØLýpþvaÝõ¹Ó‘î,•…ÊÛùÞÝ ¥³žýãŠ}=2m¸­ÙeF£ÑÛxÁj=™/kKç–oÜ“ŒÊ0Ô(TCgg´ÐùTiƒT…œæRî+õÄc"¤P©O| ÖýNŸ;ðjÕ¬†¹Yb˜~nû=Ò¯m<É + ^[Uà¹ÐBÞ MHÓi£q +W Dà©®3öwÁ+»TÂCÊ àH“•lÝÝâUæe…v|³gÅ¥l3ŽÕýVœêD½ ™=ZBlÊÛ¥ìüŒõ/Ú•I|Üèõ‚m´‘…ZàÅ=™ºûÞ0>ŽCÛúå”@!µd.7 Ÿ»oo‹ÿÓàx€Ý +XèˆX¼?âsEï(ŠÇk_,6T¡‡MO·Xp‚jÈ”bOÂÛ@HB?ôÑ‘åH¶ y§wœpÇÛ‚ßêC‘(Uô¯íŠpWï^Ð[vjÛQAi1:–ð)d+w„™\ÑnEÕBûzc„ìnÕ¢CÉÔªlÃÿTª7/,DRmÎDä4Bú]õž:õ +ä®™MÂÑj°Ÿª¯ö¢´0lZçËA»Þ Ïj:6n¡¢°…6%¬åNBŽXèVX%¶©£ÍÝl?‰­1P²1܃ÞÃׯm£ìMõmâ®Ï!`f;É”‡NsØ'~ËEnr^•›( #¼½ÿ¦‘u¨÷$dµ*ûÇåçÍͲ¸y–ýéay΢sÊ»l»1G×l2†]`áq„u€ h4y€´åýV©ÓЭ$÷H­ cq³«½›T~ôø»@° —ãÇ(+Ã@ˆÄÓ{ùöì<Í \`…¤Gg“YbaîÿÍ$Ú¨ñ¿ÙÜxV’’+6îCüõµ*ÒÝ©˜ª6ðiZÞ†ŸíQw^ØçPã~Ô4¯`q}õÔÃá~>¿’O{DÒ‰4¾(pD1šüÆÄ£"Z‡²³–ØÙ!)hçÒ (X>¬TN!îo‹Î|Æc´ {Ҳ着3E—SËòlÙ6 n„Ló-·!µ¹ï(b~EyïÉ@‹×²D÷b#ÔTA÷Òé54Qœ+­½h”B°§öÈßU¥#ê|î´¬ÕÔf5J¢ñˆÙÅ®™œöË +EE÷PC)Ö¾O$l¡úõâÕdrw¹Îsùð²y_týæ ³cýÈRÌ COÚñ•ISýu‰„Õ¾˜ôâùä>O$Ú–|°2ÅŒÁwÞžåp)ª8ÄMº ËFµ‹ª‘Ø ú @úsÃûýÎ_è@¬b:k9êe‡µõÊ8¸¹’Äœ,¿ó,oG ñÙôÆÜ‘±˜Â”=ê‹5»px?«Õ|QÎ †Î4Ù§˜éWä&¥ßÑ.hO¢$F j¶ÞœšÞe„à1£ró³£1ÉÈšüÕѪ#-ø²2G3:šQË3Ù5$XÏÕ¹ÛlÙNK]õ‡ˆÞú¶Î8‹ië~–§ŽîÒj*ŸÌ®3’l¸ÈÕƒ^6¥oo¬ñÃVÐ×ÐŒî9#Rð€\îäe?Èh‘5»C"Vçq^´SoÍ«»TwØ¿BI¬ìË( 6`FKFÑžgŠ…‹sf13× ;¹hÚ‡ÂÝAwòAŸ“Áž`Àa4Ùó$Ì/ó0ª +#×rÒ¬|W¥`+ÕÝÀÏ:๑öìRqÉ"€ð-Uuüâ[! ãPõ ýèkewÔ@ÏìGêS8å+”³‚Uåg‚vÀÏõ·m‚Ä`G£™j äýÜÔÖTZ'l_äùgS‹ÖæO5Ã~Ñ‹€'us× 8}†³äº–Bâû«‘×Þ2¤—U¼šÁxI+<êÛÍÁüõ;€"'è(¼²eòឣ͠«+Î ò>©wçG{ú)œ«LKǾ™¹Ý›’š$2 ÏÑBGFÓOËýæR3I"^kŽˆÁ‰µýOÆ’W-³,Íÿk…ØúÀ ¼ox;Ø—¦º4s!‹nQø.B!üFTÇ$)W:™Ôø³ÖÃìh§TZÈ{½RÏSRèC¨ewòøüR8#Ñg¹Mzõ1#801ù…rÃ,•n}š ‹ßú †˜¸¦¬3¶4¾çuøwì›ôâÑYà +vÞ¸íª^âØᣊÖ÷ô$½™` |"ösS;$ðûIc¶$¯C¬W¥$„6à3WPcP^±·hw}U¼r-zdãMÄø¿!Ú‡y4²Rè¡ÀÖïç0éM´@âœÝÛË@¦A>˜f’¯5ž q“è$9Œ±3ï,§C¦¯Y ÖI,ź„úŸrþ`ŽÐ­˜éŽâôŸh²ÇÒ¿Wäê'†!8©-¼š§’÷ +«ÖÂ4MŠ2œ‰6—3ãDáÑÏ‹›€ kå>Tˆ©Þà=ú–UÎS¨þj1öt=F‰D€‰„O¨ùh³m‡ˆ½U|)ða•7RÊü_-nNÁÙ®IÈvNè™m¼—™±¶Ò ÇìJóëüßšùô#ªŒëfÒ{•¹þ«pÓZIyì<ötDlÌ;kfßNÅ´!‡/’Í;0—ÍLlïå! y¡ª]Õ+kÂ@)ó´wDmZ·[A’çÝSäð4ð_ Že¤gËhôÍ`¢o})©è²5E1ð§I!)½NWxøŸå=µ¹sË•ëµYRcû %ë»ÉÙ@ +¿“Ú )òž«¾úÍì-¦¢1q´QWd€˜7Uÿ0Ã{/P/™LT–¤ac§¡X6ÁÇ“h@álo‹ŒÕªüBNDj„á£A*¾ŸëV1µ7§”9µè/ˆÅÒˆÿ‰ž0øDøªa­ùæðt­µÿÍïUlí;éU…<ùµ’¾´bë;¹o£©Q¦H›l —,¼l{µAk¢Ò²ÍþC KUæE¨ÔÓÎF0žÄ¤3þ^&á˜0ï?9¡=³q>-Tb‘bB²$ ¼ǹÄËh‘vPŠBháÕ %Æ ÙdžÙ­~ «,¹ 2ãy!¿kë F7¡3Ø°„/¤¥Õ¢©°ú™e¹]©pd5óïV|£Rõ)áG»&Ïþ9GŨ¥i6^[›³ö¬”ï1ØÓÿ•Y*#õ™4Iyý‰”56«²ä^ô +v_xð®ëŠ¶<æºbt~ù+íýnH;¦ ÐìñŽËv)r'øømmNç> îš“[6Æô™ÛO“k\¦ø’_ Ñ¯”íÓxü#ï b-èK…Mázï×~Âá+Œ oÑÜ­`ÌÂà—ýää#0×ʲûË#ÜØšÿåz›ñ-±©‚%Ô$GŠÕl†\ô‡“=zè® ã@•ûÀÓèÿË×Ìûó +nÕì’EØ«ÑâoûáwñÍ"íâïÝNŒô—î0œŸ¸Ø% +¸BîØ|’¸¨|yíGª¼ºª:ñÞ-ò1¥gø´ƒÃgPz§\ÉøÇ:ºˆ;*—Ó°ÞõÉÓ©—â”Á*ðÛHéçà—¾µ÷Ù-A‡Rš¼àÿNL0©ÝÿûÚhë"…²‡G„_-‰^(—r'¯É+¤3‰üÂu`_¿|£½rOk›”|U'ûøײÓ6ämt°U~¬ÊufÙ½©· ⹤•ôìšeèÕtâ¢{ÍXt€×ÔK.!º¬‰|ùöm)ä½—@¦§¶Òiÿ«_BÛP•S¼!ÈŠŽŠØQ.2A]cnlö¬?D2›_o›c"·ùMË#@;82Þûë˜ÜžØ8ïÙåc"—ºƒ",i[Å \HÔ£PåÞ·GSý7 +°Ç÷7.÷œ¿4߃Š™2N*x¨âÜ-$#¨ÿ ãhF|þ-¤µ¾\ÿWÓ›€%Ó©I°ëmpm ÊMeº ÆèÆ÷2Ï?A ¡gmZ©:6«‚¨çù¥`B5ßY€¹ß¨6ZïÿöÉáŒ2‹âÅàòIðź•¼O%¥‹‡®p½ÂÓ¯÷&ïÝÇaóWú¬÷)k0hïéÎ2ìUè@Å–*žÛ°€T0"QoÂ"§’q°ÉVFœLœqGÝÞôó~$Ì|òIü‚u¥®t²­¬DwC›ò±Ï†ômåHý¬=iáòø¨Þ‚åkðªùrRQ‘<¶Øq+®%áÿêóvSÉys ‚8:ÖËT¢ª§dým³fè8ñ^ Â4ïi]ˆ$ÅÌ?@ßéD|ƒ-Ë5ÛÊÊᚘo9¶¡¨bŸÄ÷ö5¼^É#ˆrƒöþn¿rv¹÷5Óö⻪iús£x³Á‘@Z%) Z§(¸ÌBÐØ Ä¯Ì+úvËS‘j}a<¬âŽuHS­I’84Ò#­¤ø§š™aûø<³§‡¢©ýš–ö>%•nZQë(T ù­·Ð÷§£ÚŠžàKœlWÃweÁ6_£zy!ظ`ñ³ ÑZ ·å¹P¯¸Jþš?YD ¤#þ«^ÉÂ?œü>MøC^dÊš.÷•îy‡÷“-ròò¶ ×4O”Gé×Á÷ç$:½`|Χèøû)â},S¨Ä‚ÚHŠ[¨ò€ê‡ãan (xµ/Ø  ›6‡êç8¢JÍes6ÉÉÜ).>i¥06k!ï8G ¬å§2SáÌ<}®mÿÇ»· (C *¸¾ûžm"§ãU©4äuîµl^“ðåÈê×9s+ÌïÃ!Œ&klóD Y±zFrÑ¿ö7÷€{ÔÝÊ[¤B¡®hœèžb-©¨|þMŒ°9‚ŠøyZ>%Ï Ê‹4ÉtâШ¦«üœœ5¦Õƒ‰ì uDW«+bÃÞ òýphMŽ×èõ—zÄ‘e^óe¹µH­o‘L®YÝð'$$²A ÷©óÄý³·t~7…¨7 +Vþ ÁÄõ£g"K¶e `ªV4n©)”ÖêMþ¾ûKô<ðçK· ¬µÆ !¸Àžíž‘¯"D+[G½/ÒŒ棻j–ùÕ!Deƒ-t¤|LƒÏ³;µ€ÏÁÞêd‰…ªÏ<Ža;—²A­{¹æ†…½kGrU .ß‘q"”Êg îÁ¡ä2ÀnÚX·”—RFÁÅ^N€H‘´ÖÊó[™™‘UÎ:Ûo2ÁW˜@Øã„Éû‚hUôå5ë¿›b„½­Wzm†ç/°WÓ^ì1_óÙ–¦¥}3¦†fœd奞/9­é§ÑtÖËè¼ìšQö¦&^*¹=ßÁ\; [/-}+ëBà‹MgRºZ'£°¿¬Ì¼€'’@Õ ¨ÊŸôqˆ nW´V èOá¨,Öèq\¹°…ÏYúg¤Ñ§ +`uo,´u#çuæž4N¸wÄU"šJÁˆ±_”TÔº]œI'³§´×(—LsÑ1@NòI–O¯2kêïþ{#bK×Ä×|ý¼AÍmZQ)ò©´Œ–¬:øAȇr–¼hh—¾`Ùßçá®á—L†g5Ž_úˆ¦&ÉÝf‚ÑV¿,bż ðDظċ ýŠf'7X¤l3sßÓXÐëSG"”[ÈV°ª†Û<‹íoŽ¾q¤vá@ûæ”ÈÀGº; ‹&Ñj6Dö¡õØduýÍŘ3:½`<¸=)ÂÁ7ðû¡|œv=(â̺^“.áD»óè- ”¥ì, +ƒïp­‘àš:'%`¨ÎþNËúåŒÉLüä8NÄ >Àé_ ™Ì:Nú Ï’DtÈnXFçñCK& †ïAÐÃŒúM-;b€Ïj:‚bîJ„êì&XåÙ^Ä +‹šf¶\Lß >xoem¤ÀÚháx]€ø_¹¶’ ¢’ÜséË} ¥œÎ£>5ò¯ê"#+þiÉ ÀðcQ øÇ•ñüSÊ÷¾åfƒ®9Hhî[7 +•±·›{Û©ðz…>©"TPxõ *ŸDs6VA'_zuJ®+iU$¿ßðÆ44®-6€€þnO3ÚN_Á‹D~5—8ñFaK)%ε0¼ç+ö×÷#zÈe˜^9 ÃB2¹yå€*gf#Œœ*ŸËqœýûß +ú<}mæ·…I``ýt›Ä¸Î+ÿ/FÛÇRéé†Iµ*J(ö‹Æ¼þtŠèáCÏ@Lž¹$Z±£&#ÏAI9á#Eò;rŽègÂ;âH7 +z™m;Á8'íäº7Ž•éÎö.:fÝoì%`^ùyzRf:5±õ|ý÷ÖÏåŠ9^¼ì·þh{ìׄõôÀ‚¾ÿ˜È-MíèàKh²\‘Õšlrƒ} ص*Ø›Å/ “i„Y•zF‘­ÄP¶ÀM*$< KGÌòõ sHï-ðìYy¶Æ=Š^ÊÎo"Œ®öV‡‚&q¸*½+@Ñ^pñ«ý¥½›Ü€ßpãÁ?Qc5_!¿ö¡¨_z¤êèRž/³£T«ãá6Š6h)³—bb dY~åM5ËöOé8SU?cÿ({‚ÑÕ-QgפÇÄOÈcëhøò–Ìc-¾7×LÑ|Ë^æqâQ_¸ë´„pß.ÙÝ>'ÆìôI–dqEëˆÉÁ²€ +üS¬ÌûÆ9ÔW¾Õ", Ÿp:Š^5c,ƒ®ékã¯_R,â˜Aà§7‚÷²’ oʃEHzC<× Aª²×®¡%¤7“.½l†@7ŠZ})û.¯åƒõ/HšeQ»Î›éFAêhLpfŠwú"Åcw°Æƒâ.WˆBü:®¨ö¬iù ˜âÌ×Z&d“‘Ž¢j?uÝTd¡.ȧW†Fîo°mz ŒCd‚cØÞl„66ÊrÀÅvˆF§!@´|H<ë”Û—…zñ€$N:^óVH'Ž>$øc´Ä²#Ôí@ß.«û¿ž(Ÿ`ùfîZS1ñÝÀ 7DÈjå_ì@+["iJ©&RcéAZˆ{4;€ëéG$ 8 ÛO[…¬P ¼+?#2NXêü´±íqa1Œg‚Ì^fa…¢CáOùj 1ÖGmgcs\­}¬k(ZL°¾a˜ ¼|?O’Щ\bjUŸÅ·ˆ®l#ç¶Ó¼³xDY²9@)q3‘!Œ"9èCM(ððQÓ·$îÍÎù߆5Ø,*Sôè=YñïÝŸ]By·FGXä"G»úŒ‹úT—Œ.¢þ‹¾•Öú\\AÊáoWéf廵_=ÛFIÏ]U®xï·å>ß o¬B¿9%È@‰V¼àÞßefp{î_{ªaìá>R¼y½ ãˆô¸Ù‡'VŽ'šb®ÁÏù%÷®‡Ýsê½É¡¨uÕ,½d¡‚ͪ¦ãH&hD‘`–I2™%˜ 1ÛOxOª"AòÐ#O7K<Ò:5" +æÎ÷ÁN2ሺ°Ñ\¥Ã’C3ÎþÝ/ +>YÄ +…Cä+à)‚ÊV«˜\J]÷îFñµÂÍ.cÏ¢¿ê¸¯¦}Ͷ?Œ[Ü«_/]êßæóÓòñc…a-ΈbÛ/5Ñu7ûÅð0l~~ ûâ”å™*Ÿà|â‡îò§¥U_ȸ›þ ™3¸N¢ÕÖ¥Dô,ˆ7› Ü%hQ½ªj*´jür”ƒ“•~õ[—ˆy~&qÜ®R5!嵊|ç°/¼odÇ€ƒµ+Ž E0Å-™ÎLn'VÓÒ±{£ùDök‰a"îר«ýE9ÁKBä´-†Ìùò*¢Šô!®Ài騡t Þûx¡m&{„ \ýÕl©y~;Õs¨‰¼’cÑ®„æx- añmˆyl‚r½Gk™Uxƒ'…ÿÇ=B‰ÛUf1ì›C1à,%ôñêÏö6až†»—â±T#¡zŽf‚K`À?ÑÄc/|VŽRY$8·ÁF5%½ìãÈعrQ§§¼óõs’.åcç?*Lóû”™É¸®RwFñ¦v΄ìk”3øM¯*–ˆëäa5Åóö>tbTF &ðåöV?|ì&bÄüƒ´†Ø9“=ƒ ½»YbñÕCŒ²ío Ù–iô†ÒE7Ðê!€Ð`>–àøþfÉx,¬À*¸¡@«@Õ/Ühz'¤ÿv•[dFé`ûPaI9+boz²„ãR²‡Š +ÚHEÊ:üüö—ÜÈ€)²­åƒÛXøt½A ÞþkˆnµUŠ‚\D¥j Ö™sלìº$µÎ“Ä‹9/'Çp<2—F¸s9;•£ëò²½éþL„¨_–†ÚÉ묪`‡|8ïj»?#ã3¾±î¶©Vå¡ðhJW8ÛÆéÇ.Ê­h¹yáŠ^ƒÑ4HÊ6Âòñh8ê»læ;ûÌ&N=®B­8=WuIeRè›@Î['XíºrRˆ­dØ¡>6ý?T‹¥Väq­–2dÝ#F-ç;È—¹xàF¾HÑé\Úî:C_IÙé¸Ê“×—±Ò‘\×iiå¼¢E¤?ÄÐÚÆúj7=ßÇ ¶¦¬X‹~ÿÍÊ>ß ÅgT·3Ý™ ÿ±ï¼;?ú`P¹3+e:öWS7Jã=¥(RM18™ß¡²Ï=rɶ¾Û)$4y6ºLÕ¼ÛbÜ!´Õü+š!Êó‚Á¾†ºt‹ÿfÒ-W«_$©bµÛïÇô-ˆ ÿ`Èpºœ³¼Üe÷µ¤¼¡–yl`T"Ð)ÌîI.<Ÿ$‘º×½,×íÀÚ¥;Ž Jj¬ãfiØ:j‹4°ApÇAâ­‰öDÁ³c‡"7Ä“Ä[õ+[@&Up4•[Éâë7v‚€fè‡þ²ë* }P^mÒ6Â:½6þ¿\{a ʴE-Ö6ˆðµ»ôcjÝ(Dz¸–IÕïÅô¢EÞ9ëLð€ÓpÉ@« äsA¤†§DÐ̈́˼ü·›zŒ! ̶`ýWÎw¢q7™(˜’'kƒÃ¸{‚ÊžY Ùh ¤¼†íwu³¢Í7Š_Í•ÒÇ-±›1ˆuñ ¨¡ãTKÀà¯÷ÏØ„c£å8“pAEk‹3Ò¿ ôVaZ ®g·Š±üLÂ(,$^¥ŠhbjçÌfF‰;×Z Æñ­Úez#t‘£&E*P*¶.߶İÙaê§Ý[ dó®Õ*]}0à[IXU‚¤a¥o;¼æ€„`%£*TèlD^¢ß±,C›]}aq–5uo¹í%§‚ îmâeÌŸÿ £ýØŽT`…ܹ:ÎñB¼WíýDâ‹SÍ#[0@LÈ»“ßò߉ӆ..FÀv‚<‡ê^àGwÒëÊù"f,Y ïÎìöuÒ¿ÑÆ~„;5ô0Œk…žjZÌï 5—§=üÓ½¯qq¤Ç­§Ãªæ¶´÷¼¨æ± õ¶qýÈ%€¹‰wÐ3.n#Y–¹SsÔbÞÝÿµDKù©@>“[öÑèÈÎ)½ô£àäjPÓÔ¯g7…*!RV—˜:ÜÃ+½£¼±îîªF¬´l΄‡u8C3K*‘Ž3|›<Ë°zÕ‡«5 »xºL%ƒ—Í¢•~ÞzÍ¥7Ò6ôÓõ¬ß ¯–VBÂXh=Ð\„úM$?7¦›íÒëì'©ž’I€ƒÖ›r‚Ìźdžmˆdœ_œrªéõeúŒ= Ÿ¯±‰°ðq‰öbú'›«¨ñ»Ó`€E=­vaë[ù»­àX~ÂUúEóŽH”ªÅê[á•.9Ù¤ ®õîk½ á•”ÊD_;%ŠS‘Q·„¤¦qhô…Ñ9íã±EµÅ±®Ãpï§|SkÚ à¶ù-%´Ö¶ }ƒ¼äa|K3¤¡_ç‚à<Ò²–Ù­Hð²û{n*,TŒÂ'ñÎL°—nC3k fy™ÎÈ1ºm†àš^q»nâäZÝ·)w=IŒ}|w^ž¬™'v, +Ò¾ë$&nœS«^ÄN"ÁqñÐÌDž"6®ñAœ½4é¶ÙiûæRQ41ì™ñdý¤8iä97¾fNçEdcœÝŠ&Ä=dÊ|bêÌCðĹ:@"Štx·µÝ"¦9›ÕòÃPKr6O­Žy’û‰÷ˆ1„(g{zùÆŽ`Õ¥LÙ3ò Üâci¢öÈJ49%¾Up¨÷Kî¤à҉Άâå}ÚF¡–²—Çõ;_ô(1<­Tž<÷kÚˆY;Ä•ëÕPRóÃX–ïñ€½ïÕB@Ô3\V9º„–­mö œ÷Y‹ +~à™}kÅC÷\Ôø*   UúÚ¦ÄõœþaÖ+7¡Xš”Ë"*·šÐø„æZò襓ÏAûS€­õlÔ¶ÿv—zªâáæhnfd£Ò{½z°Ý°^,-Ø­YH6sò•ÎFbAz2mì`¨]øFûÀ?ï…‰Šj§ãî¡ŠÚ Äã§É2 t8ÛŒ=ŽœdˆVY™:ïµZ¥jþðµ®Ü1Ã0þ·¯èÔ5(Ü áécƒüäNæ…rˆ˜JMˆü7|Ò6Ñ3>„‹cþTTVÝf,¸$â&ºsÑ5dÛ—^oöZy$3ˆºa ¢­µ!P»I,½{mŠz­Ej R‹¦'‚ ã~†eõ§>ÄZº]ú²>r ÚØ´jxI”¨š’5íhÝ){(A ð•[ðQ(&å+A¨Áü­‹Íx}ºÍ0(È•}•rÇRˆÐw£ „ñ¯¹~DÆ04_èxü9ê¯ü±Ö  » eÇä «-rŒÜ'¸PÏ[õkŸ Ê:òIÏOt!¦© PËœû£êà‘L6ʉíã]GŸºd9¹Ð + ´¼»é"–õü© ‰;¨>–uÐÊ]Æ]½´~%ñ2Eد'!L ™Œ¼‘C”¨x¤7—ÞìÛ”Þ²Vr±z+zzNaif*Tv¶©-W‡;3ºWa/7›}Rñ +»]\÷¶£Ö>°‰\ê76ÈŒŒ Bø«Œ|nCYx=ë¥IT ·Î7Jî)Áÿ£'{l0- Ì%ÕaF”…·…yIB…ò'Â(jÆ»ždœ÷ô%ñmÍb S£z$GÌá•5ÿG®ºˆ‡E9Üîoþ7‰ÈhlõºÏ³Ñm¥uI͉ľX\X°ÃU8Y¬µ£w½ø´xÏe¹ø œâb ƒ#Yo¹äV™uš#Ès1ÉW›Ÿ +E¥CJ›,í;–÷±ô²×õÛ‡´¥ò\õlë€{=Èm-ï´Í ÑW\=éOK@ñ©‘Pdçîi5ŸúèÄí!u¨Ó±vÕÿ^Ú!Þ5 ¤1s7Lîlüª +Í›üŒ§7q¼+³Œƒt0Ñghäœx¸ÌVE¯{goìÐX´ò[&bÚÇå—¿e‘¯eH*i'òò‚—1(í^ÏÀ~|G+‘XÚ¦xCºp:æyîs©ùë±›™[å®óc6Ê» ‡AúÔ˜°ßBVG4rémýuhjM)®CylÔ°<•‹–r°8¨/YýÐ +bvTÉNá_Ãrî†g‰6ò•µíÛ" Ç–ß9Cô‘À‚Ó +­¬Ì$LŽ`u\$ÿyýƒ îË63rŒa ù*}L¬ÿOƒþ­Nûšâ°Vz`NÁ~©âÖüËïþD|°ˆÏ!5…çÆkW· Îï¯ËÅ[uõ 1HÉ6ÅGÍ y‚ÀDÐûW…ÔC˜¿•%‹Ò¸Vî96ºkœ>lLtÆgÑ)d:ã|Ù\Ž,?†ÅÙ¾¦d”5·ÖŒ‘ì¡âØ#2}‰Äñ‘«Ã™ >>©™–Ay÷r5dý>>Ç:Xqa¿ÓÙ x^åJÓ^a”Õ ÀÝ2PA¡½Îk@¨AP£íÓ~<¢GÇ€w*ßjRr… (Þbí]4²2æa´<¡ï‰ö‚kdù©#YtuÎdW'*Õ³C+%˜ 9vȽâðq +endstream +endobj +2265 0 obj +<< +/Length1 1509 +/Length2 2696 /Length3 0 -/Length 20803 ->> -stream -%!PS-AdobeFont-1.0: LMMono8-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 +/Length 4205 +>> +stream +%!PS-AdobeFont-1.0: CMTT8 003.002 +%%Title: CMTT8 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT8. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMMono8-Regular known{/LMMono8-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT8 known{/CMTT8 findfont dup/UniqueID known{dup +/UniqueID get 5000830 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /KPZRIA+CMTT8 def +/FontBBox {-5 -232 545 699 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono8-Regular)readonly def -/FamilyName(LMMono8)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT8.) readonly def +/FullName (CMTT8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -133 def -/UnderlineThickness 61 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /EOXOPS+LMMono8-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 98 /b put @@ -33680,137 +33586,54 @@ dup 114 /r put dup 115 /s put dup 116 /t put readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-456 -320 743 1014}readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿[úKª•LI5Œƒ(¬Ú¶Ÿª>H·Vhg!ÁM8óyiÆ4´óW~Ή\ef5S›ƒDy¼îè ™/ÇÓs©jeX¨Qö²yýsÜC´rny,qš€ÀwʘNó>~ï:Þ„¡Ó98ˆ>Æ0—jìÐõãºE™ Û¸t–†”=ÎøxÌqÚ¡×ÍæsaÐ2Ô… )–cH.#{2­ÐVí°”ñ#ØB¦9Ü;öà‡êT§ðÿO›z9R¸BѹŠ:µ2@)s¼UFìŒÒïÔÕEº’»+¹ÓöŸÑ~`Nc’ŒdÙ`À§XXyÿ¯R1ð×T›ŽuGxei}¯¯'h©YÌ°®ëC·s¤ -E€ˆåψ#†poyL0 !~DðûÍ,ÃîYÀÙJC–Þ}”¦rH6¿ÓŒeN Ó¸l¥HŸñ¸È>·Mtô·Ùn¨cÈð=¤,LØ¡ šÛv~ÉÞž(… v”w¥*B¤@nx̽J 9܇A•&oóĬ‚ßžßIŸdyz„Ézg ªðNž•ÏA¿î -ÿ})/Äþ¹Ñ‘Z=q·´çx -ÞxG~½ýÇÞÕÆ»xzòˆW™…5@CütÕ¾ÞЈTîG©=ظçð’½A¸DÁÅ\g1*mÃaXŒÃç‹ò΃Þf»Rý -žàåqõÎ÷uú`e(Å¡Ž"av‘. œ{‰ÔL¸¤#eå¼ÇÓ(ìvŸKL9’¯ëeÛLHAkά&™õI¡ú§á0Çï¢q\JL›hÞÑ(Y|o=æ£6¦‘[aEáðŒfÄ£àI>8É»{Oæ*dÉofkÒ¢fŸ8V”J:_#w¾’.yŽÿoPxY/Ûð±T‚0RÀ|K¸ °Yk+qœÅHfƺ'/,þá:Üõ¡¿rÌSW÷UÄŽIôtG`㚺ÏÓý -¥Û¦IÄB£î“á6mz ñ|ÝrÍ3|«=5­º#“y.‚ø•E\®!å.³î´Z&f>hn§<¤gØ:Ù7Œ¥SÈЋk4ûóÝŸìH™ŽÔ"ç{¹–¹§ â 1{—Z«ðß›Cp¶Ä1¯(:_H.VO1|€¬ÞeøôXFu£ÅýÅ>·fÊŒ PbÄ—¨ÅÁsqM?&ÉÓ§40%s»’CdŠâVœö÷ŽL¬¬Û>Ù½Íxņz±çÐ=5Õ …ˆ[R@r®v¦yêD{”Û\²rÐå\,‰À­µÊäçšwHç¼ £ÆM³vÔ†€`ù02¶Šîwšãñ%}ôfõ‘dUu$†¸xž”ÐÑô ñVú¨–E¡C¹Ò¥\J£¸Xóø%x¬oü’ n»NKPŠ1:¹ënIüFZ8„Äwö¯ÓîG‰£uuÔð…YS24¶—_Û¼¦7ÌÐh¨gs£ûtÐ}Õ—/¨+çS+ÑœýÖ’…¿r_²)úÅ°F3fä˜È(ÍåQì³ÈÜÉ0$ù%ØÒí±Â²EÍb*K”Vü‰˜0Ö Ã#x [Èô&ü&ÕQÕí>°Ñ"@ høILÆ´1ºð€MƒR~ÎzÊÊY¹æWúžì¿@÷Ÿ¾†_€¯Ž”, Ý„|‚`Ù mœîD™ØÂÄm3,ÝU°waÞsIz;H"žëšÅäð%¦)‰ÉNyŽàëtk#Ë¢¢•$ò¢žáˆUÒ/¢µG€ü»I8n¹<µjÝVõõ«3/Á~«Öä%ÊTE\·þÅ}@çve)°`_QÐf(IñO.»ì„ÉØ9Ï’1ÔÞ”+yQß>wîá'"ùq/šˆÛ¨3 dn˜_¢Ìûºy닇œ×/âµPŸÿBþkN[hý­†UmzIÆZ+(°0Ìëû’Æþ/ëë-AFà¥2²wȧ=¯€\U®Bwè[<‡†á•D›ÌFßÏË.Ô5fù Á²Í‹YAsM@FC=€ÞÎù×oÚ£;©Îܲ*;ŒS}2µbâ»*—0/çP‘aô…˶ÓxÀ¯†€ØŽtHa5#Qû΋Û+™òl_B§‰Ö"Ìâ@ŽÈOC*rÙù1Ün:ñ)lQ‹_{ϵXV°üv&Ô.{e¬zÜF•<ØÓpòâ×+^àÃð:`:!jù}Gyì¨1Rx°´Ñ£ÞžÁ;DŸË×ÖwLõêS*¨†ì ƒžMÞÖ°RÐuÄvçy+Wîð.ðÛ?I²+(Ž`›Cwc‚Ä8“b®§þNc{E)\:}WŒj3v¹w-wù’¸Œ=Ã-õT/‡zÈ[ÿ"yL•Û­ +· üñÒô/oªà>¥<´$ã·aéu­¸þ5Gž ÍÝàÑQ@çÄO0LÓàZ…’ Õ÷Ù>D¹É” -‘¥”õ¡ªŠ_âÍOæXÛçGsš ’ïnÇNºl² -ÃüÍãÆ»žýÔ°Óf{_Ük㣀Sx„Ã2c,ÜÇPþ`«ÐöMÁ›á6€Ë~Ȥ¡ãTKÀàa2YÓö–cÿÞ¦Mkb;c1nŽ=-îšøøîȺ—! HíñDyЫåä4‰~,%ÉlOxôÐd4`ì•&É*í4@Ý9¸(ºóæRjýX3;UnóØü­G”G:e1ïO#FWÐR²&©a ˆ¤šßÓÄ)Ò×gJbêÍË»8GôAh–Ì‘q¤^]ÏÞŸNÍiý2YÔÈXœüŸnñq©¤ú@ ¶W…‰ëˆôRõa“ÉÖÓW*ªÅZ@Xl¤ùeª*ûViik +HRÆsìÆ,¨øáJyYstÜK!]~À•ëèj9áîD˜·ø®¿h¦iL$VgÄmQn¬pJot$žŸ^·Ê7€žïÃ?Í¿ŸBö_àiNQ"1 Çø#ì)I@dJÖtD¤¨¸Rü\‹u^¦ÿXè\VÉ|4{çð¦ÿ#_ÈdQ$zÏŒ‚c³sywFeOÁnØéšãOÕ#-J£/ÈC•Zй?’F/•³¸Ï÷3ïÀ†MÄÍI› SM3È""oÁ™Òaéàn!(9„óÆE_ÅRG›qrm{+ÇÕ>&ÄðöBퟔmr4Å| dlv3=>õ­y9äçT¾°Kù\…Ú·¤¿M䜃HªËÜ=&!­Áx†Ï¨Ÿíké°Ä–Jè8Ë9â=מpíŠI"ŸÔOEÌlÈ\!4¤m®,ôm¦Ì°wë„¥?´ ®¯î ¹+ÆÑ…‘3ÿwö·»GøJž:•’i$e8IÀ(áÅ`.µÔÔ€¼çcÂ{¹¶Žƒg™¡ØýÆA±D]©Š|ÏWWøY½ËP·ˆ2›P`+®el¤¹ óç±Ðó ¡Jž-þp}°\§#Ùä0§yω9ù -¢ þŠÓâO=ä†y$ä*¢à?ý--!ÏsèÂmQÃC,É̯7¤F½-ľòbïÆë°®ëj{Ù¦`oDTDT+žÝ6n`pbúý¾søöù•P궗<^¡K0TùpV -³›ý#ŠYºW™ÊªAŸ^™ûc,ëÖ‘ÁòšýR˽%Šß°´¾_$q¦ ™QؤW¤ñË4DwצQa0Ÿ1R¸„ tÄÄDéÄA*«2kTK%’$³Ö5ªÏQÕ¤L„–Œéú½ä; pi~y¥ôö_Ü1…úÛò÷à9õ¶UúÌvÖº(çÉž­ðÀ±è¼«meE'‡À¬K0ªÑü ^C¬I’탾œ»F‹i¢r)݆ìꪤu½äcwÏüH,ü1] eǵO5­:WˆÃµHQQôÞ«ta`±;gN¹q,8Ùt>!ÉŒ­³PèÜ›ÛûBË‚¥µ¹;ûEL|Õ˜¼ÅúØ®u³òé[÷@¡­Q»ߺZ>e,‚ --Œ‚r#áíKDë"élÅÑ…ôñeÏy¤vÇŒŽÁDÞ_”ûºÃæÙ@En-2l ïL€Y4²û~ú ©‹È;ñƒB/“Û! i»jèœEP{á¶i3…]8ªÐuɯü`b¬Žû9£ÅHÚibì*Á°é˜sÙS¥Æ”õ½ ¿ÕÎJ@ì<\pï˜$l ½×ð.tSUQ–óB¹üdÁ?6,‡!KlR×µž§Jd®‚;¡ñGI¶Ž+ù7§D"eóšÐ¼ëP·å-ë¶`q'2™o•räK ViHBA¨Ö¯Ì±:7º®çE÷çMGœ·w³‹îÁeíðŠ¡ª›‹@¾ñ6ç -(M({ó¬ƒM›w„œ7°côòQ•ƒ$þ&GĬ)U·qÉwìf†›ßŠ`-'tì¦ò•kðòÜßS&½†ƒ¶’ÛýÃi)š»‘öb¥nþgã4ø*˜×¾%¾."™9àŠ$y¾vG~Q“”CSym†ª^(„ÃÛ9à8tD/?å :³jb*j‰™VM؉Ÿ*Šþjñܕݽ¥ÅX<ןñ6ëD¨Þ‡Ú'Ÿ÷ÕK@ùT’ô@(6AmÅs3P[‹ÑÇV6÷÷tP_þ²€¾7JH¡ 'ßÓ-êº)>ì3k¥¬[_Ï:!!¡Z2ŒU˜ÕÁ›s>·}Ypöúô4%˜‚‹øŽôÿiôoÂΨK - ÈÍ'xK¾A|Ò'*Ï“l¼H’¼÷Ë¿8ÅŽOÅa¡-+ë´Jq÷bH„å9K»þiOÄÐsc¾MpÜkÒ*¼ÐC"K<Õ -Ío]|Ë8º@ú€˜-}LÐá×Ï"t›D_sUé&­úWWç<ñ#ÌîcŸ*ÙrOF+ݯôV`&¼)Ó™ì“DÊ.œ°A‘:þ´äW#3²Ž¦@ò3 ù™'®ýµã9Ó0¼Þù˜Þ V×Ò…¹ŠãíÉ'k|›å½ýscÀ’5Û¯*6ŽHl Níõ=ÚMKÐÅTµÇ“·%˜Û)â/röÎ -*Ò²Jv«H¥ó ¨ôKÃÈyKÛ´")°ÁS-ç·yRB«TrW2â´MU»R+e^ëÔˆb9,¬>Eç7q*Ü}.%b‹&Ä=dÊ|bJr Q4aÌ¡)õñlJ$ºO¡n„·9ä?ôVµÄ1ˆÖOÿÕOû.šøëìÎŲK“¢!y,§QDç ê6Š5”~Ñ1EÞ[âÝÍÌêШ:"þØY+‹B 3c ÁüJ¿9›‡PµTUü^C”!±$ÕÍè 5×Ò2­ÜH#iÿäé1è¢^±ì·vfîÙˆŠ’¥Ÿ*j wh¹‰fÈ9ƒÑyû°Gc5Ñ9Þ8ïÈ.„ç6 `ëGuÊòeI¹Ÿ6átxM!Ê“‹1Ø{›dbȘ£¤ŸÇ2·ç®ªE²õm’Еkó!­…Ÿ*”sóå&ÜéѲ¦½lƒý)Qæ~ ž¥ûR²u˜%ÌH6Ý[|u¸£ßV.xš1ÞÇèÙÕ¸Àpf09X”ËÍá“jaê1¬¦O¤m¿Ì«uJvþYÀ`·^ñJºˆŽŠ†¹ -Ú:þt!k}óšE©su{ÁlÅ1%Ò¦Š‘*º}WØši/Ô¿Ð6Wÿêï…yÞ®'ÎÎïÒ‰G¼»É1“tânk÷ú(^²””“¶omÜÑ=ŸŠÈÎÌ‘î0Gc»¡ªù×K$ú~¬ï¼¬rÞƒO>×ùõ\! Omø¢(mŒ~½œÑâ· -‚ó,· ÌÈ ÎÔï@§:ñh#™rÌó2dˆÝ³Õ¯k‚…ä´hÛùÈ®?´þìÇøö?ºàdˆ3¨¨å4Äû΂æ|ð–£³7kt|:Ûªh×¥@~ ¢cÎÊóOõÌ­@ÏWQÉps]_Hö÷‰ÿNs­Ÿ&°÷ï -Ù m°³Õõp~¾1þfã ­&âk"qM€ì$¦d©‚`l´³@•æ{²mT§ž÷W)û•(Gb5]üwTåƒFÙÊ[t66®ØQBÌ -y‡"6Îj}¡n4­Ô3-1Âf.¡œf6VTÄ-æÿø¬†ƒÝbírq&ò6ÇX0ÿ+þõ–Å$³'–šqEŸ›I®°jv(jÜh©¨§|4;dWWVÕ9¤s±³:¸ü…¬{¾%TRM•Š$ó%Ê71å@X™É§å -û¬]áテs嘭žN¿aÈ:H¬ÊyŽŒùMZñ¬ed£7 êž«Ò¡DòXëMe{íß°d»^o¢Å¸zw–6v šUЈ–xàz9iq^Ä‘;8#φ‰xª!Hú£R·ãå†íÐÌÖŒËÓð¦ÕWVZƒ5@\UöïîM„ŠžáÉVgêÎZtÖ桾12ôgÃ{¿yÔ8V•*_D½°î˜›H¹Dt­;ã:0í iÿ¡‘áziTÕ;‘ÑĸÂÅÔ¥¼ ˆ.©jKǪ¯ž«Ö»'+MÚ¢jýøœ©‹æWÂSu8¤Ú\FîÂZÿ&!Øeøiz܃‘r‹] ®Âÿ½ô2ø£Ë9>¹-<òObC¼Bç±ñõuÔ‡zÌ•Q96ÛèG¹m~ƒõê_·%˜Z¯çΡXéž7äw;V\ÒîLÂÄ™UË [ºYyZS(Ϩ˜ú%´Ù¼YªÖ>7ÉÆ2™äV|lÅE™v›/"ò°./aóBršž¾‡{Ti–ÆR]úO^¤ÿcv:1=3cŒ^ðVý«gXšRÖlÔÓ¾{iŒ²d9ó+œ -¼k\*+èõ®LpAR›EqŽ_jüŽæâî˜v93Ø޳ƵÞG´G[¥}´ªõéVl»`âÎ -2…ÕJW\áî=Šh·‰¿˜ZdéØ˼œÜÎŽ…šåKäM‘•9â<ÔÇçíÿQÆþ2¡"Ÿ} -wTÄÂv ÖÎY%Ÿ×:Ø3Å1E°^>úÅÓãëJhœ)]·&Ñ“òö×3q嵺ʒ4u ]ή›’«j¹¦G¤æY¡9ƒ–ü.khoºòfzww÷B=*=¬ì0:'&oÁÐäÁ¦ûW‡[ÄozQ™Úç¼~ëL\EÚ³[ŠŒŽû×’Ș«ø òÅñÍÓ§²ÇÅÛï^0ý…”‡ù\j!"Íác_NRq"LÁ›mAucxhÔ€ßlS ƒ¨t³*Láô v Ï€ÿÆyƒ²åÁ<ªÃUé•©bÙ’vk¶€_€1[ËÁ´Às~»b?y³ÇcÎô¨ØβGz·G…ÈÓéW'œ„çgÆ6ìïÀVø,¢åÛ Ä>b¾+ßHTª‰žÎFvØŠªSÑbÐ?!¶Ýúf°B{õ¾?|+HƒÇÈ!EÁwJO¥W{Ô²UÍaªj0\Œ&6‚ÐShÛ|`"¼Å£¦Yž„@Ü7ØS3ŠŽb%j“~@óÅcVbîâì†q!)<erLoVyXœƒ=LŒ›S‘.!}Ì 'ç$³S FÔ²4ÊZñB.õK ³Î!E ù`Ï ™ëK@øk’ó¥$ŽO4Ä’SDU— zH ÎÏ^y62ÅN¬ž¡S Kµ|„!NŸâQ`»jX:'"w‹E¶ÂÚ×Ëüc§¦u®z¬/´1 -â@hµ†ÆyЛþœ£kF±¤­UlÐ"âo¨:„û^ÑF^„ìTäF¥çÇÑÅÍH`tŸ‚ÿÚá95†ïÕyÖf !gßM±ŽX‘~Æ„$Qã÷DMàATcíú÷ßcÞ¾¿`;c²÷PÛ£CCwäf‡`d›nþ–aÕÑp7¦Ë;¡˜ê÷”7U¿L*Ú 0k¹è<Dz,hýpérîOkÒGˆ ÉÖûCv! UN¦ŒÒ'o#˜[AÃ2 nØí­T‡w6Ÿma˜ú ‰§7›Ù)nnå¦=´äóhÕÍ"§á, Η`"#EC}Ø‘Po‰¦=þ»ˆÏÐkO8XgTÒ-è‹QãéØ·¯¿Y¤FKÁ ¾Ül©Ë…5DvóSM{—WÄc«²z¶çFοœè³IÎ~/IøªàÏâµ³¥ UK†&Ó\çPôIrî×]…fÛr‰)nF„QÏÿ$\Q²ÓÑWÊlö~}ÛUp§ 921ßÑØZ½c„qï€C°-¥)—Ô:ÞAy¿yh E2×Î1&pŸðƒ¸hL–\DÇøé&к©'«Áƒ¥8%çÍí¡aATx—^%Ñé(ņzI_ˆV[£¼ÑÆL©|0·bÇò -Jº … -jûýºnOY¯×Nrz=;Øo8ÒÇ"#ŽðTjïøDgÓ\•íj -)^àŸô_- -õ9©» ÿ‡pCÍÝÉö¾¹4ê31RÂ\'ÃÇqµV£20šºûÇ#7È™h±ã±Òw -RoðÊt³ô<åGÀýP¹¾¡”|y2êc/ˆé­Š1Q> o*D/d>–õh`ŒjŽ535î'mžž›ÄTŸ4€§U>Í'³(ê„ÐS1USóÅø§&aeŒÝ3¾4í »ï•%ÛìþZ™J¹ %ó襠€Ùì柎e˜¸5 ¹=ˆQ×ÓÞ<\c{«T+]ݤ[aR6jaÔ–[˜‰cg† †7˜'î÷B–´õ^ç+*dòù‰¦×­|‡]ËÛ93äüKAú7‘mi%T#0Df—Ðh•Êßp3Oö×´Fö{÷ -ëóZ*àk ÙtϦ”ìÃì2ªqNe -ò„’nÆ—0¹ˆÝ‚ÿÔa ÍÞSî"Þûš„áÐÏøÿ æz¨È¨ qÁ?žn±xÞ;ºÂk_Y\­æñí¯²ò°´Ò­ø*ï5aèlewOlÑåkYtzßç®uûËcÞ&"eÒ£œÞ™^¨.=Mîî:”ÙJþÙ$C ˆÚ`ÕM«ðò‹pu7‰Æ9ÔϚЕཕ0Õ望D×­O¾ I”õ(åi À?þŸsPIX Œ›Px:ñ,ã“>P“u‡iрݓæ\>J/0“ *·>¸¤«¥a1ÃÃâÛ=’T6:¿²ò²ÿÈcþHè Ð -=Øé<œ'€ÿ­%¼sOߢÙáLôþïó¾íÛ ¶xkF¦!çláý'Cwñ£­ÊÛáQ™A®·g1î&-hF'܃žìíŠð§€ZÎK^óFöìÍMÍÍGÝwëÄk4X›X/uÕÊ·±°µ0ÈÌ\Ahe°~í&ì -ÿRöX}\g×®¿ Ó»0±ÊЬKú5½9ã‚ë/¥å°[žòZW½;U`‡× BQŒCÜá‘o}-l—Rç5nê¸à6äæqå%ˆâÖ-hêŸ]¿û×dáæFû£=ø¬ÃÜÇBÈ’å=ó­–‘Ô"5W/g¬\ åž´õ%ãlRnuIʉ-}-©Û+LÇì´äxÔ u|mDT–Ížf\L²³Í¦Ã¾²r½¥Éôþ÷9©@TcÖ šÝß6|?ÏS;‰Èm¯'½ËÚ¼WR@bs²q]7\Ô©D¼ýj•Ãô`;¶öñÁ3sÿÅ%% \šû°!ƒ¢híAxÌ݇¾Œ!ë:š¿÷©Äj£[«@aßN­‡x3ùÏ<@ƒðb ¦ø’J Ìa„.N0ÁO…šÉpÅÒDÄœ& -SÛÓC>›¤5i¿ó…ïÔù ®/#;(N»`¶-ŠŒ«“êeþ&j×®ªZ¦8"SË+¦ëÌûÂk5½HDA<625ÕÙŽ)¦În³W$Òàl†ÌgöÕ¡™‡±¿¨£Sã'{ê×ý®ý7¯vmO[‡Ã ÷íÐ? -"°N"/¨ïj1¹‚ z¯||•/zà+%9öÚ͈­™¢¶†ûì4¦ùìO…ì1|8s‹Ö©ßžÂxZ ±RP™sXÊš?Û°rĸšAKBäÂt@Q=:sƒ×øwñ´]š§ ÜT‚×Ѭ™xgë1³ t @C“ŽuEˆô%x&X½¯cèy-y4 "<’Ì,Æ•›A•(²ƒà> /9¯óuVSmF.45Á)­ôNpmà5ÓŸ—þL¾GfUI_Hi°ZŽ¨¥½1âýJOtãd›=P Ï9¡’¾‘øÔ¯€´C’ÚD&ièRIíD½l5®\×sI\GC¼¦Úq·¨ŒcSlgðb-2ÝšVîrsì9=5bSÆô;>R:¨1<*NÕ "ÅØå"ê6ºz]3GL’u}®ªUµ]¨è1ÆÞ$öµX-wWgüdk© C† iÐC©ð‚žž¿ö­<äZrNÕôWqS'7ÊÄþ&Rf+Úp×™h4*^Þ×L›ï= ‚Ãi4½îbéŸoè,Wш,õóR¬CŸ -LUÍhúÜòjM¢Ò1•O¹?·Æ¸êÔoçá‰v+¬ÛC –°E®µ”Ìþaõ#›·o?ø¾h»Å¢%^xšË×]ÓÙØ`§ ËL ‰NŠw–SÁén­‚Æ]y( 킲ùÕË]2¹?,¨úTm±¥¢¿3ÇuŽ ’QÝLh"o&|¤À霤èy"²œÈ(­Ù²X,öÇåm±Ësí%f9JZx‚ß+‡“_žƒÎ0â:Lö/=U©Ø¿bÌÉ•%Ð(Üðø••À•›A•(²ƒà> /9¯óuVSmF.1¯ROŽ$«ÜmóVÁÝ„MœeÃ¥°Ù+‡rªSF×Ý‘°KÉ‚ [ŸOcêù L;ÎUkjoRLÚ>"–^/¥ªæÝ¢üêü´¶5̈ØïÀ„ÈÞ£(ë`飸ƒåÑÄå‚‘f¸Û»ÙHF)QW¼ò\×O‘É#œôÁlR3R)¢¢ \GURûÅĨÿ® kÔú"‡h<Ó›§\(¬0·@ý†«ÍYMå/þœ$÷ÌOù>î“Ofs¿Å»›£9 æþ=²ãð[Â.€/ÍÄ Bˆ‹üÇÕÍc§Rø—œz\¥Õ/¡´Œñ@¹4ëXX Qª(¶kÌüxUFr´ÏTô·¼ðßMU5cêÒ¥Û—Š9\VÚK™”·L?À_覅¹‘ùÏÖ…†³|$¿´+·ÝÖ-€—ôÂè ×þ \ÐÐa+jåÖªê–iq›®4N_ ùÛ)GbSz„ÞÊëÔâ»é„±é0?BŠhÖ¡•’ˆÿ´JÏTnXÚË»·òVDSKÂþq²`Fyâshda-„çä´Ñ˜—<¯ömªaJö›7ª,xC§dÇs/Gª/MÖe‡†}ÓÔŸ_1° JØêîWaµ3è°WÃ,dáÏ­œ$ki ÀÕ¼z-gÊfµL}Ër†-‡®‡ù$›/Ï“.ß݆´UôÖ{“ëdX+}{ŽDì–Ê(ˆ´yâ^X[þš‘ù>íÒ¥€§¤4ÌG*Ù0÷÷$£ÄÛ{¾ž>oé¯gv)ÚlEƒ£#»~»Áõë¸%UŠô»oódí -ÿ3û†3AÑ'Ψ -³Ùo`öív‹Ø|» (Ïyí=U¦½%Œ R|5ò;/°d–êF, 1Õ©  5%9h¢ß±@`Û½×E¼96Æ«¾Ú–&MwA{ s™°$ÐÔœ;V‘Á¬'žë¤([¦ «9yø$òð -X«Ý jH­ -é»A^N8Uò##ü !^ÃM ÚkÝS&þfìÌÌ"ï)hÍñÊS8àq&. Kd:6¤BŒ£0ÕlþÂh´UÊ©½ -*2† Âýú«ÓpÕ8K4ÖŒ´á%hë -¦K\Ÿzñ ¹cŽÉæ_uÄýy/&…ó(((é1xa8CR~…Ÿ!–B–k¨®©òçñ«m5?S¹ø«{†8DDz£”üÿ -K K»ÁØõm\A<ÓaþŒ€Qc¦•}æªJ÷úicçzÉ¡šÖ*Èc“YTIõÝcxÅASÈÕlæGŽ›ã2bf²Õ=ŒD¿Dd+á¨×õwaäPÆ^ÎG5RüÚHOõ7 Tº_Nʃy÷÷¿ÙÍI~fËãr‹iº9Ö¥•Ý`6à¿^ŠÎ<’…™aUry›et'ÛuÿŽ}ßnž?G*{ž0(ÄðÅaŽcµ `û a<„8é¯_ñÁ¼ŸÁuB`ÿÀ­DQ“¿n_k1l~AHô?h´3ç6Òá\¾8³~ˆáƒ€•èˆ@÷é¿™~Šff‘œPú1ˆ…È"Ù0«½Ü,õ:Á‰Ê6oºŸè‚1Y”çpO%e1åÈ,®Ê…­v8óQ/BžŒì"ʼÍþx•¡±£œñêËÜŠ‡ì”ÛK»´ÞkL:îA@I#ˆg-¸9¬”%&h® O#2š–Ž8cÞeıï8{Xé(¯ ²W¤ -Â)³?,-"ZH—ï|c¿\jöÀL7/Wq™Uý¢-é`„×W÷ tË„‘.@j,š¿ó†à=œ›£ñ¨ÓáÊ!VöX§ÿ_‹ò`G Ylx2œµ -ÊârÐbÞÑüERÀ·îé¿+FžÏ—e¥ÙØï«PÂh••>I<ÕãQ›¥FA½Xðì8Ÿ¬­£¡r:\$’ºöí÷º 9: ºÂx‹6Z¤ÛnE¯B#‰ÎÏU2»×%»’{“j‰ è»åH¨É-mR»½WÝ¿t ?:²nEl³¨ -JÃø‘PY¼UßææG…$ÕŸTž -]E 5¨¥¬â‰Ï-n—”MµÂ™‘Ö÷ȘœQ- fÖÛ¼$ÕσNE¹D²*Ú °øV«QÌßÔT}¸Á¢ì}äW3Çë¨6¥‹J:©³?^¹·Ž™o¦hIwrC°Úð,ú¶ëÒ4±³’ž¡ZO¸Ñ)ÚæxMˆ9€Ä–$…ßèŒ ]FÂS%*÷€\¯ëßÿxëÙ@ñ³ÇÇ‚!°Îà`5@jlo*x¡f«¼.sEPo¿B8’p¬‰2K 8ü¢å²˜\û´ŽãÅ8¯0ú>Xe/¨‚z¾"›©”ûJ…ã€W¸G’¿Ì[ˆÒW‘0¡2äN甥ª§îòÒËÿ§}ˆ‚r6f`Áœ¨ºìo !¬wQ®qÇkw–¶µO'þ±Ùý$ï-„‹-Ÿ6€$ýƒvr¥Úöò×Ùö€yþ¶ÃTËex$dÒ¾BÀØêû舿±‰È®Xæf¹¬Íú"E6LÊd? §ÐÀ;üMItfÇ𑢇ûŒ0†^§I ú;L} ‡”àxÿ¤ŸdLÈÝ›f⤤-å¤×åRPÅ*³…ê™è@`ëJºòç! §dÛpÀ¶©(U>ÑÐrÄã¶O÷^wáåÕ–í€Hu½;e†ãÄJÐ^çÐÛ¥¾¦ßx–bÃÈÉ^2†!A:g® ñ7÷»ÁŶ‚>/BW›=OŒb¸‘ÄÆÿrø;)fÑ•P<1ßuWœÒLËZ|ég/4[œ,'C‹í£ßRš™^,â‡.“®Üâ–â>îAùñ­÷øÌS²úKÔ)+Ý40:Æ üÖ‘˜‘¤4 ªÎ†{áô“ÍWŸ1'ÑØÌøÛ•óŒ]µ}æUz™µÆzÜ>|Æ÷ÅÄT³¨¹Yfä÷ž*ÍÇpZ÷“U¤N§…âsíRl$…Å7xt  ìãpƒËSgÙüQ§~'EÛ‹¢+yÒá1]qo–¸PÖÿaOjžQÌŠ†£P‡Ì&\'¿òk>„J–AëóKI»brñýX=9ÛÐÅΤÏÞ^osì³çÞíîÔ¡;ɬ†x‡OÃHk^ÇÒx ÕÚ»{ûã2àÑùñä \d]DÀÙ½¹9$2êõ/-PKíBG+tèöáµAäHèðg¾:¿œß¦ëÞûʤ~|Òn)RE#³nZ‹bùAKBÚà‡{amjrØ×8g»>B·»ÉD¥üs[M`<ïëù“¶{ç€nˆº¸4oC®áѧBÔžý³®Öì"J¢Ê@!‚°› º›@ ³Ýj_éÊ£·ûõ‘š(“ºÓ›™þÇý²Oýrn­C®¥w\E®j/ž—¿„tp·¬èÞSvO‹¿ÿXúÏÕ‹'ëÅÊ éBsÏj û:<„³Ã^‰@XLxJöò#õÎ¥±°ûl…°]ëàPȶŸÑñ%ôN/îäAü°Àá¤æÖÑi%³Š§jËeWñŽVf§¹†{úY6¢«|ºB,áî›ÎÒùí¸¢a‡öwÃùüî8‘ 媰¬ÿ\Êÿt¯•“ý„ý“YÃ÷W<ñ–¿âß(WitOÓÌÚFÉî«®%T £f±fô›ÿ²#€p9Pä3( :'Zp¤\"Úý±aÊÿÊ’8EÄ¢ZtZ¾•0(>kÇ*ëîƒÏõ8½-¶•Â7°Ïï0#ìÊßÀí ˜ö dŸ‚Ô -'æW'@Ü;]¥sTk—þö@‘4*Y‚“kTã(ëðÌמc -{¹NÔÝ0z—ßÄÂ:ÁÏîÐlÞ‘Üü¦Ú¿4¬‘&ô‚Ûô?(ÓL~,¢ó‹gô ÷ÀIõp´eʾþÕÊ"¯5ý¡ìÔµÁXÆlÜåèqÔ4v€ïŠÝÛBRRÀRiŠf¡«E‰è°× 4èa ¡¹}“µG$m¼»4-¬©/x»8Qeê ñ4K®ƒñºJçp« _é“Ô#'-ejŒKZ %_ ñþw*C¾$Ð*ÿV±ìc#è|<‚̽¸¦7n_³é„ÛûŒq³Õ*Ó¼ê?†ü%×… A øú -V>/^ßù² -õ7Å8KÛy£¦#^i7¢Óbµ^r¿i<‚.È&Cºx5÷KJ#ÍÖxäñŸöEWÛBB~(ÊaCö;˜AÑ¡8}®NyèñG½Ûƈ^ûúsC™ -ÀªÀtÖ1nVx2xÆìµ8±¿fãÂæ;4¬%Ÿ„¬çÖJÐ 'R«+|¥Þb !àÏÞ¯žÒ EÝzlk=ÐØP !2êùƒìtnœÖ›Žê4õD‚ñ¡™“¼[˜{”· -–H›x¨!L£T1TŸ¶¤íBt™–׻Ǣó /î$ÜZÖ•;øà.d^»Pï[Ž{é×~ÌfÔr ÛíÀà…{}›´Äñ{yýÈ?e°æ¿zbûl/r§ëµæ[:¯Ø{é#ÿ‰Ó$TÖoµ.ƒ(¨¦Y˜hVá—tI}ÚøXH H¸}þôî«Bªpƒrà@$Ÿ÷öý)p•,EQýKGnÏÚLð’ UhRj³×»1$«…F+sRcÊbåÄæüá^¼ÛmLØÑø‹º¡§–ñ£#GÀ©¶6• ¿Â=¢ö‹I“†KÑÿ}Â+5ÈÕ±Ìý‘^ ›Ã_Êio:O3M&ªæ¶ÂQsþ Ö•Evµ&5ÐbÃK…"›>Z^F…±¼E¨Aë;’æË«Žv¤MÝ°õà^hÿø•C3n"ÕPóZAÄjÆÉ}  -Ï ¨!G"2û×› -^8[¼9°£=E„§ ï„òD³äþj - äÝw'€1Aœòµ”"Ü´"×sKç’õX?ÒÇéÅ4´KbØù{:½ÛºbѦºöÍGÕ¶£éF‰SO„u)=|r2Üö%ÏÙE(—x$Œ #ׂ æXØÕ ØҨâ4s•P‡“¹ ÆàÓF…=§0Uú«-­ÙÞkµ‘ FæÒFÖâ|Ä'´ÚþÇÇŒ‹«Œ+È@óïBtQò% -Yya¶ch5#ßd¦ï—ªˆ¡¯3&wSyÓ¸æ”ܲÊÛ^G´”V^È%T3ÂñÉU(ëN/ÀˆÍ'Xn5Pñ3FR@‚âoúY¯4ƒH9Åõy[ þ<¸RºŒ¬9^LfC)†+ælXRÈ8¼;ÛMfž…|r€`^Û) Û´q¹oÔÛ,Ç°$ظÉ;xRà† + -8DÅÉl?½ýG0ÕXQЄJCç°Ÿ]‘-–Vœ.EÏôe¯/Ý먢D죌}ðDŸY¹©(N„ ÓÈ ýH˜ÿî•^|Š’}”~çÝÊv7œi©‘qš]¬œÐ°î}åõr+×ß,ºQÿ`q­©jÂ( ›´é‘;ÅiÑf —祫Ô'>ÿ©i–jxŸ¢ó}qìß¼±|‰ q#+JåyWm9È=]4BpÆ©D Õ¶›þ -ž@i`þRø¢›@;Om·8?4ÒØ+f'GEEo @¼¾«Àø„AÖ"/‚˜â~Xl¿-–~F‹.Žv4ÒË8—¤æÓ ”FúÀ/Ôèó0 -ŠêÅ÷³#ÓÚßBÔ1$O -uŸiÖ÷ÑNü<tS%ÿ†>Äö)êjl¶mDdSÞ|fÕÓGz•ÂI€>cÝœ—«ÔKn7csaHñ€sý-®ð¿å!F§ø"{-Ó¥A8ûþwvOðó.@“©‰Ÿˆ\ÿü'»"Ô,œÉÃ5ý÷"ÔÉš²å¯·IøþÊXÖãš~Ί>¾~d_ÆÆÿ¶ú6(±ëžªQ¸aîÉHXL‰@z}*…Ž ™7€ç%ÓÛ Iø<¯é3ssoøc("a¨`g­~vÁ/ÿ à#ÄšÝ;¹]cö#õo ò™6B'A5Õ ²XS«%ü¦»†p–„êgY ÁÃÌ#áý„œ ~ç¾ÿâè`c¼±øyZˆ­o¼.p•håVËMˆ›•.p™´Ñ·p©P£oYrõ~9.ùqkïùî¸ò™ìÏØ1Ï|UL6_ç‡jaî’6]JÜ–f~(– ÇU;RŸÛù×Ù†5Ck8žða@jÛæ_—ˆV;lÓÙù¬ÐY˜3 EE‡÷†Ž‡5#4kÕ©‘Ð ®âò¨.-EÔ[•<­ÿ6¥‹·`æ۴KõKk‚1P'uíšËÙ©ñp¾E+uA«£€,¬:ÿ ˆeÎ$ž/ÕØ~Móˆ)–”ÂaDÇM¬oºÔŸ5vMæü âQ×ü”9öö$~ÿx º>Q˜Ó|ê?€r™‹´é*ç,fˆ%€juØ_ÞÿÌ°B«ÛÆ+® #ÔÍ6ŒÌ¯Ä&v¤|*PRBjÝ)ùÁ.ËtD@|­3 ï´ÒÝtâû.[†ø‘`ËDŠdq†­íë!”Áa^AÆ•/Šß<`^ HD=h°¢_‰6—€ ¤}&Œ0æ™UÙõ°Ãç‘R€iÒáÇÄ<¹Þt!’%›ú˜\„Ι ~e‚òd½¾Þø%ÁCÞÛÀT¶»úÐþwfí½|àjdÅT[×úåÔ¨–z2œüOÝ«tÐÌ%ÀìÞ¥ëÉÞ†k_þ륪wÁ‘qµ¹Ü÷šÂ "¡;¨2cWŽǵžkÛƒÖ°½_d$#•æÈ·ÐÌœ§pgÄ°n"Wöë€1AŒƒà¨ª ö;qfp×\}l#‹ jh¹f°˜“UuŸ˜Kï‰sU¿öâè·û¡öϘÏÆÅ4òJ±…‘o±ÆY KƒP|5.Mƒ¡kò¤ØÏ4=Šs¿+ ;©Š•çÑM£›5\÷ÏH -ßž‹¾£ìú>Ôl-º\±×N -ïÁê&BdúL5?;û|Wà£ÞÍB0,ÆTw”=”LVrû½Ùlˆy“¥y×Ê«QMÜfÆ–m”?Ĥ‰Ã\Q‹å‘-¸“}D—ü&+m+&o·4[ Ý.Ó~ÏóØÅœ ­Ú+èÆ,Zbü%í×ί.Æv¿Y·ÝTbº0Ùp>!rü †`Lˆ;Í­Ûnõ$'àµ9ýÌMtTšRókÝúðgTŸ,–Ä3¡öo“*šPÒ…zŠÕÎÏ(Ôôïwòx?¾ä 3:ÐÓ‰{ƒ®€@‘\a;žl >/«4!½àqªr2ÐR“„ë¿°€²á0’™xVsXŒ¾„0£©0è8rØ¿¬ ‘büüXÞÁa‹vMêAØ‘H˜@'û»ÝˆBûú Úüq9û¨.@BßcCCä¦fÇ¢~j¾Þv´ƒuKT<¥9… ª¡ù7ÆË…ª”8€Tå{®fÎDq#ß\CIV¼{¤Y9P³¡;ÑD½úª¾>?š+5T ´£~xü7y>(œ[svÙšcŠÀÜGâ‹ÿE^U÷Q„·9ä?ôVµÄ6ö¨$ªú9ÆáS ·F`ýOà­ó/ZÍG‚¦`0×)ÄÜòéàí*Š$£,­Ð &‚àrÇܾ½JWõLM]È“É"Iúi=ÉvëÃŒŒFê¤"$,hÈÚ‡îr•÷:¢¥§g%Ó«…MÝ}Áÿü L©]ugª(ƒS’ƒdMîDèS+,Ô%“ŸÖåŇØduKwM¹ÍÂÛÞ¯1ÙýÆ°lk+õÂغy¸YÅÍQóŸbh/Èf3X¨²ƒ(yîë¦059[piY1Übb¸zn¦iÊ|ÉÀÛßÚõãüú’ùf¥’#3Ñݳô*½5ð€Ì¹wí]7¹"QXXÖ—¤HDòÃÑèM;T(©U‚4Åi`DAiܬ` *Txh®)TÂ…ÙT¾¹Yá`¶í™éê292<½¬¨z^>g\ʱ'™÷l2 • ù£ôS_0“ûÖŽG´L Úxò'ûè 83ÞìxH×À»´zÇüɇ/—ÐãéÔfÌ´îÃád)×C^Ú×æßÊ,Í¡5±OOÐXqÄøÓ× `oËŠ„‚WÉsÇð* Z6!ígˆn 77§Ìب'ˆ¤Ê«4a%ÿ€^ÓŒvõ´ÂÜ­¶âÀÝeD¡:(3cú»q®´¢ŸUòa¡à¼Ž%|§Íô|á$‰éÇ á¾mQÔe™ØÂÝþ”¢_ÂؘßXØÄPVÃ$º¢Ç‘œ~f)écð¸T­æõÅÀñ±îÓÅ®N¶ß¥¢ñ÷üL|Ã2©Sñ!ÄåÔˆÐEïgôä‹þ©ñ¬©>L¤èÚ´8ýÌgx–ðß6¢—“nº€¿[*½56¢E -µw‹òhú+C/)µ"ýBZŸ`ä6ü3JGZÉF¢fxíÞà­Ê–cßçŒà[ü<„ÿúP\0MQNTs¤™ä…«®°ñª2—Hë’’XAj4ÑòOA,q)eÍ-ÏŒ[5/ÔN€õ°²^|·Ðˆ¬Køc#œ’ù´€´´J'ç(&xHnP ·˜HyˆvGy~.6ø[—ûHš]Ze¿ò]Y*Û¿mÑ(造bX Ÿ¡È:¼C|­p±{šþ. )åña¨Ý¹KK]z¹NL?&@Hów¡øFð‹ØS= J¡ªØvÕÚúÒxq œH`þr XÕ#?FäÓØ0éʃº¾’Ÿ,ÙKÑ(-ÑIõ¡!–\ü{,¶­#°qŠîY¤íHm[[ó“!ÍÆZâ«ßàB!û€×õ¨À†s3ülP!è= N•®»½Å2f!‚¯zËàðø9œÂàû͉vÏ«kŠÈ”ÓÞZDy•(F°­ž…´<Ú‰`0š†ÿt ŠÑRá#Ѓ È ”¯UõñÏô -)Ì\ÜQþùÖý£ÕéÎs0`é©Ýü¾«W‚õkæ? …%‚½±ëiqòëÌ S‹ŸGGæö‡v;ñˆ¡;~) ¿2m#ýËõ_X©±½£ð2ß¹HÐw¬I\]…õT;½KzC‰¿T0‹=ÉÑ8Ù»s„GÂôFœ¸ÑE=˜n$…˜*qÕÖiïNyNöÖ2 ¤ \ý»V€NûdïX3è¡y40rFð¤¿.êTÁêz".NtÄñé –ÕGmæ¾ü@(õ~2¯>~eªÂ‰zéñ™»Î -77mÓ„ïúøx¹$ål§ B[0%$í*ߺä£o’~8Í'w|BùqZv“îKF<¦cµ²¡ì¶&/ÚãW?g¥b6x3g?ñ4CFBˆ»Jb.½êÿþ¸ÅW÷^Ïç#‹Þh*ßzñKÒúbX”ŸeŒ½DG'ð*£ÌGô¹fõƒ[~ߺè·@ej ²<\1Î&ØóNŒ„øÏÉ"ªco8¯°G2:¬zÔé!~¯‘,†Ëlջ߶œ£¥nóŸü×በoeh=þi?ÌàC§<ÎÔ15ª i,>¤wŸk IF)ƒÂÚp[µŸ¥€uS»Öéͬ(&ZÂòîJ=÷re-½ú´3¡û«Žæè¡°©‹ˆ_ïÆ*“%Ô[Gýö²½CV‘OªŸ=.Åq˜x‹¹#ŸÁÔØ%KIU1®ˆ„ ªtN£u5ù?•à%‘¥09>ùýæ1Px9 Cµm°´o¶1y«ñÙžºÔøûÓhQè2»›qEêgŽ®t5Ç‚<¬EQ;*™³–´ŠýJP§øîÏqëÝi0:·É^O8x–ÊâÓ,;g§ÓBEƒ°‚î튰yÀÍ=îwóSŠ»ñ<ß)~½)Ãݵ˜YV7iuñØn&nºª¯Pó22s`Çy¾N$¸çe¯aºÕiåÔ³DåÒ -¡úG2‡Qu2Ã8Þÿñʈ=È°®Â=w„1aˆN+øð&abñÙª;|¥ß^Ò·y5â¥s<Û4¡!žk ²çC‚¥-’<¹\ë¶x'½”±³Ãó«éÜ­ -RšXE`°6  -Ò–£ø#{“FXªg;’<pÀ´Zƒƒn}ƒñœÍ­ÁÅ_¾^XNRÙ#û©|âÔ­B&Û©UÊÛé]¿‘>÷e8Ê÷o‡ùà³Oaj×dîŒqÚâ[Ëè Bâô "\ƒ Ž”κ[/¥)ôoþUÎÈôpPú¾9Žý Äõ$Ù¸Ië€b}cœÒ¯˜OiÆ$odp¨µNäl—S=á1 jŸCÊP3<§éfØ d‚ß+ -A{ÛT=}©˜¯­…OTJéÜ0¬*kùÛq§@½ýH2Ký eñÙƒ\Ô1ó„šr–à³F¬±–„íÞv†kv™4@1WÛsæ8›tqüf½ýxæ,œfZ}e—Nƒ4<£»Ä -iw3–>ÁAäœê#1“v3†ƒ=·Î¤0'=/Þ\É¥ÝVY¯\ŸFk[‚)6Œê=MÊ -3ýµìïæSù%f$¤Rû¶˜èÂ6K`Ð Ó%äÂEû(‚ô¼„(bsÌP’ù,‰‚…³âW‹K¼T"0KDǯæ¯Ò–Š›¤‹kIU–ܨf/+WN/ƒÐr’±Ú4÷¨½qðÕW@À¹d³­ÌO ŽÅá¦G|Babhyè52+ÙÌ2›¿up·a²,-ôIÅ"‰³ðü±ŸMC㉮à0×’v\’›ÝàäG’‰\¯% ØŠZ\+;í7t›‹ÊaßmŒJsX÷€Œ´Pcû0ÛNqËL¬ÌÙÄì%®‚tãW‡tåį,ëœ×Çñ ‹);âbÈë»õõ&L¸î}NœÖ²òGÒi$ß²:[´<+s\6qõG•úq° Ô±%E~@‹kÖ´ðøÉÖÎþ„÷[iYKÆq[Ž‡× Pvø£brÒÔ~ÍÇã™Æà1zŽ¼6‚ð>)廄¾\û¯o¶xob÷Bi€n\!¸[ï(;¼"0¸¾ª:È÷7w…Ð yqMom¥D‰$cºqÎKRXr šÿÁc¶À3–m¢½ƒ‘œx]Ï€¦òï†â‚F†Ð…»í4_~nµ} VìF¤çuM;¹²[¹©)(6!^c«0Ü?;´´ïÜmÖXþ¯æBö󈊄±èÐ<ür#£ƒæ5ªö\ÇÖýAµÎçþÝzñ­‰¢ÄÝ!»±C`0î~°îȾÆUt[¡ijÛÏÖAsÞÅТ3X¥ñº´‘ûh‹ ŸQ‹;l:²´†hAßyÑPñw¢Š_R˜4žEwv½a¿XåäI› Íf£ö”JÀ{‰ï“ùþc +©šû“ÓTƒXЂ¯?6ß_×ãe—–?[=‰Ük³§ºDÅC³ÌàDר-'íÜþ¶Þ¥²_:mȹw‡à¬i)EÝ +É!Ã.¬â(’4G¶Å×gÿÐMwùÀÜòlö¤Ÿ—t@ +ïÊÝ×a{ŠVÇÝñÕ <{Á xúœÊÐlU¨ÄÞ Úq’…IGS2½º£Fx(–È$¬°§Óÿ»³MqmË‚Œ÷°ŠHTÆw‘…ß›wC9Š¢»U¹IK}œ]ô8Ð ]ßN„¯ù,Õ¾¿Á_3­Ò£D4?)Pyn‰³5^×òÙⲬk¤©1Q!Û3½‡Q5Žüç>J!‘ž¬PùòÜÙ>|J]-êüP’ÐïT'ü»Ì&Q‘ÝlÌ ~ãøÑR($k$:áåzïšt~Ç>fÊó*ÛѶg'g?Rñ É wåܲæh»fLŽ¹ÿ]Á*ÇRyÈiuK&äáõõÝŠNÇ&O®´Ï`šÇ²æ\}×°K¹´ u]“8oŸGÅ53Ta™ÙîÉg ²@ÿ6ï¶Ú£¦¡M¡&Ž‚ènQI¥Npãìù¶|ÏÜÝQ¸Ì¢ìÍuOVfhj³?ÈÈ`îÞN;•Mþ³äà?~ÍùÚ;Çž²}58Q8¤ß4r-uœ¿u>äÓD}¾|z®·ðœ³ˆ¿cW#6/ü#ñÄD{(шPíôv8ܽðš/¢¹¤Ü>*£O$jëFã¸çB×b¸¤FFËÐ!ñ÷§ÚžóROìèg†/k“³ÌOœÔMâU]ôÔ„,'C8—N„ç$¥…°Õ ‹£—4Ô7›YÕì»9ˆºØ!ñêˆ:y`e“(2³ñ¿= ªjñ±D´0ÖÅè.ÑrPÑXÁ‡ØJ}ySnõ ø9%m¨Ô#,úwžM=°¸£)1ŒdÒHÕV,0åBÁ £ˆa²„÷ž±8\‡QòóÈ›ÁŸä°xï+îÂåJó…9=Ù(ÓjàKqp%ÛÇ07Løœ¬fUôàoÌÎÃôÚÚ –– d}p5¼ ££Ýj›‚^±ÒN^÷LÝTÕ3+£g~áûœ¹í«ïwð:µAn¾U*úÙå‹÷ \AE£é†=¤ø@ :‹žì,ݤîkÛ6ÆTÛgp‚Ɉ#7P6Ëd”¯g‰©µ«^ÏÜ£d^—N^#höWy¹ Ø÷ðUI•O)™C#§”““ظ9¸|¢ž”¶Tm§À„Ò"[~±X’´تWêáªgb8ærÉñœ"”z-¢¼W_/®ÀJ)Yã]þõ¨ôæ‚šeð.¿Õ(ìL´Ÿœs/„O®¯X‡äŸo«ºa|±·JØoå$Rù›*2âŠDRQ£Ó4ÁT¿ZÊéº%¦^„“qú»O5è5>°’ét&ö&-x»¢‘ô bKA8|éX W/­ ¶“°¤Û]ܤS8^Âÿ4xd)JÓ=´··‰,»+»+†A-Ho&µ7f-SKãÑæâV›½`¼-ù”hÃP³Jç×Ú‹ ¾öU%qê<< k°&Cõo¶~]^oè‰þÉiWµ3YuXõÖÐN7YJž7g÷@âÆĹ„Ï«’À)òbì ½Ü žÎ½G¨D kE÷ ý°34ÄÐ!ô¢éœ£m4M{ø²Ññ…þ²xm0ž^„G¹1@rP_Vœà]b+g¨„ú­lÁƒ*´°ÉùP´ zShŠL{%KžÖŠ„©–_“*©só´¼+‚ÕC»˜}¹Ö¡‚¡RÛ>O«òÂxdKV5ƒÁ—°Xññ^ðÒæsø™p–_®ˆ +¢½›ß½€eдË*›¹¡Å×KÀËHªX3.Óg 2L9tžèbMµ$ÿx*Ý™4$R=å Þ+JUùCwŠe–ä¡ž±…›-%þe)ê³Óƒ¼Ö\™MS{Æ•Këž³.œ +endstream +endobj +2267 0 obj +<< +/Length1 2495 +/Length2 16116 /Length3 0 -/Length 30297 ->> -stream -%!PS-AdobeFont-1.0: LMMono9-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 +/Length 18611 +>> +stream +%!PS-AdobeFont-1.0: CMTT9 003.002 +%%Title: CMTT9 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT9. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMMono9-Regular known{/LMMono9-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup +/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /FYMOSO+CMTT9 def +/FontBBox {-6 -233 542 698 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono9-Regular)readonly def -/FamilyName(LMMono9)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def +/FullName (CMTT9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -150 def -/UnderlineThickness 67 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /HBOWRG+LMMono9-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put @@ -33869,7 +33692,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 39 /quotesingle put +dup 13 /quotesingle put dup 114 /r put dup 115 /s put dup 59 /semicolon put @@ -33886,282 +33709,177 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def +currentdict end +currentfile eexec +ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå» +ØÐÆϤëA³Å -T@æ|ýq|Vk¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6K üªÒ-UŒ\§Ô%¡bÕ"t-*ðxÔõöÓŸÏÿJ‘+ +}ì3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¦Œß=מ0).ØnÁ¢ðBd^ö/¥!2-G×+~ò¦bÑ7³ Nø&lƒþdsõ˜á%o5·ð3N¸ûÍÐP±c9îU,”Y뱂0L²¿öç±Ê+OAÁd<¹Pgqíê‚!i\žhßx¤;B+üµX¹&ÜŸ)o²™ +û­¾aIñ`¥¦Aï.ËÁ…o_Å Ò‚«d™]Ùì©@s—p!ÃÛ×—;¿ù¿+üàî c¨M›)U *m¥žÁÒ‘¢4+o$¢U´ƒEc”E*­ü_G +‘õÊd.¬»U£Ó9ÏøöÚ¥#˜]æ8! —S}/a—§»¤«é"ÈöÒ48EV< >™N;œ¶ÓžÜåö½[9Ë“!¥"¤k_‹Ó†$RÑÓbÕ˜ÑgÅó ÉuŽx¨ÓVMhìÔL$3P˜ÛíÒÙy»5œ¬,¿o"Ð7'ˆçº*íE¤„<±ZÿÓé§c»ñªÍb8r$`FÀäÞ§/±úröôí¼…ÝøÂ]€“:BõóåI\$~—=Ô‘¢´ê€Ïˆƒ·¢Ž˜ÙËøȜȿ!äê–²Á±QÀ´S*_LÎyäXÊg*½!#B;Fdyú9 vF.ºxÂ&WÜ€ÏçÒc‰K[Òé¾­újô­ +ƒÜñ ²ßTœ-hj¸˜ÔÀ’:Ö²êÌbcÅÓ¢xù~Ðgk0š^£Z–]Ψ´&Œ33gŒñ3æêwm2÷ÀŽpBŒœIÌ€‰:~q¬Fà邉u<Ý^ðIE=Ï*ÑJÐ.­Zw†Òcî3Ö8ìY±Ö.1jKAs;¹¥ðÄ»Ž÷`ÎR^ÔyCQ4y»ˆŽÞÈå ¶Ç&{uðQgF +Ð¥vl²P¡ï¸©°¢ÌÁÀ +ÊeçÄ=Gylw +x]v¤ºŠ£&ú¿o9f·ÚiQ¼p´ÂÅÞÑymQÔrijËFÛ\ÍÀUBuª :sé燭™„Çy7ë䢼R'åT½‰»…ÐÐ{crœ/ðbìŠzfuÌyõ¸ÞÆ-_KýhÚ~ž sö‘£¬¸Ó­>a(—z•–‹fz!#ý¦…vÝZu¼ßZæ"VÃUEÉŸúw­øý-ô@»ã é¶Ùi äûaI+˜ RêÌ¿±P–ÿ¦¾;X¼C 6e½ë›À+îj‰e×Ê[µÀ7ñö-^j’¢â[ïÚ +g‰Ž°9‹‰3­ ØÃ…ÆD©Á’ùˆ‰ c% ±¸Ø™Ûy¯JC=©zê”íÒ[t v™™”Ê©>‚VæÅ3¨m™ÿ®9Á‚ð=Wp¦ˆ+ãlÖÁnׇ3g ¨#7Æ:ÊQÁ@µP~Ò-ìu@Ó±DïV\sS©’;þx; +ƒJ®¬Ï ®'p—ò +ºy?Ìþ^CÉõòùI ¶$HGY tÓ` „é\ÛLœj%ýf¬œÎxÇéìS›ÚŒrìÝܾ¨0þ;=žl;°äÀ MÑI>o Céµ" + mÆÞ³»ôªI•^:ÊO|¿u.^âÑNçuóœwb`ìÑ9º5>²¤øÞdJJ… °Äð0íôóX¦ðÉpöŸ[ÎtóÝàÉuè^%ئò`'õ +0T¡ I{ …6j=¡úÌwŠØ ɽ¥¿Ú‰»ËÅ7†øȘý¾ÏÛìÅùÚ:{ú¦©õŸº‡?lH´¼™)ò—ç8O®f¤¢mXn,Š³˜Ëß— Pš½iiþØÉ]X&•íBûx{˜5ǬfE¾ˆÞ®¾DtàçzÖ9nËy¡B…ÅÄ ›ãt+ ä4ŒˆþÊ, p×$¢@x&ý|ïĨ4H~4îŒJ7¨B‚àš<¢›Ð«C±ÉPæÐœÁ}uzèÂ|÷gÃr-š: èuäó¡ôà[ÃDè\; } ±bUûIS{™É27Ú=ñ©Òì FB›k„Þ' +¦ç€ ‡.~"ÄÈôätŸíOz-3RûŠæÙ·ZÍ[——‘“&ÒãÉhDþ÷|°AQßGCH :\'Š¸`aуã2¹ö{=o >uÐ&Ž0ý¹ß»”;e†®01]VÎÅ2c¨ø¤œŽ³`š †“CÄJ1/ŸÑL¯Wþ ˜Yckɲ¤¤‰Ð õÃ}c§8ÚLC|¨±Ågƒ%¼Y«9.Œ‘òµ?›óš»e‰²Ð+€‚ÕÃPÒöïI4,}# yE؇™ö]%TÌ>ÌýƒðÚ},ÁS ¤!*Á.ó¤ “˜v˜tåÐ7†÷ó[O·£Â±Rø«Y¶‡†Éìõ–SœSÔª5Õžl+>ÍŽ¼±¸l6¯åU®Yºï©'­¨ù_¢p%ï=°ü]^:k2 Åb¿3Ò²vu\þƒ—k!š†®çnúõ2Ì‹ƒ@Q‘*vÑ}Ô5z3màØšò/Æõ¨¯³¬Ÿ´_‰ó~¿éÐGfðG쪑“4”‚,¥­‹ê=¦5ûø%¡Ú¹]äEHŠfnÉÛ€x‹ÆR´òúŸL/'¹ 7.œ·ãñe÷Ͻ§„¯‡‡aÒG}å…èÂr²¡ +~÷) «]<$•ð¯2uµ¤<ýv<ò×NP|¢AÈüGk¤Ì .PY­ÆÑÓO;¨»½BRœ)­©o¬éVê°ÃðSþæ<Ä‚˜;aÅQ1Œuz0ˆKÄ%RÉvng;‘{®võk«ÅîÐä~؉nË^…‰À8@Þ»ªYö·Õ¸(Ø®xðÙ•(tÇ&XYò-»­7*«ò0ïx“)ÌEîtC¿w;ga"15Ä][f³l. àèZæ¤ÌIbŽgÕswàT&«©¦Z̸ý)D…H­†tªe ¶Ì6¢¸ ~Â5÷׶?œØ® ´ÏÇûáÁÂßkˆä…r.)¶•l´ö¡•Èx_²?ˆQ­WÑ32…š(l¨ãë ŠæÑ|O×b-F–çÑ].–®RPD”<Ô±ãDûOàD¸›]D®ÂL=/å™È¢ÀõÁKîÇõ­°¤`ÖàÉFƒgQ_ÊI +ânûqP¯»º·«_(˜gØGK&mĺt¸zÂéü­_ªo ×`4§z4¤-71kïds•w¨\x ZŸ’8´ éy\™šR¶¢ßÒìðÏlÌ@Ô€Û›…óÜæµ´$¨¯ðÍ#‹ÉÂa'·{Ô‚i³~KljÑåVBîñî“zU´/X1 S¡äq=¸þh&7uó«GôV¨èA_ÔÁ3ÄMüùâá~Â^…›tæ0‡²G&<ÇÈûÔו}Òðøh޵Ëäú0„ɤcÙÒ°ë•>„¶ô‘o6ˆ½)ß{QB”¬X[#ÞCÄI3jƒþeó’ˆ/N€ŸºUX+¤ëÖ`‡è‘"ŠP[\ûàƒºäAXºa|i¤–” Hn­k¹,· Ó? ‘J_y3^ÂcÍø}|at½ ü<â;1v’@¡Þ{EÒ¬«ÈË š¢Á/šEì7+?`µÔ+7ÂTԘɈ/¢Ÿ~£2’¢Fe匊·I›ó5)S®XÙvNŠ´eƒœ“…È BÒ®¿my‰Ä_1Ö4tüÅñí ÷Ôl—0w–ÿ +3Kq +TâùÜÏ­ÌÃ\¬Ó¼zlª‡]%b¥pýgÜ7G)½tâ°[àV‰ÑN¡¾Øþ~ÇO^¦‡˜çŒÔ v`Š«üv`чm +ňX h¸¨ý—>r±¿:ƒ9e1SôNCìà$cæØø% ‰Ìõ$¦,T¡M2ŠÏCOÝüV¡eŸ=•øÇS7áu£•_„{xœ •Ú$ì:#Zòi¾1ʇªlœ y ö^|Qûž¡°Lψc¿&ÐHn’)Ü ϨÊùÈ|heÃÝ À}ñ›IøºMÏô¢Ç•WÕð*+-Z¬ëß,dÞªyf¡¨mvÔ›]t þ;`Úo´Ø]”ŠWH¬°íàYÝ}'PN`ºSuBf$,ïÕ•ÓLöÔäó·=úwm³0mVÔå –l™ ˆTOnt£6×M"X˃ãöq¼åDŽf0Êms9?Äžš_šæmnH`ãA…A×mÒšº +ÖÜ­“a’èŒîjfnÌUØÛ™ŒÃCž›¹a£t·/ŒÜçÄæ½òvÛÜ×ßÚPqE$NP^_Ù…‚dùèv±¸ö§"TŸC[ þ¿|¨½¦wÒ1|7ô—B%Óÿ¶èf‚£W­"dÀá6QIa½÷Ò†ÅE.á<¾SiœùÁ—Õ™)Õ+µž Ì%ÐÅY`; —Š®5!‡KoLS»—NÕ’öhPhäDðÚ¶R‘™-¾„®¹Sòéæ‹„ç»? ò¦åÕ¤S8ûŠ!ª—,ÊÏ „«vÏN²[¼ `É"Baæ’Â5ÖÂ#ŽdwºéW%Yl‰¾~:/´‚>®Z¨;eÔFÁ{N# {Òí}Ê?7yøg +˜hS·…¢ à`tZ¦" *èQC&KsulÊÔJ·š|6×iÞ$rˆEÖFXggξß&vÊÈH_I«¦)³ÇÝLRá*Ž±·QÂgÉX¯ušV,Ð’"ª%_©L΄¤"4vܹ¥ÂÙ©v€Ã»ZÇõ! +åÕÌîûßY@øLŠ‰{Ìvߺ‘+‹ÎN*Y“Ë+qi]øî/^L)㊴Š’myß1=óˆ‡K굎 ™¯~{iµt{ÒnÚ?'†‡2²d,µä½›ÎÐrˆît‘ß³É÷”ö-¼FÜ…­¦Š¤ˆFl L y‰fÆæF?Mè€_¢‚Ý*aÁ–Œ¹ØÄÁ5ÕºäÓ½•ÂŒ!»¬‰£d§ 2‹ãΛiú¨w/"Ï;qfWò"Ž—^®ã0$go„ï¯aWó¡vêm.üÍ¢BÛÀ/c@ž{:¿d"€Aú·vÏø]P}Cð*&kxÊ;ô¡k€6܆ÒxɃ%ºÕ ^X2ÑLŒg]¡’øó…ÌVm¯·­¦Mhx÷äŸP&ï(Ð{Ÿæò‚gû¢Ð^Ö£Èý ĤԒË|í±º(ìdkÈå¿ì/¡ÎܺH€Ô”qÏJ'w¬Bî£t®½§€—žgOÝ`O± ¥ßcÔô¹“ ®\œK*ó/˜Íû´®¸™¼g²9Zö<0väB‘·ôWK=—äQ‘]a9<ÏÀV<-­Meb^|Þ€£q£À"Ä^ÏÌ×&l |ésêgiÿÑQ=¶ÀéõrÓå m[Ò:rL(Ó¸ó…„aXÂœšÃIlµ«eŠøÓý€wƽÑ?Z®Nm‚CU†´úØ ü‘Ö•;l€Àc;^=§ª÷¼/ÊE#ëà…q$SpÕ TÀð /.qKAEÍ æ6–ñ­¦ËêÃ`ÍQDAϪÐ'Ön¦6O¨ýGÒã$áDÍ’ô[Q»ç8sLWA VRœ–{C–.WwèÆÎu5¡KnBÝr-ÀîD»¢ÂRýe°‘…9(=«ñè¥Öú4TS6è-ïH ¿;Œ&hF²§ÎÚÙïjc{nýÅHæU×qn9áÓ³›Z-å¨wP;K«¤½ªúÑIЕWô+eñ‚tãQÁawŠ±/_—b”±ZÆ• ;;_#,ÁŒ¯\»ï¨jíPdUÕ‰~²» ¨tjíÓ¨%†° šŒ$r¡g#*\>ièÁ{¾B§vw¼“Ur½/¡l•Ðàßãòö¶Lóº˜r´¥ƒ £…”÷9Œ´ ÞÆEmÒ«t뾃•£öJ,ù9®®ñ~ã¼5Q?ºðßó”åt©À·c›Ê”~×m¸Ñ£ƒxbÿøz„wÉÏ]~ä ¤D%îõ»É•÷cŽ±¨ì|ÄùT½¡_ èü€µ˜Ò¶ê¿›)€3‹‚!¶š•óŒp ˜AWž¤Ä+v‡HQ…è8(»«>×–¸š?ó;?q(Cqý/±“GùˆŸµÏôÆI¦ ºÛ¾Å¬bÍ.àq3Ô;x¬V-1Jk<ãÄFFƒïs/H ¿êñ[ûYlFsxPÅ\W4{fó´´§ÊЖ˜çÅ + • `uv³¤Äý«úfGœP¼†|¤[Ð7âÚKEgð&ù®³œrïN¯C’Œ V²Ø0P᪞E¤ø®º½kl©Øª0öå[Ÿ›Wæ‹#>¯sè>Z3Ï»îñ9á+G¾h,‰ÑG:Cs/ÄATûv-äÅ£ëòš"ʤ³A¥~"ÿú~^9(c¿Æ–¡ÉrÆõ¶ì´B`j9¿ÒõÜ+Íêcð6žiö‹n¥~>EAAÛ*/î}Ô.K°ø`ÎõS •„7¬ ÛT–ìZ)O,&ò])6`í~‘z0>¡Hi’”Ñ:i«•B·–ÉF1c¡FAa SNr¼›¨p,W¤b7€ÖAææ.BÍiÈ2¾ß¶3©\£gÒHŽ?;N®ÿõ^’i7á¦Fú®ßÈêŸÍ;<à€Y_‚€8º@êæz•s%E1,ãäRe5#k F‰?í¶‡ ­ñ'á-XêÖäöÜÆÍÚÅ9îÞûG[ðOLö¨àŸ¬†Dàmd'_RKžUé‹Ã¨}ÑïCœK…Ä¢Tñ“LºÉú›cΤM{+I›e—txøÇ-?¡[ªœ$tƒÌ™}î¤-B’,¹ü àäƒq‡Öȉ`¥µÖ\pæOêŽR ŽMÒÖÄ«0ú8¸ºŸ¨ãs!@[ý4ùú27†W(OW@eæV–– b±÷7R帘V¸š›í ÐpÖœM±8ßõ\ÙìòÇŠlWr̽ˌQárïwàøËþ´ÒfÊROÕí›÷cÖÀÿá:§ÄêTmKž£9*VÉ*¯ ãi%Ñ>ÿu JZ3†@Ú7ùólHûäW‰€¡jdáoMtŽ•s„éû<9íÖMâzaÐ$|íö¤ê «ãs¢;|¦Ÿ×?VæL „1¯.ZâŠ$³•HH…¤TÒÒ‰Üú×YIï–í'I¯9¥Z-_´M•“˜ðÉǾ¨•²geq<ç½'aãòmÔͺñâ±÷ùÁ„‡S2:;$~Rà’lÚg ‹‚ëcFaÕÍ+E-+ÓŽbÖþUIuÈÅ¿¢nÎÄ{?B©çÆ %§ÍbŽN³ÞDé‡Qé +Ò’¦¿¾ bKn[¹Ú?ë’Ž|)ÕÓ|D*,¤æôP°­ßúW¬ )ÖHB)Ÿ]ôª‹üý3=ãý ØŒû©(ÕÔÎþûmˆ¨fkOas Wà8³®<Ï6…æ§G{(VK"¯ì ýü×?™—ÐJd„SܦÏÞpÝhÍ,ÃËbêyžûº˜ZV­çàr½T¿M:V?iÁG2Ö› + üÆä5CBiS%Qàé»ñN.ØgzÁÚžÛ:.ÕíƒÌXþ'ü–°áE&•µVõµùÀ`yZ‚öMÞ›¸½—oÝ ‰ÉÄ*Ø(¥œ>"CcšƒCa̯…º#³sA^Qëõ@×%’„³¤n´ƒ}ö¸šCEû·5vê,ÆPr 3vXؼ¡„ ù¹#•Ã|T wd¶-ëŠxŽâm_äD5­)nGM1³ô¾\`QG«X·óÑ„ RŒBaëS¡®;ɤš HÁœ…î=pÖü1i/’›9»Âà²?W aADjküõ'œÇTóÑŽü9OY7YéTñ&JcÛ?M%Ê"heÃÀg~QO«kkœë}ð?j«Î'Ó‡ZqÊ쾋ÿÇ· ¢ašªø ¦ ê(!×XDªïüï¤öê(tƒå|¬Íã8]„*T›0fÏ~PN{ßéÐkˆä¾j+0Å1Þ|Ç O_‹+œð’CwºvÄÃ¥²éÂl¤™Mü¼M/Á(»Ómq.ê;åO§K4ê·&°ìÿñ­7îÞB*û¢³ÖÐ3H{{SùÿÇæùû:| êÊ+¿B)âMEK³xŽ8“Ž¼®å7-ž¼s­‹Ùé;9®ØIè²è‘¬Ñ(H!Ÿx‘ÎIËr_6ŸÍµCø¢¦Ä`ìGøKOB=Ké)°G<æwB®wÒ,@lŒ‹®HFÃ1`=ÁË9ÔÎÑ›Ö=ªNé]5<Þù¯d¡/B ÚšÅ}º`ðçöPP û*øþÄ4ÛKBø_ÙJP@"æ p°_Ö3ÛŒ¶þ¬£‡H˜ƒb™o—Â1Òž¾ª˜q×ÓHR +Ÿò@|m +ÿùj‰uÜ"–ãae8MƒP–BêZ½Ù~ì¢#JE\Ðtš}bK|©m îÞ&ü"cJ4;ÁàÁ¢«)­Ò”N +â…rÓ‹ÜKì +©XÅàû¼ÇH ™Z£Ê§èq!$Õâ=CÕ>»(Ã>AQÑÒ H©Âê=+Ü}ð´çöÄ·ÄŒg à,Š¼`yâÃn!î»*š*=e6Ù`%ä–¬úÀ®n™-m}’hDæ|o⽕AЉ ײQ>øVƒ¡ á|N©2“Pè0ƒ ¤Ê +í ¶:&sƒ8à²&ê†ÙÕšF½‰š}›Rqà„b+¦Œ?;Zγ9À½øÙ4nNq¼w‚ÔÁ…À«‰1[›Œ‚­òÞJ2ÝðaYg`Ͻ¥¬ûÇD(V8Ð Õ +b•³R¼#ªgÂ…½8 EEóh \cª¦ñéþ˜þÀ£50¥ +Êöáyÿi¬J´-Û–iñ˜-JV?yl~¯Mh‰#_ÚÖtÔŸ`LN×'ûyhÇEs”Lþ*‰,:B6ü>„a¤¥@I”zlK“õ$ÿø'y«ÎfúmÀ_^ß]îoÍÑè88œÞ‹ˆJ-Ép$…ákþÅ?9Q´¶|ÀA;3Îh6¤«@–yÈë¹YÍSóoîßì+UîÂìtÛÛOcÐP!^°,’¹¦Á?ê7 ‡å&Ý+ýdñº`ÞU^XF4-Nuï´LÄƘ¤ÎræbsÇîÙ‹ °WšFb·j_uv ŸšDHÁzÖéMf忯³>‘‹‹=ö¦üÍQòÀÙ¤ë€^Ú䓬ًm`âD13F Ý%Žl¾ñ4›Œ‹á”ZVò“Žœ^¢UV°„œ} Øaø—s.Ž XÇø»ZâçæÁµØvUãm%k h£`oªÝƒ"l%Ã&CR«@¤,Z¬[KæEÆhÕCЕ0æÆvxFŽùÒŒïßî;™Ù±Ysj—4­”ÃÞ0Cí÷1»èî¯>‰)ACW‹÷˜Ã70xJÄ»m$Tdô¸¶Î»$(Êi¶#so¶¡~wEx ”º”Ã\’ÄlçüYÕîe?»X&a¶'#ñb°{PÝP-aÌ ÉQ •£jqó*‰ Œ˜®Àlw|¶Wé:@ŒÈr¤«w¡Z®_Õ9 v£‚'E}þ«ðè=´)Ì‘ù“¹˜ AFö+½,bC×C•÷û›Eeg-ZìôWóNN`[5õFscnÌ&`¡gÿWbÑV;ŒLONøý<±(6ÎÈÑ,ÆS‹y!¸Kh¿ÙCœ‚ŽtË™âóBÆ Ì‘ÆCªJt¾ô\Ôðû Ö¢û µ€%ë—'ÊZÍÜEoE“OPû\í.ñ»èzôkËÝ0g¾–\¯šÑþžô|Ûši– \öÆgƒX×5¹¦ ñÀ«Ò¸˜ö IýpìôÔ MUò„F5Ão1IÿÚ³2r)%¡"Ö±?&朗£ŒÞ‘+y¥™ NÁ_ÑÈŽn­O—¨öëµi€¨áûÙYò}´F¨3tÔÑúÔäVéÀsŸ8)ÛóƒSDÚú +¨µáK„f/Ò_|¬"‘àØ=æOŠ¡þð@– P˜Lh=3}Hæ‡su†:¹XzsµŽEœÕOOO  Ýçc›Þ4°j9Ùäb¥¦´q +ûÄ&Qlïçj ÄÙkËÃkøk-)å³H›ê£›$BeÑ‚e ÙÕñMÎÞ´_ê 5tùyƃŸJÈt\TûRŒ¨—`§I{@ úi·¸Â¸0ò_wHìãšùco¹§Ikµ ;N •1óì½Xmq²* Zȇ6+ðVó¸[. \O8  í'»AþǤÁ®Dg¾XÞ*}Hšx¨ Œ ¾Å2f!‚¯zËL¨ðïb}ÇÇœEF‡rmË‹m^0®±~`õLUxK·Ááú¹ŸZ?tªhÒ˜¨ÛÊAR£Ùê'±C'úò4á)ÜQ»}â‰'fõû}‰L%u?„ž÷¼¾¾nCOc#šr£’܈²ðø×v)ðþ³ô$¡ íxt|””ú"LdðeP*¢Q5P\{#êÙk›º8¦CZvc¬ôµÎ>Néhƒ5Ãa]h..Œiak¿„[]Çù¹>‡Ó€µ¦?`j¤R“®$¬H$æ1s¬= +³{Pë&“š>M4TÍ夲S‚æXL áêÜúéÀ­ Ù?@õv:hn÷…xG·Ãî u‡^²‡‰Y ßJTãÁˆ ÇQ’øßéC“£€G¬ÐømÚ¢6“Ú?^¬k¹À î\ß] +˜²¼BÎØ.”žFlì£ÿÜ•†-Éþ¶k¨…òúÖõ•h`³pÕÁ€’B?»‚54¨¨Ñ]^Ó> lLz´­1ý[2‚ÀÇ>v-²Ê¹çyb¾äˆrL¥¡Â£ÔfË›ï—'TáÐãÅ"ÿ=C2AÐÑ­õªŠÙĈ¶‘ÞIF¼äƒ6yÞþž´2i²€—–Œót‚³«ï¹ÑÙMgkÒûë­ËŒåv\h_sïbN%¶zÍ*b¡¦Ë‘$ŸDö÷íߘÆß$³güŒ£F@Í÷á3èTÔe‹¢¥²9@ +0 y;î*@$”_VU2câvÙð¢õ˧ŽøëÇT1ØÕûCÖœ “-—QRš}6ÚšlP_äKÚøýÎ.m¢ëžˆAç þäÊõ7sö‘9àš¬¾$!öìW'%äÖŸ%Â^iz¿£‹‹Ñg<£þKÉ[BÖ šF¹qt¥¦ÇTç–W˜¹aш3.Ã=Mª“¬ìgµâä#Úãä&]_ +oèô4ì¨Yf¿Ô†…ÏïJ&6k/(¬š\äG»LûûI÷LÕ  ì-œ†üBVŽ ðÒŽ‹þ³¼…‰l¢²‹ÁFº_aiÞw;±œ×OÑ-‰üš¬b¥Üú1UL®ÔÔ dššº‡ŽŽ7o€¥¢÷I Çd˜‰¾ !õ²²–Òmøq4à²\9§J7é¹Ô„1·¬¡Z0-ÚUÚr©ñ*ý›ó +â1¹bTØQ„<- Ói6Oy–ð ?›½ó} çmÖ ¼gÚ[´þ¯z~] hÙá„Íh7c´P$‡úÇ£ØʵM§[ëö'ÐÆ—š¹øÛ¸É8õS72j…•ºkt>‹Uuh]¸.»Â7LQý' Ó˜€–LL›·¼fOÁœ»º±Ô«ÙB º{ÙN\¾±u#øÚÔÀÄ_vÌÁíó»®4¯@¥†<ÃÕ%ÕƉ¼}ËÑ»úŬș¸ÅÖjú,ļ æíÈnc&e ÁÌëhh±Å3Ožýqr¸’ÕçÓº©ó®ƒÉ2„köG%ì NA+ãɱèA«È“]0–t~*Æ&À"²WFÃïçå¨K´?\õoÉôtôlr8Ûã±uRâPˆ ?¾hlJ?Ž:†×Ш5T¶ÜQ\õp} ÙTð,UÍÌe\§ ©‘?<}”SXÆo×qÿê{]‡õŠ·ˆºñ‡ZØù-”‡»ìξM¯”Ÿ¾}þÏ)ä”ý·ÒJ¹±„ïì…°mµÐ.JK»oס~¥ªß`1å?`‚¾Jtª°19Ç•þE«îLPä÷3eáoœPŽŒÝuPD*ãàø +¯S™wÁ§h”~æõ@ú’>p b¤|¡Œý¶ÚLtëZRí jU¨ÀfÊ:œžAêDIÖrz/ng7Cà ŸÖÈ&öBSyøãnÊH”ð5ÊÞ¨[¦˜…G%‡(L®ÈÛDéK¤©0po $oFÊÒ%%š¤¥ý¥@×ù³@‹×î„ØÖ®i…ë·greª`ÙÔÓÄZ½KК + +Ü æû$¬v庻–ß,e¹°Aå+•J4É#°ÅcgH¹ë›)Ñ®Éàç;Ï[`·e…ü/iC}“Û +äM©Ýª¾aâÉŠÓZHî3Vñ |¯ÛÉ"aOÅ…–ƒ­&?zšØ®»†¶í}½Î ÝÈ<¹8õ´X­îOV£ˆ9‹†Ö×ÅÖK-+Tq9£çpy9Q$í"¯šIâ©cíÆÚJ6ª[ˆ'âXüi­ÔÇ‹µ(Ãà7õ¿M›!$=*4Š¦cô—¤Íß\ëôæÂûC¤³JL±Ýdíö€9‰Ýªs\U0Z’¹=®Û<¡¼¨2Xs‘ìTÄÊh|v,œs#:ØòE›¦N«§Œ…EW‚fUÊnrŒ£o_íNAD×zŒÏ³º5>d0Q]½ ô‹¹q°¨ï_ikœUx-XìÅaWŸ2´ØVm®ÍE£Þz>ˆ'cJçé+3Ò73`K©_CLj,„0ùS +Ñ92[uÓpÁðµzžŽ·Ç:z ­‡µK‰b%]¬Ä7OZ”T¢0È=ÏmÛØÚqub8ðNÊ’o—;¼¨Qu&ÆÐnAØù*3¥ÙóN4² +?7®sÆ ƒ v[Q<>×Q…=v\QgLÁíhÿ¨}aÙî,׳{ò(ºÙ8räd¦ßùl®ª·à=r(¦J_ñ!O+’ó®½\Êëó˜Ø¯î\\‡m…Ÿ&@‹Ž¿ A€B!Ï{‰å›&· x¡äf®@ûÍV^Ë6zê3Vÿ ú/…rî©l@.%Åé¤y0½×Ò=Âyíî%©^¶z¥ÚZ%d oû ¨x\±¡¹Ey™yxΣh…9@›µÂ…0Œ~ž»Ov°ý€ê\ø ¯ž;;šÆìÊ@ö×US%š—íÛÞäQW™æ@Ñ?R­Wõºò—^Ém%XÒb©òe/z9I'µy7gˆî}ásBdn »ƒë +ÀD9Ž§q(æàI ãó·|GéAÆbEÖƒ‘ÛÜàöØc¯^"JËϔ˾Š4\ñåä~C¡†…Ñ©| ¹·¨ÒØ ?©Ô©€*.#ÿ½Æf/ŧÒÖÐ~ 9KÝýHó{1· ýs ÍoiA:ØåJŠü)öØ!†ð½ˆ¹ôü3kXæJÍ©‚Rwj£”çyG0”A>’gX ÞÜópÌ昢­HŒ(ôh˜ác%\ÆU?ñÖâ­EZ,NðvdM´w{rιþÝckêÞ<âÌ2îõkŸëz¸:[]ÉD>-Yk1èÁèÛV'Ú1‚þ´ÝÚ >KOWæúɈõº©Àt9vä–‰ž^†þq 4»S¯ë“|;.û‹Hé<†³¶ŒÔDéþÎCv¶²VÌåm¶{oÊšïã‘PêìËN%à3¡0ñ‹ƒØ® Ã…ÂÍbbµF 4~A{ßÆ< +¾Ì" Tb(’P ƒ2­à¬°yé y–EÏ¿)°V¥ Î ,Vüß0¦œh_3¼ Ä¢úe7®4LHn¶¶ÜŽgþ8FHo.6Ï'˜ÆQeãÌ+ÌðµNeLXŽ]ô‡ƒCQRf‘š½Ó2õ¡#?‹·˜<îÒÀž¡ÝÜBšÑyŽ™Î•3¦Yé9´˜þ®œÂ5{кzµ¾‹(ÁÒø³(§ÕGÊD }óSæÚˆŽ¸ˆŠU}0öÌÝ>šzÁo¯Êù*%åð×»$ÿ“’‘ŸlÏ& +}ã´ûKç+ÑàôÎïÈL5XáçB´Æ`{˜PØžFR/´e¦•{›ùÉþ¿xì³If!«ÐÞdå˜w!q>)ο ç«׫ÍélÞV•]˜$>Øð€Om•Å€„”œKé1îy®ïà^ÑŸ= ˜"YkèK‡ÇÉÜgt¼[1à6eà´§p[hNc¾}]Û#Ü^ékNoʼm, ±5u£‰‘yéá<Õnå•TA³t<Íw£&+•5O–y[šì÷N„þ[ªP±+J ã$ìiÙ/×%”ÖˆÞHEPBÓaÓÒàz`~-Âôa+Õ¸wi W€´êÔ=ÞþYÝÃÊÿ%àb-ÈòÐÈSQ­=SVuIwï®–¥H°¸CÒ8ûq—-º£ ©›¨íW£‰R͢ݼ?ÎÎïÒ‰G¼»g5…áá)Ó9 P9©_öQ‰+Ë[nÒÞð‘k¡ð#ß%J!³„zùŽø6:ÈLÑiÑ)Yð´™exR4ëÌ©b&Œø-Àé¸Îä˜bŸ©³Ï e’ðNæb³x+’ÎÔ‚>êxró}Ô„%öˆSx#«ÆóìðáÀ¼àÔ\/¸aĬ1^BIOÿÌ…Ô•x_å<=rãÔTi¤º½Ôø_ƒä­[›ÖÉ-W¿õ…&íg!zÂ{N•i×%’3s|刽¨’66gú಑do–D»¹^-@AæJ–ðHSPºHSä[N¥©:ORØ~\¨·bj–•1 ãæp +endstream +endobj +2269 0 obj +<< +/Length1 1173 +/Length2 2916 +/Length3 0 +/Length 4089 +>> +stream +%!PS-AdobeFont-1.0: PazoMath 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def +end readonly def +/FontName /IKXQUG+PazoMath def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 165 /infinity put +dup 229 /summation put +readonly def /PaintType 0 def /FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -318 734 1016}readonly def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-40 -283 878 946} readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXêÀ{˜¸ñ«ÉÔ‰ß]_ŽöÝW_ÝÉù(~ÿF†àv¶œñáWfE@ñ»Qëc»¯¢PNêd¥‡qclµY¿„§†]¾Ošå¡æ®kÖÔÁ r‹ lÈú¥n€8e‹ &ãy~¦8qE”<£ÍDÏb´]„Þþ$Ÿ<%ª¼GÜ¡Ìd`øF òž‡]æÍ"Ãb¶ZÊ9 'Nnð à¯]Œ½w¯ù90dÿQY°NS+Ý{M´>d¯Õó¡*Ÿf$_ÇÔÏ{}äþÎE¾ÊN5´Úw0Æÿa™ëmLÿ@°o²Ÿ­½praè,¿Yuš½vT fEC/øî -^°Ì[XâO¨åß2þêÿ WEƃØKQÙB:”ŠÒAvÑøy™°ug¶¯ÙíÏ=q“p5­—/¸…1[úÕÜ‚!l2T˜'9HCª¾a—€®ĉ€üw™±Š¯‰Cî3^—Cyœ’ÔÙ}^µÿ–…À 2ŸA‚ú3>ÑG|ºÂà”ãH.øˆç]¶J%KV`à8ß?½†Ã(Ì0Í÷ÌÌg¨óôƒêt,×OT7 Üà$n"JaoÕ82*tß®ìû‹¼Àç±.ÙøÄüÌÕ„ñøeÙþÌ]'2õçb×v–ó€Úè«ëþÐi“ß)kŸ+ã÷šT½:CY#M5×7¯^ÓkjÈþrcÖTÑDd¤;y9±§/ªä£EêÍœŽ‡îåÐIœ7K| òŽ”Sö­ÁÝ¿[l6ƒáå†ê«÷¥ -K|ßOV`bàÂß'EÙp…Öœ§höº‚ÒõÛ(Ñuóèfè*Ž†—âéþ­ñ؈{£s’G´Â(\–h‡M9?Šª¬5 ›gÀ|Ü 9û@£?ä -â…;ßò^;Z]“‚Ý_·pßêXÛæÆêì¯ô5Mlî•pCŠbØÁMDþ ¢¼›†âC³õ ![]¡ÒzºŒ>¼¦¤§¨Òn®žÔ¥ç˜R>X5 ks‚•Æ¾l© -yHRëàv¸ú,#«á#ymí­B[Ü! ºY¸‡Ÿ|+á´ˆÉÖÌ@w˜1Èy0¼–+[åÇç3Þ€ º©;ð.f¥Ká›ÕÒ$¶w:¼É; ×0´6‘áI@œÛ3úñù€Ð]…3Š}A‡íEêŽ:l9éÙñ;fQIïÜé1Ë×YÚÿuK­YßEXÒÖúñfhÚêƼ½mxâÓg{šG9ÆzÏ‚ªÁi¨{š£$ŸÍ@í½”–vœÖß2BG™4õê˜#­=„Ì-*n=׬>¹‘paŸ¬\ßµ ¨wQS©RÔ9 ~Rã~ØýXžÂCŠ}Óy™rFLçZ«v˜ßzÐ%òE‘åÂõ˜ÀôÍrß‚C›»ÃH)ï´`@—ëêÐêÝAÿ•èžBÓÀ¨Ü0‚ÓVž­|‹:øüªåÈ>Š?˜ -hjÛt EÐË{ëˆWöç?´ãÔ¨$4šV=b‹Å¸h*¶Oð‘]&¥&íi’¹ b•ë•#oÜýÄüÔ±itC©ŸúD‘ò¸]1ú>Ûå¸.®-T°{œü¹X¶z^äžÚšX]òÉjZáG0è· Œàf‘î Ú ©›QDWn®*Ry£Ê£àŽœyTµF:†±b;ÕC?eQÞ*§p4¦@“Ã<á0`>­…È_µPɵŽ„Q€-H!¨+Š$ÓfÙ²Ût΋qhxlî(µKëƃ€ã1³ÊÖ·§'t.붮L k…ª„æ`øýé9±¡úךWß½”¤üÁÖBÛ ¯¶í0)wææ(DZ!+6?šÌߨsvµ8«ôxÓÝ0´©n§¯÷(›a?©+Ô<ÿöЮCÆ7dÝ—„bÃF @¦ßÐf}ÄÉÑœGÇSK|¶gD?Œmnl¸˜€h&p²ˆÊ^R“³«¥òRñ‚æÆ<ûσו؀¤ó«»TÂÉ•Î󸦧SÁBS–IÈYdtðå}Í=èów% -j¿ï|Í”}lþè£,&ÆþwÀæ•×63 -G‡¹]z9ã½Hn¬ƒH¬•_F@óHDœèQÄsc!ÖßÎ 9+ÐÌ@%’6*„¦­NE9&`ï¤þ‰-¦ÈÇÁå3ÞK.3y¿ÿ³Ä¢Ôݚأäø[iB…ÄS'™‡Ñk\dƒÅ/'·£w H¾APË•Ç¢q_÷ˆIÆ»ý šÈ°ú|ÔÕétlû*þ$ëXU½1·“ä\è7•õJ‚t Ú8çUÝók8¼H~¢Ó]3Sk?ɪ.vñ)&J™‡]<Á£ðAkoU|8ŒÇc·°æÁ³È~™-æÞB†&Ý7QÆûŽ/(`”/,MË–âSߟ"‘ú¦þŒLÍW§¨Éõ“âQêéïs[ûG·âEMY öª=äÝô̈ϵ-^-Õ©¥ŸÐ®…bÔqï" Û=9 ¨u)Êaž1Jg®d™f<ˆ¶²¨ùGp -c ýjZ+½ '3G6 ,îX­œï2_k=PÁlzÚK:“&’aT’ÀF%|¬¹TVÃãrñ&¢*‡" '1‘nБ­nÑÒ×-ŸW¡Ü'Ìÿ„’]ç†úq"0a ƒôÉõÍàAáVÓ‹åÞ5ÜÒMgÞÓÅ­õ.íå~óêÉDÙ¯Žèh¡IgùÚ)_ì -óÝJõ¾º„õ “*Vùp%‡öT¡lÖ1a-Ÿ#Uƒ•@ÂÆ-aˆ Õ–|Õ·ž&)àoÉ^N4üÞ*yn˜`n…KŠ^gEMY ö«êþ‹ŽàÃ’žÀ¥ð¿µ¥ Ø -Z‡LÙ_Ü [òçÐJõòü¦œ7}Þ€×´”¡ò,ËÏøGQŸÝ3“Ÿ(v Š) J²Ì9àÃ!›£qZœÊü÷14Þ> Ä›ãº7¡YS¸A‚–´Å÷eË¥vÁª¸N…}ƒ]ȯ8qV7åk¦Ê˜¨pÁ=¼å BsŠÀ4{ö«°çûŠHn‹½‰&£d„"ŠË¤o]ßCÓÊC›EÌþòL}»»ïŒFnŽq€8ÓÀ+^‚“¾›»¨•ÆåèwLÓá)CS*·–Å“oC¢l$ÄbY.Ö}sqŽåeùÉ® ³ÜÌÁFyÔ‰¸öΫ½ibùÒÚžh¤R„@GžQ“¡˜µ¡ Êä•벶cx´¡dG#ñäL¬=}°d%ü}Z‹Í¡wÁvyä×™B]†Ÿu¨.|²<Ë]Õ¬CÞZÚZûø!Ðgÿ `¦Ž&ìp³›ˆ‚šŸï;UvÆZG­á½ çάN"ú01›Œhø÷Üóž_÷ìÚãˆMØæ–§²@¨6(—Jª«Ç™f©BîLª…¤p¼:JYáo Þ¶â„Ús<¥Û®½‹ZýC¢õÿ¤G h¥œát?—Ñ@(¡ dJru¼‰˜|á*Á´ -¬×Œ]¢·„Èñž² %üì°ûÎeoRUXFÙ“ä‰%õí÷‚qíEE°㦧èü§•D±¢÷VØÊâ5¥Œd߾ʪ¨R%ßù1Ђœ“…ÆÕô‹Á]Ôµ_cLJfrÅg-j„Å4š7yb%íØS7†ÐkDs#©ŽÛ+€6 kþ¿¦6(R -—´‚…Ú‡ÎØ©R f}X«ò–Ç©šŸ`h9Ž ˜Ó -™Sï†iþ‰Ó‘ÊX;š%÷Ã"ûKÕ ”êx=D¶Ì›É¥-ä:*¡s& ¹-Pç—Abt¾§7@VˆÏ’I1¦‹g@E%{ô5‘G?…?㢤;|ÃÛGÌš{øh,˜‹»CÜòAB:»¹ûˆžLDz£”üÿ -K K»ÁØõm\A9`)œˆXs|Uè¤bD•Ëʇ˜;ŽiŸ­Äž ®qOãE¯ŽAO»8ÿÐS8˜°ð*~ßµ-ÔÈë™»(‰E£9ÔCVb6M=8¼ðdE¨x8¢TŸ²UY”ì…WQ“&¡{çy¡ã§ -´‘ü¼ÖWuý̯‘ú¹#áî•ÃZD!l“?“³#4Mœ?PÕFi»¾YÓYÁˆøÖõÖÖú¡+%kWÌzSÜ¥º‡áŽO°+ênBëOïø)j¼ÃÚZ=LÌ°÷¥k)·úÊr‚ŸÎ¬C -Tª±ÇyOêÖÆoO¼Þï%p%0PBnü¨ƒ®dût°¨Çj¦É˜É&ðd.ôìri[­Ô×£+e"Ðþø³Ò)£¤:˜v -P=ÖΆm5P>cìNˆ9–G<B(8EU‚E†FßKYµxhYf"Bäû‰^äúåá{ÕÁþÿ8/§¹°´`sÔöf\`šõÈõ†Hq”|c¿\jöÀL7/R Ì4ˆÎPGGo 4þqѯnÑ2¢‡:Îýö*7ÁNôþAo³¹ÄT½Wtªû%”5@úÂz'µ–dèVíÞ) ÔývÛ¤x@R•>PœÖßO*ˆ¶k›ÌòZÙlŽjÏ«V`šlȃ¿p\næ ¢©bÉnD L³r6 P†]·Ä-ö%įÉATà·9‘Eºz¹ÕwTÖC¨é×÷6Óè.4‰â&Üè¦fÝwž”´ôÇ·,sO×%55BFó;./MüêÈqÔn§<ŠìÔ£þN îóó‡Õ‰—’‡Vk ¥€ñ‡+ dŒI°D^M‘ráˆpCÕ3“_”ò¥Š©9EˆˆóP-%…ÅðËŠÃ,ªSm‘%íæ—.õGjKjÙ¼‰c7.¢dÜt\yp¡ÌÉó’z'ÉôóFõ…¤‰jÝâä7Ü­©—Öí+ö ÀZÁ3ë⾃#ú/ÿŸ†HKjài2ˆg+ÌÍ~ h†RuìÞè}Ý<Õ'10cm‹gFÓ&}ÕÐËo6é>dæL“Mß%ÐÇÜTp¹ •DfÇ,oÓÞjÞ ë£ú£ -é´ƒ9Þè\æŰ˨ê¦1)¬óªwC³]•rùüà·Ø«ÜÉeB€^4N¶=U‹W!YyúVÖAp -Êô»DŸ¾A‹Aö›À19Yð[36”yŸ#ë)“SÍÉ›©Î-¢y"Š®E{çå_vúNÃ'5¤R‹"à¹o½í°·Ø®™%É/0ä·âK?¡ŽbºFv† ,º”$ \Ÿ–ÿz¨ê:û_+ðªÊ°Ç9gºEªÞêÄ2€H±†ùØ°»Ç¹Æ5»þe=ÃôŽ2/I/âÔi<Ý¥’oMfC|õš‚gsjF,ãi£9vh“ÏLmç^†¦[åŒç÷Û” uj-qšá,S»=¾òoÆÌ𧅇á%kìb Âá»–L‹èF‘iþ°£62—•ÛWšÈ‰óOû½ÚÏkCdOó^XF€‡ÖÅã <â{‘=þˆÏÞÿ”™ĶŸPöbžìhB·”Gühê|WJjywj…~üôßÆÿÂ`W¿ÄÐ -̲ˆ<#„În–>åëiö›­ @ûf7 é'6Ÿ€:Oó׃ ÏW!™÷FEÀÙ´Û©ec?]̓p2YÇÉëJè=¶äßTo¼‘Joð1mßÞL#±j”@­öºVζÐy¾‰•­U£?>e©JÁ9c¨N½D/£EáÙVá%IpÇCˆâR„Çʦå¶äd"_$ìÄèÆ<¥öÌ5qÑ -üv|=¬EäØó»žÇaðI Ó̉Œ`,y\ìB`j‚–Mâ[øL"œb挧Ì+¢Ê}0”xj‹’˜ £æȈ‰¤<ÝâbW:‚ë5ùnU ß›•Ø.–„­¾þ@Öï(ȱCàMü|QCµðç‘&øzã‹ßrF@ß¿µ¹>ú¦,!´kSþÉù„C’žqãaJ½ -#<Ü ŠãT­ïÑA©®†DbèⳫðàGËw,'b¡gk¶ÏnÔ>—m꧇úN"OŒýywé;ë®Öc²/ x¸DÃr¯Ïn´;^ÙŒm4Ë>€˜J!“o8Œà¬­ÃM8ó{SqsôN=9¬èhDš¨Y©uL­˜ 4zHÈð†ƒi£,sejE¸4u)‘ -zÉžCÍžð•z²Ú(« ŸdKåèéwsgÞÐïhÈÿ¼kOß7üLl~%qšW&N…Žá°®»*ºÂ¹ -QM—”U<Ã8ë=§e;ìozÆ‚ïÃ&3@Àúiûß:±”tÛ°«5Ÿ"ƒ¥*G9a¥^&ñØ´DqžÆvð«àõ/-PKíBG+tèöáµAâçí•_t•m|›3ßcn5öÑ—É¿T±€.û½oÒÙ —x‚©¡èûÜc{.¦á Ë |Ñ}”ØVD±îó1‹ƒ¶X¼OIKÓ]èR#§~´=ÔmàP¤H‰ûn'Âû™¹#¶E\µG·qððç\M¤Û½Ùì¯*Pt(?îã }=7pÿÃ2  ×Åa¶p¢ Þer.d^’„¯\\´øë˜Dú¾˜_’+ -è I¸ºÝQ ‚&?íÐ;>jé°mê»ÂÑ2;#™Dü'[j$áKƒÃd%•‡â)[ÔtˆqÕ£I7 -£öV´[]Xã»pæNíï ¢G„¡Û”]£É1 ‘ëÝ<¼þ4šígþ¶Y>ì¼™q“¾À·†9 þSú¤ÍžŒw’sÔwUʶÿö}ù̧/ŸÇUÄy?ºé1&mûæ­IÖ±ñŒÔÆeÔʪmêÃ}˜(ÄËÄg™Bdþ4…^JÓû½þfîn£æèû1:”l<=bj&siË4«3, =håH3dßÖ/quz†€´¤‡2vOé=«PPÓŽéšJhªÏ JôÊ,¹jÔHvÓý+ -!çÕg}°æLvPßoÜùQEYÔ|2@°Ô£ -8-íZõ…É8¨辦bµ¼íp¨|ÐÔy‹—Ö+³=qçRê0¨î1]Oß=+Rí©DoÛò¦Ä ŠNç¯ï_úIÕœ„BÌH[,d µ¹ÌÊPa ’k_UÉË(UÕÐOˆ>à^Xyðz{‘ý AH`ƒ-d¶¾ w5Æ'Îð$‰Z”7ÂÉ4˜ËI¢¦âz¶¢ýÎ•Ï -¾Ukïªa¢@× ‚Å_Ü/oùOžo=Â]nÂhåÄæLºR -~!'½ ÷Mð§Ñé{ªßƇ‘î3L±¦"Y@¤Ñ1vd›Ly\­ëRÓÎ7âö=4û½É¦J¸Â~ò‚|ì<Ä9öY€»ð)üžy/cÆ·ÿK pª:BìÁb=25<×hJú”…}ðÄ|£Ž):üh¬öPøÞÐäÑù¼ñ̦¤E§\’«´A²o3ß%ãKû¡›(¹Šæ) †M¿È\@.›ÜÀÄd¯±xúWʵV¥¤5úd}ã\2ç*âNX[„SÐ]^t߬ «­~9oËÀZ mÅBûS-£k9xÅ}EˆÛIWÝ(mEglŸÌœ‰LýˆÎ T$Í·b›à„wì¥ÞJÌøŽ¨"ÐŽ#±ÝȉÐ!Õü:ry¤5 -¬Ã뚟IÁØ&ºÀ¶ºÂ˜ƒÝ0m]DÀÙ½¹9"Y$¡Õ°júûJ ‡0óÉ’,ÁsO¦ŠïÄIÖòÅ€7´ÏÓÇzPßÈLªý2ªqc0öŒ1@‹ ÎfõH˜s‰[Ä!T¨q–?Î/­Ïžbx&è;êNHÀxö=LXD˜Â!ïêæµï‚Ö^S]µ´ ;CåÂz'µ–dèVíÞ) ÔýuÒ¹ƒêã— ªÔ:ÚîóÄC^1ð<¢ï•LªÙ½Â[´è:G-±ù¶^Ž9([ͶЇMšu €±Âê6"wÇV*çÏŽHí/A´øš%ƒP͹pVù|ÌB Ê¡ ßAKôá¸&ÞŸ&ßY²™[ZâÎ2¶Þ¥í‰FUç°`•Cï'¸±Fcã>¦Ž³­­¼V·n…·¶¥pUõ^LÏw Yk"ÈÖ -g6½¯Ø‘q³¦²€­=†´·“7EÖ†nÞ€…,]µo^ï?JÒû~ ЇYù?xóNØAý^0STÜsÍèù¸\ÿ!¹ó[(ï†Â10ÓÆ#%¢ÍýÁÞöÓZXÖZŽmýX=3c#!P\°Îéû~^-ߺÚÐ J+Rú +ºq| â‡B…&e;¶š",ha½¼Ëõ±z©ò¨ s/ Úùê˜!EL·Y³Ø)!«K’xæRÂó ¾›j"½VÁg f&ÿS-Ô:> vg³¨ä’1ß&>ÂŬ¼¿O‹h!Pú0$Cu¢€œÅ탢ޱ,€;²yĦkh™d¸~Ì#è?5û pØmtØÕ=Ðô¨µw:Ìß‘ämÇ$T&¥{H̃Ÿ]´lëFø{0?K6[¶gTÛŒ9†íÚ@ê—ºFÇ:×|º…ž/µÉî:-(Ò´v³º$ÚU°À]3…5Íw"Ñ懞[œ«šË‡µ®¥a~©3çÿ‰>2áT¸1w7ö:ÅÀÁõ×Á9®"ù8¥H’‰B¨Väû±è;È„½­.xdòå!­ÇÀiÄkF_ø°ÁÆ1<ðÍ)¬‘ÒÓtsB€­±ìK/2Þô à‚µD´¯q'êm[õ sS ˆ^‚êðù¯©À‡ô:Ð{þVýnÍ;N«g‹#§ëÊù€—†×3µQëô0Ê„9 «Á%5—ý„—Ó»ŽŸVT³ŠRÉ4œ6/Õ•¤Œr·P-®z+¢ÚáIöH5#ˆßÚí®>é(E4õçhà`D¶ã¯"K`)í/* X ÈÿÖ·Ñ<wå™åÇËÐús„»EÜ{ -²¸¹\çÃæáV‰¾Ó]î0½N¶¥zKWBe¦y3M^¼°sÿif½“ Õƒ¡—ÀÃmM5¯OuÔ§s•£Ö† <³ëÙ%}и2ËB JXAëÿ€ÁÊ>b΢‹nJÝg4¡X¦ÇÈRvY%ÜÒ¶N#F:3ƒ"f<.þé,ø?C™Âìu^!Îy?>yAÌëÑß Î0F›‰®u"oà âh,ε˜Üj%[æH::¡;>Îà@Ú( Óñ£E$Œn€æqÜ– ñ À)¿âZÆ“ÒõŽã[Äß}ï–Ò}=o¼%"­¥v×S©ä&™.Ö¼‹ïî­M~kFíFS ûÍ]PÑX\˜t0•l´1£û)nòÒÑà+ž)´üæ‹6Þ¯§kòË - ‹#-šž$jOËŸß/ñ6źl5ûfŸ? ‚ôb“’¯‘hIyM˜C}k¾LŽìt¶Ù»}lñ‡slÜËâÄYœþ¦¨w‰º˜O\YW†C˜Â“zò±î¥ˆ2Ý|õÁâ‘g;‘'Ö'E@Gn;»©k?ø/¢Fסv¡U³6Æ¡|Bx—¿“Ín Þ{ö’‰\„”¦X©XZÙ[7Áû -ÿä Q£¾¤IaF…µ#Q^ÁXˆN&¦îlú^ê%ôsÁJÔÕ"YS £&; ²,^Se.OJ{\äÀT µË*î£5µ½âë„‚5¬Öt>i,RåþQT<^BDœ6Ý»yžW:TèÁ”ÛCe¢$É<lìr†/Hð…H)lÁšÝ"üézÏúòì°eð™îe·‘Æ>Ư@em“ÖºQ ?àëƒ}¿ÿ¯;ˆ4«8µ³½É¶r+쥨¡q¤¤Ì -ŽhrSÚóWum­Â ¢kËŒ ŠÊlŽ”öÛ\6É ?:Nµ÷`ïv+" ¥è¡g\dƒÅ/'·£w H¾APË•Ãhtºèë1éÞ<à…OtšW5îõ:—âãžh¸4¿q]ƒŽVJ£o@{6NÅ–Ê‘@»¡ÎŽIþÇꑨM—§ÛNk¶VY#§r«ÒñÉxãMÑk¸®IŒ}X1+TQìü§ëŒ”Ç&ì*Í³ä ¾ýVô¢ëeŸS“òútòTNäþÖܦiÙ!ò=äGŠ-¡‘]üúÃ8°>zöï'_ Ó*³Óƒ~õ‚Rçÿþ[&¡òh¬8Gk^Äèuoýpš«R"Ï€ŽïaJAá\ÕxÁäI…?©¶Ô,Ic|ßéÐÕkX€;†A%¶ü¥«[È“zÙÿH˜Ùph›b×óîë`¦UJ,îœ"V9É&’kqÒò©ñê­\¾­~X?›Áܱê;§Ï€ÂZ?PPÞ¤™V<†R<ÉOA|¥ŒÊá{Œ˜+ƒ•±øíC[à~\üI¹Ëëí¦ƒú"¦€—D£Qæ2ãƒUænÔû-´Þ…8"ÆÞ äQÀ¾Ð˜”üz\óJº‹¸žÉ({7)r9ûCcÀ”n·îÍù¼Þ‹n¶‡>©{HO©™èíj1Zy&S"ä…J'Lty„Eº‚ðÇÍJ·Ìàáb‰j‰ÅT.¼B@ÍÄ£©.ØöHþ"…㋲±·e~{)€=.7符j²y7Š?<ŸPOK©]Ôý:´ÃŒΫúÄpY¨Ö[t áꕹû¼èØFÚæM—W̨/t°?³¶‚½i8Â,ª}Ã5áÒv>Ïfa9æl÷Òw«¥ªêUªy‚c‚-¤yä'”e¦ËÔ>µµÛ‹rébZóL¢[\þ]W?³Â¿=)Ïúéêð¼¶ÇsG I¯`È`ª„\>éi*“œY¯òÀrGÎR6ë·ñè¡Z¹°œ5išåÀ”k„_?-_ ö+d—öx2‰=bãÔù²™/ºm‘FÓ§A½ÌË~ÁßR}»- ò fzN ]kÅC–"Ðq VuEÌæ@f0k˜®Øè¢È˜˜÷ßá'x># ¼r¸9R„«ß B ¡-Í=‘;ÿŒ€ø*vøJìgØfÏ;£i[eJ»_X‚6˜c¸ì³ê¾çk¶¸}‰ÜîG* ]…¶Ûe_dÙ#Øyá ›,UÛ€‹¤†Ùxå“¥ø9LŽõàÉ2Y÷Þ;ô²µÿÄÈ}TN¡Ü½¶@pÊÐqü7fDµ -Ž”tÂF?^yí HIÄØo%þ`®__O?HbnWBžk×OübW¢àÎÿA§· ¤-?Þž’E”:#bzàÁÃK^k±W*¬ñ>cêN„8Úýnƒ9B÷ß6‘_&›{#]›aß|°4!Åôfwâ6ØH¿Ê·í¿åNK¥ºT=‡6jàc7›,»Eý¦RllY‹»o,IU‚=·ÑÑ.$5cLö˜ÑJ÷lÞØ“1l±OGNlÇÈûøk9ì´Ö0LšÌE -c’5ÆžŠ“ÑÐéD¦ž…%š,?Ù¦£‹³œ *5þ¹ìôx|óΠvÐ;l’¶Áx¹Ïhhp³§–í«sÛ7„ s)OÖ'?a$~›5 [¯îÙV*6‡} Δ¦Ï;môÒL£@(çâ@Åõ¦àM@»ê¬0c°æR¨É§ƒˆÿõ¥2ñ”Å$E€DÓÈ ´ e¿‘›®ƒ÷ÖC_Ƨ¹g/¢=Ÿ‡\vëéay“Õ¾ÀC¹aÅ/@Œ MÞ£l6LÉå=_#÷Ìu-/Ë$uðt ÔO±Ý™F–xveV¬¨ŽÚ¡Á®—é_ùÖ¬iãÀ²]žYÁHcÓHð÷ùc¤¯Ú¢É¶Þ¢·ñ½¶èÏ­ãïÏ Z¡‡éZ_[ÏËO<¿¹òVó -7º7uô.bèö@±_C[裞´TØ[Ä[¨•ªZÚþYžºgòdÝ. jÌv©Y„÷Œ&>wÄ,ÞP!M(å(Êf}b¤Ž)¾}J~Xaº 0ŒvB’]zJPÐ~:\Î㟲‡.G"Ÿà§W6ú¦œ $8-úß*LP‡Ë¹Õ…Vr€Éæ/d©}÷È ™ÐÁ>«€¢z>“zn ៱‡ðè3³Åw…G+Õî(! üäH#Õ^SÞ`¬‰.»™vO|é£ü£ê3_’>Ê㨫„EÜ{¡)«òrÔ̲›°““‘<¼\/:@ïÐߌúcËøŠ¦½PË—‘‡s™™€ _áaÒ­œF}¯4‰÷â'–À$1!OÅzdV=-h+ó -›Af8EQ)Oø¹¼ã‹Æ]ø -9ÝtÜ$:†v\Š vÖxâ’s²*¥Ls¿w«!ŽÁÁ…à¢~ -ÉVÄãd?¾p}Æj z¹šàêS'k¼¤9SV·ªÆ›¯NÖ¯Àü -)º#ôëàÜܾã×\PPǦޱž`r—‰. ¹xÃâÔËéÒ?- #hÏÄáÈ„©s%:¦íS¤—½v‡ÍôÃ}·/ǘҒ'”|ÿ¾în=ëï¿)|K-«ò?Õ¢ñ¦|þÏ5aÏ’=Ýj³Cáž_ì„æòé§Âé3Vëépë’åþr®ýç[~; -¤¦'êé¤æ âÁ"s”ñY‰OžU™r~‡L)§ÀžÃ0<‘m*:¸o©xç_öæ´õgT»?êå -hGbdw¤Ó†1_)Àjy³hNx÷˜};)˜Œñ¨ïxcV~†ëêÔ˜ò}…±véjR²“ ú°žQN¼ yz ”´ÿ:zªE|ô×Á¶³'& 1-ˆžÑsÅbà”VX÷$ó §³N~Dè¢]çÂ;b«Q:Åö‚…û·L3vpœˆâ+­®Ò'‚ÒªŸZ³6ØàÙ‘ÎŒYvj×ÄäõÝ®—㦠7ì!ËÕ5§|šthûû¿ æ# ]r]!õ1!W}ª}~[þSŽe–|dm ´AO\hc%Ív ^Øè—ZÜ^~±±Q×þ¹<˜Pcø «·æ:Ú»«^¹ºÒKûrúBrÚ»òvº´s+ô=øß †\,Û°5)Ôœ-s±×»:;Ý%|§r7‚åw$9÷¨*÷¿Ãj­5ø™¨ ´ëÌOõØ -qO©vM¶`}ˆµRG"Å{:v{±ö‘}VG™p TЄ».ÉMÑÐÝŃÙw¢NøÎb ›ª>ÿÓÿ:æ-C6öïϯMâóXà£Ïžá/º ´'þéºw©4j“®JÌRÒ6W«uÚWËk9uÙ¢hq¼ÛßgñóT±1táÅ)uô{†Ëòé1Cx"² ^9bÉW¼Ó,’_†á?Œ3ÕèU¸iD¶ó3ëY* ¨´sç~œÂßl¤‹vÁ®gAÎóügZ© -øÒþöL,tdŠnp¾…étßéC¨M`]ät'¬*™›¿#Êͬw¦—ãr)’Ÿt'Z˜fJ£"¼Äóy(Iº´ÇC~ü[rŠbaËì2¡ï‚Éd»ý7žŽßÓþõ6>Å0 ˆvôÛð~w¶£h“G¢QÀÂÚ6c÷ˆÙ9Á¶…'U' +•ÙBÁE Lü&^ ;ÿÂ{7#½ãS}=”?Y³~yAíÛ(6Öê\©GS€ï¦;AÉîôÞ³õð„°ôýHw;i°*²ŒDJKXiYR¤PðœJøcÔ¿À̩֞3êž×Ù/ŠÞLÂ? Gƒxåe‹Í¼9À ˜CHºäÖa? *æ2c,xW࢑@O‹ýÿ·¹¥‰Nt[ ¨˜—Û¿X qó€n…E'GËTŸÎÄÜr³ª96ÇÙv§TqFø8Û’üÉ‘ßôôç9‘QÅ_XjÈxé:Ï’'@$ò¦²é¨½<|¬€â"° ¦gEmý„LoXÿ¯RËÿ -€Ø äñ=eàåÃ4–™åj…Þ÷0‘ô¼õ —&ѯå:m×M!E“îoŒªY/i«æü ijcë™Ök<ƒTÿ¼ƒ|)˜ØmÙ»EùõÏýÝ1¦{¬„1þó©|Á€€¶eëÊòk÷†Kôž]g"N¹Üvå)²õU¦îÕC‘á’¢Sû~™3qnÉ.½5èñ{JÙÄŸü?5d¶i$ISÃ4b¶’÷o|u­fUªüó+ Š‰Â:—SFj²ŸSô|N¬|<×owJ%!ž áàÇ;˜&Ò²SW$d0ý\µ´7v5ä ÎJ±¤.”ŸÞÄg5ÇY=W©"Û^êÐ…iÿƒé¼ÿb*ÝÉt°ÜÞLÕ ÓfÁ<)ˆÌf{Nëp¼Ø•²gŠêÑV_ÖÓbYÄ3Ê\¨n±ÜÊf»9Ý×ñšxþÝjQSĶ`\B)þÖo„/Ù«”0>á“’y«Ðžß§d·\:vBhlÇ5ìB–Ú™®AQ#í")䤊üÑ -qÄ– åÅÊ{% K¿_Fr%PXÜ»w­P”ÚXÃA™€ª ÝAG: SF³N3}6MfJÆÿi:œEÏ|·t„Ì.õÙv hžž§ü¹†lâë=Ø„&û"ꇵóŒ™4ÿ« …/škxæ¬aRXæcÉÒUûì {ãiÜy™ÙK\)J* ,Špá>‘ÇN;IX¨´Nͦ!Ûªó7ê2Ï}tgý³}ŒhÌò}Íïô]U¢È\(Ñ+öâ,ÂŒ“qlÚ¯Ün¬ç™&Ýfõ2t¾ ‚Œ¬]Åñäyµìÿ{èN‡uËÊ󣫾ý¦5d„È£aÊ«cLÎÔí½¢k8¶âZ¨ßg­/›båíVUß#¡¡‡—&–qòf­ lÆe’Ý®5„/Ì]˜r4Õ実ëçH%ƒÙ1ÕJô™ï8F:5hTƒ%ÓÖœ°É£Š6°$ڼб²¨"éÇË¢ô¸P¼8&ÚKÇí -àÜžµU tLëX½DÑTô¬ö1=¾ŽBÔ±ͯç~­T 0iUµvõ$iE*ˆb/Y,‘VüŸy(+°&1þÃÊ_.8òö¦eöx½šñðŸh%—fVaD“ð—6ò8åxx·Äf|]¶[î*BaMj’t#™œ“êgCV¼l†n0AzBy>by0z9h½áêÚøsáßN]žñ¶Ä{:™*ÒL5Ñ5àNšSÝ€¨"šÔ—µ$ß6¯òõàéÑGutµ-‰ Ù…â5å6Ga²ˆšÄÁ -°m×KšíýVßç=²@sZDöum\&¼ð»Í},Ó hr âI4Z!ÉÝÓxX`÷‚¨wˆŽ¿l5›Uo`åÙæ ¿úàÎãã-ŽR§JÆô±~ù±²„¯pÞg"µˆæqèvÓÉ·Ø‚¸ùvG^¢°ÌŒƒ²RãÍòàPɘVVöæÄ*-‰±3è«ÚÓ+ 3«C¾ ¼°‡­ÖÒ€AW¶ªuÔ*}+vdñùÁSUX8ƒàèaæÆ¡‚ßX{Õ4ð)~6ô涽*ípííëõ aÙ¥xê/æŒBà -X²G:3¾‹Æ®3¿(õ_!”šTÕ9Ôç1 Sßý÷Ž†¯K®2á;ñð&ÞRLøÒŽÆê*R_¬bÀ/oì“󱤸…ŠdÛÄÿ[í§±©Is"m -~¿ eÖ)½wçaŠò¡“é‡å݆K˜p—ôG¨¡Üù»OµWžMSÎh<2"¦h‘ £s³(7³Oýŵxt‚T‚Kqœ‹W_ׄÚvˆú(piÔ»ToµéÖýUêd—I5®¾1²HÊÙRþ™})›‡ ©ZߥÔôIÕ Ó:ó*ÛÖ9V´+Áú‹0"Ĭ?ˆ|rÁ`ÊLXpû2Ö«Ð9&iX[¼7Há©×·ÁQpöM¯»œS¥ùà¿–(5Vv¯k6<O:ãüôÚ0S21rÝ€Ò…YÕŽ{…Ì÷¾KnPïƒ2N7žkD¥†Ø þ³"Fñl˜ƒ‹BÜ:ž–ý{µ¾A¦H¥æ³97܉˜¬UoÛtÁ=àbÿŒÀ‘tõ 1¨T3lMâÿÆÀð»ÅùË«Þóà9ø%Šgµ  JóNÜÈ1ìŸDG,gkGïyÏ¡Sù:£Ïø'6RŒøëQà@ê>jËËZZA|@#E‡;~Nƒ J_œ—Ôŧ96åJcp1)¬±CÕ_#ŽÆ›n»ÞYë¨ð•1¿$"±¸·Á•è¯þ„šèGÿMµÛÌÛÖ¥µâüÂNø!ôSòW“7¹[¬PŽY ýŽÇ9è¦)¿‚–þ0-õö·=«ôºsn{Ïjïš—dº†”ÜÀîD/8î²r_ªn ÂÞ?¿½ßW -†t€êðjŒ4´‰ìB Mè+™ºl›´³3«<#w×yÚ æü ‘ -²8`×\æ™.–JÀŽ= ¡|R3ÂËÉ-Ð<ŠÝâ=ÉãÞöGF ¶pc£~’ ©­˜`l$ŽDSØë­ÁŸì3Ýj\$ÖDzÌ¡PÐ[%ºœÜ/Y|K -;HvRu|<;@]“z?xJý0m!ye5–Þ[Á”mB¿œµßs³Õ"î0#sO5“CCyrš¢ã˜2KÍ~øËM¥úw\¢ô‰ -!GÓ=x—߀ ž'·f¡–Cn ä$Ÿz‚¼›ö[€¶ñAÔ©+ɸ8]Ö;\º“û¸zÀÑ\(ëÐjµ…©9 ¹Y$È%Øñn´£ÞF(>×þÕ½ç7bS†Óäïóªå'¬Ê½Î™ iœ®À&õgxm¡Ú[–ÙÄMEG?¯CŒÿMgÒö<+Ô -øQ¶×`%÷Ï,wÀÇ™2XV""’`kÂpÝ6Y›³§w&Q6Ï,Þ´orÒ‹´¥ÀÖãÕCáû©a,¯¶‘æ{–¹·Û€aLCó³Â‘ f§‘ÍÕüÍæ@Ù% -b©™“9`Ê ãž+À@¤±q‰»Ô}'mÇI2"Š¬uÃàÙdÔBë_@]_Dý¾a¯³?“Su°¨<¬ƒ)à€ÑS×kí‘&.‚gJ2îºá’4$¶R„Úh¿DUÖ¹µ´}¬è&-àïçØË“vÑÆáˉrªÎ½ãùÂt¯m‹F¿œ|uU03V”ˤ$»Éxî¥ù<¶™þhdЀòWÉkUòöÎqÎÛÄç°ëhA¯,†OTÚÿ¼]’OºƒDþí¬·‚èÎ’í|=[hàùÕöXËþˆ6­È|Ê9®¼¦Ïâí¬r1º§¹'†ð˜”Œ=‚áK4¾È˜d²Ø¡wd“¿o~‚ozü÷e&]4}NKŸ|‰°ÓLî@DPtûeåPt\EA˜¢OùðŽ{ÆT$õÄr ï°a2ïPlm/\Z1éÚÅ¡uÚÀê<¬¨ïDMÛ–I½Š„nkÓÓt¾¶¹ÛÕÁõchjFtöò4SÄG§\S¸x÷gžŒŸ%78±Üúþ-bÜKt–õs„= *hŽB•¬¼8äñùü2)†sÄÍ(ùØ3ÃV3pYá¼ àÝ1£&Y-c}É vüNå½/n^ñEò¹Öa1ÆÛ.™{Qç è¦Í®Ÿ~¸­øó¡e>Ÿ¶a¹>éS˦À Ê»·!5W.ü•û´jMi/}bbU9´D—›qsï4z²ˆµæ´ù `”²S(ûþ _x) I-”÷Ó›6vÄÐ=±Ó6õ/þ¬x‘燺aÉðÂEcG= ËÅ™{žì z”Áê´¡ª›+X¡NfÐðU0OÞAbLròµcÑÖFatQi‘¡–©Îiο„J>S±Áq|œüôMØ’RÍì£#ɈmЛ{Åð…σ¯Ç…ì)Ts²!àëïÿ$ÏÈÅì/^ƒ5½Oº+V·ã‰øÿ‰c+’tÞ›Ðb) ‘èD·O÷ ±:¸³¨†B´^IpÉ­¡2ð휙hIü¥h„‹€ ­Þ~‚È•ý®U(WËøç=€óÝá46š- •gœ´À'beQrÚ0(ή§å¢CöÑ—;¤õK€0T“L(5§fxê¶û<Ê‚®t"÷dÄŸé´š‰1ãËzœVYCœ»ÀÖ°\ŒW -ŸßŠÝ˜Ïåcúæ±L‰kËîo2iA ¢ëQ+G•²¨BD héJ3Y×IžsZ?žìj;¸âó¯òENõW»z,0§.Â'²z-!ÔÂá´@)Bð°˜ö9’ãTÌN)êÐ`ƒmxœKË*Â×ZÎȘÞL”!áøTâ|&¸PYeË—ã‹Vß!¹>ÛåQÞÐòG~ Xõ÷™û&•=_£˜õõPšÇ‹U~´ÔGÈiF)䜋·°‚p{+´gÛµAøA`<çÙ5èÖުƢ—” ÝúTå±×Õ‰/Tße–ü†iíù‘kár!H7cä.”®:È5¾WàQË“ª¡çAÑü¢~${3ëþ¶¬}æxÍËÄ.9yÇz$Õüé¹Ãú&œ…SZ £ u­ »híÌ!Cò„9º™EYx¬gË})p9,o‰”_íÐnƧ)¹î?PÔ”õûÑaûÌ]ºÑ–fÃ`½’lŽÝ®pŸŠ4º×ígQø{/ª~ãàŠóß`µ“Ú²ìiljðuµ¬Óqü&wÀ-²Ÿí'I›ð¥Zž kƒ"U‡fR'¢ÊÑDÜ“2«ü«¦…DóÌvˆÕ¯ÂnHs¼¢, [0SœæÄqÁ$úó”%V)ÍŽjé¡Ã7.×®H.îëKó¾ŸoX9ÿ¼/`bYâ Ì@¿³K‚8Œ]Œ&1—åý©MìS.r íâÒ’«{éq.#Bÿ¸<€¹ÖU¬•Qñ "9/Ô±nŠkó_`N)ƒÀ-Í 2ãšó%íècHWîÙÞ°Äà{äoÊ*iùg«ÈöŠçîuâÃT˜HÍdu³#Ï+o+…Àßn½ë»¾²Àtv8¶Ž RÀ èæcÿÌðrC–Y -;Bó¿½LœÀlzü•îS8!Aå#"²_4^ZBlxzgjdksß5w1?Â2´uÑ!Õ C¸òˆÀ®f{ÿŸdôßJ…’  I#4ü‘œq´Ó@çç…[Ì8kŸrˆxÌhÍ*C÷\C½mÈ£«µxJ•fÛ‡9®+OFÚ¹©¬Ï{¢=-5Whˆ×‡ü&T£´QÇò»ÏXŒ>¯ŒþõìÊmÞ€è—=¿7+¾\z ®d8û½zrIªà²ß(Ƶîõfûs8Ñ»WDŒoó['÷hÔeVÒá¤ùsè•›07ŒAÄŽêz"ƒ«^Ib Ûw]ƒ› údOå·ÊBM@P.KÏX*ñIsÜÎȘ×U:©45¯Gô}¢kÿÁ>}šódd8™5çyvõúÒØrùZ1Ù¥¥Ð?&Ëçtª|‘‚¶©F9ûõÀ—HÆø—‡\ÓÂTûOö|s1g²Ë}¢ 4 -º‘ÿ <’g˜6¨.[ÐÂÒ®d„ œBá^ÉoÚ:Ö5¿­ÇGDù:ßà‹L‹Þ—mÈöiï®úû_¼~]Z*eÀ}O¼»¹Kà]ÿ+;bS‡÷Aû¹ªXXÈÏïÍœ£‘PžÈïJJŸEöIµ7\“«~·!‡ÀÃÖdãÅ *ýaÀ!P°|’G{5øÀm‘$£svŸ.ÝQšÒcü}2 lj~NaÝz?Ù7?šr0j;٘󎤻X›ñw¢8Ó'ŸŸ}Ì öÙVË–XÅø$®,ýÄtÕæs‰ýÁ‡CcLf,œh†ˆ´-•V@p)ì;TçÝÉâÎ=ÍøÈ i?¾;™÷/ -î® §ÇÂw8¥ÏÇ,…­<„z$èƒyGÙÍßлV‚b¼ŽÆšRÙ0S Ø·þœq]¬qž¸˜Š‡†˜{/_>`Lág[M\¼l±ÆױР-ø&_m²Ñ— ¨vŒC~aªkÏy€vFÀ'µÞU»ìʳÇ×¹}¹*ç"(­²ÓÂêÙílô^ΩhåØÚ`ÿµ`ƹlÌZÏU·Q³,2o{šý2QŽé~ÓUÛ,&DßQnÈ°R8)†¯hðÍŸMÊÉŽ¤F2¡Ì»Ã´N`JŽ;šë‹+€kŸŠbŸ dºry”s™)Ý­¤î5‰Jj[˱6TŒO^?Ø"OP˜¹(¸ -íãöZZÞ¼™¾…ÛUÃìÁ¸·# æv†¥_é³N˺ٕd†ÉiB­e+‘ˆòÿ¡IT“—‚%SáÎlüúÀ†ª!ÒÛ§´™u=êæö -C±×„Ñ”¨1½£íž/+@¢—ÙIu…z‚Qb‡z -~ßÞ£ŸÚD³D–Âäg y°ñ òÓ¦lpŽŠŸuétc§¿¬îk~‚b¯¾¬(îÜÀ±¯7ea6…¥¦n\SýÃ\kU ªt×= -ðíËÆK¨öOf>›Í<Š¢Rüü‰ymžõV¯ì vR9 Ê‹õµ?¸.ÞRK+daÙé[ìó~>”´Â?1ªŠ$¤/Lá…ý$Úé]Ñ&Æ–H 2 ¦¸—Úîyxò¯Œw~¸ä¼%UËÅÞºEÝV»Í+ µÙHk\lÕ#Œ¹J €K­Æ«T6Ú=Ç™ýH&fô|Ø¥ºÖãÄщZA_ÀkÁi(sIÅ-9wªó©:‰$+a’|²M÷{dV}iÀøaä)³ŽhÁ§ïGÞ•C’¶h;±CÜÕ63û¤¯dqçaä#W"æÍ…Ã\Äb¶ÂbèÆáÒ‚žX³òUWùÚ¶‰sú¬õ ¶ ~FJ¸¤K]YloÓÎ×ð*ȪNíÿ£Å;߯$XÌ‹`E8Ð:¬ÏÀJ‹ Å ‡ßNJ;̾IÀºxÑFG¯ôõ|ßµe]ÏêÁ©3/‡( ]T°=Pªð¶´©ø‹aa¨©`Tl"Ó" kk>c0‘YÁ‰aX—©~´—ϵJÈÂ(Ù?<’hæÏCt”@ƒpõ\;¯D\õ½ÖGCöhtAÀÚ†‡bÀ`¬¬ *œã_sc毌ÑP(Õ@„¦­­øCö?ƒgl|Ft¼yÊøÊKÏF’ÊÏÕ46ªç´d×DìÌœûœïH©fuÐ G×…}±lµ:/pælïž{ºB„L -xVÙÿ1Ò|*Ý:g^1ù>•½§t9zm½/®¼å:+]ïq—•M¾pº -€¼§ç€.Æf“½¼¤çdsÿEAi íQ*} H'¶éX/ö÷íìá> ˆä ቫá¶èÜ e¸´õ·W¿«¬˜hé¸ûË©¯ÿrU­úQÌl:„ÓÓ&û’ž¯¹Sœ›ˆ·æ±Ø×Ø“,g 3÷¬g]Û£¸Kמ ²Ž&¾„¹‰þõc»ïê› HC»š+eÈõ¸|dWÇ4¡’tt‡=Ò †¡µîw“§\ªOLfÀÜ#MAÂ(¡¿‚xQå8s.zxè@×Oíä“W\÷ßèÿMЮ{»ÛëM>!Œ øŽºÈfÛô vG|)Ø_i ÞøÄQ¥£jVº”F ÿ/`f~%´ åøZž}öïRÅ»{›0S)Âç› 4 -HÚ[ ˜ÑݵȦ/ù¶€@º‰ž¾[£À—5ðѪèFtÑnŠöSž8è£gµa3ž?¨EáÙVá%IpÇCˆâR„ÇÊ¢•©5]ÄÜ#Üær°³} Nž'ÕùccÎurÁÔµn.²;¿rA]"^¯žs"Õ @ö¯†¾—øÚ¨2n±¢´Q"éøñ2¼p‰NÝK8_[ù^ÌÂ-òmaƒqÕ·uŠCùMÄy#Íþ'yÊkÖÜB–ˆË¥˜S>`.7yït”ä'ÅõŽY¦—[ªûªñç"`GúdÁl9€§d£=V„½”„òÖ¹Oäê:›Û([íƒ'Ô€éÚ’ÿü÷²ÖtLœa@2Sòd̳%N` -oUÉûHçˆ1Ä%%l<’á¬äpC›k½ÈKÙê%$wd ÄÕMfµÝæ¶J'YlÂ4Äökú½½‡eèÄ金('E.|·ÁŸÒêž› ×{y_ªœk -8Âcê<‡³ñüE!¸涬ehkl ÊìSÔçØ3;üÍLæ1·Nd‘ÔÍ£·&íÃÝ3”¬?`ùžáæF£7K ñxAý½]aqàÍ$rê.Pݧ/H¡1]è`öR]&‡of›:ͬÐ5wªÌt‹>½šR_º°x±’mâ™Ò¶ñ®Om¸^$šÃA:£È‹Ñäœô÷ÜQ¼hï©'vIúbÕƒaƒJÆÀ!zʇÁÖ.¨·„§¶ ­‹ŽˆªVŽØ㎠UQïˆB¤€€.û½oÒÙõÞjK´i˜ O 1Èjž¦jAäóÌ.- C†cÊüeSø §¯cêôÄN¸Ð¬5¦`øŸ çïà0`?·è½§Z-'é#©rÇþCAôwl£;?Ouž¹ øGseX«ò–Ç©šŸ`h9Ž ˜ÓÜáŒQÄŒ7K©tößN ‹èPñÏ›' ½Òî= †·©ŽBøòúa.¢rzàß¿‹¾„õ~SÇŽ—Q~÷ûxÏ”S¾›Ý:±`’µ©µ»{ÀÉZë¿«õLÍAo_°ˆ7hIN<2‚c;[Þؼ86Ä~D«žù#,ï¡ËžÞ@«<‚$ ©¤À‰¹T³Ëò\¾õÔrù VÚã1s -þ¬‘¦Ä4Q/jTLÏóoŠè™quøì°eð™îe·‘Æ>Ư@em“Ö·Å–"–ŸTˆvò"˜TkM`2 ðÙëYåá¹-.Gõô‰kŠúG´4MI£\Ái¯Öœ„¡é[;¤î.Õ@Éí$%ÚDÔŽ4¼8W€¸76zq/zWÐ`É ½Ò;í±( { ';UÂô A}Aµ¦¶á¯O°« çõâgÑüv)f‹MX€Ä÷Ú8¨U¦Åµ-xÔ!QIߪ9)›€òŸ!²©Øê ­ YÏ|œoüTïÀovÅ‚ùž½ÈMDCÝŸ‚öŽ9“­ “Aèw`SôJ³¯WG:Åê§9¬׬Wôr0ǹ^“NÖË¢¡Æ嘔‰íw)’ÌC‰2‘½Î¢Û±b¸^w!î$_½i±NÞj¯¶« £ë©â¦¬Íô6,x²Ûõ(úÀ*Ázî^]ZG"QjxÀò(À£ rjn¶!‚ÌüTÊ„Œ f9ߎw®d׫l,¶“q„ô'~Wé‘›Ñ\:ò^kDA¤ß9a×ý^C˜CÒ¾n¿4°—]R;|ý¬WÀ?\R–Î'LU^Šþ–ðÛ4s-¦³"0³î{ÆòÜÖ)P,fy®_€ Mhül\„:3Ä„ôf­*ö~‘ì+KèÇMr§š©¼íü'JR"ÏS#”—!Ð/½A“{l~ªçÑe=WowÔÚ1›û``ªôµ@ÍUÝsT "PA¤÷ïʆ­ ­v2YóÂÙN°§#îYsJëÍ|TÛ©øÄsyšä€Ža ɦìÛ\›¢¹¤AÚ)!©g¼hl%­\ཨml`/'ÔÑspÒ˜ Ú:WžÃ_8ɨ)».aFª›ˆôé™UÙõ°Ãç‘R€iÒáÇÄ<¹ÝM3SU°âgeŽ66“:`ÅT¸ Z|‚‡âíù¢nÎËO9dUºÀ!€mO›=žÉrÕ™ U—+C]ë<ŒOÍ šP -æ‘ZZ?)nÇ{û(GÁCË£&v^%çl%YfãÆîT<˜zÆ—ÒœÊ>IŽfrxâö÷m‰în)‚¾…Ã02®­ó2ˆ”S†°G.¦>t³ÖqåÊóF±ŠýKV/ºRÑÆn¬É •ÑK9D¦;9˜Žm¤&ê>idh®n•Wlz*%~ûÚ^uÎBðàÍ{q GóHŸ˜ïìRè½J¾a% ¢¾³fUíEBdNHeÏËH“'é6“ÄâUÝÑç&6®S‚2Á9fün„>OǨû#b®)4 ÑÃá!_I»ë•ÓÿiË(ü !^ÃM ÚkÝS&þfìÌÌ"íOûÈ^¦2õD+½É·|U´Ôæ€fÙ¸^õmô²[bó¤{7Š4x«šªˆ%,µ £Í4~ª]L°;&Ä£C¿é`7´Ì¡ôèOhôÒdÃùºôœ‰g„Û_ ²~|ãxíp°C2·:j²Ñ³3‘âÙ$û&üa#¤·…!A"ý‰“ÅØÖ«4¡‰úDÏî=xYó.ËWöœÊÊωzz\r û¨0VZ`}çõÍà¼"oÖ˜îp˜àogÛ<9±Ãp$Þ0r«ÌªL¶dx34à ¶Cƒ‚†§AIˆ*T‹O -µë›_M6Ð nƬ8ÔV2iz¯Qìgóëy¤ _á™Óš=§^°–æSk\ -Ü¡ùP`3|ÿÍ9ù+Ëv×Óɳ°r0aÍtìh‹‘Z¶h™Õs 1z™hxºy„¼ðV©Ó‹:ﱟÒlžøΰo2ã×ÿê,ýè7]Š&6 r²?©xs9[¥:³MâM¯_LϧÏD©#ΛÊù"KmïÌÍû‚™pVÊS´UawÜ0(rÚç¸d$tÜßÂ×NDþѤí¯¾Š?Ÿ‡ Ø@±¿Ý„¿IM+7ÀS3H³¥OóxÚXãöc“*寀&ÑTÍHÌl=~Aêö‘÷åZÒQƒ]Ê?¨ŠG^ÐMÌéL±¾¶»ìÓ¯£öq•„AZ$~M’u2ÒT;Ë|¤]Ðöp}Ç{䈣jTÙÝ”uÁMDþ ¢¼›†gв;ƒï€ož§ä¿…¡ ô\"…ÈýŠ±kÁt²*45]jþØë<Þ( Ç,´ó†”Ê€ %EA£þG±Ðs›ê[†íÆâéVAšH‡µ7s©ebvk°ÓL$¨Ø‘ÙÚY*o6a ñÂò½Uð?ƒ³%câÅŸ®}¤íúU ªðú; °Ïó„PbéG]Îo`ßé™é\[Ò -¾ægYHú3 PŒlϼ=&3¾s9›ˆt©d˜~¾{EƒüØ;«LÁuçzYÖúT,q3ØÞ¥¾é‰Þ·lý¦zž¨a¸¶°dòÚ´ 3Úìý}Á×KÞ§y0ô"‚+±]ü‰¨Q\”¨÷æ càü·Á®pà˜ÃæÊY`_#n¦º7y̯e^À0$hÊLP<|¢ÐW²c,ϤóÐŒsp%>*¿È–, S­CîzHY»cïêÂgµÐ\:ë-ß=:­ËcPhlVºLrOß5'.fè”Ë^·÷eqÿ†Û±,ˆºZ¡nñâoÈ»aå•ýÚ'†V%ÉaÏJ[èì–ù›ê ³sY¤ï^¨‰†Ù§‹âZuGdMÔ;rS°… -Þ¦øî·ÂWÐã”7%ŽY6sâ Ç ^YÓÙ×wƒ®i-ºÌŽæÄH™c?ÒäÏf¼¸6^òš>ó~üÞ#—½kN¤v°éŒéAX½o†¸à¡Ý`i ©.[û²2ÒÛöîÒ©;EžGŒ‹UE~“í¨ ÝܸXÛSLñFRÒ¿Ïør-º¶‡ÊKwßùáqû¡F‚Y+ü"n h¢£L¿,Ä›˜v¸‘# þ?6¸ U½åî8 -¨}Ðä¤}òÙf#{q/³û -Ïï0!ÔÊwùp$š*…=ÌN3|çõe Š`ÙœP"(—ø H¨.'^–è…@šþì+é|^G³"zâåû¸µ&"» >4nv\Väšë„ Û¡•A×åÜ4„±¿´> ‘¶¨LŸ£ôâw«U“V:òˆ8^p,°ð¾‡”9ÖÓ¯/ž Ãd·ýNª,wÄ£nÊ z=­&wî‚WqYÙ/ï‰ûåìån,5äH†èg#çÎÞ†å1 ¬ý0µ]±š±õ|†ÎOÖ¨…w&°0É÷#©=H*NT¹¹Ö$ ¸Ö¨¨¼zɃǮŠà˜´#‰¯¦4§ìò8É,†ø-‡ž²œq>Îú0^§YêQzc qÒr±\à‚ %ƒB¶¨ÜÇôw×0þ¤TuÑGñö›•ç7 Š«å#© »ùSªrV[ø¡ÊëâÐØë{{Ü3#™šCq'ç + jdGrÛ Î“«`ɦmwÄ&0Ûƒè($XJXöò81q¯w•·&íÇ'ÑO(Š];К‘’B‚Hëºw3É'ð‚cîë\tìaB/ íRÏųx¶;¾ °¨[£²D7›¡#Šow=‰'ˆîaæ@²0M°DÅjÜq-À”+&Í“åJùP…Ÿ¿E.ÔSBý¶Õµ¥MUˆlŒÇ´­ ïž´B,ØysOÔ”áWr‹ù¹¶kxH-šüZé;Cs’Ùñ–™ýÀr­yØW>ÌË°‚s¨nÓ*Û&‹ÄcÏÎ1ٳƽ¿ÚûV'η¯×²MŒcλòÕXù—ýz¼Ì×µiBÒï–>úôBò¯"†›zìíw5²Ô}‚¨b4QŸ~ëb‚aýè Üì4uüs«Ê„áIÆÍ­T½m ÉrMÿ¡®šEÖèç½÷Õ¼ú\03íG¦tn«”ëÖµ%Kƒý;•(AË›+û¿¹«C2Ò4Ì}¾“Ñ$â'µ+Ðܢ¨1È%Q0¸#ûbÏ5ÄMQ®k]áç²Õ1±ÝÞ¥øYФW_¬Ÿ˜5“O¤ɧãSâ3§œØb™ù<­\ƒØrÀWzy]ªR+H!˜^/;*’Ñ'V d€ñÁsó½œÆÌÅ?ÒZ9±½Zý@š{w®&_ -³XÉ!ÇuüjÏ=ÒDÃ*žìg% Žb?IȽbg„öqáˆÙ½P9­hèÐEÈô:"~üžíNÔiþÿÉÆÝz´Ò|:¸ )UmÍ>N[ð£FL¿'2¥á<ÅuwMÈ3¿Çg‹îCÃËa€Â17•MbŽok¹höƒ­ð•Í‹µñÔªPQ(“ |ŠËMúÈpWÍYˆýlŒòùŒµa‚žî¬ã„À^¬kÁ—qü¯1Æa°&“¡… +ãþ#šµóqœ’¯(‰sãÛÍ>F•ÆÍ™±–³à Œ‘=V,ïD‹{åÿÓlð›§ëê0Ȧøí9‚6Û~åÁ=;H½’|œþ‰XÑœfÿ™'¥`™ÞyS„v¶JªZ|IƒÔœ6 û¶½‘ŸU]=­žü¬ÆêhªSÿr1ŽÎ€wz_¥“Áþ[,?†6èeßîCb¾"T‚N“’g"š GÝëMÅÚgÞBŠc“Çšn™ ãYÞ}²dHëš`Qæ!@êjyÑ\„ÍžÀÍPÈ<ì+˜\ØþCÖyB$ }Å:Û£ö¤ìn~¢ s‚n{μΕŸfQ¨ˆ½ÐKÛ7Oë¬HVUÞ¦ªÑ‘k·Ûtþ[D9@ù°íZ -ðl½Xª»ßÍœl›$Õqõ»W4÷–§h$(7ûá³Rg`ÛE–º/uœZqû¥éµð`¹iÔCŠ˜m:Ó æ¢t‰íJÙ -h‰âO2ÑÕªû‹ìÁžOÀÐR# %„®[  -+ÀPbVÏd¸ªAL²Y·&Mÿ^ˆ§뼄u*€U›4¿”·Ñ•¿OšoÍN‹XH±ÞûmˆÙât¤Ü=L‹>¼+<ü<Ù͋棞®‡ö"’)[õ+[CRœ÷m©—•Ê(y¿hö—Þug«qY -&^Ø”ðC8XaN¿Nlm”Ù4Xl¶Ò>)f㉪(Ì -¨@BJ„íö‹$îç爩(£¡Ñ”Ò ‡lÄóð.;‡QàxøÑ ”¬q ò!å°R€€ôñ²JeäÝl‚e• ¤ó*öD¤“,ȬãÀ;3: è~iå¤ÕÚ“ßaR¡\]ónî›´lʱYÞ¬¥¸} 4š'úÐm)tO a+˜–ýðyŠC—ü£énüRz¾V6p͆!;î[Û° 5€ë€çêèD™œ5"ÚkЃÆq °’mí1I#ÜŠãà-ÀõŠ²‘ý”˜‹6g½+ä\Õ¸y‡£XÕ‡k³»^=³ òäY Øq V$¬÷ñ™ kiòü‹z´—åK³ÒÀSÑ~£·€”þùY{k2u¾IQxçQP[MÀJ=–c­S!v"kd,ïѾ€Á¦¹ mÇ„ÅIáúKc<¶YšŽâNËuá˜ÉeDÌÚ´ý{HPln¡Ñï©Džs¨£¦„Ó â 1K³›bq&ÁY »ç>ù–õkÓŸßÕ©á7ï !ýˆXWÙSiâK;ð–²t©OÍ« å*¥­£•9kÓÍ°&Ã?I¡ÛQNqºæ -’‘/SRnâgïíÌ7f7t&Ž^ìY}qø@£káÖ™?¤ - ”š×9Íéé 1Š º)áËI«¶¦î>¿g;èÉͽ`p×q&oÎëϘ"À‰Õž¸fá›KUàЅ݉ý!’ƒºíÀ.1š7]V¤…'#UÍ ­™ ³zä´ì¨âvv¦Ñ¢:¨£.T¬A(÷Í\âwCñ]ÓÙ‹o±2 -Q#Cì¿EKªlçŒ)%vu°.øÃ6'Ëk6TŠK# 4Q‘sÒO‘µJ_MtJį~:¦ž/ù›(±® È»Zžašao›3w€î¤i -@MKŽ; -hÀ ä‘g&㧤©Ü¹NÏò6< -C Âf fº ¿VûF7T¡ËÕ;÷ÍV ?´àØÛF[¼i™M+V벟eØð¢õ½[ÉyAXÒf.(Îè8o Dƒq8ÛÜúžÊ¿–Üи–Œ¤ßr{ -œÕ1ê)ß3Ž;×J‘–¿ÔŠÔé)%ÓÉ ¤6o4å>LÆ'`%øǨb¾aÉ.Pwâuo…µ1_)Å„ú!æ°I-š ÍÑ$«Ð:Ï 3…O'(4( „çøur7%w™¸Y>uÝûÆîcÛuÉpK„ é…DœðÔ -¿˜ÿ=õàþF“M­}5¢ñ²âßĶLSr£÷Ù„“¸÷ˆ„š§y/Býz©¢€$Séê1³ü¡êÞß?Œ‘ln<Ý>ýt> Ù;1 Àû¢¢|yóÄïM}N÷èÁ® Í!™2/$ô“ÂŒåZ܈e½XÿÄ‚•¤ŠR5µæ'TÄQ¦ï òw*á+ûÎcLYÌ°¬¸§“‚wòvïuº²¬ -Ü[çÀŠàQvï[¦ýæ†rUJo3_ë/™ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Øöüö•mñO ÀCüQC>õ¨iÔÜOLÈU½O³*TšÊcàTÙm(™ß‘À߀ ãº1ƒí˜U +nƒAŽYXÖþUÙ1ñ2¨×èèÒrÕrúE^Oy¤"â;ôDmÒà{O0Ò {2ÆR¿BÊi³¯N´íÌMÃýÙöéufû–L´”o¬ñ¹nõÛâ>å‘Gl»_ëí1¶#<ðW”\’ŽïJºÄaâ½æ„_«òF˜bÁ†ŠÆ~˜ ”M÷PsRƒî“ÛŬK5B|«BuG‰ÓŒ8öer(ßVΫ0¶\òFÌ+£S“hdr=ÊéÊVd^ RUl^›0ŒpEÉTXÛ½‡Ç›í—ë]Æ%’ÁÒ[õ”áT8ݯœû%²Uæ~ë½25ƒì£‡µK÷±;¯Fª<´FS$ÆÕû²9dwY€-u&‡i$ªò¼(O´fvdz¦‹ hº¾Ó¹ +s;¯“Ï‘èB]¢rø„£œ* 3Ü”™ Ãæ_&+Æ ÿªñ‹œÍ4‡ôÇ9¡Ï^WJ òÐlÆ.ņä»Y¹~^à³¾¨“òXq¹=ÂË;agâ £CgïÏÃÄ _%‰Æ˜¾JéD­í>‘ÚYÎ> Ø‹’¢á½næׯ ,G#¢Ä²›‹5À.êFŒE)a"™¬²ó p‘˜ßqÖo-Ù4Ï`7µò}§Óº¤WÌt_ceuÅÐóJŒ—h>ËÌÿÍú¸µ>Wþ¾ªÎ! ôA5j¾-±v`òç-Š?R ïtl.ƒe)öµ1=Ìï–kdSã¤iõä!5Ëþ_lŒœ<Ÿ ô—²ß-^ó­ª+éÍš‘ŽôùbøގçÞ©ÈÜ–™nWÿ%yïg§õ͚™ý÷3¡N>âVpä9ÿeŠ.•¯oÀÖÛv’£ˆóý“€hÓ; ÂÍ‹ ÀfW´\¹ü^yÑ_øÜ“±š¢'Úî1︖œø]c¨*Îç–" Õ磺û©@A.Øê’æXïècǽD&Ê<¼r”—kö¢ ¾Õ|lØ\†Ù·[ne_@úÄ_TkϺ©åhô´.5G´ ô­­†ï[î‚\?… nä½;göƒà¦ŸÌ’\]%»ÐAí¥ÝVY 3ã”è×?¼ ³ßMhš•L”I•*nÁFçÕqÄ™ñu §Šeñ÷~ÈÀA‚õE Q€P+%[sÖÐVÔÓ$—G… YRœ}aâÕÉèüHງ´×÷õÃPœ  Ð1t'yˆwBî`©Ö~›× +‹å$óe1cww9üBî6$Ê—TĶ¨³;ÀZæ (4¤9g»ð6Èv¡¡f«´§æ4J Ÿ¿¨]5(§™Wð ø„šs¹Ô˜tàaȳÅ<[EŽ¬p­üT˧Uü¥!µ”JtОÄò ©ýª?,–ÎL?!w ˜×ÃçsŸðg0Môh¾BÅ1êä³Í$sÉyѼÏåÐÛç8G•º“Š(ûûbÏí>z¨uݬ£ÿ­·¾‡Do­eHÐòñz)Ž^0 +9JžÒW –©fÅ'ÈUâ€ÀIõ•c‡‡eiÒä+¡5¦¤ÄH,ârø73g0Ÿ3{#Y°«ò_‰E^n2ÖÝ¥»„ þš®Á¿xdR$;‡ž9ÎÒÌ(ìúû·ŒfôñÂ÷n*±Ï×eHýc¸«AóìI…#†y`©û÷µ%,tÅ¢\µ ì)ÿ_ãV£+µó7À\öMþ7AÙ4R‚ã"З…@ðOÉ!1í$¥¯*ϤóÐŒsp%>*¿È–, QÄíŸÉ¥H;ºEÖ×Ùº~b@Ž—näÿ¦ sשÌXZðÛ–…ì+ ”¥ì, +ƒy¡¯#ö/–!A¨§L‹9¦Ú8üøž¢¼üT»a/±äe£T´,‰ut/u¼¶ÀÌî6ü~¯® áº1ûQAÔ‚\ñSøâWä{N?2¤±â/ïóG½?ÚÆE£æ« 8¼Ó®chbK3¿qí$£þ;+^ÇB(ƒñ¬¼¨xšà¸‰k‹:wMá…XÕ,³Óƒ~õ‚Rçÿþ[&¡òh¬8AµS #L'ɧÑT‘p¤®ú#{Ûª½¹>É;+â­¼’MÞuU§”‰[¡ä˜%Vû0ºEÄ—‚Ù²ˆC9Ø…ÀS©×Èu^sIÓ2\ØþÄï’¢ÒÊÍ. +>Íj5ÃxBÄ’Úª]˸fóŠâ*Á÷‡g|Üšx*c·fr+µB!ÔÃH9Râ€2Hî4^ÁEìdöãöÄ>>ž›J1öu£¬•z¹&¿ÐMLLœ÷i¸Úo™Jè$!¸ótîFoµÜ¸§_µO>yù,ÞªôÎ+ø±#îD‰ Ùqµø¾ýWô2³û  tE"Q×IŸÕ…À§Ø.e]‚Çùl wÙú,•Ó*¡"ŒœMf]­—ÍÆàiðñ/FSóê‚’.÷ìsãç_.nÁ1 àÕ/€ßâ8,‰}̨ó ÍÊçðW˜“‹‡ HFPšsµWkn3‰áa¸9`6I¼åŒùÿ݉Wi¦>|ä =ÔÙÙ1u¬Åª4ÿ¤ÅÔ…X·’HAH +ƒ$ü-UÒÛÊ3¤³# +endstream +endobj +2271 0 obj +<< +/Length1 1188 +/Length2 2740 /Length3 0 -/Length 18169 ->> -stream -%!PS-AdobeFont-1.0: LMMono10-Italic 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono10-Italic known{/LMMono10-Italic findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Italic)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle -14.0362 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def +/Length 3928 +>> +stream +%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math Italic) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle -9.50 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def end readonly def -/FontName /XVBOSG+LMMono10-Italic def +/FontName /DUJUUF+PazoMath-Italic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 44 /comma put -dup 100 /d put -dup 101 /e put -dup 33 /exclam put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 45 /hyphen put -dup 105 /i put -dup 107 /k put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 40 /parenleft put -dup 41 /parenright put -dup 46 /period put -dup 114 /r put -dup 115 /s put -dup 47 /slash put -dup 116 /t put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 97 /alpha put +dup 98 /beta put readonly def /PaintType 0 def /FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-491 -316 834 1016}readonly def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-70 -277 902 733} readonly def currentdict end currentfile eexec -ÙÖoc;„j—¶†©~E£Ðª%9.ì¬>XJ‘ٚмD â"e?¤¸€›&¤oLH:]~•n¦X%„lþÞ¹”­ÏôdQ@ãa~M~EAËŸV.U‚›MØ€ª¾")éJŸ¢Y§4Ò›º‘º UËêC9¼¿ù2Îÿò–"\ªºÜ¡w¥Ô1·rlxؽØнtÿùŒaÂAÙ*Ó`¢†ËJpÁ¿Z+—¢TXì]› >:|s‡¬m’ºÍeaëŒØ„Œl¤·½v+¼¿:É‹£²D¾Ý([žÕˆÕÂG–ðúJJ¸£O´½Ä™I¦ªzÌ&ÀEnqšJâýEî†Ýðz€é¦&»CÍýªçx›h“+ ‘r‘nú«n¨»DœgúÃýEôŽ¼aw'À}ô”Ä|Ü ýꜱà$Ý%É—šš ד‘Z—VûgHTC(ûŠI_H‹áæÕ7}$¹%Ž\»yOaÛ‹'Oî¹ÀiÑÈ‘Ëi'Ç%Ïo2ê{´ô«PÉQÝwµåŒCÆX7%SëÃ?sê¯Íß~Õøu'iiqøúì³€þ€šN ÒÌ3w Q÷EŸ:šuÛ廕=šÓÛL•)M¿o¨i\ÉÑd·!Š®Ò<’ž0´ÎZEÑáR’Ë%qa‡´` ³õ°›Çkûâ)V&ìþ‰#û‚ÑÇRÇIœT´xMù‰k'ËeœkðŒ) ø}ƒÄIŽ¶³\ßqG¹#OÚëðv1ƒ;ÒdæpV5Ñ <Ô^¬c× ./#Q…E§UhÌÞZ»µµO÷¦GU˜c‡èeÿ¾5E«Ž„´»I©rô&÷¥¦v1Uçü4˜ÌSNä7èÌpk¤ÃÑøÁVe^qïÉT€†"šÚÄ•>î÷UѪ¯j "*ÚÈÉåá¯}”Iç’˜Ç]‹K•ÐÍÿŽ‡}Ø_p¸MVãÂ|~Ímv¤Ò5Ñ°¸žQ+-0"ô&'ƒ˜OºÖ`¶Âï iåÛmš¦h›¾)6¦k‹Ö¼eyˆj/ÿÛˆ…¨jú»Ýåo<“LÛÌC¹8ž&n°5Ì9È(àBüš,Á]©š;ˆ¼¯A‡4ÉXDÂÿ1Gv³èËJCò2ŒXÜ:.'I˜|ØÐ7ß©OŽãÖ—‹1_r:~‚–¯¿î‰ ŸŸ›8U ÐpÖ¡ýaErºÕ}Có±wú ¦{˱‚…½œ ƒ‡§l[]WóVëz,UŸ+gR訑²£hiLº¥][ƒcm>ǘ™b‰T08›°ÞÙ©ÿVAýx`üéðÇ!øä­ æŒÎw -.rmÏ){ìûz“´´"’ªý‰²5îxÂKå„0è9Ðu¤«@”ÅQ‚jS¾›_‰{•|Û'«¤€/å VF.¸ÄZ¤Á!z‹;ƒj”p.H‘¼R{ˆhBAŽ¡‡+Áiù*‰Ð?IŒ¢P„¸óøòaH‚È…Ár!ã‚~¢oë 2ÚßA9 SOœ}ÏÄž~4'±F§g»Cp’Ý|ºx{—ZÌ(HK›êÕ a[•…ï„,~m€3,£ÇÇñéTi”=¥EXò˜åa†©´}åÓÀËb9û-[Jã"O{R‡…ó1à*¤ã -–èÄÅl¢ë7H¯³.Ü×Hͺ¯ãァÝãÿ+2¾yÞºÊŦßÕkPG…v„´Õ”ƒ‘‹|¤q›+D€µè@i㻽IhJeþßH‘ìüõÍ=oÌu¦?ò6Ð0û+ýÙ¥r¨)têðÓlj»žñùÖR¤¾h§o1Wˆð”ÿLdO(üµb=¡5ÒâèN‡e@³cñ£¶H&Í•ð!™ïüôT¤ -Â)¿ˆWz½‚"˜_®×¶¡Ì‰VfíIfygñEŸYŽ<ºáÝ Q«JU÷»®œÄ$âwx‰SGZë…Éc¶µT* èOÁT¶ÿc bGn5ÀµÞ¦«¤ÞÖÞ2ñTMehXÖ=,Ðp8‚ W.©^ F¸`¸äz@}¶¤4奞3å¦Ò<ñT¿;0"eëø™Dï€Ï_9QÅŸ>  Y©cpìþéÅý‘ô³c÷†Qþa×馦î½m®+—rf]¸kLfzÆ/ÇZ=]n—Ì}Ùx·Ë8ƒìH’þ È›Q;}Ø7¦½ÿÓhG¼ñ šéZÈÇžE×£ÿjLÑ*m]Û´¿gN>ï2\s5ñ¶ÏŠ]k³âi'llG^}žU?fMUJÐìf&ŠŒcvRm¦a0$UnåÆÑ“IàjV;9ÌÛÏIº7¤®B›y`‡C‹Ù–ìgRËjQò‡bž»¢ºá6½0™þ” ·þyñµ› ý®,>vÏèîúÌ}J²b¾¦Xªg¸üPx|<ÂÍ’U%©ÀŸ`çÕ¬Uò.`ÒÙ -Ÿ´×½Yé)ìÕü “C Ã’ÁòýNþÖ‡0FñN… 0¼ý+jI¢‘&Ì -ØË{e~îØ_'ýX^®jRT´:3€Â䘙Ð7Ù9·rÖ—[X0%ŸlOX?VÁ'ãfmøGmZŠlÀ¥±B Òë⺵ˑ1§mêÁf§ÄI¥IêQõ¿yÛçwH(xtçÛY8fûRëžò±äb5j¼¼t‘ ë‹®‚ÉñNŸ;tKQÜ×Ò–_׃HÎ<‹c8GÞ`ŽdP]èj¢|é´Ô‡­j -ŽýÏ&»É¶©Ð¤c¼·•>(_Ö&áæ;óy¦¶ úÔã]À¡Ñè -‘±•·àòçÔª])J×b> w«’33ŠÀÚž¦ÙåŒÎ¾ç`ŠÅ¿„´¥Sçáævžmß¿LÆàoN"¡uÓoq”ÁðÓ–[˜‰cg† †7˜'î÷B–·wGɈ«é -üòUÝ|€$]žŸÔ4b€“©šak½ÌЃÙÄ Õ6ȆÒ[qÄz¶B³ªùv_÷ÿ.ÂÂAvÜô$ϱ€WäÍBÈ®á¼Ì¡ ÂÂÏmûœ÷~ð|Döôä^ʉÃ.ÈçÅ8Ì.Lõ¬ì´‚ü6¢2`dÆ…tû|Á¡]ÁE04ÿê$?ë¬kÔöJ!ÃËXg ^ûÞbÀÓ£JÛˆ ¦ä}3œfü$‰4P-dÔªÃuAz)] ±{'a[—Ï` Bwî~¶v9+„ÏA ^9Wƒ°fÕ¦[®J°8~@%|æñüF,ÈThÕ›Ú -rÆø<÷HÈ“ÙBÁE Lü֥ƟïÂ[`äÌëe—`€ÉÉ;Ì.‚sî4äï{8ùâ«=3bþ©¸1âiÄü‹,uáh¡1¯Çgs+Ã2¯Tpe:e$äýÏÜ­Ä -U;(©Ü3UŒIi”w>gª¤Å3î‹ý -ôîº,RŽâpØ‹¥4eÝH?6«j™Q¨xÔ[ßöÓ-ÆÄ-ظÜÞ÷y‡È¿’'˜„("î‘Ê_TÛ´Ú$Ñ4—ëæ3Ùà/×ò|…,—Îác -©šû“ÓTƒXЄá<±¯©©m5å­žÓ,ßð„ÑÀä‚…ë\×qÐE)CdW ©è0Àe„…Êcm|0Ü@ÂئïM…5^Yn&¶uå´6M—Xÿ¼%òÖ`Èñyƒp'ˆ°iÚffd¢ÜßCVì¿3%¢IK#ôsyöGð´ÞCh> Mú[’ÃèJÙC~Û}Pq_ýyóL+ ™ðŠ¬†Ý¢N~–׈Tr¡ó -]uÍÄ°Eþ)”‚bâçƒE±{‚–†Â=”ëêlžeÎݶ áø— -—;S I×W4Zi*I.á+ìNyqW· .U´>u}²’ ©­˜`l$ŽDSØë­ÁŸì3ÝoFo€3,£ÇÇñéTi”=¥EXò˜ã†tÐ94E%$â^FàÚé!‘}ÕØ7êØS7†ÐkDs#©ŽÛ+€6'1rf*gÒõ¦øoû¥Æ&z* ¸Ì{Nl'{{¬iªÁì5¯,>gJS³¥V~ó]X;©¼”ñ1íÉFÔ!´!üuÁ>ïìc+&Z¼Oqd4IGRiÎŒI‘ Șzw»ü úš’‰†ko|øÂÑi¶{2 [‰¡ÆÜ0B(Þ-àT¶ý½n¨¥/æµÃ¦e /´ÉçÕäôoèJò™–Ú~†ÐúP„IÒ!|‹Ñ!s©ÑdUg~2ØM¢CK”¬àöK…"Kƒî”…&”==~[÷Ëï†Û*±Ó¡ø™$‘Òvbж#šÉþǯhÓR|-‚âàu2 À¦SøôyÿHÌÃîº+uFXÞ±ø°{ž†A'âP7öò&O1UÔÝa´Ì´âOƒ_ˆ†ê.÷éÁesgO3LI¾ìõ×RÛÒÀUMDY’IãZEn&ñrÒ–?”sÝö%Lb?Ñ3Q*Bh{KfrØ岿QŠÊd Ô `uʼn³é~qvb©}´^Z– 0G>Ð…®"ʸœáìiXì»1($j2þjÈïn”›¼GưƃgNEÒÓ^•ÓÄ<ÜSàû“ê[á¸V îŸAý y¹º‡jÿ§hóàäÑ)E=̇ÒKî¹Ü£ñ½æ·ˆØÒ\rê_²9p«o%˜àaØ2áTue)ÝÒÁ$) òs6à ˜Ñ5àÖ×}ÉýTÏ!òÿ3ó'[Wýk"}!,ñ³Å\½·ðž³|Œ¨lœ‰Ù¹+4¢á²c« -Ãm‘»;qà@¿å#$Ï…Ðç n•x'á,Ë~"wEÛá\çš‘Á3+9|×¾õš ØèzŽ‚X‚À) -{¹•˜µt¹|@`qR"ÐÛ¡Œçæ˜#}Õ³|¡Ü®ˆ%ôÆG"hæo’p?OKÊx-"Ø¥ƒwõ±–äÑ\pîbÝ5™ƒyMõixÏ;ˆ°ó³ü77eìϘߒ’ßy^X5Ó‚~Œ9wgpÿ?¶ú^( Þœ±}A§’Hj0UE‰N - -ì8Dǧ›®ª©? Ix ù^{Ûi¨#ЛÒá Á»œ†BûÀ…F\ô%sÈxåáð©/&P\CXg¶ºJ;ѸI ½Þ9ÄYíx–*Њ wóx®¢“‘ ÊYé<`X’ÿ×$ÁöR%½OØKÙ89k3›ØgÓl˜õÄâÙD§¯iöÜ‹Lyp¤À:r Û©ÿá×I·6Ùjƒ9iûW2ÕÚøõ®®b›y/¥D=w3<‰(î¾ë1)Xqr¨}b0ûÇ™AÑDÎG9០-ß -&M›øì°kQ—æ¾4T¸Ê¶ÕòScS/½²O“â«+¤RRf‘%£è"Ž½Mƒ<.è¿b{ùôs¿À|î¿Iñ±/Oe“‹Å&{ú¿¤Íµ; UëC%N†X˜cL·hè]*¹Œ'jL‡pÓæ,~ê—YÓ7¨C~ Y®ž¡öl/ˆÀcUÆ#Lš¼zTË—!Ù±œ£ñÅ‹pÓ†Îñ_‚bzIš—NDÃ5¯ãÜÚ·-þÝl+›&æT.ƒáÈè¯E2U|§£+… -(éïy×òžy?oØõ;!Ÿ/1Ùã”F|Õƒ¯ngý6,¸/±Ì1nZïÈ.,xy°Ùj¦¸@>xl5Ûvðæß²ðɾä"“Ï”asÂÏRW‰Ô”’¿1õSbן6,0]8eÅ -Ã!ZË=µ‚Qo·$l{GáÈk‡Ø„ýyÅ|ž©”èù-ŠzW³‰þÌÜ¿·°ÍnE~#¶Ïs'¨úFpŽÛ^œ?”JÛàm7‚Eùψ™P—:n¬¾s/á€}Èò•úÙÏ묬Z†bÖ|QùðOdÝ¢}xnù­úÔæadWþ¾ûÐÉ/Œé×™UëhNo&›H}n¾fnW¸£übü8…`¬š+ s}³+R‹¥F5P÷§ªâwd˜ -åâ-4çLÇþ3²÷Ä<3väøjSfÃ}2³ÞdLs¾1$…ù}Û´XŽ=Ôøäþ“ëÑ\™ ÔÏV0'Þ– yÿŒçT-·Éåd(3k¸Ô%ÇR`ǺŠZGfîk‡˜ò‹‚º´'Ò³%ŽËxr -Ýžý*dúDâúì)!ºûØhü^Av΋Š˜l;«ê¸À¤â,X#R¢hœåæìÐJ ¦àH›ù!5£”8+È¢©Ky K]ÈR^BÕóï ¨¸<>ÄãÁ5(nÓ²bz){yîÍC¼á&ËF´ÝÍoõòÛs%›6) -–̱ÊOÇÝ|ú›%ã×ù†°#ºŒæ8|õlà%žYšÃniŸÕ7?Àb#@IF"MŒXúù¦ž ‘³êÝó}¶Ækxõ£z¾øÜáºAå)ê&¼#¤iá:»ÒA˜Löàëkip«¦?å? ã)ò` ¯hX)&ªÒ­ÃÐ"k[Œº+ÚÓñ^—pDÂGh61ÞøxÞQ™€—wŠ‰šn,/,·éñlØ Æ–þ[©˜OÇ1’2¹8j“#mGÄ'$¾zptr,ë•4q‘`=vsý»ñ´p’E”…Ú7=p¦HV^VÌF¢Ã[ˆà"áӯϑt¹+R÷õÚ_:9ýï­—è8›æ¶bw=EW ¼`â·q:³âP1qOL- !í˜1«=ë‘ÍO;R²ù‰‹=ÉdCƒ¥õ®6kº°t¯^X­¥›ÒÐPž¥ë‡}W¡yÿ4š8#?RóÊÐèCâºèT§v‰ód‚Ü7G«2Â"õÂ=´àX¶[¬ -%ÃܧRÖK{Ý©I}ˆÕ$óY/eÅÎT˜Èœ9ó{—CÓÕâÕƒ¿[*zQÙ ž(b%¢bÚ>³\†åBÿ#!¶mì/fß=_ŠL+¦C¿êÁZ\…=ÅŠ;à¶8áfÚ6,Çx‰T!ñ¦`=.¯·ÜPkœêxøy„ùp§yq>åFhRyß\Þ˜úÑ{ó t4<ô]lâØŽ'%¹*ÎÖÿ‰€ã}A` p Áz¹·ÛŠñ̤PR‹ iieDö±ñ)¨¤’~€Ÿ¶ÔÂ÷ú†&£Ú´o—Y0¿/ãx¿ê¬HÈØèì,`i¯:…òL¹"ç€eJ™é¹ ç¼w…ì< Ê GG"Ä°c¾]g;qdZ‘*Í<›¯Í³.Û¢óåÛŽi÷‚ÊÌUnMÙ’joƒÞ³áq—‘×ã£èo-ö¹Älÿ$Nc/·Ú7Úäò%ñÍÂÊàÏêiö#“î„;Ÿ‡¿T½’—[‰©}´׫„{¦Ê¾Îæ~B¸ôžÐh”~€­£ÄÊÓP¬67.Åp›Rà½ú Ó%ü”{™Ž¬=gnñ˜d´#ï$(ˆvå´š…æ '`¥HÇtRâù† Iž‘ƒ¸0ùFVÁ¤ð¥Ò²&GÙÁyL‰–FÛbÊ OpäûÁÅxMÊa‹ÁƒÐ6ÅêÎ<½™Où#'g‹P'JÐßr#R—Ì´|ý»bkTVrfê/Êe¼2ÂvyiÖ«â•/™€krÚ|ÃúüŠ÷‡Ž°«1PªLOmx,Á‰ï+Uv­TÉV냗Äâ‹ûÀlÉ!ä•DYÎ;üzªº1u.ÿÜÃÒq>î‚W·;²ItM8M‹ˆ»¡êúTFc÷: -Ø¥`Þó°í­žẆá<ŒV_“Ê>Òe!þSžKЯB '™==dÐHÎ4V ¿Äa⤿wÁ01tÙ%°zÌÌÐüˆÊú™ƒ–*ô€ÃÄÃQÞæsM à âh,ÏdÌl‚šJ®d…&e¼¦´Áƒþ•ïªÞ6vYƒQCBH»„%+"NÛn‹bÕ ædÍN„´Õ*É6Ça6é}°Q¾ý9-o :Õ,Š™GH€™£r±9’9[Âø U/°‡`lñóMTÝÄåt¥Ü[øWB«Õ†ècˆq™¬÷6ý‰¢s<‡ÐÜ@Nþ Aè‰ P.Δ–'F8QHëĆJã–7©M•j÷­¯o2jœðxŠrCÃF!Ë>eH{r¥N N̆Öýz]Òã<üÁJ 1üŠzo}D‘^)¾Ûïõí•Ó æÅN š93yõ2Hèöýb÷¾æÌ™¹½²~»ŒO=R{“oÖñïÿ˾J´ÃÍ3_>‹€Êô ·åYøòÇô­`É8÷s=¸5¯8òÚ­Ž§vUtÜÚýR«þÂ>gúÒi’‚tL(Ë @ññ;²ÄðïZ5Øbëð> -±»¡\‡˜l2ùô)ËíüøÙ/ µ*Jµ[X¾ã¥mц -sÒê‰(>†Ž]7ùc¡[ëdž3»àjŸVcwÒÞ læp¯0d¼œsȹ«@¼ŠžêÁ¹:äëoVÓôo.^ ÄЯ¾Ñ©¹ó%ÏÁ¡“´•–³»ºîšÿâôež: à}F*.Qé׌ «‚sž{–R ÕVbú¡8ŽßÃÌ+p¹sQØßë7ÿ˜ñq–ëYK¨—èªWÔ£ŽéèKðÚâõ®¶šŽë{£Rs¢@Iƒn\‹ÚïYõyµˆÞï¿ yÉAÃ-„JUÞÎ%XInkùGEt -í¥Cn0fœÚet.ÐŽFTÿsŠoX­Û‡Ý ˆ:öUu8P¦7V]Œ¢äœœ¡Í®Ìû,;.ð9l¾nEC¡L4ô×(éè ’y9)Ì=A—l£ð£<Ũ0µÅÕíøRÜûˆ¦ÉlOâï»RCs†ãéIbÍnYÃ$KÈœ)bØ¥0m¡Î\Ò A‰0˜ÜXíÏ9¬Î,{+H±Ú¢®ë¼DlF-¯õ­óxEN¶ñ4ªÉmÁÞÒ4ÃsP=5/0ŒwcТC¦Ï3ÑüW–®iüçn¡‘rÍ÷R͉˜P?‰( r’NAe‹½sÅ=«&Œ¤^5=_≽éZbõÖˆÒU5·ÏÜ¿Â6½Î›×u!“<¶?Œ)%ù‘o‹‚J‘÷ã‘FŠ–+ª|nÆ9¡p€3/èøFÆN7"$ÕP%køÚTé)qÎþè¹$û1œÙûy=ñ}<ù‹=ëÜÇFù®«´A#ðúÈY'ãºÑÌmk2o±h’~I%S&„¤)öSkyö”Á*ë{¬¯CW_²#í~¯[Ü2¯Øû1w¿+n«Ò [·}ÓTX¶b„Õ¢ätSŠRL;…³{h‘< ûíù¾,â¼jA }íЂ, qîYóíÆÉš´ÌP ÑEc‡¥"÷ÂU&ãÕàìŽï¼’™‰33˜'í„OàwóŸm¬£zÙ -£oÕ‚íÎiîÞ% ÅŒœâ©ŠŽæÓ8`Éê»xOç–TçÞ¶Õ–ý¢A61Yˆàw2ö™ó‚¶ÕC×´áN¦\`(ÎÍóË´n(DÕ< -µS‚EòÆ0Ô‹Ï8tV¾î›µÈ} µ¾ —‰ƒ¯ê¯o¶xob÷Biî½&ÿE=ÁM™ð$‘5JþÓ|ÒŠ¦¶¡ÐXkä„…«:ékº´,#±0礧V‘ËO£\Ái¯Öœ„¡é[;¤î.Õ@Í% ±,ܲÿ R& -ÕPoñìT8¯†€×µiY³ÃVy¤Ÿ³˜’Ôéú^ÇÁ,2¹ÿ“Jó ÖàŠo5áÙV¡ŽL¬oíšúsØÕ,°í‘AÑ`¼ Ó<êéYýS°N&îFŸ^I–¹k;ø¿òsCüšN3:…=À3åŸì€„>òEºC…¸Þ¼âPÚ2Ôý¶j¹MÝbè‰}¹Ìé£qpðÀ*œqC×"ÏÀ†wb'¯–fý‘ƒß…ºOKÖ§pDvu9Áý'ëÔ0ôf1be†ýw’yõuþ3>/¥/eË’[Ú\˜éŒ{¥â^áRþuocÀe "ò ¼“ˆð7{CåÜù„¢¸Ýk£JCq¦6#®eÓÊë€A:`D“±ÂMYâ¦õ…XÊ'N@q~šõ={Ó‡¸ýA6q#ς؈½ZÃCUŸ¼rÐSçטA¶Êxñ&³úk'%Y~æ.ø taŒÁÜZU˜CÓèlöÞ¼ð‰ÿ‘3`¶¾a쀅ómq’O¼zD#vÕdÊû_¶*Óî\^æÚ*8¿èÚô¬¼ÆQuÿ2'k¾”Aô¿Ýx¹L=ÍÝpãÃÎ7R¦h„l\YöðAn AÓkHe""] dÄsH )…-Î}mÿ‚ÅæcyýÑKqIrEÌ‘e#•Ä,Û™Gs;Û°K;ÀÔÞ6”o¿ÄÑ„Ë4qùXù‹]A3ÕÌ¢ByŒ«ìˆþ"v$‘yn•Ç“Àð•$B€­‡ eÓù´LŸ7[œù‚Ð<KÌTµÐµ)Ë®JÙ†ˆ?Ùâ³·Ø”À²:—ЀÂd¿ˆzKįÀ ¡6ãEÚ-æXƒOS—CÇÝÁ9˜®ƒÇcæ×E~¨ÍÏ.ªÙ|mšl'tS4àtTbv~ŽŽ¥<˜…>Ú§,)ćB·ËRDz_ÓÂ&_(e;1z‡´‡ßg)|Õ¸Ýò§M K­GÊÕî(ð¯U¤¸d¸"ä½Ë¾)ìS$‡e£Š¨ÅîÝ;GH%XHu\‡$æIùü‡t\,ôF^ñK¨2¶ÞÁ½…˜m ]Eu‚é ·£ëû¨p°øЗÌlŽ¿ê8H Ïe/`.$¥€0 Qɾ|ºb—惇¡a÷,‡PHÆa 1, -“S†}Ú Zâ}è9@+É)“Ý,8HÖUªè`qV)“ª;°kª€5‹ÓŠRóI#çÆ>œ¹â„Ús<¦Ž/ ýeÝÇ/è7\‘ûÙXAvrX¸&Äc«²z¶çFοœè³IÎ~/9Ó½ó“«Õý´ý(¦íAÕù¢XfPé.—jB`á ¸{»~Êh ¦Ä9µ§™^”½ª K’ðÉÆ"r<¬UôÕ#f(s–ØïZÍUÖxÿO‚páÀã6PâO5>B:’TÜNk^¥vŠ©â& -ùQf%Q§½oÇmW Öª¶Ý†rooØŠ¦yã>>ÜD²ŒÎu°ŽÈ]÷í–ú >2ëq<Êê8™]ñ04CÜdÅjæ¸þ¡P9QEO篢œÝï–éQª©¸î³ù·¢®-£iƒ¢—%\Ú™Z0¸JÆ´Iè gº5Æúûý˜Â–‚u4^«»é‡pm"§ 6Žyq*]Ø®’ß÷áá³”ôv×dE´å~ˆ(¶ j°Š=þ˜•'ùè2%–Âyz_†¢í‚Ñ_Ì?Ú—ÕÛ 99.5æ[ó+¥HjU -† å†y“—$=±òüZ‘Z᧲rÐ.=xâSQÀ”K*ßÁ'qÆÐáJRÙFR#³íž&¥Þ·¸“’—N ÂA>œQ"¡p1\9Q¥®ÅÖ¼÷Âé³ -b8v,¡LeØã/sÑ]¨zžQêÒÙ¤ÉÆ´žË¥MÑÄv®µÚûsš+C¿¢6<§O§&hüv¹À¾·MÃ@*¡ÞEü—„»i=¦ÖyÇ ©Ç=ðÇôQïÂ&Ë;ÄAQ‚ôR1ÛA–ÑyÚL\{äïõU³í€M%ïÙr—ņ$ŸãŸAo³üh¹îQüOjLß5/ßÔŽvÅsrSû]*㫽‹ZýC¢õÿ¤G h¥œát<Å=–¹@&¡>,R:ï™}5-i6T SÙçˆö×& J]°À^i¢9õ/XþA‡)=ê–¼p¹œÚ™Y^=f®ÜC3ùç U¶ ~sU>í4ߧšî=ý˜-.†³ËcÉhC•t˜Ì1SU3_¡ñ®éA××H3ËB÷—d+Ë{°½€j”¾nû(s<ãœóØ«ÞJ±Tì‡n -é§$£1 <è4Ç¿ ÈSª´|æÅl bÀª¹2ʾF%6r.•ÿ<)Øp–óNTvZó’øöšé—ØÂ+Uúí#¬Áêó™ßÆu|òÝ„ýRþëqP«›_~YÿC–æ7ÓC`0‡"ÞNÁBJ6RzZñÒý§¸Qoó)Wd] gå7À½aºfMÕǾ¹…. ö+²*:Q¾È»˜ßþ q[Lzk8dfåG`ÿ¥©üÖ{a‡´` ³õ°›Çkûâ)V&í©h -„X%†æ认?ÕEtde -Š_wRƒÎ<ž œ:Õ`»É§*P³Ÿ6z¶ká®RŒu&.öŶ Ø'p”]=ll;ï ŒÑXæû0/Û‡½ëÇqÔêbžTU\úæ„6™äÃ9O­4yºÿ¶†FêªÙúA–bÙZWš¾Vfz›uÈvµçÄò…ù½aJÞh%W!‰¡“­>|CºŒ[–„£Í—m!@¬Æú?`^éåXy´¡ÁG»F‚¦)õ;Â-ŽÁÄÕa³•µT¤J@ßp+E •ËÜ!õ”50XÛÛ‹‘±ÂH¥¿óû³Íèÿ³È!_¡^)LB†[ÏT“PË£ºè`bîÕjÔt™í_¡˜!–@&Ô€QWñÂ¥³kŠ l­©¹ó$jì ú_;«Rĵ’Ÿ#õ«O§@Åèg¿/pÕ³àélqGŸã¤¥ÌØgå5zœ!Ž ܾÅiÙøæÁÂÆ4è;epëŲZf>ŠeÞ¨ì7‘c˜ûŒéUá-Š‰­ë¤tØ™G^SÞu@P×ã6•FêÓ´²ásèFÞB”\¡õ¨ -gÒË_Ó‚™R  -)G1Ÿ±dërsizè0z V݈„H§éŠxù]ìXØGÜeéË7£û´ÔŸ?ÀA€šÍ¤UÆ*vµs Û=;@#Žiî›Îü‚Õ½‹ÆQ½-~èD¹¨îPäÄF«nÊìTQ˜ Òuè—hgGW1¿Ë÷y“²#ĹÀUÔäðÏÔ¥ýÉ„o+Sï{ó¹ Yd|­/|QíÃÏwRoõŸý`a#¤²ž  R}û•d믴)%e{ -©[”8N_¨ß?g£½on/ãÐ</…^é2´FlP›µ¼}f–c>µ÷<ÜC3xÍß›ÿ}7IŠn/ŠÂäÎó?hyÙç:”È*–R 2=ïMÈaùèÐà–¿8˜ê¤Á}SäÏÆ¡}ǘ™ë3Œ˜Àh©–'­Ø3¼Äü£RñA¹৻¹ …un»–µêN„Tˆ·–„„á‹ µª}±÷Œ^R_SRéTŒj3%w],·p¶Fj ¤v_]•ÌYûŒÌ&¨¼ ãZNdšwÉÓB²8§{Ú€ˆ‹¤HLq‘¼ 2ö ÜTnØM#ßèÄOãî€ÀØ•APÛ>,«!J’çÍš¢Çôɉv#µ&’°#ÆYíþ9б¹dZ<XL{ÚðùlÕpÕ™ Ù´Ê—&ÊÅ"L…?")ð³5t°L˜_f›Tl€ÛÉáÝçÄ£4ª»Òde£·ÄP ¶ÅìÚ׺¨ÎÍÕŒôjZÐ"å=ËuÚ#*¸¹ÚB2àå=«V½uŸªv¨ç¯I/cKµDçäºh†ODÅΠ¹Élw,}wQy~D f% 9ã97]`£FŸ÷£ê¾™o^vŸ„îÑXárˆG˜‰[Y.{•ñ÷Ñ9PàÊ…jÛ5·öcŽÅììcônÁF–`V|ÐEGõbDÜh8¹éÈ3‡×øš®æWh&2˜|=™YåŠêï}Tž!¤11Ă}Õ˜ÑÛé}ŽdÐéé/¶ú!”;©ÃªEéRWÔ´A5dXRFV›ÎEÒèº*%•&/Ü$±ç¾Ó…º Í­úŸ-¾Ö Jèä°\äF–‰m?L \vª@ŃÚÆ8<ÓÄÇç5£¬Ëk@⢒MeokÞþyš} ?ÏÖjƒý¡ BE“FÈžá+w¸b¹ñæcçS’z‡Ãü¹r˜Ê=Λެ /6Ào§²b—[1¾Ë¯+có ™B£c ýo&»Ö˜î“:É£ƒ„:8—ÙÒC!Õ°ˆ$Q8–Ÿõ3ˆ}<3`rÛ«8>§C¸æ¿ösIÁã&Ab ¦ÈJÎÙà-žÆæ.iüm³hbÚàË™‡ºqsʼnÚaV¸\Íuu#2eˆ8¹ñ(Ï÷Ÿe‹Äß–¢ØÉ.æõíDà!7ø€Fx‚cÿn  ãU›Rn" f™f´â$d ¾7š¶Ûž›Ýë³ßª]LòÚ-aú®þ ‡¦‡Y LÏU`ɼì"‹>F}?Œî2Z¶ÕiØ£²8ía4CúÈ^&èp…aa”釱çiÁ"Î -&¥–eIï*äXi®ŠÆfKJ™ÛÁ¼ËT‘Ë@9’tûÈÁ×Fžì(Ö±g·qôõÀÞØœ¬ï1Y2בY^þn+1n—È;þïyü¨Þ´9¬#¬~I 9ç ×.I/áב™¤.LÝ¥¾¤ý‚°èJAéæÿÃá-eÑ¢žwùAžN˜šçˆ¢Òø‡ƒpjïo¤5µ‡àµúÚR},D¢ë‚ƒ}cÚG¦K‰ŸO͈]Ká&îæ¸îQ„Ð!éeSV´¼›= -DÎG@|Skµ÷Šl;¸cêÒr Ùgý•He£úÅ<SZù&¡˜ÜBë–Vž€Ü×"—{Ò骴?>0¬“Àw¶ûòÎâ.”ÉàW›ØYŒuKa®ÿË„u×»)S÷pçõª *-³Iföv¢å´9õ÷&–¥ŒZMúPwÂvtê)Ч‹Õ÷R5°Ä6 ¾!?¡{o@«ñ½ŽŽjšâÚ3C†œÃáQtc%;¢¯^œsÏL‡_È{:“ç7û.éRÌêÆj–PyPê!3À±ÍÂ>šËr«f3þ×Y‚éh?ÄN” ¾¨' -ÛOò KDJøä1®ì*C¦÷%\lŸ1ÙHëJÌ3¯Â\’ÆklˆxJ¦ŒÆÅŸPLCô,ùþ­˜Ðêy ÛBa?ÒjÃ’'trú÷ÁGf̉‰-x’Úѽª¡J¸6æ wêeñGÖò1´a"]¾IR³›ëi¹úf¢É=afÙÊõwJ]Ü;¢Þˆ’·CîÒ©±e^S«BëäN}Ô^Mô+Ú‹[$ãäšXõÕJKÒ<Ïä웊ûMGÑzÄTظ'û j—è@61†™¿s¶?–(Úº˜oúü<ù¯4 å¶Wp VÈà.ƒÖxÔú^T­ãÙ@„¡Ü)¢|)È$w}ß}?½)ÁÜ\‚$Z·÷9ïùý­i•†ºMœÆûƽ’M[¤vÒ•¹Ã"8šR}J1·3,–÷C®@ -Ò/ëëZFRÞ¬ NËtZB=‹ü›ô¡Õ&%ßX1Cê €–ú†ñêœwwʳ&Ušã)Òc ‚’á2Ððž¹60ñô*­Þ´! k†Ñ¹OJ³KèÆ£wÊG4ÇKyã´ì5áP&¹=‘Ä£F1¾£º/Ñ2JãÆP…ciÐnýÆ—f"MƒFÌun§¾8VÁí.®¼%uy[i3vNµ#œ;2DZӈàž¾ÈùÎ1ÆoB8Š{áköJºãf€È­¥lÖž&A©Iñ`Ì)›–­ÂV{Ž[6í_Û$J©.¨Ýd®®ËöÇdÎAÉLá;Òy<]Àö eé¹×‘)Í6¸È~8AøÌmÇ9ÆGš¶CT3j[ëÁn7ìGïùÒa¶€º¿.îCD¿^’Ï5Zžóð(\A8æØ'_|Š¹˜@¤–Gù8gj\®Bé-? -"›‘§|gò3› p·B¸!ôÁ”°Ú§›èá)ÆéÆGØ%÷š°ÈJã9œÆlMoÙêœ ‚Z/ÞĮܑӦèÂZeÅ gM<¥ñí›gýâ}ÇU|Áð†”ìlr䳫~¦YÚd}âR•÷Ót”ÎùÝR—(¿ü1§›í•¢_*J§\Ñ-ÄÍyºu[J¥jrA%Z’׋=ÕÐïÿLês5'.ÒΕp\ -çýª–Ç´†ôlÛ\*’ŠO³ä_gŽ7·Jýbû ;lžE˦Oíú~7¼,'ù12¢…w?ÁÛö–d}ò³Æ5÷\ÂY…Ê¢²I(½ˆpmŒ –+_uÍu”­¦9—£cæ1¨{¶æ¨ÓQ·Zê%‚11áA´Ð\JëŠV;`öÿfsæXÌÆ;Î:M4ŠÑ/Þ  }‹íÞ¬œºj~Vè=kj•‘=ЊÉ‚gäÎéž$Ê'Åo»€*C2™_’ž.´´ -ý2ßÎ2&‚0DÙÜŸžæ¹ußb#”Š‹Y©Ó?&žOÄG'‘Ò7¯øE€´iØÍ”ÆÓ'Ð -z-Z)ÏÛýZpâ)¼ÒšrJ䱚jïc…û‚0ñí°D¬˜¡›#+‘kÉÔèÌo{.^›Éì[4Œ—‘âÿîœÔM)ñôv£Z(»ýSªÔã¹é$ksFUñmØØÖn8µpÎfŸeq Qx‘P‰R®ªe™ždÖ•ÿ -endstream -endobj -2276 0 obj +ÙÖoc;„j˜›™t°ŸÆÌD[Ï|<3322ãý¿ô9I¸fÈÂÜ"ýÇXXH`ì{¶Ú(Ìb$`á«2 GyµÀ<“»»É\ð&’ÌMê¨ÒêµÂæCté+Ë…B›®JvÀÆ·mo÷Ïš}^ß¼ éYTY½·ÞCÒ]Sü=ÚnðÂt9x¦Ð>ÌíJòêKÌ1¾‹ž'r6iÁ’Xï¯Ü'l±­é Š”6ÑŸ±Ã=ïvª1]Û +…Ä‘gåŠ@ìFÌ7žªàpqûÓÇíõ')øjjOh%SÂÊösq™·=ÓðŠ{ãÑ.] ˆZ§O7Ñ”î‘éEÕ„|Ûª´u±BwLà Ñ`'ª´&ÏÄ0C¶žg†)X0F?nÂY¼›«&‰Ñ8 ˹r¼]lpK¹GC°ÓpŒŒoÄŸ³g\´t/íþ–bj©ê}t SòEî š²£¾cûqR7¡VÀ“L%ìŽY'1³¼b¦êÇî ˆJ71Ù®SU3ÿ=ºg¡OŒä>b¸H”t ÈkK‚¤Ëc:ƒhíý׳A‹:FÁ.ÞxW˜(úäÿáüLÆ^œÓN1K °Ø@_»Pÿ̹>ýnéæn¹ïÂoùf³µ7-Uš EøßØÙlÇ#©+¢ÞöA5FÔ”¼kèyêî¾tçÚ:÷âR¶R¼ª2\þ¤3©Ìøí’ l ªvÕ"‘Úª> VÓûœ³ ù”íb¤…/¼¬þ™÷“&’¥íµæÝ"@Ñ4 +¹nD5¤tvÀñ_\…ž$ÎS„|Kp°ÔCOÂÈ1vF^É(âByÒ@ˆ‰`gˆFú—szVŽÖ‘‡ûŒ0‡ôÎQnÌýÙ .ßÔÒÄT=>>‡rÕYA,{ÓøÉ ÉQðƒ rçFä!Þs߸ߟ0×€ߎ5¥Ë¢Vô¼<æ4d(íênL¤Ø³[PCŠ©ì²;üŠ+qÞ¥œK V²:¾d£§&>J3)éÅ›ôQ6Põš|ÞB5 e í£ñ)\£@ˆ~7mÛknË‹ª$Ô¶úÜ–P±+‡‰™C}èòèo×*Ú(¨ã ·-ßè.4‰ÓÆ7§ŽWá?ø8"½N[.½^7/ÆŸéÌ3§þ/3±j(ĦwÿNÿË º×þ¸ wLjŽC; ìf&ŠŒcv^%€:ÆÃS,ƒ’yr8ºN@K}m>KW¿÷Kn­9×è}ê%F¢S–GhpŠx³‘„CŒå(¹€@òr XÕ#?FäÓØ0éʃº¾’#«w^øcuÖ»¢Î€…y’þ‡"¨-ÚlEƒ£#»~»Áõë¸%UŠôŠ²Í1b[ ^¨Â•1€›€@‹¹¶*°ßr«¹ÖEŒPâW‰ðS/õÆÛ?ÉûN!™õö< eâÙ* ‡ðWxaÏx"(äZ„°ÿ5Å…Á‹ÆQÎu?ÅéÊ +UªgHß{@^‘Κ2¤]Ʀyý±Î1°QÕÇ'Ç,êX§L káx2 ´ß]mÅÈŒÊ0Ó`픈âpº³:ì*:_k£Ãp +‚º“ÏŠÁ÷×%¼þ,‹•™véÈVíb]2q2嶖ćVas ¾|HzÊNê@=Ü«ˆ7ëik¬K‘\É}ŒpYöNsÏS)#â èôŠ„¡cÏì,áE¿×€ÝçZ†üí=D=0»Måaú‰‘fü~nÄľ»<ë“vž­QI¼q¿Š[ ‚]¹@²\ù‚$‹C{ª¸ÇŽžÏÝÞBŽ®0ôh”u‰9íp?{U¶ ~sU>í4ߧšïô2º¸ËB †o´b‘ ÜÎêbþObww»wªÏ>Â|ÎåGkh´6°–´„p rÎ[#õPŽ±"7à7vôÑÍEá8Ê–óõ›Á$;E£þ6×zóдR]}îâ¤#¤#ì+µëè0É"i%uCjíÀ,±|¯÷ÁšaÖSVMŒx›ËßÉ5àê‹Š ÿýp‰åÌÔ6‹ïUj(mEä*Üè~†mø™YÕdÇ¡æ—µàÁ¤w#ö`–9­Ôk?ÏÁ)€Â픥…Z©ÑÜçËW|Mü%H*'¢¤ýÝa>˜"VÑ›ÿ¸w5t¯’0QËPG“R%‘à®"ò*¸½¸“ý„B…u+Ö8®Î~®³j Xí< @œ±cêNÂnâøg¬YGй34ª¥ VÐ])¹Œ-l ÉŠ÷5þ¢•‘iþmÕ™UV#YÌ‚€¹{Û­õls»1å¶weØË(\‹OL‚õ EŸ¶É»Rþó¦Ô~–—[шP»så1\èŠzLê¦ÊòþDÿžg•SÂS[OÝu’p6æ(@1…Àâ£R›sP1í ?õ=ç¨úEìØœÆneM6N5‚†åw<3dÏq^cF‹‹òðž)ÿUÏIÂ2M õØFÅÖÆ¿äë~ãq +1йmدNIà B}ýfÈ·/ZºåMYöŽE(Y´Ö‹'á²¹¢ ú +T;U·Åì‡÷F7®<·{¬ÈÆLN-^×(¥£U'UAf0GivÄOð0P$Ý 4ÛªZ@º/³ˆ¯¤Ž.â}·L‡© ŠdlI/_Øfá°>k[عW‰¢SʪÇ1<" Ì£Çó—UÇÞ3 ±ÃØlÕûÆP.ý+\ÐõBÀl{½É‚ÞÄH%Õ¹éú'%œ’@-ÜƺüŒ˜¼žRÛSöÄëÊÂð覟yNuE—Ê|ž÷Ïù£ÝÝvæ‰^Ó+¾‹ÖåZúûR·kÚœ[ÙÈȈRÆÄýûÔ¶0ŠZHç: +wÆFe@g¬`!$à ûp±eš„pdwíé,Õ,#ã µ„Œž<€öx4¬¦«=u^‹Ur± ^‰ ÷´º×hIo Ç–mÝÐΧõ +AÖª^§Î±:™µd¸5âDѺL•‚:ÊÔU¨Ôœú-¾L::V +6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ +endstream +endobj +2273 0 obj << /Length1 1614 /Length2 22531 @@ -34281,7 +33999,7 @@ s ÿK=ö² ’á(ÛHfUïÎãrÒø¾IQ$W0LÇòÅÕµ8ŽÅX‘k¯ß‰ô¹­JÏMÐz{äPãÀ÷–¢Ô“‹¾>$ yò§ÑéÚ"Éjrº½¾‹Xf¯yÓLEœtnÖy“ÉŽœ‰ö•ƒQ]Ex.ò¢B‚…;®úˆ[„çðÂXánÍUîOýÅ›1Nd É¸&÷ïÎŒþ endstream endobj -2278 0 obj +2275 0 obj << /Length1 1616 /Length2 24418 @@ -34406,7 +34124,7 @@ c51 AÌø2C0ˆ¯5§Œƒñ¸ûoÔ]}‰I(&*㤠½;Ã@ar½’§×@ ž\-@óˆ…Ô|†5J¾ÏZ¬¬Ò¿ÖTÛÆâ¼ .áç1åT–€"aõJk:‘¹bÄ–D»| endstream endobj -2280 0 obj +2277 0 obj << /Length1 1620 /Length2 18673 @@ -34538,7 +34256,7 @@ ST Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: endstream endobj -2282 0 obj +2279 0 obj << /Length 1007 >> @@ -34608,16 +34326,16 @@ end endstream endobj -2283 0 obj +2280 0 obj << -/Length 1153 +/Length 1577 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmitt10-lm-rep-cmitt-0) -%%Title: (TeX-cmitt10-lm-rep-cmitt-0 TeX cmitt10-lm-rep-cmitt 0) +%%BeginResource: CMap (TeX-cmitt10-builtin-0) +%%Title: (TeX-cmitt10-builtin-0 TeX cmitt10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -34625,22 +34343,23 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmitt10-lm-rep-cmitt) +/Ordering (cmitt10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmitt10-lm-rep-cmitt-0 def +/CMapName /TeX-cmitt10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -5 beginbfrange +6 beginbfrange <07> <08> <03A5> <21> <23> <0021> <25> <26> <0025> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -35 beginbfchar +71 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -34676,6 +34395,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -34686,7 +34441,7 @@ end endstream endobj -2284 0 obj +2281 0 obj << /Length 1535 >> @@ -34792,16 +34547,16 @@ end endstream endobj -2285 0 obj +2282 0 obj << -/Length 1291 +/Length 1724 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmr10-lm-rep-cmrm-0) -%%Title: (TeX-cmr10-lm-rep-cmrm-0 TeX cmr10-lm-rep-cmrm 0) +%%BeginResource: CMap (TeX-cmr10-builtin-0) +%%Title: (TeX-cmr10-builtin-0 TeX cmr10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -34809,23 +34564,24 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmr10-lm-rep-cmrm) +/Ordering (cmr10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmr10-lm-rep-cmrm-0 def +/CMapName /TeX-cmr10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -6 beginbfrange +7 beginbfrange <07> <08> <03A5> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <61> <7A> <0061> <7B> <7C> <2013> + <03A5> endbfrange -44 beginbfchar +78 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -34870,6 +34626,40 @@ endbfrange <7D> <02DD> <7E> <02DC> <7F> <00A8> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <00660066> + <00660069> + <0066006C> + <006600660069> + <00660066006C> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -34880,7 +34670,7 @@ end endstream endobj -2286 0 obj +2283 0 obj << /Length 2050 >> @@ -35026,16 +34816,16 @@ end endstream endobj -2287 0 obj +2284 0 obj << -/Length 1114 +/Length 1543 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt10-lm-rep-cmtt-0) -%%Title: (TeX-cmtt10-lm-rep-cmtt-0 TeX cmtt10-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt10-builtin-0) +%%Title: (TeX-cmtt10-builtin-0 TeX cmtt10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -35043,21 +34833,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt10-lm-rep-cmtt) +/Ordering (cmtt10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt10-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -35092,6 +34883,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -35102,16 +34929,16 @@ end endstream endobj -2288 0 obj +2285 0 obj << -/Length 1109 +/Length 1538 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt8-lm-rep-cmtt-0) -%%Title: (TeX-cmtt8-lm-rep-cmtt-0 TeX cmtt8-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt8-builtin-0) +%%Title: (TeX-cmtt8-builtin-0 TeX cmtt8-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -35119,21 +34946,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt8-lm-rep-cmtt) +/Ordering (cmtt8-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt8-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt8-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -35168,6 +34996,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -35178,16 +35042,16 @@ end endstream endobj -2289 0 obj +2286 0 obj << -/Length 1109 +/Length 1538 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt9-lm-rep-cmtt-0) -%%Title: (TeX-cmtt9-lm-rep-cmtt-0 TeX cmtt9-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt9-builtin-0) +%%Title: (TeX-cmtt9-builtin-0 TeX cmtt9-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -35195,21 +35059,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt9-lm-rep-cmtt) +/Ordering (cmtt9-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt9-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt9-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -35244,6 +35109,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -35254,7 +35155,7 @@ end endstream endobj -2290 0 obj +2287 0 obj << /Length 853 >> @@ -35312,7 +35213,7 @@ end endstream endobj -2291 0 obj +2288 0 obj << /Length 1113 >> @@ -35390,7 +35291,7 @@ end endstream endobj -2292 0 obj +2289 0 obj << /Length 1477 >> @@ -35493,7 +35394,7 @@ end endstream endobj -2293 0 obj +2290 0 obj << /Length 1477 >> @@ -35596,7 +35497,7 @@ end endstream endobj -2294 0 obj +2291 0 obj << /Length 1482 >> @@ -35699,29 +35600,29 @@ end endstream endobj -2254 0 obj +2251 0 obj << /Type /ObjStm /N 100 -/First 1018 -/Length 17338 ->> -stream -2253 0 2255 471 2257 1046 2259 1271 2261 1515 2263 1863 2265 2089 2267 2320 2269 2605 2271 3130 -2273 3377 2275 3864 2277 4207 2279 4686 2281 5262 2251 5691 2239 6132 2247 6350 2244 6472 1860 6877 -1791 7040 1469 7230 923 7391 922 7581 921 7741 979 7931 1025 8120 1263 8310 1136 8475 673 8645 -675 8835 674 9025 676 9215 889 9328 980 9441 1037 9557 1072 9677 1101 9797 1143 9917 1189 10037 -1231 10157 1290 10277 1342 10397 1391 10517 1440 10637 1480 10757 1519 10877 1566 10997 1610 11117 1647 11237 -1683 11357 1722 11477 1763 11597 1792 11717 1826 11837 1864 11957 1899 12077 1938 12197 1976 12317 2017 12437 -2056 12557 2114 12677 2210 12797 2295 12917 2296 13035 2297 13156 2298 13277 2299 13398 2300 13519 2301 13594 -2302 13699 663 13768 659 13842 655 13930 651 14018 647 14106 643 14194 639 14282 635 14370 631 14458 -627 14546 623 14634 619 14722 615 14810 611 14898 607 14972 602 15084 598 15158 594 15246 590 15334 -586 15408 582 15533 578 15607 574 15681 570 15806 566 15880 562 15968 558 16056 554 16144 550 16232 -% 2253 0 obj +/First 1010 +/Length 16643 +>> +stream +2250 0 2252 471 2254 1046 2256 1271 2258 1603 2260 1847 2262 2118 2264 2466 2266 2972 2268 3206 +2270 3680 2272 3906 2274 4137 2276 4616 2278 5192 2248 5621 1860 6062 1791 6225 1469 6388 923 6549 +922 6708 921 6868 979 7029 1025 7189 1263 7350 1136 7515 673 7685 675 7875 674 8065 676 8255 +889 8368 980 8481 1037 8597 1072 8717 1101 8837 1143 8957 1189 9077 1231 9197 1290 9317 1342 9437 +1391 9557 1440 9677 1480 9797 1519 9917 1566 10037 1610 10157 1647 10277 1683 10397 1722 10517 1763 10637 +1792 10757 1826 10877 1864 10997 1899 11117 1938 11237 1976 11357 2017 11477 2056 11597 2114 11717 2210 11837 +2292 11957 2293 12075 2294 12196 2295 12317 2296 12438 2297 12559 2298 12634 2299 12739 663 12808 659 12882 +655 12970 651 13058 647 13146 643 13234 639 13322 635 13410 631 13498 627 13586 623 13674 619 13762 +615 13850 611 13938 607 14012 602 14124 598 14198 594 14286 590 14374 586 14448 582 14573 578 14647 +574 14721 570 14846 566 14920 562 15008 558 15096 554 15184 550 15272 546 15360 542 15434 538 15559 +% 2250 0 obj [528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] -% 2255 0 obj +% 2252 0 obj [611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] -% 2257 0 obj +% 2254 0 obj << /Type /FontDescriptor /FontName /MNPEHI+CMEX10 @@ -35734,9 +35635,24 @@ stream /StemV 47 /XHeight 431 /CharSet (/radicalbigg) -/FontFile 2256 0 R +/FontFile 2253 0 R +>> +% 2256 0 obj +<< +/Type /FontDescriptor +/FontName /SFGIZH+CMITT10 +/Flags 4 +/FontBBox [11 -233 669 696] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle -14 +/StemV 69 +/XHeight 431 +/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) +/FontFile 2255 0 R >> -% 2259 0 obj +% 2258 0 obj << /Type /FontDescriptor /FontName /TPELEW+CMMI10 @@ -35749,89 +35665,59 @@ stream /StemV 72 /XHeight 431 /CharSet (/arrowhookleft/greater/less) -/FontFile 2258 0 R +/FontFile 2257 0 R >> -% 2261 0 obj +% 2260 0 obj << /Type /FontDescriptor -/FontName /VKSUEJ+CMSY10 +/FontName /SOSTRQ+CMR10 /Flags 4 -/FontBBox [-29 -960 1116 775] -/Ascent 750 +/FontBBox [-40 -250 1009 750] +/Ascent 694 /CapHeight 683 /Descent -194 -/ItalicAngle -14 -/StemV 40 -/XHeight 431 -/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) -/FontFile 2260 0 R ->> -% 2263 0 obj -<< -/Type /FontDescriptor -/FontName /IKXQUG+PazoMath -/Flags 4 -/FontBBox [-40 -283 878 946] -/Ascent 0 -/CapHeight 0 -/Descent 0 /ItalicAngle 0 -/StemV 95 -/XHeight 0 -/CharSet (/infinity/summation) -/FontFile 2262 0 R ->> -% 2265 0 obj -<< -/Type /FontDescriptor -/FontName /DUJUUF+PazoMath-Italic -/Flags 4 -/FontBBox [-70 -277 902 733] -/Ascent 482 -/CapHeight 0 -/Descent -276 -/ItalicAngle -9 -/StemV 65 -/XHeight 0 -/CharSet (/alpha/beta) -/FontFile 2264 0 R +/StemV 69 +/XHeight 431 +/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) +/FontFile 2259 0 R >> -% 2267 0 obj +% 2262 0 obj << /Type /FontDescriptor -/FontName /NCCVYE+LMRoman10-Regular +/FontName /VKSUEJ+CMSY10 /Flags 4 -/FontBBox [-430 -290 1417 1127] -/Ascent 694 +/FontBBox [-29 -960 1116 775] +/Ascent 750 /CapHeight 683 /Descent -194 -/ItalicAngle 0 -/StemV 69 +/ItalicAngle -14 +/StemV 40 /XHeight 431 -/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) -/FontFile 2266 0 R +/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) +/FontFile 2261 0 R >> -% 2269 0 obj +% 2264 0 obj << /Type /FontDescriptor -/FontName /XKYJEW+LMMono10-Regular +/FontName /XIQVGP+CMTT10 /Flags 4 -/FontBBox [-451 -316 731 1016] +/FontBBox [-4 -233 537 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 -/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2268 0 R +/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2263 0 R >> -% 2271 0 obj +% 2266 0 obj << /Type /FontDescriptor -/FontName /EOXOPS+LMMono8-Regular +/FontName /KPZRIA+CMTT8 /Flags 4 -/FontBBox [-456 -320 743 1014] +/FontBBox [-5 -232 545 699] /Ascent 611 /CapHeight 611 /Descent -222 @@ -35839,14 +35725,14 @@ stream /StemV 76 /XHeight 431 /CharSet (/b/c/d/e/i/l/n/p/r/s/t) -/FontFile 2270 0 R +/FontFile 2265 0 R >> -% 2273 0 obj +% 2268 0 obj << /Type /FontDescriptor -/FontName /HBOWRG+LMMono9-Regular +/FontName /FYMOSO+CMTT9 /Flags 4 -/FontBBox [-451 -318 734 1016] +/FontBBox [-6 -233 542 698] /Ascent 611 /CapHeight 611 /Descent -222 @@ -35854,24 +35740,39 @@ stream /StemV 74 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2272 0 R +/FontFile 2267 0 R >> -% 2275 0 obj +% 2270 0 obj << /Type /FontDescriptor -/FontName /XVBOSG+LMMono10-Italic +/FontName /IKXQUG+PazoMath /Flags 4 -/FontBBox [-491 -316 834 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle -14 -/StemV 69 -/XHeight 431 -/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) -/FontFile 2274 0 R +/FontBBox [-40 -283 878 946] +/Ascent 0 +/CapHeight 0 +/Descent 0 +/ItalicAngle 0 +/StemV 95 +/XHeight 0 +/CharSet (/infinity/summation) +/FontFile 2269 0 R +>> +% 2272 0 obj +<< +/Type /FontDescriptor +/FontName /DUJUUF+PazoMath-Italic +/Flags 4 +/FontBBox [-70 -277 902 733] +/Ascent 482 +/CapHeight 0 +/Descent -276 +/ItalicAngle -9 +/StemV 65 +/XHeight 0 +/CharSet (/alpha/beta) +/FontFile 2271 0 R >> -% 2277 0 obj +% 2274 0 obj << /Type /FontDescriptor /FontName /BDDEWM+URWPalladioL-Bold @@ -35884,9 +35785,9 @@ stream /StemV 123 /XHeight 471 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2276 0 R +/FontFile 2273 0 R >> -% 2279 0 obj +% 2276 0 obj << /Type /FontDescriptor /FontName /GLTUCO+URWPalladioL-Roma @@ -35899,9 +35800,9 @@ stream /StemV 84 /XHeight 469 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2278 0 R +/FontFile 2275 0 R >> -% 2281 0 obj +% 2278 0 obj << /Type /FontDescriptor /FontName /LHHPET+URWPalladioL-Ital @@ -35914,445 +35815,425 @@ stream /StemV 78 /XHeight 482 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2280 0 R +/FontFile 2277 0 R >> -% 2251 0 obj +% 2248 0 obj << /Type /Encoding /Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] >> -% 2239 0 obj -<< -/Type /Encoding -/Differences [33/exclam 40/parenleft/parenright 44/comma/hyphen/period/slash 65/A 67/C/D/E 72/H/I 75/K/L/M 80/P 84/T 86/V 97/a 99/c/d/e/f/g/h/i 107/k 109/m/n/o/p 114/r/s/t 119/w/x/y] ->> -% 2247 0 obj -<< -/Type /Encoding -/Differences [40/parenleft/parenright 43/plus 61/equal 91/bracketleft 93/bracketright] ->> -% 2244 0 obj -<< -/Type /Encoding -/Differences [13/quotesingle 37/percent/ampersand 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four 54/six 56/eight/nine/colon/semicolon/less/equal/greater 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/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 126/asciitilde] ->> % 1860 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MNPEHI+CMEX10 -/FontDescriptor 2257 0 R +/FontDescriptor 2254 0 R /FirstChar 114 /LastChar 114 /Widths 2238 0 R -/ToUnicode 2282 0 R +/ToUnicode 2279 0 R >> % 1791 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /XVBOSG+LMMono10-Italic -/FontDescriptor 2275 0 R +/BaseFont /SFGIZH+CMITT10 +/FontDescriptor 2256 0 R /FirstChar 33 /LastChar 121 -/Widths 2240 0 R -/Encoding 2239 0 R -/ToUnicode 2283 0 R +/Widths 2239 0 R +/ToUnicode 2280 0 R >> % 1469 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TPELEW+CMMI10 -/FontDescriptor 2259 0 R +/FontDescriptor 2258 0 R /FirstChar 44 /LastChar 62 -/Widths 2241 0 R -/ToUnicode 2284 0 R +/Widths 2240 0 R +/ToUnicode 2281 0 R >> % 923 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /NCCVYE+LMRoman10-Regular -/FontDescriptor 2267 0 R +/BaseFont /SOSTRQ+CMR10 +/FontDescriptor 2260 0 R /FirstChar 40 /LastChar 93 -/Widths 2248 0 R -/Encoding 2247 0 R -/ToUnicode 2285 0 R +/Widths 2245 0 R +/ToUnicode 2282 0 R >> % 922 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VKSUEJ+CMSY10 -/FontDescriptor 2261 0 R +/FontDescriptor 2262 0 R /FirstChar 0 /LastChar 112 -/Widths 2249 0 R -/ToUnicode 2286 0 R +/Widths 2246 0 R +/ToUnicode 2283 0 R >> % 921 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /XKYJEW+LMMono10-Regular -/FontDescriptor 2269 0 R +/BaseFont /XIQVGP+CMTT10 +/FontDescriptor 2264 0 R /FirstChar 13 /LastChar 126 -/Widths 2250 0 R -/Encoding 2244 0 R -/ToUnicode 2287 0 R +/Widths 2247 0 R +/ToUnicode 2284 0 R >> % 979 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /EOXOPS+LMMono8-Regular -/FontDescriptor 2271 0 R +/BaseFont /KPZRIA+CMTT8 +/FontDescriptor 2266 0 R /FirstChar 98 /LastChar 116 -/Widths 2246 0 R -/Encoding 2244 0 R -/ToUnicode 2288 0 R +/Widths 2244 0 R +/ToUnicode 2285 0 R >> % 1025 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /HBOWRG+LMMono9-Regular -/FontDescriptor 2273 0 R +/BaseFont /FYMOSO+CMTT9 +/FontDescriptor 2268 0 R /FirstChar 13 /LastChar 122 -/Widths 2245 0 R -/Encoding 2244 0 R -/ToUnicode 2289 0 R +/Widths 2243 0 R +/ToUnicode 2286 0 R >> % 1263 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IKXQUG+PazoMath -/FontDescriptor 2263 0 R +/FontDescriptor 2270 0 R /FirstChar 165 /LastChar 229 -/Widths 2242 0 R -/ToUnicode 2290 0 R +/Widths 2241 0 R +/ToUnicode 2287 0 R >> % 1136 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUJUUF+PazoMath-Italic -/FontDescriptor 2265 0 R +/FontDescriptor 2272 0 R /FirstChar 97 /LastChar 98 -/Widths 2243 0 R -/ToUnicode 2291 0 R +/Widths 2242 0 R +/ToUnicode 2288 0 R >> % 673 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BDDEWM+URWPalladioL-Bold -/FontDescriptor 2277 0 R +/FontDescriptor 2274 0 R /FirstChar 2 /LastChar 151 -/Widths 2255 0 R -/Encoding 2251 0 R -/ToUnicode 2292 0 R +/Widths 2252 0 R +/Encoding 2248 0 R +/ToUnicode 2289 0 R >> % 675 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GLTUCO+URWPalladioL-Roma -/FontDescriptor 2279 0 R +/FontDescriptor 2276 0 R /FirstChar 2 /LastChar 167 -/Widths 2252 0 R -/Encoding 2251 0 R -/ToUnicode 2293 0 R +/Widths 2249 0 R +/Encoding 2248 0 R +/ToUnicode 2290 0 R >> % 674 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LHHPET+URWPalladioL-Ital -/FontDescriptor 2281 0 R +/FontDescriptor 2278 0 R /FirstChar 2 /LastChar 122 -/Widths 2253 0 R -/Encoding 2251 0 R -/ToUnicode 2294 0 R +/Widths 2250 0 R +/Encoding 2248 0 R +/ToUnicode 2291 0 R >> % 676 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R +/Parent 2292 0 R /Kids [666 0 R 679 0 R 726 0 R 782 0 R 829 0 R 870 0 R] >> % 889 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R +/Parent 2292 0 R /Kids [887 0 R 906 0 R 918 0 R 931 0 R 943 0 R 948 0 R] >> % 980 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R +/Parent 2292 0 R /Kids [961 0 R 984 0 R 995 0 R 1003 0 R 1014 0 R 1030 0 R] >> % 1037 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R +/Parent 2292 0 R /Kids [1034 0 R 1039 0 R 1044 0 R 1051 0 R 1058 0 R 1063 0 R] >> % 1072 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R +/Parent 2292 0 R /Kids [1069 0 R 1074 0 R 1078 0 R 1082 0 R 1086 0 R 1092 0 R] >> % 1101 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R +/Parent 2292 0 R /Kids [1098 0 R 1105 0 R 1112 0 R 1118 0 R 1122 0 R 1133 0 R] >> % 1143 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R +/Parent 2293 0 R /Kids [1140 0 R 1150 0 R 1156 0 R 1168 0 R 1173 0 R 1180 0 R] >> % 1189 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R +/Parent 2293 0 R /Kids [1185 0 R 1194 0 R 1202 0 R 1207 0 R 1215 0 R 1220 0 R] >> % 1231 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R +/Parent 2293 0 R /Kids [1227 0 R 1233 0 R 1246 0 R 1253 0 R 1260 0 R 1271 0 R] >> % 1290 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R +/Parent 2293 0 R /Kids [1287 0 R 1294 0 R 1305 0 R 1311 0 R 1322 0 R 1327 0 R] >> % 1342 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R +/Parent 2293 0 R /Kids [1338 0 R 1344 0 R 1353 0 R 1359 0 R 1367 0 R 1374 0 R] >> % 1391 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R +/Parent 2293 0 R /Kids [1388 0 R 1396 0 R 1405 0 R 1413 0 R 1417 0 R 1432 0 R] >> % 1440 0 obj << /Type /Pages /Count 6 -/Parent 2297 0 R +/Parent 2294 0 R /Kids [1437 0 R 1444 0 R 1451 0 R 1455 0 R 1460 0 R 1466 0 R] >> % 1480 0 obj << /Type /Pages /Count 6 -/Parent 2297 0 R +/Parent 2294 0 R /Kids [1472 0 R 1483 0 R 1488 0 R 1497 0 R 1505 0 R 1510 0 R] >> % 1519 0 obj << /Type /Pages /Count 6 -/Parent 2297 0 R +/Parent 2294 0 R /Kids [1516 0 R 1521 0 R 1529 0 R 1534 0 R 1542 0 R 1548 0 R] >> % 1566 0 obj << /Type /Pages /Count 6 -/Parent 2297 0 R +/Parent 2294 0 R /Kids [1557 0 R 1571 0 R 1575 0 R 1588 0 R 1594 0 R 1601 0 R] >> % 1610 0 obj << /Type /Pages /Count 6 -/Parent 2297 0 R +/Parent 2294 0 R /Kids [1606 0 R 1614 0 R 1618 0 R 1627 0 R 1635 0 R 1639 0 R] >> % 1647 0 obj << /Type /Pages /Count 6 -/Parent 2297 0 R +/Parent 2294 0 R /Kids [1644 0 R 1649 0 R 1656 0 R 1661 0 R 1667 0 R 1673 0 R] >> % 1683 0 obj << /Type /Pages /Count 6 -/Parent 2298 0 R +/Parent 2295 0 R /Kids [1679 0 R 1686 0 R 1693 0 R 1700 0 R 1704 0 R 1714 0 R] >> % 1722 0 obj << /Type /Pages /Count 6 -/Parent 2298 0 R +/Parent 2295 0 R /Kids [1719 0 R 1724 0 R 1737 0 R 1741 0 R 1747 0 R 1753 0 R] >> % 1763 0 obj << /Type /Pages /Count 6 -/Parent 2298 0 R +/Parent 2295 0 R /Kids [1760 0 R 1765 0 R 1769 0 R 1773 0 R 1777 0 R 1781 0 R] >> % 1792 0 obj << /Type /Pages /Count 6 -/Parent 2298 0 R +/Parent 2295 0 R /Kids [1785 0 R 1794 0 R 1798 0 R 1805 0 R 1809 0 R 1816 0 R] >> % 1826 0 obj << /Type /Pages /Count 6 -/Parent 2298 0 R +/Parent 2295 0 R /Kids [1820 0 R 1829 0 R 1833 0 R 1840 0 R 1844 0 R 1851 0 R] >> % 1864 0 obj << /Type /Pages /Count 6 -/Parent 2298 0 R +/Parent 2295 0 R /Kids [1855 0 R 1866 0 R 1871 0 R 1878 0 R 1884 0 R 1888 0 R] >> % 1899 0 obj << /Type /Pages /Count 6 -/Parent 2299 0 R +/Parent 2296 0 R /Kids [1894 0 R 1901 0 R 1907 0 R 1913 0 R 1918 0 R 1925 0 R] >> % 1938 0 obj << /Type /Pages /Count 6 -/Parent 2299 0 R +/Parent 2296 0 R /Kids [1932 0 R 1941 0 R 1948 0 R 1955 0 R 1961 0 R 1965 0 R] >> % 1976 0 obj << /Type /Pages /Count 6 -/Parent 2299 0 R +/Parent 2296 0 R /Kids [1972 0 R 1984 0 R 1988 0 R 1997 0 R 2001 0 R 2009 0 R] >> % 2017 0 obj << /Type /Pages /Count 6 -/Parent 2299 0 R +/Parent 2296 0 R /Kids [2014 0 R 2019 0 R 2025 0 R 2029 0 R 2036 0 R 2048 0 R] >> % 2056 0 obj << /Type /Pages /Count 6 -/Parent 2299 0 R +/Parent 2296 0 R /Kids [2053 0 R 2062 0 R 2071 0 R 2075 0 R 2085 0 R 2099 0 R] >> % 2114 0 obj << /Type /Pages /Count 6 -/Parent 2299 0 R +/Parent 2296 0 R /Kids [2108 0 R 2120 0 R 2148 0 R 2169 0 R 2187 0 R 2203 0 R] >> % 2210 0 obj << /Type /Pages /Count 6 -/Parent 2300 0 R +/Parent 2297 0 R /Kids [2207 0 R 2212 0 R 2217 0 R 2221 0 R 2225 0 R 2233 0 R] >> -% 2295 0 obj +% 2292 0 obj << /Type /Pages /Count 36 -/Parent 2301 0 R +/Parent 2298 0 R /Kids [676 0 R 889 0 R 980 0 R 1037 0 R 1072 0 R 1101 0 R] >> -% 2296 0 obj +% 2293 0 obj << /Type /Pages /Count 36 -/Parent 2301 0 R +/Parent 2298 0 R /Kids [1143 0 R 1189 0 R 1231 0 R 1290 0 R 1342 0 R 1391 0 R] >> -% 2297 0 obj +% 2294 0 obj << /Type /Pages /Count 36 -/Parent 2301 0 R +/Parent 2298 0 R /Kids [1440 0 R 1480 0 R 1519 0 R 1566 0 R 1610 0 R 1647 0 R] >> -% 2298 0 obj +% 2295 0 obj << /Type /Pages /Count 36 -/Parent 2301 0 R +/Parent 2298 0 R /Kids [1683 0 R 1722 0 R 1763 0 R 1792 0 R 1826 0 R 1864 0 R] >> -% 2299 0 obj +% 2296 0 obj << /Type /Pages /Count 36 -/Parent 2301 0 R +/Parent 2298 0 R /Kids [1899 0 R 1938 0 R 1976 0 R 2017 0 R 2056 0 R 2114 0 R] >> -% 2300 0 obj +% 2297 0 obj << /Type /Pages /Count 6 -/Parent 2301 0 R +/Parent 2298 0 R /Kids [2210 0 R] >> -% 2301 0 obj +% 2298 0 obj << /Type /Pages /Count 186 -/Kids [2295 0 R 2296 0 R 2297 0 R 2298 0 R 2299 0 R 2300 0 R] +/Kids [2292 0 R 2293 0 R 2294 0 R 2295 0 R 2296 0 R 2297 0 R] >> -% 2302 0 obj +% 2299 0 obj << /Type /Outlines /First 4 0 R @@ -36592,27 +36473,6 @@ stream /Prev 546 0 R /Next 554 0 R >> - -endstream -endobj -2303 0 obj -<< -/Type /ObjStm -/N 100 -/First 885 -/Length 9744 ->> -stream -546 0 542 74 538 199 534 273 530 361 526 449 522 537 518 625 514 699 510 824 -506 898 502 986 498 1074 494 1148 490 1273 486 1347 482 1435 478 1523 474 1611 470 1699 -466 1787 462 1875 458 1963 454 2051 450 2139 446 2227 442 2315 438 2403 434 2491 430 2579 -426 2667 422 2741 418 2867 414 2941 410 3029 406 3117 401 3205 397 3293 393 3381 389 3469 -385 3557 381 3645 377 3733 373 3821 369 3909 365 3997 361 4085 357 4173 353 4261 349 4349 -345 4437 341 4525 337 4613 333 4701 329 4789 325 4877 321 4965 317 5053 313 5141 309 5215 -305 5341 301 5415 297 5503 293 5591 289 5665 285 5790 281 5864 277 5952 273 6040 269 6128 -265 6216 261 6304 257 6392 253 6480 249 6568 245 6656 241 6744 237 6832 233 6920 229 7008 -225 7096 221 7170 217 7295 213 7368 209 7455 205 7529 200 7617 196 7705 192 7793 188 7881 -184 7955 180 8081 176 8155 172 8243 168 8331 164 8419 160 8507 156 8595 152 8683 148 8771 % 546 0 obj << /Title 547 0 R @@ -36638,6 +36498,27 @@ stream /Parent 514 0 R /Prev 534 0 R >> + +endstream +endobj +2300 0 obj +<< +/Type /ObjStm +/N 100 +/First 886 +/Length 9736 +>> +stream +534 0 530 88 526 176 522 264 518 352 514 426 510 551 506 625 502 713 498 801 +494 875 490 1000 486 1074 482 1162 478 1250 474 1338 470 1426 466 1514 462 1602 458 1690 +454 1778 450 1866 446 1954 442 2042 438 2130 434 2218 430 2306 426 2394 422 2468 418 2594 +414 2668 410 2756 406 2844 401 2932 397 3020 393 3108 389 3196 385 3284 381 3372 377 3460 +373 3548 369 3636 365 3724 361 3812 357 3900 353 3988 349 4076 345 4164 341 4252 337 4340 +333 4428 329 4516 325 4604 321 4692 317 4780 313 4868 309 4942 305 5068 301 5142 297 5230 +293 5318 289 5392 285 5517 281 5591 277 5679 273 5767 269 5855 265 5943 261 6031 257 6119 +253 6207 249 6295 245 6383 241 6471 237 6559 233 6647 229 6735 225 6823 221 6897 217 7022 +213 7095 209 7182 205 7256 200 7344 196 7432 192 7520 188 7608 184 7682 180 7808 176 7882 +172 7970 168 8058 164 8146 160 8234 156 8322 152 8410 148 8498 144 8586 140 8674 136 8762 % 534 0 obj << /Title 535 0 R @@ -37420,27 +37301,6 @@ stream /Prev 144 0 R /Next 152 0 R >> - -endstream -endobj -2304 0 obj -<< -/Type /ObjStm -/N 100 -/First 949 -/Length 15848 ->> -stream -144 0 140 88 136 176 132 264 128 352 124 440 120 528 116 616 112 704 108 792 -104 866 100 992 96 1063 92 1146 88 1228 84 1310 80 1392 76 1474 72 1556 68 1638 -64 1720 60 1802 56 1884 52 1966 48 2048 44 2130 40 2199 36 2308 32 2428 28 2497 -24 2553 20 2672 16 2754 12 2823 8 2940 4 3005 2305 3098 2306 3294 2307 3467 2308 3647 -2309 3824 2310 4001 2311 4181 2312 4359 2313 4539 2314 4717 2315 4897 2316 5061 2317 5227 2318 5394 -2319 5566 2320 5736 2321 5908 2322 6078 2323 6250 2324 6420 2325 6592 2326 6761 2327 6930 2328 7102 -2329 7272 2330 7444 2331 7628 2332 7838 2333 8108 2334 8334 2335 8545 2336 8742 2337 8921 2338 9106 -2339 9318 2340 9541 2341 9764 2342 9997 2343 10233 2344 10465 2345 10676 2346 10854 2347 11032 2348 11212 -2349 11391 2350 11571 2351 11750 2352 11930 2353 12109 2354 12289 2355 12468 2356 12648 2357 12826 2358 13004 -2359 13184 2360 13363 2361 13533 2362 13705 2363 13874 2364 14043 2365 14215 2366 14385 2367 14557 2368 14727 % 144 0 obj << /Title 145 0 R @@ -37465,6 +37325,27 @@ stream /Prev 132 0 R /Next 140 0 R >> + +endstream +endobj +2301 0 obj +<< +/Type /ObjStm +/N 100 +/First 954 +/Length 16101 +>> +stream +132 0 128 88 124 176 120 264 116 352 112 440 108 528 104 602 100 728 96 799 +92 882 88 964 84 1046 80 1128 76 1210 72 1292 68 1374 64 1456 60 1538 56 1620 +52 1702 48 1784 44 1866 40 1935 36 2044 32 2164 28 2233 24 2289 20 2408 16 2490 +12 2559 8 2676 4 2741 2302 2834 2303 3030 2304 3203 2305 3383 2306 3560 2307 3737 2308 3917 +2309 4095 2310 4275 2311 4453 2312 4633 2313 4797 2314 4963 2315 5130 2316 5302 2317 5472 2318 5644 +2319 5814 2320 5986 2321 6156 2322 6328 2323 6497 2324 6666 2325 6838 2326 7008 2327 7180 2328 7364 +2329 7574 2330 7844 2331 8070 2332 8281 2333 8478 2334 8657 2335 8842 2336 9054 2337 9277 2338 9500 +2339 9733 2340 9969 2341 10201 2342 10412 2343 10590 2344 10768 2345 10948 2346 11127 2347 11307 2348 11486 +2349 11666 2350 11845 2351 12025 2352 12204 2353 12384 2354 12562 2355 12740 2356 12920 2357 13099 2358 13269 +2359 13441 2360 13610 2361 13779 2362 13951 2363 14121 2364 14293 2365 14463 2366 14635 2367 14805 2368 14977 % 132 0 obj << /Title 133 0 R @@ -37731,339 +37612,354 @@ stream << /Title 5 0 R /A 1 0 R -/Parent 2302 0 R +/Parent 2299 0 R /First 8 0 R /Last 607 0 R /Count -13 >> -% 2305 0 obj +% 2302 0 obj << /Names [(Doc-Start) 672 0 R (Hfootnote.1) 924 0 R (Hfootnote.2) 925 0 R (Hfootnote.3) 978 0 R (Hfootnote.4) 1975 0 R (Hfootnote.5) 2042 0 R] /Limits [(Doc-Start) (Hfootnote.5)] >> -% 2306 0 obj +% 2303 0 obj << /Names [(Item.1) 951 0 R (Item.10) 965 0 R (Item.100) 1697 0 R (Item.101) 1707 0 R (Item.102) 1708 0 R (Item.103) 1709 0 R] /Limits [(Item.1) (Item.103)] >> -% 2307 0 obj +% 2304 0 obj << /Names [(Item.104) 1727 0 R (Item.105) 1728 0 R (Item.106) 1729 0 R (Item.107) 1730 0 R (Item.108) 1731 0 R (Item.109) 1732 0 R] /Limits [(Item.104) (Item.109)] >> -% 2308 0 obj +% 2305 0 obj << /Names [(Item.11) 966 0 R (Item.110) 1733 0 R (Item.111) 1734 0 R (Item.112) 1735 0 R (Item.113) 1744 0 R (Item.114) 1745 0 R] /Limits [(Item.11) (Item.114)] >> -% 2309 0 obj +% 2306 0 obj << /Names [(Item.115) 1750 0 R (Item.116) 1751 0 R (Item.117) 1756 0 R (Item.118) 1757 0 R (Item.119) 1758 0 R (Item.12) 967 0 R] /Limits [(Item.115) (Item.12)] >> -% 2310 0 obj +% 2307 0 obj << /Names [(Item.120) 1788 0 R (Item.121) 1789 0 R (Item.122) 1790 0 R (Item.123) 1801 0 R (Item.124) 1802 0 R (Item.125) 1803 0 R] /Limits [(Item.120) (Item.125)] >> -% 2311 0 obj +% 2308 0 obj << /Names [(Item.126) 1812 0 R (Item.127) 1813 0 R (Item.128) 1814 0 R (Item.129) 1823 0 R (Item.13) 968 0 R (Item.130) 1824 0 R] /Limits [(Item.126) (Item.130)] >> -% 2312 0 obj +% 2309 0 obj << /Names [(Item.131) 1825 0 R (Item.132) 1836 0 R (Item.133) 1837 0 R (Item.134) 1838 0 R (Item.135) 1847 0 R (Item.136) 1848 0 R] /Limits [(Item.131) (Item.136)] >> -% 2313 0 obj +% 2310 0 obj << /Names [(Item.137) 1849 0 R (Item.138) 1858 0 R (Item.139) 1859 0 R (Item.14) 969 0 R (Item.140) 1861 0 R (Item.141) 1862 0 R] /Limits [(Item.137) (Item.141)] >> -% 2314 0 obj +% 2311 0 obj << /Names [(Item.142) 1863 0 R (Item.143) 1869 0 R (Item.144) 1874 0 R (Item.145) 2112 0 R (Item.146) 2113 0 R (Item.147) 2215 0 R] /Limits [(Item.142) (Item.147)] >> -% 2315 0 obj +% 2312 0 obj << /Names [(Item.15) 970 0 R (Item.16) 971 0 R (Item.17) 972 0 R (Item.18) 973 0 R (Item.19) 974 0 R (Item.2) 952 0 R] /Limits [(Item.15) (Item.2)] >> -% 2316 0 obj +% 2313 0 obj << /Names [(Item.20) 975 0 R (Item.21) 976 0 R (Item.22) 977 0 R (Item.23) 987 0 R (Item.24) 988 0 R (Item.25) 989 0 R] /Limits [(Item.20) (Item.25)] >> -% 2317 0 obj +% 2314 0 obj << /Names [(Item.26) 990 0 R (Item.27) 991 0 R (Item.28) 992 0 R (Item.29) 1006 0 R (Item.3) 953 0 R (Item.30) 1007 0 R] /Limits [(Item.26) (Item.30)] >> -% 2318 0 obj +% 2315 0 obj << /Names [(Item.31) 1008 0 R (Item.32) 1009 0 R (Item.33) 1010 0 R (Item.34) 1017 0 R (Item.35) 1018 0 R (Item.36) 1019 0 R] /Limits [(Item.31) (Item.36)] >> -% 2319 0 obj +% 2316 0 obj << /Names [(Item.37) 1020 0 R (Item.38) 1021 0 R (Item.39) 1022 0 R (Item.4) 954 0 R (Item.40) 1023 0 R (Item.41) 1024 0 R] /Limits [(Item.37) (Item.41)] >> -% 2320 0 obj +% 2317 0 obj << /Names [(Item.42) 1066 0 R (Item.43) 1159 0 R (Item.44) 1188 0 R (Item.45) 1210 0 R (Item.46) 1236 0 R (Item.47) 1408 0 R] /Limits [(Item.42) (Item.47)] >> -% 2321 0 obj +% 2318 0 obj << /Names [(Item.48) 1409 0 R (Item.49) 1410 0 R (Item.5) 955 0 R (Item.50) 1463 0 R (Item.51) 1470 0 R (Item.52) 1475 0 R] /Limits [(Item.48) (Item.52)] >> -% 2322 0 obj +% 2319 0 obj << /Names [(Item.53) 1476 0 R (Item.54) 1477 0 R (Item.55) 1478 0 R (Item.56) 1479 0 R (Item.57) 1491 0 R (Item.58) 1492 0 R] /Limits [(Item.53) (Item.58)] >> -% 2323 0 obj +% 2320 0 obj << /Names [(Item.59) 1493 0 R (Item.6) 956 0 R (Item.60) 1500 0 R (Item.61) 1524 0 R (Item.62) 1525 0 R (Item.63) 1532 0 R] /Limits [(Item.59) (Item.63)] >> -% 2324 0 obj +% 2321 0 obj << /Names [(Item.64) 1537 0 R (Item.65) 1538 0 R (Item.66) 1539 0 R (Item.67) 1551 0 R (Item.68) 1552 0 R (Item.69) 1553 0 R] /Limits [(Item.64) (Item.69)] >> -% 2325 0 obj +% 2322 0 obj << /Names [(Item.7) 957 0 R (Item.70) 1554 0 R (Item.71) 1555 0 R (Item.72) 1560 0 R (Item.73) 1561 0 R (Item.74) 1562 0 R] /Limits [(Item.7) (Item.74)] >> -% 2326 0 obj +% 2323 0 obj << /Names [(Item.75) 1563 0 R (Item.76) 1564 0 R (Item.77) 1565 0 R (Item.78) 1578 0 R (Item.79) 1579 0 R (Item.8) 958 0 R] /Limits [(Item.75) (Item.8)] >> -% 2327 0 obj +% 2324 0 obj << /Names [(Item.80) 1580 0 R (Item.81) 1581 0 R (Item.82) 1582 0 R (Item.83) 1583 0 R (Item.84) 1584 0 R (Item.85) 1597 0 R] /Limits [(Item.80) (Item.85)] >> -% 2328 0 obj +% 2325 0 obj << /Names [(Item.86) 1609 0 R (Item.87) 1621 0 R (Item.88) 1622 0 R (Item.89) 1630 0 R (Item.9) 964 0 R (Item.90) 1631 0 R] /Limits [(Item.86) (Item.90)] >> -% 2329 0 obj +% 2326 0 obj << /Names [(Item.91) 1652 0 R (Item.92) 1653 0 R (Item.93) 1664 0 R (Item.94) 1670 0 R (Item.95) 1676 0 R (Item.96) 1682 0 R] /Limits [(Item.91) (Item.96)] >> -% 2330 0 obj +% 2327 0 obj << /Names [(Item.97) 1689 0 R (Item.98) 1690 0 R (Item.99) 1696 0 R (algocf.1) 2118 0 R (algocf.2) 2164 0 R (algocfline.1) 2103 0 R] /Limits [(Item.97) (algocfline.1)] >> -% 2331 0 obj +% 2328 0 obj << /Names [(algocfline.2) 2172 0 R (cite.2007c) 938 0 R (cite.2007d) 939 0 R (cite.BERTACCINIFILIPPONE) 1991 0 R (cite.BLACS) 914 0 R (cite.BLAS1) 897 0 R] /Limits [(algocfline.2) (cite.BLAS1)] >> -% 2332 0 obj +% 2329 0 obj << /Names [(cite.BLAS2) 898 0 R (cite.BLAS3) 899 0 R (cite.CaFiRo:2014) 2089 0 R (cite.DesPat:11) 892 0 R (cite.DesignPatterns) 1055 0 R (cite.Filippone:2017:SMM:3034774.3017994) 2237 0 R] /Limits [(cite.BLAS2) (cite.Filippone:2017:SMM:3034774.3017994)] >> -% 2333 0 obj +% 2330 0 obj << /Names [(cite.KIVA3PSBLAS) 2231 0 R (cite.METIS) 926 0 R (cite.MPI1) 2236 0 R (cite.MRC:11) 2104 0 R (cite.OurTechRep) 2090 0 R (cite.PARA04FOREST) 2229 0 R] /Limits [(cite.KIVA3PSBLAS) (cite.PARA04FOREST)] >> -% 2334 0 obj +% 2331 0 obj << /Names [(cite.PSBLAS) 2230 0 R (cite.RouXiaXu:11) 893 0 R (cite.Sparse03) 891 0 R (cite.machiels) 894 0 R (cite.metcalf) 890 0 R (cite.sblas02) 896 0 R] /Limits [(cite.PSBLAS) (cite.sblas02)] >> -% 2335 0 obj +% 2332 0 obj << /Names [(cite.sblas97) 895 0 R (descdata) 998 0 R (equation.4.1) 1274 0 R (equation.4.2) 1275 0 R (equation.4.3) 1276 0 R (figure.1) 908 0 R] /Limits [(cite.sblas97) (figure.1)] >> -% 2336 0 obj +% 2333 0 obj << /Names [(figure.2) 934 0 R (figure.3) 1377 0 R (figure.4) 1411 0 R (figure.5) 2111 0 R (figure.6) 2106 0 R (figure.7) 2151 0 R] /Limits [(figure.2) (figure.7)] >> -% 2337 0 obj +% 2334 0 obj << /Names [(figure.8) 2163 0 R (figure.9) 2190 0 R (listing.1) 1026 0 R (listing.2) 1056 0 R (listing.3) 1096 0 R (listing.4) 1116 0 R] /Limits [(figure.8) (listing.4)] >> -% 2338 0 obj +% 2335 0 obj << /Names [(listing.5) 1881 0 R (listing.6) 1882 0 R (lstlisting.-1) 1237 0 R (lstlisting.-10) 1951 0 R (lstlisting.-11) 1958 0 R (lstlisting.-12) 2039 0 R] /Limits [(listing.5) (lstlisting.-12)] >> -% 2339 0 obj +% 2336 0 obj << /Names [(lstlisting.-13) 2065 0 R (lstlisting.-14) 2123 0 R (lstlisting.-2) 1891 0 R (lstlisting.-3) 1897 0 R (lstlisting.-4) 1904 0 R (lstlisting.-5) 1910 0 R] /Limits [(lstlisting.-13) (lstlisting.-5)] >> -% 2340 0 obj +% 2337 0 obj << /Names [(lstlisting.-6) 1921 0 R (lstlisting.-7) 1928 0 R (lstlisting.-8) 1935 0 R (lstlisting.-9) 1944 0 R (lstnumber.-1.1) 1238 0 R (lstnumber.-1.2) 1239 0 R] /Limits [(lstlisting.-6) (lstnumber.-1.2)] >> -% 2341 0 obj +% 2338 0 obj << /Names [(lstnumber.-1.3) 1240 0 R (lstnumber.-1.4) 1241 0 R (lstnumber.-10.1) 1952 0 R (lstnumber.-11.1) 1959 0 R (lstnumber.-12.1) 2040 0 R (lstnumber.-12.2) 2041 0 R] /Limits [(lstnumber.-1.3) (lstnumber.-12.2)] >> -% 2342 0 obj +% 2339 0 obj << /Names [(lstnumber.-13.1) 2066 0 R (lstnumber.-13.2) 2067 0 R (lstnumber.-14.1) 2124 0 R (lstnumber.-14.2) 2125 0 R (lstnumber.-14.3) 2126 0 R (lstnumber.-14.4) 2127 0 R] /Limits [(lstnumber.-13.1) (lstnumber.-14.4)] >> -% 2343 0 obj +% 2340 0 obj << /Names [(lstnumber.-14.5) 2128 0 R (lstnumber.-14.6) 2129 0 R (lstnumber.-14.7) 2130 0 R (lstnumber.-2.1) 1892 0 R (lstnumber.-3.1) 1898 0 R (lstnumber.-4.1) 1905 0 R] /Limits [(lstnumber.-14.5) (lstnumber.-4.1)] >> -% 2344 0 obj +% 2341 0 obj << /Names [(lstnumber.-5.1) 1911 0 R (lstnumber.-6.1) 1922 0 R (lstnumber.-7.1) 1929 0 R (lstnumber.-8.1) 1936 0 R (lstnumber.-9.1) 1945 0 R (page.1) 671 0 R] /Limits [(lstnumber.-5.1) (page.1)] >> -% 2345 0 obj +% 2342 0 obj << /Names [(page.10) 1005 0 R (page.100) 1663 0 R (page.101) 1669 0 R (page.102) 1675 0 R (page.103) 1681 0 R (page.104) 1688 0 R] /Limits [(page.10) (page.104)] >> -% 2346 0 obj +% 2343 0 obj << /Names [(page.105) 1695 0 R (page.106) 1702 0 R (page.107) 1706 0 R (page.108) 1716 0 R (page.109) 1721 0 R (page.11) 1016 0 R] /Limits [(page.105) (page.11)] >> -% 2347 0 obj +% 2344 0 obj << /Names [(page.110) 1726 0 R (page.111) 1739 0 R (page.112) 1743 0 R (page.113) 1749 0 R (page.114) 1755 0 R (page.115) 1762 0 R] /Limits [(page.110) (page.115)] >> -% 2348 0 obj +% 2345 0 obj << /Names [(page.116) 1767 0 R (page.117) 1771 0 R (page.118) 1775 0 R (page.119) 1779 0 R (page.12) 1032 0 R (page.120) 1783 0 R] /Limits [(page.116) (page.120)] >> -% 2349 0 obj +% 2346 0 obj << /Names [(page.121) 1787 0 R (page.122) 1796 0 R (page.123) 1800 0 R (page.124) 1807 0 R (page.125) 1811 0 R (page.126) 1818 0 R] /Limits [(page.121) (page.126)] >> -% 2350 0 obj +% 2347 0 obj << /Names [(page.127) 1822 0 R (page.128) 1831 0 R (page.129) 1835 0 R (page.13) 1036 0 R (page.130) 1842 0 R (page.131) 1846 0 R] /Limits [(page.127) (page.131)] >> -% 2351 0 obj +% 2348 0 obj << /Names [(page.132) 1853 0 R (page.133) 1857 0 R (page.134) 1868 0 R (page.135) 1873 0 R (page.136) 1880 0 R (page.137) 1886 0 R] /Limits [(page.132) (page.137)] >> -% 2352 0 obj +% 2349 0 obj << /Names [(page.138) 1890 0 R (page.139) 1896 0 R (page.14) 1041 0 R (page.140) 1903 0 R (page.141) 1909 0 R (page.142) 1915 0 R] /Limits [(page.138) (page.142)] >> -% 2353 0 obj +% 2350 0 obj << /Names [(page.143) 1920 0 R (page.144) 1927 0 R (page.145) 1934 0 R (page.146) 1943 0 R (page.147) 1950 0 R (page.148) 1957 0 R] /Limits [(page.143) (page.148)] >> -% 2354 0 obj +% 2351 0 obj << /Names [(page.149) 1963 0 R (page.15) 1046 0 R (page.150) 1967 0 R (page.151) 1974 0 R (page.152) 1986 0 R (page.153) 1990 0 R] /Limits [(page.149) (page.153)] >> -% 2355 0 obj +% 2352 0 obj << /Names [(page.154) 1999 0 R (page.155) 2003 0 R (page.156) 2011 0 R (page.157) 2016 0 R (page.158) 2021 0 R (page.159) 2027 0 R] /Limits [(page.154) (page.159)] >> -% 2356 0 obj +% 2353 0 obj << /Names [(page.16) 1053 0 R (page.160) 2031 0 R (page.161) 2038 0 R (page.162) 2050 0 R (page.163) 2055 0 R (page.164) 2064 0 R] /Limits [(page.16) (page.164)] >> -% 2357 0 obj +% 2354 0 obj << /Names [(page.165) 2073 0 R (page.166) 2077 0 R (page.167) 2087 0 R (page.168) 2101 0 R (page.169) 2110 0 R (page.17) 1060 0 R] /Limits [(page.165) (page.17)] >> -% 2358 0 obj +% 2355 0 obj << /Names [(page.170) 2122 0 R (page.171) 2150 0 R (page.172) 2171 0 R (page.173) 2189 0 R (page.174) 2205 0 R (page.175) 2209 0 R] /Limits [(page.170) (page.175)] >> -% 2359 0 obj +% 2356 0 obj << /Names [(page.176) 2214 0 R (page.177) 2219 0 R (page.178) 2223 0 R (page.179) 2227 0 R (page.18) 1065 0 R (page.180) 2235 0 R] /Limits [(page.176) (page.180)] >> -% 2360 0 obj +% 2357 0 obj << /Names [(page.19) 1071 0 R (page.2) 681 0 R (page.20) 1076 0 R (page.21) 1080 0 R (page.22) 1084 0 R (page.23) 1088 0 R] /Limits [(page.19) (page.23)] >> -% 2361 0 obj +% 2358 0 obj << /Names [(page.24) 1094 0 R (page.25) 1100 0 R (page.26) 1107 0 R (page.27) 1114 0 R (page.28) 1120 0 R (page.29) 1124 0 R] /Limits [(page.24) (page.29)] >> -% 2362 0 obj +% 2359 0 obj << /Names [(page.3) 920 0 R (page.30) 1135 0 R (page.31) 1142 0 R (page.32) 1152 0 R (page.33) 1158 0 R (page.34) 1170 0 R] /Limits [(page.3) (page.34)] >> -% 2363 0 obj +% 2360 0 obj << /Names [(page.35) 1175 0 R (page.36) 1182 0 R (page.37) 1187 0 R (page.38) 1196 0 R (page.39) 1204 0 R (page.4) 933 0 R] /Limits [(page.35) (page.4)] >> -% 2364 0 obj +% 2361 0 obj << /Names [(page.40) 1209 0 R (page.41) 1217 0 R (page.42) 1222 0 R (page.43) 1229 0 R (page.44) 1235 0 R (page.45) 1248 0 R] /Limits [(page.40) (page.45)] >> -% 2365 0 obj +% 2362 0 obj << /Names [(page.46) 1255 0 R (page.47) 1262 0 R (page.48) 1273 0 R (page.49) 1289 0 R (page.5) 945 0 R (page.50) 1296 0 R] /Limits [(page.46) (page.50)] >> -% 2366 0 obj +% 2363 0 obj << /Names [(page.51) 1307 0 R (page.52) 1313 0 R (page.53) 1324 0 R (page.54) 1329 0 R (page.55) 1340 0 R (page.56) 1346 0 R] /Limits [(page.51) (page.56)] >> -% 2367 0 obj +% 2364 0 obj << /Names [(page.57) 1355 0 R (page.58) 1361 0 R (page.59) 1369 0 R (page.6) 950 0 R (page.60) 1376 0 R (page.61) 1390 0 R] /Limits [(page.57) (page.61)] >> -% 2368 0 obj +% 2365 0 obj << /Names [(page.62) 1398 0 R (page.63) 1407 0 R (page.64) 1415 0 R (page.65) 1419 0 R (page.66) 1434 0 R (page.67) 1439 0 R] /Limits [(page.62) (page.67)] >> +% 2366 0 obj +<< +/Names [(page.68) 1446 0 R (page.69) 1453 0 R (page.7) 963 0 R (page.70) 1457 0 R (page.71) 1462 0 R (page.72) 1468 0 R] +/Limits [(page.68) (page.72)] +>> +% 2367 0 obj +<< +/Names [(page.73) 1474 0 R (page.74) 1485 0 R (page.75) 1490 0 R (page.76) 1499 0 R (page.77) 1507 0 R (page.78) 1512 0 R] +/Limits [(page.73) (page.78)] +>> +% 2368 0 obj +<< +/Names [(page.79) 1518 0 R (page.8) 986 0 R (page.80) 1523 0 R (page.81) 1531 0 R (page.82) 1536 0 R (page.83) 1544 0 R] +/Limits [(page.79) (page.83)] +>> endstream endobj -2434 0 obj +2431 0 obj << /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20241116161709+01'00') -/ModDate (D:20241116161709+01'00') +/CreationDate (D:20241118155812+01'00') +/ModDate (D:20241118155812+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) >> @@ -38071,384 +37967,369 @@ endobj 2370 0 obj << /Type /ObjStm -/N 64 -/First 642 -/Length 11811 ->> -stream -2369 0 2371 170 2372 342 2373 512 2374 684 2375 853 2376 1022 2377 1202 2378 1400 2379 1598 -2380 1790 2381 1973 2382 2154 2383 2360 2384 2590 2385 2815 2386 3034 2387 3261 2388 3487 2389 3709 -2390 3934 2391 4164 2392 4393 2393 4621 2394 4843 2395 5071 2396 5297 2397 5519 2398 5741 2399 5982 -2400 6244 2401 6500 2402 6766 2403 7036 2404 7298 2405 7560 2406 7770 2407 7950 2408 8127 2409 8299 -2410 8409 2411 8523 2412 8635 2413 8746 2414 8857 2415 8973 2416 9096 2417 9214 2418 9327 2419 9440 -2420 9552 2421 9663 2422 9778 2423 9901 2424 10028 2425 10154 2426 10285 2427 10409 2428 10482 2429 10602 -2430 10724 2431 10837 2432 10921 2433 10956 +/N 61 +/First 607 +/Length 11264 +>> +stream +2369 0 2371 172 2372 341 2373 510 2374 690 2375 888 2376 1086 2377 1278 2378 1461 2379 1642 +2380 1848 2381 2078 2382 2303 2383 2522 2384 2749 2385 2975 2386 3197 2387 3422 2388 3652 2389 3881 +2390 4109 2391 4331 2392 4559 2393 4785 2394 5007 2395 5229 2396 5470 2397 5732 2398 5988 2399 6254 +2400 6524 2401 6786 2402 7048 2403 7258 2404 7438 2405 7615 2406 7787 2407 7897 2408 8011 2409 8123 +2410 8234 2411 8345 2412 8461 2413 8584 2414 8702 2415 8815 2416 8928 2417 9040 2418 9151 2419 9266 +2420 9389 2421 9516 2422 9642 2423 9773 2424 9897 2425 9970 2426 10090 2427 10212 2428 10325 2429 10409 +2430 10444 % 2369 0 obj << -/Names [(page.68) 1446 0 R (page.69) 1453 0 R (page.7) 963 0 R (page.70) 1457 0 R (page.71) 1462 0 R (page.72) 1468 0 R] -/Limits [(page.68) (page.72)] ->> -% 2371 0 obj -<< -/Names [(page.73) 1474 0 R (page.74) 1485 0 R (page.75) 1490 0 R (page.76) 1499 0 R (page.77) 1507 0 R (page.78) 1512 0 R] -/Limits [(page.73) (page.78)] ->> -% 2372 0 obj -<< -/Names [(page.79) 1518 0 R (page.8) 986 0 R (page.80) 1523 0 R (page.81) 1531 0 R (page.82) 1536 0 R (page.83) 1544 0 R] -/Limits [(page.79) (page.83)] ->> -% 2373 0 obj -<< /Names [(page.84) 1550 0 R (page.85) 1559 0 R (page.86) 1573 0 R (page.87) 1577 0 R (page.88) 1590 0 R (page.89) 1596 0 R] /Limits [(page.84) (page.89)] >> -% 2374 0 obj +% 2371 0 obj << /Names [(page.9) 997 0 R (page.90) 1603 0 R (page.91) 1608 0 R (page.92) 1616 0 R (page.93) 1620 0 R (page.94) 1629 0 R] /Limits [(page.9) (page.94)] >> -% 2375 0 obj +% 2372 0 obj << /Names [(page.95) 1637 0 R (page.96) 1641 0 R (page.97) 1646 0 R (page.98) 1651 0 R (page.99) 1658 0 R (page.i) 728 0 R] /Limits [(page.95) (page.i)] >> -% 2376 0 obj +% 2373 0 obj << /Names [(page.ii) 784 0 R (page.iii) 831 0 R (page.iv) 872 0 R (precdata) 1115 0 R (section*.1) 729 0 R (section*.10) 626 0 R] /Limits [(page.ii) (section*.10)] >> -% 2377 0 obj +% 2374 0 obj << /Names [(section*.11) 630 0 R (section*.12) 634 0 R (section*.13) 638 0 R (section*.14) 642 0 R (section*.15) 646 0 R (section*.16) 650 0 R] /Limits [(section*.11) (section*.16)] >> -% 2378 0 obj +% 2375 0 obj << /Names [(section*.17) 654 0 R (section*.18) 658 0 R (section*.19) 662 0 R (section*.2) 2102 0 R (section*.20) 2228 0 R (section*.3) 2131 0 R] /Limits [(section*.17) (section*.3)] >> -% 2379 0 obj +% 2376 0 obj << /Names [(section*.4) 2152 0 R (section*.5) 2173 0 R (section*.6) 610 0 R (section*.7) 614 0 R (section*.8) 618 0 R (section*.9) 622 0 R] /Limits [(section*.4) (section*.9)] >> -% 2380 0 obj +% 2377 0 obj << /Names [(section.1) 7 0 R (section.10) 541 0 R (section.11) 573 0 R (section.12) 585 0 R (section.13) 606 0 R (section.2) 11 0 R] /Limits [(section.1) (section.2)] >> -% 2381 0 obj +% 2378 0 obj << /Names [(section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R (section.7) 421 0 R (section.8) 493 0 R] /Limits [(section.3) (section.8)] >> -% 2382 0 obj +% 2379 0 obj << /Names [(section.9) 513 0 R (spbasedata) 1061 0 R (spdata) 1054 0 R (subsection.10.1) 545 0 R (subsection.10.2) 549 0 R (subsection.10.3) 553 0 R] /Limits [(section.9) (subsection.10.3)] >> -% 2383 0 obj +% 2380 0 obj << /Names [(subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.10.7) 569 0 R (subsection.11.1) 577 0 R (subsection.11.2) 581 0 R] /Limits [(subsection.10.4) (subsection.11.2)] >> -% 2384 0 obj +% 2381 0 obj << /Names [(subsection.12.1) 589 0 R (subsection.12.2) 593 0 R (subsection.12.3) 597 0 R (subsection.12.4) 601 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] /Limits [(subsection.12.1) (subsection.2.2)] >> -% 2385 0 obj +% 2382 0 obj << /Names [(subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R (subsection.3.4) 212 0 R] /Limits [(subsection.2.3) (subsection.3.4)] >> -% 2386 0 obj +% 2383 0 obj << /Names [(subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R (subsection.4.13) 272 0 R] /Limits [(subsection.3.5) (subsection.4.13)] >> -% 2387 0 obj +% 2384 0 obj << /Names [(subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R (subsection.4.4) 236 0 R] /Limits [(subsection.4.14) (subsection.4.4)] >> -% 2388 0 obj +% 2385 0 obj << /Names [(subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R (subsection.5.1) 292 0 R] /Limits [(subsection.4.5) (subsection.5.1)] >> -% 2389 0 obj +% 2386 0 obj << /Names [(subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R (subsection.6.11) 352 0 R] /Limits [(subsection.5.2) (subsection.6.11)] >> -% 2390 0 obj +% 2387 0 obj << /Names [(subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R (subsection.6.17) 376 0 R] /Limits [(subsection.6.12) (subsection.6.17)] >> -% 2391 0 obj +% 2388 0 obj << /Names [(subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R (subsection.6.22) 396 0 R] /Limits [(subsection.6.18) (subsection.6.22)] >> -% 2392 0 obj +% 2389 0 obj << /Names [(subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R (subsection.6.3) 320 0 R] /Limits [(subsection.6.23) (subsection.6.3)] >> -% 2393 0 obj +% 2390 0 obj << /Names [(subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R (subsection.6.9) 344 0 R] /Limits [(subsection.6.4) (subsection.6.9)] >> -% 2394 0 obj +% 2391 0 obj << /Names [(subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R (subsection.7.14) 477 0 R] /Limits [(subsection.7.1) (subsection.7.14)] >> -% 2395 0 obj +% 2392 0 obj << /Names [(subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R (subsection.7.4) 437 0 R] /Limits [(subsection.7.15) (subsection.7.4)] >> -% 2396 0 obj +% 2393 0 obj << /Names [(subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R (subsection.8.1) 497 0 R] /Limits [(subsection.7.5) (subsection.8.1)] >> -% 2397 0 obj +% 2394 0 obj << /Names [(subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R (subsection.9.3) 525 0 R] /Limits [(subsection.8.2) (subsection.9.3)] >> -% 2398 0 obj +% 2395 0 obj << /Names [(subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R] /Limits [(subsection.9.4) (subsubsection.3.1.10)] >> -% 2399 0 obj +% 2396 0 obj << /Names [(subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R] /Limits [(subsubsection.3.1.11) (subsubsection.3.1.2)] >> -% 2400 0 obj +% 2397 0 obj << /Names [(subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R] /Limits [(subsubsection.3.1.3) (subsubsection.3.1.8)] >> -% 2401 0 obj +% 2398 0 obj << /Names [(subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R] /Limits [(subsubsection.3.1.9) (subsubsection.3.2.13)] >> -% 2402 0 obj +% 2399 0 obj << /Names [(subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R] /Limits [(subsubsection.3.2.14) (subsubsection.3.2.19)] >> -% 2403 0 obj +% 2400 0 obj << /Names [(subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R] /Limits [(subsubsection.3.2.2) (subsubsection.3.2.7)] >> -% 2404 0 obj +% 2401 0 obj << /Names [(subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R] /Limits [(subsubsection.3.2.8) (subsubsection.3.3.4)] >> -% 2405 0 obj +% 2402 0 obj << /Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1108 0 R (table.10) 1256 0 R (table.11) 1264 0 R (table.12) 1277 0 R] /Limits [(subsubsection.3.3.5) (table.12)] >> -% 2406 0 obj +% 2403 0 obj << /Names [(table.13) 1297 0 R (table.14) 1325 0 R (table.15) 1341 0 R (table.16) 1356 0 R (table.17) 1370 0 R (table.18) 1399 0 R] /Limits [(table.13) (table.18)] >> -% 2407 0 obj +% 2404 0 obj << /Names [(table.19) 1435 0 R (table.2) 1153 0 R (table.20) 1447 0 R (table.21) 1977 0 R (table.22) 2105 0 R (table.3) 1171 0 R] /Limits [(table.19) (table.3)] >> -% 2408 0 obj +% 2405 0 obj << /Names [(table.4) 1183 0 R (table.5) 1197 0 R (table.6) 1205 0 R (table.7) 1218 0 R (table.8) 1230 0 R (table.9) 1249 0 R] /Limits [(table.4) (table.9)] >> -% 2409 0 obj +% 2406 0 obj << /Names [(title.0) 3 0 R (vbasedata) 1042 0 R (vdata) 1095 0 R] /Limits [(title.0) (vdata)] >> -% 2410 0 obj +% 2407 0 obj << -/Kids [2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R 2310 0 R] +/Kids [2302 0 R 2303 0 R 2304 0 R 2305 0 R 2306 0 R 2307 0 R] /Limits [(Doc-Start) (Item.125)] >> -% 2411 0 obj +% 2408 0 obj << -/Kids [2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R 2316 0 R] +/Kids [2308 0 R 2309 0 R 2310 0 R 2311 0 R 2312 0 R 2313 0 R] /Limits [(Item.126) (Item.25)] >> -% 2412 0 obj +% 2409 0 obj << -/Kids [2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R 2322 0 R] +/Kids [2314 0 R 2315 0 R 2316 0 R 2317 0 R 2318 0 R 2319 0 R] /Limits [(Item.26) (Item.58)] >> -% 2413 0 obj +% 2410 0 obj << -/Kids [2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R 2328 0 R] +/Kids [2320 0 R 2321 0 R 2322 0 R 2323 0 R 2324 0 R 2325 0 R] /Limits [(Item.59) (Item.90)] >> -% 2414 0 obj +% 2411 0 obj << -/Kids [2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R 2334 0 R] +/Kids [2326 0 R 2327 0 R 2328 0 R 2329 0 R 2330 0 R 2331 0 R] /Limits [(Item.91) (cite.sblas02)] >> -% 2415 0 obj +% 2412 0 obj << -/Kids [2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R 2340 0 R] +/Kids [2332 0 R 2333 0 R 2334 0 R 2335 0 R 2336 0 R 2337 0 R] /Limits [(cite.sblas97) (lstnumber.-1.2)] >> -% 2416 0 obj +% 2413 0 obj << -/Kids [2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R 2346 0 R] +/Kids [2338 0 R 2339 0 R 2340 0 R 2341 0 R 2342 0 R 2343 0 R] /Limits [(lstnumber.-1.3) (page.11)] >> -% 2417 0 obj +% 2414 0 obj << -/Kids [2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R 2352 0 R] +/Kids [2344 0 R 2345 0 R 2346 0 R 2347 0 R 2348 0 R 2349 0 R] /Limits [(page.110) (page.142)] >> -% 2418 0 obj +% 2415 0 obj << -/Kids [2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R 2358 0 R] +/Kids [2350 0 R 2351 0 R 2352 0 R 2353 0 R 2354 0 R 2355 0 R] /Limits [(page.143) (page.175)] >> -% 2419 0 obj +% 2416 0 obj << -/Kids [2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R 2364 0 R] +/Kids [2356 0 R 2357 0 R 2358 0 R 2359 0 R 2360 0 R 2361 0 R] /Limits [(page.176) (page.45)] >> -% 2420 0 obj +% 2417 0 obj << -/Kids [2365 0 R 2366 0 R 2367 0 R 2368 0 R 2369 0 R 2371 0 R] +/Kids [2362 0 R 2363 0 R 2364 0 R 2365 0 R 2366 0 R 2367 0 R] /Limits [(page.46) (page.78)] >> -% 2421 0 obj +% 2418 0 obj << -/Kids [2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R 2377 0 R] +/Kids [2368 0 R 2369 0 R 2371 0 R 2372 0 R 2373 0 R 2374 0 R] /Limits [(page.79) (section*.16)] >> -% 2422 0 obj +% 2419 0 obj << -/Kids [2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R] +/Kids [2375 0 R 2376 0 R 2377 0 R 2378 0 R 2379 0 R 2380 0 R] /Limits [(section*.17) (subsection.11.2)] >> -% 2423 0 obj +% 2420 0 obj << -/Kids [2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R 2389 0 R] +/Kids [2381 0 R 2382 0 R 2383 0 R 2384 0 R 2385 0 R 2386 0 R] /Limits [(subsection.12.1) (subsection.6.11)] >> -% 2424 0 obj +% 2421 0 obj << -/Kids [2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R 2395 0 R] +/Kids [2387 0 R 2388 0 R 2389 0 R 2390 0 R 2391 0 R 2392 0 R] /Limits [(subsection.6.12) (subsection.7.4)] >> -% 2425 0 obj +% 2422 0 obj << -/Kids [2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R 2401 0 R] +/Kids [2393 0 R 2394 0 R 2395 0 R 2396 0 R 2397 0 R 2398 0 R] /Limits [(subsection.7.5) (subsubsection.3.2.13)] >> -% 2426 0 obj +% 2423 0 obj << -/Kids [2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R 2407 0 R] +/Kids [2399 0 R 2400 0 R 2401 0 R 2402 0 R 2403 0 R 2404 0 R] /Limits [(subsubsection.3.2.14) (table.3)] >> -% 2427 0 obj +% 2424 0 obj << -/Kids [2408 0 R 2409 0 R] +/Kids [2405 0 R 2406 0 R] /Limits [(table.4) (vdata)] >> -% 2428 0 obj +% 2425 0 obj << -/Kids [2410 0 R 2411 0 R 2412 0 R 2413 0 R 2414 0 R 2415 0 R] +/Kids [2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2412 0 R] /Limits [(Doc-Start) (lstnumber.-1.2)] >> -% 2429 0 obj +% 2426 0 obj << -/Kids [2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R 2421 0 R] +/Kids [2413 0 R 2414 0 R 2415 0 R 2416 0 R 2417 0 R 2418 0 R] /Limits [(lstnumber.-1.3) (section*.16)] >> -% 2430 0 obj +% 2427 0 obj << -/Kids [2422 0 R 2423 0 R 2424 0 R 2425 0 R 2426 0 R 2427 0 R] +/Kids [2419 0 R 2420 0 R 2421 0 R 2422 0 R 2423 0 R 2424 0 R] /Limits [(section*.17) (vdata)] >> -% 2431 0 obj +% 2428 0 obj << -/Kids [2428 0 R 2429 0 R 2430 0 R] +/Kids [2425 0 R 2426 0 R 2427 0 R] /Limits [(Doc-Start) (vdata)] >> -% 2432 0 obj +% 2429 0 obj << -/Dests 2431 0 R +/Dests 2428 0 R >> -% 2433 0 obj +% 2430 0 obj << /Type /Catalog -/Pages 2301 0 R -/Outlines 2302 0 R -/Names 2432 0 R +/Pages 2298 0 R +/Outlines 2299 0 R +/Names 2429 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels<>2<
                  >6<>]>> /OpenAction 665 0 R >> endstream endobj -2435 0 obj +2432 0 obj << /Type /XRef -/Index [0 2436] -/Size 2436 +/Index [0 2433] +/Size 2433 /W [1 3 1] -/Root 2433 0 R -/Info 2434 0 R -/ID [<9F072B9C5E6EDDB3D2377362E85F3F5A> <9F072B9C5E6EDDB3D2377362E85F3F5A>] -/Length 12180 ->> -stream -ÿ]# #k' "k1 !k9 kE   -kN   Õ   Õ Õ Õ Õ8 Õ9 Õ: Õ; Õ? Õ@  ÕA !"ÕE #$ÕF %&ÕH '(ÕI )*ÕM +,ÕN -.ÕO /0ÕV 12ÕW -34Õ^ 56Õ_ 78Õc 9:+ ;<+ =>+ ?@+ AB+ CD+  EF+  GH+ÿcIJ+ÿbKL+ÿaMN+ÿ`OP+ÿ_QR+ÿ^ST+"ÿ]UV+#ÿ\WX+$ÿ[YZ+%ÿZ[\++ÿY]^+,ÿX_`+-ÿWab+3ÿVcË?%+8ÿUËË+9ÿTËË+:ÿSËË+AÿRËË+EÿQË Ë -+OÿPË Ë +_ÿOË Ëˆ ÿNËˈÿMËˈ"ÿLËˈ*ÿKËˈ6ÿJËˈAÿIËˈRÿHËˈYÿGËˈ`ÿFËË þÿEË!Ë"þÿDË#Ë$þ4ÿCË%Ë&þAÿBË'Ë(þPÿAË)Ë*þVÿ@Ë+Ë,þ]ÿ?Ë-Ë.gÿ>Ë/Ë0g.ÿ=Ë1Ë2g7ÿ<Ë3Ë4gBÿ;Ë5Ë6gCÿ:Ë7Ë8gZÿ9Ë9Ë:Ýÿ8Ë;Ë<Ý -ÿ7Ë=Ë>Ýÿ6Ë?Ë@Ýÿ5ËAËBÝ ÿ4ËCËDÝ+ÿ3ËEËFÝFÿ2ËGËHÝVÿ1ËIËJÝ\ÿ0ËKËLÝcÿ/ËMËND ÿ.ËOËPDÿ-ËQËRDÿ,ËSËTD!ÿ+ËUËVD&ÿ*ËWËXD0ÿ)ËYËZD5ÿ(Ë[Ë\D;ÿ'Ë]Ë^DAÿ&Ë_Ë`DGÿ%ËaËbDMÿ$Ëc”}ƒDTÿ#””D[ÿ"””µÿ!””µÿ ””µÿ” ” -µÿ” ” µ"ÿ” ”µ(ÿ””µ/ÿ””µ3ÿ””µ7ÿ””µ;ÿ””µ?ÿ””µCÿ””µMÿ””µWÿ”” µaÿ”!”"#ÿ”#”$#ÿ”%”&#ÿ”'”(#'ÿ”)”*#,ÿ”+”,#3ÿ ”-”.#<ÿ ”/”0#Bÿ ”1”2#Hÿ -”3”4#Nÿ ”5”6#Tÿ”7”8#Yÿ”9”:#`ÿ”;”<‘ÿ”=”>‘ -ÿ”?”@‘ÿ”A”B‘ÿ”C”D‘!ÿ”E”F‘(ÿ”G”H‘1Îc”I”J‘>Îb”K”L‘IÎa”M”N‘NÎ`”O”P‘RÎ_”Q”R‘XÎ^”S”T‘\Î]”U”V‘bÎ\”W”XûÎ[”Y”Zû+ÎZ”[”\û,ÎY”]”^û3ÎX”_”`û4ÎW”a”buÎV”c]%u#ÎU]]u$ÎT]]u&ÎS]]u*ÎR]]u+ÎQ] ] -u,ÎP] ] u-ÎO] ]u.ÎN]]u/ÎM]]u0ÎL]]u1ÎK]]u5ÎJ]]u6ÎI]]u7ÎH]]u8ÎG]]]Áè] ]$¾Ó]!]"ÎÎÎÎ Ò”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c  +/Root 2430 0 R +/Info 2431 0 R +/ID [<06FD2D470EA243DFD84ACE1514D01F23> <06FD2D470EA243DFD84ACE1514D01F23>] +/Length 12165 +>> +stream +ÿ]#ý k'ýk1ýk9ýkEý  +kNý  Õ ý ÕýÕýÕýÕ8ýÕ9ýÕ:ýÕ;ýÕ?ýÕ@ý ÕAý!"ÕEý#$ÕFý%&ÕHý '(ÕIý )*ÕMý +,ÕNý +-.ÕOý /0ÕVý12ÕWý34Õ^ý56Õ_ý78Õcý9:+ý;<+ý=>+ý?@+ýAB+ücCD+ übEF+ üaGH+ü`IJ+ü_KL+ü^MN+ü]OP+ü\QR+ü[ST+"üZUV+#üYWX+$üXYZ+%üW[\++üV]^+,üU_`+-üTab+3üScË?%+8üRËË+9üQËË+:üPËË+AüOËË+EüNË Ë ++OüMË Ë +_üLË Ëˆ üKËˈüJËˈ"üIËˈ*üHËˈ6üGËˈAüFËˈRüEËˈYüDËˈ`üCËË þüBË!Ë"þüAË#Ë$þ4ü@Ë%Ë&þAü?Ë'Ë(þPü>Ë)Ë*þVü=Ë+Ë,þ]ü<Ë-Ë.gü;Ë/Ë0g.ü:Ë1Ë2g7ü9Ë3Ë4gBü8Ë5Ë6gCü7Ë7Ë8gZü6Ë9Ë:Ýü5Ë;Ë<Ý +ü4Ë=Ë>Ýü3Ë?Ë@Ýü2ËAËBÝ ü1ËCËDÝ+ü0ËEËFÝFü/ËGËHÝVü.ËIËJÝ\ü-ËKËLÝcü,ËMËND ü+ËOËPDü*ËQËRDü)ËSËTD!ü(ËUËVD&ü'ËWËXD0ü&ËYËZD5ü%Ë[Ë\D;ü$Ë]Ë^DAü#Ë_Ë`DGü"ËaËbDMü!Ëc”}ƒDTü ””D[ü””µü””µü””µü” ” +µü” ” µ"ü” ”µ(ü””µ/ü””µ3ü””µ7ü””µ;ü””µ?ü””µCü””µMü””µWü”” µaü”!”"#ü”#”$#ü”%”&#ü ”'”(#'ü ”)”*#,ü ”+”,#3ü +”-”.#<ü ”/”0#Bü”1”2#Hü”3”4#Nü”5”6#Tü”7”8#Yü”9”:#`ü”;”<‘ü”=”>‘ +ü”?”@‘ü”A”B‘Ëc”C”D‘!Ëb”E”F‘(Ëa”G”H‘1Ë`”I”J‘>Ë_”K”L‘IË^”M”N‘NË]”O”P‘RË\”Q”R‘XË[”S”T‘\ËZ”U”V‘bËY”W”XûËX”Y”Zû+ËW”[”\û,ËV”]”^û3ËU”_”`û4ËT”a”buËS”c]%u#ËR]]u$ËQ]]u&ËP]]u*ËO]]u+ËN] ] +u,ËM] ] u-ËL] ]u.ËK]]u/ËJ]]u0ËI]]u1ËH]]u5ËG]]u6ËF]]u7ËE]]u8ËD]]]Áè] ]$¾Ó]!]"ËËËËÒ”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c      !"#$%)']ZÂ"&´™*+,-./0123456789:;<=>?@ABCDEFGHIJKLMOPRTV[Y(7ØXNQSUW]_`abckkkkkkkkkk k -k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛÎ!uPuGuTuRuOuDuEuNuAuBk.k/k0/Wk5k3k)¸k2k*k+k,k-4 uCk6k7k<k4?°k8ÎÎÎk:k;uMkAkBy,kFk=dtkCkDk>k?k@u@u?kHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕÎÎ"&‹Õ ÕÕÕ -Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ|ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÒÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ÎÕ2Õ5Õ6Õ<Õ4‡xÕ7ÕBÕ=›ÙÕ>Î#ÕJÕC­—ÕDÕGÕPÕKÁxÕLÕRÕSÕTÕYÕQØÕUÕXuLÕ\Õ`ÕZø6Õ[Õ]+ÕašÕb+t®+ +JÓ+Î$++ -\Ñ+ ++tÀ+++‡`+++™ü+++ +'+³Ä+!+&+*+.+(Òø+)Î%+0+1+4+/çb+2+P+6+>+<+5÷2+7+;+@+B+= -/+?+F+C+D+H+I+J+K+L+M+S+Q+GZ+NÎ+T+U+W+R:x+VÎ&+Y+Z+[+\+]+a+XD7+^+`+cˆ+bcˆˆã(ˆˆˆˆˆˆ ˆ ˆàˆ -ˆ ˆˆÀ߈ˆˆˆˆˆÃbˆˆˆˆâ¢ˆˆÎ'ˆˆˆ ˆ$ˆïˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ%²ˆ)ˆ+ˆ0ˆ-&zˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ12øˆ5ˆ7ˆ;ˆ9Påˆ:ˆ=ˆ>ˆ?ˆCˆ<Sgˆ@ˆBÎ(ˆLˆDnˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM܈QˆSˆVˆWˆ[ˆU˜¸ˆXˆZˆ]ˆ^ˆbˆ\®ˆ_Έaþþþþþ þ -ˆcÃeþþþþþ òþ þþþþþþþþ 5þÎ)þþþþ*¬þþþþþ þ!þ"þ#þ%þJµþ$þ'þ(þ*þ&hþ)þ,þ-þ.þ/þ0þ1þ2þ6þ+zpþ3þ5þ9þ7˜×þ8þ;þ<þ=þ>þ?þEþFþCþ:šNþ@þBÎ*þHþD¸žþGþJþKþLþMþNþRþI¾þOþQþTþWþSÜþUþYþZþ[gþ_þXÞâþ\þ^—ggþ`ùÍggþaþbþcggp gH{‹g -g©#g Î+g g ggg µHgggû2ggggÔ1ggggg'ggë˜gg(gù´g&g g!g"g#g$g% Ð=?g*g+g,g0g)j×g-g/g3g1Œºg2Î,g5g;g9g4’g6g8g<g=g?g:°g>gDg@À³gAgFgIgEÛ)gGgHgKgNgJõïgLÎgMgVgO#¤gPgQgRgSgTgUÎ-gXg[gW/~gYg]gbg\KÛg^g_g`gaÝÝÝgcX"ÝÝ–XÝÝÝ ÝŸÀÝ Ý ÝÝ ¬bÝÝÝÝݵÝÎ.ÝÝÌzÝÝÝÝÝÝ"ÝÓŽÝÝ!Ý(Ý#ëÝ$Ý%Ý&Ý'Ý.Ý,Ý)ðYÝ*Ý/Ý0Ý7Ý-ûÝ1Ý2Ý3Ý4Ý5Ý6Ý@Ý8#Ý9Ý:Ý;Ý<Ý=Ý>Ý?Î/ÝBÝCÝDÝGÝA7þÝEÝQÝHS?ÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRa ÝUÝYÝZÝ^ÝXmÝ[Ý]Ý`ÝaDÝ_|ÝbÛ]DD¿+DDÎ0DDD -DÃEDDD ÝND D DDDDDDßÉDDDDDDDøÃDD"D³D D$D'D#zD%Î1D,D(,‘D)D*D+D.D1D-/ÕD/D3D7D2FÂD4D6D9D=D8SçD:D<D?DCD>hD@DBDEDIDDuDFDHÎ2DKDPDJ‰'DLDNDODRDWDQ˜ DSDUDVDYD\DX¦`DZDbD]¼]D^D_D`DaµµµµDcËZµ!Uëµ µ qµÎ3µµ - Hµ µ µ µµµµµµµµµ <Šµµµ =rµµµµ%µ  TMµ!µ#µ$µ,µ& fþµ'µ)µ*µ+µ0µ- xÙµ.Î4µ4µ1 ƒ=µ2µ8µ5 ºµ6µ<µ9 •†µ:µ@µ= ›}µ>µDµA  ½µBµJµE ¸¬µFµGµHµIÎÎ5µNµK Î"µLµTµO 朵PµQµRµSµXµU ûEµVµ^µY!~µZµ[µ\µ]µbµ_!(žµ`#µc!@Û####Î6"Åu##!{#### !“¤# -# # # ##!¨†###!Á######!Ö$##$#!î?### Î#!#"##Î7#)#%"÷#&#(#.#*"/#+#-#0#1#4#/"5h#2#7#8#9#5"P#6#?#:"yc#;#=#>#E#@"‡Š#A#C#DÎ8#K#F"(#G#I#J#Q#L"“•#M#O#P#U#R"›ð#S#W#\#V"žH#X#Z#[#^#c#]"±#_#a#b‘‘‘"êS‘‘‘$!”Î9‘‘ ‘"øã‘ ‘ ‘ ‘‘‘# -:‘‘‘‘‘‘#'Ö‘‘‘‘‘#E ‘‘"‘#Gב ‘$‘%‘&‘*‘##M‘'‘)Î:‘6‘,‘-‘.‘/‘4‘2‘+#a‘0‘7‘3#rM‘5u>‘9‘:‘;‘<‘?‘8#§¸‘=‘B‘@#Åê‘A‘D‘E‘F‘G‘J‘C#Ê’‘H‘L‘O‘K#àý‘MÎ;‘S‘P#îבQ‘U‘V‘Y‘T#òâ‘W‘]‘Z#ý´‘[‘_‘`ûû‘^$P‘a‘cûûû%ÕÂûûûû -û$M>û û ûû $i†û Î<ûûûûûû${¨ûûûûûûûû$žûû!û$¸îû û#û%û&û'û(û)û-û"$½lû*û$uUuVû/û0%øû1%CHûIû;û7û.$Ý‹û2û5û6uQû=ûKûAû8%ëû<û>û?û@Î=û9û:%$ûTûVûB%%ûJûLûMûNûOûPûQûRûSûUûCûD%M—ûEûFûG%NŸûH%O•%PŸ%oy%š•û^û_û`uûW%x«ûaûbûcûXûYûZû[û\%§û]%¨:%©0%¶ìu -u 'JÞ&(uuu&¹u u u uuuuu&3 u&4&5&Nµ&åuuu&Yèuuuu& uuu&Ž‘u&&­&­¸uu&ºùuu u&¿€uÎ>u'u!&Þlu"u%u2u(&õ‚u)u9u3' -íu4uIu:'Ôu;u<u=uFuHuXuJ'2˜uKuSuWuYÎuZu[u\u]Îu^u_Îu`uaubÎucÎ+<%Î'{âÎ'˜ÁÎ'¶ÎÎ'ÞÆÎ'ï#Î'þßÎ(R¾Î(ÓOÎ )$÷Î -)›µÎ )ãÎ *AÉÎ *§àÎ*÷Š*û¶+t+°+ ø+7+Î+`+!ò+%„+*+0+6Î?Î@ÎAÎBÎCÎDÎEÎF+€=+¦ª $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` a b c B+ç B B B B B B B B B  B - B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B< B= B> B?+äï,™ +k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛËuPuGuTuRuOuDuEuNuAuBk.k/k0/Wk5k3k)¸k2k*k+k,k-4 uCk6k7k<k4?°k8ËËËk:k;uMkAkBy,kFk=dtkCkDk>k?k@u@u?kHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕËË&‹Õ ÕÕÕ +Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ|ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÒÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ËÕ2Õ5Õ6Õ<Õ4‡xÕ7ÕBÕ=›ÙÕ>Ë ÕJÕC­—ÕDÕGÕPÕKÁxÕLÕRÕSÕTÕYÕQØÕUÕXuLÕ\Õ`ÕZø6Õ[Õ]+ÕašÕb+t®+ +JÓ+Ë!++ +\Ñ+ ++tÀ+++‡`+++™ü+++ +'+³Ä+!+&+*+.+(Òø+)Ë"+0+1+4+/çb+2+P+6+>+<+5÷2+7+;+@+B+= +/+?+F+C+D+H+I+J+K+L+M+S+Q+GZ+NË+T+U+W+R:x+VË#+Y+Z+[+\+]+a+XD7+^+`+cˆ+bcˆˆã(ˆˆˆˆˆˆ ˆ ˆàˆ +ˆ ˆˆÀ߈ˆˆˆˆˆÃbˆˆˆˆâ¢ˆˆË$ˆˆˆ ˆ$ˆïˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ%²ˆ)ˆ+ˆ0ˆ-&zˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ12øˆ5ˆ7ˆ;ˆ9Påˆ:ˆ=ˆ>ˆ?ˆCˆ<Sgˆ@ˆBË%ˆLˆDnˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM܈QˆSˆVˆWˆ[ˆU˜¸ˆXˆZˆ]ˆ^ˆbˆ\®ˆ_ˈaþþþþþ þ +ˆcÃeþþþþþ òþ þþþþþþþþ 5þË&þþþþ*¬þþþþþ þ!þ"þ#þ%þJµþ$þ'þ(þ*þ&hþ)þ,þ-þ.þ/þ0þ1þ2þ6þ+zpþ3þ5þ9þ7˜×þ8þ;þ<þ=þ>þ?þEþFþCþ:šNþ@þBË'þHþD¸žþGþJþKþLþMþNþRþI¾þOþQþTþWþSÜþUþYþZþ[gþ_þXÞâþ\þ^—ggþ`ùÍggþaþbþcggp gH{‹g +g©#g Ë(g g ggg µHgggû2ggggÔ1ggggg'ggë˜gg(gù´g&g g!g"g#g$g% Ð=?g*g+g,g0g)j×g-g/g3g1Œºg2Ë)g5g;g9g4’g6g8g<g=g?g:°g>gDg@À³gAgFgIgEÛ)gGgHgKgNgJõïgLËgMgVgO#¤gPgQgRgSgTgUË*gXg[gW/~gYg]gbg\KÛg^g_g`gaÝÝÝgcX"ÝÝ–XÝÝÝ ÝŸÀÝ Ý ÝÝ ¬bÝÝÝÝݵÝË+ÝÝÌzÝÝÝÝÝÝ"ÝÓŽÝÝ!Ý(Ý#ëÝ$Ý%Ý&Ý'Ý.Ý,Ý)ðYÝ*Ý/Ý0Ý7Ý-ûÝ1Ý2Ý3Ý4Ý5Ý6Ý@Ý8#Ý9Ý:Ý;Ý<Ý=Ý>Ý?Ë,ÝBÝCÝDÝGÝA7þÝEÝQÝHS?ÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRa ÝUÝYÝZÝ^ÝXmÝ[Ý]Ý`ÝaDÝ_|ÝbÛ]DD¿+DDË-DDD +DÃEDDD ÝND D DDDDDDßÉDDDDDDDøÃDD"D³D D$D'D#zD%Ë.D,D(,‘D)D*D+D.D1D-/ÕD/D3D7D2FÂD4D6D9D=D8SçD:D<D?DCD>hD@DBDEDIDDuDFDHË/DKDPDJ‰'DLDNDODRDWDQ˜ DSDUDVDYD\DX¦`DZDbD]¼]D^D_D`DaµµµµDcËZµ!Uëµ µ qµË0µµ + Hµ µ µ µµµµµµµµµ <Šµµµ =rµµµµ%µ  TMµ!µ#µ$µ,µ& fþµ'µ)µ*µ+µ0µ- xÙµ.Ë1µ4µ1 ƒ=µ2µ8µ5 ºµ6µ<µ9 •†µ:µ@µ= ›}µ>µDµA  ½µBµJµE ¸¬µFµGµHµIËË2µNµK Î"µLµTµO 朵PµQµRµSµXµU ûEµVµ^µY!~µZµ[µ\µ]µbµ_!(žµ`#µc!@Û####Ë3"Åu##!{#### !“¤# +# # # ##!¨†###!Á######!Ö$##$#!î?### Ë#!#"##Ë4#)#%"÷#&#(#.#*"/#+#-#0#1#4#/"5h#2#7#8#9#5"P#6#?#:"yc#;#=#>#E#@"‡Š#A#C#DË5#K#F"(#G#I#J#Q#L"“•#M#O#P#U#R"›ð#S#W#\#V"žH#X#Z#[#^#c#]"±#_#a#b‘‘‘"êS‘‘‘$!”Ë6‘‘ ‘"øã‘ ‘ ‘ ‘‘‘# +:‘‘‘‘‘‘#'Ö‘‘‘‘‘#E ‘‘"‘#Gב ‘$‘%‘&‘*‘##M‘'‘)Ë7‘6‘,‘-‘.‘/‘4‘2‘+#a‘0‘7‘3#rM‘5u>‘9‘:‘;‘<‘?‘8#§¸‘=‘B‘@#Åê‘A‘D‘E‘F‘G‘J‘C#Ê’‘H‘L‘O‘K#àý‘MË8‘S‘P#îבQ‘U‘V‘Y‘T#òâ‘W‘]‘Z#ý´‘[‘_‘`ûû‘^$P‘a‘cûûû%ÕÂûûûû +û$M>û û ûû $i†û Ë9ûûûûûû${¨ûûûûûûûû$žûû!û$¸îû û#û%û&û'û(û)û-û"$½lû*û$uUuVû/û0%øû1%CHûIû;û7û.$Ý‹û2û5û6uQû=ûKûAû8%ëû<û>û?û@Ë:û9û:%$ûTûVûB%%ûJûLûMûNûOûPûQûRûSûUûCûD%M—ûEûFûG%NŸûH%O•%PŸ%oy%š•û^û_û`uûW%x«ûaûbûcûXûYûZû[û\%§û]%¨:%©0%¶ìu +u 'JÞ&(uuu&¹u u u uuuuu&3 u&4&5&Nµ&åuuu&Yèuuuu& uuu&Ž‘u&&­&­¸uu&ºùuu u&¿€uË;u'u!&Þlu"u%u2u(&õ‚u)u9u3' +íu4uIu:'Ôu;u<u=uFuHuXuJ'2˜uKuSuWuYuZu[u\u]u^u_u`uaubËucË*O)Ë'{âË'˜ÁË'¼±Ë'Ú¾Ë'ùëË(!ãË(sµË(„†Ë (ÍžË +(ÝûË (í·Ë )LmË )²„Ë*.*Z* À*ü*õ*"4*(x*.·*4ö*8ˆ*=*C *I"Ë<Ë=Ë>Ë?Ë@ËAËBËC*Š*¶ïý!ý"ý#ý$ý%ý&ý'ý(ý)ý*ý+ý,ý-ý.ý/ý0ý1ý2ý3ý4ý5ý6ý7ý8ý9ý:ý;ý<ý=ý>ý?ý@ý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ý[ý\ý]ý^ý_ý`ýaýbýc B*ø\ B B B B B B B B B  B + B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B<*ö1+$¸ endstream endobj startxref -2889113 +2827448 %%EOF diff --git a/docs/src/intro.tex b/docs/src/intro.tex index f4a70cf9..cdbe09d5 100644 --- a/docs/src/intro.tex +++ b/docs/src/intro.tex @@ -293,7 +293,7 @@ are classified as: To finish our general description, we define a version string with the constant \[ \verb|psb_version_string_|\] -whose current value is \verb|3.8.0| +whose current value is \verb|3.9.0| \subsection{Application structure} \label{sec:appstruct} From 283e849c949dee90dfa8f1e87c9320d54622c331 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 18 Nov 2024 16:24:01 +0100 Subject: [PATCH 81/86] Cleanup use of RICHARDSON --- test/pargen/psb_d_pde2d.F90 | 18 ++++++++++++++++-- test/pargen/psb_d_pde3d.F90 | 18 ++++++++++++++++-- test/pargen/psb_s_pde2d.F90 | 18 ++++++++++++++++-- test/pargen/psb_s_pde3d.F90 | 18 ++++++++++++++++-- test/pargen/runs/ppde.inp | 2 +- 5 files changed, 65 insertions(+), 9 deletions(-) diff --git a/test/pargen/psb_d_pde2d.F90 b/test/pargen/psb_d_pde2d.F90 index 7b99fb05..a7de0585 100644 --- a/test/pargen/psb_d_pde2d.F90 +++ b/test/pargen/psb_d_pde2d.F90 @@ -757,8 +757,22 @@ program psb_d_pde2d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/psb_d_pde3d.F90 b/test/pargen/psb_d_pde3d.F90 index fca19c80..d634f245 100644 --- a/test/pargen/psb_d_pde3d.F90 +++ b/test/pargen/psb_d_pde3d.F90 @@ -814,8 +814,22 @@ program psb_d_pde3d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/psb_s_pde2d.F90 b/test/pargen/psb_s_pde2d.F90 index 9bfcc271..14b45a0f 100644 --- a/test/pargen/psb_s_pde2d.F90 +++ b/test/pargen/psb_s_pde2d.F90 @@ -757,8 +757,22 @@ program psb_s_pde2d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/psb_s_pde3d.F90 b/test/pargen/psb_s_pde3d.F90 index b62073d2..51c6e849 100644 --- a/test/pargen/psb_s_pde3d.F90 +++ b/test/pargen/psb_s_pde3d.F90 @@ -814,8 +814,22 @@ program psb_s_pde3d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/runs/ppde.inp b/test/pargen/runs/ppde.inp index 6b758ab9..ae8bfe8f 100644 --- a/test/pargen/runs/ppde.inp +++ b/test/pargen/runs/ppde.inp @@ -1,5 +1,5 @@ 17 Number of entries below this -BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES FCG CGR +BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES FCG CGR RICHARDSON BJAC Preconditioner NONE DIAG BJAC CSR Storage format for matrix A: CSR COO 200 Domain size (acutal system is this**3 (pde3d) or **2 (pde2d) ) From 999830f22593fd24d4cc9c437fd8d1689e65754f Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 19 Nov 2024 12:11:26 +0100 Subject: [PATCH 82/86] Update description of clean_zeros --- docs/doxypsb | 2 +- docs/html/userhtml0x.png | Bin 1499 -> 1556 bytes docs/html/userhtml10x.png | Bin 1966 -> 1955 bytes docs/html/userhtml11x.png | Bin 1172 -> 1172 bytes docs/html/userhtml12x.png | Bin 1771 -> 1742 bytes docs/html/userhtml15x.png | Bin 1420 -> 1447 bytes docs/html/userhtml22x.png | Bin 1390 -> 1405 bytes docs/html/userhtml23x.png | Bin 1236 -> 1222 bytes docs/html/userhtml24x.png | Bin 978 -> 985 bytes docs/html/userhtml27x.png | Bin 1848 -> 1848 bytes docs/html/userhtml28x.png | Bin 2035 -> 2012 bytes docs/html/userhtml30x.png | Bin 2273 -> 2274 bytes docs/html/userhtml33x.png | Bin 1731 -> 1743 bytes docs/html/userhtml34x.png | Bin 2273 -> 2274 bytes docs/html/userhtml4x.png | Bin 1756 -> 1754 bytes docs/html/userhtml6x.png | Bin 2326 -> 2320 bytes docs/html/userhtml7x.png | Bin 1966 -> 1955 bytes docs/html/userhtml9x.png | Bin 1798 -> 1795 bytes docs/html/userhtmlse3.html | 515 +++++++++++++++++++------------------ docs/psblas-3.9.pdf | 92 +++---- docs/src/datastruct.tex | 4 +- 21 files changed, 308 insertions(+), 305 deletions(-) diff --git a/docs/doxypsb b/docs/doxypsb index 51b8c033..1e7456a9 100644 --- a/docs/doxypsb +++ b/docs/doxypsb @@ -52,7 +52,7 @@ PROJECT_LOGO = # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../psblas-3.4-doxygen +OUTPUT_DIRECTORY = ../../psblas-3.9-doxygen # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output diff --git a/docs/html/userhtml0x.png b/docs/html/userhtml0x.png index 3e324fc864b1e0d36888ad4e96e38b1bffd729c7..7b06aa113839f0741d4ef2040d6bdadf8d98d282 100644 GIT binary patch delta 1517 zcmV847Rz=V6(T}uag}p^dsM++DNeCs?AY;5fIR`(fX|DR(oIT3w*N1s z^okY5f3(l7_Td@&asATzrIc85X?xX^XV0{bx@R#RIXeh%Cr7Uj?R(&WI!;EiVo4C%z*LACm@x?G;K;KK4Kb4el!V%f(UfOOEIn$rEV5+H@#Y*-gYm?z#W*|@=hEaTM~lW< z!l#pKiD|-->SIZ^X}c!!Vs6!6CN|pGtz#T~;ut=2>QV)JmZgcri9v26oAO$U)!NjV zMnf&L$G%DknSvF?e=Iu{rHxMHC^yREda3RH*?&%8pkI+VbR2V(QAfvT;h0)}6^X)+ z-#TAw&xXKg@@cxYI8r_=Fq*b&(ksTS1&fW_JI2lT7o-JzP!bWw`S+>>4)+&)k?ytOuc}J~y0Dy54*3sd5~#gKZoWO+V0#bf2%iylug0gf89v#`TAaY1 zh<_%Z8_=_zd5)a%wZT6d#+n2M(HSvLAn&qqI9}Q1oPW+a6C`|jh0OMjGyqNBXta#m~Ca>_PT zlQK&6DfBiuno*drs6RRtOSL^?M_rjl8{PfFcDv89RVJt%bSg?wO)!OBj?eg(3|qFA zQj6x&?1^QYmMMjvu5Xu5*VjtNf(O@brBu^)tq|CJ+om6GCZ)W|?HwN>(Sb;VFn>0H zD9nbF)gk_@gVKpMmMI+LcQUzVbPtPMWLosr*>+5Yp?#R(f+j*AK@<*HBgFxiCjAY+C zaFfU@vZ!VWf(FMVI_XDbavifU?QC`}f+zBNQ9IYJfs6cVma*r;_=TP>n`1-#6xm5R zf}5`G>ex}9T^DanR4&1aZrC%tFfjeK9d7M;jzcC4_qbp1?`71^*UY8rfq&znA7i2G z8!vYapG!GXzglGb%=qYu->qIbhM$CJWFq9wf5M@e!?H%iC$fLMxucGU%BA}6M_s{& zsz8%HE2>pK?1=|oTEbH-rOp8ip?s)9L@o{}6CN5KDwn*BA&F9&M!Xjh?$KsRw#(Dm z10&~bzr@{fARaK6?601%a%RlzFL-l0es!>fr$=)eoCD`*$BsJ#zu*=TUJiT|kw5g6 zJ{xgf46#xaFEo~bHHOU{n`8rTJ@!A=?6`Lj5&W1yARyR~li>NHk>9+nO7{N)Y6Ro% Tyo33M00000NkvXXu0mjf)ZhYY delta 1460 zcmV;l1xxyr4BHEkIe(2wL_t(&1?`)Sbrm-dg{4$LD8Y0PD8Y0V!H9!YWDhSYl zQv#*~QUcI{INzSRVx-k-waYW{JM2AYkM>6z&D@#M-?L*%DV!29#_JHm3zPXcrS$QX z@(&#N8TjoEI(ZdBcxrMV-huqHL5%S##`x)M6z(9#co}1S(0{423-^_ylP5+>>1zn# z!!DK%+-KZ`5T4&>1y6~SC&q#ANGZKZDLwlB=0J`6%n^G6HX2;dLYPK|FChe$09Wim z{AG1+LzwE&hI%}|P`wZWQ!d}G*5s*8ue3djbfo-)`qr=B-_|m$e{`b`VI2*@Uv$7MI{&654;?IA3}I-9MT_sUsT^~|Gabh&HUrruHCQs(!Pt| zR=JB$Y#iYzgl)E)PvH<b-XL zlo-61Jd&i4r}`tM3uNyM2!;T3r~^s?jveSKJ$-wULw^Z^9O(<8km+p_M_t>o#bhE^ z92UCCUN>k+M}i&!Q{tPf+CS7m7x9_vO72Lx!Iz#RY}fOwU-u0g*7%g1MUEP=xoEpf zHr0{86(3(lcu^fs{uC7YK zaYUU_+s&TBw+!kvm+E(|tUI3th95ayRw@e_SzAumjM0_1rd<8qf++`$mI94>%ofwK z#B^4v(WzM4m?MjzYsl2}-?iPh>p9)@D+UhQx_>rVM;9DLVA_%@4-~%dwfj+DO3seN z=<@00GIL<~ERLu%YP$`3MJ!mdd{SRq%6jw7iBgUKj6?);|GOzcp!`kZ#29a5j6B!q z%G-gr1dcm4d>KOcry&PjSZ=T!@)yfG&^ku${@${~_BEg*eAdvr7N7bieAdlY+<`qc zx_^A`z?$t0gv17eAIHEX9QX41Ce(@1az=Kbb;h#luawfCDJ7DGQx}v*u^P-AHL|>| zu%loI*RdhN|Gpsyecq>(;=)yv3`n3w?67?e=z#NTJh2xo9Z!ZIwTHne#>k3c30*$# z0RNiI>lh&PQ7;ZRZUmL^yf|`rhh$wWgng9Y2Mls?D@T${<`wEOl_)bqX0=b zZIJcemrn25^z084)MjLvFlxJGQo3bPOAjsUif=Z+6m~g2>r*m{Edb=f7 z?PE^Oa$mOjFZ6UWkXtPK^sO#?98q`FcE7A%T9(y)_nzy{(WE{_${TVQ95@8WGJoO` zpk!xW-#KHt@_LFbeRHx&j(loV*SC!qdQSTsb2yu^>`c>NYutR|Qp@6b)OM?jOfCgK z9PwNy0lX1#)MNI;COXSHn7w@CJtt9<43kG&{8h+p>0iIwVvpH`Zt#gN*faI*<(f{T ze6Dh|#ddd4H1SMZuiMsp8LiE-et&ns2{^6DdUFiHg)<zGZ zZ$VH0-GH!wqu-gH=0x7Nu3}`S-%;D0gIaQnQxlU*Lc$^Tz*S+B3t-8clD(mK!N0g# zDo5>6dka$eaw#dKV_g<}j&iiccC)AMmuGa%Go9>ND_Mh2>qQgrG^M1q+JAuqX950> z%LbK~?0==S9SAXdFmN-w4evMV&G&%==LiP&k3J~?CvP^;Gb`&4TZiz!Cq|6%hEs&j zMaCZ(z%R@ttDFn|<-tzdCNN{z@hyqLtfBX-F&C`?n?Hdp`)PmpW`^j9vc~6>QtLSO zKm)%rm-gEh3E*QHaJ>J@Z!HlFhWx1f)qearaNsOqN%HVV;`kd?UCGrNQOK_V O0000t#Q24F`3WWd=G02x4C1QcX& zb_B*`a5w`X1IWOb4CMO6>p6`^nw=T#?NC^+YHM#b`fK%5tGh?%LkMm!c<*nA5I)Y0 zzobsbGF;bMURS>*EE&t{+$eQ$3V83II_K^z80)s`cC_P(_kaF=dpB3e^$4-N_Yb}I ze|hg;T-7`pmhd6UxeK`w-Z}R}2;p@uGK=rM|CdGLSqR|`-`@MjdEJhEQPJZ~=iD#O zIduG?b%rf`_^x&Ewea2}{CNoBZlx`x{+PNeA%vIS`*+^^S0RMYm3AE`L`{z&g!g8c zoO97IHDWU#_J6S4990)JfkOztSBOuW>p12*wqZ_>cIwW?Q%lgo2Y>2-5|<-{@ck0O za?sW}_v04pEw|<^mL>1^{{s2Im*(oVU`~(t+s?V0A%q7lV;n+_4<_eexd{xYtm7t5 zFb@b6EL^DGWjZ+Rs4w?{ekN8{K3a7*D-iiG6ZFvb*MD@}6?lTXv!ebgXl;f7IXRj~ zsFkmQ#yWOjco#p#rxRLyOnYhm~Q674GF;H*=6ju&)!Gk zjsgN%z9%6BNOI3PN8m>to}pCy=x1^%&Yb&lG-Y6ni63Sg!#Vex+I`B}8ECuO8fdfN z#~RaQLgoo;Ffc4&VMz)pMIXy&wIs*Pb!GDNz zF_64hn)h`>@yleGTDjH$QgDLCoWA$oHo^qT|6@=vKKTaP3iL~VTY<%O!6N@X zdH9t<>xc#Zq}=Yrh~!X^|4QY}GJhsKz|hU1s7J}b#&|A0!UGZzThPo0O9jT=Rv{LX z#bS=2odw7c`^k-lmRZCWaWa1>jB7V(?ZlV0y6j8}JbW)xv zd&LI6C3to-J72yvl#WZ@>9B5xmKPB_5 z_Mi5b|7{U;Uf%j!*#X=M7LretAuDHnC?B#JS$#|AK_u$(iJ26&qhE9YIUq03NBWYU zD5vfy3u7{t)XLARkUnZu!4lIIjhk6R0jnxA|}#J7bF;f!>vnQZB`0i?EarX`cI( zAP~X_B>-6hqV6r$zJKF-u~v_4ipB3fX0V74C%4={#}Qe9QY1ct>TqGpqWEtL%07`v zSe512h=10+Cpd&PdOQ{u@*&E3^84H!V<|2T(fqRk0aHgK_R5xYT!AYE+<2bjdIQ;`yN&tZ4xwA_ z{ek7?UI_sucd}bvY;+{(*C#+Y_#K$MVl07(Tv2O+6|&;bz@AkqP( zf&d*rDoCIM=paA`j(*lR`@CLzZ~t-kMEpso_ioo~duBe5XJ&mN#%Py72;n<3`zglw z``q{;ghyufD#rL>u3g7zp!1{kxYUkEVF@2x&Tt8GhY)U<*?-FzIfk`HM7?-#y9mA>rk_!$bQSrelfETF~;B4^?Dko_~3GWbGoZ9f|q9Yu-0=3 z;cf`wla%D3EzfjZFVyUa$L1toR`e(f^-A2q>)M z8lYvz7~?xL`+r+gJYt8~&IiJhbAHV1t(o0gJEmC@^8MQ9diyK;ni*lq-6M1|XGb$5 zPl`v3)9Pc64=(3fJ-0#)k{VX`D#&}^3?UHDtwspp*R9WXjIqFuge6CK?IxD+VIVhI zsA64WCceK^U_Jn$LI}^)jwEjY$p!602yb;CFHwT9qJJqgVMhqzy|%m>c$Tnc3y9l? zQ0Hh!H^agc0VZf&UjvP`RS#8=q=gV-ZgY);JxW{7+L4{v%mxQ0$3j2s+KaK558p@t zCQs$!1{Dcqqoag?36ccH7$M0WNaiuHJmOShZsYY?z#%76yDk-bIy@Bl!TKnHP#e2uREa z;rw1Ay2n3SnLLzYXEVc?gd0PQL?8Kgjls&Lwtqde({&$*ahtK4XW-@YbKfNgp5Njm5pBciDvTn{s+ATFU9q zWOA@8FyCrlink|r)V%T9%nSLM|AYtS_~myWS3F$J2bXi`Si)e8N0q@)TDq=DLzbuB zPJhBop7ZHXL%|Z}rA>R^|F};6BCpr8&-fciWPL}*K|4}=D{zC|C^C{0^%g@WFJHT8i z)ebRp1#@;JEM?9tq{+NjVizBBa^nd`#19wb#XGNRYevZL?vzWXwtRDXS`b)pJV z^`0tjyZGSbCY)$(YY0MVC@C4C3nfB07mE9YC3tZcFbCT$WuzMDgO@araOkf9&(g;# z$b&Plvm#rh6Xzi0*L~4Gl+mgA*Bk`>qI2%y5Ri|Y0DbeKYL%RNZ{cI%aj`e}LuF3# zmJ%&H!Xuod@9>^?krzPnVSh(ZxpdB!`}v>@nb@>ivQZepB*^-Qs)=W?D))Gu7lk*o zaa9i{nSVA1p0AdlvNoG4AD%(`ypQ^;>Hy&c`r(sgD6XR)t`F6WqP>^%AQEl)q)LjO zqhD+QIUq0hNA{APxK7(q6~<+)=|KHs*FmppHyI=Ahj~ows5y?tR)1fk>Wk!P&XaM( zwM~3*Ifn`R#J}`kO?pt|(($B_RW3jN)UARbC(s2cOZhvvoaUeRmFAv_t`D3n$$eQ6lK7cs&OUQio*!EGxcdP72k;?%Q0M@yK&1od zK(vGLJnL+j#La#QLcX9re=uaTyP4~|K{Yd32CBMlW|xcB9y)Fgbobi5zD>GwbG>q# z3k*e7--yVQf#cVG{H#&c7b3EoH>s+;-(J4HP5RcF+?lGnDSsl5%raKMo~f!u8@X+H_mGVGQ?BZuG)EFOgd!srN;gKZ%(xIS@qT zl|OgY9pmsk^NhlSgFd|Ue(TB{`|>U%5J^A+oruVJw14?n5I|Qr!51O(P>oECLlW*Z z9Q8Q=&dHJfNkke^g96QJH1Mp}FMSWJy=i8=R0)EMBfwzXPy`AAI0w)KBn)bv_rWgM zdgD)nZ6!>Aqi_z{nHCK9Fh&wCZk%HgISfW8vQn023cZmr#f%H<5D>-eb$C7A2w8i_YIs@3QGd0~4+)5bmu<>e>hYz>p8?pix6=3r zlbStRBsJ^V2k%>Vf04>B(OEKxm)*3m3!q%C`5B=^*0L(~!b+4vZ>cWf)nP{@mD*Vm zY(Dg}=0ft(1Vi?vJCQ?1vUW9Mr}Ej4$vJC=fjFos#jbqG(r$U6FFX&=bzzP* zH+nN)2Lw`If9b_Dv?b7%fuGSiOB3h^;gjXDf7GDIGY*^P;2#{k*_k}t&7=&11jlgD zO-BRHnqecKU0@JJ%t3~i{#rl@uSFSUn17A)lHEYaP(fNBD@Jgd19FK_S*Q@aW7Zz% zlvJ^@_;lOSQqIG;g(Lw~I6pS{WW5J<-#|$?wV>RgD9P+nU##r`a#^o9x=K%gO$tJ> zyP)r@6#SIozMw9WGjl44%I0r=BjJVT*7xp`(N$Uy;9dWkv=AQ`1=n0bzoEp-JAWLu(wjYD(bk~`ECDu)XZdRRP}|3?3&q0-`=YFNkkTAcGEX@-SA%d zIh)__ljhnGXWL#IJeint z5jkkvQ&o3V^>?zgzc8M8PjoP;GEtO>+~uLD03rA$ALIYusp@WF{1eWk$|MYl$Z>35 z!py#y+3UiyL!bXd3zI3+!zKm7Rm)jAaqrwxRdUg2RQ2PkbN?4AWl}YIuA)HU`?;#( zNfjtWRZo2!MSn?!s%|n~Re$>P+FYtv5xJ};6d;VM>a~aC63i!5uL5~@78S9oUZ|?& z@^#tr?oGK3X2Ta@fp=aplABNz!oQA{uxtt!Geaob2sLt;Tl|rk9eRk|6G^!*=dFl* z&wmKQ5JcpI&%2Fh4Vce4N8!dn9=;nj@d5Bw3;AN0IDZgMfCEwB5w$9rkL8(&+@b{E z1kXchEQ~@Dt~3<&GJbQy(!YsFmFLXt(!**Fh0WLeha5ixd((fmg<|$&ox!-EFcb`M z4p0-|Fbh}Q8<+L=zZ%;{wg8GkSoCvg!|WNtI7JdJoHG$Q$%Kw&)hbQaXh@DRMbF6g z!63RqF@N(1E7KzehPI#Wu~y<7QK5TLM?bnG8_rMK8hT(nGr&SnWbIbQ1(MnY_g<8a zaB}a#%E*^TBJu;zE+}(|65jVzyKUij3C}&;9w8+1|I(O&5RrJlhX7gOG`TEuwt9@a zMy^b%#F`=$$% z0N$n5$Vpc{@~DxjS@%9D<+K!jvCfh}JnW{8y#R`E&1Vi?g|ga6RceQo0`ntJ_u|oE zUnGUvS&_+nrB4iX@iv=$|O7zze}W|D0)9n%BdJ~5O5WWz4FCNo8gjjoc5#* z*5FbAp;zlQV1BK?9fEsktw37`-lNk?W9Y}(mF1aVYLMd@hfKrx2S=h%CX<_<6mb29 zVrX>9K|A!C*+J<2C@^SvS%ZY0EUp1-bbmGccpL}kC7Xs2V5M!(`dEZPt`Q;}#>zWJ z?x#*c{uo`VSzNZHl&fr9FR1`3^p6$3SZky12PhRzH3)aAdW&b5@?zH+AaYD;?hslG zY*Hu`n;ZJMO2$tZ9%Z=UnNz``Xd8LHQk{cW_dNXj>kz-&>m% zUH~E^di%k$npBw%p=NAlNx`)gq8>5PPg9?iI*cNdE7NoEf!`+e;^Qc|qF|US6mY+? o!*Sk~&P)MhX3q<^XhCtWKa|@J^7WLi(=h@u`^eoYs5OcIolfNZ&6#UYa@2Z@o8dmmb$RtAAZQB_i^xbM9foGwy5K zO(P;dIp;3oONt16dl8RM#RMHojOx2q-wtJK@7sfoRtW?m^3*x^z4!iYYHW-sBAU1)O2j+PT$~LJ3e}GDrUPOgAOFPKA`Wwv!8nJan>9JCXCXI4u1fQNbp*lV`vRU9Tn;<1a!X2pc(D4 z=i`xJI9cDGDfnEp5k7;jVAJW~Nah-y z4Fx_OSg)OPS7yKx5kqzmDbxXIw>R6H=MYTxG6n%~S|d&&)Gc!@R>Bts$#p zB!50fos*d=*e{;1FiGDWI#aTIWS_`pFa-tW} zz(R%+ia#4*j@FTyjutB4;qM(xP^d9k-_9xd9GPu87JiKWX&Al?WPG+O8^u6ChgeJI zphJ9q3K0>9(sf;gfjulAG^Hau$fZk&i=a99jeD^Qn`@w7CQ<{9qM5-?F@JMK=4c%$ z>ZtoX*pERVeraZ_*Se{yR>Y%lHd)_}Dft|}o{k63rP^>V?4Pk?K~Af`u~CKJAXO^;)g4QZQkqICMbN={b3p_UerF@o1m4DAwlZ_H zj?{EyR>v{XG1hZfXNOE|B!7LMqi>Ite2yj3FdlTar)}zc=*z#H&vs>_P%O;s4;WBq zViwDyj@4AqAx)=xPgarE0&4F7aVb&>5>+a}X;EtZ9Md{7qT^8DifG?U!8tHj-ySL1 zB0aBm*{gYZ@4qYcyEhxfj9^Kat#Y4R#=w!cvd-TEhw4~jYx>67wtr{3vC-mzK-cT+ zU<|2h3)sG7PBS|UAG5$p4I}v%k z?b)=U?Y4HO@O$~5_4LUY+ukWVM?Sr0dw0a;QeHM|okjmAKrs;_NrK8UZXA5@iyHbUoA^}^awz<(Q2)d#d!)xYicTh|(-_LqK8 zLh7%opDm@T!L=+cc7b(pv>aKLrCN(j>j z^NyO&Q`0IZs7YUkQ?k*SIR}pM%qsJ&#Tn#u(u0VI{9@N#mu(ELsyaG2v3&_(U=!eR zVgfvcE3&cCt_3^k+ar_lFavXt94~~@mMrSWf7^2^M5qXylSk4hFM!3g#@IST4Nn4Mm1e0*-U{SX@ z5Pw*vLXdiqJ>zI(@32H`sOsqWbNp+76mCNc;_d;2Gbyl85bvJVC4lrgrYuhE+T)C zQDj2pY;&@or@knd5t^__jWgohtnHevtA9WyV!i#vqUt1IJI_*}0m}c4edCt3lSG z+WLJ+W0@6egULk0pqC6jt0Rz7aa{>B4uieMFq3SVxww{lH(^=H3z1=Ya1t!hI%7)5 zk?dIno)%{5TXM)jdmtj88z#RZ6Myu!d3MOTXmeawHuBGh-l1ChNMsz+w4AIMc<#X< zgJ?*>v4lY!%}zw$A+lEP=Wy+;^wk0j8Ol)nIRTbv?M&&IL*<)|LU~Y_Vz$1W6ZssO zZ8;YB3Q*4cw2OSUD;s$rphK)BYtSJ+KMfI)S;p3N4$d_p;%biA24Fh#4J|D)`d+49ny4Fy(X(DYXMX50KVQWuWMx@ zIIYT5KeuV^Y|(Kna5>iZC^!!+)wf3?Ta@R`E*mwkl+w3Rzk9QhXMY51fCAVGU3H8&HGO@y?U`BlC*won{vuBMzYNMsayA_7%!E z?Q}^`Hp=%AtO@BWYp`(1QNX5?jgO7AfjnsbbDsz23;-EHK zJtF{HbFp`Os)9XWZ9gbZdg1F-p_uef_HqYLZRhA1(Wq}z-?F_V%KF*%l^i1oG`;T{ c^kSob0T=aA6XnD6_W%F@07*qoM6N<$g4+vPe*gdg diff --git a/docs/html/userhtml15x.png b/docs/html/userhtml15x.png index 7e4a6663fded9e1764626b3948c2da591b5e330f..3a2dbe010b49d0ab3868f6fc4338d863fd04b959 100644 GIT binary patch delta 1407 zcmV-_1%UdD3#SW^Ie%G6L_t(&1?8HJaU4Yug}YS*VC)P`1_mOq$-oj3U}b4!Js`^|+9+}y7i5WJfs-N&6zBjXXysPSqQv3UYIo_7wkX(PYWWh_J zst-iu!py#{jDf*@%+s)$U8?Ghs{U?fpDTU;muTc|2@b~f))DU)5xJ@{WM;ok7$*Jb ze;+Z++Y%g->wm2c?~KhZB}qii-21yhs&?J=C1NpeOWP3Js$O}!xA_DZ1noT~qS3~E(RS5aEILM2Ke%`;f&OQuFB*XGug<>}RQ0W@TF#Mk z%igJ##&a6W=hK{Xs+?prIf}L@<;OF@lTxbAL1A0H2BomjK%E9XB|%+e=TA zry@x|(=%9Zpv$Vh?@gE}cQ#Qvz5r6COTRRaraT}i(P~+{|%)XA2Qwy?r zR^_?`mt{B?(hF%ZMCQDl@||1eWj=@>Ub=RBM+}sM45I_o2$nQXH;hzf#k+U>j5iXK3s#?TrJ_Ph87Zv|C;c4dS z#{{@+j^JxyZLTN4zPJ;_h3?$%3E0zrhUeA^ek%-;Qt*`5yMf`g7!0pCaQfxI>TA&o zt%JeTyniz7lt9!~RiX;%wpO&>92w_0e18pdye+}%T#qqjFP;&HataHX3i((rk!AMNFXT6!kjKX4ZZdP_aMGAO!DSj-72S0XB9~$nk4pu z3_c+Y591j}r~qOgBckYuX5#9e=k7mUyh8wE5IIZ#l|dS>r4>>NM$UnZjW$4J-YHyn z;5wY=fFNRX0PHceGCDX#vD=AGlZXRjX6Zk>5Vysdz@5C5~) z38Lt+>9noT!y6?nqRUjYYr!g9d!$Plib(9bGhJ-*a?0M}w@gxY(|;caTzEj!XQ|PC z(P-t(>#UT#rliU&*5cal0qE+Iw$`m99zbB`my;II{$3hghFRXwh!gs{2di-H_W(7! z{bDhj8=j{CiixEg+%0&!{4#T_K(POvEsj)omvpy-Uf!0VgX=r*^TMC2P0d9`F+ z#xZ`$*i(;5_nE#wc7H9r^{myxb$Yh+eQo{ffZ79EzZa1wB7gFsWgg?1*D`1Cu_AIV zBEN-oMdX=?T!r_?{@cS_&zeiPUgNB1JY{FR7m=59YpUwGs{X60c*Ow5Gw(5@$XgFi z$@Q+nN^BN2ux(#;fW_|9&!8L&U; zyFpbysH(;MI=7s?i8mK!GdAYBiZeejhyBqjM{+4dg?~_P!xQir6a{9+1wKarA?I>W za%pC-JxpGB=^x_<5&0|rARvfVM1J;ppTl#r3&L0)0?1)8?rRs>_s;e68N(>?h9P21P3g;4 zT+e|!NY8c_eSoOASOyK`MBj07S3KA+@|}phjRbgZ@ota&m*?-p<`qD#1>#WLk4xW~oh|nG*wHQ4! z9xnjPLv(M$2f#0n%f9o82$YMAtqkiWzq=HXzwwwE;Vlu&PnD{7E(9OIb0rSSrID{5 zj9CagJ?Gm3aD{=#T&7sUTMt&_I)_L%=!JX3d7+UT&KnDlYH=bu2Z9V3JYjefU}hJd zM}Luj;rS>)QV}1_i{YUeuUN9)r*mF2g@+UJr6DJcEd3z?PHMs`^45d3xt;;%q9zFG z*h^32(9{3Ib9I7T4mO0~Ijaxx+uc2)Az$RenHK}qBdj?L)oR81nI8^P1zuNG@hX!X z^dTVPyw)D7@z#UYxlS>s7mtWzJ0<)@A%ExcQ7)clf~a`7^t>+yR+|2at5z6L%naTx z^Sl7|vN+rV7cw3gSO1Ve1y55v7GVxW-lBV$fCyCJaTBgf@QC;+IF``IBShjEa^T>U z{DYNXsU(fjK*TVHW3PaT<7vpGMMG;~4m^XVB?1|rmw@?`{^1gMzBws=P61E0>3>yX zly9Oi^v)aHWAYtgmN)0>pq)Y=wZhY8To=H-j-8SqJj9cFr~v-Ng@|Z+5<<`Ev(jOT@GYH0W=eH72E-Q9L3Brp<@q_u>TV+ m#C})Xb1QE>XyE$jv;GIAA55@Tiq19w0000H%Y6f>9_zdB^ z2v9OWA^^Ke)`ufNA zZxOjB(8uuh1%J9e#<%v_n}_ni9#r)O_sr}`&!z`&m$xGFBwE!W@b>!J%>FvWZx7J^ z&Fu4I$Hreo9-GTCc0?qxgAG zt&-+R_bYJGe5*RUwyBvs9{3Tj7SLSZ=Nqc}&^b)c4}bV|y3qvJ3SI3szyU0HWK7B6 z5Botxo|>78$dwzG?hxQ~!FMymj%q<@);4H`8}}huNE+;h;6Z(R-%9Gi)i|6Hd6&L0 z@MCTyKZOvWD;6i!EJ2XFv09t-$3 z0fF1RM}IjX_K->ZxQ3VsLKlfMJ0Fw4&TRAez3(BC@^gE($6k-IeIek^qELy`Tw`n( zUQN9a_O1&oeCp3y*d;%bZl)(9o{cex$%0233jw?E%j48M@;$ysXCO;wZHW#+TZ!uQ z%BJFLyVwUG;gmqeFSeL9cvZX~ga`FHAMbVq`*YbIV=fI)C~KVqZB>e9WuC-sDmX{P^3Ds8 zXRsE}!l1$$j}Z=_#iOhdH$yIQE?7*&T7GCOwXXMg%T3F6U=1-5Rpn2TR8N6W2apBHG8#|VcWkF@^h zvx((Np1%M0!<+~EsKoYaZ!Thvu@?|sbap-edv6}GO`Na}x?tt(Uz(53;3@}81$iONhpdbT5 z1R!T%I|5r|U}peQ219+roAvzP-b#y0#l0$(?q+9tUw2Rc%$$c1?1Xi2_s3@TO$gza zLo3|=`_eF`IKA zo|)N|nLXLURe$C7-IlfWn!R}pGlTHN%-*Ii#~@3Wn=*sDpSe5l|EQ22kCiEphNAM( zZFTuCcodrf!lZR~5AOcX%t((-i6HH{`=x5+Rp$5{$&s5jlj_`Vy-KDh*)IY;(A)jP zn0lsHn$m^r!8+{K1M7=t?*335miH%U{33l9C^bVKD}OkEhDVNNGpMe8XJ*er2ySNQ znpi|On}G2U0`opi-EA&Z$Ex2n#%7_hq9I)c8I}5bvueSS5I;C$9Qqm@13z?Q^AiXO zG|{PdDxh^Z6T4Bb|1Ktc0PDX_UuA37u|Zh3KpBMb!lr8G8y-h+00oZ*)FtX62FPoa zi1Khb8h@#WD2`VcQ@z15PckuVF*lb#`mD`GjV|Pk=5HBKvgHVL#P~#F^G?-i?iQMN zrTJ!d_HTT&b6BVBve-9U$ELf;WhZ;)W0HYQ8XlRfDTf}9`W-1VuuJQ-^i17xj7~)k zj<4sX=zRpU4D9%(#LS?mcx`6i@0ArmlAXG2ZGUo{l61*I#^{YNa?I@WSqj(sB?DCN zsb!O8dgY+YBa?NAL&KxS138(B24&bBWSgJzff-b%*=!hxeq=U% zhVu}@i`j$<^fVkBM;mu>;sn@grt7GD5I}z=x$3>JTkk&O5RXF~z=%i01G6XuXD-H| zlYb}uRJD@YiP7qv++={Pb6#W~LI~kpO)G}@s`H+`fIc%r*ZLNa1F=;dBsp+;Pfi`} zshRvEUo7<2N37%kMm!=Y6GZmXwP%7st{?{M?JRb3T{^yCaVJ|$5kmNt5@8lg#qP*9 zEjo;V&Nyv^m@)HU>VWl&je#;Uh&ENz9Df6A5C}6KYdC<0M-Dc_vO7hP$czz0-u{3pu%t3DzgJz;6?Cli>C*Ym^f1&3%=4J+NJkSZfLbO9u)_3I9b(laX@-6nKgaqf~$GgjK>-d z$n5>-D8KU%Uq!>j&5%gw0nRKOt%b}*Ih1dXVtOgZpv_mfk}))H;<@F&xEH!*dc}>O z%hj=acqOkp3GC6eg>)(2m*i`0Jbzm1czTtd)&FNa)^Hf{$o&7bd1+1J^gTvY*O_Z< z)4RjztyAzUS$8mJS03q};eXidOwHD#-FWmj-mfTH&yPulbNeADDl3k5M>TZBH=zr#3H2`;iVrH*G2%lGL z;X8u6KQ*)aA%uVCv{<#s%uY-1Z&JIN z5yjq@IGY(8y?9R>eM|jH?T6CcTHf&L;a*z+p1>%>i!UkVTeh3oIh#DnL56WY(vJ{) zDBZ2)4c{K_E`PxV+#Q86(4UK!9Z=|e7ee^ZA%1ia-a`m?*GxoTGkef`6mHdBiY>fB zlY7px6?QNovgNEytGy@uw8p5tSBQlpIm#p}&$~+7cxPsu{fqFP^y5AKp2W8FskL-P zkDBiEj$?JlInJZ?>_wWbycxU2y_5uU9=>grN+l=(`hVE#F{4mMj3P<<~w^`5|2Fb`w&Agenia?C|yJtdkE?oL%gJ8Md@l{ct!j~19d z&5V$j^@da~_ghxJDsjqCtuQCG8e`< z_jF3r#ee);dG~N%L;#)L*Rhlsfh_r7Gkbn4?+0;gMJP&CJPW0k%2g_Wg?A_NzvLoB z0{ZTGZ4NcvC3Ar}Pa@D%cFwSsH>h&IGn){cNufhB03%wDDqGjMCza~am7JGlH8$Jf0BM}I&r+1|<Q<$6RRyAbNqn_3T0?Z&2kvKLW7e;mwbb z;XF5+j)9{?M-FIR?Ggq{9!&lK_gcA1-^CF!LsNIjmHIT691i3CP;i*7yg`-w&H!Xl zD1W0C3Y(B3&vhgm8=RdeJ~f6M2!o|4@q6_CWP|3wi;5qQ26V?b;IsO`i4FQo?Q?A9 z4YJ%d|5pQ$B3~CQaR`b8)YbPI26_sg7u zZcCdKzcZTNb;(1sn;-?R)}8A7r!_8Xd5as-rO17fk>Ki!pBnk^>0Qrt(@o89$CewHO!_DM=f{->XaJQk7D)|}A>ZCmaB zRDCaR@EPIWoPda&h{&TqHPKy;gL#O^Rqq&RyJqh9rMpqyG=G9F?p1}0$f1b*>{Zy` z-i`}e^lF={_j-C=x54=Nn>=5(^nH{!#_8q$04*yx6Op%-`hNzh3S+)YDcuI7u{GTK zdcNPO>QT_AhI`T765c>J_sA+~K`^C#3IAV3;xEBpTRgo+q`Fm$% z7T^s+>Vke9P< ziM70eD)*uRaPhBcLBrs_h5d9<^k_j3xO!SZ}BWKF7mN!u4zJFx^+`A7_N*6hk7E(%QNTfKC=b6Rt z5-_-yqGsN2-~zzYN*-vyqJ=Vm0o~f?TE|Uz0Tf@tl-)Oui0Ioo(KL0(69O=KC5;Bg`z>&owY-5U_l*J2qM(dbH-A** zd4J(3whLhIgyOw1lz_#HqQpz{ez!n5&^HXF1GEpMR6o#X%h zFMwI}R(9$$)zSA_<~b_MwG}iREv3oUw?@^=ZeZxYXmDq!SGe7DItH>6q>gk`R0U> zYizi3EF8a1O0v*4`csQ{1{-4v`frWr+t7o%b;t20N8|DHtC#2B*YbuejsC0d&5Mf^dN;#=m+s(= zek|qtZ7-e1gDN^(YdLq;$6 z;(#R*`%*^F2s3({C-?SZc5ZD(o+K_&MZ($T`Cfi6Z}b`A{tMY}tP%FFaUcKy002ov JPDHLkV1g6(TucA} diff --git a/docs/html/userhtml24x.png b/docs/html/userhtml24x.png index 52e4a38d9bae32ce08ed2adc2e3b062f67d58618..3ade441e5a63d6dab666061464c542555510d920 100644 GIT binary patch delta 942 zcmV;f15y0a2iXUZIe&{uL_t(&1?^aiaT75R-DM~MOa-Kb02L5A2v9+i4(t*#p#z5! zk`59&2z20-kkG+0@BHMEeOi5-Gqz{^X6(DstyWsC_N!(l2MhyMJuRP|Iu-kI5L zYA;wzRi9xw_-wPf<@IIo_BfPmA_DL7 z+gk_YA_7J9XfTHP*}2|F9t5~&8F=$IHBRMpmxhOIt!oV_8~1bGx(CoxansyfC1DS$ zidzas7rl=apnv&3nAx8S^0lCoT*q@mLEmUqs%!VI-wJnk`g} ztRzWO8m}?m5|7e%5rKl5ET|+~uu8_>ZV$9LxKzaB#lCPkQm!jOgSjX1czEYIxfbXp z3GkWsH7R2X48V`>t=KMH*_c@&?jnefk-aj5#YKQ8Sbt4OzL2&D&b<GxPP%GsCMRzVhzIFs5Zsz7!$9a7yvD@JwTR1k~5;bIeZh5%M1ZJ4{jr1NkNPq zBQv|sFigVCCaPW0h^+5(bc1#RYsiL+=HBcYurS5pcZI2gtddt<9Bx>%assH>GrGB5 zL$z#l)j+9r1NY?Ke#AQb6|B&8lfXhj)HWFA%zv>6Ze~iCw-Z=HHe_BNQwHTWFymZs>Xl*F;M~jj(CtZf}gvdUCR%ctuZ*#qVWQV*EsM;WRgq zdVh)+TERyV8S%2>Jq08YOT|3tXWg1e=V+#QIS%RFOP@?MlIiRKypj5%UcsL6Lw$l; zrGK~oTG==sd=@+?1Jd$jAxRfF^W=&4l}ytyk2Fi?!~(c02LchYuRCv{eI7@_xk=f0 zzze0eoE6=ptKd$7-QT<`yrjjJg?5>C)3VhxJiYU&X|w|H<7ha#jP~{0|B{XFwyAGP z>nVCIx0`)HJwm_E%>16(3RD#_^dd?|k|#JQXdo~xh9~+_V#$o~wxk^3AJ{5mp`lV? Q{Qv*}07*qoM6N<$f?CtT>i_@% delta 935 zcmV;Y16cgo2hsA-2h zbP%W@M+Z;>aR(bc>y5p(clICtwv6N_S$y`Idv<0mrGyi9hnZahxJfB}Z#vD)#sD5t zN-s@oK?Bu(0PX>t*Veq%xuImEegORJq6e;Tqt~i(0bB$4*MEiZA=gU5&wXePDVvmi z8S&w?fYlm)w=wD&S5`0q@U=33a4?ma+0@LQ0eq97eK3e@W=1ETH>4{X<0W6C@41=X zRGF_>orm&*I;!*rU zzpSnvsWdY?=TDCCSBlQ@0l=?(z@fdoBfrSNuRgZ{?tlNZF}6a`|%@)38Ta=?so-MUa`%!(LNL z^rB8Mvnv2k0Pc=4dYWW&p1s0SmB@QI$^?wA;#{`py&^IK_p=}?;$2~sfKP0-y_FLsMQ(J^ku^B!$v?@{RTVTyVx;rjXNjV_`nBsNnVJ*=~F95U>k(%iA3wQNe&1XFem z^nMy30`D;Dr51(UAHK;g4J2#xz@1(W#0)$A&VOlgU+5tlD=!)}H&zK$Y%R^*di1Co zEP?yC(wul+^+7{5Z(fbCB=zro{q>%u>HIdbX$^Z8_9b3{v65p&%ED=@SK%1fNAy(< zb3dImsvNiaAgw3u@j`hDQw|K)`PZ0=1Zq1jWwKu(&-}3wq@Y{;x0Ox%dCu|-$-uJw zzJJ7AAeb@G*|b%l9T*Nx^OPAOlx3jTGEP@St|wKBn}~)dNw`@HC23T@DjYK=QCRB zgxw%VU=+n~Y8x;!-l4Zm{o=CBKA}IPT#bf{g diff --git a/docs/html/userhtml27x.png b/docs/html/userhtml27x.png index 8aee367e720bcb13296db128141f7d28bb02c946..f94ad5e31f2620febb11e37ecd4920b12dc97119 100644 GIT binary patch delta 1804 zcmV+n2lM#24!91GL4TT$aTPZZ##c-VaFPlF9gw5~paXC!06MTI6)?~NP(cD6m{dSa z2X+U+?m(HJ_;k_f>EAm)9(H`+%$vJ+l2)tL?rL}MocG>Vtk^Z2b9cS>=ewr+El^s^ zou!O8=MJ2651n(bx1|9i&bh~obbpTZwrCGvZe`( z497W#P<}VF6Epi|qBf2LGrMbM&&=#>eAw+qOYW_i z=N$U_1%zr#e`ZFU_j1X2Gkd7<9O;XBxQ%05a&NU=RaRz(*FCAxF$)gyw9&p;Uurb> z`P|G-StD~UI)8BhM{l?>`>5--2uJzfr(k@H9Vs%LsDFQLz71%MPYVnxJe;M^2Jzg? zzG@W+fvX^bT;TD)m{}N*T~+Q%$cuXdBpV7c%)em(9sWXuU}k>@Vi}a%wB*;~dt}`` z{+igKuCT_#nc>6=nfLy=_x@)o5(>>G6W^ua#Mls`bM76Ty!TJM_unh--Pj}*2R=%{ zAL)oE{D0%V3spIwi}4+4(;3hFc;n%s1Jyy+>b<}0PP`COthZX{Pi98)9K+p!LD?1M zE>zoOr0gpW;sH6Pc#3nA)ED`atZ4%{R19y%yY?+O!U|fvb#-P$el_e;SEO%`Q1I|G zGXytF?DUL;?tbhSuTspT_@ArdzghCAgp$UPRDY=--X|oADQ(ewozkq`M|v_qXrcVX zpwm3HvFURu@09eVZM(V`Z)Yhzoeq!Vvn^zYLzu}up;2tpK2Gy%Ze$krb&x-ld$zZ6 zUam@z`;xwB96B(go9oO7f9YKLebkAo>WcU!N;sV+k*A(j$W$)&IU^zvlr^?V z0e^WmDMK<5&!_5HVvsXIo7qK8DdIe(tHz=H8wOtLAD>BqwjLM9k6xuzGuftNx0KyX z?irn8TdK5)qnP;V@y8s!KAK~;_dVW5*WH^tou_v{qAO7^O0=ZA7vFIwa0=uxD&g8x zkB?Aj1JY0}<|g@ZeUFY=F2u1-ES@Kl9Do0%q_+q7fZp&}g@}|_3D3yKdUMopoW8Tj zp`;qwzR24W49Tt{_kdcP3LfN`=L%WakEc;qgZzQs8h(&0H&EkECkd$P%ohBOVnkP1 zOU_dSHgb>}4i5;|j_DzWse}*@=LklYgS3yWakd2OG~%!>`bb-Z#B$)-jD4?`#3 zQ#1Q(c+mC;2A!R_IYwnyl6yq0jeipcC-=T!G+>0kV0@i5u=jbvAfm?G$ht@P8^Tp| zB>`*vJQ)r`Q6-IJjri_WMbLoIBCnJoIIM9(WHb%QRE=TsDJ<0KMh^698axgRE}oK0 zj0Xqs)xVj`t58Y!0)}K)k$XgGPXLNH+ZQ02Pw4PR$Q~RexkW131D7%i_@s71U!9X!gSYz+W0JF#fl1uGAJ_LWYqF8fH8%Tn;eHfAM&_W7Dt>H z-ova|(SveDiU%=|y?;?qj!)Rj`=eQLKx?9a72Z8!I8+I03ndBs<3_E1#kU5beg694 zrT|+&=gD>RaFaDnrzx+?u`CilLNjt4-sSL&PQ-H?UkF78kz3U$Np=;9qMMj!;(SPI>?U002ovP6b4+LSTaY?ti@i delta 1804 zcmV+n2lM#24!91GL4TZ$aTPZZ$0a5O5IP8SK#~eD9Y9h6rURH%z(5B;1;pvVqyhpR z*c~Le17&{7e=j;ceck!_#g6Yk^Tv1jT&;FjyQ>@f5Q5vVVW05c-*?VE2_d}M=eYkB zy!S7hbH9ZU&W(mU_OKM*`@7!zBk%p&6@Bk}@1M}ud;fZA|9{(z7T;TShXOP>=icT@ za~)_~3#|oNWo;3w6vuo2&^h;ubMDkR_k#_#01$vxI(E*TE$DZv(c*in?!Y*4&OJ}( zyhgNL2CRv-MXXYs5W<%b!b^?uQGbU)f9D)Ou(lb$bGCwHdq;sDD+eH~?*j0Ea~k zEmkW|;-a+}*}{*VO*kmL_s4Q6t~<;%F7drpcPS{~2gMUd_4nmXlyGIV9SS;i?ja{T zijxHGpS_Pij^7eEF?Nn+pfOIo_g^&z@k|c-M>kDLhJRDFug$ju+y?J`ND~Zfp!fbP zEgJ+r?36XR3Sf1W5P>hyNQ^hb0Pm`Ncdl7yydlVC{v8GA&=)-f=iDDNg8v0BOv~+V z(LJ*69(_&hQC3*v(M)kHLl#1K9zytDf`o9g$)7XII5BpZ=)I2tR0!c|2;p1jVj^H? zlaw6zB!2;aOeRKcdG10fLdInw_}&O5NeAY~8V@HOV@?EIbNlDpP48$WgUo=Iu=o7D@9biyVyeY#ZFn7ysZ_(D3nHGIL>{C{>#>WVF z{E>HuDfX`W9m=@qd6<@~4#9kpmdpP;&C1AuGk?ZiE0<-Y41aMNTf$B%bE2#EY~x7* z8HEe)< z*?+SZc9gthf#BdI4Aj{e5S_F&g*>)0wf&kaV_IK(b}sf~<0d7nwN1+66c}Kg6@7XxTx>RTrLow0QqmMayZ8S%bF7@A`ZFJqexlH{4e) zB9;yJjCia!M-4AS2s=D7C}@Va#cY!>#JdXLBWiU@co1Wr%Vl9do*AzO=>xqrl;YSX zZ4yFIm6-+fjbcPr?iFY<{KZ46I4BJ#LA;+4!DK@4hjT*B_;+tAj0U(Cd8Q1;p^X!a(9|VUHYQGP z4RyK^1FiWe5QVc-a*gs}0IvL-xjYM%xK?0@cNM-HN_zqjyxG10@q9vuK7U;HXejBI zw-wmWDC7myXd7L3kG@fKWrcmw;Zc*NsO*#C05OEq0Y(*J%0L_9gk%FyBvQhhR0fpr zsl5osT&xh|@lLyvOIU>NLik9OOwX&t628|(Cb7#fq}VCl`-Gj$tTFOWCwgj~yS!`g zy;-NYHGYtr&2Jc?j}wP6;D0O0pVG<28gRX4Xwfa>+mo3Q`l?tWE0RSs0FzsDV0#JuQBPhibuUt3U71O85c+gS$F+P2#ELt-6EK_G= z_5P}VH7nHX->Oe&Gv4g*C23RSU5D>j$J(Btpa?a5Eb=>VIbT(df(hVCBq_ z*YTdrU0iq8rbwUKl;ni6MY1A#iy1Y|6XnkHBCEjH&RFj+vgBA`{Nnt?*s!4pC0n@o zwo~H9!M-?2K4P9AJvj*>Jh-Fd39Xz`lu{Pr4cwuf&q6kAsDM}#1ALQFi^l+Ki}5ru z4i6u5zf~HCpBL|8Hh*mBLHAk2EVaP;T0=2Dv~zznTZ0Z5TNfPmL#c5Y@r=GF}xI>2bn?7JA_@0~8ASjgt?n%R9b`^C&Yk4`ufF~&a_ zB80$P|AMg1KW0V@ck1`s^*?TI8y9BAE_mKr*H~Mt|Dn&!lF?oq`d+L5T$?kq#~Oq1 zu{p<*&&})t`F|O+3fpKgvyZxNxZNO3`P5nBSlbd{{Mq3>VVf2+$L3Plc!PNta;Fe6 zJ5Ld=^%SytaO5gnST%_CB>-V|g|W5;aS~&Ex4?LwBFwS5pGG#3#UZ&*aQxDF@Zjs7 z2P-lA5JI>LAzTzn%1{DG@tuiF}PsI-$ z?5ukVN8%ce;RE@HPU1=WUky&i+MH9@Q8g|Jv2>SCgbgzX{!N$EUza7!79L}raKK8rDatC)94JPG7`9p~Sh8HuDH z%cD>ggMaZL0R>X|<6Y)uSDKv+ip||IE;4hXcgVX_`|r1$&O00zM~r1Z{+?rVdVk-YvU29uhBKVIbw9=Sig~a625&=};V$Eg z8$QR=6B&hqyM(qD+Iyz&nm+W}wRqNBDX7(7I}&nnDxmaZKYL}VHW1c^J~>@D)hmY-uQ*gbojRPtWwptc{lsyl8_iegR6G1pHh<^y zNxxTq@7I=7dfV7_itX{f^Z5;b>86zr5R+0w$T7D-c;yumPf-1SE||-!NloYrtI@a{ zkbe+oo25d*qlO%dfqYPT6|pu(O0tY2oQYpB#u2-7)`9YvlVN^QR10^;8fo*Y7I-(p z1G;3rb3lHB{I3{9g(c=E$11^GS%2OFQ*6$`7{B=qP+p16?zN8w_S&9s55Mq&0Sezy zhK%@&zfpiivwMML=)Ef4At;p3_=`ZL#ph=B=OP0(;0ZelQ^DYYs(M_(6pk>OQU^E_ z+?UTla)b`wy|%O-ehtuboPzsb(=2_krc|KlfMNs%2Z{sO2#(a+xaQcL1AlorEld1t zW^c*|Q&7l1#rBZ@i#rctP*pt>APO(b@JWVsem5Y;A*I3s2<|&pQwYYDVw&wO#27I^ zPJ*iJx*%Q;|Rp~Do87{h;<%X`irTyqLJm!O?fHfXxASVAjo;++%~o@UV+RY;SJ5dcQ-jO2UyHIgn>(jzXp;M_zt* zew8ON-Z1$mOyQIH@_+T}`A!>SDzboo#@wl<>G=-dKDJ+dU4GxXsu+Nr%(qiA))=%O zZF9`4)WLb*kx6}8Hs{5zgKW=b6<3dgCRhzT^dh%d&7!|Ds0hOs=6<3k=tSYy`9u(( z_=SRU9&)WRT3Ic0!tp)Y1J8NZgkG$?;pRXDLSZ07MuoFHcYmjn!;pXQKR0FQxn{6w zrxayX&ZAhGuXArlt1#59?v@fMn#@i=3pKnkaKzEakY@V6eQA*Vprunsu-ah za*8Ts*l^<@4D+um02QdxnM$CueI@WU0D1F?ySkib!|j1~VhS2(iUcTD5T=py@Ldm4 z0>(y;aMXXC-ZB=bx=HSqtGt`@Y*-8mtNB#~A==-3A61m=zdHN_`H>>Yyw)+f00000 LNkvXXu0mjfXGg`5 delta 2000 zcmV;>2QT>C5AzR@Ie(=|L_t(|0qvZP(bP5&hF44qAaoGuAS4w49gw5~paU{gz(5B; z1qtZ@QUQSu_&NyCfijPHS6R#Q&)u1CIL7bHeLkP%mG)P=YeUL8+m0Q_Af8hFiWM;qQoFDjr9XooEy??ySIp67BUxQO^PR{$I znX!gXIp^Qk%zG?SO0VP}pP+GtKPe>^@W{-#hy(4|v4odqc65;4$mR(6?0)yn?ETV$ zHvs&?cR_KUob$WjwXgl+j;|M_5sHK(%w5|8DW%(r^fiS!6kFIFG|Y?-_~Le}lgtjP`gGC*nw|NlErNY~txzd59o z?kin5Ybe(Tq}c<^UE2bpe_c`kRCtMSip~8z6GS$LcAsn5QQdjWiU(74b+=-+s+7{p zl+wqP(%Yb<3L;5L>6ym7$5`vd1(1TIlyXX`cr{>-lz$4H`rC;hXYKO01;qao$p<-& z*1bkXk~K0$9>}qEk`isr?4QoM=dQU-T}K1DO7~bdwFKwryXAqDWidq(56lA}d`R_L zu-21oPIg=x{8eCu;{dvJ$5pi+KUJ5 zg}IOg0gK>BAb49A^BE`EoIu0iO;|tj!**760e_FQJ@~%^gXJS3J@j)wD!+T>=NvI` zd`W`l94~+0j3KJ<44~4Q`X1;Y2na&22x01;Lw=VqQQ9W-dUKoEN1P>IqYLEcYh;AH za0tJLqv#IwqM$O+iQhAIO|+|y6tS5AJr%h~uQ&@C10RfVAT!oCr`HJ{;H%8#>lAOy zHGkkuzvIXQ{#u*UIMxnb##h?1&{iMr9oNhCZ74xB)O<@aJN z66lk7@3G%yEGVc7qopN<4~(oG*Ot%FEgZ>v=9+i4!1Eb7uz${_S8ZBbXhD4g|K(}F8cWPijTOOMmEV9hHs^rG zpMC;VS7Nh^_R+zj?FrZL3vU>p@R2fP#2@^Q02WR30>#j$x^#yiC?EQpAm{wt%XocIHXk=0OKC9x=cVua*hqQ>ER>} zvAqWHUp5;eI0f~f$n#>#i!$$`paj3>$1ujn^~O+X^*%TabxAE?1HD>whq+kqs!p5V z<44gwxRCVwr;aMZy?-eIKchJUPhA;#i`nI?ItjV7#Xo6Ew|l7HN7tY!Wg~xRjyh5L zeI)OeXRT{gq{ne;2EZrtjatS|1DVA8{CkiUvh3O%V^uo1+($fVOwZ=L*>#ZZh4mGC zt^Xw9T;Qo!c#(C-B|}XZ9+>-%TA&?;xAVy$-tmTlY94B>n18LDEyN?8!y8`noD-&U zQbDfLTMAua?hPg4nzIHt6eemJZHdnsmssGd6Y|&wq1n0dB-J#uAOSA*tEf* zsPkeC<{1JtmvX=prECP1@-G>w{vXFcppJon)}wGyq*73yyG{||#5J5GhtYTk+< iMf;cMQK4P`&EY?tI}Oa&9jp8R0000#t@MgBJ#J0oN?sb8hZ@J2&NPof%KsY|6}LenfLx55&6wI_ry7O z*~nusW?)L89lm?-Nl~H*zKO^)=iG&J?zVI8Q#+5rn8K7oBVZZmt=>f`sI~B(&y#&v z6!%2r&qf}L(SO6Op3jWa=7B1Nw*$BNqjT=_z&@h^OewSnm5xIS0gD2KU`nB3%zbDG zEq#WM4c)e}5K{_mL4O1>gs*+KO@D)kTqerHXb@8hZ9zKnOW!S%veW=%{NHF4QwnW? zz>|hNLR+pWX!@FFBaHU2Kx0FA?@33F@rwl+4YL%C6n|n46gL?SV@kmYXfFimN~#_C z-`D^Vc|x(6#&m832TDQf3QNkX&WA%6}!dLXfc<=8!=bk#}?g$IF>R@kTAWF?gv5; z^w*DRvm`~;+ekCDe~7hX3fK4tG#W<*j(=JErLK5|J3bV|ox`M@Dx4E}PQMh037dai zEH1_$lCD^;6AR-mN`XO0M;$;`AsKkIk%mkKCP?mbOre<$!#GJ)exAobqYB+s1C4X! z6n>^uJ$s-e2i_*~3|tScP3jr&^93o%unLcw5n+cn9@&bPNFKYzZxl>GPeZRq=~6a-JR0A%wx2dR7((CyNLGngZ%fJMML z!q}R^Bx9FO z>9Q^QVA1H+uVcx%mKS%+m8L7!RxWC?cPZRpV!}5h^## z;$4{J=lt`d;6dDhH$_k!^ya6s?6ZZmIdeOg~5(vFu}N|4l)) z;ZJE)wkA5u1ivgZ)r|E(SeW$?vhKSyuL?6IF*0V@!Wh6PI`(^=$$uA-r+;Jb%p5sQ ztembEVF;Ch-o!yOU6RqS)5@*2h;7N3a9yCsSPw1Qi7~M%%g7-xTK4-X^SP@Nl|!Y0 zgX^#~wwKeDIX3`i8Ybo{sK%!h7>;5Vt)Z(pF?(-86o#6LIJhHQTzo~a_=}%GOG@E< zEpt$<5MCh6S0cE*1zwGTS$`jbT^rCBaW6vOmGc;|+X(~?O)1PlV+q9%YlIKZg~~O~ z!N1Kd1-|WxVlB;y2kA3?(s_*W{$piM0jJ+W^<*WC9Fi6xyO*|(ix5z2QLZ1&r=2^{D&$;{(sh({#Yra0rVO0 zJWI#elE*!%$HlY~XvC~qE1rPhb(LajDUc%Dl2D#5B9ykG0JvYSi9Y?bIOXI>s%dc{ zKE@!Mh@hNH-4~u^skN~gvBsd3RxAZxju-^2hR#e~!G{uN7Tnk=(N(*Q3V%T%BT;H0@y^8Yo1qm;A+9P^4V|Hgu7A;QZ;r(D7%vmE)z;AM zHdS)YHCAz_M*3I6a}bff+JTyDVqhU~zj<1ZiJ;WKu3>HLj#iYy8W3EhJ@w#aR9~J- zvFn;)uoOnmoixD|Gt|GL!Cm@iVytB?2(EPt{(znvMNz8ws(()=d!QBf0W+}FzwFS! z9s+To5FjzxL!JAUB>r{C+cyI7liU@eP55<%`(MTFyy>)}6slzeG**Dmo(30ls-15k z2t&I3))AVrJBhD`Q>zTY?c6l|`_!^fuoSwnTcH)DfNzQKSp%{SMEl2Hmd%s`K0W5L zuA)OLY`m@yRDW4Us|HkH;LfSA<*epC;1FXH$xWw*gMJcd2Op!^g5qn|< zjPoEZ5{l?Cq&`VwQ8;u_p@3!zW-~08v^O3dH;OmXj!g3 zqk+!q&s(hy#xD(4?v7S01zsmARb%0XkooS9{l!9goFzKTo+8i2~ z!~I$PtKpbo`?528K;IF9l}Fj77HCE(C}a%QDtF!kG4F0)4L1(&NV8UDQ%XStP%Na$ zl58o|F*;oNE7umX0aHY@=-$Mw5C{YC8RP~vNT!_eR5&5;9$KcH2N}&<34D43#p%lzoc+cnAJ}ioJ zRsFM($KnidYk%M~XWu+9h46OdHt&eYr;&Y51GrLX4>BFc6ap3n3c-~^!}#=}AuRP7 zJ~njQ&O%%%v<3AM_z=Dh-8S_Ns(P6z52ry~DYOOQ$S*^;Ovut4km-M?QCums1p-eP z@(NaRO+wSxJR0G&hdUY@B7{IVa*AKv$>_MH;N;+QAb+{ZX&6@uPQ+><2v?Hr$p6j; zsOl4v#muL3Bj_mw%a4C&1v9-7W3G^9ZohNmA!&)M$46t)38x;UnG@*|iO%1L`7(NQ z%*g4P6}fftYqCjH=}M+5g8?-$rkE&{d($Ze%Y}a)LSRX+hjb3pVv~h5c7ascd7;hq z@?Av!%6~2a0Z*yTv(PC+2)9EB??(<^)xPr|NkBzny7_(NZHZ%dOipPXc@>dYR^-Mu z0{_mUO23H+DeSR2){e&_d__%62;shnJQb0<%EGPI*qh{tGV>9w!hv)aD(YU?8i1+H zwkx8U+CO!}cEQYJmw$?y}Q-91SnUYhiJI-UWh|)m`Ab)Y4&RnLG zCCH2b8PBbhsB~;KXBv57f1^oI2q=lT-#$m4te5p>^AS!m7}lEG z?|(Qg!Mxs-!s`%19JSYwjr4PJiVUNKm=bg~F3Hl*<=3u}DF@R`lG-kqK9Z+E)m$Q$ z(x#09lt*`x0p|8^j;i`gEu5-^5Ew|WgC%kbr6RhLgTgf2mhQ(Nh;ksvaE4Nd_4QNQ zEDKQ$7Shb^ALH0Qg=_o)oyIYNW7K|WD}P=w9UpVz9>T1g8k`e(&R+_|fX%bde6n-XE zy?CGm2i|7#3|tRWn|x-#-xq`=<0?F6M#NFyM(~``LK(H48KX!PpWvE*D!j$M1LTYsMGkZV2kdd$*|^WidLmY?U)_V|uP**edC-cGH* ziAI>*FpAHfEA`zeIkju&2GT!{KOeegqKG0wND|q`DN52>Y~z-h4~+DqmwxWVSyYKlmpp>mHK7u zcT0VHCCw-WOiK}YT|R(Xn8qg+7^==mPZ3+iiP3utk}%X%_{_mm_U@^GWwZJjG@%sC ztRk9{MwF_UQ-=-Za)QZ9J*3C5X`_TrsW79 zutKaO@uO^RDe$%@lC>-*9zhwJr~A}Kyrp0%#NXE}6rKeYe@p9XN@#O!8(YG2SUvDH zVJTSb_VY1*9qV{_c$3p+bERM@tazH~#4*%m)(bukItk9tJ%bYdY<~(76Pic_R?1pO zA$?|T8(Z>tAoRGHR+eL<(+p-~Rsg~4GR4e%JGz6aAf~6QDygj~0L)0Pi8}o}Ic0Zb z<~>u0k74 z-ZO$UwBW{xlBQ~xNq-?2Wa+N8ka&Kn{bp#%QmBfJPEDP^3_#7MI>RJ+Zk zoO6v;d@K|7EAcs~>QL@L%{4Kw5V+s6u7H7H?fg1LlbWIxr7$>Rt_0^I<*B{SXmfco z#jb0FnH}A-BAC^T)vs8LpNLQLwHynaYu$oBVCP0rtW|s{wtr*vof}On(+4#E+WBRN zIrb2UoCwkHXN()|S9h*3T!dEX#Gu zn4`1$^G^PmAMG!vOe>ZGAS5ia-8xt?TbRUn?N8ZrPhS~Rth=TerC@7NlK$J0XTFCy z=D7c(zZ#Bk;81kt6foZe3!jvWpEf}=O2Hsvu=nDiDN@|sUkx`6exa%8(ynPrDVPI_ zg*3}G8aW9&{qQT-7P91AOOBldN8`k+;i{gi0=2K_p!Te9EP9pO-uM?_HHkv#3;-Aa O0000P6uXoH^%tsbR?P|r>vu|=2zE-wP0pXLJ0Tr`7vHIduV2tX7)V4cZ-34 zPSDlKVRPsLMjPV^4pxdSstpQT*?W?SV5W?FK0yW9KnvUcwjEl8#WADiUFXey` zO7*!RB&Yq*_xupTx#S=nAH9wx$A%DpK4^^(mzq~|o-H-s67$?astvvPL3eP7>)ufz zJk|ZZ=%T3kOXYLmQ;d<%=iv8`F~-Mc2B|QA4W!Z#Kp#>Xep72}Mas`w{GJXQ1D&C} z$H&ZLX6y?j`Qn(*w}8PK8xCP+IKfLrKb-ET!%-=1!yrgyF$&oJ`_i~$VP;orqMdU5xRcsdI|3(d+M1Kidks z8k$I;8gSP*QC&lAxVv_X0Q*vF@l}kFs`t*t&=}_8-DMfo(7ce7*Nx}eYx)C4xfTYb z`ApdZa`Z;%MmEZvKQAnELJN6+l0&QGM{38WKY=yHoG?47=8bKpGz6*gE7j5HXs>%L zKy<(A=Wjv?lUaTSkU1o0tpF$aQ^d@8QcVb`m~|`#5eoeYk8r&X-OxtS-Qs#^C6Cw8 zFGxAej1DQzOYQh5gz(^)RHQX{1=ANbE4Yp^BGVv5W*FMFnR)ahn(gX;XgT<2#^`}K zh}VHjg1zdkpEDx*5rXpdN-oyCCI}e$o}g>G^(C~jQS5z=$eN>8qq5Hy1 zpoYlUF?W`=fqbmZkxCK&MO|5@EH)|(5hD61Ijrk(jxP6X^6WWuR&SLWKz_f*oRg3> zLnfiZm^F-IOc4=(Yum|*;X`B)l$p^id)ArABa27uB>{;zp_D+4O|6=vB*P-`BbQxg z1`vt#+)E}6Y!uzCM#OW=vwLkNu+iy|LpD(kj3co+9ZDT@>}|-j0*uM~-icp%^Q8uw zGNs7HHJF+x-R&Q^L#<&L5Kl3pDdMrV9XW}x=7=hjp}8r4*=l>yD~~X@jY7sd{j7jl z5hj*=se9DHUf-sd|9ag(oq0d2BTohBp+r*XsLvRwQ$dRe?PSph zN&ug~3wLz(iY$ZQks&qnRsfj--QAi49XNDj8^xxJy@XbnTOJ*b!A{cQB9u%shsZ

                  2bTIRxkujx7`d5B=o^XsLb6*cxgUmB<9CTHopzr=O@m6D$)M)u2mUfsXyTtgS> z47a|c$64eMsi2qq+3eMBpID35MF+d6Cp`ywSlg4naV@WFjjVwMqvHb|X$(Z_@**pT zcDUEXM)hp;lIEGJ1Np*aoz5wb^oEj>PA47x2E?Lrv~joG7)>n?Hhb4VWbBz_CwzvHWWO|cr3W+$g3 z#G{PdF}s~WDa(&VZfFZKD(d@UH}>D>+H2J+c>D1spC5s$Jc`crB-}64 ztAbIrgAQ7FO+z|et;xpJ(0We|F_6krWAQUe9<`=z-2Zw~i9`B$YxOe4Mm6?E+u9U) zeBUS4&{MFb+{;5c=N|<4TZs(?D6+lDOU6?pK{JO2q~o63Z`iP*J^lq~1V%^hD67!` O0000!1^@s6aW})+ks%m=bxA})RCodHoQshZHxP!^E&@1{fguB9 zM*z+M>r?%`rJa-Jv5aQMd;3>y-R{inNZsoG z`=Qyh7-Kl$IACV?LI{szjDH`8L~USZmm!2VF~%=#MpzGaa_HlLnVp3Yu40V8h8qDmGqVJ6qGRF8Rgun~D)88$^ovT;Zb3y6$ zHRL_lJ-2{6TbRU#@r&k$!?;tFKpM;Wz33ui`J?oO3||UqF!%c$W4usm$oPH0>HqAx zAUVlaYeo^`SIvJ|dO&|QU>m$P zgI&r^Bv1{5aubyLQ5)`#-69YbNl|$fBcz<^kr?=+u}kfQ%_c7180y-8!07@gakY0Kgg%8mH_V*Hc)UY&${R|^2U|5ffRHbK4xD|K6onchi?pMh zc_APlb91Cp#6PGjOSE%GBHadSILMGO5}8@g?p7K^P+VgX)V~uOK0KsRyk8dz3~cp% zkPSFokI3YiQ3-R}=wMdWlM$x*npxh&bd1gjwLLnE&y^gy%2+Ian3?f6XVoG)4Wk;~ z@?=wIQMZ8K)pd2?-1HW_8+s9Aq$}(2)OFA}8o)`V25SF*@{`(5!+?tGD5A>cn;T>| zPrD=|BH=-vA(EQKMuoxNM=c|i9?2%YHyF((&z?hP^;W3?P7EI+BbzXPGn!@3Isn) zNlM9$QzJ|)`AX-`vPhaX|Fzvfo%tZEBaa2>p+r*XsAi1Rsh~xKcCx5}dHMKVxTCXH zWEp%$hSbbk0b~kvcl#pZ4To-Qqv#GDE{3_~(eDkglOGWRCDY6y@(}$v#-dZpocl2y z=SdzS*z^2fU>{ zKSd{6|H(R?Qy%FJB_*9s`uQYJlIamh6unpHh;_VwmIN>cpSx^KGi2|Wnqt(rDcwI| z8uTNM(Ou?aMxTv#q52h)KIn1N8Jl8N49TOO#9twVpHj9wmXWl*^iiw^+fs*BzyE)W z(0#IO{hT7jUiPr{Ik%YK0X9nH=O02GG#`yODhoYij4|>kn@pJuV|1HheMohfE}+Xx zS`I^h4AppJkVp0tCPGcR!Jm2F0*tm%^%Lk1bsLM{(_VsUtyd^oO*r=|>p^Nw0!tp8c z_#t@MgBJ#J0oN?sb8hZ@J2&NPof%KsY|6}LenfLx55&6wI_ry7O z*~nusW?)L89lm?-Nl~H*zKO^)=iG&J?zVI8Q#+5rn8K7oBVZZmt=>f`sI~B(&y#&v z6!%2r&qf}L(SO6Op3jWa=7B1Nw*$BNqjT=_z&@h^OewSnm5xIS0gD2KU`nB3%zbDG zEq#WM4c)e}5K{_mL4O1>gs*+KO@D)kTqerHXb@8hZ9zKnOW!S%veW=%{NHF4QwnW? zz>|hNLR+pWX!@FFBaHU2Kx0FA?@33F@rwl+4YL%C6n|n46gL?SV@kmYXfFimN~#_C z-`D^Vc|x(6#&m832TDQf3QNkX&WA%6}!dLXfc<=8!=bk#}?g$IF>R@kTAWF?gv5; z^w*DRvm`~;+ekCDe~7hX3fK4tG#W<*j(=JErLK5|J3bV|ox`M@Dx4E}PQMh037dai zEH1_$lCD^;6AR-mN`XO0M;$;`AsKkIk%mkKCP?mbOre<$!#GJ)exAobqYB+s1C4X! z6n>^uJ$s-e2i_*~3|tScP3jr&^93o%unLcw5n+cn9@&bPNFKYzZxl>GPeZRq=~6a-JR0A%wx2dR7((CyNLGngZ%fJMML z!q}R^Bx9FO z>9Q^QVA1H+uVcx%mKS%+m8L7!RxWC?cPZRpV!}5h^## z;$4{J=lt`d;6dDhH$_k!^ya6s?6ZZmIdeOg~5(vFu}N|4l)) z;ZJE)wkA5u1ivgZ)r|E(SeW$?vhKSyuL?6IF*0V@!Wh6PI`(^=$$uA-r+;Jb%p5sQ ztembEVF;Ch-o!yOU6RqS)5@*2h;7N3a9yCsSPw1Qi7~M%%g7-xTK4-X^SP@Nl|!Y0 zgX^#~wwKeDIX3`i8Ybo{sK%!h7>;5Vt)Z(pF?(-86o#6LIJhHQTzo~a_=}%GOG@E< zEpt$<5MCh6S0cE*1zwGTS$`jbT^rCBaW6vOmGc;|+X(~?O)1PlV+q9%YlIKZg~~O~ z!N1Kd1-|WxVlB;y2kA3?(s_*W{$piM0jJ+W^<*WC9Fi6xyO*|(ix5z2QLZ1&r=2^{D&$;{(sh({#Yra0rVO0 zJWI#elE*!%$HlY~XvC~qE1rPhb(LajDUc%Dl2D#5B9ykG0JvYSi9Y?bIOXI>s%dc{ zKE@!Mh@hNH-4~u^skN~gvBsd3RxAZxju-^2hR#e~!G{uN7Tnk=(N(*Q3V%T%BT;H0@y^8Yo1qm;A+9P^4V|Hgu7A;QZ;r(D7%vmE)z;AM zHdS)YHCAz_M*3I6a}bff+JTyDVqhU~zj<1ZiJ;WKu3>HLj#iYy8W3EhJ@w#aR9~J- zvFn;)uoOnmoixD|Gt|GL!Cm@iVytB?2(EPt{(znvMNz8ws(()=d!QBf0W+}FzwFS! z9s+To5FjzxL!JAUB>r{C+cyI7liU@eP55<%`(MTFyy>)}6slzeG**Dmo(30ls-15k z2t&I3))AVrJBhD`Q>zTY?c6l|`_!^fuoSwnTcH)DfNzQKSp%{SMEl2Hmd%s`K0W5L zuA)OLY`m@yRDW4Us|HkH;LfSA<*epC;1FXH$xWw*gMJcd2Op!^g5qn|< zjPoEZ5{l?Cq&`VwQ8;u_p@3!zW-~08v^O3dH;OmXj!g3 zqk+!q&s(hy#xD(4?v7S01zsmARb%0XkooS9{l!9goFzKTo+8i2~ z!~I$PtKpbo`?528K;IF9l}Fj77HCE(C}a%QDtF!kG4F0)4L1(&NV8UDQ%XStP%Na$ zl58o|F*;oNE7umX0aHY@=-$Mw5C{YC8RP~vNT!_eR5&5;9$KcH2N}&<34D43#p%lzoc+cnAJ}ioJ zRsFM($KnidYk%M~XWu+9h46OdHt&eYr;&Y51GrLX4>BFc6ap3n3c-~^!}#=}AuRP7 zJ~njQ&O%%%v<3AM_z=Dh-8S_Ns(P6z52ry~DYOOQ$S*^;Ovut4km-M?QCums1p-eP z@(NaRO+wSxJR0G&hdUY@B7{IVa*AKv$>_MH;N;+QAb+{ZX&6@uPQ+><2v?Hr$p6j; zsOl4v#muL3Bj_mw%a4C&1v9-7W3G^9ZohNmA!&)M$46t)38x;UnG@*|iO%1L`7(NQ z%*g4P6}fftYqCjH=}M+5g8?-$rkE&{d($Ze%Y}a)LSRX+hjb3pVv~h5c7ascd7;hq z@?Av!%6~2a0Z*yTv(PC+2)9EB??(<^)xPr|NkBzny7_(NZHZ%dOipPXc@>dYR^-Mu z0{_mUO23H+DeSR2){e&_d__%62;shnJQb0<%EGPI*qh{tGV>9w!hv)aD(YU?8i1+H zwkx8U+CO!}cEQYJmw$?y}Q-91SnUYhiJI-UWh|)m`Ab)Y4&RnLG zCCH2b8PBbhsB~;KXBv57f1^oI2q=lT-#$m4te5p>^AS!m7}lEG z?|(Qg!Mxs-!s`%19JSYwjr4PJiVUNKm=bg~F3Hl*<=3u}DF@R`lG-kqK9Z+E)m$Q$ z(x#09lt*`x0p|8^j;i`gEu5-^5Ew|WgC%kbr6RhLgTgf2mhQ(Nh;ksvaE4Nd_4QNQ zEDKQ$7Shb^ALH0Qg=_o)oyIYNW7K|WD}P=w9UpVz9>T1g8k`e(&R+_|fX%bde6n-XE zy?CGm2i|7#3|tRWn|x-#-xq`=<0?F6M#NFyM(~``LK(H48KX!PpWvE*D!j$M1LTYsMGkZV2kdd$*|^WidLmY?U)_V|uP**edC-cGH* ziAI>*FpAHfEA`zeIkju&2GT!{KOeegqKG0wND|q`DN52>Y~z-h4~+DqmwxWVSyYKlmpp>mHK7u zcT0VHCCw-WOiK}YT|R(Xn8qg+7^==mPZ3+iiP3utk}%X%_{_mm_U@^GWwZJjG@%sC ztRk9{MwF_UQ-=-Za)QZ9J*3C5X`_TrsW79 zutKaO@uO^RDe$%@lC>-*9zhwJr~A}Kyrp0%#NXE}6rKeYe@p9XN@#O!8(YG2SUvDH zVJTSb_VY1*9qV{_c$3p+bERM@tazH~#4*%m)(bukItk9tJ%bYdY<~(76Pic_R?1pO zA$?|T8(Z>tAoRGHR+eL<(+p-~Rsg~4GR4e%JGz6aAf~6QDygj~0L)0Pi8}o}Ic0Zb z<~>u0k74 z-ZO$UwBW{xlBQ~xNq-?2Wa+N8ka&Kn{bp#%QmBfJPEDP^3_#7MI>RJ+Zk zoO6v;d@K|7EAcs~>QL@L%{4Kw5V+s6u7H7H?fg1LlbWIxr7$>Rt_0^I<*B{SXmfco z#jb0FnH}A-BAC^T)vs8LpNLQLwHynaYu$oBVCP0rtW|s{wtr*vof}On(+4#E+WBRN zIrb2UoCwkHXN()|S9h*3T!dEX#Gu zn4`1$^G^PmAMG!vOe>ZGAS5ia-8xt?TbRUn?N8ZrPhS~Rth=TerC@7NlK$J0XTFCy z=D7c(zZ#Bk;81kt6foZe3!jvWpEf}=O2Hsvu=nDiDN@|sUkx`6exa%8(ynPrDVPI_ zg*3}G8aW9&{qQT-7P91AOOBldN8`k+;i{gi0=2K_p!Te9EP9pO-uM?_HHkv#3;-Aa O0000)c#Ek1iND5 z{wQ&Bl%u}G(s*S${KYx<**xRb@#aT~y&1Uoo~>{ct@Vx>Yw9@GcL?EY2*DaO^Kz5; zq>MW0c^8b0WmlB?-;0538)WNi!I|p+Coz$WIhe{H^I{Et5p19*xTWjn2JXFo5Wt;P^S+#bF6PfGQV8Dm_`!7ltM9tR)h$gW`vJwee{$f9iZ(W(4q zNS<>JL%vl<+ve#|+hZzg;bM+HyYT0nJO5@U%h|-%dcv8t6|WbYzoKLKo-Uk8=(^Qu;#( z;bV)ewSg|Xa4`pC{K**cf{Qtkedr02u3ZeyA%K@D4)fk$dGB9XB8iJ3LG`Y)vQz4N z?{8F|wjNNzj5>EZvnu83H(Cd^ie>fD4o> z=Nvmm$D=UB1w61QxNvF0uKXDrU>+~hyynn*#(#$c>dmigfcMt%RrLf~_|3Xb&=YjF z5)W=nj3$CZ9v>zsl|^GuhaTr55k&L%6~hxcoTYNTdy+kqTkX9|sfqCZ7FCZk$iIQ}oP6 z4u_kfmltT?^BhBvSNY31_t?l-9I0~_OU#8Q=OB7(u?#^ZVZ6B)uzzSK zjPn2oR+0YDtp2qDKh3+$QdpY55in2I4%o54pZdER8ubLxR$>-KUK+fO|Mn3>7i}k2 zsR)HE7}R?mGE=C-UkkR3A@3VACnKJZ_Qf!#1nnY^or_`0>M%UwEQT<~#T+coUkPcx z(>%zrv7kQ|oXEcP1kqMfnh{!0(g`dCG6)uI8AG0p%uDp%h5iy4 z2mLfd3x*vfd6_jq9GZT1I%MR7To`V9z?cTOS%tp>k}Z&JV?Oy{OeN1}Cb^j2QfjeFHQGMR7-(Nit(iK-{`3Cw zXJs~Kwaxpo&(ay)W6G2=$$x^A8mD;oA{V99nMupOu(IuU!~ZJ$6=cOU;ZW+fVa|Ig z(WUg%955&6y@6XL*7&YT=nP?s40(y7QB3LQQ0h+MLU$A_n5yxP>9rPr%5^`g$=_N} z#$k0GC8jp;Iq$XFdlv+){U{G#^oXr}98$e0TuicDCP-u1o0o!+hISf3*DdaT~DmA7yq?_CW|T6A8DKO2T2SBqwJN8UXDdwv zwUF3aMLMT!lC7s9Wg?H@U8}2%AH)Z6lA; zJFMDr`&}MvlE=604=(-t6fWlIvLt`z@Jupb)N|YMuB|7sO1l0F{6Y99mVjW^00000 LNkvXXu0mjfUsqUf delta 1719 zcmV;o21xnZ4crZoIe(5xL_t(|0qvWQaUC@f##bH+fRtc5Fi=5o2LURG(?J+lz$6`* zQ~*u~4i!Msfztul9fF%U=cg`E~%{;$%clxvYX|-Cd&dz&ppYi{Oa}FbT zXJ+?icB&88Uz*vsX7-Es{`E1k^u;j>{Ta)_IfoIy_TK+YtAEb9mu7bEz5hYiXEOMs z#K}=g{TWN+DrxXLGy9la6Y?x*}c#YKmPkqhI+n&0gVx2>{=+S2me`a=pTs`gA>TInia(|?{Zsx(YQ6%j6fCR0O7k}bh zNLw|-Id{=pcWE5TMGt23_l=qT)zf|nkD(_>b=?`bcA$64i*kMKoO_iDuAT6ebD`1vKe}UU@IpY1cW`;=7RVI<3+fgvUorRDgo!9jTEGk z)?~7CfO2hStXMl9g)uJRfk{D|vv4SXi4Ab5bAKMkHHYpaA5La4zOn)Cr;e|xC(tCB zt!smx09y;T5_ZfCj0OTj=EDHRXTjKGoMje>AlM1zdr^v-Dp4o%BP$ zKHks2)k6lX-`d&0MkoFnd)}X@+1C1vu_NlnE#syrHMVg(ei~VTa7Ui#^ClmH6 zdw+)g4Ei3^le!wu*}BfvGim$wB-t^4ttFg6`Beu1aW~DZ4NH$a(;FS{#(0{^z`*Q4 z8@r1KP$srFKq3R)e=Lll{=jpLL0;t#Gkc!&u{dJeG23JIz*oFqz!(>Az4u>v@5gu; zAn9jO{&FP!fP5@jeRG+sdIIm;bWQr7(tk6`cbdM7Li~ks4_>N~kziCGwQMpGFqmlE z;4OpdoV(N}<+@F*LTEY=?Q|Z zge;1@H25w29U_D-T2A%^R>*=uz0)Q$hB|zwU`9bq4Iw)+;rXb)I{=!3R*~msAxv2v z36D67F-&pMgT?tPA&z(SkaBEH=zk9dC-PW&f?z8#O$a%)WfkF>4FkwyfXhVb2qpp< zgcKO&m}evN61;bzy$I@urDrZQVOUY3msu0Uq4BlTF(V)4BH?xbjA?|MRro6)+5*`& z#)A*WRC11^dV-R!3+M@gtwaMSw5TQc5t6i5@DO;ZEZ0dxyD&znB)oYZYJZSEB5hOy zZE%o-A@17CK>aigH4F0OgH7;KfD3fy+(7>r0AJvZ4wp*lzA6{B)EQ?B6S}X)Uj>X4 zlbLbG21@&ss-B>v>q2^h2U}4}g;;fv){7}1%}xX*uS2<)@tNu}fRN8K2DzBtQfl!o zt(*Q%>K9XM>We;lkNO#qqJM0u9Id~l^FS_TQQ)M;Dc-%vMJaWbq-9^#tKzcUc)6B+F{1wKH7(D#%W(`~F z3HEd?&Gt3##hAXO4{ffxm*6HIrsV&fWY%H zKMpU&k>#E1s()obR|hYgbFX$0(h7QH!dt?hw!|FuE($m?stq2-Yg7ix z_TImRmbH7Kb|;QM#sk3D`#6VgN8_BVId!y&cubl*v48DsXkOhqhtBgu^f?f(*%!sS z54eyF3OYyMJsoIXucY(bX1I5%@?KHj@Odytrh7qtfRFX`S&;WEADg11eSdyJUNMFJiQV63;! zx%bYw4}aEn44NZn?A|=qfHErrFY|e(G(CP+@QlZu0=?(FhAc3%0T6_{T~~&MT%c3Q z>L8;%G3EsKB+to6bWUH>Is6GIoep&Q`#6L^pugjs<6@OIhAQth^{q9+@34?Pn=f$( z^ohwP@?PX)&V4oV#=q~84l!vA<{f|A%Q=TLJ%7>n7$7tR_YNbYk7yVr!2#N%q}^x! zw$~Vsq@D3XIWT2hoH^31-PpSVAakA7Z*1K3d*`}2;*iXdITJLH33Ep-CHmcL9OU{6 zn)(x9V*j+AzK0jz@hlJR3HHzi*D0Mv-Q?rhXX&<^myL%FXngKKc(FdyQ4B`O7|ex9 z-G54G=wOg{GS(t}!%y?;*|F%zw_BUdZR)#hH~PZVKGv=xS7aHIb|%vc`xs-5>G~Y< z);y{*H(gl<^h}NtK{S@3#S&+dK|m*U!oaMQ3ymm_L)aYyh8X)MsPZrvFI5J}T+BHq zXED0-`O`V~(8k*WN%i6j833Qf@2U79lYbID-=+Uj1`*d!r9krQrRTzZy~hm8Iro~K zWMrKLjkwcJMKa#^(m4*or780>T}0h5rm{8W@-l=#rfR72wy~z@8@+NxU;`Hr?XW;U z3~as5IjWJJk0kUZJ_c5kHyDxm5_!kI*JL;Zj5m?ve~1p084{o!253$I5ZG;VAb$bJ zAtjHP$s@(z;+Gn96*>a4YvUx`S5(_q@H7dsW619~>@)LEVRVe7L&_()FlYX~b^x7t z@6iwUY&awHv~h=UBR>w$z-{fC1jP=TXLJ@FqX<+4{9IRac#r9uu{x(M06CnlMzCA%4M|z;GJY=IUC?v3VcI!Wt?Oa9NprxEZ+OUprU6f z$S9Fb9^}>r4$%uf0)fd8Gb8)309AeKLAKPca?EkQ6J(oc2i<9r&6eaa8-Mu;!?4iD zE`qAO!HCS4$UFAs2==2ccMSv!(xZGQiw2kO*1Df5(a4fg2b#*GLlVevfLYK{@S$_@ z7@DsUDZR*1*Y;yK{X&A1ry_( z3@Mk=Fqy@X5sx@&Wl1O<1&{^w``WDuvfPWcfMP!B#&=Y3iim!b_z1vva#>IHF~chI1`}kyMBcHl1%Dt)rx-Cpv7Hhj zkqsFz#ys7JmJ19TrE?tL(sYbM0W0*A&@ZjVO~*b8+1Z|Igx|(0G+n6Z@wP&@5<%*_u_|~JAeI(hAxV77hikafOf?) zb&a=VHc8(a=cL4*u0^)fTf@-W(tcxquUUrId{}d|my~xt|2aNp$fCd^BO` z%Y~pYFj^cq5Y~`4sL6bZyt}?F09_I2K8&Bru=|`9OL^-~jpG2%9P!?R*2Hnv9)w*L zl%ls9dkZX;H>k;ciM;c^EdcEdUEbE7?p+gHUXNAGwtvDB-dx&~fsoRdE}2==UfJDI zu|(dWCi5lo?)7Z}Xn&yS{85HYpyzd{ww0=h|7`gT%?R%*sD_3Ru9vb9ttI~4r83B- zYa78XyqCxu49R?=yur!3OMSgAg&GN1KJ6C(v%;O@_%*sQDW%Ie*AWL_t(|0qvZRvD7vY#-$7e03{?H5K;l514t?WI)I@9208#L z2+#pZ1q3>P4gz$b%ujsstaY+%KilWK_w>!&+?~$SuJ)g#UA^Z+2(IDkz-bf>m~B;`d<0~ z||oDm3CJaugo!I^Wj>W=v8 z<|zX>z)<@fh!#hwx!`E>_uNjPpmX%y(}DPUDV_IhhAPY$ZR~6%eKW_4$mi&gAK+s> zehc!R>tp94@2IOT0D13UI_GX`OL&8PfnNNE^J8>>s@lML8^O`mb3Q#s8$pUOI@D++ zs8oj$!+#(F4+St5Ni|mR&*|AQh)2%YJwDcec2)#l_<5>rdi*YDLY|Qa1?be?bKZn3 zFtY&Ql-;V!@2VisPU*RWjP}5o4SsXZeK6lgVRU}i=p4PkN2deiKw>+DK%l=v01&SU zRoZLnTXTfplZEU#`4TyxuP|%my~xL$I~#dpkAHXB4#6}=_0g6SopU(TWBndWoC-J} zwaRdpgf@(l;6Olns5S)rEgP>&BRwl)=N;wnfpKx>!7^*=Yu^; z5{z3^jbm|NU*ZnSIro~CWMrNMjmh!@X1rgda~y=EDg33eFtW&pc5CqRBFi;ZX{WKK z=o`I~BGCLxfG=$HWRd3UoFn<%`G{#>;$vVnd4my|FOhfbdrgKzz<3iW{y=n~%zuyo z&tZVc2>=4Sog7HOaoCba%%oxQujoxqp6Uq5s?7w+SJ?69;E4&cW5{z%={x*eq;`y? zgQa7VsPNx=4xkh7eXJtL8R0XHJA@@pd0VSyesdaIh|Z#86oHC>pX+K4?J<4dv`$+< zJkDGcN)eQTK6LrLvuT4*nLkX$AAbW?$qV_I!J6_0HJLAwckFvj+v>D(BV>#o;dId% zsGZ4m!N)jDSMoD$wm;j=Q5przj<6wwCnT#C0PmQUN|vhOxWWGe+u`fq3l7x2EB3KZeY#WFMXIE?GXG(4ClB@$w zrP09zG8|wQbQFBxTs(%IG-PxfE54>9&KSc={H7f%N6j&y&x7667>o}7Dm)vHX4u0> zke@``(3-7p1LkP$?o<(XS$~Dy;u0TAI2Us4W5#`-WQ5m@pS ziTp-vlXHQoG%TnF#G{}w&dHE+DGjr;IAz2mj;$;SrK13{p#8p9Yl19!k(3V_0{TS< za{(Au1zBg$cX|4l3C8tY>Bm?QK~9ry*8CasTvB|et0Sl(cw%$LZ!>x)6dbSeX~ z!jMCWWp-00q^&DuDp2*>RDPp;&zNyMwN0hLbBt-rxG0G+V~IcUGxa?$gHG)?_MCz< zM<;5ZyyBd*_9Tl~GH1-}`Pi;fH_!5VuICt!4(JA*5MU1EAb&m3&a<&^&b#{eu0<4{ zLC&3i#RIx1%3XBf4Z1v6EK}ELOJZCQ9jM1+3O}~l1 zVt^I@ap6qQ+kf|^b6YzAS>CqzyoS8tt0r>=x}v;I-!7QidD_0|9#F&O2l+HAXM11` z+8j^VaSegF#hl>=pfE6695^AYA#YHV`4V||eOmy!B2d1FoDDmLqhcv-<<#JtJ4Xln zD__BJCS8tQ6_lctPdp1Ol{cu#e2KjCzAXUl3?*-Cw|{%r1j%d8=6hfX?RaNIIjX$q z0Vtrv#C$`CCGrL}nJe;9%aRzFrBVhK7cQqoeJB8X6jQLkmDVV!}<+hK5Ux zb_ClAs%{1VE@YA4sO2yk8ZIT;4rnLn&rG;E&A)SK!KdL$q6MIR!5?5Ar2^K_aEfRF zXkXNBnl?0CdbAwSPS8zL{)m+StHUkc(gnMQhD(jM1KJO@o2Cs7R|5Y7H=tJnz_ZmY P00000NkvXXu0mjfRE}`L diff --git a/docs/html/userhtml7x.png b/docs/html/userhtml7x.png index 11f5ee764c82014298361322fd41af7ea52846eb..d95c1025b5cbb5033bd5d8465770262faba4b8d8 100644 GIT binary patch delta 1919 zcmV-_2Y~pl52Fu|Ie%42L_t(|0qvWOkrX!&g(b=XU>t#Q24F`3WWd=G02x4C1QcX& zb_B*`a5w`X1IWOb4CMO6>p6`^nw=T#?NC^+YHM#b`fK%5tGh?%LkMm!c<*nA5I)Y0 zzobsbGF;bMURS>*EE&t{+$eQ$3V83II_K^z80)s`cC_P(_kaF=dpB3e^$4-N_Yb}I ze|hg;T-7`pmhd6UxeK`w-Z}R}2;p@uGK=rM|CdGLSqR|`-`@MjdEJhEQPJZ~=iD#O zIduG?b%rf`_^x&Ewea2}{CNoBZlx`x{+PNeA%vIS`*+^^S0RMYm3AE`L`{z&g!g8c zoO97IHDWU#_J6S4990)JfkOztSBOuW>p12*wqZ_>cIwW?Q%lgo2Y>2-5|<-{@ck0O za?sW}_v04pEw|<^mL>1^{{s2Im*(oVU`~(t+s?V0A%q7lV;n+_4<_eexd{xYtm7t5 zFb@b6EL^DGWjZ+Rs4w?{ekN8{K3a7*D-iiG6ZFvb*MD@}6?lTXv!ebgXl;f7IXRj~ zsFkmQ#yWOjco#p#rxRLyOnYhm~Q674GF;H*=6ju&)!Gk zjsgN%z9%6BNOI3PN8m>to}pCy=x1^%&Yb&lG-Y6ni63Sg!#Vex+I`B}8ECuO8fdfN z#~RaQLgoo;Ffc4&VMz)pMIXy&wIs*Pb!GDNz zF_64hn)h`>@yleGTDjH$QgDLCoWA$oHo^qT|6@=vKKTaP3iL~VTY<%O!6N@X zdH9t<>xc#Zq}=Yrh~!X^|4QY}GJhsKz|hU1s7J}b#&|A0!UGZzThPo0O9jT=Rv{LX z#bS=2odw7c`^k-lmRZCWaWa1>jB7V(?ZlV0y6j8}JbW)xv zd&LI6C3to-J72yvl#WZ@>9B5xmKPB_5 z_Mi5b|7{U;Uf%j!*#X=M7LretAuDHnC?B#JS$#|AK_u$(iJ26&qhE9YIUq03NBWYU zD5vfy3u7{t)XLARkUnZu!4lIIjhk6R0jnxA|}#J7bF;f!>vnQZB`0i?EarX`cI( zAP~X_B>-6hqV6r$zJKF-u~v_4ipB3fX0V74C%4={#}Qe9QY1ct>TqGpqWEtL%07`v zSe512h=10+Cpd&PdOQ{u@*&E3^84H!V<|2T(fqRk0aHgK_R5xYT!AYE+<2bjdIQ;`yN&tZ4xwA_ z{ek7?UI_sucd}bvY;+{(*C#+Y_#K$MVl07(Tv2O+6|&;bz@AkqP( zf&d*rDoCIM=paA`j(*lR`@CLzZ~t-kMEpso_ioo~duBe5XJ&mN#%Py72;n<3`zglw z``q{;ghyufD#rL>u3g7zp!1{kxYUkEVF@2x&Tt8GhY)U<*?-FzIfk`HM7?-#y9mA>rk_!$bQSrelfETF~;B4^?Dko_~3GWbGoZ9f|q9Yu-0=3 z;cf`wla%D3EzfjZFVyUa$L1toR`e(f^-A2q>)M z8lYvz7~?xL`+r+gJYt8~&IiJhbAHV1t(o0gJEmC@^8MQ9diyK;ni*lq-6M1|XGb$5 zPl`v3)9Pc64=(3fJ-0#)k{VX`D#&}^3?UHDtwspp*R9WXjIqFuge6CK?IxD+VIVhI zsA64WCceK^U_Jn$LI}^)jwEjY$p!602yb;CFHwT9qJJqgVMhqzy|%m>c$Tnc3y9l? zQ0Hh!H^agc0VZf&UjvP`RS#8=q=gV-ZgY);JxW{7+L4{v%mxQ0$3j2s+KaK558p@t zCQs$!1{Dcqqoag?36ccH7$M0WNaiuHJmOShZsYY?z#%76yDk-bIy@Bl!TKnHP#e2uREa z;rw1Ay2n3SnLLzYXEVc?gd0PQL?8Kgjls&Lwtqde({&$*ahtK4XW-@YbKfNgp5Njm5pBciDvTn{s+ATFU9q zWOA@8FyCrlink|r)V%T9%nSLM|AYtS_~myWS3F$J2bXi`Si)e8N0q@)TDq=DLzbuB zPJhBop7ZHXL%|Z}rA>R^|F};6BCpr8&-fciWPL}*K|4}=D{zC|C^C{0^%g@WFJHT8i z)ebRp1#@;JEM?9tq{+NjVizBBa^nd`#19wb#XGNRYevZL?vzWXwtRDXS`b)pJV z^`0tjyZGSbCY)$(YY0MVC@C4C3nfB07mE9YC3tZcFbCT$WuzMDgO@araOkf9&(g;# z$b&Plvm#rh6Xzi0*L~4Gl+mgA*Bk`>qI2%y5Ri|Y0DbeKYL%RNZ{cI%aj`e}LuF3# zmJ%&H!Xuod@9>^?krzPnVSh(ZxpdB!`}v>@nb@>ivQZepB*^-Qs)=W?D))Gu7lk*o zaa9i{nSVA1p0AdlvNoG4AD%(`ypQ^;>Hy&c`r(sgD6XR)t`F6WqP>^%AQEl)q)LjO zqhD+QIUq0hNA{APxK7(q6~<+)=|KHs*FmppHyI=Ahj~ows5y?tR)1fk>Wk!P&XaM( zwM~3*Ifn`R#J}`kO?pt|(($B_RW3jN)UARbC(s2cOZhvvoaUeRmFAv_t`D3n$$eQ6lK7cs&OUQio*!EGxcdP72k;Ig{NH?fH`M?Gq7<4KnD060lo}OT?7;8GmOGktZpo?{d!Xw|(@S^GEI#kzco!(K~P! zBJvNBa_znJqNB65H-5tIAR^zUl&*5lKQ3J*=loJc{t}V5Ip=?u%Igpq{TE-dt%06& zbc+0a;YCX6)qjeQj4Wgx1T-4oNj8#me!YehZJ-++9kub3)@mJoEVzKQYi&klU1+pA z1d!SAU(e`9M+4)hR?$>2i^yjY`QWtxNkrs@&Y@l!L=81I?i)0tMC6r-yz{aEO%biT zio#X?JI4H6U6b_&a%X^MTlO%!z+kkAwNtIjXc zNDUPyaH$dRTE}>Yj$G#Pe4}2~prq#>jA-Amy?^q0jwnn`i$UT%3-tVPs^8m~!teLN zM7>W9i{5w(fKy>UYdoBAfXp34z+;Bv>64r@P7#=nmh!PH9a-eR^2Ac3jt0xMk3<|~ zsXraLa1M5$hC(cN(0+dDxDxH%t1I)!7{1lFM1Jo)HbR{Zj_Rp?fo5u!ISlr;30h*>Js#|l-&?xA4m?=`%FyQx0ZaMVm5xaJNkeOGtj>VLsh$yV z@S2KK*N_3==_8pTv9IlsjVBz)0=f?KtKq95fT|cbc0)#lrgWsSrEYc}{SW}LT7SlY zQ!tc_z%CX58Jz7L+=j3%e8@RJjt$B&Sa}(tzr1>hOCxx9N?;aoWS07MB4vT zh|FfNHEQU=ptO$|nAWC5j9Q~QBQ5vowWXBRAvhG$hX`AuL1T<4#(I;`Y~*Q5CG|fD zxU=y+6hkQo*z<(5;w&d4v|9^jGk*u8sp=GVX{bAbajf!Nu?8Qz(h?zHk8!bF0{b}8AxBbpTo2$){5F>5K#d*qBys9P#e$Cgr>V>CZ&OM0Dy3t z(s0hIq`Mw^h92mMxl^EHUCK7+2*$wLvmEP@fK0P+EbwU!K6a%eGk#tx(SLB_P|V;t zB(eZt#$2H38Cifg)bb`k4USGK%{q%dIFD$E7zDMc2V>D8FlMh3eTqB^U4PJ^+#?`X z+^Ye?us`-$3|4g!!MWfZZ-DveM8BnY?y{seIP{4|T&qcY%z#7Z%16(qHTc+-jxc@< zm~@47-XZ}1r^igMopM-51|!D`^Mo>VMjNaI_T~4r(um zd-c$LlNpQxz3}#eR6cg`qYgn!9}!ksY~fV9#U@?E@oo6nn~sS5C-eiNd+RmWw!m4( za%`U{Y`O$pfBk=C|N)kme2 zZ!RG}?*fb=A}>lQ?>CXJs=tZIMf~nDSN+K zDdd$>aDP}&G02pU{}k6S!;bHei!tL=(FtpY(<8(V#FgH#28teKLR8E5|Nf8l~OLPPX$iF2>dJ-QOs#T!nkW)TmQNnnW5qY zUfYg$Wo?AH$fY0OH)$6)((?{Rv~T!aIa_BJ#(&5$NStSd897e%2X8aP`DT4&ki(+4 z3p4a5HpbHx4v;aBeJ>Dr$~_5BpMH3zZxo{4? zppF_^g@um&SuDu+xRe5E0d06>48O{^XdpU|g)nD>qk0*>Yi|hOfMGLNoLn{3@Ha?T z*MHv}*GCa~AJ=SE4>nOFtp{y<_uVz<{1GCZ=pE( zArU~mA(qI@+BWhHqp)z7$fOo<4ge5t zQ5eoz)o?e$)-VDc(RUT7Sl6^IID%zBCZxSDAkrM;(>D0nm5$u_IaZ?J#DAi=!Lvw2 z0lF^%zUTdm;r~l*aROVpSHoru5^U) zW59TR!uc8jSR_C$=eZYoJbwi=E=I81vy0{bUSpT%{V(A?mqlCdkCSPUgYD{kM&T<9SLgtps10#<+f>D@p4-9h7|%I7M6)*%?vM~0^bS>7>YkuGxkCVcEoN9_D3^aGqLN2l8Y zvIY)&&+sU(XLO^Zlks;1I|ZRW;I)*E;YVKSWMvL+6)o3=ohJFkt}fA&j_UQ^6S@M0 zSn3BWQ-u|vz}xOvY+8zN_XCH-^<_kHvoO~z?i0Gu(P`(O2Z~4k1`#_CTP+vme;_u# zN^9>@RP^HD7$(gv-2Ko}$^&W*douh<-+LG6MMwVwdpr(9^I*H{00000NkvXXu0mjf DuZ3Nd diff --git a/docs/html/userhtmlse3.html b/docs/html/userhtmlse3.html index 9e86a90b..a47b797b 100644 --- a/docs/html/userhtmlse3.html +++ b/docs/html/userhtmlse3.html @@ -1712,154 +1712,155 @@ class="description">

                  call a%clean_zeros(info)

                  Eliminates zero coefficients in the input matrix. Note that depending on the internal storage format, there may still be some amount of zero padding in the -output. -

                  +output. Even after a call to this method, any explicit zeros on the main diagonal are +always kept in the data structure. +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  a

                  -

                  The matrix a without zero coefficients.

                  The matrix a without zero coefficients.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.13 get_diag — Get main diagonal
                  -

                  call a%get_diag(d,info) -

                  Returns a copy of the main diagonal. +

                  call a%get_diag(d,info) +

                  Returns a copy of the main diagonal.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  d

                  -

                  A copy of the main diagonal.

                  A copy of the main diagonal.
                  A one-dimensional array of the appropriate type.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.14 clip_diag — Cut out main diagonal
                  -

                  call a%clip_diag(b,info) -

                  Returns a copy of a without the main diagonal. +

                  call a%clip_diag(b,info) +

                  Returns a copy of a without the main diagonal.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  b

                  -

                  A copy of a without the main diagonal.

                  A copy of a without the main diagonal.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  info

                  -

                  Return code.

                  +

                  Return code. -

                  +

                  3.2.15 tril — Return the lower triangle
                  @@ -1869,83 +1870,83 @@ class="description">     call a%tril(l,info[,&        & diag,imin,imax,jmin,jmax,rscale,cscale,u])
                  -

                  -

                  Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), +

                  +

                  Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1 and returing the complementary upper triangle.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  diag

                  -

                  Include diagonals up to this one; diag=1 means the first superdiagonal, +

                  Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

                  -

                  +

                  imin,imax,jmin,jmax

                  -

                  Minimum and maximum row and column indices.

                  Minimum and maximum row and column indices.
                  Type: optional.

                  -

                  +

                  rscale,cscale

                  -

                  Whether to rescale row/column indices. Type: optional.

                  -

                  +

                  Whether to rescale row/column indices. Type: optional. +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  l

                  -

                  A copy of the lower triangle of a.

                  A copy of the lower triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  u

                  -

                  (optional) A copy of the upper triangle of a.

                  (optional) A copy of the upper triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.16 triu — Return the upper triangle
                  @@ -1955,221 +1956,221 @@ class="description">     call a%triu(u,info[,&        & diag,imin,imax,jmin,jmax,rscale,cscale,l])
                  -

                  -

                  Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax), +

                  +

                  Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1, and returing the complementary lower triangle.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  diag

                  -

                  Include diagonals up to this one; diag=1 means the first superdiagonal, +

                  Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

                  -

                  +

                  imin,imax,jmin,jmax

                  -

                  Minimum and maximum row and column indices.

                  Minimum and maximum row and column indices.
                  Type: optional.

                  -

                  +

                  rscale,cscale

                  -

                  Whether to rescale row/column indices. Type: optional.

                  -

                  +

                  Whether to rescale row/column indices. Type: optional. +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  u

                  -

                  A copy of the upper triangle of a.

                  A copy of the upper triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  l

                  -

                  (optional) A copy of the lower triangle of a.

                  (optional) A copy of the lower triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.17 psb_set_mat_default — Set default storage format
                  -

                  call psb_set_mat_default(a) -

                  +

                  call psb_set_mat_default(a) +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  a variable of class(psb_T_base_sparse_mat) requesting a new default +

                  a variable of class(psb_T_base_sparse_mat) requesting a new default storage format.
                  Type: required.

                  -

                  +

                  3.2.18 clone — Clone current object
                  -

                  call a%clone(b,info) -

                  +

                  call a%clone(b,info) +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  b

                  -

                  A copy of the input object. +

                  A copy of the input object.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.19 Named Constants
                  -

                  +

                  -

                  +

                  psb_dupl_ovwrt_

                  -

                  Duplicate coefficients should be overwritten (i.e. ignore duplications) +

                  Duplicate coefficients should be overwritten (i.e. ignore duplications)

                  -

                  +

                  psb_dupl_add_

                  -

                  Duplicate coefficients should be added; +

                  Duplicate coefficients should be added;

                  -

                  +

                  psb_dupl_err_

                  -

                  Duplicate coefficients should trigger an error conditino +

                  Duplicate coefficients should trigger an error conditino

                  -

                  +

                  psb_upd_dflt_

                  -

                  Default update strategy for matrix coefficients; +

                  Default update strategy for matrix coefficients;

                  -

                  +

                  psb_upd_srch_

                  -

                  Update strategy based on search into the data structure; +

                  Update strategy based on search into the data structure;

                  -

                  +

                  psb_upd_perm_

                  -

                  Update strategy based on additional permutation data (see tools routine +

                  Update strategy based on additional permutation data (see tools routine description).

                  -

                  +

                  3.3 Dense Vector Data Structure

                  -

                  The

                  The psb_T6. Among other simple things, we define here an extraction method that can be used to get a full copy of the part of the vector stored on the local process. -

                  The type declaration is shown in figure 

                  The type declaration is shown in figure 3 where T is a placeholder for the data type and precision variants

                  -

                  +

                  I

                  -

                  Integer; +

                  Integer;

                  -

                  +

                  S

                  -

                  Single precision real; +

                  Single precision real;

                  -

                  +

                  D

                  -

                  Double precision real; +

                  Double precision real;

                  -

                  +

                  C

                  -

                  Single precision complex; +

                  Single precision complex;

                  -

                  +

                  Z

                  -

                  Double precision complex.

                  -

                  The actual data is contained in the polymorphic component v%v; the separation between +

                  Double precision complex. +

                  The actual data is contained in the polymorphic component v%v; the separation between the application and the actual data is essential for cases where it is necessary to link to data storage made available elsewhere outside the direct control of the compiler/application, e.g. data stored in a graphics accelerator’s private memory. -


                  @@ -2236,7 +2237,7 @@ memory.
                  -

                  +

                     type psb_T_base_vect_type
                       TYPE(KIND_), allocatable :: v(:)
                  @@ -2247,7 +2248,7 @@ memory.
                     end type  psb_T_vect_type
                   
                   
                  -

                  +


                  Listing 3: The PSBLAS defined data type that contains a dense vector.
                  @@ -2257,88 +2258,88 @@ class="content"> The PSBLAS defined data type that contains a dense vector.
                  3.3.1 Vector Methods
                  -

                  +

                  3.3.2 get_nrows — Get number of rows in a dense vector
                  -

                  nr = v%get_nrows() -

                  +

                  nr = v%get_nrows() +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  Function value

                  -

                  The number of rows of dense vector v.

                  -

                  +

                  The number of rows of dense vector v. +

                  3.3.3 sizeof — Get memory occupation in bytes of a dense vector
                  -

                  memory_size = v%sizeof() -

                  +

                  memory_size = v%sizeof() +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  Function value

                  -

                  The memory occupation in bytes.

                  -

                  +

                  The memory occupation in bytes. +

                  3.3.4 set — Set contents of the vector
                  @@ -2349,35 +2350,35 @@ class="description">  call  v%set(vect[,first,last])  call  v%zero() -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  alpha

                  -

                  A scalar value.

                  A scalar value.
                  Scope: local
                  Type: in.
                  Specified as: a number of the data type indicated in Table 1.

                  -

                  +

                  first,last

                  -

                  Boundaries for setting in the vector.

                  Boundaries for setting in the vector.
                  Scope: local
                  Type: Intent: in.
                  Specified as: integers.

                  -

                  +

                  vect

                  -

                  An array

                  An array
                  Scope: local
                  Type: Intent: in.
                  Specified as: a number of the data type indicated in Table 1.

                  -

                  Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call +

                  Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call to v%set(zero) with the zero constant having the appropriate type and kind. -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector, with updated entries

                  the dense vector, with updated entries
                  Scope: local

                  -

                  +

                  3.3.5 get_vect — Get a copy of the vector contents
                  @@ -2444,54 +2445,54 @@ class="newline" />
                   extv = v%get_vect([n])
                   
                  -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  n

                  -

                  Size to be returned

                  Size to be returned
                  Scope: local.
                  Type: optional; default: entire vector.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  Function value

                  -

                  An allocatable array holding a copy of the dense vector contents. If +

                  An allocatable array holding a copy of the dense vector contents. If the argument n is specified, the size of the returned array equals the minimum between n is -

                  +

                  3.3.6 clone — Clone current object
                  @@ -2511,57 +2512,57 @@ class="zplmr7m-">n is
                   call  x%clone(y,info)
                   
                  -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  x

                  -

                  the dense vector.

                  the dense vector.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  y

                  -

                  A copy of the input object. +

                  A copy of the input object.

                  -

                  +

                  info

                  -

                  Return code.

                  +

                  Return code.

                  -

                  +

                  3.4 Preconditioner data structure

                  -

                  Our base library offers support for simple well known preconditioners like Diagonal +

                  Our base library offers support for simple well known preconditioners like Diagonal Scaling or Block Jacobi with incomplete factorization ILU(0). -

                  A preconditioner is held in the

                  A preconditioner is held in the psb_Tprec


                  @@ -2582,7 +2583,7 @@ preconditioner.
                  -

                  +

                   
                     type psb_Tprec_type
                  @@ -2590,7 +2591,7 @@ preconditioner.
                     end type psb_Tprec_type
                   
                   
                  -

                  +


                  Listing 4: The PSBLAS defined data type that contains a preconditioner.
                  @@ -2600,70 +2601,70 @@ class="content">The PSBLAS defined data type that contains a preconditioner.

                  3.5 Heap data structure

                  -

                  Among the tools routines of sec. 

                  Among the tools routines of sec. 6, we have a number of sorting utilities; the heap sort is implemented in terms of heaps having the following signatures:

                  -

                  +

                  psb_T_heap

                  -

                  : a heap containing elements of type T, where T can be i,s,c,d,z for +

                  : a heap containing elements of type T, where T can be i,s,c,d,z for integer, real and complex data;

                  -

                  +

                  psb_T_idx_heap

                  -

                  : a heap containing elements of type T, as above, together with an integer +

                  : a heap containing elements of type T, as above, together with an integer index.

                  -

                  Given a heap object, the following methods are defined on it: +

                  Given a heap object, the following methods are defined on it:

                  -

                  +

                  init

                  -

                  Initialize memory; also choose ascending or descending order; +

                  Initialize memory; also choose ascending or descending order;

                  -

                  +

                  howmany

                  -

                  Current heap occupancy; +

                  Current heap occupancy;

                  -

                  +

                  insert

                  -

                  Add an item (or an item and its index); +

                  Add an item (or an item and its index);

                  -

                  +

                  get_first

                  -

                  Remove and return the first element; +

                  Remove and return the first element;

                  -

                  +

                  dump

                  -

                  Print on file; +

                  Print on file;

                  -

                  +

                  free

                  -

                  Release memory.

                  -

                  These objects are used to implement the factorization and approximate inversion +

                  Release memory. +

                  These objects are used to implement the factorization and approximate inversion algorithms. diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf index f92e8230..e17bd863 100644 --- a/docs/psblas-3.9.pdf +++ b/docs/psblas-3.9.pdf @@ -8316,7 +8316,7 @@ endstream endobj 1079 0 obj << -/Length 4707 +/Length 4973 >> stream 0 g 0 G @@ -8326,7 +8326,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F131 9.9626 Tf 20.922 -20.279 Td [(call)]TJ +/F131 9.9626 Tf 20.922 -19.941 Td [(call)]TJ 0 g 0 G [-525(a%csclip\050b,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8334,7 +8334,7 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 649.264 Tm [(Returns)-212(the)-213(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 212.397 649.264 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.465 649.264 Tm [(,)-221(optionally)-212(r)18(escaling)-212(r)18(ow/-)]TJ 1 0 0 1 99.895 637.309 Tm [(col)-250(indices)-250(to)-250(the)-250(range)]TJ + [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 650.299 Tm [(Returns)-212(the)-213(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 212.397 650.299 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.465 650.299 Tm [(,)-221(optionally)-212(r)18(escaling)-212(r)18(ow/-)]TJ 1 0 0 1 99.895 638.344 Tm [(col)-250(indices)-250(to)-250(the)-250(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG /F131 9.9626 Tf 103.85 0 Td [(1)]TJ 0 g 0 G @@ -8366,66 +8366,66 @@ BT 0 g 0 G /F84 9.9626 Tf 141.219 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -245.069 -21.961 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -245.069 -21.437 Td [(T)90(ype:)]TJ 0 g 0 G /F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.44 -22.638 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -21.942 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.639 Td [(a)]TJ + 0 -21.941 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -77.918 -34.593 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -77.918 -33.897 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G -/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.956 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.598 -22.638 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -21.941 Td [(rscale,cscale)]TJ 0 g 0 G /F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F75 9.9626 Tf -59.527 -24.632 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -23.934 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -22.639 Td [(b)]TJ + 0 -21.941 Td [(b)]TJ 0 g 0 G -/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F131 9.9626 Tf 111.322 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -102.714 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F131 9.9626 Tf 111.322 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -102.714 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -184.596 -22.639 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -21.941 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -31 Td [(3.2.12)-1000(clean)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -30.008 Td [(3.2.12)-1000(clean)]TJ ET q -1 0 0 1 159.153 364.307 cm +1 0 0 1 159.153 371.74 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F75 9.9626 Tf 162.142 364.108 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ +/F75 9.9626 Tf 162.142 371.541 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F131 9.9626 Tf -62.247 -20.278 Td [(call)]TJ +/F131 9.9626 Tf -62.247 -19.941 Td [(call)]TJ 0 g 0 G - [-525(a%clean_zeros\050info\051)]TJ/F84 9.9626 Tf 0.988 0 0 1 114.839 331.196 Tm [(Eliminates)-253(zer)19(o)-253(coef)18(\002cients)-252(in)-253(the)-253(input)-252(matrix.)-314(Note)-252(that)-253(depending)-252(on)-253(the)]TJ 0.998 0 0 1 99.895 319.241 Tm [(internal)-251(storage)-251(format,)-251(ther)18(e)-251(may)-251(still)-251(be)-251(some)-251(amount)-251(of)-251(ze)1(r)18(o)-251(padding)-251(in)-251(the)]TJ 1 0 0 1 99.895 307.286 Tm [(output.)]TJ + [-525(a%clean_zeros\050info\051)]TJ/F84 9.9626 Tf 0.988 0 0 1 114.839 339.141 Tm [(Eliminates)-253(zer)19(o)-253(coef)18(\002cients)-252(in)-253(the)-253(input)-252(matrix.)-314(Note)-252(that)-253(depending)-252(on)-253(the)]TJ 0.998 0 0 1 99.895 327.186 Tm [(internal)-251(storage)-251(format,)-251(ther)18(e)-251(may)-251(still)-251(be)-251(some)-251(amount)-251(of)-251(ze)1(r)18(o)-251(padding)-251(in)-251(the)]TJ 0.98 0 0 1 99.895 315.231 Tm [(output.)-316(Even)-255(after)-255(a)-255(call)-255(to)-255(this)-255(method,)-255(any)-255(explicit)-255(zer)19(os)-255(on)-255(the)-255(main)-255(diagonal)]TJ 1 0 0 1 99.895 303.275 Tm [(ar)18(e)-250(always)-250(kept)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 0 g 0 G -/F75 9.9626 Tf 0 -24.632 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -23.933 Td [(T)90(ype:)]TJ 0 g 0 G /F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.44 -22.638 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -21.942 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.639 Td [(a)]TJ + 0 -21.941 Td [(a)]TJ 0 g 0 G /F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -77.918 -35.908 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -35.385 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -22.638 Td [(a)]TJ + 0 -21.941 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 9.654 0 Td [(The)-250(matrix)]TJ/F131 9.9626 Tf 50.66 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.517 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(matrix)]TJ/F131 9.9626 Tf 50.66 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.517 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -184.596 -22.638 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -21.941 Td [(info)]TJ 0 g 0 G /F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ 0 g 0 G @@ -10179,7 +10179,7 @@ stream >> % 151 0 obj << -/D [1078 0 R /XYZ 99.895 376.562 null] +/D [1078 0 R /XYZ 99.895 383.821 null] >> % 1077 0 obj << @@ -37958,8 +37958,8 @@ endobj 2431 0 obj << /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20241118155812+01'00') -/ModDate (D:20241118155812+01'00') +/CreationDate (D:20241119121026+01'00') +/ModDate (D:20241119121026+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) >> @@ -38298,7 +38298,7 @@ endobj /W [1 3 1] /Root 2430 0 R /Info 2431 0 R -/ID [<06FD2D470EA243DFD84ACE1514D01F23> <06FD2D470EA243DFD84ACE1514D01F23>] +/ID [<6636EFB050A1E0237E3C2577A823D658> <6636EFB050A1E0237E3C2577A823D658>] /Length 12165 >> stream @@ -38313,23 +38313,23 @@ stream u,ËM] ] u-ËL] ]u.ËK]]u/ËJ]]u0ËI]]u1ËH]]u5ËG]]u6ËF]]u7ËE]]u8ËD]]]Áè] ]$¾Ó]!]"ËËËËÒ”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c      !"#$%)']ZÂ"&´™*+,-./0123456789:;<=>?@ABCDEFGHIJKLMOPRTV[Y(7ØXNQSUW]_`abckkkkkkkkkk k k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛËuPuGuTuRuOuDuEuNuAuBk.k/k0/Wk5k3k)¸k2k*k+k,k-4 uCk6k7k<k4?°k8ËËËk:k;uMkAkBy,kFk=dtkCkDk>k?k@u@u?kHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕËË&‹Õ ÕÕÕ -Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ|ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÒÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ËÕ2Õ5Õ6Õ<Õ4‡xÕ7ÕBÕ=›ÙÕ>Ë ÕJÕC­—ÕDÕGÕPÕKÁxÕLÕRÕSÕTÕYÕQØÕUÕXuLÕ\Õ`ÕZø6Õ[Õ]+ÕašÕb+t®+ +JÓ+Ë!++ -\Ñ+ ++tÀ+++‡`+++™ü+++ +'+³Ä+!+&+*+.+(Òø+)Ë"+0+1+4+/çb+2+P+6+>+<+5÷2+7+;+@+B+= -/+?+F+C+D+H+I+J+K+L+M+S+Q+GZ+NË+T+U+W+R:x+VË#+Y+Z+[+\+]+a+XD7+^+`+cˆ+bcˆˆã(ˆˆˆˆˆˆ ˆ ˆàˆ -ˆ ˆˆÀ߈ˆˆˆˆˆÃbˆˆˆˆâ¢ˆˆË$ˆˆˆ ˆ$ˆïˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ%²ˆ)ˆ+ˆ0ˆ-&zˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ12øˆ5ˆ7ˆ;ˆ9Påˆ:ˆ=ˆ>ˆ?ˆCˆ<Sgˆ@ˆBË%ˆLˆDnˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM܈QˆSˆVˆWˆ[ˆU˜¸ˆXˆZˆ]ˆ^ˆbˆ\®ˆ_ˈaþþþþþ þ -ˆcÃeþþþþþ òþ þþþþþþþþ 5þË&þþþþ*¬þþþþþ þ!þ"þ#þ%þJµþ$þ'þ(þ*þ&hþ)þ,þ-þ.þ/þ0þ1þ2þ6þ+zpþ3þ5þ9þ7˜×þ8þ;þ<þ=þ>þ?þEþFþCþ:šNþ@þBË'þHþD¸žþGþJþKþLþMþNþRþI¾þOþQþTþWþSÜþUþYþZþ[gþ_þXÞâþ\þ^—ggþ`ùÍggþaþbþcggp gH{‹g -g©#g Ë(g g ggg µHgggû2ggggÔ1ggggg'ggë˜gg(gù´g&g g!g"g#g$g% Ð=?g*g+g,g0g)j×g-g/g3g1Œºg2Ë)g5g;g9g4’g6g8g<g=g?g:°g>gDg@À³gAgFgIgEÛ)gGgHgKgNgJõïgLËgMgVgO#¤gPgQgRgSgTgUË*gXg[gW/~gYg]gbg\KÛg^g_g`gaÝÝÝgcX"ÝÝ–XÝÝÝ ÝŸÀÝ Ý ÝÝ ¬bÝÝÝÝݵÝË+ÝÝÌzÝÝÝÝÝÝ"ÝÓŽÝÝ!Ý(Ý#ëÝ$Ý%Ý&Ý'Ý.Ý,Ý)ðYÝ*Ý/Ý0Ý7Ý-ûÝ1Ý2Ý3Ý4Ý5Ý6Ý@Ý8#Ý9Ý:Ý;Ý<Ý=Ý>Ý?Ë,ÝBÝCÝDÝGÝA7þÝEÝQÝHS?ÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRa ÝUÝYÝZÝ^ÝXmÝ[Ý]Ý`ÝaDÝ_|ÝbÛ]DD¿+DDË-DDD -DÃEDDD ÝND D DDDDDDßÉDDDDDDDøÃDD"D³D D$D'D#zD%Ë.D,D(,‘D)D*D+D.D1D-/ÕD/D3D7D2FÂD4D6D9D=D8SçD:D<D?DCD>hD@DBDEDIDDuDFDHË/DKDPDJ‰'DLDNDODRDWDQ˜ DSDUDVDYD\DX¦`DZDbD]¼]D^D_D`DaµµµµDcËZµ!Uëµ µ qµË0µµ - Hµ µ µ µµµµµµµµµ <Šµµµ =rµµµµ%µ  TMµ!µ#µ$µ,µ& fþµ'µ)µ*µ+µ0µ- xÙµ.Ë1µ4µ1 ƒ=µ2µ8µ5 ºµ6µ<µ9 •†µ:µ@µ= ›}µ>µDµA  ½µBµJµE ¸¬µFµGµHµIËË2µNµK Î"µLµTµO 朵PµQµRµSµXµU ûEµVµ^µY!~µZµ[µ\µ]µbµ_!(žµ`#µc!@Û####Ë3"Åu##!{#### !“¤# -# # # ##!¨†###!Á######!Ö$##$#!î?### Ë#!#"##Ë4#)#%"÷#&#(#.#*"/#+#-#0#1#4#/"5h#2#7#8#9#5"P#6#?#:"yc#;#=#>#E#@"‡Š#A#C#DË5#K#F"(#G#I#J#Q#L"“•#M#O#P#U#R"›ð#S#W#\#V"žH#X#Z#[#^#c#]"±#_#a#b‘‘‘"êS‘‘‘$!”Ë6‘‘ ‘"øã‘ ‘ ‘ ‘‘‘# -:‘‘‘‘‘‘#'Ö‘‘‘‘‘#E ‘‘"‘#Gב ‘$‘%‘&‘*‘##M‘'‘)Ë7‘6‘,‘-‘.‘/‘4‘2‘+#a‘0‘7‘3#rM‘5u>‘9‘:‘;‘<‘?‘8#§¸‘=‘B‘@#Åê‘A‘D‘E‘F‘G‘J‘C#Ê’‘H‘L‘O‘K#àý‘MË8‘S‘P#îבQ‘U‘V‘Y‘T#òâ‘W‘]‘Z#ý´‘[‘_‘`ûû‘^$P‘a‘cûûû%ÕÂûûûû -û$M>û û ûû $i†û Ë9ûûûûûû${¨ûûûûûûûû$žûû!û$¸îû û#û%û&û'û(û)û-û"$½lû*û$uUuVû/û0%øû1%CHûIû;û7û.$Ý‹û2û5û6uQû=ûKûAû8%ëû<û>û?û@Ë:û9û:%$ûTûVûB%%ûJûLûMûNûOûPûQûRûSûUûCûD%M—ûEûFûG%NŸûH%O•%PŸ%oy%š•û^û_û`uûW%x«ûaûbûcûXûYûZû[û\%§û]%¨:%©0%¶ìu -u 'JÞ&(uuu&¹u u u uuuuu&3 u&4&5&Nµ&åuuu&Yèuuuu& uuu&Ž‘u&&­&­¸uu&ºùuu u&¿€uË;u'u!&Þlu"u%u2u(&õ‚u)u9u3' -íu4uIu:'Ôu;u<u=uFuHuXuJ'2˜uKuSuWuYuZu[u\u]u^u_u`uaubËucË*O)Ë'{âË'˜ÁË'¼±Ë'Ú¾Ë'ùëË(!ãË(sµË(„†Ë (ÍžË -(ÝûË (í·Ë )LmË )²„Ë*.*Z* À*ü*õ*"4*(x*.·*4ö*8ˆ*=*C *I"Ë<Ë=Ë>Ë?Ë@ËAËBËC*Š*¶ïý!ý"ý#ý$ý%ý&ý'ý(ý)ý*ý+ý,ý-ý.ý/ý0ý1ý2ý3ý4ý5ý6ý7ý8ý9ý:ý;ý<ý=ý>ý?ý@ý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ý[ý\ý]ý^ý_ý`ýaýbýc B*ø\ B B B B B B B B B  B - B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B<*ö1+$¸ +Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ|ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÒÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ËÕ2Õ5Õ6Õ<Õ4‡xÕ7ÕBÕ=›ÙÕ>Ë ÕJÕC­—ÕDÕGÕPÕKÁxÕLÕRÕSÕTÕYÕQØÕUÕXuLÕ\Õ`ÕZø6Õ[Õ]+ÕašÕb+u¸+ +JÓ+Ë!++ +\Ñ+ ++tÀ+++ˆj+++›+++ +'+´Î+!+&+*+.+(Ô+)Ë"+0+1+4+/èl+2+P+6+>+<+5ø<+7+;+@+B+= 9+?+F+C‰+D+H+I+J+K+L+M+S+Q+Gd+NË+T+U+W+R;‚+VË#+Y+Z+[+\+]+a+XEA+^+`+cˆ+bdˆˆä2ˆˆˆˆˆˆ ˆ ˆžêˆ +ˆ ˆˆÁ鈈ˆˆˆˆÄlˆˆˆˆã¬ˆˆË$ˆˆˆ ˆ$ˆð&ˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ% ¼ˆ)ˆ+ˆ0ˆ-'„ˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ14ˆ5ˆ7ˆ;ˆ9Qïˆ:ˆ=ˆ>ˆ?ˆCˆ<Tqˆ@ˆBË%ˆLˆDo ˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM€æˆQˆSˆVˆWˆ[ˆU™ÂˆXˆZˆ]ˆ^ˆbˆ\¯ ˆ_ˈaþþþþþ þ +ˆcÄoþþþþþ üþ þþþþþþþþ ?þË&þþþþ+¶þþþþþ þ!þ"þ#þ%þK¿þ$þ'þ(þ*þ&i"þ)þ,þ-þ.þ/þ0þ1þ2þ6þ+{zþ3þ5þ9þ7™áþ8þ;þ<þ=þ>þ?þEþFþCþ:›Xþ@þBË'þHþD¹¨þGþJþKþLþMþNþRþI¿"þOþQþTþWþSÝþUþYþZþ[gþ_þXßìþ\þ^¡ggþ`ú×ggþaþbþcggqªgI&|•g +gª-g Ë(g g ggg ¶Rgggü<ggggÕ;ggggg'ggì¢gg(gú¾g&g g!g"g#g$g% +Ú>Ig*g+g,g0g)kág-g/g3g1Äg2Ë)g5g;g9g4“‹g6g8g<g=g?g:±—g>gDg@Á½gAgFgIgEÜ3gGgHgKgNgJöùgLËgMgVgO$®gPgQgRgSgTgUË*gXg[gW0ˆgYg]gbg\Låg^g_g`gaÝÝÝgcY,ÝÝ—bÝÝÝ Ý ÊÝ Ý ÝÝ ­lÝÝÝÝݶ&ÝË+ÝÝÍ„ÝÝÝÝÝÝ"ÝÔ˜ÝÝ!Ý(Ý#ì +Ý$Ý%Ý&Ý'Ý.Ý,Ý)ñcÝ*Ý/Ý0Ý7Ý-Ý1Ý2Ý3Ý4Ý5Ý6Ý@Ý8$)Ý9Ý:Ý;Ý<Ý=Ý>Ý?Ë,ÝBÝCÝDÝGÝA9ÝEÝQÝHTIÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRb*ÝUÝYÝZÝ^ÝXnÝ[Ý]Ý`ÝaDÝ_}§ÝbÜgDDÀ5DDË-DDD +DÄODDD ÞXD D DDDDDDàÓDDDDDDDùÍDD"D½D D$D'D#„D%Ë.D,D(-›D)D*D+D.D1D-0ßD/D3D7D2GÌD4D6D9D=D8TñD:D<D?DCD>iD@DBDEDIDDvDFDHË/DKDPDJŠ1DLDNDODRDWDQ™*DSDUDVDYD\DX§jDZDbD]½gD^D_D`DaµµµµDcÌdµ!Võµ µ {µË0µµ + Rµ µ µ µµµµµµµµµ =”µµµ >|µµµµ%µ  UWµ!µ#µ$µ,µ& hµ'µ)µ*µ+µ0µ- yãµ.Ë1µ4µ1 „Gµ2µ8µ5 ‘ĵ6µ<µ9 –µ:µ@µ= œ‡µ>µDµA ¡ÇµBµJµE ¹¶µFµGµHµIËË2µNµK Ï,µLµTµO 禵PµQµRµSµXµU üOµVµ^µY!ˆµZµ[µ\µ]µbµ_!)¨µ`#µc!Aå####Ë3"Æ##!|-### !”®# +# # # ##!©###!Â######!×.##$#!ïI### Ë#!#"##Ë4#)#%" +#&#(#.#*" 9#+#-#0#1#4#/"6r#2#7#8#9#5"Qš#6#?#:"zm#;#=#>#E#@"ˆ”#A#C#DË5#K#F"Ž2#G#I#J#Q#L"”Ÿ#M#O#P#U#R"œú#S#W#\#V"ŸR#X#Z#[#^#c#]"²#_#a#b‘‘‘"ë]‘‘‘$"žË6‘‘ ‘"ùí‘ ‘ ‘ ‘‘‘# D‘‘‘‘‘‘#(à‘‘‘‘‘#F‘‘"‘#Há‘ ‘$‘%‘&‘*‘##N ‘'‘)Ë7‘6‘,‘-‘.‘/‘4‘2‘+#b‘0‘7‘3#sW‘5u>‘9‘:‘;‘<‘?‘8#¨Â‘=‘B‘@#Æô‘A‘D‘E‘F‘G‘J‘C#Ëœ‘H‘L‘O‘K#â‘MË8‘S‘P#ïá‘Q‘U‘V‘Y‘T#óì‘W‘]‘Z#þ¾‘[‘_‘`ûû‘^$Z‘a‘cûûû%ÖÌûûûû +û$NHû û ûû $jû Ë9ûûûûûû$|²ûûûûûûûû$Ÿ)ûû!û$¹øû û#û%û&û'û(û)û-û"$¾vû*û$uUuVû/û0%û1%DRûIû;û7û.$Þ•û2û5û6uQû=ûKûAû8%õû<û>û?û@Ë:û9û:%%ûTûVûB%&™ûJûLûMûNûOûPûQûRûSûUûCûD%N¡ûEûFûG%O©ûH%PŸ%Q©%pƒ%›Ÿû^û_û`uûW%yµûaûbûcûXûYûZû[û\%¨#û]%©D%ª:%·öu +u 'Kè&) uuu&Ãu u u uuuuu&4u&5&6"&O¿&€ïuuu&Zòuuuu&Ž*uuu&›u&—&‘·&®Âuu&¼uu u&ÀŠuË;u'u!&ßvu"u%u2u(&öŒu)u9u3' ÷u4uIu:'Þu;u<u=uFuHuXuJ'3¢uKuSuWuYuZu[u\u]u^u_u`uaubËucË*P3Ë'|ìË'™ËË'½»Ë'ÛÈË'úõË("íË(t¿Ë(…Ë (ΨË +(ßË (îÁË )MwË )³ŽË*8*d* Ê**ÿ*#>*)‚*/Á*6*9’*>(*D**J,Ë<Ë=Ë>Ë?Ë@ËAËBËC*‘”*·ùý!ý"ý#ý$ý%ý&ý'ý(ý)ý*ý+ý,ý-ý.ý/ý0ý1ý2ý3ý4ý5ý6ý7ý8ý9ý:ý;ý<ý=ý>ý?ý@ý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ý[ý\ý]ý^ý_ý`ýaýbýc B*ùf B B B B B B B B B  B + B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B<*÷;+% endstream endobj startxref -2827448 +2827714 %%EOF diff --git a/docs/src/datastruct.tex b/docs/src/datastruct.tex index c9a4867b..c490eb43 100644 --- a/docs/src/datastruct.tex +++ b/docs/src/datastruct.tex @@ -900,7 +900,9 @@ A variable of type \fortinline|psb_Tspmat_type|. Eliminates zero coefficients in the input matrix. Note that depending on the internal storage format, there may still be some amount of -zero padding in the output. +zero padding in the output. Even after a call to this method, any +explicit zeros on the main diagonal are always kept in the data +structure. \begin{description} \item[Type:] Asynchronous. From 7e73900703b9b5fb9c49bc5f295e423e0687732a Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 19 Nov 2024 12:16:46 +0100 Subject: [PATCH 83/86] Fix clean_zeros' description --- docs/html/userhtmlse3.html | 547 +-- docs/psblas-3.9.pdf | 7742 ++++++++++++++++++------------------ docs/src/datastruct.tex | 13 +- 3 files changed, 4165 insertions(+), 4137 deletions(-) diff --git a/docs/html/userhtmlse3.html b/docs/html/userhtmlse3.html index a47b797b..0fd6d56a 100644 --- a/docs/html/userhtmlse3.html +++ b/docs/html/userhtmlse3.html @@ -1710,157 +1710,166 @@ class="description">

                  3.2.12 clean_zeros — Eliminate zero coefficients

                  call a%clean_zeros(info) -

                  Eliminates zero coefficients in the input matrix. Note that depending on the -internal storage format, there may still be some amount of zero padding in the -output. Even after a call to this method, any explicit zeros on the main diagonal are -always kept in the data structure. -

                  +

                  Eliminates zero coefficients explicitly stored in the input matrix. +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  - - - +

                  -

                  +

                  a

                  -

                  The matrix a without zero coefficients.

                  The matrix a without zero coefficients.
                  A variable of type psb_Tspmat_type. + + +

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  Notes +

                    +
                  1. +

                    Depending on the internal storage format, there may still be some + amount of zero padding in the output. +

                  2. +
                  3. +

                    Any explicit zeros on the main diagonal are always kept in the data + structure.

                  +

                  3.2.13 get_diag — Get main diagonal
                  -

                  call a%get_diag(d,info) -

                  Returns a copy of the main diagonal. +

                  call a%get_diag(d,info) +

                  Returns a copy of the main diagonal.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  + + +

                  -

                  +

                  d

                  -

                  A copy of the main diagonal.

                  A copy of the main diagonal.
                  A one-dimensional array of the appropriate type. - - -

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.14 clip_diag — Cut out main diagonal
                  -

                  call a%clip_diag(b,info) -

                  Returns a copy of a without the main diagonal. +

                  call a%clip_diag(b,info) +

                  Returns a copy of a without the main diagonal.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  b

                  -

                  A copy of a without the main diagonal.

                  A copy of a without the main diagonal.
                  A variable of type psb_Tspmat_type. + + +

                  -

                  +

                  info

                  -

                  Return code.

                  - - - -

                  +

                  Return code. +

                  3.2.15 tril — Return the lower triangle
                  @@ -1870,83 +1879,83 @@ class="description">     call a%tril(l,info[,&        & diag,imin,imax,jmin,jmax,rscale,cscale,u]) -

                  -

                  Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), +

                  +

                  Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1 and returing the complementary upper triangle.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  diag

                  -

                  Include diagonals up to this one; diag=1 means the first superdiagonal, +

                  Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

                  -

                  +

                  imin,imax,jmin,jmax

                  -

                  Minimum and maximum row and column indices.

                  Minimum and maximum row and column indices.
                  Type: optional.

                  -

                  +

                  rscale,cscale

                  -

                  Whether to rescale row/column indices. Type: optional.

                  -

                  +

                  Whether to rescale row/column indices. Type: optional. +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  l

                  -

                  A copy of the lower triangle of a.

                  A copy of the lower triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  u

                  -

                  (optional) A copy of the upper triangle of a.

                  (optional) A copy of the upper triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.16 triu — Return the upper triangle
                  @@ -1956,221 +1965,221 @@ class="description">     call a%triu(u,info[,&        & diag,imin,imax,jmin,jmax,rscale,cscale,l]) -

                  -

                  Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax), +

                  +

                  Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1, and returing the complementary lower triangle.

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  A variable of type psb_Tspmat_type.
                  Scope: local.

                  -

                  +

                  diag

                  -

                  Include diagonals up to this one; diag=1 means the first superdiagonal, +

                  Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

                  -

                  +

                  imin,imax,jmin,jmax

                  -

                  Minimum and maximum row and column indices.

                  Minimum and maximum row and column indices.
                  Type: optional.

                  -

                  +

                  rscale,cscale

                  -

                  Whether to rescale row/column indices. Type: optional.

                  -

                  +

                  Whether to rescale row/column indices. Type: optional. +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  u

                  -

                  A copy of the upper triangle of a.

                  A copy of the upper triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  l

                  -

                  (optional) A copy of the lower triangle of a.

                  (optional) A copy of the lower triangle of a.
                  A variable of type psb_Tspmat_type.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.17 psb_set_mat_default — Set default storage format
                  -

                  call psb_set_mat_default(a) -

                  +

                  call psb_set_mat_default(a) +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  a variable of class(psb_T_base_sparse_mat) requesting a new default +

                  a variable of class(psb_T_base_sparse_mat) requesting a new default storage format.
                  Type: required.

                  -

                  +

                  3.2.18 clone — Clone current object
                  -

                  call a%clone(b,info) -

                  +

                  call a%clone(b,info) +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  a

                  -

                  the sparse matrix.

                  the sparse matrix.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  b

                  -

                  A copy of the input object. +

                  A copy of the input object.

                  -

                  +

                  info

                  -

                  Return code.

                  -

                  +

                  Return code. +

                  3.2.19 Named Constants
                  -

                  +

                  -

                  +

                  psb_dupl_ovwrt_

                  -

                  Duplicate coefficients should be overwritten (i.e. ignore duplications) +

                  Duplicate coefficients should be overwritten (i.e. ignore duplications)

                  -

                  +

                  psb_dupl_add_

                  -

                  Duplicate coefficients should be added; +

                  Duplicate coefficients should be added;

                  -

                  +

                  psb_dupl_err_

                  -

                  Duplicate coefficients should trigger an error conditino +

                  Duplicate coefficients should trigger an error conditino

                  -

                  +

                  psb_upd_dflt_

                  -

                  Default update strategy for matrix coefficients; +

                  Default update strategy for matrix coefficients;

                  -

                  +

                  psb_upd_srch_

                  -

                  Update strategy based on search into the data structure; +

                  Update strategy based on search into the data structure;

                  -

                  +

                  psb_upd_perm_

                  -

                  Update strategy based on additional permutation data (see tools routine +

                  Update strategy based on additional permutation data (see tools routine description).

                  -

                  +

                  3.3 Dense Vector Data Structure

                  -

                  The

                  The psb_T6. Among other simple things, we define here an extraction method that can be used to get a full copy of the part of the vector stored on the local process. -

                  The type declaration is shown in figure 

                  The type declaration is shown in figure 3 where T is a placeholder for the data type and precision variants

                  -

                  +

                  I

                  -

                  Integer; +

                  Integer;

                  -

                  +

                  S

                  -

                  Single precision real; +

                  Single precision real;

                  -

                  +

                  D

                  -

                  Double precision real; +

                  Double precision real;

                  -

                  +

                  C

                  -

                  Single precision complex; +

                  Single precision complex;

                  -

                  +

                  Z

                  -

                  Double precision complex.

                  -

                  The actual data is contained in the polymorphic component v%v; the separation between +

                  Double precision complex. +

                  The actual data is contained in the polymorphic component v%v; the separation between the application and the actual data is essential for cases where it is necessary to link to data storage made available elsewhere outside the direct control of the compiler/application, e.g. data stored in a graphics accelerator’s private memory. -


                  @@ -2237,7 +2246,7 @@ memory.
                  -

                  +

                     type psb_T_base_vect_type
                       TYPE(KIND_), allocatable :: v(:)
                  @@ -2248,7 +2257,7 @@ memory.
                     end type  psb_T_vect_type
                   
                   
                  -

                  +


                  Listing 3: The PSBLAS defined data type that contains a dense vector.
                  @@ -2258,88 +2267,88 @@ class="content"> The PSBLAS defined data type that contains a dense vector.
                  3.3.1 Vector Methods
                  -

                  +

                  3.3.2 get_nrows — Get number of rows in a dense vector
                  -

                  nr = v%get_nrows() -

                  +

                  nr = v%get_nrows() +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  Function value

                  -

                  The number of rows of dense vector v.

                  -

                  +

                  The number of rows of dense vector v. +

                  3.3.3 sizeof — Get memory occupation in bytes of a dense vector
                  -

                  memory_size = v%sizeof() -

                  +

                  memory_size = v%sizeof() +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  Function value

                  -

                  The memory occupation in bytes.

                  -

                  +

                  The memory occupation in bytes. +

                  3.3.4 set — Set contents of the vector
                  @@ -2350,35 +2359,35 @@ class="description">  call  v%set(vect[,first,last])  call  v%zero() -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  alpha

                  -

                  A scalar value.

                  A scalar value.
                  Scope: local
                  Type: in.
                  Specified as: a number of the data type indicated in Table 1.

                  -

                  +

                  first,last

                  -

                  Boundaries for setting in the vector.

                  Boundaries for setting in the vector.
                  Scope: local
                  Type: Intent: in.
                  Specified as: integers.

                  -

                  +

                  vect

                  -

                  An array

                  An array
                  Scope: local
                  Type: Intent: in.
                  Specified as: a number of the data type indicated in Table 1.

                  -

                  Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call +

                  Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call to v%set(zero) with the zero constant having the appropriate type and kind. -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector, with updated entries

                  the dense vector, with updated entries
                  Scope: local

                  -

                  +

                  3.3.5 get_vect — Get a copy of the vector contents
                  @@ -2445,54 +2454,54 @@ class="newline" />
                   extv = v%get_vect([n])
                   
                  -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  v

                  -

                  the dense vector

                  the dense vector
                  Scope: local

                  -

                  +

                  n

                  -

                  Size to be returned

                  Size to be returned
                  Scope: local.
                  Type: optional; default: entire vector.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  Function value

                  -

                  An allocatable array holding a copy of the dense vector contents. If +

                  An allocatable array holding a copy of the dense vector contents. If the argument n is specified, the size of the returned array equals the minimum between n is -

                  +

                  3.3.6 clone — Clone current object
                  @@ -2512,57 +2521,57 @@ class="zplmr7m-">n is
                   call  x%clone(y,info)
                   
                  -

                  -

                  +

                  +

                  -

                  +

                  Type:

                  -

                  Asynchronous. +

                  Asynchronous.

                  -

                  +

                  On Entry

                  -

                  +

                  -

                  +

                  x

                  -

                  the dense vector.

                  the dense vector.
                  Scope: local.

                  -

                  +

                  -

                  +

                  On Return

                  -

                  +

                  -

                  +

                  y

                  -

                  A copy of the input object. +

                  A copy of the input object.

                  -

                  +

                  info

                  -

                  Return code.

                  +

                  Return code.

                  -

                  +

                  3.4 Preconditioner data structure

                  -

                  Our base library offers support for simple well known preconditioners like Diagonal +

                  Our base library offers support for simple well known preconditioners like Diagonal Scaling or Block Jacobi with incomplete factorization ILU(0). -

                  A preconditioner is held in the

                  A preconditioner is held in the psb_Tprec


                  @@ -2583,7 +2592,7 @@ preconditioner.
                  -

                  +

                   
                     type psb_Tprec_type
                  @@ -2591,7 +2600,7 @@ preconditioner.
                     end type psb_Tprec_type
                   
                   
                  -

                  +


                  Listing 4: The PSBLAS defined data type that contains a preconditioner.
                  @@ -2601,70 +2610,70 @@ class="content">The PSBLAS defined data type that contains a preconditioner.

                  3.5 Heap data structure

                  -

                  Among the tools routines of sec. 

                  Among the tools routines of sec. 6, we have a number of sorting utilities; the heap sort is implemented in terms of heaps having the following signatures:

                  -

                  +

                  psb_T_heap

                  -

                  : a heap containing elements of type T, where T can be i,s,c,d,z for +

                  : a heap containing elements of type T, where T can be i,s,c,d,z for integer, real and complex data;

                  -

                  +

                  psb_T_idx_heap

                  -

                  : a heap containing elements of type T, as above, together with an integer +

                  : a heap containing elements of type T, as above, together with an integer index.

                  -

                  Given a heap object, the following methods are defined on it: +

                  Given a heap object, the following methods are defined on it:

                  -

                  +

                  init

                  -

                  Initialize memory; also choose ascending or descending order; +

                  Initialize memory; also choose ascending or descending order;

                  -

                  +

                  howmany

                  -

                  Current heap occupancy; +

                  Current heap occupancy;

                  -

                  +

                  insert

                  -

                  Add an item (or an item and its index); +

                  Add an item (or an item and its index);

                  -

                  +

                  get_first

                  -

                  Remove and return the first element; +

                  Remove and return the first element;

                  -

                  +

                  dump

                  -

                  Print on file; +

                  Print on file;

                  -

                  +

                  free

                  -

                  Release memory.

                  -

                  These objects are used to implement the factorization and approximate inversion +

                  Release memory. +

                  These objects are used to implement the factorization and approximate inversion algorithms. diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf index e17bd863..9bdda6df 100644 --- a/docs/psblas-3.9.pdf +++ b/docs/psblas-3.9.pdf @@ -8316,7 +8316,7 @@ endstream endobj 1079 0 obj << -/Length 4973 +/Length 5078 >> stream 0 g 0 G @@ -8326,7 +8326,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F131 9.9626 Tf 20.922 -19.941 Td [(call)]TJ +/F131 9.9626 Tf 20.922 -18.964 Td [(call)]TJ 0 g 0 G [-525(a%csclip\050b,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8334,7 +8334,7 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 650.299 Tm [(Returns)-212(the)-213(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 212.397 650.299 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.465 650.299 Tm [(,)-221(optionally)-212(r)18(escaling)-212(r)18(ow/-)]TJ 1 0 0 1 99.895 638.344 Tm [(col)-250(indices)-250(to)-250(the)-250(range)]TJ + [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 654.656 Tm [(Returns)-212(the)-213(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 212.397 654.656 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.465 654.656 Tm [(,)-221(optionally)-212(r)18(escaling)-212(r)18(ow/-)]TJ 1 0 0 1 99.895 642.7 Tm [(col)-250(indices)-250(to)-250(the)-250(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG /F131 9.9626 Tf 103.85 0 Td [(1)]TJ 0 g 0 G @@ -8366,76 +8366,84 @@ BT 0 g 0 G /F84 9.9626 Tf 141.219 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -245.069 -21.437 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -245.069 -18.834 Td [(T)90(ype:)]TJ 0 g 0 G /F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.44 -21.942 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.38 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -21.941 Td [(a)]TJ + 0 -19.38 Td [(a)]TJ 0 g 0 G /F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -77.918 -33.897 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -77.918 -31.335 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G /F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F75 9.9626 Tf -24.598 -21.941 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -19.38 Td [(rscale,cscale)]TJ 0 g 0 G /F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F75 9.9626 Tf -59.527 -23.934 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -20.554 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -21.941 Td [(b)]TJ + 0 -19.38 Td [(b)]TJ 0 g 0 G -/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F131 9.9626 Tf 111.322 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -102.714 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F131 9.9626 Tf 111.322 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -102.714 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F75 9.9626 Tf -184.596 -21.941 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -19.38 Td [(info)]TJ 0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -30.008 Td [(3.2.12)-1000(clean)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -26.885 Td [(3.2.12)-1000(clean)]TJ ET q -1 0 0 1 159.153 371.74 cm +1 0 0 1 159.153 400.571 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F75 9.9626 Tf 162.142 371.541 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ +/F75 9.9626 Tf 162.142 400.372 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F131 9.9626 Tf -62.247 -19.941 Td [(call)]TJ +/F131 9.9626 Tf -62.247 -18.964 Td [(call)]TJ 0 g 0 G - [-525(a%clean_zeros\050info\051)]TJ/F84 9.9626 Tf 0.988 0 0 1 114.839 339.141 Tm [(Eliminates)-253(zer)19(o)-253(coef)18(\002cients)-252(in)-253(the)-253(input)-252(matrix.)-314(Note)-252(that)-253(depending)-252(on)-253(the)]TJ 0.998 0 0 1 99.895 327.186 Tm [(internal)-251(storage)-251(format,)-251(ther)18(e)-251(may)-251(still)-251(be)-251(some)-251(amount)-251(of)-251(ze)1(r)18(o)-251(padding)-251(in)-251(the)]TJ 0.98 0 0 1 99.895 315.231 Tm [(output.)-316(Even)-255(after)-255(a)-255(call)-255(to)-255(this)-255(method,)-255(any)-255(explicit)-255(zer)19(os)-255(on)-255(the)-255(main)-255(diagonal)]TJ 1 0 0 1 99.895 303.275 Tm [(ar)18(e)-250(always)-250(kept)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ + [-525(a%clean_zeros\050info\051)]TJ/F84 9.9626 Tf 14.944 -11.955 Td [(Eliminates)-250(zer)18(o)-250(coef)18(\002cients)-250(explicitly)-250(stor)18(ed)-250(in)-250(the)-250(input)-250(matrix.)]TJ 0 g 0 G -/F75 9.9626 Tf 0 -23.933 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -20.554 Td [(T)90(ype:)]TJ 0 g 0 G /F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.44 -21.942 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.38 Td [(On)-250(Entry)]TJ +0 g 0 G 0 g 0 G + 0 -19.38 Td [(a)]TJ 0 g 0 G - 0 -21.941 Td [(a)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ +/F75 9.9626 Tf -77.918 -32.51 Td [(On)-250(Return)]TJ 0 g 0 G -/F75 9.9626 Tf -77.918 -35.385 Td [(On)-250(Return)]TJ 0 g 0 G + 0 -19.379 Td [(a)]TJ 0 g 0 G - 0 -21.941 Td [(a)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(matrix)]TJ/F131 9.9626 Tf 50.66 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.517 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F84 9.9626 Tf 9.654 0 Td [(The)-250(matrix)]TJ/F131 9.9626 Tf 50.66 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.517 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ +/F75 9.9626 Tf -184.596 -19.38 Td [(info)]TJ 0 g 0 G -/F75 9.9626 Tf -184.596 -21.941 Td [(info)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -20.554 Td [(Notes)]TJ 0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ +/F84 9.9626 Tf 12.454 -18.834 Td [(1.)]TJ 0 g 0 G - 143.074 -29.888 Td [(21)]TJ + 0.98 0 0 1 124.802 163.616 Tm [(Depending)-242(on)-243(the)-242(internal)-243(storage)-242(format,)-245(ther)18(e)-242(may)-243(still)-242(be)-243(some)-242(amount)]TJ 1 0 0 1 124.802 151.661 Tm [(of)-250(zer)18(o)-250(padding)-250(in)-250(the)-250(output.)]TJ +0 g 0 G + -12.453 -19.38 Td [(2.)]TJ +0 g 0 G + 1.02 0 0 1 124.413 132.281 Tm [(Any)-388(explicit)-389(zer)18(os)-389(on)-388(the)-389(main)-388(diagonal)-388(ar)17(e)-388(always)-389(kept)-388(in)-389(t)1(he)-389(data)]TJ 1 0 0 1 124.802 120.326 Tm [(str)8(uctur)18(e.)]TJ +0 g 0 G + 141.968 -29.888 Td [(21)]TJ 0 g 0 G ET endstream endobj -1083 0 obj +1085 0 obj << /Length 4703 >> @@ -8566,7 +8574,7 @@ ET endstream endobj -1087 0 obj +1089 0 obj << /Length 6539 >> @@ -8720,7 +8728,7 @@ ET endstream endobj -1093 0 obj +1095 0 obj << /Length 7927 >> @@ -9003,7 +9011,7 @@ ET endstream endobj -1099 0 obj +1101 0 obj << /Length 5165 >> @@ -9163,7 +9171,7 @@ ET endstream endobj -1106 0 obj +1108 0 obj << /Length 3987 >> @@ -9245,7 +9253,7 @@ ET endstream endobj -1113 0 obj +1115 0 obj << /Length 4800 >> @@ -9336,7 +9344,7 @@ ET endstream endobj -1119 0 obj +1121 0 obj << /Length 4371 >> @@ -9473,7 +9481,7 @@ ET endstream endobj -1123 0 obj +1125 0 obj << /Length 158 >> @@ -9489,7 +9497,7 @@ ET endstream endobj -1134 0 obj +1136 0 obj << /Length 7649 >> @@ -9688,7 +9696,7 @@ ET endstream endobj -1141 0 obj +1143 0 obj << /Length 2434 >> @@ -9762,7 +9770,7 @@ ET endstream endobj -1151 0 obj +1153 0 obj << /Length 7835 >> @@ -9956,120 +9964,6 @@ BT 0 g 0 G ET -endstream -endobj -1157 0 obj -<< -/Length 4450 ->> -stream -0 g 0 G -0 g 0 G -BT -/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.true.)]TJ -0 g 0 G -/F75 9.9626 Tf -190.225 -31.881 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(Function)-250(value)]TJ -0 g 0 G -/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F78 9.9626 Tf 126.33 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ 0.98 0 0 1 124.802 630.413 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 155.612 630.413 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 186.2 630.413 Tm [(unless)-244(the)-244(optional)-244(variab)1(le)]TJ/F131 9.9626 Tf 1 0 0 1 307.484 630.413 Tm [(global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 383.09 630.413 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 124.802 618.458 Tm [(i\002ed)]TJ 0 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(2)]TJ -0 g 0 G - [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ -0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ -0 g 0 G -/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ -0 g 0 G - 0.98 0 0 1 124.493 496.913 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)18(es)-200(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 124.802 484.958 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-264(be)-265(necessary)-265(and/or)-265(advisable)-265(to)]TJ 0.98 0 0 1 124.802 473.003 Tm [(compute)-256(multiple)-256(dot)-256(pr)18(oducts)-256(at)-256(the)-256(same)-256(time;)-257(in)-256(this)-256(case,)-256(it)-256(is)-256(possible)]TJ 1 0 0 1 124.802 461.048 Tm [(to)-250(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -/F131 9.9626 Tf 52.303 -19.925 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(1)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_gedot\050x1,y1,desc_a,info,global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 0 -11.956 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(2)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_gedot\050x2,y2,desc_a,info,global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 0 -11.955 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(3)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_gedot\050x3,y3,desc_a,info,global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -11.955 Td [(call)]TJ -0 g 0 G - [-525(psb_sum\050ctxt,vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(1)]TJ -0 g 0 G - [(:)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(3)]TJ -0 g 0 G - [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 124.802 385.332 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(laten)1(cy-)]TJ 1 0 0 1 124.802 373.377 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ -0 g 0 G - 141.968 -282.939 Td [(33)]TJ -0 g 0 G -ET - endstream endobj 1067 0 obj @@ -10077,19 +9971,19 @@ endobj /Type /ObjStm /N 100 /First 955 -/Length 10453 +/Length 10284 >> stream 119 0 1066 58 123 117 1062 174 1069 269 1071 387 127 445 131 502 135 559 1068 616 -1074 711 1076 829 139 888 143 946 1073 1004 1078 1099 1080 1217 147 1275 151 1332 1077 1389 -1082 1484 1084 1602 155 1661 159 1719 163 1777 1081 1835 1086 1930 1088 2048 167 2106 1085 2162 -1092 2257 1089 2405 1090 2551 1094 2699 171 2758 175 2816 179 2873 183 2930 1095 2988 1091 3047 -1098 3142 1100 3260 1096 3318 187 3376 191 3433 195 3490 1097 3547 1105 3657 1102 3805 1103 3951 -1107 4096 199 4155 1104 4213 1112 4308 1109 4447 1114 4595 204 4653 208 4710 212 4766 1115 4823 -1111 4881 1118 4989 1110 5128 1120 5275 1116 5334 216 5393 1117 5451 1122 5561 1124 5679 220 5737 -1121 5794 1133 5875 1125 6059 1126 6205 1127 6349 1128 6495 1129 6641 1130 6785 1135 6930 224 6989 -1108 7047 1132 7106 1140 7257 1131 7414 1137 7561 1138 7705 1142 7851 1139 7909 1150 8017 1144 8192 -1145 8333 1146 8479 1147 8623 1148 8768 1152 8915 228 8974 1153 9032 1149 9091 1156 9213 1154 9352 +1074 711 1076 829 139 888 143 946 1073 1004 1078 1099 1080 1217 147 1275 151 1332 1081 1389 +1082 1447 1077 1505 1084 1600 1086 1718 155 1777 159 1835 163 1893 1083 1951 1088 2046 1090 2164 +167 2222 1087 2278 1094 2373 1091 2521 1092 2667 1096 2815 171 2874 175 2932 179 2989 183 3046 +1097 3104 1093 3163 1100 3258 1102 3376 1098 3434 187 3492 191 3549 195 3606 1099 3663 1107 3773 +1104 3921 1105 4067 1109 4212 199 4271 1106 4329 1114 4424 1111 4563 1116 4711 204 4769 208 4826 +212 4882 1117 4939 1113 4997 1120 5105 1112 5244 1122 5391 1118 5450 216 5509 1119 5567 1124 5677 +1126 5795 220 5853 1123 5910 1135 5991 1127 6175 1128 6321 1129 6465 1130 6611 1131 6757 1132 6901 +1137 7046 224 7105 1110 7163 1134 7222 1142 7373 1133 7530 1139 7677 1140 7821 1144 7967 1141 8025 +1152 8133 1146 8308 1147 8449 1148 8595 1149 8739 1150 8884 1154 9031 228 9090 1155 9148 1151 9207 % 119 0 obj << /D [1063 0 R /XYZ 150.705 540.892 null] @@ -10179,73 +10073,81 @@ stream >> % 151 0 obj << -/D [1078 0 R /XYZ 99.895 383.821 null] +/D [1078 0 R /XYZ 99.895 412.148 null] +>> +% 1081 0 obj +<< +/D [1078 0 R /XYZ 99.895 179.104 null] +>> +% 1082 0 obj +<< +/D [1078 0 R /XYZ 99.895 145.139 null] >> % 1077 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1082 0 obj +% 1084 0 obj << /Type /Page -/Contents 1083 0 R -/Resources 1081 0 R +/Contents 1085 0 R +/Resources 1083 0 R /MediaBox [0 0 595.276 841.89] /Parent 1072 0 R >> -% 1084 0 obj +% 1086 0 obj << -/D [1082 0 R /XYZ 149.705 753.953 null] +/D [1084 0 R /XYZ 149.705 753.953 null] >> % 155 0 obj << -/D [1082 0 R /XYZ 150.705 716.092 null] +/D [1084 0 R /XYZ 150.705 716.092 null] >> % 159 0 obj << -/D [1082 0 R /XYZ 150.705 484.709 null] +/D [1084 0 R /XYZ 150.705 484.709 null] >> % 163 0 obj << -/D [1082 0 R /XYZ 150.705 251.325 null] +/D [1084 0 R /XYZ 150.705 251.325 null] >> -% 1081 0 obj +% 1083 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1086 0 obj +% 1088 0 obj << /Type /Page -/Contents 1087 0 R -/Resources 1085 0 R +/Contents 1089 0 R +/Resources 1087 0 R /MediaBox [0 0 595.276 841.89] /Parent 1072 0 R >> -% 1088 0 obj +% 1090 0 obj << -/D [1086 0 R /XYZ 98.895 753.953 null] +/D [1088 0 R /XYZ 98.895 753.953 null] >> % 167 0 obj << -/D [1086 0 R /XYZ 99.895 476.15 null] +/D [1088 0 R /XYZ 99.895 476.15 null] >> -% 1085 0 obj +% 1087 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1092 0 obj +% 1094 0 obj << /Type /Page -/Contents 1093 0 R -/Resources 1091 0 R +/Contents 1095 0 R +/Resources 1093 0 R /MediaBox [0 0 595.276 841.89] /Parent 1072 0 R -/Annots [ 1089 0 R 1090 0 R ] +/Annots [ 1091 0 R 1092 0 R ] >> -% 1089 0 obj +% 1091 0 obj << /Type /Annot /Subtype /Link @@ -10253,7 +10155,7 @@ stream /Rect [233.882 164.341 240.826 176.4] /A << /S /GoTo /D (section.6) >> >> -% 1090 0 obj +% 1092 0 obj << /Type /Annot /Subtype /Link @@ -10261,78 +10163,78 @@ stream /Rect [343.853 128.475 350.927 140.535] /A << /S /GoTo /D (listing.3) >> >> -% 1094 0 obj +% 1096 0 obj << -/D [1092 0 R /XYZ 149.705 753.953 null] +/D [1094 0 R /XYZ 149.705 753.953 null] >> % 171 0 obj << -/D [1092 0 R /XYZ 150.705 716.092 null] +/D [1094 0 R /XYZ 150.705 716.092 null] >> % 175 0 obj << -/D [1092 0 R /XYZ 150.705 586.94 null] +/D [1094 0 R /XYZ 150.705 586.94 null] >> % 179 0 obj << -/D [1092 0 R /XYZ 150.705 402.59 null] +/D [1094 0 R /XYZ 150.705 402.59 null] >> % 183 0 obj << -/D [1092 0 R /XYZ 150.705 234.114 null] +/D [1094 0 R /XYZ 150.705 234.114 null] >> -% 1095 0 obj +% 1097 0 obj << -/D [1092 0 R /XYZ 170.422 204.012 null] +/D [1094 0 R /XYZ 170.422 204.012 null] >> -% 1091 0 obj +% 1093 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1098 0 obj +% 1100 0 obj << /Type /Page -/Contents 1099 0 R -/Resources 1097 0 R +/Contents 1101 0 R +/Resources 1099 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1101 0 R +/Parent 1103 0 R >> -% 1100 0 obj +% 1102 0 obj << -/D [1098 0 R /XYZ 98.895 753.953 null] +/D [1100 0 R /XYZ 98.895 753.953 null] >> -% 1096 0 obj +% 1098 0 obj << -/D [1098 0 R /XYZ 99.895 446.997 null] +/D [1100 0 R /XYZ 99.895 446.997 null] >> % 187 0 obj << -/D [1098 0 R /XYZ 99.895 387.147 null] +/D [1100 0 R /XYZ 99.895 387.147 null] >> % 191 0 obj << -/D [1098 0 R /XYZ 99.895 370.604 null] +/D [1100 0 R /XYZ 99.895 370.604 null] >> % 195 0 obj << -/D [1098 0 R /XYZ 99.895 194.093 null] +/D [1100 0 R /XYZ 99.895 194.093 null] >> -% 1097 0 obj +% 1099 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1105 0 obj +% 1107 0 obj << /Type /Page -/Contents 1106 0 R -/Resources 1104 0 R +/Contents 1108 0 R +/Resources 1106 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1101 0 R -/Annots [ 1102 0 R 1103 0 R ] +/Parent 1103 0 R +/Annots [ 1104 0 R 1105 0 R ] >> -% 1102 0 obj +% 1104 0 obj << /Type /Annot /Subtype /Link @@ -10340,7 +10242,7 @@ stream /Rect [428.968 383.557 435.942 395.616] /A << /S /GoTo /D (table.1) >> >> -% 1103 0 obj +% 1105 0 obj << /Type /Annot /Subtype /Link @@ -10348,29 +10250,29 @@ stream /Rect [428.968 240.08 435.942 252.139] /A << /S /GoTo /D (table.1) >> >> -% 1107 0 obj +% 1109 0 obj << -/D [1105 0 R /XYZ 149.705 753.953 null] +/D [1107 0 R /XYZ 149.705 753.953 null] >> % 199 0 obj << -/D [1105 0 R /XYZ 150.705 610.712 null] +/D [1107 0 R /XYZ 150.705 610.712 null] >> -% 1104 0 obj +% 1106 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1112 0 obj +% 1114 0 obj << /Type /Page -/Contents 1113 0 R -/Resources 1111 0 R +/Contents 1115 0 R +/Resources 1113 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1101 0 R -/Annots [ 1109 0 R ] +/Parent 1103 0 R +/Annots [ 1111 0 R ] >> -% 1109 0 obj +% 1111 0 obj << /Type /Annot /Subtype /Link @@ -10378,41 +10280,41 @@ stream /Rect [127.344 152.385 134.288 164.445] /A << /S /GoTo /D (listing.4) >> >> -% 1114 0 obj +% 1116 0 obj << -/D [1112 0 R /XYZ 98.895 753.953 null] +/D [1114 0 R /XYZ 98.895 753.953 null] >> % 204 0 obj << -/D [1112 0 R /XYZ 99.895 716.092 null] +/D [1114 0 R /XYZ 99.895 716.092 null] >> % 208 0 obj << -/D [1112 0 R /XYZ 99.895 430.41 null] +/D [1114 0 R /XYZ 99.895 430.41 null] >> % 212 0 obj << -/D [1112 0 R /XYZ 99.895 226.203 null] +/D [1114 0 R /XYZ 99.895 226.203 null] >> -% 1115 0 obj +% 1117 0 obj << -/D [1112 0 R /XYZ 255.19 168.146 null] +/D [1114 0 R /XYZ 255.19 168.146 null] >> -% 1111 0 obj +% 1113 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1118 0 obj +% 1120 0 obj << /Type /Page -/Contents 1119 0 R -/Resources 1117 0 R +/Contents 1121 0 R +/Resources 1119 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1101 0 R -/Annots [ 1110 0 R ] +/Parent 1103 0 R +/Annots [ 1112 0 R ] >> -% 1110 0 obj +% 1112 0 obj << /Type /Annot /Subtype /Link @@ -10420,54 +10322,54 @@ stream /Rect [297.376 580.64 304.449 592.699] /A << /S /GoTo /D (section.6) >> >> -% 1120 0 obj +% 1122 0 obj << -/D [1118 0 R /XYZ 149.705 753.953 null] +/D [1120 0 R /XYZ 149.705 753.953 null] >> -% 1116 0 obj +% 1118 0 obj << -/D [1118 0 R /XYZ 150.705 665.282 null] +/D [1120 0 R /XYZ 150.705 665.282 null] >> % 216 0 obj << -/D [1118 0 R /XYZ 150.705 613.372 null] +/D [1120 0 R /XYZ 150.705 613.372 null] >> -% 1117 0 obj +% 1119 0 obj << /Font << /F231 1025 0 R /F84 675 0 R /F75 673 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1122 0 obj +% 1124 0 obj << /Type /Page -/Contents 1123 0 R -/Resources 1121 0 R +/Contents 1125 0 R +/Resources 1123 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1101 0 R +/Parent 1103 0 R >> -% 1124 0 obj +% 1126 0 obj << -/D [1122 0 R /XYZ 98.895 753.953 null] +/D [1124 0 R /XYZ 98.895 753.953 null] >> % 220 0 obj << -/D [1122 0 R /XYZ 99.895 716.092 null] +/D [1124 0 R /XYZ 99.895 716.092 null] >> -% 1121 0 obj +% 1123 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1133 0 obj +% 1135 0 obj << /Type /Page -/Contents 1134 0 R -/Resources 1132 0 R +/Contents 1136 0 R +/Resources 1134 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1101 0 R -/Annots [ 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R ] +/Parent 1103 0 R +/Annots [ 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R ] >> -% 1125 0 obj +% 1127 0 obj << /Type /Annot /Subtype /Link @@ -10475,7 +10377,7 @@ stream /Rect [428.968 413.274 435.942 425.334] /A << /S /GoTo /D (table.1) >> >> -% 1126 0 obj +% 1128 0 obj << /Type /Annot /Subtype /Link @@ -10483,7 +10385,7 @@ stream /Rect [419.358 345.063 495.412 357.123] /A << /S /GoTo /D (vdata) >> >> -% 1127 0 obj +% 1129 0 obj << /Type /Annot /Subtype /Link @@ -10491,7 +10393,7 @@ stream /Rect [382.942 333.108 390.016 345.168] /A << /S /GoTo /D (table.1) >> >> -% 1128 0 obj +% 1130 0 obj << /Type /Annot /Subtype /Link @@ -10499,7 +10401,7 @@ stream /Rect [428.968 252.942 435.942 265.002] /A << /S /GoTo /D (table.1) >> >> -% 1129 0 obj +% 1131 0 obj << /Type /Annot /Subtype /Link @@ -10507,7 +10409,7 @@ stream /Rect [419.358 184.731 495.412 196.791] /A << /S /GoTo /D (vdata) >> >> -% 1130 0 obj +% 1132 0 obj << /Type /Annot /Subtype /Link @@ -10515,33 +10417,33 @@ stream /Rect [398.626 172.776 405.67 184.835] /A << /S /GoTo /D (table.1) >> >> -% 1135 0 obj +% 1137 0 obj << -/D [1133 0 R /XYZ 149.705 753.953 null] +/D [1135 0 R /XYZ 149.705 753.953 null] >> % 224 0 obj << -/D [1133 0 R /XYZ 150.705 716.092 null] +/D [1135 0 R /XYZ 150.705 716.092 null] >> -% 1108 0 obj +% 1110 0 obj << -/D [1133 0 R /XYZ 150.705 558.947 null] +/D [1135 0 R /XYZ 150.705 558.947 null] >> -% 1132 0 obj +% 1134 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F181 923 0 R /F131 921 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1140 0 obj +% 1142 0 obj << /Type /Page -/Contents 1141 0 R -/Resources 1139 0 R +/Contents 1143 0 R +/Resources 1141 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1143 0 R -/Annots [ 1131 0 R 1137 0 R 1138 0 R ] +/Parent 1145 0 R +/Annots [ 1133 0 R 1139 0 R 1140 0 R ] >> -% 1131 0 obj +% 1133 0 obj << /Type /Annot /Subtype /Link @@ -10549,7 +10451,7 @@ stream /Rect [256.048 690.368 323.106 702.428] /A << /S /GoTo /D (descdata) >> >> -% 1137 0 obj +% 1139 0 obj << /Type /Annot /Subtype /Link @@ -10557,7 +10459,7 @@ stream /Rect [368.549 600.704 444.603 612.764] /A << /S /GoTo /D (vdata) >> >> -% 1138 0 obj +% 1140 0 obj << /Type /Annot /Subtype /Link @@ -10565,25 +10467,25 @@ stream /Rect [344.963 588.749 351.937 600.809] /A << /S /GoTo /D (table.1) >> >> -% 1142 0 obj +% 1144 0 obj << -/D [1140 0 R /XYZ 98.895 753.953 null] +/D [1142 0 R /XYZ 98.895 753.953 null] >> -% 1139 0 obj +% 1141 0 obj << /Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1150 0 obj +% 1152 0 obj << /Type /Page -/Contents 1151 0 R -/Resources 1149 0 R +/Contents 1153 0 R +/Resources 1151 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1143 0 R -/Annots [ 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R ] +/Parent 1145 0 R +/Annots [ 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R ] >> -% 1144 0 obj +% 1146 0 obj << /Type /Annot /Subtype /Link @@ -10591,7 +10493,7 @@ stream /Rect [419.358 355.7 495.412 367.76] /A << /S /GoTo /D (vdata) >> >> -% 1145 0 obj +% 1147 0 obj << /Type /Annot /Subtype /Link @@ -10599,7 +10501,7 @@ stream /Rect [382.942 343.745 390.016 355.804] /A << /S /GoTo /D (table.2) >> >> -% 1146 0 obj +% 1148 0 obj << /Type /Annot /Subtype /Link @@ -10607,7 +10509,7 @@ stream /Rect [419.358 264.018 495.412 276.078] /A << /S /GoTo /D (vdata) >> >> -% 1147 0 obj +% 1149 0 obj << /Type /Annot /Subtype /Link @@ -10615,7 +10517,7 @@ stream /Rect [373.146 252.063 380.02 264.123] /A << /S /GoTo /D (table.2) >> >> -% 1148 0 obj +% 1150 0 obj << /Type /Annot /Subtype /Link @@ -10623,65 +10525,162 @@ stream /Rect [306.858 172.336 373.916 184.396] /A << /S /GoTo /D (descdata) >> >> -% 1152 0 obj +% 1154 0 obj << -/D [1150 0 R /XYZ 149.705 753.953 null] +/D [1152 0 R /XYZ 149.705 753.953 null] >> % 228 0 obj << -/D [1150 0 R /XYZ 150.705 716.092 null] +/D [1152 0 R /XYZ 150.705 716.092 null] >> -% 1153 0 obj +% 1155 0 obj << -/D [1150 0 R /XYZ 150.705 499.951 null] +/D [1152 0 R /XYZ 150.705 499.951 null] >> -% 1149 0 obj +% 1151 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1156 0 obj -<< -/Type /Page -/Contents 1157 0 R -/Resources 1155 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1143 0 R -/Annots [ 1154 0 R ] ->> -% 1154 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.159 602.697 385.133 614.756] -/A << /S /GoTo /D (table.2) >> ->> endstream endobj -1169 0 obj +1159 0 obj << -/Length 8898 +/Length 4450 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ -ET -q -1 0 0 1 198.238 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F75 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F84 9.9626 Tf 1.014 0 0 1 150.396 687.165 Tm [(This)-246(subr)17(outine)-246(computes)-246(a)-247(se)1(ries)-247(of)-246(dot)-246(pr)17(oducts)-246(among)-246(the)-247(columns)-246(of)-246(two)]TJ 1 0 0 1 150.705 675.21 Tm [(dense)-250(matrices)]TJ/F78 9.9626 Tf 68.208 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(:)]TJ/F78 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F78 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F78 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F181 10.3811 Tf 5.23 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.705 645.233 Tm [(If)-240(the)-240(matrices)-240(ar)19(e)-240(complex,)-243(then)-240(the)-240(usual)-239(convention)-240(applies,)-243(i.e.)-311(the)-240(conjugate)]TJ 1.007 0 0 1 150.705 633.278 Tm [(transpose)-249(of)]TJ/F78 9.9626 Tf 1 0 0 1 207.714 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 215.413 633.278 Tm [(is)-249(used.)-309(If)]TJ/F78 9.9626 Tf 1 0 0 1 261.437 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 269.136 633.278 Tm [(and)]TJ/F78 9.9626 Tf 1 0 0 1 288.74 633.278 Tm [(y)]TJ/F84 9.9626 Tf 1.007 0 0 1 296.34 633.278 Tm [(ar)18(e)-249(of)-248(rank)-249(one,)-249(then)]TJ/F78 9.9626 Tf 1 0 0 1 390.04 633.278 Tm [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf 1.007 0 0 1 404.704 633.278 Tm [(is)-249(a)-248(scalar)73(,)-248(else)-249(it)-249(is)-248(a)]TJ 1 0 0 1 150.705 621.323 Tm [(rank)-250(one)-250(array)111(.)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F131 9.9626 Tf 20.174 -11.955 Td [(call)]TJ + [(.true.)]TJ 0 g 0 G - [-525(psb_gedots\050res,)]TJ +/F75 9.9626 Tf -190.225 -31.881 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F78 9.9626 Tf 126.33 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ 0.98 0 0 1 124.802 630.413 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 155.612 630.413 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 186.2 630.413 Tm [(unless)-244(the)-244(optional)-244(variab)1(le)]TJ/F131 9.9626 Tf 1 0 0 1 307.484 630.413 Tm [(global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 383.09 630.413 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 124.802 618.458 Tm [(i\002ed)]TJ 0 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(2)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ +0 g 0 G + 0.98 0 0 1 124.493 496.913 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)18(es)-200(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 124.802 484.958 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-264(be)-265(necessary)-265(and/or)-265(advisable)-265(to)]TJ 0.98 0 0 1 124.802 473.003 Tm [(compute)-256(multiple)-256(dot)-256(pr)18(oducts)-256(at)-256(the)-256(same)-256(time;)-257(in)-256(this)-256(case,)-256(it)-256(is)-256(possible)]TJ 1 0 0 1 124.802 461.048 Tm [(to)-250(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +/F131 9.9626 Tf 52.303 -19.925 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(1)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_gedot\050x1,y1,desc_a,info,global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(.false.\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 0 -11.956 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(2)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_gedot\050x2,y2,desc_a,info,global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(.false.\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 0 -11.955 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(3)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_gedot\050x3,y3,desc_a,info,global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(.false.\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -11.955 Td [(call)]TJ +0 g 0 G + [-525(psb_sum\050ctxt,vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(1)]TJ +0 g 0 G + [(:)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(3)]TJ +0 g 0 G + [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 124.802 385.332 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(laten)1(cy-)]TJ 1 0 0 1 124.802 373.377 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ +0 g 0 G + 141.968 -282.939 Td [(33)]TJ +0 g 0 G +ET + +endstream +endobj +1171 0 obj +<< +/Length 8898 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ +ET +q +1 0 0 1 198.238 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F84 9.9626 Tf 1.014 0 0 1 150.396 687.165 Tm [(This)-246(subr)17(outine)-246(computes)-246(a)-247(se)1(ries)-247(of)-246(dot)-246(pr)17(oducts)-246(among)-246(the)-247(columns)-246(of)-246(two)]TJ 1 0 0 1 150.705 675.21 Tm [(dense)-250(matrices)]TJ/F78 9.9626 Tf 68.208 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(:)]TJ/F78 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F78 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F78 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F181 10.3811 Tf 5.23 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.705 645.233 Tm [(If)-240(the)-240(matrices)-240(ar)19(e)-240(complex,)-243(then)-240(the)-240(usual)-239(convention)-240(applies,)-243(i.e.)-311(the)-240(conjugate)]TJ 1.007 0 0 1 150.705 633.278 Tm [(transpose)-249(of)]TJ/F78 9.9626 Tf 1 0 0 1 207.714 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 215.413 633.278 Tm [(is)-249(used.)-309(If)]TJ/F78 9.9626 Tf 1 0 0 1 261.437 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 269.136 633.278 Tm [(and)]TJ/F78 9.9626 Tf 1 0 0 1 288.74 633.278 Tm [(y)]TJ/F84 9.9626 Tf 1.007 0 0 1 296.34 633.278 Tm [(ar)18(e)-249(of)-248(rank)-249(one,)-249(then)]TJ/F78 9.9626 Tf 1 0 0 1 390.04 633.278 Tm [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf 1.007 0 0 1 404.704 633.278 Tm [(is)-249(a)-248(scalar)73(,)-248(else)-249(it)-249(is)-248(a)]TJ 1 0 0 1 150.705 621.323 Tm [(rank)-250(one)-250(array)111(.)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 20.174 -11.955 Td [(call)]TJ +0 g 0 G + [-525(psb_gedots\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(x,)]TJ @@ -10869,7 +10868,7 @@ ET endstream endobj -1174 0 obj +1176 0 obj << /Length 582 >> @@ -10888,7 +10887,7 @@ ET endstream endobj -1181 0 obj +1183 0 obj << /Length 7939 >> @@ -11072,7 +11071,7 @@ ET endstream endobj -1186 0 obj +1188 0 obj << /Length 3133 >> @@ -11166,7 +11165,7 @@ ET endstream endobj -1195 0 obj +1197 0 obj << /Length 6489 >> @@ -11339,7 +11338,7 @@ ET endstream endobj -1203 0 obj +1205 0 obj << /Length 7563 >> @@ -11523,7 +11522,7 @@ ET endstream endobj -1208 0 obj +1210 0 obj << /Length 3137 >> @@ -11617,7 +11616,7 @@ ET endstream endobj -1216 0 obj +1218 0 obj << /Length 7600 >> @@ -11786,7 +11785,7 @@ ET endstream endobj -1221 0 obj +1223 0 obj << /Length 581 >> @@ -11805,7 +11804,7 @@ ET endstream endobj -1228 0 obj +1230 0 obj << /Length 6751 >> @@ -11996,7 +11995,7 @@ ET endstream endobj -1234 0 obj +1236 0 obj << /Length 4508 >> @@ -12079,7 +12078,7 @@ ET endstream endobj -1247 0 obj +1249 0 obj << /Length 6303 >> @@ -12252,7 +12251,7 @@ ET endstream endobj -1254 0 obj +1256 0 obj << /Length 5390 >> @@ -12406,7 +12405,7 @@ ET endstream endobj -1261 0 obj +1263 0 obj << /Length 5413 >> @@ -12560,270 +12559,64 @@ ET endstream endobj -1272 0 obj +1162 0 obj << -/Length 8070 +/Type /ObjStm +/N 100 +/First 984 +/Length 11423 +>> +stream +1158 0 1156 139 1160 285 1161 343 1157 401 1170 509 1163 693 1164 837 1165 983 1166 1127 +1167 1272 1168 1419 1172 1563 232 1622 1173 1680 1169 1738 1175 1874 1177 1992 1174 2050 1182 2131 +1178 2288 1179 2432 1180 2578 1184 2725 236 2784 1185 2842 1181 2901 1187 3037 1189 3155 1190 3213 +1186 3270 1196 3365 1192 3522 1193 3666 1194 3812 1198 3959 240 4018 1199 4076 1195 4135 1204 4271 +1200 4428 1201 4572 1202 4715 1206 4862 244 4920 1207 4977 1203 5034 1209 5170 1211 5288 1212 5347 +1208 5405 1217 5500 1213 5657 1214 5801 1215 5947 1219 6094 248 6152 1220 6209 1216 6267 1222 6403 +1224 6521 1221 6580 1229 6661 1225 6818 1226 6961 1227 7107 1231 7254 252 7312 1232 7369 1228 7426 +1235 7548 1237 7666 1238 7725 1239 7784 1240 7843 1241 7902 1242 7961 1243 8020 1234 8079 1248 8187 +1244 8344 1245 8488 1246 8634 1250 8781 256 8839 1251 8896 1247 8954 1255 9090 1252 9238 1253 9383 +1257 9530 260 9589 1258 9647 1254 9705 1262 9827 1259 9975 1260 10120 1264 10267 264 10325 1266 10382 +% 1158 0 obj +<< +/Type /Page +/Contents 1159 0 R +/Resources 1157 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1145 0 R +/Annots [ 1156 0 R ] >> -stream -0 g 0 G -0 g 0 G -BT -/F75 11.9552 Tf 150.705 706.129 Td [(4.12)-1000(psb)]TJ -ET -q -1 0 0 1 204.216 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F75 11.9552 Tf 207.803 706.129 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Product)]TJ/F84 9.9626 Tf -57.407 -19.303 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct:)]TJ/F78 9.9626 Tf 140.456 -24.611 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)-42(x)]TJ/F181 10.3811 Tf 14.878 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -0 g 0 G -/F84 9.9626 Tf 134.509 0 Td [(\0501\051)]TJ -0 g 0 G -/F78 9.9626 Tf -195.741 -20.13 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.398 0 Td [(a)]TJ/F78 9.9626 Tf 6.007 0 Td [(A)]TJ/F78 7.5716 Tf 7.511 4.115 Td [(T)]TJ/F78 9.9626 Tf 5.694 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -0 g 0 G -/F84 9.9626 Tf 131.712 0 Td [(\0502\051)]TJ -0 g 0 G -/F78 9.9626 Tf -196.479 -20.129 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)]TJ/F78 7.5716 Tf 7.7 4.114 Td [(H)]TJ/F78 9.9626 Tf 6.981 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -0 g 0 G -/F84 9.9626 Tf 130.974 0 Td [(\0503\051)]TJ -0 g 0 G - -318.147 -18.633 Td [(wher)18(e:)]TJ -0 g 0 G -/F78 9.9626 Tf -14.65 -20.451 Td [(x)]TJ -0 g 0 G -/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.61 0 Td [(x)]TJ/F84 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ -0 g 0 G -/F78 9.9626 Tf -131.167 -19.132 Td [(y)]TJ -0 g 0 G -/F84 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.441 0 Td [(y)]TJ/F84 7.5716 Tf 5.2 -1.494 Td [(:)-13(,)-12(:)]TJ -0 g 0 G -/F78 9.9626 Tf -130.23 -19.131 Td [(A)]TJ -0 g 0 G -/F84 9.9626 Tf 12.299 0 Td [(is)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 118.41 0 Td [(A)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -ET -q -1 0 0 1 230.392 517.986 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -BT -/F78 9.9626 Tf 236.992 509.418 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(,)]TJ/F133 9.9626 Tf 5.106 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 76.437 0 Td [(Subroutine)]TJ -ET -q -1 0 0 1 230.392 505.633 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -BT -/F84 9.9626 Tf 236.369 497.065 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ -ET -q -1 0 0 1 373.603 497.264 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F84 9.9626 Tf 376.592 497.065 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ -ET -q -1 0 0 1 373.603 485.309 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F84 9.9626 Tf 376.592 485.11 Td [(spmm)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ -ET -q -1 0 0 1 373.603 473.354 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F84 9.9626 Tf 376.592 473.154 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ -ET -q -1 0 0 1 373.603 461.398 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F84 9.9626 Tf 376.592 461.199 Td [(spmm)]TJ -ET -q -1 0 0 1 230.392 457.413 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -0 g 0 G -BT -/F84 9.9626 Tf 278.277 429.035 Td [(T)92(able)-250(12:)-310(Data)-250(types)]TJ -0 g 0 G -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F131 9.9626 Tf -107.398 -24.261 Td [(call)]TJ -0 g 0 G - [-525(psb_spmm\050alpha,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(beta,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(y,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(info\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.944 -11.955 Td [(call)]TJ -0 g 0 G - [-525(psb_spmm\050alpha,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(beta,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(y,desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(info,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(trans,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(work\051)]TJ -0 g 0 G -/F75 9.9626 Tf -5.23 -22.618 Td [(T)90(ype:)]TJ -0 g 0 G -/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F75 9.9626 Tf -29.828 -20.626 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -20.626 Td [(alpha)]TJ -0 g 0 G -/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(12)]TJ -0 g 0 G - [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -24.907 -20.626 Td [(a)]TJ -0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 164.964 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -157.337 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 132.242 0 Td [(psb)]TJ -ET -q -1 0 0 1 324.173 212.882 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 327.311 212.682 Td [(Tspmat)]TJ -ET -q -1 0 0 1 359.321 212.882 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 362.459 212.682 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -232.675 -20.625 Td [(x)]TJ -0 g 0 G -/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 144.236 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 1 0 0 1 420.354 144.236 Tm [(psb)]TJ -ET -q -1 0 0 1 436.673 144.435 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 439.811 144.236 Td [(T)]TJ -ET -q -1 0 0 1 445.669 144.435 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 448.807 144.236 Td [(vect)]TJ -ET -q -1 0 0 1 470.356 144.435 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 473.495 144.236 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 1.015 0 0 1 175.611 132.281 Tm [(containing)-247(numbers)-246(of)-247(type)-247(speci\002ed)-246(in)-247(T)90(able)]TJ -0 0 1 rg 0 0 1 RG - [-246(12)]TJ -0 g 0 G - [(.)-307(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 451.175 132.281 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 458.875 132.281 Tm [(must)-247(be)]TJ 1 0 0 1 175.611 120.326 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -0 g 0 G - 83.916 -29.888 Td [(48)]TJ -0 g 0 G -ET - -endstream -endobj -1160 0 obj +% 1156 0 obj << -/Type /ObjStm -/N 100 -/First 983 -/Length 11440 ->> -stream -1158 0 1159 58 1155 116 1168 224 1161 408 1162 552 1163 698 1164 842 1165 987 1166 1134 -1170 1278 232 1337 1171 1395 1167 1453 1173 1589 1175 1707 1172 1765 1180 1846 1176 2003 1177 2147 -1178 2293 1182 2440 236 2499 1183 2557 1179 2616 1185 2752 1187 2870 1188 2928 1184 2985 1194 3080 -1190 3237 1191 3381 1192 3527 1196 3674 240 3733 1197 3791 1193 3850 1202 3986 1198 4143 1199 4287 -1200 4430 1204 4577 244 4635 1205 4692 1201 4749 1207 4885 1209 5003 1210 5062 1206 5120 1215 5215 -1211 5372 1212 5516 1213 5662 1217 5809 248 5867 1218 5924 1214 5982 1220 6118 1222 6236 1219 6295 -1227 6376 1223 6533 1224 6676 1225 6822 1229 6969 252 7027 1230 7084 1226 7141 1233 7263 1235 7381 -1236 7440 1237 7499 1238 7558 1239 7617 1240 7676 1241 7735 1232 7794 1246 7902 1242 8059 1243 8203 -1244 8349 1248 8496 256 8554 1249 8611 1245 8669 1253 8805 1250 8953 1251 9098 1255 9245 260 9304 -1256 9362 1252 9420 1260 9542 1257 9690 1258 9835 1262 9982 264 10040 1264 10097 1259 10154 1271 10291 -% 1158 0 obj +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.159 602.697 385.133 614.756] +/A << /S /GoTo /D (table.2) >> +>> +% 1160 0 obj << -/D [1156 0 R /XYZ 98.895 753.953 null] +/D [1158 0 R /XYZ 98.895 753.953 null] >> -% 1159 0 obj +% 1161 0 obj << -/D [1156 0 R /XYZ 99.895 512.639 null] +/D [1158 0 R /XYZ 99.895 512.639 null] >> -% 1155 0 obj +% 1157 0 obj << /Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1168 0 obj +% 1170 0 obj << /Type /Page -/Contents 1169 0 R -/Resources 1167 0 R +/Contents 1171 0 R +/Resources 1169 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1143 0 R -/Annots [ 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R ] +/Parent 1145 0 R +/Annots [ 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R ] >> -% 1161 0 obj +% 1163 0 obj << /Type /Annot /Subtype /Link @@ -12831,7 +12624,7 @@ stream /Rect [419.358 384.684 495.412 396.744] /A << /S /GoTo /D (vdata) >> >> -% 1162 0 obj +% 1164 0 obj << /Type /Annot /Subtype /Link @@ -12839,7 +12632,7 @@ stream /Rect [382.942 372.729 390.016 384.789] /A << /S /GoTo /D (table.3) >> >> -% 1163 0 obj +% 1165 0 obj << /Type /Annot /Subtype /Link @@ -12847,7 +12640,7 @@ stream /Rect [419.358 293.733 495.412 305.793] /A << /S /GoTo /D (vdata) >> >> -% 1164 0 obj +% 1166 0 obj << /Type /Annot /Subtype /Link @@ -12855,7 +12648,7 @@ stream /Rect [373.146 281.778 380.02 293.837] /A << /S /GoTo /D (table.3) >> >> -% 1165 0 obj +% 1167 0 obj << /Type /Annot /Subtype /Link @@ -12863,7 +12656,7 @@ stream /Rect [306.858 202.781 373.916 214.841] /A << /S /GoTo /D (descdata) >> >> -% 1166 0 obj +% 1168 0 obj << /Type /Annot /Subtype /Link @@ -12871,50 +12664,50 @@ stream /Rect [200.149 119.17 207.123 128.58] /A << /S /GoTo /D (table.2) >> >> -% 1170 0 obj +% 1172 0 obj << -/D [1168 0 R /XYZ 149.705 753.953 null] +/D [1170 0 R /XYZ 149.705 753.953 null] >> % 232 0 obj << -/D [1168 0 R /XYZ 150.705 716.092 null] +/D [1170 0 R /XYZ 150.705 716.092 null] >> -% 1171 0 obj +% 1173 0 obj << -/D [1168 0 R /XYZ 150.705 524.97 null] +/D [1170 0 R /XYZ 150.705 524.97 null] >> -% 1167 0 obj +% 1169 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1173 0 obj +% 1175 0 obj << /Type /Page -/Contents 1174 0 R -/Resources 1172 0 R +/Contents 1176 0 R +/Resources 1174 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1143 0 R +/Parent 1145 0 R >> -% 1175 0 obj +% 1177 0 obj << -/D [1173 0 R /XYZ 98.895 753.953 null] +/D [1175 0 R /XYZ 98.895 753.953 null] >> -% 1172 0 obj +% 1174 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1180 0 obj +% 1182 0 obj << /Type /Page -/Contents 1181 0 R -/Resources 1179 0 R +/Contents 1183 0 R +/Resources 1181 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1143 0 R -/Annots [ 1176 0 R 1177 0 R 1178 0 R ] +/Parent 1145 0 R +/Annots [ 1178 0 R 1179 0 R 1180 0 R ] >> -% 1176 0 obj +% 1178 0 obj << /Type /Annot /Subtype /Link @@ -12922,7 +12715,7 @@ stream /Rect [419.358 358.503 495.412 370.562] /A << /S /GoTo /D (vdata) >> >> -% 1177 0 obj +% 1179 0 obj << /Type /Annot /Subtype /Link @@ -12930,7 +12723,7 @@ stream /Rect [377.462 346.547 384.436 358.607] /A << /S /GoTo /D (table.4) >> >> -% 1178 0 obj +% 1180 0 obj << /Type /Annot /Subtype /Link @@ -12938,54 +12731,54 @@ stream /Rect [306.858 280.074 373.916 292.134] /A << /S /GoTo /D (descdata) >> >> -% 1182 0 obj +% 1184 0 obj << -/D [1180 0 R /XYZ 149.705 753.953 null] +/D [1182 0 R /XYZ 149.705 753.953 null] >> % 236 0 obj << -/D [1180 0 R /XYZ 150.705 716.092 null] +/D [1182 0 R /XYZ 150.705 716.092 null] >> -% 1183 0 obj +% 1185 0 obj << -/D [1180 0 R /XYZ 150.705 495.665 null] +/D [1182 0 R /XYZ 150.705 495.665 null] >> -% 1179 0 obj +% 1181 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1185 0 obj +% 1187 0 obj << /Type /Page -/Contents 1186 0 R -/Resources 1184 0 R +/Contents 1188 0 R +/Resources 1186 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1189 0 R +/Parent 1191 0 R >> -% 1187 0 obj +% 1189 0 obj << -/D [1185 0 R /XYZ 98.895 753.953 null] +/D [1187 0 R /XYZ 98.895 753.953 null] >> -% 1188 0 obj +% 1190 0 obj << -/D [1185 0 R /XYZ 99.895 632.19 null] +/D [1187 0 R /XYZ 99.895 632.19 null] >> -% 1184 0 obj +% 1186 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1194 0 obj +% 1196 0 obj << /Type /Page -/Contents 1195 0 R -/Resources 1193 0 R +/Contents 1197 0 R +/Resources 1195 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1189 0 R -/Annots [ 1190 0 R 1191 0 R 1192 0 R ] +/Parent 1191 0 R +/Annots [ 1192 0 R 1193 0 R 1194 0 R ] >> -% 1190 0 obj +% 1192 0 obj << /Type /Annot /Subtype /Link @@ -12993,7 +12786,7 @@ stream /Rect [419.358 411.694 495.412 423.754] /A << /S /GoTo /D (vdata) >> >> -% 1191 0 obj +% 1193 0 obj << /Type /Annot /Subtype /Link @@ -13001,7 +12794,7 @@ stream /Rect [377.462 399.739 384.436 411.798] /A << /S /GoTo /D (table.5) >> >> -% 1192 0 obj +% 1194 0 obj << /Type /Annot /Subtype /Link @@ -13009,33 +12802,33 @@ stream /Rect [306.858 331.993 373.916 344.052] /A << /S /GoTo /D (descdata) >> >> -% 1196 0 obj +% 1198 0 obj << -/D [1194 0 R /XYZ 149.705 753.953 null] +/D [1196 0 R /XYZ 149.705 753.953 null] >> % 240 0 obj << -/D [1194 0 R /XYZ 150.705 716.092 null] +/D [1196 0 R /XYZ 150.705 716.092 null] >> -% 1197 0 obj +% 1199 0 obj << -/D [1194 0 R /XYZ 150.705 555.856 null] +/D [1196 0 R /XYZ 150.705 555.856 null] >> -% 1193 0 obj +% 1195 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1202 0 obj +% 1204 0 obj << /Type /Page -/Contents 1203 0 R -/Resources 1201 0 R +/Contents 1205 0 R +/Resources 1203 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1189 0 R -/Annots [ 1198 0 R 1199 0 R 1200 0 R ] +/Parent 1191 0 R +/Annots [ 1200 0 R 1201 0 R 1202 0 R ] >> -% 1198 0 obj +% 1200 0 obj << /Type /Annot /Subtype /Link @@ -13043,7 +12836,7 @@ stream /Rect [368.549 362.555 444.603 374.615] /A << /S /GoTo /D (vdata) >> >> -% 1199 0 obj +% 1201 0 obj << /Type /Annot /Subtype /Link @@ -13051,7 +12844,7 @@ stream /Rect [326.652 350.6 333.626 362.66] /A << /S /GoTo /D (table.6) >> >> -% 1200 0 obj +% 1202 0 obj << /Type /Annot /Subtype /Link @@ -13059,54 +12852,54 @@ stream /Rect [256.048 283.114 323.106 295.173] /A << /S /GoTo /D (descdata) >> >> -% 1204 0 obj +% 1206 0 obj << -/D [1202 0 R /XYZ 98.895 753.953 null] +/D [1204 0 R /XYZ 98.895 753.953 null] >> % 244 0 obj << -/D [1202 0 R /XYZ 99.895 716.092 null] +/D [1204 0 R /XYZ 99.895 716.092 null] >> -% 1205 0 obj +% 1207 0 obj << -/D [1202 0 R /XYZ 99.895 505.29 null] +/D [1204 0 R /XYZ 99.895 505.29 null] >> -% 1201 0 obj +% 1203 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1207 0 obj +% 1209 0 obj << /Type /Page -/Contents 1208 0 R -/Resources 1206 0 R +/Contents 1210 0 R +/Resources 1208 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1189 0 R +/Parent 1191 0 R >> -% 1209 0 obj +% 1211 0 obj << -/D [1207 0 R /XYZ 149.705 753.953 null] +/D [1209 0 R /XYZ 149.705 753.953 null] >> -% 1210 0 obj +% 1212 0 obj << -/D [1207 0 R /XYZ 150.705 632.19 null] +/D [1209 0 R /XYZ 150.705 632.19 null] >> -% 1206 0 obj +% 1208 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1215 0 obj +% 1217 0 obj << /Type /Page -/Contents 1216 0 R -/Resources 1214 0 R +/Contents 1218 0 R +/Resources 1216 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1189 0 R -/Annots [ 1211 0 R 1212 0 R 1213 0 R ] +/Parent 1191 0 R +/Annots [ 1213 0 R 1214 0 R 1215 0 R ] >> -% 1211 0 obj +% 1213 0 obj << /Type /Annot /Subtype /Link @@ -13114,7 +12907,7 @@ stream /Rect [368.549 291.495 444.603 303.554] /A << /S /GoTo /D (vdata) >> >> -% 1212 0 obj +% 1214 0 obj << /Type /Annot /Subtype /Link @@ -13122,7 +12915,7 @@ stream /Rect [326.652 279.539 333.626 291.599] /A << /S /GoTo /D (table.7) >> >> -% 1213 0 obj +% 1215 0 obj << /Type /Annot /Subtype /Link @@ -13130,50 +12923,50 @@ stream /Rect [256.048 209.259 323.106 221.319] /A << /S /GoTo /D (descdata) >> >> -% 1217 0 obj +% 1219 0 obj << -/D [1215 0 R /XYZ 98.895 753.953 null] +/D [1217 0 R /XYZ 98.895 753.953 null] >> % 248 0 obj << -/D [1215 0 R /XYZ 99.895 716.092 null] +/D [1217 0 R /XYZ 99.895 716.092 null] >> -% 1218 0 obj +% 1220 0 obj << -/D [1215 0 R /XYZ 99.895 443.893 null] +/D [1217 0 R /XYZ 99.895 443.893 null] >> -% 1214 0 obj +% 1216 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1220 0 obj +% 1222 0 obj << /Type /Page -/Contents 1221 0 R -/Resources 1219 0 R +/Contents 1223 0 R +/Resources 1221 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1189 0 R +/Parent 1191 0 R >> -% 1222 0 obj +% 1224 0 obj << -/D [1220 0 R /XYZ 149.705 753.953 null] +/D [1222 0 R /XYZ 149.705 753.953 null] >> -% 1219 0 obj +% 1221 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1227 0 obj +% 1229 0 obj << /Type /Page -/Contents 1228 0 R -/Resources 1226 0 R +/Contents 1230 0 R +/Resources 1228 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1231 0 R -/Annots [ 1223 0 R 1224 0 R 1225 0 R ] +/Parent 1233 0 R +/Annots [ 1225 0 R 1226 0 R 1227 0 R ] >> -% 1223 0 obj +% 1225 0 obj << /Type /Annot /Subtype /Link @@ -13181,7 +12974,7 @@ stream /Rect [368.549 314.69 444.603 326.749] /A << /S /GoTo /D (vdata) >> >> -% 1224 0 obj +% 1226 0 obj << /Type /Annot /Subtype /Link @@ -13189,7 +12982,7 @@ stream /Rect [326.652 302.734 333.626 314.794] /A << /S /GoTo /D (table.8) >> >> -% 1225 0 obj +% 1227 0 obj << /Type /Annot /Subtype /Link @@ -13197,74 +12990,74 @@ stream /Rect [256.048 232.693 323.106 244.753] /A << /S /GoTo /D (descdata) >> >> -% 1229 0 obj +% 1231 0 obj << -/D [1227 0 R /XYZ 98.895 753.953 null] +/D [1229 0 R /XYZ 98.895 753.953 null] >> % 252 0 obj << -/D [1227 0 R /XYZ 99.895 716.092 null] +/D [1229 0 R /XYZ 99.895 716.092 null] >> -% 1230 0 obj +% 1232 0 obj << -/D [1227 0 R /XYZ 99.895 504.73 null] +/D [1229 0 R /XYZ 99.895 504.73 null] >> -% 1226 0 obj +% 1228 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1233 0 obj +% 1235 0 obj << /Type /Page -/Contents 1234 0 R -/Resources 1232 0 R +/Contents 1236 0 R +/Resources 1234 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1231 0 R ->> -% 1235 0 obj -<< -/D [1233 0 R /XYZ 149.705 753.953 null] ->> -% 1236 0 obj -<< -/D [1233 0 R /XYZ 150.705 564.444 null] +/Parent 1233 0 R >> % 1237 0 obj << -/D [1233 0 R /XYZ 150.705 504.067 null] +/D [1235 0 R /XYZ 149.705 753.953 null] >> % 1238 0 obj << -/D [1233 0 R /XYZ 175.611 506.876 null] +/D [1235 0 R /XYZ 150.705 564.444 null] >> % 1239 0 obj << -/D [1233 0 R /XYZ 175.611 494.921 null] +/D [1235 0 R /XYZ 150.705 504.067 null] >> % 1240 0 obj << -/D [1233 0 R /XYZ 175.611 482.966 null] +/D [1235 0 R /XYZ 175.611 506.876 null] >> % 1241 0 obj << -/D [1233 0 R /XYZ 175.611 471.011 null] +/D [1235 0 R /XYZ 175.611 494.921 null] >> -% 1232 0 obj +% 1242 0 obj +<< +/D [1235 0 R /XYZ 175.611 482.966 null] +>> +% 1243 0 obj +<< +/D [1235 0 R /XYZ 175.611 471.011 null] +>> +% 1234 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1246 0 obj +% 1248 0 obj << /Type /Page -/Contents 1247 0 R -/Resources 1245 0 R +/Contents 1249 0 R +/Resources 1247 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1231 0 R -/Annots [ 1242 0 R 1243 0 R 1244 0 R ] +/Parent 1233 0 R +/Annots [ 1244 0 R 1245 0 R 1246 0 R ] >> -% 1242 0 obj +% 1244 0 obj << /Type /Annot /Subtype /Link @@ -13272,7 +13065,7 @@ stream /Rect [368.549 416.057 444.603 428.117] /A << /S /GoTo /D (vdata) >> >> -% 1243 0 obj +% 1245 0 obj << /Type /Annot /Subtype /Link @@ -13280,7 +13073,7 @@ stream /Rect [326.652 404.102 333.626 416.161] /A << /S /GoTo /D (table.9) >> >> -% 1244 0 obj +% 1246 0 obj << /Type /Annot /Subtype /Link @@ -13288,33 +13081,33 @@ stream /Rect [256.048 336.356 323.106 348.415] /A << /S /GoTo /D (descdata) >> >> -% 1248 0 obj +% 1250 0 obj << -/D [1246 0 R /XYZ 98.895 753.953 null] +/D [1248 0 R /XYZ 98.895 753.953 null] >> % 256 0 obj << -/D [1246 0 R /XYZ 99.895 716.092 null] +/D [1248 0 R /XYZ 99.895 716.092 null] >> -% 1249 0 obj +% 1251 0 obj << -/D [1246 0 R /XYZ 99.895 560.219 null] +/D [1248 0 R /XYZ 99.895 560.219 null] >> -% 1245 0 obj +% 1247 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1253 0 obj +% 1255 0 obj << /Type /Page -/Contents 1254 0 R -/Resources 1252 0 R +/Contents 1256 0 R +/Resources 1254 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1231 0 R -/Annots [ 1250 0 R 1251 0 R ] +/Parent 1233 0 R +/Annots [ 1252 0 R 1253 0 R ] >> -% 1250 0 obj +% 1252 0 obj << /Type /Annot /Subtype /Link @@ -13322,7 +13115,7 @@ stream /Rect [306.858 340.341 384.376 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1251 0 obj +% 1253 0 obj << /Type /Annot /Subtype /Link @@ -13330,33 +13123,33 @@ stream /Rect [306.858 272.595 373.916 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1255 0 obj +% 1257 0 obj << -/D [1253 0 R /XYZ 149.705 753.953 null] +/D [1255 0 R /XYZ 149.705 753.953 null] >> % 260 0 obj << -/D [1253 0 R /XYZ 150.705 716.092 null] +/D [1255 0 R /XYZ 150.705 716.092 null] >> -% 1256 0 obj +% 1258 0 obj << -/D [1253 0 R /XYZ 150.705 517.78 null] +/D [1255 0 R /XYZ 150.705 517.78 null] >> -% 1252 0 obj +% 1254 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1260 0 obj +% 1262 0 obj << /Type /Page -/Contents 1261 0 R -/Resources 1259 0 R +/Contents 1263 0 R +/Resources 1261 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1231 0 R -/Annots [ 1257 0 R 1258 0 R ] +/Parent 1233 0 R +/Annots [ 1259 0 R 1260 0 R ] >> -% 1257 0 obj +% 1259 0 obj << /Type /Annot /Subtype /Link @@ -13364,7 +13157,7 @@ stream /Rect [256.048 340.341 333.567 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1258 0 obj +% 1260 0 obj << /Type /Annot /Subtype /Link @@ -13372,38 +13165,247 @@ stream /Rect [256.048 272.595 323.106 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1262 0 obj -<< -/D [1260 0 R /XYZ 98.895 753.953 null] ->> -% 264 0 obj -<< -/D [1260 0 R /XYZ 99.895 716.092 null] ->> % 1264 0 obj << -/D [1260 0 R /XYZ 99.895 517.78 null] +/D [1262 0 R /XYZ 98.895 753.953 null] >> -% 1259 0 obj +% 264 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F241 1263 0 R /F131 921 0 R >> -/ProcSet [ /PDF /Text ] +/D [1262 0 R /XYZ 99.895 716.092 null] >> -% 1271 0 obj +% 1266 0 obj << -/Type /Page -/Contents 1272 0 R -/Resources 1270 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1231 0 R -/Annots [ 1265 0 R 1266 0 R 1267 0 R 1268 0 R ] +/D [1262 0 R /XYZ 99.895 517.78 null] >> endstream endobj -1288 0 obj +1275 0 obj << -/Length 6714 +/Length 8070 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 150.705 706.129 Td [(4.12)-1000(psb)]TJ +ET +q +1 0 0 1 204.216 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 207.803 706.129 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Product)]TJ/F84 9.9626 Tf -57.407 -19.303 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct:)]TJ/F78 9.9626 Tf 140.456 -24.611 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)-42(x)]TJ/F181 10.3811 Tf 14.878 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 134.509 0 Td [(\0501\051)]TJ +0 g 0 G +/F78 9.9626 Tf -195.741 -20.13 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.398 0 Td [(a)]TJ/F78 9.9626 Tf 6.007 0 Td [(A)]TJ/F78 7.5716 Tf 7.511 4.115 Td [(T)]TJ/F78 9.9626 Tf 5.694 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 131.712 0 Td [(\0502\051)]TJ +0 g 0 G +/F78 9.9626 Tf -196.479 -20.129 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)]TJ/F78 7.5716 Tf 7.7 4.114 Td [(H)]TJ/F78 9.9626 Tf 6.981 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 130.974 0 Td [(\0503\051)]TJ +0 g 0 G + -318.147 -18.633 Td [(wher)18(e:)]TJ +0 g 0 G +/F78 9.9626 Tf -14.65 -20.451 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.61 0 Td [(x)]TJ/F84 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ +0 g 0 G +/F78 9.9626 Tf -131.167 -19.132 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.441 0 Td [(y)]TJ/F84 7.5716 Tf 5.2 -1.494 Td [(:)-13(,)-12(:)]TJ +0 g 0 G +/F78 9.9626 Tf -130.23 -19.131 Td [(A)]TJ +0 g 0 G +/F84 9.9626 Tf 12.299 0 Td [(is)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 118.41 0 Td [(A)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +ET +q +1 0 0 1 230.392 517.986 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +BT +/F78 9.9626 Tf 236.992 509.418 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(,)]TJ/F133 9.9626 Tf 5.106 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 76.437 0 Td [(Subroutine)]TJ +ET +q +1 0 0 1 230.392 505.633 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +BT +/F84 9.9626 Tf 236.369 497.065 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +ET +q +1 0 0 1 373.603 497.264 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 497.065 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +ET +q +1 0 0 1 373.603 485.309 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 485.11 Td [(spmm)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +ET +q +1 0 0 1 373.603 473.354 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 473.154 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +ET +q +1 0 0 1 373.603 461.398 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 461.199 Td [(spmm)]TJ +ET +q +1 0 0 1 230.392 457.413 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +0 g 0 G +BT +/F84 9.9626 Tf 278.277 429.035 Td [(T)92(able)-250(12:)-310(Data)-250(types)]TJ +0 g 0 G +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -107.398 -24.261 Td [(call)]TJ +0 g 0 G + [-525(psb_spmm\050alpha,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(beta,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(y,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(info\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.944 -11.955 Td [(call)]TJ +0 g 0 G + [-525(psb_spmm\050alpha,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(beta,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(y,desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(info,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(trans,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(work\051)]TJ +0 g 0 G +/F75 9.9626 Tf -5.23 -22.618 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.626 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.626 Td [(alpha)]TJ +0 g 0 G +/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(12)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -20.626 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 164.964 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -157.337 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 132.242 0 Td [(psb)]TJ +ET +q +1 0 0 1 324.173 212.882 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 327.311 212.682 Td [(Tspmat)]TJ +ET +q +1 0 0 1 359.321 212.882 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.459 212.682 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -232.675 -20.625 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 144.236 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 1 0 0 1 420.354 144.236 Tm [(psb)]TJ +ET +q +1 0 0 1 436.673 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 439.811 144.236 Td [(T)]TJ +ET +q +1 0 0 1 445.669 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 448.807 144.236 Td [(vect)]TJ +ET +q +1 0 0 1 470.356 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 473.495 144.236 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 1.015 0 0 1 175.611 132.281 Tm [(containing)-247(numbers)-246(of)-247(type)-247(speci\002ed)-246(in)-247(T)90(able)]TJ +0 0 1 rg 0 0 1 RG + [-246(12)]TJ +0 g 0 G + [(.)-307(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 451.175 132.281 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 458.875 132.281 Tm [(must)-247(be)]TJ 1 0 0 1 175.611 120.326 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ +0 g 0 G + 83.916 -29.888 Td [(48)]TJ +0 g 0 G +ET + +endstream +endobj +1290 0 obj +<< +/Length 6714 >> stream 0 g 0 G @@ -13531,7 +13533,7 @@ ET endstream endobj -1295 0 obj +1297 0 obj << /Length 8140 >> @@ -13703,7 +13705,7 @@ ET endstream endobj -1306 0 obj +1308 0 obj << /Length 7462 >> @@ -13861,7 +13863,7 @@ ET endstream endobj -1312 0 obj +1314 0 obj << /Length 4635 >> @@ -13920,7 +13922,7 @@ ET endstream endobj -1323 0 obj +1325 0 obj << /Length 7722 >> @@ -14149,7 +14151,7 @@ ET endstream endobj -1328 0 obj +1330 0 obj << /Length 314 >> @@ -14165,7 +14167,7 @@ ET endstream endobj -1339 0 obj +1341 0 obj << /Length 7699 >> @@ -14372,7 +14374,7 @@ ET endstream endobj -1345 0 obj +1347 0 obj << /Length 1341 >> @@ -14421,7 +14423,7 @@ ET endstream endobj -1354 0 obj +1356 0 obj << /Length 7613 >> @@ -14628,7 +14630,7 @@ ET endstream endobj -1360 0 obj +1362 0 obj << /Length 659 >> @@ -14648,7 +14650,7 @@ ET endstream endobj -1368 0 obj +1370 0 obj << /Length 6830 >> @@ -14843,7 +14845,7 @@ ET endstream endobj -1375 0 obj +1377 0 obj << /Length 3213 >> @@ -14896,20 +14898,20 @@ ET endstream endobj -1371 0 obj +1373 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1378 0 R +/PTEX.InfoDict 1380 0 R /BBox [0 0 498 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1379 0 R ->>/Font << /R8 1380 0 R/R10 1381 0 R>> +/R7 1381 0 R +>>/Font << /R8 1382 0 R/R10 1383 0 R>> >> /Length 3349 /Filter /FlateDecode @@ -14921,25 +14923,39 @@ U1 †¸úµ6ÔÉ–O¹¬ÌWbàzSE 0¬àË®—Ψxܳ>P…Uƒ|úˆò¬Öhˆ³>ÜÝâð^ðyÿÔŽX<‰ï’<ÂÇfÔ1â@aÐMŠC5Ú¢"mZ½!qVÖÆ¢4"{^›ëéŠÏúÜÐZÌÈ&ŒÐÅLh=ébnh#ü©n¶BUÌ„&×]Õ ÝÅFS5Cg_QUÍðӂȯZ£!ö²{U5'"ýÈCS5 žßÛæzÖæI¿®+®÷ó'MÕ <Ïû«Ö†:%>A©ªfè\dðy׎X<™§úºv¬¸Þ¡4U3ð<ï¯ZêD ùp¥ªš¡â³þ®±xOðuíXÉ×9/<ŠRUÍÀ‰¿|p+q¥ªš¡³¨Áçý];bñ$>žÖëÚ±âz?ŽÒTÍÀó¼¿jm¨“~/žú[™¯Ä<¸ë‘Ïú»vÄâÉ|Cú€‹‘¯s^x(¥ªšá]ú€[!ÎúðS)MÕ ÞPÌïms=k_’} ×ONËÌê˜Gd×X¥YgSjT3âÔr°-J#²{Ë®ç_ŤŒ¹¡µ˜‘M¡‹™ÐzÒÅÜÐFøSÝl…ª˜ M®÷Ó[ÎÏŸŸåùËãý¤†¿õ8šÇ÷‰<ÿÓ”ÿüúøýQ=Æ×oÏ?~}üøåzÖöüúχÿeK}ŽãýÜò±ž_{üôCýô¹Ï£üÐ>}¥”:~ü<ðóÄωŸ×§Ÿ¿þåíÝíýŸšÇóë/Îñé뿟ߟvñvÿ®Ý¾k×ïÚeoë»öõ]{Þí·¯??·~¢ûCÞŸ#²ÚaYïá÷…–aXŽí)Ãüã—÷'W¯û³êíãýŸ¼žkà®3Ô{οþõÝ*ŸþðøÓ×Çßßÿþ{Ü endstream endobj -1278 0 obj +1267 0 obj << /Type /ObjStm /N 100 -/First 997 -/Length 13005 ->> -stream -1265 0 1266 147 1267 292 1268 434 1273 581 268 640 1274 698 1275 756 1276 815 1277 874 -1270 933 1287 1084 1269 1286 1279 1433 1280 1577 1281 1723 1282 1870 1283 2021 1284 2172 1285 2323 -1289 2469 1286 2527 1294 2664 1291 2803 1296 2948 272 3007 1297 3065 1293 3124 1305 3275 1292 3468 -1298 3616 1299 3760 1300 3907 1301 4054 1302 4197 1303 4344 1307 4489 1304 4547 1311 4684 1308 4832 -1309 4979 1313 5126 1310 5185 1322 5307 1314 5500 1315 5644 1316 5789 1317 5933 1318 6078 1319 6225 -1320 6369 1324 6516 276 6574 1325 6631 1321 6689 1327 6825 1329 6943 1326 7002 1338 7083 1330 7258 -1331 7402 1332 7547 1333 7691 1334 7836 1340 7983 280 8041 1341 8098 1337 8156 1344 8292 1335 8440 -1336 8584 1346 8731 1343 8790 1353 8885 1347 9060 1348 9202 1349 9347 1350 9494 1351 9638 1355 9785 -284 9843 1356 9900 1352 9958 1359 10094 1357 10233 1361 10380 288 10439 1358 10497 1367 10578 1362 10735 -1363 10879 1364 11026 1369 11173 292 11231 1370 11288 1366 11346 1374 11483 1378 11631 1379 11758 1380 11801 -% 1265 0 obj +/First 1002 +/Length 13063 +>> +stream +1261 0 1274 137 1268 303 1269 450 1270 595 1271 737 1276 884 268 943 1277 1001 1278 1059 +1279 1118 1280 1177 1273 1236 1289 1387 1272 1589 1281 1736 1282 1880 1283 2026 1284 2173 1285 2324 +1286 2475 1287 2626 1291 2772 1288 2830 1296 2967 1293 3106 1298 3251 272 3310 1299 3368 1295 3427 +1307 3578 1294 3771 1300 3919 1301 4063 1302 4210 1303 4357 1304 4500 1305 4647 1309 4792 1306 4850 +1313 4987 1310 5135 1311 5282 1315 5429 1312 5488 1324 5610 1316 5803 1317 5947 1318 6092 1319 6236 +1320 6381 1321 6528 1322 6672 1326 6819 276 6877 1327 6934 1323 6992 1329 7128 1331 7246 1328 7305 +1340 7386 1332 7561 1333 7705 1334 7850 1335 7994 1336 8139 1342 8286 280 8344 1343 8401 1339 8459 +1346 8595 1337 8743 1338 8887 1348 9034 1345 9093 1355 9188 1349 9363 1350 9505 1351 9650 1352 9797 +1353 9941 1357 10088 284 10146 1358 10203 1354 10261 1361 10397 1359 10536 1363 10683 288 10742 1360 10800 +1369 10881 1364 11038 1365 11182 1366 11329 1371 11476 292 11534 1372 11591 1368 11649 1376 11786 1380 11934 +% 1261 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F241 1265 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1274 0 obj +<< +/Type /Page +/Contents 1275 0 R +/Resources 1273 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1233 0 R +/Annots [ 1268 0 R 1269 0 R 1270 0 R 1271 0 R ] +>> +% 1268 0 obj << /Type /Annot /Subtype /Link @@ -14947,7 +14963,7 @@ stream /Rect [428.968 277.323 440.924 289.383] /A << /S /GoTo /D (table.12) >> >> -% 1266 0 obj +% 1269 0 obj << /Type /Annot /Subtype /Link @@ -14955,7 +14971,7 @@ stream /Rect [306.858 208.877 384.376 220.936] /A << /S /GoTo /D (spdata) >> >> -% 1267 0 obj +% 1270 0 obj << /Type /Annot /Subtype /Link @@ -14963,7 +14979,7 @@ stream /Rect [419.358 140.43 495.412 152.49] /A << /S /GoTo /D (vdata) >> >> -% 1268 0 obj +% 1271 0 obj << /Type /Annot /Subtype /Link @@ -14971,45 +14987,45 @@ stream /Rect [380.286 128.475 392.391 140.535] /A << /S /GoTo /D (table.12) >> >> -% 1273 0 obj +% 1276 0 obj << -/D [1271 0 R /XYZ 149.705 753.953 null] +/D [1274 0 R /XYZ 149.705 753.953 null] >> % 268 0 obj << -/D [1271 0 R /XYZ 150.705 716.092 null] +/D [1274 0 R /XYZ 150.705 716.092 null] >> -% 1274 0 obj +% 1277 0 obj << -/D [1271 0 R /XYZ 290.728 674.17 null] +/D [1274 0 R /XYZ 290.728 674.17 null] >> -% 1275 0 obj +% 1278 0 obj << -/D [1271 0 R /XYZ 287.931 654.041 null] +/D [1274 0 R /XYZ 287.931 654.041 null] >> -% 1276 0 obj +% 1279 0 obj << -/D [1271 0 R /XYZ 287.193 633.911 null] +/D [1274 0 R /XYZ 287.193 633.911 null] >> -% 1277 0 obj +% 1280 0 obj << -/D [1271 0 R /XYZ 150.705 447.252 null] +/D [1274 0 R /XYZ 150.705 447.252 null] >> -% 1270 0 obj +% 1273 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F181 923 0 R /F131 921 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1287 0 obj +% 1289 0 obj << /Type /Page -/Contents 1288 0 R -/Resources 1286 0 R +/Contents 1290 0 R +/Resources 1288 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1290 0 R -/Annots [ 1269 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R ] +/Parent 1292 0 R +/Annots [ 1272 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R ] >> -% 1269 0 obj +% 1272 0 obj << /Type /Annot /Subtype /Link @@ -15017,7 +15033,7 @@ stream /Rect [378.159 654.503 390.114 666.562] /A << /S /GoTo /D (table.12) >> >> -% 1279 0 obj +% 1281 0 obj << /Type /Annot /Subtype /Link @@ -15025,7 +15041,7 @@ stream /Rect [368.549 588.085 444.603 600.145] /A << /S /GoTo /D (vdata) >> >> -% 1280 0 obj +% 1282 0 obj << /Type /Annot /Subtype /Link @@ -15033,7 +15049,7 @@ stream /Rect [329.659 576.13 341.774 588.189] /A << /S /GoTo /D (table.12) >> >> -% 1281 0 obj +% 1283 0 obj << /Type /Annot /Subtype /Link @@ -15041,7 +15057,7 @@ stream /Rect [256.048 497.757 323.106 509.817] /A << /S /GoTo /D (descdata) >> >> -% 1282 0 obj +% 1284 0 obj << /Type /Annot /Subtype /Link @@ -15049,7 +15065,7 @@ stream /Rect [338.139 460.563 345.113 472.623] /A << /S /GoTo /D (equation.4.1) >> >> -% 1283 0 obj +% 1285 0 obj << /Type /Annot /Subtype /Link @@ -15057,7 +15073,7 @@ stream /Rect [336.486 445.951 343.459 458.011] /A << /S /GoTo /D (equation.4.2) >> >> -% 1284 0 obj +% 1286 0 obj << /Type /Annot /Subtype /Link @@ -15065,7 +15081,7 @@ stream /Rect [337.034 431.339 344.007 443.399] /A << /S /GoTo /D (equation.4.3) >> >> -% 1285 0 obj +% 1287 0 obj << /Type /Annot /Subtype /Link @@ -15073,25 +15089,25 @@ stream /Rect [202.52 189.579 214.475 201.639] /A << /S /GoTo /D (table.12) >> >> -% 1289 0 obj +% 1291 0 obj << -/D [1287 0 R /XYZ 98.895 753.953 null] +/D [1289 0 R /XYZ 98.895 753.953 null] >> -% 1286 0 obj +% 1288 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F133 1136 0 R /F78 674 0 R /F131 921 0 R /F181 923 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F133 1138 0 R /F78 674 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1294 0 obj +% 1296 0 obj << /Type /Page -/Contents 1295 0 R -/Resources 1293 0 R +/Contents 1297 0 R +/Resources 1295 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1290 0 R -/Annots [ 1291 0 R ] +/Parent 1292 0 R +/Annots [ 1293 0 R ] >> -% 1291 0 obj +% 1293 0 obj << /Type /Annot /Subtype /Link @@ -15099,33 +15115,33 @@ stream /Rect [428.968 116.52 440.924 128.58] /A << /S /GoTo /D (table.13) >> >> -% 1296 0 obj +% 1298 0 obj << -/D [1294 0 R /XYZ 149.705 753.953 null] +/D [1296 0 R /XYZ 149.705 753.953 null] >> % 272 0 obj << -/D [1294 0 R /XYZ 150.705 716.092 null] +/D [1296 0 R /XYZ 150.705 716.092 null] >> -% 1297 0 obj +% 1299 0 obj << -/D [1294 0 R /XYZ 150.705 268.704 null] +/D [1296 0 R /XYZ 150.705 268.704 null] >> -% 1293 0 obj +% 1295 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F181 923 0 R /F131 921 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1305 0 obj +% 1307 0 obj << /Type /Page -/Contents 1306 0 R -/Resources 1304 0 R +/Contents 1308 0 R +/Resources 1306 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1290 0 R -/Annots [ 1292 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R ] +/Parent 1292 0 R +/Annots [ 1294 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R ] >> -% 1292 0 obj +% 1294 0 obj << /Type /Annot /Subtype /Link @@ -15133,7 +15149,7 @@ stream /Rect [305.144 654.503 312.117 666.562] /A << /S /GoTo /D (section.3) >> >> -% 1298 0 obj +% 1300 0 obj << /Type /Annot /Subtype /Link @@ -15141,7 +15157,7 @@ stream /Rect [368.549 586.032 444.603 598.092] /A << /S /GoTo /D (vdata) >> >> -% 1299 0 obj +% 1301 0 obj << /Type /Annot /Subtype /Link @@ -15149,7 +15165,7 @@ stream /Rect [329.477 574.077 341.581 586.136] /A << /S /GoTo /D (table.13) >> >> -% 1300 0 obj +% 1302 0 obj << /Type /Annot /Subtype /Link @@ -15157,7 +15173,7 @@ stream /Rect [378.159 493.651 390.114 505.711] /A << /S /GoTo /D (table.13) >> >> -% 1301 0 obj +% 1303 0 obj << /Type /Annot /Subtype /Link @@ -15165,7 +15181,7 @@ stream /Rect [368.549 425.181 444.603 437.24] /A << /S /GoTo /D (vdata) >> >> -% 1302 0 obj +% 1304 0 obj << /Type /Annot /Subtype /Link @@ -15173,7 +15189,7 @@ stream /Rect [329.659 413.225 341.774 425.285] /A << /S /GoTo /D (table.13) >> >> -% 1303 0 obj +% 1305 0 obj << /Type /Annot /Subtype /Link @@ -15181,25 +15197,25 @@ stream /Rect [256.048 332.8 323.106 344.859] /A << /S /GoTo /D (descdata) >> >> -% 1307 0 obj +% 1309 0 obj << -/D [1305 0 R /XYZ 98.895 753.953 null] +/D [1307 0 R /XYZ 98.895 753.953 null] >> -% 1304 0 obj +% 1306 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R /F133 1136 0 R /F181 923 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R /F133 1138 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1311 0 obj +% 1313 0 obj << /Type /Page -/Contents 1312 0 R -/Resources 1310 0 R +/Contents 1314 0 R +/Resources 1312 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1290 0 R -/Annots [ 1308 0 R 1309 0 R ] +/Parent 1292 0 R +/Annots [ 1310 0 R 1311 0 R ] >> -% 1308 0 obj +% 1310 0 obj << /Type /Annot /Subtype /Link @@ -15207,7 +15223,7 @@ stream /Rect [200.149 410.079 212.104 419.489] /A << /S /GoTo /D (table.13) >> >> -% 1309 0 obj +% 1311 0 obj << /Type /Annot /Subtype /Link @@ -15215,25 +15231,25 @@ stream /Rect [253.329 228.102 265.284 240.161] /A << /S /GoTo /D (table.13) >> >> -% 1313 0 obj +% 1315 0 obj << -/D [1311 0 R /XYZ 149.705 753.953 null] +/D [1313 0 R /XYZ 149.705 753.953 null] >> -% 1310 0 obj +% 1312 0 obj << /Font << /F84 675 0 R /F75 673 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1322 0 obj +% 1324 0 obj << /Type /Page -/Contents 1323 0 R -/Resources 1321 0 R +/Contents 1325 0 R +/Resources 1323 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1290 0 R -/Annots [ 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R ] +/Parent 1292 0 R +/Annots [ 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R 1321 0 R 1322 0 R ] >> -% 1314 0 obj +% 1316 0 obj << /Type /Annot /Subtype /Link @@ -15241,7 +15257,7 @@ stream /Rect [262.707 417.772 338.761 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1315 0 obj +% 1317 0 obj << /Type /Annot /Subtype /Link @@ -15249,7 +15265,7 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1316 0 obj +% 1318 0 obj << /Type /Annot /Subtype /Link @@ -15257,7 +15273,7 @@ stream /Rect [262.707 338.393 338.761 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1317 0 obj +% 1319 0 obj << /Type /Annot /Subtype /Link @@ -15265,7 +15281,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1318 0 obj +% 1320 0 obj << /Type /Annot /Subtype /Link @@ -15273,7 +15289,7 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1319 0 obj +% 1321 0 obj << /Type /Annot /Subtype /Link @@ -15281,7 +15297,7 @@ stream /Rect [252.903 171.988 328.957 184.048] /A << /S /GoTo /D (vdata) >> >> -% 1320 0 obj +% 1322 0 obj << /Type /Annot /Subtype /Link @@ -15289,50 +15305,50 @@ stream /Rect [226.559 160.033 238.514 172.093] /A << /S /GoTo /D (table.14) >> >> -% 1324 0 obj +% 1326 0 obj << -/D [1322 0 R /XYZ 98.895 753.953 null] +/D [1324 0 R /XYZ 98.895 753.953 null] >> % 276 0 obj << -/D [1322 0 R /XYZ 99.895 716.092 null] +/D [1324 0 R /XYZ 99.895 716.092 null] >> -% 1325 0 obj +% 1327 0 obj << -/D [1322 0 R /XYZ 99.895 560.161 null] +/D [1324 0 R /XYZ 99.895 560.161 null] >> -% 1321 0 obj +% 1323 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1327 0 obj +% 1329 0 obj << /Type /Page -/Contents 1328 0 R -/Resources 1326 0 R +/Contents 1330 0 R +/Resources 1328 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1290 0 R +/Parent 1292 0 R >> -% 1329 0 obj +% 1331 0 obj << -/D [1327 0 R /XYZ 149.705 753.953 null] +/D [1329 0 R /XYZ 149.705 753.953 null] >> -% 1326 0 obj +% 1328 0 obj << /Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1338 0 obj +% 1340 0 obj << /Type /Page -/Contents 1339 0 R -/Resources 1337 0 R +/Contents 1341 0 R +/Resources 1339 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1342 0 R -/Annots [ 1330 0 R 1331 0 R 1332 0 R 1333 0 R 1334 0 R ] +/Parent 1344 0 R +/Annots [ 1332 0 R 1333 0 R 1334 0 R 1335 0 R 1336 0 R ] >> -% 1330 0 obj +% 1332 0 obj << /Type /Annot /Subtype /Link @@ -15340,7 +15356,7 @@ stream /Rect [262.707 417.772 338.761 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1331 0 obj +% 1333 0 obj << /Type /Annot /Subtype /Link @@ -15348,7 +15364,7 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1332 0 obj +% 1334 0 obj << /Type /Annot /Subtype /Link @@ -15356,7 +15372,7 @@ stream /Rect [262.707 338.393 338.761 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1333 0 obj +% 1335 0 obj << /Type /Annot /Subtype /Link @@ -15364,7 +15380,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1334 0 obj +% 1336 0 obj << /Type /Annot /Subtype /Link @@ -15372,33 +15388,33 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1340 0 obj +% 1342 0 obj << -/D [1338 0 R /XYZ 98.895 753.953 null] +/D [1340 0 R /XYZ 98.895 753.953 null] >> % 280 0 obj << -/D [1338 0 R /XYZ 99.895 716.092 null] +/D [1340 0 R /XYZ 99.895 716.092 null] >> -% 1341 0 obj +% 1343 0 obj << -/D [1338 0 R /XYZ 99.895 560.161 null] +/D [1340 0 R /XYZ 99.895 560.161 null] >> -% 1337 0 obj +% 1339 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1344 0 obj +% 1346 0 obj << /Type /Page -/Contents 1345 0 R -/Resources 1343 0 R +/Contents 1347 0 R +/Resources 1345 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1342 0 R -/Annots [ 1335 0 R 1336 0 R ] +/Parent 1344 0 R +/Annots [ 1337 0 R 1338 0 R ] >> -% 1335 0 obj +% 1337 0 obj << /Type /Annot /Subtype /Link @@ -15406,7 +15422,7 @@ stream /Rect [303.712 702.323 379.767 714.383] /A << /S /GoTo /D (vdata) >> >> -% 1336 0 obj +% 1338 0 obj << /Type /Annot /Subtype /Link @@ -15414,25 +15430,25 @@ stream /Rect [277.368 690.368 289.324 702.428] /A << /S /GoTo /D (table.14) >> >> -% 1346 0 obj +% 1348 0 obj << -/D [1344 0 R /XYZ 149.705 753.953 null] +/D [1346 0 R /XYZ 149.705 753.953 null] >> -% 1343 0 obj +% 1345 0 obj << /Font << /F84 675 0 R /F131 921 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1353 0 obj +% 1355 0 obj << /Type /Page -/Contents 1354 0 R -/Resources 1352 0 R +/Contents 1356 0 R +/Resources 1354 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1342 0 R -/Annots [ 1347 0 R 1348 0 R 1349 0 R 1350 0 R 1351 0 R ] +/Parent 1344 0 R +/Annots [ 1349 0 R 1350 0 R 1351 0 R 1352 0 R 1353 0 R ] >> -% 1347 0 obj +% 1349 0 obj << /Type /Annot /Subtype /Link @@ -15440,7 +15456,7 @@ stream /Rect [262.707 430.55 338.761 442.61] /A << /S /GoTo /D (vdata) >> >> -% 1348 0 obj +% 1350 0 obj << /Type /Annot /Subtype /Link @@ -15448,7 +15464,7 @@ stream /Rect [224.557 418.595 231.53 430.655] /A << /S /GoTo /D (table.2) >> >> -% 1349 0 obj +% 1351 0 obj << /Type /Annot /Subtype /Link @@ -15456,7 +15472,7 @@ stream /Rect [256.048 352.283 323.106 364.342] /A << /S /GoTo /D (descdata) >> >> -% 1350 0 obj +% 1352 0 obj << /Type /Annot /Subtype /Link @@ -15464,7 +15480,7 @@ stream /Rect [252.903 201.166 328.957 213.226] /A << /S /GoTo /D (vdata) >> >> -% 1351 0 obj +% 1353 0 obj << /Type /Annot /Subtype /Link @@ -15472,33 +15488,33 @@ stream /Rect [226.559 189.211 238.514 201.271] /A << /S /GoTo /D (table.16) >> >> -% 1355 0 obj +% 1357 0 obj << -/D [1353 0 R /XYZ 98.895 753.953 null] +/D [1355 0 R /XYZ 98.895 753.953 null] >> % 284 0 obj << -/D [1353 0 R /XYZ 99.895 716.092 null] +/D [1355 0 R /XYZ 99.895 716.092 null] >> -% 1356 0 obj +% 1358 0 obj << -/D [1353 0 R /XYZ 99.895 566.828 null] +/D [1355 0 R /XYZ 99.895 566.828 null] >> -% 1352 0 obj +% 1354 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1359 0 obj +% 1361 0 obj << /Type /Page -/Contents 1360 0 R -/Resources 1358 0 R +/Contents 1362 0 R +/Resources 1360 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1342 0 R -/Annots [ 1357 0 R ] +/Parent 1344 0 R +/Annots [ 1359 0 R ] >> -% 1357 0 obj +% 1359 0 obj << /Type /Annot /Subtype /Link @@ -15506,29 +15522,29 @@ stream /Rect [348.75 655.624 355.724 667.684] /A << /S /GoTo /D (section.6) >> >> -% 1361 0 obj +% 1363 0 obj << -/D [1359 0 R /XYZ 149.705 753.953 null] +/D [1361 0 R /XYZ 149.705 753.953 null] >> % 288 0 obj << -/D [1359 0 R /XYZ 150.705 716.092 null] +/D [1361 0 R /XYZ 150.705 716.092 null] >> -% 1358 0 obj +% 1360 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1367 0 obj +% 1369 0 obj << /Type /Page -/Contents 1368 0 R -/Resources 1366 0 R +/Contents 1370 0 R +/Resources 1368 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1342 0 R -/Annots [ 1362 0 R 1363 0 R 1364 0 R ] +/Parent 1344 0 R +/Annots [ 1364 0 R 1365 0 R 1366 0 R ] >> -% 1362 0 obj +% 1364 0 obj << /Type /Annot /Subtype /Link @@ -15536,7 +15552,7 @@ stream /Rect [368.549 344.818 444.603 356.877] /A << /S /GoTo /D (vdata) >> >> -% 1363 0 obj +% 1365 0 obj << /Type /Annot /Subtype /Link @@ -15544,7 +15560,7 @@ stream /Rect [326.652 332.863 338.608 344.922] /A << /S /GoTo /D (table.17) >> >> -% 1364 0 obj +% 1366 0 obj << /Type /Annot /Subtype /Link @@ -15552,58 +15568,42 @@ stream /Rect [291.943 264.733 359.001 276.793] /A << /S /GoTo /D (descdata) >> >> -% 1369 0 obj +% 1371 0 obj << -/D [1367 0 R /XYZ 98.895 753.953 null] +/D [1369 0 R /XYZ 98.895 753.953 null] >> % 292 0 obj << -/D [1367 0 R /XYZ 99.895 716.092 null] +/D [1369 0 R /XYZ 99.895 716.092 null] >> -% 1370 0 obj +% 1372 0 obj << -/D [1367 0 R /XYZ 99.895 513.636 null] +/D [1369 0 R /XYZ 99.895 513.636 null] >> -% 1366 0 obj +% 1368 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1136 0 R /F131 921 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1374 0 obj +% 1376 0 obj << /Type /Page -/Contents 1375 0 R -/Resources 1373 0 R +/Contents 1377 0 R +/Resources 1375 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1342 0 R -/Annots [ 1365 0 R 1372 0 R ] +/Parent 1344 0 R +/Annots [ 1367 0 R 1374 0 R ] >> -% 1378 0 obj +% 1380 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100645Z00'00') /ModDate (D:20180323100645Z00'00') >> -% 1379 0 obj -<< -/Type /ExtGState -/OPM 1 ->> -% 1380 0 obj -<< -/BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1382 0 R -/Type /Font -/FirstChar 48 -/LastChar 57 -/Widths [ 500 500 500 500 500 500 500 500 500 500] -/Encoding /WinAnsiEncoding -/Subtype /Type1 ->> endstream endobj -1385 0 obj +1387 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -15662,7 +15662,7 @@ r §¶¦^<ÜÛrc¨¯@vŒñ6@ì>Ƀ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ endstream endobj -1386 0 obj +1388 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -15735,7 +15735,7 @@ k ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1389 0 obj +1391 0 obj << /Length 3048 >> @@ -15755,7 +15755,7 @@ ET endstream endobj -1397 0 obj +1399 0 obj << /Length 7852 >> @@ -16020,7 +16020,7 @@ ET endstream endobj -1406 0 obj +1408 0 obj << /Length 5930 >> @@ -16074,7 +16074,7 @@ ET endstream endobj -1414 0 obj +1416 0 obj << /Length 3551 >> @@ -16094,7 +16094,7 @@ ET endstream endobj -1418 0 obj +1420 0 obj << /Length 321 >> @@ -16125,20 +16125,20 @@ ET endstream endobj -1401 0 obj +1403 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8_ov.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1420 0 R +/PTEX.InfoDict 1422 0 R /BBox [0 0 516 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1421 0 R ->>/Font << /R8 1422 0 R/R10 1423 0 R>> +/R7 1423 0 R +>>/Font << /R8 1424 0 R/R10 1425 0 R>> >> /Length 3413 /Filter /FlateDecode @@ -16152,7 +16152,7 @@ x >÷­ õïÅ7z3óm‘W=ò™¿ªOækª¨ù*óÕ#_e}0¾h;ׇ©›öÄ‚ÏýUm°xßPyPÇp}gZz®ŽÎâˆè«43©cˆŸLÂ̵1Y][V½üέ¦†5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½´â6Tl4©^lÉ]·íMª×µ6ÔNÉ‹»&ž%Ä›ºõ)ÕÃýÍ?Ô‹'ñQõ†:V\ïꛉÁ¿Ö†ÚU ñ¦n±Ý|îêˆÅ“ù zC+®wu‹mÐàƒ_kCí*¾Â\Ýb[=øÜ?Ô‹'ñ •Gè˜_ß™–ž«£³8"ºÇ*ÍÌÐ1ŸLÂ̵1Y=Æ¢zÚð¬÷mŒ,…uÑZMuÑ´úTYaUô„&Õ[ö…›:ÖZG¨žvõ_ºP=ß-Fü®5lËãouÃYË*ïoþ¦ŽX<‰½M+®7uÓy„àsÿ®µ¡6‰Ácü­n:±|îoêˆÅ“ù°§ÛÔ±âzS7¤>÷ïZj?˜|®bä+ÌT|æoêˆÅ“ø¸}ÛÔ±’¯2/P=ò™×ÚP[¿àƒŠ1þ` z¼¿ù›:bñ$>îÔ6u¬¸ÞÔM§W‚Ïý»Ö†Úå}qÇwf¾-òàªG>ó7uÄâÉ|Mõ#_e^ z䫬ÆïZ£ÁÎõaꦓ9Áçþ¦ŽX<‰o¨<¨c¸¾3-=WGgqDô«43©cˆŸLÂ̵1YÝö¬zy?¶¥ž5½xò–Ï]Oh5ÕE_ÐZèSYd…UÑZR½tNÆm¨ØÔn†]·ÚÍðÓ3ˆïZ£Áö, ífณguj7 ?ÏUõÒ‘Ø%ñ¹º ífàóÜßµ6Ô¡ðQņv3tè)øÜ?Õ‹'óAõ¦:V\ïê6´›Ïs×ÚPçcÈÚÍÐq-ñ™ª#Oâ£êMu¬ä«Ì Uoh7Ç_jðQõºÖnŒ?˜ªÞÔn†.â繪^:Óâ6Tlj7Cà‚Ïý]kCzyñÌÌ|[äª7µ›†|YõÒñ·k®W·¡Ý òUÖã»Öh°s}¸º ífðþõÁøy®ª§“*nRÇfìfÄàë,Žˆî±J33tlÄnFI ¶ÉÒˆèy.ª§Ó)žõ¾ í‘‘¥0¢.zB«©.ú‚ÖBŸÊ"+¬ŠžÐ¤zíÐn†Û®b­i7Cg _Vµ›á§ _µFƒmYbü­n81iYåýͨ#OâãAÀC+®7uÓ©ÈàsÕÚP‡Ácü­n:7|î?Ô‹'óáÌß¡Ž×›ºé®?Œ÷Æå‡ñ¶ŽùÃxü0î÷øúz~ÙëDõ¹žDí‡E]Ó×…aXŽí!Í>øïŸ×düoõ–‘¿Ö«\¯ç­ÜýÌ•çë»ýô—w-ÿ/Iÿõv×ï!o'ÈŸÿ`[G. endstream endobj -1426 0 obj +1428 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16211,7 +16211,7 @@ r §¶¦^<ÜÛrc¨¯@vŒñ6@ì>Ƀ¿]Wž$Ÿ’‚Žòg]Qõïæ¡ yú½%N»©”Ô­®¡ÿ U…··OÀû›ÄëC’¿ð\uƒÏÏnÞ_~å¶ÏCðÀ ›*¤é%™4€Éó¾÷vÜýÉÜ¢%‰كœ‹l0^2”«›ÃFŒ~ 996®=¹¯§­½§/¹ ¼`ðÍ/üvà Ípć0µ´e4:GÕ*ð­Ùîó,ÕÈ-¥%¥|€ 4×TtÐuuúü$5¥”…Û‡+ëJ\Þf§o´Ë[q¼æÁ¯ñ€ˆC +ðÓE€Ï'Ãl>Ž„hà,@Ñ[hZßBÁAñ¾ÿ¸Mrïë òeJ}­×xsi@ŒB¿`Ð_ ðö‡„³À£‚)×y`mq»GÜÚÚúz’Û½bøáÙòMà‚æ| Ët„Zû€®ˆ)Њ ùÙŽ›èuµNÒÁŽc°©pÊM”SWáo3„©°r#€«½å] a×5ÄéÊÍ¿+Wy{ê?q*>;^›Z9ëÚÕ —ºyÞƇŒ¬pºˆ‹€'óÑ‚ó\©h"Õ²¿k¶px”’¦ÑتTŒÛÛRà)ú§°oǤ°„p!ÈUK¹ÍQìÿ,…KŸ endstream endobj -1427 0 obj +1429 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16284,7 +16284,7 @@ k ÒOWk'T²_Ž–Pài³ì¤®¦$1R¸(Ïlç?Àÿñå¼£ endstream endobj -1433 0 obj +1435 0 obj << /Length 8614 >> @@ -16538,7 +16538,7 @@ ET endstream endobj -1438 0 obj +1440 0 obj << /Length 1418 >> @@ -16572,7 +16572,7 @@ ET endstream endobj -1445 0 obj +1447 0 obj << /Length 7631 >> @@ -16774,7 +16774,7 @@ ET endstream endobj -1452 0 obj +1454 0 obj << /Length 4073 >> @@ -16907,7 +16907,7 @@ ET endstream endobj -1456 0 obj +1458 0 obj << /Length 6713 >> @@ -16964,7 +16964,7 @@ ET endstream endobj -1461 0 obj +1463 0 obj << /Length 6793 >> @@ -17042,7 +17042,7 @@ ET endstream endobj -1467 0 obj +1469 0 obj << /Length 11640 >> @@ -17113,7 +17113,7 @@ ET endstream endobj -1473 0 obj +1475 0 obj << /Length 2973 >> @@ -17148,7 +17148,7 @@ ET endstream endobj -1484 0 obj +1486 0 obj << /Length 7200 >> @@ -17233,7 +17233,7 @@ ET endstream endobj -1489 0 obj +1491 0 obj << /Length 3082 >> @@ -17276,162 +17276,44 @@ ET endstream endobj -1498 0 obj +1384 0 obj << -/Length 6209 +/Type /ObjStm +/N 100 +/First 996 +/Length 11978 +>> +stream +1381 0 1382 43 1383 250 1385 488 1386 764 1367 1000 1374 1147 1378 1294 1379 1353 1375 1412 +1390 1549 1392 1667 1389 1725 1398 1793 1394 1950 1395 2094 1396 2239 1400 2386 296 2445 1401 2503 +1397 2562 1407 2698 1402 2855 1404 3001 1405 3146 1409 3292 1410 3350 1411 3408 1412 3466 1406 3524 +1415 3632 1417 3750 1414 3809 1419 3877 1422 3995 1423 4122 1424 4165 1425 4372 1426 4610 1427 4886 +1421 5122 1413 5180 1418 5238 1434 5335 1430 5492 1431 5633 1432 5780 1436 5927 300 5986 1437 6044 +1433 6103 1439 6239 1441 6357 1438 6415 1446 6510 1443 6649 1448 6796 304 6855 1449 6913 1445 6972 +1453 7108 1444 7265 1450 7408 1451 7551 1455 7698 1452 7756 1457 7864 1459 7982 308 8041 312 8099 +1456 8156 1462 8292 1460 8431 1464 8578 1465 8636 1461 8694 1468 8816 1466 8955 1470 9113 1472 9172 +1467 9231 1474 9382 1476 9500 1477 9558 1478 9616 1479 9674 1480 9732 1481 9790 1473 9848 1485 9930 +1483 10069 1487 10214 316 10273 1484 10331 1490 10453 1488 10592 1492 10750 1493 10808 1494 10866 1495 10924 +% 1381 0 obj +<< +/Type /ExtGState +/OPM 1 >> -stream -0 g 0 G -0 g 0 G -BT -/F75 11.9552 Tf 150.705 706.129 Td [(6.3)-1000(psb)]TJ -ET -q -1 0 0 1 198.238 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F75 11.9552 Tf 201.825 706.129 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(routine)]TJ -0 g 0 G -0 g 0 G -/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdasb\050desc_a,)-525(info)-525([,)-525(mold]\051)]TJ -0 g 0 G -/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 625.596 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ -0 g 0 G -/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ -ET -q -1 0 0 1 384.755 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -258.11 -19.925 Td [(mold)]TJ -0 g 0 G -/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(index)-250(storage.)]TJ -3.567 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 509.83 Tm [(Speci\002ed)-212(as:)-295(a)-212(object)-212(of)-212(type)-213(derived)-212(fr)19(om)-212(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 394.97 509.83 Tm [(psb)]TJ -ET -q -1 0 0 1 411.288 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 414.427 509.83 Td [(T)]TJ -ET -q -1 0 0 1 420.285 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 423.423 509.83 Td [(base)]TJ -ET -q -1 0 0 1 444.972 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 448.11 509.83 Td [(vect)]TJ -ET -q -1 0 0 1 469.659 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 472.797 509.83 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.719 509.83 Tm [(.)]TJ -0 g 0 G -/F75 9.9626 Tf 1 0 0 1 150.705 487.912 Tm [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 468.186 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F75 9.9626 Tf 174.207 467.987 Td [(a)]TJ -0 g 0 G -/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 420.366 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 363.206 420.166 Td [(desc)]TJ -ET -q -1 0 0 1 384.755 420.366 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 387.893 420.166 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ -0 g 0 G -/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ -0 g 0 G -/F84 9.9626 Tf 12.453 -19.926 Td [(1.)]TJ -0 g 0 G - [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(assembled)-250(state.)]TJ 1.017 0 0 1 150.396 290.652 Tm [(This)-246(call)-245(will)-246(set)-246(up)-245(all)-246(the)-246(necessary)-246(informat)1(ion)-246(for)-246(the)-246(halo)-245(data)-246(exchanges.)]TJ 1.02 0 0 1 150.705 278.697 Tm [(In)-289(doing)-289(so,)-301(the)-289(library)-289(will)-289(need)-290(to)-289(identify)-289(the)-289(set)-290(of)-289(pr)18(ocesses)-289(owning)-290(the)]TJ 1.02 0 0 1 150.705 266.742 Tm [(halo)-332(indices)-332(thr)18(ough)-332(the)-331(use)-332(of)-332(the)]TJ/F131 9.9626 Tf 1 0 0 1 314.257 266.742 Tm [(desc%fnd_owner\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 401.314 266.742 Tm [(method;)-375(the)-332(owning)]TJ 1.02 0 0 1 150.406 254.786 Tm [(pr)18(ocesses)-361(ar)18(e)-361(the)-361(topological)-360(neighbours)-361(of)-361(the)-361(cal)1(ling)-361(pr)17(ocess.)-650(If)-361(the)-361(user)]TJ 1.007 0 0 1 150.705 242.831 Tm [(has)-249(some)-249(backgr)18(ound)-249(information)-249(on)-249(the)-249(pr)18(ocesses)-249(that)-249(ar)18(e)-249(neighbours)-249(of)-249(the)]TJ 0.989 0 0 1 150.705 230.876 Tm [(curr)18(ent)-253(one,)-253(it)-253(is)-253(possible)-253(to)-253(specify)-253(explicitly)-253(the)-253(list)-253(of)-253(adjacent)-253(pr)18(ocesses)-253(with)]TJ 1.003 0 0 1 150.705 218.921 Tm [(a)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 187.132 218.921 Tm [(desc%set_p_adjcncy\050list\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 312.66 218.921 Tm [(;)-249(this)-249(will)-250(speed)-249(up)-249(the)-249(subsequent)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 206.966 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ -0 g 0 G - 119.801 -116.528 Td [(76)]TJ -0 g 0 G -ET - -endstream -endobj -1383 0 obj +% 1382 0 obj << -/Type /ObjStm -/N 100 -/First 997 -/Length 11971 ->> -stream -1381 0 1382 238 1384 514 1365 750 1372 897 1376 1044 1377 1103 1373 1162 1388 1299 1390 1417 -1387 1475 1396 1543 1392 1700 1393 1844 1394 1989 1398 2136 296 2195 1399 2253 1395 2312 1405 2448 -1400 2605 1402 2751 1403 2896 1407 3042 1408 3100 1409 3158 1410 3216 1404 3274 1413 3382 1415 3500 -1412 3559 1417 3627 1420 3745 1421 3872 1422 3915 1423 4122 1424 4360 1425 4636 1419 4872 1411 4930 -1416 4988 1432 5085 1428 5242 1429 5383 1430 5530 1434 5677 300 5736 1435 5794 1431 5853 1437 5989 -1439 6107 1436 6165 1444 6260 1441 6399 1446 6546 304 6605 1447 6663 1443 6722 1451 6858 1442 7015 -1448 7158 1449 7301 1453 7448 1450 7506 1455 7614 1457 7732 308 7791 312 7849 1454 7906 1460 8042 -1458 8181 1462 8328 1463 8386 1459 8444 1466 8566 1464 8705 1468 8863 1470 8922 1465 8981 1472 9132 -1474 9250 1475 9308 1476 9366 1477 9424 1478 9482 1479 9540 1471 9598 1483 9680 1481 9819 1485 9964 -316 10023 1482 10081 1488 10203 1486 10342 1490 10500 1491 10558 1492 10616 1493 10674 1487 10732 1497 10826 -% 1381 0 obj +/BaseFont /XYUGDR+Times-Roman +/FontDescriptor 1385 0 R +/Type /Font +/FirstChar 48 +/LastChar 57 +/Widths [ 500 500 500 500 500 500 500 500 500 500] +/Encoding /WinAnsiEncoding +/Subtype /Type1 +>> +% 1383 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1384 0 R +/FontDescriptor 1386 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -17439,7 +17321,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1382 0 obj +% 1385 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -17452,9 +17334,9 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1385 0 R +/FontFile3 1387 0 R >> -% 1384 0 obj +% 1386 0 obj << /Type /FontDescriptor /FontName /XISTAL+Times-Bold @@ -17467,9 +17349,9 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1386 0 R +/FontFile3 1388 0 R >> -% 1365 0 obj +% 1367 0 obj << /Type /Annot /Subtype /Link @@ -17477,7 +17359,7 @@ stream /Rect [211.646 625.272 223.601 634.682] /A << /S /GoTo /D (table.17) >> >> -% 1372 0 obj +% 1374 0 obj << /Type /Annot /Subtype /Link @@ -17485,47 +17367,47 @@ stream /Rect [459.719 276.439 466.793 290.202] /A << /S /GoTo /D (figure.3) >> >> -% 1376 0 obj +% 1378 0 obj << -/D [1374 0 R /XYZ 149.705 753.953 null] +/D [1376 0 R /XYZ 149.705 753.953 null] >> -% 1377 0 obj +% 1379 0 obj << -/D [1374 0 R /XYZ 150.705 326.444 null] +/D [1376 0 R /XYZ 150.705 326.444 null] >> -% 1373 0 obj +% 1375 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> -/XObject << /Im4 1371 0 R >> +/XObject << /Im4 1373 0 R >> /ProcSet [ /PDF /Text ] >> -% 1388 0 obj +% 1390 0 obj << /Type /Page -/Contents 1389 0 R -/Resources 1387 0 R +/Contents 1391 0 R +/Resources 1389 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1391 0 R +/Parent 1393 0 R >> -% 1390 0 obj +% 1392 0 obj << -/D [1388 0 R /XYZ 98.895 753.953 null] +/D [1390 0 R /XYZ 98.895 753.953 null] >> -% 1387 0 obj +% 1389 0 obj << /Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1396 0 obj +% 1398 0 obj << /Type /Page -/Contents 1397 0 R -/Resources 1395 0 R +/Contents 1399 0 R +/Resources 1397 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1391 0 R -/Annots [ 1392 0 R 1393 0 R 1394 0 R ] +/Parent 1393 0 R +/Annots [ 1394 0 R 1395 0 R 1396 0 R ] >> -% 1392 0 obj +% 1394 0 obj << /Type /Annot /Subtype /Link @@ -17533,7 +17415,7 @@ stream /Rect [419.358 345.485 495.412 357.545] /A << /S /GoTo /D (vdata) >> >> -% 1393 0 obj +% 1395 0 obj << /Type /Annot /Subtype /Link @@ -17541,7 +17423,7 @@ stream /Rect [377.462 333.53 389.417 345.59] /A << /S /GoTo /D (table.18) >> >> -% 1394 0 obj +% 1396 0 obj << /Type /Annot /Subtype /Link @@ -17549,33 +17431,33 @@ stream /Rect [342.753 266.146 409.811 278.205] /A << /S /GoTo /D (descdata) >> >> -% 1398 0 obj +% 1400 0 obj << -/D [1396 0 R /XYZ 149.705 753.953 null] +/D [1398 0 R /XYZ 149.705 753.953 null] >> % 296 0 obj << -/D [1396 0 R /XYZ 150.705 716.092 null] +/D [1398 0 R /XYZ 150.705 716.092 null] >> -% 1399 0 obj +% 1401 0 obj << -/D [1396 0 R /XYZ 150.705 510.975 null] +/D [1398 0 R /XYZ 150.705 510.975 null] >> -% 1395 0 obj +% 1397 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1405 0 obj +% 1407 0 obj << /Type /Page -/Contents 1406 0 R -/Resources 1404 0 R +/Contents 1408 0 R +/Resources 1406 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1391 0 R -/Annots [ 1400 0 R 1402 0 R 1403 0 R ] +/Parent 1393 0 R +/Annots [ 1402 0 R 1404 0 R 1405 0 R ] >> -% 1400 0 obj +% 1402 0 obj << /Type /Annot /Subtype /Link @@ -17583,7 +17465,7 @@ stream /Rect [202.52 554.876 214.475 566.936] /A << /S /GoTo /D (table.18) >> >> -% 1402 0 obj +% 1404 0 obj << /Type /Annot /Subtype /Link @@ -17591,7 +17473,7 @@ stream /Rect [408.907 325.46 415.98 339.127] /A << /S /GoTo /D (figure.4) >> >> -% 1403 0 obj +% 1405 0 obj << /Type /Annot /Subtype /Link @@ -17599,67 +17481,67 @@ stream /Rect [306.22 301.825 313.294 313.885] /A << /S /GoTo /D (figure.3) >> >> -% 1407 0 obj +% 1409 0 obj << -/D [1405 0 R /XYZ 98.895 753.953 null] +/D [1407 0 R /XYZ 98.895 753.953 null] >> -% 1408 0 obj +% 1410 0 obj << -/D [1405 0 R /XYZ 99.895 464.818 null] +/D [1407 0 R /XYZ 99.895 464.818 null] >> -% 1409 0 obj +% 1411 0 obj << -/D [1405 0 R /XYZ 99.895 430.343 null] +/D [1407 0 R /XYZ 99.895 430.343 null] >> -% 1410 0 obj +% 1412 0 obj << -/D [1405 0 R /XYZ 99.895 386.508 null] +/D [1407 0 R /XYZ 99.895 386.508 null] >> -% 1404 0 obj +% 1406 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1413 0 obj +% 1415 0 obj << /Type /Page -/Contents 1414 0 R -/Resources 1412 0 R +/Contents 1416 0 R +/Resources 1414 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1391 0 R +/Parent 1393 0 R >> -% 1415 0 obj +% 1417 0 obj << -/D [1413 0 R /XYZ 149.705 753.953 null] +/D [1415 0 R /XYZ 149.705 753.953 null] >> -% 1412 0 obj +% 1414 0 obj << /Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1417 0 obj +% 1419 0 obj << /Type /Page -/Contents 1418 0 R -/Resources 1416 0 R +/Contents 1420 0 R +/Resources 1418 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1391 0 R +/Parent 1393 0 R >> -% 1420 0 obj +% 1422 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100658Z00'00') /ModDate (D:20180323100658Z00'00') >> -% 1421 0 obj +% 1423 0 obj << /Type /ExtGState /OPM 1 >> -% 1422 0 obj +% 1424 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1424 0 R +/FontDescriptor 1426 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -17667,10 +17549,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1423 0 obj +% 1425 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1425 0 R +/FontDescriptor 1427 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -17678,7 +17560,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1424 0 obj +% 1426 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -17691,9 +17573,9 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1426 0 R +/FontFile3 1428 0 R >> -% 1425 0 obj +% 1427 0 obj << /Type /FontDescriptor /FontName /XISTAL+Times-Bold @@ -17706,32 +17588,32 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1427 0 R +/FontFile3 1429 0 R >> -% 1419 0 obj +% 1421 0 obj << -/D [1417 0 R /XYZ 98.895 753.953 null] +/D [1419 0 R /XYZ 98.895 753.953 null] >> -% 1411 0 obj +% 1413 0 obj << -/D [1417 0 R /XYZ 99.895 282.918 null] +/D [1419 0 R /XYZ 99.895 282.918 null] >> -% 1416 0 obj +% 1418 0 obj << /Font << /F84 675 0 R >> -/XObject << /Im5 1401 0 R >> +/XObject << /Im5 1403 0 R >> /ProcSet [ /PDF /Text ] >> -% 1432 0 obj +% 1434 0 obj << /Type /Page -/Contents 1433 0 R -/Resources 1431 0 R +/Contents 1435 0 R +/Resources 1433 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1391 0 R -/Annots [ 1428 0 R 1429 0 R 1430 0 R ] +/Parent 1393 0 R +/Annots [ 1430 0 R 1431 0 R 1432 0 R ] >> -% 1428 0 obj +% 1430 0 obj << /Type /Annot /Subtype /Link @@ -17739,7 +17621,7 @@ stream /Rect [419.358 298.8 495.412 310.86] /A << /S /GoTo /D (vdata) >> >> -% 1429 0 obj +% 1431 0 obj << /Type /Annot /Subtype /Link @@ -17747,7 +17629,7 @@ stream /Rect [255.331 289.495 267.287 298.905] /A << /S /GoTo /D (table.19) >> >> -% 1430 0 obj +% 1432 0 obj << /Type /Annot /Subtype /Link @@ -17755,50 +17637,50 @@ stream /Rect [342.753 218.115 409.811 230.175] /A << /S /GoTo /D (descdata) >> >> -% 1434 0 obj +% 1436 0 obj << -/D [1432 0 R /XYZ 149.705 753.953 null] +/D [1434 0 R /XYZ 149.705 753.953 null] >> % 300 0 obj << -/D [1432 0 R /XYZ 150.705 716.092 null] +/D [1434 0 R /XYZ 150.705 716.092 null] >> -% 1435 0 obj +% 1437 0 obj << -/D [1432 0 R /XYZ 150.705 460.417 null] +/D [1434 0 R /XYZ 150.705 460.417 null] >> -% 1431 0 obj +% 1433 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1437 0 obj +% 1439 0 obj << /Type /Page -/Contents 1438 0 R -/Resources 1436 0 R +/Contents 1440 0 R +/Resources 1438 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1440 0 R +/Parent 1442 0 R >> -% 1439 0 obj +% 1441 0 obj << -/D [1437 0 R /XYZ 98.895 753.953 null] +/D [1439 0 R /XYZ 98.895 753.953 null] >> -% 1436 0 obj +% 1438 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1444 0 obj +% 1446 0 obj << /Type /Page -/Contents 1445 0 R -/Resources 1443 0 R +/Contents 1447 0 R +/Resources 1445 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1440 0 R -/Annots [ 1441 0 R ] +/Parent 1442 0 R +/Annots [ 1443 0 R ] >> -% 1441 0 obj +% 1443 0 obj << /Type /Annot /Subtype /Link @@ -17806,33 +17688,33 @@ stream /Rect [342.753 211.064 409.811 223.124] /A << /S /GoTo /D (descdata) >> >> -% 1446 0 obj +% 1448 0 obj << -/D [1444 0 R /XYZ 149.705 753.953 null] +/D [1446 0 R /XYZ 149.705 753.953 null] >> % 304 0 obj << -/D [1444 0 R /XYZ 150.705 716.092 null] +/D [1446 0 R /XYZ 150.705 716.092 null] >> -% 1447 0 obj +% 1449 0 obj << -/D [1444 0 R /XYZ 150.705 449.977 null] +/D [1446 0 R /XYZ 150.705 449.977 null] >> -% 1443 0 obj +% 1445 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1451 0 obj +% 1453 0 obj << /Type /Page -/Contents 1452 0 R -/Resources 1450 0 R +/Contents 1454 0 R +/Resources 1452 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1440 0 R -/Annots [ 1442 0 R 1448 0 R 1449 0 R ] +/Parent 1442 0 R +/Annots [ 1444 0 R 1450 0 R 1451 0 R ] >> -% 1442 0 obj +% 1444 0 obj << /Type /Annot /Subtype /Link @@ -17840,7 +17722,7 @@ stream /Rect [287.51 642.547 363.564 654.607] /A << /S /GoTo /D (vdata) >> >> -% 1448 0 obj +% 1450 0 obj << /Type /Annot /Subtype /Link @@ -17848,7 +17730,7 @@ stream /Rect [123.806 542.921 199.86 554.981] /A << /S /GoTo /D (vdata) >> >> -% 1449 0 obj +% 1451 0 obj << /Type /Annot /Subtype /Link @@ -17856,50 +17738,50 @@ stream /Rect [421.516 542.921 433.471 554.981] /A << /S /GoTo /D (table.20) >> >> -% 1453 0 obj +% 1455 0 obj << -/D [1451 0 R /XYZ 98.895 753.953 null] +/D [1453 0 R /XYZ 98.895 753.953 null] >> -% 1450 0 obj +% 1452 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1455 0 obj +% 1457 0 obj << /Type /Page -/Contents 1456 0 R -/Resources 1454 0 R +/Contents 1458 0 R +/Resources 1456 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1440 0 R +/Parent 1442 0 R >> -% 1457 0 obj +% 1459 0 obj << -/D [1455 0 R /XYZ 149.705 753.953 null] +/D [1457 0 R /XYZ 149.705 753.953 null] >> % 308 0 obj << -/D [1455 0 R /XYZ 150.705 716.092 null] +/D [1457 0 R /XYZ 150.705 716.092 null] >> % 312 0 obj << -/D [1455 0 R /XYZ 150.705 691.48 null] +/D [1457 0 R /XYZ 150.705 691.48 null] >> -% 1454 0 obj +% 1456 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1460 0 obj +% 1462 0 obj << /Type /Page -/Contents 1461 0 R -/Resources 1459 0 R +/Contents 1463 0 R +/Resources 1461 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1440 0 R -/Annots [ 1458 0 R ] +/Parent 1442 0 R +/Annots [ 1460 0 R ] >> -% 1458 0 obj +% 1460 0 obj << /Type /Annot /Subtype /Link @@ -17907,29 +17789,29 @@ stream /Rect [291.943 324.687 359.001 336.746] /A << /S /GoTo /D (descdata) >> >> -% 1462 0 obj +% 1464 0 obj << -/D [1460 0 R /XYZ 98.895 753.953 null] +/D [1462 0 R /XYZ 98.895 753.953 null] >> -% 1463 0 obj +% 1465 0 obj << -/D [1460 0 R /XYZ 99.895 234.157 null] +/D [1462 0 R /XYZ 99.895 234.157 null] >> -% 1459 0 obj +% 1461 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1466 0 obj +% 1468 0 obj << /Type /Page -/Contents 1467 0 R -/Resources 1465 0 R +/Contents 1469 0 R +/Resources 1467 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1440 0 R -/Annots [ 1464 0 R ] +/Parent 1442 0 R +/Annots [ 1466 0 R ] >> -% 1464 0 obj +% 1466 0 obj << /Type /Annot /Subtype /Link @@ -17937,66 +17819,66 @@ stream /Rect [405.298 215.702 427.216 227.166] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1468 0 obj +% 1470 0 obj << -/D [1466 0 R /XYZ 149.705 753.953 null] +/D [1468 0 R /XYZ 149.705 753.953 null] >> -% 1470 0 obj +% 1472 0 obj << -/D [1466 0 R /XYZ 150.705 133.283 null] +/D [1468 0 R /XYZ 150.705 133.283 null] >> -% 1465 0 obj +% 1467 0 obj << -/Font << /F131 921 0 R /F84 675 0 R /F75 673 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R /F134 1469 0 R >> +/Font << /F131 921 0 R /F84 675 0 R /F75 673 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R /F134 1471 0 R >> /ProcSet [ /PDF /Text ] >> -% 1472 0 obj +% 1474 0 obj << /Type /Page -/Contents 1473 0 R -/Resources 1471 0 R +/Contents 1475 0 R +/Resources 1473 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1480 0 R ->> -% 1474 0 obj -<< -/D [1472 0 R /XYZ 98.895 753.953 null] ->> -% 1475 0 obj -<< -/D [1472 0 R /XYZ 99.895 716.092 null] +/Parent 1482 0 R >> % 1476 0 obj << -/D [1472 0 R /XYZ 99.895 687.379 null] +/D [1474 0 R /XYZ 98.895 753.953 null] >> % 1477 0 obj << -/D [1472 0 R /XYZ 99.895 667.454 null] +/D [1474 0 R /XYZ 99.895 716.092 null] >> % 1478 0 obj << -/D [1472 0 R /XYZ 99.895 626.268 null] +/D [1474 0 R /XYZ 99.895 687.379 null] >> % 1479 0 obj << -/D [1472 0 R /XYZ 99.895 567.828 null] +/D [1474 0 R /XYZ 99.895 667.454 null] >> -% 1471 0 obj +% 1480 0 obj +<< +/D [1474 0 R /XYZ 99.895 626.268 null] +>> +% 1481 0 obj +<< +/D [1474 0 R /XYZ 99.895 567.828 null] +>> +% 1473 0 obj << /Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1483 0 obj +% 1485 0 obj << /Type /Page -/Contents 1484 0 R -/Resources 1482 0 R +/Contents 1486 0 R +/Resources 1484 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1480 0 R -/Annots [ 1481 0 R ] +/Parent 1482 0 R +/Annots [ 1483 0 R ] >> -% 1481 0 obj +% 1483 0 obj << /Type /Annot /Subtype /Link @@ -18004,29 +17886,29 @@ stream /Rect [342.753 116.52 409.811 128.58] /A << /S /GoTo /D (descdata) >> >> -% 1485 0 obj +% 1487 0 obj << -/D [1483 0 R /XYZ 149.705 753.953 null] +/D [1485 0 R /XYZ 149.705 753.953 null] >> % 316 0 obj << -/D [1483 0 R /XYZ 150.705 716.092 null] +/D [1485 0 R /XYZ 150.705 716.092 null] >> -% 1482 0 obj +% 1484 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1488 0 obj +% 1490 0 obj << /Type /Page -/Contents 1489 0 R -/Resources 1487 0 R +/Contents 1491 0 R +/Resources 1489 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1480 0 R -/Annots [ 1486 0 R ] +/Parent 1482 0 R +/Annots [ 1488 0 R ] >> -% 1486 0 obj +% 1488 0 obj << /Type /Annot /Subtype /Link @@ -18034,138 +17916,258 @@ stream /Rect [278.165 401.451 300.083 413.511] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1490 0 obj -<< -/D [1488 0 R /XYZ 98.895 753.953 null] ->> -% 1491 0 obj -<< -/D [1488 0 R /XYZ 99.895 496.698 null] ->> % 1492 0 obj << -/D [1488 0 R /XYZ 99.895 474.179 null] +/D [1490 0 R /XYZ 98.895 753.953 null] >> % 1493 0 obj << -/D [1488 0 R /XYZ 99.895 430.343 null] +/D [1490 0 R /XYZ 99.895 496.698 null] >> -% 1487 0 obj +% 1494 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> -/ProcSet [ /PDF /Text ] +/D [1490 0 R /XYZ 99.895 474.179 null] >> -% 1497 0 obj +% 1495 0 obj << -/Type /Page -/Contents 1498 0 R -/Resources 1496 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1480 0 R -/Annots [ 1494 0 R 1495 0 R ] +/D [1490 0 R /XYZ 99.895 430.343 null] >> endstream endobj -1506 0 obj +1501 0 obj << -/Length 3173 +/Length 6209 >> stream 0 g 0 G 0 g 0 G BT -/F75 11.9552 Tf 99.895 706.129 Td [(6.4)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.3)-1000(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F75 11.9552 Tf 151.016 706.129 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F131 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_cdcpy\050desc_in,)-525(desc_out,)-525(info\051)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdasb\050desc_a,)-525(info)-525([,)-525(mold]\051)]TJ 0 g 0 G /F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ ET q -1 0 0 1 120.408 625.596 cm +1 0 0 1 171.218 625.596 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F75 9.9626 Tf 123.397 625.397 Td [(in)]TJ +/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ 0 g 0 G -/F84 9.9626 Tf 14.386 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -12.981 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG /F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 577.775 cm +1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 312.397 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ ET q -1 0 0 1 333.945 577.775 cm +1 0 0 1 384.755 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 337.084 577.576 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ 0 g 0 G -/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G +/F75 9.9626 Tf -258.11 -19.925 Td [(mold)]TJ 0 g 0 G - 0 -19.925 Td [(desc)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(index)-250(storage.)]TJ -3.567 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 509.83 Tm [(Speci\002ed)-212(as:)-295(a)-212(object)-212(of)-212(type)-213(derived)-212(fr)19(om)-212(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 394.97 509.83 Tm [(psb)]TJ ET q -1 0 0 1 120.408 535.932 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +1 0 0 1 411.288 510.029 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F75 9.9626 Tf 123.397 535.733 Td [(out)]TJ -0 g 0 G -/F84 9.9626 Tf 19.925 0 Td [(the)-250(communication)-250(descriptor)-250(copy)111(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 414.427 509.83 Td [(T)]TJ ET q -1 0 0 1 309.258 488.112 cm +1 0 0 1 420.285 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 312.397 487.912 Td [(desc)]TJ +/F131 9.9626 Tf 423.423 509.83 Td [(base)]TJ ET q -1 0 0 1 333.945 488.112 cm +1 0 0 1 444.972 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F131 9.9626 Tf 337.084 487.912 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ +/F131 9.9626 Tf 448.11 509.83 Td [(vect)]TJ +ET +q +1 0 0 1 469.659 510.029 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 472.797 509.83 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.719 509.83 Tm [(.)]TJ 0 g 0 G -/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 487.912 Tm [(On)-250(Return)]TJ 0 g 0 G - 142.357 -329.728 Td [(77)]TJ 0 g 0 G + 0 -19.925 Td [(desc)]TJ ET - +q +1 0 0 1 171.218 468.186 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 467.987 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 420.366 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 420.166 Td [(desc)]TJ +ET +q +1 0 0 1 384.755 420.366 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 387.893 420.166 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.453 -19.926 Td [(1.)]TJ +0 g 0 G + [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(assembled)-250(state.)]TJ 1.017 0 0 1 150.396 290.652 Tm [(This)-246(call)-245(will)-246(set)-246(up)-245(all)-246(the)-246(necessary)-246(informat)1(ion)-246(for)-246(the)-246(halo)-245(data)-246(exchanges.)]TJ 1.02 0 0 1 150.705 278.697 Tm [(In)-289(doing)-289(so,)-301(the)-289(library)-289(will)-289(need)-290(to)-289(identify)-289(the)-289(set)-290(of)-289(pr)18(ocesses)-289(owning)-290(the)]TJ 1.02 0 0 1 150.705 266.742 Tm [(halo)-332(indices)-332(thr)18(ough)-332(the)-331(use)-332(of)-332(the)]TJ/F131 9.9626 Tf 1 0 0 1 314.257 266.742 Tm [(desc%fnd_owner\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 401.314 266.742 Tm [(method;)-375(the)-332(owning)]TJ 1.02 0 0 1 150.406 254.786 Tm [(pr)18(ocesses)-361(ar)18(e)-361(the)-361(topological)-360(neighbours)-361(of)-361(the)-361(cal)1(ling)-361(pr)17(ocess.)-650(If)-361(the)-361(user)]TJ 1.007 0 0 1 150.705 242.831 Tm [(has)-249(some)-249(backgr)18(ound)-249(information)-249(on)-249(the)-249(pr)18(ocesses)-249(that)-249(ar)18(e)-249(neighbours)-249(of)-249(the)]TJ 0.989 0 0 1 150.705 230.876 Tm [(curr)18(ent)-253(one,)-253(it)-253(is)-253(possible)-253(to)-253(specify)-253(explicitly)-253(the)-253(list)-253(of)-253(adjacent)-253(pr)18(ocesses)-253(with)]TJ 1.003 0 0 1 150.705 218.921 Tm [(a)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 187.132 218.921 Tm [(desc%set_p_adjcncy\050list\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 312.66 218.921 Tm [(;)-249(this)-249(will)-250(speed)-249(up)-249(the)-249(subsequent)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 206.966 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ +0 g 0 G + 119.801 -116.528 Td [(76)]TJ +0 g 0 G +ET + +endstream +endobj +1508 0 obj +<< +/Length 3173 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(6.4)-1000(psb)]TJ +ET +q +1 0 0 1 147.429 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 151.016 706.129 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_cdcpy\050desc_in,)-525(desc_out,)-525(info\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 120.408 625.596 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 123.397 625.397 Td [(in)]TJ +0 g 0 G +/F84 9.9626 Tf 14.386 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -12.981 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 312.397 577.576 Td [(desc)]TJ +ET +q +1 0 0 1 333.945 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 337.084 577.576 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 120.408 535.932 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 123.397 535.733 Td [(out)]TJ +0 g 0 G +/F84 9.9626 Tf 19.925 0 Td [(the)-250(communication)-250(descriptor)-250(copy)111(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 488.112 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 312.397 487.912 Td [(desc)]TJ +ET +q +1 0 0 1 333.945 488.112 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 337.084 487.912 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 142.357 -329.728 Td [(77)]TJ +0 g 0 G +ET + endstream endobj -1511 0 obj +1513 0 obj << /Length 2173 >> @@ -18234,7 +18236,7 @@ ET endstream endobj -1517 0 obj +1519 0 obj << /Length 5921 >> @@ -18344,7 +18346,7 @@ ET endstream endobj -1522 0 obj +1524 0 obj << /Length 1751 >> @@ -18367,7 +18369,7 @@ ET endstream endobj -1530 0 obj +1532 0 obj << /Length 5941 >> @@ -18474,7 +18476,7 @@ ET endstream endobj -1535 0 obj +1537 0 obj << /Length 1308 >> @@ -18501,7 +18503,7 @@ ET endstream endobj -1543 0 obj +1545 0 obj << /Length 5477 >> @@ -18562,7 +18564,7 @@ ET endstream endobj -1549 0 obj +1551 0 obj << /Length 7399 >> @@ -18688,7 +18690,7 @@ ET endstream endobj -1558 0 obj +1560 0 obj << /Length 5282 >> @@ -18727,7 +18729,7 @@ ET endstream endobj -1572 0 obj +1574 0 obj << /Length 6916 >> @@ -18887,7 +18889,7 @@ ET endstream endobj -1576 0 obj +1578 0 obj << /Length 3492 >> @@ -18931,7 +18933,7 @@ ET endstream endobj -1589 0 obj +1591 0 obj << /Length 2995 >> @@ -19022,7 +19024,7 @@ ET endstream endobj -1595 0 obj +1597 0 obj << /Length 3920 >> @@ -19121,7 +19123,7 @@ ET endstream endobj -1602 0 obj +1604 0 obj << /Length 6526 >> @@ -19231,25 +19233,39 @@ ET endstream endobj -1501 0 obj +1496 0 obj << /Type /ObjStm /N 100 -/First 979 -/Length 10358 ->> -stream -1494 0 1495 145 1499 291 320 350 1500 408 1496 467 1505 562 1502 710 1503 855 1507 1002 -324 1060 1504 1117 1510 1212 1508 1351 1512 1496 328 1555 1509 1613 1516 1708 1513 1856 1514 2001 -1518 2148 332 2206 1515 2263 1521 2385 1523 2503 1524 2562 1525 2621 1520 2680 1529 2762 1526 2910 -1527 3057 1531 3202 336 3260 1532 3317 1528 3375 1534 3470 1536 3588 1537 3647 1538 3706 1539 3765 -1533 3824 1542 3919 1544 4037 340 4095 1541 4152 1548 4274 1540 4431 1545 4574 1546 4719 1550 4862 -1551 4921 1552 4979 1553 5038 1554 5097 1555 5156 1547 5215 1557 5337 1559 5455 1560 5513 1561 5571 -1562 5629 1563 5687 1564 5745 1565 5803 1556 5861 1571 5984 1567 6141 1568 6288 1569 6433 1573 6580 -344 6639 1570 6697 1575 6792 1577 6910 1578 6968 1579 7026 1580 7084 1581 7142 1582 7200 1583 7258 -1584 7316 1574 7374 1588 7469 1585 7617 1586 7760 1590 7907 348 7966 1587 8024 1594 8119 1591 8267 -1592 8412 1596 8559 352 8617 1597 8674 1593 8732 1601 8827 1598 8975 1599 9118 1603 9262 356 9321 -% 1494 0 obj +/First 978 +/Length 10482 +>> +stream +1489 0 1500 94 1497 242 1498 387 1502 533 320 592 1503 650 1499 709 1507 804 1504 952 +1505 1097 1509 1244 324 1302 1506 1359 1512 1454 1510 1593 1514 1738 328 1797 1511 1855 1518 1950 +1515 2098 1516 2243 1520 2390 332 2448 1517 2505 1523 2627 1525 2745 1526 2804 1527 2863 1522 2922 +1531 3004 1528 3152 1529 3299 1533 3444 336 3502 1534 3559 1530 3617 1536 3712 1538 3830 1539 3889 +1540 3948 1541 4007 1535 4066 1544 4161 1546 4279 340 4337 1543 4394 1550 4516 1542 4673 1547 4816 +1548 4961 1552 5104 1553 5163 1554 5221 1555 5280 1556 5339 1557 5398 1549 5457 1559 5579 1561 5697 +1562 5755 1563 5813 1564 5871 1565 5929 1566 5987 1567 6045 1558 6103 1573 6226 1569 6383 1570 6530 +1571 6675 1575 6822 344 6881 1572 6939 1577 7034 1579 7152 1580 7210 1581 7268 1582 7326 1583 7384 +1584 7442 1585 7500 1586 7558 1576 7616 1590 7711 1587 7859 1588 8002 1592 8149 348 8208 1589 8266 +1596 8361 1593 8509 1594 8654 1598 8801 352 8859 1599 8916 1595 8974 1603 9069 1600 9217 1601 9360 +% 1489 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1500 0 obj +<< +/Type /Page +/Contents 1501 0 R +/Resources 1499 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1482 0 R +/Annots [ 1497 0 R 1498 0 R ] +>> +% 1497 0 obj << /Type /Annot /Subtype /Link @@ -19257,7 +19273,7 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1495 0 obj +% 1498 0 obj << /Type /Annot /Subtype /Link @@ -19265,33 +19281,33 @@ stream /Rect [342.753 416.361 409.811 428.42] /A << /S /GoTo /D (descdata) >> >> -% 1499 0 obj +% 1502 0 obj << -/D [1497 0 R /XYZ 149.705 753.953 null] +/D [1500 0 R /XYZ 149.705 753.953 null] >> % 320 0 obj << -/D [1497 0 R /XYZ 150.705 716.092 null] +/D [1500 0 R /XYZ 150.705 716.092 null] >> -% 1500 0 obj +% 1503 0 obj << -/D [1497 0 R /XYZ 150.705 326.302 null] +/D [1500 0 R /XYZ 150.705 326.302 null] >> -% 1496 0 obj +% 1499 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1505 0 obj +% 1507 0 obj << /Type /Page -/Contents 1506 0 R -/Resources 1504 0 R +/Contents 1508 0 R +/Resources 1506 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1480 0 R -/Annots [ 1502 0 R 1503 0 R ] +/Parent 1482 0 R +/Annots [ 1504 0 R 1505 0 R ] >> -% 1502 0 obj +% 1504 0 obj << /Type /Annot /Subtype /Link @@ -19299,7 +19315,7 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1503 0 obj +% 1505 0 obj << /Type /Annot /Subtype /Link @@ -19307,29 +19323,29 @@ stream /Rect [291.943 484.107 359.001 496.166] /A << /S /GoTo /D (descdata) >> >> -% 1507 0 obj +% 1509 0 obj << -/D [1505 0 R /XYZ 98.895 753.953 null] +/D [1507 0 R /XYZ 98.895 753.953 null] >> % 324 0 obj << -/D [1505 0 R /XYZ 99.895 716.092 null] +/D [1507 0 R /XYZ 99.895 716.092 null] >> -% 1504 0 obj +% 1506 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1510 0 obj +% 1512 0 obj << /Type /Page -/Contents 1511 0 R -/Resources 1509 0 R +/Contents 1513 0 R +/Resources 1511 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1480 0 R -/Annots [ 1508 0 R ] +/Parent 1482 0 R +/Annots [ 1510 0 R ] >> -% 1508 0 obj +% 1510 0 obj << /Type /Annot /Subtype /Link @@ -19337,29 +19353,29 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1512 0 obj +% 1514 0 obj << -/D [1510 0 R /XYZ 149.705 753.953 null] +/D [1512 0 R /XYZ 149.705 753.953 null] >> % 328 0 obj << -/D [1510 0 R /XYZ 150.705 716.092 null] +/D [1512 0 R /XYZ 150.705 716.092 null] >> -% 1509 0 obj +% 1511 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1516 0 obj +% 1518 0 obj << /Type /Page -/Contents 1517 0 R -/Resources 1515 0 R +/Contents 1519 0 R +/Resources 1517 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R -/Annots [ 1513 0 R 1514 0 R ] +/Parent 1521 0 R +/Annots [ 1515 0 R 1516 0 R ] >> -% 1513 0 obj +% 1515 0 obj << /Type /Annot /Subtype /Link @@ -19367,7 +19383,7 @@ stream /Rect [291.943 452.321 369.462 464.381] /A << /S /GoTo /D (spdata) >> >> -% 1514 0 obj +% 1516 0 obj << /Type /Annot /Subtype /Link @@ -19375,54 +19391,54 @@ stream /Rect [291.943 209.193 359.001 221.252] /A << /S /GoTo /D (descdata) >> >> -% 1518 0 obj +% 1520 0 obj << -/D [1516 0 R /XYZ 98.895 753.953 null] +/D [1518 0 R /XYZ 98.895 753.953 null] >> % 332 0 obj << -/D [1516 0 R /XYZ 99.895 716.092 null] +/D [1518 0 R /XYZ 99.895 716.092 null] >> -% 1515 0 obj +% 1517 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1521 0 obj +% 1523 0 obj << /Type /Page -/Contents 1522 0 R -/Resources 1520 0 R +/Contents 1524 0 R +/Resources 1522 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R +/Parent 1521 0 R >> -% 1523 0 obj +% 1525 0 obj << -/D [1521 0 R /XYZ 149.705 753.953 null] +/D [1523 0 R /XYZ 149.705 753.953 null] >> -% 1524 0 obj +% 1526 0 obj << -/D [1521 0 R /XYZ 150.705 716.092 null] +/D [1523 0 R /XYZ 150.705 716.092 null] >> -% 1525 0 obj +% 1527 0 obj << -/D [1521 0 R /XYZ 150.705 663.469 null] +/D [1523 0 R /XYZ 150.705 663.469 null] >> -% 1520 0 obj +% 1522 0 obj << /Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1529 0 obj +% 1531 0 obj << /Type /Page -/Contents 1530 0 R -/Resources 1528 0 R +/Contents 1532 0 R +/Resources 1530 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R -/Annots [ 1526 0 R 1527 0 R ] +/Parent 1521 0 R +/Annots [ 1528 0 R 1529 0 R ] >> -% 1526 0 obj +% 1528 0 obj << /Type /Annot /Subtype /Link @@ -19430,7 +19446,7 @@ stream /Rect [291.943 571.679 359.001 583.739] /A << /S /GoTo /D (descdata) >> >> -% 1527 0 obj +% 1529 0 obj << /Type /Annot /Subtype /Link @@ -19438,83 +19454,83 @@ stream /Rect [291.943 227.887 369.462 239.946] /A << /S /GoTo /D (spdata) >> >> -% 1531 0 obj +% 1533 0 obj << -/D [1529 0 R /XYZ 98.895 753.953 null] +/D [1531 0 R /XYZ 98.895 753.953 null] >> % 336 0 obj << -/D [1529 0 R /XYZ 99.895 716.092 null] +/D [1531 0 R /XYZ 99.895 716.092 null] >> -% 1532 0 obj +% 1534 0 obj << -/D [1529 0 R /XYZ 99.895 136.374 null] +/D [1531 0 R /XYZ 99.895 136.374 null] >> -% 1528 0 obj +% 1530 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1534 0 obj +% 1536 0 obj << /Type /Page -/Contents 1535 0 R -/Resources 1533 0 R +/Contents 1537 0 R +/Resources 1535 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R +/Parent 1521 0 R >> -% 1536 0 obj +% 1538 0 obj << -/D [1534 0 R /XYZ 149.705 753.953 null] +/D [1536 0 R /XYZ 149.705 753.953 null] >> -% 1537 0 obj +% 1539 0 obj << -/D [1534 0 R /XYZ 150.705 716.092 null] +/D [1536 0 R /XYZ 150.705 716.092 null] >> -% 1538 0 obj +% 1540 0 obj << -/D [1534 0 R /XYZ 150.705 699.334 null] +/D [1536 0 R /XYZ 150.705 699.334 null] >> -% 1539 0 obj +% 1541 0 obj << -/D [1534 0 R /XYZ 150.705 644.819 null] +/D [1536 0 R /XYZ 150.705 644.819 null] >> -% 1533 0 obj +% 1535 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1542 0 obj +% 1544 0 obj << /Type /Page -/Contents 1543 0 R -/Resources 1541 0 R +/Contents 1545 0 R +/Resources 1543 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R +/Parent 1521 0 R >> -% 1544 0 obj +% 1546 0 obj << -/D [1542 0 R /XYZ 98.895 753.953 null] +/D [1544 0 R /XYZ 98.895 753.953 null] >> % 340 0 obj << -/D [1542 0 R /XYZ 99.895 716.092 null] +/D [1544 0 R /XYZ 99.895 716.092 null] >> -% 1541 0 obj +% 1543 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1548 0 obj +% 1550 0 obj << /Type /Page -/Contents 1549 0 R -/Resources 1547 0 R +/Contents 1551 0 R +/Resources 1549 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R -/Annots [ 1540 0 R 1545 0 R 1546 0 R ] +/Parent 1521 0 R +/Annots [ 1542 0 R 1547 0 R 1548 0 R ] >> -% 1540 0 obj +% 1542 0 obj << /Type /Annot /Subtype /Link @@ -19522,7 +19538,7 @@ stream /Rect [310.942 654.503 378 666.562] /A << /S /GoTo /D (descdata) >> >> -% 1545 0 obj +% 1547 0 obj << /Type /Annot /Subtype /Link @@ -19530,7 +19546,7 @@ stream /Rect [342.753 480.963 420.271 493.022] /A << /S /GoTo /D (spdata) >> >> -% 1546 0 obj +% 1548 0 obj << /Type /Annot /Subtype /Link @@ -19538,86 +19554,86 @@ stream /Rect [310.942 411.699 378 423.758] /A << /S /GoTo /D (descdata) >> >> -% 1550 0 obj -<< -/D [1548 0 R /XYZ 149.705 753.953 null] ->> -% 1551 0 obj -<< -/D [1548 0 R /XYZ 150.705 306.27 null] ->> % 1552 0 obj << -/D [1548 0 R /XYZ 150.705 272.927 null] +/D [1550 0 R /XYZ 149.705 753.953 null] >> % 1553 0 obj << -/D [1548 0 R /XYZ 150.705 236.878 null] +/D [1550 0 R /XYZ 150.705 306.27 null] >> % 1554 0 obj << -/D [1548 0 R /XYZ 150.705 167.614 null] +/D [1550 0 R /XYZ 150.705 272.927 null] >> % 1555 0 obj << -/D [1548 0 R /XYZ 150.705 146.171 null] +/D [1550 0 R /XYZ 150.705 236.878 null] >> -% 1547 0 obj +% 1556 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> -/ProcSet [ /PDF /Text ] +/D [1550 0 R /XYZ 150.705 167.614 null] >> % 1557 0 obj << -/Type /Page -/Contents 1558 0 R -/Resources 1556 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1566 0 R +/D [1550 0 R /XYZ 150.705 146.171 null] >> -% 1559 0 obj +% 1549 0 obj << -/D [1557 0 R /XYZ 98.895 753.953 null] +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> +/ProcSet [ /PDF /Text ] >> -% 1560 0 obj +% 1559 0 obj << -/D [1557 0 R /XYZ 99.895 716.092 null] +/Type /Page +/Contents 1560 0 R +/Resources 1558 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1568 0 R >> % 1561 0 obj << -/D [1557 0 R /XYZ 99.895 651.514 null] +/D [1559 0 R /XYZ 98.895 753.953 null] >> % 1562 0 obj << -/D [1557 0 R /XYZ 99.895 608.346 null] +/D [1559 0 R /XYZ 99.895 716.092 null] >> % 1563 0 obj << -/D [1557 0 R /XYZ 99.895 575.798 null] +/D [1559 0 R /XYZ 99.895 651.514 null] >> % 1564 0 obj << -/D [1557 0 R /XYZ 99.895 520.007 null] +/D [1559 0 R /XYZ 99.895 608.346 null] >> % 1565 0 obj << -/D [1557 0 R /XYZ 99.895 476.171 null] +/D [1559 0 R /XYZ 99.895 575.798 null] >> -% 1556 0 obj +% 1566 0 obj +<< +/D [1559 0 R /XYZ 99.895 520.007 null] +>> +% 1567 0 obj +<< +/D [1559 0 R /XYZ 99.895 476.171 null] +>> +% 1558 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1571 0 obj +% 1573 0 obj << /Type /Page -/Contents 1572 0 R -/Resources 1570 0 R +/Contents 1574 0 R +/Resources 1572 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1566 0 R -/Annots [ 1567 0 R 1568 0 R 1569 0 R ] +/Parent 1568 0 R +/Annots [ 1569 0 R 1570 0 R 1571 0 R ] >> -% 1567 0 obj +% 1569 0 obj << /Type /Annot /Subtype /Link @@ -19625,7 +19641,7 @@ stream /Rect [342.753 572.168 409.811 584.228] /A << /S /GoTo /D (descdata) >> >> -% 1568 0 obj +% 1570 0 obj << /Type /Annot /Subtype /Link @@ -19633,7 +19649,7 @@ stream /Rect [342.753 276.913 420.271 288.973] /A << /S /GoTo /D (spdata) >> >> -% 1569 0 obj +% 1571 0 obj << /Type /Annot /Subtype /Link @@ -19641,74 +19657,74 @@ stream /Rect [346.415 208.672 413.472 220.731] /A << /S /GoTo /D (descdata) >> >> -% 1573 0 obj +% 1575 0 obj << -/D [1571 0 R /XYZ 149.705 753.953 null] +/D [1573 0 R /XYZ 149.705 753.953 null] >> % 344 0 obj << -/D [1571 0 R /XYZ 150.705 716.092 null] +/D [1573 0 R /XYZ 150.705 716.092 null] >> -% 1570 0 obj +% 1572 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1575 0 obj +% 1577 0 obj << /Type /Page -/Contents 1576 0 R -/Resources 1574 0 R +/Contents 1578 0 R +/Resources 1576 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1566 0 R ->> -% 1577 0 obj -<< -/D [1575 0 R /XYZ 98.895 753.953 null] ->> -% 1578 0 obj -<< -/D [1575 0 R /XYZ 99.895 701.929 null] +/Parent 1568 0 R >> % 1579 0 obj << -/D [1575 0 R /XYZ 99.895 667.454 null] +/D [1577 0 R /XYZ 98.895 753.953 null] >> % 1580 0 obj << -/D [1575 0 R /XYZ 99.895 647.529 null] +/D [1577 0 R /XYZ 99.895 701.929 null] >> % 1581 0 obj << -/D [1575 0 R /XYZ 99.895 603.693 null] +/D [1577 0 R /XYZ 99.895 667.454 null] >> % 1582 0 obj << -/D [1575 0 R /XYZ 99.895 547.902 null] +/D [1577 0 R /XYZ 99.895 647.529 null] >> % 1583 0 obj << -/D [1575 0 R /XYZ 99.895 527.977 null] +/D [1577 0 R /XYZ 99.895 603.693 null] >> % 1584 0 obj << -/D [1575 0 R /XYZ 99.895 496.097 null] +/D [1577 0 R /XYZ 99.895 547.902 null] +>> +% 1585 0 obj +<< +/D [1577 0 R /XYZ 99.895 527.977 null] +>> +% 1586 0 obj +<< +/D [1577 0 R /XYZ 99.895 496.097 null] >> -% 1574 0 obj +% 1576 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1588 0 obj +% 1590 0 obj << /Type /Page -/Contents 1589 0 R -/Resources 1587 0 R +/Contents 1591 0 R +/Resources 1589 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1566 0 R -/Annots [ 1585 0 R 1586 0 R ] +/Parent 1568 0 R +/Annots [ 1587 0 R 1588 0 R ] >> -% 1585 0 obj +% 1587 0 obj << /Type /Annot /Subtype /Link @@ -19716,7 +19732,7 @@ stream /Rect [342.753 573.77 420.271 585.83] /A << /S /GoTo /D (spdata) >> >> -% 1586 0 obj +% 1588 0 obj << /Type /Annot /Subtype /Link @@ -19724,29 +19740,29 @@ stream /Rect [342.753 506.024 409.811 518.084] /A << /S /GoTo /D (descdata) >> >> -% 1590 0 obj +% 1592 0 obj << -/D [1588 0 R /XYZ 149.705 753.953 null] +/D [1590 0 R /XYZ 149.705 753.953 null] >> % 348 0 obj << -/D [1588 0 R /XYZ 150.705 716.092 null] +/D [1590 0 R /XYZ 150.705 716.092 null] >> -% 1587 0 obj +% 1589 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1594 0 obj +% 1596 0 obj << /Type /Page -/Contents 1595 0 R -/Resources 1593 0 R +/Contents 1597 0 R +/Resources 1595 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1566 0 R -/Annots [ 1591 0 R 1592 0 R ] +/Parent 1568 0 R +/Annots [ 1593 0 R 1594 0 R ] >> -% 1591 0 obj +% 1593 0 obj << /Type /Annot /Subtype /Link @@ -19754,7 +19770,7 @@ stream /Rect [291.943 559.823 369.462 571.882] /A << /S /GoTo /D (spdata) >> >> -% 1592 0 obj +% 1594 0 obj << /Type /Annot /Subtype /Link @@ -19762,33 +19778,33 @@ stream /Rect [291.943 492.077 359.001 504.136] /A << /S /GoTo /D (descdata) >> >> -% 1596 0 obj +% 1598 0 obj << -/D [1594 0 R /XYZ 98.895 753.953 null] +/D [1596 0 R /XYZ 98.895 753.953 null] >> % 352 0 obj << -/D [1594 0 R /XYZ 99.895 716.092 null] +/D [1596 0 R /XYZ 99.895 716.092 null] >> -% 1597 0 obj +% 1599 0 obj << -/D [1594 0 R /XYZ 99.895 312.355 null] +/D [1596 0 R /XYZ 99.895 312.355 null] >> -% 1593 0 obj +% 1595 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1601 0 obj +% 1603 0 obj << /Type /Page -/Contents 1602 0 R -/Resources 1600 0 R +/Contents 1604 0 R +/Resources 1602 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1566 0 R -/Annots [ 1598 0 R 1599 0 R ] +/Parent 1568 0 R +/Annots [ 1600 0 R 1601 0 R ] >> -% 1598 0 obj +% 1600 0 obj << /Type /Annot /Subtype /Link @@ -19796,7 +19812,7 @@ stream /Rect [310.942 577.893 378 589.953] /A << /S /GoTo /D (descdata) >> >> -% 1599 0 obj +% 1601 0 obj << /Type /Annot /Subtype /Link @@ -19804,18 +19820,10 @@ stream /Rect [261.249 128.475 337.303 140.535] /A << /S /GoTo /D (vdata) >> >> -% 1603 0 obj -<< -/D [1601 0 R /XYZ 149.705 753.953 null] ->> -% 356 0 obj -<< -/D [1601 0 R /XYZ 150.705 716.092 null] ->> endstream endobj -1607 0 obj +1609 0 obj << /Length 989 >> @@ -19838,7 +19846,7 @@ ET endstream endobj -1615 0 obj +1617 0 obj << /Length 6604 >> @@ -19952,7 +19960,7 @@ ET endstream endobj -1619 0 obj +1621 0 obj << /Length 574 >> @@ -19976,7 +19984,7 @@ ET endstream endobj -1628 0 obj +1630 0 obj << /Length 6333 >> @@ -20139,7 +20147,7 @@ ET endstream endobj -1636 0 obj +1638 0 obj << /Length 3251 >> @@ -20237,7 +20245,7 @@ ET endstream endobj -1640 0 obj +1642 0 obj << /Length 3210 >> @@ -20289,7 +20297,7 @@ ET endstream endobj -1645 0 obj +1647 0 obj << /Length 6618 >> @@ -20392,7 +20400,7 @@ ET endstream endobj -1650 0 obj +1652 0 obj << /Length 775 >> @@ -20415,7 +20423,7 @@ ET endstream endobj -1657 0 obj +1659 0 obj << /Length 5808 >> @@ -20514,7 +20522,7 @@ ET endstream endobj -1662 0 obj +1664 0 obj << /Length 3304 >> @@ -20598,7 +20606,7 @@ ET endstream endobj -1668 0 obj +1670 0 obj << /Length 5089 >> @@ -20690,7 +20698,7 @@ ET endstream endobj -1674 0 obj +1676 0 obj << /Length 3283 >> @@ -20774,7 +20782,7 @@ ET endstream endobj -1680 0 obj +1682 0 obj << /Length 5077 >> @@ -20866,7 +20874,7 @@ ET endstream endobj -1687 0 obj +1689 0 obj << /Length 3772 >> @@ -20947,7 +20955,7 @@ ET endstream endobj -1694 0 obj +1696 0 obj << /Length 3587 >> @@ -21028,7 +21036,7 @@ ET endstream endobj -1701 0 obj +1703 0 obj << /Length 5568 >> @@ -21117,7 +21125,7 @@ ET endstream endobj -1705 0 obj +1707 0 obj << /Length 3776 >> @@ -21156,173 +21164,68 @@ ET endstream endobj -1715 0 obj -<< -/Length 4038 ->> -stream -0 g 0 G -0 g 0 G -BT -/F75 11.9552 Tf 150.705 706.129 Td [(6.26)-1000(psb)]TJ -ET -q -1 0 0 1 204.216 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F75 11.9552 Tf 207.803 706.129 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ/F84 9.9626 Tf -57.407 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(memory)-250(occupation)-250(of)-250(a)-250(PSBLAS)-250(object.)]TJ -0 g 0 G -0 g 0 G -/F131 9.9626 Tf 0.309 -21.918 Td [(isz)-525(=)-525(psb_sizeof\050a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050desc_a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050prec\051)]TJ -0 g 0 G -/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(a)]TJ -0 g 0 G -/F84 9.9626 Tf 9.574 0 Td [(A)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 72.97 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -64.956 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 531.947 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 363.206 531.748 Td [(Tspmat)]TJ -ET -q -1 0 0 1 395.216 531.947 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 398.354 531.748 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 512.022 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F75 9.9626 Tf 174.207 511.823 Td [(a)]TJ -0 g 0 G -/F84 9.9626 Tf 9.962 0 Td [(Communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 464.201 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 363.206 464.002 Td [(desc)]TJ -ET -q -1 0 0 1 384.755 464.201 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 387.893 464.002 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -258.11 -19.925 Td [(prec)]TJ -0 g 0 G -/F84 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.182 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ -ET -q -1 0 0 1 388.441 408.41 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 391.579 408.211 Td [(Tprec)]TJ -ET -q -1 0 0 1 418.358 408.41 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F131 9.9626 Tf 421.497 408.211 Td [(type)]TJ -0 g 0 G -/F84 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F75 9.9626 Tf -291.713 -19.925 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(Function)-250(value)]TJ -0 g 0 G -/F84 9.9626 Tf 1.02 0 0 1 223.173 368.361 Tm [(The)-266(memory)-266(occupation)-267(of)-266(the)-266(object)-267(spe)1(ci\002ed)-267(in)-266(the)-266(calling)]TJ 1 0 0 1 175.611 356.405 Tm [(sequence,)-250(in)-250(bytes.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Returned)-250(as:)-310(an)]TJ/F131 9.9626 Tf 71.82 0 Td [(integer\050psb_long_int_k_\051)]TJ/F84 9.9626 Tf 128.019 0 Td [(number)74(.)]TJ -0 g 0 G - -60.362 -242.057 Td [(108)]TJ -0 g 0 G -ET - -endstream -endobj -1604 0 obj +1606 0 obj << /Type /ObjStm /N 100 -/First 974 -/Length 10423 ->> -stream -1600 0 1606 108 1608 226 1609 284 1605 341 1614 436 1611 584 1612 730 1616 874 360 933 -1613 991 1618 1113 1620 1231 1621 1289 1622 1347 1617 1405 1627 1486 1623 1643 1624 1784 1625 1927 -1629 2069 364 2128 1630 2186 1631 2245 1626 2304 1635 2412 1632 2560 1633 2703 1637 2850 368 2908 -1634 2965 1639 3060 1641 3178 372 3237 1638 3295 1644 3403 1642 3542 1646 3689 376 3747 1643 3804 -1649 3912 1651 4030 1652 4089 1653 4148 1648 4207 1656 4289 1654 4428 1658 4575 380 4633 1655 4690 -1661 4798 1659 4937 1663 5084 384 5143 1664 5201 1660 5260 1667 5368 1665 5507 1669 5654 388 5712 -1670 5769 1666 5827 1673 5935 1671 6074 1675 6221 392 6280 1676 6338 1672 6397 1679 6505 1677 6644 -1681 6791 396 6849 1682 6906 1678 6964 1686 7072 1684 7211 1688 7356 400 7415 1689 7473 1690 7532 -1685 7591 1693 7686 1691 7825 1695 7970 405 8028 1696 8085 1697 8143 1692 8201 1700 8296 1698 8435 -1702 8580 409 8639 1699 8697 1704 8820 1706 8938 1707 8996 1708 9054 1709 9112 1703 9170 1714 9292 -% 1600 0 obj +/First 972 +/Length 10259 +>> +stream +1605 0 356 59 1602 117 1608 225 1610 343 1611 401 1607 458 1616 553 1613 701 1614 847 +1618 991 360 1050 1615 1108 1620 1230 1622 1348 1623 1406 1624 1464 1619 1522 1629 1603 1625 1760 +1626 1901 1627 2044 1631 2186 364 2245 1632 2303 1633 2362 1628 2421 1637 2529 1634 2677 1635 2820 +1639 2967 368 3025 1636 3082 1641 3177 1643 3295 372 3354 1640 3412 1646 3520 1644 3659 1648 3806 +376 3864 1645 3921 1651 4029 1653 4147 1654 4206 1655 4265 1650 4324 1658 4406 1656 4545 1660 4692 +380 4750 1657 4807 1663 4915 1661 5054 1665 5201 384 5260 1666 5318 1662 5377 1669 5485 1667 5624 +1671 5771 388 5829 1672 5886 1668 5944 1675 6052 1673 6191 1677 6338 392 6397 1678 6455 1674 6514 +1681 6622 1679 6761 1683 6908 396 6966 1684 7023 1680 7081 1688 7189 1686 7328 1690 7473 400 7532 +1691 7590 1692 7649 1687 7708 1695 7803 1693 7942 1697 8087 405 8145 1698 8202 1699 8260 1694 8318 +1702 8413 1700 8552 1704 8697 409 8756 1701 8814 1706 8937 1708 9055 1709 9113 1710 9171 1711 9229 +% 1605 0 obj +<< +/D [1603 0 R /XYZ 149.705 753.953 null] +>> +% 356 0 obj +<< +/D [1603 0 R /XYZ 150.705 716.092 null] +>> +% 1602 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1606 0 obj +% 1608 0 obj << /Type /Page -/Contents 1607 0 R -/Resources 1605 0 R +/Contents 1609 0 R +/Resources 1607 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1610 0 R +/Parent 1612 0 R >> -% 1608 0 obj +% 1610 0 obj << -/D [1606 0 R /XYZ 98.895 753.953 null] +/D [1608 0 R /XYZ 98.895 753.953 null] >> -% 1609 0 obj +% 1611 0 obj << -/D [1606 0 R /XYZ 99.895 632.19 null] +/D [1608 0 R /XYZ 99.895 632.19 null] >> -% 1605 0 obj +% 1607 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1614 0 obj +% 1616 0 obj << /Type /Page -/Contents 1615 0 R -/Resources 1613 0 R +/Contents 1617 0 R +/Resources 1615 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1610 0 R -/Annots [ 1611 0 R 1612 0 R ] +/Parent 1612 0 R +/Annots [ 1613 0 R 1614 0 R ] >> -% 1611 0 obj +% 1613 0 obj << /Type /Annot /Subtype /Link @@ -21330,7 +21233,7 @@ stream /Rect [342.753 362.621 409.811 374.68] /A << /S /GoTo /D (descdata) >> >> -% 1612 0 obj +% 1614 0 obj << /Type /Annot /Subtype /Link @@ -21338,54 +21241,54 @@ stream /Rect [418.163 207.637 494.217 219.697] /A << /S /GoTo /D (vdata) >> >> -% 1616 0 obj +% 1618 0 obj << -/D [1614 0 R /XYZ 149.705 753.953 null] +/D [1616 0 R /XYZ 149.705 753.953 null] >> % 360 0 obj << -/D [1614 0 R /XYZ 150.705 716.092 null] +/D [1616 0 R /XYZ 150.705 716.092 null] >> -% 1613 0 obj +% 1615 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1618 0 obj +% 1620 0 obj << /Type /Page -/Contents 1619 0 R -/Resources 1617 0 R +/Contents 1621 0 R +/Resources 1619 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1610 0 R +/Parent 1612 0 R >> -% 1620 0 obj +% 1622 0 obj << -/D [1618 0 R /XYZ 98.895 753.953 null] +/D [1620 0 R /XYZ 98.895 753.953 null] >> -% 1621 0 obj +% 1623 0 obj << -/D [1618 0 R /XYZ 99.895 701.929 null] +/D [1620 0 R /XYZ 99.895 701.929 null] >> -% 1622 0 obj +% 1624 0 obj << -/D [1618 0 R /XYZ 99.895 680.684 null] +/D [1620 0 R /XYZ 99.895 680.684 null] >> -% 1617 0 obj +% 1619 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1627 0 obj +% 1629 0 obj << /Type /Page -/Contents 1628 0 R -/Resources 1626 0 R +/Contents 1630 0 R +/Resources 1628 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1610 0 R -/Annots [ 1623 0 R 1624 0 R 1625 0 R ] +/Parent 1612 0 R +/Annots [ 1625 0 R 1626 0 R 1627 0 R ] >> -% 1623 0 obj +% 1625 0 obj << /Type /Annot /Subtype /Link @@ -21393,7 +21296,7 @@ stream /Rect [310.942 573.77 378 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1624 0 obj +% 1626 0 obj << /Type /Annot /Subtype /Link @@ -21401,7 +21304,7 @@ stream /Rect [322.33 482.114 398.384 494.174] /A << /S /GoTo /D (vdata) >> >> -% 1625 0 obj +% 1627 0 obj << /Type /Annot /Subtype /Link @@ -21409,37 +21312,37 @@ stream /Rect [207.9 380.495 283.954 392.555] /A << /S /GoTo /D (vdata) >> >> -% 1629 0 obj +% 1631 0 obj << -/D [1627 0 R /XYZ 149.705 753.953 null] +/D [1629 0 R /XYZ 149.705 753.953 null] >> % 364 0 obj << -/D [1627 0 R /XYZ 150.705 716.092 null] +/D [1629 0 R /XYZ 150.705 716.092 null] >> -% 1630 0 obj +% 1632 0 obj << -/D [1627 0 R /XYZ 150.705 278.482 null] +/D [1629 0 R /XYZ 150.705 278.482 null] >> -% 1631 0 obj +% 1633 0 obj << -/D [1627 0 R /XYZ 150.705 244.007 null] +/D [1629 0 R /XYZ 150.705 244.007 null] >> -% 1626 0 obj +% 1628 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1635 0 obj +% 1637 0 obj << /Type /Page -/Contents 1636 0 R -/Resources 1634 0 R +/Contents 1638 0 R +/Resources 1636 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1610 0 R -/Annots [ 1632 0 R 1633 0 R ] +/Parent 1612 0 R +/Annots [ 1634 0 R 1635 0 R ] >> -% 1632 0 obj +% 1634 0 obj << /Type /Annot /Subtype /Link @@ -21447,7 +21350,7 @@ stream /Rect [157.09 561.815 233.145 573.875] /A << /S /GoTo /D (vdata) >> >> -% 1633 0 obj +% 1635 0 obj << /Type /Annot /Subtype /Link @@ -21455,50 +21358,50 @@ stream /Rect [260.133 482.114 327.191 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1637 0 obj +% 1639 0 obj << -/D [1635 0 R /XYZ 98.895 753.953 null] +/D [1637 0 R /XYZ 98.895 753.953 null] >> % 368 0 obj << -/D [1635 0 R /XYZ 99.895 716.092 null] +/D [1637 0 R /XYZ 99.895 716.092 null] >> -% 1634 0 obj +% 1636 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1639 0 obj +% 1641 0 obj << /Type /Page -/Contents 1640 0 R -/Resources 1638 0 R +/Contents 1642 0 R +/Resources 1640 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1610 0 R +/Parent 1612 0 R >> -% 1641 0 obj +% 1643 0 obj << -/D [1639 0 R /XYZ 149.705 753.953 null] +/D [1641 0 R /XYZ 149.705 753.953 null] >> % 372 0 obj << -/D [1639 0 R /XYZ 150.705 716.092 null] +/D [1641 0 R /XYZ 150.705 716.092 null] >> -% 1638 0 obj +% 1640 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1644 0 obj +% 1646 0 obj << /Type /Page -/Contents 1645 0 R -/Resources 1643 0 R +/Contents 1647 0 R +/Resources 1645 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1647 0 R -/Annots [ 1642 0 R ] +/Parent 1649 0 R +/Annots [ 1644 0 R ] >> -% 1642 0 obj +% 1644 0 obj << /Type /Annot /Subtype /Link @@ -21506,54 +21409,54 @@ stream /Rect [291.943 483.894 359.001 495.954] /A << /S /GoTo /D (descdata) >> >> -% 1646 0 obj +% 1648 0 obj << -/D [1644 0 R /XYZ 98.895 753.953 null] +/D [1646 0 R /XYZ 98.895 753.953 null] >> % 376 0 obj << -/D [1644 0 R /XYZ 99.895 716.092 null] +/D [1646 0 R /XYZ 99.895 716.092 null] >> -% 1643 0 obj +% 1645 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1649 0 obj +% 1651 0 obj << /Type /Page -/Contents 1650 0 R -/Resources 1648 0 R +/Contents 1652 0 R +/Resources 1650 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1647 0 R +/Parent 1649 0 R >> -% 1651 0 obj +% 1653 0 obj << -/D [1649 0 R /XYZ 149.705 753.953 null] +/D [1651 0 R /XYZ 149.705 753.953 null] >> -% 1652 0 obj +% 1654 0 obj << -/D [1649 0 R /XYZ 150.705 716.092 null] +/D [1651 0 R /XYZ 150.705 716.092 null] >> -% 1653 0 obj +% 1655 0 obj << -/D [1649 0 R /XYZ 150.705 687.379 null] +/D [1651 0 R /XYZ 150.705 687.379 null] >> -% 1648 0 obj +% 1650 0 obj << /Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1656 0 obj +% 1658 0 obj << /Type /Page -/Contents 1657 0 R -/Resources 1655 0 R +/Contents 1659 0 R +/Resources 1657 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1647 0 R -/Annots [ 1654 0 R ] +/Parent 1649 0 R +/Annots [ 1656 0 R ] >> -% 1654 0 obj +% 1656 0 obj << /Type /Annot /Subtype /Link @@ -21561,29 +21464,29 @@ stream /Rect [291.943 482.114 359.001 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1658 0 obj +% 1660 0 obj << -/D [1656 0 R /XYZ 98.895 753.953 null] +/D [1658 0 R /XYZ 98.895 753.953 null] >> % 380 0 obj << -/D [1656 0 R /XYZ 99.895 716.092 null] +/D [1658 0 R /XYZ 99.895 716.092 null] >> -% 1655 0 obj +% 1657 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1661 0 obj +% 1663 0 obj << /Type /Page -/Contents 1662 0 R -/Resources 1660 0 R +/Contents 1664 0 R +/Resources 1662 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1647 0 R -/Annots [ 1659 0 R ] +/Parent 1649 0 R +/Annots [ 1661 0 R ] >> -% 1659 0 obj +% 1661 0 obj << /Type /Annot /Subtype /Link @@ -21591,33 +21494,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1663 0 obj +% 1665 0 obj << -/D [1661 0 R /XYZ 149.705 753.953 null] +/D [1663 0 R /XYZ 149.705 753.953 null] >> % 384 0 obj << -/D [1661 0 R /XYZ 150.705 716.092 null] +/D [1663 0 R /XYZ 150.705 716.092 null] >> -% 1664 0 obj +% 1666 0 obj << -/D [1661 0 R /XYZ 150.705 382.093 null] +/D [1663 0 R /XYZ 150.705 382.093 null] >> -% 1660 0 obj +% 1662 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1667 0 obj +% 1669 0 obj << /Type /Page -/Contents 1668 0 R -/Resources 1666 0 R +/Contents 1670 0 R +/Resources 1668 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1647 0 R -/Annots [ 1665 0 R ] +/Parent 1649 0 R +/Annots [ 1667 0 R ] >> -% 1665 0 obj +% 1667 0 obj << /Type /Annot /Subtype /Link @@ -21625,33 +21528,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1669 0 obj +% 1671 0 obj << -/D [1667 0 R /XYZ 98.895 753.953 null] +/D [1669 0 R /XYZ 98.895 753.953 null] >> % 388 0 obj << -/D [1667 0 R /XYZ 99.895 716.092 null] +/D [1669 0 R /XYZ 99.895 716.092 null] >> -% 1670 0 obj +% 1672 0 obj << -/D [1667 0 R /XYZ 99.895 258.556 null] +/D [1669 0 R /XYZ 99.895 258.556 null] >> -% 1666 0 obj +% 1668 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1673 0 obj +% 1675 0 obj << /Type /Page -/Contents 1674 0 R -/Resources 1672 0 R +/Contents 1676 0 R +/Resources 1674 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1647 0 R -/Annots [ 1671 0 R ] +/Parent 1649 0 R +/Annots [ 1673 0 R ] >> -% 1671 0 obj +% 1673 0 obj << /Type /Annot /Subtype /Link @@ -21659,33 +21562,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1675 0 obj +% 1677 0 obj << -/D [1673 0 R /XYZ 149.705 753.953 null] +/D [1675 0 R /XYZ 149.705 753.953 null] >> % 392 0 obj << -/D [1673 0 R /XYZ 150.705 716.092 null] +/D [1675 0 R /XYZ 150.705 716.092 null] >> -% 1676 0 obj +% 1678 0 obj << -/D [1673 0 R /XYZ 150.705 382.093 null] +/D [1675 0 R /XYZ 150.705 382.093 null] >> -% 1672 0 obj +% 1674 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1679 0 obj +% 1681 0 obj << /Type /Page -/Contents 1680 0 R -/Resources 1678 0 R +/Contents 1682 0 R +/Resources 1680 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1683 0 R -/Annots [ 1677 0 R ] +/Parent 1685 0 R +/Annots [ 1679 0 R ] >> -% 1677 0 obj +% 1679 0 obj << /Type /Annot /Subtype /Link @@ -21693,33 +21596,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1681 0 obj +% 1683 0 obj << -/D [1679 0 R /XYZ 98.895 753.953 null] +/D [1681 0 R /XYZ 98.895 753.953 null] >> % 396 0 obj << -/D [1679 0 R /XYZ 99.895 716.092 null] +/D [1681 0 R /XYZ 99.895 716.092 null] >> -% 1682 0 obj +% 1684 0 obj << -/D [1679 0 R /XYZ 99.895 258.556 null] +/D [1681 0 R /XYZ 99.895 258.556 null] >> -% 1678 0 obj +% 1680 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1686 0 obj +% 1688 0 obj << /Type /Page -/Contents 1687 0 R -/Resources 1685 0 R +/Contents 1689 0 R +/Resources 1687 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1683 0 R -/Annots [ 1684 0 R ] +/Parent 1685 0 R +/Annots [ 1686 0 R ] >> -% 1684 0 obj +% 1686 0 obj << /Type /Annot /Subtype /Link @@ -21727,37 +21630,37 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1688 0 obj +% 1690 0 obj << -/D [1686 0 R /XYZ 149.705 753.953 null] +/D [1688 0 R /XYZ 149.705 753.953 null] >> % 400 0 obj << -/D [1686 0 R /XYZ 150.705 716.092 null] +/D [1688 0 R /XYZ 150.705 716.092 null] >> -% 1689 0 obj +% 1691 0 obj << -/D [1686 0 R /XYZ 150.705 370.138 null] +/D [1688 0 R /XYZ 150.705 370.138 null] >> -% 1690 0 obj +% 1692 0 obj << -/D [1686 0 R /XYZ 150.705 335.663 null] +/D [1688 0 R /XYZ 150.705 335.663 null] >> -% 1685 0 obj +% 1687 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1693 0 obj +% 1695 0 obj << /Type /Page -/Contents 1694 0 R -/Resources 1692 0 R +/Contents 1696 0 R +/Resources 1694 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1683 0 R -/Annots [ 1691 0 R ] +/Parent 1685 0 R +/Annots [ 1693 0 R ] >> -% 1691 0 obj +% 1693 0 obj << /Type /Annot /Subtype /Link @@ -21765,37 +21668,37 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1695 0 obj +% 1697 0 obj << -/D [1693 0 R /XYZ 98.895 753.953 null] +/D [1695 0 R /XYZ 98.895 753.953 null] >> % 405 0 obj << -/D [1693 0 R /XYZ 99.895 716.092 null] +/D [1695 0 R /XYZ 99.895 716.092 null] >> -% 1696 0 obj +% 1698 0 obj << -/D [1693 0 R /XYZ 99.895 370.138 null] +/D [1695 0 R /XYZ 99.895 370.138 null] >> -% 1697 0 obj +% 1699 0 obj << -/D [1693 0 R /XYZ 99.895 338.313 null] +/D [1695 0 R /XYZ 99.895 338.313 null] >> -% 1692 0 obj +% 1694 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1700 0 obj +% 1702 0 obj << /Type /Page -/Contents 1701 0 R -/Resources 1699 0 R +/Contents 1703 0 R +/Resources 1701 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1683 0 R -/Annots [ 1698 0 R ] +/Parent 1685 0 R +/Annots [ 1700 0 R ] >> -% 1698 0 obj +% 1700 0 obj << /Type /Annot /Subtype /Link @@ -21803,61 +21706,160 @@ stream /Rect [342.753 491.971 420.271 504.031] /A << /S /GoTo /D (spdata) >> >> -% 1702 0 obj +% 1704 0 obj << -/D [1700 0 R /XYZ 149.705 753.953 null] +/D [1702 0 R /XYZ 149.705 753.953 null] >> % 409 0 obj << -/D [1700 0 R /XYZ 150.705 716.092 null] +/D [1702 0 R /XYZ 150.705 716.092 null] >> -% 1699 0 obj +% 1701 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1469 0 R /F78 674 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1471 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1704 0 obj +% 1706 0 obj << /Type /Page -/Contents 1705 0 R -/Resources 1703 0 R +/Contents 1707 0 R +/Resources 1705 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1683 0 R ->> -% 1706 0 obj -<< -/D [1704 0 R /XYZ 98.895 753.953 null] ->> -% 1707 0 obj -<< -/D [1704 0 R /XYZ 99.895 496.698 null] +/Parent 1685 0 R >> % 1708 0 obj << -/D [1704 0 R /XYZ 99.895 438.313 null] +/D [1706 0 R /XYZ 98.895 753.953 null] >> % 1709 0 obj << -/D [1704 0 R /XYZ 99.895 418.388 null] +/D [1706 0 R /XYZ 99.895 496.698 null] >> -% 1703 0 obj +% 1710 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> -/ProcSet [ /PDF /Text ] +/D [1706 0 R /XYZ 99.895 438.313 null] >> -% 1714 0 obj +% 1711 0 obj << -/Type /Page -/Contents 1715 0 R -/Resources 1713 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1683 0 R -/Annots [ 1710 0 R 1711 0 R 1712 0 R ] +/D [1706 0 R /XYZ 99.895 418.388 null] +>> + +endstream +endobj +1718 0 obj +<< +/Length 4038 >> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 150.705 706.129 Td [(6.26)-1000(psb)]TJ +ET +q +1 0 0 1 204.216 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 207.803 706.129 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ/F84 9.9626 Tf -57.407 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(memory)-250(occupation)-250(of)-250(a)-250(PSBLAS)-250(object.)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf 0.309 -21.918 Td [(isz)-525(=)-525(psb_sizeof\050a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050desc_a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050prec\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.574 0 Td [(A)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 72.97 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -64.956 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 531.947 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 531.748 Td [(Tspmat)]TJ +ET +q +1 0 0 1 395.216 531.947 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 398.354 531.748 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 512.022 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 511.823 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.962 0 Td [(Communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 464.201 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 464.002 Td [(desc)]TJ +ET +q +1 0 0 1 384.755 464.201 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 387.893 464.002 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -19.925 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.182 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ +ET +q +1 0 0 1 388.441 408.41 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 391.579 408.211 Td [(Tprec)]TJ +ET +q +1 0 0 1 418.358 408.41 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 421.497 408.211 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -291.713 -19.925 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 223.173 368.361 Tm [(The)-266(memory)-266(occupation)-267(of)-266(the)-266(object)-267(spe)1(ci\002ed)-267(in)-266(the)-266(calling)]TJ 1 0 0 1 175.611 356.405 Tm [(sequence,)-250(in)-250(bytes.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Returned)-250(as:)-310(an)]TJ/F131 9.9626 Tf 71.82 0 Td [(integer\050psb_long_int_k_\051)]TJ/F84 9.9626 Tf 128.019 0 Td [(number)74(.)]TJ +0 g 0 G + -60.362 -242.057 Td [(108)]TJ +0 g 0 G +ET endstream endobj -1720 0 obj +1722 0 obj << /Length 6042 >> @@ -21939,7 +21941,7 @@ ET endstream endobj -1725 0 obj +1727 0 obj << /Length 8197 >> @@ -22047,7 +22049,7 @@ ET endstream endobj -1738 0 obj +1740 0 obj << /Length 171 >> @@ -22063,7 +22065,7 @@ ET endstream endobj -1742 0 obj +1744 0 obj << /Length 5790 >> @@ -22137,7 +22139,7 @@ ET endstream endobj -1748 0 obj +1750 0 obj << /Length 4724 >> @@ -22193,7 +22195,7 @@ ET endstream endobj -1754 0 obj +1756 0 obj << /Length 4510 >> @@ -22246,7 +22248,7 @@ ET endstream endobj -1761 0 obj +1763 0 obj << /Length 2599 >> @@ -22304,7 +22306,7 @@ ET endstream endobj -1766 0 obj +1768 0 obj << /Length 3392 >> @@ -22366,7 +22368,7 @@ ET endstream endobj -1770 0 obj +1772 0 obj << /Length 1167 >> @@ -22403,7 +22405,7 @@ ET endstream endobj -1774 0 obj +1776 0 obj << /Length 1466 >> @@ -22440,7 +22442,7 @@ ET endstream endobj -1778 0 obj +1780 0 obj << /Length 1283 >> @@ -22477,7 +22479,7 @@ ET endstream endobj -1782 0 obj +1784 0 obj << /Length 6066 >> @@ -22537,7 +22539,7 @@ ET endstream endobj -1786 0 obj +1788 0 obj << /Length 5433 >> @@ -22660,7 +22662,7 @@ ET endstream endobj -1795 0 obj +1797 0 obj << /Length 6205 >> @@ -22720,7 +22722,7 @@ ET endstream endobj -1799 0 obj +1801 0 obj << /Length 5228 >> @@ -22843,7 +22845,7 @@ ET endstream endobj -1806 0 obj +1808 0 obj << /Length 5884 >> @@ -22899,7 +22901,7 @@ ET endstream endobj -1810 0 obj +1812 0 obj << /Length 5603 >> @@ -23025,7 +23027,7 @@ ET endstream endobj -1817 0 obj +1819 0 obj << /Length 6144 >> @@ -23085,148 +23087,39 @@ ET endstream endobj -1821 0 obj +1712 0 obj << -/Length 5331 +/Type /ObjStm +/N 100 +/First 974 +/Length 9446 >> stream -0 g 0 G -0 g 0 G -BT -/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.983 0 0 1 124.802 682.219 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(w)1(hich)-255(may)-255(be)-255(a)-256(s)1(calar)75(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 124.802 670.263 Tm [(or)-250(2)-250(array)111(.)]TJ -0.309 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ -0 g 0 G -/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ -0 g 0 G -/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ -0 g 0 G -/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ -0 g 0 G - -12.453 -19.925 Td [(2.)]TJ -0 g 0 G - 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 124.802 441.123 cm -0 0 318.804 27.895 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ -0 g 0 G - [-525(psb_min\050ctxt,dat,&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 23.537 -10.959 Td [(&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(mode)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [(ior)]TJ -0 g 0 G - [(\050psb_collective_start_,psb_collective_end_\051\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0 g 0 G -/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ -0 g 0 G - 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 124.802 326.552 cm -0 0 318.804 60.772 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ -0 g 0 G - [-525(psb_min\050ctxt,dat,mode)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(psb_collective_start_,&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 23.537 -10.959 Td [(&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(request)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(min_request\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - -23.537 -10.958 Td [(.......)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ -0 g 0 G - [-525(psb_min\050ctxt,dat,mode)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(psb_collective_end_,&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 23.537 -10.959 Td [(&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(request)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(min_request\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0 g 0 G -/F84 9.9626 Tf 103.537 -242.391 Td [(127)]TJ -0 g 0 G -ET - -endstream -endobj -1717 0 obj +1705 0 1717 122 1713 279 1714 424 1715 571 1719 718 413 777 1716 835 1721 943 1723 1061 +417 1119 1720 1176 1726 1284 1728 1402 1729 1461 1730 1520 1731 1579 1732 1638 1733 1697 1734 1756 +1735 1815 1736 1874 1737 1933 1725 1992 1739 2114 1741 2232 421 2290 1738 2347 1743 2428 1745 2546 +425 2605 1746 2663 1747 2722 1742 2781 1749 2917 1751 3035 429 3093 1752 3150 1753 3207 1748 3263 +1755 3399 1757 3517 433 3576 1758 3634 1759 3693 1760 3752 1754 3811 1762 3947 1764 4065 437 4123 +1761 4180 1767 4275 1769 4393 441 4452 1766 4510 1771 4632 1773 4750 445 4808 1770 4865 1775 4960 +1777 5078 449 5137 1774 5195 1779 5290 1781 5408 453 5466 1778 5523 1783 5618 1785 5736 457 5795 +1782 5853 1787 6004 1789 6122 1790 6180 1791 6238 1792 6296 1786 6354 1796 6492 1798 6610 461 6669 +1795 6727 1800 6878 1802 6996 1803 7054 1804 7112 1805 7169 1799 7226 1807 7364 1809 7482 465 7541 +1806 7599 1811 7750 1813 7868 1814 7926 1815 7984 1816 8042 1810 8099 1818 8237 1820 8355 469 8414 +% 1705 0 obj << -/Type /ObjStm -/N 100 -/First 973 -/Length 9435 ->> -stream -1710 0 1711 145 1712 292 1716 439 413 498 1713 556 1719 664 1721 782 417 840 1718 897 -1724 1005 1726 1123 1727 1182 1728 1241 1729 1300 1730 1359 1731 1418 1732 1477 1733 1536 1734 1595 -1735 1654 1723 1713 1737 1835 1739 1953 421 2011 1736 2068 1741 2149 1743 2267 425 2326 1744 2384 -1745 2443 1740 2502 1747 2638 1749 2756 429 2814 1750 2871 1751 2928 1746 2984 1753 3120 1755 3238 -433 3297 1756 3355 1757 3414 1758 3473 1752 3532 1760 3668 1762 3786 437 3844 1759 3901 1765 3996 -1767 4114 441 4173 1764 4231 1769 4353 1771 4471 445 4529 1768 4586 1773 4681 1775 4799 449 4858 -1772 4916 1777 5011 1779 5129 453 5187 1776 5244 1781 5339 1783 5457 457 5516 1780 5574 1785 5725 -1787 5843 1788 5901 1789 5959 1790 6017 1784 6075 1794 6213 1796 6331 461 6390 1793 6448 1798 6599 -1800 6717 1801 6775 1802 6833 1803 6890 1797 6947 1805 7085 1807 7203 465 7262 1804 7320 1809 7471 -1811 7589 1812 7647 1813 7705 1814 7763 1808 7820 1816 7958 1818 8076 469 8135 1815 8193 1820 8344 -% 1710 0 obj +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1717 0 obj +<< +/Type /Page +/Contents 1718 0 R +/Resources 1716 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1685 0 R +/Annots [ 1713 0 R 1714 0 R 1715 0 R ] +>> +% 1713 0 obj << /Type /Annot /Subtype /Link @@ -23234,7 +23127,7 @@ stream /Rect [342.753 527.942 420.271 540.002] /A << /S /GoTo /D (spdata) >> >> -% 1711 0 obj +% 1714 0 obj << /Type /Annot /Subtype /Link @@ -23242,7 +23135,7 @@ stream /Rect [342.753 460.196 409.811 472.256] /A << /S /GoTo /D (descdata) >> >> -% 1712 0 obj +% 1715 0 obj << /Type /Annot /Subtype /Link @@ -23250,493 +23143,603 @@ stream /Rect [371.126 404.405 443.414 416.465] /A << /S /GoTo /D (precdata) >> >> -% 1716 0 obj +% 1719 0 obj << -/D [1714 0 R /XYZ 149.705 753.953 null] +/D [1717 0 R /XYZ 149.705 753.953 null] >> % 413 0 obj << -/D [1714 0 R /XYZ 150.705 716.092 null] +/D [1717 0 R /XYZ 150.705 716.092 null] >> -% 1713 0 obj +% 1716 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1719 0 obj +% 1721 0 obj << /Type /Page -/Contents 1720 0 R -/Resources 1718 0 R +/Contents 1722 0 R +/Resources 1720 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1722 0 R +/Parent 1724 0 R >> -% 1721 0 obj +% 1723 0 obj << -/D [1719 0 R /XYZ 98.895 753.953 null] +/D [1721 0 R /XYZ 98.895 753.953 null] >> % 417 0 obj << -/D [1719 0 R /XYZ 99.895 716.092 null] +/D [1721 0 R /XYZ 99.895 716.092 null] >> -% 1718 0 obj +% 1720 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1724 0 obj +% 1726 0 obj << /Type /Page -/Contents 1725 0 R -/Resources 1723 0 R +/Contents 1727 0 R +/Resources 1725 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1722 0 R ->> -% 1726 0 obj -<< -/D [1724 0 R /XYZ 149.705 753.953 null] ->> -% 1727 0 obj -<< -/D [1724 0 R /XYZ 150.705 701.929 null] +/Parent 1724 0 R >> % 1728 0 obj << -/D [1724 0 R /XYZ 150.705 668.729 null] +/D [1726 0 R /XYZ 149.705 753.953 null] >> % 1729 0 obj << -/D [1724 0 R /XYZ 150.705 624.894 null] +/D [1726 0 R /XYZ 150.705 701.929 null] >> % 1730 0 obj << -/D [1724 0 R /XYZ 150.705 555.872 null] +/D [1726 0 R /XYZ 150.705 668.729 null] >> % 1731 0 obj << -/D [1724 0 R /XYZ 150.705 500.082 null] +/D [1726 0 R /XYZ 150.705 624.894 null] >> % 1732 0 obj << -/D [1724 0 R /XYZ 150.705 468.201 null] +/D [1726 0 R /XYZ 150.705 555.872 null] >> % 1733 0 obj << -/D [1724 0 R /XYZ 150.705 425.023 null] +/D [1726 0 R /XYZ 150.705 500.082 null] >> % 1734 0 obj << -/D [1724 0 R /XYZ 150.705 382.522 null] +/D [1726 0 R /XYZ 150.705 468.201 null] >> % 1735 0 obj << -/D [1724 0 R /XYZ 150.705 354.627 null] +/D [1726 0 R /XYZ 150.705 425.023 null] >> -% 1723 0 obj +% 1736 0 obj +<< +/D [1726 0 R /XYZ 150.705 382.522 null] +>> +% 1737 0 obj +<< +/D [1726 0 R /XYZ 150.705 354.627 null] +>> +% 1725 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1737 0 obj +% 1739 0 obj << /Type /Page -/Contents 1738 0 R -/Resources 1736 0 R +/Contents 1740 0 R +/Resources 1738 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1722 0 R +/Parent 1724 0 R >> -% 1739 0 obj +% 1741 0 obj << -/D [1737 0 R /XYZ 98.895 753.953 null] +/D [1739 0 R /XYZ 98.895 753.953 null] >> % 421 0 obj << -/D [1737 0 R /XYZ 99.895 716.092 null] +/D [1739 0 R /XYZ 99.895 716.092 null] >> -% 1736 0 obj +% 1738 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1741 0 obj +% 1743 0 obj << /Type /Page -/Contents 1742 0 R -/Resources 1740 0 R +/Contents 1744 0 R +/Resources 1742 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1722 0 R +/Parent 1724 0 R >> -% 1743 0 obj +% 1745 0 obj << -/D [1741 0 R /XYZ 149.705 753.953 null] +/D [1743 0 R /XYZ 149.705 753.953 null] >> % 425 0 obj << -/D [1741 0 R /XYZ 150.705 716.092 null] +/D [1743 0 R /XYZ 150.705 716.092 null] >> -% 1744 0 obj +% 1746 0 obj << -/D [1741 0 R /XYZ 150.705 222.691 null] +/D [1743 0 R /XYZ 150.705 222.691 null] >> -% 1745 0 obj +% 1747 0 obj << -/D [1741 0 R /XYZ 150.705 200.171 null] +/D [1743 0 R /XYZ 150.705 200.171 null] >> -% 1740 0 obj +% 1742 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1747 0 obj +% 1749 0 obj << /Type /Page -/Contents 1748 0 R -/Resources 1746 0 R +/Contents 1750 0 R +/Resources 1748 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1722 0 R +/Parent 1724 0 R >> -% 1749 0 obj +% 1751 0 obj << -/D [1747 0 R /XYZ 98.895 753.953 null] +/D [1749 0 R /XYZ 98.895 753.953 null] >> % 429 0 obj << -/D [1747 0 R /XYZ 99.895 716.092 null] +/D [1749 0 R /XYZ 99.895 716.092 null] >> -% 1750 0 obj +% 1752 0 obj << -/D [1747 0 R /XYZ 99.895 348.22 null] +/D [1749 0 R /XYZ 99.895 348.22 null] >> -% 1751 0 obj +% 1753 0 obj << -/D [1747 0 R /XYZ 99.895 313.8 null] +/D [1749 0 R /XYZ 99.895 313.8 null] >> -% 1746 0 obj +% 1748 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1753 0 obj +% 1755 0 obj << /Type /Page -/Contents 1754 0 R -/Resources 1752 0 R +/Contents 1756 0 R +/Resources 1754 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1722 0 R +/Parent 1724 0 R >> -% 1755 0 obj +% 1757 0 obj << -/D [1753 0 R /XYZ 149.705 753.953 null] +/D [1755 0 R /XYZ 149.705 753.953 null] >> % 433 0 obj << -/D [1753 0 R /XYZ 150.705 716.092 null] +/D [1755 0 R /XYZ 150.705 716.092 null] >> -% 1756 0 obj +% 1758 0 obj << -/D [1753 0 R /XYZ 150.705 441.869 null] +/D [1755 0 R /XYZ 150.705 441.869 null] >> -% 1757 0 obj +% 1759 0 obj << -/D [1753 0 R /XYZ 150.705 395.439 null] +/D [1755 0 R /XYZ 150.705 395.439 null] >> -% 1758 0 obj +% 1760 0 obj << -/D [1753 0 R /XYZ 150.705 363.559 null] +/D [1755 0 R /XYZ 150.705 363.559 null] >> -% 1752 0 obj +% 1754 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1760 0 obj +% 1762 0 obj << /Type /Page -/Contents 1761 0 R -/Resources 1759 0 R +/Contents 1763 0 R +/Resources 1761 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1763 0 R +/Parent 1765 0 R >> -% 1762 0 obj +% 1764 0 obj << -/D [1760 0 R /XYZ 98.895 753.953 null] +/D [1762 0 R /XYZ 98.895 753.953 null] >> % 437 0 obj << -/D [1760 0 R /XYZ 99.895 716.092 null] +/D [1762 0 R /XYZ 99.895 716.092 null] >> -% 1759 0 obj +% 1761 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1765 0 obj +% 1767 0 obj << /Type /Page -/Contents 1766 0 R -/Resources 1764 0 R +/Contents 1768 0 R +/Resources 1766 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1763 0 R +/Parent 1765 0 R >> -% 1767 0 obj +% 1769 0 obj << -/D [1765 0 R /XYZ 149.705 753.953 null] +/D [1767 0 R /XYZ 149.705 753.953 null] >> % 441 0 obj << -/D [1765 0 R /XYZ 150.705 716.092 null] +/D [1767 0 R /XYZ 150.705 716.092 null] >> -% 1764 0 obj +% 1766 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1769 0 obj +% 1771 0 obj << /Type /Page -/Contents 1770 0 R -/Resources 1768 0 R +/Contents 1772 0 R +/Resources 1770 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1763 0 R +/Parent 1765 0 R >> -% 1771 0 obj +% 1773 0 obj << -/D [1769 0 R /XYZ 98.895 753.953 null] +/D [1771 0 R /XYZ 98.895 753.953 null] >> % 445 0 obj << -/D [1769 0 R /XYZ 99.895 716.092 null] +/D [1771 0 R /XYZ 99.895 716.092 null] >> -% 1768 0 obj +% 1770 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1773 0 obj +% 1775 0 obj << /Type /Page -/Contents 1774 0 R -/Resources 1772 0 R +/Contents 1776 0 R +/Resources 1774 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1763 0 R +/Parent 1765 0 R >> -% 1775 0 obj +% 1777 0 obj << -/D [1773 0 R /XYZ 149.705 753.953 null] +/D [1775 0 R /XYZ 149.705 753.953 null] >> % 449 0 obj << -/D [1773 0 R /XYZ 150.705 716.092 null] +/D [1775 0 R /XYZ 150.705 716.092 null] >> -% 1772 0 obj +% 1774 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1777 0 obj +% 1779 0 obj << /Type /Page -/Contents 1778 0 R -/Resources 1776 0 R +/Contents 1780 0 R +/Resources 1778 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1763 0 R +/Parent 1765 0 R >> -% 1779 0 obj +% 1781 0 obj << -/D [1777 0 R /XYZ 98.895 753.953 null] +/D [1779 0 R /XYZ 98.895 753.953 null] >> % 453 0 obj << -/D [1777 0 R /XYZ 99.895 716.092 null] +/D [1779 0 R /XYZ 99.895 716.092 null] >> -% 1776 0 obj +% 1778 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1781 0 obj +% 1783 0 obj << /Type /Page -/Contents 1782 0 R -/Resources 1780 0 R +/Contents 1784 0 R +/Resources 1782 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1763 0 R +/Parent 1765 0 R >> -% 1783 0 obj +% 1785 0 obj << -/D [1781 0 R /XYZ 149.705 753.953 null] +/D [1783 0 R /XYZ 149.705 753.953 null] >> % 457 0 obj << -/D [1781 0 R /XYZ 150.705 716.092 null] +/D [1783 0 R /XYZ 150.705 716.092 null] >> -% 1780 0 obj +% 1782 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1785 0 obj +% 1787 0 obj << /Type /Page -/Contents 1786 0 R -/Resources 1784 0 R +/Contents 1788 0 R +/Resources 1786 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1792 0 R +/Parent 1794 0 R >> -% 1787 0 obj +% 1789 0 obj << -/D [1785 0 R /XYZ 98.895 753.953 null] +/D [1787 0 R /XYZ 98.895 753.953 null] >> -% 1788 0 obj +% 1790 0 obj << -/D [1785 0 R /XYZ 99.895 552.489 null] +/D [1787 0 R /XYZ 99.895 552.489 null] >> -% 1789 0 obj +% 1791 0 obj << -/D [1785 0 R /XYZ 99.895 518.014 null] +/D [1787 0 R /XYZ 99.895 518.014 null] >> -% 1790 0 obj +% 1792 0 obj << -/D [1785 0 R /XYZ 99.895 427.175 null] +/D [1787 0 R /XYZ 99.895 427.175 null] >> -% 1784 0 obj +% 1786 0 obj << -/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1794 0 obj +% 1796 0 obj << /Type /Page -/Contents 1795 0 R -/Resources 1793 0 R +/Contents 1797 0 R +/Resources 1795 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1792 0 R +/Parent 1794 0 R >> -% 1796 0 obj +% 1798 0 obj << -/D [1794 0 R /XYZ 149.705 753.953 null] +/D [1796 0 R /XYZ 149.705 753.953 null] >> % 461 0 obj << -/D [1794 0 R /XYZ 150.705 716.092 null] +/D [1796 0 R /XYZ 150.705 716.092 null] >> -% 1793 0 obj +% 1795 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1798 0 obj +% 1800 0 obj << /Type /Page -/Contents 1799 0 R -/Resources 1797 0 R +/Contents 1801 0 R +/Resources 1799 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1792 0 R +/Parent 1794 0 R >> -% 1800 0 obj +% 1802 0 obj << -/D [1798 0 R /XYZ 98.895 753.953 null] +/D [1800 0 R /XYZ 98.895 753.953 null] >> -% 1801 0 obj +% 1803 0 obj << -/D [1798 0 R /XYZ 99.895 564.444 null] +/D [1800 0 R /XYZ 99.895 564.444 null] >> -% 1802 0 obj +% 1804 0 obj << -/D [1798 0 R /XYZ 99.895 529.97 null] +/D [1800 0 R /XYZ 99.895 529.97 null] >> -% 1803 0 obj +% 1805 0 obj << -/D [1798 0 R /XYZ 99.895 439.13 null] +/D [1800 0 R /XYZ 99.895 439.13 null] >> -% 1797 0 obj +% 1799 0 obj << -/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1805 0 obj +% 1807 0 obj << /Type /Page -/Contents 1806 0 R -/Resources 1804 0 R +/Contents 1808 0 R +/Resources 1806 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1792 0 R +/Parent 1794 0 R >> -% 1807 0 obj +% 1809 0 obj << -/D [1805 0 R /XYZ 149.705 753.953 null] +/D [1807 0 R /XYZ 149.705 753.953 null] >> % 465 0 obj << -/D [1805 0 R /XYZ 150.705 716.092 null] +/D [1807 0 R /XYZ 150.705 716.092 null] >> -% 1804 0 obj +% 1806 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1809 0 obj +% 1811 0 obj << /Type /Page -/Contents 1810 0 R -/Resources 1808 0 R +/Contents 1812 0 R +/Resources 1810 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1792 0 R +/Parent 1794 0 R >> -% 1811 0 obj +% 1813 0 obj << -/D [1809 0 R /XYZ 98.895 753.953 null] +/D [1811 0 R /XYZ 98.895 753.953 null] >> -% 1812 0 obj +% 1814 0 obj << -/D [1809 0 R /XYZ 99.895 540.534 null] +/D [1811 0 R /XYZ 99.895 540.534 null] >> -% 1813 0 obj +% 1815 0 obj << -/D [1809 0 R /XYZ 99.895 506.059 null] +/D [1811 0 R /XYZ 99.895 506.059 null] >> -% 1814 0 obj +% 1816 0 obj << -/D [1809 0 R /XYZ 99.895 415.22 null] +/D [1811 0 R /XYZ 99.895 415.22 null] >> -% 1808 0 obj +% 1810 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1816 0 obj +% 1818 0 obj << /Type /Page -/Contents 1817 0 R -/Resources 1815 0 R +/Contents 1819 0 R +/Resources 1817 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1792 0 R +/Parent 1794 0 R >> -% 1818 0 obj +% 1820 0 obj << -/D [1816 0 R /XYZ 149.705 753.953 null] +/D [1818 0 R /XYZ 149.705 753.953 null] >> % 469 0 obj << -/D [1816 0 R /XYZ 150.705 716.092 null] +/D [1818 0 R /XYZ 150.705 716.092 null] >> -% 1815 0 obj -<< -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1820 0 obj + +endstream +endobj +1824 0 obj << -/Type /Page -/Contents 1821 0 R -/Resources 1819 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1826 0 R +/Length 5331 >> +stream +0 g 0 G +0 g 0 G +BT +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.983 0 0 1 124.802 682.219 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(w)1(hich)-255(may)-255(be)-255(a)-256(s)1(calar)75(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 124.802 670.263 Tm [(or)-250(2)-250(array)111(.)]TJ -0.309 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ +0 g 0 G +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +0 g 0 G + 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ +0 g 0 G + -12.453 -19.925 Td [(2.)]TJ +0 g 0 G + 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 124.802 441.123 cm +0 0 318.804 27.895 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ +0 g 0 G + [-525(psb_min\050ctxt,dat,&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 23.537 -10.959 Td [(&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(mode)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(ior)]TJ +0 g 0 G + [(\050psb_collective_start_,psb_collective_end_\051\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ +0 g 0 G + 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 124.802 326.552 cm +0 0 318.804 60.772 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ +0 g 0 G + [-525(psb_min\050ctxt,dat,mode)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(psb_collective_start_,&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 23.537 -10.959 Td [(&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(request)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(min_request\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + -23.537 -10.958 Td [(.......)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +0 g 0 G + [-525(psb_min\050ctxt,dat,mode)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(psb_collective_end_,&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 23.537 -10.959 Td [(&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(request)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(min_request\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F84 9.9626 Tf 103.537 -242.391 Td [(127)]TJ +0 g 0 G +ET endstream endobj -1830 0 obj +1832 0 obj << /Length 6212 >> @@ -23796,7 +23799,7 @@ ET endstream endobj -1834 0 obj +1836 0 obj << /Length 5285 >> @@ -23917,7 +23920,7 @@ ET endstream endobj -1841 0 obj +1843 0 obj << /Length 6213 >> @@ -23977,7 +23980,7 @@ ET endstream endobj -1845 0 obj +1847 0 obj << /Length 5343 >> @@ -24100,7 +24103,7 @@ ET endstream endobj -1852 0 obj +1854 0 obj << /Length 6110 >> @@ -24160,7 +24163,7 @@ ET endstream endobj -1856 0 obj +1858 0 obj << /Length 6779 >> @@ -24296,7 +24299,7 @@ ET endstream endobj -1867 0 obj +1869 0 obj << /Length 5627 >> @@ -24353,7 +24356,7 @@ ET endstream endobj -1872 0 obj +1874 0 obj << /Length 5628 >> @@ -24409,7 +24412,7 @@ ET endstream endobj -1879 0 obj +1881 0 obj << /Length 6891 >> @@ -24433,7 +24436,7 @@ ET endstream endobj -1885 0 obj +1887 0 obj << /Length 10390 >> @@ -24884,7 +24887,7 @@ ET endstream endobj -1889 0 obj +1891 0 obj << /Length 3562 >> @@ -24995,7 +24998,7 @@ ET endstream endobj -1895 0 obj +1897 0 obj << /Length 1377 >> @@ -25038,7 +25041,7 @@ ET endstream endobj -1902 0 obj +1904 0 obj << /Length 1584 >> @@ -25095,7 +25098,7 @@ ET endstream endobj -1908 0 obj +1910 0 obj << /Length 2078 >> @@ -25166,7 +25169,7 @@ ET endstream endobj -1914 0 obj +1916 0 obj << /Length 539 >> @@ -25182,7 +25185,7 @@ ET endstream endobj -1919 0 obj +1921 0 obj << /Length 4735 >> @@ -25266,7 +25269,7 @@ ET endstream endobj -1926 0 obj +1928 0 obj << /Length 5172 >> @@ -25354,263 +25357,276 @@ ET endstream endobj -1827 0 obj +1821 0 obj << /Type /ObjStm /N 100 -/First 971 -/Length 9345 ->> -stream -1822 0 1823 58 1824 116 1825 174 1819 232 1829 370 1831 488 473 547 1828 605 1833 756 -1835 874 1836 932 1837 990 1838 1047 1832 1104 1840 1242 1842 1360 477 1419 1839 1477 1844 1628 -1846 1746 1847 1804 1848 1862 1849 1920 1843 1978 1851 2116 1853 2234 481 2293 1850 2351 1855 2502 -1857 2620 1858 2678 1859 2736 1861 2793 1862 2851 1863 2909 1854 2967 1866 3148 1868 3266 485 3325 -1869 3383 1865 3442 1871 3593 1873 3711 489 3769 1874 3826 1870 3884 1878 4035 1875 4183 1876 4331 -1880 4479 493 4538 1877 4596 1884 4691 1886 4809 1881 4867 1882 4925 1883 4983 1888 5080 1890 5198 -497 5257 1891 5315 1892 5374 1887 5433 1894 5514 1896 5632 501 5690 1897 5747 1898 5804 1893 5862 -1901 5943 1903 6061 505 6120 1904 6178 1905 6237 1900 6296 1907 6377 1909 6495 509 6553 1910 6610 -1911 6667 1906 6725 1913 6820 1915 6938 513 6997 1912 7055 1918 7150 1916 7289 1920 7434 517 7492 -1921 7549 1922 7607 1917 7665 1925 7760 1923 7899 1927 8044 521 8103 1928 8161 1929 8220 1924 8279 -% 1822 0 obj -<< -/D [1820 0 R /XYZ 98.895 753.953 null] +/First 974 +/Length 9463 +>> +stream +1817 0 1823 151 1825 269 1826 327 1827 385 1828 443 1822 501 1831 639 1833 757 473 816 +1830 874 1835 1025 1837 1143 1838 1201 1839 1259 1840 1316 1834 1373 1842 1511 1844 1629 477 1688 +1841 1746 1846 1897 1848 2015 1849 2073 1850 2131 1851 2189 1845 2247 1853 2385 1855 2503 481 2562 +1852 2620 1857 2771 1859 2889 1860 2947 1861 3005 1863 3062 1864 3120 1865 3178 1856 3236 1868 3417 +1870 3535 485 3594 1871 3652 1867 3711 1873 3862 1875 3980 489 4038 1876 4095 1872 4153 1880 4304 +1877 4452 1878 4600 1882 4748 493 4807 1879 4865 1886 4960 1888 5078 1883 5136 1884 5194 1885 5252 +1890 5349 1892 5467 497 5526 1893 5584 1894 5643 1889 5702 1896 5783 1898 5901 501 5959 1899 6016 +1900 6073 1895 6131 1903 6212 1905 6330 505 6389 1906 6447 1907 6506 1902 6565 1909 6646 1911 6764 +509 6822 1912 6879 1913 6936 1908 6994 1915 7089 1917 7207 513 7266 1914 7324 1920 7419 1918 7558 +1922 7703 517 7761 1923 7818 1924 7876 1919 7934 1927 8029 1925 8168 1929 8313 521 8372 1930 8430 +% 1817 0 obj +<< +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] >> % 1823 0 obj << -/D [1820 0 R /XYZ 99.895 552.489 null] +/Type /Page +/Contents 1824 0 R +/Resources 1822 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1829 0 R >> -% 1824 0 obj +% 1825 0 obj << -/D [1820 0 R /XYZ 99.895 518.014 null] +/D [1823 0 R /XYZ 98.895 753.953 null] >> -% 1825 0 obj +% 1826 0 obj +<< +/D [1823 0 R /XYZ 99.895 552.489 null] +>> +% 1827 0 obj +<< +/D [1823 0 R /XYZ 99.895 518.014 null] +>> +% 1828 0 obj << -/D [1820 0 R /XYZ 99.895 427.175 null] +/D [1823 0 R /XYZ 99.895 427.175 null] >> -% 1819 0 obj +% 1822 0 obj << -/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1829 0 obj +% 1831 0 obj << /Type /Page -/Contents 1830 0 R -/Resources 1828 0 R +/Contents 1832 0 R +/Resources 1830 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1826 0 R +/Parent 1829 0 R >> -% 1831 0 obj +% 1833 0 obj << -/D [1829 0 R /XYZ 149.705 753.953 null] +/D [1831 0 R /XYZ 149.705 753.953 null] >> % 473 0 obj << -/D [1829 0 R /XYZ 150.705 716.092 null] +/D [1831 0 R /XYZ 150.705 716.092 null] >> -% 1828 0 obj +% 1830 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1833 0 obj +% 1835 0 obj << /Type /Page -/Contents 1834 0 R -/Resources 1832 0 R +/Contents 1836 0 R +/Resources 1834 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1826 0 R +/Parent 1829 0 R >> -% 1835 0 obj +% 1837 0 obj << -/D [1833 0 R /XYZ 98.895 753.953 null] +/D [1835 0 R /XYZ 98.895 753.953 null] >> -% 1836 0 obj +% 1838 0 obj << -/D [1833 0 R /XYZ 99.895 564.444 null] +/D [1835 0 R /XYZ 99.895 564.444 null] >> -% 1837 0 obj +% 1839 0 obj << -/D [1833 0 R /XYZ 99.895 529.97 null] +/D [1835 0 R /XYZ 99.895 529.97 null] >> -% 1838 0 obj +% 1840 0 obj << -/D [1833 0 R /XYZ 99.895 439.13 null] +/D [1835 0 R /XYZ 99.895 439.13 null] >> -% 1832 0 obj +% 1834 0 obj << -/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1840 0 obj +% 1842 0 obj << /Type /Page -/Contents 1841 0 R -/Resources 1839 0 R +/Contents 1843 0 R +/Resources 1841 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1826 0 R +/Parent 1829 0 R >> -% 1842 0 obj +% 1844 0 obj << -/D [1840 0 R /XYZ 149.705 753.953 null] +/D [1842 0 R /XYZ 149.705 753.953 null] >> % 477 0 obj << -/D [1840 0 R /XYZ 150.705 716.092 null] +/D [1842 0 R /XYZ 150.705 716.092 null] >> -% 1839 0 obj +% 1841 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1844 0 obj +% 1846 0 obj << /Type /Page -/Contents 1845 0 R -/Resources 1843 0 R +/Contents 1847 0 R +/Resources 1845 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1826 0 R +/Parent 1829 0 R >> -% 1846 0 obj +% 1848 0 obj << -/D [1844 0 R /XYZ 98.895 753.953 null] +/D [1846 0 R /XYZ 98.895 753.953 null] >> -% 1847 0 obj +% 1849 0 obj << -/D [1844 0 R /XYZ 99.895 552.489 null] +/D [1846 0 R /XYZ 99.895 552.489 null] >> -% 1848 0 obj +% 1850 0 obj << -/D [1844 0 R /XYZ 99.895 518.014 null] +/D [1846 0 R /XYZ 99.895 518.014 null] >> -% 1849 0 obj +% 1851 0 obj << -/D [1844 0 R /XYZ 99.895 427.175 null] +/D [1846 0 R /XYZ 99.895 427.175 null] >> -% 1843 0 obj +% 1845 0 obj << -/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1791 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1851 0 obj +% 1853 0 obj << /Type /Page -/Contents 1852 0 R -/Resources 1850 0 R +/Contents 1854 0 R +/Resources 1852 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1826 0 R +/Parent 1829 0 R >> -% 1853 0 obj +% 1855 0 obj << -/D [1851 0 R /XYZ 149.705 753.953 null] +/D [1853 0 R /XYZ 149.705 753.953 null] >> % 481 0 obj << -/D [1851 0 R /XYZ 150.705 716.092 null] +/D [1853 0 R /XYZ 150.705 716.092 null] >> -% 1850 0 obj +% 1852 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1855 0 obj +% 1857 0 obj << /Type /Page -/Contents 1856 0 R -/Resources 1854 0 R +/Contents 1858 0 R +/Resources 1856 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1864 0 R +/Parent 1866 0 R >> -% 1857 0 obj +% 1859 0 obj << -/D [1855 0 R /XYZ 98.895 753.953 null] +/D [1857 0 R /XYZ 98.895 753.953 null] >> -% 1858 0 obj +% 1860 0 obj << -/D [1855 0 R /XYZ 99.895 564.444 null] +/D [1857 0 R /XYZ 99.895 564.444 null] >> -% 1859 0 obj +% 1861 0 obj << -/D [1855 0 R /XYZ 99.895 529.97 null] +/D [1857 0 R /XYZ 99.895 529.97 null] >> -% 1861 0 obj +% 1863 0 obj << -/D [1855 0 R /XYZ 99.895 441.815 null] +/D [1857 0 R /XYZ 99.895 441.815 null] >> -% 1862 0 obj +% 1864 0 obj << -/D [1855 0 R /XYZ 99.895 409.935 null] +/D [1857 0 R /XYZ 99.895 409.935 null] >> -% 1863 0 obj +% 1865 0 obj << -/D [1855 0 R /XYZ 99.895 319.095 null] +/D [1857 0 R /XYZ 99.895 319.095 null] >> -% 1854 0 obj +% 1856 0 obj << -/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F17 1860 0 R /F241 1263 0 R /F231 1025 0 R /F279 1791 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F17 1862 0 R /F241 1265 0 R /F231 1025 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1866 0 obj +% 1868 0 obj << /Type /Page -/Contents 1867 0 R -/Resources 1865 0 R +/Contents 1869 0 R +/Resources 1867 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1864 0 R +/Parent 1866 0 R >> -% 1868 0 obj +% 1870 0 obj << -/D [1866 0 R /XYZ 149.705 753.953 null] +/D [1868 0 R /XYZ 149.705 753.953 null] >> % 485 0 obj << -/D [1866 0 R /XYZ 150.705 716.092 null] +/D [1868 0 R /XYZ 150.705 716.092 null] >> -% 1869 0 obj +% 1871 0 obj << -/D [1866 0 R /XYZ 150.705 222.691 null] +/D [1868 0 R /XYZ 150.705 222.691 null] >> -% 1865 0 obj +% 1867 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F134 1469 0 R /F181 923 0 R /F179 922 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F134 1471 0 R /F181 923 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1871 0 obj +% 1873 0 obj << /Type /Page -/Contents 1872 0 R -/Resources 1870 0 R +/Contents 1874 0 R +/Resources 1872 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1864 0 R +/Parent 1866 0 R >> -% 1873 0 obj +% 1875 0 obj << -/D [1871 0 R /XYZ 98.895 753.953 null] +/D [1873 0 R /XYZ 98.895 753.953 null] >> % 489 0 obj << -/D [1871 0 R /XYZ 99.895 716.092 null] +/D [1873 0 R /XYZ 99.895 716.092 null] >> -% 1874 0 obj +% 1876 0 obj << -/D [1871 0 R /XYZ 99.895 222.691 null] +/D [1873 0 R /XYZ 99.895 222.691 null] >> -% 1870 0 obj +% 1872 0 obj << -/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1469 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1878 0 obj +% 1880 0 obj << /Type /Page -/Contents 1879 0 R -/Resources 1877 0 R +/Contents 1881 0 R +/Resources 1879 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1864 0 R -/Annots [ 1875 0 R 1876 0 R ] +/Parent 1866 0 R +/Annots [ 1877 0 R 1878 0 R ] >> -% 1875 0 obj +% 1877 0 obj << /Type /Annot /Subtype /Link @@ -25618,7 +25634,7 @@ stream /Rect [196.173 511.904 203.237 523.964] /A << /S /GoTo /D (listing.5) >> >> -% 1876 0 obj +% 1878 0 obj << /Type /Annot /Subtype /Link @@ -25626,191 +25642,191 @@ stream /Rect [194.784 356.487 201.659 368.547] /A << /S /GoTo /D (listing.6) >> >> -% 1880 0 obj +% 1882 0 obj << -/D [1878 0 R /XYZ 149.705 753.953 null] +/D [1880 0 R /XYZ 149.705 753.953 null] >> % 493 0 obj << -/D [1878 0 R /XYZ 150.705 716.092 null] +/D [1880 0 R /XYZ 150.705 716.092 null] >> -% 1877 0 obj +% 1879 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1884 0 obj +% 1886 0 obj << /Type /Page -/Contents 1885 0 R -/Resources 1883 0 R +/Contents 1887 0 R +/Resources 1885 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1864 0 R +/Parent 1866 0 R >> -% 1886 0 obj +% 1888 0 obj << -/D [1884 0 R /XYZ 98.895 753.953 null] +/D [1886 0 R /XYZ 98.895 753.953 null] >> -% 1881 0 obj +% 1883 0 obj << -/D [1884 0 R /XYZ 99.895 411.235 null] +/D [1886 0 R /XYZ 99.895 411.235 null] >> -% 1882 0 obj +% 1884 0 obj << -/D [1884 0 R /XYZ 99.895 182.902 null] +/D [1886 0 R /XYZ 99.895 182.902 null] >> -% 1883 0 obj +% 1885 0 obj << -/Font << /F131 921 0 R /F279 1791 0 R /F84 675 0 R >> +/Font << /F131 921 0 R /F279 1793 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1888 0 obj +% 1890 0 obj << /Type /Page -/Contents 1889 0 R -/Resources 1887 0 R +/Contents 1891 0 R +/Resources 1889 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1864 0 R +/Parent 1866 0 R >> -% 1890 0 obj +% 1892 0 obj << -/D [1888 0 R /XYZ 149.705 753.953 null] +/D [1890 0 R /XYZ 149.705 753.953 null] >> % 497 0 obj << -/D [1888 0 R /XYZ 150.705 716.092 null] +/D [1890 0 R /XYZ 150.705 716.092 null] >> -% 1891 0 obj +% 1893 0 obj << -/D [1888 0 R /XYZ 150.705 690.058 null] +/D [1890 0 R /XYZ 150.705 690.058 null] >> -% 1892 0 obj +% 1894 0 obj << -/D [1888 0 R /XYZ 150.705 693.143 null] +/D [1890 0 R /XYZ 150.705 693.143 null] >> -% 1887 0 obj +% 1889 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1894 0 obj +% 1896 0 obj << /Type /Page -/Contents 1895 0 R -/Resources 1893 0 R +/Contents 1897 0 R +/Resources 1895 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1899 0 R +/Parent 1901 0 R >> -% 1896 0 obj +% 1898 0 obj << -/D [1894 0 R /XYZ 98.895 753.953 null] +/D [1896 0 R /XYZ 98.895 753.953 null] >> % 501 0 obj << -/D [1894 0 R /XYZ 99.895 716.092 null] +/D [1896 0 R /XYZ 99.895 716.092 null] >> -% 1897 0 obj +% 1899 0 obj << -/D [1894 0 R /XYZ 99.895 678.98 null] +/D [1896 0 R /XYZ 99.895 678.98 null] >> -% 1898 0 obj +% 1900 0 obj << -/D [1894 0 R /XYZ 99.895 679.195 null] +/D [1896 0 R /XYZ 99.895 679.195 null] >> -% 1893 0 obj +% 1895 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1901 0 obj +% 1903 0 obj << /Type /Page -/Contents 1902 0 R -/Resources 1900 0 R +/Contents 1904 0 R +/Resources 1902 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1899 0 R +/Parent 1901 0 R >> -% 1903 0 obj +% 1905 0 obj << -/D [1901 0 R /XYZ 149.705 753.953 null] +/D [1903 0 R /XYZ 149.705 753.953 null] >> % 505 0 obj << -/D [1901 0 R /XYZ 150.705 716.092 null] +/D [1903 0 R /XYZ 150.705 716.092 null] >> -% 1904 0 obj +% 1906 0 obj << -/D [1901 0 R /XYZ 150.705 689.963 null] +/D [1903 0 R /XYZ 150.705 689.963 null] >> -% 1905 0 obj +% 1907 0 obj << -/D [1901 0 R /XYZ 150.705 693.143 null] +/D [1903 0 R /XYZ 150.705 693.143 null] >> -% 1900 0 obj +% 1902 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1907 0 obj +% 1909 0 obj << /Type /Page -/Contents 1908 0 R -/Resources 1906 0 R +/Contents 1910 0 R +/Resources 1908 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1899 0 R +/Parent 1901 0 R >> -% 1909 0 obj +% 1911 0 obj << -/D [1907 0 R /XYZ 98.895 753.953 null] +/D [1909 0 R /XYZ 98.895 753.953 null] >> % 509 0 obj << -/D [1907 0 R /XYZ 99.895 716.092 null] +/D [1909 0 R /XYZ 99.895 716.092 null] >> -% 1910 0 obj +% 1912 0 obj << -/D [1907 0 R /XYZ 99.895 678.98 null] +/D [1909 0 R /XYZ 99.895 678.98 null] >> -% 1911 0 obj +% 1913 0 obj << -/D [1907 0 R /XYZ 99.895 679.195 null] +/D [1909 0 R /XYZ 99.895 679.195 null] >> -% 1906 0 obj +% 1908 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1913 0 obj +% 1915 0 obj << /Type /Page -/Contents 1914 0 R -/Resources 1912 0 R +/Contents 1916 0 R +/Resources 1914 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1899 0 R +/Parent 1901 0 R >> -% 1915 0 obj +% 1917 0 obj << -/D [1913 0 R /XYZ 149.705 753.953 null] +/D [1915 0 R /XYZ 149.705 753.953 null] >> % 513 0 obj << -/D [1913 0 R /XYZ 150.705 716.092 null] +/D [1915 0 R /XYZ 150.705 716.092 null] >> -% 1912 0 obj +% 1914 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1918 0 obj +% 1920 0 obj << /Type /Page -/Contents 1919 0 R -/Resources 1917 0 R +/Contents 1921 0 R +/Resources 1919 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1899 0 R -/Annots [ 1916 0 R ] +/Parent 1901 0 R +/Annots [ 1918 0 R ] >> -% 1916 0 obj +% 1918 0 obj << /Type /Annot /Subtype /Link @@ -25818,37 +25834,37 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1920 0 obj +% 1922 0 obj << -/D [1918 0 R /XYZ 98.895 753.953 null] +/D [1920 0 R /XYZ 98.895 753.953 null] >> % 517 0 obj << -/D [1918 0 R /XYZ 99.895 716.092 null] +/D [1920 0 R /XYZ 99.895 716.092 null] >> -% 1921 0 obj +% 1923 0 obj << -/D [1918 0 R /XYZ 99.895 676.015 null] +/D [1920 0 R /XYZ 99.895 676.015 null] >> -% 1922 0 obj +% 1924 0 obj << -/D [1918 0 R /XYZ 99.895 679.195 null] +/D [1920 0 R /XYZ 99.895 679.195 null] >> -% 1917 0 obj +% 1919 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1925 0 obj +% 1927 0 obj << /Type /Page -/Contents 1926 0 R -/Resources 1924 0 R +/Contents 1928 0 R +/Resources 1926 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1899 0 R -/Annots [ 1923 0 R ] +/Parent 1901 0 R +/Annots [ 1925 0 R ] >> -% 1923 0 obj +% 1925 0 obj << /Type /Annot /Subtype /Link @@ -25856,31 +25872,22 @@ stream /Rect [342.753 571.778 420.271 583.837] /A << /S /GoTo /D (spdata) >> >> -% 1927 0 obj +% 1929 0 obj << -/D [1925 0 R /XYZ 149.705 753.953 null] +/D [1927 0 R /XYZ 149.705 753.953 null] >> % 521 0 obj << -/D [1925 0 R /XYZ 150.705 716.092 null] ->> -% 1928 0 obj -<< -/D [1925 0 R /XYZ 150.705 676.015 null] ->> -% 1929 0 obj -<< -/D [1925 0 R /XYZ 150.705 679.195 null] +/D [1927 0 R /XYZ 150.705 716.092 null] >> -% 1924 0 obj +% 1930 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> -/ProcSet [ /PDF /Text ] +/D [1927 0 R /XYZ 150.705 676.015 null] >> endstream endobj -1933 0 obj +1936 0 obj << /Length 3667 >> @@ -25970,7 +25977,7 @@ ET endstream endobj -1942 0 obj +1944 0 obj << /Length 4378 >> @@ -26067,7 +26074,7 @@ ET endstream endobj -1949 0 obj +1951 0 obj << /Length 7519 >> @@ -26254,7 +26261,7 @@ ET endstream endobj -1956 0 obj +1958 0 obj << /Length 7416 >> @@ -26431,7 +26438,7 @@ ET endstream endobj -1962 0 obj +1964 0 obj << /Length 655 >> @@ -26469,7 +26476,7 @@ ET endstream endobj -1966 0 obj +1968 0 obj << /Length 1282 >> @@ -26493,7 +26500,7 @@ ET endstream endobj -1973 0 obj +1975 0 obj << /Length 5045 >> @@ -26585,7 +26592,7 @@ ET endstream endobj -1985 0 obj +1987 0 obj << /Length 4360 >> @@ -26684,7 +26691,7 @@ ET endstream endobj -1989 0 obj +1991 0 obj << /Length 13614 >> @@ -27225,7 +27232,7 @@ ET endstream endobj -1998 0 obj +2000 0 obj << /Length 7669 >> @@ -27443,7 +27450,7 @@ ET endstream endobj -2002 0 obj +2004 0 obj << /Length 1131 >> @@ -27462,7 +27469,7 @@ ET endstream endobj -2010 0 obj +2012 0 obj << /Length 5678 >> @@ -27612,7 +27619,7 @@ ET endstream endobj -2015 0 obj +2017 0 obj << /Length 3485 >> @@ -27675,7 +27682,7 @@ ET endstream endobj -2020 0 obj +2022 0 obj << /Length 974 >> @@ -27716,7 +27723,7 @@ ET endstream endobj -2026 0 obj +2028 0 obj << /Length 2709 >> @@ -27793,7 +27800,7 @@ ET endstream endobj -2030 0 obj +2032 0 obj << /Length 607 >> @@ -27809,7 +27816,7 @@ ET endstream endobj -2037 0 obj +2039 0 obj << /Length 8455 >> @@ -27959,34 +27966,43 @@ ET endstream endobj -1937 0 obj +1932 0 obj << /Type /ObjStm /N 100 /First 974 -/Length 11085 +/Length 11124 +>> +stream +1931 0 1926 59 1935 154 1933 293 1937 438 525 496 1938 553 1939 610 1934 668 1943 763 +1941 902 1945 1045 529 1104 1946 1162 1947 1220 1942 1279 1950 1374 1948 1513 1952 1658 533 1716 +1953 1773 1954 1831 1949 1889 1957 2012 1955 2151 1959 2293 537 2352 1960 2410 1961 2469 1956 2528 +1963 2651 1965 2769 1962 2827 1967 2910 1969 3028 541 3087 1966 3145 1974 3240 1970 3397 1971 3544 +1972 3692 1976 3838 545 3896 1977 3953 1973 4011 1986 4119 1980 4285 1981 4432 1982 4579 1983 4727 +1988 4874 549 4933 1985 4991 1990 5099 1984 5238 1992 5401 1979 5459 1989 5518 1999 5628 1994 5794 +1995 5939 1996 6086 1997 6233 2001 6380 553 6439 1998 6497 2003 6592 2005 6710 2002 6768 2011 6863 +2006 7029 2007 7174 2008 7317 2009 7463 2013 7607 557 7666 2010 7724 2016 7819 2014 7958 2018 8103 +561 8161 2015 8218 2021 8340 2023 8458 565 8517 2020 8575 2027 8670 2024 8818 2025 8963 2029 9110 +569 9168 2026 9225 2031 9320 2033 9438 573 9497 2030 9555 2038 9650 2034 9798 2035 9947 2040 10092 +% 1931 0 obj +<< +/D [1927 0 R /XYZ 150.705 679.195 null] >> -stream -1932 0 1930 139 1934 284 525 342 1935 399 1936 456 1931 514 1941 609 1939 748 1943 891 -529 950 1944 1008 1945 1066 1940 1125 1948 1220 1946 1359 1950 1504 533 1562 1951 1619 1952 1677 -1947 1735 1955 1858 1953 1997 1957 2139 537 2198 1958 2256 1959 2315 1954 2374 1961 2497 1963 2615 -1960 2673 1965 2756 1967 2874 541 2933 1964 2991 1972 3086 1968 3243 1969 3390 1970 3538 1974 3684 -545 3742 1975 3799 1971 3857 1984 3965 1978 4131 1979 4278 1980 4425 1981 4573 1986 4720 549 4779 -1983 4837 1988 4945 1982 5084 1990 5247 1977 5305 1987 5364 1997 5474 1992 5640 1993 5785 1994 5932 -1995 6079 1999 6226 553 6285 1996 6343 2001 6438 2003 6556 2000 6614 2009 6709 2004 6875 2005 7020 -2006 7163 2007 7309 2011 7453 557 7512 2008 7570 2014 7665 2012 7804 2016 7949 561 8007 2013 8064 -2019 8186 2021 8304 565 8363 2018 8421 2025 8516 2022 8664 2023 8809 2027 8956 569 9014 2024 9071 -2029 9166 2031 9284 573 9343 2028 9401 2036 9496 2032 9644 2033 9793 2038 9938 577 9996 2039 10053 -% 1932 0 obj +% 1926 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1935 0 obj << /Type /Page -/Contents 1933 0 R -/Resources 1931 0 R +/Contents 1936 0 R +/Resources 1934 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1938 0 R -/Annots [ 1930 0 R ] +/Parent 1940 0 R +/Annots [ 1933 0 R ] >> -% 1930 0 obj +% 1933 0 obj << /Type /Annot /Subtype /Link @@ -27994,37 +28010,37 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1934 0 obj +% 1937 0 obj << -/D [1932 0 R /XYZ 98.895 753.953 null] +/D [1935 0 R /XYZ 98.895 753.953 null] >> % 525 0 obj << -/D [1932 0 R /XYZ 99.895 716.092 null] +/D [1935 0 R /XYZ 99.895 716.092 null] >> -% 1935 0 obj +% 1938 0 obj << -/D [1932 0 R /XYZ 99.895 678.98 null] +/D [1935 0 R /XYZ 99.895 678.98 null] >> -% 1936 0 obj +% 1939 0 obj << -/D [1932 0 R /XYZ 99.895 679.195 null] +/D [1935 0 R /XYZ 99.895 679.195 null] >> -% 1931 0 obj +% 1934 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1941 0 obj +% 1943 0 obj << /Type /Page -/Contents 1942 0 R -/Resources 1940 0 R +/Contents 1944 0 R +/Resources 1942 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1938 0 R -/Annots [ 1939 0 R ] +/Parent 1940 0 R +/Annots [ 1941 0 R ] >> -% 1939 0 obj +% 1941 0 obj << /Type /Annot /Subtype /Link @@ -28032,37 +28048,37 @@ stream /Rect [352.77 426.323 428.824 438.383] /A << /S /GoTo /D (vdata) >> >> -% 1943 0 obj +% 1945 0 obj << -/D [1941 0 R /XYZ 149.705 753.953 null] +/D [1943 0 R /XYZ 149.705 753.953 null] >> % 529 0 obj << -/D [1941 0 R /XYZ 150.705 716.092 null] +/D [1943 0 R /XYZ 150.705 716.092 null] >> -% 1944 0 obj +% 1946 0 obj << -/D [1941 0 R /XYZ 150.705 678.98 null] +/D [1943 0 R /XYZ 150.705 678.98 null] >> -% 1945 0 obj +% 1947 0 obj << -/D [1941 0 R /XYZ 150.705 679.195 null] +/D [1943 0 R /XYZ 150.705 679.195 null] >> -% 1940 0 obj +% 1942 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1948 0 obj +% 1950 0 obj << /Type /Page -/Contents 1949 0 R -/Resources 1947 0 R +/Contents 1951 0 R +/Resources 1949 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1938 0 R -/Annots [ 1946 0 R ] +/Parent 1940 0 R +/Annots [ 1948 0 R ] >> -% 1946 0 obj +% 1948 0 obj << /Type /Annot /Subtype /Link @@ -28070,37 +28086,37 @@ stream /Rect [291.943 574.778 369.462 586.838] /A << /S /GoTo /D (spdata) >> >> -% 1950 0 obj +% 1952 0 obj << -/D [1948 0 R /XYZ 98.895 753.953 null] +/D [1950 0 R /XYZ 98.895 753.953 null] >> % 533 0 obj << -/D [1948 0 R /XYZ 99.895 716.092 null] +/D [1950 0 R /XYZ 99.895 716.092 null] >> -% 1951 0 obj +% 1953 0 obj << -/D [1948 0 R /XYZ 99.895 679.441 null] +/D [1950 0 R /XYZ 99.895 679.441 null] >> -% 1952 0 obj +% 1954 0 obj << -/D [1948 0 R /XYZ 99.895 679.657 null] +/D [1950 0 R /XYZ 99.895 679.657 null] >> -% 1947 0 obj +% 1949 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1955 0 obj +% 1957 0 obj << /Type /Page -/Contents 1956 0 R -/Resources 1954 0 R +/Contents 1958 0 R +/Resources 1956 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1938 0 R -/Annots [ 1953 0 R ] +/Parent 1940 0 R +/Annots [ 1955 0 R ] >> -% 1953 0 obj +% 1955 0 obj << /Type /Annot /Subtype /Link @@ -28108,75 +28124,75 @@ stream /Rect [447.024 574.59 523.079 586.65] /A << /S /GoTo /D (vdata) >> >> -% 1957 0 obj +% 1959 0 obj << -/D [1955 0 R /XYZ 149.705 753.953 null] +/D [1957 0 R /XYZ 149.705 753.953 null] >> % 537 0 obj << -/D [1955 0 R /XYZ 150.705 716.092 null] +/D [1957 0 R /XYZ 150.705 716.092 null] >> -% 1958 0 obj +% 1960 0 obj << -/D [1955 0 R /XYZ 150.705 679.413 null] +/D [1957 0 R /XYZ 150.705 679.413 null] >> -% 1959 0 obj +% 1961 0 obj << -/D [1955 0 R /XYZ 150.705 679.628 null] +/D [1957 0 R /XYZ 150.705 679.628 null] >> -% 1954 0 obj +% 1956 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1961 0 obj +% 1963 0 obj << /Type /Page -/Contents 1962 0 R -/Resources 1960 0 R +/Contents 1964 0 R +/Resources 1962 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1938 0 R +/Parent 1940 0 R >> -% 1963 0 obj +% 1965 0 obj << -/D [1961 0 R /XYZ 98.895 753.953 null] +/D [1963 0 R /XYZ 98.895 753.953 null] >> -% 1960 0 obj +% 1962 0 obj << /Font << /F231 1025 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1965 0 obj +% 1967 0 obj << /Type /Page -/Contents 1966 0 R -/Resources 1964 0 R +/Contents 1968 0 R +/Resources 1966 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1938 0 R +/Parent 1940 0 R >> -% 1967 0 obj +% 1969 0 obj << -/D [1965 0 R /XYZ 149.705 753.953 null] +/D [1967 0 R /XYZ 149.705 753.953 null] >> % 541 0 obj << -/D [1965 0 R /XYZ 150.705 716.092 null] +/D [1967 0 R /XYZ 150.705 716.092 null] >> -% 1964 0 obj +% 1966 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1972 0 obj +% 1974 0 obj << /Type /Page -/Contents 1973 0 R -/Resources 1971 0 R +/Contents 1975 0 R +/Resources 1973 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1976 0 R -/Annots [ 1968 0 R 1969 0 R 1970 0 R ] +/Parent 1978 0 R +/Annots [ 1970 0 R 1971 0 R 1972 0 R ] >> -% 1968 0 obj +% 1970 0 obj << /Type /Annot /Subtype /Link @@ -28184,7 +28200,7 @@ stream /Rect [320.317 442.264 392.605 454.323] /A << /S /GoTo /D (precdata) >> >> -% 1969 0 obj +% 1971 0 obj << /Type /Annot /Subtype /Link @@ -28192,7 +28208,7 @@ stream /Rect [171.257 352.6 177.533 366.303] /A << /S /GoTo /D (Hfootnote.4) >> >> -% 1970 0 obj +% 1972 0 obj << /Type /Annot /Subtype /Link @@ -28200,33 +28216,33 @@ stream /Rect [170.51 235.698 182.465 245.108] /A << /S /GoTo /D (table.21) >> >> -% 1974 0 obj +% 1976 0 obj << -/D [1972 0 R /XYZ 98.895 753.953 null] +/D [1974 0 R /XYZ 98.895 753.953 null] >> % 545 0 obj << -/D [1972 0 R /XYZ 99.895 716.092 null] +/D [1974 0 R /XYZ 99.895 716.092 null] >> -% 1975 0 obj +% 1977 0 obj << -/D [1972 0 R /XYZ 114.242 129.79 null] +/D [1974 0 R /XYZ 114.242 129.79 null] >> -% 1971 0 obj +% 1973 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1984 0 obj +% 1986 0 obj << /Type /Page -/Contents 1985 0 R -/Resources 1983 0 R +/Contents 1987 0 R +/Resources 1985 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1976 0 R -/Annots [ 1978 0 R 1979 0 R 1980 0 R 1981 0 R ] +/Parent 1978 0 R +/Annots [ 1980 0 R 1981 0 R 1982 0 R 1983 0 R ] >> -% 1978 0 obj +% 1980 0 obj << /Type /Annot /Subtype /Link @@ -28234,7 +28250,7 @@ stream /Rect [334.168 567.422 346.124 580.259] /A << /S /GoTo /D (table.21) >> >> -% 1979 0 obj +% 1981 0 obj << /Type /Annot /Subtype /Link @@ -28242,7 +28258,7 @@ stream /Rect [416.947 520.379 429.101 532.438] /A << /S /GoTo /D (table.21) >> >> -% 1980 0 obj +% 1982 0 obj << /Type /Annot /Subtype /Link @@ -28250,7 +28266,7 @@ stream /Rect [430.128 483.736 437.102 496.573] /A << /S /GoTo /D (section.8) >> >> -% 1981 0 obj +% 1983 0 obj << /Type /Annot /Subtype /Link @@ -28258,29 +28274,29 @@ stream /Rect [187.566 451.412 199.521 460.822] /A << /S /GoTo /D (table.21) >> >> -% 1986 0 obj +% 1988 0 obj << -/D [1984 0 R /XYZ 149.705 753.953 null] +/D [1986 0 R /XYZ 149.705 753.953 null] >> % 549 0 obj << -/D [1984 0 R /XYZ 150.705 716.092 null] +/D [1986 0 R /XYZ 150.705 716.092 null] >> -% 1983 0 obj +% 1985 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1988 0 obj +% 1990 0 obj << /Type /Page -/Contents 1989 0 R -/Resources 1987 0 R +/Contents 1991 0 R +/Resources 1989 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1976 0 R -/Annots [ 1982 0 R ] +/Parent 1978 0 R +/Annots [ 1984 0 R ] >> -% 1982 0 obj +% 1984 0 obj << /Type /Annot /Subtype /Link @@ -28288,29 +28304,29 @@ stream /Rect [181.889 616.012 190.059 623.484] /A << /S /GoTo /D (cite.BERTACCINIFILIPPONE) >> >> -% 1990 0 obj +% 1992 0 obj << -/D [1988 0 R /XYZ 98.895 753.953 null] +/D [1990 0 R /XYZ 98.895 753.953 null] >> -% 1977 0 obj +% 1979 0 obj << -/D [1988 0 R /XYZ 418.648 120.326 null] +/D [1990 0 R /XYZ 418.648 120.326 null] >> -% 1987 0 obj +% 1989 0 obj << /Font << /F231 1025 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1997 0 obj +% 1999 0 obj << /Type /Page -/Contents 1998 0 R -/Resources 1996 0 R +/Contents 2000 0 R +/Resources 1998 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1976 0 R -/Annots [ 1992 0 R 1993 0 R 1994 0 R 1995 0 R ] +/Parent 1978 0 R +/Annots [ 1994 0 R 1995 0 R 1996 0 R 1997 0 R ] >> -% 1992 0 obj +% 1994 0 obj << /Type /Annot /Subtype /Link @@ -28318,7 +28334,7 @@ stream /Rect [365.487 576.377 443.006 588.437] /A << /S /GoTo /D (spdata) >> >> -% 1993 0 obj +% 1995 0 obj << /Type /Annot /Subtype /Link @@ -28326,7 +28342,7 @@ stream /Rect [446.665 505.741 518.953 517.801] /A << /S /GoTo /D (precdata) >> >> -% 1994 0 obj +% 1996 0 obj << /Type /Annot /Subtype /Link @@ -28334,7 +28350,7 @@ stream /Rect [422.264 435.105 489.322 447.165] /A << /S /GoTo /D (descdata) >> >> -% 1995 0 obj +% 1997 0 obj << /Type /Annot /Subtype /Link @@ -28342,46 +28358,46 @@ stream /Rect [368.227 128.475 440.515 140.535] /A << /S /GoTo /D (precdata) >> >> -% 1999 0 obj +% 2001 0 obj << -/D [1997 0 R /XYZ 149.705 753.953 null] +/D [1999 0 R /XYZ 149.705 753.953 null] >> % 553 0 obj << -/D [1997 0 R /XYZ 150.705 716.092 null] +/D [1999 0 R /XYZ 150.705 716.092 null] >> -% 1996 0 obj +% 1998 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2001 0 obj +% 2003 0 obj << /Type /Page -/Contents 2002 0 R -/Resources 2000 0 R +/Contents 2004 0 R +/Resources 2002 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1976 0 R +/Parent 1978 0 R >> -% 2003 0 obj +% 2005 0 obj << -/D [2001 0 R /XYZ 98.895 753.953 null] +/D [2003 0 R /XYZ 98.895 753.953 null] >> -% 2000 0 obj +% 2002 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2009 0 obj +% 2011 0 obj << /Type /Page -/Contents 2010 0 R -/Resources 2008 0 R +/Contents 2012 0 R +/Resources 2010 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1976 0 R -/Annots [ 2004 0 R 2005 0 R 2006 0 R 2007 0 R ] +/Parent 1978 0 R +/Annots [ 2006 0 R 2007 0 R 2008 0 R 2009 0 R ] >> -% 2004 0 obj +% 2006 0 obj << /Type /Annot /Subtype /Link @@ -28389,7 +28405,7 @@ stream /Rect [371.126 573.77 443.414 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2005 0 obj +% 2007 0 obj << /Type /Annot /Subtype /Link @@ -28397,7 +28413,7 @@ stream /Rect [393.303 517.98 469.357 530.039] /A << /S /GoTo /D (vdata) >> >> -% 2006 0 obj +% 2008 0 obj << /Type /Annot /Subtype /Link @@ -28405,7 +28421,7 @@ stream /Rect [374.822 462.189 441.88 474.248] /A << /S /GoTo /D (descdata) >> >> -% 2007 0 obj +% 2009 0 obj << /Type /Annot /Subtype /Link @@ -28413,29 +28429,29 @@ stream /Rect [393.303 272.899 469.357 284.958] /A << /S /GoTo /D (vdata) >> >> -% 2011 0 obj +% 2013 0 obj << -/D [2009 0 R /XYZ 149.705 753.953 null] +/D [2011 0 R /XYZ 149.705 753.953 null] >> % 557 0 obj << -/D [2009 0 R /XYZ 150.705 716.092 null] +/D [2011 0 R /XYZ 150.705 716.092 null] >> -% 2008 0 obj +% 2010 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2014 0 obj +% 2016 0 obj << /Type /Page -/Contents 2015 0 R -/Resources 2013 0 R +/Contents 2017 0 R +/Resources 2015 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2017 0 R -/Annots [ 2012 0 R ] +/Parent 2019 0 R +/Annots [ 2014 0 R ] >> -% 2012 0 obj +% 2014 0 obj << /Type /Annot /Subtype /Link @@ -28443,50 +28459,50 @@ stream /Rect [320.317 573.77 392.605 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2016 0 obj +% 2018 0 obj << -/D [2014 0 R /XYZ 98.895 753.953 null] +/D [2016 0 R /XYZ 98.895 753.953 null] >> % 561 0 obj << -/D [2014 0 R /XYZ 99.895 716.092 null] +/D [2016 0 R /XYZ 99.895 716.092 null] >> -% 2013 0 obj +% 2015 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 2019 0 obj +% 2021 0 obj << /Type /Page -/Contents 2020 0 R -/Resources 2018 0 R +/Contents 2022 0 R +/Resources 2020 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2017 0 R +/Parent 2019 0 R >> -% 2021 0 obj +% 2023 0 obj << -/D [2019 0 R /XYZ 149.705 753.953 null] +/D [2021 0 R /XYZ 149.705 753.953 null] >> % 565 0 obj << -/D [2019 0 R /XYZ 150.705 716.092 null] +/D [2021 0 R /XYZ 150.705 716.092 null] >> -% 2018 0 obj +% 2020 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2025 0 obj +% 2027 0 obj << /Type /Page -/Contents 2026 0 R -/Resources 2024 0 R +/Contents 2028 0 R +/Resources 2026 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2017 0 R -/Annots [ 2022 0 R 2023 0 R ] +/Parent 2019 0 R +/Annots [ 2024 0 R 2025 0 R ] >> -% 2022 0 obj +% 2024 0 obj << /Type /Annot /Subtype /Link @@ -28494,7 +28510,7 @@ stream /Rect [320.317 573.77 392.605 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2023 0 obj +% 2025 0 obj << /Type /Annot /Subtype /Link @@ -28502,50 +28518,50 @@ stream /Rect [320.317 498.054 392.605 510.114] /A << /S /GoTo /D (precdata) >> >> -% 2027 0 obj +% 2029 0 obj << -/D [2025 0 R /XYZ 98.895 753.953 null] +/D [2027 0 R /XYZ 98.895 753.953 null] >> % 569 0 obj << -/D [2025 0 R /XYZ 99.895 716.092 null] +/D [2027 0 R /XYZ 99.895 716.092 null] >> -% 2024 0 obj +% 2026 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2029 0 obj +% 2031 0 obj << /Type /Page -/Contents 2030 0 R -/Resources 2028 0 R +/Contents 2032 0 R +/Resources 2030 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2017 0 R +/Parent 2019 0 R >> -% 2031 0 obj +% 2033 0 obj << -/D [2029 0 R /XYZ 149.705 753.953 null] +/D [2031 0 R /XYZ 149.705 753.953 null] >> % 573 0 obj << -/D [2029 0 R /XYZ 150.705 716.092 null] +/D [2031 0 R /XYZ 150.705 716.092 null] >> -% 2028 0 obj +% 2030 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2036 0 obj +% 2038 0 obj << /Type /Page -/Contents 2037 0 R -/Resources 2035 0 R +/Contents 2039 0 R +/Resources 2037 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2017 0 R -/Annots [ 2032 0 R 2033 0 R ] +/Parent 2019 0 R +/Annots [ 2034 0 R 2035 0 R ] >> -% 2032 0 obj +% 2034 0 obj << /Type /Annot /Subtype /Link @@ -28553,7 +28569,7 @@ stream /Rect [329.163 275.278 335.44 288.868] /A << /S /GoTo /D (Hfootnote.5) >> >> -% 2033 0 obj +% 2035 0 obj << /Type /Annot /Subtype /Link @@ -28561,22 +28577,14 @@ stream /Rect [291.943 134.696 369.462 146.755] /A << /S /GoTo /D (spdata) >> >> -% 2038 0 obj -<< -/D [2036 0 R /XYZ 98.895 753.953 null] ->> -% 577 0 obj -<< -/D [2036 0 R /XYZ 99.895 716.092 null] ->> -% 2039 0 obj +% 2040 0 obj << -/D [2036 0 R /XYZ 99.895 444.811 null] +/D [2038 0 R /XYZ 98.895 753.953 null] >> endstream endobj -2049 0 obj +2051 0 obj << /Length 7179 >> @@ -28716,7 +28724,7 @@ ET endstream endobj -2054 0 obj +2056 0 obj << /Length 4581 >> @@ -28783,7 +28791,7 @@ ET endstream endobj -2063 0 obj +2065 0 obj << /Length 8762 >> @@ -28935,7 +28943,7 @@ ET endstream endobj -2072 0 obj +2074 0 obj << /Length 6802 >> @@ -29060,7 +29068,7 @@ ET endstream endobj -2076 0 obj +2078 0 obj << /Length 1089 >> @@ -29083,7 +29091,7 @@ ET endstream endobj -2086 0 obj +2088 0 obj << /Length 8162 >> @@ -29317,7 +29325,7 @@ ET endstream endobj -2100 0 obj +2102 0 obj << /Length 9251 >> @@ -29574,7 +29582,7 @@ ET endstream endobj -2109 0 obj +2111 0 obj << /Length 4816 >> @@ -29643,21 +29651,21 @@ ET endstream endobj -2093 0 obj +2095 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/mat.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2115 0 R +/PTEX.InfoDict 2117 0 R /BBox [0 0 438 395] /Resources << /ProcSet [ /PDF /ImageC ] /ExtGState << -/R7 2116 0 R +/R7 2118 0 R >>/XObject << -/R8 2117 0 R +/R8 2119 0 R >>>> /Length 3551 /Filter /FlateDecode @@ -29686,7 +29694,7 @@ r ´JXØxèóC¹ù[— S¬ë¹Ïæ^zÝ°.¼¯÷ëFÜ$ä 5`2. L£× 0 · æÁî# Z(Dô¿Sð÷žÅjý²¥¬³*'fÖåÃÝÖ;?buÞîR­rœ†þ—* Ýœ—"@„ÂúaËiý(ÿ« o^ÿ/o*o endstream endobj -2117 0 obj +2119 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29705,7 +29713,7 @@ stream & ÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÀ@ endstream endobj -2121 0 obj +2123 0 obj << /Length 7548 >> @@ -29855,22 +29863,22 @@ ET endstream endobj -2095 0 obj +2097 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/ell.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2132 0 R +/PTEX.InfoDict 2134 0 R /BBox [0 0 447 205] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2133 0 R +/R7 2135 0 R >>/XObject << -/R8 2134 0 R ->>/Font << /R9 2135 0 R/R11 2136 0 R>> +/R8 2136 0 R +>>/Font << /R9 2137 0 R/R11 2138 0 R>> >> /Length 2281 /Filter /FlateDecode @@ -29882,7 +29890,7 @@ x Íy-?ýíùï¯ßñGz·5®„ùËéOß}àMžså¾Atû·ÔÇÿ|THF endstream endobj -2134 0 obj +2136 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -29901,7 +29909,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;Y¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà endstream endobj -2138 0 obj +2140 0 obj << /Filter /FlateDecode /Length 171 @@ -29910,7 +29918,7 @@ stream xœ]Mƒ F÷œ‚àOÛĸ±mš¶Àa0,‚¸èí; vÑ„ß›|ˆ~¸ÖD.ÁÁ #×ƪ€‹[ q2–•WâNy‡Yz&ú›ôïGNÔßåŒâYžóM¹9à.^i'dmQt­ÖC«þžªMõž¬)YŸ:2èDØ^26Y?‚iRªt4à°†€6æÞ¹Wêc,þ¾æO§Å¾=+V endstream endobj -2140 0 obj +2142 0 obj << /Filter /FlateDecode /Length 191 @@ -29920,7 +29928,7 @@ x â ±—Uˆ}íuT-mËüǸT¯)ÏuɺDÞyøýC ±¸(Š|iÑ_À endstream endobj -2141 0 obj +2143 0 obj << /Filter /FlateDecode /Length1 11124 @@ -29969,7 +29977,7 @@ B “žÑ endstream endobj -2142 0 obj +2144 0 obj << /Filter /FlateDecode /Length1 3512 @@ -29985,7 +29993,7 @@ a lþ'÷uþoL|E÷¾r«Ço¸ß9®ñߺӣú¾Á( endstream endobj -2149 0 obj +2151 0 obj << /Length 8621 >> @@ -30153,20 +30161,20 @@ ET endstream endobj -2143 0 obj +2145 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hll.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2153 0 R +/PTEX.InfoDict 2155 0 R /BBox [0 0 494 214] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2154 0 R ->>/Font << /R8 2155 0 R/R10 2156 0 R>> +/R7 2156 0 R +>>/Font << /R8 2157 0 R/R10 2158 0 R>> >> /Length 2880 /Filter /FlateDecode @@ -30188,7 +30196,7 @@ l Ù<øÇ×O?Ó‚•2.šg9_ÿ*×Ps ŸOøYT¨•®U¼v²rƈºŸÂãSóøbzh”8†Ñ½ÂXZÊü°ó`—ú矆@8èwàô)aÿ…¢ªküœËEvëñ»›šK°|dG˜s%´D YšVòÔ@( ázé‹ñCüÿæ׬á¿8Ç7•xVÇ‹ éÑi3kè4½ðw(Ölú¸V*|ik¬Ô¦âÓ*økµøåÀ—žÑÑ÷K•_á•Box:ÀÀ¯¿Æë‘HÏ+x´“êˆÆi[‡;¬<ž¿Á²ÐùÅ+i œ°ùŸø`8¼=ÿ³·‡ endstream endobj -2158 0 obj +2160 0 obj << /Filter /FlateDecode /Length 214 @@ -30197,7 +30205,7 @@ stream xœ]Á‚0 †ï{Š½Á@²ì¢£¾ÀÙ±L<øö¶EOK šp#Ý&ÉQZ]ŒV«ÓqA« ×͈ÆãøÝn ¸G6Š¨Ñë4(„‡ ÇéÍÍé~¹R6èõ&Ž{øaÎxÿ.[±D½˜ÐK·ÈQ7idZñ?:õ;> -stream -2040 0 2041 58 2042 116 2035 174 2048 325 2034 491 2044 638 2045 782 2046 926 2050 1071 -2047 1130 2053 1281 2051 1420 2055 1564 2052 1622 2062 1730 2057 1887 2058 2032 2059 2179 2064 2321 -581 2380 2065 2438 2066 2497 2067 2556 2061 2615 2071 2766 2060 2923 2068 3067 2069 3214 2073 3358 -2070 3416 2075 3567 2077 3685 2074 3744 2085 3825 2078 4018 2088 4194 2079 4370 2080 4553 2081 4705 -2082 4860 2083 5012 2087 5165 585 5223 589 5280 2084 5337 2099 5460 2091 5617 2092 5767 2094 5914 -2101 6060 593 6119 597 6177 2102 6235 2103 6294 2098 6353 2108 6491 2115 6630 2116 6810 2097 6853 -2110 7000 2105 7058 2111 7116 2112 7175 2113 7233 2107 7291 2120 7429 2132 7568 2133 7748 2135 7791 -2136 7996 2137 8285 2139 8506 2096 8719 2122 8865 2106 8924 2123 8983 2124 9042 2125 9101 2126 9160 -2127 9219 2128 9278 2129 9337 2130 9395 2118 9454 2131 9513 2119 9572 2148 9767 2153 9924 2154 10104 -2155 10147 2156 10450 2157 10655 2159 10868 2144 11089 2145 11236 2146 11383 2150 11530 2151 11588 2152 11646 -% 2040 0 obj +/First 991 +/Length 12694 +>> +stream +577 0 2041 57 2042 115 2043 173 2044 231 2037 289 2050 440 2036 606 2046 753 2047 897 +2048 1041 2052 1186 2049 1245 2055 1396 2053 1535 2057 1679 2054 1737 2064 1845 2059 2002 2060 2147 +2061 2294 2066 2436 581 2495 2067 2553 2068 2612 2069 2671 2063 2730 2073 2881 2062 3038 2070 3182 +2071 3329 2075 3473 2072 3531 2077 3682 2079 3800 2076 3859 2087 3940 2080 4133 2090 4309 2081 4485 +2082 4668 2083 4820 2084 4975 2085 5127 2089 5280 585 5338 589 5395 2086 5452 2101 5575 2093 5732 +2094 5882 2096 6029 2103 6175 593 6234 597 6292 2104 6350 2105 6409 2100 6468 2110 6606 2117 6745 +2118 6925 2099 6968 2112 7115 2107 7173 2113 7231 2114 7290 2115 7348 2109 7406 2122 7544 2134 7683 +2135 7863 2137 7906 2138 8111 2139 8400 2141 8621 2098 8834 2124 8980 2108 9039 2125 9098 2126 9157 +2127 9216 2128 9275 2129 9334 2130 9393 2131 9452 2132 9510 2120 9569 2133 9628 2121 9687 2150 9882 +2155 10039 2156 10219 2157 10262 2158 10565 2159 10770 2161 10983 2146 11204 2147 11351 2148 11498 2152 11645 +% 577 0 obj << -/D [2036 0 R /XYZ 99.895 444.971 null] +/D [2038 0 R /XYZ 99.895 716.092 null] >> % 2041 0 obj << -/D [2036 0 R /XYZ 99.895 433.015 null] +/D [2038 0 R /XYZ 99.895 444.811 null] >> % 2042 0 obj << -/D [2036 0 R /XYZ 114.242 129.79 null] +/D [2038 0 R /XYZ 99.895 444.971 null] >> -% 2035 0 obj +% 2043 0 obj +<< +/D [2038 0 R /XYZ 99.895 433.015 null] +>> +% 2044 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R /F131 921 0 R >> +/D [2038 0 R /XYZ 114.242 129.79 null] +>> +% 2037 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2048 0 obj +% 2050 0 obj << /Type /Page -/Contents 2049 0 R -/Resources 2047 0 R +/Contents 2051 0 R +/Resources 2049 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2017 0 R -/Annots [ 2034 0 R 2044 0 R 2045 0 R 2046 0 R ] +/Parent 2019 0 R +/Annots [ 2036 0 R 2046 0 R 2047 0 R 2048 0 R ] >> -% 2034 0 obj +% 2036 0 obj << /Type /Annot /Subtype /Link @@ -30323,7 +30339,7 @@ stream /Rect [342.753 654.503 415.041 666.562] /A << /S /GoTo /D (precdata) >> >> -% 2044 0 obj +% 2046 0 obj << /Type /Annot /Subtype /Link @@ -30331,7 +30347,7 @@ stream /Rect [393.303 584.479 469.357 596.539] /A << /S /GoTo /D (vdata) >> >> -% 2045 0 obj +% 2047 0 obj << /Type /Annot /Subtype /Link @@ -30339,7 +30355,7 @@ stream /Rect [393.303 514.456 469.357 526.516] /A << /S /GoTo /D (vdata) >> >> -% 2046 0 obj +% 2048 0 obj << /Type /Annot /Subtype /Link @@ -30347,25 +30363,25 @@ stream /Rect [342.753 374.41 409.811 386.47] /A << /S /GoTo /D (descdata) >> >> -% 2050 0 obj +% 2052 0 obj << -/D [2048 0 R /XYZ 149.705 753.953 null] +/D [2050 0 R /XYZ 149.705 753.953 null] >> -% 2047 0 obj +% 2049 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R >> /ProcSet [ /PDF /Text ] >> -% 2053 0 obj +% 2055 0 obj << /Type /Page -/Contents 2054 0 R -/Resources 2052 0 R +/Contents 2056 0 R +/Resources 2054 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2056 0 R -/Annots [ 2051 0 R ] +/Parent 2058 0 R +/Annots [ 2053 0 R ] >> -% 2051 0 obj +% 2053 0 obj << /Type /Annot /Subtype /Link @@ -30373,25 +30389,25 @@ stream /Rect [342.493 554.876 418.548 566.936] /A << /S /GoTo /D (vdata) >> >> -% 2055 0 obj +% 2057 0 obj << -/D [2053 0 R /XYZ 98.895 753.953 null] +/D [2055 0 R /XYZ 98.895 753.953 null] >> -% 2052 0 obj +% 2054 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2062 0 obj +% 2064 0 obj << /Type /Page -/Contents 2063 0 R -/Resources 2061 0 R +/Contents 2065 0 R +/Resources 2063 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2056 0 R -/Annots [ 2057 0 R 2058 0 R 2059 0 R ] +/Parent 2058 0 R +/Annots [ 2059 0 R 2060 0 R 2061 0 R ] >> -% 2057 0 obj +% 2059 0 obj << /Type /Annot /Subtype /Link @@ -30399,7 +30415,7 @@ stream /Rect [342.753 253.023 420.271 265.083] /A << /S /GoTo /D (spdata) >> >> -% 2058 0 obj +% 2060 0 obj << /Type /Annot /Subtype /Link @@ -30407,7 +30423,7 @@ stream /Rect [342.753 184.772 415.041 196.831] /A << /S /GoTo /D (precdata) >> >> -% 2059 0 obj +% 2061 0 obj << /Type /Annot /Subtype /Link @@ -30415,41 +30431,41 @@ stream /Rect [393.303 116.52 469.357 128.58] /A << /S /GoTo /D (vdata) >> >> -% 2064 0 obj +% 2066 0 obj << -/D [2062 0 R /XYZ 149.705 753.953 null] +/D [2064 0 R /XYZ 149.705 753.953 null] >> % 581 0 obj << -/D [2062 0 R /XYZ 150.705 716.092 null] +/D [2064 0 R /XYZ 150.705 716.092 null] >> -% 2065 0 obj +% 2067 0 obj << -/D [2062 0 R /XYZ 150.705 397.916 null] +/D [2064 0 R /XYZ 150.705 397.916 null] >> -% 2066 0 obj +% 2068 0 obj << -/D [2062 0 R /XYZ 150.705 398.076 null] +/D [2064 0 R /XYZ 150.705 398.076 null] >> -% 2067 0 obj +% 2069 0 obj << -/D [2062 0 R /XYZ 150.705 386.121 null] +/D [2064 0 R /XYZ 150.705 386.121 null] >> -% 2061 0 obj +% 2063 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R /F131 921 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2071 0 obj +% 2073 0 obj << /Type /Page -/Contents 2072 0 R -/Resources 2070 0 R +/Contents 2074 0 R +/Resources 2072 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2056 0 R -/Annots [ 2060 0 R 2068 0 R 2069 0 R ] +/Parent 2058 0 R +/Annots [ 2062 0 R 2070 0 R 2071 0 R ] >> -% 2060 0 obj +% 2062 0 obj << /Type /Annot /Subtype /Link @@ -30457,7 +30473,7 @@ stream /Rect [342.493 654.503 418.548 666.562] /A << /S /GoTo /D (vdata) >> >> -% 2068 0 obj +% 2070 0 obj << /Type /Annot /Subtype /Link @@ -30465,7 +30481,7 @@ stream /Rect [291.943 520.007 359.001 532.067] /A << /S /GoTo /D (descdata) >> >> -% 2069 0 obj +% 2071 0 obj << /Type /Annot /Subtype /Link @@ -30473,63 +30489,63 @@ stream /Rect [342.493 183.768 418.548 195.827] /A << /S /GoTo /D (vdata) >> >> -% 2073 0 obj +% 2075 0 obj << -/D [2071 0 R /XYZ 98.895 753.953 null] +/D [2073 0 R /XYZ 98.895 753.953 null] >> -% 2070 0 obj +% 2072 0 obj << -/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1469 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R >> /ProcSet [ /PDF /Text ] >> -% 2075 0 obj +% 2077 0 obj << /Type /Page -/Contents 2076 0 R -/Resources 2074 0 R +/Contents 2078 0 R +/Resources 2076 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2056 0 R +/Parent 2058 0 R >> -% 2077 0 obj +% 2079 0 obj << -/D [2075 0 R /XYZ 149.705 753.953 null] +/D [2077 0 R /XYZ 149.705 753.953 null] >> -% 2074 0 obj +% 2076 0 obj << /Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2085 0 obj +% 2087 0 obj << /Type /Page -/Contents 2086 0 R -/Resources 2084 0 R +/Contents 2088 0 R +/Resources 2086 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2056 0 R -/Annots [ 2078 0 R 2088 0 R 2079 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R ] +/Parent 2058 0 R +/Annots [ 2080 0 R 2090 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R 2085 0 R ] >> -% 2078 0 obj +% 2080 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [318.128 636.522 444.603 648.582] /Subtype/Link/A<> >> -% 2088 0 obj +% 2090 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [123.806 624.567 167.641 636.627] /Subtype/Link/A<> >> -% 2079 0 obj +% 2081 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [140.413 593.098 346.389 605.158] /Subtype/Link/A<> >> -% 2080 0 obj +% 2082 0 obj << /Type /Annot /Subtype /Link @@ -30537,7 +30553,7 @@ stream /Rect [229.78 552.835 241.736 561.841] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 2081 0 obj +% 2083 0 obj << /Type /Annot /Subtype /Link @@ -30545,7 +30561,7 @@ stream /Rect [245.393 552.835 257.348 561.692] /A << /S /GoTo /D (cite.CaFiRo:2014) >> >> -% 2082 0 obj +% 2084 0 obj << /Type /Annot /Subtype /Link @@ -30553,7 +30569,7 @@ stream /Rect [261.006 552.835 272.961 561.841] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 2083 0 obj +% 2085 0 obj << /Type /Annot /Subtype /Link @@ -30561,33 +30577,33 @@ stream /Rect [158.604 540.781 170.56 549.737] /A << /S /GoTo /D (cite.OurTechRep) >> >> -% 2087 0 obj +% 2089 0 obj << -/D [2085 0 R /XYZ 98.895 753.953 null] +/D [2087 0 R /XYZ 98.895 753.953 null] >> % 585 0 obj << -/D [2085 0 R /XYZ 99.895 716.092 null] +/D [2087 0 R /XYZ 99.895 716.092 null] >> % 589 0 obj << -/D [2085 0 R /XYZ 99.895 525.151 null] +/D [2087 0 R /XYZ 99.895 525.151 null] >> -% 2084 0 obj +% 2086 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 2099 0 obj +% 2101 0 obj << /Type /Page -/Contents 2100 0 R -/Resources 2098 0 R +/Contents 2102 0 R +/Resources 2100 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2056 0 R -/Annots [ 2091 0 R 2092 0 R 2094 0 R ] +/Parent 2058 0 R +/Annots [ 2093 0 R 2094 0 R 2096 0 R ] >> -% 2091 0 obj +% 2093 0 obj << /Type /Annot /Subtype /Link @@ -30595,7 +30611,7 @@ stream /Rect [172.124 282.067 184.079 291.173] /A << /S /GoTo /D (cite.MRC:11) >> >> -% 2092 0 obj +% 2094 0 obj << /Type /Annot /Subtype /Link @@ -30603,7 +30619,7 @@ stream /Rect [304.646 246.183 316.601 255.592] /A << /S /GoTo /D (table.22) >> >> -% 2094 0 obj +% 2096 0 obj << /Type /Annot /Subtype /Link @@ -30611,53 +30627,53 @@ stream /Rect [361.176 176.296 368.05 188.355] /A << /S /GoTo /D (figure.6) >> >> -% 2101 0 obj +% 2103 0 obj << -/D [2099 0 R /XYZ 149.705 753.953 null] +/D [2101 0 R /XYZ 149.705 753.953 null] >> % 593 0 obj << -/D [2099 0 R /XYZ 150.705 349.244 null] +/D [2101 0 R /XYZ 150.705 349.244 null] >> % 597 0 obj << -/D [2099 0 R /XYZ 150.705 231.907 null] +/D [2101 0 R /XYZ 150.705 231.907 null] >> -% 2102 0 obj +% 2104 0 obj << -/D [2099 0 R /XYZ 150.705 211.056 null] +/D [2101 0 R /XYZ 150.705 211.056 null] >> -% 2103 0 obj +% 2105 0 obj << -/D [2099 0 R /XYZ 150.705 120.166 null] +/D [2101 0 R /XYZ 150.705 120.166 null] >> -% 2098 0 obj +% 2100 0 obj << -/Font << /F279 1791 0 R /F231 1025 0 R /F84 675 0 R /F131 921 0 R /F75 673 0 R /F78 674 0 R >> +/Font << /F279 1793 0 R /F231 1025 0 R /F84 675 0 R /F131 921 0 R /F75 673 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2108 0 obj +% 2110 0 obj << /Type /Page -/Contents 2109 0 R -/Resources 2107 0 R +/Contents 2111 0 R +/Resources 2109 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2114 0 R -/Annots [ 2097 0 R ] +/Parent 2116 0 R +/Annots [ 2099 0 R ] >> -% 2115 0 obj +% 2117 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133929+01'00') /ModDate (D:20140329133929+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2116 0 obj +% 2118 0 obj << /Type /ExtGState /OPM 1 >> -% 2097 0 obj +% 2099 0 obj << /Type /Annot /Subtype /Link @@ -30665,76 +30681,76 @@ stream /Rect [119.745 324.049 126.734 336.109] /A << /S /GoTo /D (algocf.1) >> >> -% 2110 0 obj +% 2112 0 obj << -/D [2108 0 R /XYZ 98.895 753.953 null] +/D [2110 0 R /XYZ 98.895 753.953 null] >> -% 2105 0 obj +% 2107 0 obj << -/D [2108 0 R /XYZ 99.895 716.092 null] +/D [2110 0 R /XYZ 99.895 716.092 null] >> -% 2111 0 obj +% 2113 0 obj << -/D [2108 0 R /XYZ 346.697 407.446 null] +/D [2110 0 R /XYZ 346.697 407.446 null] >> -% 2112 0 obj +% 2114 0 obj << -/D [2108 0 R /XYZ 99.895 260.219 null] +/D [2110 0 R /XYZ 99.895 260.219 null] >> -% 2113 0 obj +% 2115 0 obj << -/D [2108 0 R /XYZ 99.895 226.207 null] +/D [2110 0 R /XYZ 99.895 226.207 null] >> -% 2107 0 obj +% 2109 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> -/XObject << /Im6 2093 0 R >> +/XObject << /Im6 2095 0 R >> /ProcSet [ /PDF /Text ] >> -% 2120 0 obj +% 2122 0 obj << /Type /Page -/Contents 2121 0 R -/Resources 2119 0 R +/Contents 2123 0 R +/Resources 2121 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2114 0 R -/Annots [ 2096 0 R ] +/Parent 2116 0 R +/Annots [ 2098 0 R ] >> -% 2132 0 obj +% 2134 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2133 0 obj +% 2135 0 obj << /Type /ExtGState /OPM 1 >> -% 2135 0 obj +% 2137 0 obj << /BaseFont /YAZDUX+TimesNewRomanPSMT -/FontDescriptor 2137 0 R -/ToUnicode 2138 0 R +/FontDescriptor 2139 0 R +/ToUnicode 2140 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2136 0 obj +% 2138 0 obj << /BaseFont /NDNSMY+FreeSerif -/FontDescriptor 2139 0 R -/ToUnicode 2140 0 R +/FontDescriptor 2141 0 R +/ToUnicode 2142 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 0 0 0 0 0 385 0 0 0 0 0 0 0 667 529 0 0 0 0 0 701] /Subtype /TrueType >> -% 2137 0 obj +% 2139 0 obj << /Type /FontDescriptor /FontName /YAZDUX+TimesNewRomanPSMT @@ -30746,9 +30762,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2141 0 R +/FontFile2 2143 0 R >> -% 2139 0 obj +% 2141 0 obj << /Type /FontDescriptor /FontName /NDNSMY+FreeSerif @@ -30760,114 +30776,114 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2142 0 R ->> -% 2096 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [435.396 583.767 442.37 595.827] -/A << /S /GoTo /D (figure.5) >> ->> -% 2122 0 obj -<< -/D [2120 0 R /XYZ 149.705 753.953 null] +/FontFile2 2144 0 R >> -% 2106 0 obj +% 2098 0 obj << -/D [2120 0 R /XYZ 440.026 621.446 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [435.396 583.767 442.37 595.827] +/A << /S /GoTo /D (figure.5) >> >> -% 2123 0 obj +% 2124 0 obj << -/D [2120 0 R /XYZ 165.649 563.747 null] +/D [2122 0 R /XYZ 149.705 753.953 null] >> -% 2124 0 obj +% 2108 0 obj << -/D [2120 0 R /XYZ 165.649 567.034 null] +/D [2122 0 R /XYZ 440.026 621.446 null] >> % 2125 0 obj << -/D [2120 0 R /XYZ 165.649 556.075 null] +/D [2122 0 R /XYZ 165.649 563.747 null] >> % 2126 0 obj << -/D [2120 0 R /XYZ 165.649 545.116 null] +/D [2122 0 R /XYZ 165.649 567.034 null] >> % 2127 0 obj << -/D [2120 0 R /XYZ 165.649 534.158 null] +/D [2122 0 R /XYZ 165.649 556.075 null] >> % 2128 0 obj << -/D [2120 0 R /XYZ 165.649 523.199 null] +/D [2122 0 R /XYZ 165.649 545.116 null] >> % 2129 0 obj << -/D [2120 0 R /XYZ 165.649 512.24 null] +/D [2122 0 R /XYZ 165.649 534.158 null] >> % 2130 0 obj << -/D [2120 0 R /XYZ 165.649 501.281 null] +/D [2122 0 R /XYZ 165.649 523.199 null] >> -% 2118 0 obj +% 2131 0 obj << -/D [2120 0 R /XYZ 165.649 481.057 null] +/D [2122 0 R /XYZ 165.649 512.24 null] >> -% 2131 0 obj +% 2132 0 obj +<< +/D [2122 0 R /XYZ 165.649 501.281 null] +>> +% 2120 0 obj +<< +/D [2122 0 R /XYZ 165.649 481.057 null] +>> +% 2133 0 obj << -/D [2120 0 R /XYZ 150.705 294.895 null] +/D [2122 0 R /XYZ 150.705 294.895 null] >> -% 2119 0 obj +% 2121 0 obj << -/Font << /F84 675 0 R /F75 673 0 R /F231 1025 0 R /F279 1791 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> -/XObject << /Im7 2095 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F231 1025 0 R /F279 1793 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> +/XObject << /Im7 2097 0 R >> /ProcSet [ /PDF /Text ] >> -% 2148 0 obj +% 2150 0 obj << /Type /Page -/Contents 2149 0 R -/Resources 2147 0 R +/Contents 2151 0 R +/Resources 2149 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2114 0 R -/Annots [ 2144 0 R 2145 0 R 2146 0 R ] +/Parent 2116 0 R +/Annots [ 2146 0 R 2147 0 R 2148 0 R ] >> -% 2153 0 obj +% 2155 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2154 0 obj +% 2156 0 obj << /Type /ExtGState /OPM 1 >> -% 2155 0 obj +% 2157 0 obj << /BaseFont /MCSFLP+FreeSerif -/FontDescriptor 2157 0 R -/ToUnicode 2158 0 R +/FontDescriptor 2159 0 R +/ToUnicode 2160 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 385 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2156 0 obj +% 2158 0 obj << /BaseFont /AJRCAD+TimesNewRomanPSMT -/FontDescriptor 2159 0 R -/ToUnicode 2160 0 R +/FontDescriptor 2161 0 R +/ToUnicode 2162 0 R /Type /Font /FirstChar 48 /LastChar 57 /Widths [ 500 500 500 500 500 0 0 500 500 500] /Subtype /TrueType >> -% 2157 0 obj +% 2159 0 obj << /Type /FontDescriptor /FontName /MCSFLP+FreeSerif @@ -30879,9 +30895,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2161 0 R +/FontFile2 2163 0 R >> -% 2159 0 obj +% 2161 0 obj << /Type /FontDescriptor /FontName /AJRCAD+TimesNewRomanPSMT @@ -30893,9 +30909,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2162 0 R +/FontFile2 2164 0 R >> -% 2144 0 obj +% 2146 0 obj << /Type /Annot /Subtype /Link @@ -30903,7 +30919,7 @@ stream /Rect [402.878 426.731 409.852 438.791] /A << /S /GoTo /D (figure.5) >> >> -% 2145 0 obj +% 2147 0 obj << /Type /Annot /Subtype /Link @@ -30911,7 +30927,7 @@ stream /Rect [303.732 176.362 310.765 188.421] /A << /S /GoTo /D (figure.8) >> >> -% 2146 0 obj +% 2148 0 obj << /Type /Annot /Subtype /Link @@ -30919,22 +30935,14 @@ stream /Rect [436.309 128.475 443.332 140.535] /A << /S /GoTo /D (algocf.2) >> >> -% 2150 0 obj -<< -/D [2148 0 R /XYZ 98.895 753.953 null] ->> -% 2151 0 obj -<< -/D [2148 0 R /XYZ 396.732 464.41 null] ->> % 2152 0 obj << -/D [2148 0 R /XYZ 99.895 211.214 null] +/D [2150 0 R /XYZ 98.895 753.953 null] >> endstream endobj -2170 0 obj +2172 0 obj << /Length 8205 >> @@ -31258,20 +31266,20 @@ ET endstream endobj -2166 0 obj +2168 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/dia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2174 0 R +/PTEX.InfoDict 2176 0 R /BBox [0 0 499 211] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 2175 0 R ->>/Font << /R8 2176 0 R/R10 2177 0 R>> +/R7 2177 0 R +>>/Font << /R8 2178 0 R/R10 2179 0 R>> >> /Length 2502 /Filter /FlateDecode @@ -31289,7 +31297,7 @@ $ rca™ñ8ÏzD—‹bH…°d'¥¢šÃ\LÀ/ó¹¬1ÙŒ,0F c¨)T#  7Ì,¥j7ß%Î¥šäÛæ›RÙ6ßq4›/ÉÙ¸g]åû\¦—×\ÃW\¬ò+3,êmó½Lr´›ïJŽ·Í7ñÅÓÐÈþ¶ù&þ?9³ù.y’QQШ» Ñ•Œ&Gs¼m¾7ì“LÏ‹I7=šûmóM¹m›/]”o›/ÉvóUQxT»ù._àlÛæ»òâ›QUÔÌá×.Ü$Rg{çæñÊØcé‚Lçúqçþú1º‡ç×><>¾bûJ:ªŠÞËÃ_ƽ:dº’·p>yºovª†ç¿‘ã¿ûîã·ÏÓ‘¯ì-u„縑óß¿Ë&& endstream endobj -2179 0 obj +2181 0 obj << /Filter /FlateDecode /Length 177 @@ -31299,7 +31307,7 @@ x ¢t s1#8ý÷ÕUÃlŽÉV‹"α’¡Cc×fÄb/Šû²íôåÅ9ሪ=Fp©œQbæxÖÁïÒàCvQùðY¢ endstream endobj -2181 0 obj +2183 0 obj << /Filter /FlateDecode /Length 197 @@ -31308,7 +31316,7 @@ stream xœ]Mƒ …÷œ‚ˆFmL»qѦi{ÄÁ° ꢷï0j]¼ Ìß#k»kçÝʳGœÍ Vn",ó ðFçY^ðÁ™õ ŠfÒeíM‡÷'Ç°;ßõÙ3¿ÐM¾×˜y€%hQû˜BIk?ü=Õ{AoÌ3“„ÀÈd™+’+Äš°Jh ›ËªP²*â ±Q$ĆFŸCÒÉι=7[ŒàWòLž’çá÷-a©Š£ØsÇbã endstream endobj -2182 0 obj +2184 0 obj << /Filter /FlateDecode /Length1 9528 @@ -31342,7 +31350,7 @@ E ó˜Ÿó_ ù[ØCÛ×,š0Z­ÊþÛ Ê+é×…¬Ã¿]úi ^gù\Þo´ùȯ›‰ò'/! `¢ìÁŠàÆ?GÿÁžÿ…&X‘³œ‰çI,¯ÖÆåbøQ ~¼ü÷8É߇㈭^×Ô:·éÛ š×ÕßZ½pÎ"£'ÛõDÊrms#×0F~6Mc£øÓ´ÎåBi6U ¯éÿðȾü?ôèGNÔÙý_XR‡=ñÑè—$=zC/]l»¼ÃQd‰E3ꊭÿîi endstream endobj -2183 0 obj +2185 0 obj << /Filter /FlateDecode /Length1 4304 @@ -31368,7 +31376,7 @@ Hp —øï}Ø».|wy endstream endobj -2188 0 obj +2190 0 obj << /Length 9664 >> @@ -31595,22 +31603,22 @@ ET endstream endobj -2184 0 obj +2186 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../figures/hdia.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2191 0 R +/PTEX.InfoDict 2193 0 R /BBox [0 0 556 211] /Resources << /ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2192 0 R +/R7 2194 0 R >>/XObject << -/R8 2193 0 R ->>/Font << /R9 2194 0 R/R11 2195 0 R>> +/R8 2195 0 R +>>/Font << /R9 2196 0 R/R11 2197 0 R>> >> /Length 3027 /Filter /FlateDecode @@ -31627,7 +31635,7 @@ mC àÕÀ–ÅèÚWšÙ‡ñZ1m¹©†CË8?¬¹e—¶Ühc·æÖó57‘-7ÖhhlABg–›Ä ŽQ ìYP×¾ÖÌÆZkaðfÃÞ%÷1#YSñüõtÃIoÃ`·FzT#Ô:ž©""ÒÒw+ ÄÁíj€eqA#Xƒ#͸g =з‰ 1€cP€D-¶,ÆZûJ3k-Í^Zn¢‘Ðrœ³ABÏqLË-‡9Ÿæ|S,›cÕphbABg–›Ä ‰Z lYŒµö•fF]æf^˜ò¨gÚ8ų7ÕÄŠýlT3"ª± Ú¿þV)Z?·¾ãf̺¡1Ö°X]]ƒùLÈ¿†ÙYáKjÏ¢ÖKedjˆ›<Ÿ®ð/o•¢‡‹í—çÛ>úéÆÅPó\+u¿Uóq™¿¨Ùñ¼(q|KàcÉtõ¼h|¤;ÓDŸ8TÜè3¦ÆÃYË«HŒÇŠ”Û+½’¬Q‹‰n¨û±ûìþǨÙ¡k£1*R$¢™®`˜jš“†Òè •f‘ª,vU#žÅûØ}JoÒ|íYÖ„5%sMè%Çxé?k‚SW-"RMXQ»Ö„G°Æ|d®ÉÕ§Ô„ì5kšéŠjÒãéÕwjt·n²¨VUÁne4;Ørô!”6t„A· ¡Y!éeB±:³h ¬yâJà×:ùD#†R[Dï°a§˜Ì–Isµ<H«eÕðd¡ èm8Ï% P§õ§#Þ´Ï·màxG¼ÎZË‘ýn9s…#Àƒjõ§á‚N5‚ÌcG,r©™®Çum”Ò|ûi¬½–»8¾PÃôE!øæ*]Šâ ÛæGR,_#ù¬ÝÍ?fCésöâÄñßâÝ´Ï·}$½”Ç®`Ly®…ÈR+Q—æ#­ÍK³ÙzT&zµ)ŠH_x6£=“¥O±ôù¢Og„ixLEð8•ˆÉ«KŽc³2žÙOO¦áU ¡òjSÃJ[êYâE,l^yÖÑgeƒ”´Ø¢þð™‰o² }DêBtôú§ëÏÎ'ºÖÑ"ý¨†ù‡Ç +Š}–é惄†Ì¶fbôBÍ™þïñùøÍÃí›7ýéxøñ6¿qžßŸ`Ú dœöPÀ‡çÛ{õð›Ïø%¥ƒ^w¬ã_îÎ…)ôzÜãÉŽ-îú ƒʪ#Oú! smèéRßa÷ý»;ÿê¾aÃì\º«¯þúð‡Û=–ŒsØﮆßÝݦ@ïwñÕ}Íî.ã?„NC ¬Ô,PŒ˜{¤ …áÛÔ…öJŸ«÷ôº8¬å¹×ô}¯ ÏHzw÷û׿ýãñ§ï¾{‹ÀU­áîÛ‡}±£ÇÀ„nbURA4Ûƒãǹ@7ú#Ãׯ"íW}¼{{¼~ófZÍÍã‡êðg)wæG?Üþ4º‘ endstream endobj -2193 0 obj +2195 0 obj << /Subtype /Image /ColorSpace /DeviceGray @@ -31646,7 +31654,7 @@ stream ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0l?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü@ endstream endobj -2197 0 obj +2199 0 obj << /Filter /FlateDecode /Length 177 @@ -31655,7 +31663,7 @@ stream xœ]1à EwNÁ €0´C”%]24ªÚ^€€‰ˆ¡·/8I‡¶ülë›õÃmð.SöHA¿ Së¼I°†-i ÌÎÑPãt>³^T$¬¿«øþD eìΣZ€=Å;b×è``JCR~ÒrÞµÖv¼ùÉ]0Ùc³1ç%“V¡KUP¼ J¼vêêáêð4Dõ–øŒo ÍjÏyø}C¬*Z‚|ïY› endstream endobj -2199 0 obj +2201 0 obj << /Filter /FlateDecode /Length 213 @@ -31667,7 +31675,7 @@ e ¦Y$àÅcÂß ó”yJê Ûál« endstream endobj -2200 0 obj +2202 0 obj << /Filter /FlateDecode /Length1 10604 @@ -31701,7 +31709,7 @@ b YÑF.þÎ X°bÍÒιKo˜ß¾¦ùúÚº9 ô,p÷xýÿÍg¼²xή`ŒÿK)ÄDÀl;Áy‚jö8Ô­ƒ¨[ßÿáí°×þÒï=2ØdqmŒëøá“žôèÕðÃú‹;­EÆP%ï÷ÿ=X endstream endobj -2201 0 obj +2203 0 obj << /Filter /FlateDecode /Length1 5080 @@ -31722,7 +31730,7 @@ Y2 pÓÇ}3ÇóyØà.”pÄ€×ÏôÁ›ýÿâqÁ%§t1Þ®onb©³eæÑM¸éÃáË0÷ǵ3kçéD ^ðoÛw# çô°'Ì?¸²rtåÁ3÷9#§þëò¾W|ÞÞ|¢ûïš«A†ûD¸Ÿàûe0¹bÎxõ¯`}u¤¸%üžÄ÷÷ðý\3“¹ÙZŸ­¾eÓ?¼|Odò?¸¯ðo2õU3ðÜÖÿãÿ­ðÿÍWúßÓ )' endstream endobj -2204 0 obj +2206 0 obj << /Length 1098 >> @@ -31782,7 +31790,7 @@ ET endstream endobj -2208 0 obj +2210 0 obj << /Length 7855 >> @@ -31849,7 +31857,7 @@ ET endstream endobj -2213 0 obj +2215 0 obj << /Length 5849 >> @@ -31952,7 +31960,7 @@ ET endstream endobj -2218 0 obj +2220 0 obj << /Length 5422 >> @@ -32140,7 +32148,7 @@ ET endstream endobj -2222 0 obj +2224 0 obj << /Length 2730 >> @@ -32244,7 +32252,7 @@ ET endstream endobj -2226 0 obj +2228 0 obj << /Length 7303 >> @@ -32308,7 +32316,7 @@ ET endstream endobj -2234 0 obj +2236 0 obj << /Length 6153 >> @@ -32371,74 +32379,82 @@ ET endstream endobj -2165 0 obj +2167 0 obj << /Type /ObjStm /N 100 -/First 964 -/Length 12455 ->> -stream -2147 0 2169 210 2174 349 2175 529 2176 572 2177 773 2178 1068 2180 1289 2167 1502 2171 1648 -2163 1707 2172 1766 2164 1825 2173 1884 2168 1943 2187 2097 2191 2236 2192 2416 2194 2459 2195 2666 -2196 2967 2198 3188 2185 3401 2189 3548 2190 3606 2186 3665 2203 3847 2205 3965 2202 4024 2207 4107 -2209 4225 601 4283 2206 4340 2212 4463 2214 4581 606 4640 610 4697 2215 4755 614 4814 2211 4872 -2217 4967 2219 5085 618 5143 622 5200 626 5257 630 5314 634 5371 638 5428 642 5485 646 5542 -2216 5599 2221 5694 2223 5812 650 5871 654 5929 658 5987 662 6045 2220 6103 2225 6198 2227 6316 -2228 6374 2229 6432 1991 6490 939 6547 938 6604 898 6661 899 6718 914 6775 895 6832 896 6888 -2230 6945 891 7003 2231 7060 2224 7118 2233 7212 2235 7330 1055 7389 926 7448 897 7506 894 7564 -890 7622 2104 7680 893 7739 2236 7797 892 7856 2089 7913 2090 7972 2237 8031 2232 8090 2238 8185 -2239 8205 2240 8576 2241 8679 2242 8838 2243 8861 2244 9316 2245 9445 2246 9743 2247 10389 2249 10860 -% 2147 0 obj +/First 959 +/Length 11464 +>> +stream +2153 0 2154 58 2149 116 2171 326 2176 465 2177 645 2178 688 2179 889 2180 1184 2182 1405 +2169 1618 2173 1764 2165 1823 2174 1882 2166 1941 2175 2000 2170 2059 2189 2213 2193 2352 2194 2532 +2196 2575 2197 2782 2198 3083 2200 3304 2187 3517 2191 3664 2192 3722 2188 3781 2205 3963 2207 4081 +2204 4140 2209 4223 2211 4341 601 4399 2208 4456 2214 4579 2216 4697 606 4756 610 4813 2217 4871 +614 4930 2213 4988 2219 5083 2221 5201 618 5259 622 5316 626 5373 630 5430 634 5487 638 5544 +642 5601 646 5658 2218 5715 2223 5810 2225 5928 650 5987 654 6045 658 6103 662 6161 2222 6219 +2227 6314 2229 6432 2230 6490 2231 6548 1993 6606 939 6663 938 6720 898 6777 899 6834 914 6891 +895 6948 896 7004 2232 7061 891 7119 2233 7176 2226 7234 2235 7328 2237 7446 1055 7505 926 7564 +897 7622 894 7680 890 7738 2106 7796 893 7855 2238 7913 892 7972 2091 8029 2092 8088 2239 8147 +2234 8206 2240 8301 2241 8321 2242 8692 2243 8795 2244 8954 2245 8977 2246 9432 2247 9561 2248 9859 +% 2153 0 obj +<< +/D [2150 0 R /XYZ 396.732 464.41 null] +>> +% 2154 0 obj +<< +/D [2150 0 R /XYZ 99.895 211.214 null] +>> +% 2149 0 obj << -/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R /F231 1025 0 R /F279 1791 0 R /F134 1469 0 R /F179 922 0 R /F75 673 0 R >> -/XObject << /Im8 2143 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R /F231 1025 0 R /F279 1793 0 R /F134 1471 0 R /F179 922 0 R /F75 673 0 R >> +/XObject << /Im8 2145 0 R >> /ProcSet [ /PDF /Text ] >> -% 2169 0 obj +% 2171 0 obj << /Type /Page -/Contents 2170 0 R -/Resources 2168 0 R +/Contents 2172 0 R +/Resources 2170 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2114 0 R -/Annots [ 2167 0 R ] +/Parent 2116 0 R +/Annots [ 2169 0 R ] >> -% 2174 0 obj +% 2176 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133927+01'00') /ModDate (D:20140329133927+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2175 0 obj +% 2177 0 obj << /Type /ExtGState /OPM 1 >> -% 2176 0 obj +% 2178 0 obj << /BaseFont /BNRUAU+TimesNewRomanPSMT -/FontDescriptor 2178 0 R -/ToUnicode 2179 0 R +/FontDescriptor 2180 0 R +/ToUnicode 2181 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 500 0 0 0 0 500] /Subtype /TrueType >> -% 2177 0 obj +% 2179 0 obj << /BaseFont /ICFUKB+FreeSerif -/FontDescriptor 2180 0 R -/ToUnicode 2181 0 R +/FontDescriptor 2182 0 R +/ToUnicode 2183 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2178 0 obj +% 2180 0 obj << /Type /FontDescriptor /FontName /BNRUAU+TimesNewRomanPSMT @@ -32450,9 +32466,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2182 0 R +/FontFile2 2184 0 R >> -% 2180 0 obj +% 2182 0 obj << /Type /FontDescriptor /FontName /ICFUKB+FreeSerif @@ -32464,9 +32480,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2183 0 R +/FontFile2 2185 0 R >> -% 2167 0 obj +% 2169 0 obj << /Type /Annot /Subtype /Link @@ -32474,76 +32490,76 @@ stream /Rect [422.101 537.01 429.075 549.069] /A << /S /GoTo /D (figure.5) >> >> -% 2171 0 obj +% 2173 0 obj << -/D [2169 0 R /XYZ 149.705 753.953 null] +/D [2171 0 R /XYZ 149.705 753.953 null] >> -% 2163 0 obj +% 2165 0 obj << -/D [2169 0 R /XYZ 447.542 574.688 null] +/D [2171 0 R /XYZ 447.542 574.688 null] >> -% 2172 0 obj +% 2174 0 obj << -/D [2169 0 R /XYZ 150.705 526.012 null] +/D [2171 0 R /XYZ 150.705 526.012 null] >> -% 2164 0 obj +% 2166 0 obj << -/D [2169 0 R /XYZ 165.649 383.469 null] +/D [2171 0 R /XYZ 165.649 383.469 null] >> -% 2173 0 obj +% 2175 0 obj << -/D [2169 0 R /XYZ 150.705 187.185 null] +/D [2171 0 R /XYZ 150.705 187.185 null] >> -% 2168 0 obj +% 2170 0 obj << -/Font << /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F75 673 0 R /F279 1791 0 R >> -/XObject << /Im9 2166 0 R >> +/Font << /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F75 673 0 R /F279 1793 0 R >> +/XObject << /Im9 2168 0 R >> /ProcSet [ /PDF /Text ] >> -% 2187 0 obj +% 2189 0 obj << /Type /Page -/Contents 2188 0 R -/Resources 2186 0 R +/Contents 2190 0 R +/Resources 2188 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2114 0 R -/Annots [ 2185 0 R ] +/Parent 2116 0 R +/Annots [ 2187 0 R ] >> -% 2191 0 obj +% 2193 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2192 0 obj +% 2194 0 obj << /Type /ExtGState /OPM 1 >> -% 2194 0 obj +% 2196 0 obj << /BaseFont /PBIKKX+TimesNewRomanPSMT -/FontDescriptor 2196 0 R -/ToUnicode 2197 0 R +/FontDescriptor 2198 0 R +/ToUnicode 2199 0 R /Type /Font /FirstChar 45 /LastChar 55 /Widths [ 333 0 0 500 500 0 500 500 500 500 500] /Subtype /TrueType >> -% 2195 0 obj +% 2197 0 obj << /BaseFont /ZBHFTP+FreeSerif -/FontDescriptor 2198 0 R -/ToUnicode 2199 0 R +/FontDescriptor 2200 0 R +/ToUnicode 2201 0 R /Type /Font /FirstChar 32 /LastChar 89 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2196 0 obj +% 2198 0 obj << /Type /FontDescriptor /FontName /PBIKKX+TimesNewRomanPSMT @@ -32555,9 +32571,9 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2200 0 R +/FontFile2 2202 0 R >> -% 2198 0 obj +% 2200 0 obj << /Type /FontDescriptor /FontName /ZBHFTP+FreeSerif @@ -32569,9 +32585,9 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2201 0 R +/FontFile2 2203 0 R >> -% 2185 0 obj +% 2187 0 obj << /Type /Annot /Subtype /Link @@ -32579,333 +32595,329 @@ stream /Rect [389.583 344.666 396.557 356.726] /A << /S /GoTo /D (figure.5) >> >> -% 2189 0 obj +% 2191 0 obj << -/D [2187 0 R /XYZ 98.895 753.953 null] +/D [2189 0 R /XYZ 98.895 753.953 null] >> -% 2190 0 obj +% 2192 0 obj << -/D [2187 0 R /XYZ 396.732 382.345 null] +/D [2189 0 R /XYZ 396.732 382.345 null] >> -% 2186 0 obj +% 2188 0 obj << -/Font << /F84 675 0 R /F131 921 0 R /F78 674 0 R /F75 673 0 R /F181 923 0 R /F231 1025 0 R /F279 1791 0 R >> -/XObject << /Im10 2184 0 R >> +/Font << /F84 675 0 R /F131 921 0 R /F78 674 0 R /F75 673 0 R /F181 923 0 R /F231 1025 0 R /F279 1793 0 R >> +/XObject << /Im10 2186 0 R >> /ProcSet [ /PDF /Text ] >> -% 2203 0 obj +% 2205 0 obj << /Type /Page -/Contents 2204 0 R -/Resources 2202 0 R +/Contents 2206 0 R +/Resources 2204 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2114 0 R +/Parent 2116 0 R >> -% 2205 0 obj +% 2207 0 obj << -/D [2203 0 R /XYZ 149.705 753.953 null] +/D [2205 0 R /XYZ 149.705 753.953 null] >> -% 2202 0 obj +% 2204 0 obj << /Font << /F231 1025 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2207 0 obj +% 2209 0 obj << /Type /Page -/Contents 2208 0 R -/Resources 2206 0 R +/Contents 2210 0 R +/Resources 2208 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2210 0 R +/Parent 2212 0 R >> -% 2209 0 obj +% 2211 0 obj << -/D [2207 0 R /XYZ 98.895 753.953 null] +/D [2209 0 R /XYZ 98.895 753.953 null] >> % 601 0 obj << -/D [2207 0 R /XYZ 99.895 716.092 null] +/D [2209 0 R /XYZ 99.895 716.092 null] >> -% 2206 0 obj +% 2208 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F231 1025 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2212 0 obj +% 2214 0 obj << /Type /Page -/Contents 2213 0 R -/Resources 2211 0 R +/Contents 2215 0 R +/Resources 2213 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2210 0 R +/Parent 2212 0 R >> -% 2214 0 obj +% 2216 0 obj << -/D [2212 0 R /XYZ 149.705 753.953 null] +/D [2214 0 R /XYZ 149.705 753.953 null] >> % 606 0 obj << -/D [2212 0 R /XYZ 150.705 554.06 null] +/D [2214 0 R /XYZ 150.705 554.06 null] >> % 610 0 obj << -/D [2212 0 R /XYZ 150.705 527.944 null] +/D [2214 0 R /XYZ 150.705 527.944 null] >> -% 2215 0 obj +% 2217 0 obj << -/D [2212 0 R /XYZ 150.705 315.727 null] +/D [2214 0 R /XYZ 150.705 315.727 null] >> % 614 0 obj << -/D [2212 0 R /XYZ 150.705 284.171 null] +/D [2214 0 R /XYZ 150.705 284.171 null] >> -% 2211 0 obj +% 2213 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2217 0 obj +% 2219 0 obj << /Type /Page -/Contents 2218 0 R -/Resources 2216 0 R +/Contents 2220 0 R +/Resources 2218 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2210 0 R +/Parent 2212 0 R >> -% 2219 0 obj +% 2221 0 obj << -/D [2217 0 R /XYZ 98.895 753.953 null] +/D [2219 0 R /XYZ 98.895 753.953 null] >> % 618 0 obj << -/D [2217 0 R /XYZ 99.895 720.077 null] +/D [2219 0 R /XYZ 99.895 720.077 null] >> % 622 0 obj << -/D [2217 0 R /XYZ 99.895 633.991 null] +/D [2219 0 R /XYZ 99.895 633.991 null] >> % 626 0 obj << -/D [2217 0 R /XYZ 99.895 559.861 null] +/D [2219 0 R /XYZ 99.895 559.861 null] >> % 630 0 obj << -/D [2217 0 R /XYZ 99.895 485.732 null] +/D [2219 0 R /XYZ 99.895 485.732 null] >> % 634 0 obj << -/D [2217 0 R /XYZ 99.895 411.602 null] +/D [2219 0 R /XYZ 99.895 411.602 null] >> % 638 0 obj << -/D [2217 0 R /XYZ 99.895 325.516 null] +/D [2219 0 R /XYZ 99.895 325.516 null] >> % 642 0 obj << -/D [2217 0 R /XYZ 99.895 251.386 null] +/D [2219 0 R /XYZ 99.895 251.386 null] >> % 646 0 obj << -/D [2217 0 R /XYZ 99.895 177.256 null] +/D [2219 0 R /XYZ 99.895 177.256 null] >> -% 2216 0 obj +% 2218 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2221 0 obj +% 2223 0 obj << /Type /Page -/Contents 2222 0 R -/Resources 2220 0 R +/Contents 2224 0 R +/Resources 2222 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2210 0 R +/Parent 2212 0 R >> -% 2223 0 obj +% 2225 0 obj << -/D [2221 0 R /XYZ 149.705 753.953 null] +/D [2223 0 R /XYZ 149.705 753.953 null] >> % 650 0 obj << -/D [2221 0 R /XYZ 150.705 720.077 null] +/D [2223 0 R /XYZ 150.705 720.077 null] >> % 654 0 obj << -/D [2221 0 R /XYZ 150.705 650.062 null] +/D [2223 0 R /XYZ 150.705 650.062 null] >> % 658 0 obj << -/D [2221 0 R /XYZ 150.705 580.047 null] +/D [2223 0 R /XYZ 150.705 580.047 null] >> % 662 0 obj << -/D [2221 0 R /XYZ 150.705 510.033 null] +/D [2223 0 R /XYZ 150.705 510.033 null] >> -% 2220 0 obj +% 2222 0 obj << /Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2225 0 obj +% 2227 0 obj << /Type /Page -/Contents 2226 0 R -/Resources 2224 0 R +/Contents 2228 0 R +/Resources 2226 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2210 0 R +/Parent 2212 0 R >> -% 2227 0 obj +% 2229 0 obj << -/D [2225 0 R /XYZ 98.895 753.953 null] +/D [2227 0 R /XYZ 98.895 753.953 null] >> -% 2228 0 obj +% 2230 0 obj << -/D [2225 0 R /XYZ 99.895 723.717 null] +/D [2227 0 R /XYZ 99.895 723.717 null] >> -% 2229 0 obj +% 2231 0 obj << -/D [2225 0 R /XYZ 99.895 698.792 null] +/D [2227 0 R /XYZ 99.895 698.792 null] >> -% 1991 0 obj +% 1993 0 obj << -/D [2225 0 R /XYZ 99.895 638.64 null] +/D [2227 0 R /XYZ 99.895 638.64 null] >> % 939 0 obj << -/D [2225 0 R /XYZ 99.895 595.644 null] +/D [2227 0 R /XYZ 99.895 595.644 null] >> % 938 0 obj << -/D [2225 0 R /XYZ 99.895 538.043 null] +/D [2227 0 R /XYZ 99.895 538.043 null] >> % 898 0 obj << -/D [2225 0 R /XYZ 99.895 477.792 null] +/D [2227 0 R /XYZ 99.895 477.792 null] >> % 899 0 obj << -/D [2225 0 R /XYZ 99.895 433.422 null] +/D [2227 0 R /XYZ 99.895 433.422 null] >> % 914 0 obj << -/D [2225 0 R /XYZ 99.895 398.456 null] +/D [2227 0 R /XYZ 99.895 398.456 null] >> % 895 0 obj << -/D [2225 0 R /XYZ 99.895 352.81 null] +/D [2227 0 R /XYZ 99.895 352.81 null] >> % 896 0 obj << -/D [2225 0 R /XYZ 99.895 307.164 null] +/D [2227 0 R /XYZ 99.895 307.164 null] >> -% 2230 0 obj +% 2232 0 obj << -/D [2225 0 R /XYZ 99.895 261.519 null] +/D [2227 0 R /XYZ 99.895 261.519 null] >> % 891 0 obj << -/D [2225 0 R /XYZ 99.895 215.873 null] +/D [2227 0 R /XYZ 99.895 215.873 null] >> -% 2231 0 obj +% 2233 0 obj << -/D [2225 0 R /XYZ 99.895 170.895 null] +/D [2227 0 R /XYZ 99.895 170.895 null] >> -% 2224 0 obj +% 2226 0 obj << /Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 2233 0 obj +% 2235 0 obj << /Type /Page -/Contents 2234 0 R -/Resources 2232 0 R +/Contents 2236 0 R +/Resources 2234 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2210 0 R +/Parent 2212 0 R >> -% 2235 0 obj +% 2237 0 obj << -/D [2233 0 R /XYZ 149.705 753.953 null] +/D [2235 0 R /XYZ 149.705 753.953 null] >> % 1055 0 obj << -/D [2233 0 R /XYZ 150.705 716.092 null] +/D [2235 0 R /XYZ 150.705 716.092 null] >> % 926 0 obj << -/D [2233 0 R /XYZ 150.705 687.379 null] +/D [2235 0 R /XYZ 150.705 687.379 null] >> % 897 0 obj << -/D [2233 0 R /XYZ 150.705 632.184 null] +/D [2235 0 R /XYZ 150.705 632.184 null] >> % 894 0 obj << -/D [2233 0 R /XYZ 150.705 590.403 null] +/D [2235 0 R /XYZ 150.705 590.403 null] >> % 890 0 obj << -/D [2233 0 R /XYZ 150.705 545.192 null] +/D [2235 0 R /XYZ 150.705 545.192 null] >> -% 2104 0 obj +% 2106 0 obj << -/D [2233 0 R /XYZ 150.705 512.037 null] +/D [2235 0 R /XYZ 150.705 512.037 null] >> % 893 0 obj << -/D [2233 0 R /XYZ 150.705 480.156 null] +/D [2235 0 R /XYZ 150.705 480.156 null] >> -% 2236 0 obj +% 2238 0 obj << -/D [2233 0 R /XYZ 150.705 448.276 null] +/D [2235 0 R /XYZ 150.705 448.276 null] >> % 892 0 obj << -/D [2233 0 R /XYZ 150.705 407.09 null] +/D [2235 0 R /XYZ 150.705 407.09 null] >> -% 2089 0 obj +% 2091 0 obj << -/D [2233 0 R /XYZ 150.705 348.649 null] +/D [2235 0 R /XYZ 150.705 348.649 null] >> -% 2090 0 obj +% 2092 0 obj << -/D [2233 0 R /XYZ 150.705 304.874 null] +/D [2235 0 R /XYZ 150.705 304.874 null] >> -% 2237 0 obj +% 2239 0 obj << -/D [2233 0 R /XYZ 150.705 260.978 null] +/D [2235 0 R /XYZ 150.705 260.978 null] >> -% 2232 0 obj +% 2234 0 obj << /Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2238 0 obj +% 2240 0 obj [1000] -% 2239 0 obj +% 2241 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2240 0 obj +% 2242 0 obj [277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] -% 2241 0 obj +% 2243 0 obj [853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] -% 2242 0 obj +% 2244 0 obj [528 542] -% 2243 0 obj +% 2245 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2244 0 obj +% 2246 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] -% 2245 0 obj +% 2247 0 obj [388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -% 2246 0 obj +% 2248 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] -% 2247 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2249 0 obj -[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] endstream endobj -2253 0 obj +2255 0 obj << /Length1 1383 /Length2 5908 @@ -32976,7 +32988,7 @@ W ò6S&ªå_!“½SÎ|esU›FÌR™y† ¢Y‹¥ýžï­§N endstream endobj -2255 0 obj +2257 0 obj << /Length1 1956 /Length2 7144 @@ -33093,7 +33105,7 @@ _g\e+J`Ú¼u F½Aa´´ÿ.P’gvŸþì˜Çaósl ø¯ZBh·õ´gæÇ –Wµ Û-‹BѶ”N˜°ŠÜhú`˨[ÉW÷jßí)qˆ(µÎãÓÌý÷ÍŒþð.wYÕæ‹$ÞQ¬ÿ0±€®Ñ]Šü endstream endobj -2257 0 obj +2259 0 obj << /Length1 1442 /Length2 6151 @@ -33171,7 +33183,7 @@ n^ r sb¢VØb)l 2ÅþSŠ„T£­H+PMzjÔîëzËiÍfí$ŽDáŒMkV©° Ã?ã\Ù¼Ä>Ž¬߈ƶa¹<¡ÈèEE£ÜL½¦D…¯6=t¯–EÒ÷µ€ðàÀ.…(Á%FoÜ~­´ô6€rý¦\l•ù;séñ'$Öµ…ïß>ž4¹ÿr$ï2¨DZý~*®\R ù·Yi$=Þ¡¥k‡å'¯Öå“™úý.m…6¯Â–„tY0’O$ð)ºQñ’ršÈUQ…»+¶ßªúÔ4(¨«,‡°Qb8¬—mÓ©qý±âÀÁÝHä°=‘œ,YŠ8i  ÿ‡½ª”SZ6Žöã½mØ@ˆ»`é7~â"L7\ã¹ßFdN#FþýHR´K´KHpb40 2ÂÚ~HÇKε֊úøX endstream endobj -2259 0 obj +2261 0 obj << /Length1 1478 /Length2 6403 @@ -33252,7 +33264,7 @@ O GÁ0ÿÑûòÿ¦œÿ+B°¸+›æ¸žb¥qGYÀðitâLxRIPv®Õ½·hÎÄÓÔ¥ºÒÏ‹^ž½:nwåòœÕp5¿Ð>^؉R¥Þä}ð4ü¸¿Œò™áùÞaŒgül}×^™(©t7ƒaÝÔ &ó½¶)±ZS«ˆ‘ ”¾8ÿn}@f0;­b.Û£ELì›7†%·¹›3Cª,ò@ä7¹Õï[I [1sI¬îÅXÚ<Æü[›fÜŒ¹¶Ýa¯:?yºÈç3"èu/'Ø\Ödñ ÁDÓ¹Ú=»qUü êškóκùH‚â$ y§ïQ7¼plŽ*žmhS]ADäÛäøù5Îã½üÆ«ü‹79µ endstream endobj -2261 0 obj +2263 0 obj << /Length1 1688 /Length2 8444 @@ -33343,7 +33355,7 @@ p bŠ|Ü<dF.ÊÂÃOü¶½£æ[–ßÈÝv°ó¿ö±O¨hgÃy‡Qì®—»å¶ ‘«h›0}¦ª»½˜Üõ,ïåè:Õ(Ñ–~¨–À–’6uü‹mXóR·VÃ<‡­Ð³JVíM\Fw%T6VÍvýÑQnéϨÿ¦:Ï M¤\Ú…Uá-:φ57M}ÎÞ!ãZ‘D ês‰ ç {$Qû0Ý„në®êÓ Ê(ãN3°Þ[( ½¶?™ÓŒoÜî9T½”ÒuæÒ«6nÀu÷ðD!qáíZ”ÞU›·ÍÜT”!pÚ¹VØžïó‡/…È\ýh^‡:ñ'.AµEõ¾S‹6P*BËY‹LŸ endstream endobj -2263 0 obj +2265 0 obj << /Length1 2571 /Length2 18274 @@ -33533,7 +33545,7 @@ bvT ­¬Ì$LŽ`u\$ÿyýƒ îË63rŒa ù*}L¬ÿOƒþ­Nûšâ°Vz`NÁ~©âÖüËïþD|°ˆÏ!5…çÆkW· Îï¯ËÅ[uõ 1HÉ6ÅGÍ y‚ÀDÐûW…ÔC˜¿•%‹Ò¸Vî96ºkœ>lLtÆgÑ)d:ã|Ù\Ž,?†ÅÙ¾¦d”5·ÖŒ‘ì¡âØ#2}‰Äñ‘«Ã™ >>©™–Ay÷r5dý>>Ç:Xqa¿ÓÙ x^åJÓ^a”Õ ÀÝ2PA¡½Îk@¨AP£íÓ~<¢GÇ€w*ßjRr… (Þbí]4²2æa´<¡ï‰ö‚kdù©#YtuÎdW'*Õ³C+%˜ 9vȽâðq endstream endobj -2265 0 obj +2267 0 obj << /Length1 1509 /Length2 2696 @@ -33595,7 +33607,7 @@ currentfile eexec ¢½›ß½€eдË*›¹¡Å×KÀËHªX3.Óg 2L9tžèbMµ$ÿx*Ý™4$R=å Þ+JUùCwŠe–ä¡ž±…›-%þe)ê³Óƒ¼Ö\™MS{Æ•Këž³.œ endstream endobj -2267 0 obj +2269 0 obj << /Length1 2495 /Length2 16116 @@ -33782,7 +33794,7 @@ uÖ‚ }ã´ûKç+ÑàôÎïÈL5XáçB´Æ`{˜PØžFR/´e¦•{›ùÉþ¿xì³If!«ÐÞdå˜w!q>)ο ç«׫ÍélÞV•]˜$>Øð€Om•Å€„”œKé1îy®ïà^ÑŸ= ˜"YkèK‡ÇÉÜgt¼[1à6eà´§p[hNc¾}]Û#Ü^ékNoʼm, ±5u£‰‘yéá<Õnå•TA³t<Íw£&+•5O–y[šì÷N„þ[ªP±+J ã$ìiÙ/×%”ÖˆÞHEPBÓaÓÒàz`~-Âôa+Õ¸wi W€´êÔ=ÞþYÝÃÊÿ%àb-ÈòÐÈSQ­=SVuIwï®–¥H°¸CÒ8ûq—-º£ ©›¨íW£‰R͢ݼ?ÎÎïÒ‰G¼»g5…áá)Ó9 P9©_öQ‰+Ë[nÒÞð‘k¡ð#ß%J!³„zùŽø6:ÈLÑiÑ)Yð´™exR4ëÌ©b&Œø-Àé¸Îä˜bŸ©³Ï e’ðNæb³x+’ÎÔ‚>êxró}Ô„%öˆSx#«ÆóìðáÀ¼àÔ\/¸aĬ1^BIOÿÌ…Ô•x_å<=rãÔTi¤º½Ôø_ƒä­[›ÖÉ-W¿õ…&íg!zÂ{N•i×%’3s|刽¨’66gú಑do–D»¹^-@AæJ–ðHSPºHSä[N¥©:ORØ~\¨·bj–•1 ãæp endstream endobj -2269 0 obj +2271 0 obj << /Length1 1173 /Length2 2916 @@ -33830,7 +33842,7 @@ s; ƒ$ü-UÒÛÊ3¤³# endstream endobj -2271 0 obj +2273 0 obj << /Length1 1188 /Length2 2740 @@ -33879,7 +33891,7 @@ AÖª^ 6» f žÑrº^‚7£ö1ë5aj³à¡Ašº£¨nWÉ©!µp© cílov®>ÕªI8©3!ÕÜ/ª˜ JÝÚ?|iî$dØ_ìñ(°/;Åb÷üÒ49Ãï•Û%X¾eÊal¥Øw픋v_Õ̹ûœ@dr®Ëp.álä§<çêÉJt~½ŸM«÷[£†yœ ä™û3¹î[Î{ endstream endobj -2273 0 obj +2275 0 obj << /Length1 1614 /Length2 22531 @@ -33999,7 +34011,7 @@ s ÿK=ö² ’á(ÛHfUïÎãrÒø¾IQ$W0LÇòÅÕµ8ŽÅX‘k¯ß‰ô¹­JÏMÐz{äPãÀ÷–¢Ô“‹¾>$ yò§ÑéÚ"Éjrº½¾‹Xf¯yÓLEœtnÖy“ÉŽœ‰ö•ƒQ]Ex.ò¢B‚…;®úˆ[„çðÂXánÍUîOýÅ›1Nd É¸&÷ïÎŒþ endstream endobj -2275 0 obj +2277 0 obj << /Length1 1616 /Length2 24418 @@ -34124,7 +34136,7 @@ c51 AÌø2C0ˆ¯5§Œƒñ¸ûoÔ]}‰I(&*㤠½;Ã@ar½’§×@ ž\-@óˆ…Ô|†5J¾ÏZ¬¬Ò¿ÖTÛÆâ¼ .áç1åT–€"aõJk:‘¹bÄ–D»| endstream endobj -2277 0 obj +2279 0 obj << /Length1 1620 /Length2 18673 @@ -34256,7 +34268,7 @@ ST Æ€{qK—ÿýðêT°%ÏÄÁç4 ~T’è:sãì# þýu B«K²¢Þ@§wÕI5­³=ð¡•öu³Îm9¶.tÑž2•5ÈĬa”Åpˆ5EÕûÚ4D(á€ÁXmè‡ù{>Ìì•o‹:=T¡AŒB[’œin«­áQ¦Õƒ‚:©ûþÀmôÆö¨.¸åê8¢U…E%x~˹>í£ñ:¾Ö@CQBYÑ: endstream endobj -2279 0 obj +2281 0 obj << /Length 1007 >> @@ -34326,7 +34338,7 @@ end endstream endobj -2280 0 obj +2282 0 obj << /Length 1577 >> @@ -34441,7 +34453,7 @@ end endstream endobj -2281 0 obj +2283 0 obj << /Length 1535 >> @@ -34547,7 +34559,7 @@ end endstream endobj -2282 0 obj +2284 0 obj << /Length 1724 >> @@ -34670,7 +34682,7 @@ end endstream endobj -2283 0 obj +2285 0 obj << /Length 2050 >> @@ -34816,7 +34828,7 @@ end endstream endobj -2284 0 obj +2286 0 obj << /Length 1543 >> @@ -34929,7 +34941,7 @@ end endstream endobj -2285 0 obj +2287 0 obj << /Length 1538 >> @@ -35042,7 +35054,7 @@ end endstream endobj -2286 0 obj +2288 0 obj << /Length 1538 >> @@ -35155,7 +35167,7 @@ end endstream endobj -2287 0 obj +2289 0 obj << /Length 853 >> @@ -35213,7 +35225,7 @@ end endstream endobj -2288 0 obj +2290 0 obj << /Length 1113 >> @@ -35291,7 +35303,7 @@ end endstream endobj -2289 0 obj +2291 0 obj << /Length 1477 >> @@ -35394,7 +35406,7 @@ end endstream endobj -2290 0 obj +2292 0 obj << /Length 1477 >> @@ -35497,7 +35509,7 @@ end endstream endobj -2291 0 obj +2293 0 obj << /Length 1482 >> @@ -35600,29 +35612,33 @@ end endstream endobj -2251 0 obj +2250 0 obj << /Type /ObjStm /N 100 -/First 1010 -/Length 16643 ->> -stream -2250 0 2252 471 2254 1046 2256 1271 2258 1603 2260 1847 2262 2118 2264 2466 2266 2972 2268 3206 -2270 3680 2272 3906 2274 4137 2276 4616 2278 5192 2248 5621 1860 6062 1791 6225 1469 6388 923 6549 -922 6708 921 6868 979 7029 1025 7189 1263 7350 1136 7515 673 7685 675 7875 674 8065 676 8255 -889 8368 980 8481 1037 8597 1072 8717 1101 8837 1143 8957 1189 9077 1231 9197 1290 9317 1342 9437 -1391 9557 1440 9677 1480 9797 1519 9917 1566 10037 1610 10157 1647 10277 1683 10397 1722 10517 1763 10637 -1792 10757 1826 10877 1864 10997 1899 11117 1938 11237 1976 11357 2017 11477 2056 11597 2114 11717 2210 11837 -2292 11957 2293 12075 2294 12196 2295 12317 2296 12438 2297 12559 2298 12634 2299 12739 663 12808 659 12882 -655 12970 651 13058 647 13146 643 13234 639 13322 635 13410 631 13498 627 13586 623 13674 619 13762 -615 13850 611 13938 607 14012 602 14124 598 14198 594 14286 590 14374 586 14448 582 14573 578 14647 -574 14721 570 14846 566 14920 562 15008 558 15096 554 15184 550 15272 546 15360 542 15434 538 15559 -% 2250 0 obj -[528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] +/First 1019 +/Length 17555 +>> +stream +2249 0 2252 471 2253 1102 2254 1573 2256 2148 2258 2373 2260 2705 2262 2949 2264 3220 2266 3568 +2268 4074 2270 4308 2272 4782 2274 5008 2276 5239 2278 5718 2280 6294 2251 6723 1862 7164 1793 7327 +1471 7490 923 7651 922 7810 921 7970 979 8131 1025 8291 1265 8452 1138 8617 673 8787 675 8977 +674 9167 676 9357 889 9470 980 9583 1037 9699 1072 9819 1103 9939 1145 10059 1191 10179 1233 10299 +1292 10419 1344 10539 1393 10659 1442 10779 1482 10899 1521 11019 1568 11139 1612 11259 1649 11379 1685 11499 +1724 11619 1765 11739 1794 11859 1829 11979 1866 12099 1901 12219 1940 12339 1978 12459 2019 12579 2058 12699 +2116 12819 2212 12939 2294 13059 2295 13177 2296 13298 2297 13419 2298 13540 2299 13661 2300 13736 2301 13841 +663 13910 659 13984 655 14072 651 14160 647 14248 643 14336 639 14424 635 14512 631 14600 627 14688 +623 14776 619 14864 615 14952 611 15040 607 15114 602 15226 598 15300 594 15388 590 15476 586 15550 +582 15675 578 15749 574 15823 570 15948 566 16022 562 16110 558 16198 554 16286 550 16374 546 16462 +% 2249 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] % 2252 0 obj -[611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] +[605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] +% 2253 0 obj +[528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] % 2254 0 obj +[611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] +% 2256 0 obj << /Type /FontDescriptor /FontName /MNPEHI+CMEX10 @@ -35635,9 +35651,9 @@ stream /StemV 47 /XHeight 431 /CharSet (/radicalbigg) -/FontFile 2253 0 R +/FontFile 2255 0 R >> -% 2256 0 obj +% 2258 0 obj << /Type /FontDescriptor /FontName /SFGIZH+CMITT10 @@ -35650,9 +35666,9 @@ stream /StemV 69 /XHeight 431 /CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) -/FontFile 2255 0 R +/FontFile 2257 0 R >> -% 2258 0 obj +% 2260 0 obj << /Type /FontDescriptor /FontName /TPELEW+CMMI10 @@ -35665,9 +35681,9 @@ stream /StemV 72 /XHeight 431 /CharSet (/arrowhookleft/greater/less) -/FontFile 2257 0 R +/FontFile 2259 0 R >> -% 2260 0 obj +% 2262 0 obj << /Type /FontDescriptor /FontName /SOSTRQ+CMR10 @@ -35680,9 +35696,9 @@ stream /StemV 69 /XHeight 431 /CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) -/FontFile 2259 0 R +/FontFile 2261 0 R >> -% 2262 0 obj +% 2264 0 obj << /Type /FontDescriptor /FontName /VKSUEJ+CMSY10 @@ -35695,9 +35711,9 @@ stream /StemV 40 /XHeight 431 /CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) -/FontFile 2261 0 R +/FontFile 2263 0 R >> -% 2264 0 obj +% 2266 0 obj << /Type /FontDescriptor /FontName /XIQVGP+CMTT10 @@ -35710,9 +35726,9 @@ stream /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2263 0 R +/FontFile 2265 0 R >> -% 2266 0 obj +% 2268 0 obj << /Type /FontDescriptor /FontName /KPZRIA+CMTT8 @@ -35725,9 +35741,9 @@ stream /StemV 76 /XHeight 431 /CharSet (/b/c/d/e/i/l/n/p/r/s/t) -/FontFile 2265 0 R +/FontFile 2267 0 R >> -% 2268 0 obj +% 2270 0 obj << /Type /FontDescriptor /FontName /FYMOSO+CMTT9 @@ -35740,9 +35756,9 @@ stream /StemV 74 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2267 0 R +/FontFile 2269 0 R >> -% 2270 0 obj +% 2272 0 obj << /Type /FontDescriptor /FontName /IKXQUG+PazoMath @@ -35755,9 +35771,9 @@ stream /StemV 95 /XHeight 0 /CharSet (/infinity/summation) -/FontFile 2269 0 R +/FontFile 2271 0 R >> -% 2272 0 obj +% 2274 0 obj << /Type /FontDescriptor /FontName /DUJUUF+PazoMath-Italic @@ -35770,9 +35786,9 @@ stream /StemV 65 /XHeight 0 /CharSet (/alpha/beta) -/FontFile 2271 0 R +/FontFile 2273 0 R >> -% 2274 0 obj +% 2276 0 obj << /Type /FontDescriptor /FontName /BDDEWM+URWPalladioL-Bold @@ -35785,9 +35801,9 @@ stream /StemV 123 /XHeight 471 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2273 0 R +/FontFile 2275 0 R >> -% 2276 0 obj +% 2278 0 obj << /Type /FontDescriptor /FontName /GLTUCO+URWPalladioL-Roma @@ -35800,9 +35816,9 @@ stream /StemV 84 /XHeight 469 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2275 0 R +/FontFile 2277 0 R >> -% 2278 0 obj +% 2280 0 obj << /Type /FontDescriptor /FontName /LHHPET+URWPalladioL-Ital @@ -35815,425 +35831,425 @@ stream /StemV 78 /XHeight 482 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2277 0 R +/FontFile 2279 0 R >> -% 2248 0 obj +% 2251 0 obj << /Type /Encoding /Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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/bracketleft 93/bracketright 97/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 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] >> -% 1860 0 obj +% 1862 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MNPEHI+CMEX10 -/FontDescriptor 2254 0 R +/FontDescriptor 2256 0 R /FirstChar 114 /LastChar 114 -/Widths 2238 0 R -/ToUnicode 2279 0 R +/Widths 2240 0 R +/ToUnicode 2281 0 R >> -% 1791 0 obj +% 1793 0 obj << /Type /Font /Subtype /Type1 /BaseFont /SFGIZH+CMITT10 -/FontDescriptor 2256 0 R +/FontDescriptor 2258 0 R /FirstChar 33 /LastChar 121 -/Widths 2239 0 R -/ToUnicode 2280 0 R +/Widths 2241 0 R +/ToUnicode 2282 0 R >> -% 1469 0 obj +% 1471 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TPELEW+CMMI10 -/FontDescriptor 2258 0 R +/FontDescriptor 2260 0 R /FirstChar 44 /LastChar 62 -/Widths 2240 0 R -/ToUnicode 2281 0 R +/Widths 2242 0 R +/ToUnicode 2283 0 R >> % 923 0 obj << /Type /Font /Subtype /Type1 /BaseFont /SOSTRQ+CMR10 -/FontDescriptor 2260 0 R +/FontDescriptor 2262 0 R /FirstChar 40 /LastChar 93 -/Widths 2245 0 R -/ToUnicode 2282 0 R +/Widths 2247 0 R +/ToUnicode 2284 0 R >> % 922 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VKSUEJ+CMSY10 -/FontDescriptor 2262 0 R +/FontDescriptor 2264 0 R /FirstChar 0 /LastChar 112 -/Widths 2246 0 R -/ToUnicode 2283 0 R +/Widths 2248 0 R +/ToUnicode 2285 0 R >> % 921 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XIQVGP+CMTT10 -/FontDescriptor 2264 0 R +/FontDescriptor 2266 0 R /FirstChar 13 /LastChar 126 -/Widths 2247 0 R -/ToUnicode 2284 0 R +/Widths 2249 0 R +/ToUnicode 2286 0 R >> % 979 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KPZRIA+CMTT8 -/FontDescriptor 2266 0 R +/FontDescriptor 2268 0 R /FirstChar 98 /LastChar 116 -/Widths 2244 0 R -/ToUnicode 2285 0 R +/Widths 2246 0 R +/ToUnicode 2287 0 R >> % 1025 0 obj << /Type /Font /Subtype /Type1 /BaseFont /FYMOSO+CMTT9 -/FontDescriptor 2268 0 R +/FontDescriptor 2270 0 R /FirstChar 13 /LastChar 122 -/Widths 2243 0 R -/ToUnicode 2286 0 R +/Widths 2245 0 R +/ToUnicode 2288 0 R >> -% 1263 0 obj +% 1265 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IKXQUG+PazoMath -/FontDescriptor 2270 0 R +/FontDescriptor 2272 0 R /FirstChar 165 /LastChar 229 -/Widths 2241 0 R -/ToUnicode 2287 0 R +/Widths 2243 0 R +/ToUnicode 2289 0 R >> -% 1136 0 obj +% 1138 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUJUUF+PazoMath-Italic -/FontDescriptor 2272 0 R +/FontDescriptor 2274 0 R /FirstChar 97 /LastChar 98 -/Widths 2242 0 R -/ToUnicode 2288 0 R +/Widths 2244 0 R +/ToUnicode 2290 0 R >> % 673 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BDDEWM+URWPalladioL-Bold -/FontDescriptor 2274 0 R +/FontDescriptor 2276 0 R /FirstChar 2 /LastChar 151 -/Widths 2252 0 R -/Encoding 2248 0 R -/ToUnicode 2289 0 R +/Widths 2254 0 R +/Encoding 2251 0 R +/ToUnicode 2291 0 R >> % 675 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GLTUCO+URWPalladioL-Roma -/FontDescriptor 2276 0 R +/FontDescriptor 2278 0 R /FirstChar 2 /LastChar 167 -/Widths 2249 0 R -/Encoding 2248 0 R -/ToUnicode 2290 0 R +/Widths 2252 0 R +/Encoding 2251 0 R +/ToUnicode 2292 0 R >> % 674 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LHHPET+URWPalladioL-Ital -/FontDescriptor 2278 0 R +/FontDescriptor 2280 0 R /FirstChar 2 /LastChar 122 -/Widths 2250 0 R -/Encoding 2248 0 R -/ToUnicode 2291 0 R +/Widths 2253 0 R +/Encoding 2251 0 R +/ToUnicode 2293 0 R >> % 676 0 obj << /Type /Pages /Count 6 -/Parent 2292 0 R +/Parent 2294 0 R /Kids [666 0 R 679 0 R 726 0 R 782 0 R 829 0 R 870 0 R] >> % 889 0 obj << /Type /Pages /Count 6 -/Parent 2292 0 R +/Parent 2294 0 R /Kids [887 0 R 906 0 R 918 0 R 931 0 R 943 0 R 948 0 R] >> % 980 0 obj << /Type /Pages /Count 6 -/Parent 2292 0 R +/Parent 2294 0 R /Kids [961 0 R 984 0 R 995 0 R 1003 0 R 1014 0 R 1030 0 R] >> % 1037 0 obj << /Type /Pages /Count 6 -/Parent 2292 0 R +/Parent 2294 0 R /Kids [1034 0 R 1039 0 R 1044 0 R 1051 0 R 1058 0 R 1063 0 R] >> % 1072 0 obj << /Type /Pages /Count 6 -/Parent 2292 0 R -/Kids [1069 0 R 1074 0 R 1078 0 R 1082 0 R 1086 0 R 1092 0 R] +/Parent 2294 0 R +/Kids [1069 0 R 1074 0 R 1078 0 R 1084 0 R 1088 0 R 1094 0 R] >> -% 1101 0 obj +% 1103 0 obj << /Type /Pages /Count 6 -/Parent 2292 0 R -/Kids [1098 0 R 1105 0 R 1112 0 R 1118 0 R 1122 0 R 1133 0 R] +/Parent 2294 0 R +/Kids [1100 0 R 1107 0 R 1114 0 R 1120 0 R 1124 0 R 1135 0 R] >> -% 1143 0 obj +% 1145 0 obj << /Type /Pages /Count 6 -/Parent 2293 0 R -/Kids [1140 0 R 1150 0 R 1156 0 R 1168 0 R 1173 0 R 1180 0 R] +/Parent 2295 0 R +/Kids [1142 0 R 1152 0 R 1158 0 R 1170 0 R 1175 0 R 1182 0 R] >> -% 1189 0 obj +% 1191 0 obj << /Type /Pages /Count 6 -/Parent 2293 0 R -/Kids [1185 0 R 1194 0 R 1202 0 R 1207 0 R 1215 0 R 1220 0 R] +/Parent 2295 0 R +/Kids [1187 0 R 1196 0 R 1204 0 R 1209 0 R 1217 0 R 1222 0 R] >> -% 1231 0 obj +% 1233 0 obj << /Type /Pages /Count 6 -/Parent 2293 0 R -/Kids [1227 0 R 1233 0 R 1246 0 R 1253 0 R 1260 0 R 1271 0 R] +/Parent 2295 0 R +/Kids [1229 0 R 1235 0 R 1248 0 R 1255 0 R 1262 0 R 1274 0 R] >> -% 1290 0 obj +% 1292 0 obj << /Type /Pages /Count 6 -/Parent 2293 0 R -/Kids [1287 0 R 1294 0 R 1305 0 R 1311 0 R 1322 0 R 1327 0 R] +/Parent 2295 0 R +/Kids [1289 0 R 1296 0 R 1307 0 R 1313 0 R 1324 0 R 1329 0 R] >> -% 1342 0 obj +% 1344 0 obj << /Type /Pages /Count 6 -/Parent 2293 0 R -/Kids [1338 0 R 1344 0 R 1353 0 R 1359 0 R 1367 0 R 1374 0 R] +/Parent 2295 0 R +/Kids [1340 0 R 1346 0 R 1355 0 R 1361 0 R 1369 0 R 1376 0 R] >> -% 1391 0 obj +% 1393 0 obj << /Type /Pages /Count 6 -/Parent 2293 0 R -/Kids [1388 0 R 1396 0 R 1405 0 R 1413 0 R 1417 0 R 1432 0 R] +/Parent 2295 0 R +/Kids [1390 0 R 1398 0 R 1407 0 R 1415 0 R 1419 0 R 1434 0 R] >> -% 1440 0 obj +% 1442 0 obj << /Type /Pages /Count 6 -/Parent 2294 0 R -/Kids [1437 0 R 1444 0 R 1451 0 R 1455 0 R 1460 0 R 1466 0 R] +/Parent 2296 0 R +/Kids [1439 0 R 1446 0 R 1453 0 R 1457 0 R 1462 0 R 1468 0 R] >> -% 1480 0 obj +% 1482 0 obj << /Type /Pages /Count 6 -/Parent 2294 0 R -/Kids [1472 0 R 1483 0 R 1488 0 R 1497 0 R 1505 0 R 1510 0 R] +/Parent 2296 0 R +/Kids [1474 0 R 1485 0 R 1490 0 R 1500 0 R 1507 0 R 1512 0 R] >> -% 1519 0 obj +% 1521 0 obj << /Type /Pages /Count 6 -/Parent 2294 0 R -/Kids [1516 0 R 1521 0 R 1529 0 R 1534 0 R 1542 0 R 1548 0 R] +/Parent 2296 0 R +/Kids [1518 0 R 1523 0 R 1531 0 R 1536 0 R 1544 0 R 1550 0 R] >> -% 1566 0 obj +% 1568 0 obj << /Type /Pages /Count 6 -/Parent 2294 0 R -/Kids [1557 0 R 1571 0 R 1575 0 R 1588 0 R 1594 0 R 1601 0 R] +/Parent 2296 0 R +/Kids [1559 0 R 1573 0 R 1577 0 R 1590 0 R 1596 0 R 1603 0 R] >> -% 1610 0 obj +% 1612 0 obj << /Type /Pages /Count 6 -/Parent 2294 0 R -/Kids [1606 0 R 1614 0 R 1618 0 R 1627 0 R 1635 0 R 1639 0 R] +/Parent 2296 0 R +/Kids [1608 0 R 1616 0 R 1620 0 R 1629 0 R 1637 0 R 1641 0 R] >> -% 1647 0 obj +% 1649 0 obj << /Type /Pages /Count 6 -/Parent 2294 0 R -/Kids [1644 0 R 1649 0 R 1656 0 R 1661 0 R 1667 0 R 1673 0 R] +/Parent 2296 0 R +/Kids [1646 0 R 1651 0 R 1658 0 R 1663 0 R 1669 0 R 1675 0 R] >> -% 1683 0 obj +% 1685 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R -/Kids [1679 0 R 1686 0 R 1693 0 R 1700 0 R 1704 0 R 1714 0 R] +/Parent 2297 0 R +/Kids [1681 0 R 1688 0 R 1695 0 R 1702 0 R 1706 0 R 1717 0 R] >> -% 1722 0 obj +% 1724 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R -/Kids [1719 0 R 1724 0 R 1737 0 R 1741 0 R 1747 0 R 1753 0 R] +/Parent 2297 0 R +/Kids [1721 0 R 1726 0 R 1739 0 R 1743 0 R 1749 0 R 1755 0 R] >> -% 1763 0 obj +% 1765 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R -/Kids [1760 0 R 1765 0 R 1769 0 R 1773 0 R 1777 0 R 1781 0 R] +/Parent 2297 0 R +/Kids [1762 0 R 1767 0 R 1771 0 R 1775 0 R 1779 0 R 1783 0 R] >> -% 1792 0 obj +% 1794 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R -/Kids [1785 0 R 1794 0 R 1798 0 R 1805 0 R 1809 0 R 1816 0 R] +/Parent 2297 0 R +/Kids [1787 0 R 1796 0 R 1800 0 R 1807 0 R 1811 0 R 1818 0 R] >> -% 1826 0 obj +% 1829 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R -/Kids [1820 0 R 1829 0 R 1833 0 R 1840 0 R 1844 0 R 1851 0 R] +/Parent 2297 0 R +/Kids [1823 0 R 1831 0 R 1835 0 R 1842 0 R 1846 0 R 1853 0 R] >> -% 1864 0 obj +% 1866 0 obj << /Type /Pages /Count 6 -/Parent 2295 0 R -/Kids [1855 0 R 1866 0 R 1871 0 R 1878 0 R 1884 0 R 1888 0 R] +/Parent 2297 0 R +/Kids [1857 0 R 1868 0 R 1873 0 R 1880 0 R 1886 0 R 1890 0 R] >> -% 1899 0 obj +% 1901 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R -/Kids [1894 0 R 1901 0 R 1907 0 R 1913 0 R 1918 0 R 1925 0 R] +/Parent 2298 0 R +/Kids [1896 0 R 1903 0 R 1909 0 R 1915 0 R 1920 0 R 1927 0 R] >> -% 1938 0 obj +% 1940 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R -/Kids [1932 0 R 1941 0 R 1948 0 R 1955 0 R 1961 0 R 1965 0 R] +/Parent 2298 0 R +/Kids [1935 0 R 1943 0 R 1950 0 R 1957 0 R 1963 0 R 1967 0 R] >> -% 1976 0 obj +% 1978 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R -/Kids [1972 0 R 1984 0 R 1988 0 R 1997 0 R 2001 0 R 2009 0 R] +/Parent 2298 0 R +/Kids [1974 0 R 1986 0 R 1990 0 R 1999 0 R 2003 0 R 2011 0 R] >> -% 2017 0 obj +% 2019 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R -/Kids [2014 0 R 2019 0 R 2025 0 R 2029 0 R 2036 0 R 2048 0 R] +/Parent 2298 0 R +/Kids [2016 0 R 2021 0 R 2027 0 R 2031 0 R 2038 0 R 2050 0 R] >> -% 2056 0 obj +% 2058 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R -/Kids [2053 0 R 2062 0 R 2071 0 R 2075 0 R 2085 0 R 2099 0 R] +/Parent 2298 0 R +/Kids [2055 0 R 2064 0 R 2073 0 R 2077 0 R 2087 0 R 2101 0 R] >> -% 2114 0 obj +% 2116 0 obj << /Type /Pages /Count 6 -/Parent 2296 0 R -/Kids [2108 0 R 2120 0 R 2148 0 R 2169 0 R 2187 0 R 2203 0 R] +/Parent 2298 0 R +/Kids [2110 0 R 2122 0 R 2150 0 R 2171 0 R 2189 0 R 2205 0 R] >> -% 2210 0 obj +% 2212 0 obj << /Type /Pages /Count 6 -/Parent 2297 0 R -/Kids [2207 0 R 2212 0 R 2217 0 R 2221 0 R 2225 0 R 2233 0 R] +/Parent 2299 0 R +/Kids [2209 0 R 2214 0 R 2219 0 R 2223 0 R 2227 0 R 2235 0 R] >> -% 2292 0 obj +% 2294 0 obj << /Type /Pages /Count 36 -/Parent 2298 0 R -/Kids [676 0 R 889 0 R 980 0 R 1037 0 R 1072 0 R 1101 0 R] +/Parent 2300 0 R +/Kids [676 0 R 889 0 R 980 0 R 1037 0 R 1072 0 R 1103 0 R] >> -% 2293 0 obj +% 2295 0 obj << /Type /Pages /Count 36 -/Parent 2298 0 R -/Kids [1143 0 R 1189 0 R 1231 0 R 1290 0 R 1342 0 R 1391 0 R] +/Parent 2300 0 R +/Kids [1145 0 R 1191 0 R 1233 0 R 1292 0 R 1344 0 R 1393 0 R] >> -% 2294 0 obj +% 2296 0 obj << /Type /Pages /Count 36 -/Parent 2298 0 R -/Kids [1440 0 R 1480 0 R 1519 0 R 1566 0 R 1610 0 R 1647 0 R] +/Parent 2300 0 R +/Kids [1442 0 R 1482 0 R 1521 0 R 1568 0 R 1612 0 R 1649 0 R] >> -% 2295 0 obj +% 2297 0 obj << /Type /Pages /Count 36 -/Parent 2298 0 R -/Kids [1683 0 R 1722 0 R 1763 0 R 1792 0 R 1826 0 R 1864 0 R] +/Parent 2300 0 R +/Kids [1685 0 R 1724 0 R 1765 0 R 1794 0 R 1829 0 R 1866 0 R] >> -% 2296 0 obj +% 2298 0 obj << /Type /Pages /Count 36 -/Parent 2298 0 R -/Kids [1899 0 R 1938 0 R 1976 0 R 2017 0 R 2056 0 R 2114 0 R] +/Parent 2300 0 R +/Kids [1901 0 R 1940 0 R 1978 0 R 2019 0 R 2058 0 R 2116 0 R] >> -% 2297 0 obj +% 2299 0 obj << /Type /Pages /Count 6 -/Parent 2298 0 R -/Kids [2210 0 R] +/Parent 2300 0 R +/Kids [2212 0 R] >> -% 2298 0 obj +% 2300 0 obj << /Type /Pages /Count 186 -/Kids [2292 0 R 2293 0 R 2294 0 R 2295 0 R 2296 0 R 2297 0 R] +/Kids [2294 0 R 2295 0 R 2296 0 R 2297 0 R 2298 0 R 2299 0 R] >> -% 2299 0 obj +% 2301 0 obj << /Type /Outlines /First 4 0 R @@ -36480,6 +36496,27 @@ stream /Parent 542 0 R /Next 550 0 R >> + +endstream +endobj +2302 0 obj +<< +/Type /ObjStm +/N 100 +/First 887 +/Length 9760 +>> +stream +542 0 538 125 534 199 530 287 526 375 522 463 518 551 514 625 510 750 506 824 +502 912 498 1000 494 1074 490 1199 486 1273 482 1361 478 1449 474 1537 470 1625 466 1713 +462 1801 458 1889 454 1977 450 2065 446 2153 442 2241 438 2329 434 2417 430 2505 426 2593 +422 2667 418 2793 414 2867 410 2955 406 3043 401 3131 397 3219 393 3307 389 3395 385 3483 +381 3571 377 3659 373 3747 369 3835 365 3923 361 4011 357 4099 353 4187 349 4275 345 4363 +341 4451 337 4539 333 4627 329 4715 325 4803 321 4891 317 4979 313 5067 309 5141 305 5267 +301 5341 297 5429 293 5517 289 5591 285 5716 281 5790 277 5878 273 5966 269 6054 265 6142 +261 6230 257 6318 253 6406 249 6494 245 6582 241 6670 237 6758 233 6846 229 6934 225 7022 +221 7096 217 7221 213 7294 209 7381 205 7455 200 7543 196 7631 192 7719 188 7807 184 7881 +180 8007 176 8081 172 8169 168 8257 164 8345 160 8433 156 8521 152 8609 148 8697 144 8785 % 542 0 obj << /Title 543 0 R @@ -36498,27 +36535,6 @@ stream /Parent 514 0 R /Prev 534 0 R >> - -endstream -endobj -2300 0 obj -<< -/Type /ObjStm -/N 100 -/First 886 -/Length 9736 ->> -stream -534 0 530 88 526 176 522 264 518 352 514 426 510 551 506 625 502 713 498 801 -494 875 490 1000 486 1074 482 1162 478 1250 474 1338 470 1426 466 1514 462 1602 458 1690 -454 1778 450 1866 446 1954 442 2042 438 2130 434 2218 430 2306 426 2394 422 2468 418 2594 -414 2668 410 2756 406 2844 401 2932 397 3020 393 3108 389 3196 385 3284 381 3372 377 3460 -373 3548 369 3636 365 3724 361 3812 357 3900 353 3988 349 4076 345 4164 341 4252 337 4340 -333 4428 329 4516 325 4604 321 4692 317 4780 313 4868 309 4942 305 5068 301 5142 297 5230 -293 5318 289 5392 285 5517 281 5591 277 5679 273 5767 269 5855 265 5943 261 6031 257 6119 -253 6207 249 6295 245 6383 241 6471 237 6559 233 6647 229 6735 225 6823 221 6897 217 7022 -213 7095 209 7182 205 7256 200 7344 196 7432 192 7520 188 7608 184 7682 180 7808 176 7882 -172 7970 168 8058 164 8146 160 8234 156 8322 152 8410 148 8498 144 8586 140 8674 136 8762 % 534 0 obj << /Title 535 0 R @@ -37309,6 +37325,27 @@ stream /Prev 140 0 R /Next 148 0 R >> + +endstream +endobj +2303 0 obj +<< +/Type /ObjStm +/N 100 +/First 951 +/Length 15941 +>> +stream +140 0 136 88 132 176 128 264 124 352 120 440 116 528 112 616 108 704 104 778 +100 904 96 975 92 1058 88 1140 84 1222 80 1304 76 1386 72 1468 68 1550 64 1632 +60 1714 56 1796 52 1878 48 1960 44 2042 40 2111 36 2220 32 2340 28 2409 24 2465 +20 2584 16 2666 12 2735 8 2852 4 2917 2304 3010 2305 3206 2306 3379 2307 3559 2308 3736 +2309 3913 2310 4093 2311 4271 2312 4451 2313 4629 2314 4809 2315 4980 2316 5145 2317 5312 2318 5481 +2319 5650 2320 5822 2321 5992 2322 6164 2323 6334 2324 6506 2325 6676 2326 6848 2327 7018 2328 7190 +2329 7359 2330 7533 2331 7755 2332 7960 2333 8209 2334 8435 2335 8639 2336 8825 2337 9008 2338 9210 +2339 9435 2340 9655 2341 9886 2342 10122 2343 10356 2344 10584 2345 10772 2346 10952 2347 11131 2348 11311 +2349 11489 2350 11667 2351 11847 2352 12026 2353 12206 2354 12385 2355 12565 2356 12744 2357 12924 2358 13103 +2359 13283 2360 13454 2361 13626 2362 13796 2363 13968 2364 14138 2365 14310 2366 14479 2367 14648 2368 14820 % 140 0 obj << /Title 141 0 R @@ -37325,27 +37362,6 @@ stream /Prev 132 0 R /Next 140 0 R >> - -endstream -endobj -2301 0 obj -<< -/Type /ObjStm -/N 100 -/First 954 -/Length 16101 ->> -stream -132 0 128 88 124 176 120 264 116 352 112 440 108 528 104 602 100 728 96 799 -92 882 88 964 84 1046 80 1128 76 1210 72 1292 68 1374 64 1456 60 1538 56 1620 -52 1702 48 1784 44 1866 40 1935 36 2044 32 2164 28 2233 24 2289 20 2408 16 2490 -12 2559 8 2676 4 2741 2302 2834 2303 3030 2304 3203 2305 3383 2306 3560 2307 3737 2308 3917 -2309 4095 2310 4275 2311 4453 2312 4633 2313 4797 2314 4963 2315 5130 2316 5302 2317 5472 2318 5644 -2319 5814 2320 5986 2321 6156 2322 6328 2323 6497 2324 6666 2325 6838 2326 7008 2327 7180 2328 7364 -2329 7574 2330 7844 2331 8070 2332 8281 2333 8478 2334 8657 2335 8842 2336 9054 2337 9277 2338 9500 -2339 9733 2340 9969 2341 10201 2342 10412 2343 10590 2344 10768 2345 10948 2346 11127 2347 11307 2348 11486 -2349 11666 2350 11845 2351 12025 2352 12204 2353 12384 2354 12562 2355 12740 2356 12920 2357 13099 2358 13269 -2359 13441 2360 13610 2361 13779 2362 13951 2363 14121 2364 14293 2365 14463 2366 14635 2367 14805 2368 14977 % 132 0 obj << /Title 133 0 R @@ -37612,354 +37628,344 @@ stream << /Title 5 0 R /A 1 0 R -/Parent 2299 0 R +/Parent 2301 0 R /First 8 0 R /Last 607 0 R /Count -13 >> -% 2302 0 obj -<< -/Names [(Doc-Start) 672 0 R (Hfootnote.1) 924 0 R (Hfootnote.2) 925 0 R (Hfootnote.3) 978 0 R (Hfootnote.4) 1975 0 R (Hfootnote.5) 2042 0 R] -/Limits [(Doc-Start) (Hfootnote.5)] ->> -% 2303 0 obj -<< -/Names [(Item.1) 951 0 R (Item.10) 965 0 R (Item.100) 1697 0 R (Item.101) 1707 0 R (Item.102) 1708 0 R (Item.103) 1709 0 R] -/Limits [(Item.1) (Item.103)] ->> % 2304 0 obj << -/Names [(Item.104) 1727 0 R (Item.105) 1728 0 R (Item.106) 1729 0 R (Item.107) 1730 0 R (Item.108) 1731 0 R (Item.109) 1732 0 R] -/Limits [(Item.104) (Item.109)] +/Names [(Doc-Start) 672 0 R (Hfootnote.1) 924 0 R (Hfootnote.2) 925 0 R (Hfootnote.3) 978 0 R (Hfootnote.4) 1977 0 R (Hfootnote.5) 2044 0 R] +/Limits [(Doc-Start) (Hfootnote.5)] >> % 2305 0 obj << -/Names [(Item.11) 966 0 R (Item.110) 1733 0 R (Item.111) 1734 0 R (Item.112) 1735 0 R (Item.113) 1744 0 R (Item.114) 1745 0 R] -/Limits [(Item.11) (Item.114)] +/Names [(Item.1) 951 0 R (Item.10) 965 0 R (Item.100) 1692 0 R (Item.101) 1698 0 R (Item.102) 1699 0 R (Item.103) 1709 0 R] +/Limits [(Item.1) (Item.103)] >> % 2306 0 obj << -/Names [(Item.115) 1750 0 R (Item.116) 1751 0 R (Item.117) 1756 0 R (Item.118) 1757 0 R (Item.119) 1758 0 R (Item.12) 967 0 R] -/Limits [(Item.115) (Item.12)] +/Names [(Item.104) 1710 0 R (Item.105) 1711 0 R (Item.106) 1729 0 R (Item.107) 1730 0 R (Item.108) 1731 0 R (Item.109) 1732 0 R] +/Limits [(Item.104) (Item.109)] >> % 2307 0 obj << -/Names [(Item.120) 1788 0 R (Item.121) 1789 0 R (Item.122) 1790 0 R (Item.123) 1801 0 R (Item.124) 1802 0 R (Item.125) 1803 0 R] -/Limits [(Item.120) (Item.125)] +/Names [(Item.11) 966 0 R (Item.110) 1733 0 R (Item.111) 1734 0 R (Item.112) 1735 0 R (Item.113) 1736 0 R (Item.114) 1737 0 R] +/Limits [(Item.11) (Item.114)] >> % 2308 0 obj << -/Names [(Item.126) 1812 0 R (Item.127) 1813 0 R (Item.128) 1814 0 R (Item.129) 1823 0 R (Item.13) 968 0 R (Item.130) 1824 0 R] -/Limits [(Item.126) (Item.130)] +/Names [(Item.115) 1746 0 R (Item.116) 1747 0 R (Item.117) 1752 0 R (Item.118) 1753 0 R (Item.119) 1758 0 R (Item.12) 967 0 R] +/Limits [(Item.115) (Item.12)] >> % 2309 0 obj << -/Names [(Item.131) 1825 0 R (Item.132) 1836 0 R (Item.133) 1837 0 R (Item.134) 1838 0 R (Item.135) 1847 0 R (Item.136) 1848 0 R] -/Limits [(Item.131) (Item.136)] +/Names [(Item.120) 1759 0 R (Item.121) 1760 0 R (Item.122) 1790 0 R (Item.123) 1791 0 R (Item.124) 1792 0 R (Item.125) 1803 0 R] +/Limits [(Item.120) (Item.125)] >> % 2310 0 obj << -/Names [(Item.137) 1849 0 R (Item.138) 1858 0 R (Item.139) 1859 0 R (Item.14) 969 0 R (Item.140) 1861 0 R (Item.141) 1862 0 R] -/Limits [(Item.137) (Item.141)] +/Names [(Item.126) 1804 0 R (Item.127) 1805 0 R (Item.128) 1814 0 R (Item.129) 1815 0 R (Item.13) 968 0 R (Item.130) 1816 0 R] +/Limits [(Item.126) (Item.130)] >> % 2311 0 obj << -/Names [(Item.142) 1863 0 R (Item.143) 1869 0 R (Item.144) 1874 0 R (Item.145) 2112 0 R (Item.146) 2113 0 R (Item.147) 2215 0 R] -/Limits [(Item.142) (Item.147)] +/Names [(Item.131) 1826 0 R (Item.132) 1827 0 R (Item.133) 1828 0 R (Item.134) 1838 0 R (Item.135) 1839 0 R (Item.136) 1840 0 R] +/Limits [(Item.131) (Item.136)] >> % 2312 0 obj << -/Names [(Item.15) 970 0 R (Item.16) 971 0 R (Item.17) 972 0 R (Item.18) 973 0 R (Item.19) 974 0 R (Item.2) 952 0 R] -/Limits [(Item.15) (Item.2)] +/Names [(Item.137) 1849 0 R (Item.138) 1850 0 R (Item.139) 1851 0 R (Item.14) 969 0 R (Item.140) 1860 0 R (Item.141) 1861 0 R] +/Limits [(Item.137) (Item.141)] >> % 2313 0 obj << -/Names [(Item.20) 975 0 R (Item.21) 976 0 R (Item.22) 977 0 R (Item.23) 987 0 R (Item.24) 988 0 R (Item.25) 989 0 R] -/Limits [(Item.20) (Item.25)] +/Names [(Item.142) 1863 0 R (Item.143) 1864 0 R (Item.144) 1865 0 R (Item.145) 1871 0 R (Item.146) 1876 0 R (Item.147) 2114 0 R] +/Limits [(Item.142) (Item.147)] >> % 2314 0 obj << -/Names [(Item.26) 990 0 R (Item.27) 991 0 R (Item.28) 992 0 R (Item.29) 1006 0 R (Item.3) 953 0 R (Item.30) 1007 0 R] -/Limits [(Item.26) (Item.30)] +/Names [(Item.148) 2115 0 R (Item.149) 2217 0 R (Item.15) 970 0 R (Item.16) 971 0 R (Item.17) 972 0 R (Item.18) 973 0 R] +/Limits [(Item.148) (Item.18)] >> % 2315 0 obj << -/Names [(Item.31) 1008 0 R (Item.32) 1009 0 R (Item.33) 1010 0 R (Item.34) 1017 0 R (Item.35) 1018 0 R (Item.36) 1019 0 R] -/Limits [(Item.31) (Item.36)] +/Names [(Item.19) 974 0 R (Item.2) 952 0 R (Item.20) 975 0 R (Item.21) 976 0 R (Item.22) 977 0 R (Item.23) 987 0 R] +/Limits [(Item.19) (Item.23)] >> % 2316 0 obj << -/Names [(Item.37) 1020 0 R (Item.38) 1021 0 R (Item.39) 1022 0 R (Item.4) 954 0 R (Item.40) 1023 0 R (Item.41) 1024 0 R] -/Limits [(Item.37) (Item.41)] +/Names [(Item.24) 988 0 R (Item.25) 989 0 R (Item.26) 990 0 R (Item.27) 991 0 R (Item.28) 992 0 R (Item.29) 1006 0 R] +/Limits [(Item.24) (Item.29)] >> % 2317 0 obj << -/Names [(Item.42) 1066 0 R (Item.43) 1159 0 R (Item.44) 1188 0 R (Item.45) 1210 0 R (Item.46) 1236 0 R (Item.47) 1408 0 R] -/Limits [(Item.42) (Item.47)] +/Names [(Item.3) 953 0 R (Item.30) 1007 0 R (Item.31) 1008 0 R (Item.32) 1009 0 R (Item.33) 1010 0 R (Item.34) 1017 0 R] +/Limits [(Item.3) (Item.34)] >> % 2318 0 obj << -/Names [(Item.48) 1409 0 R (Item.49) 1410 0 R (Item.5) 955 0 R (Item.50) 1463 0 R (Item.51) 1470 0 R (Item.52) 1475 0 R] -/Limits [(Item.48) (Item.52)] +/Names [(Item.35) 1018 0 R (Item.36) 1019 0 R (Item.37) 1020 0 R (Item.38) 1021 0 R (Item.39) 1022 0 R (Item.4) 954 0 R] +/Limits [(Item.35) (Item.4)] >> % 2319 0 obj << -/Names [(Item.53) 1476 0 R (Item.54) 1477 0 R (Item.55) 1478 0 R (Item.56) 1479 0 R (Item.57) 1491 0 R (Item.58) 1492 0 R] -/Limits [(Item.53) (Item.58)] +/Names [(Item.40) 1023 0 R (Item.41) 1024 0 R (Item.42) 1066 0 R (Item.43) 1081 0 R (Item.44) 1082 0 R (Item.45) 1161 0 R] +/Limits [(Item.40) (Item.45)] >> % 2320 0 obj << -/Names [(Item.59) 1493 0 R (Item.6) 956 0 R (Item.60) 1500 0 R (Item.61) 1524 0 R (Item.62) 1525 0 R (Item.63) 1532 0 R] -/Limits [(Item.59) (Item.63)] +/Names [(Item.46) 1190 0 R (Item.47) 1212 0 R (Item.48) 1238 0 R (Item.49) 1410 0 R (Item.5) 955 0 R (Item.50) 1411 0 R] +/Limits [(Item.46) (Item.50)] >> % 2321 0 obj << -/Names [(Item.64) 1537 0 R (Item.65) 1538 0 R (Item.66) 1539 0 R (Item.67) 1551 0 R (Item.68) 1552 0 R (Item.69) 1553 0 R] -/Limits [(Item.64) (Item.69)] +/Names [(Item.51) 1412 0 R (Item.52) 1465 0 R (Item.53) 1472 0 R (Item.54) 1477 0 R (Item.55) 1478 0 R (Item.56) 1479 0 R] +/Limits [(Item.51) (Item.56)] >> % 2322 0 obj << -/Names [(Item.7) 957 0 R (Item.70) 1554 0 R (Item.71) 1555 0 R (Item.72) 1560 0 R (Item.73) 1561 0 R (Item.74) 1562 0 R] -/Limits [(Item.7) (Item.74)] +/Names [(Item.57) 1480 0 R (Item.58) 1481 0 R (Item.59) 1493 0 R (Item.6) 956 0 R (Item.60) 1494 0 R (Item.61) 1495 0 R] +/Limits [(Item.57) (Item.61)] >> % 2323 0 obj << -/Names [(Item.75) 1563 0 R (Item.76) 1564 0 R (Item.77) 1565 0 R (Item.78) 1578 0 R (Item.79) 1579 0 R (Item.8) 958 0 R] -/Limits [(Item.75) (Item.8)] +/Names [(Item.62) 1503 0 R (Item.63) 1526 0 R (Item.64) 1527 0 R (Item.65) 1534 0 R (Item.66) 1539 0 R (Item.67) 1540 0 R] +/Limits [(Item.62) (Item.67)] >> % 2324 0 obj << -/Names [(Item.80) 1580 0 R (Item.81) 1581 0 R (Item.82) 1582 0 R (Item.83) 1583 0 R (Item.84) 1584 0 R (Item.85) 1597 0 R] -/Limits [(Item.80) (Item.85)] +/Names [(Item.68) 1541 0 R (Item.69) 1553 0 R (Item.7) 957 0 R (Item.70) 1554 0 R (Item.71) 1555 0 R (Item.72) 1556 0 R] +/Limits [(Item.68) (Item.72)] >> % 2325 0 obj << -/Names [(Item.86) 1609 0 R (Item.87) 1621 0 R (Item.88) 1622 0 R (Item.89) 1630 0 R (Item.9) 964 0 R (Item.90) 1631 0 R] -/Limits [(Item.86) (Item.90)] +/Names [(Item.73) 1557 0 R (Item.74) 1562 0 R (Item.75) 1563 0 R (Item.76) 1564 0 R (Item.77) 1565 0 R (Item.78) 1566 0 R] +/Limits [(Item.73) (Item.78)] >> % 2326 0 obj << -/Names [(Item.91) 1652 0 R (Item.92) 1653 0 R (Item.93) 1664 0 R (Item.94) 1670 0 R (Item.95) 1676 0 R (Item.96) 1682 0 R] -/Limits [(Item.91) (Item.96)] +/Names [(Item.79) 1567 0 R (Item.8) 958 0 R (Item.80) 1580 0 R (Item.81) 1581 0 R (Item.82) 1582 0 R (Item.83) 1583 0 R] +/Limits [(Item.79) (Item.83)] >> % 2327 0 obj << -/Names [(Item.97) 1689 0 R (Item.98) 1690 0 R (Item.99) 1696 0 R (algocf.1) 2118 0 R (algocf.2) 2164 0 R (algocfline.1) 2103 0 R] -/Limits [(Item.97) (algocfline.1)] +/Names [(Item.84) 1584 0 R (Item.85) 1585 0 R (Item.86) 1586 0 R (Item.87) 1599 0 R (Item.88) 1611 0 R (Item.89) 1623 0 R] +/Limits [(Item.84) (Item.89)] >> % 2328 0 obj << -/Names [(algocfline.2) 2172 0 R (cite.2007c) 938 0 R (cite.2007d) 939 0 R (cite.BERTACCINIFILIPPONE) 1991 0 R (cite.BLACS) 914 0 R (cite.BLAS1) 897 0 R] -/Limits [(algocfline.2) (cite.BLAS1)] +/Names [(Item.9) 964 0 R (Item.90) 1624 0 R (Item.91) 1632 0 R (Item.92) 1633 0 R (Item.93) 1654 0 R (Item.94) 1655 0 R] +/Limits [(Item.9) (Item.94)] >> % 2329 0 obj << -/Names [(cite.BLAS2) 898 0 R (cite.BLAS3) 899 0 R (cite.CaFiRo:2014) 2089 0 R (cite.DesPat:11) 892 0 R (cite.DesignPatterns) 1055 0 R (cite.Filippone:2017:SMM:3034774.3017994) 2237 0 R] -/Limits [(cite.BLAS2) (cite.Filippone:2017:SMM:3034774.3017994)] +/Names [(Item.95) 1666 0 R (Item.96) 1672 0 R (Item.97) 1678 0 R (Item.98) 1684 0 R (Item.99) 1691 0 R (algocf.1) 2120 0 R] +/Limits [(Item.95) (algocf.1)] >> % 2330 0 obj << -/Names [(cite.KIVA3PSBLAS) 2231 0 R (cite.METIS) 926 0 R (cite.MPI1) 2236 0 R (cite.MRC:11) 2104 0 R (cite.OurTechRep) 2090 0 R (cite.PARA04FOREST) 2229 0 R] -/Limits [(cite.KIVA3PSBLAS) (cite.PARA04FOREST)] +/Names [(algocf.2) 2166 0 R (algocfline.1) 2105 0 R (algocfline.2) 2174 0 R (cite.2007c) 938 0 R (cite.2007d) 939 0 R (cite.BERTACCINIFILIPPONE) 1993 0 R] +/Limits [(algocf.2) (cite.BERTACCINIFILIPPONE)] >> % 2331 0 obj << -/Names [(cite.PSBLAS) 2230 0 R (cite.RouXiaXu:11) 893 0 R (cite.Sparse03) 891 0 R (cite.machiels) 894 0 R (cite.metcalf) 890 0 R (cite.sblas02) 896 0 R] -/Limits [(cite.PSBLAS) (cite.sblas02)] +/Names [(cite.BLACS) 914 0 R (cite.BLAS1) 897 0 R (cite.BLAS2) 898 0 R (cite.BLAS3) 899 0 R (cite.CaFiRo:2014) 2091 0 R (cite.DesPat:11) 892 0 R] +/Limits [(cite.BLACS) (cite.DesPat:11)] >> % 2332 0 obj << -/Names [(cite.sblas97) 895 0 R (descdata) 998 0 R (equation.4.1) 1274 0 R (equation.4.2) 1275 0 R (equation.4.3) 1276 0 R (figure.1) 908 0 R] -/Limits [(cite.sblas97) (figure.1)] +/Names [(cite.DesignPatterns) 1055 0 R (cite.Filippone:2017:SMM:3034774.3017994) 2239 0 R (cite.KIVA3PSBLAS) 2233 0 R (cite.METIS) 926 0 R (cite.MPI1) 2238 0 R (cite.MRC:11) 2106 0 R] +/Limits [(cite.DesignPatterns) (cite.MRC:11)] >> % 2333 0 obj << -/Names [(figure.2) 934 0 R (figure.3) 1377 0 R (figure.4) 1411 0 R (figure.5) 2111 0 R (figure.6) 2106 0 R (figure.7) 2151 0 R] -/Limits [(figure.2) (figure.7)] +/Names [(cite.OurTechRep) 2092 0 R (cite.PARA04FOREST) 2231 0 R (cite.PSBLAS) 2232 0 R (cite.RouXiaXu:11) 893 0 R (cite.Sparse03) 891 0 R (cite.machiels) 894 0 R] +/Limits [(cite.OurTechRep) (cite.machiels)] >> % 2334 0 obj << -/Names [(figure.8) 2163 0 R (figure.9) 2190 0 R (listing.1) 1026 0 R (listing.2) 1056 0 R (listing.3) 1096 0 R (listing.4) 1116 0 R] -/Limits [(figure.8) (listing.4)] +/Names [(cite.metcalf) 890 0 R (cite.sblas02) 896 0 R (cite.sblas97) 895 0 R (descdata) 998 0 R (equation.4.1) 1277 0 R (equation.4.2) 1278 0 R] +/Limits [(cite.metcalf) (equation.4.2)] >> % 2335 0 obj << -/Names [(listing.5) 1881 0 R (listing.6) 1882 0 R (lstlisting.-1) 1237 0 R (lstlisting.-10) 1951 0 R (lstlisting.-11) 1958 0 R (lstlisting.-12) 2039 0 R] -/Limits [(listing.5) (lstlisting.-12)] +/Names [(equation.4.3) 1279 0 R (figure.1) 908 0 R (figure.2) 934 0 R (figure.3) 1379 0 R (figure.4) 1413 0 R (figure.5) 2113 0 R] +/Limits [(equation.4.3) (figure.5)] >> % 2336 0 obj << -/Names [(lstlisting.-13) 2065 0 R (lstlisting.-14) 2123 0 R (lstlisting.-2) 1891 0 R (lstlisting.-3) 1897 0 R (lstlisting.-4) 1904 0 R (lstlisting.-5) 1910 0 R] -/Limits [(lstlisting.-13) (lstlisting.-5)] +/Names [(figure.6) 2108 0 R (figure.7) 2153 0 R (figure.8) 2165 0 R (figure.9) 2192 0 R (listing.1) 1026 0 R (listing.2) 1056 0 R] +/Limits [(figure.6) (listing.2)] >> % 2337 0 obj << -/Names [(lstlisting.-6) 1921 0 R (lstlisting.-7) 1928 0 R (lstlisting.-8) 1935 0 R (lstlisting.-9) 1944 0 R (lstnumber.-1.1) 1238 0 R (lstnumber.-1.2) 1239 0 R] -/Limits [(lstlisting.-6) (lstnumber.-1.2)] +/Names [(listing.3) 1098 0 R (listing.4) 1118 0 R (listing.5) 1883 0 R (listing.6) 1884 0 R (lstlisting.-1) 1239 0 R (lstlisting.-10) 1953 0 R] +/Limits [(listing.3) (lstlisting.-10)] >> % 2338 0 obj << -/Names [(lstnumber.-1.3) 1240 0 R (lstnumber.-1.4) 1241 0 R (lstnumber.-10.1) 1952 0 R (lstnumber.-11.1) 1959 0 R (lstnumber.-12.1) 2040 0 R (lstnumber.-12.2) 2041 0 R] -/Limits [(lstnumber.-1.3) (lstnumber.-12.2)] +/Names [(lstlisting.-11) 1960 0 R (lstlisting.-12) 2041 0 R (lstlisting.-13) 2067 0 R (lstlisting.-14) 2125 0 R (lstlisting.-2) 1893 0 R (lstlisting.-3) 1899 0 R] +/Limits [(lstlisting.-11) (lstlisting.-3)] >> % 2339 0 obj << -/Names [(lstnumber.-13.1) 2066 0 R (lstnumber.-13.2) 2067 0 R (lstnumber.-14.1) 2124 0 R (lstnumber.-14.2) 2125 0 R (lstnumber.-14.3) 2126 0 R (lstnumber.-14.4) 2127 0 R] -/Limits [(lstnumber.-13.1) (lstnumber.-14.4)] +/Names [(lstlisting.-4) 1906 0 R (lstlisting.-5) 1912 0 R (lstlisting.-6) 1923 0 R (lstlisting.-7) 1930 0 R (lstlisting.-8) 1938 0 R (lstlisting.-9) 1946 0 R] +/Limits [(lstlisting.-4) (lstlisting.-9)] >> % 2340 0 obj << -/Names [(lstnumber.-14.5) 2128 0 R (lstnumber.-14.6) 2129 0 R (lstnumber.-14.7) 2130 0 R (lstnumber.-2.1) 1892 0 R (lstnumber.-3.1) 1898 0 R (lstnumber.-4.1) 1905 0 R] -/Limits [(lstnumber.-14.5) (lstnumber.-4.1)] +/Names [(lstnumber.-1.1) 1240 0 R (lstnumber.-1.2) 1241 0 R (lstnumber.-1.3) 1242 0 R (lstnumber.-1.4) 1243 0 R (lstnumber.-10.1) 1954 0 R (lstnumber.-11.1) 1961 0 R] +/Limits [(lstnumber.-1.1) (lstnumber.-11.1)] >> % 2341 0 obj << -/Names [(lstnumber.-5.1) 1911 0 R (lstnumber.-6.1) 1922 0 R (lstnumber.-7.1) 1929 0 R (lstnumber.-8.1) 1936 0 R (lstnumber.-9.1) 1945 0 R (page.1) 671 0 R] -/Limits [(lstnumber.-5.1) (page.1)] +/Names [(lstnumber.-12.1) 2042 0 R (lstnumber.-12.2) 2043 0 R (lstnumber.-13.1) 2068 0 R (lstnumber.-13.2) 2069 0 R (lstnumber.-14.1) 2126 0 R (lstnumber.-14.2) 2127 0 R] +/Limits [(lstnumber.-12.1) (lstnumber.-14.2)] >> % 2342 0 obj << -/Names [(page.10) 1005 0 R (page.100) 1663 0 R (page.101) 1669 0 R (page.102) 1675 0 R (page.103) 1681 0 R (page.104) 1688 0 R] -/Limits [(page.10) (page.104)] +/Names [(lstnumber.-14.3) 2128 0 R (lstnumber.-14.4) 2129 0 R (lstnumber.-14.5) 2130 0 R (lstnumber.-14.6) 2131 0 R (lstnumber.-14.7) 2132 0 R (lstnumber.-2.1) 1894 0 R] +/Limits [(lstnumber.-14.3) (lstnumber.-2.1)] >> % 2343 0 obj << -/Names [(page.105) 1695 0 R (page.106) 1702 0 R (page.107) 1706 0 R (page.108) 1716 0 R (page.109) 1721 0 R (page.11) 1016 0 R] -/Limits [(page.105) (page.11)] +/Names [(lstnumber.-3.1) 1900 0 R (lstnumber.-4.1) 1907 0 R (lstnumber.-5.1) 1913 0 R (lstnumber.-6.1) 1924 0 R (lstnumber.-7.1) 1931 0 R (lstnumber.-8.1) 1939 0 R] +/Limits [(lstnumber.-3.1) (lstnumber.-8.1)] >> % 2344 0 obj << -/Names [(page.110) 1726 0 R (page.111) 1739 0 R (page.112) 1743 0 R (page.113) 1749 0 R (page.114) 1755 0 R (page.115) 1762 0 R] -/Limits [(page.110) (page.115)] +/Names [(lstnumber.-9.1) 1947 0 R (page.1) 671 0 R (page.10) 1005 0 R (page.100) 1665 0 R (page.101) 1671 0 R (page.102) 1677 0 R] +/Limits [(lstnumber.-9.1) (page.102)] >> % 2345 0 obj << -/Names [(page.116) 1767 0 R (page.117) 1771 0 R (page.118) 1775 0 R (page.119) 1779 0 R (page.12) 1032 0 R (page.120) 1783 0 R] -/Limits [(page.116) (page.120)] +/Names [(page.103) 1683 0 R (page.104) 1690 0 R (page.105) 1697 0 R (page.106) 1704 0 R (page.107) 1708 0 R (page.108) 1719 0 R] +/Limits [(page.103) (page.108)] >> % 2346 0 obj << -/Names [(page.121) 1787 0 R (page.122) 1796 0 R (page.123) 1800 0 R (page.124) 1807 0 R (page.125) 1811 0 R (page.126) 1818 0 R] -/Limits [(page.121) (page.126)] +/Names [(page.109) 1723 0 R (page.11) 1016 0 R (page.110) 1728 0 R (page.111) 1741 0 R (page.112) 1745 0 R (page.113) 1751 0 R] +/Limits [(page.109) (page.113)] >> % 2347 0 obj << -/Names [(page.127) 1822 0 R (page.128) 1831 0 R (page.129) 1835 0 R (page.13) 1036 0 R (page.130) 1842 0 R (page.131) 1846 0 R] -/Limits [(page.127) (page.131)] +/Names [(page.114) 1757 0 R (page.115) 1764 0 R (page.116) 1769 0 R (page.117) 1773 0 R (page.118) 1777 0 R (page.119) 1781 0 R] +/Limits [(page.114) (page.119)] >> % 2348 0 obj << -/Names [(page.132) 1853 0 R (page.133) 1857 0 R (page.134) 1868 0 R (page.135) 1873 0 R (page.136) 1880 0 R (page.137) 1886 0 R] -/Limits [(page.132) (page.137)] +/Names [(page.12) 1032 0 R (page.120) 1785 0 R (page.121) 1789 0 R (page.122) 1798 0 R (page.123) 1802 0 R (page.124) 1809 0 R] +/Limits [(page.12) (page.124)] >> % 2349 0 obj << -/Names [(page.138) 1890 0 R (page.139) 1896 0 R (page.14) 1041 0 R (page.140) 1903 0 R (page.141) 1909 0 R (page.142) 1915 0 R] -/Limits [(page.138) (page.142)] +/Names [(page.125) 1813 0 R (page.126) 1820 0 R (page.127) 1825 0 R (page.128) 1833 0 R (page.129) 1837 0 R (page.13) 1036 0 R] +/Limits [(page.125) (page.13)] >> % 2350 0 obj << -/Names [(page.143) 1920 0 R (page.144) 1927 0 R (page.145) 1934 0 R (page.146) 1943 0 R (page.147) 1950 0 R (page.148) 1957 0 R] -/Limits [(page.143) (page.148)] +/Names [(page.130) 1844 0 R (page.131) 1848 0 R (page.132) 1855 0 R (page.133) 1859 0 R (page.134) 1870 0 R (page.135) 1875 0 R] +/Limits [(page.130) (page.135)] >> % 2351 0 obj << -/Names [(page.149) 1963 0 R (page.15) 1046 0 R (page.150) 1967 0 R (page.151) 1974 0 R (page.152) 1986 0 R (page.153) 1990 0 R] -/Limits [(page.149) (page.153)] +/Names [(page.136) 1882 0 R (page.137) 1888 0 R (page.138) 1892 0 R (page.139) 1898 0 R (page.14) 1041 0 R (page.140) 1905 0 R] +/Limits [(page.136) (page.140)] >> % 2352 0 obj << -/Names [(page.154) 1999 0 R (page.155) 2003 0 R (page.156) 2011 0 R (page.157) 2016 0 R (page.158) 2021 0 R (page.159) 2027 0 R] -/Limits [(page.154) (page.159)] +/Names [(page.141) 1911 0 R (page.142) 1917 0 R (page.143) 1922 0 R (page.144) 1929 0 R (page.145) 1937 0 R (page.146) 1945 0 R] +/Limits [(page.141) (page.146)] >> % 2353 0 obj << -/Names [(page.16) 1053 0 R (page.160) 2031 0 R (page.161) 2038 0 R (page.162) 2050 0 R (page.163) 2055 0 R (page.164) 2064 0 R] -/Limits [(page.16) (page.164)] +/Names [(page.147) 1952 0 R (page.148) 1959 0 R (page.149) 1965 0 R (page.15) 1046 0 R (page.150) 1969 0 R (page.151) 1976 0 R] +/Limits [(page.147) (page.151)] >> % 2354 0 obj << -/Names [(page.165) 2073 0 R (page.166) 2077 0 R (page.167) 2087 0 R (page.168) 2101 0 R (page.169) 2110 0 R (page.17) 1060 0 R] -/Limits [(page.165) (page.17)] +/Names [(page.152) 1988 0 R (page.153) 1992 0 R (page.154) 2001 0 R (page.155) 2005 0 R (page.156) 2013 0 R (page.157) 2018 0 R] +/Limits [(page.152) (page.157)] >> % 2355 0 obj << -/Names [(page.170) 2122 0 R (page.171) 2150 0 R (page.172) 2171 0 R (page.173) 2189 0 R (page.174) 2205 0 R (page.175) 2209 0 R] -/Limits [(page.170) (page.175)] +/Names [(page.158) 2023 0 R (page.159) 2029 0 R (page.16) 1053 0 R (page.160) 2033 0 R (page.161) 2040 0 R (page.162) 2052 0 R] +/Limits [(page.158) (page.162)] >> % 2356 0 obj << -/Names [(page.176) 2214 0 R (page.177) 2219 0 R (page.178) 2223 0 R (page.179) 2227 0 R (page.18) 1065 0 R (page.180) 2235 0 R] -/Limits [(page.176) (page.180)] +/Names [(page.163) 2057 0 R (page.164) 2066 0 R (page.165) 2075 0 R (page.166) 2079 0 R (page.167) 2089 0 R (page.168) 2103 0 R] +/Limits [(page.163) (page.168)] >> % 2357 0 obj << -/Names [(page.19) 1071 0 R (page.2) 681 0 R (page.20) 1076 0 R (page.21) 1080 0 R (page.22) 1084 0 R (page.23) 1088 0 R] -/Limits [(page.19) (page.23)] +/Names [(page.169) 2112 0 R (page.17) 1060 0 R (page.170) 2124 0 R (page.171) 2152 0 R (page.172) 2173 0 R (page.173) 2191 0 R] +/Limits [(page.169) (page.173)] >> % 2358 0 obj << -/Names [(page.24) 1094 0 R (page.25) 1100 0 R (page.26) 1107 0 R (page.27) 1114 0 R (page.28) 1120 0 R (page.29) 1124 0 R] -/Limits [(page.24) (page.29)] +/Names [(page.174) 2207 0 R (page.175) 2211 0 R (page.176) 2216 0 R (page.177) 2221 0 R (page.178) 2225 0 R (page.179) 2229 0 R] +/Limits [(page.174) (page.179)] >> % 2359 0 obj << -/Names [(page.3) 920 0 R (page.30) 1135 0 R (page.31) 1142 0 R (page.32) 1152 0 R (page.33) 1158 0 R (page.34) 1170 0 R] -/Limits [(page.3) (page.34)] +/Names [(page.18) 1065 0 R (page.180) 2237 0 R (page.19) 1071 0 R (page.2) 681 0 R (page.20) 1076 0 R (page.21) 1080 0 R] +/Limits [(page.18) (page.21)] >> % 2360 0 obj << -/Names [(page.35) 1175 0 R (page.36) 1182 0 R (page.37) 1187 0 R (page.38) 1196 0 R (page.39) 1204 0 R (page.4) 933 0 R] -/Limits [(page.35) (page.4)] +/Names [(page.22) 1086 0 R (page.23) 1090 0 R (page.24) 1096 0 R (page.25) 1102 0 R (page.26) 1109 0 R (page.27) 1116 0 R] +/Limits [(page.22) (page.27)] >> % 2361 0 obj << -/Names [(page.40) 1209 0 R (page.41) 1217 0 R (page.42) 1222 0 R (page.43) 1229 0 R (page.44) 1235 0 R (page.45) 1248 0 R] -/Limits [(page.40) (page.45)] +/Names [(page.28) 1122 0 R (page.29) 1126 0 R (page.3) 920 0 R (page.30) 1137 0 R (page.31) 1144 0 R (page.32) 1154 0 R] +/Limits [(page.28) (page.32)] >> % 2362 0 obj << -/Names [(page.46) 1255 0 R (page.47) 1262 0 R (page.48) 1273 0 R (page.49) 1289 0 R (page.5) 945 0 R (page.50) 1296 0 R] -/Limits [(page.46) (page.50)] +/Names [(page.33) 1160 0 R (page.34) 1172 0 R (page.35) 1177 0 R (page.36) 1184 0 R (page.37) 1189 0 R (page.38) 1198 0 R] +/Limits [(page.33) (page.38)] >> % 2363 0 obj << -/Names [(page.51) 1307 0 R (page.52) 1313 0 R (page.53) 1324 0 R (page.54) 1329 0 R (page.55) 1340 0 R (page.56) 1346 0 R] -/Limits [(page.51) (page.56)] +/Names [(page.39) 1206 0 R (page.4) 933 0 R (page.40) 1211 0 R (page.41) 1219 0 R (page.42) 1224 0 R (page.43) 1231 0 R] +/Limits [(page.39) (page.43)] >> % 2364 0 obj << -/Names [(page.57) 1355 0 R (page.58) 1361 0 R (page.59) 1369 0 R (page.6) 950 0 R (page.60) 1376 0 R (page.61) 1390 0 R] -/Limits [(page.57) (page.61)] +/Names [(page.44) 1237 0 R (page.45) 1250 0 R (page.46) 1257 0 R (page.47) 1264 0 R (page.48) 1276 0 R (page.49) 1291 0 R] +/Limits [(page.44) (page.49)] >> % 2365 0 obj << -/Names [(page.62) 1398 0 R (page.63) 1407 0 R (page.64) 1415 0 R (page.65) 1419 0 R (page.66) 1434 0 R (page.67) 1439 0 R] -/Limits [(page.62) (page.67)] +/Names [(page.5) 945 0 R (page.50) 1298 0 R (page.51) 1309 0 R (page.52) 1315 0 R (page.53) 1326 0 R (page.54) 1331 0 R] +/Limits [(page.5) (page.54)] >> % 2366 0 obj << -/Names [(page.68) 1446 0 R (page.69) 1453 0 R (page.7) 963 0 R (page.70) 1457 0 R (page.71) 1462 0 R (page.72) 1468 0 R] -/Limits [(page.68) (page.72)] +/Names [(page.55) 1342 0 R (page.56) 1348 0 R (page.57) 1357 0 R (page.58) 1363 0 R (page.59) 1371 0 R (page.6) 950 0 R] +/Limits [(page.55) (page.6)] >> % 2367 0 obj << -/Names [(page.73) 1474 0 R (page.74) 1485 0 R (page.75) 1490 0 R (page.76) 1499 0 R (page.77) 1507 0 R (page.78) 1512 0 R] -/Limits [(page.73) (page.78)] +/Names [(page.60) 1378 0 R (page.61) 1392 0 R (page.62) 1400 0 R (page.63) 1409 0 R (page.64) 1417 0 R (page.65) 1421 0 R] +/Limits [(page.60) (page.65)] >> % 2368 0 obj << -/Names [(page.79) 1518 0 R (page.8) 986 0 R (page.80) 1523 0 R (page.81) 1531 0 R (page.82) 1536 0 R (page.83) 1544 0 R] -/Limits [(page.79) (page.83)] +/Names [(page.66) 1436 0 R (page.67) 1441 0 R (page.68) 1448 0 R (page.69) 1455 0 R (page.7) 963 0 R (page.70) 1459 0 R] +/Limits [(page.66) (page.70)] >> endstream endobj -2431 0 obj +2433 0 obj << /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20241119121026+01'00') -/ModDate (D:20241119121026+01'00') +/CreationDate (D:20241119121557+01'00') +/ModDate (D:20241119121557+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) >> @@ -37967,369 +37973,379 @@ endobj 2370 0 obj << /Type /ObjStm -/N 61 -/First 607 -/Length 11264 ->> -stream -2369 0 2371 172 2372 341 2373 510 2374 690 2375 888 2376 1086 2377 1278 2378 1461 2379 1642 -2380 1848 2381 2078 2382 2303 2383 2522 2384 2749 2385 2975 2386 3197 2387 3422 2388 3652 2389 3881 -2390 4109 2391 4331 2392 4559 2393 4785 2394 5007 2395 5229 2396 5470 2397 5732 2398 5988 2399 6254 -2400 6524 2401 6786 2402 7048 2403 7258 2404 7438 2405 7615 2406 7787 2407 7897 2408 8011 2409 8123 -2410 8234 2411 8345 2412 8461 2413 8584 2414 8702 2415 8815 2416 8928 2417 9040 2418 9151 2419 9266 -2420 9389 2421 9516 2422 9642 2423 9773 2424 9897 2425 9970 2426 10090 2427 10212 2428 10325 2429 10409 -2430 10444 +/N 63 +/First 631 +/Length 11675 +>> +stream +2369 0 2371 172 2372 342 2373 514 2374 684 2375 856 2376 1026 2377 1222 2378 1419 2379 1615 +2380 1802 2381 1984 2382 2178 2383 2408 2384 2638 2385 2855 2386 3080 2387 3308 2388 3530 2389 3752 +2390 3982 2391 4211 2392 4441 2393 4665 2394 4891 2395 5119 2396 5341 2397 5563 2398 5794 2399 6056 +2400 6314 2401 6576 2402 6846 2403 7111 2404 7373 2405 7603 2406 7783 2407 7962 2408 8136 2409 8284 +2410 8398 2411 8510 2412 8621 2413 8732 2414 8848 2415 8970 2416 9089 2417 9202 2418 9315 2419 9427 +2420 9538 2421 9653 2422 9776 2423 9902 2424 10028 2425 10159 2426 10284 2427 10358 2428 10477 2429 10599 +2430 10712 2431 10796 2432 10831 % 2369 0 obj << -/Names [(page.84) 1550 0 R (page.85) 1559 0 R (page.86) 1573 0 R (page.87) 1577 0 R (page.88) 1590 0 R (page.89) 1596 0 R] -/Limits [(page.84) (page.89)] +/Names [(page.71) 1464 0 R (page.72) 1470 0 R (page.73) 1476 0 R (page.74) 1487 0 R (page.75) 1492 0 R (page.76) 1502 0 R] +/Limits [(page.71) (page.76)] >> % 2371 0 obj << -/Names [(page.9) 997 0 R (page.90) 1603 0 R (page.91) 1608 0 R (page.92) 1616 0 R (page.93) 1620 0 R (page.94) 1629 0 R] -/Limits [(page.9) (page.94)] +/Names [(page.77) 1509 0 R (page.78) 1514 0 R (page.79) 1520 0 R (page.8) 986 0 R (page.80) 1525 0 R (page.81) 1533 0 R] +/Limits [(page.77) (page.81)] >> % 2372 0 obj << -/Names [(page.95) 1637 0 R (page.96) 1641 0 R (page.97) 1646 0 R (page.98) 1651 0 R (page.99) 1658 0 R (page.i) 728 0 R] -/Limits [(page.95) (page.i)] +/Names [(page.82) 1538 0 R (page.83) 1546 0 R (page.84) 1552 0 R (page.85) 1561 0 R (page.86) 1575 0 R (page.87) 1579 0 R] +/Limits [(page.82) (page.87)] >> % 2373 0 obj << -/Names [(page.ii) 784 0 R (page.iii) 831 0 R (page.iv) 872 0 R (precdata) 1115 0 R (section*.1) 729 0 R (section*.10) 626 0 R] -/Limits [(page.ii) (section*.10)] +/Names [(page.88) 1592 0 R (page.89) 1598 0 R (page.9) 997 0 R (page.90) 1605 0 R (page.91) 1610 0 R (page.92) 1618 0 R] +/Limits [(page.88) (page.92)] >> % 2374 0 obj << -/Names [(section*.11) 630 0 R (section*.12) 634 0 R (section*.13) 638 0 R (section*.14) 642 0 R (section*.15) 646 0 R (section*.16) 650 0 R] -/Limits [(section*.11) (section*.16)] +/Names [(page.93) 1622 0 R (page.94) 1631 0 R (page.95) 1639 0 R (page.96) 1643 0 R (page.97) 1648 0 R (page.98) 1653 0 R] +/Limits [(page.93) (page.98)] >> % 2375 0 obj << -/Names [(section*.17) 654 0 R (section*.18) 658 0 R (section*.19) 662 0 R (section*.2) 2102 0 R (section*.20) 2228 0 R (section*.3) 2131 0 R] -/Limits [(section*.17) (section*.3)] +/Names [(page.99) 1660 0 R (page.i) 728 0 R (page.ii) 784 0 R (page.iii) 831 0 R (page.iv) 872 0 R (precdata) 1117 0 R] +/Limits [(page.99) (precdata)] >> % 2376 0 obj << -/Names [(section*.4) 2152 0 R (section*.5) 2173 0 R (section*.6) 610 0 R (section*.7) 614 0 R (section*.8) 618 0 R (section*.9) 622 0 R] -/Limits [(section*.4) (section*.9)] +/Names [(section*.1) 729 0 R (section*.10) 626 0 R (section*.11) 630 0 R (section*.12) 634 0 R (section*.13) 638 0 R (section*.14) 642 0 R] +/Limits [(section*.1) (section*.14)] >> % 2377 0 obj << -/Names [(section.1) 7 0 R (section.10) 541 0 R (section.11) 573 0 R (section.12) 585 0 R (section.13) 606 0 R (section.2) 11 0 R] -/Limits [(section.1) (section.2)] +/Names [(section*.15) 646 0 R (section*.16) 650 0 R (section*.17) 654 0 R (section*.18) 658 0 R (section*.19) 662 0 R (section*.2) 2104 0 R] +/Limits [(section*.15) (section*.2)] >> % 2378 0 obj << -/Names [(section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R (section.7) 421 0 R (section.8) 493 0 R] -/Limits [(section.3) (section.8)] +/Names [(section*.20) 2230 0 R (section*.3) 2133 0 R (section*.4) 2154 0 R (section*.5) 2175 0 R (section*.6) 610 0 R (section*.7) 614 0 R] +/Limits [(section*.20) (section*.7)] >> % 2379 0 obj << -/Names [(section.9) 513 0 R (spbasedata) 1061 0 R (spdata) 1054 0 R (subsection.10.1) 545 0 R (subsection.10.2) 549 0 R (subsection.10.3) 553 0 R] -/Limits [(section.9) (subsection.10.3)] +/Names [(section*.8) 618 0 R (section*.9) 622 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 573 0 R (section.12) 585 0 R] +/Limits [(section*.8) (section.12)] >> % 2380 0 obj << -/Names [(subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.10.7) 569 0 R (subsection.11.1) 577 0 R (subsection.11.2) 581 0 R] -/Limits [(subsection.10.4) (subsection.11.2)] +/Names [(section.13) 606 0 R (section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R] +/Limits [(section.13) (section.6)] >> % 2381 0 obj << -/Names [(subsection.12.1) 589 0 R (subsection.12.2) 593 0 R (subsection.12.3) 597 0 R (subsection.12.4) 601 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] -/Limits [(subsection.12.1) (subsection.2.2)] +/Names [(section.7) 421 0 R (section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1061 0 R (spdata) 1054 0 R (subsection.10.1) 545 0 R] +/Limits [(section.7) (subsection.10.1)] >> % 2382 0 obj << -/Names [(subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R (subsection.3.4) 212 0 R] -/Limits [(subsection.2.3) (subsection.3.4)] +/Names [(subsection.10.2) 549 0 R (subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.10.7) 569 0 R] +/Limits [(subsection.10.2) (subsection.10.7)] >> % 2383 0 obj << -/Names [(subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R (subsection.4.13) 272 0 R] -/Limits [(subsection.3.5) (subsection.4.13)] +/Names [(subsection.11.1) 577 0 R (subsection.11.2) 581 0 R (subsection.12.1) 589 0 R (subsection.12.2) 593 0 R (subsection.12.3) 597 0 R (subsection.12.4) 601 0 R] +/Limits [(subsection.11.1) (subsection.12.4)] >> % 2384 0 obj << -/Names [(subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R (subsection.4.4) 236 0 R] -/Limits [(subsection.4.14) (subsection.4.4)] +/Names [(subsection.2.1) 15 0 R (subsection.2.2) 19 0 R (subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R] +/Limits [(subsection.2.1) (subsection.3.2)] >> % 2385 0 obj << -/Names [(subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R (subsection.5.1) 292 0 R] -/Limits [(subsection.4.5) (subsection.5.1)] +/Names [(subsection.3.3) 183 0 R (subsection.3.4) 212 0 R (subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R] +/Limits [(subsection.3.3) (subsection.4.11)] >> % 2386 0 obj << -/Names [(subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R (subsection.6.11) 352 0 R] -/Limits [(subsection.5.2) (subsection.6.11)] +/Names [(subsection.4.12) 268 0 R (subsection.4.13) 272 0 R (subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R] +/Limits [(subsection.4.12) (subsection.4.2)] >> % 2387 0 obj << -/Names [(subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R (subsection.6.17) 376 0 R] -/Limits [(subsection.6.12) (subsection.6.17)] +/Names [(subsection.4.3) 232 0 R (subsection.4.4) 236 0 R (subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R] +/Limits [(subsection.4.3) (subsection.4.8)] >> % 2388 0 obj << -/Names [(subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R (subsection.6.22) 396 0 R] -/Limits [(subsection.6.18) (subsection.6.22)] +/Names [(subsection.4.9) 256 0 R (subsection.5.1) 292 0 R (subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R] +/Limits [(subsection.4.9) (subsection.6.1)] >> % 2389 0 obj << -/Names [(subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R (subsection.6.3) 320 0 R] -/Limits [(subsection.6.23) (subsection.6.3)] +/Names [(subsection.6.10) 348 0 R (subsection.6.11) 352 0 R (subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R] +/Limits [(subsection.6.10) (subsection.6.15)] >> % 2390 0 obj << -/Names [(subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R (subsection.6.9) 344 0 R] -/Limits [(subsection.6.4) (subsection.6.9)] +/Names [(subsection.6.16) 372 0 R (subsection.6.17) 376 0 R (subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R] +/Limits [(subsection.6.16) (subsection.6.20)] >> % 2391 0 obj << -/Names [(subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R (subsection.7.14) 477 0 R] -/Limits [(subsection.7.1) (subsection.7.14)] +/Names [(subsection.6.21) 392 0 R (subsection.6.22) 396 0 R (subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R] +/Limits [(subsection.6.21) (subsection.6.26)] >> % 2392 0 obj << -/Names [(subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R (subsection.7.4) 437 0 R] -/Limits [(subsection.7.15) (subsection.7.4)] +/Names [(subsection.6.27) 417 0 R (subsection.6.3) 320 0 R (subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R] +/Limits [(subsection.6.27) (subsection.6.7)] >> % 2393 0 obj << -/Names [(subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R (subsection.8.1) 497 0 R] -/Limits [(subsection.7.5) (subsection.8.1)] +/Names [(subsection.6.8) 340 0 R (subsection.6.9) 344 0 R (subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R] +/Limits [(subsection.6.8) (subsection.7.12)] >> % 2394 0 obj << -/Names [(subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R (subsection.9.3) 525 0 R] -/Limits [(subsection.8.2) (subsection.9.3)] +/Names [(subsection.7.13) 473 0 R (subsection.7.14) 477 0 R (subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R] +/Limits [(subsection.7.13) (subsection.7.2)] >> % 2395 0 obj << -/Names [(subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R] -/Limits [(subsection.9.4) (subsubsection.3.1.10)] +/Names [(subsection.7.3) 433 0 R (subsection.7.4) 437 0 R (subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R] +/Limits [(subsection.7.3) (subsection.7.8)] >> % 2396 0 obj << -/Names [(subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R] -/Limits [(subsubsection.3.1.11) (subsubsection.3.1.2)] +/Names [(subsection.7.9) 457 0 R (subsection.8.1) 497 0 R (subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R] +/Limits [(subsection.7.9) (subsection.9.1)] >> % 2397 0 obj << -/Names [(subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R] -/Limits [(subsubsection.3.1.3) (subsubsection.3.1.8)] +/Names [(subsection.9.2) 521 0 R (subsection.9.3) 525 0 R (subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R] +/Limits [(subsection.9.2) (subsubsection.2.3.1)] >> % 2398 0 obj << -/Names [(subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R] -/Limits [(subsubsection.3.1.9) (subsubsection.3.2.13)] +/Names [(subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R (subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R] +/Limits [(subsubsection.3.1.1) (subsubsection.3.1.14)] >> % 2399 0 obj << -/Names [(subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R] -/Limits [(subsubsection.3.2.14) (subsubsection.3.2.19)] +/Names [(subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R (subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R] +/Limits [(subsubsection.3.1.15) (subsubsection.3.1.6)] >> % 2400 0 obj << -/Names [(subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R] -/Limits [(subsubsection.3.2.2) (subsubsection.3.2.7)] +/Names [(subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R (subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R] +/Limits [(subsubsection.3.1.7) (subsubsection.3.2.11)] >> % 2401 0 obj << -/Names [(subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R] -/Limits [(subsubsection.3.2.8) (subsubsection.3.3.4)] +/Names [(subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R (subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R] +/Limits [(subsubsection.3.2.12) (subsubsection.3.2.17)] >> % 2402 0 obj << -/Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1108 0 R (table.10) 1256 0 R (table.11) 1264 0 R (table.12) 1277 0 R] -/Limits [(subsubsection.3.3.5) (table.12)] +/Names [(subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R (subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R] +/Limits [(subsubsection.3.2.18) (subsubsection.3.2.5)] >> % 2403 0 obj << -/Names [(table.13) 1297 0 R (table.14) 1325 0 R (table.15) 1341 0 R (table.16) 1356 0 R (table.17) 1370 0 R (table.18) 1399 0 R] -/Limits [(table.13) (table.18)] +/Names [(subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R (subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R] +/Limits [(subsubsection.3.2.6) (subsubsection.3.3.2)] >> % 2404 0 obj << -/Names [(table.19) 1435 0 R (table.2) 1153 0 R (table.20) 1447 0 R (table.21) 1977 0 R (table.22) 2105 0 R (table.3) 1171 0 R] -/Limits [(table.19) (table.3)] +/Names [(subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R (subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1110 0 R (table.10) 1258 0 R] +/Limits [(subsubsection.3.3.3) (table.10)] >> % 2405 0 obj << -/Names [(table.4) 1183 0 R (table.5) 1197 0 R (table.6) 1205 0 R (table.7) 1218 0 R (table.8) 1230 0 R (table.9) 1249 0 R] -/Limits [(table.4) (table.9)] +/Names [(table.11) 1266 0 R (table.12) 1280 0 R (table.13) 1299 0 R (table.14) 1327 0 R (table.15) 1343 0 R (table.16) 1358 0 R] +/Limits [(table.11) (table.16)] >> % 2406 0 obj << -/Names [(title.0) 3 0 R (vbasedata) 1042 0 R (vdata) 1095 0 R] -/Limits [(title.0) (vdata)] +/Names [(table.17) 1372 0 R (table.18) 1401 0 R (table.19) 1437 0 R (table.2) 1155 0 R (table.20) 1449 0 R (table.21) 1979 0 R] +/Limits [(table.17) (table.21)] >> % 2407 0 obj << -/Kids [2302 0 R 2303 0 R 2304 0 R 2305 0 R 2306 0 R 2307 0 R] -/Limits [(Doc-Start) (Item.125)] +/Names [(table.22) 2107 0 R (table.3) 1173 0 R (table.4) 1185 0 R (table.5) 1199 0 R (table.6) 1207 0 R (table.7) 1220 0 R] +/Limits [(table.22) (table.7)] >> % 2408 0 obj << -/Kids [2308 0 R 2309 0 R 2310 0 R 2311 0 R 2312 0 R 2313 0 R] -/Limits [(Item.126) (Item.25)] +/Names [(table.8) 1232 0 R (table.9) 1251 0 R (title.0) 3 0 R (vbasedata) 1042 0 R (vdata) 1097 0 R] +/Limits [(table.8) (vdata)] >> % 2409 0 obj << -/Kids [2314 0 R 2315 0 R 2316 0 R 2317 0 R 2318 0 R 2319 0 R] -/Limits [(Item.26) (Item.58)] +/Kids [2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R] +/Limits [(Doc-Start) (Item.125)] >> % 2410 0 obj << -/Kids [2320 0 R 2321 0 R 2322 0 R 2323 0 R 2324 0 R 2325 0 R] -/Limits [(Item.59) (Item.90)] +/Kids [2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R] +/Limits [(Item.126) (Item.23)] >> % 2411 0 obj << -/Kids [2326 0 R 2327 0 R 2328 0 R 2329 0 R 2330 0 R 2331 0 R] -/Limits [(Item.91) (cite.sblas02)] +/Kids [2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R] +/Limits [(Item.24) (Item.56)] >> % 2412 0 obj << -/Kids [2332 0 R 2333 0 R 2334 0 R 2335 0 R 2336 0 R 2337 0 R] -/Limits [(cite.sblas97) (lstnumber.-1.2)] +/Kids [2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R] +/Limits [(Item.57) (Item.89)] >> % 2413 0 obj << -/Kids [2338 0 R 2339 0 R 2340 0 R 2341 0 R 2342 0 R 2343 0 R] -/Limits [(lstnumber.-1.3) (page.11)] +/Kids [2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R] +/Limits [(Item.9) (cite.machiels)] >> % 2414 0 obj << -/Kids [2344 0 R 2345 0 R 2346 0 R 2347 0 R 2348 0 R 2349 0 R] -/Limits [(page.110) (page.142)] +/Kids [2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R] +/Limits [(cite.metcalf) (lstlisting.-9)] >> % 2415 0 obj << -/Kids [2350 0 R 2351 0 R 2352 0 R 2353 0 R 2354 0 R 2355 0 R] -/Limits [(page.143) (page.175)] +/Kids [2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R] +/Limits [(lstnumber.-1.1) (page.108)] >> % 2416 0 obj << -/Kids [2356 0 R 2357 0 R 2358 0 R 2359 0 R 2360 0 R 2361 0 R] -/Limits [(page.176) (page.45)] +/Kids [2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R] +/Limits [(page.109) (page.140)] >> % 2417 0 obj << -/Kids [2362 0 R 2363 0 R 2364 0 R 2365 0 R 2366 0 R 2367 0 R] -/Limits [(page.46) (page.78)] +/Kids [2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R] +/Limits [(page.141) (page.173)] >> % 2418 0 obj << -/Kids [2368 0 R 2369 0 R 2371 0 R 2372 0 R 2373 0 R 2374 0 R] -/Limits [(page.79) (section*.16)] +/Kids [2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R] +/Limits [(page.174) (page.43)] >> % 2419 0 obj << -/Kids [2375 0 R 2376 0 R 2377 0 R 2378 0 R 2379 0 R 2380 0 R] -/Limits [(section*.17) (subsection.11.2)] +/Kids [2364 0 R 2365 0 R 2366 0 R 2367 0 R 2368 0 R 2369 0 R] +/Limits [(page.44) (page.76)] >> % 2420 0 obj << -/Kids [2381 0 R 2382 0 R 2383 0 R 2384 0 R 2385 0 R 2386 0 R] -/Limits [(subsection.12.1) (subsection.6.11)] +/Kids [2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R] +/Limits [(page.77) (section*.14)] >> % 2421 0 obj << -/Kids [2387 0 R 2388 0 R 2389 0 R 2390 0 R 2391 0 R 2392 0 R] -/Limits [(subsection.6.12) (subsection.7.4)] +/Kids [2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R] +/Limits [(section*.15) (subsection.10.7)] >> % 2422 0 obj << -/Kids [2393 0 R 2394 0 R 2395 0 R 2396 0 R 2397 0 R 2398 0 R] -/Limits [(subsection.7.5) (subsubsection.3.2.13)] +/Kids [2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R] +/Limits [(subsection.11.1) (subsection.6.1)] >> % 2423 0 obj << -/Kids [2399 0 R 2400 0 R 2401 0 R 2402 0 R 2403 0 R 2404 0 R] -/Limits [(subsubsection.3.2.14) (table.3)] +/Kids [2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R] +/Limits [(subsection.6.10) (subsection.7.2)] >> % 2424 0 obj << -/Kids [2405 0 R 2406 0 R] -/Limits [(table.4) (vdata)] +/Kids [2395 0 R 2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R] +/Limits [(subsection.7.3) (subsubsection.3.2.11)] >> % 2425 0 obj << -/Kids [2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2412 0 R] -/Limits [(Doc-Start) (lstnumber.-1.2)] +/Kids [2401 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R] +/Limits [(subsubsection.3.2.12) (table.21)] >> % 2426 0 obj << -/Kids [2413 0 R 2414 0 R 2415 0 R 2416 0 R 2417 0 R 2418 0 R] -/Limits [(lstnumber.-1.3) (section*.16)] +/Kids [2407 0 R 2408 0 R] +/Limits [(table.22) (vdata)] >> % 2427 0 obj << -/Kids [2419 0 R 2420 0 R 2421 0 R 2422 0 R 2423 0 R 2424 0 R] -/Limits [(section*.17) (vdata)] +/Kids [2409 0 R 2410 0 R 2411 0 R 2412 0 R 2413 0 R 2414 0 R] +/Limits [(Doc-Start) (lstlisting.-9)] >> % 2428 0 obj << -/Kids [2425 0 R 2426 0 R 2427 0 R] -/Limits [(Doc-Start) (vdata)] +/Kids [2415 0 R 2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R] +/Limits [(lstnumber.-1.1) (section*.14)] >> % 2429 0 obj << -/Dests 2428 0 R +/Kids [2421 0 R 2422 0 R 2423 0 R 2424 0 R 2425 0 R 2426 0 R] +/Limits [(section*.15) (vdata)] >> % 2430 0 obj << +/Kids [2427 0 R 2428 0 R 2429 0 R] +/Limits [(Doc-Start) (vdata)] +>> +% 2431 0 obj +<< +/Dests 2430 0 R +>> +% 2432 0 obj +<< /Type /Catalog -/Pages 2298 0 R -/Outlines 2299 0 R -/Names 2429 0 R +/Pages 2300 0 R +/Outlines 2301 0 R +/Names 2431 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels<>2<>6<>]>> /OpenAction 665 0 R >> endstream endobj -2432 0 obj +2434 0 obj << /Type /XRef -/Index [0 2433] -/Size 2433 +/Index [0 2435] +/Size 2435 /W [1 3 1] -/Root 2430 0 R -/Info 2431 0 R -/ID [<6636EFB050A1E0237E3C2577A823D658> <6636EFB050A1E0237E3C2577A823D658>] -/Length 12165 ->> -stream -ÿ]#ý k'ýk1ýk9ýkEý  -kNý  Õ ý ÕýÕýÕýÕ8ýÕ9ýÕ:ýÕ;ýÕ?ýÕ@ý ÕAý!"ÕEý#$ÕFý%&ÕHý '(ÕIý )*ÕMý +,ÕNý --.ÕOý /0ÕVý12ÕWý34Õ^ý56Õ_ý78Õcý9:+ý;<+ý=>+ý?@+ýAB+ücCD+ übEF+ üaGH+ü`IJ+ü_KL+ü^MN+ü]OP+ü\QR+ü[ST+"üZUV+#üYWX+$üXYZ+%üW[\++üV]^+,üU_`+-üTab+3üScË?%+8üRËË+9üQËË+:üPËË+AüOËË+EüNË Ë -+OüMË Ë +_üLË Ëˆ üKËˈüJËˈ"üIËˈ*üHËˈ6üGËˈAüFËˈRüEËˈYüDËˈ`üCËË þüBË!Ë"þüAË#Ë$þ4ü@Ë%Ë&þAü?Ë'Ë(þPü>Ë)Ë*þVü=Ë+Ë,þ]ü<Ë-Ë.gü;Ë/Ë0g.ü:Ë1Ë2g7ü9Ë3Ë4gBü8Ë5Ë6gCü7Ë7Ë8gZü6Ë9Ë:Ýü5Ë;Ë<Ý -ü4Ë=Ë>Ýü3Ë?Ë@Ýü2ËAËBÝ ü1ËCËDÝ+ü0ËEËFÝFü/ËGËHÝVü.ËIËJÝ\ü-ËKËLÝcü,ËMËND ü+ËOËPDü*ËQËRDü)ËSËTD!ü(ËUËVD&ü'ËWËXD0ü&ËYËZD5ü%Ë[Ë\D;ü$Ë]Ë^DAü#Ë_Ë`DGü"ËaËbDMü!Ëc”}ƒDTü ””D[ü””µü””µü””µü” ” -µü” ” µ"ü” ”µ(ü””µ/ü””µ3ü””µ7ü””µ;ü””µ?ü””µCü””µMü””µWü”” µaü”!”"#ü”#”$#ü”%”&#ü ”'”(#'ü ”)”*#,ü ”+”,#3ü -”-”.#<ü ”/”0#Bü”1”2#Hü”3”4#Nü”5”6#Tü”7”8#Yü”9”:#`ü”;”<‘ü”=”>‘ -ü”?”@‘ü”A”B‘Ëc”C”D‘!Ëb”E”F‘(Ëa”G”H‘1Ë`”I”J‘>Ë_”K”L‘IË^”M”N‘NË]”O”P‘RË\”Q”R‘XË[”S”T‘\ËZ”U”V‘bËY”W”XûËX”Y”Zû+ËW”[”\û,ËV”]”^û3ËU”_”`û4ËT”a”buËS”c]%u#ËR]]u$ËQ]]u&ËP]]u*ËO]]u+ËN] ] -u,ËM] ] u-ËL] ]u.ËK]]u/ËJ]]u0ËI]]u1ËH]]u5ËG]]u6ËF]]u7ËE]]u8ËD]]]Áè] ]$¾Ó]!]"ËËËËÒ”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c  +/Root 2432 0 R +/Info 2433 0 R +/ID [ ] +/Length 12175 +>> +stream +ÿ]#ÿ"k'ÿ!k1ÿ k9ÿkEÿ  +kNÿ  Õ ÿ ÕÿÕÿÕÿÕ8ÿÕ9ÿÕ:ÿÕ;ÿÕ?ÿÕ@ÿ ÕAÿ!"ÕEÿ#$ÕFÿ%&ÕHÿ'(ÕIÿ)*ÕMÿ +,ÕNÿ -.ÕOÿ /0ÕVÿ +12ÕWÿ 34Õ^ÿ56Õ_ÿ78Õcÿ9:+ÿ;<+ÿ=>+ÿ?@+ÿAB+ÿCD+ ÿEF+ þcGH+þbIJ+þaKL+þ`MN+þ_OP+þ^QR+þ]ST+$þ\UV+%þ[WX+&þZYZ+'þY[\+-þX]^+.þW_`+/þVab+5þUcË?%+:þTËË+;þSËË+<þRËË+CþQËË+GþPË Ë ++QþOË Ë +aþNË ËŠ þMËËŠþLËËŠ$þKËËŠ,þJËËŠ8þIËËŠCþHËËŠTþGËËŠ[þFËËŠbþEËË óþDË!Ë"óþCË#Ë$ó6þBË%Ë&óCþAË'Ë(óRþ@Ë)Ë*óXþ?Ë+Ë,ó_þ>Ë-Ë.hþ=Ë/Ë0h0þ<Ë1Ë2h9þ;Ë3Ë4hDþ:Ë5Ë6hEþ9Ë7Ë8h\þ8Ë9Ë:Øþ7Ë;Ë<Ø þ6Ë=Ë>Øþ5Ë?Ë@Øþ4ËAËBØ"þ3ËCËDØ-þ2ËEËFØHþ1ËGËHØXþ0ËIËJØ^þ/ËKËLFþ.ËMËNF þ-ËOËPFþ,ËQËRFþ+ËSËTF#þ*ËUËVF(þ)ËWËXF2þ(ËYËZF7þ'Ë[Ë\F=þ&Ë]Ë^FCþ%Ë_Ë`FIþ$ËaËbFOþ#Ëc”}ƒFVþ"””F]þ!””°þ ””° +þ””°þ” ” +°þ” ” °$þ” ”°*þ””°1þ””°5þ””°9þ””°=þ””°Aþ””°Eþ””°Oþ””°Yþ”” °cþ”!”" þ”#”$þ”%”&þ”'”()þ”)”*.þ ”+”,5þ ”-”.>þ ”/”0Dþ +”1”2Jþ ”3”4Pþ”5”6Vþ”7”8[þ”9”:bþ”;”<Œþ”=”>Œ þ”?”@Œþ”A”BŒþ”C”DŒ#þ”E”FŒ*Êc”G”HŒ3Êb”I”JŒ@Êa”K”LŒKÊ`”M”NŒPÊ_”O”PŒTÊ^”Q”RŒZÊ]”S”TŒ^Ê\”U”VýÊ[”W”XýÊZ”Y”Zý-ÊY”[”\ý.ÊX”]”^ý5ÊW”_”`ý6ÊV”a”bw!ÊU”c]%w%ÊT]]w&ÊS]]w(ÊR]]w,ÊQ]]w-ÊP] ] +w.ÊO] ] w/ÊN] ]w0ÊM]]w1ÊL]]w2ÊK]]w3ÊJ]]w7ÊI]]w8ÊH]]w9ÊG]]w:ÊF]]]Áè] ]$¾Ó]!]"ÊÊÊÊÒ”]']%ƒ2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](ƒ¼]W]X]<]>]H]J]\]]]^]_]`]a]b]c      !"#$%)']ZÂ"&´™*+,-./0123456789:;<=>?@ABCDEFGHIJKLMOPRTV[Y(7ØXNQSUW]_`abckkkkkkkkkk k -k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛËuPuGuTuRuOuDuEuNuAuBk.k/k0/Wk5k3k)¸k2k*k+k,k-4 uCk6k7k<k4?°k8ËËËk:k;uMkAkBy,kFk=dtkCkDk>k?k@u@u?kHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕËË&‹Õ ÕÕÕ -Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ|ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÒÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ËÕ2Õ5Õ6Õ<Õ4‡xÕ7ÕBÕ=›ÙÕ>Ë ÕJÕC­—ÕDÕGÕPÕKÁxÕLÕRÕSÕTÕYÕQØÕUÕXuLÕ\Õ`ÕZø6Õ[Õ]+ÕašÕb+u¸+ +JÓ+Ë!++ -\Ñ+ ++tÀ+++ˆj+++›+++ +'+´Î+!+&+*+.+(Ô+)Ë"+0+1+4+/èl+2+P+6+>+<+5ø<+7+;+@+B+= 9+?+F+C‰+D+H+I+J+K+L+M+S+Q+Gd+NË+T+U+W+R;‚+VË#+Y+Z+[+\+]+a+XEA+^+`+cˆ+bdˆˆä2ˆˆˆˆˆˆ ˆ ˆžêˆ -ˆ ˆˆÁ鈈ˆˆˆˆÄlˆˆˆˆã¬ˆˆË$ˆˆˆ ˆ$ˆð&ˆ!ˆ#ˆ&ˆ'ˆ(ˆ,ˆ% ¼ˆ)ˆ+ˆ0ˆ-'„ˆ.ˆ/ˆ2ˆ3ˆ4ˆ8ˆ14ˆ5ˆ7ˆ;ˆ9Qïˆ:ˆ=ˆ>ˆ?ˆCˆ<Tqˆ@ˆBË%ˆLˆDo ˆEˆFˆGˆHˆIˆJˆKˆNˆOˆPˆTˆM€æˆQˆSˆVˆWˆ[ˆU™ÂˆXˆZˆ]ˆ^ˆbˆ\¯ ˆ_ˈaþþþþþ þ -ˆcÄoþþþþþ üþ þþþþþþþþ ?þË&þþþþ+¶þþþþþ þ!þ"þ#þ%þK¿þ$þ'þ(þ*þ&i"þ)þ,þ-þ.þ/þ0þ1þ2þ6þ+{zþ3þ5þ9þ7™áþ8þ;þ<þ=þ>þ?þEþFþCþ:›Xþ@þBË'þHþD¹¨þGþJþKþLþMþNþRþI¿"þOþQþTþWþSÝþUþYþZþ[gþ_þXßìþ\þ^¡ggþ`ú×ggþaþbþcggqªgI&|•g -gª-g Ë(g g ggg ¶Rgggü<ggggÕ;ggggg'ggì¢gg(gú¾g&g g!g"g#g$g% -Ú>Ig*g+g,g0g)kág-g/g3g1Äg2Ë)g5g;g9g4“‹g6g8g<g=g?g:±—g>gDg@Á½gAgFgIgEÜ3gGgHgKgNgJöùgLËgMgVgO$®gPgQgRgSgTgUË*gXg[gW0ˆgYg]gbg\Låg^g_g`gaÝÝÝgcY,ÝÝ—bÝÝÝ Ý ÊÝ Ý ÝÝ ­lÝÝÝÝݶ&ÝË+ÝÝÍ„ÝÝÝÝÝÝ"ÝÔ˜ÝÝ!Ý(Ý#ì -Ý$Ý%Ý&Ý'Ý.Ý,Ý)ñcÝ*Ý/Ý0Ý7Ý-Ý1Ý2Ý3Ý4Ý5Ý6Ý@Ý8$)Ý9Ý:Ý;Ý<Ý=Ý>Ý?Ë,ÝBÝCÝDÝGÝA9ÝEÝQÝHTIÝIÝJÝKÝLÝMÝNÝOÝPÝSÝTÝWÝRb*ÝUÝYÝZÝ^ÝXnÝ[Ý]Ý`ÝaDÝ_}§ÝbÜgDDÀ5DDË-DDD -DÄODDD ÞXD D DDDDDDàÓDDDDDDDùÍDD"D½D D$D'D#„D%Ë.D,D(-›D)D*D+D.D1D-0ßD/D3D7D2GÌD4D6D9D=D8TñD:D<D?DCD>iD@DBDEDIDDvDFDHË/DKDPDJŠ1DLDNDODRDWDQ™*DSDUDVDYD\DX§jDZDbD]½gD^D_D`DaµµµµDcÌdµ!Võµ µ {µË0µµ - Rµ µ µ µµµµµµµµµ =”µµµ >|µµµµ%µ  UWµ!µ#µ$µ,µ& hµ'µ)µ*µ+µ0µ- yãµ.Ë1µ4µ1 „Gµ2µ8µ5 ‘ĵ6µ<µ9 –µ:µ@µ= œ‡µ>µDµA ¡ÇµBµJµE ¹¶µFµGµHµIËË2µNµK Ï,µLµTµO 禵PµQµRµSµXµU üOµVµ^µY!ˆµZµ[µ\µ]µbµ_!)¨µ`#µc!Aå####Ë3"Æ##!|-### !”®# -# # # ##!©###!Â######!×.##$#!ïI### Ë#!#"##Ë4#)#%" -#&#(#.#*" 9#+#-#0#1#4#/"6r#2#7#8#9#5"Qš#6#?#:"zm#;#=#>#E#@"ˆ”#A#C#DË5#K#F"Ž2#G#I#J#Q#L"”Ÿ#M#O#P#U#R"œú#S#W#\#V"ŸR#X#Z#[#^#c#]"²#_#a#b‘‘‘"ë]‘‘‘$"žË6‘‘ ‘"ùí‘ ‘ ‘ ‘‘‘# D‘‘‘‘‘‘#(à‘‘‘‘‘#F‘‘"‘#Há‘ ‘$‘%‘&‘*‘##N ‘'‘)Ë7‘6‘,‘-‘.‘/‘4‘2‘+#b‘0‘7‘3#sW‘5u>‘9‘:‘;‘<‘?‘8#¨Â‘=‘B‘@#Æô‘A‘D‘E‘F‘G‘J‘C#Ëœ‘H‘L‘O‘K#â‘MË8‘S‘P#ïá‘Q‘U‘V‘Y‘T#óì‘W‘]‘Z#þ¾‘[‘_‘`ûû‘^$Z‘a‘cûûû%ÖÌûûûû -û$NHû û ûû $jû Ë9ûûûûûû$|²ûûûûûûûû$Ÿ)ûû!û$¹øû û#û%û&û'û(û)û-û"$¾vû*û$uUuVû/û0%û1%DRûIû;û7û.$Þ•û2û5û6uQû=ûKûAû8%õû<û>û?û@Ë:û9û:%%ûTûVûB%&™ûJûLûMûNûOûPûQûRûSûUûCûD%N¡ûEûFûG%O©ûH%PŸ%Q©%pƒ%›Ÿû^û_û`uûW%yµûaûbûcûXûYûZû[û\%¨#û]%©D%ª:%·öu -u 'Kè&) uuu&Ãu u u uuuuu&4u&5&6"&O¿&€ïuuu&Zòuuuu&Ž*uuu&›u&—&‘·&®Âuu&¼uu u&ÀŠuË;u'u!&ßvu"u%u2u(&öŒu)u9u3' ÷u4uIu:'Þu;u<u=uFuHuXuJ'3¢uKuSuWuYuZu[u\u]u^u_u`uaubËucË*P3Ë'|ìË'™ËË'½»Ë'ÛÈË'úõË("íË(t¿Ë(…Ë (ΨË -(ßË (îÁË )MwË )³ŽË*8*d* Ê**ÿ*#>*)‚*/Á*6*9’*>(*D**J,Ë<Ë=Ë>Ë?Ë@ËAËBËC*‘”*·ùý!ý"ý#ý$ý%ý&ý'ý(ý)ý*ý+ý,ý-ý.ý/ý0ý1ý2ý3ý4ý5ý6ý7ý8ý9ý:ý;ý<ý=ý>ý?ý@ý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ý[ý\ý]ý^ý_ý`ýaýbýc B*ùf B B B B B B B B B  B - B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B<*÷;+% +k k k kkkkkkkkkkkkkZ€ìk\^Ýækkkk k!k"k#k$k%k&k(kôÛÊ wRwIwVwTwQwFwGwPwCwDk.k/k0/Wk5k3k)¸k2k*k+k,k-4 wEk6k7k<k4?°k8ÊÊÊk:k;wOkAkBy,kFk=dtkCkDk>k?k@wBwAkHkIkKkGÖkJkYkWkL”¦kMkOkPkQkRkSkTkUkVÕÕkXº±kZk[k\k]k^k_k`kakbkcÕÕÕÕÕÕÊÊ!&‹Õ ÕÕÕ +Õ Õ ÕÕÕÕÕÕÕ/ÕÕÕÕÕÕ%ÕQ|ÕÕ Õ!Õ"Õ#Õ$Õ'Õ(Õ3Õ&jÒÕ)Õ*Õ+Õ,Õ-Õ.Õ/Õ0Õ1ÊÕ2Õ5Õ6Õ<Õ4‡xÕ7ÕBÕ=›ÙÕ>Ê"ÕJÕC­—ÕDÕGÕPÕKÁxÕLÕRÕSÕTÕYÕQØÕUÕXwNÕ\Õ`ÕZø6Õ[Õ]+ÕašÕb+d‚+ +JÓ+Ê#++ +\Ñ+ ++tÀ+++++ˆÓ+++›o++!+"+)+ µ7+#+(+,+0+*Ôk++Ê$+2+3+6+1èÕ+4+R+8+@+>+7ø¥+9+=+B+D+? ¢+A+H+Eò+F+J+K+L+M+N+O+U+S+IÍ+PÊ+V+W+Y+T;ë+XÊ%+[+\+]+^+_+c+ZEª+`+bŠŠŠ ŠŠÄ/ŠŠŠŠ Š +Š ŠŠžªŠ ŠŠŠÁ©ŠŠŠŠŠŠÄ,ŠŠŠŠãlŠŠÊ&Š Š!Š"Š&ŠïæŠ#Š%Š(Š)Š*Š.Š' |Š+Š-Š2Š/'DŠ0Š1Š4Š5Š6Š:Š33Š7Š9Š=Š;Q¯Š<Š?Š@ŠAŠEŠ>T1ŠBŠDÊ'ŠNŠFnÍŠGŠHŠIŠJŠKŠLŠMŠPŠQŠRŠVŠO€¦ŠSŠUŠXŠYŠ]ŠW™‚ŠZŠ\Š_Š`óŠ^®ÍŠaÊŠc«óóóóóó óñ+óóó ó +ó óóóóóóóóó îóÊ(óóóó+eóóó ó!ó"ó#ó$ó%ó'óKnó&ó)ó*ó,ó(hÑó+ó.ó/ó0ó1ó2ó3ó4ó8ó-{)ó5ó7ó;ó9™ó:ó=ó>ó?ó@óAóGóHóEó<›óBóDÊ)óJóF¹WóIóLóMóNóOóPóTóK¾ÑóQóSóVóYóUÜËóWó[ó\ó]hóaóZß›ó^ó`Phh óbú†hhóchhhYhhI|h h +ªh Ê*hhhhh ¶<hhhü&hhhhÕ%hhhhh)h hìŒhh*h!ú¨h(h"h#h$h%h&h' +Ä>3h,h-h.h2h+kËh/h1h5h3®h4Ê+h7h=h;h6“uh8h:h>h?hAh<±h@hFhBÁ§hChHhKhGÜhIhJhMhPhLöãhNÊhOhXhQ$˜hRhShThUhVhWÊ,hZh]hY0rh[h_Øh^LÏh`hahbhc—SØØØ؈=ØØØ Ø +Ø Ø »Ø ØØØ­]ØØØØضØÊ-ØØÍuØØØØØ Ø$ØÔ‰Ø!Ø#Ø*Ø%ëûØ&Ø'Ø(Ø)Ø0Ø.Ø+ñTØ,Ø1Ø2Ø9Ø/öØ3Ø4Ø5Ø6Ø7Ø8ØBØ:$Ø;Ø<Ø=Ø>Ø?Ø@ØAÊ.ØDØEØFØIØC8ùØGØSØJT:ØKØLØMØNØOØPØQØRØUØVØYØTbØWØ[Ø\Ø`ØZn Ø]Ø_ØbØcFØa}˜FÌÑFFÀ¢FFÊ/FF F FļF +FF ÞÅFFFFFFFFá@FFFFFF Fú:FF$F!*F"F&F)F%ñF'Ê0F.F*.F+F,F-F0F3F/1LF1F5F9F4H9F6F8F;F?F:U^F<F>FAFEF@i|FBFDFGFKFFvŒFHFJÊ1FMFRFLŠžFNFPFQFTFYFS™—FUFWFXF[F^FZ§×F\°F_½ÔF`FaFbFc!A®°°°°°õA°° ° D° Ê2°°  ° °°°°°°°°°°° =]°°!° >E°°° °'°" U °#°%°&°.°( gÑ°)°+°,°-°2°/ y¬°0Ê3°6°3 „°4°:°7 ‘°8°>°; –Y°<°B°? œP°@°F°C ¡°D°L°G ¹°H°I°J°KÊÊ4°P°M Îõ°N°V°Q ço°R°S°T°U°Z°W ü°X°`°[!Q°\°]°^°_°a!)q°b"ÆS!fñÊ5 +!| !”‚  !©d!Áæ!×&!ï !"Ê#$%Ê6+'" Õ(*0," -/2361"6F49:;7"Qn8A<"zA=?@GB"ˆhCEFÊ7MH"ŽIKLSN"”sOQRWT"œÎUY^X"Ÿ&Z\]`Œ_"±âacŒ$"茌Œ"만ŒŒÊ8Œ +ŒŒ "ú7Œ Œ ŒŒŒŒ# ŽŒŒŒŒŒŒ#)*ŒŒŒŒ Œ#F_ŒŒ$Œ!#I+Œ"Œ&Œ'Œ(Œ,Œ%#NjŒ)Œ+Ê9Œ8Œ.Œ/Œ0Œ1Œ6Œ4Œ-#b\Œ2Œ9Œ5#s¡Œ7w@Œ;Œ<Œ=Œ>ŒAŒ:#© Œ?ŒDŒB#Ç>ŒCŒFŒGŒHŒIŒLŒE#ËæŒJŒNŒQŒM#âQŒOÊ:ŒUŒR#ð+ŒSŒWŒXŒ[ŒV#ô6ŒYŒ_Œ\#ÿŒ]ŒaŒbýýŒ`$¤Œcýýýý%×=ýý ý +ý ý$N¹ý ýýý $kýÊ;ýýýýýý$}#ýýýýýýý ý$Ÿšýý#ý!$ºiý"ý%ý'ý(ý)ý*ý+ý/ý$$¾çý,ý&wWwXý1ý2%sý3%DÃýKý=ý9ý0$ßý4ý7ý8wSý?ýMýCý:%fý>ý@ýAýBÊ<ý;ý<%%ýVýXýD%' +ýLýNýOýPýQýRýSýTýUýWýEýF%OýGýHýI%PýJ%Q%R%pô%œý`ýaýbwýY%z&ýcwwýZý[ý\ý]ý^%¨”ý_%©µ%ª«%¸gw w'LU&)zw +ww& 0w w wwwwww&4ƒw &5&6&P,&\www&[_wwww&Ž—www&w&‘&’$&¯/ww&¼pww"w&À÷w Ê=w)w#&ßãw$w'w4w*&öùw+w;w5' dw6wKw<'Kw=w>w?wHwJwZwL'4wMwUwYw[w\w]w^w_w`wawbwcÊ*LÁÊÊÊÊ'yzÊ'–YÊ'ºIÊ'ØVÊ'÷ƒÊ({Ê (qMÊ +(‚Ê (Ë6Ê (Û“Ê (ëOÊ)JÊ)°Ê)ÿÆ*ò* +X*”**Ì*&*,O*2Ž*6 *:¶*@¸*FºÊ>Ê?Ê@ÊAÊBÊCÊDÊE*‘²*¸/ÿ#ÿ$ÿ%ÿ&ÿ'ÿ(ÿ)ÿ*ÿ+ÿ,ÿ-ÿ.ÿ/ÿ0ÿ1ÿ2ÿ3ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿ:ÿ;ÿ<ÿ=ÿ>ÿ?ÿ@ÿ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ÿ[ÿ\ÿ]ÿ^ÿ_ÿ`ÿaÿbÿc B*øü B B B B B B B B B  B + B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B< B= B>*öÑ+&ó endstream endobj startxref -2827714 +2828019 %%EOF diff --git a/docs/src/datastruct.tex b/docs/src/datastruct.tex index c490eb43..0ef07fa8 100644 --- a/docs/src/datastruct.tex +++ b/docs/src/datastruct.tex @@ -898,11 +898,7 @@ A variable of type \fortinline|psb_Tspmat_type|. %\addcontentsline{toc}{paragraph}{clean\_zeros} \fortinline|call a%clean_zeros(info)| -Eliminates zero coefficients in the input matrix. Note that depending -on the internal storage format, there may still be some amount of -zero padding in the output. Even after a call to this method, any -explicit zeros on the main diagonal are always kept in the data -structure. +Eliminates zero coefficients explicitly stored in the input matrix. \begin{description} \item[Type:] Asynchronous. @@ -917,6 +913,13 @@ Scope: {\bf local}.\\ A variable of type \fortinline|psb_Tspmat_type|. \item[info] Return code. \end{description} +{\par\noindent\bfseries Notes} +\begin{enumerate} +\item Depending on the internal storage format, there may still be some amount of + zero padding in the output. +\item Any explicit zeros on the main diagonal are always kept in the + data structure. +\end{enumerate} \subsubsection{get\_diag --- Get main diagonal} %\addcontentsline{toc}{paragraph}{get\_diag} From fa6b8d5e33633b4bc6aedd67085e3e0f2fcd29b1 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Mon, 25 Nov 2024 12:35:39 +0100 Subject: [PATCH 84/86] Enable I2 send/receive/collectives --- base/modules/Makefile | 3 ++- base/modules/desc/psb_desc_const_mod.f90 | 2 +- base/modules/penv/psi_penv_mod.F90 | 26 ++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/base/modules/Makefile b/base/modules/Makefile index 9c14dab8..2cb16d88 100644 --- a/base/modules/Makefile +++ b/base/modules/Makefile @@ -10,13 +10,14 @@ BASIC_MODS= psb_const_mod.o psb_cbind_const_mod.o psb_error_mod.o psb_realloc_mo auxil/psb_z_realloc_mod.o COMMINT= penv/psi_penv_mod.o \ - penv/psi_p2p_mod.o penv/psi_m_p2p_mod.o \ + penv/psi_p2p_mod.o penv/psi_m_p2p_mod.o penv/psi_i2_p2p_mod.o \ penv/psi_e_p2p_mod.o \ penv/psi_s_p2p_mod.o \ penv/psi_d_p2p_mod.o \ penv/psi_c_p2p_mod.o \ penv/psi_z_p2p_mod.o \ penv/psi_collective_mod.o \ + penv/psi_i2_collective_mod.o \ penv/psi_e_collective_mod.o \ penv/psi_m_collective_mod.o \ penv/psi_s_collective_mod.o \ diff --git a/base/modules/desc/psb_desc_const_mod.f90 b/base/modules/desc/psb_desc_const_mod.f90 index 8953aafc..7a3eb4a4 100644 --- a/base/modules/desc/psb_desc_const_mod.f90 +++ b/base/modules/desc/psb_desc_const_mod.f90 @@ -35,7 +35,7 @@ ! Auxiliary module for descriptor: constant values. ! module psb_desc_const_mod - use psb_const_mod, only : psb_ipk_, psb_lpk_, psb_mpk_, psb_epk_ + use psb_const_mod, only : psb_ipk_, psb_lpk_, psb_mpk_, psb_epk_, psb_i2pk_ ! ! Communication, prolongation & restriction ! diff --git a/base/modules/penv/psi_penv_mod.F90 b/base/modules/penv/psi_penv_mod.F90 index 0c77c6df..148032ad 100644 --- a/base/modules/penv/psi_penv_mod.F90 +++ b/base/modules/penv/psi_penv_mod.F90 @@ -167,6 +167,7 @@ module psi_penv_mod #else + integer(psb_mpk_), save :: mpi_i2amx_op, mpi_i2amn_op integer(psb_mpk_), save :: mpi_iamx_op, mpi_iamn_op integer(psb_mpk_), save :: mpi_mamx_op, mpi_mamn_op integer(psb_mpk_), save :: mpi_eamx_op, mpi_eamn_op @@ -181,6 +182,7 @@ module psi_penv_mod #endif private :: psi_get_sizes, psi_register_mpi_extras + private :: psi_i2amx_op, psi_i2amn_op private :: psi_iamx_op, psi_iamn_op private :: psi_mamx_op, psi_mamn_op private :: psi_eamx_op, psi_eamn_op @@ -773,6 +775,8 @@ contains #if defined(SERIAL_MPI) #else + if (info == 0) call mpi_op_create(psi_i2amx_op,.true.,mpi_i2amx_op,info) + if (info == 0) call mpi_op_create(psi_i2amn_op,.true.,mpi_i2amn_op,info) if (info == 0) call mpi_op_create(psi_mamx_op,.true.,mpi_mamx_op,info) if (info == 0) call mpi_op_create(psi_mamn_op,.true.,mpi_mamn_op,info) if (info == 0) call mpi_op_create(psi_eamx_op,.true.,mpi_eamx_op,info) @@ -997,6 +1001,8 @@ contains & call mpi_comm_Free(ctxt%ctxt,info) end if if (close_) then + if (info == 0) call mpi_op_free(mpi_i2amx_op,info) + if (info == 0) call mpi_op_free(mpi_i2amn_op,info) if (info == 0) call mpi_op_free(mpi_mamx_op,info) if (info == 0) call mpi_op_free(mpi_mamn_op,info) if (info == 0) call mpi_op_free(mpi_eamx_op,info) @@ -1188,6 +1194,26 @@ contains ! Note: len & type are always default integer. ! ! !!!!!!!!!!!!!!!!!!!!!! + subroutine psi_i2amx_op(inv, outv,len,type) + integer(psb_i2pk_) :: inv(len), outv(len) + integer(psb_mpk_) :: len,type + integer(psb_mpk_) :: i + + do i=1, len + if (abs(inv(i)) > abs(outv(i))) outv(i) = inv(i) + end do + end subroutine psi_i2amx_op + + subroutine psi_i2amn_op(inv, outv,len,type) + integer(psb_i2pk_) :: inv(len), outv(len) + integer(psb_mpk_) :: len,type + integer(psb_mpk_) :: i + + do i=1, len + if (abs(inv(i)) < abs(outv(i))) outv(i) = inv(i) + end do + end subroutine psi_i2amn_op + subroutine psi_mamx_op(inv, outv,len,type) integer(psb_mpk_) :: inv(len), outv(len) integer(psb_mpk_) :: len,type From 63fb828528d6c7dfa8c0275f8ba6b09b67c834f3 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 3 Dec 2024 10:36:52 +0100 Subject: [PATCH 85/86] Fix Makefile for I2 --- base/modules/Makefile | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/base/modules/Makefile b/base/modules/Makefile index 2cb16d88..b0dd8660 100644 --- a/base/modules/Makefile +++ b/base/modules/Makefile @@ -150,23 +150,25 @@ psb_realloc_mod.o: auxil/psb_m_realloc_mod.o \ auxil/psb_c_realloc_mod.o \ auxil/psb_z_realloc_mod.o -penv/psi_p2p_mod.o: penv/psi_m_p2p_mod.o \ - penv/psi_e_p2p_mod.o \ - penv/psi_s_p2p_mod.o \ - penv/psi_d_p2p_mod.o \ - penv/psi_c_p2p_mod.o \ - penv/psi_z_p2p_mod.o -penv/psi_collective_mod.o: penv/psi_e_collective_mod.o \ - penv/psi_m_collective_mod.o \ - penv/psi_s_collective_mod.o \ - penv/psi_d_collective_mod.o \ - penv/psi_c_collective_mod.o \ - penv/psi_z_collective_mod.o - -penv/psi_m_p2p_mod.o penv/psi_e_p2p_mod.o penv/psi_s_p2p_mod.o \ +penv/psi_p2p_mod.o: penv/psi_i2_p2p_mod.o \ + penv/psi_m_p2p_mod.o \ + penv/psi_e_p2p_mod.o \ + penv/psi_s_p2p_mod.o \ + penv/psi_d_p2p_mod.o \ + penv/psi_c_p2p_mod.o \ + penv/psi_z_p2p_mod.o +penv/psi_collective_mod.o: penv/psi_i2_collective_mod.o \ + penv/psi_e_collective_mod.o \ + penv/psi_m_collective_mod.o \ + penv/psi_s_collective_mod.o \ + penv/psi_d_collective_mod.o \ + penv/psi_c_collective_mod.o \ + penv/psi_z_collective_mod.o + +penv/psi_i2_p2p_mod.o penv/psi_m_p2p_mod.o penv/psi_e_p2p_mod.o penv/psi_s_p2p_mod.o \ penv/psi_d_p2p_mod.o penv/psi_c_p2p_mod.o penv/psi_z_p2p_mod.o: penv/psi_penv_mod.o -penv/psi_e_collective_mod.o penv/psi_m_collective_mod.o penv/psi_s_collective_mod.o \ +penv/psi_i2_collective_mod.o penv/psi_e_collective_mod.o penv/psi_m_collective_mod.o penv/psi_s_collective_mod.o \ penv/psi_d_collective_mod.o penv/psi_c_collective_mod.o penv/psi_z_collective_mod.o: penv/psi_penv_mod.o \ penv/psi_m_p2p_mod.o penv/psi_e_p2p_mod.o penv/psi_s_p2p_mod.o \ penv/psi_d_p2p_mod.o penv/psi_c_p2p_mod.o penv/psi_z_p2p_mod.o From 61976812be9b0500420905cafd0ef14058fa55d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luca=20Pep=C3=A8=20Sciarria?= Date: Thu, 12 Dec 2024 10:08:47 +0100 Subject: [PATCH 86/86] Add cmake building for base, cbind, ext, linsolve, prec, util --- .VERSION | 12 + CMakeLists.txt | 762 +++++++++++++++++++++++++++++ base/CMakeLists.txt | 638 ++++++++++++++++++++++++ cbind/CMakeLists.txt | 95 ++++ cmake/CapitalizeString.cmake | 7 + cmake/CheckOutOfSourceBuild.cmake | 21 + cmake/FindMETIS.cmake | 95 ++++ cmake/makeDist.cmake | 79 +++ cmake/pkg/psblasConfig.cmake.in | 16 + cmake/psblas-VER-SHA256.txt.asc.in | 12 + cmake/psblas-VER-SHA256.txt.in | 3 + cmake/setVersion.cmake | 90 ++++ cmake/uninstall.cmake.in | 23 + ext/CMakeLists.txt | 428 ++++++++++++++++ linsolve/CMakeLists.txt | 52 ++ prec/CMakeLists.txt | 141 ++++++ util/CMakeLists.txt | 47 ++ 17 files changed, 2521 insertions(+) create mode 100644 .VERSION create mode 100644 CMakeLists.txt create mode 100644 base/CMakeLists.txt create mode 100644 cbind/CMakeLists.txt create mode 100644 cmake/CapitalizeString.cmake create mode 100644 cmake/CheckOutOfSourceBuild.cmake create mode 100644 cmake/FindMETIS.cmake create mode 100644 cmake/makeDist.cmake create mode 100644 cmake/pkg/psblasConfig.cmake.in create mode 100644 cmake/psblas-VER-SHA256.txt.asc.in create mode 100644 cmake/psblas-VER-SHA256.txt.in create mode 100644 cmake/setVersion.cmake create mode 100644 cmake/uninstall.cmake.in create mode 100644 ext/CMakeLists.txt create mode 100644 linsolve/CMakeLists.txt create mode 100644 prec/CMakeLists.txt create mode 100644 util/CMakeLists.txt diff --git a/.VERSION b/.VERSION new file mode 100644 index 00000000..1263e476 --- /dev/null +++ b/.VERSION @@ -0,0 +1,12 @@ +$Format:%d%n%n$ +# Fall back version, probably last release: +3.9.0 + +# PSBLAS version file. +# +# Release archive created from commit: +# $Format:%H %d$ +# $Format:Created on %ci by %cN, and$ +# $Format:signed by %GS using %GK.$ +# $Format:Signature status: %G?$ +$Format:%GG$ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..bca5918d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,762 @@ +# FDEFINES : -DHAVE_LAPACK -DHAVE_FINAL -DHAVE_ISO_FORTRAN_ENV -DHAVE_FLUSH_STMT -DHAVE_VOLATILE -DSERIAL_MPI -DMPI_MOD +# CDEFINES : -DLowerUnderscore -DPtr64Bits + +#----------------------------------- +# Set oldest allowable CMake version +#----------------------------------- +cmake_minimum_required(VERSION 3.10) +cmake_policy(VERSION 3.11.1...3.13.3) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") + +#---------------------------------------------- +# Define canonical CMake build types and extras +#---------------------------------------------- +set ( CMAKE_CONFIGURATION_TYPES "Debug" "Release" "MinSizeRel" "RelWithDebInfo" "CodeCoverage" ) +set ( CMAKE_BUILD_TYPE "Release" + CACHE STRING "Select which configuration to build." ) +set_property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} ) + +#----------------------------------------------------- +# Determine version from .VERSION file or git describe +#----------------------------------------------------- +include(setVersion) +set_version( + VERSION_VARIABLE PSBLAS_Version + GIT_DESCRIBE_VAR full_git_describe + CUSTOM_VERSION_FILE "${CMAKE_SOURCE_DIR}/.VERSION") +message( STATUS "Building PSBLAS1 version: ${full_git_describe}" ) + +#------------------------------------------ +# Name project and specify source languages +#------------------------------------------ +project(psblas + VERSION "${PSBLAS_Version}" + LANGUAGES C Fortran) + +#-------------------------------------------------- +# Set option to allow building against OpenCoarrays +#-------------------------------------------------- +if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") + option(PSBLAS_USE_OpenCoarrays "Build enabling linkage to programs using OpenCoarrays" OFF) +endif() + +#----------------------------------------------------------------- +# Define a target to create a checksummed & signed release archive +#----------------------------------------------------------------- +set(${CMAKE_PROJECT_NAME}_dist_string "${CMAKE_PROJECT_NAME}-${full_git_describe}") +if(GIT_FOUND) + add_custom_target(dist # OUTPUT "${CMAKE_BINARY_DIR}/${_package_stem_name}.tar.gz" + COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/makeDist.cmake" "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" + COMMENT "Creating source release asset, ${_package_stem_name}.tar.gz, from ${_full_git_describe} using the `git archive` command." + VERBATIM) +endif() + +#-------------------------- +# Prohibit in-source builds +#-------------------------- +include(CheckOutOfSourceBuild) + +#---------------------------------------------------- +# Define coverage flags and report untested compilers +#---------------------------------------------------- +if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU" ) + set(gfortran_compiler true) + #TODO: check if it is needed an mpi compiler set(CMAKE_Fortran_COMPILER mpifort) + + set ( CMAKE_C_FLAGS_CODECOVERAGE "-fprofile-arcs -ftest-coverage -O0" + CACHE STRING "Code coverage C compiler flags") + set ( CMAKE_Fortran_FLAGS_CODECOVERAGE "-fprofile-arcs -ftest-coverage -O0" + CACHE STRING "Code coverage Fortran compiler flags") +else() + message(WARNING + "\n" + "Attempting untested CMake build with Fortran compiler: ${CMAKE_Fortran_COMPILER_ID}. " + "Please report any failures at https://github.com/sfilippone/psblas3\n\n" + ) +endif() + + + message(STATUS "cmake flags? ${CMAKE_Fortran_FLAGS};") + +#------------------------------------ +# Fortran name mangling introspection +#------------------------------------ +include("${CMAKE_CURRENT_LIST_DIR}/cmake/CapitalizeString.cmake") +include(FortranCInterface) +CapitalizeString(${FortranCInterface_GLOBAL__CASE} fc_case) +message(STATUS "Name mangling capitalization: ${fc_case}") +message(STATUS "Name mangling fortran global suffix underscore: ${FortranCInterface_GLOBAL__SUFFIX}") +if(FortranCInterface_GLOBAL__SUFFIX STREQUAL "") + add_compile_options("-D${fc_case}Case") +elseif(FortranCInterface_GLOBAL__SUFFIX STREQUAL "_") + add_compile_options("-D${fc_case}Underscore") +elseif(FortranCInterface_GLOBAL__SUFFIX STREQUAL "__") + add_compile_options("-D${fc_case}DoubleUnderscore") +else() + message( FATAL_ERROR "Fortran name mangling suffix, \'${FortranCInterface_GLOBAL__SUFFIX}\', unknown to PSBLAS") +endif() + + + message(STATUS "win? ${WIN32};") +if(TRUE )#NOT ${WIN32}) +#previous check did not work if WIN32 is empty string + #---------------------------------------------- + # Determine system endian-ness and pointer size + #---------------------------------------------- + include(TestBigEndian) + TEST_BIG_ENDIAN(IS_BIG_ENDIAN) + if(IS_BIG_ENDIAN) + message( STATUS "System appears to be big endian.") + else() + message( STATUS "System appears to be little endian.") + add_compile_options(-DLittleEndian) + endif() + include(CheckTypeSize) + CHECK_TYPE_SIZE("void *" VOID_P_SIZE LANGUAGE C) + if(${VOID_P_SIZE} EQUAL 8) + add_compile_options(-DPtr64Bits) + endif() + message(STATUS "Have 64bit pointers") + + #add define values for integer size (IPKx) and long size (LPKx) + CHECK_TYPE_SIZE("int" INT_SIZE LANGUAGE C) + CHECK_TYPE_SIZE("long" LONG_SIZE LANGUAGE C) + message(STATUS "INT SIZE ${INT_SIZE}") + + add_compile_options(-DIPK${INT_SIZE}) + add_compile_options(-DLPK${LONG_SIZE}) + + +endif() + + + + +#----------------------------------------- +# Check for some Fortran compiler features +#----------------------------------------- +include(CheckFortranSourceCompiles) +CHECK_Fortran_SOURCE_COMPILES( + " +integer, allocatable :: a(:), b(:) +allocate(a(5)) +a = [1,2,3,4,5] +call move_alloc(from=a, to=b) +end +" + HAVE_MOVE_ALLOC + SRC_EXT f90 + ) +if(HAVE_MOVE_ALLOC) + add_compile_options(-DHAVE_MOVE_ALLOC) + message(STATUS "-DHAVE_MOVE_ALLOC") +endif() +CHECK_Fortran_SOURCE_COMPILES( + "integer, volatile :: i ; end" + HAVE_VOLATILE + SRC_EXT f90 + ) +if(HAVE_VOLATILE) + add_compile_options(-DHAVE_VOLATILE) + message(STATUS "-DHAVE_VOLATILE") +endif() +CHECK_Fortran_SOURCE_COMPILES( + "use ISO_FORTRAN_ENV ; end" + HAVE_ISO_FORTRAN_ENV + SRC_EXT f90 + ) +if(HAVE_ISO_FORTRAN_ENV) + add_compile_options(-DHAVE_ISO_FORTRAN_ENV) + message(STATUS "-DHAVE_ISO_FORTRAN_ENV") +endif() +CHECK_Fortran_SOURCE_COMPILES( + "flush(5); end" + HAVE_FLUSH_STMT + SRC_EXT f90 + ) +if(HAVE_FLUSH_STMT) + add_compile_options(-DHAVE_FLUSH_STMT) + message(STATUS "-DHAVE_FLUSH_STMT") +endif() +CHECK_Fortran_SOURCE_COMPILES( + " +module conftest_mod + type foo + integer :: i + contains + final :: destroy_foo + end type foo + private destroy_foo +contains + subroutine destroy_foo(a) + type(foo) :: a + ! Just a test + end subroutine destroy_foo +end module conftest_mod +program conftest + use conftest_mod + type(foo) :: foovar +end program" + HAVE_FINAL + SRC_EXT f90 + ) +if(HAVE_FINAL) + add_compile_options(-DHAVE_FINAL) + message(STATUS "-DHAVE_FINAL") +endif() +CHECK_Fortran_SOURCE_COMPILES( + " +program xtt + type foo + integer :: i + end type foo + type, extends(foo) :: new_foo + integer :: j + end type new_foo + class(foo), allocatable :: fooab + type(new_foo) :: nfv + integer :: info + allocate(fooab, mold=nfv, stat=info) +end program" + HAVE_MOLD + SRC_EXT f90) +if(HAVE_MOLD) + add_compile_options(-DHAVE_MOLD) + message(STATUS "-DHAVE_MOLD") +endif() +CHECK_Fortran_SOURCE_COMPILES( + " +program conftest + type foo + integer :: i + end type foo + type, extends(foo) :: bar + integer j + end type bar + type(bar) :: barvar +end program " + HAVE_EXTENDS_TYPE_OF + SRC_EXT f90) +if(HAVE_EXTENDS_TYPE_OF) + add_compile_options(-DHAVE_EXTENDS_TYPE_OF) + message(STATUS "-DHAVE_EXTENDS_TYPE_OF") +endif() +CHECK_Fortran_SOURCE_COMPILES( + " +program stt + type foo + integer :: i + end type foo + type, extends(foo) :: new_foo + integer :: j + end type new_foo + type(foo) :: foov + type(new_foo) :: nfv1, nfv2 + + + write(*,*) 'foov == nfv1? ', same_type_as(foov,nfv1) + write(*,*) 'nfv2 == nfv1? ', same_type_as(nfv2,nfv1) +end program" + HAVE_SAME_TYPE_AS + SRC_EXT f90) +if(HAVE_SAME_TYPE_AS) + add_compile_options(-DHAVE_SAME_TYPE_AS) + message(STATUS "-DHAVE_SAME_TYPE_AS") +endif() + +#---------------------------------------------------------------------------- +# Find MPI and set some flags so that FC and CC can point to gfortran and gcc +#---------------------------------------------------------------------------- +find_package( MPI REQUIRED Fortran ) + +if(MPI_FOUND) + #----------------------------------------------- + # Work around an issue present on fedora systems + #----------------------------------------------- + if( (MPI_C_LINK_FLAGS MATCHES "noexecstack") OR (MPI_Fortran_LINK_FLAGS MATCHES "noexecstack") ) + message ( WARNING + "The `noexecstack` linker flag was found in the MPI__LINK_FLAGS variable. This is +known to cause segmentation faults for some Fortran codes. See, e.g., +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71729 or +https://github.com/sourceryinstitute/OpenCoarrays/issues/317. + +`noexecstack` is being replaced with `execstack`" + ) + string(REPLACE "noexecstack" + "execstack" MPI_C_LINK_FLAGS_FIXED ${MPI_C_LINK_FLAGS}) + string(REPLACE "noexecstack" + "execstack" MPI_Fortran_LINK_FLAGS_FIXED ${MPI_Fortran_LINK_FLAGS}) + set(MPI_C_LINK_FLAGS "${MPI_C_LINK_FLAGS_FIXED}" CACHE STRING + "MPI C linking flags" FORCE) + set(MPI_Fortran_LINK_FLAGS "${MPI_Fortran_LINK_FLAGS_FIXED}" CACHE STRING + "MPI Fortran linking flags" FORCE) + + endif() + + message(STATUS "Found MPI: ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES}") + + #---------------- + # Setup MPI flags + #---------------- + list(REMOVE_DUPLICATES MPI_Fortran_INCLUDE_PATH) + set(CMAKE_C_COMPILE_FLAGS ${CMAKE_C_COMPILE_FLAGS} ${MPI_C_COMPILE_FLAGS}) + set(CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS} ${MPI_C_LINK_FLAGS}) + set(CMAKE_Fortran_COMPILE_FLAGS ${CMAKE_Fortran_COMPILE_FLAGS} ${MPI_Fortran_COMPILE_FLAGS}) + set(CMAKE_Fortran_LINK_FLAGS ${CMAKE_Fortran_LINK_FLAGS} ${MPI_Fortran_LINK_FLAGS}) + include_directories(BEFORE ${MPI_C_INCLUDE_PATH} ${MPI_Fortran_INCLUDE_PATH}) +message(STATUS "${MPI_C_INCLUDE_PATH}; ${MPI_Fortran_INCLUDE_PATH};; ${CMAKE_Fortran_LINK_FLAGS} ;") + if(MPI_Fortran_HAVE_F90_MODULE OR MPI_Fortran_HAVE_F08_MODULE) + add_compile_options(-DMPI_MOD) + message(STATUS "-DMPI_MOD") + #add_compile_options(-DSERIAL_MPI) # Is it right?? + #message(STATUS "-DSERIAL_MPI") + endif() + set(SERIAL_MPI OFF) +else() + message(STATUS "MPI not found, serial ahead") + add_compile_options(-DSERIAL_MPI) + add_compile_options(-DMPI_MOD) + set(SERIAL_MPI ON) +endif() + +#------------------------------------------------------- +# Find and Use OpenCoarrays IFF gfortran AND options set +#------------------------------------------------------- + +if("${PSBLAS_USE_OpenCoarrays}" AND CMAKE_Fortran_COMPILER_ID MATCHES GNU) + message(STATUS "Set openCoarrays") + find_package(OpenCoarrays) +endif() + +#------------------------------ +# Find Linear Algebra Libraries +#------------------------------ +if(NOT APPLE) + set(BLA_STATIC ON) +endif() +find_package(BLAS REQUIRED) +find_package(LAPACK REQUIRED) +add_compile_options(-DHAVE_LAPACK) + + +#-------------------------------- +# Find METIS partitioning library +#-------------------------------- +include(${CMAKE_CURRENT_LIST_DIR}/cmake/FindMETIS.cmake) +find_package(METIS) + +#--------------------------------------------------- +# Use standardized GNU install directory conventions +#--------------------------------------------------- +include(GNUInstallDirs) +#set(mod_dir_tail "${${CMAKE_PROJECT_NAME}_dist_string}_${CMAKE_Fortran_COMPILER_ID}-${CMAKE_Fortran_COMPILER_VERSION}") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${${CMAKE_PROJECT_NAME}_dist_string}-tests") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") + +#----------------------------------- +# Turn on testing/ctest capabilities +#----------------------------------- +enable_testing() + +#------------------------------------------------------------------------------ +# Add custom properties on targets for controling number of ranks during tests +#------------------------------------------------------------------------------ +define_property(TARGET + PROPERTY MIN_RANKS + BRIEF_DOCS "Minimum allowable ranks for the test " + FULL_DOCS "Property to mark executable targets run as tests that they require at least ranks to run" + ) + +define_property(TARGET + PROPERTY POWER_2_RANKS + BRIEF_DOCS "True if test must be run with a power of 2 ranks (T/F)" + FULL_DOCS "Property to mark executable targets run as tests that they require 2^n ranks." + ) + +#----------------------------------------------------- +# Publicize installed location to other CMake projects +#----------------------------------------------------- +install(EXPORT ${CMAKE_PROJECT_NAME}-targets + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake" +) +include(CMakePackageConfigHelpers) # standard CMake module +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake" + VERSION "${psblas_VERSION}" + COMPATIBILITY SameMajorVersion + ) + +configure_file("${CMAKE_SOURCE_DIR}/cmake/pkg/${CMAKE_PROJECT_NAME}Config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${CMAKE_PROJECT_NAME}Config.cmake" @ONLY) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${CMAKE_PROJECT_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake" + DESTINATION + "${CMAKE_INSTALL_LIBDIR}/cmake/psblas" +) + +#------------------------------------------ +# Add portable unistall command to makefile +#------------------------------------------ +# Adapted from the CMake Wiki FAQ +configure_file ( "${CMAKE_SOURCE_DIR}/cmake/uninstall.cmake.in" "${CMAKE_BINARY_DIR}/uninstall.cmake" + @ONLY) + +add_custom_target ( uninstall + COMMAND ${CMAKE_COMMAND} -P "${CMAKE_BINARY_DIR}/uninstall.cmake" ) + +add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure) +# See JSON-Fortran's CMakeLists.txt file to find out how to get the check target to depend +# on the test executables + +#---------------------------------- +# Determine if we're using Open MPI +#--------------------------------- +if(MPI_FOUND) + execute_process(COMMAND ${MPIEXEC} --version + OUTPUT_VARIABLE mpi_version_out) + if (mpi_version_out MATCHES "[Oo]pen[ -][Mm][Pp][Ii]") + message( STATUS "OpenMPI detected") + set ( openmpi true ) + endif() +endif() + +#--------------------------------------- +# Add the PSBLAS libraries and utilities +#--------------------------------------- + +# Link order, left to right: +# cbind.a, util.a linsolve.a prec.a base.a + +include(${CMAKE_CURRENT_LIST_DIR}/base/CMakeLists.txt) + +include_directories("${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}") + +if(WIN32) + add_library(psb_base_C STATIC ${base_source_C_files}) + target_compile_definitions(psb_base_C + PRIVATE -DWIN32 -D_LIB -DWIN64) + set_target_properties(psb_base_C + PROPERTIES + LINKER_LANGUAGE C + POSITION_INDEPENDENT_CODE TRUE) + target_link_libraries(psb_base_C + PUBLIC kernel32 user32 shell32) + add_library(base ${base_source_files}) + target_link_libraries(base + PUBLIC psb_base_C) +else() + message(STATUS " ----------------------- ;") + message(STATUS " ----------------------- ${base_source_C_files};") + add_library(base_C OBJECT ${base_source_C_files}) + add_library(base ${base_source_files} $) +endif() + + +# Set the Fortran module output directory for all targets +set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/modules) +#set(CMAKE_Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/include") + +message(STATUS "fortran module direcotry ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}") + + +include_directories(${MPI_Fortran_INCLUDE_PATH}) + + +message(STATUS "Using MPI include at: ${MPI_Fortran_INCLUDE_PATH}") + + +set_target_properties(base + PROPERTIES + Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules" + POSITION_INDEPENDENT_CODE TRUE + OUTPUT_NAME psb_base + LINKER_LANGUAGE Fortran + ) + +target_include_directories(base PUBLIC + $ + $ + ${MPI_Fortran_INCLUDE_PATH}) + +message(STATUS "include dir := ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}") + +#target_include_directories(base PUBLIC ${CMAKE_Fortran_MODULE_DIRECTORY}) + + +target_link_libraries(base + PUBLIC ${LAPACK_LINKER_FLAGS} ${LAPACK_LIBRARIES} ${LAPACK95_LIBRARIES} + PUBLIC ${BLAS_LINKER_FLAGS} ${BLAS_LIBRARIES} ${BLAS95_LIBRARIES}) + +#add_custom_command( +# TARGET base POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E cmake_copy_f90_mod +# ${MPI_Fortran_INCLUDE_PATH}mpi.mod ${CMAKE_BINARY_DIR}/include/mpi.mod +#) + + + + +include(${CMAKE_CURRENT_LIST_DIR}/prec/CMakeLists.txt) +add_library(prec ${prec_source_files}) +set_target_properties(prec + PROPERTIES + Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules" + POSITION_INDEPENDENT_CODE TRUE + OUTPUT_NAME psb_prec + LINKER_LANGUAGE Fortran + ) +target_include_directories(prec PUBLIC + $ + $) +target_link_libraries(prec PUBLIC base) + +include(${CMAKE_CURRENT_LIST_DIR}/linsolve/CMakeLists.txt) +add_library(linsolve ${linsolve_source_files}) +set_target_properties(linsolve + PROPERTIES + Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules" + POSITION_INDEPENDENT_CODE TRUE + OUTPUT_NAME psb_linsolve + LINKER_LANGUAGE Fortran + ) +target_include_directories(linsolve PUBLIC + $ + $) +target_link_libraries(linsolve PUBLIC base prec) + + +include(${CMAKE_CURRENT_LIST_DIR}/ext/CMakeLists.txt) +add_library(ext ${ext_source_files}) +set_target_properties(ext + PROPERTIES + Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules" + POSITION_INDEPENDENT_CODE TRUE + OUTPUT_NAME psb_ext + LINKER_LANGUAGE Fortran + ) +target_include_directories(ext PUBLIC + $ + $) +target_link_libraries(ext PUBLIC base prec) #TODO: check actual dependencies + + + + +include(${CMAKE_CURRENT_LIST_DIR}/util/CMakeLists.txt) +if(WIN32) + if(METIS_FOUND) + add_library(psb_util_C STATIC ${util_source_C_files}) + target_compile_definitions(psb_util_C + PRIVATE -DWIN32 -D_LIB -DWIN64) + set_target_properties(psb_util_C + PROPERTIES + LINKER_LANGUAGE C + POSITION_INDEPENDENT_CODE TRUE) + target_link_libraries(psb_util_C + PUBLIC kernel32 user32 shell32) + endif() + add_library(util ${util_source_files}) + if(METIS_FOUND) + target_link_libraries(util + PUBLIC psb_util_C) + endif() +else() + add_library(psb_util_C OBJECT ${util_source_C_files}) + add_library(util ${util_source_files} $) +endif() +set_target_properties(util + PROPERTIES + Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules" + POSITION_INDEPENDENT_CODE TRUE + OUTPUT_NAME psb_util + LINKER_LANGUAGE Fortran + ) +target_include_directories(util PUBLIC + $ + $) +target_link_libraries(util PUBLIC base prec) +if(METIS_FOUND) + message(STATUS ${METIS_INCLUDES}) + target_include_directories(util + PUBLIC ${METIS_INCLUDES}) + target_include_directories(psb_util_C + PUBLIC ${METIS_INCLUDES}) + target_link_libraries(util + PUBLIC ${METIS_LIBRARIES}) + target_compile_definitions(psb_util_C + PUBLIC HAVE_METIS_) + target_compile_definitions(util + PUBLIC HAVE_METIS) +endif() + + + + + + + + + +# Include headers from the 'include' directory in the current directory +include_directories(${CMAKE_BINARY_DIR}/include) + + +include(${CMAKE_CURRENT_LIST_DIR}/cbind/CMakeLists.txt) +if(WIN32) + add_library(psb_cbind_C STATIC ${base_source_C_files}) + target_compile_definitions(psb_cbind_C + PRIVATE -DWIN32 -D_LIB -DWIN64) + set_target_properties(psb_cbind_C + PROPERTIES + LINKER_LANGUAGE C + POSITION_INDEPENDENT_CODE TRUE) + target_link_libraries(psb_cbind_C + PUBLIC kernel32 user32 shell32) + add_library(cbind ${cbind_source_files}) + target_link_libraries(cbind + PUBLIC psb_cbind_C) +else() + message(STATUS " ----------------------- ;") + message(STATUS " cbindcbind ----------------------- ${cbind_header_C_files};") + add_library(cbind_C OBJECT ${cbind_source_C_files}) + add_library(cbind ${cbind_source_files}) +endif() + + +#add_library(cbind ${cbind_source_files}) +set_target_properties(cbind + PROPERTIES + Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules" + POSITION_INDEPENDENT_CODE TRUE + OUTPUT_NAME psb_cbind + LINKER_LANGUAGE Fortran + ) +#target_include_directories(cbind PUBLIC +# $ +# $) +# Include directories for the cbind library +target_include_directories(cbind PUBLIC + $ # Path for building + $ # Path for installation +) +target_link_libraries(cbind PUBLIC base prec linsolve ext util) + + +# Custom command to copy all header files +#add_custom_command( +# OUTPUT ${CMAKE_BINARY_DIR}/include/ # Dummy output to represent the target directory +# COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include # Create the include directory if it doesn't exist +# COMMAND ${CMAKE_COMMAND} -E copy_if_different ${cbind_header_C_files} ${CMAKE_BINARY_DIR}/include/ # Copy all headers +# DEPENDS ${cbind_header_C_files} # Make the copy depend on the header files +# COMMENT "Copying header files to include directory" +#) + +# Create a custom target to copy headers +#add_custom_target(copy_headers ALL DEPENDS ${CMAKE_BINARY_DIR}/include/) + + foreach(path IN LISTS cbind_header_C_files) + + # Copy the header file to the include directory + file(COPY "${path}" DESTINATION "${CMAKE_BINARY_DIR}/include") + message(STATUS "Copied ${path} to ${CMAKE_BINARY_DIR}/include") + + endforeach() + + + +#target_include_directories(cbind PUBLIC +# $ +# $) +# Include directories for the cbind library +#target_include_directories(cbind_C PUBLIC +# $ # Path for building +# $ # Path for installation +# ${CMAKE_BINARY_DIR}/include # Include the copied headers +#) + + + + + +if(MPI_FOUND) +# Copy mpi.mod from the first available path in MPI_Fortran_INCLUDE_PATH + set(MPI_MOD_COPIED FALSE) + + foreach(path IN LISTS MPI_Fortran_INCLUDE_PATH) + # Construct the full path to the mpi.mod file + set(mpi_mod_path "${path}/mpi.mod") + + # Check if the mpi.mod file exists + if(EXISTS "${mpi_mod_path}") + # Copy the mpi.mod file to the module directory + file(COPY "${mpi_mod_path}" DESTINATION "${CMAKE_Fortran_MODULE_DIRECTORY}") + message(STATUS "Copied mpi.mod from ${mpi_mod_path} to ${CMAKE_Fortran_MODULE_DIRECTORY}") + set(MPI_MOD_COPIED TRUE) + break() # Exit the loop once we've copied the file + endif() + endforeach() + + if(NOT MPI_MOD_COPIED) + message(WARNING "mpi.mod not found in any of the specified paths: ${MPI_Fortran_INCLUDE_PATH}") + endif() + + + foreach(lib base prec linsolve ext util cbind) + target_link_libraries(${lib} PUBLIC ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES}) + endforeach() +endif() + +if(OpenCoarrays_FOUND) + foreach(lib base prec linsolve ext util cbind) #TODO: check if cbind goes here! + target_link_libraries(${lib} PUBLIC OpenCoarrays::caf_mpi_static) + endforeach() +endif() + + + + +# Install the header files to the include directory +#install(FILES ${cbind_header_C_files} +# DESTINATION include +#) + +install(DIRECTORY "${CMAKE_BINARY_DIR}/include" DESTINATION "include" + FILES_MATCHING PATTERN "*.h") + +install(DIRECTORY "${CMAKE_BINARY_DIR}/modules" DESTINATION "modules" + FILES_MATCHING PATTERN "*.mod") + +install(TARGETS base prec linsolve ext util cbind + EXPORT ${CMAKE_PROJECT_NAME}-targets + DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) + + + +if(WIN32) + install(TARGETS psb_base_C + EXPORT ${CMAKE_PROJECT_NAME}-targets + DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) + if(METIS_FOUND) + install(TARGETS psb_util_C + EXPORT ${CMAKE_PROJECT_NAME}-targets + DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) + endif() +endif() + +#----------------- +# Add PSBLAS tests +#----------------- + +# Unit tests targeting each function, argument, and branch of code +# add_mpi_test(initialize_mpi 2 initialize_mpi) diff --git a/base/CMakeLists.txt b/base/CMakeLists.txt new file mode 100644 index 00000000..fc30a22a --- /dev/null +++ b/base/CMakeLists.txt @@ -0,0 +1,638 @@ +set(PSB_base_source_files + comm/psb_dovrl_a.f90 + comm/psb_dovrl.f90 +# comm/psb_i2halo_a.f90 + comm/internals/psi_zswaptran.F90 +# comm/internals/psi_i2ovrl_upd_a.f90 + comm/internals/psi_lovrl_save.f90 + comm/internals/psi_movrl_save_a.f90 + comm/internals/psi_sovrl_restr_a.f90 + comm/internals/psi_sovrl_upd_a.f90 + comm/internals/psi_zswaptran_a.F90 + comm/internals/psi_lovrl_restr.f90 + comm/internals/psi_iswapdata.F90 + comm/internals/psi_covrl_upd_a.f90 + comm/internals/psi_dswaptran_a.F90 + comm/internals/psi_lovrl_upd.f90 + comm/internals/psi_dswapdata_a.F90 + comm/internals/psi_movrl_upd_a.f90 +# comm/internals/psi_i2swaptran_a.F90 + comm/internals/psi_dswaptran.F90 + comm/internals/psi_covrl_save_a.f90 + comm/internals/psi_eovrl_restr_a.f90 + comm/internals/psi_sswaptran_a.F90 + comm/internals/psi_dovrl_save_a.f90 + comm/internals/psi_lswapdata.F90 + comm/internals/psi_cswapdata.F90 + comm/internals/psi_dswapdata.F90 + comm/internals/psi_sovrl_save.f90 + comm/internals/psi_iswaptran.F90 + comm/internals/psi_sswapdata_a.F90 + comm/internals/psi_sswaptran.F90 + comm/internals/psi_lswaptran.F90 + comm/internals/psi_mswaptran_a.F90 +# comm/internals/psi_i2ovrl_restr_a.f90 + comm/internals/psi_covrl_restr.f90 + comm/internals/psi_mswapdata_a.F90 + comm/internals/psi_zovrl_restr_a.f90 + comm/internals/psi_dovrl_restr_a.f90 + comm/internals/psi_covrl_restr_a.f90 + comm/internals/psi_sswapdata.F90 + comm/internals/psi_sovrl_save_a.f90 + comm/internals/psi_iovrl_upd.f90 + comm/internals/psi_eswaptran_a.F90 + comm/internals/psi_iovrl_save.f90 + comm/internals/psi_zovrl_restr.f90 + comm/internals/psi_zovrl_upd.f90 + comm/internals/psi_dovrl_upd_a.f90 + comm/internals/psi_dovrl_restr.f90 + comm/internals/psi_zswapdata_a.F90 + comm/internals/psi_dovrl_save.f90 + comm/internals/psi_covrl_save.f90 +# comm/internals/psi_i2swapdata_a.F90 + comm/internals/psi_dovrl_upd.f90 + comm/internals/psi_eovrl_save_a.f90 + comm/internals/psi_zovrl_upd_a.f90 + comm/internals/psi_zswapdata.F90 + comm/internals/psi_covrl_upd.f90 + comm/internals/psi_cswaptran.F90 +# comm/internals/psi_i2ovrl_save_a.f90 + comm/internals/psi_sovrl_upd.f90 + comm/internals/psi_eswapdata_a.F90 + comm/internals/psi_movrl_restr_a.f90 + comm/internals/psi_iovrl_restr.f90 + comm/internals/psi_cswapdata_a.F90 + comm/internals/psi_zovrl_save.f90 + comm/internals/psi_eovrl_upd_a.f90 + comm/internals/psi_zovrl_save_a.f90 + comm/internals/psi_cswaptran_a.F90 + comm/internals/psi_sovrl_restr.f90 + comm/psb_dhalo.f90 + comm/psb_zgather_a.f90 + comm/psb_zovrl.f90 + comm/psb_mhalo_a.f90 + comm/psb_zscatter_a.F90 + comm/psb_chalo.f90 + comm/psb_zscatter.F90 + comm/psb_cscatter_a.F90 + comm/psb_cspgather.F90 + comm/psb_cscatter.F90 + comm/psb_shalo_a.f90 + comm/psb_cgather.f90 + comm/psb_zhalo.f90 + comm/psb_movrl_a.f90 + comm/psb_chalo_a.f90 +# comm/psb_i2scatter_a.F90 + comm/psb_sgather_a.f90 +# comm/psb_i2ovrl_a.f90 + comm/psb_zovrl_a.f90 + comm/psb_covrl.f90 + comm/psb_shalo.f90 + comm/psb_dscatter_a.F90 + comm/psb_lgather.f90 + comm/psb_iscatter.F90 + comm/psb_sovrl_a.f90 + comm/psb_dscatter.F90 + comm/psb_eovrl_a.f90 + comm/psb_lovrl.f90 +## comm/psb_lspgather.F90 +## comm/psb_ispgather.F90 + comm/psb_zhalo_a.f90 + comm/psb_sscatter_a.F90 + comm/psb_lscatter.F90 +# comm/psb_i2gather_a.f90 + comm/psb_ihalo.f90 + comm/psb_iovrl.f90 + comm/psb_zspgather.F90 + comm/psb_escatter_a.F90 + comm/psb_mscatter_a.F90 + comm/psb_egather_a.f90 + comm/psb_covrl_a.f90 + comm/psb_sgather.f90 + comm/psb_dhalo_a.f90 + comm/psb_zgather.f90 + comm/psb_igather.f90 + comm/psb_sovrl.f90 + comm/psb_sspgather.F90 + comm/psb_cgather_a.f90 + comm/psb_ehalo_a.f90 + comm/psb_dgather_a.f90 + comm/psb_dspgather.F90 + comm/psb_sscatter.F90 + comm/psb_mgather_a.f90 + comm/psb_dgather.f90 + comm/psb_lhalo.f90 + internals/psi_bld_glb_dep_list.F90 + internals/psi_graph_fnd_owner.F90 + internals/psi_sort_dl.f90 + internals/psi_indx_map_fnd_owner.F90 + internals/psi_fnd_owner.F90 + internals/psi_bld_tmpovrl.f90 + internals/psi_symm_dep_list.F90 + internals/psi_desc_impl.f90 +### internals/psi_compute_size.f90 + internals/psi_hash_impl.f90 + internals/psi_crea_ovr_elem.f90 + internals/psi_a2a_fnd_owner.F90 + internals/psi_bld_tmphalo.f90 + internals/psi_crea_bnd_elem.f90 + internals/psi_desc_index.F90 + internals/psi_xtr_loc_dl.F90 + internals/psi_crea_index.f90 + internals/psi_srtlist.f90 + internals/psi_adjcncy_fnd_owner.F90 + tools/psb_sins.f90 + tools/psb_zspasb.f90 + tools/psb_zspalloc.f90 +# tools/psb_i2_remote_vect.F90 + tools/psb_sfree_a.f90 + tools/psb_cdprt.f90 + tools/psb_c_glob_transpose.F90 + tools/psb_ssphalo.F90 + tools/psb_sallc.f90 + tools/psb_sspasb.f90 + tools/psb_zasb.f90 + tools/psb_z_par_csr_spspmm.f90 + tools/psb_iasb.f90 + tools/psb_cdalv.f90 + tools/psb_sspfree.f90 + tools/psb_icdasb.F90 + tools/psb_zallc_a.f90 + tools/psb_d_map.f90 + tools/psb_lfree.f90 +# tools/psb_i2ins_a.f90 + tools/psb_s_remap.F90 + tools/psb_cspalloc.f90 + tools/psb_glob_to_loc.f90 + tools/psb_cdrep.f90 + tools/psb_mins_a.f90 + tools/psb_dallc_a.f90 + tools/psb_d_remote_vect.F90 + tools/psb_cfree.f90 + tools/psb_scdbldext.F90 + tools/psb_cspins.F90 + tools/psb_z_remote_vect.F90 + tools/psb_ssprn.f90 + tools/psb_cdals.f90 + tools/psb_sgetelem.f90 + tools/psb_cspfree.f90 + tools/psb_cins.f90 +# tools/psb_i2free_a.f90 + tools/psb_dspins.F90 +# tools/psb_i2asb_a.f90 + tools/psb_dsphalo.F90 + tools/psb_d_glob_transpose.F90 + tools/psb_c_par_csr_spspmm.f90 + tools/psb_callc_a.f90 + tools/psb_masb_a.f90 + tools/psb_ccdbldext.F90 + tools/psb_dfree_a.f90 + tools/psb_dspasb.f90 + tools/psb_sasb_a.f90 + tools/psb_z_remote_mat.F90 + tools/psb_c_remote_vect.F90 + tools/psb_cd_switch_ovl_indxmap.f90 + tools/psb_dfree.f90 + tools/psb_dasb.f90 + tools/psb_cd_inloc.f90 + tools/psb_mfree_a.f90 + tools/psb_zspfree.f90 + tools/psb_s_glob_transpose.F90 + tools/psb_sfree.f90 + tools/psb_dcdbldext.F90 + tools/psb_eins_a.f90 + tools/psb_s_map.f90 + tools/psb_dsprn.f90 + tools/psb_d_remap.F90 + tools/psb_iins.f90 + tools/psb_sasb.f90 + tools/psb_zgetelem.f90 + tools/psb_z_map.f90 + tools/psb_dins_a.f90 + tools/psb_loc_to_glob.f90 + tools/psb_cgetelem.f90 + tools/psb_zcdbldext.F90 + tools/psb_d_remote_mat.F90 + tools/psb_cd_set_bld.f90 + tools/psb_zfree.f90 + tools/psb_zallc.f90 + tools/psb_lallc.f90 + tools/psb_cd_reinit.f90 + tools/psb_csphalo.F90 + tools/psb_cfree_a.f90 + tools/psb_cd_lstext.f90 + tools/psb_zfree_a.f90 + tools/psb_s_par_csr_spspmm.f90 + tools/psb_dgetelem.f90 + tools/psb_callc.f90 + tools/psb_d_par_csr_spspmm.f90 + tools/psb_sspins.F90 + tools/psb_sallc_a.f90 + tools/psb_c_remote_mat.F90 + tools/psb_zins.f90 + tools/psb_e_remote_vect.F90 + tools/psb_zsphalo.F90 + tools/psb_cdren.f90 + tools/psb_casb_a.f90 + tools/psb_dins.f90 + tools/psb_ifree.f90 + tools/psb_mallc_a.f90 + tools/psb_s_remote_vect.F90 + tools/psb_c_remap.F90 + tools/psb_efree_a.f90 + tools/psb_sins_a.f90 + tools/psb_cdins.F90 + tools/psb_cdall.f90 + tools/psb_lasb.f90 + tools/psb_csprn.f90 + tools/psb_casb.f90 + tools/psb_c_map.f90 + tools/psb_lins.f90 + tools/psb_cspasb.f90 + tools/psb_dspfree.f90 + tools/psb_sspalloc.f90 + tools/psb_z_remap.F90 + tools/psb_z_glob_transpose.F90 + tools/psb_easb_a.f90 + tools/psb_cins_a.f90 + tools/psb_iallc.f90 + tools/psb_m_remote_vect.F90 + tools/psb_eallc_a.f90 + tools/psb_dspalloc.f90 + tools/psb_zasb_a.f90 + tools/psb_s_remote_mat.F90 + tools/psb_cd_remap.F90 + tools/psb_zspins.F90 + tools/psb_zins_a.f90 + tools/psb_cdcpy.F90 +# tools/psb_i2allc_a.f90 + tools/psb_dallc.f90 + tools/psb_cd_renum_block.F90 + tools/psb_dasb_a.f90 + tools/psb_zsprn.f90 + tools/psb_get_overlap.f90 + serial/psb_crwextd.f90 + serial/psb_zspspmm.f90 + serial/psb_drwextd.f90 + serial/psb_dnumbmm.f90 + serial/psb_damax_s.f90 + serial/psb_zgeprt.f90 + serial/impl/psb_c_coo_impl.F90 + serial/impl/psb_d_coo_impl.F90 + serial/impl/psb_d_csc_impl.F90 + serial/impl/psb_s_coo_impl.F90 + serial/impl/psb_c_csc_impl.F90 + serial/impl/psb_c_rb_idx_tree_impl.F90 + serial/impl/psb_z_csc_impl.F90 + serial/impl/psb_d_mat_impl.F90 + serial/impl/psb_s_csr_impl.F90 + serial/impl/psb_c_mat_impl.F90 + serial/impl/psb_c_csr_impl.F90 + serial/impl/psb_z_mat_impl.F90 + serial/impl/psb_s_rb_idx_tree_impl.F90 + serial/impl/psb_d_csr_impl.F90 + serial/impl/psb_s_mat_impl.F90 + serial/impl/psb_s_base_mat_impl.F90 + serial/impl/psb_base_mat_impl.f90 + serial/impl/psb_d_rb_idx_tree_impl.F90 + serial/impl/psb_z_rb_idx_tree_impl.F90 + serial/impl/psb_z_csr_impl.F90 + serial/impl/psb_z_coo_impl.F90 + serial/impl/psb_c_base_mat_impl.F90 + serial/impl/psb_z_base_mat_impl.F90 + serial/impl/psb_d_base_mat_impl.F90 + serial/impl/psb_s_csc_impl.F90 + serial/smmp.f90 + serial/psi_m_serial_impl.F90 + serial/psb_spdot_srtd.f90 + serial/psb_sasum_s.f90 + serial/psb_snumbmm.f90 + serial/psb_camax_s.f90 + serial/lsmmp.f90 + serial/psb_csymbmm.f90 + serial/psb_dgeprt.f90 + serial/psb_zrwextd.f90 + serial/psb_srwextd.f90 + serial/psb_znumbmm.f90 + serial/sort/psb_c_msort_impl.f90 + serial/sort/psb_c_hsort_impl.f90 + serial/sort/psb_m_isort_impl.f90 + serial/sort/psb_m_msort_impl.f90 + serial/sort/psb_s_hsort_impl.f90 + serial/sort/psb_e_isort_impl.f90 + serial/sort/psb_m_qsort_impl.f90 + serial/sort/psb_z_hsort_impl.f90 + serial/sort/psb_s_qsort_impl.f90 + serial/sort/psb_z_qsort_impl.f90 + serial/sort/psb_c_isort_impl.f90 + serial/sort/psb_e_msort_impl.f90 + serial/sort/psb_d_msort_impl.f90 + serial/sort/psb_d_qsort_impl.f90 + serial/sort/psb_s_isort_impl.f90 + serial/sort/psb_z_isort_impl.f90 + serial/sort/psb_e_hsort_impl.f90 + serial/sort/psb_z_msort_impl.f90 + serial/sort/psb_s_msort_impl.f90 + serial/sort/psb_m_hsort_impl.f90 + serial/sort/psb_d_hsort_impl.f90 + serial/sort/psb_e_qsort_impl.f90 + serial/sort/psb_d_isort_impl.f90 + serial/sort/psb_c_qsort_impl.f90 + serial/psb_dasum_s.f90 + serial/psi_z_serial_impl.F90 + serial/psb_dsymbmm.f90 + serial/psb_samax_s.f90 + serial/psb_lsame.f90 + serial/psb_dspspmm.f90 + serial/psb_ssymbmm.f90 + serial/psb_cgeprt.f90 + serial/psb_sgeprt.f90 +# serial/psi_i2_serial_impl.F90 + serial/psi_e_serial_impl.F90 + serial/psb_zsymbmm.f90 + serial/psb_cspspmm.f90 + serial/psb_aspxpby.f90 + serial/psi_s_serial_impl.F90 + serial/psb_zamax_s.f90 + serial/psb_spge_dot.f90 + serial/psb_zasum_s.f90 + serial/psb_casum_s.f90 + serial/psi_d_serial_impl.F90 + serial/psi_c_serial_impl.F90 + serial/psb_sspspmm.f90 + serial/psb_cnumbmm.f90 + psblas/psb_damax.f90 + psblas/psb_dspmm.f90 + psblas/psb_dasum.f90 + psblas/psb_sgetmatinfo.F90 + psblas/psb_dspnrm1.f90 +### psblas/psb_zvmlt.f90 + psblas/psb_daxpby.f90 + psblas/psb_smlt_vect.f90 + psblas/psb_dspsm.f90 + psblas/psb_zabs_vect.f90 + psblas/psb_zspmm.f90 + psblas/psb_sinv_vect.f90 + psblas/psb_zinv_vect.f90 + psblas/psb_dmlt_vect.f90 + psblas/psb_sabs_vect.f90 + psblas/psb_ddot.f90 + psblas/psb_camax.f90 + psblas/psb_cdiv_vect.f90 + psblas/psb_ddiv_vect.f90 + psblas/psb_dabs_vect.f90 + psblas/psb_zmlt_vect.f90 + psblas/psb_caxpby.f90 + psblas/psb_zaxpby.f90 + psblas/psb_cspsm.f90 + psblas/psb_sspnrm1.f90 + psblas/psb_cabs_vect.f90 +### psblas/psb_dvmlt.f90 + psblas/psb_zdot.f90 + psblas/psb_zgetmatinfo.F90 + psblas/psb_znrm2.f90 + psblas/psb_sspmm.f90 + psblas/psb_cspmm.f90 + psblas/psb_cnrmi.f90 + psblas/psb_ccmp_vect.f90 + psblas/psb_casum.f90 + psblas/psb_scmp_vect.f90 +### psblas/psb_svmlt.f90 + psblas/psb_sdot.f90 + psblas/psb_cmlt_vect.f90 + psblas/psb_dnrmi.f90 + psblas/psb_dcmp_vect.f90 + psblas/psb_cnrm2.f90 + psblas/psb_cgetmatinfo.F90 +### psblas/psb_cvmlt.f90 + psblas/psb_zamax.f90 + psblas/psb_dinv_vect.f90 + psblas/psb_dnrm2.f90 + psblas/psb_zspsm.f90 + psblas/psb_snrm2.f90 + psblas/psb_sdiv_vect.f90 + psblas/psb_zdiv_vect.f90 + psblas/psb_znrmi.f90 + psblas/psb_saxpby.f90 + psblas/psb_zspnrm1.f90 + psblas/psb_dgetmatinfo.F90 + psblas/psb_sasum.f90 + psblas/psb_zcmp_vect.f90 + psblas/psb_samax.f90 + psblas/psb_snrmi.f90 + psblas/psb_cdot.f90 + psblas/psb_cspnrm1.f90 + psblas/psb_sspsm.f90 + psblas/psb_cinv_vect.f90 + psblas/psb_zasum.f90 + modules/comm/psi_z_comm_v_mod.f90 +# modules/comm/psb_i2_comm_a_mod.f90 + modules/comm/psb_m_comm_a_mod.f90 + modules/comm/psb_z_linmap_mod.f90 + modules/comm/psi_s_comm_a_mod.f90 +# modules/comm/psi_i2_comm_a_mod.f90 + modules/comm/psi_m_comm_a_mod.f90 + modules/comm/psi_l_comm_v_mod.f90 + modules/comm/psb_comm_mod.f90 + modules/comm/psb_l_comm_mod.f90 + modules/comm/psb_d_linmap_mod.f90 + modules/comm/psi_d_comm_v_mod.f90 + modules/comm/psb_c_linmap_mod.f90 + modules/comm/psb_s_comm_mod.f90 + modules/comm/psb_base_linmap_mod.f90 + modules/comm/psi_d_comm_a_mod.f90 + modules/comm/psb_s_linmap_mod.f90 + modules/comm/psi_s_comm_v_mod.f90 + modules/comm/psb_s_comm_a_mod.f90 + modules/comm/psb_c_comm_mod.f90 + modules/comm/psb_i_comm_mod.f90 + modules/comm/psi_c_comm_v_mod.f90 + modules/comm/psb_d_comm_a_mod.f90 + modules/comm/psi_z_comm_a_mod.f90 + modules/comm/psb_z_comm_mod.f90 + modules/comm/psi_i_comm_v_mod.f90 + modules/comm/psb_e_comm_a_mod.f90 + modules/comm/psb_d_comm_mod.f90 + modules/comm/psi_e_comm_a_mod.f90 + modules/comm/psb_c_comm_a_mod.f90 + modules/comm/psb_linmap_mod.f90 + modules/comm/psb_z_comm_a_mod.f90 + modules/comm/psi_c_comm_a_mod.f90 +# modules/auxil/psb_i2_isort_mod.f90 + modules/auxil/psb_z_ip_reord_mod.F90 + modules/auxil/psi_s_serial_mod.f90 + modules/auxil/psb_s_hsort_x_mod.f90 + modules/auxil/psb_s_qsort_mod.f90 + modules/auxil/psb_d_hsort_mod.f90 + modules/auxil/psi_alcx_mod.f90 + modules/auxil/psb_e_ip_reord_mod.F90 +# modules/auxil/psb_i2_msort_mod.f90 + modules/auxil/psb_rb_idx_tree_mod.f90 + modules/auxil/psb_m_isort_mod.f90 + modules/auxil/psb_e_msort_mod.f90 + modules/auxil/psb_c_msort_mod.f90 + modules/auxil/psb_e_isort_mod.f90 + modules/auxil/psb_c_rb_idx_tree_mod.f90 + modules/auxil/psb_c_realloc_mod.F90 + modules/auxil/psb_ip_reord_mod.F90 + modules/auxil/psb_e_qsort_mod.f90 + modules/auxil/psi_e_serial_mod.f90 + modules/auxil/psi_serial_mod.f90 + modules/auxil/psb_l_hsort_x_mod.f90 + modules/auxil/psi_lcx_mod.f90 + modules/auxil/psb_d_rb_idx_tree_mod.f90 + modules/auxil/psb_m_realloc_mod.F90 + modules/auxil/psb_z_isort_mod.f90 + modules/auxil/psb_e_hsort_mod.f90 + modules/auxil/psi_m_serial_mod.f90 +# modules/auxil/psi_i2_serial_mod.f90 + modules/auxil/psb_s_isort_mod.f90 + modules/auxil/psb_e_realloc_mod.F90 + modules/auxil/psb_c_hsort_mod.f90 + modules/auxil/psb_z_msort_mod.f90 + modules/auxil/psi_d_serial_mod.f90 + modules/auxil/psb_z_qsort_mod.f90 +# modules/auxil/psb_i2_hsort_mod.f90 + modules/auxil/psb_m_msort_mod.f90 + modules/auxil/psb_m_ip_reord_mod.F90 + modules/auxil/psb_string_mod.f90 + modules/auxil/psb_c_isort_mod.f90 + modules/auxil/psb_d_hsort_x_mod.f90 + modules/auxil/psb_s_hsort_mod.f90 + modules/auxil/psb_i_hsort_x_mod.f90 + modules/auxil/psb_d_qsort_mod.f90 + modules/auxil/psb_s_realloc_mod.F90 + modules/auxil/psb_m_hsort_mod.f90 + modules/auxil/psb_z_realloc_mod.F90 + modules/auxil/psb_z_rb_idx_tree_mod.f90 +# modules/auxil/psb_i2_ip_reord_mod.F90 +# modules/auxil/psb_i2_realloc_mod.F90 + modules/auxil/psb_s_rb_idx_tree_mod.f90 + modules/auxil/psb_c_hsort_x_mod.f90 + modules/auxil/psb_s_ip_reord_mod.F90 + modules/auxil/psb_d_isort_mod.f90 + modules/auxil/psi_z_serial_mod.f90 +# modules/auxil/psb_i2_qsort_mod.f90 + modules/auxil/psb_d_msort_mod.f90 + modules/auxil/psb_c_qsort_mod.f90 + modules/auxil/psb_z_hsort_x_mod.f90 + modules/auxil/psb_c_ip_reord_mod.F90 + modules/auxil/psb_sort_mod.f90 + modules/auxil/psi_acx_mod.f90 + modules/auxil/psb_d_realloc_mod.F90 + modules/auxil/psb_m_qsort_mod.f90 + modules/auxil/psb_s_msort_mod.f90 + modules/auxil/psi_c_serial_mod.f90 + modules/auxil/psb_d_ip_reord_mod.F90 + modules/auxil/psb_z_hsort_mod.f90 + modules/psi_d_mod.F90 + modules/psi_l_mod.F90 + modules/penv/psi_d_collective_mod.F90 + modules/penv/psi_m_p2p_mod.F90 +# modules/penv/psi_i2_collective_mod.F90 + modules/penv/psi_s_p2p_mod.F90 + modules/penv/psi_e_p2p_mod.F90 + modules/penv/psi_m_collective_mod.F90 + modules/penv/psi_d_p2p_mod.F90 + modules/penv/psi_p2p_mod.F90 + modules/penv/psi_penv_mod.F90 + modules/penv/psi_z_p2p_mod.F90 + modules/penv/psi_c_collective_mod.F90 + modules/penv/psi_collective_mod.F90 +# modules/penv/psi_i2_p2p_mod.F90 + modules/penv/psi_c_p2p_mod.F90 + modules/penv/psi_e_collective_mod.F90 + modules/penv/psi_z_collective_mod.F90 + modules/penv/psi_s_collective_mod.F90 + modules/psb_cbind_const_mod.F90 + modules/psi_s_mod.F90 + modules/psi_c_mod.F90 + modules/tools/psb_s_tools_a_mod.f90 + modules/tools/psb_d_tools_a_mod.f90 + modules/tools/psb_z_tools_a_mod.f90 + modules/tools/psb_i_tools_mod.F90 + modules/tools/psb_s_tools_mod.F90 + modules/tools/psb_tools_mod.f90 + modules/tools/psb_m_tools_a_mod.f90 + modules/tools/psb_cd_tools_mod.F90 + modules/tools/psb_d_tools_mod.F90 + modules/tools/psb_c_tools_mod.F90 + modules/tools/psb_e_tools_a_mod.f90 +# modules/tools/psb_i2_tools_a_mod.f90 + modules/tools/psb_c_tools_a_mod.f90 + modules/tools/psb_z_tools_mod.F90 + modules/tools/psb_l_tools_mod.F90 + modules/psb_realloc_mod.F90 + modules/psb_check_mod.f90 + modules/serial/psb_mat_mod.f90 + modules/serial/psb_s_csr_mat_mod.f90 + modules/serial/psb_z_mat_mod.F90 + modules/serial/psb_z_vect_mod.F90 + modules/serial/psb_l_base_vect_mod.F90 + modules/serial/psb_c_serial_mod.f90 + modules/serial/psb_z_csc_mat_mod.f90 + modules/serial/psb_d_csc_mat_mod.f90 + modules/serial/psb_z_serial_mod.f90 + modules/serial/psb_c_base_mat_mod.F90 + modules/serial/psb_z_base_mat_mod.F90 + modules/serial/psb_z_csr_mat_mod.f90 + modules/serial/psb_c_csc_mat_mod.f90 + modules/serial/psb_z_base_vect_mod.F90 + modules/serial/psb_l_vect_mod.F90 + modules/serial/psb_d_csr_mat_mod.f90 + modules/serial/psb_c_csr_mat_mod.f90 + modules/serial/psb_s_base_mat_mod.F90 + modules/serial/psb_base_mat_mod.F90 + modules/serial/psb_i_base_vect_mod.F90 + modules/serial/psb_s_vect_mod.F90 + modules/serial/psb_s_base_vect_mod.F90 + modules/serial/psb_d_base_vect_mod.F90 + modules/serial/psb_c_mat_mod.F90 + modules/serial/psb_d_base_mat_mod.F90 + modules/serial/psb_c_vect_mod.F90 + modules/serial/psb_d_mat_mod.F90 + modules/serial/psb_s_mat_mod.F90 + modules/serial/psb_i_vect_mod.F90 + modules/serial/psb_d_vect_mod.F90 + modules/serial/psb_c_base_vect_mod.F90 + modules/serial/psb_vect_mod.f90 + modules/serial/psb_d_serial_mod.f90 + modules/serial/psb_s_csc_mat_mod.f90 + modules/serial/psb_s_serial_mod.f90 + modules/serial/psb_serial_mod.f90 + modules/psi_mod.f90 + modules/error.f90 + modules/psb_const_mod.F90 + modules/psblas/psb_c_psblas_mod.F90 + modules/psblas/psb_s_psblas_mod.F90 + modules/psblas/psb_d_psblas_mod.F90 + modules/psblas/psb_z_psblas_mod.F90 + modules/psblas/psb_psblas_mod.f90 + modules/psb_error_impl.F90 + modules/psb_penv_mod.F90 + modules/psb_error_mod.F90 + modules/psb_timers_mod.f90 + modules/psi_i_mod.F90 + modules/psi_z_mod.F90 + modules/desc/psb_desc_const_mod.f90 + modules/desc/psb_indx_map_mod.F90 + modules/desc/psb_hash_mod.F90 + modules/desc/psb_desc_mod.F90 + modules/desc/psb_gen_block_map_mod.F90 + modules/desc/psb_list_map_mod.F90 + modules/desc/psb_repl_map_mod.F90 + modules/desc/psb_hash_map_mod.F90 + modules/desc/psb_glist_map_mod.F90 + modules/psb_base_mod.f90 +) +foreach(file IN LISTS PSB_base_source_files) + list(APPEND base_source_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() + +list(APPEND PSB_base_source_C_files modules/cutil.c) +if (SERIAL_MPI) + list(APPEND PSB_base_source_C_files modules/fakempi.c) +endif() +foreach(file IN LISTS PSB_base_source_C_files) + list(APPEND base_source_C_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() diff --git a/cbind/CMakeLists.txt b/cbind/CMakeLists.txt new file mode 100644 index 00000000..e7018c78 --- /dev/null +++ b/cbind/CMakeLists.txt @@ -0,0 +1,95 @@ +set(PSB_cbind_source_files + base/psb_d_tools_cbind_mod.F90 + base/psb_s_tools_cbind_mod.F90 + base/psb_d_psblas_cbind_mod.f90 + base/psb_objhandle_mod.F90 + base/psb_base_psblas_cbind_mod.f90 + base/psb_z_psblas_cbind_mod.f90 + base/psb_c_comm_cbind_mod.f90 + base/psb_z_serial_cbind_mod.F90 + base/psb_d_serial_cbind_mod.F90 + base/psb_c_tools_cbind_mod.F90 + base/psb_c_serial_cbind_mod.F90 + base/psb_base_string_cbind_mod.f90 + base/psb_base_tools_cbind_mod.F90 + base/psb_z_comm_cbind_mod.f90 + base/psb_s_serial_cbind_mod.F90 + base/psb_base_cbind_mod.f90 + base/psb_s_comm_cbind_mod.f90 + base/psb_s_psblas_cbind_mod.f90 + base/psb_c_psblas_cbind_mod.f90 + base/psb_d_comm_cbind_mod.f90 + base/psb_z_tools_cbind_mod.F90 + base/psb_cpenv_mod.f90 + util/psb_c_util_cbind_mod.f90 + util/psb_s_util_cbind_mod.f90 + util/psb_util_cbind_mod.f90 + util/psb_d_util_cbind_mod.f90 + util/psb_z_util_cbind_mod.f90 + krylov/psb_ckrylov_cbind_mod.f90 + krylov/psb_base_krylov_cbind_mod.f90 + krylov/psb_skrylov_cbind_mod.f90 + krylov/psb_dkrylov_cbind_mod.f90 + krylov/psb_zkrylov_cbind_mod.f90 + prec/psb_dprec_cbind_mod.f90 + prec/psb_cprec_cbind_mod.f90 + prec/psb_prec_cbind_mod.f90 + prec/psb_sprec_cbind_mod.f90 + prec/psb_zprec_cbind_mod.f90 +) +foreach(file IN LISTS PSB_cbind_source_files) + list(APPEND cbind_source_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() + +list(APPEND PSB_cbind_source_C_files + base/psb_c_dcomm.c + base/psb_c_scomm.c + base/psb_c_zcomm.c + base/psb_c_ccomm.c + base/psb_c_dbase.c + base/psb_c_base.c + base/psb_c_zbase.c + base/psb_c_cbase.c + base/psb_c_sbase.c + prec/psb_c_dprec.c + prec/psb_c_cprec.c + prec/psb_c_zprec.c + prec/psb_c_sprec.c + test/pargen/ppdec.c + + ) + +list(APPEND PSB_cbind_header_C_files + base/psb_c_sbase.h + base/psb_c_base.h + base/psb_c_dcomm.h + base/psb_c_dbase.h + base/psb_c_scomm.h + base/psb_c_ccomm.h + base/psb_base_cbind.h + base/psb_c_cbase.h + base/psb_c_zbase.h + base/psb_c_zcomm.h + util/psb_c_zutil.h + util/psb_c_dutil.h + util/psb_c_sutil.h + util/psb_c_cutil.h + util/psb_util_cbind.h + krylov/psb_krylov_cbind.h + prec/psb_c_sprec.h + prec/psb_c_cprec.h + prec/psb_prec_cbind.h + prec/psb_c_dprec.h + prec/psb_c_zprec.h +) + +#if (SERIAL_MPI) +# list(APPEND PSB_base_source_C_files modules/fakempi.c) +#endif() + +foreach(file IN LISTS PSB_cbind_source_C_files) + list(APPEND cbind_source_C_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() +foreach(file IN LISTS PSB_cbind_header_C_files) + list(APPEND cbind_header_C_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() diff --git a/cmake/CapitalizeString.cmake b/cmake/CapitalizeString.cmake new file mode 100644 index 00000000..ae50b474 --- /dev/null +++ b/cmake/CapitalizeString.cmake @@ -0,0 +1,7 @@ +function(CapitalizeString string output_variable) + string(TOUPPER "${string}" _upper_string) + string(TOLOWER "${string}" _lower_string) + string(SUBSTRING "${_upper_string}" 0 1 _start) + string(SUBSTRING "${_lower_string}" 1 -1 _end) + set(${output_variable} "${_start}${_end}" PARENT_SCOPE) +endfunction() diff --git a/cmake/CheckOutOfSourceBuild.cmake b/cmake/CheckOutOfSourceBuild.cmake new file mode 100644 index 00000000..ad176952 --- /dev/null +++ b/cmake/CheckOutOfSourceBuild.cmake @@ -0,0 +1,21 @@ +#-------------------------- +# Prohibit in-source builds +#-------------------------- +if ("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") + message(FATAL_ERROR "ERROR! " + "CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}" + " == CMAKE_CURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}" + "\nThis archive does not support in-source builds:\n" + "You must now delete the CMakeCache.txt file and the CMakeFiles/ directory under " + "the 'src' source directory or you will not be able to configure correctly!" + "\nYou must now run something like:\n" + " $ rm -r CMakeCache.txt CMakeFiles/" + "\n" + "Please create a directory outside the ${CMAKE_PROJECT_NAME} source tree and build under that outside directory " + "in a manner such as\n" + " $ mkdir build\n" + " $ cd build\n" + " $ CC=gcc FC=gfortran cmake -DBUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/to/install/dir /path/to/psblas3/src/dir \n" + "\nsubstituting the appropriate syntax for your shell (the above line assumes the bash shell)." + ) +endif() diff --git a/cmake/FindMETIS.cmake b/cmake/FindMETIS.cmake new file mode 100644 index 00000000..21f95f57 --- /dev/null +++ b/cmake/FindMETIS.cmake @@ -0,0 +1,95 @@ +if (METIS_INCLUDES AND METIS_LIBRARIES) + set(METIS_FIND_QUIETLY TRUE) +endif (METIS_INCLUDES AND METIS_LIBRARIES) + +if( DEFINED ENV{METISDIR} ) + if( NOT DEFINED METIS_ROOT ) + set(METIS_ROOT "$ENV{METISDIR}") + endif() +endif() + +if( (DEFINED ENV{METIS_ROOT}) OR (DEFINED METIS_ROOT) ) + if( NOT DEFINED METIS_ROOT) + set(METIS_ROOT "$ENV{METIS_ROOT}") + endif() + set(METIS_HINTS "${METIS_ROOT}") +endif() + +find_path(METIS_INCLUDES + NAMES + metis.h + HINTS + ${METIS_HINTS} + PATHS + "${INCLUDE_INSTALL_DIR}" + /usr/local/opt + /usr/local + PATH_SUFFIXES + include + ) + +if(METIS_INCLUDES) + foreach(include IN_LISTS METIS_INCLUDES) + get_filename_component(mts_include_dir "${include}" DIRECTORY) + get_filename_component(mts_abs_include_dir "${mts_include_dir}" ABSOLUTE) + get_filename_component(new_mts_hint "${include_dir}/.." ABSOLUTE ) + list(APPEND METIS_HINTS "${new_mts_hint}") + break() + endforeach() +endif() + +if(METIS_HINTS) + list(REMOVE_DUPLICATES METIS_HINTS) +endif() + +macro(_metis_check_version) + file(READ "${METIS_INCLUDES}/metis.h" _metis_version_header) + + string(REGEX MATCH "define[ \t]+METIS_VER_MAJOR[ \t]+([0-9]+)" _metis_major_version_match "${_metis_version_header}") + set(METIS_MAJOR_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+METIS_VER_MINOR[ \t]+([0-9]+)" _metis_minor_version_match "${_metis_version_header}") + set(METIS_MINOR_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+METIS_VER_SUBMINOR[ \t]+([0-9]+)" _metis_subminor_version_match "${_metis_version_header}") + set(METIS_SUBMINOR_VERSION "${CMAKE_MATCH_1}") + if(NOT METIS_MAJOR_VERSION) + message(STATUS "Could not determine Metis version. Assuming version 4.0.0") + set(METIS_VERSION 4.0.0) + else() + set(METIS_VERSION ${METIS_MAJOR_VERSION}.${METIS_MINOR_VERSION}.${METIS_SUBMINOR_VERSION}) + endif() + if(${METIS_VERSION} VERSION_LESS ${Metis_FIND_VERSION}) + set(METIS_VERSION_OK FALSE) + else() + set(METIS_VERSION_OK TRUE) + endif() + + if(NOT METIS_VERSION_OK) + message(STATUS "Metis version ${METIS_VERSION} found in ${METIS_INCLUDES}, " + "but at least version ${Metis_FIND_VERSION} is required") + endif(NOT METIS_VERSION_OK) +endmacro(_metis_check_version) + +if(METIS_INCLUDES AND Metis_FIND_VERSION) + _metis_check_version() +else() + set(METIS_VERSION_OK TRUE) +endif() + + +find_library(METIS_LIBRARIES metis + HINTS + ${METIS_HINTS} + PATHS + "${LIB_INSTALL_DIR}" + /usr/local/ + /usr/local/opt + PATH_SUFFIXES + lib + lib64 + metis/lib) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(METIS DEFAULT_MSG + METIS_INCLUDES METIS_LIBRARIES METIS_VERSION_OK) + +mark_as_advanced(METIS_INCLUDES METIS_LIBRARIES) diff --git a/cmake/makeDist.cmake b/cmake/makeDist.cmake new file mode 100644 index 00000000..f0b46566 --- /dev/null +++ b/cmake/makeDist.cmake @@ -0,0 +1,79 @@ +# CMake file to be called in script mode (${CMAKE_COMMAND} -P ) to +# Generate a source archive release asset from add_custom_command +# +# See SourceDistTarget.cmake + +if(NOT CMAKE_ARGV3) + message(FATAL_ERROR "Must pass the top level src dir to ${CMAKE_ARGV2} as the first argument") +endif() + +if(NOT CMAKE_ARGV4) + message(FATAL_ERROR "Must pass the top level src dir to ${CMAKE_ARGV2} as the second argument") +endif() + +find_package(Git) +if(NOT GIT_FOUND) + message( FATAL_ERROR "You can't create a source archive release asset without git!") +endif() + +execute_process(COMMAND "${GIT_EXECUTABLE}" describe --always + RESULT_VARIABLE git_status + OUTPUT_VARIABLE git_version + WORKING_DIRECTORY "${CMAKE_ARGV3}" + OUTPUT_STRIP_TRAILING_WHITESPACE) +if(NOT (git_status STREQUAL "0")) + message( FATAL_ERROR "git describe --always failed with exit status: ${git_status} and message: +${git_version}") +endif() + +set(archive "PSBLAS-${git_version}") +set(l_archive "PSBLAS-${git_version}") +set(release_asset "${CMAKE_ARGV4}/${archive}.tar.gz") +execute_process( + COMMAND "${GIT_EXECUTABLE}" archive "--prefix=${archive}/" -o "${release_asset}" "${git_version}" + RESULT_VARIABLE git_status + OUTPUT_VARIABLE git_output + WORKING_DIRECTORY "${CMAKE_ARGV3}" + OUTPUT_STRIP_TRAILING_WHITESPACE) + +if(NOT (git_status STREQUAL "0")) + message( FATAL_ERROR "git archive ... failed with exit status: ${git_status} and message: +${git_output}") +else() + message( STATUS "Source code release asset created from `git archive`: ${release_asset}") +endif() + +file(SHA256 "${release_asset}" tarball_sha256) +set(sha256_checksum "${tarball_sha256} ${archive}.tar.gz") +configure_file("${CMAKE_ARGV3}/cmake/PSBLAS-VER-SHA256.txt.in" + "${CMAKE_ARGV4}/${l_archive}-SHA256.txt" + @ONLY) +message( STATUS + "SHA 256 checksum of release tarball written out as: ${CMAKE_ARGV4}/${l_archive}-SHA256.txt" ) + +find_program(GPG_EXECUTABLE + gpg + DOC "Location of GnuPG (gpg) executable") + +if(GPG_EXECUTABLE) + execute_process( + COMMAND "${GPG_EXECUTABLE}" --armor --detach-sign --comment "@gpg_comment@" "${CMAKE_ARGV4}/${l_archive}-SHA256.txt" + RESULT_VARIABLE gpg_status + OUTPUT_VARIABLE gpg_output + WORKING_DIRECTORY "${CMAKE_ARGV4}") + if(NOT (gpg_status STREQUAL "0")) + message( WARNING "GPG signing of ${CMAKE_ARGV4}/${l_archive}-SHA256.txt appears to have failed +with status: ${gpg_status} and output: ${gpg_output}") + else() + configure_file("${CMAKE_ARGV3}/cmake/PSBLAS-VER-SHA256.txt.asc.in" + "${CMAKE_ARGV4}/${l_archive}-GPG.comment" + @ONLY) + file(READ "${CMAKE_ARGV4}/${l_archive}-GPG.comment" gpg_comment) + configure_file("${CMAKE_ARGV4}/${l_archive}-SHA256.txt.asc" + "${CMAKE_ARGV4}/${l_archive}-SHA256.txt.asc.out" + @ONLY) + file(RENAME "${CMAKE_ARGV4}/${l_archive}-SHA256.txt.asc.out" + "${CMAKE_ARGV4}/${l_archive}-SHA256.txt.asc") + message(STATUS "GPG signed SHA256 checksum created: ${CMAKE_ARGV4}/${l_archive}-SHA256.txt.asc") + endif() +endif() diff --git a/cmake/pkg/psblasConfig.cmake.in b/cmake/pkg/psblasConfig.cmake.in new file mode 100644 index 00000000..3fe60345 --- /dev/null +++ b/cmake/pkg/psblasConfig.cmake.in @@ -0,0 +1,16 @@ +# Config file for the INSTALLED package +# Allow other CMake projects to find this package if it is installed +# Requires the use of the standard CMake module CMakePackageConfigHelpers + +set ( @CMAKE_PROJECT_NAME@_VERSION @VERSION@ ) + +###@COMPILER_CONSISTENCY_CHECK@ + +@PACKAGE_INIT@ + +# Provide the targets +set_and_check ( @PACKAGE_NAME@_CONFIG_INSTALL_DIR "@PACKAGE_EXPORT_INSTALL_DIR@" ) +include ( "${@PACKAGE_NAME@_CONFIG_INSTALL_DIR}/@PACKAGE_NAME@-targets.cmake" ) + +# Make the module files available via include +set_and_check ( @CMAKE_PROJECT_NAME@_INCLUDE_DIRS "@PACKAGE_INSTALL_MOD_DIR@" ) diff --git a/cmake/psblas-VER-SHA256.txt.asc.in b/cmake/psblas-VER-SHA256.txt.asc.in new file mode 100644 index 00000000..22cd9211 --- /dev/null +++ b/cmake/psblas-VER-SHA256.txt.asc.in @@ -0,0 +1,12 @@ +Mac users can use GPGTools - https://gpgtools.org +Comment: Download Izaak Beekman's GPG public key from your +Comment: trusted key server or from +Comment: https://izaakbeekman.com/izaak.pubkey.txt +Comment: Next add it to your GPG keyring, e.g., +Comment: `curl https://izaakbeekman.com/izaak.pubkey.txt | gpg --import` +Comment: Make sure you have verified that the release archive's +Comment: SHA256 checksum matches the provided +Comment: psblas-@git_version@-SHA256.txt and ensure that this file +Comment: and it's signature are in the same directory. Then +Comment: verify with: +Comment: `gpg --verify psblas-@git_version@-SHA256.txt.asc` diff --git a/cmake/psblas-VER-SHA256.txt.in b/cmake/psblas-VER-SHA256.txt.in new file mode 100644 index 00000000..1b3888c4 --- /dev/null +++ b/cmake/psblas-VER-SHA256.txt.in @@ -0,0 +1,3 @@ +# To verify cryptographic checksums `shasum -c psblas-@git_version@-SHA256.txt` on Mac OS X, or +# `sha256sum -c psblas-@git_version@-SHA256.txt` on Linux. +@sha256_checksum@ diff --git a/cmake/setVersion.cmake b/cmake/setVersion.cmake new file mode 100644 index 00000000..f79ee619 --- /dev/null +++ b/cmake/setVersion.cmake @@ -0,0 +1,90 @@ +include(CMakeParseArguments) + +# Function to parse version info from git and/or .VERSION file +function(set_version) + set(options "") + set(oneValueArgs VERSION_VARIABLE GIT_DESCRIBE_VAR CUSTOM_VERSION_FILE CUSTOM_VERSION_REGEX ) + set(multiValueArgs "") + cmake_parse_arguments(set_version "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + # Algorithm: + # 1. Get first line of .VERSION file, which will be set via `git archive` so long as + # + # 2. If not a packaged release check if this is an active git repo + # 3. Get version info from `git describe` + # 4. First the most recent tag is fetched if available + # 5. Then the full `git describe` output is fetched + + + if(NOT set_version_CUSTOM_VERSION_REGEX) + set(_VERSION_REGEX "[vV]*[0-9]+\\.[0-9]+\\.[0-9]+") + else() + set(_VERSION_REGEX ${set_version_CUSTOM_VERSION_REGEX}) + endif() + if(NOT set_version_CUSTOM_VERSION_FILE) + set(_VERSION_FILE "${CMAKE_SOURCE_DIR}/.VERSION") + else() + set(_VERSION_FILE "${set_version_CUSTOM_VERSION_FILE}") + endif() + + file(STRINGS "${_VERSION_FILE}" first_line + LIMIT_COUNT 1 + ) + + string(REGEX MATCH ${_VERSION_REGEX} + _package_version "${first_line}") + + if((NOT (_package_version MATCHES ${_VERSION_REGEX})) AND (EXISTS "${CMAKE_SOURCE_DIR}/.git")) + message( STATUS "Build from git repository detected") + find_package(Git) + if(GIT_FOUND) + set(GIT_FOUND "${GIT_FOUND}" PARENT_SCOPE) + execute_process(COMMAND "${GIT_EXECUTABLE}" describe --abbrev=0 + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE _git_status + OUTPUT_VARIABLE _git_output + OUTPUT_STRIP_TRAILING_WHITESPACE) + if((_git_status STREQUAL "0") AND (_git_output MATCHES ${_VERSION_REGEX})) + set(_package_version "${_git_output}") + endif() + execute_process(COMMAND "${GIT_EXECUTABLE}" describe --always + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE _git_status + OUTPUT_VARIABLE _full_git_describe + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT (_git_status STREQUAL "0")) + set(_full_git_describe NOTFOUND) + endif() + else() + message( WARNING "Could not find git executable!") + endif() + endif() + + if(NOT (_package_version MATCHES ${_VERSION_REGEX})) + message( WARNING "Could not extract version from git, falling back on ${_VERSION_FILE}.") + file(STRINGS ".VERSION" _package_version + REGEX ${_VERSION_REGEX} + ) + endif() + + if(NOT _full_git_describe) + set(_full_git_describe ${_package_version}) + endif() + + # Strip leading "v" character from package version tags so that + # the version string can be passed to the CMake `project` command + string(REPLACE "v" "" _package_version "${_package_version}") + string(REPLACE "V" "" _package_version "${_package_version}") + + if(set_version_VERSION_VARIABLE) + set(${set_version_VERSION_VARIABLE} ${_package_version} PARENT_SCOPE) + else() + set(PROJECT_VERSION ${_package_version} PARENT_SCOPE) + endif() + if(set_version_GIT_DESCRIBE_VAR) + set(${set_version_GIT_DESCRIBE_VAR} ${_full_git_describe} PARENT_SCOPE) + else() + set(FULL_GIT_DESCRIBE ${_full_git_describe} PARENT_SCOPE) + endif() + +endfunction() diff --git a/cmake/uninstall.cmake.in b/cmake/uninstall.cmake.in new file mode 100644 index 00000000..dd395930 --- /dev/null +++ b/cmake/uninstall.cmake.in @@ -0,0 +1,23 @@ +# Adapted from http://www.cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F May 1, 2014 + +if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") +endif(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + +file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") +foreach(file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + exec_program( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") + endif(NOT "${rm_retval}" STREQUAL 0) + else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + message(STATUS "File $ENV{DESTDIR}${file} does not exist.") + endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") +endforeach(file) diff --git a/ext/CMakeLists.txt b/ext/CMakeLists.txt new file mode 100644 index 00000000..c678d01e --- /dev/null +++ b/ext/CMakeLists.txt @@ -0,0 +1,428 @@ +set(PSB_ext_source_files + psb_s_hdia_mat_mod.f90 + impl/psb_d_ell_reinit.f90 + impl/psb_d_hll_reallocate_nz.f90 + impl/psb_z_dia_arwsum.f90 + impl/psb_d_mv_hdia_from_coo.f90 + impl/psb_z_hll_csgetptn.f90 + impl/psb_d_mv_ell_to_coo.f90 + impl/psb_d_ell_csgetblk.f90 + impl/psb_d_ell_reallocate_nz.f90 + impl/psb_d_dia_csgetptn.f90 + impl/psb_c_ell_rowsum.f90 + impl/psb_d_dia_reallocate_nz.f90 + impl/psb_z_mv_ell_to_fmt.f90 + impl/psi_d_xtr_ell_from_coo.f90 + impl/psb_s_mv_ell_to_fmt.f90 + impl/psb_z_mv_ell_from_coo.f90 + impl/psb_s_hll_scals.f90 + impl/psb_d_dia_get_diag.f90 + impl/psb_s_dia_csgetrow.f90 + impl/psb_d_hll_colsum.f90 + impl/psb_s_mv_ell_to_coo.f90 + impl/psb_z_cp_ell_from_fmt.f90 + impl/psb_c_hll_csnm1.f90 + impl/psb_c_hll_maxval.f90 + impl/psb_c_mv_hll_to_fmt.f90 + impl/psb_c_ell_scal.f90 + impl/psb_d_dia_allocate_mnnz.f90 + impl/psb_s_hll_reallocate_nz.f90 + impl/psb_s_hll_csgetptn.f90 + impl/psb_s_hdia_print.f90 + impl/psb_s_mv_hll_to_coo.f90 + impl/psb_c_hll_scal.f90 + impl/psb_s_cp_hll_to_fmt.f90 + impl/psb_s_hll_csnm1.f90 + impl/psb_z_hll_scals.f90 + impl/psb_z_dia_get_diag.f90 + impl/psb_c_cp_hll_from_coo.f90 + impl/psb_d_hll_arwsum.f90 + impl/psb_c_cp_dia_from_coo.f90 + impl/psb_c_ell_reallocate_nz.f90 + impl/psb_z_cp_hll_from_fmt.f90 + impl/psi_s_xtr_dia_from_coo.f90 + impl/psb_d_cp_hdia_from_coo.f90 + impl/psb_s_ell_csgetrow.f90 + impl/psb_s_mv_dia_to_coo.f90 + impl/psb_c_mv_hdia_to_coo.f90 + impl/psb_c_cp_dia_to_coo.f90 + impl/psb_s_hdia_allocate_mnnz.f90 + impl/psb_s_hll_print.f90 + impl/psb_d_ell_aclsum.f90 + impl/psb_c_cp_ell_to_coo.f90 + impl/psb_s_dia_mold.f90 + impl/psi_d_convert_dia_from_coo.f90 + impl/psb_d_hll_allocate_mnnz.f90 + impl/psb_d_dia_mold.f90 + impl/psi_z_convert_ell_from_coo.f90 + impl/psb_s_mv_dia_from_coo.f90 + impl/psb_d_hll_cssv.f90 + impl/psb_c_hll_rowsum.f90 + impl/psb_d_ell_mold.f90 + impl/psb_z_hll_csput.f90 + impl/psb_d_ell_colsum.f90 + impl/psb_s_ell_arwsum.f90 + impl/psb_c_hll_cssv.f90 + impl/psb_c_dia_reinit.f90 + impl/psi_z_xtr_dia_from_coo.f90 + impl/psb_z_hll_reallocate_nz.f90 + impl/psb_d_mv_ell_from_coo.f90 + impl/psb_d_ell_print.f90 + impl/psb_c_mv_ell_from_fmt.f90 + impl/psb_z_hll_csnmi.f90 + impl/psb_d_hll_maxval.f90 + impl/psb_z_ell_csmv.f90 + impl/psb_c_hdia_print.f90 + impl/psb_d_mv_hll_to_fmt.f90 + impl/psb_z_ell_cssm.f90 + impl/psb_s_dia_maxval.f90 + impl/psi_c_convert_dia_from_coo.f90 + impl/psb_c_cp_hdia_from_coo.f90 + impl/psb_s_dia_reallocate_nz.f90 + impl/psb_s_hll_csnmi.f90 + impl/psb_z_dia_scals.f90 + impl/psb_c_hll_csmm.f90 + impl/psb_z_ell_csgetptn.f90 + impl/psi_s_convert_hll_from_coo.f90 + impl/psb_d_cp_ell_from_fmt.f90 + impl/psb_z_hll_maxval.f90 + impl/psb_c_hll_reallocate_nz.f90 + impl/psb_c_mv_hdia_from_coo.f90 + impl/psb_c_ell_get_diag.f90 + impl/psb_s_cp_hll_to_coo.f90 + impl/psb_z_cp_hll_from_coo.f90 + impl/psb_s_dia_csmm.f90 + impl/psb_z_cp_hll_to_coo.f90 + impl/psi_c_xtr_ell_from_coo.f90 + impl/psb_z_hll_csmm.f90 + impl/psb_z_dia_reallocate_nz.f90 + impl/psb_d_dia_scal.f90 + impl/psb_s_mv_hll_to_fmt.f90 + impl/psb_d_hdia_mold.f90 + impl/psb_c_ell_maxval.f90 + impl/psb_z_hll_rowsum.f90 + impl/psb_z_ell_aclsum.f90 + impl/psb_d_cp_ell_to_coo.f90 + impl/psb_z_ell_print.f90 + impl/psb_d_ell_cssv.f90 + impl/psi_c_xtr_coo_from_dia.f90 + impl/psb_d_dia_csmm.f90 + impl/psi_s_convert_dia_from_coo.f90 + impl/psb_c_hll_csput.f90 + impl/psb_d_cp_hll_to_coo.f90 + impl/psb_s_ell_scals.f90 + impl/psb_s_ell_print.f90 + impl/psb_z_cp_hdia_to_coo.f90 + impl/psb_c_hll_mold.f90 + impl/psb_z_hll_print.f90 + impl/psb_s_cp_ell_from_coo.f90 + impl/psb_c_dns_mat_impl.f90 + impl/psb_c_mv_hll_from_fmt.f90 + impl/psb_z_hll_get_diag.f90 + impl/psb_z_cp_dia_from_coo.f90 + impl/psb_s_mv_hdia_from_coo.f90 + impl/psb_s_dia_colsum.f90 + impl/psb_z_cp_dia_to_coo.f90 + impl/psb_z_ell_allocate_mnnz.f90 + impl/psb_c_hll_colsum.f90 + impl/psb_s_ell_cssv.f90 + impl/psb_z_hll_csgetrow.f90 + impl/psb_d_ell_scals.f90 + impl/psb_c_dia_csmv.f90 + impl/psb_z_dia_csmm.f90 + impl/psb_s_ell_rowsum.f90 + impl/psb_c_cp_ell_from_fmt.f90 + impl/psb_z_dia_colsum.f90 + impl/psb_c_ell_mold.f90 + impl/psb_z_ell_maxval.f90 + impl/psb_z_ell_csgetblk.f90 + impl/psb_c_mv_ell_from_coo.f90 + impl/psb_c_mv_dia_from_coo.f90 + impl/psb_d_dia_csmv.f90 + impl/psb_z_hll_csgetblk.f90 + impl/psb_s_cp_hll_from_coo.f90 + impl/psb_d_mv_ell_to_fmt.f90 + impl/psb_c_cp_ell_to_fmt.f90 + impl/psb_z_ell_reinit.f90 + impl/psb_z_cp_hdia_from_coo.f90 + impl/psi_d_xtr_dia_from_coo.f90 + impl/psb_s_ell_scal.f90 + impl/psb_s_hll_rowsum.f90 + impl/psb_d_mv_hll_from_fmt.f90 + impl/psb_c_hdia_allocate_mnnz.f90 + impl/psb_s_ell_csmv.f90 + impl/psb_z_ell_scals.f90 + impl/psi_s_xtr_ell_from_coo.f90 + impl/psb_z_hdia_mold.f90 + impl/psb_s_cp_hdia_to_coo.f90 + impl/psb_s_hll_csput.f90 + impl/psb_s_hll_allocate_mnnz.f90 + impl/psb_z_ell_csmm.f90 + impl/psb_d_cp_dia_from_coo.f90 + impl/psb_s_ell_csgetptn.f90 + impl/psb_c_dia_csmm.f90 + impl/psb_z_ell_csput.f90 + impl/psb_s_cp_dia_to_coo.f90 + impl/psb_c_dia_scal.f90 + impl/psb_c_ell_print.f90 + impl/psb_z_hdia_print.f90 + impl/psb_d_ell_csnmi.f90 + impl/psb_d_mv_hdia_to_coo.f90 + impl/psb_c_mv_dia_to_coo.f90 + impl/psb_s_mv_hll_from_coo.f90 + impl/psb_d_hdia_print.f90 + impl/psb_s_hll_cssm.f90 + impl/psb_d_dia_colsum.f90 + impl/psb_d_mv_ell_from_fmt.f90 + impl/psb_d_hll_get_diag.f90 + impl/psb_z_dia_mold.f90 + impl/psb_z_dia_scal.f90 + impl/psb_d_hll_csgetptn.f90 + impl/psi_z_convert_dia_from_coo.f90 + impl/psb_s_dia_print.f90 + impl/psb_z_ell_arwsum.f90 + impl/psb_d_mv_dia_from_coo.f90 + impl/psi_c_xtr_dia_from_coo.f90 + impl/psb_d_hll_mold.f90 + impl/psi_s_xtr_coo_from_dia.f90 + impl/psb_z_dia_allocate_mnnz.f90 + impl/psb_z_cp_ell_from_coo.f90 + impl/psb_d_ell_allocate_mnnz.f90 + impl/psb_z_dia_csgetrow.f90 + impl/psb_s_ell_csmm.f90 + impl/psi_s_convert_ell_from_coo.f90 + impl/psb_c_dia_get_diag.f90 + impl/psb_c_hll_csgetptn.f90 + impl/psb_s_ell_colsum.f90 + impl/psb_d_dia_print.f90 + impl/psb_c_hll_cssm.f90 + impl/psb_s_dia_csmv.f90 + impl/psb_z_hdia_allocate_mnnz.f90 + impl/psb_z_ell_reallocate_nz.f90 + impl/psb_s_ell_cssm.f90 + impl/psb_c_hll_csgetrow.f90 + impl/psb_s_mv_hll_from_fmt.f90 + impl/psb_c_ell_colsum.f90 + impl/psb_c_ell_reinit.f90 + impl/psb_c_ell_cssm.f90 + impl/psb_c_ell_csput.f90 + impl/psb_s_hll_aclsum.f90 + impl/psb_s_hll_get_diag.f90 + impl/psb_z_ell_csnmi.f90 + impl/psb_s_hll_mold.f90 + impl/psb_c_ell_csnm1.f90 + impl/psb_s_dia_scal.f90 + impl/psb_s_hdia_mold.f90 + impl/psb_d_cp_hdia_to_coo.f90 + impl/psb_c_dia_csgetptn.f90 + impl/psb_z_mv_hll_from_fmt.f90 + impl/psb_c_ell_scals.f90 + impl/psb_z_hll_cssv.f90 + impl/psb_d_mv_dia_to_coo.f90 + impl/psb_z_mv_hdia_from_coo.f90 + impl/psb_d_dia_arwsum.f90 + impl/psb_d_hll_aclsum.f90 + impl/psb_c_hll_allocate_mnnz.f90 + impl/psb_z_hll_reinit.f90 + impl/psb_c_dia_scals.f90 + impl/psb_s_mv_ell_from_fmt.f90 + impl/psb_c_dia_allocate_mnnz.f90 + impl/psb_c_ell_csmm.f90 + impl/psb_d_ell_csmm.f90 + impl/psb_z_mv_dia_from_coo.f90 + impl/psb_c_ell_arwsum.f90 + impl/psb_s_ell_maxval.f90 + impl/psb_s_ell_reinit.f90 + impl/psb_z_ell_mold.f90 + impl/psb_s_cp_hdia_from_coo.f90 + impl/psb_s_hdia_csmv.f90 + impl/psb_s_ell_get_diag.f90 + impl/psb_s_ell_reallocate_nz.f90 + impl/psb_d_ell_csgetptn.f90 + impl/psb_c_hll_csgetblk.f90 + impl/psb_z_cp_hll_to_fmt.f90 + impl/psb_z_mv_hll_from_coo.f90 + impl/psb_c_hdia_mold.f90 + impl/psb_c_hdia_csmv.f90 + impl/psb_c_ell_csgetrow.f90 + impl/psb_d_hll_rowsum.f90 + impl/psb_z_ell_trim.f90 + impl/psb_d_hll_reinit.f90 + impl/psb_c_dia_rowsum.f90 + impl/psb_z_cp_ell_to_coo.f90 + impl/psb_d_dia_csgetrow.f90 + impl/psb_c_mv_hll_to_coo.f90 + impl/psb_d_hll_csnm1.f90 + impl/psb_z_hll_allocate_mnnz.f90 + impl/psb_d_ell_trim.f90 + impl/psi_z_xtr_coo_from_dia.f90 + impl/psb_z_ell_colsum.f90 + impl/psb_c_hll_get_diag.f90 + impl/psb_z_hll_colsum.f90 + impl/psb_d_dia_reinit.f90 + impl/psb_z_ell_rowsum.f90 + impl/psb_c_dia_mold.f90 + impl/psb_c_mv_ell_to_fmt.f90 + impl/psb_z_dia_csmv.f90 + impl/psb_d_ell_rowsum.f90 + impl/psb_s_ell_allocate_mnnz.f90 + impl/psb_z_ell_scal.f90 + impl/psb_d_hdia_allocate_mnnz.f90 + impl/psb_c_ell_trim.f90 + impl/psb_d_hdia_csmv.f90 + impl/psb_s_ell_mold.f90 + impl/psb_z_hll_mold.f90 + impl/psb_z_dia_reinit.f90 + impl/psb_c_ell_csgetblk.f90 + impl/psb_s_ell_trim.f90 + impl/psb_s_cp_dia_from_coo.f90 + impl/psb_s_hll_csmv.f90 + impl/psb_d_ell_arwsum.f90 + impl/psb_z_ell_cssv.f90 + impl/psb_c_dia_reallocate_nz.f90 + impl/psb_z_cp_ell_to_fmt.f90 + impl/psb_s_ell_csgetblk.f90 + impl/psb_d_mv_hll_from_coo.f90 + impl/psb_d_dns_mat_impl.f90 + impl/psb_z_dia_maxval.f90 + impl/psb_z_dns_mat_impl.f90 + impl/psi_d_xtr_coo_from_dia.f90 + impl/psi_c_convert_hll_from_coo.f90 + impl/psi_z_convert_hll_from_coo.f90 + impl/psb_z_mv_hdia_to_coo.f90 + impl/psb_d_cp_hll_from_fmt.f90 + impl/psb_c_ell_csnmi.f90 + impl/psb_d_ell_maxval.f90 + impl/psb_d_cp_ell_to_fmt.f90 + impl/psb_c_hll_aclsum.f90 + impl/psb_d_cp_dia_to_coo.f90 + impl/psb_s_dia_csgetptn.f90 + impl/psb_d_ell_get_diag.f90 + impl/psb_z_hll_scal.f90 + impl/psb_d_hll_csnmi.f90 + impl/psb_c_dia_csgetrow.f90 + impl/psb_z_mv_ell_to_coo.f90 + impl/psb_d_ell_csgetrow.f90 + impl/psb_s_dia_rowsum.f90 + impl/psb_z_ell_csnm1.f90 + impl/psb_s_dia_get_diag.f90 + impl/psb_z_mv_hll_to_fmt.f90 + impl/psb_d_dia_maxval.f90 + impl/psb_z_mv_hll_to_coo.f90 + impl/psb_z_dia_aclsum.f90 + impl/psb_c_hll_arwsum.f90 + impl/psb_c_ell_cssv.f90 + impl/psb_s_dia_scals.f90 + impl/psb_c_hll_csnmi.f90 + impl/psb_d_dia_scals.f90 + impl/psb_d_cp_hll_to_fmt.f90 + impl/psb_d_ell_csmv.f90 + impl/psb_z_dia_print.f90 + impl/psb_d_hll_scals.f90 + impl/psb_d_ell_csnm1.f90 + impl/psb_d_mv_hll_to_coo.f90 + impl/psb_z_hdia_csmv.f90 + impl/psb_d_cp_hll_from_coo.f90 + impl/psb_s_cp_hll_from_fmt.f90 + impl/psi_z_xtr_ell_from_coo.f90 + impl/psb_s_cp_ell_to_coo.f90 + impl/psb_d_ell_scal.f90 + impl/psb_c_mv_ell_to_coo.f90 + impl/psb_c_hll_csmv.f90 + impl/psb_s_hll_reinit.f90 + impl/psb_c_hll_scals.f90 + impl/psb_s_hll_csgetrow.f90 + impl/psb_s_cp_ell_from_fmt.f90 + impl/psb_d_hll_csgetrow.f90 + impl/psb_c_ell_allocate_mnnz.f90 + impl/psb_s_ell_csput.f90 + impl/psb_z_ell_csgetrow.f90 + impl/psb_s_hll_maxval.f90 + impl/psb_d_hll_print.f90 + impl/psb_s_ell_csnmi.f90 + impl/psb_s_dia_reinit.f90 + impl/psb_s_mv_hdia_to_coo.f90 + impl/psb_d_dia_aclsum.f90 + impl/psb_s_dia_aclsum.f90 + impl/psb_d_hll_csmv.f90 + impl/psb_z_dia_csgetptn.f90 + impl/psb_c_dia_aclsum.f90 + impl/psb_d_cp_ell_from_coo.f90 + impl/psb_s_ell_aclsum.f90 + impl/psb_c_ell_csgetptn.f90 + impl/psb_c_hll_print.f90 + impl/psb_s_hll_csgetblk.f90 + impl/psb_c_cp_hll_to_coo.f90 + impl/psb_z_hll_csmv.f90 + impl/psb_c_cp_hll_to_fmt.f90 + impl/psb_s_hll_cssv.f90 + impl/psb_s_dia_allocate_mnnz.f90 + impl/psb_s_dia_arwsum.f90 + impl/psb_d_hll_csput.f90 + impl/psb_s_hll_csmm.f90 + impl/psb_s_dns_mat_impl.f90 + impl/psb_c_ell_csmv.f90 + impl/psb_c_dia_arwsum.f90 + impl/psb_s_hll_scal.f90 + impl/psb_c_cp_hll_from_fmt.f90 + impl/psb_c_dia_colsum.f90 + impl/psb_z_hll_csnm1.f90 + impl/psi_d_convert_ell_from_coo.f90 + impl/psb_d_ell_cssm.f90 + impl/psb_c_dia_maxval.f90 + impl/psb_d_dia_rowsum.f90 + impl/psi_c_convert_ell_from_coo.f90 + impl/psb_d_hll_cssm.f90 + impl/psb_s_mv_ell_from_coo.f90 + impl/psi_d_convert_hll_from_coo.f90 + impl/psb_c_dia_print.f90 + impl/psb_c_ell_aclsum.f90 + impl/psb_z_hll_cssm.f90 + impl/psb_s_hll_colsum.f90 + impl/psb_z_hll_aclsum.f90 + impl/psb_z_dia_rowsum.f90 + impl/psb_d_ell_csput.f90 + impl/psb_d_hll_scal.f90 + impl/psb_z_mv_ell_from_fmt.f90 + impl/psb_z_hll_arwsum.f90 + impl/psb_c_mv_hll_from_coo.f90 + impl/psb_z_mv_dia_to_coo.f90 + impl/psb_d_hll_csgetblk.f90 + impl/psb_z_ell_get_diag.f90 + impl/psb_s_ell_csnm1.f90 + impl/psb_s_cp_ell_to_fmt.f90 + impl/psb_d_hll_csmm.f90 + impl/psb_c_cp_ell_from_coo.f90 + impl/psb_c_hll_reinit.f90 + impl/psb_c_cp_hdia_to_coo.f90 + impl/psb_s_hll_arwsum.f90 + psb_c_hdia_mat_mod.f90 + psi_ext_util_mod.f90 + psb_z_hdia_mat_mod.f90 + psi_z_ext_util_mod.f90 + psb_c_dns_mat_mod.f90 + psb_c_hll_mat_mod.f90 + psi_s_ext_util_mod.f90 + psb_c_dia_mat_mod.f90 + psi_c_ext_util_mod.f90 + psb_d_hdia_mat_mod.f90 + psi_i_ext_util_mod.f90 + psb_s_dia_mat_mod.f90 + psb_s_dns_mat_mod.f90 + psb_d_ell_mat_mod.f90 + psb_d_dia_mat_mod.f90 + psb_d_hll_mat_mod.f90 + psb_d_dns_mat_mod.f90 + psb_ext_mod.F90 + psb_c_ell_mat_mod.f90 + psb_s_ell_mat_mod.f90 + psb_s_hll_mat_mod.f90 + psi_d_ext_util_mod.f90 + psb_z_dia_mat_mod.f90 + psb_z_hll_mat_mod.f90 + psb_z_dns_mat_mod.f90 + psb_z_ell_mat_mod.f90 + ) +foreach(file IN LISTS PSB_ext_source_files) + list(APPEND ext_source_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() diff --git a/linsolve/CMakeLists.txt b/linsolve/CMakeLists.txt new file mode 100644 index 00000000..039ba29d --- /dev/null +++ b/linsolve/CMakeLists.txt @@ -0,0 +1,52 @@ +set(PSB_linsolve_source_files + psb_base_linsolve_conv_mod.f90 + psb_z_linsolve_conv_mod.f90 + impl/psb_crichardson.f90 + impl/psb_zfcg.F90 + impl/psb_zkrylov.f90 + impl/psb_srichardson.f90 + impl/psb_ckrylov.f90 + impl/psb_crgmres.f90 + impl/psb_cgcr.f90 + impl/psb_sbicg.f90 + impl/psb_ccgstabl.f90 + impl/psb_drgmres.f90 + impl/psb_skrylov.f90 + impl/psb_scg.F90 + impl/psb_dcgstabl.f90 + impl/psb_ccg.F90 + impl/psb_zrgmres.f90 + impl/psb_zgcr.f90 + impl/psb_dcg.F90 + impl/psb_dgcr.f90 + impl/psb_scgstabl.f90 + impl/psb_dfcg.F90 + impl/psb_cbicg.f90 + impl/psb_zbicg.f90 + impl/psb_cfcg.F90 + impl/psb_zrichardson.f90 + impl/psb_dkrylov.f90 + impl/psb_ccgstab.f90 + impl/psb_zcg.F90 + impl/psb_dbicg.f90 + impl/psb_srgmres.f90 + impl/psb_zcgstabl.f90 + impl/psb_zcgs.f90 + impl/psb_ccgs.f90 + impl/psb_sgcr.f90 + impl/psb_dcgstab.f90 + impl/psb_scgstab.f90 + impl/psb_dcgs.f90 + impl/psb_drichardson.f90 + impl/psb_scgs.f90 + impl/psb_sfcg.F90 + impl/psb_zcgstab.f90 + psb_linsolve_mod.f90 + psb_linsolve_conv_mod.f90 + psb_c_linsolve_conv_mod.f90 + psb_d_linsolve_conv_mod.f90 + psb_s_linsolve_conv_mod.f90 + ) +foreach(file IN LISTS PSB_linsolve_source_files) + list(APPEND linsolve_source_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() diff --git a/prec/CMakeLists.txt b/prec/CMakeLists.txt new file mode 100644 index 00000000..83bf7c82 --- /dev/null +++ b/prec/CMakeLists.txt @@ -0,0 +1,141 @@ + +set(PSB_prec_source_files + psb_c_diagprec.f90 + psb_prec_mod.f90 + psb_c_ainv_tools_mod.f90 + psb_s_ilu_fact_mod.f90 + psb_z_ainv_tools_mod.f90 + psb_s_ainv_fact_mod.f90 + psb_d_invt_fact_mod.f90 + psb_z_base_prec_mod.f90 + psb_s_invt_fact_mod.f90 + impl/psb_d_nullprec_impl.f90 + impl/psb_cprecinit.f90 + impl/psb_crwclip.f90 + impl/psb_z_sparsify.f90 + impl/psb_z_nullprec_impl.f90 + impl/psb_c_ilut_fact.f90 + impl/psb_d_sp_drop.f90 + impl/psb_c_ilu0_fact.f90 + impl/psb_d_prec_type_impl.f90 + impl/psb_s_invt_fact.f90 + impl/psb_z_ilut_fact.f90 + impl/psb_s_diagprec_impl.f90 + impl/psb_z_prec_type_impl.f90 + impl/psb_z_diagprec_impl.f90 + impl/psb_z_invk_fact.f90 + impl/psb_z_iluk_fact.f90 + impl/psb_s_ilut_fact.f90 + impl/psb_d_ilut_fact.f90 + impl/psb_dprecinit.f90 + impl/psb_s_sp_drop.f90 + impl/psb_s_iluk_fact.f90 + impl/psb_d_ainv_bld.f90 + impl/psb_d_sparsify.f90 + impl/psb_zprecinit.f90 + impl/psb_z_invt_fact.f90 + impl/psb_d_iluk_fact.f90 + impl/psb_c_sp_drop.f90 + impl/psb_z_bjacprec_impl.f90 + impl/psb_c_invk_fact.f90 + impl/psb_sprecinit.f90 + impl/psb_z_ilu0_fact.f90 + impl/psb_zprecbld.f90 + impl/psb_c_bjacprec_impl.f90 + impl/psb_s_ilu0_fact.f90 + impl/psb_s_prec_type_impl.f90 + impl/psb_s_nullprec_impl.f90 + impl/psb_s_bjacprec_impl.f90 + impl/psb_c_prec_type_impl.f90 + impl/psb_z_ainv_bld.f90 + impl/psb_s_invk_fact.f90 + impl/psb_z_sp_drop.f90 + impl/psb_c_diagprec_impl.f90 + impl/psb_d_invk_fact.f90 + impl/psb_c_invt_fact.f90 + impl/psb_dprecbld.f90 + impl/psb_c_iluk_fact.f90 + impl/psb_s_ainv_bld.f90 + impl/psb_c_nullprec_impl.f90 + impl/psb_c_sparsify.f90 + impl/psb_c_ainv_bld.f90 + impl/psb_s_sparsify.f90 + impl/psb_d_diagprec_impl.f90 + impl/psb_d_invt_fact.f90 + impl/psb_d_ilu0_fact.f90 + impl/psb_cprecbld.f90 + impl/psb_srwclip.f90 + impl/psb_d_bjacprec_impl.f90 + impl/psb_drwclip.f90 + impl/psb_zrwclip.f90 + impl/psb_sprecbld.f90 + psb_d_ainv_fact_mod.f90 + psb_z_prec_mod.f90 + psb_s_nullprec.f90 + psb_prec_type.f90 + psb_s_bjacprec.f90 + psb_z_diagprec.f90 + psb_z_bjacprec.f90 + psb_d_diagprec.f90 + psb_c_prec_mod.f90 + psb_d_nullprec.f90 + psb_s_diagprec.f90 + psb_c_prec_type.f90 + psb_c_ilu_fact_mod.f90 + psb_s_base_prec_mod.f90 + psb_c_nullprec.f90 + psb_c_invk_fact_mod.f90 + psb_z_invk_fact_mod.f90 + psb_z_prec_type.f90 + psb_c_invt_fact_mod.f90 + psb_s_prec_mod.f90 + psb_s_prec_type.f90 + psb_ainv_tools_mod.f90 + psb_d_invk_fact_mod.f90 + psb_c_bjacprec.f90 + psb_d_prec_type.f90 + psb_prec_const_mod.f90 + psb_s_ainv_tools_mod.f90 + psb_z_nullprec.f90 + psb_d_ainv_tools_mod.f90 + psb_d_bjacprec.f90 + psb_d_prec_mod.f90 + psb_c_base_prec_mod.f90 + psb_z_ainv_fact_mod.f90 + psb_d_base_prec_mod.f90 + psb_c_ainv_fact_mod.f90 + psb_s_invk_fact_mod.f90 + psb_d_ilu_fact_mod.f90 + psb_z_ilu_fact_mod.f90 + psb_z_invt_fact_mod.f90 + psb_d_biconjg_mod.F90 + impl/psb_zsparse_biconjg_llk_noth.F90 + impl/psb_ssparse_biconjg_s_llk.F90 + impl/psb_ssparse_biconjg_llk_noth.F90 + impl/psb_csparse_biconjg_s_llk.F90 + impl/psb_dsparse_biconjg_mlk.F90 + impl/psb_ssparse_biconjg_llk.F90 + impl/psb_csparse_biconjg_s_ft_llk.F90 + impl/psb_dsparse_biconjg_s_ft_llk.F90 + impl/psb_csparse_biconjg_llk_noth.F90 + impl/psb_dsparse_biconjg_s_llk.F90 + impl/psb_zsparse_biconjg_llk.F90 + impl/psb_csparse_biconjg_mlk.F90 + impl/psb_zsparse_biconjg_s_ft_llk.F90 + impl/psb_zsparse_biconjg_mlk.F90 + impl/psb_ssparse_biconjg_s_ft_llk.F90 + impl/psb_zsparse_biconjg_s_llk.F90 + impl/psb_dsparse_biconjg_llk.F90 + impl/psb_dsparse_biconjg_llk_noth.F90 + impl/psb_ssparse_biconjg_mlk.F90 + impl/psb_csparse_biconjg_llk.F90 + psb_biconjg_mod.F90 + psb_z_biconjg_mod.F90 + psb_s_biconjg_mod.F90 + psb_c_biconjg_mod.F90 + + ) + +foreach(file IN LISTS PSB_prec_source_files) + list(APPEND prec_source_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt new file mode 100644 index 00000000..09152893 --- /dev/null +++ b/util/CMakeLists.txt @@ -0,0 +1,47 @@ +set(PSB_util_source_files + psb_s_mmio_impl.f90 + psb_s_mat_dist_mod.f90 + psb_renum_mod.f90 + psb_c_mmio_impl.f90 + psb_d_hbio_impl.f90 + psb_d_mat_dist_impl.f90 + psb_z_mat_dist_impl.f90 + psb_c_hbio_impl.f90 + psb_s_mat_dist_impl.f90 + psb_hbio_mod.f90 + psb_gps_mod.f90 + psb_z_renum_mod.f90 + psb_c_mat_dist_impl.f90 + psb_d_mat_dist_mod.f90 + psb_d_renum_mod.f90 + psb_s_renum_mod.f90 + psb_util_mod.f90 + psb_d_mmio_impl.f90 + psb_s_hbio_impl.f90 + psb_c_renum_mod.f90 + psb_mat_dist_mod.f90 + psb_z_mmio_impl.f90 + psb_c_mat_dist_mod.f90 + psb_blockpart_mod.f90 + psb_z_mat_dist_mod.f90 + psb_z_hbio_impl.f90 + psb_c_renum_impl.F90 + psb_partidx_mod.F90 + psi_build_mtpart.F90 + psb_z_renum_impl.F90 + psb_d_renum_impl.F90 + psb_i_mmio_impl.F90 + psb_metispart_mod.F90 + psb_mmio_mod.F90 + ) +foreach(file IN LISTS PSB_util_source_files) + list(APPEND util_source_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() + +set(PSB_util_source_C_files + metis_int.c + psb_amd_order.c + ) +foreach(file IN LISTS PSB_util_source_C_files) + list(APPEND util_source_C_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach()